From 5c225fa8e3dac225b98266769d302cf27871b04a Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 21 Oct 2021 17:25:24 +0300 Subject: [PATCH 001/203] char * cl_sdk_read_file(char * filename) --- .gitignore | 1 + utils/include/CL/SDK/Utils.h | 71 ++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 utils/include/CL/SDK/Utils.h diff --git a/.gitignore b/.gitignore index 8598c422..adacb9e4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ install/ # vim *~ .*.sw[op] +.vscode diff --git a/utils/include/CL/SDK/Utils.h b/utils/include/CL/SDK/Utils.h new file mode 100644 index 00000000..73c902db --- /dev/null +++ b/utils/include/CL/SDK/Utils.h @@ -0,0 +1,71 @@ +#pragma once + +#include +#include + +// reads all the text file contents securely in ANSI C89 +// returns pointer to C-string with file contents +// based on https://stackoverflow.com/questions/14002954/ by Nominal Animal +char * cl_sdk_read_file(char * filename) +{ + char * data = NULL, * temp; + size_t size = 0; + size_t used = 0; + size_t n; + FILE * in; + + #define READALL_CHUNK 2097152 + + /* File name can not be NULL. */ + if (filename == NULL) + return NULL; + + /* Open file. */ + in = fopen(filename, "r"); + if (in == NULL) + return NULL; + + /* A read error already occurred? */ + if (ferror(in)) + return NULL; + + while (1) { + if (used + READALL_CHUNK + 1 > size) { + size = used + READALL_CHUNK + 1; + + /* Overflow check. */ + if (size <= used) { + free(data); + return NULL; + } + + temp = (char *)realloc(data, size); + if (temp == NULL) { + free(data); + return NULL; + } + data = temp; + } + + n = fread(data + used, 1, READALL_CHUNK, in); + if (n == 0) + break; + + used += n; + } + + if (ferror(in)) { + free(data); + return NULL; + } + + temp = (char *)realloc(data, used + 1); + if (temp == NULL) { + free(data); + return NULL; + } + data = temp; + data[used] = '\0'; + + return data; +} \ No newline at end of file From 5ab156b9ce80a1b607e693ec8b6dc0ce696d99a3 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 21 Oct 2021 17:34:35 +0300 Subject: [PATCH 002/203] New line --- utils/include/CL/SDK/Utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/include/CL/SDK/Utils.h b/utils/include/CL/SDK/Utils.h index 73c902db..c81a3026 100644 --- a/utils/include/CL/SDK/Utils.h +++ b/utils/include/CL/SDK/Utils.h @@ -68,4 +68,4 @@ char * cl_sdk_read_file(char * filename) data[used] = '\0'; return data; -} \ No newline at end of file +} From cc6cbb955689c0275d87503959ac6dc39c45e51c Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 22 Oct 2021 13:16:33 +0300 Subject: [PATCH 003/203] Error code handling --- utils/include/CL/SDK/Utils.h | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/utils/include/CL/SDK/Utils.h b/utils/include/CL/SDK/Utils.h index c81a3026..0813d9d4 100644 --- a/utils/include/CL/SDK/Utils.h +++ b/utils/include/CL/SDK/Utils.h @@ -1,12 +1,14 @@ #pragma once -#include -#include +#include +#include +#include // reads all the text file contents securely in ANSI C89 // returns pointer to C-string with file contents +// can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -char * cl_sdk_read_file(char * filename) +char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcode_ret) { char * data = NULL, * temp; size_t size = 0; @@ -14,20 +16,30 @@ char * cl_sdk_read_file(char * filename) size_t n; FILE * in; - #define READALL_CHUNK 2097152 + /* Size of each input chunk to be read and allocate for. */ + #define READALL_CHUNK 2097152 /* File name can not be NULL. */ - if (filename == NULL) + if (errcode_ret == NULL) { return NULL; + } + if (filename == NULL) { + *errcode_ret = CL_INVALID_ARG_VALUE; + return NULL; + } /* Open file. */ in = fopen(filename, "r"); - if (in == NULL) + if (in == NULL) { + *errcode_ret = CL_INVALID_VALUE; return NULL; + } /* A read error already occurred? */ - if (ferror(in)) + if (ferror(in)) { + *errcode_ret = CL_INVALID_VALUE; return NULL; + } while (1) { if (used + READALL_CHUNK + 1 > size) { @@ -36,12 +48,14 @@ char * cl_sdk_read_file(char * filename) /* Overflow check. */ if (size <= used) { free(data); + *errcode_ret = CL_OUT_OF_RESOURCES; return NULL; } temp = (char *)realloc(data, size); if (temp == NULL) { free(data); + *errcode_ret = CL_OUT_OF_HOST_MEMORY; return NULL; } data = temp; @@ -56,16 +70,21 @@ char * cl_sdk_read_file(char * filename) if (ferror(in)) { free(data); + *errcode_ret = CL_INVALID_VALUE; return NULL; } temp = (char *)realloc(data, used + 1); if (temp == NULL) { free(data); + *errcode_ret = CL_OUT_OF_HOST_MEMORY; return NULL; } data = temp; data[used] = '\0'; + if (length != NULL) + *length = used; + *errcode_ret = CL_SUCCESS; return data; } From 392bf81019c4d063880291ce5b7877d454006d27 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 22 Oct 2021 14:33:34 +0300 Subject: [PATCH 004/203] Idiomatic OpenCL error handling --- utils/include/CL/SDK/Utils.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/include/CL/SDK/Utils.h b/utils/include/CL/SDK/Utils.h index 0813d9d4..91af0359 100644 --- a/utils/include/CL/SDK/Utils.h +++ b/utils/include/CL/SDK/Utils.h @@ -15,14 +15,16 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod size_t used = 0; size_t n; FILE * in; + cl_int err; /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 - /* File name can not be NULL. */ if (errcode_ret == NULL) { - return NULL; + errcode_ret = &err; } + + /* File name can not be NULL. */ if (filename == NULL) { *errcode_ret = CL_INVALID_ARG_VALUE; return NULL; From d0be28b1d4708a90f6f34ab730094978140c7b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 8 Oct 2021 14:02:03 +0200 Subject: [PATCH 005/203] Samples pick up INTERFACE targets --- samples/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index bbf33380..83fa4a66 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -46,7 +46,7 @@ function(add_sample) add_executable(${OPENCL_SAMPLE_TARGET} ${OPENCL_SAMPLE_SOURCES}) target_include_directories(${OPENCL_SAMPLE_TARGET} PRIVATE ${OPENCL_SDK_INCLUDE_DIRS} ${OPENCL_SAMPLE_INCLUDES}) - target_link_libraries(${OPENCL_SAMPLE_TARGET} OpenCL ${OPENCL_SAMPLE_LIBS}) + target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE OpenCL::Headers OpenCL::HeadersCpp OpenCL::OpenCL ${OPENCL_SAMPLE_LIBS}) target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_HPP_ENABLE_EXCEPTIONS) target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION}) From 3706c4c4e2755e0fd2a9bdec216462919cfa75fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 8 Oct 2021 14:02:29 +0200 Subject: [PATCH 006/203] SDK recurses into all submodules --- CMakeLists.txt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e765948..a595ed9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,27 +16,25 @@ cmake_minimum_required(VERSION 3.0) set(CMAKE_CXX_STANDARD 11) -project(OpenCL-SDK) +project(OpenCL-SDK + LANGUAGES + C CXX +) if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release" CACHE PATH "Build Type" FORCE) endif() -set(OPENCL_ICD_LOADER_HEADERS_DIR - "${PROJECT_SOURCE_DIR}/external/OpenCL-Headers" CACHE PATH "Path to OpenCL - Headers") - if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/install" CACHE PATH "Install Path" FORCE) endif() -set(OPENCL_SDK_INCLUDE_DIRS - "${PROJECT_SOURCE_DIR}/external/OpenCL-Headers" - "${PROJECT_SOURCE_DIR}/external/OpenCL-CLHPP/include") +add_subdirectory(external/OpenCL-Headers) +add_subdirectory(external/OpenCL-ICD-Loader) +add_subdirectory(external/OpenCL-CLHPP) -add_subdirectory(${PROJECT_SOURCE_DIR}/external/OpenCL-ICD-Loader) -add_subdirectory(${PROJECT_SOURCE_DIR}/samples) +add_subdirectory(samples) set_target_properties(OpenCL PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) From 98e810a7c86a0e40627aa067875543166e274ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 8 Oct 2021 14:02:47 +0200 Subject: [PATCH 007/203] Update submodules --- .gitmodules | 9 ++++++--- external/OpenCL-CLHPP | 2 +- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index 940e8ead..496f9527 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,12 @@ [submodule "loader"] path = external/OpenCL-ICD-Loader - url = https://github.com/KhronosGroup/OpenCL-ICD-Loader.git + url = git@projects.streamhpc.com:Khronos/OpenCL-ICD-Loader.git + branch = initial-ci [submodule "headers"] path = external/OpenCL-Headers - url = https://github.com/KhronosGroup/OpenCL-Headers.git + url = git@projects.streamhpc.com:Khronos/OpenCL-Headers.git + branch = initial-ci [submodule "headers-cpp"] path = external/OpenCL-CLHPP - url = https://github.com/KhronosGroup/OpenCL-CLHPP.git + url = git@projects.streamhpc.com:Khronos/OpenCL-CLHPP.git + branch = initial-ci diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 1df82b97..5645be0c 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 1df82b9749739f2681081092ae163bb0f0d40f66 +Subproject commit 5645be0c107e3286fd550fc65507c3513534b080 diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 59ac4dc2..b278c44e 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 59ac4dc2f282286d8db83143686cfe37ec658b84 +Subproject commit b278c44e34bdb980112583048d6ee2e311f15ab7 diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 169f05d0..e1797a90 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 169f05d026e65948b30cfe2200595fda92198cf7 +Subproject commit e1797a9093288e9d6cad2a51814e20d08c6e8663 From e9e5bb2357bdd615373a986deb82a28aa6b9741f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 15:59:40 +0200 Subject: [PATCH 008/203] Bump OpenCL-CLHPP commit --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 5645be0c..8a9854f7 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 5645be0c107e3286fd550fc65507c3513534b080 +Subproject commit 8a9854f7d16a42c8ce888d106d792ba0a28bdcc9 From 0fb8972edc518ae702f5a83552d380be686102ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 16:01:27 +0200 Subject: [PATCH 009/203] Initial Utility library --- utils/CMakeLists.txt | 74 ++++++++++++++++++++++++++++++ utils/include/CL/SDK/CLI.hpp | 76 +++++++++++++++++++++++++++++++ utils/include/CL/SDK/Detail.hpp | 18 ++++++++ utils/include/CL/SDK/Error.hpp | 78 ++++++++++++++++++++++++++++++++ utils/include/CL/SDK/Options.hpp | 33 ++++++++++++++ utils/include/CL/SDK/Utils.hpp | 78 ++++++++++++++++++++++++++++++++ utils/src/SDKUtils.c | 0 utils/src/SDKUtils.cpp | 66 +++++++++++++++++++++++++++ 8 files changed, 423 insertions(+) create mode 100644 utils/CMakeLists.txt create mode 100644 utils/include/CL/SDK/CLI.hpp create mode 100644 utils/include/CL/SDK/Detail.hpp create mode 100644 utils/include/CL/SDK/Error.hpp create mode 100644 utils/include/CL/SDK/Options.hpp create mode 100644 utils/include/CL/SDK/Utils.hpp create mode 100644 utils/src/SDKUtils.c create mode 100644 utils/src/SDKUtils.cpp diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 00000000..2aa1d1b7 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,74 @@ +foreach(UTIL_LIB_NAME IN ITEMS SDKUtils SDKUtilsCpp) + if(UTIL_LIB_NAME STREQUAL SDKUtils) + set(UTIL_LIB_SOURCES src/SDKUtils.c) + set(UTIL_LIB_DEPS OpenCL::Headers) + elseif(UTIL_LIB_NAME STREQUAL SDKUtilsCpp) + set(UTIL_LIB_SOURCES src/SDKUtils.cpp) + set(UTIL_LIB_DEPS OpenCL::HeadersCpp) + else() + message(FATAL_ERROR "Unkown SDKUtil flavor") + endif() + #add_library(${UTIL_LIB_NAME} ${UTIL_LIB_SOURCES}) + add_library(${UTIL_LIB_NAME} INTERFACE) + add_library(OpenCL::${UTIL_LIB_NAME} ALIAS ${UTIL_LIB_NAME}) + + target_include_directories(${UTIL_LIB_NAME} + INTERFACE + $ + $ + ) + target_link_libraries(${UTIL_LIB_NAME} + INTERFACE + ${UTIL_LIB_DEPS} + OpenCL::OpenCL + ) + #target_compile_definitions(${UTIL_LIB_NAME} + # INTERFACE + # CL_HPP_TARGET_OPENCL_VERSION=300 + #) + + install( + TARGETS ${UTIL_LIB_NAME} + EXPORT OpenCL${UTIL_LIB_NAME}Targets + ) + + include(GNUInstallDirs) + + install( + DIRECTORY include/CL + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + export( + EXPORT OpenCL${UTIL_LIB_NAME}Targets + FILE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Targets.cmake + NAMESPACE OpenCL:: + ) + file( + WRITE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCL${UTIL_LIB_NAME}Targets.cmake\")" + ) + + set(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}) + install( + EXPORT OpenCL${UTIL_LIB_NAME}Targets + FILE OpenCL${UTIL_LIB_NAME}Targets.cmake + NAMESPACE OpenCL:: + DESTINATION ${config_package_location} + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + DESTINATION ${config_package_location} + ) + + unset(CMAKE_SIZEOF_VOID_P) + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + DESTINATION ${config_package_location} + ) +endforeach() \ No newline at end of file diff --git a/utils/include/CL/SDK/CLI.hpp b/utils/include/CL/SDK/CLI.hpp new file mode 100644 index 00000000..424eb230 --- /dev/null +++ b/utils/include/CL/SDK/CLI.hpp @@ -0,0 +1,76 @@ +#pragma once + +#include +#include +#include + +namespace cl +{ +namespace sdk +{ + template + Option parse(int argc, char* argv[]); + + template + std::tuple parse_cli(int argc, char* argv[]) + { + return std::make_tuple( + parse(argc, argv)... + ); + } +} +} + +// TCLAP includes +#include + +template <> +cl::sdk::options::Diagnostic cl::sdk::parse(int argc, char* argv[]) +{ + TCLAP::CmdLine cli(""); + + TCLAP::SwitchArg verbose_arg("v", "verbose", "Extra informational output", false); + TCLAP::SwitchArg quiet_arg("q", "quiet", "Suppress standard output", false); + + cli.add(verbose_arg); + cli.add(quiet_arg); + + cli.parse(argc, argv); + + return options::Diagnostic{ + verbose_arg.getValue(), + quiet_arg.getValue() + }; +} + +template <> +cl::sdk::options::SingleDevice cl::sdk::parse(int argc, char* argv[]) +{ + TCLAP::CmdLine cli(""); + + TCLAP::ValueArg platform_arg("p", "platform", "Index of platform to use", false, 0, "positive integral", cli ); + TCLAP::ValueArg device_arg("d", "device", "Index of device to use", false, 0, "positive integral", cli); + + std::vector valid_dev_strings{ "all", "cpu", "gpu", "acc", "def" }; + TCLAP::ValuesConstraint valid_dev_constraint{ valid_dev_strings }; + + TCLAP::ValueArg type_arg{ "t", "type","Type of device to use", false, "def", &valid_dev_constraint , cli }; + + auto device_type = [](std::string in) -> cl_device_type + { + if (in == "all") return CL_DEVICE_TYPE_ALL; + else if (in == "cpu") return CL_DEVICE_TYPE_CPU; + else if (in == "gpu") return CL_DEVICE_TYPE_GPU; + else if (in == "acc") return CL_DEVICE_TYPE_ACCELERATOR; + else if (in == "def") return CL_DEVICE_TYPE_DEFAULT; + else throw std::logic_error{ "Unkown device type after cli parse. Should not have happened." }; + }; + + cli.parse(argc, argv); + + return options::SingleDevice{ + platform_arg.getValue(), + device_arg.getValue(), + device_type(type_arg.getValue()) + }; +} diff --git a/utils/include/CL/SDK/Detail.hpp b/utils/include/CL/SDK/Detail.hpp new file mode 100644 index 00000000..c04be56f --- /dev/null +++ b/utils/include/CL/SDK/Detail.hpp @@ -0,0 +1,18 @@ +#pragma once + +namespace cl +{ +namespace sdk +{ +namespace detail +{ + // Borrowed from: https://www.fluentcpp.com/2019/03/05/for_each_arg-applying-a-function-to-each-argument-of-a-function-in-cpp/ + template + F for_each_arg(F f, Args&&...args) + { + std::initializer_list{((void)f(std::forward(args)), 0)...}; + return f; + } +} +} +} diff --git a/utils/include/CL/SDK/Error.hpp b/utils/include/CL/SDK/Error.hpp new file mode 100644 index 00000000..2374cdc8 --- /dev/null +++ b/utils/include/CL/SDK/Error.hpp @@ -0,0 +1,78 @@ +#pragma once + +#include + +#define CL_SDK_INDEX_OUT_OF_RANGE -2000 + +namespace cl +{ +namespace sdk +{ +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + /*! \brief Exception class + * + * This may be thrown by SDK utility functions when CL_HPP_ENABLE_EXCEPTIONS is defined. + */ + class Error : public std::exception + { + private: + int err_; + const char * errStr_; + public: + /*! \brief Create a new SDK error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) + {} + + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char * what() const throw () + { + if (errStr_ == NULL) { + return "empty"; + } + else { + return errStr_; + } + } + + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } + }; +#endif + +namespace detail +{ + void errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); +} + +} +} + +void cl::sdk::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) +{ + if (err != CL_SUCCESS) + { +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + throw cl::sdk::Error{err, errStr}; +#else + (void) errStr; // suppress unused variable warning + if (errPtr != nullptr) + *errPtr = err; +#endif + } +} \ No newline at end of file diff --git a/utils/include/CL/SDK/Options.hpp b/utils/include/CL/SDK/Options.hpp new file mode 100644 index 00000000..98b1e47a --- /dev/null +++ b/utils/include/CL/SDK/Options.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include + +namespace cl +{ +namespace sdk +{ +namespace options +{ + struct Triplet + { + int plat_index; + int dev_index; + cl_device_type dev_type; + }; + + struct Diagnostic + { + bool verbose, + quiet; + }; + struct SingleDevice + { + Triplet triplet; + }; + struct MultiDevice + { + cl::vector triplet; + }; +} +} +} \ No newline at end of file diff --git a/utils/include/CL/SDK/Utils.hpp b/utils/include/CL/SDK/Utils.hpp new file mode 100644 index 00000000..4a0eb0c8 --- /dev/null +++ b/utils/include/CL/SDK/Utils.hpp @@ -0,0 +1,78 @@ +#pragma once + +#include +#include + +#include + +#include + +namespace cl +{ +namespace sdk +{ + Context get_context(options::Triplet triplet, cl_int* error = nullptr); + + Context get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); + + template + void fill_with_random(PRNG&& prng, Containers&&... containers) + { + detail::for_each_arg([&](auto&& container) + { + std::generate_n(std::begin(container), container.size(), prng); + }, containers...); + } +} +} + +cl::Context cl::sdk::get_context(options::Triplet triplet, cl_int* error) +{ + return cl::sdk::get_context( + triplet.plat_index, + triplet.dev_index, + triplet.dev_type, + error + ); +} + +cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +{ + cl::vector platforms; + cl_int plat_err = cl::Platform::get(&platforms); + + if (plat_err == CL_SUCCESS) + { + if (plat_id > 0 && plat_id < platforms.size()) + { + cl::vector devices; + cl_int dev_err = platforms[plat_id].getDevices(type, &devices); + + if (dev_err == CL_SUCCESS) + { + if (dev_id > 0 && dev_id < devices.size()) + { + return cl::Context(devices[dev_id]); + } + else + detail::errHandler( + CL_SDK_INDEX_OUT_OF_RANGE, + error, + "Invalid device index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error); + } + else + detail::errHandler( + CL_SDK_INDEX_OUT_OF_RANGE, + error, + "Invalid platform index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error); + + return cl::Context{}; +} diff --git a/utils/src/SDKUtils.c b/utils/src/SDKUtils.c new file mode 100644 index 00000000..e69de29b diff --git a/utils/src/SDKUtils.cpp b/utils/src/SDKUtils.cpp new file mode 100644 index 00000000..c21d5540 --- /dev/null +++ b/utils/src/SDKUtils.cpp @@ -0,0 +1,66 @@ +#include + +void cl::sdk::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) +{ + if (err != CL_SUCCESS) + { +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + throw Error(err, errStr); +#else + (void) errStr; // suppress unused variable warning + if (errPtr != nullptr) + *errPtr = err; +#endif + } +} + +cl::Context cl::sdk::get_context(Triplet triplet, cl_int* error) +{ + return cl::sdk::get_context( + triplet.plat_index, + triplet.dev_index, + triplet.dev_type, + error + ); +} + +cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +{ + cl::vector platforms; + cl_int plat_err = cl::Platform::get(&platforms); + + if (plat_err == CL_SUCCESS) + { + if (plat_id > 0 && plat_id < platforms.size()) + { + cl::vector devices; + cl_int dev_err = platforms[plat_id].getDevices(type, &devices); + + if (dev_err == CL_SUCCESS) + { + if (dev_id > 0 && dev_id < devices.size()) + { + return cl::Context(devices[dev_id]); + } + else + detail::errHandler( + CL_SDK_INDEX_OUT_OF_RANGE, + error, + "Invalid device index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error); + } + else + detail::errHandler( + CL_SDK_INDEX_OUT_OF_RANGE, + error, + "Invalid platform index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error); + + return cl::Context{}; +} From 604f21431c5f0b6b2bbc9f7f6e433186de165568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 16:01:58 +0200 Subject: [PATCH 010/203] Added initial C++ saxpy --- CMakeLists.txt | 4 +- cmake/Modules/FindTCLAP.cmake | 28 ++++++ samples/CMakeLists.txt | 21 +++-- samples/core/CMakeLists.txt | 2 +- samples/core/saxpy/CMakeLists.txt | 26 +++++ samples/core/saxpy/main.c | 0 samples/core/saxpy/main.cpp | 151 ++++++++++++++++++++++++++++++ 7 files changed, 223 insertions(+), 9 deletions(-) create mode 100644 cmake/Modules/FindTCLAP.cmake create mode 100644 samples/core/saxpy/CMakeLists.txt create mode 100644 samples/core/saxpy/main.c create mode 100644 samples/core/saxpy/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index a595ed9d..b73684e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,9 +14,10 @@ cmake_minimum_required(VERSION 3.0) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 14) project(OpenCL-SDK + VERSION 1.0 LANGUAGES C CXX ) @@ -34,6 +35,7 @@ add_subdirectory(external/OpenCL-Headers) add_subdirectory(external/OpenCL-ICD-Loader) add_subdirectory(external/OpenCL-CLHPP) +add_subdirectory(utils) add_subdirectory(samples) set_target_properties(OpenCL PROPERTIES LIBRARY_OUTPUT_DIRECTORY diff --git a/cmake/Modules/FindTCLAP.cmake b/cmake/Modules/FindTCLAP.cmake new file mode 100644 index 00000000..70fbf3b9 --- /dev/null +++ b/cmake/Modules/FindTCLAP.cmake @@ -0,0 +1,28 @@ +# - Find TCLAP +# Find the TCLAP headers +# +# TCLAP_INCLUDE_DIR - where to find the TCLAP headers +# TCLAP_FOUND - True if TCLAP is found + +if (TCLAP_INCLUDE_DIR) + # already in cache, be silent + set (TCLAP_FIND_QUIETLY TRUE) +endif (TCLAP_INCLUDE_DIR) + +# find the headers +find_path (TCLAP_INCLUDE_PATH tclap/CmdLine.h + PATHS + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_INSTALL_PREFIX}/include + ) + +# handle the QUIETLY and REQUIRED arguments and set TCLAP_FOUND to +# TRUE if all listed variables are TRUE +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (TCLAP "TCLAP (http://tclap.sourceforge.net/) could not be found. Set TCLAP_INCLUDE_PATH to point to the headers adding '-DTCLAP_INCLUDE_PATH=/path/to/tclap' to the cmake command." TCLAP_INCLUDE_PATH) + +if (TCLAP_FOUND) + set (TCLAP_INCLUDE_DIR ${TCLAP_INCLUDE_PATH}) +endif (TCLAP_FOUND) + +mark_as_advanced(TCLAP_INCLUDE_PATH) \ No newline at end of file diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 83fa4a66..bab60057 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -18,6 +18,10 @@ else() set(OPENCL_SAMPLE_CONFIGS ${CMAKE_BUILD_TYPE}) endif() +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) +find_package(TCLAP REQUIRED) +set(OPENCL_SAMPLE_INCLUDES ${TCLAP_INCLUDE_DIR}) + # Usage: # add_sample( # TEST # optional, adds a ctest for the sample @@ -29,7 +33,7 @@ endif() # INCLUDES ... # optional, specifies additional include directories for the sample # LIBS ... # optional, specifies additional libraries for the sample # ) -function(add_sample) +macro(add_sample) set(options TEST) set(one_value_args TARGET VERSION CATEGORY) set(multi_value_args SOURCES KERNELS INCLUDES LIBS) @@ -46,12 +50,15 @@ function(add_sample) add_executable(${OPENCL_SAMPLE_TARGET} ${OPENCL_SAMPLE_SOURCES}) target_include_directories(${OPENCL_SAMPLE_TARGET} PRIVATE ${OPENCL_SDK_INCLUDE_DIRS} ${OPENCL_SAMPLE_INCLUDES}) - target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE OpenCL::Headers OpenCL::HeadersCpp OpenCL::OpenCL ${OPENCL_SAMPLE_LIBS}) + target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE OpenCL::Headers OpenCL::HeadersCpp OpenCL::OpenCL OpenCL::SDKUtilsCpp ${OPENCL_SAMPLE_LIBS}) - target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_HPP_ENABLE_EXCEPTIONS) - target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION}) - target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_HPP_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION}) - target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_HPP_MINIMUM_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION}) + target_compile_definitions(${OPENCL_SAMPLE_TARGET} + PRIVATE + CL_HPP_ENABLE_EXCEPTIONS + CL_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} + CL_HPP_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} + CL_HPP_MINIMUM_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} + ) if (WIN32) target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE _CRT_SECURE_NO_WARNINGS) endif() @@ -65,7 +72,7 @@ function(add_sample) if(OPENCL_SAMPLE_TEST) add_test(NAME ${OPENCL_SAMPLE_TARGET} COMMAND ${OPENCL_SAMPLE_TARGET}) endif() -endfunction() +endmacro() add_subdirectory(core) diff --git a/samples/core/CMakeLists.txt b/samples/core/CMakeLists.txt index 00b36a1a..bef2c7b5 100644 --- a/samples/core/CMakeLists.txt +++ b/samples/core/CMakeLists.txt @@ -15,4 +15,4 @@ add_subdirectory(enumopencl) add_subdirectory(copybuffer) add_subdirectory(copybufferkernel) - +add_subdirectory(saxpy) diff --git a/samples/core/saxpy/CMakeLists.txt b/samples/core/saxpy/CMakeLists.txt new file mode 100644 index 00000000..33494368 --- /dev/null +++ b/samples/core/saxpy/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET saxpy + VERSION 120 + SOURCES main.c) + +add_sample( + TEST + TARGET cppsaxpy + VERSION 120 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c new file mode 100644 index 00000000..e69de29b diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp new file mode 100644 index 00000000..0d1838b5 --- /dev/null +++ b/samples/core/saxpy/main.cpp @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include + +// STL includes +#include +#include +#include +#include +#include + +// TCLAP includes +#include + +struct SaxpyOptions { size_t length; }; + +template <> +SaxpyOptions cl::sdk::parse(int argc, char* argv[]) +{ + TCLAP::CmdLine cli(""); + TCLAP::ValueArg length_arg("l", "length", "Length of input", false, 1'048'576, "positive integral", cli ); + cli.parse(argc, argv); + return SaxpyOptions{ length_arg.getValue() }; +} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = cl::sdk::parse_cli< + cl::sdk::options::Diagnostic, + cl::sdk::options::SingleDevice, + SaxpyOptions>(argc, argv); + const auto& diag_opts = std::get(opts); + const auto& dev_opts = std::get(opts); + const auto& saxpy_opts = std::get(opts); + + // C++17 version = 6 lines vs. 7 and less ::, repetition and bloat. + //auto [diag_opts, + // dev_opts, + // saxpy_opts] = cl::sdk::parse_cli< + // cl::sdk::options::Diagnostic, + // cl::sdk::options::SingleDevice, + // SaxpyOptions>(argc, argv); + + // Create runtime objects based on user preference or default + cl::Context context = cl::sdk::get_context(dev_opts.triplet); + cl::Device device = context.getInfo().at(0); + cl::CommandQueue queue{ device }; + cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + + if (!diag_opts.quiet) { + std::cout << + "Selected platform: " << platform.getInfo() << "\n" << + "Selected device: " << device.getInfo() << "\n" << + std::endl; + } + + // Compile kernel + const char* kernel_location = "./saxpy.cl"; + std::ifstream kernel_stream{ kernel_location }; + if (!kernel_stream.is_open()) + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + + cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, + std::istreambuf_iterator{} } }; + program.build( device ); + + auto saxpy = cl::KernelFunctor(program, "saxpy"); + + // Initialize host-side storage + const auto length = saxpy_opts.length; + + auto prng = [engine = std::default_random_engine{}, + dist = std::uniform_real_distribution{ -100.0, 100.0 }]() mutable { + return dist(engine); + }; + + cl_float a = prng(); + std::valarray arr_x(length), + arr_y(length); + cl::sdk::fill_with_random(prng, arr_x, arr_y); + + // Initialize device-side storage + cl::Buffer buf_x{ queue, std::begin(arr_x), std::end(arr_x), true }, + buf_y{ queue, std::begin(arr_y), std::end(arr_y), false }; + + // Execute kernel + saxpy(cl::EnqueueArgs{ queue, cl::NDRange{ length } }, a, buf_x, buf_y); + + // Concurrently calculate reference dataset + arr_y = a * arr_x + arr_y; + + // Fetch results + cl::copy(queue, buf_y, std::begin(arr_x), std::end(arr_x)); + + // Validate + if (std::equal(std::begin(arr_x), std::end(arr_x), + std::begin(arr_y), std::end(arr_y))) + std::cout << "Verification passed." << std::endl; + else + throw std::runtime_error{ "Verification FAILED!" }; + + return 0; + } + catch(cl::sdk::Error& e) + { + std::cerr << "OpenCL SDK error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} \ No newline at end of file From ddc9f26e1ea83d22a8f06326a14ea63c4e5baac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 16:27:49 +0200 Subject: [PATCH 011/203] Fix index range checks --- utils/include/CL/SDK/Utils.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/include/CL/SDK/Utils.hpp b/utils/include/CL/SDK/Utils.hpp index 4a0eb0c8..395c93b4 100644 --- a/utils/include/CL/SDK/Utils.hpp +++ b/utils/include/CL/SDK/Utils.hpp @@ -43,14 +43,14 @@ cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, c if (plat_err == CL_SUCCESS) { - if (plat_id > 0 && plat_id < platforms.size()) + if (plat_id >= 0 && plat_id < platforms.size()) { cl::vector devices; cl_int dev_err = platforms[plat_id].getDevices(type, &devices); if (dev_err == CL_SUCCESS) { - if (dev_id > 0 && dev_id < devices.size()) + if (dev_id >= 0 && dev_id < devices.size()) { return cl::Context(devices[dev_id]); } From a71d8aa1b75350aefc0d958616f2da1098dbb140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 16:28:09 +0200 Subject: [PATCH 012/203] Initial kernel file --- samples/core/saxpy/saxpy.cl | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 samples/core/saxpy/saxpy.cl diff --git a/samples/core/saxpy/saxpy.cl b/samples/core/saxpy/saxpy.cl new file mode 100644 index 00000000..fc15c334 --- /dev/null +++ b/samples/core/saxpy/saxpy.cl @@ -0,0 +1,8 @@ +__kernel void saxpy(float a, + __global float* x, + __global float* y) +{ + int gid = get_global_id(0); + + y[gid] = a * x[gid] + y[gid]; +} From ca3c69865e9cadd4d5528454387e5e4ce388a3e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 12 Oct 2021 17:29:33 +0200 Subject: [PATCH 013/203] WIP --- utils/include/CL/SDK/CLI.hpp | 18 ++++++++++++++++-- utils/include/CL/SDK/Detail.hpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/utils/include/CL/SDK/CLI.hpp b/utils/include/CL/SDK/CLI.hpp index 424eb230..c45deb51 100644 --- a/utils/include/CL/SDK/CLI.hpp +++ b/utils/include/CL/SDK/CLI.hpp @@ -12,11 +12,25 @@ namespace sdk Option parse(int argc, char* argv[]); template - std::tuple parse_cli(int argc, char* argv[]) + std::tuple parse_cli(int argc, char* argv[], std::string banner = "") { - return std::make_tuple( + TCLAP::CmdLine cli(banner); + + auto parsers = std::make_tuple( parse(argc, argv)... ); + + detail::for_each_elem_in_tuple(parsers, [&](auto&& parser) + { + detail::for_each_elem_in_tuple(parsers, [&](auto&& args) + { + cli.add(arg); + }); + }); + + cli.parse(argc, argv); + + return detail::transform_each(parsers, comprehend<); } } } diff --git a/utils/include/CL/SDK/Detail.hpp b/utils/include/CL/SDK/Detail.hpp index c04be56f..592b047f 100644 --- a/utils/include/CL/SDK/Detail.hpp +++ b/utils/include/CL/SDK/Detail.hpp @@ -1,5 +1,7 @@ #pragma once +#include + namespace cl { namespace sdk @@ -13,6 +15,34 @@ namespace detail std::initializer_list{((void)f(std::forward(args)), 0)...}; return f; } + + // Helpers for for_each_elem + template + void + for_each(T&& t, F f, std::integer_sequence) + { + auto l = { (f(std::get(t)), 0)... }; + } + + template + void + for_each_in_tuple(std::tuple const& t, F f) + { + detail::for_each(t, f, std::make_integer_sequence()); + } + + template + auto transform_each_impl(Tuple t, F f, std::index_sequence) { + return std::make_tuple( + f(std::get(t) )... + ); + } + + template + auto transform_each(const std::tuple& t, F f) { + return detail::transform_each_impl( + t, f, std::make_index_sequence{}); + } } } } From 82565163ffab69a7be8551d37ac7a21e45b9cc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 14 Oct 2021 15:43:53 +0200 Subject: [PATCH 014/203] Fix CLI parsing SDK utility --- CMakeLists.txt | 2 +- samples/core/saxpy/main.cpp | 33 ++++++------ utils/include/CL/SDK/CLI.hpp | 93 ++++++++++++++++++++------------- utils/include/CL/SDK/Detail.hpp | 27 ++++++---- 4 files changed, 88 insertions(+), 67 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b73684e9..be94f23c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ cmake_minimum_required(VERSION 3.0) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) project(OpenCL-SDK VERSION 1.0 diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 0d1838b5..c9fb25ee 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -29,15 +29,20 @@ // TCLAP includes #include +// Sample-specific option struct SaxpyOptions { size_t length; }; -template <> -SaxpyOptions cl::sdk::parse(int argc, char* argv[]) -{ - TCLAP::CmdLine cli(""); - TCLAP::ValueArg length_arg("l", "length", "Length of input", false, 1'048'576, "positive integral", cli ); - cli.parse(argc, argv); - return SaxpyOptions{ length_arg.getValue() }; +// Add option to CLI parsing SDK utility +template <> auto cl::sdk::parse(){ + return std::make_tuple( + std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral") + ); +} +template <> auto cl::sdk::comprehend( + std::shared_ptr> length_arg){ + return SaxpyOptions{ + length_arg->getValue() + }; } int main(int argc, char* argv[]) @@ -49,17 +54,9 @@ int main(int argc, char* argv[]) cl::sdk::options::Diagnostic, cl::sdk::options::SingleDevice, SaxpyOptions>(argc, argv); - const auto& diag_opts = std::get(opts); - const auto& dev_opts = std::get(opts); - const auto& saxpy_opts = std::get(opts); - - // C++17 version = 6 lines vs. 7 and less ::, repetition and bloat. - //auto [diag_opts, - // dev_opts, - // saxpy_opts] = cl::sdk::parse_cli< - // cl::sdk::options::Diagnostic, - // cl::sdk::options::SingleDevice, - // SaxpyOptions>(argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); + const auto& saxpy_opts = std::get<2>(opts); // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); diff --git a/utils/include/CL/SDK/CLI.hpp b/utils/include/CL/SDK/CLI.hpp index c45deb51..67651acb 100644 --- a/utils/include/CL/SDK/CLI.hpp +++ b/utils/include/CL/SDK/CLI.hpp @@ -1,75 +1,96 @@ #pragma once +// OpenCL SDK includes #include #include #include +// TCLAP includes +#include + namespace cl { namespace sdk { template - Option parse(int argc, char* argv[]); + auto parse(); + + template + auto comprehend(Parsers... parsers); + +namespace detail +{ + template + auto comprehend_helper(std::tuple parser) + { + // TODO: backport C++17 std::apply to C++14 + return std::apply(comprehend, parser); + } +} template - std::tuple parse_cli(int argc, char* argv[], std::string banner = "") + std::tuple parse_cli(int argc, char* argv[], std::string banner = "OpenCL SDK sample template") { TCLAP::CmdLine cli(banner); auto parsers = std::make_tuple( - parse(argc, argv)... + std::make_pair(Options{}, parse())... ); - detail::for_each_elem_in_tuple(parsers, [&](auto&& parser) - { - detail::for_each_elem_in_tuple(parsers, [&](auto&& args) - { - cli.add(arg); + detail::for_each_in_tuple(parsers, [&](auto&& parser){ + detail::for_each_in_tuple(parser.second, [&](auto&& arg){ + cli.add(arg.get()); }); }); cli.parse(argc, argv); - return detail::transform_each(parsers, comprehend<); + return detail::transform_tuple(parsers, [](auto&& parser){ + return detail::comprehend_helper>(parser.second); + }); } } } -// TCLAP includes -#include +// SDK built-in CLI parsers template <> -cl::sdk::options::Diagnostic cl::sdk::parse(int argc, char* argv[]) +auto cl::sdk::parse() +{ + return std::make_tuple( + std::make_shared("v", "verbose", "Extra informational output", false), + std::make_shared("q", "quiet", "Suppress standard output", false) + ); +} +template <> +auto cl::sdk::comprehend( + std::shared_ptr verbose_arg, + std::shared_ptr quiet_arg) { - TCLAP::CmdLine cli(""); - - TCLAP::SwitchArg verbose_arg("v", "verbose", "Extra informational output", false); - TCLAP::SwitchArg quiet_arg("q", "quiet", "Suppress standard output", false); - - cli.add(verbose_arg); - cli.add(quiet_arg); - - cli.parse(argc, argv); - return options::Diagnostic{ - verbose_arg.getValue(), - quiet_arg.getValue() + verbose_arg->getValue(), + quiet_arg->getValue() }; } template <> -cl::sdk::options::SingleDevice cl::sdk::parse(int argc, char* argv[]) +auto cl::sdk::parse() { - TCLAP::CmdLine cli(""); - - TCLAP::ValueArg platform_arg("p", "platform", "Index of platform to use", false, 0, "positive integral", cli ); - TCLAP::ValueArg device_arg("d", "device", "Index of device to use", false, 0, "positive integral", cli); - std::vector valid_dev_strings{ "all", "cpu", "gpu", "acc", "def" }; TCLAP::ValuesConstraint valid_dev_constraint{ valid_dev_strings }; - TCLAP::ValueArg type_arg{ "t", "type","Type of device to use", false, "def", &valid_dev_constraint , cli }; - + return std::make_tuple( + std::make_shared>("p", "platform", "Index of platform to use", false, 0, "positive integral"), + std::make_shared>("d", "device", "Index of device to use", false, 0, "positive integral"), + std::make_shared>( "t", "type","Type of device to use", false, "def", &valid_dev_constraint) + ); +} +template <> +auto cl::sdk::comprehend( + std::shared_ptr> platform_arg, + std::shared_ptr> device_arg, + std::shared_ptr> type_arg) +{ auto device_type = [](std::string in) -> cl_device_type { if (in == "all") return CL_DEVICE_TYPE_ALL; @@ -80,11 +101,9 @@ cl::sdk::options::SingleDevice cl::sdk::parse(in else throw std::logic_error{ "Unkown device type after cli parse. Should not have happened." }; }; - cli.parse(argc, argv); - return options::SingleDevice{ - platform_arg.getValue(), - device_arg.getValue(), - device_type(type_arg.getValue()) + platform_arg->getValue(), + device_arg->getValue(), + device_type(type_arg->getValue()) }; } diff --git a/utils/include/CL/SDK/Detail.hpp b/utils/include/CL/SDK/Detail.hpp index 592b047f..73930f5d 100644 --- a/utils/include/CL/SDK/Detail.hpp +++ b/utils/include/CL/SDK/Detail.hpp @@ -16,32 +16,37 @@ namespace detail return f; } - // Helpers for for_each_elem +namespace impl +{ + // Borrowed from: https://stackoverflow.com/a/16387374/1476661 template void - for_each(T&& t, F f, std::integer_sequence) + for_each_in_tuple(T&& t, F&& f, std::integer_sequence) { - auto l = { (f(std::get(t)), 0)... }; + auto l = { (f(std::get(std::forward(t))), 0)... }; (void)l; } - +} template void for_each_in_tuple(std::tuple const& t, F f) { - detail::for_each(t, f, std::make_integer_sequence()); + impl::for_each_in_tuple(t, f, std::make_integer_sequence()); } +namespace impl +{ + // Borrowed from https://codereview.stackexchange.com/questions/193420/apply-a-function-to-each-element-of-a-tuple-map-a-tuple template - auto transform_each_impl(Tuple t, F f, std::index_sequence) { + auto transform_tuple(const Tuple& t, F&& f, std::index_sequence) { return std::make_tuple( - f(std::get(t) )... + f(std::get(t))... ); } - +} template - auto transform_each(const std::tuple& t, F f) { - return detail::transform_each_impl( - t, f, std::make_index_sequence{}); + auto transform_tuple(const std::tuple& t, F&& f) { + return impl::transform_tuple( + t, std::forward(f), std::make_index_sequence{}); } } } From 87b6123f462328649b89df574b407f118a6edb19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 14 Oct 2021 15:48:30 +0200 Subject: [PATCH 015/203] Added context to the queue --- samples/core/saxpy/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index c9fb25ee..0e747262 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -61,7 +61,7 @@ int main(int argc, char* argv[]) // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); - cl::CommandQueue queue{ device }; + cl::CommandQueue queue{ context, device }; cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 if (!diag_opts.quiet) { From e23e6d5324e182bcb733093ceb65a8bdcfbb8d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 11:30:23 +0200 Subject: [PATCH 016/203] Document saxpy sample --- samples/core/saxpy/README.md | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 samples/core/saxpy/README.md diff --git a/samples/core/saxpy/README.md b/samples/core/saxpy/README.md new file mode 100644 index 00000000..de31ab91 --- /dev/null +++ b/samples/core/saxpy/README.md @@ -0,0 +1,47 @@ +# saxpy + +## Sample Purpose + +This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. + +This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. + +## Key APIs and Concepts + +The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. + +### Application flow + +You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flxibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is the _alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. + +If we aimed for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. + +### Lazy buffer movement + +OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. + +This sample creates buffers, specifies their initial content with an iterator rannge spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to Device Global Memory. + +Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. + +#### Explicit host-device-host buffer movement + +Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer CTOR overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. + +### In-order queue usage + +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). + +### Used API surface + +```c++ +cl::util::get_context(cl::util::Triplet) +cl::Context::getInfo() +cl::CommandQueue(cl::Context, cl::Device) +cl::Device::getInfo() +cl::util::get_program(cl::Context, cl::string) +cl::KernelFunctor<...>(cl::Program, const char*) +cl::sdk::fill_with_random(...) +cl::Buffer(cl::CommandQueue, Iter, Iter, bool) +cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +``` From 31796034259e2ddd1955d8c96d3e45d1f28e65cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 11:30:35 +0200 Subject: [PATCH 017/203] Change to lazy buffer --- samples/core/saxpy/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 0e747262..81b7bec9 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -97,8 +97,8 @@ int main(int argc, char* argv[]) cl::sdk::fill_with_random(prng, arr_x, arr_y); // Initialize device-side storage - cl::Buffer buf_x{ queue, std::begin(arr_x), std::end(arr_x), true }, - buf_y{ queue, std::begin(arr_y), std::end(arr_y), false }; + cl::Buffer buf_x{ context, std::begin(arr_x), std::end(arr_x), true }, + buf_y{ context, std::begin(arr_y), std::end(arr_y), false }; // Execute kernel saxpy(cl::EnqueueArgs{ queue, cl::NDRange{ length } }, a, buf_x, buf_y); From 081135d331c17d5772e00fad7148193bb89de62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 13:15:26 +0200 Subject: [PATCH 018/203] Add empty main --- samples/core/saxpy/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index e69de29b..19236684 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -0,0 +1 @@ +int main() {return 0;} From cbf5b8842123acd517f6492b09e64ea3731ebc3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 13:15:53 +0200 Subject: [PATCH 019/203] Bump submodule hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 8a9854f7..2197bc54 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 8a9854f7d16a42c8ce888d106d792ba0a28bdcc9 +Subproject commit 2197bc5416f066f9d9a693367fc4812391be7692 From 38e5ad7da21b1263d1d4af8af3759e05de7d7b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 17:38:12 +0200 Subject: [PATCH 020/203] Separate Util and SDK libs --- CMakeLists.txt | 2 +- lib/CMakeLists.txt | 96 +++++++++++++++++++ {utils => lib}/include/CL/SDK/CLI.hpp | 13 +-- lib/include/CL/SDK/Context.hpp | 22 +++++ {utils => lib}/include/CL/SDK/Options.hpp | 5 +- lib/include/CL/SDK/Random.hpp | 20 ++++ lib/include/CL/Utils/Context.h | 8 ++ lib/include/CL/Utils/Context.hpp | 14 +++ .../SDK => lib/include/CL/Utils}/Detail.hpp | 6 +- lib/include/CL/Utils/Error.h | 3 + .../CL/SDK => lib/include/CL/Utils}/Error.hpp | 10 +- lib/include/CL/Utils/File.h | 9 ++ lib/include/CL/Utils/Utils.h | 4 + lib/include/CL/Utils/Utils.hpp | 5 + lib/src/Utils/Context.c | 6 ++ .../SDKUtils.cpp => lib/src/Utils/Context.cpp | 38 ++------ .../CL/SDK/Utils.h => lib/src/Utils/File.c | 3 +- lib/src/Utils/Utils.c | 2 + lib/src/Utils/Utils.cpp | 1 + samples/CMakeLists.txt | 21 ++-- samples/core/saxpy/main.cpp | 8 +- utils/CMakeLists.txt | 74 -------------- utils/include/CL/SDK/Utils.hpp | 78 --------------- utils/include/CL/utils/.keepme | 0 utils/src/.keepme | 0 utils/src/SDKUtils.c | 0 26 files changed, 237 insertions(+), 211 deletions(-) create mode 100644 lib/CMakeLists.txt rename {utils => lib}/include/CL/SDK/CLI.hpp (91%) create mode 100644 lib/include/CL/SDK/Context.hpp rename {utils => lib}/include/CL/SDK/Options.hpp (90%) create mode 100644 lib/include/CL/SDK/Random.hpp create mode 100644 lib/include/CL/Utils/Context.h create mode 100644 lib/include/CL/Utils/Context.hpp rename {utils/include/CL/SDK => lib/include/CL/Utils}/Detail.hpp (88%) create mode 100644 lib/include/CL/Utils/Error.h rename {utils/include/CL/SDK => lib/include/CL/Utils}/Error.hpp (87%) create mode 100644 lib/include/CL/Utils/File.h create mode 100644 lib/include/CL/Utils/Utils.h create mode 100644 lib/include/CL/Utils/Utils.hpp create mode 100644 lib/src/Utils/Context.c rename utils/src/SDKUtils.cpp => lib/src/Utils/Context.cpp (53%) rename utils/include/CL/SDK/Utils.h => lib/src/Utils/File.c (98%) create mode 100644 lib/src/Utils/Utils.c create mode 100644 lib/src/Utils/Utils.cpp delete mode 100644 utils/CMakeLists.txt delete mode 100644 utils/include/CL/SDK/Utils.hpp delete mode 100644 utils/include/CL/utils/.keepme delete mode 100644 utils/src/.keepme delete mode 100644 utils/src/SDKUtils.c diff --git a/CMakeLists.txt b/CMakeLists.txt index be94f23c..1af2e06c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ add_subdirectory(external/OpenCL-Headers) add_subdirectory(external/OpenCL-ICD-Loader) add_subdirectory(external/OpenCL-CLHPP) -add_subdirectory(utils) +add_subdirectory(lib) add_subdirectory(samples) set_target_properties(OpenCL PROPERTIES LIBRARY_OUTPUT_DIRECTORY diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 00000000..3cffbab3 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,96 @@ +include(GenerateExportHeader) +include(GNUInstallDirs) + +foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) + if(UTIL_LIB_NAME STREQUAL Utils) + set(UTIL_LIB_SOURCES src/Utils/Utils.c) + set(UTIL_LIB_DEPS + OpenCL::Headers + OpenCL::Utils + ) + set(UTIL_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) + elseif(UTIL_LIB_NAME STREQUAL UtilsCpp) + set(UTIL_LIB_SOURCES src/Utils/Utils.cpp) + set(UTIL_LIB_DEPS + OpenCL::HeadersCpp + OpenCL::UtilsCpp + ) + set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) + else() + message(FATAL_ERROR "Unkown SDK flavor") + endif() + set(UTIL_LIB_TARGET OpenCL${UTIL_LIB_NAME}) + add_library(${UTIL_LIB_TARGET} ${UTIL_LIB_SOURCES}) + add_library(OpenCL::${UTIL_LIB_NAME} ALIAS ${UTIL_LIB_TARGET}) + + string(TOUPPER ${UTIL_LIB_NAME} UPPER_UTIL_LIB_NAME) + generate_export_header(${UTIL_LIB_TARGET} + EXPORT_MACRO_NAME ${UPPER_UTIL_LIB_NAME}_EXPORT + EXPORT_FILE_NAME OpenCL${UTIL_LIB_NAME}_Export.h + ) + target_sources(${UTIL_LIB_TARGET} + PUBLIC + $ + $ + ) + + target_include_directories(${UTIL_LIB_TARGET} + PUBLIC + $ + $ + $ + ) + target_link_libraries(${UTIL_LIB_TARGET} + PUBLIC + ${UTIL_LIB_DEPS} + OpenCL::OpenCL + ) + target_compile_definitions(${UTIL_LIB_TARGET} + PRIVATE + ${UTIL_CL_VERSION_MACRO_NAME}=300 + ) + + set_target_properties(${UTIL_LIB_TARGET} PROPERTIES FOLDER "Libraries/${UTIL_LIB_NAME}") + + install( + TARGETS ${UTIL_LIB_TARGET} + EXPORT OpenCL${UTIL_LIB_NAME}Targets + ) + install( + DIRECTORY include/CL + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + export( + EXPORT OpenCL${UTIL_LIB_NAME}Targets + FILE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Targets.cmake + NAMESPACE OpenCL:: + ) + file( + WRITE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCL${UTIL_LIB_NAME}Targets.cmake\")" + ) + + set(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}) + install( + EXPORT OpenCL${UTIL_LIB_NAME}Targets + FILE OpenCL${UTIL_LIB_NAME}Targets.cmake + NAMESPACE OpenCL:: + DESTINATION ${config_package_location} + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + DESTINATION ${config_package_location} + ) + + unset(CMAKE_SIZEOF_VOID_P) + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + DESTINATION ${config_package_location} + ) +endforeach() \ No newline at end of file diff --git a/utils/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp similarity index 91% rename from utils/include/CL/SDK/CLI.hpp rename to lib/include/CL/SDK/CLI.hpp index 67651acb..8a41b66c 100644 --- a/utils/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -1,9 +1,10 @@ #pragma once -// OpenCL SDK includes -#include +// OpenCL SDK #include -#include + +// OpenCL Utils includes +#include // TCLAP includes #include @@ -37,15 +38,15 @@ namespace detail std::make_pair(Options{}, parse())... ); - detail::for_each_in_tuple(parsers, [&](auto&& parser){ - detail::for_each_in_tuple(parser.second, [&](auto&& arg){ + util::detail::for_each_in_tuple(parsers, [&](auto&& parser){ + util::detail::for_each_in_tuple(parser.second, [&](auto&& arg){ cli.add(arg.get()); }); }); cli.parse(argc, argv); - return detail::transform_tuple(parsers, [](auto&& parser){ + return util::detail::transform_tuple(parsers, [](auto&& parser){ return detail::comprehend_helper>(parser.second); }); } diff --git a/lib/include/CL/SDK/Context.hpp b/lib/include/CL/SDK/Context.hpp new file mode 100644 index 00000000..8a08edac --- /dev/null +++ b/lib/include/CL/SDK/Context.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +namespace cl +{ +namespace sdk +{ + Context get_context(options::Triplet triplet, cl_int* error = nullptr); +} +} + +cl::Context cl::sdk::get_context(options::Triplet triplet, cl_int* error) +{ + return cl::util::get_context( + triplet.plat_index, + triplet.dev_index, + triplet.dev_type, + error + ); +} \ No newline at end of file diff --git a/utils/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp similarity index 90% rename from utils/include/CL/SDK/Options.hpp rename to lib/include/CL/SDK/Options.hpp index 98b1e47a..f2bb3263 100644 --- a/utils/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -14,7 +14,6 @@ namespace options int dev_index; cl_device_type dev_type; }; - struct Diagnostic { bool verbose, @@ -26,8 +25,8 @@ namespace options }; struct MultiDevice { - cl::vector triplet; + cl::vector triplets; }; } } -} \ No newline at end of file +} diff --git a/lib/include/CL/SDK/Random.hpp b/lib/include/CL/SDK/Random.hpp new file mode 100644 index 00000000..fb509d7a --- /dev/null +++ b/lib/include/CL/SDK/Random.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include // cl::util::detail::for_each_arg + +#include // std::generate_n + +namespace cl +{ +namespace sdk +{ + template + void fill_with_random(PRNG&& prng, Containers&&... containers) + { + util::detail::for_each_arg([&](auto&& container) + { + std::generate_n(std::begin(container), container.size(), prng); + }, containers...); + } +} +} diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h new file mode 100644 index 00000000..c2b2614b --- /dev/null +++ b/lib/include/CL/Utils/Context.h @@ -0,0 +1,8 @@ +#pragma once + +#include "OpenCLUtils_Export.h" +#include + +#include + +cl_context UTILS_EXPORT cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp new file mode 100644 index 00000000..4ceee089 --- /dev/null +++ b/lib/include/CL/Utils/Context.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +namespace cl +{ +namespace util +{ + Context UTILSCPP_EXPORT get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); +} +} diff --git a/utils/include/CL/SDK/Detail.hpp b/lib/include/CL/Utils/Detail.hpp similarity index 88% rename from utils/include/CL/SDK/Detail.hpp rename to lib/include/CL/Utils/Detail.hpp index 73930f5d..d238c200 100644 --- a/utils/include/CL/SDK/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -1,10 +1,12 @@ #pragma once -#include +#include // std::forward, std::integer_sequence +#include // std::tuple, std::get +#include // std::initializer_list namespace cl { -namespace sdk +namespace util { namespace detail { diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h new file mode 100644 index 00000000..c5a068af --- /dev/null +++ b/lib/include/CL/Utils/Error.h @@ -0,0 +1,3 @@ +#pragma once + +#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 \ No newline at end of file diff --git a/utils/include/CL/SDK/Error.hpp b/lib/include/CL/Utils/Error.hpp similarity index 87% rename from utils/include/CL/SDK/Error.hpp rename to lib/include/CL/Utils/Error.hpp index 2374cdc8..2aeab0e8 100644 --- a/utils/include/CL/SDK/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -2,11 +2,11 @@ #include -#define CL_SDK_INDEX_OUT_OF_RANGE -2000 +#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 namespace cl { -namespace sdk +namespace util { #if defined(CL_HPP_ENABLE_EXCEPTIONS) /*! \brief Exception class @@ -63,14 +63,14 @@ namespace detail } } -void cl::sdk::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) +void cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) { if (err != CL_SUCCESS) { #if defined(CL_HPP_ENABLE_EXCEPTIONS) - throw cl::sdk::Error{err, errStr}; + throw cl::util::Error{err, errStr}; #else - (void) errStr; // suppress unused variable warning + (void)errStr; // suppress unused variable warning if (errPtr != nullptr) *errPtr = err; #endif diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h new file mode 100644 index 00000000..c76bc877 --- /dev/null +++ b/lib/include/CL/Utils/File.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +// reads all the text file contents securely in ANSI C89 +// returns pointer to C-string with file contents +// can handle streams with no known size and no support for fseek +// based on https://stackoverflow.com/questions/14002954/ by Nominal Animal +char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcode_ret); diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h new file mode 100644 index 00000000..4f53366d --- /dev/null +++ b/lib/include/CL/Utils/Utils.h @@ -0,0 +1,4 @@ +#pragma once + +#include +#include diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp new file mode 100644 index 00000000..f5015c89 --- /dev/null +++ b/lib/include/CL/Utils/Utils.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include +#include +#include diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c new file mode 100644 index 00000000..417d5a7d --- /dev/null +++ b/lib/src/Utils/Context.c @@ -0,0 +1,6 @@ +#include + +cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +{ + return 0; +} \ No newline at end of file diff --git a/utils/src/SDKUtils.cpp b/lib/src/Utils/Context.cpp similarity index 53% rename from utils/src/SDKUtils.cpp rename to lib/src/Utils/Context.cpp index c21d5540..6172c368 100644 --- a/utils/src/SDKUtils.cpp +++ b/lib/src/Utils/Context.cpp @@ -1,50 +1,26 @@ -#include +#include -void cl::sdk::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) -{ - if (err != CL_SUCCESS) - { -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - throw Error(err, errStr); -#else - (void) errStr; // suppress unused variable warning - if (errPtr != nullptr) - *errPtr = err; -#endif - } -} - -cl::Context cl::sdk::get_context(Triplet triplet, cl_int* error) -{ - return cl::sdk::get_context( - triplet.plat_index, - triplet.dev_index, - triplet.dev_type, - error - ); -} - -cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); if (plat_err == CL_SUCCESS) { - if (plat_id > 0 && plat_id < platforms.size()) + if (plat_id >= 0 && plat_id < platforms.size()) { cl::vector devices; cl_int dev_err = platforms[plat_id].getDevices(type, &devices); if (dev_err == CL_SUCCESS) { - if (dev_id > 0 && dev_id < devices.size()) + if (dev_id >= 0 && dev_id < devices.size()) { return cl::Context(devices[dev_id]); } else detail::errHandler( - CL_SDK_INDEX_OUT_OF_RANGE, + CL_UTIL_INDEX_OUT_OF_RANGE, error, "Invalid device index provided for cl::Context cl::sdk::get_context()" ); @@ -54,7 +30,7 @@ cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, c } else detail::errHandler( - CL_SDK_INDEX_OUT_OF_RANGE, + CL_UTIL_INDEX_OUT_OF_RANGE, error, "Invalid platform index provided for cl::Context cl::sdk::get_context()" ); @@ -63,4 +39,4 @@ cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, c detail::errHandler(plat_err, error); return cl::Context{}; -} +} \ No newline at end of file diff --git a/utils/include/CL/SDK/Utils.h b/lib/src/Utils/File.c similarity index 98% rename from utils/include/CL/SDK/Utils.h rename to lib/src/Utils/File.c index 91af0359..96244973 100644 --- a/utils/include/CL/SDK/Utils.h +++ b/lib/src/Utils/File.c @@ -1,8 +1,7 @@ -#pragma once +#include #include #include -#include // reads all the text file contents securely in ANSI C89 // returns pointer to C-string with file contents diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c new file mode 100644 index 00000000..81d9ad86 --- /dev/null +++ b/lib/src/Utils/Utils.c @@ -0,0 +1,2 @@ +#include "Context.c" +#include "File.c" diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp new file mode 100644 index 00000000..452b0924 --- /dev/null +++ b/lib/src/Utils/Utils.cpp @@ -0,0 +1 @@ +#include "Context.cpp" diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index bab60057..f338fd74 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -49,19 +49,28 @@ macro(add_sample) add_executable(${OPENCL_SAMPLE_TARGET} ${OPENCL_SAMPLE_SOURCES}) - target_include_directories(${OPENCL_SAMPLE_TARGET} PRIVATE ${OPENCL_SDK_INCLUDE_DIRS} ${OPENCL_SAMPLE_INCLUDES}) - target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE OpenCL::Headers OpenCL::HeadersCpp OpenCL::OpenCL OpenCL::SDKUtilsCpp ${OPENCL_SAMPLE_LIBS}) - + target_include_directories(${OPENCL_SAMPLE_TARGET} + PRIVATE + ${OPENCL_SDK_INCLUDE_DIRS} + ${OPENCL_SAMPLE_INCLUDES} + ) + target_link_libraries(${OPENCL_SAMPLE_TARGET} + PRIVATE + OpenCL::Headers + OpenCL::HeadersCpp + OpenCL::OpenCL + OpenCL::Utils + OpenCL::UtilsCpp + ${OPENCL_SAMPLE_LIBS} + ) target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE CL_HPP_ENABLE_EXCEPTIONS CL_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} CL_HPP_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} CL_HPP_MINIMUM_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} + $<$:_CRT_SECURE_NO_WARNINGS> # TODO: remove ) - if (WIN32) - target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE _CRT_SECURE_NO_WARNINGS) - endif() set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}") diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 81b7bec9..ed7e6860 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -15,9 +15,11 @@ */ // OpenCL SDK includes -#include +#include +#include #include #include +#include // STL includes #include @@ -118,9 +120,9 @@ int main(int argc, char* argv[]) return 0; } - catch(cl::sdk::Error& e) + catch(cl::util::Error& e) { - std::cerr << "OpenCL SDK error: " << e.what() << std::endl; + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; std::exit(e.err()); } catch(cl::BuildError& e) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt deleted file mode 100644 index 2aa1d1b7..00000000 --- a/utils/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -foreach(UTIL_LIB_NAME IN ITEMS SDKUtils SDKUtilsCpp) - if(UTIL_LIB_NAME STREQUAL SDKUtils) - set(UTIL_LIB_SOURCES src/SDKUtils.c) - set(UTIL_LIB_DEPS OpenCL::Headers) - elseif(UTIL_LIB_NAME STREQUAL SDKUtilsCpp) - set(UTIL_LIB_SOURCES src/SDKUtils.cpp) - set(UTIL_LIB_DEPS OpenCL::HeadersCpp) - else() - message(FATAL_ERROR "Unkown SDKUtil flavor") - endif() - #add_library(${UTIL_LIB_NAME} ${UTIL_LIB_SOURCES}) - add_library(${UTIL_LIB_NAME} INTERFACE) - add_library(OpenCL::${UTIL_LIB_NAME} ALIAS ${UTIL_LIB_NAME}) - - target_include_directories(${UTIL_LIB_NAME} - INTERFACE - $ - $ - ) - target_link_libraries(${UTIL_LIB_NAME} - INTERFACE - ${UTIL_LIB_DEPS} - OpenCL::OpenCL - ) - #target_compile_definitions(${UTIL_LIB_NAME} - # INTERFACE - # CL_HPP_TARGET_OPENCL_VERSION=300 - #) - - install( - TARGETS ${UTIL_LIB_NAME} - EXPORT OpenCL${UTIL_LIB_NAME}Targets - ) - - include(GNUInstallDirs) - - install( - DIRECTORY include/CL - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) - export( - EXPORT OpenCL${UTIL_LIB_NAME}Targets - FILE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Targets.cmake - NAMESPACE OpenCL:: - ) - file( - WRITE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake - "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCL${UTIL_LIB_NAME}Targets.cmake\")" - ) - - set(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}) - install( - EXPORT OpenCL${UTIL_LIB_NAME}Targets - FILE OpenCL${UTIL_LIB_NAME}Targets.cmake - NAMESPACE OpenCL:: - DESTINATION ${config_package_location} - ) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake - DESTINATION ${config_package_location} - ) - - unset(CMAKE_SIZEOF_VOID_P) - include(CMakePackageConfigHelpers) - write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion - ) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake - DESTINATION ${config_package_location} - ) -endforeach() \ No newline at end of file diff --git a/utils/include/CL/SDK/Utils.hpp b/utils/include/CL/SDK/Utils.hpp deleted file mode 100644 index 395c93b4..00000000 --- a/utils/include/CL/SDK/Utils.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include -#include - -#include - -#include - -namespace cl -{ -namespace sdk -{ - Context get_context(options::Triplet triplet, cl_int* error = nullptr); - - Context get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); - - template - void fill_with_random(PRNG&& prng, Containers&&... containers) - { - detail::for_each_arg([&](auto&& container) - { - std::generate_n(std::begin(container), container.size(), prng); - }, containers...); - } -} -} - -cl::Context cl::sdk::get_context(options::Triplet triplet, cl_int* error) -{ - return cl::sdk::get_context( - triplet.plat_index, - triplet.dev_index, - triplet.dev_type, - error - ); -} - -cl::Context cl::sdk::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) -{ - cl::vector platforms; - cl_int plat_err = cl::Platform::get(&platforms); - - if (plat_err == CL_SUCCESS) - { - if (plat_id >= 0 && plat_id < platforms.size()) - { - cl::vector devices; - cl_int dev_err = platforms[plat_id].getDevices(type, &devices); - - if (dev_err == CL_SUCCESS) - { - if (dev_id >= 0 && dev_id < devices.size()) - { - return cl::Context(devices[dev_id]); - } - else - detail::errHandler( - CL_SDK_INDEX_OUT_OF_RANGE, - error, - "Invalid device index provided for cl::Context cl::sdk::get_context()" - ); - } - else - detail::errHandler(plat_err, error); - } - else - detail::errHandler( - CL_SDK_INDEX_OUT_OF_RANGE, - error, - "Invalid platform index provided for cl::Context cl::sdk::get_context()" - ); - } - else - detail::errHandler(plat_err, error); - - return cl::Context{}; -} diff --git a/utils/include/CL/utils/.keepme b/utils/include/CL/utils/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/utils/src/.keepme b/utils/src/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/utils/src/SDKUtils.c b/utils/src/SDKUtils.c deleted file mode 100644 index e69de29b..00000000 From 7df3300015209eae11da00540e1cd5896cef2faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 18:11:58 +0200 Subject: [PATCH 021/203] Promote OPENCL_SAMPLE_TEST as option --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1af2e06c..fa84fff3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ project(OpenCL-SDK C CXX ) +option(OPENCL_SAMPLE_TEST "Add samples as unit tests" ON) + if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release" CACHE PATH "Build Type" FORCE) From c685427b6024e93a2c30b0a516a84d4175069251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 18:13:14 +0200 Subject: [PATCH 022/203] Initial CI --- .gitlab/stream-ci.yaml | 156 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 .gitlab/stream-ci.yaml diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml new file mode 100644 index 00000000..e6cbcbec --- /dev/null +++ b/.gitlab/stream-ci.yaml @@ -0,0 +1,156 @@ +stages: + - build # Test if headers build and install (CMake) + - test # Test if unit tests pass (CTest) + - consume # Test if downstream can depend on installs (CMake) + +variables: + GIT_SUBMODULE_STRATEGY: recursive + DEPS_DIR: "$CI_PROJECT_DIR/dependencies" + BUILD_DIR: "$CI_PROJECT_DIR/build" + INSTALL_DIR: "$CI_PROJECT_DIR/install" + CMAKE_MINIMUM: "3.1.3" + CMAKE_LATEST: "3.21.2" + +######################## +## ## +## Setup environments ## +## ## +######################## + +.toolchain-matrix-minimum: + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 + parallel: + matrix: + # NOTE: Old CMake versions will likely not use cutting-edge compilers + - C_COMPILER: gcc-7 + CXX_COMPILER: g++-7 + - C_COMPILER: gcc-8 + CXX_COMPILER: g++-8 + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + - C_COMPILER: clang-9 + CXX_COMPILER: clang++-9 + - C_COMPILER: clang-10 + CXX_COMPILER: clang++-10 + before_script: + - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH + +.toolchain-matrix-latest: + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 + parallel: + matrix: + # NOTE: Cutting edge CMake versions will likely not use old compilers + - C_COMPILER: gcc-9 + CXX_COMPILER: g++-9 + - C_COMPILER: gcc-10 + CXX_COMPILER: g++-10 + - C_COMPILER: clang-11 + CXX_COMPILER: clang++-11 + - C_COMPILER: clang-12 + CXX_COMPILER: clang++-12 + - C_COMPILER: clang-13 + CXX_COMPILER: clang++-13 + before_script: + - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH + + +################# +## ## +## Build stage ## +## ## +################# + +build:cmake-minimum: + extends: .toolchain-matrix-minimum + stage: build + # NOTE 1: CMake creates build and install folders as needed. + # NOTE 2: Lack of space in -H -B is important! + # https://stackoverflow.com/a/20611964/1476661 + script: + # Clone, configure, build, install OpenCL-SDK + - cmake + -G Ninja + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER + -D CMAKE_BUILD_TYPE=Release + -D ENABLE_OPENCL_LAYERS=ON + -D BUILD_DOCS=OFF + -D BUILD_TESTS=OFF + -D BUILD_TESTING=OFF + -D BUILD_EXAMPLES=OFF + -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR + -B$BUILD_DIR + -H$CI_PROJECT_DIR + - cmake + --build $BUILD_DIR + --target install + artifacts: + paths: + - $BUILD_DIR + - $INSTALL_DIR + exclude: + - build/**/CMakeFiles/ + expire_in: 2 weeks + +build:cmake-latest: + extends: .toolchain-matrix-latest + stage: build + script: + # Clone, configure, build, install OpenCL-SDK + - cmake + -G "Ninja Multi-Config" + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER + -D ENABLE_OPENCL_LAYERS=ON + -D BUILD_DOCS=OFF + -D BUILD_TESTS=OFF + -D BUILD_TESTING=OFF + -D BUILD_EXAMPLES=OFF + -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR + -B $BUILD_DIR + -S $CI_PROJECT_DIR + - cmake + --build $BUILD_DIR + --config Debug + --target install + - cmake + --build $BUILD_DIR + --config Release + --target install + artifacts: + paths: + - $BUILD_DIR + - $INSTALL_DIR + - $DEPS_DIR/OpenCL-Headers/install + - $DEPS_DIR/OpenCL-ICD-Loader/install + exclude: + - build/**/CMakeFiles/ + expire_in: 2 weeks + + +################ +## ## +## Test stage ## +## ## +################ + +test:cmake-minimum: + extends: .toolchain-matrix-minimum + stage: test + needs: + - build:cmake-minimum + # NOTE: CTest has to be invoked from the build folder. + script: + - cd $BUILD_DIR + - ctest --output-on-failure + +test:cmake-latest: + extends: .toolchain-matrix-minimum + stage: test + needs: + - build:cmake-latest + # NOTE: CTest has to be invoked from the build folder. + script: + - cd $BUILD_DIR + - ctest --output-on-failure -C Debug + - ctest --output-on-failure -C Release From 89c63217eecaa27df4328c7b20f4c4e0c70d33e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 18:36:27 +0200 Subject: [PATCH 023/203] Map git SSH protocol to HTTPS --- .gitlab/stream-ci.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index e6cbcbec..06c19ec6 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -34,6 +34,8 @@ variables: CXX_COMPILER: clang++-10 before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH + - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" + - git submodule sync && git submodule update --init .toolchain-matrix-latest: image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 @@ -52,6 +54,8 @@ variables: CXX_COMPILER: clang++-13 before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH + - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" + - git submodule sync && git submodule update --init ################# From ac2645379003564d7140d559e226daee14b87803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 19 Oct 2021 18:37:52 +0200 Subject: [PATCH 024/203] Disable recurse by runner --- .gitlab/stream-ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 06c19ec6..b2b97baa 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -4,7 +4,6 @@ stages: - consume # Test if downstream can depend on installs (CMake) variables: - GIT_SUBMODULE_STRATEGY: recursive DEPS_DIR: "$CI_PROJECT_DIR/dependencies" BUILD_DIR: "$CI_PROJECT_DIR/build" INSTALL_DIR: "$CI_PROJECT_DIR/install" From 94f9711680140cad8216412ec205c3472e001ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 15:15:15 +0200 Subject: [PATCH 025/203] Bump submodule hashes --- external/OpenCL-CLHPP | 2 +- external/OpenCL-ICD-Loader | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 2197bc54..df4ad5b1 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 2197bc5416f066f9d9a693367fc4812391be7692 +Subproject commit df4ad5b1f3733486b9e6ddb8696084b53834e31d diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index e1797a90..f4ced2f8 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit e1797a9093288e9d6cad2a51814e20d08c6e8663 +Subproject commit f4ced2f8b760964a0dce6a2683ac9d0386c46892 From f6a84847c7d023507bb8ec9d93de764ca6facd51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 15:15:41 +0200 Subject: [PATCH 026/203] Add note on beforescript fragment --- .gitlab/stream-ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index b2b97baa..7c7c9e07 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -4,6 +4,9 @@ stages: - consume # Test if downstream can depend on installs (CMake) variables: + # GIT_SUBMODULE_STRATEGY missing on purpose. When submodules + # are specified using SSH protocol, they are mapped to HTTPS + # in the before_script part. DEPS_DIR: "$CI_PROJECT_DIR/dependencies" BUILD_DIR: "$CI_PROJECT_DIR/build" INSTALL_DIR: "$CI_PROJECT_DIR/install" From b111cb18c621e6ee41f0e675fc1adca0caffcfa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 15:31:40 +0200 Subject: [PATCH 027/203] Add options to control building & testing samples --- CMakeLists.txt | 12 +++++++++--- samples/CMakeLists.txt | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa84fff3..2ab33e99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,11 @@ project(OpenCL-SDK C CXX ) -option(OPENCL_SAMPLE_TEST "Add samples as unit tests" ON) +include(CMakeDependentOption) +option(OPENCL_SDK_BUILD_SAMPLES "Build sample code" ON) +cmake_dependent_option(OPENCL_SDK_TEST_SAMPLES "Add CTest to samples (where applicable)" ON OPENCL_SDK_BUILD_SAMPLES OFF) + +include(CTest) if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") @@ -40,5 +44,7 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(lib) add_subdirectory(samples) -set_target_properties(OpenCL PROPERTIES LIBRARY_OUTPUT_DIRECTORY - ${CMAKE_CURRENT_BINARY_DIR}) +set_target_properties(OpenCL + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index f338fd74..4e1cca85 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -78,7 +78,7 @@ macro(add_sample) install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) endforeach() - if(OPENCL_SAMPLE_TEST) + if(OPENCL_SDK_TEST_SAMPLES) add_test(NAME ${OPENCL_SAMPLE_TARGET} COMMAND ${OPENCL_SAMPLE_TARGET}) endif() endmacro() From 45c37ed1f63eeb68bbfcbd08078d4224853aac3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 15:51:56 +0200 Subject: [PATCH 028/203] Build samples next to ICD loader --- CMakeLists.txt | 6 ++++-- lib/CMakeLists.txt | 6 +++++- samples/CMakeLists.txt | 12 ++++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ab33e99..6bed6e57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,9 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(lib) add_subdirectory(samples) -set_target_properties(OpenCL +include (GNUInstallDirs) +set_target_properties(OpenCL OpenCLUtils OpenCLUtilsCpp PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} ) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 3cffbab3..963180c0 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -50,7 +50,11 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) ${UTIL_CL_VERSION_MACRO_NAME}=300 ) - set_target_properties(${UTIL_LIB_TARGET} PROPERTIES FOLDER "Libraries/${UTIL_LIB_NAME}") + set_target_properties(${UTIL_LIB_TARGET} + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} + FOLDER "Libraries/${UTIL_LIB_NAME}" + ) install( TARGETS ${UTIL_LIB_TARGET} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 4e1cca85..77d068f0 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -72,14 +72,22 @@ macro(add_sample) $<$:_CRT_SECURE_NO_WARNINGS> # TODO: remove ) - set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}") + set_target_properties(${OPENCL_SAMPLE_TARGET} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}" + ) foreach(CONFIG ${OPENCL_SAMPLE_CONFIGS}) install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) endforeach() if(OPENCL_SDK_TEST_SAMPLES) - add_test(NAME ${OPENCL_SAMPLE_TARGET} COMMAND ${OPENCL_SAMPLE_TARGET}) + add_test( + NAME ${OPENCL_SAMPLE_TARGET} + COMMAND ${OPENCL_SAMPLE_TARGET} + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + ) endif() endmacro() From 83efeb35b4214c32d14ee82df44f9e3cb12d0a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 16:52:34 +0200 Subject: [PATCH 029/203] Fetch and use TCLAP --- .gitlab/stream-ci.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 7c7c9e07..7d822f21 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -73,6 +73,11 @@ build:cmake-minimum: # NOTE 2: Lack of space in -H -B is important! # https://stackoverflow.com/a/20611964/1476661 script: + # Download, extract TCLAP + - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz + --directory-prefix $DEPS_DIR + - cmake + -E tar xzf $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G Ninja @@ -85,6 +90,7 @@ build:cmake-minimum: -D BUILD_TESTING=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR + -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B$BUILD_DIR -H$CI_PROJECT_DIR - cmake @@ -102,6 +108,11 @@ build:cmake-latest: extends: .toolchain-matrix-latest stage: build script: + # Download, extract TCLAP + - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz + --directory-prefix $DEPS_DIR + - cmake + -E tar xzf $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G "Ninja Multi-Config" @@ -113,6 +124,7 @@ build:cmake-latest: -D BUILD_TESTING=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR + -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B $BUILD_DIR -S $CI_PROJECT_DIR - cmake From 005d158560fbd983111f5c9e2580555ed395ea44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 16:58:52 +0200 Subject: [PATCH 030/203] Specify LIBRARY DESTINATION et al --- lib/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 963180c0..2d0dc0a8 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -59,6 +59,9 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) install( TARGETS ${UTIL_LIB_TARGET} EXPORT OpenCL${UTIL_LIB_NAME}Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install( DIRECTORY include/CL From f8bcfa40bafee5a40e89335b7cf3b9c217762792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 17:03:56 +0200 Subject: [PATCH 031/203] Unsupported target_sources INTERFACE on 3.1 --- lib/CMakeLists.txt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 2d0dc0a8..70ac2b46 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -28,11 +28,6 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) EXPORT_MACRO_NAME ${UPPER_UTIL_LIB_NAME}_EXPORT EXPORT_FILE_NAME OpenCL${UTIL_LIB_NAME}_Export.h ) - target_sources(${UTIL_LIB_TARGET} - PUBLIC - $ - $ - ) target_include_directories(${UTIL_LIB_TARGET} PUBLIC From c0af9452c6ff1c4e34b6eb239cd3414eb262cd66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 21 Oct 2021 17:17:04 +0200 Subject: [PATCH 032/203] Fix TCLAP handling --- .gitlab/stream-ci.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 7d822f21..c473c92f 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -76,8 +76,9 @@ build:cmake-minimum: # Download, extract TCLAP - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz --directory-prefix $DEPS_DIR - - cmake - -E tar xzf $DEPS_DIR/v1.2.4.tar.gz + - cmake -E tar xzf $DEPS_DIR/v1.2.4.tar.gz + - cmake -E rename tclap-1.2.4/ $DEPS_DIR/tclap-1.2.4 + - cmake -E remove $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G Ninja @@ -100,6 +101,7 @@ build:cmake-minimum: paths: - $BUILD_DIR - $INSTALL_DIR + - $DEPS_DIR/tclap-1.2.4 exclude: - build/**/CMakeFiles/ expire_in: 2 weeks @@ -111,8 +113,9 @@ build:cmake-latest: # Download, extract TCLAP - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz --directory-prefix $DEPS_DIR - - cmake - -E tar xzf $DEPS_DIR/v1.2.4.tar.gz + - cmake -E tar xzf $DEPS_DIR/v1.2.4.tar.gz + - cmake -E rename tclap-1.2.4/ $DEPS_DIR/tclap-1.2.4 + - cmake -E remove $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G "Ninja Multi-Config" @@ -139,8 +142,7 @@ build:cmake-latest: paths: - $BUILD_DIR - $INSTALL_DIR - - $DEPS_DIR/OpenCL-Headers/install - - $DEPS_DIR/OpenCL-ICD-Loader/install + - $DEPS_DIR/tclap-1.2.4 exclude: - build/**/CMakeFiles/ expire_in: 2 weeks From c47fd0fbf33954be73fb120f8ba9ec8468977878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 09:51:17 +0200 Subject: [PATCH 033/203] Fixed build tree installation --- lib/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 70ac2b46..b0c76036 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -64,11 +64,11 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) ) export( EXPORT OpenCL${UTIL_LIB_NAME}Targets - FILE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Targets.cmake + FILE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Targets.cmake NAMESPACE OpenCL:: ) file( - WRITE ${PROJECT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake "include(\"\${CMAKE_CURRENT_LIST_DIR}/OpenCL${UTIL_LIB_NAME}Targets.cmake\")" ) @@ -80,19 +80,19 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) DESTINATION ${config_package_location} ) install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake + FILES ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}Config.cmake DESTINATION ${config_package_location} ) unset(CMAKE_SIZEOF_VOID_P) include(CMakePackageConfigHelpers) write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake + FILES ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake DESTINATION ${config_package_location} ) endforeach() \ No newline at end of file From 378f62fe39781625c94efdfa624634b4c513f949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 10:06:26 +0200 Subject: [PATCH 034/203] Add missing includes --- lib/include/CL/SDK/CLI.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index 8a41b66c..6ef2a132 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -9,6 +9,11 @@ // TCLAP includes #include +// STL includes +#include // std::shared_ptr, std::make_shared +#include // std::apply +#include // std::vector + namespace cl { namespace sdk From 391d9403cbc4713d55b2a6c003ad5bc2ef3f1d2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 10:10:04 +0200 Subject: [PATCH 035/203] Resolve dependency cycle --- lib/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index b0c76036..6ce9232a 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -6,14 +6,13 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_SOURCES src/Utils/Utils.c) set(UTIL_LIB_DEPS OpenCL::Headers - OpenCL::Utils ) set(UTIL_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) elseif(UTIL_LIB_NAME STREQUAL UtilsCpp) set(UTIL_LIB_SOURCES src/Utils/Utils.cpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp - OpenCL::UtilsCpp + OpenCL::Utils ) set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() From 6dfa16496b07c4a4574a70b3cb1b43cd2dfc9460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 10:16:38 +0200 Subject: [PATCH 036/203] Add missing include --- samples/core/saxpy/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index ed7e6860..635b4d8c 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -27,6 +27,7 @@ #include #include #include +#include // std::apply // TCLAP includes #include From 92a66634575d481c8ef08412e2c39f893a14694e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 13:41:43 +0200 Subject: [PATCH 037/203] Backport to C++14 --- CMakeLists.txt | 2 +- lib/include/CL/SDK/CLI.hpp | 11 +++++------ lib/include/CL/Utils/Detail.hpp | 30 +++++++++++++++++++++++++----- samples/core/saxpy/main.cpp | 4 ++-- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bed6e57..f4b440b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ cmake_minimum_required(VERSION 3.0) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 14) project(OpenCL-SDK VERSION 1.0 diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index 6ef2a132..a59f563c 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -11,7 +11,7 @@ // STL includes #include // std::shared_ptr, std::make_shared -#include // std::apply +#include // std::make_tuple #include // std::vector namespace cl @@ -22,15 +22,14 @@ namespace sdk auto parse(); template - auto comprehend(Parsers... parsers); + Option comprehend(Parsers... parsers); namespace detail { template auto comprehend_helper(std::tuple parser) { - // TODO: backport C++17 std::apply to C++14 - return std::apply(comprehend, parser); + return util::detail::apply(comprehend, parser); } } @@ -69,7 +68,7 @@ auto cl::sdk::parse() ); } template <> -auto cl::sdk::comprehend( +cl::sdk::options::Diagnostic cl::sdk::comprehend( std::shared_ptr verbose_arg, std::shared_ptr quiet_arg) { @@ -92,7 +91,7 @@ auto cl::sdk::parse() ); } template <> -auto cl::sdk::comprehend( +cl::sdk::options::SingleDevice cl::sdk::comprehend( std::shared_ptr> platform_arg, std::shared_ptr> device_arg, std::shared_ptr> type_arg) diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index d238c200..4ac5c026 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -25,23 +25,23 @@ namespace impl void for_each_in_tuple(T&& t, F&& f, std::integer_sequence) { - auto l = { (f(std::get(std::forward(t))), 0)... }; (void)l; + auto l = { (std::forward(f)(std::get(std::forward(t))), 0)... }; (void)l; } } template void - for_each_in_tuple(std::tuple const& t, F f) + for_each_in_tuple(std::tuple const& t, F&& f) { - impl::for_each_in_tuple(t, f, std::make_integer_sequence()); + impl::for_each_in_tuple(t, std::forward(f), std::make_integer_sequence()); } namespace impl { // Borrowed from https://codereview.stackexchange.com/questions/193420/apply-a-function-to-each-element-of-a-tuple-map-a-tuple template - auto transform_tuple(const Tuple& t, F&& f, std::index_sequence) { + auto transform_tuple(Tuple&& t, F&& f, std::index_sequence) { return std::make_tuple( - f(std::get(t))... + std::forward(f)(std::get(t))... ); } } @@ -50,6 +50,26 @@ namespace impl return impl::transform_tuple( t, std::forward(f), std::make_index_sequence{}); } + +namespace impl +{ + // Borrowed from http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html + // with modifications of Casey Carter at https://stackoverflow.com/a/51365112/1476661 + template + auto apply(F&& f, Tuple&& args, std::index_sequence) + -> decltype(std::forward(f)(std::get(std::forward(args))...)) + { + return std::forward(f)(std::get(std::forward(args))...); + } +} + template>::value>> + auto apply(F&& f, Tuple&& args) + -> decltype(impl::apply(std::forward(f), std::forward(args), Indices())) + { + return impl::apply(std::forward(f), std::forward(args), Indices()); + } } } } diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 635b4d8c..21cffb67 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -27,7 +27,7 @@ #include #include #include -#include // std::apply +#include // std::make_tuple // TCLAP includes #include @@ -41,7 +41,7 @@ template <> auto cl::sdk::parse(){ std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral") ); } -template <> auto cl::sdk::comprehend( +template <> SaxpyOptions cl::sdk::comprehend( std::shared_ptr> length_arg){ return SaxpyOptions{ length_arg->getValue() From cccdffc11ecf4e752ad4ff24348017964b4807da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 13:46:23 +0200 Subject: [PATCH 038/203] Enable building and testing tests --- .gitlab/stream-ci.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index c473c92f..4476ed0f 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -87,9 +87,9 @@ build:cmake-minimum: -D CMAKE_BUILD_TYPE=Release -D ENABLE_OPENCL_LAYERS=ON -D BUILD_DOCS=OFF - -D BUILD_TESTS=OFF - -D BUILD_TESTING=OFF - -D BUILD_EXAMPLES=OFF + -D OPENCL_SDK_BUILD_SAMPLES=ON + -D OPENCL_SDK_TEST_SAMPLES=ON + -D BUILD_TESTING=ON -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B$BUILD_DIR @@ -123,9 +123,9 @@ build:cmake-latest: -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D ENABLE_OPENCL_LAYERS=ON -D BUILD_DOCS=OFF - -D BUILD_TESTS=OFF - -D BUILD_TESTING=OFF - -D BUILD_EXAMPLES=OFF + -D OPENCL_SDK_BUILD_SAMPLES=ON + -D OPENCL_SDK_TEST_SAMPLES=ON + -D BUILD_TESTING=ON -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B $BUILD_DIR From 93ac21b80f0bfb8008e60c9ceb9e8e5045e49cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 13:56:34 +0200 Subject: [PATCH 039/203] Clarify config args --- .gitlab/stream-ci.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 4476ed0f..1e81ae81 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -85,11 +85,14 @@ build:cmake-minimum: -D CMAKE_C_COMPILER=$C_COMPILER -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_BUILD_TYPE=Release + -D BUILD_TESTING=ON -D ENABLE_OPENCL_LAYERS=ON + -D OPENCL_ICD_LOADER_BUILD_TESTING=ON -D BUILD_DOCS=OFF + -D BUILD_EXAMPLES=OFF + -D BUILD_TESTS=ON -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=ON - -D BUILD_TESTING=ON -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B$BUILD_DIR @@ -121,12 +124,14 @@ build:cmake-latest: -G "Ninja Multi-Config" -D CMAKE_C_COMPILER=$C_COMPILER -D CMAKE_CXX_COMPILER=$CXX_COMPILER + -D BUILD_TESTING=ON -D ENABLE_OPENCL_LAYERS=ON + -D OPENCL_ICD_LOADER_BUILD_TESTING=ON -D BUILD_DOCS=OFF + -D BUILD_EXAMPLES=OFF + -D BUILD_TESTS=ON -D OPENCL_SDK_BUILD_SAMPLES=ON - -D OPENCL_SDK_TEST_SAMPLES=ON - -D BUILD_TESTING=ON - -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR + -D OPENCL_SDK_TEST_SAMPLES=ONINSTALL_DIR -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B $BUILD_DIR -S $CI_PROJECT_DIR From 72df63c19f349aa9318b6e203a091fc916f9e1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 13:59:41 +0200 Subject: [PATCH 040/203] recursively clone submodules (Mock missing) --- .gitlab/stream-ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 1e81ae81..f482057f 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -37,7 +37,7 @@ variables: before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - - git submodule sync && git submodule update --init + - git submodule sync && git submodule update --init --recursive .toolchain-matrix-latest: image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 @@ -57,7 +57,7 @@ variables: before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - - git submodule sync && git submodule update --init + - git submodule sync && git submodule update --init --recursive ################# From 4993bd943e9d35fc659657ce0920599842d989c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 14:03:42 +0200 Subject: [PATCH 041/203] Bump submodule hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index df4ad5b1..884c45fd 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit df4ad5b1f3733486b9e6ddb8696084b53834e31d +Subproject commit 884c45fdb3927a462272e1709a21b7475ca4cc0d From 5437c05054c69d09bdca8af8648c2887e32a8e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 14:18:10 +0200 Subject: [PATCH 042/203] Descriptive error message --- lib/src/Utils/Context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index 6172c368..6c1d4aed 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -36,7 +36,7 @@ cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, ); } else - detail::errHandler(plat_err, error); + detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); return cl::Context{}; } \ No newline at end of file From 97f4cca616615300870c694b832523be6f76319b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 22 Oct 2021 14:27:10 +0200 Subject: [PATCH 043/203] Allow test failure temporarily --- .gitlab/stream-ci.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index f482057f..7a3295d4 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -164,6 +164,8 @@ test:cmake-minimum: stage: test needs: - build:cmake-minimum + # Until a suitable runtime is found + allow_failure: true # NOTE: CTest has to be invoked from the build folder. script: - cd $BUILD_DIR @@ -174,6 +176,8 @@ test:cmake-latest: stage: test needs: - build:cmake-latest + # Until a suitable runtime is found + allow_failure: true # NOTE: CTest has to be invoked from the build folder. script: - cd $BUILD_DIR From b31bd2bdc4318259981eda841e0545471edcb23a Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 25 Oct 2021 13:44:59 +0300 Subject: [PATCH 044/203] cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) --- lib/src/Utils/Context.c | 50 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 417d5a7d..b24a4b05 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,6 +1,52 @@ #include +// RET = function returns error code +// PAR = functions sets error code in the paremeter + +#define OCLERROR_RET(func, err, label) \ +do { err = func; if (err != CL_SUCCESS) goto label; } while (0) + +#define OCLERROR_PAR(func, err, label) \ +do { func; if (err != CL_SUCCESS) goto label; } while (0) + +#define MAXOCLPLAT 65535 +#define MAXOCLDEV 65535 + cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) { - return 0; -} \ No newline at end of file + cl_context result = NULL; + cl_platform_id * platforms; + cl_uint num_platforms = 0; + cl_device_id * devices; + cl_uint num_devices = 0; + cl_int err; + + OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + + if (plat_id < 0 || plat_id >= num_platforms) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + goto plat; + } + + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, MAXOCLDEV, NULL, &num_devices), *error, plat); + devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); + + if (dev_id < 0 || dev_id >= num_devices) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + goto dev; + } + + OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + dev_id, NULL, NULL, error), *error, dev); + +dev: free(devices); +plat: free(platforms); +end: return result; +} + +#undef OCLERROR_RET +#undef OCLERROR_PAR +#undef MAXOCLPLAT +#undef MAXOCLDEV From 272f5c1ad788e587582d043c2baea67fcc22d0de Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 28 Oct 2021 13:34:56 +0300 Subject: [PATCH 045/203] WIP: Saxpy in C --- lib/include/CL/SDK/CLI.h | 1 + lib/include/CL/SDK/Context.h | 4 + lib/include/CL/SDK/Options.h | 1 + lib/include/CL/SDK/Random.h | 82 ++++++++++++++++++++ lib/include/CL/Utils/Context.h | 1 + lib/include/CL/Utils/Utils.h | 16 ++++ lib/src/Utils/Context.c | 56 +++++++++----- lib/src/Utils/File.c | 10 ++- samples/core/saxpy/main.c | 134 ++++++++++++++++++++++++++++++++- 9 files changed, 284 insertions(+), 21 deletions(-) create mode 100644 lib/include/CL/SDK/CLI.h create mode 100644 lib/include/CL/SDK/Context.h create mode 100644 lib/include/CL/SDK/Options.h create mode 100644 lib/include/CL/SDK/Random.h diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/lib/include/CL/SDK/CLI.h @@ -0,0 +1 @@ +#pragma once diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h new file mode 100644 index 00000000..d35f1963 --- /dev/null +++ b/lib/include/CL/SDK/Context.h @@ -0,0 +1,4 @@ +#pragma once + +#include +#include diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/lib/include/CL/SDK/Options.h @@ -0,0 +1 @@ +#pragma once diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h new file mode 100644 index 00000000..17933365 --- /dev/null +++ b/lib/include/CL/SDK/Random.h @@ -0,0 +1,82 @@ +#pragma once + +#include + +/* + * PCG Random Number Generation for C. + * + * Copyright 2014 Melissa O'Neill + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * For additional information about the PCG random number generation scheme, + * including its license and other licensing options, visit + * + * http://www.pcg-random.org + */ + +// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org +// Licensed under Apache License 2.0 (NO WARRANTY, etc. see website) + +typedef struct { uint64_t state; uint64_t inc; } pcg32_random_t; + +// pcg32_random() +// pcg32_random_r(rng) +// Generate a uniformly distributed 32-bit random number + +uint32_t pcg32_random_r(pcg32_random_t * rng) +{ + uint64_t oldstate = rng->state; + // Advance internal state + rng->state = oldstate * 6364136223846793005ULL + (rng->inc | 1); + // Calculate output function (XSH RR), uses old state for max ILP + uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u; + uint32_t rot = oldstate >> 59u; + return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); +} + +inline cl_float pcg32_random_float(pcg32_random_t * rng) +{ + return ldexp(pcg32_random_r(rng), -32); +} + +inline cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) +{ + return ldexp(pcg32_random_r(rng), -32) * (hi - low) + low; +} + +// pcg32_srandom(initstate, initseq) +// pcg32_srandom_r(rng, initstate, initseq): +// Seed the rng. Specified in two parts, state initializer and a +// sequence selection constant (a.k.a. stream id) + +void pcg32_srandom_r(pcg32_random_t * rng, uint64_t initstate, uint64_t initseq) +{ + rng->state = 0U; + rng->inc = (initseq << 1u) | 1u; + pcg32_random_r(rng); + rng->state += initstate; + pcg32_random_r(rng); +} + +// fills array with random floats in [0, 1) +void cl_sdk_fill_with_random(pcg32_random_t * rng, cl_float * arr, size_t len) +{ + for (; len > 0; arr[--len] = pcg32_random_float(rng)); +} + +void cl_sdk_fill_with_random_range(pcg32_random_t * rng, cl_float * arr, size_t len, cl_float low, cl_float hi) +{ + cl_float diff = hi - low; + for (; len > 0; arr[--len] = pcg32_random_float(rng) * diff + low); +} diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index c2b2614b..2da564b0 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -6,3 +6,4 @@ #include cl_context UTILS_EXPORT cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); +cl_device_id UTILS_EXPORT cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index 4f53366d..d082bf99 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -1,4 +1,20 @@ #pragma once +#include #include #include + +// RET = function returns error code +// PAR = functions sets error code in the paremeter + +#define OCLERROR_RET(func, err, label) \ +do { err = func; if (err != CL_SUCCESS) goto label; } while (0) + +#define OCLERROR_PAR(func, err, label) \ +do { func; if (err != CL_SUCCESS) goto label; } while (0) + +#define MEM_CHECK(func, err, label) \ +do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) + +#define MAXOCLPLAT 65535 +#define MAXOCLDEV 65535 diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index b24a4b05..616441ee 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,18 +1,9 @@ +#include #include -// RET = function returns error code -// PAR = functions sets error code in the paremeter +#include -#define OCLERROR_RET(func, err, label) \ -do { err = func; if (err != CL_SUCCESS) goto label; } while (0) - -#define OCLERROR_PAR(func, err, label) \ -do { func; if (err != CL_SUCCESS) goto label; } while (0) - -#define MAXOCLPLAT 65535 -#define MAXOCLDEV 65535 - -cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +cl_context UTILS_EXPORT cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) { cl_context result = NULL; cl_platform_id * platforms; @@ -22,7 +13,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ cl_int err; OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); - platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); if (plat_id < 0 || plat_id >= num_platforms) { @@ -31,7 +22,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ } OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, MAXOCLDEV, NULL, &num_devices), *error, plat); - devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); if (dev_id < 0 || dev_id >= num_devices) { @@ -46,7 +37,36 @@ plat: free(platforms); end: return result; } -#undef OCLERROR_RET -#undef OCLERROR_PAR -#undef MAXOCLPLAT -#undef MAXOCLDEV +cl_device_id UTILS_EXPORT cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) +{ + cl_device_id result = NULL; + cl_platform_id * platforms; + cl_uint num_platforms = 0; + cl_device_id * devices; + cl_uint num_devices = 0; + cl_int err; + + OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + + if (plat_id < 0 || plat_id >= num_platforms) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + goto plat; + } + + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, MAXOCLDEV, NULL, &num_devices), *error, plat); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); + + if (dev_id < 0 || dev_id >= num_devices) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + goto dev; + } + + result = devices[dev_id]; + +dev: free(devices); +plat: free(platforms); +end: return result; +} diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 96244973..8cab3c23 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -7,7 +7,7 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcode_ret) +char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) { char * data = NULL, * temp; size_t size = 0; @@ -17,7 +17,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod cl_int err; /* Size of each input chunk to be read and allocate for. */ - #define READALL_CHUNK 2097152 +#define READALL_CHUNK 2097152 if (errcode_ret == NULL) { errcode_ret = &err; @@ -38,6 +38,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod /* A read error already occurred? */ if (ferror(in)) { + fclose(in); *errcode_ret = CL_INVALID_VALUE; return NULL; } @@ -48,6 +49,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod /* Overflow check. */ if (size <= used) { + fclose(in); free(data); *errcode_ret = CL_OUT_OF_RESOURCES; return NULL; @@ -55,6 +57,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod temp = (char *)realloc(data, size); if (temp == NULL) { + fclose(in); free(data); *errcode_ret = CL_OUT_OF_HOST_MEMORY; return NULL; @@ -70,6 +73,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod } if (ferror(in)) { + fclose(in); free(data); *errcode_ret = CL_INVALID_VALUE; return NULL; @@ -77,6 +81,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod temp = (char *)realloc(data, used + 1); if (temp == NULL) { + fclose(in); free(data); *errcode_ret = CL_OUT_OF_HOST_MEMORY; return NULL; @@ -86,6 +91,7 @@ char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcod if (length != NULL) *length = used; + fclose(in); *errcode_ret = CL_SUCCESS; return data; } diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 19236684..c69a0480 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -1 +1,133 @@ -int main() {return 0;} +/* + * Copyright (c) 2021 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +//#include +//#include +#include + +pcg32_random_t rng = { 111111, 222 }; + +int main(int argc, char* argv[]) +{ + cl_int error = CL_SUCCESS; + cl_device_type type = CL_DEVICE_TYPE_DEFAULT; + int plat_id = 0, dev_id = 0; + cl_platform_id platform; + cl_device_id device; + cl_context context; + cl_command_queue queue; + + const char * kernel_location = "./saxpy.cl"; + char * kernel = NULL; + size_t program_size = 0; + cl_program program = NULL; + + // Parse command-line options + bool quiet = false; + + // Create runtime objects based on user preference or default + //OCLERROR_PAR(context = cl_util_get_context(plat_id, dev_id, type, &error), error, end); + OCLERROR_PAR(device = cl_util_get_device(plat_id, dev_id, type, &error), error, end); + OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); + + if (!quiet)//(!diag_opts.quiet) + { + char * vendor = NULL, + * name = NULL; + size_t v = 0, n = 0; + + OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, sizeof(size_t), NULL, &v), error, que); + MEM_CHECK(vendor = (char *)malloc(sizeof(char) * (v+1)), error, ven); + OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, sizeof(char) * v, vendor, NULL), error, ven); + vendor[v] = '\0'; + + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(size_t), NULL, &n), error, ven); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), error, nam); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(char) * n, name, NULL), error, nam); + name[n] = '\0'; + + printf("Selected platform: %s\n" "Selected device: %s\n\n", vendor, name); + +nam: free(name); +ven: free(vendor); + } + + // Compile kernel + OCLERROR_PAR(kernel = cl_utils_read_text_file(kernel_location, &program_size, &error), error, que); + + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, &kernel, &program_size, &error), error, ker); + OCLERROR_RET(cl_utils_build_program(program, device, NULL), error, prg); + + cl_kernel saxpy; + OCLERROR_PAR(saxpy = clCreateKernel(program, "saxpy", &error), error, prg); + + // Initialize host-side storage + const size_t length = 1234;//saxpy_opts.length; + + cl_float * arr_x, * arr_y, + a = pcg32_random_float(&rng); + MEM_CHECK(arr_x = (cl_float *)malloc(sizeof(cl_float) * length), error, sxp); + MEM_CHECK(arr_y = (cl_float *)malloc(sizeof(cl_float) * length), error, arrx); + + cl_sdk_fill_with_random_range(&rng, arr_x, length, -100, 100); + cl_sdk_fill_with_random_range(&rng, arr_y, length, -100, 100); + + // Initialize device-side storage + cl_mem buf_x, buf_y; + OCLERROR_PAR(buf_x = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(cl_float) * length, arr_x, &error), error, arry); + OCLERROR_PAR(buf_y = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, sizeof(cl_float) * length, arr_y, &error), error, bufx); + + // Execute kernel + OCLERROR_RET(clSetKernelArg(saxpy, 0, sizeof(cl_float), &a), error, bufy); + OCLERROR_RET(clSetKernelArg(saxpy, 1, sizeof(cl_mem), &buf_x), error, bufy); + OCLERROR_RET(clSetKernelArg(saxpy, 2, sizeof(cl_mem), &buf_y), error, bufy); + + OCLERROR_RET(clEnqueueNDRangeKernel(queue, saxpy, 1, NULL, &length, NULL, 0, NULL, NULL), error, bufy); + + // Concurrently calculate reference dataset + for (size_t i = 0; i < length; ++i) + arr_y[i] += a * arr_x[i]; + + // Fetch results + OCLERROR_RET(clEnqueueReadBuffer(queue, buf_y, CL_BLOCKING, 0, sizeof(cl_float) * length, (void *)arr_x, 0, NULL, NULL), error, bufy); + + // Validate + for (size_t i = 0; i < length; ++i) + if (arr_y[i] != arr_x[i]) { + printf("Verification failed! %f != %f at index %zu\n", arr_y[i], arr_x[i], i); + error = CL_INVALID_VALUE; + goto bufy; + } + printf("Verification passed.\n"); + + // Release resources +bufy: clReleaseMemObject(buf_y); +bufx: clReleaseMemObject(buf_x); +arry: free(arr_y); +arrx: free(arr_x); +sxp: clReleaseKernel(saxpy); +prg: clReleaseProgram(program); +ker: free(kernel); +que: clReleaseCommandQueue(queue); +cont: clReleaseContext(context); + +end: return error; +} From 82b8767663f6eb93d914217c19cf246986bdeb57 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 29 Oct 2021 11:43:28 +0300 Subject: [PATCH 046/203] WIP includes --- samples/core/saxpy/main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index c69a0480..b9b0bee7 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -21,6 +21,13 @@ //#include #include +// includes +#include +#include +#include +#include +#include + pcg32_random_t rng = { 111111, 222 }; int main(int argc, char* argv[]) From 3acd160beca7b4765c9aaf6de8d78264ef5ae6bf Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 29 Oct 2021 11:52:07 +0300 Subject: [PATCH 047/203] WIP more includes --- lib/include/CL/SDK/Random.h | 1 + lib/include/CL/Utils/File.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 17933365..a4f599f9 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -1,6 +1,7 @@ #pragma once #include +#include /* * PCG Random Number Generation for C. diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index c76bc877..355f0340 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -6,4 +6,4 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -char * cl_utils_read_text_file(char * filename, size_t * length, cl_int * errcode_ret); +char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); From ea9a21759c1b6aa98d9fe9f4968114f6083f2e08 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 29 Oct 2021 11:59:32 +0300 Subject: [PATCH 048/203] WIP cl_utils_build_program --- samples/core/saxpy/main.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index b9b0bee7..56292373 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -26,7 +26,25 @@ #include #include #include -#include +//#include + +// builds program and shows log if build is not successful +cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt) { + // if error + cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); + if (err != CL_SUCCESS) { + char * program_log; + size_t log_size = 0; + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); + if ((program_log = (char *)calloc(log_size + 1, sizeof(char))) != NULL) { + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); + printf("Build log is:\n\n%s\n\n", program_log); + free(program_log); + } + } + return err; +} + pcg32_random_t rng = { 111111, 222 }; From 7fc8082ddae8585428c8604b381017613ec6fb4a Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 1 Nov 2021 20:47:49 +0200 Subject: [PATCH 049/203] Saxpy in C --- lib/include/CL/SDK/Context.h | 1 - lib/include/CL/SDK/Options.h | 142 +++++++++++ lib/include/CL/Utils/Context.h | 14 +- lib/include/CL/Utils/File.h | 4 +- lib/include/CL/Utils/Utils.h | 3 + lib/include/CL/Utils/cargs.h | 164 ++++++++++++ lib/src/Utils/Context.c | 93 ++++++- lib/src/Utils/File.c | 67 ++--- lib/src/Utils/Utils.c | 3 + lib/src/Utils/cargs.c | 452 +++++++++++++++++++++++++++++++++ samples/core/saxpy/main.c | 161 ++++++++---- 11 files changed, 995 insertions(+), 109 deletions(-) create mode 100644 lib/include/CL/Utils/cargs.h create mode 100644 lib/src/Utils/cargs.c diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index d35f1963..852f7dcc 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -1,4 +1,3 @@ #pragma once -#include #include diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 6f70f09b..00517d6a 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -1 +1,143 @@ #pragma once + +#include +#include +#include + +#include +#include + +struct cl_sdk_options_Triplet +{ + int plat_index; + int dev_index; + cl_device_type dev_type; +}; + +struct cl_sdk_options_Diagnostic +{ + bool verbose; + bool quiet; +}; + +struct cl_sdk_options_SingleDevice +{ + struct cl_sdk_options_Triplet triplet; +}; + +struct cl_sdk_options_MultiDevice +{ + struct cl_sdk_options_Triplet * triplets; + size_t number; +}; + +typedef struct cag_option cag_option; + +cag_option * add_CLI_options(cag_option * opts, size_t * const num_opts, cag_option * add_opts, size_t add_num_opts) +{ + cag_option * tmp = NULL; + + tmp = (cag_option *)realloc(opts, sizeof(cag_option) * (*num_opts + add_num_opts)); + if (tmp) { + memcpy(tmp + *num_opts, add_opts, sizeof(cag_option) * add_num_opts); + *num_opts += add_num_opts; + } + + return tmp; +} + +enum ParseState +{ + ParsedOK, + NotParsed, + ParseError +}; + +typedef enum ParseState ParseState; + +cag_option DiagnosticOptions[] = { + {.identifier = 'h', + .access_letters = "h", + .access_name = "help", + .description = "Show this help"}, + + {.identifier = 'q', + .access_letters = "q", + .access_name = "quiet", + .description = "Suppress standard output"}, + + {.identifier = 'v', + .access_letters = "v", + .access_name = "verbose", + .description = "Extra informational output"} +}; + +ParseState parse_DiagnosticOptions(const char identifier, struct cl_sdk_options_Diagnostic * diag_opts) +{ + switch (identifier) { + case 'q': + diag_opts->quiet = true; + return ParsedOK; + case 'v': + diag_opts->verbose = true; + return ParsedOK; + } + return NotParsed; +} + +cag_option SingleDeviceOptions[] = { + {.identifier = 'p', + .access_letters = "p", + .access_name = "platform", + .value_name = "(positive integer)", + .description = "Index of platform to use"}, + + {.identifier = 'd', + .access_letters = "d", + .access_name = "device", + .value_name = "(positive integer)", + .description = "Index of device to use"}, + + {.identifier = 't', + .access_letters = "t", + .access_name = "type", + .value_name = "(all|cpu|gpu|acc|def)", + .description = "Type of device to use"} +}; + +// TODO: error handling +cl_device_type get_dev_type(const char * in) +{ + if (!strcmp(in, "all")) return CL_DEVICE_TYPE_ALL; + else if (!strcmp(in, "cpu")) return CL_DEVICE_TYPE_CPU; + else if (!strcmp(in, "gpu")) return CL_DEVICE_TYPE_GPU; + else if (!strcmp(in, "acc")) return CL_DEVICE_TYPE_ACCELERATOR; + else if (!strcmp(in, "def")) return CL_DEVICE_TYPE_DEFAULT; + else return CL_DEVICE_TYPE_ALL;//CL_INVALID_DEVICE_TYPE;// "Unkown device type after cli parse. Should not have happened." +} + +ParseState parse_SingleDeviceOptions(const char identifier, cag_option_context * cag_context, struct cl_sdk_options_SingleDevice * dev_opts) +{ + const char * value; + switch (identifier) { + case 'p': + if ((value = cag_option_get_value(cag_context))) { + dev_opts->triplet.plat_index = strtoul(value, NULL, 0); + return ParsedOK; + } + else return ParseError; + case 'd': + if ((value = cag_option_get_value(cag_context))) { + dev_opts->triplet.dev_index = strtoul(value, NULL, 0); + return ParsedOK; + } + else return ParseError; + case 't': + if ((value = cag_option_get_value(cag_context))) { + dev_opts->triplet.dev_type = get_dev_type(value); + return 1; + } + else return ParseError; + } + return NotParsed; +} diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index 2da564b0..367b7ddf 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -1,9 +1,15 @@ #pragma once -#include "OpenCLUtils_Export.h" +#include #include -#include +UTILS_EXPORT +cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); +UTILS_EXPORT +cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); +UTILS_EXPORT +cl_device_id cl_util_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error); -cl_context UTILS_EXPORT cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); -cl_device_id UTILS_EXPORT cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); +// builds program and shows log if build is not successful +UTILS_EXPORT +cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt); diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 355f0340..3c0e4108 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -1,9 +1,7 @@ #pragma once -#include - // reads all the text file contents securely in ANSI C89 // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); +UTILS_EXPORT char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index d082bf99..2d27f3a6 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -1,8 +1,11 @@ #pragma once +#include "OpenCLUtils_Export.h" + #include #include #include +#include // RET = function returns error code // PAR = functions sets error code in the paremeter diff --git a/lib/include/CL/Utils/cargs.h b/lib/include/CL/Utils/cargs.h new file mode 100644 index 00000000..1ce0601d --- /dev/null +++ b/lib/include/CL/Utils/cargs.h @@ -0,0 +1,164 @@ +#pragma once + +/** + * MIT License + * + * Copyright (c) 2020 Leonard Iklé + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * This is a simple alternative cross-platform implementation of getopt, which + * is used to parse argument strings submitted to the executable (argc and argv + * which are received in the main function). + */ + +#ifndef CAG_LIBRARY_H +#define CAG_LIBRARY_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * An option is used to describe a flag/argument option submitted when the + * program is run. + */ +typedef struct cag_option +{ + const char identifier; + const char *access_letters; + const char *access_name; + const char *value_name; + const char *description; +} cag_option; + +/** + * A context is used to iterate over all options provided. It stores the parsing + * state. + */ +typedef struct cag_option_context +{ + const struct cag_option *options; + size_t option_count; + int argc; + char **argv; + int index; + int inner_index; + bool forced_end; + char identifier; + char *value; +} cag_option_context; + +/** + * This is just a small macro which calculates the size of an array. + */ +#define CAG_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + + +/** + * @brief Prints all options to the terminal. + * + * This function prints all options to the terminal. This can be used to + * generate the output for a "--help" option. + * + * @param options The options which will be printed. + * @param option_count The option count which will be printed. + * @param destination The destination where the output will be printed. + */ +UTILS_EXPORT +void cag_option_print(const cag_option *options, size_t option_count, + FILE *destination); + +/** + * @brief Prepare argument options context for parsing. + * + * This function prepares the context for iteration and initializes the context + * with the supplied options and arguments. After the context has been prepared, + * it can be used to fetch arguments from it. + * + * @param context The context which will be initialized. + * @param options The registered options which are available for the program. + * @param option_count The amount of options which are available for the + * program. + * @param argc The amount of arguments the user supplied in the main function. + * @param argv A pointer to the arguments of the main function. + */ +UTILS_EXPORT +void cag_option_prepare(cag_option_context *context, const cag_option *options, + size_t option_count, int argc, char **argv); + +/** + * @brief Fetches an option from the argument list. + * + * This function fetches a single option from the argument list. The context + * will be moved to that item. Information can be extracted from the context + * after the item has been fetched. + * The arguments will be re-ordered, which means that non-option arguments will + * be moved to the end of the argument list. After all options have been + * fetched, all non-option arguments will be positioned after the index of + * the context. + * + * @param context The context from which we will fetch the option. + * @return Returns true if there was another option or false if the end is + * reached. + */ +UTILS_EXPORT +bool cag_option_fetch(cag_option_context *context); + +/** + * @brief Gets the identifier of the option. + * + * This function gets the identifier of the option, which should be unique to + * this option and can be used to determine what kind of option this is. + * + * @param context The context from which the option was fetched. + * @return Returns the identifier of the option. + */ +UTILS_EXPORT +char cag_option_get(const cag_option_context *context); + +/** + * @brief Gets the value from the option. + * + * This function gets the value from the option, if any. If the option does not + * contain a value, this function will return NULL. + * + * @param context The context from which the option was fetched. + * @return Returns a pointer to the value or NULL if there is no value. + */ + UTILS_EXPORT + const char * cag_option_get_value(const cag_option_context *context); + +/** + * @brief Gets the current index of the context. + * + * This function gets the index within the argv arguments of the context. The + * context always points to the next item which it will inspect. This is + * particularly useful to inspect the original argument array, or to get + * non-option arguments after option fetching has finished. + * + * @param context The context from which the option was fetched. + * @return Returns the current index of the context. + */ +int cag_option_get_index(const cag_option_context *context); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 616441ee..e4c255d8 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,16 +1,17 @@ #include #include +#include #include -cl_context UTILS_EXPORT cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +UTILS_EXPORT +cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int * error) { cl_context result = NULL; cl_platform_id * platforms; cl_uint num_platforms = 0; cl_device_id * devices; cl_uint num_devices = 0; - cl_int err; OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); @@ -37,14 +38,47 @@ plat: free(platforms); end: return result; } -cl_device_id UTILS_EXPORT cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) +cl_context cl_util_get_context_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +{ + cl_context result = NULL; + cl_platform_id * platforms; + cl_uint num_platforms = 0; + cl_device_id * devices; + cl_uint num_devices = 0; + + OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + + if (triplet->plat_index < 0 || triplet->plat_index >= num_platforms) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + goto plat; + } + + OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, MAXOCLDEV, NULL, &num_devices), *error, plat); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, num_devices, devices, NULL), *error, dev); + + if (triplet->dev_index < 0 || triplet->dev_index >= num_devices) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + goto dev; + } + + OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + triplet->dev_index, NULL, NULL, error), *error, dev); + +dev: free(devices); +plat: free(platforms); +end: return result; +} + +UTILS_EXPORT +cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) { cl_device_id result = NULL; cl_platform_id * platforms; cl_uint num_platforms = 0; cl_device_id * devices; cl_uint num_devices = 0; - cl_int err; OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); @@ -70,3 +104,54 @@ dev: free(devices); plat: free(platforms); end: return result; } + +cl_device_id cl_util_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +{ + cl_device_id result = 0; + cl_platform_id * platforms; + cl_uint num_platforms = 0; + cl_device_id * devices; + cl_uint num_devices = 0; + + OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + + if (triplet->plat_index < 0 || triplet->plat_index >= num_platforms) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + goto plat; + } + + OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, MAXOCLDEV, NULL, &num_devices), *error, plat); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, num_devices, devices, NULL), *error, dev); + + if (triplet->dev_index < 0 || triplet->dev_index >= num_devices) { + *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + goto dev; + } + + result = devices[triplet->dev_index]; + +dev: free(devices); +plat: free(platforms); +end: return result; +} + +// builds program and shows log if build is not successful +UTILS_EXPORT +cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt) { + // if error + cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); + if (err != CL_SUCCESS) { + char * program_log; + size_t log_size = 0; + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); + if ((program_log = (char *)calloc(log_size + 1, sizeof(char))) != NULL) { + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); + printf("Build log is:\n\n%s\n\n", program_log); + free(program_log); + } + } + return err; +} diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 8cab3c23..ecb0b3fd 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -7,7 +7,7 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) +UTILS_EXPORT char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) { char * data = NULL, * temp; size_t size = 0; @@ -19,52 +19,34 @@ char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 +#define IF_ERR(func, err, label) \ +do { if (func) {*errcode_ret = err; goto label;} } while (0) + if (errcode_ret == NULL) { errcode_ret = &err; } /* File name can not be NULL. */ - if (filename == NULL) { - *errcode_ret = CL_INVALID_ARG_VALUE; - return NULL; - } + IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); /* Open file. */ - in = fopen(filename, "r"); - if (in == NULL) { - *errcode_ret = CL_INVALID_VALUE; - return NULL; - } + IF_ERR(fopen_s(&in, filename, "r"), CL_INVALID_VALUE, end); /* A read error already occurred? */ - if (ferror(in)) { - fclose(in); - *errcode_ret = CL_INVALID_VALUE; - return NULL; - } + IF_ERR(ferror(in), CL_INVALID_VALUE, fl); while (1) { if (used + READALL_CHUNK + 1 > size) { size = used + READALL_CHUNK + 1; /* Overflow check. */ - if (size <= used) { - fclose(in); - free(data); - *errcode_ret = CL_OUT_OF_RESOURCES; - return NULL; - } - - temp = (char *)realloc(data, size); - if (temp == NULL) { - fclose(in); - free(data); - *errcode_ret = CL_OUT_OF_HOST_MEMORY; - return NULL; - } + IF_ERR(size <= used, CL_OUT_OF_RESOURCES, dt); + + MEM_CHECK(temp = (char *)realloc(data, size), *errcode_ret, dt); data = temp; } + /* Read file in chunks. */ n = fread(data + used, 1, READALL_CHUNK, in); if (n == 0) break; @@ -72,26 +54,21 @@ char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * used += n; } - if (ferror(in)) { - fclose(in); - free(data); - *errcode_ret = CL_INVALID_VALUE; - return NULL; - } + /* A read error already occurred? */ + IF_ERR(ferror(in), CL_INVALID_VALUE, dt); - temp = (char *)realloc(data, used + 1); - if (temp == NULL) { - fclose(in); - free(data); - *errcode_ret = CL_OUT_OF_HOST_MEMORY; - return NULL; - } + /* Put null termination. */ + MEM_CHECK(temp = (char *)realloc(data, used + 1), *errcode_ret, dt); data = temp; data[used] = '\0'; if (length != NULL) *length = used; - fclose(in); *errcode_ret = CL_SUCCESS; - return data; +fl: fclose(in); +end: return data; + +dt: fclose(in); + free(data); + return NULL; } diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index 81d9ad86..d9b8897e 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,2 +1,5 @@ #include "Context.c" #include "File.c" +//#include "Options.c" + +#include "cargs.c" diff --git a/lib/src/Utils/cargs.c b/lib/src/Utils/cargs.c new file mode 100644 index 00000000..2c11b29f --- /dev/null +++ b/lib/src/Utils/cargs.c @@ -0,0 +1,452 @@ +/** + * MIT License + * + * Copyright (c) 2020 Leonard Iklé + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * This is a simple alternative cross-platform implementation of getopt, which + * is used to parse argument strings submitted to the executable (argc and argv + * which are received in the main function). + */ + +#include +#include +#include +#include + +#include + +static void cag_option_print_value(const cag_option *option, + int *accessor_length, FILE *destination) +{ + if (option->value_name != NULL) { + *accessor_length += fprintf(destination, "=%s", option->value_name); + } +} + +static void cag_option_print_letters(const cag_option *option, bool *first, + int *accessor_length, FILE *destination) +{ + const char *access_letter; + access_letter = option->access_letters; + if (access_letter != NULL) { + while (*access_letter) { + if (*first) { + *accessor_length += fprintf(destination, "-%c", *access_letter); + *first = false; + } else { + *accessor_length += fprintf(destination, ", -%c", *access_letter); + } + ++access_letter; + } + } +} + +static void cag_option_print_name(const cag_option *option, bool *first, + int *accessor_length, FILE *destination) +{ + if (option->access_name != NULL) { + if (*first) { + *accessor_length += fprintf(destination, "--%s", option->access_name); + } else { + *accessor_length += fprintf(destination, ", --%s", option->access_name); + } + } +} + +UTILS_EXPORT +void cag_option_print(const cag_option *options, size_t option_count, + FILE *destination) +{ + size_t option_index; + const cag_option *option; + bool first; + int i, accessor_length, max_accessor_length = 0; + + FILE * tmp; + if (!tmpfile_s(&tmp)) { + for (option_index = 0; option_index < option_count; ++option_index) { + option = &options[option_index]; + accessor_length = 0; + first = true; + + cag_option_print_letters(option, &first, &accessor_length, tmp); + cag_option_print_name(option, &first, &accessor_length, tmp); + cag_option_print_value(option, &accessor_length, tmp); + + if (accessor_length > max_accessor_length) + max_accessor_length = accessor_length; + } + } + + for (option_index = 0; option_index < option_count; ++option_index) { + option = &options[option_index]; + accessor_length = 0; + first = true; + + fputs(" ", destination); + + cag_option_print_letters(option, &first, &accessor_length, destination); + cag_option_print_name(option, &first, &accessor_length, destination); + cag_option_print_value(option, &accessor_length, destination); + + for (i = accessor_length; i < max_accessor_length; ++i) { + fputs(" ", destination); + } + + fputs(" ", destination); + fputs(option->description, destination); + + fprintf(destination, "\n"); + } +} + +UTILS_EXPORT +void cag_option_prepare(cag_option_context *context, const cag_option *options, + size_t option_count, int argc, char **argv) +{ + // This just initialized the values to the beginning of all the arguments. + context->options = options; + context->option_count = option_count; + context->argc = argc; + context->argv = argv; + context->index = 1; + context->inner_index = 0; + context->forced_end = false; +} + +static const cag_option *cag_option_find_by_name(cag_option_context *context, + char *name, size_t name_size) +{ + const cag_option *option; + size_t i; + + // We loop over all the available options and stop as soon as we have found + // one. We don't use any hash map table, since there won't be that many + // arguments anyway. + for (i = 0; i < context->option_count; ++i) { + option = &context->options[i]; + + // The option might not have an item name, we can just skip those. + if (option->access_name == NULL) { + continue; + } + + // Try to compare the name of the access name. We can use the name_size or + // this comparison, since we are guaranteed to have null-terminated access + // names. + if (strncmp(option->access_name, name, name_size) == 0) { + return option; + } + } + + return NULL; +} + +static const cag_option *cag_option_find_by_letter(cag_option_context *context, + char letter) +{ + const cag_option *option; + size_t i; + + // We loop over all the available options and stop as soon as we have found + // one. We don't use any look up table, since there won't be that many + // arguments anyway. + for (i = 0; i < context->option_count; ++i) { + option = &context->options[i]; + + // If this option doesn't have any access letters we will skip them. + if (option->access_letters == NULL) { + continue; + } + + // Verify whether this option has the access letter in it's access letter + // string. If it does, then this is our option. + if (strchr(option->access_letters, letter) != NULL) { + return option; + } + } + + return NULL; +} + +static void cag_option_parse_value(cag_option_context *context, + const cag_option *option, char **c) +{ + // And now let's check whether this option is supposed to have a value, which + // is the case if there is a value name set. The value can be either submitted + // with a '=' sign or a space, which means we would have to jump over to the + // next argv index. This is somewhat ugly, but we do it to behave the same as + // the other option parsers. + if (option->value_name != NULL) { + if (**c == '=') { + context->value = ++(*c); + } else { + // If the next index is larger or equal to the argument count, then the + // parameter for this option is missing. The user will know about this, + // since the value pointer of the context will be NULL because we don't + // set it here in that case. + if (context->argc > context->index + 1) { + // We consider this argv to be the value, no matter what the contents + // are. + ++context->index; + *c = context->argv[context->index]; + context->value = *c; + } + } + + // Move c to the end of the value, to not confuse the caller about our + // position. + while (**c) { + ++(*c); + } + } +} + +static void cag_option_parse_access_name(cag_option_context *context, char **c) +{ + const cag_option *option; + char *n; + + // Now we need to extract the access name, which is any symbol up to a '=' or + // a '\0'. + n = *c; + while (**c && **c != '=') { + ++*c; + } + + // Now this will obviously always be true, but we are paranoid. Sometimes. It + // doesn't hurt to check. + assert(*c >= n); + + // Figure out which option this name belongs to. This might return NULL if the + // name is not registered, which means the user supplied an unknown option. In + // that case we return true to indicate that we finished with this option. We + // have to skip the value parsing since we don't know whether the user thinks + // this option has one or not. Since we don't set any identifier specifically, + // it will remain '?' within the context. + option = cag_option_find_by_name(context, n, (size_t)(*c - n)); + if (option == NULL) { + // Since this option is invalid, we will move on to the next index. There is + // nothing we can do about this. + ++context->index; + return; + } + + // We found an option and now we can specify the identifier within the + // context. + context->identifier = option->identifier; + + // And now we try to parse the value. This function will also check whether + // this option is actually supposed to have a value. + cag_option_parse_value(context, option, c); + + // And finally we move on to the next index. + ++context->index; +} + +static void cag_option_parse_access_letter(cag_option_context *context, + char **c) +{ + const cag_option *option; + char *n = *c; + char *v; + + // Figure out which option this letter belongs to. This might return NULL if + // the letter is not registered, which means the user supplied an unknown + // option. In that case we return true to indicate that we finished with this + // option. We have to skip the value parsing since we don't know whether the + // user thinks this option has one or not. Since we don't set any identifier + // specifically, it will remain '?' within the context. + option = cag_option_find_by_letter(context, n[context->inner_index]); + if (option == NULL) { + ++context->index; + context->inner_index = 0; + return; + } + + // We found an option and now we can specify the identifier within the + // context. + context->identifier = option->identifier; + + // And now we try to parse the value. This function will also check whether + // this option is actually supposed to have a value. + v = &n[++context->inner_index]; + cag_option_parse_value(context, option, &v); + + // Check whether we reached the end of this option argument. + if (*v == '\0') { + ++context->index; + context->inner_index = 0; + } +} + +static void cag_option_shift(cag_option_context *context, int start, int option, + int end) +{ + char *tmp; + int a_index, shift_index, shift_count, left_index, right_index; + + shift_count = option - start; + + // There is no shift is required if the start and the option have the same + // index. + if (shift_count == 0) { + return; + } + + // Lets loop through the option strings first, which we will move towards the + // beginning. + for (a_index = option; a_index < end; ++a_index) { + // First remember the current option value, because we will have to save + // that later at the beginning. + tmp = context->argv[a_index]; + + // Let's loop over all option values and shift them one towards the end. + // This will override the option value we just stored temporarily. + for (shift_index = 0; shift_index < shift_count; ++shift_index) { + left_index = a_index - shift_index; + right_index = a_index - shift_index - 1; + context->argv[left_index] = context->argv[right_index]; + } + + // Now restore the saved option value at the beginning. + context->argv[a_index - shift_count] = tmp; + } + + // The new index will be before all non-option values, in such a way that they + // all will be moved again in the next fetch call. + context->index = end - shift_count; +} + +static bool cag_option_is_argument_string(const char *c) +{ + return *c == '-' && *(c + 1) != '\0'; +} + +static int cag_option_find_next(cag_option_context *context) +{ + int next_index, next_option_index; + char *c; + + // Prepare to search the next option at the next index. + next_index = context->index; + next_option_index = next_index; + + // Grab a pointer to the string and verify that it is not the end. If it is + // the end, we have to return false to indicate that we finished. + c = context->argv[next_option_index]; + if (context->forced_end || c == NULL) { + return -1; + } + + // Check whether it is a '-'. We need to find the next option - and an option + // always starts with a '-'. If there is a string "-\0", we don't consider it + // as an option neither. + while (!cag_option_is_argument_string(c)) { + c = context->argv[++next_option_index]; + if (c == NULL) { + // We reached the end and did not find any argument anymore. Let's tell + // our caller that we reached the end. + return -1; + } + } + + // Indicate that we found an option which can be processed. The index of the + // next option will be returned. + return next_option_index; +} + +UTILS_EXPORT +bool cag_option_fetch(cag_option_context *context) +{ + char *c; + int old_index, new_index; + + // Reset our identifier to a question mark, which indicates an "unknown" + // option. The value is set to NULL, to make sure we are not carrying the + // parameter from the previous option to this one. + context->identifier = '?'; + context->value = NULL; + + // Check whether there are any options left to parse and remember the old + // index as well as the new index. In the end we will move the option junk to + // the beginning, so that non option arguments can be read. + old_index = context->index; + new_index = cag_option_find_next(context); + if (new_index >= 0) { + context->index = new_index; + } else { + return false; + } + + // Grab a pointer to the beginning of the option. At this point, the next + // character must be a '-', since if it was not the prepare function would + // have returned false. We will skip that symbol and proceed. + c = context->argv[context->index]; + assert(*c == '-'); + ++c; + + // Check whether this is a long option, starting with a double "--". + if (*c == '-') { + ++c; + + // This might be a double "--" which indicates the end of options. If this + // is the case, we will not move to the next index. That ensures that + // another call to the fetch function will not skip the "--". + if (*c == '\0') { + context->forced_end = true; + } else { + // We parse now the access name. All information about it will be written + // to the context. + cag_option_parse_access_name(context, &c); + } + } else { + // This is no long option, so we can just parse an access letter. + cag_option_parse_access_letter(context, &c); + } + + // Move the items so that the options come first followed by non-option + // arguments. + cag_option_shift(context, old_index, new_index, context->index); + + return context->forced_end == false; +} + +UTILS_EXPORT +char cag_option_get(const cag_option_context *context) +{ + // We just return the identifier here. + return context->identifier; +} + +UTILS_EXPORT +const char * cag_option_get_value(const cag_option_context *context) +{ + // We just return the internal value pointer of the context. + return context->value; +} + +int cag_option_get_index(const cag_option_context *context) +{ + // Either we point to a value item, + return context->index; +} diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 56292373..2aca064f 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +//#define CL_TARGET_OPENCL_VERSION 300 // OpenCL SDK includes #include #include -//#include -//#include +#include #include // includes @@ -26,33 +26,83 @@ #include #include #include -//#include - -// builds program and shows log if build is not successful -cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt) { - // if error - cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); - if (err != CL_SUCCESS) { - char * program_log; - size_t log_size = 0; - clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); - if ((program_log = (char *)calloc(log_size + 1, sizeof(char))) != NULL) { - clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); - printf("Build log is:\n\n%s\n\n", program_log); - free(program_log); + +// Sample-specific option +struct SaxpyOptions { size_t length; }; + +cag_option SaxpyOptions[] = { + {.identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of input"} +}; + +pcg32_random_t rng; + +void parse_error(cag_option * opts, size_t const num_opts) +{ + printf("Usage: saxpy [OPTION]...\n"); + //printf("Demonstrates the cargs library.\n\n"); + cag_option_print(opts, num_opts, stdout); + exit(CL_SUCCESS); +} + +ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_context, struct SaxpyOptions * opts) +{ + const char * value; + switch (identifier) { + case 'l': + if ((value = cag_option_get_value(cag_context))) { + opts->length = strtoul(value, NULL, 0); + return ParsedOK; } + else return ParseError; } - return err; + return NotParsed; } - -pcg32_random_t rng = { 111111, 222 }; +void parse_options(int argc, + char* argv[], + struct cl_sdk_options_Diagnostic * diag_opts, + struct cl_sdk_options_SingleDevice * dev_opts, + struct SaxpyOptions * saxpy_opts) +{ + struct cag_option * FullOptions = NULL; + size_t FullOptionsNumber = 0; + FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)); + FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)); + FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, SaxpyOptions, CAG_ARRAY_SIZE(SaxpyOptions)); + + char identifier; + cag_option_context cag_context; + + /* Prepare the context and iterate over all options. */ + cag_option_prepare(&cag_context, FullOptions, FullOptionsNumber, argc, argv); + while (cag_option_fetch(&cag_context)) { + ParseState state = NotParsed; + identifier = cag_option_get(&cag_context); + + state = parse_DiagnosticOptions(identifier, diag_opts); + if (state == ParsedOK) continue; + state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); + if (state == ParsedOK) continue; + state = parse_SaxpyOptions(identifier, &cag_context, saxpy_opts); + if (state == ParsedOK) continue; + + if ((identifier == 'h') || (state == ParseError)) { + printf("Usage: saxpy [OPTION]...\n"); + //printf("Demonstrates the cargs library.\n\n"); + cag_option_print(FullOptions, FullOptionsNumber, stdout); + exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); + } + } +} int main(int argc, char* argv[]) { - cl_int error = CL_SUCCESS; - cl_device_type type = CL_DEVICE_TYPE_DEFAULT; - int plat_id = 0, dev_id = 0; + cl_int error = CL_SUCCESS, + end_error = CL_SUCCESS; cl_platform_id platform; cl_device_id device; cl_context context; @@ -64,49 +114,55 @@ int main(int argc, char* argv[]) cl_program program = NULL; // Parse command-line options - bool quiet = false; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false }; + struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct SaxpyOptions saxpy_opts = { .length = 1234 }; + + parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts); // Create runtime objects based on user preference or default //OCLERROR_PAR(context = cl_util_get_context(plat_id, dev_id, type, &error), error, end); - OCLERROR_PAR(device = cl_util_get_device(plat_id, dev_id, type, &error), error, end); + OCLERROR_PAR(device = cl_util_get_device_by_triplet(&(dev_opts.triplet), &error), error, end); OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, 0, &error), error, cont); + //OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); - if (!quiet)//(!diag_opts.quiet) - { - char * vendor = NULL, - * name = NULL; - size_t v = 0, n = 0; + if (!diag_opts.quiet) { + char * name = NULL, * tmp = NULL; + size_t n = 0; - OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, sizeof(size_t), NULL, &v), error, que); - MEM_CHECK(vendor = (char *)malloc(sizeof(char) * (v+1)), error, ven); - OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, sizeof(char) * v, vendor, NULL), error, ven); - vendor[v] = '\0'; + // CL_PLATFORM_VENDOR is not supported by NVIDIA CUDA platform + //error = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n); + OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n), error, ven); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), error, ven); + OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(char) * n, name, NULL), error, ven); + name[n] = '\0'; + printf("Selected platform: %s\n", name); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(size_t), NULL, &n), error, ven); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), error, nam); +ven: OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(size_t), NULL, &n), error, nam); + MEM_CHECK(tmp = (char *)realloc(name, sizeof(char) * (n+1)), error, nam); + name = tmp; OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(char) * n, name, NULL), error, nam); name[n] = '\0'; - - printf("Selected platform: %s\n" "Selected device: %s\n\n", vendor, name); + printf("Selected device: %s\n\n", name); nam: free(name); -ven: free(vendor); } // Compile kernel OCLERROR_PAR(kernel = cl_utils_read_text_file(kernel_location, &program_size, &error), error, que); - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, &kernel, &program_size, &error), error, ker); + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); OCLERROR_RET(cl_utils_build_program(program, device, NULL), error, prg); cl_kernel saxpy; OCLERROR_PAR(saxpy = clCreateKernel(program, "saxpy", &error), error, prg); // Initialize host-side storage - const size_t length = 1234;//saxpy_opts.length; + const size_t length = saxpy_opts.length; + pcg32_srandom_r(&rng, 111111, -222); cl_float * arr_x, * arr_y, a = pcg32_random_float(&rng); MEM_CHECK(arr_x = (cl_float *)malloc(sizeof(cl_float) * length), error, sxp); @@ -129,7 +185,7 @@ ven: free(vendor); // Concurrently calculate reference dataset for (size_t i = 0; i < length; ++i) - arr_y[i] += a * arr_x[i]; + arr_y[i] = fmaf(a, arr_x[i], arr_y[i]);//arr_y[i] = a * arr_x[i] + arr_y[i]; // Fetch results OCLERROR_RET(clEnqueueReadBuffer(queue, buf_y, CL_BLOCKING, 0, sizeof(cl_float) * length, (void *)arr_x, 0, NULL, NULL), error, bufy); @@ -139,20 +195,21 @@ ven: free(vendor); if (arr_y[i] != arr_x[i]) { printf("Verification failed! %f != %f at index %zu\n", arr_y[i], arr_x[i], i); error = CL_INVALID_VALUE; - goto bufy; + if (!diag_opts.verbose) goto bufy; } - printf("Verification passed.\n"); + if (error == CL_SUCCESS) + printf("Verification passed.\n"); // Release resources -bufy: clReleaseMemObject(buf_y); -bufx: clReleaseMemObject(buf_x); +bufy: OCLERROR_RET(clReleaseMemObject(buf_y), end_error, bufx); +bufx: OCLERROR_RET(clReleaseMemObject(buf_x), end_error, arry); arry: free(arr_y); arrx: free(arr_x); -sxp: clReleaseKernel(saxpy); -prg: clReleaseProgram(program); +sxp: OCLERROR_RET(clReleaseKernel(saxpy), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); ker: free(kernel); -que: clReleaseCommandQueue(queue); -cont: clReleaseContext(context); - -end: return error; +que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); +cont: OCLERROR_RET(clReleaseContext(context), end_error, end); +end: if (error) printf("Error: %i", error); + return error; } From 362e1962f6b4c38d5b37072dbf2ef826ac4e95c7 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 1 Nov 2021 21:44:44 +0200 Subject: [PATCH 050/203] Math library to link --- samples/CMakeLists.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 77d068f0..8885aec2 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -72,6 +72,19 @@ macro(add_sample) $<$:_CRT_SECURE_NO_WARNINGS> # TODO: remove ) + # add math library to link if needed + # method by Michael Ambrus, https://stackoverflow.com/questions/34625627 + include(CheckLibraryExists) + CHECK_LIBRARY_EXISTS(m sin "" HAVE_LIB_M) + if (HAVE_LIB_M) + set(EXTRA_LIBS ${EXTRA_LIBS} m) + endif (HAVE_LIB_M) + + target_link_libraries(${OPENCL_SAMPLE_TARGET} + PUBLIC + ${EXTRA_LIBS} + ) + set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} From 49dc95729c35b672cc6be08c4f711c762bd4fc21 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 1 Nov 2021 21:53:21 +0200 Subject: [PATCH 051/203] C11 for fopen_s and tmpfile_s --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f4b440b1..dd75c77c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ cmake_minimum_required(VERSION 3.0) set(CMAKE_CXX_STANDARD 14) +set(CMAKE_C_STANDARD 11) project(OpenCL-SDK VERSION 1.0 From cbdb44a6bb53057770e9a7a51fc3524fdf920e22 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 1 Nov 2021 22:05:53 +0200 Subject: [PATCH 052/203] Want extension of C lib --- lib/src/Utils/cargs.c | 1 + samples/core/saxpy/main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/src/Utils/cargs.c b/lib/src/Utils/cargs.c index 2c11b29f..973eebcc 100644 --- a/lib/src/Utils/cargs.c +++ b/lib/src/Utils/cargs.c @@ -27,6 +27,7 @@ * which are received in the main function). */ +#define __STDC_WANT_LIB_EXT1__ #include #include #include diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 2aca064f..32af39f5 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -22,6 +22,7 @@ #include // includes +#define __STDC_WANT_LIB_EXT1__ #include #include #include From 367f934f4021d21610d535c78a27a18b273530c4 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 1 Nov 2021 22:16:43 +0200 Subject: [PATCH 053/203] CMAKE_C_STANDARD_REQUIRED --- CMakeLists.txt | 1 + lib/src/Utils/cargs.c | 2 +- samples/core/saxpy/main.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd75c77c..897ff87c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ cmake_minimum_required(VERSION 3.0) set(CMAKE_CXX_STANDARD 14) set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) project(OpenCL-SDK VERSION 1.0 diff --git a/lib/src/Utils/cargs.c b/lib/src/Utils/cargs.c index 973eebcc..457e8a26 100644 --- a/lib/src/Utils/cargs.c +++ b/lib/src/Utils/cargs.c @@ -27,7 +27,7 @@ * which are received in the main function). */ -#define __STDC_WANT_LIB_EXT1__ +#define __STDC_WANT_LIB_EXT1__ 1 #include #include #include diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 32af39f5..d48f2191 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -14,6 +14,7 @@ * limitations under the License. */ //#define CL_TARGET_OPENCL_VERSION 300 +#define __STDC_WANT_LIB_EXT1__ 1 // OpenCL SDK includes #include @@ -22,7 +23,6 @@ #include // includes -#define __STDC_WANT_LIB_EXT1__ #include #include #include From d852e57ced5ca2d3bb418c7dbb5dded9d6876cac Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 2 Nov 2021 10:54:50 +0200 Subject: [PATCH 054/203] No Annex K funcs --- CMakeLists.txt | 2 -- lib/include/CL/Utils/cargs.h | 5 +---- lib/src/Utils/File.c | 2 +- lib/src/Utils/cargs.c | 5 +++-- samples/core/saxpy/main.c | 2 -- 5 files changed, 5 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 897ff87c..f4b440b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,6 @@ cmake_minimum_required(VERSION 3.0) set(CMAKE_CXX_STANDARD 14) -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED ON) project(OpenCL-SDK VERSION 1.0 diff --git a/lib/include/CL/Utils/cargs.h b/lib/include/CL/Utils/cargs.h index 1ce0601d..7ebbe221 100644 --- a/lib/include/CL/Utils/cargs.h +++ b/lib/include/CL/Utils/cargs.h @@ -22,8 +22,7 @@ * which are received in the main function). */ -#ifndef CAG_LIBRARY_H -#define CAG_LIBRARY_H +/* Changes: Copyright (c) 2021 The Khronos Group Inc. */ #include #include @@ -160,5 +159,3 @@ int cag_option_get_index(const cag_option_context *context); #ifdef __cplusplus } // extern "C" #endif - -#endif diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index ecb0b3fd..50bd6b14 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -30,7 +30,7 @@ do { if (func) {*errcode_ret = err; goto label;} } while (0) IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); /* Open file. */ - IF_ERR(fopen_s(&in, filename, "r"), CL_INVALID_VALUE, end); + IF_ERR(!(in = fopen(filename, "r")), CL_INVALID_VALUE, end); /* A read error already occurred? */ IF_ERR(ferror(in), CL_INVALID_VALUE, fl); diff --git a/lib/src/Utils/cargs.c b/lib/src/Utils/cargs.c index 457e8a26..736dbb45 100644 --- a/lib/src/Utils/cargs.c +++ b/lib/src/Utils/cargs.c @@ -27,7 +27,8 @@ * which are received in the main function). */ -#define __STDC_WANT_LIB_EXT1__ 1 +/* Changes: Copyright (c) 2021 The Khronos Group Inc. */ + #include #include #include @@ -83,7 +84,7 @@ void cag_option_print(const cag_option *options, size_t option_count, int i, accessor_length, max_accessor_length = 0; FILE * tmp; - if (!tmpfile_s(&tmp)) { + if ((tmp = tmpfile())) { for (option_index = 0; option_index < option_count; ++option_index) { option = &options[option_index]; accessor_length = 0; diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index d48f2191..41f31f81 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -//#define CL_TARGET_OPENCL_VERSION 300 -#define __STDC_WANT_LIB_EXT1__ 1 // OpenCL SDK includes #include From 71540fcec324e0b5aa4cd5a5cb8b0f1a16db4b9b Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 2 Nov 2021 11:00:24 +0200 Subject: [PATCH 055/203] No inline --- lib/include/CL/SDK/Random.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index a4f599f9..21511491 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -46,12 +46,12 @@ uint32_t pcg32_random_r(pcg32_random_t * rng) return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); } -inline cl_float pcg32_random_float(pcg32_random_t * rng) +cl_float pcg32_random_float(pcg32_random_t * rng) { return ldexp(pcg32_random_r(rng), -32); } -inline cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) +cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) { return ldexp(pcg32_random_r(rng), -32) * (hi - low) + low; } From 208bae8af81541b626b222dde9b44f5ce6d7fcd2 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 2 Nov 2021 17:26:26 +0200 Subject: [PATCH 056/203] Parse options error handling, std::string cl::util::read_text_file(const char * filename) --- lib/include/CL/Utils/File.h | 2 +- lib/include/CL/Utils/File.hpp | 18 +++++++++++++++++ lib/src/Utils/File.c | 2 +- samples/core/saxpy/main.c | 37 +++++++++++++++++++++-------------- 4 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 lib/include/CL/Utils/File.hpp diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 3c0e4108..9461c2a1 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -4,4 +4,4 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -UTILS_EXPORT char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); +UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp new file mode 100644 index 00000000..0fa3419c --- /dev/null +++ b/lib/include/CL/Utils/File.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +namespace cl +{ +namespace util +{ + std::string read_text_file(const char * filename); +} +} + +std::string cl::util::read_text_file(const char * filename) +{ + std::ifstream in(filename); + return std::string((std::istreambuf_iterator(in)), std::istreambuf_iterator()); +} diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 50bd6b14..45f73c0b 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -7,7 +7,7 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -UTILS_EXPORT char * cl_utils_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) +UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) { char * data = NULL, * temp; size_t size = 0; diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 41f31f81..4a62daf6 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -27,7 +27,7 @@ #include // Sample-specific option -struct SaxpyOptions { size_t length; }; +struct options_Saxpy { size_t length; }; cag_option SaxpyOptions[] = { {.identifier = 'l', @@ -44,10 +44,10 @@ void parse_error(cag_option * opts, size_t const num_opts) printf("Usage: saxpy [OPTION]...\n"); //printf("Demonstrates the cargs library.\n\n"); cag_option_print(opts, num_opts, stdout); - exit(CL_SUCCESS); + exit(CL_INVALID_ARG_VALUE); } -ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_context, struct SaxpyOptions * opts) +ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_context, struct options_Saxpy * opts) { const char * value; switch (identifier) { @@ -61,23 +61,28 @@ ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_co return NotParsed; } -void parse_options(int argc, +cl_int parse_options(int argc, char* argv[], struct cl_sdk_options_Diagnostic * diag_opts, struct cl_sdk_options_SingleDevice * dev_opts, - struct SaxpyOptions * saxpy_opts) + struct options_Saxpy * saxpy_opts) { - struct cag_option * FullOptions = NULL; - size_t FullOptionsNumber = 0; - FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)); - FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)); - FullOptions = add_CLI_options(FullOptions, &FullOptionsNumber, SaxpyOptions, CAG_ARRAY_SIZE(SaxpyOptions)); + cl_int error = CL_SUCCESS; + struct cag_option * opts = NULL, * tmp = NULL; + size_t n = 0; + + /* Prepare all options array. */ + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + opts = tmp; + MEM_CHECK(tmp = add_CLI_options(opts, &n, SaxpyOptions, CAG_ARRAY_SIZE(SaxpyOptions)), error, end); + opts = tmp; char identifier; cag_option_context cag_context; /* Prepare the context and iterate over all options. */ - cag_option_prepare(&cag_context, FullOptions, FullOptionsNumber, argc, argv); + cag_option_prepare(&cag_context, opts, n, argc, argv); while (cag_option_fetch(&cag_context)) { ParseState state = NotParsed; identifier = cag_option_get(&cag_context); @@ -92,10 +97,12 @@ void parse_options(int argc, if ((identifier == 'h') || (state == ParseError)) { printf("Usage: saxpy [OPTION]...\n"); //printf("Demonstrates the cargs library.\n\n"); - cag_option_print(FullOptions, FullOptionsNumber, stdout); + cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } - } + +end: free(opts); + return error; } int main(int argc, char* argv[]) @@ -117,7 +124,7 @@ int main(int argc, char* argv[]) struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; struct SaxpyOptions saxpy_opts = { .length = 1234 }; - parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts); + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), error, end); // Create runtime objects based on user preference or default //OCLERROR_PAR(context = cl_util_get_context(plat_id, dev_id, type, &error), error, end); @@ -150,7 +157,7 @@ nam: free(name); } // Compile kernel - OCLERROR_PAR(kernel = cl_utils_read_text_file(kernel_location, &program_size, &error), error, que); + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); OCLERROR_RET(cl_utils_build_program(program, device, NULL), error, prg); From bf10d55f1166a8d36b68e16f94437b3e5957d4d6 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 3 Nov 2021 10:57:04 +0200 Subject: [PATCH 057/203] Uuups --- lib/include/CL/Utils/File.hpp | 1 + samples/core/saxpy/main.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp index 0fa3419c..f311632f 100644 --- a/lib/include/CL/Utils/File.hpp +++ b/lib/include/CL/Utils/File.hpp @@ -11,6 +11,7 @@ namespace util } } +// Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 std::string cl::util::read_text_file(const char * filename) { std::ifstream in(filename); diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 4a62daf6..2bdf31c9 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -100,6 +100,7 @@ cl_int parse_options(int argc, cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } + } end: free(opts); return error; @@ -122,7 +123,7 @@ int main(int argc, char* argv[]) // Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct SaxpyOptions saxpy_opts = { .length = 1234 }; + struct options_Saxpy saxpy_opts = { .length = 1234 }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), error, end); From 3dcd43be3841f55aa6fe62bff5416bde1fb4c7b8 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 4 Nov 2021 11:08:06 +0200 Subject: [PATCH 058/203] Separate Cargs --- CMakeLists.txt | 1 + lib/CMakeLists.txt | 2 ++ lib/include/CL/SDK/Options.h | 11 +++++---- lib/include/CL/Utils/Utils.h | 1 - lib/src/Utils/Utils.c | 3 --- samples/CMakeLists.txt | 24 ++++++++----------- third_party/cargs/CMakeLists.txt | 11 +++++++++ {lib/src/Utils => third_party/cargs}/cargs.c | 9 +++---- .../CL/Utils => third_party/cargs}/cargs.h | 9 +++---- 9 files changed, 36 insertions(+), 35 deletions(-) create mode 100644 third_party/cargs/CMakeLists.txt rename {lib/src/Utils => third_party/cargs}/cargs.c (99%) rename {lib/include/CL/Utils => third_party/cargs}/cargs.h (97%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f4b440b1..b59998e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(lib) add_subdirectory(samples) +add_subdirectory(third_party/cargs) include (GNUInstallDirs) set_target_properties(OpenCL OpenCLUtils OpenCLUtilsCpp diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 6ce9232a..14ece381 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -38,6 +38,8 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) PUBLIC ${UTIL_LIB_DEPS} OpenCL::OpenCL + PRIVATE + cargs ) target_compile_definitions(${UTIL_LIB_TARGET} PRIVATE diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 00517d6a..790fc1e6 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -1,11 +1,12 @@ #pragma once -#include -#include -#include +#include +#include +#include -#include -#include +#include + +#include struct cl_sdk_options_Triplet { diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index 2d27f3a6..f7c81bdf 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -5,7 +5,6 @@ #include #include #include -#include // RET = function returns error code // PAR = functions sets error code in the paremeter diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index d9b8897e..81d9ad86 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,5 +1,2 @@ #include "Context.c" #include "File.c" -//#include "Options.c" - -#include "cargs.c" diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 8885aec2..bd46d2cf 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -20,7 +20,14 @@ endif() list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) find_package(TCLAP REQUIRED) -set(OPENCL_SAMPLE_INCLUDES ${TCLAP_INCLUDE_DIR}) +set(OPENCL_SAMPLE_INCLUDES + ${TCLAP_INCLUDE_DIR} + ${PROJECT_SOURCE_DIR}/third_party/cargs) + +# add math library to link if needed +# method by Michael Ambrus, https://stackoverflow.com/questions/34625627 +include(CheckLibraryExists) +CHECK_LIBRARY_EXISTS(m sin "" HAVE_LIB_M) # Usage: # add_sample( @@ -56,11 +63,13 @@ macro(add_sample) ) target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE + cargs OpenCL::Headers OpenCL::HeadersCpp OpenCL::OpenCL OpenCL::Utils OpenCL::UtilsCpp + $<$:m> ${OPENCL_SAMPLE_LIBS} ) target_compile_definitions(${OPENCL_SAMPLE_TARGET} @@ -72,19 +81,6 @@ macro(add_sample) $<$:_CRT_SECURE_NO_WARNINGS> # TODO: remove ) - # add math library to link if needed - # method by Michael Ambrus, https://stackoverflow.com/questions/34625627 - include(CheckLibraryExists) - CHECK_LIBRARY_EXISTS(m sin "" HAVE_LIB_M) - if (HAVE_LIB_M) - set(EXTRA_LIBS ${EXTRA_LIBS} m) - endif (HAVE_LIB_M) - - target_link_libraries(${OPENCL_SAMPLE_TARGET} - PUBLIC - ${EXTRA_LIBS} - ) - set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} diff --git a/third_party/cargs/CMakeLists.txt b/third_party/cargs/CMakeLists.txt new file mode 100644 index 00000000..853768d1 --- /dev/null +++ b/third_party/cargs/CMakeLists.txt @@ -0,0 +1,11 @@ +# cargs +add_library(cargs STATIC ${CMAKE_CURRENT_SOURCE_DIR}/cargs.c) + +target_include_directories(cargs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + +set_target_properties(cargs + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/library + POSITION_INDEPENDENT_CODE ON + C_STANDARD 99 +) diff --git a/lib/src/Utils/cargs.c b/third_party/cargs/cargs.c similarity index 99% rename from lib/src/Utils/cargs.c rename to third_party/cargs/cargs.c index 736dbb45..e8d017f7 100644 --- a/lib/src/Utils/cargs.c +++ b/third_party/cargs/cargs.c @@ -1,4 +1,6 @@ /** + * https://github.com/likle/cargs + * * MIT License * * Copyright (c) 2020 Leonard Iklé @@ -34,7 +36,7 @@ #include #include -#include +#include static void cag_option_print_value(const cag_option *option, int *accessor_length, FILE *destination) @@ -74,7 +76,6 @@ static void cag_option_print_name(const cag_option *option, bool *first, } } -UTILS_EXPORT void cag_option_print(const cag_option *options, size_t option_count, FILE *destination) { @@ -121,7 +122,6 @@ void cag_option_print(const cag_option *options, size_t option_count, } } -UTILS_EXPORT void cag_option_prepare(cag_option_context *context, const cag_option *options, size_t option_count, int argc, char **argv) { @@ -377,7 +377,6 @@ static int cag_option_find_next(cag_option_context *context) return next_option_index; } -UTILS_EXPORT bool cag_option_fetch(cag_option_context *context) { char *c; @@ -433,14 +432,12 @@ bool cag_option_fetch(cag_option_context *context) return context->forced_end == false; } -UTILS_EXPORT char cag_option_get(const cag_option_context *context) { // We just return the identifier here. return context->identifier; } -UTILS_EXPORT const char * cag_option_get_value(const cag_option_context *context) { // We just return the internal value pointer of the context. diff --git a/lib/include/CL/Utils/cargs.h b/third_party/cargs/cargs.h similarity index 97% rename from lib/include/CL/Utils/cargs.h rename to third_party/cargs/cargs.h index 7ebbe221..1bd559d0 100644 --- a/lib/include/CL/Utils/cargs.h +++ b/third_party/cargs/cargs.h @@ -1,6 +1,8 @@ #pragma once /** + * https://github.com/likle/cargs + * * MIT License * * Copyright (c) 2020 Leonard Iklé @@ -79,7 +81,6 @@ typedef struct cag_option_context * @param option_count The option count which will be printed. * @param destination The destination where the output will be printed. */ -UTILS_EXPORT void cag_option_print(const cag_option *options, size_t option_count, FILE *destination); @@ -97,7 +98,6 @@ void cag_option_print(const cag_option *options, size_t option_count, * @param argc The amount of arguments the user supplied in the main function. * @param argv A pointer to the arguments of the main function. */ -UTILS_EXPORT void cag_option_prepare(cag_option_context *context, const cag_option *options, size_t option_count, int argc, char **argv); @@ -116,7 +116,6 @@ void cag_option_prepare(cag_option_context *context, const cag_option *options, * @return Returns true if there was another option or false if the end is * reached. */ -UTILS_EXPORT bool cag_option_fetch(cag_option_context *context); /** @@ -128,7 +127,6 @@ bool cag_option_fetch(cag_option_context *context); * @param context The context from which the option was fetched. * @return Returns the identifier of the option. */ -UTILS_EXPORT char cag_option_get(const cag_option_context *context); /** @@ -140,8 +138,7 @@ char cag_option_get(const cag_option_context *context); * @param context The context from which the option was fetched. * @return Returns a pointer to the value or NULL if there is no value. */ - UTILS_EXPORT - const char * cag_option_get_value(const cag_option_context *context); +const char * cag_option_get_value(const cag_option_context *context); /** * @brief Gets the current index of the context. From 43754b14da362b97e63d313f3c6e0489b6b037ae Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 4 Nov 2021 13:16:09 +0200 Subject: [PATCH 059/203] Restructure, error handling in cl::util::read_text_file --- lib/include/CL/SDK/CLI.h | 118 +++++++++++++++++++++++++++++++ lib/include/CL/SDK/Context.h | 12 ++++ lib/include/CL/SDK/Context.hpp | 1 + lib/include/CL/SDK/Options.h | 116 +----------------------------- lib/include/CL/Utils/Context.h | 5 -- lib/include/CL/Utils/Context.hpp | 2 + lib/include/CL/Utils/Error.h | 14 +++- lib/include/CL/Utils/File.h | 3 +- lib/include/CL/Utils/File.hpp | 43 ++++++++++- lib/include/CL/Utils/Utils.h | 18 +---- lib/include/CL/Utils/Utils.hpp | 2 +- lib/src/Utils/Context.c | 83 ++++------------------ lib/src/Utils/File.c | 23 +++--- lib/src/Utils/Utils.c | 3 + samples/core/saxpy/main.c | 11 ++- 15 files changed, 227 insertions(+), 227 deletions(-) diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index 6f70f09b..c1f1072a 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -1 +1,119 @@ #pragma once + +// OpenCL SDK +#include + +// cargs includes +#include + +// STL includes +#include // realloc +#include // bool +#include // memcpy, strcmp, strtoul + +typedef struct cag_option cag_option; + +cag_option * add_CLI_options(cag_option * opts, size_t * const num_opts, cag_option * add_opts, size_t add_num_opts) +{ + cag_option * tmp = NULL; + + tmp = (cag_option *)realloc(opts, sizeof(cag_option) * (*num_opts + add_num_opts)); + if (tmp) { + memcpy(tmp + *num_opts, add_opts, sizeof(cag_option) * add_num_opts); + *num_opts += add_num_opts; + } + + return tmp; +} + +enum ParseState +{ + ParsedOK, + NotParsed, + ParseError +}; + +typedef enum ParseState ParseState; + +cag_option DiagnosticOptions[] = { + {.identifier = 'h', + .access_letters = "h", + .access_name = "help", + .description = "Show this help"}, + + {.identifier = 'q', + .access_letters = "q", + .access_name = "quiet", + .description = "Suppress standard output"}, + + {.identifier = 'v', + .access_letters = "v", + .access_name = "verbose", + .description = "Extra informational output"} +}; + +ParseState parse_DiagnosticOptions(const char identifier, struct cl_sdk_options_Diagnostic * diag_opts) +{ + switch (identifier) { + case 'q': + diag_opts->quiet = true; + return ParsedOK; + case 'v': + diag_opts->verbose = true; + return ParsedOK; + } + return NotParsed; +} + +cag_option SingleDeviceOptions[] = { + {.identifier = 'p', + .access_letters = "p", + .access_name = "platform", + .value_name = "(positive integer)", + .description = "Index of platform to use"}, + + {.identifier = 'd', + .access_letters = "d", + .access_name = "device", + .value_name = "(positive integer)", + .description = "Index of device to use"}, + + {.identifier = 't', + .access_letters = "t", + .access_name = "type", + .value_name = "(all|cpu|gpu|acc|def)", + .description = "Type of device to use"} +}; + +// TODO: error handling +cl_device_type get_dev_type(const char * in) +{ + if (!strcmp(in, "all")) return CL_DEVICE_TYPE_ALL; + else if (!strcmp(in, "cpu")) return CL_DEVICE_TYPE_CPU; + else if (!strcmp(in, "gpu")) return CL_DEVICE_TYPE_GPU; + else if (!strcmp(in, "acc")) return CL_DEVICE_TYPE_ACCELERATOR; + else if (!strcmp(in, "def")) return CL_DEVICE_TYPE_DEFAULT; + else return CL_DEVICE_TYPE_ALL;//CL_INVALID_DEVICE_TYPE;// "Unkown device type after cli parse. Should not have happened." +} + +ParseState parse_SingleDeviceOptions(const char identifier, cag_option_context * cag_context, struct cl_sdk_options_SingleDevice * dev_opts) +{ + const char * value; + +#define IF_ERR(op) \ +if ((value = cag_option_get_value(cag_context))) \ + { op; return ParsedOK; } \ +else return ParseError; + + switch (identifier) { + case 'p': + IF_ERR(dev_opts->triplet.plat_index = strtoul(value, NULL, 0)); + case 'd': + IF_ERR(dev_opts->triplet.dev_index = strtoul(value, NULL, 0)); + case 't': + IF_ERR(dev_opts->triplet.dev_type = get_dev_type(value)); + } + return NotParsed; + +#undef IF_ERR +} diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index 852f7dcc..e7c5697f 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -1,3 +1,15 @@ #pragma once +// OpenCL SDK #include +#include + +cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +{ + return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); +} + +cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +{ + return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); +} diff --git a/lib/include/CL/SDK/Context.hpp b/lib/include/CL/SDK/Context.hpp index 8a08edac..2b49c195 100644 --- a/lib/include/CL/SDK/Context.hpp +++ b/lib/include/CL/SDK/Context.hpp @@ -1,5 +1,6 @@ #pragma once +// OpenCL SDK #include #include diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 790fc1e6..348cefe6 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -1,10 +1,7 @@ #pragma once -#include +// STL includes #include -#include - -#include #include @@ -31,114 +28,3 @@ struct cl_sdk_options_MultiDevice struct cl_sdk_options_Triplet * triplets; size_t number; }; - -typedef struct cag_option cag_option; - -cag_option * add_CLI_options(cag_option * opts, size_t * const num_opts, cag_option * add_opts, size_t add_num_opts) -{ - cag_option * tmp = NULL; - - tmp = (cag_option *)realloc(opts, sizeof(cag_option) * (*num_opts + add_num_opts)); - if (tmp) { - memcpy(tmp + *num_opts, add_opts, sizeof(cag_option) * add_num_opts); - *num_opts += add_num_opts; - } - - return tmp; -} - -enum ParseState -{ - ParsedOK, - NotParsed, - ParseError -}; - -typedef enum ParseState ParseState; - -cag_option DiagnosticOptions[] = { - {.identifier = 'h', - .access_letters = "h", - .access_name = "help", - .description = "Show this help"}, - - {.identifier = 'q', - .access_letters = "q", - .access_name = "quiet", - .description = "Suppress standard output"}, - - {.identifier = 'v', - .access_letters = "v", - .access_name = "verbose", - .description = "Extra informational output"} -}; - -ParseState parse_DiagnosticOptions(const char identifier, struct cl_sdk_options_Diagnostic * diag_opts) -{ - switch (identifier) { - case 'q': - diag_opts->quiet = true; - return ParsedOK; - case 'v': - diag_opts->verbose = true; - return ParsedOK; - } - return NotParsed; -} - -cag_option SingleDeviceOptions[] = { - {.identifier = 'p', - .access_letters = "p", - .access_name = "platform", - .value_name = "(positive integer)", - .description = "Index of platform to use"}, - - {.identifier = 'd', - .access_letters = "d", - .access_name = "device", - .value_name = "(positive integer)", - .description = "Index of device to use"}, - - {.identifier = 't', - .access_letters = "t", - .access_name = "type", - .value_name = "(all|cpu|gpu|acc|def)", - .description = "Type of device to use"} -}; - -// TODO: error handling -cl_device_type get_dev_type(const char * in) -{ - if (!strcmp(in, "all")) return CL_DEVICE_TYPE_ALL; - else if (!strcmp(in, "cpu")) return CL_DEVICE_TYPE_CPU; - else if (!strcmp(in, "gpu")) return CL_DEVICE_TYPE_GPU; - else if (!strcmp(in, "acc")) return CL_DEVICE_TYPE_ACCELERATOR; - else if (!strcmp(in, "def")) return CL_DEVICE_TYPE_DEFAULT; - else return CL_DEVICE_TYPE_ALL;//CL_INVALID_DEVICE_TYPE;// "Unkown device type after cli parse. Should not have happened." -} - -ParseState parse_SingleDeviceOptions(const char identifier, cag_option_context * cag_context, struct cl_sdk_options_SingleDevice * dev_opts) -{ - const char * value; - switch (identifier) { - case 'p': - if ((value = cag_option_get_value(cag_context))) { - dev_opts->triplet.plat_index = strtoul(value, NULL, 0); - return ParsedOK; - } - else return ParseError; - case 'd': - if ((value = cag_option_get_value(cag_context))) { - dev_opts->triplet.dev_index = strtoul(value, NULL, 0); - return ParsedOK; - } - else return ParseError; - case 't': - if ((value = cag_option_get_value(cag_context))) { - dev_opts->triplet.dev_type = get_dev_type(value); - return 1; - } - else return ParseError; - } - return NotParsed; -} diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index 367b7ddf..db3468e6 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -1,14 +1,9 @@ #pragma once -#include -#include - UTILS_EXPORT cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); UTILS_EXPORT cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); -UTILS_EXPORT -cl_device_id cl_util_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error); // builds program and shows log if build is not successful UTILS_EXPORT diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp index 4ceee089..fae1e170 100644 --- a/lib/include/CL/Utils/Context.hpp +++ b/lib/include/CL/Utils/Context.hpp @@ -1,6 +1,8 @@ #pragma once +// OpenCL SDK #include "OpenCLUtilsCpp_Export.h" + #include #include diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index c5a068af..7235254c 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -1,3 +1,15 @@ #pragma once -#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 \ No newline at end of file +#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 + +// RET = function returns error code +// PAR = functions sets error code in the paremeter + +#define OCLERROR_RET(func, err, label) \ +do { err = func; if (err != CL_SUCCESS) goto label; } while (0) + +#define OCLERROR_PAR(func, err, label) \ +do { func; if (err != CL_SUCCESS) goto label; } while (0) + +#define MEM_CHECK(func, err, label) \ +do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 9461c2a1..905098de 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -4,4 +4,5 @@ // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret); +UTILS_EXPORT +char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error); diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp index f311632f..76dd66ef 100644 --- a/lib/include/CL/Utils/File.hpp +++ b/lib/include/CL/Utils/File.hpp @@ -1,5 +1,9 @@ #pragma once +// OpenCL SDK +#include + +// STL includes #include #include @@ -7,13 +11,46 @@ namespace cl { namespace util { - std::string read_text_file(const char * filename); + UTILSCPP_EXPORT + std::string read_text_file(const char * filename, cl_int * error); } } // Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 -std::string cl::util::read_text_file(const char * filename) +// with error handling +UTILSCPP_EXPORT +std::string cl::util::read_text_file(const char * filename, cl_int * error) { + cl_int err; + if (error == nullptr) + error = &err; + std::ifstream in(filename); - return std::string((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + if (in.good()) + { + try + { + std::string red((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + if (in.good() && in.eof()) + { + *error = CL_SUCCESS; + return red; + } + else + { + *error = CL_INVALID_VALUE; + return std::string(); + } + } + catch (std::bad_alloc& ex) + { + *error = CL_OUT_OF_RESOURCES; + return std::string(); + } + } + else + { + *error = CL_INVALID_ARG_VALUE; + return std::string(); + } } diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index f7c81bdf..2cf77550 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -1,22 +1,10 @@ #pragma once +// OpenCL SDK #include "OpenCLUtils_Export.h" #include + +#include #include #include - -// RET = function returns error code -// PAR = functions sets error code in the paremeter - -#define OCLERROR_RET(func, err, label) \ -do { err = func; if (err != CL_SUCCESS) goto label; } while (0) - -#define OCLERROR_PAR(func, err, label) \ -do { func; if (err != CL_SUCCESS) goto label; } while (0) - -#define MEM_CHECK(func, err, label) \ -do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) - -#define MAXOCLPLAT 65535 -#define MAXOCLDEV 65535 diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp index f5015c89..7c08a75b 100644 --- a/lib/include/CL/Utils/Utils.hpp +++ b/lib/include/CL/Utils/Utils.hpp @@ -1,5 +1,5 @@ #pragma once -#include +// OpenCL SDK #include #include diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index e4c255d8..020d9fb3 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,8 +1,14 @@ +// OpenCL SDK #include +#include #include -#include -#include +// STL includes +#include // malloc, free +#include // printf + +static cl_uint MAXOCLPLAT = 65535; +static cl_uint MAXOCLDEV = 65535; UTILS_EXPORT cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int * error) @@ -38,39 +44,6 @@ plat: free(platforms); end: return result; } -cl_context cl_util_get_context_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) -{ - cl_context result = NULL; - cl_platform_id * platforms; - cl_uint num_platforms = 0; - cl_device_id * devices; - cl_uint num_devices = 0; - - OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); - OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); - - if (triplet->plat_index < 0 || triplet->plat_index >= num_platforms) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" - goto plat; - } - - OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, MAXOCLDEV, NULL, &num_devices), *error, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, num_devices, devices, NULL), *error, dev); - - if (triplet->dev_index < 0 || triplet->dev_index >= num_devices) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" - goto dev; - } - - OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + triplet->dev_index, NULL, NULL, error), *error, dev); - -dev: free(devices); -plat: free(platforms); -end: return result; -} - UTILS_EXPORT cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) { @@ -105,50 +78,18 @@ plat: free(platforms); end: return result; } -cl_device_id cl_util_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) -{ - cl_device_id result = 0; - cl_platform_id * platforms; - cl_uint num_platforms = 0; - cl_device_id * devices; - cl_uint num_devices = 0; - - OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); - OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); - - if (triplet->plat_index < 0 || triplet->plat_index >= num_platforms) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" - goto plat; - } - - OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, MAXOCLDEV, NULL, &num_devices), *error, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[triplet->plat_index], triplet->dev_type, num_devices, devices, NULL), *error, dev); - - if (triplet->dev_index < 0 || triplet->dev_index >= num_devices) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" - goto dev; - } - - result = devices[triplet->dev_index]; - -dev: free(devices); -plat: free(platforms); -end: return result; -} - -// builds program and shows log if build is not successful +// build program and show log if build is not successful UTILS_EXPORT cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt) { // if error cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); - if (err != CL_SUCCESS) { + if (err != CL_SUCCESS) { // no error handling here as error from build program is more valuable char * program_log; size_t log_size = 0; clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); - if ((program_log = (char *)calloc(log_size + 1, sizeof(char))) != NULL) { + if ((program_log = (char *)malloc((log_size + 1) * sizeof(char)))) { clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); + program_log[log_size] = '\0'; printf("Build log is:\n\n%s\n\n", program_log); free(program_log); } diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 45f73c0b..0b818b84 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -1,13 +1,16 @@ +// OpenCL SDK #include -#include -#include +// STL includes +#include // realloc, free +#include // fopen, ferror, fread, fclose // reads all the text file contents securely in ANSI C89 // returns pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * errcode_ret) +UTILS_EXPORT +char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) { char * data = NULL, * temp; size_t size = 0; @@ -20,10 +23,10 @@ UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * lengt #define READALL_CHUNK 2097152 #define IF_ERR(func, err, label) \ -do { if (func) {*errcode_ret = err; goto label;} } while (0) +do { if (func) {*error = err; goto label;} } while (0) - if (errcode_ret == NULL) { - errcode_ret = &err; + if (error == NULL) { + error = &err; } /* File name can not be NULL. */ @@ -42,7 +45,7 @@ do { if (func) {*errcode_ret = err; goto label;} } while (0) /* Overflow check. */ IF_ERR(size <= used, CL_OUT_OF_RESOURCES, dt); - MEM_CHECK(temp = (char *)realloc(data, size), *errcode_ret, dt); + MEM_CHECK(temp = (char *)realloc(data, size), *error, dt); data = temp; } @@ -58,17 +61,19 @@ do { if (func) {*errcode_ret = err; goto label;} } while (0) IF_ERR(ferror(in), CL_INVALID_VALUE, dt); /* Put null termination. */ - MEM_CHECK(temp = (char *)realloc(data, used + 1), *errcode_ret, dt); + MEM_CHECK(temp = (char *)realloc(data, used + 1), *error, dt); data = temp; data[used] = '\0'; if (length != NULL) *length = used; - *errcode_ret = CL_SUCCESS; + *error = CL_SUCCESS; fl: fclose(in); end: return data; dt: fclose(in); free(data); return NULL; + +#undef IF_ERR } diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index 81d9ad86..ec8253db 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,2 +1,5 @@ +// OpenCL SDK +#include + #include "Context.c" #include "File.c" diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 2bdf31c9..9f8c7ddf 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -14,13 +14,12 @@ * limitations under the License. */ -// OpenCL SDK includes +// OpenCL SDK #include -#include -#include +#include #include -// includes +// STL includes #include #include #include @@ -128,8 +127,8 @@ int main(int argc, char* argv[]) OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), error, end); // Create runtime objects based on user preference or default - //OCLERROR_PAR(context = cl_util_get_context(plat_id, dev_id, type, &error), error, end); - OCLERROR_PAR(device = cl_util_get_device_by_triplet(&(dev_opts.triplet), &error), error, end); + OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, + dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); OCLERROR_PAR(queue = clCreateCommandQueue(context, device, 0, &error), error, cont); //OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); From a9c1d9c392218380a0be015fb05da0f195a95fdc Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 4 Nov 2021 17:06:24 +0200 Subject: [PATCH 060/203] Uniform cl_util_ prefix --- lib/include/CL/SDK/Random.h | 1 + lib/include/CL/Utils/Context.h | 4 ++-- lib/include/CL/Utils/File.h | 4 ++-- lib/src/Utils/Context.c | 2 +- samples/core/saxpy/main.c | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 21511491..269733b6 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -1,5 +1,6 @@ #pragma once +// STL includes #include #include diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index db3468e6..62c17c44 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -5,6 +5,6 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ UTILS_EXPORT cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); -// builds program and shows log if build is not successful +// build program and show log if build is not successful UTILS_EXPORT -cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt); +cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt); diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 905098de..d474eeb7 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -1,7 +1,7 @@ #pragma once -// reads all the text file contents securely in ANSI C89 -// returns pointer to C-string with file contents +// read all the text file contents securely in ANSI C89 +// return pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 020d9fb3..b6fba6a8 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -80,7 +80,7 @@ end: return result; // build program and show log if build is not successful UTILS_EXPORT -cl_int cl_utils_build_program(cl_program pr, const cl_device_id dev, const char * opt) { +cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt) { // if error cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); if (err != CL_SUCCESS) { // no error handling here as error from build program is more valuable diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 9f8c7ddf..0598180e 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -160,7 +160,7 @@ nam: free(name); OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); - OCLERROR_RET(cl_utils_build_program(program, device, NULL), error, prg); + OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); cl_kernel saxpy; OCLERROR_PAR(saxpy = clCreateKernel(program, "saxpy", &error), error, prg); From ea73555b8666dc912f3b6a6b0afb328ef563fb48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 13:57:18 +0200 Subject: [PATCH 061/203] Bump CLHPP commit hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 884c45fd..e70cef62 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 884c45fdb3927a462272e1709a21b7475ca4cc0d +Subproject commit e70cef621e15f6260a1dc526b14d0f70ce783625 From 65a016b29a5fe3a28f969b662af1d7f4fe073a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 14:03:31 +0200 Subject: [PATCH 062/203] OpenCL-Headers track develop_stream --- .gitmodules | 2 +- external/OpenCL-Headers | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 496f9527..c808b740 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,7 +5,7 @@ [submodule "headers"] path = external/OpenCL-Headers url = git@projects.streamhpc.com:Khronos/OpenCL-Headers.git - branch = initial-ci + branch = develop_stream [submodule "headers-cpp"] path = external/OpenCL-CLHPP url = git@projects.streamhpc.com:Khronos/OpenCL-CLHPP.git diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index b278c44e..302aaf8c 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit b278c44e34bdb980112583048d6ee2e311f15ab7 +Subproject commit 302aaf8cb0b162dccc6cfe079c48d5a1fb55dd2e From 0ba1dc97c05e1d8b68e25577d6ba1d585eb350c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 14:30:30 +0200 Subject: [PATCH 063/203] OpenCL-ICD-Loader track develop_stream --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index c808b740..f12467cd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "loader"] path = external/OpenCL-ICD-Loader url = git@projects.streamhpc.com:Khronos/OpenCL-ICD-Loader.git - branch = initial-ci + branch = develop_stream [submodule "headers"] path = external/OpenCL-Headers url = git@projects.streamhpc.com:Khronos/OpenCL-Headers.git From 4e35951eec2d5e93eea9338eeca1525eed19016f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 14:31:57 +0200 Subject: [PATCH 064/203] Bump OpenCL-ICD-Loader hash --- external/OpenCL-ICD-Loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index f4ced2f8..6a3d0b41 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit f4ced2f8b760964a0dce6a2683ac9d0386c46892 +Subproject commit 6a3d0b4143b55ec1b8ba766a6fdd824a913f0b9e From b8b8c19579e3c406bbe98946a614c144d8545fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 14:36:10 +0200 Subject: [PATCH 065/203] Bump CLHPP hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index e70cef62..6bff7558 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit e70cef621e15f6260a1dc526b14d0f70ce783625 +Subproject commit 6bff7558bae78f4dafe4bc8715e46581ef93e4c3 From 1cd944769d9e85ba7f1e46c1534a52f56403a7a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 16:55:41 +0200 Subject: [PATCH 066/203] OpenCL-CLHPP track develop_stream --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index f12467cd..bd83747a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,4 @@ [submodule "headers-cpp"] path = external/OpenCL-CLHPP url = git@projects.streamhpc.com:Khronos/OpenCL-CLHPP.git - branch = initial-ci + branch = develop_stream From 21e0dcac36de35a3ad42f45c72a03d3948a707e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 16:57:30 +0200 Subject: [PATCH 067/203] Bump CLHPP hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 6bff7558..1e11fb9b 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 6bff7558bae78f4dafe4bc8715e46581ef93e4c3 +Subproject commit 1e11fb9bf80a48da5d87e06b287223834500bbda From 287b41604ae0dbe2d0dfde5f32215712bc42bb37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 12:28:28 +0200 Subject: [PATCH 068/203] Added custom device type CLI arg parse --- lib/include/CL/SDK/CLI.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index a59f563c..1c139648 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -81,7 +81,7 @@ cl::sdk::options::Diagnostic cl::sdk::comprehend( template <> auto cl::sdk::parse() { - std::vector valid_dev_strings{ "all", "cpu", "gpu", "acc", "def" }; + std::vector valid_dev_strings{ "all", "cpu", "gpu", "acc", "cus", "def" }; TCLAP::ValuesConstraint valid_dev_constraint{ valid_dev_strings }; return std::make_tuple( @@ -102,6 +102,7 @@ cl::sdk::options::SingleDevice cl::sdk::comprehend Date: Wed, 27 Oct 2021 12:31:57 +0200 Subject: [PATCH 069/203] Renamed Triplet to DeviceTriplet --- lib/include/CL/SDK/Context.hpp | 4 ++-- lib/include/CL/SDK/Options.hpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/include/CL/SDK/Context.hpp b/lib/include/CL/SDK/Context.hpp index 2b49c195..b027eed3 100644 --- a/lib/include/CL/SDK/Context.hpp +++ b/lib/include/CL/SDK/Context.hpp @@ -8,11 +8,11 @@ namespace cl { namespace sdk { - Context get_context(options::Triplet triplet, cl_int* error = nullptr); + Context get_context(options::DeviceTriplet triplet, cl_int* error = nullptr); } } -cl::Context cl::sdk::get_context(options::Triplet triplet, cl_int* error) +cl::Context cl::sdk::get_context(options::DeviceTriplet triplet, cl_int* error) { return cl::util::get_context( triplet.plat_index, diff --git a/lib/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp index f2bb3263..16b0e12f 100644 --- a/lib/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -8,7 +8,7 @@ namespace sdk { namespace options { - struct Triplet + struct DeviceTriplet { int plat_index; int dev_index; @@ -21,11 +21,11 @@ namespace options }; struct SingleDevice { - Triplet triplet; + DeviceTriplet triplet; }; struct MultiDevice { - cl::vector triplets; + cl::vector triplets; }; } } From cc771da990e9e3baa24c896e05faf1d37b0625f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 12:38:28 +0200 Subject: [PATCH 070/203] Added newline at eof --- lib/CMakeLists.txt | 2 +- lib/include/CL/Utils/Error.hpp | 2 +- lib/src/Utils/Context.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 14ece381..43816b7c 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -96,4 +96,4 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) FILES ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/cmake/OpenCL${UTIL_LIB_NAME}/OpenCL${UTIL_LIB_NAME}ConfigVersion.cmake DESTINATION ${config_package_location} ) -endforeach() \ No newline at end of file +endforeach() diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index 2aeab0e8..4e66fb13 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -75,4 +75,4 @@ void cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr *errPtr = err; #endif } -} \ No newline at end of file +} diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index 6c1d4aed..9b446005 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -39,4 +39,4 @@ cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); return cl::Context{}; -} \ No newline at end of file +} From 77b9f59fe2d2990c889467b9461517ffbabfa52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 12:38:40 +0200 Subject: [PATCH 071/203] Minor corrections --- samples/core/saxpy/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/core/saxpy/README.md b/samples/core/saxpy/README.md index de31ab91..007d5585 100644 --- a/samples/core/saxpy/README.md +++ b/samples/core/saxpy/README.md @@ -12,25 +12,25 @@ The most important aspect of this sample is to understand what entities / API ob ### Application flow -You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flxibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is the _alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. +You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flexibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is _the alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. -If we aimed for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. +If we aim for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. ### Lazy buffer movement OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. -This sample creates buffers, specifies their initial content with an iterator rannge spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to Device Global Memory. +This sample creates buffers, specifies their initial content with an iterator range spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to device global memory. Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. #### Explicit host-device-host buffer movement -Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer CTOR overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. +Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer constructor (henceforth CTOR) overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. ### In-order queue usage -While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) and therefore commands enqueued are not allowed to overtake each other, so `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). ### Used API surface From e51c50a3209740a0ee51097523bb6d0214b92b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 25 Oct 2021 16:54:57 +0200 Subject: [PATCH 072/203] WIP --- samples/core/CMakeLists.txt | 1 + samples/core/reduce/CMakeLists.txt | 26 ++++ samples/core/reduce/README.md | 47 ++++++ samples/core/reduce/main.c | 1 + samples/core/reduce/main.cpp | 238 +++++++++++++++++++++++++++++ samples/core/reduce/reduce.cl | 47 ++++++ 6 files changed, 360 insertions(+) create mode 100644 samples/core/reduce/CMakeLists.txt create mode 100644 samples/core/reduce/README.md create mode 100644 samples/core/reduce/main.c create mode 100644 samples/core/reduce/main.cpp create mode 100644 samples/core/reduce/reduce.cl diff --git a/samples/core/CMakeLists.txt b/samples/core/CMakeLists.txt index bef2c7b5..85bead5a 100644 --- a/samples/core/CMakeLists.txt +++ b/samples/core/CMakeLists.txt @@ -16,3 +16,4 @@ add_subdirectory(enumopencl) add_subdirectory(copybuffer) add_subdirectory(copybufferkernel) add_subdirectory(saxpy) +add_subdirectory(reduce) diff --git a/samples/core/reduce/CMakeLists.txt b/samples/core/reduce/CMakeLists.txt new file mode 100644 index 00000000..824f5b45 --- /dev/null +++ b/samples/core/reduce/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET reduce + VERSION 120 + SOURCES main.c) + +add_sample( + TEST + TARGET reducecpp + VERSION 210 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/reduce/README.md b/samples/core/reduce/README.md new file mode 100644 index 00000000..de31ab91 --- /dev/null +++ b/samples/core/reduce/README.md @@ -0,0 +1,47 @@ +# saxpy + +## Sample Purpose + +This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. + +This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. + +## Key APIs and Concepts + +The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. + +### Application flow + +You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flxibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is the _alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. + +If we aimed for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. + +### Lazy buffer movement + +OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. + +This sample creates buffers, specifies their initial content with an iterator rannge spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to Device Global Memory. + +Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. + +#### Explicit host-device-host buffer movement + +Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer CTOR overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. + +### In-order queue usage + +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). + +### Used API surface + +```c++ +cl::util::get_context(cl::util::Triplet) +cl::Context::getInfo() +cl::CommandQueue(cl::Context, cl::Device) +cl::Device::getInfo() +cl::util::get_program(cl::Context, cl::string) +cl::KernelFunctor<...>(cl::Program, const char*) +cl::sdk::fill_with_random(...) +cl::Buffer(cl::CommandQueue, Iter, Iter, bool) +cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +``` diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c new file mode 100644 index 00000000..19236684 --- /dev/null +++ b/samples/core/reduce/main.c @@ -0,0 +1 @@ +int main() {return 0;} diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp new file mode 100644 index 00000000..37c8ba51 --- /dev/null +++ b/samples/core/reduce/main.cpp @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include +#include +#include + +// STL includes +#include +#include +#include +#include +#include +#include // std::make_tuple +#include // std::accumulate + +// TCLAP includes +#include + +// Sample-specific option +struct ReduceOptions { + size_t length; + std::string op; +}; + +// Add option to CLI parsing SDK utility +template <> auto cl::sdk::parse(){ + std::vector valid_op_strings{ "min", "sum" }; + TCLAP::ValuesConstraint valid_op_constraint{ valid_op_strings }; + + return std::make_tuple( + std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral"), + std::make_shared>("o", "op", "Operation to perform", false, "min", &valid_op_constraint) + ); +} +template <> ReduceOptions cl::sdk::comprehend( + std::shared_ptr> length_arg, + std::shared_ptr> op_arg){ + return ReduceOptions{ + length_arg->getValue(), + op_arg->getValue() + }; +} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = cl::sdk::parse_cli< + cl::sdk::options::Diagnostic, + cl::sdk::options::SingleDevice, + ReduceOptions>(argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); + const auto& reduce_opts = std::get<2>(opts); + + // Create runtime objects based on user preference or default + cl::Context context = cl::sdk::get_context(dev_opts.triplet); + cl::Device device = context.getInfo().at(0); + cl::CommandQueue queue{ context, device }; + cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + + if (!diag_opts.quiet) { + std::cout << + "Selected platform: " << platform.getInfo() << "\n" << + "Selected device: " << device.getInfo() << "\n" << + std::endl; + } + + // User defined input + std::string kernel_op = reduce_opts.op == "min" ? + "int op(int lhs, int rhs) { return min(lhs, rhs); }": + "int op(int lhs, int rhs) { return lhs + rhs; }"; + auto host_op = reduce_opts.op == "min" ? + std::function{ [](int lhs, int rhs){ return std::min(lhs, rhs); } } : + std::function{ std::plus{} }; + auto zero_elem = reduce_opts.op == "min" ? + std::numeric_limits().max() : + static_cast(0); + + // Compile kernel + const char* kernel_location = "./reduce.cl"; + std::ifstream kernel_stream{ kernel_location }; + if (!kernel_stream.is_open()) + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + + cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, + std::istreambuf_iterator{} }.append(kernel_op) }; + program.build( device ); + + auto reduce = cl::KernelFunctor(program, "reduce"); + + // Query maximum supported WGS of kernel on device based on private mem (register) constraints + auto wgs = reduce.getKernel().getWorkGroupInfo(device); + + // Further constrain (reduce) WGS based on shared mem size on device + auto wgs_step_size = [&]() + { + auto device_supports_sub_groups = device.getInfo().find("cl_khr_subgroups") + auto plat_ver = platform.getInfo(); + auto sub_group_ver = std::string{"2.1"}; + auto pre_subgroup_query = + std::lexicographical_compare( + plat_ver.cbegin(), plat_ver.cend(), + sub_group_ver.cbegin(), sub_group_ver.cend() + ); + + return true; + }(); + while (device.getInfo() < wgs * 2 * sizeof(cl_int)) +#if CL_HPP_TARGET_OPENCL_VERSION < 210 + wgs -= reduce.getKernel().getWorkGroupInfo(device); +#else + wgs -= reduce.getKernel().getSubGroupInfo(device, cl::NullRange); +#endif + + if (wgs == 0) throw std::runtime_error{"Not enough local memory to serve a single sub-group."}; + + auto factor = wgs * 2; + // Every pass reduces input length by 'factor'. + // If actual size is not divisible by factor, + // an extra output element is produced using some + // number of zero_elem inputs. + auto new_size = [factor](const std::size_t actual) + { + return actual / factor + (actual % factor == 0 ? 0 : 1); + }; + // NOTE: because one work-group produces one output + // new_size == number_of_work_groups + auto global = [=](const std::size_t actual){ return new_size(actual) * wgs; }; + + // Initialize host-side storage + const auto length = reduce_opts.length; + + auto prng = [engine = std::default_random_engine{}, + dist = std::uniform_int_distribution{ -1000, 1000 }]() mutable { + return dist(engine); + }; + + std::vector arr(length); + if (diag_opts.verbose) + std::cout << "Generating " << length << " random numbers for reduction." << std::endl; + cl::sdk::fill_with_random(prng, arr); + + // Initialize device-side storage + cl::Buffer front{ queue, std::begin(arr), std::end(arr), false }, + back{ context, CL_MEM_READ_WRITE, new_size(arr.size()) * sizeof(cl_int) }; + + // Launch kernels + if (diag_opts.verbose) + std::cout << "Executing on device... "; std::cout.flush(); + std::vector passes; + cl_uint curr = static_cast(arr.size()); + while ( curr > 1 ) + { + passes.push_back( + reduce( + cl::EnqueueArgs{ + queue, + passes, + global(curr), + wgs + }, + front, + back, + cl::Local(factor * sizeof(cl_int)), + curr, + zero_elem + ) + ); + + curr = static_cast(new_size(curr)); + if (curr > 1) std::swap(front, back); + } + for (auto& pass : passes) pass.wait(); + if (diag_opts.verbose) + std::cout << "done." << std::endl; + + // calculate reference dataset + auto seq_ref = std::accumulate(arr.cbegin(), arr.cend(), zero_elem, host_op); + + // Fetch results + cl_int dev_res; + cl::copy(queue, back, &dev_res, &dev_res + 1); + + // Validate + if (dev_res != seq_ref) + { + std::cerr << "Sequential reference: " << seq_ref << std::endl; + std::cerr << "Device result: " << dev_res << std::endl; + throw std::runtime_error{ "Validation failed!" }; + } + } + catch(cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} \ No newline at end of file diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl new file mode 100644 index 00000000..002fbc29 --- /dev/null +++ b/samples/core/reduce/reduce.cl @@ -0,0 +1,47 @@ +float op(float lhs, float rhs); + +float read_local(local float* shared, size_t count, float zero, size_t i) +{ + return i < count ? shared[i] : zero; +} + +kernel void reduce( + global float* front, + global float* back, + local float* shared, + unsigned int length, + float zero_elem +) +{ + const size_t lid = get_local_id(0), + lsi = get_local_size(0), + wid = get_group_id(0), + wsi = get_num_groups(0); + + const size_t wg_stride = lsi * 2, + valid_count = wid != wsi - 1 ? // If not last group + wg_stride : // as much as possible + length - wid * wg_stride; // only the remaining + + // Copy real data to local + event_t read; + async_work_group_copy( + shared, + front + wid * wg_stride, + valid_count, + read); + wait_group_events(1, &read); + barrier(CLK_LOCAL_MEM_FENCE); + + for (int i = lsi; i != 0; i /= 2) + { + if (lid < i) + shared[lid] = + op( + read_local(shared, valid_count, zero_elem, lid), + read_local(shared, valid_count, zero_elem, lid + i) + ); + barrier(CLK_LOCAL_MEM_FENCE); + } + if (lid == 0) back[wid] = shared[0]; +} From 01edd00c6179f149d3e48cb24d4b11c2a8032b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 26 Oct 2021 17:59:10 +0200 Subject: [PATCH 073/203] Reduce sample feature complete --- samples/CMakeLists.txt | 6 +-- samples/core/reduce/CMakeLists.txt | 5 +- samples/core/reduce/main.cpp | 81 ++++++++++++++++++++++-------- samples/core/reduce/reduce.cl | 48 +++++++++++++++--- 4 files changed, 105 insertions(+), 35 deletions(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index bd46d2cf..43c5bb63 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -20,10 +20,6 @@ endif() list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) find_package(TCLAP REQUIRED) -set(OPENCL_SAMPLE_INCLUDES - ${TCLAP_INCLUDE_DIR} - ${PROJECT_SOURCE_DIR}/third_party/cargs) - # add math library to link if needed # method by Michael Ambrus, https://stackoverflow.com/questions/34625627 include(CheckLibraryExists) @@ -74,10 +70,10 @@ macro(add_sample) ) target_compile_definitions(${OPENCL_SAMPLE_TARGET} PRIVATE - CL_HPP_ENABLE_EXCEPTIONS CL_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} CL_HPP_TARGET_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} CL_HPP_MINIMUM_OPENCL_VERSION=${OPENCL_SAMPLE_VERSION} + CL_HPP_ENABLE_EXCEPTIONS $<$:_CRT_SECURE_NO_WARNINGS> # TODO: remove ) diff --git a/samples/core/reduce/CMakeLists.txt b/samples/core/reduce/CMakeLists.txt index 824f5b45..dcc4af30 100644 --- a/samples/core/reduce/CMakeLists.txt +++ b/samples/core/reduce/CMakeLists.txt @@ -16,11 +16,12 @@ add_sample( TEST TARGET reduce VERSION 120 - SOURCES main.c) + SOURCES main.c + INCLUDES ${PROJECT_SOURCE_DIR}/third_party/cargs) add_sample( TEST TARGET reducecpp - VERSION 210 + VERSION 300 SOURCES main.cpp INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index 37c8ba51..3b2e2d5a 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -58,6 +58,7 @@ template <> ReduceOptions cl::sdk::comprehend( }; } + int main(int argc, char* argv[]) { try @@ -77,17 +78,67 @@ int main(int argc, char* argv[]) cl::CommandQueue queue{ context, device }; cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 - if (!diag_opts.quiet) { + if (!diag_opts.quiet) std::cout << "Selected platform: " << platform.getInfo() << "\n" << "Selected device: " << device.getInfo() << "\n" << std::endl; + + // Query device and runtime capabilities + auto may_use_work_group_reduce = [&]() // IILE + { + if (platform.getInfo().find("OpenCL 2.") != cl::string::npos) + { + if (device.getInfo().find("OpenCL C 2.") != cl::string::npos) return true; + else return false; + } + else if (platform.getInfo().find("OpenCL 3.") != cl::string::npos) + { + auto c_features = device.getInfo(); + auto feature_is_work_group_reduce = [](const cl_name_version& name_ver) + { + return cl::string{name_ver.name} == "__opencl_c_work_group_collective_functions"; + }; + if (device.getInfo() && + std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend() + ) + return true; + else + return false; + } + else return false; + }(); + auto may_use_sub_group_reduce = [&]() // IILE + { + if (platform.getInfo().find("OpenCL 3.") != cl::string::npos && + device.getInfo().find("cl_khr_subgroups") != cl::string::npos + ) + return true; + else + return false; + }(); + if (diag_opts.verbose) + { + if (may_use_work_group_reduce) + std::cout << "Device supports work-group reduction intrinsics." << std::endl; + else if (may_use_sub_group_reduce) + std::cout << "Device supports sub-group reduction intrinsics." << std::endl; + else + std::cout << "Device doesn't support any reduction intrinsics." << std::endl; } // User defined input std::string kernel_op = reduce_opts.op == "min" ? - "int op(int lhs, int rhs) { return min(lhs, rhs); }": - "int op(int lhs, int rhs) { return lhs + rhs; }"; + "int op(int lhs, int rhs) { return min(lhs, rhs); }\n": + "int op(int lhs, int rhs) { return lhs + rhs; }\n"; + if (may_use_work_group_reduce) + kernel_op += reduce_opts.op == "min" ? + "int work_group_reduce_op(int val) { return work_group_reduce_min(val); }": + "int work_group_reduce_op(int val) { return work_group_reduce_add(val); }"; + else if (may_use_sub_group_reduce) + kernel_op += reduce_opts.op == "min" ? + "int sub_group_reduce_op(int val) { return sub_group_reduce_min(val); }": + "int sub_group_reduce_op(int val) { return sub_group_reduce_add(val); }"; auto host_op = reduce_opts.op == "min" ? std::function{ [](int lhs, int rhs){ return std::min(lhs, rhs); } } : std::function{ std::plus{} }; @@ -102,8 +153,11 @@ int main(int argc, char* argv[]) throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, - std::istreambuf_iterator{} }.append(kernel_op) }; - program.build( device ); + std::istreambuf_iterator{} }.append(kernel_op) }; // Note append + cl::string compiler_options = + cl::string{may_use_work_group_reduce ? "-D USE_WORK_GROUP_REDUCE " : "" } + + cl::string{may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " : "" }; + program.build( device, compiler_options.c_str() ); auto reduce = cl::KernelFunctor(program, "reduce"); @@ -111,25 +165,8 @@ int main(int argc, char* argv[]) auto wgs = reduce.getKernel().getWorkGroupInfo(device); // Further constrain (reduce) WGS based on shared mem size on device - auto wgs_step_size = [&]() - { - auto device_supports_sub_groups = device.getInfo().find("cl_khr_subgroups") - auto plat_ver = platform.getInfo(); - auto sub_group_ver = std::string{"2.1"}; - auto pre_subgroup_query = - std::lexicographical_compare( - plat_ver.cbegin(), plat_ver.cend(), - sub_group_ver.cbegin(), sub_group_ver.cend() - ); - - return true; - }(); while (device.getInfo() < wgs * 2 * sizeof(cl_int)) -#if CL_HPP_TARGET_OPENCL_VERSION < 210 wgs -= reduce.getKernel().getWorkGroupInfo(device); -#else - wgs -= reduce.getKernel().getSubGroupInfo(device, cl::NullRange); -#endif if (wgs == 0) throw std::runtime_error{"Not enough local memory to serve a single sub-group."}; diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl index 002fbc29..2e3f62ac 100644 --- a/samples/core/reduce/reduce.cl +++ b/samples/core/reduce/reduce.cl @@ -1,16 +1,18 @@ -float op(float lhs, float rhs); +int op(int lhs, int rhs); +int work_group_reduce_op(int val); +int sub_group_reduce_op(int val); -float read_local(local float* shared, size_t count, float zero, size_t i) +int read_local(local int* shared, size_t count, int zero, size_t i) { return i < count ? shared[i] : zero; } kernel void reduce( - global float* front, - global float* back, - local float* shared, + global int* front, + global int* back, + local int* shared, unsigned int length, - float zero_elem + int zero_elem ) { const size_t lid = get_local_id(0), @@ -33,6 +35,38 @@ kernel void reduce( wait_group_events(1, &read); barrier(CLK_LOCAL_MEM_FENCE); +#ifdef USE_SUB_GROUP_REDUCE + const uint sid = get_sub_group_id(); + const uint ssi = get_sub_group_size(); + const uint slid= get_sub_group_local_id(); + for(int i = valid_count ; i != 0 ; i /= ssi*2) + { + int temp = zero_elem; + if (sid*ssi < valid_count) + { + temp = sub_group_reduce_op( + op( + read_local(shared, i, zero_elem, sid * 2 * ssi + slid), + read_local(shared, i, zero_elem, sid * 2 * ssi + slid + ssi) + ) + ); + } + barrier(CLK_LOCAL_MEM_FENCE); + if (sid*ssi < valid_count) + shared[sid] = temp; + barrier(CLK_LOCAL_MEM_FENCE); + } + if (lid == 0) back[wid] = shared[0]; +#else // USE_SUB_GROUP_REDUCE +#ifdef USE_WORK_GROUP_REDUCE + int temp = work_group_reduce_op( + op( + read_local(shared, valid_count, zero_elem, lid), + read_local(shared, valid_count, zero_elem, lid + lsi) + ) + ); + if (lid == 0) back[wid] = temp; +#else // USE_WORK_GROUP_REDUCE for (int i = lsi; i != 0; i /= 2) { if (lid < i) @@ -44,4 +78,6 @@ kernel void reduce( barrier(CLK_LOCAL_MEM_FENCE); } if (lid == 0) back[wid] = shared[0]; +#endif // USE_WORK_GROUP_REDUCE +#endif // USE_SUB_GROUP_REDUCE } From 2ef30aefbf3654ed3415b738f24c4b06cddf6a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 26 Oct 2021 19:12:15 +0200 Subject: [PATCH 074/203] Update readme --- samples/core/reduce/README.md | 125 ++++++++++++++++++++++++++++++---- 1 file changed, 110 insertions(+), 15 deletions(-) diff --git a/samples/core/reduce/README.md b/samples/core/reduce/README.md index de31ab91..1223519c 100644 --- a/samples/core/reduce/README.md +++ b/samples/core/reduce/README.md @@ -1,37 +1,130 @@ -# saxpy +# Reduce ## Sample Purpose -This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. - -This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. +This sample intends to demonstrate how to query various extensions applicable in the context of a reduction algorithm, touch up kernel sources at runtime to select the best kernel implementation for the task. ## Key APIs and Concepts -The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. +The most important aspect of this sample is querying exntensions in ways compatible both with 1.x, 2.y, and 3.z runtimes which were introduced at different API versions. The sample also queries the compiled kernel for optimal work-group sizes and launches batches of kernels accordingly. ### Application flow -You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flxibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is the _alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. +The application once a device is selected queries whether it's capable of executing built-in `work_group_reduce_` and/or `sub_group_reduce_` intrinsics. Depending on whether the user selects sum calculation or minimum search on the random input, the operation is baked into the kernel. -If we aimed for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. +The kernel supports two reduction operations which is selected via the command-line and the core part of the algorithm is only declared in source code, the definition of the key functions are appended to the source code at runtime. -### Lazy buffer movement +The reduction kernel otherwise is conceptually simple, it reduces the input to a scalar result in potentially multiple steps. In each step, the output size is that of the input divided by max work-group size * 2. Input isn't overwritten, so double buffering is used where the size of the temporary is the size of the input after one reduction. (Note that other reduction algorithms can be devised which don't need temporary storage.) -OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. +#### Explicit host-device-host buffer movement -This sample creates buffers, specifies their initial content with an iterator rannge spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to Device Global Memory. +The sample uses the `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload when creating the input, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. -Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. +#### In-order queue usage -#### Explicit host-device-host buffer movement +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). -Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer CTOR overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. +## Kernel logic + +The kernel holds three implementations which are all enabled/disabled based on host side queries. + +### Vanilla work-group reduction + +When no relevant extensions are supported, the sample does the textbook tree-like reduction. + +```cl +int read_local(local int* shared, size_t count, int zero, size_t i) +{ + return i < count ? shared[i] : zero; +} + +kernel void reduce( + global int* front, + global int* back, + local int* shared, + unsigned int length, + int zero_elem +) +{ + const size_t lid = get_local_id(0), + lsi = get_local_size(0), + wid = get_group_id(0), + wsi = get_num_groups(0); + + const size_t wg_stride = lsi * 2, + valid_count = wid != wsi - 1 ? // If not last group + wg_stride : // as much as possible + length - wid * wg_stride; // only the remaining + + // Copy real data to local + event_t read; + async_work_group_copy( + shared, + front + wid * wg_stride, + valid_count, + read); + wait_group_events(1, &read); + barrier(CLK_LOCAL_MEM_FENCE); + + for (int i = lsi; i != 0; i /= 2) + { + if (lid < i) + shared[lid] = + op( + read_local(shared, valid_count, zero_elem, lid), + read_local(shared, valid_count, zero_elem, lid + i) + ); + barrier(CLK_LOCAL_MEM_FENCE); + } + if (lid == 0) back[wid] = shared[0]; +} +``` -### In-order queue usage +Every workgroup loads their share of input int local memory using `async_workgroup_copy`. The last work-group may load slightly less if input size isn't divisible by the max work-group size. Whenever a kernel changes between read/write mode of local memory, a barrier is needed syncing local memory operations denoted by `CLK_LOCAL_MEM_FENCE`. -While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). +A decreasing number of work-items participate in each loop iteration. Initially all threads are active, until only one thread is left. `read_local` takes care of uniformity in the algorithmic scheme, even though not every thread may have valid inputs. Threads without valid input data read `zero_elem` instances, leaving the result unchanged. + +### Work-group reduction built-in +A simpler implementation is changing the loop to instead invoke a similar work-group collective function like `async_work_group_copy`, but this time `work_group_reduce_`, that way the kernel ends like: +```cl + int temp = work_group_reduce_op( + op( + read_local(shared, valid_count, zero_elem, lid), + read_local(shared, valid_count, zero_elem, lid + lsi) + ) + ); +if (lid == 0) back[wid] = temp; +``` +(Note that `work_group_reduce_op` will be an inline relay to `work_group_reduce_min` or `work_group_reduce_add` based on user preference via command-line options.) + +### Sub-group reduction built-in + +A slightly more complex variant of the vanilla implementation is provided when the device support sub-group operations. The loop doing the reduction at the end of the kernel then looks like: +```cl + const uint sid = get_sub_group_id(); + const uint ssi = get_sub_group_size(); + const uint slid= get_sub_group_local_id(); + for(int i = valid_count ; i != 0 ; i /= ssi*2) + { + int temp = zero_elem; + if (sid*ssi < valid_count) + { + temp = sub_group_reduce_op( + op( + read_local(shared, i, zero_elem, sid * 2 * ssi + slid), + read_local(shared, i, zero_elem, sid * 2 * ssi + slid + ssi) + ) + ); + } + barrier(CLK_LOCAL_MEM_FENCE); + if (sid*ssi < valid_count) + shared[sid] = temp; + barrier(CLK_LOCAL_MEM_FENCE); + } + if (lid == 0) back[wid] = shared[0]; +``` +Every sub-group (typically coinciding with some SIMD-like width of the executing device) having at least one valid input performs a sub-group collective primitive, `sub_group_reduce_`. Communicating the results between sub-groups is done via local memory. Because typically sub-groups correlate to the SIMD natue of the executing hardware, syncing work-items in sub-groups is often for free (lockstep execution) or cheaper than syncing an entire work-group. By doing sub-group reducing the input, every loop divides the input size by sub-group size * 2, as opposed to the vanilla algorithm dividing by 2 only. If the sub-group size is larger than 2, then the two barriers required for this particular implementation will still result in a net decrease in the number of work-group barriers issued, resulting in faster execution on most architectures, especially wide SIMD architectures. ### Used API surface ```c++ @@ -39,7 +132,9 @@ cl::util::get_context(cl::util::Triplet) cl::Context::getInfo() cl::CommandQueue(cl::Context, cl::Device) cl::Device::getInfo() +cl::Platform::getInfo() cl::util::get_program(cl::Context, cl::string) +cl::Kernel.getWorkGroupInfo<...>() cl::KernelFunctor<...>(cl::Program, const char*) cl::sdk::fill_with_random(...) cl::Buffer(cl::CommandQueue, Iter, Iter, bool) From 3a695cd44e1e427487ee4fddbfb568a13f733c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 11:14:16 +0200 Subject: [PATCH 075/203] Added event profiling utility --- lib/include/CL/Utils/Event.hpp | 19 +++++++++++++++++++ lib/include/CL/Utils/Utils.hpp | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 lib/include/CL/Utils/Event.hpp diff --git a/lib/include/CL/Utils/Event.hpp b/lib/include/CL/Utils/Event.hpp new file mode 100644 index 00000000..63c52525 --- /dev/null +++ b/lib/include/CL/Utils/Event.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" + +#include + +#include + +namespace cl +{ +namespace util +{ + template + auto get_duration(cl::Event& ev) + { + return std::chrono::duration_cast(std::chrono::nanoseconds{ ev.getProfilingInfo() - ev.getProfilingInfo() }); + } +} +} diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp index 7c08a75b..c354b2c0 100644 --- a/lib/include/CL/Utils/Utils.hpp +++ b/lib/include/CL/Utils/Utils.hpp @@ -1,5 +1,7 @@ #pragma once // OpenCL SDK +#include #include #include +#include From 97369136ef4430c45fec7c8e73ab30d740bde63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 11:23:51 +0200 Subject: [PATCH 076/203] Added event profiling --- samples/core/reduce/README.md | 58 +++++++++++++++++++++++++++++++---- samples/core/reduce/main.cpp | 20 ++++++++++-- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/samples/core/reduce/README.md b/samples/core/reduce/README.md index 1223519c..1ab358e0 100644 --- a/samples/core/reduce/README.md +++ b/samples/core/reduce/README.md @@ -12,21 +12,67 @@ The most important aspect of this sample is querying exntensions in ways compati The application once a device is selected queries whether it's capable of executing built-in `work_group_reduce_` and/or `sub_group_reduce_` intrinsics. Depending on whether the user selects sum calculation or minimum search on the random input, the operation is baked into the kernel. -The kernel supports two reduction operations which is selected via the command-line and the core part of the algorithm is only declared in source code, the definition of the key functions are appended to the source code at runtime. +The kernel supports two reduction operations which is selected via the command-line. The core part of the algorithm is only declared in source code, the definition of the key functions are appended to the source code at runtime. The reduction kernel otherwise is conceptually simple, it reduces the input to a scalar result in potentially multiple steps. In each step, the output size is that of the input divided by max work-group size * 2. Input isn't overwritten, so double buffering is used where the size of the temporary is the size of the input after one reduction. (Note that other reduction algorithms can be devised which don't need temporary storage.) #### Explicit host-device-host buffer movement -The sample uses the `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload when creating the input, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. +The sample uses the `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload when creating the input, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. The temporary (back) buffer is allocated using the `cl::Buffer{ cl::Context, cl_mem_flags, cl::size_type }` CTOR overload to denote that the initial contents are indeterminate. -#### In-order queue usage +```c++ +cl::Buffer front{ queue, std::begin(arr), std::end(arr), false }, + back{ context, CL_MEM_READ_WRITE, new_size(arr.size()) * sizeof(cl_int) }; +``` + +Fetching the scalar result is done using `cl::copy`: + +```c++ +cl_int dev_res; + cl::copy(queue, back, &dev_res, &dev_res + 1); +``` + +#### Event profiling + +While events are multi-purpose in OpenCL, they are the handles through which synchronization and profiling can be done, here we only demonstrate their profiling capabilities. We can safely omit synchronizing the steps of reduction, because our queue is in-order (no `cl::QueueProperties::OutOfOrder`), so commands in our queue are executed in the order of their enqueue and don't overtake. + +Event profiling is turned on by creating the queue as such: +```c++ +cl::CommandQueue queue{ context, device, cl::QueueProperties::Profiling }; +``` +We do not have to test for this capability, as it's mandatory for a device to provide profiling capabilities. + +To record the execution time of every reduction step, we save the associated events like this: +```c++ +std::vector passes; +while ( need_to_continue ) +{ + passes.push_back(reduce(...)); +} +cl::WaitForEvents(passes); +``` +The `cl::KernelFunctor` utility of the C++ API exposes a kernel launch as a type-checked C++ function object. Calling the kernel returns the event associated with it. (Type safety means that the arguments provided to the kernel otherwise passing a C ABI are checked to match the promise given when the wrapper was created.) Our `reduce` kernel functor was created as such: +``` +auto reduce = cl::KernelFunctor(program, "reduce"); +``` +Instead calling finish on the queue, we may as well wait for all events in `passes` to signal completion. (For a complete list of event state, refer to the [Execution Model](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_execution_model) chapter of the OpenCL API spec). -While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) commands enqueued are not allowed to overtake each other, therefore `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). +Because most often we measure durations between event state transitions, we use the utility `cl::util::get_duration(cl::Event&)` to get a `std::chrono::duaration` object between the states `From` and `To`. The utility defaults to returing `std::chrono::nanoseconds`, as that is what the OpenCL API uses to store timepoints, but we can request any unit of measurement, such as in this sample: +```c++ +for (auto& pass : passes) + std::cout << "\t" << + cl::util::get_duration< + CL_PROFILING_COMMAND_START, + CL_PROFILING_COMMAND_END, + std::chrono::microseconds + >(pass).count() << + " us." << std::endl; +``` +_(Note: the main reason why net kernel execution time doesn't amount to the time measured by the host are due to dispatching kernel binaries to the device which happen on the first execution, as the sample doesn't invoke a so called warm-up kernel. By doing so, one can reduce the difference to minimal runtime overhead.)_ ## Kernel logic -The kernel holds three implementations which are all enabled/disabled based on host side queries. +The sample implements a special case of reduction, where the binary operation can meaningfully operate on any combination of input data and accumulators. (for the non-special case interface, refer to [`std::reduce`](https://en.cppreference.com/w/cpp/algorithm/reduce)) The kernel holds three implementations which are all enabled/disabled based on host side queries. ### Vanilla work-group reduction @@ -80,7 +126,7 @@ kernel void reduce( } ``` -Every workgroup loads their share of input int local memory using `async_workgroup_copy`. The last work-group may load slightly less if input size isn't divisible by the max work-group size. Whenever a kernel changes between read/write mode of local memory, a barrier is needed syncing local memory operations denoted by `CLK_LOCAL_MEM_FENCE`. +Every workgroup loads their share of input into local memory using `async_workgroup_copy`. The last work-group may load slightly less if input size isn't divisible by the max work-group size. Whenever a kernel changes between read/write mode of local memory, a barrier is needed syncing local memory operations denoted by `CLK_LOCAL_MEM_FENCE`. A decreasing number of work-items participate in each loop iteration. Initially all threads are active, until only one thread is left. `read_local` takes care of uniformity in the algorithmic scheme, even though not every thread may have valid inputs. Threads without valid input data read `zero_elem` instances, leaving the result unchanged. diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index 3b2e2d5a..76ca3c85 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -16,6 +16,7 @@ // OpenCL SDK includes #include +#include #include #include #include @@ -75,7 +76,8 @@ int main(int argc, char* argv[]) // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); - cl::CommandQueue queue{ context, device }; + auto valami = device.getInfo(); + cl::CommandQueue queue{ context, device, cl::QueueProperties::Profiling }; cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 if (!diag_opts.quiet) @@ -205,13 +207,13 @@ int main(int argc, char* argv[]) std::cout << "Executing on device... "; std::cout.flush(); std::vector passes; cl_uint curr = static_cast(arr.size()); + auto dev_start = std::chrono::high_resolution_clock::now(); while ( curr > 1 ) { passes.push_back( reduce( cl::EnqueueArgs{ queue, - passes, global(curr), wgs }, @@ -226,12 +228,15 @@ int main(int argc, char* argv[]) curr = static_cast(new_size(curr)); if (curr > 1) std::swap(front, back); } - for (auto& pass : passes) pass.wait(); + cl::WaitForEvents(passes); + auto dev_end = std::chrono::high_resolution_clock::now(); if (diag_opts.verbose) std::cout << "done." << std::endl; // calculate reference dataset + auto host_start = std::chrono::high_resolution_clock::now(); auto seq_ref = std::accumulate(arr.cbegin(), arr.cend(), zero_elem, host_op); + auto host_end = std::chrono::high_resolution_clock::now(); // Fetch results cl_int dev_res; @@ -244,6 +249,15 @@ int main(int argc, char* argv[]) std::cerr << "Device result: " << dev_res << std::endl; throw std::runtime_error{ "Validation failed!" }; } + + if (!diag_opts.quiet) + { + std::cout << "Total device execution as seen by host: " << std::chrono::duration_cast(dev_end - dev_start).count() << " us." << std::endl; + std::cout << "Reduction steps as measured by device :\n"; + for (auto& pass : passes) + std::cout << "\t" << cl::util::get_duration(pass).count() << " us." << std::endl; + std::cout << "Reference execution as seen by host : " << std::chrono::duration_cast(host_end - host_start).count() << " us." << std::endl; + } } catch(cl::util::Error& e) { From ae9ddd71d233f504a79e9b8fdf6724677930713e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 27 Oct 2021 14:02:03 +0200 Subject: [PATCH 077/203] Bump CLHPP hash --- external/OpenCL-CLHPP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 1e11fb9b..9b67fa3e 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 1e11fb9bf80a48da5d87e06b287223834500bbda +Subproject commit 9b67fa3e8bf799477093b2156fac5b5d46af2430 From cc4d879c069b0b6480f53b9fc66e5111be432bd1 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 3 Nov 2021 13:53:16 +0000 Subject: [PATCH 078/203] Simplify index range calculation. --- samples/core/reduce/reduce.cl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl index 2e3f62ac..e2743678 100644 --- a/samples/core/reduce/reduce.cl +++ b/samples/core/reduce/reduce.cl @@ -21,9 +21,7 @@ kernel void reduce( wsi = get_num_groups(0); const size_t wg_stride = lsi * 2, - valid_count = wid != wsi - 1 ? // If not last group - wg_stride : // as much as possible - length - wid * wg_stride; // only the remaining + valid_count = min(wg_stride, length - wid * wg_stride); // Copy real data to local event_t read; From 42403350c87fae1f859ad65702151e32242d5533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 09:50:25 +0100 Subject: [PATCH 079/203] C reduce sample should use 3.0 too --- samples/core/reduce/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/reduce/CMakeLists.txt b/samples/core/reduce/CMakeLists.txt index dcc4af30..708a1322 100644 --- a/samples/core/reduce/CMakeLists.txt +++ b/samples/core/reduce/CMakeLists.txt @@ -15,7 +15,7 @@ add_sample( TEST TARGET reduce - VERSION 120 + VERSION 300 SOURCES main.c INCLUDES ${PROJECT_SOURCE_DIR}/third_party/cargs) From 95b24ee32f6aa16d9ac723208cad1934f1d18703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 09:50:37 +0100 Subject: [PATCH 080/203] Add copyright notice --- samples/core/reduce/reduce.cl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl index e2743678..0be34ccd 100644 --- a/samples/core/reduce/reduce.cl +++ b/samples/core/reduce/reduce.cl @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + int op(int lhs, int rhs); int work_group_reduce_op(int val); int sub_group_reduce_op(int val); From 2e9ecc10545dffbe89fe6406d21a1a7dcafaa25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 09:51:14 +0100 Subject: [PATCH 081/203] Add newline at eof --- samples/core/reduce/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index 76ca3c85..e1ed32e3 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -286,4 +286,4 @@ int main(int argc, char* argv[]) } return 0; -} \ No newline at end of file +} From 4fdaa5e34419a48e91a6cff61e2c4b809ede3327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 09:51:30 +0100 Subject: [PATCH 082/203] Simplify extension selection logic --- samples/core/reduce/main.cpp | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index e1ed32e3..f1764f3d 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -91,8 +91,7 @@ int main(int argc, char* argv[]) { if (platform.getInfo().find("OpenCL 2.") != cl::string::npos) { - if (device.getInfo().find("OpenCL C 2.") != cl::string::npos) return true; - else return false; + return device.getInfo().find("OpenCL C 2.") != cl::string::npos; } else if (platform.getInfo().find("OpenCL 3.") != cl::string::npos) { @@ -101,24 +100,14 @@ int main(int argc, char* argv[]) { return cl::string{name_ver.name} == "__opencl_c_work_group_collective_functions"; }; - if (device.getInfo() && - std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend() - ) - return true; - else - return false; + return device.getInfo() && + std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend(); } else return false; }(); - auto may_use_sub_group_reduce = [&]() // IILE - { - if (platform.getInfo().find("OpenCL 3.") != cl::string::npos && - device.getInfo().find("cl_khr_subgroups") != cl::string::npos - ) - return true; - else - return false; - }(); + auto may_use_sub_group_reduce = + platform.getInfo().find("OpenCL 3.") != cl::string::npos && + device.getInfo().find("cl_khr_subgroups") != cl::string::npos; if (diag_opts.verbose) { if (may_use_work_group_reduce) From 1bbe93bcbb3881f53fe3af2515ae091d5ed6d277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 10:15:06 +0100 Subject: [PATCH 083/203] Fix size_t handling --- samples/core/reduce/main.cpp | 11 +++++------ samples/core/reduce/reduce.cl | 9 +++++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index f1764f3d..a1f758c2 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -76,7 +76,6 @@ int main(int argc, char* argv[]) // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); - auto valami = device.getInfo(); cl::CommandQueue queue{ context, device, cl::QueueProperties::Profiling }; cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 @@ -150,7 +149,7 @@ int main(int argc, char* argv[]) cl::string{may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " : "" }; program.build( device, compiler_options.c_str() ); - auto reduce = cl::KernelFunctor(program, "reduce"); + auto reduce = cl::KernelFunctor(program, "reduce"); // Query maximum supported WGS of kernel on device based on private mem (register) constraints auto wgs = reduce.getKernel().getWorkGroupInfo(device); @@ -161,12 +160,12 @@ int main(int argc, char* argv[]) if (wgs == 0) throw std::runtime_error{"Not enough local memory to serve a single sub-group."}; - auto factor = wgs * 2; + cl_ulong factor = wgs * 2; // Every pass reduces input length by 'factor'. // If actual size is not divisible by factor, // an extra output element is produced using some // number of zero_elem inputs. - auto new_size = [factor](const std::size_t actual) + auto new_size = [factor](const cl_ulong actual) { return actual / factor + (actual % factor == 0 ? 0 : 1); }; @@ -195,7 +194,7 @@ int main(int argc, char* argv[]) if (diag_opts.verbose) std::cout << "Executing on device... "; std::cout.flush(); std::vector passes; - cl_uint curr = static_cast(arr.size()); + cl_ulong curr = static_cast(arr.size()); auto dev_start = std::chrono::high_resolution_clock::now(); while ( curr > 1 ) { @@ -214,7 +213,7 @@ int main(int argc, char* argv[]) ) ); - curr = static_cast(new_size(curr)); + curr = static_cast(new_size(curr)); if (curr > 1) std::swap(front, back); } cl::WaitForEvents(passes); diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl index 0be34ccd..8139668c 100644 --- a/samples/core/reduce/reduce.cl +++ b/samples/core/reduce/reduce.cl @@ -23,11 +23,16 @@ int read_local(local int* shared, size_t count, int zero, size_t i) return i < count ? shared[i] : zero; } +size_t zmin(size_t a, size_t b) +{ + return a < b ? a : b; +} + kernel void reduce( global int* front, global int* back, local int* shared, - unsigned int length, + unsigned long length, int zero_elem ) { @@ -37,7 +42,7 @@ kernel void reduce( wsi = get_num_groups(0); const size_t wg_stride = lsi * 2, - valid_count = min(wg_stride, length - wid * wg_stride); + valid_count = zmin(wg_stride, (size_t)(length) - wid * wg_stride); // Copy real data to local event_t read; From 1add023f54f8a848793aabf2af5b8dddd4b4faa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 12:51:46 +0100 Subject: [PATCH 084/203] Logically group flush to message --- samples/core/reduce/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index a1f758c2..d65e3afd 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -192,7 +192,7 @@ int main(int argc, char* argv[]) // Launch kernels if (diag_opts.verbose) - std::cout << "Executing on device... "; std::cout.flush(); + { std::cout << "Executing on device... "; std::cout.flush(); } std::vector passes; cl_ulong curr = static_cast(arr.size()); auto dev_start = std::chrono::high_resolution_clock::now(); From c9b012b69d6b451ea5accae70ad81c917d7f4be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 5 Nov 2021 14:07:38 +0100 Subject: [PATCH 085/203] Change precedence of extensions --- samples/core/reduce/reduce.cl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/samples/core/reduce/reduce.cl b/samples/core/reduce/reduce.cl index 8139668c..e9bf7957 100644 --- a/samples/core/reduce/reduce.cl +++ b/samples/core/reduce/reduce.cl @@ -54,6 +54,15 @@ kernel void reduce( wait_group_events(1, &read); barrier(CLK_LOCAL_MEM_FENCE); +#ifdef USE_WORK_GROUP_REDUCE + int temp = work_group_reduce_op( + op( + read_local(shared, valid_count, zero_elem, lid), + read_local(shared, valid_count, zero_elem, lid + lsi) + ) + ); + if (lid == 0) back[wid] = temp; +#else // USE_WORK_GROUP_REDUCE #ifdef USE_SUB_GROUP_REDUCE const uint sid = get_sub_group_id(); const uint ssi = get_sub_group_size(); @@ -77,15 +86,6 @@ kernel void reduce( } if (lid == 0) back[wid] = shared[0]; #else // USE_SUB_GROUP_REDUCE -#ifdef USE_WORK_GROUP_REDUCE - int temp = work_group_reduce_op( - op( - read_local(shared, valid_count, zero_elem, lid), - read_local(shared, valid_count, zero_elem, lid + lsi) - ) - ); - if (lid == 0) back[wid] = temp; -#else // USE_WORK_GROUP_REDUCE for (int i = lsi; i != 0; i /= 2) { if (lid < i) @@ -97,6 +97,6 @@ kernel void reduce( barrier(CLK_LOCAL_MEM_FENCE); } if (lid == 0) back[wid] = shared[0]; -#endif // USE_WORK_GROUP_REDUCE #endif // USE_SUB_GROUP_REDUCE +#endif // USE_WORK_GROUP_REDUCE } From b27b46e6f0d19785d3ae40117711250c4e38faeb Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 8 Nov 2021 13:26:51 +0200 Subject: [PATCH 086/203] FMA in cppSaxpy --- samples/core/reduce/main.cpp | 2 +- samples/core/saxpy/main.cpp | 15 ++++++++++++++- samples/core/saxpy/saxpy.cl | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index d65e3afd..086715ec 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -188,7 +188,7 @@ int main(int argc, char* argv[]) // Initialize device-side storage cl::Buffer front{ queue, std::begin(arr), std::end(arr), false }, - back{ context, CL_MEM_READ_WRITE, new_size(arr.size()) * sizeof(cl_int) }; + back{ context, CL_MEM_READ_WRITE, static_cast(new_size(arr.size()) * sizeof(cl_int)) }; // Launch kernels if (diag_opts.verbose) diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 21cffb67..22b8a551 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -48,6 +48,19 @@ template <> SaxpyOptions cl::sdk::comprehend( }; } +std::valarray fma(float x, std::valarray y, std::valarray z) +{ + if (y.size() == z.size()) + { + size_t len = y.size(); + std::valarray res(len); + for (size_t i = 0; i < len; ++i) + res[i] = fmaf(x, y[i], z[i]); + return res; + } + else throw std::exception {"Different sizes!"}; +} + int main(int argc, char* argv[]) { try @@ -107,7 +120,7 @@ int main(int argc, char* argv[]) saxpy(cl::EnqueueArgs{ queue, cl::NDRange{ length } }, a, buf_x, buf_y); // Concurrently calculate reference dataset - arr_y = a * arr_x + arr_y; + arr_y = fma(a, arr_x, arr_y);//a * arr_x + arr_y; // Fetch results cl::copy(queue, buf_y, std::begin(arr_x), std::end(arr_x)); diff --git a/samples/core/saxpy/saxpy.cl b/samples/core/saxpy/saxpy.cl index fc15c334..c5780872 100644 --- a/samples/core/saxpy/saxpy.cl +++ b/samples/core/saxpy/saxpy.cl @@ -4,5 +4,5 @@ __kernel void saxpy(float a, { int gid = get_global_id(0); - y[gid] = a * x[gid] + y[gid]; + y[gid] = fma(a, x[gid], y[gid]); } From bd026bfa970fbd4dea0fef6ebc6224a5063c57df Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 8 Nov 2021 13:42:32 +0200 Subject: [PATCH 087/203] std::logic_error instead of std::exception --- samples/core/saxpy/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 22b8a551..534888f9 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -58,7 +58,7 @@ std::valarray fma(float x, std::valarray y, std::valarray z res[i] = fmaf(x, y[i], z[i]); return res; } - else throw std::exception {"Different sizes!"}; + else throw std::logic_error("Different sizes!"); } int main(int argc, char* argv[]) From e87fd9b5f0db8cddbaf6fadc2dd1562691684a24 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 8 Nov 2021 14:30:28 +0200 Subject: [PATCH 088/203] C error handling, DeviceTriplet --- lib/include/CL/SDK/Context.h | 4 +- lib/include/CL/SDK/Options.h | 6 +- lib/include/CL/Utils/Error.h | 231 +++++++++++++++++++++++++++++++++++ samples/core/saxpy/main.c | 6 +- 4 files changed, 239 insertions(+), 8 deletions(-) diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index e7c5697f..4f03ef00 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -4,12 +4,12 @@ #include #include -cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) { return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); } -cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_Triplet * triplet, cl_int * error) +cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) { return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); } diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 348cefe6..ead12853 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -5,7 +5,7 @@ #include -struct cl_sdk_options_Triplet +struct cl_sdk_options_DeviceTriplet { int plat_index; int dev_index; @@ -20,11 +20,11 @@ struct cl_sdk_options_Diagnostic struct cl_sdk_options_SingleDevice { - struct cl_sdk_options_Triplet triplet; + struct cl_sdk_options_DeviceTriplet triplet; }; struct cl_sdk_options_MultiDevice { - struct cl_sdk_options_Triplet * triplets; + struct cl_sdk_options_DeviceTriplet * triplets; size_t number; }; diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index 7235254c..f941af57 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -1,10 +1,25 @@ #pragma once +#include + #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 // RET = function returns error code // PAR = functions sets error code in the paremeter +#ifdef _DEBUG + +#define OCLERROR_RET(func, err, label) \ +do { err = func; if (err != CL_SUCCESS) { cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) + +#define OCLERROR_PAR(func, err, label) \ +do { func; if (err != CL_SUCCESS) { cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) + +#define MEM_CHECK(func, err, label) \ +do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) + +#else + #define OCLERROR_RET(func, err, label) \ do { err = func; if (err != CL_SUCCESS) goto label; } while (0) @@ -13,3 +28,219 @@ do { func; if (err != CL_SUCCESS) goto label; } while (0) #define MEM_CHECK(func, err, label) \ do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) + +#endif + +void cl_util_print_error(cl_int error) +{ + switch (error) { + case CL_SUCCESS: + break; + case CL_DEVICE_NOT_FOUND: + printf("\nError: CL_DEVICE_NOT_FOUND\n"); + break; + case CL_DEVICE_NOT_AVAILABLE: + printf("\nError: CL_DEVICE_NOT_AVAILABLE\n"); + break; + case CL_COMPILER_NOT_AVAILABLE: + printf("\nError: CL_COMPILER_NOT_AVAILABLE\n"); + break; + case CL_MEM_OBJECT_ALLOCATION_FAILURE: + printf("\nError: CL_MEM_OBJECT_ALLOCATION_FAILURE\n"); + break; + case CL_OUT_OF_RESOURCES: + printf("\nError: CL_OUT_OF_RESOURCES\n"); + break; + case CL_OUT_OF_HOST_MEMORY: + printf("\nError: CL_OUT_OF_HOST_MEMORY\n"); + break; + case CL_PROFILING_INFO_NOT_AVAILABLE: + printf("\nError: CL_PROFILING_INFO_NOT_AVAILABLE\n"); + break; + case CL_MEM_COPY_OVERLAP: + printf("\nError: CL_MEM_COPY_OVERLAP\n"); + break; + case CL_IMAGE_FORMAT_MISMATCH: + printf("\nError: CL_IMAGE_FORMAT_MISMATCH\n"); + break; + case CL_IMAGE_FORMAT_NOT_SUPPORTED: + printf("\nError: CL_IMAGE_FORMAT_NOT_SUPPORTED\n"); + break; + case CL_BUILD_PROGRAM_FAILURE: + printf("\nError: CL_BUILD_PROGRAM_FAILURE\n"); + break; + case CL_MAP_FAILURE: + printf("\nError: CL_MAP_FAILURE\n"); + break; +#ifdef CL_VERSION_1_1 + case CL_MISALIGNED_SUB_BUFFER_OFFSET: + printf("\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); + break; + case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: + printf("\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); + break; +#endif +#ifdef CL_VERSION_1_2 + case CL_COMPILE_PROGRAM_FAILURE: + printf("\nError: CL_COMPILE_PROGRAM_FAILURE\n"); + break; + case CL_LINKER_NOT_AVAILABLE: + printf("\nError: CL_LINKER_NOT_AVAILABLE\n"); + break; + case CL_LINK_PROGRAM_FAILURE: + printf("\nError: CL_LINK_PROGRAM_FAILURE\n"); + break; + case CL_DEVICE_PARTITION_FAILED: + printf("\nError: CL_DEVICE_PARTITION_FAILED\n"); + break; + case CL_KERNEL_ARG_INFO_NOT_AVAILABLE: + printf("\nError: CL_KERNEL_ARG_INFO_NOT_AVAILABLE\n"); + break; +#endif + case CL_INVALID_VALUE: + printf("\nError: CL_INVALID_VALUE\n"); + break; + case CL_INVALID_DEVICE_TYPE: + printf("\nError: CL_INVALID_DEVICE_TYPE\n"); + break; + case CL_INVALID_PLATFORM: + printf("\nError: CL_INVALID_PLATFORM\n"); + break; + case CL_INVALID_DEVICE: + printf("\nError: CL_INVALID_DEVICE\n"); + break; + case CL_INVALID_CONTEXT: + printf("\nError: CL_INVALID_CONTEXT\n"); + break; + case CL_INVALID_QUEUE_PROPERTIES: + printf("\nError: CL_INVALID_QUEUE_PROPERTIES\n"); + break; + case CL_INVALID_COMMAND_QUEUE: + printf("\nError: CL_INVALID_COMMAND_QUEUE\n"); + break; + case CL_INVALID_HOST_PTR: + printf("\nError: CL_INVALID_HOST_PTR\n"); + break; + case CL_INVALID_MEM_OBJECT: + printf("\nError: CL_INVALID_MEM_OBJECT\n"); + break; + case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: + printf("\nError: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR\n"); + break; + case CL_INVALID_IMAGE_SIZE: + printf("\nError: CL_INVALID_IMAGE_SIZE\n"); + break; + case CL_INVALID_SAMPLER: + printf("\nError: CL_INVALID_SAMPLER\n"); + break; + case CL_INVALID_BINARY: + printf("\nError: CL_INVALID_BINARY\n"); + break; + case CL_INVALID_BUILD_OPTIONS: + printf("\nError: CL_INVALID_BUILD_OPTIONS\n"); + break; + case CL_INVALID_PROGRAM: + printf("\nError: CL_INVALID_PROGRAM\n"); + break; + case CL_INVALID_PROGRAM_EXECUTABLE: + printf("\nError: CL_INVALID_PROGRAM_EXECUTABLE\n"); + break; + case CL_INVALID_KERNEL_NAME: + printf("\nError: CL_INVALID_KERNEL_NAME\n"); + break; + case CL_INVALID_KERNEL_DEFINITION: + printf("\nError: CL_INVALID_KERNEL_DEFINITION\n"); + break; + case CL_INVALID_KERNEL: + printf("\nError: CL_INVALID_KERNEL\n"); + break; + case CL_INVALID_ARG_INDEX: + printf("\nError: CL_INVALID_ARG_INDEX\n"); + break; + case CL_INVALID_ARG_VALUE: + printf("\nError: CL_INVALID_ARG_VALUE\n"); + break; + case CL_INVALID_ARG_SIZE: + printf("\nError: CL_INVALID_ARG_SIZE\n"); + break; + case CL_INVALID_KERNEL_ARGS: + printf("\nError: CL_INVALID_KERNEL_ARGS\n"); + break; + case CL_INVALID_WORK_DIMENSION: + printf("\nError: CL_INVALID_WORK_DIMENSION\n"); + break; + case CL_INVALID_WORK_GROUP_SIZE: + printf("\nError: CL_INVALID_WORK_GROUP_SIZE\n"); + break; + case CL_INVALID_WORK_ITEM_SIZE: + printf("\nError: CL_INVALID_WORK_ITEM_SIZE\n"); + break; + case CL_INVALID_GLOBAL_OFFSET: + printf("\nError: CL_INVALID_GLOBAL_OFFSET\n"); + break; + case CL_INVALID_EVENT_WAIT_LIST: + printf("\nError: CL_INVALID_EVENT_WAIT_LIST\n"); + break; + case CL_INVALID_EVENT: + printf("\nError: CL_INVALID_EVENT\n"); + break; + case CL_INVALID_OPERATION: + printf("\nError: CL_INVALID_OPERATION\n"); + break; + case CL_INVALID_GL_OBJECT: + printf("\nError: CL_INVALID_GL_OBJECT\n"); + break; + case CL_INVALID_BUFFER_SIZE: + printf("\nError: CL_INVALID_BUFFER_SIZE\n"); + break; + case CL_INVALID_MIP_LEVEL: + printf("\nError: CL_INVALID_MIP_LEVEL\n"); + break; + case CL_INVALID_GLOBAL_WORK_SIZE: + printf("\nError: CL_INVALID_GLOBAL_WORK_SIZE\n"); + break; +#ifdef CL_VERSION_1_1 + case CL_INVALID_PROPERTY: + printf("\nError: CL_INVALID_PROPERTY\n"); + break; +#endif +#ifdef CL_VERSION_1_2 + case CL_INVALID_IMAGE_DESCRIPTOR: + printf("\nError: CL_INVALID_IMAGE_DESCRIPTOR\n"); + break; + case CL_INVALID_COMPILER_OPTIONS: + printf("\nError: CL_INVALID_COMPILER_OPTIONS\n"); + break; + case CL_INVALID_LINKER_OPTIONS: + printf("\nError: CL_INVALID_LINKER_OPTIONS\n"); + break; + case CL_INVALID_DEVICE_PARTITION_COUNT: + printf("\nError: CL_INVALID_DEVICE_PARTITION_COUNT\n"); + break; +#endif +#ifdef CL_VERSION_2_0 + case CL_INVALID_PIPE_SIZE: + printf("\nError: CL_INVALID_PIPE_SIZE\n"); + break; + case CL_INVALID_DEVICE_QUEUE: + printf("\nError: CL_INVALID_DEVICE_QUEUE\n"); + break; +#endif +#ifdef CL_VERSION_2_2 + case CL_INVALID_SPEC_ID: + printf("\nError: CL_INVALID_SPEC_ID\n"); + break; + case CL_MAX_SIZE_RESTRICTION_EXCEEDED: + printf("\nError: CL_MAX_SIZE_RESTRICTION_EXCEEDED\n"); + break; +#endif + // SDK errors + case CL_UTIL_INDEX_OUT_OF_RANGE: + printf("\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); + break; + // end of SDK errors + default: + printf("\nUnknown error: %i\n", error); + break; + } +} \ No newline at end of file diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 0598180e..6ca4a273 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -95,7 +95,7 @@ cl_int parse_options(int argc, if ((identifier == 'h') || (state == ParseError)) { printf("Usage: saxpy [OPTION]...\n"); - //printf("Demonstrates the cargs library.\n\n"); + printf("Demonstrates typical OpenCL application layout.\n\n"); cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } @@ -122,7 +122,7 @@ int main(int argc, char* argv[]) // Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct options_Saxpy saxpy_opts = { .length = 1234 }; + struct options_Saxpy saxpy_opts = { .length = 1048576 }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), error, end); @@ -216,6 +216,6 @@ prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); ker: free(kernel); que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); cont: OCLERROR_RET(clReleaseContext(context), end_error, end); -end: if (error) printf("Error: %i", error); +end: if (error) cl_util_print_error(error); return error; } From f442d3ad48463181423f967e7076d8aa120526ad Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 9 Nov 2021 15:30:21 +0200 Subject: [PATCH 089/203] Reduce C working --- lib/include/CL/SDK/Random.h | 32 ++- lib/include/CL/Utils/Context.h | 27 +++ lib/src/Utils/Context.c | 97 +++++++- samples/core/reduce/main.c | 416 ++++++++++++++++++++++++++++++++- samples/core/saxpy/main.c | 43 +--- 5 files changed, 576 insertions(+), 39 deletions(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 269733b6..c22e273f 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -2,6 +2,7 @@ // STL includes #include +#include #include /* @@ -71,14 +72,39 @@ void pcg32_srandom_r(pcg32_random_t * rng, uint64_t initstate, uint64_t initseq) pcg32_random_r(rng); } -// fills array with random floats in [0, 1) -void cl_sdk_fill_with_random(pcg32_random_t * rng, cl_float * arr, size_t len) +// fill array with random floats in [0, 1) +void cl_sdk_fill_with_random_floats(pcg32_random_t * rng, cl_float * arr, size_t len) { for (; len > 0; arr[--len] = pcg32_random_float(rng)); } -void cl_sdk_fill_with_random_range(pcg32_random_t * rng, cl_float * arr, size_t len, cl_float low, cl_float hi) +void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, cl_float * arr, size_t len, cl_float low, cl_float hi) { cl_float diff = hi - low; for (; len > 0; arr[--len] = pcg32_random_float(rng) * diff + low); } + +// return uniformly distributed numbers in the range [low, hi] +// uses rejection sampling from uniform bit distribution +void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, cl_int * arr, size_t len, cl_int low, cl_int hi) +{ + const uint32_t + diff = hi - low, + bits = log2(diff), + mask = (1u << (bits + 1)) - 1; + while (len > 0) { + --len; + uint32_t res; + bool bad = true; + do { + res = pcg32_random_r(rng); + for (int i = 0; i < 32 / bits; ++i, res >>= bits) + if ((res & mask) <= diff) { + res &= mask; + bad = false; + break; + } + } while (bad); + arr[len] = low + (cl_int)res; + } +} diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index 62c17c44..844e6c2c 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -1,10 +1,37 @@ #pragma once +#include + UTILS_EXPORT cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); UTILS_EXPORT cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); +UTILS_EXPORT +void cl_util_print_device_info(cl_device_id device); + +UTILS_EXPORT +char * cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error); +UTILS_EXPORT +char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, cl_int * error); + // build program and show log if build is not successful UTILS_EXPORT cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt); + +UTILS_EXPORT +cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error); + +#define GET_CURRENT_TIMER(time) \ +struct timespec time; \ +timespec_get(&time, TIME_UTC); {} + +#define TIMER_DIFFERENCE(dt, time1, time2) \ +{ \ + dt = (time2.tv_sec - time1.tv_sec) * 1000000000 \ + + (time2.tv_nsec - time1.tv_nsec); \ +} + +#define START_TIMER GET_CURRENT_TIMER(start_timer1) +#define STOP_TIMER(dt) GET_CURRENT_TIMER(stop_timer2) \ +TIMER_DIFFERENCE(dt, start_timer1, stop_timer2) diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index b6fba6a8..75fd49b6 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -78,6 +78,90 @@ plat: free(platforms); end: return result; } +UTILS_EXPORT +void cl_util_print_device_info(cl_device_id device) +{ + cl_int error = CL_SUCCESS; + char * name = NULL; + + cl_platform_id platform; + OCLERROR_PAR(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, nam); + + // CL_PLATFORM_VENDOR is not supported by NVIDIA CUDA platform + //error = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n); + OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VENDOR, &error), error, ven); + printf("Selected platform by %s\n", name); + +ven: free(name); + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_NAME, &error), error, ocl); + printf("Selected device: %s\n", name); + +ocl: free(name); + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_OPENCL_C_VERSION, &error), error, nam); + printf("%s\n\n", name); + +nam: free(name); +} + +UTILS_EXPORT +char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, cl_int * error) +{ + char * name = NULL; + size_t n = 0; + + switch (info) { + case CL_PLATFORM_PROFILE: + case CL_PLATFORM_VERSION: + case CL_PLATFORM_NAME: + case CL_PLATFORM_VENDOR: + case CL_PLATFORM_EXTENSIONS: + OCLERROR_RET(clGetPlatformInfo(platform, info, 0, NULL, &n), *error, err); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), *error, err); + OCLERROR_RET(clGetPlatformInfo(platform, info, sizeof(char) * n, name, NULL), *error, err); + name[n] = '\0'; + return name; + } + +err: free(name); + return NULL; +} + +UTILS_EXPORT +char * cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error) +{ + char * name = NULL; + size_t n = 0; + + switch (info) { + case CL_DEVICE_EXTENSIONS: + case CL_DEVICE_NAME: + case CL_DEVICE_VENDOR: + case CL_DEVICE_PROFILE: + case CL_DEVICE_VERSION: +#ifdef CL_VERSION_1_1 + case CL_DEVICE_OPENCL_C_VERSION: +#endif +#ifdef CL_VERSION_1_2 + case CL_DEVICE_BUILT_IN_KERNELS: +#endif +#ifdef CL_VERSION_2_1 + case CL_DEVICE_IL_VERSION: +#endif +#ifdef CL_VERSION_3_0 + case CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED: +#endif + case CL_DRIVER_VERSION: + OCLERROR_RET(clGetDeviceInfo(device, info, 0, NULL, &n), *error, err); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), *error, err); + OCLERROR_RET(clGetDeviceInfo(device, info, sizeof(char) * n, name, NULL), *error, err); + name[n] = '\0'; + return name; + } + +err: free(name); + return NULL; +} + // build program and show log if build is not successful UTILS_EXPORT cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt) { @@ -90,9 +174,20 @@ cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * if ((program_log = (char *)malloc((log_size + 1) * sizeof(char)))) { clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); program_log[log_size] = '\0'; - printf("Build log is:\n\n%s\n\n", program_log); + printf("Build log is:\n\n%s\nOptions:\n%s\n\n", program_log, opt); free(program_log); } } return err; } + +UTILS_EXPORT +cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) +{ + cl_ulong start_time = 0, end_time = 0; + OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); + OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); + return end_time - start_time; + +end: return 0; +} \ No newline at end of file diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 19236684..3e682b01 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -1 +1,415 @@ -int main() {return 0;} +/* + * Copyright (c) 2021 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK +#include +#include +#include + +// STL includes +//#include +//#include +#include +//#include + +// Sample-specific option +struct options_Reduce { + size_t length; + const char * op; +}; + +cag_option ReduceOptions[] = { + {.identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of input"}, + + {.identifier = 'o', + .access_letters = "o", + .access_name = "op", + .value_name = "(min|sum)", + .description = "Operation to perform"} +}; + +ParseState parse_ReduceOptions(const char identifier, cag_option_context * cag_context, struct options_Reduce * opts) +{ + const char * value; + switch (identifier) { + case 'l': + if ((value = cag_option_get_value(cag_context))) { + opts->length = strtoul(value, NULL, 0); + return ParsedOK; + } + else return ParseError; + case 'o': + if ((value = cag_option_get_value(cag_context)) + && (!strcmp(value, "min") || !strcmp(value, "sum"))) + { + opts->op = value; + return ParsedOK; + } + else return ParseError; + } + return NotParsed; +} + +cl_int parse_options(int argc, + char* argv[], + struct cl_sdk_options_Diagnostic * diag_opts, + struct cl_sdk_options_SingleDevice * dev_opts, + struct options_Reduce * reduce_opts) +{ + cl_int error = CL_SUCCESS; + struct cag_option * opts = NULL, * tmp = NULL; + size_t n = 0; + + /* Prepare all options array. */ + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + opts = tmp; + MEM_CHECK(tmp = add_CLI_options(opts, &n, ReduceOptions, CAG_ARRAY_SIZE(ReduceOptions)), error, end); + opts = tmp; + + char identifier; + cag_option_context cag_context; + + /* Prepare the context and iterate over all options. */ + cag_option_prepare(&cag_context, opts, n, argc, argv); + while (cag_option_fetch(&cag_context)) { + ParseState state = NotParsed; + identifier = cag_option_get(&cag_context); + + state = parse_DiagnosticOptions(identifier, diag_opts); + if (state == ParsedOK) continue; + state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); + if (state == ParsedOK) continue; + state = parse_ReduceOptions(identifier, &cag_context, reduce_opts); + if (state == ParsedOK) continue; + + if ((identifier == 'h') || (state == ParseError)) { + printf("Usage: reduce [OPTION]...\n"); + printf("Demonstrates how to query various OpenCL extensions applicable \ + in the context of a reduction algorithm and to touch up kernel sources \ + at runtime to select the best kernel implementation for the task.\n\n"); + cag_option_print(opts, n, stdout); + exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); + } + } + +end: free(opts); + return error; +} + +bool check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +{ + bool res = false; + char * name = NULL; + + OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); + + if (strstr(name, "OpenCL 2.")) { + free(name); + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_OPENCL_C_VERSION, error), *error, nam); + res = strstr(name, "OpenCL C 2."); + } + else if (strstr(name, "OpenCL 3.")) { + cl_bool coll_func; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT, + sizeof(cl_bool), &coll_func, NULL), *error, nam); + + if (coll_func) { + cl_name_version * c_features = NULL; + size_t n = 0; + + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, + sizeof(size_t), NULL, &n), *error, nam); + MEM_CHECK(c_features = (cl_name_version *)malloc(sizeof(char) * n), *error, nam); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, + sizeof(char) * n, name, NULL), *error, cf); + + const size_t feat = sizeof(char) * n / sizeof(cl_name_version); + for (size_t i = 0; i < feat; ++i) + if (strstr(c_features[i].name, "__opencl_c_work_group_collective_functions")) { + res = true; + break; + } +cf: free(c_features); + } + } +nam: free(name); + return res; +} + +bool check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +{ + bool res = false; + char * name = NULL; + + OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); + + if (strstr(name, "OpenCL 3.")) { + free(name); + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, error), *error, nam); + res = strstr(name, "cl_khr_subgroups"); + } +nam: free(name); + return res; +} + +cl_int min_op(cl_int x, cl_int y) +{ + return x < y ? x : y; +} + +cl_int plus_op(cl_int x, cl_int y) +{ + return x + y; +} + +cl_int accumulate(cl_int * arr, size_t len, cl_int zero_elem, cl_int (*host_op)(cl_int, cl_int)) +{ + cl_int res = zero_elem; + for (size_t i = len; i > 0; res = (*host_op)(res, arr[--i])); + return res; +} + +// Every pass reduces input length by 'factor'. +// If actual size is not divisible by factor, +// an extra output element is produced using some +// number of zero_elem inputs. +cl_ulong new_size(const cl_ulong actual, const cl_ulong factor) +{ + return actual / factor + (actual % factor == 0 ? 0 : 1); +}; +// NOTE: because one work-group produces one output +// new_size == number_of_work_groups +size_t global(const size_t actual, const cl_ulong factor, const size_t wgs) +{ + return new_size(actual, factor) * wgs; +}; + +// Random number generator state +pcg32_random_t rng; + +int main(int argc, char* argv[]) +{ + cl_int error = CL_SUCCESS, + end_error = CL_SUCCESS; + cl_platform_id platform; + cl_device_id device; + cl_context context; + cl_command_queue queue; + + // Parse command-line options + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct options_Reduce reduce_opts = { .length = 1048576, .op = "min" }; + + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &reduce_opts), error, end); + + // Create runtime objects based on user preference or default + OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, + dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); + OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); + //OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); + + if (!diag_opts.quiet) { + cl_util_print_device_info(device); + } + + // Query device and runtime capabilities + bool may_use_work_group_reduce; + OCLERROR_PAR(may_use_work_group_reduce = check_use_work_group_reduce(platform, device, &error), error, que); + + bool may_use_sub_group_reduce; + OCLERROR_PAR(may_use_sub_group_reduce = check_use_sub_group_reduce(platform, device, &error), error, que); + + if (diag_opts.verbose) { + if (may_use_work_group_reduce) + printf("Device supports work-group reduction intrinsics.\n"); + else if (may_use_sub_group_reduce) + printf("Device supports sub-group reduction intrinsics.\n"); + else + printf("Device doesn't support any reduction intrinsics.\n"); + } + + // User defined input + char kernel_op[1023] = ""; + strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? + "int op(int lhs, int rhs) { return min(lhs, rhs); }\n": + "int op(int lhs, int rhs) { return lhs + rhs; }\n"); + if (may_use_work_group_reduce) + strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? + "int work_group_reduce_op(int val) { return work_group_reduce_min(val); }\n": + "int work_group_reduce_op(int val) { return work_group_reduce_add(val); }\n"); + else if (may_use_sub_group_reduce) + strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? + "int sub_group_reduce_op(int val) { return sub_group_reduce_min(val); }\n": + "int sub_group_reduce_op(int val) { return sub_group_reduce_add(val); }\n"); + cl_int (*host_op)(cl_int, cl_int) = + !strcmp(reduce_opts.op, "min") ? &min_op : &plus_op; + cl_int zero_elem = + !strcmp(reduce_opts.op, "min") ? CL_INT_MAX : 0; + + // Compile kernel + const char * kernel_location = "./reduce.cl"; + char * kernel = NULL, * tmp = NULL; + size_t program_size = 0; + cl_program program = NULL; + + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); + // Note append of definitions + program_size += 1 + strlen(kernel_op); + MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); + strcat(tmp, kernel_op); + + kernel = tmp; + //printf("%s", kernel); + + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); + kernel_op[0] = '\0'; + if (may_use_work_group_reduce) + strcat(kernel_op, "-D USE_WORK_GROUP_REDUCE -cl-std=CL2.0 "); + else if (may_use_sub_group_reduce) + strcat(kernel_op, "-D USE_SUB_GROUP_REDUCE -cl-std=CL3.0 "); + + OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); + + cl_kernel reduce; + OCLERROR_PAR(reduce = clCreateKernel(program, "reduce", &error), error, prg); + + // Query maximum supported WGS of kernel on device based on private mem (register) constraints + size_t wgs, psm; + OCLERROR_RET(clGetKernelWorkGroupInfo(reduce, device, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs, NULL), error, red); + OCLERROR_RET(clGetKernelWorkGroupInfo(reduce, device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm, NULL), error, red); + + // Further constrain (reduce) WGS based on shared mem size on device + cl_ulong loc_mem; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, red); + while (loc_mem < wgs * 2 * sizeof(cl_int)) + wgs -= psm; + + if (wgs == 0) { + printf("Not enough local memory to serve a single sub-group.\n"); + error = CL_OUT_OF_RESOURCES; + goto red; + } + + cl_ulong factor = wgs * 2; + + // Initialize host-side storage + const size_t length = reduce_opts.length; + + pcg32_srandom_r(&rng, 11111, -2222); + cl_int * arr; + MEM_CHECK(arr = (cl_int *)malloc(sizeof(cl_int) * length), error, red); + + if (diag_opts.verbose) + printf("Generating %zu random numbers for reduction.\n", length); + cl_sdk_fill_with_random_ints_range(&rng, arr, length, -1000, 1000); + + // Initialize device-side storage + cl_mem front, back; + OCLERROR_PAR(front = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, sizeof(cl_int) * length, arr, &error), error, harr); + OCLERROR_PAR(back = clCreateBuffer(context, CL_MEM_READ_WRITE, sizeof(cl_int) * new_size(length, factor), NULL, &error), error, buff); + + // Launch kernels + if (diag_opts.verbose) + { printf("Executing on device... "); fflush(stdout); } + + cl_ulong curr = length, steps = 0; + while ( curr > 1 ) + { + curr = new_size(curr, factor); + ++steps; + } + cl_event * passes = NULL, * pass = NULL; + MEM_CHECK(passes = (cl_event *)malloc(sizeof(cl_event) * steps), error, bufb); + + OCLERROR_RET(clSetKernelArg(reduce, 2, factor * sizeof(cl_int), NULL), error, pas); + OCLERROR_RET(clSetKernelArg(reduce, 4, sizeof(cl_int), &zero_elem), error, pas); + + GET_CURRENT_TIMER(dev_start) + curr = length; + pass = passes; + while ( curr > 1 ) + { + OCLERROR_RET(clSetKernelArg(reduce, 0, sizeof(cl_mem), &front), error, pas); + OCLERROR_RET(clSetKernelArg(reduce, 1, sizeof(cl_mem), &back), error, pas); + OCLERROR_RET(clSetKernelArg(reduce, 3, sizeof(cl_ulong), &curr), error, pas); + + size_t gl = global(curr, factor, wgs); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, reduce, 1, NULL, &gl, &wgs, 0, NULL, pass), error, pas); + + curr = new_size(curr, factor); + ++pass; + if (curr > 1) { + cl_mem tmp = front; + front = back; + back = tmp; + } + } + + OCLERROR_RET(clWaitForEvents(steps, passes), error, pas); + + GET_CURRENT_TIMER(dev_end) + cl_ulong dev_time; + TIMER_DIFFERENCE(dev_time, dev_start, dev_end) + if (diag_opts.verbose) + printf("done.\n\n"); + + // calculate reference dataset + GET_CURRENT_TIMER(host_start) + cl_int seq_ref = accumulate(arr, length, zero_elem, host_op); + GET_CURRENT_TIMER(host_end) + cl_ulong host_time; + TIMER_DIFFERENCE(host_time, host_start, host_end) + + // Fetch results + cl_int dev_res; + OCLERROR_RET(clEnqueueReadBuffer(queue, back, CL_BLOCKING, 0, sizeof(cl_int), (void *)&dev_res, 0, NULL, NULL), error, pas); + + // Validate + if (dev_res != seq_ref) + fprintf(stderr, "Sequential reference: %i\nDevice result: %i\nValidation failed!\n\n", seq_ref, dev_res); + else + printf("Validation passed!\n\n"); + + if (!diag_opts.quiet) + { + printf("Total device execution as seen by host: %llu us.\n", (unsigned long long)(dev_time + 500) / 1000); + printf("Reduction steps as measured by device :\n"); + for (size_t i = 0; i < steps; ++i) + printf("\t%llu us.\n", (unsigned long long)(cl_util_get_event_duration(passes[i], + CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); + printf("Reference execution as seen by host: %llu us.", (unsigned long long)(host_time + 500) / 1000); + } + +pas: free(passes); +bufb: OCLERROR_RET(clReleaseMemObject(back), end_error, buff); +buff: OCLERROR_RET(clReleaseMemObject(front), end_error, harr); +harr: free(arr); +red: OCLERROR_RET(clReleaseKernel(reduce), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); +ker: free(kernel); +que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); +cont: OCLERROR_RET(clReleaseContext(context), end_error, end); +end: if (error) cl_util_print_error(error); + return error; +} diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 6ca4a273..d2ef2110 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -36,16 +36,6 @@ cag_option SaxpyOptions[] = { .description = "Length of input"} }; -pcg32_random_t rng; - -void parse_error(cag_option * opts, size_t const num_opts) -{ - printf("Usage: saxpy [OPTION]...\n"); - //printf("Demonstrates the cargs library.\n\n"); - cag_option_print(opts, num_opts, stdout); - exit(CL_INVALID_ARG_VALUE); -} - ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_context, struct options_Saxpy * opts) { const char * value; @@ -105,6 +95,9 @@ end: free(opts); return error; } +// Random number generator state +pcg32_random_t rng; + int main(int argc, char* argv[]) { cl_int error = CL_SUCCESS, @@ -120,7 +113,7 @@ int main(int argc, char* argv[]) cl_program program = NULL; // Parse command-line options - struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false }; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; struct options_Saxpy saxpy_opts = { .length = 1048576 }; @@ -135,25 +128,7 @@ int main(int argc, char* argv[]) OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); if (!diag_opts.quiet) { - char * name = NULL, * tmp = NULL; - size_t n = 0; - - // CL_PLATFORM_VENDOR is not supported by NVIDIA CUDA platform - //error = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n); - OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n), error, ven); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), error, ven); - OCLERROR_RET(clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(char) * n, name, NULL), error, ven); - name[n] = '\0'; - printf("Selected platform: %s\n", name); - -ven: OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(size_t), NULL, &n), error, nam); - MEM_CHECK(tmp = (char *)realloc(name, sizeof(char) * (n+1)), error, nam); - name = tmp; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(char) * n, name, NULL), error, nam); - name[n] = '\0'; - printf("Selected device: %s\n\n", name); - -nam: free(name); + cl_util_print_device_info(device); } // Compile kernel @@ -169,13 +144,13 @@ nam: free(name); const size_t length = saxpy_opts.length; pcg32_srandom_r(&rng, 111111, -222); - cl_float * arr_x, * arr_y, - a = pcg32_random_float(&rng); + cl_float * arr_x, * arr_y, a; MEM_CHECK(arr_x = (cl_float *)malloc(sizeof(cl_float) * length), error, sxp); MEM_CHECK(arr_y = (cl_float *)malloc(sizeof(cl_float) * length), error, arrx); - cl_sdk_fill_with_random_range(&rng, arr_x, length, -100, 100); - cl_sdk_fill_with_random_range(&rng, arr_y, length, -100, 100); + cl_sdk_fill_with_random_floats_range(&rng, &a, 1, -100, 100); + cl_sdk_fill_with_random_floats_range(&rng, arr_x, length, -100, 100); + cl_sdk_fill_with_random_floats_range(&rng, arr_y, length, -100, 100); // Initialize device-side storage cl_mem buf_x, buf_y; From d92c56b0c8f2880e880f36fac22a4b3f11ae0da6 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 9 Nov 2021 15:40:12 +0200 Subject: [PATCH 090/203] Uniform "OpenCL SDK includes" --- lib/include/CL/SDK/CLI.h | 2 +- lib/include/CL/SDK/CLI.hpp | 2 +- lib/include/CL/SDK/Context.h | 2 +- lib/include/CL/SDK/Context.hpp | 2 +- lib/include/CL/SDK/Random.h | 2 +- lib/include/CL/Utils/Context.hpp | 2 +- lib/include/CL/Utils/File.hpp | 2 +- lib/include/CL/Utils/Utils.h | 2 +- lib/include/CL/Utils/Utils.hpp | 2 +- lib/src/Utils/Context.c | 4 +--- lib/src/Utils/File.c | 2 +- lib/src/Utils/Utils.c | 2 +- samples/core/reduce/main.c | 2 +- samples/core/saxpy/main.c | 2 +- 14 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index c1f1072a..74274e6a 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include // cargs includes diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index 1c139648..50094c8f 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include // OpenCL Utils includes diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index 4f03ef00..14a6f8ed 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include #include diff --git a/lib/include/CL/SDK/Context.hpp b/lib/include/CL/SDK/Context.hpp index b027eed3..2da19083 100644 --- a/lib/include/CL/SDK/Context.hpp +++ b/lib/include/CL/SDK/Context.hpp @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include #include diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index c22e273f..54cb0251 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -85,7 +85,7 @@ void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, cl_float * arr, } // return uniformly distributed numbers in the range [low, hi] -// uses rejection sampling from uniform bit distribution +// use rejection sampling from uniform bit distribution void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, cl_int * arr, size_t len, cl_int low, cl_int hi) { const uint32_t diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp index fae1e170..a6bebd95 100644 --- a/lib/include/CL/Utils/Context.hpp +++ b/lib/include/CL/Utils/Context.hpp @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include "OpenCLUtilsCpp_Export.h" #include diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp index 76dd66ef..8c929efb 100644 --- a/lib/include/CL/Utils/File.hpp +++ b/lib/include/CL/Utils/File.hpp @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include // STL includes diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index 2cf77550..90502624 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include "OpenCLUtils_Export.h" #include diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp index c354b2c0..39fb9783 100644 --- a/lib/include/CL/Utils/Utils.hpp +++ b/lib/include/CL/Utils/Utils.hpp @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK +// OpenCL SDK includes #include #include #include diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 75fd49b6..15c93d94 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,4 +1,4 @@ -// OpenCL SDK +// OpenCL SDK includes #include #include #include @@ -87,8 +87,6 @@ void cl_util_print_device_info(cl_device_id device) cl_platform_id platform; OCLERROR_PAR(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, nam); - // CL_PLATFORM_VENDOR is not supported by NVIDIA CUDA platform - //error = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(size_t), NULL, &n); OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VENDOR, &error), error, ven); printf("Selected platform by %s\n", name); diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 0b818b84..29b97f47 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -1,4 +1,4 @@ -// OpenCL SDK +// OpenCL SDK includes #include // STL includes diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index ec8253db..db4b4dd2 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,4 +1,4 @@ -// OpenCL SDK +// OpenCL SDK includes #include #include "Context.c" diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 3e682b01..3b79875b 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -14,7 +14,7 @@ * limitations under the License. */ -// OpenCL SDK +// OpenCL SDK includes #include #include #include diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index d2ef2110..78538dd8 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -14,7 +14,7 @@ * limitations under the License. */ -// OpenCL SDK +// OpenCL SDK includes #include #include #include From 92a6cbfcce892e276b1c3635a246e330519853ce Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 10 Nov 2021 23:13:56 +0200 Subject: [PATCH 091/203] Image load/save, compilation options for reduce --- CMakeLists.txt | 4 +- lib/CMakeLists.txt | 1 + lib/include/CL/SDK/CLI.h | 12 +- lib/include/CL/SDK/Image.h | 17 + lib/include/CL/SDK/Image.hpp | 25 + lib/include/CL/SDK/Options.h | 1 + lib/include/CL/SDK/Options.hpp | 1 + lib/include/CL/SDK/Random.h | 12 +- lib/include/CL/SDK/Random.hpp | 2 + lib/include/CL/Utils/Context.h | 4 +- lib/include/CL/Utils/Context.hpp | 1 + lib/include/CL/Utils/Detail.hpp | 1 + lib/include/CL/Utils/Error.h | 140 +- lib/include/CL/Utils/Error.hpp | 11 +- lib/include/CL/Utils/Event.h | 14 + lib/include/CL/Utils/Event.hpp | 7 +- lib/include/CL/Utils/Utils.h | 5 +- lib/src/Utils/Context.c | 15 +- lib/src/Utils/Context.cpp | 1 + lib/src/Utils/File.c | 4 +- lib/src/Utils/Image.c | 70 + lib/src/Utils/Image.cpp | 85 + lib/src/Utils/Utils.c | 1 + lib/src/Utils/Utils.cpp | 4 + samples/CMakeLists.txt | 1 + samples/core/reduce/main.c | 38 +- samples/core/reduce/main.cpp | 13 +- samples/core/saxpy/main.c | 8 +- third_party/stb/CMakeLists.txt | 7 + third_party/stb/stb_image.h | 7897 +++++++++++++++++++++++++++++ third_party/stb/stb_image_write.h | 1724 +++++++ 31 files changed, 9997 insertions(+), 129 deletions(-) create mode 100644 lib/include/CL/SDK/Image.h create mode 100644 lib/include/CL/SDK/Image.hpp create mode 100644 lib/include/CL/Utils/Event.h create mode 100644 lib/src/Utils/Image.c create mode 100644 lib/src/Utils/Image.cpp create mode 100644 third_party/stb/CMakeLists.txt create mode 100644 third_party/stb/stb_image.h create mode 100644 third_party/stb/stb_image_write.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b59998e7..40dd1817 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,9 +41,11 @@ add_subdirectory(external/OpenCL-Headers) add_subdirectory(external/OpenCL-ICD-Loader) add_subdirectory(external/OpenCL-CLHPP) +add_subdirectory(third_party/cargs) +add_subdirectory(third_party/stb) + add_subdirectory(lib) add_subdirectory(samples) -add_subdirectory(third_party/cargs) include (GNUInstallDirs) set_target_properties(OpenCL OpenCLUtils OpenCLUtilsCpp diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 43816b7c..86879dd3 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -40,6 +40,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) OpenCL::OpenCL PRIVATE cargs + stb ) target_compile_definitions(${UTIL_LIB_TARGET} PRIVATE diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index 74274e6a..58c6f010 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -3,14 +3,14 @@ // OpenCL SDK includes #include -// cargs includes -#include - // STL includes #include // realloc #include // bool #include // memcpy, strcmp, strtoul +// cargs includes +#include + typedef struct cag_option cag_option; cag_option * add_CLI_options(cag_option * opts, size_t * const num_opts, cag_option * add_opts, size_t add_num_opts) @@ -107,11 +107,11 @@ else return ParseError; switch (identifier) { case 'p': - IF_ERR(dev_opts->triplet.plat_index = strtoul(value, NULL, 0)); + IF_ERR(dev_opts->triplet.plat_index = strtoul(value, NULL, 0)) case 'd': - IF_ERR(dev_opts->triplet.dev_index = strtoul(value, NULL, 0)); + IF_ERR(dev_opts->triplet.dev_index = strtoul(value, NULL, 0)) case 't': - IF_ERR(dev_opts->triplet.dev_type = get_dev_type(value)); + IF_ERR(dev_opts->triplet.dev_type = get_dev_type(value)) } return NotParsed; diff --git a/lib/include/CL/SDK/Image.h b/lib/include/CL/SDK/Image.h new file mode 100644 index 00000000..1482d8e3 --- /dev/null +++ b/lib/include/CL/SDK/Image.h @@ -0,0 +1,17 @@ +#pragma once + +// OpenCL SDK includes +#include "OpenCLUtils_Export.h" + +typedef struct cl_sdk_image +{ + int width, height, pixel_size; + unsigned char* pixels; +} +cl_sdk_image; + +UTILS_EXPORT +cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err); + +UTILS_EXPORT +void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err); diff --git a/lib/include/CL/SDK/Image.hpp b/lib/include/CL/SDK/Image.hpp new file mode 100644 index 00000000..993d2399 --- /dev/null +++ b/lib/include/CL/SDK/Image.hpp @@ -0,0 +1,25 @@ +#pragma once + +// OpenCL SDK includes +#include "OpenCLUtilsCpp_Export.h" + +// OpenCL includes +#include + +namespace cl +{ +namespace sdk +{ + struct Image + { + int width, height, pixel_size; + std::vector pixels; + }; + + UTILSCPP_EXPORT + Image read_image(const char* file_name, cl_int* err); + + UTILSCPP_EXPORT + void write_image(const char* file_name, const Image& image, cl_int* err); +} +} diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index ead12853..6cc17513 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -3,6 +3,7 @@ // STL includes #include +// OpenCL includes #include struct cl_sdk_options_DeviceTriplet diff --git a/lib/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp index 16b0e12f..6f1b82e2 100644 --- a/lib/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -1,5 +1,6 @@ #pragma once +// OpenCL includes #include namespace cl diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 54cb0251..7bf12c53 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -1,9 +1,9 @@ #pragma once // STL includes -#include -#include -#include +#include // uint64_t, uint32_t +#include // bool +#include // ldexpf /* * PCG Random Number Generation for C. @@ -50,12 +50,12 @@ uint32_t pcg32_random_r(pcg32_random_t * rng) cl_float pcg32_random_float(pcg32_random_t * rng) { - return ldexp(pcg32_random_r(rng), -32); + return ldexpf(pcg32_random_r(rng), -32); } cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) { - return ldexp(pcg32_random_r(rng), -32) * (hi - low) + low; + return ldexpf(pcg32_random_r(rng), -32) * (hi - low) + low; } // pcg32_srandom(initstate, initseq) @@ -90,7 +90,7 @@ void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, cl_int * arr, size { const uint32_t diff = hi - low, - bits = log2(diff), + bits = diff ? log2(diff) : 0, mask = (1u << (bits + 1)) - 1; while (len > 0) { --len; diff --git a/lib/include/CL/SDK/Random.hpp b/lib/include/CL/SDK/Random.hpp index fb509d7a..c61da48d 100644 --- a/lib/include/CL/SDK/Random.hpp +++ b/lib/include/CL/SDK/Random.hpp @@ -1,7 +1,9 @@ #pragma once +// OpenCL SDK includes #include // cl::util::detail::for_each_arg +// STL includes #include // std::generate_n namespace cl diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index 844e6c2c..f5f1fa88 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -1,5 +1,6 @@ #pragma once +// STL includes #include UTILS_EXPORT @@ -19,9 +20,6 @@ char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, UTILS_EXPORT cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt); -UTILS_EXPORT -cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error); - #define GET_CURRENT_TIMER(time) \ struct timespec time; \ timespec_get(&time, TIME_UTC); {} diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp index a6bebd95..3f797428 100644 --- a/lib/include/CL/Utils/Context.hpp +++ b/lib/include/CL/Utils/Context.hpp @@ -5,6 +5,7 @@ #include +// OpenCL includes #include namespace cl diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index 4ac5c026..d14716c0 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -1,5 +1,6 @@ #pragma once +// STL includes #include // std::forward, std::integer_sequence #include // std::tuple, std::get #include // std::initializer_list diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index f941af57..c72e80dd 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -1,6 +1,10 @@ #pragma once -#include +// STL includes +#include // fprintf + +// OpenCL includes +#include #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 @@ -10,13 +14,13 @@ #ifdef _DEBUG #define OCLERROR_RET(func, err, label) \ -do { err = func; if (err != CL_SUCCESS) { cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +do { err = func; if (err != CL_SUCCESS) { cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) #define OCLERROR_PAR(func, err, label) \ -do { func; if (err != CL_SUCCESS) { cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +do { func; if (err != CL_SUCCESS) { cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) #define MEM_CHECK(func, err, label) \ -do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; cl_util_print_error(err); printf( "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) #else @@ -37,210 +41,210 @@ void cl_util_print_error(cl_int error) case CL_SUCCESS: break; case CL_DEVICE_NOT_FOUND: - printf("\nError: CL_DEVICE_NOT_FOUND\n"); + fprintf(stderr, "\nError: CL_DEVICE_NOT_FOUND\n"); break; case CL_DEVICE_NOT_AVAILABLE: - printf("\nError: CL_DEVICE_NOT_AVAILABLE\n"); + fprintf(stderr, "\nError: CL_DEVICE_NOT_AVAILABLE\n"); break; case CL_COMPILER_NOT_AVAILABLE: - printf("\nError: CL_COMPILER_NOT_AVAILABLE\n"); + fprintf(stderr, "\nError: CL_COMPILER_NOT_AVAILABLE\n"); break; case CL_MEM_OBJECT_ALLOCATION_FAILURE: - printf("\nError: CL_MEM_OBJECT_ALLOCATION_FAILURE\n"); + fprintf(stderr, "\nError: CL_MEM_OBJECT_ALLOCATION_FAILURE\n"); break; case CL_OUT_OF_RESOURCES: - printf("\nError: CL_OUT_OF_RESOURCES\n"); + fprintf(stderr, "\nError: CL_OUT_OF_RESOURCES\n"); break; case CL_OUT_OF_HOST_MEMORY: - printf("\nError: CL_OUT_OF_HOST_MEMORY\n"); + fprintf(stderr, "\nError: CL_OUT_OF_HOST_MEMORY\n"); break; case CL_PROFILING_INFO_NOT_AVAILABLE: - printf("\nError: CL_PROFILING_INFO_NOT_AVAILABLE\n"); + fprintf(stderr, "\nError: CL_PROFILING_INFO_NOT_AVAILABLE\n"); break; case CL_MEM_COPY_OVERLAP: - printf("\nError: CL_MEM_COPY_OVERLAP\n"); + fprintf(stderr, "\nError: CL_MEM_COPY_OVERLAP\n"); break; case CL_IMAGE_FORMAT_MISMATCH: - printf("\nError: CL_IMAGE_FORMAT_MISMATCH\n"); + fprintf(stderr, "\nError: CL_IMAGE_FORMAT_MISMATCH\n"); break; case CL_IMAGE_FORMAT_NOT_SUPPORTED: - printf("\nError: CL_IMAGE_FORMAT_NOT_SUPPORTED\n"); + fprintf(stderr, "\nError: CL_IMAGE_FORMAT_NOT_SUPPORTED\n"); break; case CL_BUILD_PROGRAM_FAILURE: - printf("\nError: CL_BUILD_PROGRAM_FAILURE\n"); + fprintf(stderr, "\nError: CL_BUILD_PROGRAM_FAILURE\n"); break; case CL_MAP_FAILURE: - printf("\nError: CL_MAP_FAILURE\n"); + fprintf(stderr, "\nError: CL_MAP_FAILURE\n"); break; #ifdef CL_VERSION_1_1 case CL_MISALIGNED_SUB_BUFFER_OFFSET: - printf("\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); + fprintf(stderr, "\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); break; case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: - printf("\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); + fprintf(stderr, "\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); break; #endif #ifdef CL_VERSION_1_2 case CL_COMPILE_PROGRAM_FAILURE: - printf("\nError: CL_COMPILE_PROGRAM_FAILURE\n"); + fprintf(stderr, "\nError: CL_COMPILE_PROGRAM_FAILURE\n"); break; case CL_LINKER_NOT_AVAILABLE: - printf("\nError: CL_LINKER_NOT_AVAILABLE\n"); + fprintf(stderr, "\nError: CL_LINKER_NOT_AVAILABLE\n"); break; case CL_LINK_PROGRAM_FAILURE: - printf("\nError: CL_LINK_PROGRAM_FAILURE\n"); + fprintf(stderr, "\nError: CL_LINK_PROGRAM_FAILURE\n"); break; case CL_DEVICE_PARTITION_FAILED: - printf("\nError: CL_DEVICE_PARTITION_FAILED\n"); + fprintf(stderr, "\nError: CL_DEVICE_PARTITION_FAILED\n"); break; case CL_KERNEL_ARG_INFO_NOT_AVAILABLE: - printf("\nError: CL_KERNEL_ARG_INFO_NOT_AVAILABLE\n"); + fprintf(stderr, "\nError: CL_KERNEL_ARG_INFO_NOT_AVAILABLE\n"); break; #endif case CL_INVALID_VALUE: - printf("\nError: CL_INVALID_VALUE\n"); + fprintf(stderr, "\nError: CL_INVALID_VALUE\n"); break; case CL_INVALID_DEVICE_TYPE: - printf("\nError: CL_INVALID_DEVICE_TYPE\n"); + fprintf(stderr, "\nError: CL_INVALID_DEVICE_TYPE\n"); break; case CL_INVALID_PLATFORM: - printf("\nError: CL_INVALID_PLATFORM\n"); + fprintf(stderr, "\nError: CL_INVALID_PLATFORM\n"); break; case CL_INVALID_DEVICE: - printf("\nError: CL_INVALID_DEVICE\n"); + fprintf(stderr, "\nError: CL_INVALID_DEVICE\n"); break; case CL_INVALID_CONTEXT: - printf("\nError: CL_INVALID_CONTEXT\n"); + fprintf(stderr, "\nError: CL_INVALID_CONTEXT\n"); break; case CL_INVALID_QUEUE_PROPERTIES: - printf("\nError: CL_INVALID_QUEUE_PROPERTIES\n"); + fprintf(stderr, "\nError: CL_INVALID_QUEUE_PROPERTIES\n"); break; case CL_INVALID_COMMAND_QUEUE: - printf("\nError: CL_INVALID_COMMAND_QUEUE\n"); + fprintf(stderr, "\nError: CL_INVALID_COMMAND_QUEUE\n"); break; case CL_INVALID_HOST_PTR: - printf("\nError: CL_INVALID_HOST_PTR\n"); + fprintf(stderr, "\nError: CL_INVALID_HOST_PTR\n"); break; case CL_INVALID_MEM_OBJECT: - printf("\nError: CL_INVALID_MEM_OBJECT\n"); + fprintf(stderr, "\nError: CL_INVALID_MEM_OBJECT\n"); break; case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: - printf("\nError: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR\n"); + fprintf(stderr, "\nError: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR\n"); break; case CL_INVALID_IMAGE_SIZE: - printf("\nError: CL_INVALID_IMAGE_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_IMAGE_SIZE\n"); break; case CL_INVALID_SAMPLER: - printf("\nError: CL_INVALID_SAMPLER\n"); + fprintf(stderr, "\nError: CL_INVALID_SAMPLER\n"); break; case CL_INVALID_BINARY: - printf("\nError: CL_INVALID_BINARY\n"); + fprintf(stderr, "\nError: CL_INVALID_BINARY\n"); break; case CL_INVALID_BUILD_OPTIONS: - printf("\nError: CL_INVALID_BUILD_OPTIONS\n"); + fprintf(stderr, "\nError: CL_INVALID_BUILD_OPTIONS\n"); break; case CL_INVALID_PROGRAM: - printf("\nError: CL_INVALID_PROGRAM\n"); + fprintf(stderr, "\nError: CL_INVALID_PROGRAM\n"); break; case CL_INVALID_PROGRAM_EXECUTABLE: - printf("\nError: CL_INVALID_PROGRAM_EXECUTABLE\n"); + fprintf(stderr, "\nError: CL_INVALID_PROGRAM_EXECUTABLE\n"); break; case CL_INVALID_KERNEL_NAME: - printf("\nError: CL_INVALID_KERNEL_NAME\n"); + fprintf(stderr, "\nError: CL_INVALID_KERNEL_NAME\n"); break; case CL_INVALID_KERNEL_DEFINITION: - printf("\nError: CL_INVALID_KERNEL_DEFINITION\n"); + fprintf(stderr, "\nError: CL_INVALID_KERNEL_DEFINITION\n"); break; case CL_INVALID_KERNEL: - printf("\nError: CL_INVALID_KERNEL\n"); + fprintf(stderr, "\nError: CL_INVALID_KERNEL\n"); break; case CL_INVALID_ARG_INDEX: - printf("\nError: CL_INVALID_ARG_INDEX\n"); + fprintf(stderr, "\nError: CL_INVALID_ARG_INDEX\n"); break; case CL_INVALID_ARG_VALUE: - printf("\nError: CL_INVALID_ARG_VALUE\n"); + fprintf(stderr, "\nError: CL_INVALID_ARG_VALUE\n"); break; case CL_INVALID_ARG_SIZE: - printf("\nError: CL_INVALID_ARG_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_ARG_SIZE\n"); break; case CL_INVALID_KERNEL_ARGS: - printf("\nError: CL_INVALID_KERNEL_ARGS\n"); + fprintf(stderr, "\nError: CL_INVALID_KERNEL_ARGS\n"); break; case CL_INVALID_WORK_DIMENSION: - printf("\nError: CL_INVALID_WORK_DIMENSION\n"); + fprintf(stderr, "\nError: CL_INVALID_WORK_DIMENSION\n"); break; case CL_INVALID_WORK_GROUP_SIZE: - printf("\nError: CL_INVALID_WORK_GROUP_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_WORK_GROUP_SIZE\n"); break; case CL_INVALID_WORK_ITEM_SIZE: - printf("\nError: CL_INVALID_WORK_ITEM_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_WORK_ITEM_SIZE\n"); break; case CL_INVALID_GLOBAL_OFFSET: - printf("\nError: CL_INVALID_GLOBAL_OFFSET\n"); + fprintf(stderr, "\nError: CL_INVALID_GLOBAL_OFFSET\n"); break; case CL_INVALID_EVENT_WAIT_LIST: - printf("\nError: CL_INVALID_EVENT_WAIT_LIST\n"); + fprintf(stderr, "\nError: CL_INVALID_EVENT_WAIT_LIST\n"); break; case CL_INVALID_EVENT: - printf("\nError: CL_INVALID_EVENT\n"); + fprintf(stderr, "\nError: CL_INVALID_EVENT\n"); break; case CL_INVALID_OPERATION: - printf("\nError: CL_INVALID_OPERATION\n"); + fprintf(stderr, "\nError: CL_INVALID_OPERATION\n"); break; case CL_INVALID_GL_OBJECT: - printf("\nError: CL_INVALID_GL_OBJECT\n"); + fprintf(stderr, "\nError: CL_INVALID_GL_OBJECT\n"); break; case CL_INVALID_BUFFER_SIZE: - printf("\nError: CL_INVALID_BUFFER_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_BUFFER_SIZE\n"); break; case CL_INVALID_MIP_LEVEL: - printf("\nError: CL_INVALID_MIP_LEVEL\n"); + fprintf(stderr, "\nError: CL_INVALID_MIP_LEVEL\n"); break; case CL_INVALID_GLOBAL_WORK_SIZE: - printf("\nError: CL_INVALID_GLOBAL_WORK_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_GLOBAL_WORK_SIZE\n"); break; #ifdef CL_VERSION_1_1 case CL_INVALID_PROPERTY: - printf("\nError: CL_INVALID_PROPERTY\n"); + fprintf(stderr, "\nError: CL_INVALID_PROPERTY\n"); break; #endif #ifdef CL_VERSION_1_2 case CL_INVALID_IMAGE_DESCRIPTOR: - printf("\nError: CL_INVALID_IMAGE_DESCRIPTOR\n"); + fprintf(stderr, "\nError: CL_INVALID_IMAGE_DESCRIPTOR\n"); break; case CL_INVALID_COMPILER_OPTIONS: - printf("\nError: CL_INVALID_COMPILER_OPTIONS\n"); + fprintf(stderr, "\nError: CL_INVALID_COMPILER_OPTIONS\n"); break; case CL_INVALID_LINKER_OPTIONS: - printf("\nError: CL_INVALID_LINKER_OPTIONS\n"); + fprintf(stderr, "\nError: CL_INVALID_LINKER_OPTIONS\n"); break; case CL_INVALID_DEVICE_PARTITION_COUNT: - printf("\nError: CL_INVALID_DEVICE_PARTITION_COUNT\n"); + fprintf(stderr, "\nError: CL_INVALID_DEVICE_PARTITION_COUNT\n"); break; #endif #ifdef CL_VERSION_2_0 case CL_INVALID_PIPE_SIZE: - printf("\nError: CL_INVALID_PIPE_SIZE\n"); + fprintf(stderr, "\nError: CL_INVALID_PIPE_SIZE\n"); break; case CL_INVALID_DEVICE_QUEUE: - printf("\nError: CL_INVALID_DEVICE_QUEUE\n"); + fprintf(stderr, "\nError: CL_INVALID_DEVICE_QUEUE\n"); break; #endif #ifdef CL_VERSION_2_2 case CL_INVALID_SPEC_ID: - printf("\nError: CL_INVALID_SPEC_ID\n"); + fprintf(stderr, "\nError: CL_INVALID_SPEC_ID\n"); break; case CL_MAX_SIZE_RESTRICTION_EXCEEDED: - printf("\nError: CL_MAX_SIZE_RESTRICTION_EXCEEDED\n"); + fprintf(stderr, "\nError: CL_MAX_SIZE_RESTRICTION_EXCEEDED\n"); break; #endif // SDK errors case CL_UTIL_INDEX_OUT_OF_RANGE: - printf("\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); + fprintf(stderr, "\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); break; // end of SDK errors default: - printf("\nUnknown error: %i\n", error); + fprintf(stderr, "\nUnknown error: %i\n", error); break; } } \ No newline at end of file diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index 4e66fb13..03361dd9 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -1,5 +1,9 @@ #pragma once +// STL includes +//#include + +// OpenCL includes #include #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 @@ -9,8 +13,8 @@ namespace cl namespace util { #if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * + /*! \brief Exception class + * * This may be thrown by SDK utility functions when CL_HPP_ENABLE_EXCEPTIONS is defined. */ class Error : public std::exception @@ -21,7 +25,7 @@ namespace util public: /*! \brief Create a new SDK error exception for a given error code * and corresponding message. - * + * * \param err error code value. * * \param errStr a descriptive string that must remain in scope until @@ -71,6 +75,7 @@ void cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr throw cl::util::Error{err, errStr}; #else (void)errStr; // suppress unused variable warning + //std::cerr << errStr << std::endl; if (errPtr != nullptr) *errPtr = err; #endif diff --git a/lib/include/CL/Utils/Event.h b/lib/include/CL/Utils/Event.h new file mode 100644 index 00000000..22996bb3 --- /dev/null +++ b/lib/include/CL/Utils/Event.h @@ -0,0 +1,14 @@ +#pragma once + +// OpenCL includes +#include + +cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) +{ + cl_ulong start_time = 0, end_time = 0; + OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); + OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); + return end_time - start_time; + +end: return 0; +} \ No newline at end of file diff --git a/lib/include/CL/Utils/Event.hpp b/lib/include/CL/Utils/Event.hpp index 63c52525..bcfa8788 100644 --- a/lib/include/CL/Utils/Event.hpp +++ b/lib/include/CL/Utils/Event.hpp @@ -1,11 +1,14 @@ #pragma once +// OpenCL SDK includes #include "OpenCLUtilsCpp_Export.h" -#include - +// STL includes #include +// OpenCL includes +#include + namespace cl { namespace util diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index 90502624..0e1f601d 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -3,8 +3,9 @@ // OpenCL SDK includes #include "OpenCLUtils_Export.h" -#include - #include #include #include + +// OpenCL includes +#include diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 15c93d94..eba570e4 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -4,8 +4,8 @@ #include // STL includes -#include // malloc, free -#include // printf +#include // malloc, free +#include // printf static cl_uint MAXOCLPLAT = 65535; static cl_uint MAXOCLDEV = 65535; @@ -178,14 +178,3 @@ cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * } return err; } - -UTILS_EXPORT -cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) -{ - cl_ulong start_time = 0, end_time = 0; - OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); - OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); - return end_time - start_time; - -end: return 0; -} \ No newline at end of file diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index 9b446005..96519818 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -1,3 +1,4 @@ +// OpenCL SDK includes #include cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 29b97f47..32b061ba 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -5,8 +5,8 @@ #include // realloc, free #include // fopen, ferror, fread, fclose -// reads all the text file contents securely in ANSI C89 -// returns pointer to C-string with file contents +// read all the text file contents securely in ANSI C89 +// return pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT diff --git a/lib/src/Utils/Image.c b/lib/src/Utils/Image.c new file mode 100644 index 00000000..e6c25571 --- /dev/null +++ b/lib/src/Utils/Image.c @@ -0,0 +1,70 @@ +// OpenCL SDK includes +#include +#include + +// STL includes +#include // fprintf +#include // tolower + +// stb includes +#define STB_IMAGE_IMPLEMENTATION +#include +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include + +// OpenCL includes +#include + +UTILS_EXPORT +cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err) +{ + cl_sdk_image im = { .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL }; + im.pixels = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); + + if (im.width && im.height && im.pixel_size && im.pixels) + *err = CL_SUCCESS; + else { + fprintf(stderr, "File read error!"); + *err = CL_INVALID_ARG_VALUE; + } + + return im; +} + +static char * to_lowercase(const char * s, char * d, size_t n) +{ + while(n > 0) { + --n; + d[n] = tolower(s[n]); + } + return d; +} + +UTILS_EXPORT +void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err) +{ + *err = CL_SUCCESS; + char fext[5] = {0, 0, 0, 0, 0}; + +#define IF_EXT(ext, func, err_text) \ + if (!strcmp(to_lowercase(file_name + strlen(file_name) - 4, fext, 4), ext)) { \ + if (!func) { \ + fprintf(stderr, err_text); \ + *err = CL_INVALID_ARG_VALUE; \ + } \ + } \ + + IF_EXT(".png", stbi_write_png(file_name, im->width, im->height, im->pixel_size, im->pixels, 0), + "Not possible to write PNG file!") + else IF_EXT(".bmp", stbi_write_bmp(file_name, im->width, im->height, im->pixel_size, im->pixels), + "Not possible to write BMP file!") + else IF_EXT(".jpg", stbi_write_jpg(file_name, im->width, im->height, im->pixel_size, im->pixels, 80), + "Not possible to write JPG file!") + else { + fprintf(stderr, "Unknown file extension!"); + *err = CL_IMAGE_FORMAT_NOT_SUPPORTED; + } + +#undef IF_EXT + return; +} diff --git a/lib/src/Utils/Image.cpp b/lib/src/Utils/Image.cpp new file mode 100644 index 00000000..041f9fd9 --- /dev/null +++ b/lib/src/Utils/Image.cpp @@ -0,0 +1,85 @@ +// OpenCL SDK includes +#include + +// stb includes +#define STB_IMAGE_IMPLEMENTATION +#include +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include + +// STL includes +#include // std::vector +#include + +#if __cplusplus < 201703L +#include +#else +#include +#endif + +// OpenCL includes +#include + +namespace cl +{ +namespace sdk +{ + UTILSCPP_EXPORT + Image read_image(const char* file_name, cl_int * err) + { + Image im; + unsigned char *data = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); + im.pixels.insert(im.pixels.end(), data, data + im.width * im.height * im.pixel_size); + + if (im.width && im.height && im.pixel_size && im.pixels.size() == im.width * im.height * im.pixel_size) + *err = CL_SUCCESS; + else + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "File read error!"); + + return im; + } + + UTILSCPP_EXPORT + void write_image(const char * file_name, const Image& image, cl_int * err) + { + *err = CL_SUCCESS; + +#if __cplusplus >= 201703L + std::filesystem::path fn(file_name); + std::string extension = fn.extension().string(); +#else + const char * extpos = strrchr(file_name, '.'); + if (extpos == nullptr) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "No file extension!"); + std::string extension(extpos); +#endif + + // solution by Timmmm https://stackoverflow.com/questions/11635 + auto str_compare = [](const string& a, const string& b) + { + return std::equal(a.begin(), a.end(), + b.begin(), b.end(), + [](char a, char b) { + return tolower(a) == tolower(b); + }); + }; + + if (str_compare(extension, ".png")) { + if (!stbi_write_png(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 0)) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write PNG file!"); + } + else if (str_compare(extension, ".bmp")) { + if (!stbi_write_bmp(file_name, image.width, image.height, image.pixel_size, image.pixels.data())) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write BMP file!"); + } + else if (str_compare(extension, ".jpg")) { + if (!stbi_write_jpg(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 80)) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write JPG file!"); + } + else + cl::util::detail::errHandler(CL_IMAGE_FORMAT_NOT_SUPPORTED, err, "Unknown file extension!"); + + return; + } +} +} diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index db4b4dd2..df9efad0 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -3,3 +3,4 @@ #include "Context.c" #include "File.c" +#include "Image.c" diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index 452b0924..18433cd6 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1 +1,5 @@ +// OpenCL SDK includes +#include + #include "Context.cpp" +#include "Image.cpp" \ No newline at end of file diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 43c5bb63..305d5186 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -59,6 +59,7 @@ macro(add_sample) ) target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE + stb cargs OpenCL::Headers OpenCL::HeadersCpp diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 3b79875b..707d40df 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -18,12 +18,12 @@ #include #include #include +#include // STL includes -//#include -//#include +#include +#include #include -//#include // Sample-specific option struct options_Reduce { @@ -114,9 +114,9 @@ end: free(opts); return error; } -bool check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) { - bool res = false; + int res = 0; char * name = NULL; OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); @@ -124,7 +124,8 @@ bool check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, c if (strstr(name, "OpenCL 2.")) { free(name); OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_OPENCL_C_VERSION, error), *error, nam); - res = strstr(name, "OpenCL C 2."); + if (strstr(name, "OpenCL C 2.")) + res = 2; } else if (strstr(name, "OpenCL 3.")) { cl_bool coll_func; @@ -144,7 +145,7 @@ bool check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, c const size_t feat = sizeof(char) * n / sizeof(cl_name_version); for (size_t i = 0; i < feat; ++i) if (strstr(c_features[i].name, "__opencl_c_work_group_collective_functions")) { - res = true; + res = 3; break; } cf: free(c_features); @@ -154,9 +155,9 @@ nam: free(name); return res; } -bool check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +int check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) { - bool res = false; + int res = 0; char * name = NULL; OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); @@ -164,7 +165,8 @@ bool check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl if (strstr(name, "OpenCL 3.")) { free(name); OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, error), *error, nam); - res = strstr(name, "cl_khr_subgroups"); + if (strstr(name, "cl_khr_subgroups")) + res = 3; } nam: free(name); return res; @@ -225,19 +227,23 @@ int main(int argc, char* argv[]) OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_command_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, cont); +#else OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); - //OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); +#endif if (!diag_opts.quiet) { cl_util_print_device_info(device); } // Query device and runtime capabilities - bool may_use_work_group_reduce; + int may_use_work_group_reduce; OCLERROR_PAR(may_use_work_group_reduce = check_use_work_group_reduce(platform, device, &error), error, que); - bool may_use_sub_group_reduce; + int may_use_sub_group_reduce; OCLERROR_PAR(may_use_sub_group_reduce = check_use_sub_group_reduce(platform, device, &error), error, que); if (diag_opts.verbose) { @@ -284,8 +290,10 @@ int main(int argc, char* argv[]) OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); kernel_op[0] = '\0'; - if (may_use_work_group_reduce) + if (may_use_work_group_reduce == 2) strcat(kernel_op, "-D USE_WORK_GROUP_REDUCE -cl-std=CL2.0 "); + else if (may_use_work_group_reduce == 3) + strcat(kernel_op, "-D USE_WORK_GROUP_REDUCE -cl-std=CL3.0 "); else if (may_use_sub_group_reduce) strcat(kernel_op, "-D USE_SUB_GROUP_REDUCE -cl-std=CL3.0 "); diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index 086715ec..e787d0f2 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -90,7 +90,7 @@ int main(int argc, char* argv[]) { if (platform.getInfo().find("OpenCL 2.") != cl::string::npos) { - return device.getInfo().find("OpenCL C 2.") != cl::string::npos; + return device.getInfo().find("OpenCL C 2.") != cl::string::npos ? 2 : 0; } else if (platform.getInfo().find("OpenCL 3.") != cl::string::npos) { @@ -100,13 +100,13 @@ int main(int argc, char* argv[]) return cl::string{name_ver.name} == "__opencl_c_work_group_collective_functions"; }; return device.getInfo() && - std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend(); + std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend() ? 3 : 0; } - else return false; + else return 0; }(); auto may_use_sub_group_reduce = platform.getInfo().find("OpenCL 3.") != cl::string::npos && - device.getInfo().find("cl_khr_subgroups") != cl::string::npos; + device.getInfo().find("cl_khr_subgroups") != cl::string::npos ? 3 : 0; if (diag_opts.verbose) { if (may_use_work_group_reduce) @@ -145,8 +145,9 @@ int main(int argc, char* argv[]) cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, std::istreambuf_iterator{} }.append(kernel_op) }; // Note append cl::string compiler_options = - cl::string{may_use_work_group_reduce ? "-D USE_WORK_GROUP_REDUCE " : "" } + - cl::string{may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " : "" }; + (may_use_work_group_reduce ? + cl::string{"-D USE_WORK_GROUP_REDUCE -cl-std=CL"} + std::to_string(may_use_work_group_reduce) + ".0 " : + (may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE -cl-std=CL3.0 " : " " )); program.build( device, compiler_options.c_str() ); auto reduce = cl::KernelFunctor(program, "reduce"); diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 78538dd8..ebc6f683 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -124,8 +124,12 @@ int main(int argc, char* argv[]) dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); OCLERROR_PAR(queue = clCreateCommandQueue(context, device, 0, &error), error, cont); - //OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, que); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); +#else + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); +#endif if (!diag_opts.quiet) { cl_util_print_device_info(device); diff --git a/third_party/stb/CMakeLists.txt b/third_party/stb/CMakeLists.txt new file mode 100644 index 00000000..8821c43c --- /dev/null +++ b/third_party/stb/CMakeLists.txt @@ -0,0 +1,7 @@ +# stb +file(GLOB_RECURSE _HDRS "*.h") + +add_library(stb INTERFACE) +set_target_properties(stb PROPERTIES LINKER_LANGUAGE C) + +target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/third_party/stb/stb_image.h b/third_party/stb/stb_image.h new file mode 100644 index 00000000..d60371b9 --- /dev/null +++ b/third_party/stb/stb_image.h @@ -0,0 +1,7897 @@ +/* stb_image - v2.27 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data) +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS + #if defined(__cplusplus) && __cplusplus >= 201103L + #define STBI_THREAD_LOCAL thread_local + #elif defined(__GNUC__) && __GNUC__ < 5 + #define STBI_THREAD_LOCAL __thread + #elif defined(_MSC_VER) + #define STBI_THREAD_LOCAL __declspec(thread) + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) + #define STBI_THREAD_LOCAL _Thread_local + #endif + + #ifndef STBI_THREAD_LOCAL + #if defined(__GNUC__) + #define STBI_THREAD_LOCAL __thread + #endif + #endif +#endif + +#ifdef _MSC_VER +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE*) user, n, SEEK_CUR); + ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user) || ferror((FILE *) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL +STBI_THREAD_LOCAL +#endif +const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ + ? stbi__vertically_flip_on_load_local \ + : stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #else + STBI_NOTUSED(bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + } + if (n < comp) { + for (i=0; i < x*y; ++i) { + output[i*comp + n] = data[i*comp + n]/255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) + for (j=0; j < count[i]; ++j) + h->size[k++] = (stbi_uc) (i+1); + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + + sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i=0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + // handle 0s at the end of image data from IP Kamera 9060 + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + if (x == 255) { + j->marker = stbi__get8(j->s); + break; + } + } + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + } else { + if (!stbi__process_marker(j, m)) return 0; + } + m = stbi__get_marker(j); + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__errpuc("outofmem", "Out of memory"); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__err("outofmem", "Out of memory"); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + if (!j) return stbi__err("outofmem", "Out of memory"); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (unsigned int) (z->zout - z->zout_start); + limit = old_limit = (unsigned) (z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) { + c = stbi__zreceive(a,3)+3; + } else if (c == 18) { + c = stbi__zreceive(a,7)+11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) return stbi__err("outofmem", "Out of memory"); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi__unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ + ? stbi__unpremultiply_on_load_local \ + : stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ + ? stbi__de_iphone_flag_local \ + : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + if (scan == STBI__SCAN_header) return 1; + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + // if SCAN_header, have to scan to see if we have a tRNS + } + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) { n += 16; z >>= 16; } + if (z >= 0x00100) { n += 8; z >>= 8; } + if (z >= 0x00010) { n += 4; z >>= 4; } + if (z >= 0x00004) { n += 2; z >>= 2; } + if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + if (info.offset != s->callback_already_read + (s->img_buffer - s->img_buffer_original)) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i]; p1[i] = p2[i]; p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + if (!result) return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!g) return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *) stbi__malloc(4 * pcount); + g->background = (stbi_uc *) stbi__malloc(4 * pcount); + g->history = (stbi_uc *) stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) STBI_FREE(out); + if (delays && *delays) STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + delays_size = layers * sizeof(int); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind( s ); + return 0; + } + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8)); + + if (req_comp && req_comp != s->img_n) { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) return 1; + #endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/third_party/stb/stb_image_write.h b/third_party/stb/stb_image_write.h new file mode 100644 index 00000000..e4b32ed1 --- /dev/null +++ b/third_party/stb/stb_image_write.h @@ -0,0 +1,1724 @@ +/* stb_image_write - v1.16 - public domain - http://nothings.org/stb + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio or a callback. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +UNICODE: + + If compiling for Windows and you wish to use Unicode filenames, compile + with + #define STBIW_WINDOWS_UTF8 + and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert + Windows wchar_t filenames to utf8. + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + Andrew Kensler + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#include + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +STBIWDEF int stbi_write_tga_with_rle; +STBIWDEF int stbi_write_png_compression_level; +STBIWDEF int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); + +#ifdef STBIW_WINDOWS_UTF8 +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +static int stbi__flip_vertically_on_write = 0; + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; + unsigned char buffer[64]; + int buf_used; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) +#ifdef __cplusplus +#define STBIW_EXTERN extern "C" +#else +#define STBIW_EXTERN extern +#endif +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); + +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbiw__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = stbiw__fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write_flush(stbi__write_context *s) +{ + if (s->buf_used) { + s->func(s->context, &s->buffer, s->buf_used); + s->buf_used = 0; + } +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write1(stbi__write_context *s, unsigned char a) +{ + if ((size_t)s->buf_used + 1 > sizeof(s->buffer)) + stbiw__write_flush(s); + s->buffer[s->buf_used++] = a; +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + int n; + if ((size_t)s->buf_used + 3 > sizeof(s->buffer)) + stbiw__write_flush(s); + n = s->buf_used; + s->buf_used = n+3; + s->buffer[n+0] = a; + s->buffer[n+1] = b; + s->buffer[n+2] = c; +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + stbiw__write1(s, d[comp - 1]); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + stbiw__write1(s, d[0]); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + stbiw__write1(s, d[comp - 1]); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) { + j_end = -1; j = y-1; + } else { + j_end = y; j = 0; + } + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + stbiw__write_flush(s); + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + if (comp != 4) { + // write RGB bitmap + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header + } else { + // RGBA bitmaps need a v4 header + // use BI_BITFIELDS mode with 32bpp and alpha mask + // (straight BI_RGB with alpha mask doesn't work in most readers) + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0, + "11 4 22 4" "4 44 22 444444 4444 4 444 444 444 444", + 'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header + 108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header + } +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + stbiw__write1(s, header); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + stbiw__write1(s, header); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + stbiw__write_flush(s); + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +#ifndef STBI_WRITE_NO_STDIO + +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef __STDC_LIB_EXT1__ + len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (void *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) { best=d; bestloc=hlist[j]; } + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + // store uncompressed instead if compression was worse + if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) { + stbiw__sbn(out) = 2; // truncate to DEFLATE 32K window and FLEVEL = 1 + for (j = 0; j < data_len;) { + int blocklen = data_len - j; + if (blocklen > 32767) blocklen = 32767; + stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression + stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN + stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN + stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8)); + memcpy(out+stbiw__sbn(out), data+j, blocklen); + stbiw__sbn(out) += blocklen; + j += blocklen; + } + } + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } + s1 %= 65521; s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ +#ifdef STBIW_CRC32 + return STBIW_CRC32(buffer, len); +#else + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +#endif +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + + if (type==0) { + memcpy(line_buffer, z, width*n); + return; + } + + // first loop isn't optimized since it's just one pixel + for (i = 0; i < n; ++i) { + switch (type) { + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + switch (type) { + case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; + case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } +} + +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + + f = stbiw__fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 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 + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 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 + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k, subsample; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + subsample = quality <= 90 ? 1 : 0; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + const unsigned char *dataR = (const unsigned char *)data; + const unsigned char *dataG = dataR + ofsG; + const unsigned char *dataB = dataR + ofsB; + int x, y, pos; + if(subsample) { + for(y = 0; y < height; y += 16) { + for(x = 0; x < width; x += 16) { + float Y[256], U[256], V[256]; + for(row = y, pos = 0; row < y+16; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+16; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + + // subsample U,V + { + float subU[64], subV[64]; + int yy, xx; + for(yy = 0, pos = 0; yy < 8; ++yy) { + for(xx = 0; xx < 8; ++xx, ++pos) { + int j = yy*32+xx*2; + subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f; + subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f; + } + } + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + } else { + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float Y[64], U[64], V[64]; + for(row = y, pos = 0; row < y+8; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+8; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.16 (2021-07-11) + make Deflate code emit uncompressed blocks when it would otherwise expand + support writing BMPs with alpha channel + 1.15 (2020-07-13) unknown + 1.14 (2020-02-02) updated JPEG writer to downsample chroma channels + 1.13 + 1.12 + 1.11 (2019-08-11) + + 1.10 (2019-02-07) + support utf8 filenames in Windows; fix warnings and platform ifdefs + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ From e93626a45d3fd168c46b0eba120b63f7884ec947 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 11:20:28 +0200 Subject: [PATCH 092/203] Minimum CMake fix --- third_party/stb/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/stb/CMakeLists.txt b/third_party/stb/CMakeLists.txt index 8821c43c..ef884923 100644 --- a/third_party/stb/CMakeLists.txt +++ b/third_party/stb/CMakeLists.txt @@ -2,6 +2,5 @@ file(GLOB_RECURSE _HDRS "*.h") add_library(stb INTERFACE) -set_target_properties(stb PROPERTIES LINKER_LANGUAGE C) target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) From 9b315a66bdbf89a7362181ccd5883bfe95260a9d Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 11:26:19 +0200 Subject: [PATCH 093/203] Uuups --- lib/include/CL/Utils/Error.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index c72e80dd..2ef91939 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -4,7 +4,7 @@ #include // fprintf // OpenCL includes -#include +#include #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 From 631b53dbd1efbb179a0576ab02ca8a09495ef2aa Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 11:28:54 +0200 Subject: [PATCH 094/203] Another cl.h capitalizations --- lib/include/CL/Utils/Event.h | 2 +- lib/src/Utils/Image.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/include/CL/Utils/Event.h b/lib/include/CL/Utils/Event.h index 22996bb3..b872adff 100644 --- a/lib/include/CL/Utils/Event.h +++ b/lib/include/CL/Utils/Event.h @@ -1,7 +1,7 @@ #pragma once // OpenCL includes -#include +#include cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) { diff --git a/lib/src/Utils/Image.c b/lib/src/Utils/Image.c index e6c25571..b828e005 100644 --- a/lib/src/Utils/Image.c +++ b/lib/src/Utils/Image.c @@ -13,7 +13,7 @@ #include // OpenCL includes -#include +#include UTILS_EXPORT cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err) From 0050abe1cb265447bff5f3257b8b19215566fa79 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 11:34:45 +0200 Subject: [PATCH 095/203] Definition of size_t --- lib/include/CL/Utils/Detail.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index d14716c0..e595772f 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -1,6 +1,7 @@ #pragma once // STL includes +#include #include // std::forward, std::integer_sequence #include // std::tuple, std::get #include // std::initializer_list From 60549e8ae4849a03e5f970d52d509e00a2c349a6 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 12:13:52 +0200 Subject: [PATCH 096/203] Nicier loops (by Navid) --- lib/include/CL/SDK/Random.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 7bf12c53..26e4c497 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -73,27 +73,30 @@ void pcg32_srandom_r(pcg32_random_t * rng, uint64_t initstate, uint64_t initseq) } // fill array with random floats in [0, 1) -void cl_sdk_fill_with_random_floats(pcg32_random_t * rng, cl_float * arr, size_t len) +void cl_sdk_fill_with_random_floats(pcg32_random_t * rng, cl_float * arr, const size_t len) { - for (; len > 0; arr[--len] = pcg32_random_float(rng)); + for (size_t index = 0; index < len; ++index) + arr[index] = pcg32_random_float(rng); } -void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, cl_float * arr, size_t len, cl_float low, cl_float hi) +void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, + cl_float * arr, const size_t len, const cl_float low, const cl_float hi) { cl_float diff = hi - low; - for (; len > 0; arr[--len] = pcg32_random_float(rng) * diff + low); + for (size_t index = 0; index < len; ++index) + arr[index] = pcg32_random_float(rng) * diff + low; } // return uniformly distributed numbers in the range [low, hi] // use rejection sampling from uniform bit distribution -void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, cl_int * arr, size_t len, cl_int low, cl_int hi) +void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, + cl_int * arr, const size_t len, const cl_int low, const cl_int hi) { const uint32_t diff = hi - low, bits = diff ? log2(diff) : 0, mask = (1u << (bits + 1)) - 1; - while (len > 0) { - --len; + for (size_t index = 0; index < len; ++index) { uint32_t res; bool bad = true; do { @@ -105,6 +108,6 @@ void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, cl_int * arr, size break; } } while (bad); - arr[len] = low + (cl_int)res; + arr[index] = low + (cl_int)res; } } From 3374a038dce7678e95ca78dc8d437b4cd8f7ead8 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 11 Nov 2021 13:18:41 +0200 Subject: [PATCH 097/203] Fix bits overlapping in random ints range --- lib/include/CL/SDK/Random.h | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index 26e4c497..b17904a7 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -94,20 +94,24 @@ void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, { const uint32_t diff = hi - low, - bits = diff ? log2(diff) : 0, - mask = (1u << (bits + 1)) - 1; + bits_of_uint32_t = 32, + bits_needed = diff ? log2(diff) + 1 : 1, + mask = diff ? (1u << bits_needed) - 1 : 0; for (size_t index = 0; index < len; ++index) { uint32_t res; - bool bad = true; + bool reject = true; do { - res = pcg32_random_r(rng); - for (int i = 0; i < 32 / bits; ++i, res >>= bits) - if ((res & mask) <= diff) { - res &= mask; - bad = false; + res = pcg32_random_r(rng); // get 32 random bits + // and take enough of them to cover [0..diff] range + for (int i = 0; i < bits_of_uint32_t / bits_needed; ++i) + if ((res & mask) <= diff) { // no rejection + res &= mask; // take this number + reject = false; break; } - } while (bad); + else // take next piece of bits + res >>= bits_needed; + } while (reject); arr[index] = low + (cl_int)res; } } From 4b5eda1dd5c0ebaa85b7684a1305f14429004755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 13:37:05 +0100 Subject: [PATCH 098/203] Bump Header hash --- external/OpenCL-Headers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 302aaf8c..e38a6706 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 302aaf8cb0b162dccc6cfe079c48d5a1fb55dd2e +Subproject commit e38a6706586dba899610013f7e409a25d9f54cd5 From c5d6f2d5dbaa4bcd6e3b75e3d542a5a3954fd946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 13:37:16 +0100 Subject: [PATCH 099/203] ROCm exec stub --- .gitlab/stream-ci.yaml | 51 +++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 7a3295d4..df83f8f1 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -59,6 +59,39 @@ variables: - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - git submodule sync && git submodule update --init --recursive +.exec-matrix-minimum: + parallel: + matrix: + # NOTE: Old CMake versions will likely not use cutting-edge compilers + - C_COMPILER: gcc-7 + CXX_COMPILER: g++-7 + - C_COMPILER: gcc-8 + CXX_COMPILER: g++-8 + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + - C_COMPILER: clang-9 + CXX_COMPILER: clang++-9 + - C_COMPILER: clang-10 + CXX_COMPILER: clang++-10 + before_script: + - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH + +.exec-matrix-latest: + parallel: + matrix: + # NOTE: Cutting edge CMake versions will likely not use old compilers + - C_COMPILER: gcc-9 + CXX_COMPILER: g++-9 + - C_COMPILER: gcc-10 + CXX_COMPILER: g++-10 + - C_COMPILER: clang-11 + CXX_COMPILER: clang++-11 + - C_COMPILER: clang-12 + CXX_COMPILER: clang++-12 + - C_COMPILER: clang-13 + CXX_COMPILER: clang++-13 + before_script: + - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH ################# ## ## @@ -159,25 +192,27 @@ build:cmake-latest: ## ## ################ -test:cmake-minimum: - extends: .toolchain-matrix-minimum +test:cmake-minimum-rocm: + extends: .exec-matrix-minimum + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 + tags: + - rocm stage: test needs: - build:cmake-minimum - # Until a suitable runtime is found - allow_failure: true # NOTE: CTest has to be invoked from the build folder. script: - cd $BUILD_DIR - ctest --output-on-failure -test:cmake-latest: - extends: .toolchain-matrix-minimum +test:cmake-latest-rocm: + extends: .exec-matrix-latest + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 + tags: + - rocm stage: test needs: - build:cmake-latest - # Until a suitable runtime is found - allow_failure: true # NOTE: CTest has to be invoked from the build folder. script: - cd $BUILD_DIR From 2fa1b945ac86c5af71d0e4495ae101a85f647456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 16:50:22 +0100 Subject: [PATCH 100/203] Build using Vcpkg --- .gitlab/stream-ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index df83f8f1..bf29fe38 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -115,6 +115,7 @@ build:cmake-minimum: # Clone, configure, build, install OpenCL-SDK - cmake -G Ninja + -D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake -D CMAKE_C_COMPILER=$C_COMPILER -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_BUILD_TYPE=Release @@ -127,7 +128,6 @@ build:cmake-minimum: -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=ON -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR - -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B$BUILD_DIR -H$CI_PROJECT_DIR - cmake @@ -155,6 +155,7 @@ build:cmake-latest: # Clone, configure, build, install OpenCL-SDK - cmake -G "Ninja Multi-Config" + -D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake -D CMAKE_C_COMPILER=$C_COMPILER -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D BUILD_TESTING=ON @@ -165,7 +166,6 @@ build:cmake-latest: -D BUILD_TESTS=ON -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=ONINSTALL_DIR - -D TCLAP_INCLUDE_PATH=$DEPS_DIR/tclap-1.2.4/include -B $BUILD_DIR -S $CI_PROJECT_DIR - cmake From c0c15412d3101fbbebe256590b37355f0dd7a920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 4 Nov 2021 16:50:58 +0100 Subject: [PATCH 101/203] Simplify extension detection --- lib/include/CL/Utils/Detail.hpp | 4 ++-- lib/include/CL/Utils/Device.hpp | 20 +++++++++++++++++ lib/include/CL/Utils/Platform.hpp | 16 +++++++++++++ lib/include/CL/Utils/Utils.hpp | 2 ++ lib/src/Utils/Device.cpp | 25 +++++++++++++++++++++ lib/src/Utils/Platform.cpp | 11 +++++++++ lib/src/Utils/Utils.cpp | 5 ++--- samples/core/reduce/main.cpp | 37 +++++++++++++------------------ 8 files changed, 93 insertions(+), 27 deletions(-) create mode 100644 lib/include/CL/Utils/Device.hpp create mode 100644 lib/include/CL/Utils/Platform.hpp create mode 100644 lib/src/Utils/Device.cpp create mode 100644 lib/src/Utils/Platform.cpp diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index e595772f..ed7e155b 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -40,7 +40,7 @@ namespace impl namespace impl { // Borrowed from https://codereview.stackexchange.com/questions/193420/apply-a-function-to-each-element-of-a-tuple-map-a-tuple - template + template auto transform_tuple(Tuple&& t, F&& f, std::index_sequence) { return std::make_tuple( std::forward(f)(std::get(t))... @@ -57,7 +57,7 @@ namespace impl { // Borrowed from http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html // with modifications of Casey Carter at https://stackoverflow.com/a/51365112/1476661 - template + template auto apply(F&& f, Tuple&& args, std::index_sequence) -> decltype(std::forward(f)(std::get(std::forward(args))...)) { diff --git a/lib/include/CL/Utils/Device.hpp b/lib/include/CL/Utils/Device.hpp new file mode 100644 index 00000000..d9c7309d --- /dev/null +++ b/lib/include/CL/Utils/Device.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +namespace cl +{ +namespace util +{ + bool UTILSCPP_EXPORT opencl_c_version_contains(const cl::Device& device, const cl::string& version_fragment); + + bool UTILSCPP_EXPORT supports_extension(const cl::Device& device, const cl::string& extension); + +#ifdef CL_VERSION_3_0 + bool UTILSCPP_EXPORT supports_feature(const cl::Device& device, const cl::string& feature_name); +#endif +} +} diff --git a/lib/include/CL/Utils/Platform.hpp b/lib/include/CL/Utils/Platform.hpp new file mode 100644 index 00000000..cc549806 --- /dev/null +++ b/lib/include/CL/Utils/Platform.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +namespace cl +{ +namespace util +{ + bool UTILSCPP_EXPORT supports_extension(const cl::Platform& platform, const cl::string& extension); + + bool UTILSCPP_EXPORT platform_version_contains(const cl::Platform& platform, const cl::string& version_fragment); +} +} diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp index 39fb9783..4e8d900b 100644 --- a/lib/include/CL/Utils/Utils.hpp +++ b/lib/include/CL/Utils/Utils.hpp @@ -3,5 +3,7 @@ // OpenCL SDK includes #include #include +#include +#include #include #include diff --git a/lib/src/Utils/Device.cpp b/lib/src/Utils/Device.cpp new file mode 100644 index 00000000..7a3fe19c --- /dev/null +++ b/lib/src/Utils/Device.cpp @@ -0,0 +1,25 @@ +#include + +#include + +bool cl::util::opencl_c_version_contains(const cl::Device& device, const cl::string& version_fragment) +{ + return device.getInfo().find(version_fragment) != cl::string::npos; +} + +bool cl::util::supports_extension(const cl::Device& device, const cl::string& extension) +{ + return device.getInfo().find(extension) != cl::string::npos; +} + +#ifdef CL_VERSION_3_0 +bool cl::util::supports_feature(const cl::Device& device, const cl::string& feature_name) +{ + auto c_features = device.getInfo(); + auto feature_is_work_group_reduce = [&](const cl_name_version& name_ver) + { + return cl::string{name_ver.name} == feature_name; + }; + return std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend(); +} +#endif diff --git a/lib/src/Utils/Platform.cpp b/lib/src/Utils/Platform.cpp new file mode 100644 index 00000000..fc73ae98 --- /dev/null +++ b/lib/src/Utils/Platform.cpp @@ -0,0 +1,11 @@ +#include + +bool cl::util::supports_extension(const cl::Platform& platform, const cl::string& extension) +{ + return platform.getInfo().find(extension) != cl::string::npos; +} + +bool cl::util::platform_version_contains(const cl::Platform& platform, const cl::string& version_fragment) +{ + return platform.getInfo().find(version_fragment) != cl::string::npos; +} \ No newline at end of file diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index 18433cd6..ca057b2a 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1,5 +1,4 @@ -// OpenCL SDK includes -#include - +#include "Platform.cpp" +#include "Device.cpp" #include "Context.cpp" #include "Image.cpp" \ No newline at end of file diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index e787d0f2..a06ea0c9 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -15,8 +15,7 @@ */ // OpenCL SDK includes -#include -#include +#include #include #include #include @@ -86,27 +85,20 @@ int main(int argc, char* argv[]) std::endl; // Query device and runtime capabilities + auto highest_device_opencl_c_is_2_x = cl::util::opencl_c_version_contains(device, "2."); + auto highest_device_opencl_c_is_3_x = cl::util::opencl_c_version_contains(device, "3."); auto may_use_work_group_reduce = [&]() // IILE { - if (platform.getInfo().find("OpenCL 2.") != cl::string::npos) - { - return device.getInfo().find("OpenCL C 2.") != cl::string::npos ? 2 : 0; - } - else if (platform.getInfo().find("OpenCL 3.") != cl::string::npos) - { - auto c_features = device.getInfo(); - auto feature_is_work_group_reduce = [](const cl_name_version& name_ver) - { - return cl::string{name_ver.name} == "__opencl_c_work_group_collective_functions"; - }; + if (cl::util::platform_version_contains(platform, "2.")) + return highest_device_opencl_c_is_2_x; + else if (cl::util::platform_version_contains(platform, "3.")) return device.getInfo() && - std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend() ? 3 : 0; - } - else return 0; + cl::util::supports_feature(device, "__opencl_c_work_group_collective_functions"); + else + return false; }(); - auto may_use_sub_group_reduce = - platform.getInfo().find("OpenCL 3.") != cl::string::npos && - device.getInfo().find("cl_khr_subgroups") != cl::string::npos ? 3 : 0; + auto may_use_sub_group_reduce = cl::util::supports_extension(device, "cl_khr_subgroups"); + if (diag_opts.verbose) { if (may_use_work_group_reduce) @@ -145,9 +137,10 @@ int main(int argc, char* argv[]) cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, std::istreambuf_iterator{} }.append(kernel_op) }; // Note append cl::string compiler_options = - (may_use_work_group_reduce ? - cl::string{"-D USE_WORK_GROUP_REDUCE -cl-std=CL"} + std::to_string(may_use_work_group_reduce) + ".0 " : - (may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE -cl-std=CL3.0 " : " " )); + cl::string{may_use_work_group_reduce ? "-D USE_WORK_GROUP_REDUCE " : "" } + + cl::string{highest_device_opencl_c_is_2_x ? "-cl-std=CL2.0 " : "" } + + cl::string{highest_device_opencl_c_is_3_x ? "-cl-std=CL3.0 " : "" } + + cl::string{may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " : "" }; program.build( device, compiler_options.c_str() ); auto reduce = cl::KernelFunctor(program, "reduce"); From 40b0e71dc88aa62b6ad902d42d72531e6f9ae906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 5 Nov 2021 08:58:34 +0100 Subject: [PATCH 102/203] Bump base image version --- .gitlab/stream-ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index bf29fe38..dfce97e9 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -20,7 +20,7 @@ variables: ######################## .toolchain-matrix-minimum: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211103 parallel: matrix: # NOTE: Old CMake versions will likely not use cutting-edge compilers @@ -40,7 +40,7 @@ variables: - git submodule sync && git submodule update --init --recursive .toolchain-matrix-latest: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211006 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211103 parallel: matrix: # NOTE: Cutting edge CMake versions will likely not use old compilers From e82d06a5f744b4fbcd286f85c3924bce90318582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 13:58:37 +0100 Subject: [PATCH 103/203] Install root package config --- CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40dd1817..1411203d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,3 +53,33 @@ set_target_properties(OpenCL OpenCLUtils OpenCLUtilsCpp LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} ) + +include(GNUInstallDirs) +file( + WRITE ${PROJECT_BINARY_DIR}/OpenCL/OpenCLConfig.cmake + [[ +get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH) +include("${PARENT_DIR}/OpenCLHeaders/OpenCLHeadersConfig.cmake") +include("${PARENT_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfig.cmake") +include("${PARENT_DIR}/OpenCLHeadersCpp/OpenCLHeadersCppConfig.cmake") +include("${PARENT_DIR}/OpenCLUtils/OpenCLUtilsConfig.cmake") +include("${PARENT_DIR}/OpenCLUtilsCpp/OpenCLUtilsCppConfig.cmake") + ]] +) +set(config_package_location ${CMAKE_INSTALL_DATADIR}/cmake/OpenCL) +install( + FILES ${PROJECT_BINARY_DIR}/OpenCL/OpenCLConfig.cmake + DESTINATION ${config_package_location} +) + +unset(CMAKE_SIZEOF_VOID_P) +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/OpenCL/OpenCLConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL/OpenCLConfigVersion.cmake + DESTINATION ${config_package_location} +) From 8a7cf63f53da916d8fb90ec664694006077a35ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 14:09:47 +0100 Subject: [PATCH 104/203] Don't download TCLAP in CI --- .gitlab/stream-ci.yaml | 49 +++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index dfce97e9..50d0841b 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -106,12 +106,6 @@ build:cmake-minimum: # NOTE 2: Lack of space in -H -B is important! # https://stackoverflow.com/a/20611964/1476661 script: - # Download, extract TCLAP - - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz - --directory-prefix $DEPS_DIR - - cmake -E tar xzf $DEPS_DIR/v1.2.4.tar.gz - - cmake -E rename tclap-1.2.4/ $DEPS_DIR/tclap-1.2.4 - - cmake -E remove $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G Ninja @@ -146,12 +140,6 @@ build:cmake-latest: extends: .toolchain-matrix-latest stage: build script: - # Download, extract TCLAP - - wget https://github.com/mirror/tclap/archive/refs/tags/v1.2.4.tar.gz - --directory-prefix $DEPS_DIR - - cmake -E tar xzf $DEPS_DIR/v1.2.4.tar.gz - - cmake -E rename tclap-1.2.4/ $DEPS_DIR/tclap-1.2.4 - - cmake -E remove $DEPS_DIR/v1.2.4.tar.gz # Clone, configure, build, install OpenCL-SDK - cmake -G "Ninja Multi-Config" @@ -218,3 +206,40 @@ test:cmake-latest-rocm: - cd $BUILD_DIR - ctest --output-on-failure -C Debug - ctest --output-on-failure -C Release + +################### +## ## +## Consume stage ## +## ## +################### + +consume:cmake-minimum: + extends: .toolchain-matrix-minimum + stage: consume + needs: + - build:cmake-minimum + - test:cmake-minimum + # NOTE 1: CMake creates build and install folders as needed. + # NOTE 2: Lack of space in -H -B is important! + # https://stackoverflow.com/a/20611964/1476661 + script: + - cmake + -G Ninja + -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_BUILD_TYPE=Release + -D CMAKE_PREFIX_PATH=$INSTALL_DIR + -B$CI_PROJECT_DIR/downstream/bare + -H$CI_PROJECT_DIR/test/cmake/pkgconfig/ + - cmake + --build $CI_PROJECT_DIR/downstream/bare + # Emulate the presence of the SDK + - cmake -E make_directory $CI_PROJECT_DIR/install/share/cmake/OpenCL + - echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $CI_PROJECT_DIR/install/share/cmake/OpenCL/OpenCLConfig.cmake + - cmake + -G Ninja + -D CMAKE_BUILD_TYPE=Release + -D CMAKE_PREFIX_PATH=$INSTALL_DIR + -B$CI_PROJECT_DIR/downstream/sdk + -H$CI_PROJECT_DIR/tests/pkgconfig/sdk + - cmake + --build $CI_PROJECT_DIR/downstream/sdk From 279b4c5e72cc085f92155f5ad78ddd39298c06f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 14:10:11 +0100 Subject: [PATCH 105/203] No TCLAP artifact --- .gitlab/stream-ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 50d0841b..29c61cc3 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -131,7 +131,6 @@ build:cmake-minimum: paths: - $BUILD_DIR - $INSTALL_DIR - - $DEPS_DIR/tclap-1.2.4 exclude: - build/**/CMakeFiles/ expire_in: 2 weeks @@ -168,7 +167,6 @@ build:cmake-latest: paths: - $BUILD_DIR - $INSTALL_DIR - - $DEPS_DIR/tclap-1.2.4 exclude: - build/**/CMakeFiles/ expire_in: 2 weeks From 734f24f3f7214f991cf55d5906ab30f24c8d2562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 14:19:51 +0100 Subject: [PATCH 106/203] SDK consumption tests --- .gitlab/stream-ci.yaml | 66 +++++++++++++++++++---- test/cmake/findmodule/CMakeLists.txt | 81 ++++++++++++++++++++++++++++ test/cmake/pkgconfig/CMakeLists.txt | 58 ++++++++++++++++++++ test/cmake/platformenum.c | 20 +++++++ test/cmake/platformenum.cpp | 51 ++++++++++++++++++ 5 files changed, 267 insertions(+), 9 deletions(-) create mode 100644 test/cmake/findmodule/CMakeLists.txt create mode 100644 test/cmake/pkgconfig/CMakeLists.txt create mode 100644 test/cmake/platformenum.c create mode 100644 test/cmake/platformenum.cpp diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 29c61cc3..a0cd3e3f 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -221,23 +221,71 @@ consume:cmake-minimum: # NOTE 2: Lack of space in -H -B is important! # https://stackoverflow.com/a/20611964/1476661 script: + # Test Package Config dependence - cmake -G Ninja -D CMAKE_C_COMPILER=$COMPILER -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -B$CI_PROJECT_DIR/downstream/bare - -H$CI_PROJECT_DIR/test/cmake/pkgconfig/ + -D BUILD_TESTING=ON + -B$CI_PROJECT_DIR/downstream/pkgconfig + -H$CI_PROJECT_DIR/test/cmake/pkgconfig - cmake - --build $CI_PROJECT_DIR/downstream/bare - # Emulate the presence of the SDK - - cmake -E make_directory $CI_PROJECT_DIR/install/share/cmake/OpenCL - - echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $CI_PROJECT_DIR/install/share/cmake/OpenCL/OpenCLConfig.cmake + --build $CI_PROJECT_DIR/downstream/pkgconfig + - cd $CI_PROJECT_DIR/downstream/pkgconfig + - ctest --output-on-failure + # Test Find Module dependence - cmake -G Ninja + -D CMAKE_C_COMPILER=$COMPILER -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -B$CI_PROJECT_DIR/downstream/sdk - -H$CI_PROJECT_DIR/tests/pkgconfig/sdk + -D BUILD_TESTING=ON + -B$CI_PROJECT_DIR/downstream/findmodule + -H$CI_PROJECT_DIR/test/cmake/findmodule + - cmake + --build $CI_PROJECT_DIR/downstream/findmodule + - cd $CI_PROJECT_DIR/downstream/findmodule + - ctest --output-on-failure + +consume:cmake-latest: + extends: .toolchain-matrix-latest + stage: consume + needs: + - build:cmake-latest + - test:cmake-latest + script: + # Test Package Config dependence - cmake - --build $CI_PROJECT_DIR/downstream/sdk + -G "Ninja Multi-Config" + -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_PREFIX_PATH=$INSTALL_DIR + -D BUILD_TESTING=ON + -B $CI_PROJECT_DIR/downstream/pkgconfig + -S $CI_PROJECT_DIR/test/cmake/pkgconfig + - cmake + --build $CI_PROJECT_DIR/downstream/pkgconfig + --config Debug + - cmake + --build $CI_PROJECT_DIR/downstream/pkgconfig + --config Release + - cd $CI_PROJECT_DIR/downstream/pkgconfig + - ctest --output-on-failure -C Debug + - ctest --output-on-failure -C Release + # Test Find Module dependence + - cmake + -G "Ninja Multi-Config" + -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_PREFIX_PATH=$INSTALL_DIR + -D BUILD_TESTING=ON + -B $CI_PROJECT_DIR/downstream/findmodule + -S $CI_PROJECT_DIR/test/cmake/findmodule + - cmake + --build $CI_PROJECT_DIR/downstream/findmodule + --config Debug + - cmake + --build $CI_PROJECT_DIR/downstream/findmodule + --config Release + - cd $CI_PROJECT_DIR/downstream/findmodule + - ctest --output-on-failure -C Debug + - ctest --output-on-failure -C Release diff --git a/test/cmake/findmodule/CMakeLists.txt b/test/cmake/findmodule/CMakeLists.txt new file mode 100644 index 00000000..4fee1e80 --- /dev/null +++ b/test/cmake/findmodule/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 3.0) + +project(FindModuleTest) + +include(CTest) + +find_package(OpenCL + MODULE + REQUIRED +) + +# Test consuming from C++ source files +# +# NOTE: At the time of writing, the presence of the +# C++ headers don't manifest as a COMPONENT. +# They are usually expected to reside next to +# the C headers, even though they live in +# different `apt` packages for eg. + +add_executable(${PROJECT_NAME}_cpp + ../platformenum.cpp +) + +if(${CMAKE_VERSION} VERSION_LESS 3.7) + target_include_directories(${PROJECT_NAME}_cpp + PRIVATE + ${OpenCL_INCLUDE_DIR} + ) + target_link_libraries(${PROJECT_NAME}_cpp + PRIVATE + ${OpenCL_LIBRARY} + ) +else() + target_link_libraries(${PROJECT_NAME}_cpp + PRIVATE + OpenCL::OpenCL + ) +endif() + +target_compile_definitions(${PROJECT_NAME}_cpp + PRIVATE + CL_HPP_ENABLE_EXCEPTIONS + CL_HPP_TARGET_OPENCL_VERSION=300 +) + +add_test( + NAME ${PROJECT_NAME}_cpp + COMMAND ${PROJECT_NAME}_cpp +) + +# Test consuming from C source files + +add_executable(${PROJECT_NAME}_c + ../platformenum.c +) + +if(${CMAKE_VERSION} VERSION_LESS 3.7) + target_include_directories(${PROJECT_NAME}_c + PRIVATE + ${OpenCL_INCLUDE_DIR} + ) + target_link_libraries(${PROJECT_NAME}_c + PRIVATE + ${OpenCL_LIBRARY} + ) +else() + target_link_libraries(${PROJECT_NAME}_c + PRIVATE + OpenCL::OpenCL + ) +endif() + +target_compile_definitions(${PROJECT_NAME}_c + PRIVATE + CL_TARGET_OPENCL_VERSION=300 +) + +add_test( + NAME ${PROJECT_NAME}_c + COMMAND ${PROJECT_NAME}_c +) diff --git a/test/cmake/pkgconfig/CMakeLists.txt b/test/cmake/pkgconfig/CMakeLists.txt new file mode 100644 index 00000000..ac146910 --- /dev/null +++ b/test/cmake/pkgconfig/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 3.0) + +project(PkgConfigTest) + +find_package(OpenCL + REQUIRED + CONFIG + COMPONENTS + HeadersCpp + Headers + OpenCL +) + +# Test consuming from C++ source files + +add_executable(${PROJECT_NAME}_cpp + ../platformenum.cpp +) + +target_link_libraries(${PROJECT_NAME}_cpp + PRIVATE + OpenCL::HeadersCpp + OpenCL::Headers + OpenCL::OpenCL +) + +target_compile_definitions(${PROJECT_NAME}_cpp + PRIVATE + CL_HPP_ENABLE_EXCEPTIONS + CL_HPP_TARGET_OPENCL_VERSION=300 +) + +add_test( + NAME ${PROJECT_NAME}_cpp + COMMAND ${PROJECT_NAME}_cpp +) + +# Test consuming from C source files + +add_executable(${PROJECT_NAME}_c + ../platformenum.c +) + +target_link_libraries(${PROJECT_NAME}_c + PRIVATE + OpenCL::Headers + OpenCL::OpenCL +) + +target_compile_definitions(${PROJECT_NAME}_c + PRIVATE + CL_TARGET_OPENCL_VERSION=300 +) + +add_test( + NAME ${PROJECT_NAME}_c + COMMAND ${PROJECT_NAME}_c +) diff --git a/test/cmake/platformenum.c b/test/cmake/platformenum.c new file mode 100644 index 00000000..cc7b9a6c --- /dev/null +++ b/test/cmake/platformenum.c @@ -0,0 +1,20 @@ +// OpenCL includes +#include + +// C standard includes +#include + +int main() +{ + cl_int CL_err = CL_SUCCESS; + cl_uint numPlatforms = 0; + + CL_err = clGetPlatformIDs( 0, NULL, &numPlatforms ); + + if (CL_err == CL_SUCCESS) + printf_s("%u platform(s) found\n", numPlatforms); + else + printf_s("clGetPlatformIDs(%i)\n", CL_err); + + return 0; +} diff --git a/test/cmake/platformenum.cpp b/test/cmake/platformenum.cpp new file mode 100644 index 00000000..45da70e5 --- /dev/null +++ b/test/cmake/platformenum.cpp @@ -0,0 +1,51 @@ +#include + +#include // std::vector +#include // std::runtime_error, std::exception +#include // std::cout +#include // EXIT_FAILURE + +int main() +{ + try + { + std::vector platforms; + cl::Platform::get(&platforms); + + std::cout << + "Found " << + platforms.size() << + " platform" << + (platforms.size() > 1 ? "s.\n" : ".\n") << + std::endl; + + for (const auto& platform : platforms) + { + std::cout << platform.getInfo() << std::endl; + + std::vector devices; + platform.getDevices(CL_DEVICE_TYPE_ALL, &devices); + + for (const auto& device : devices) + std::cout << "\t" << device.getInfo() << std::endl; + } + } + catch (cl::Error& error) // If any OpenCL error occurs + { + if(error.err() == CL_PLATFORM_NOT_FOUND_KHR) + { + std::cout << "No OpenCL platform found." << std::endl; + std::exit(EXIT_SUCCESS); + } + else + { + std::cerr << error.what() << "(" << error.err() << ")" << std::endl; + std::exit(error.err()); + } + } + catch (std::exception& error) // If STL/CRT error occurs + { + std::cerr << error.what() << std::endl; + std::exit(EXIT_FAILURE); + } +} From faae073aa4f3a99f47fae3a655c6e9d86ef81164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 14:23:14 +0100 Subject: [PATCH 107/203] Fix missing stage name --- .gitlab/stream-ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index a0cd3e3f..2ea7fc2d 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -216,7 +216,6 @@ consume:cmake-minimum: stage: consume needs: - build:cmake-minimum - - test:cmake-minimum # NOTE 1: CMake creates build and install folders as needed. # NOTE 2: Lack of space in -H -B is important! # https://stackoverflow.com/a/20611964/1476661 @@ -253,7 +252,6 @@ consume:cmake-latest: stage: consume needs: - build:cmake-latest - - test:cmake-latest script: # Test Package Config dependence - cmake From 65cb98df63e16146f221cbf4a3ae10e7dfb327c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 14:42:58 +0100 Subject: [PATCH 108/203] Fix compiler passing --- .gitlab/stream-ci.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 2ea7fc2d..cf5ec269 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -223,7 +223,8 @@ consume:cmake-minimum: # Test Package Config dependence - cmake -G Ninja - -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=$INSTALL_DIR -D BUILD_TESTING=ON @@ -236,7 +237,8 @@ consume:cmake-minimum: # Test Find Module dependence - cmake -G Ninja - -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=$INSTALL_DIR -D BUILD_TESTING=ON @@ -256,7 +258,8 @@ consume:cmake-latest: # Test Package Config dependence - cmake -G "Ninja Multi-Config" - -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_PREFIX_PATH=$INSTALL_DIR -D BUILD_TESTING=ON -B $CI_PROJECT_DIR/downstream/pkgconfig @@ -273,7 +276,8 @@ consume:cmake-latest: # Test Find Module dependence - cmake -G "Ninja Multi-Config" - -D CMAKE_C_COMPILER=$COMPILER + -D CMAKE_C_COMPILER=$C_COMPILER + -D CMAKE_CXX_COMPILER=$CXX_COMPILER -D CMAKE_PREFIX_PATH=$INSTALL_DIR -D BUILD_TESTING=ON -B $CI_PROJECT_DIR/downstream/findmodule From bdcd26f1e5e89b3fae8b444af5bc2245769b3171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 15:10:38 +0100 Subject: [PATCH 109/203] Only MSVC should use ISO C secure exts --- test/cmake/platformenum.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/cmake/platformenum.c b/test/cmake/platformenum.c index cc7b9a6c..7b628ee1 100644 --- a/test/cmake/platformenum.c +++ b/test/cmake/platformenum.c @@ -4,6 +4,12 @@ // C standard includes #include +#ifdef _MSC_VER +#define print(...) printf_s(__VA_ARGS__) +#else +#define print(...) printf(__VA_ARGS__) +#endif + int main() { cl_int CL_err = CL_SUCCESS; @@ -12,9 +18,9 @@ int main() CL_err = clGetPlatformIDs( 0, NULL, &numPlatforms ); if (CL_err == CL_SUCCESS) - printf_s("%u platform(s) found\n", numPlatforms); + print("%u platform(s) found\n", numPlatforms); else - printf_s("clGetPlatformIDs(%i)\n", CL_err); + print("clGetPlatformIDs(%i)\n", CL_err); return 0; } From 1096d9659a9907a058664de763848ea978203e64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 15:15:37 +0100 Subject: [PATCH 110/203] Only use stable ROCm nodes --- .gitlab/stream-ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index cf5ec269..e51b3d93 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -182,7 +182,7 @@ test:cmake-minimum-rocm: extends: .exec-matrix-minimum image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 tags: - - rocm + - rocm-stable stage: test needs: - build:cmake-minimum @@ -195,7 +195,7 @@ test:cmake-latest-rocm: extends: .exec-matrix-latest image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 tags: - - rocm + - rocm-stable stage: test needs: - build:cmake-latest From f0abd79fd9818b709131700b55ead363fe2b31fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 16 Nov 2021 16:30:16 +0100 Subject: [PATCH 111/203] Fix dual-purpose API usage in C Util lib --- lib/src/Utils/Context.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index eba570e4..f5df1330 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -7,9 +7,6 @@ #include // malloc, free #include // printf -static cl_uint MAXOCLPLAT = 65535; -static cl_uint MAXOCLDEV = 65535; - UTILS_EXPORT cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int * error) { @@ -19,7 +16,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ cl_device_id * devices; cl_uint num_devices = 0; - OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), *error, end); MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); @@ -28,7 +25,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, MAXOCLDEV, NULL, &num_devices), *error, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), *error, plat); MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); @@ -53,7 +50,7 @@ cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl cl_device_id * devices; cl_uint num_devices = 0; - OCLERROR_RET(clGetPlatformIDs(MAXOCLPLAT, NULL, &num_platforms), *error, end); + OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), *error, end); MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); @@ -62,7 +59,7 @@ cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, MAXOCLDEV, NULL, &num_devices), *error, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), *error, plat); MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); From 22148037490b43e781f37f718c1f1e454510e33c Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Wed, 10 Nov 2021 16:57:17 +0100 Subject: [PATCH 112/203] Add histogram C++ example --- samples/CMakeLists.txt | 1 + samples/extensions/CMakeLists.txt | 15 ++ samples/extensions/khr/CMakeLists.txt | 15 ++ .../extensions/khr/histogram/CMakeLists.txt | 20 ++ samples/extensions/khr/histogram/README.md | 47 ++++ samples/extensions/khr/histogram/histogram.cl | 84 +++++++ samples/extensions/khr/histogram/main.cpp | 205 ++++++++++++++++++ 7 files changed, 387 insertions(+) create mode 100644 samples/extensions/CMakeLists.txt create mode 100644 samples/extensions/khr/CMakeLists.txt create mode 100644 samples/extensions/khr/histogram/CMakeLists.txt create mode 100644 samples/extensions/khr/histogram/README.md create mode 100644 samples/extensions/khr/histogram/histogram.cl create mode 100644 samples/extensions/khr/histogram/main.cpp diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 305d5186..32e23e17 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -99,3 +99,4 @@ endmacro() add_subdirectory(core) +add_subdirectory(extensions) diff --git a/samples/extensions/CMakeLists.txt b/samples/extensions/CMakeLists.txt new file mode 100644 index 00000000..6a36d43a --- /dev/null +++ b/samples/extensions/CMakeLists.txt @@ -0,0 +1,15 @@ +# Copyright (c) 2020 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_subdirectory(khr) diff --git a/samples/extensions/khr/CMakeLists.txt b/samples/extensions/khr/CMakeLists.txt new file mode 100644 index 00000000..078d9c1f --- /dev/null +++ b/samples/extensions/khr/CMakeLists.txt @@ -0,0 +1,15 @@ +# Copyright (c) 2020 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_subdirectory(histogram) diff --git a/samples/extensions/khr/histogram/CMakeLists.txt b/samples/extensions/khr/histogram/CMakeLists.txt new file mode 100644 index 00000000..86758892 --- /dev/null +++ b/samples/extensions/khr/histogram/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET histogramcpp + VERSION 120 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/extensions/khr/histogram/README.md b/samples/extensions/khr/histogram/README.md new file mode 100644 index 00000000..007d5585 --- /dev/null +++ b/samples/extensions/khr/histogram/README.md @@ -0,0 +1,47 @@ +# saxpy + +## Sample Purpose + +This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. + +This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. + +## Key APIs and Concepts + +The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. + +### Application flow + +You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flexibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is _the alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. + +If we aim for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. + +### Lazy buffer movement + +OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. + +This sample creates buffers, specifies their initial content with an iterator range spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to device global memory. + +Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. + +#### Explicit host-device-host buffer movement + +Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer constructor (henceforth CTOR) overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. + +### In-order queue usage + +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) and therefore commands enqueued are not allowed to overtake each other, so `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). + +### Used API surface + +```c++ +cl::util::get_context(cl::util::Triplet) +cl::Context::getInfo() +cl::CommandQueue(cl::Context, cl::Device) +cl::Device::getInfo() +cl::util::get_program(cl::Context, cl::string) +cl::KernelFunctor<...>(cl::Program, const char*) +cl::sdk::fill_with_random(...) +cl::Buffer(cl::CommandQueue, Iter, Iter, bool) +cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +``` diff --git a/samples/extensions/khr/histogram/histogram.cl b/samples/extensions/khr/histogram/histogram.cl new file mode 100644 index 00000000..deeb4da5 --- /dev/null +++ b/samples/extensions/khr/histogram/histogram.cl @@ -0,0 +1,84 @@ +unsigned int binary_search(float value, __global float* levels_array, unsigned int bins) +{ + int left_id = 0; + unsigned int right_id = bins; + + while(left_id < right_id) + { + unsigned int mid_id = (left_id + right_id) / 2; + float level = levels_array[mid_id]; + bool smaller = level < value; + left_id = smaller ? mid_id + 1 : left_id; + right_id = smaller ? right_id : mid_id; + } + + return max(0, left_id - 1); +} + +__kernel void histogram_shared( + unsigned int input_size, + unsigned int bins, + unsigned int items_per_thread, + __global float* input_array, + __global float* levels_array, + __local unsigned int* block_histogram, + __global unsigned int* histogram +) { + size_t gid = get_global_id(0); + int lid = get_local_id(0); + unsigned int lsize = get_local_size(0); + unsigned int channel_per_thread = ( bins + lsize - 1 ) / lsize; + + for( + unsigned int channel = channel_per_thread * lid; + channel < min(channel_per_thread * (lid + 1) , bins); + channel++ + ){ + block_histogram[channel] = 0; + barrier(CLK_LOCAL_MEM_FENCE); + } + + + // Histogram calculation on shared memory + for( unsigned int index = 0; index < items_per_thread; index++ ) + { + size_t element_index = gid * items_per_thread + index; + if( element_index < input_size ) + { + float value = input_array[element_index]; + unsigned int channel = binary_search(value, levels_array, bins); + + atomic_add(&block_histogram[channel], 1); + barrier(CLK_LOCAL_MEM_FENCE); + } + } + + // Sum up the results to global memory + for( + unsigned int channel = channel_per_thread * lid; + channel < min(channel_per_thread * (lid + 1) , bins); + channel++ + ){ + if( block_histogram[channel] > 0) + { + atomic_add(&histogram[channel], block_histogram[channel]); + barrier(CLK_GLOBAL_MEM_FENCE); + } + } +} + +__kernel void histogram_global( + unsigned int input_size, + unsigned int bins, + __global float* input_array, + __global float* levels_array, + __global unsigned int* histogram +) { + int gid = get_global_id(0); + + // binary search + unsigned int channel = binary_search(input_array[gid], levels_array, bins); + + atomic_add(&histogram[channel], 1u); + barrier(CLK_GLOBAL_MEM_FENCE); +} diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp new file mode 100644 index 00000000..47d86aa8 --- /dev/null +++ b/samples/extensions/khr/histogram/main.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include +#include +#include + +// STL includes +#include +#include +#include +#include +#include +#include // std::make_tuple + +// TCLAP includes +#include + +// Sample-specific option +struct HistogramOptions { size_t length; size_t bins; }; + +// Add option to CLI parsing SDK utility +template <> auto cl::sdk::parse(){ + return std::make_tuple( + std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral"), + std::make_shared>("b", "bins", "Bins of histogram", false, 100, "positive integral") + ); +} +template <> HistogramOptions cl::sdk::comprehend( + std::shared_ptr> length_arg, + std::shared_ptr> bins_arg) +{ + return HistogramOptions{ + length_arg->getValue(), bins_arg->getValue() + }; +} + +// Enable +-1 +bool predict_with_treshold(cl_uint i, cl_uint j) +{ + return i < j ? (j - i) <= 1u : (i - j) <= 1u; +} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = cl::sdk::parse_cli< + cl::sdk::options::Diagnostic, + cl::sdk::options::SingleDevice, + HistogramOptions>(argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); + const auto& histogram_opts = std::get<2>(opts); + + // Create runtime objects based on user preference or default + cl::Context context = cl::sdk::get_context(dev_opts.triplet); + cl::Device device = context.getInfo().at(0); + cl::CommandQueue queue{ context, device }; + cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + + if (!diag_opts.quiet) { + std::cout << + "Selected platform: " << platform.getInfo() << "\n" << + "Selected device: " << device.getInfo() << "\n" << + "Selected local memory size: " << device.getInfo() << "\n" << + std::endl; + } + + // Compile kernel + const char* kernel_location = "./histogram.cl"; + std::ifstream kernel_stream{ kernel_location }; + if (!kernel_stream.is_open()) + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + + cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, + std::istreambuf_iterator{} } }; + program.build( device ); + + auto histogram_shared = cl::KernelFunctor< + cl_uint, cl_uint, cl_uint, cl::Buffer, cl::Buffer, cl::LocalSpaceArg, cl::Buffer + >(program, "histogram_shared"); + auto histogram_global = cl::KernelFunctor< + cl_uint, cl_uint, cl::Buffer, cl::Buffer, cl::Buffer + >(program, "histogram_global"); + + // Initialize host-side storage + const auto length = histogram_opts.length; + const auto bins = histogram_opts.bins; + + const float min = -100.0f; + const float max = 100.0f; + + auto prng = [engine = std::default_random_engine{}, + dist = std::uniform_real_distribution{ min, max }]() mutable { + return dist(engine); + }; + + cl_float a = prng(); + std::valarray input(length); + std::valarray levels(bins + 1); + std::valarray histogram(length); + + // Initialize input variables + cl::sdk::fill_with_random(prng, input); + cl_float epsilon = (max - min) / bins; + for(unsigned int index = 0; index <= bins; index++) + { + levels[index] = min + epsilon * index; + } + + // Initialize device-side storage + cl::Buffer buf_input{ context, std::begin(input), std::end(input), true }, + buf_levels{ context, std::begin(levels), std::end(levels), true }, + buf_histogram{ context, std::begin(histogram), std::end(histogram), false }; + + // Execute kernel + if( bins * sizeof(cl_uint) <= device.getInfo() ) + { + size_t items_per_thread = 32; + size_t gird_size = (length + items_per_thread - 1) / items_per_thread; + histogram_shared( + cl::EnqueueArgs{ queue, cl::NDRange{ gird_size } }, + length, bins, items_per_thread, buf_input, buf_levels, + cl::Local(bins * sizeof(cl_uint)), buf_histogram + ); + } + else + { + histogram_global( + cl::EnqueueArgs{ queue, cl::NDRange{ length } }, + length, bins, buf_input, buf_levels, buf_histogram + ); + } + + // Concurrently calculate reference dataset + std::vector histogram_expected(bins, 0); + for(const auto value : input) + { + if(value >= levels[0] && value < levels[bins]) + { + const auto bin_iter = std::upper_bound( + std::begin(levels), std::end(levels), value + ); + histogram_expected[bin_iter - std::begin(levels) - 1]++; + } + } + + // Fetch results + cl::copy(queue, buf_histogram, std::begin(histogram), std::end(histogram)); + + // Validate + if (std::equal(std::begin(histogram_expected), std::end(histogram_expected), + std::begin(histogram), predict_with_treshold)) + std::cout << "Verification passed." << std::endl; + else + throw std::runtime_error{ "Verification FAILED!" }; + + return 0; + } + catch(cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} From 0f6816a934de7cdd81136755cb64aba981f99f57 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Wed, 10 Nov 2021 17:02:36 +0100 Subject: [PATCH 113/203] Update readme --- samples/extensions/khr/histogram/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/samples/extensions/khr/histogram/README.md b/samples/extensions/khr/histogram/README.md index 007d5585..27d6ccb4 100644 --- a/samples/extensions/khr/histogram/README.md +++ b/samples/extensions/khr/histogram/README.md @@ -1,10 +1,12 @@ -# saxpy +# histogram + +The sample calculate the histogram of a random sequence with global atomic add and when it is possible, it's using local atomic add. ## Sample Purpose This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. -This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. +This sample is implemented using C++ languages. ## Key APIs and Concepts @@ -44,4 +46,5 @@ cl::KernelFunctor<...>(cl::Program, const char*) cl::sdk::fill_with_random(...) cl::Buffer(cl::CommandQueue, Iter, Iter, bool) cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +unsigned int atomic_add (volatile __global unsigned int *p, unsigned int val) ``` From c16f43fb58ee3bcf05caba68c802b44772749ec0 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 14:33:39 +0100 Subject: [PATCH 114/203] Merge request findings --- samples/extensions/khr/histogram/histogram.cl | 53 +++++++++++-------- samples/extensions/khr/histogram/main.cpp | 2 +- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/samples/extensions/khr/histogram/histogram.cl b/samples/extensions/khr/histogram/histogram.cl index deeb4da5..1f0095f4 100644 --- a/samples/extensions/khr/histogram/histogram.cl +++ b/samples/extensions/khr/histogram/histogram.cl @@ -1,13 +1,13 @@ -unsigned int binary_search(float value, __global float* levels_array, unsigned int bins) +uint binary_search(float value, __global float* levels_array, uint bins) { int left_id = 0; - unsigned int right_id = bins; + uint right_id = bins; while(left_id < right_id) { - unsigned int mid_id = (left_id + right_id) / 2; + uint mid_id = (left_id + right_id) / 2; float level = levels_array[mid_id]; - bool smaller = level < value; + bool smaller = level <= value; left_id = smaller ? mid_id + 1 : left_id; right_id = smaller ? right_id : mid_id; } @@ -16,46 +16,50 @@ unsigned int binary_search(float value, __global float* levels_array, unsigned i } __kernel void histogram_shared( - unsigned int input_size, - unsigned int bins, - unsigned int items_per_thread, + uint input_size, + uint bins, + uint items_per_thread, __global float* input_array, __global float* levels_array, - __local unsigned int* block_histogram, - __global unsigned int* histogram + __local uint* block_histogram, + __global uint* histogram ) { size_t gid = get_global_id(0); int lid = get_local_id(0); - unsigned int lsize = get_local_size(0); - unsigned int channel_per_thread = ( bins + lsize - 1 ) / lsize; + uint lsize = get_local_size(0); + uint channel_per_thread = ( bins + lsize - 1 ) / lsize; for( - unsigned int channel = channel_per_thread * lid; + uint channel = channel_per_thread * lid; channel < min(channel_per_thread * (lid + 1) , bins); channel++ ){ block_histogram[channel] = 0; - barrier(CLK_LOCAL_MEM_FENCE); } + barrier(CLK_LOCAL_MEM_FENCE); // Histogram calculation on shared memory - for( unsigned int index = 0; index < items_per_thread; index++ ) + for( uint index = 0; index < items_per_thread; index++ ) { size_t element_index = gid * items_per_thread + index; + if( element_index < input_size ) { float value = input_array[element_index]; - unsigned int channel = binary_search(value, levels_array, bins); + if( levels_array[0] < value && value < levels_array[bins] ) + { + uint channel = binary_search(value, levels_array, bins); - atomic_add(&block_histogram[channel], 1); - barrier(CLK_LOCAL_MEM_FENCE); + atomic_add(&block_histogram[channel], 1); + barrier(CLK_LOCAL_MEM_FENCE); + } } } // Sum up the results to global memory for( - unsigned int channel = channel_per_thread * lid; + uint channel = channel_per_thread * lid; channel < min(channel_per_thread * (lid + 1) , bins); channel++ ){ @@ -68,16 +72,21 @@ __kernel void histogram_shared( } __kernel void histogram_global( - unsigned int input_size, - unsigned int bins, + uint input_size, + uint bins, __global float* input_array, __global float* levels_array, - __global unsigned int* histogram + __global uint* histogram ) { int gid = get_global_id(0); + float value = input_array[gid]; + + if( levels_array[0] < value && value < levels_array[bins] ) + return; + // binary search - unsigned int channel = binary_search(input_array[gid], levels_array, bins); + uint channel = binary_search(input_array[gid], levels_array, bins); atomic_add(&histogram[channel], 1u); barrier(CLK_GLOBAL_MEM_FENCE); diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index 47d86aa8..936322aa 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -121,7 +121,7 @@ int main(int argc, char* argv[]) // Initialize input variables cl::sdk::fill_with_random(prng, input); cl_float epsilon = (max - min) / bins; - for(unsigned int index = 0; index <= bins; index++) + for(uint index = 0; index <= bins; index++) { levels[index] = min + epsilon * index; } From ddeee88b4c7e8c7c64f2a8ae8575334c47b4ceb0 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 14:34:35 +0100 Subject: [PATCH 115/203] Remove treshold --- samples/extensions/khr/histogram/main.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index 936322aa..6323b169 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -51,12 +51,6 @@ template <> HistogramOptions cl::sdk::comprehend( }; } -// Enable +-1 -bool predict_with_treshold(cl_uint i, cl_uint j) -{ - return i < j ? (j - i) <= 1u : (i - j) <= 1u; -} - int main(int argc, char* argv[]) { try @@ -168,7 +162,7 @@ int main(int argc, char* argv[]) // Validate if (std::equal(std::begin(histogram_expected), std::end(histogram_expected), - std::begin(histogram), predict_with_treshold)) + std::begin(histogram))) std::cout << "Verification passed." << std::endl; else throw std::runtime_error{ "Verification FAILED!" }; From 046fc7981fc3f392b0e706a7ceecceac34c788b9 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 14:40:54 +0100 Subject: [PATCH 116/203] Findings MR II --- samples/extensions/khr/histogram/main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index 6323b169..ff948c18 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -115,10 +115,11 @@ int main(int argc, char* argv[]) // Initialize input variables cl::sdk::fill_with_random(prng, input); cl_float epsilon = (max - min) / bins; - for(uint index = 0; index <= bins; index++) + for(uint index = 0; index < bins; index++) { levels[index] = min + epsilon * index; } + levels[bins] = max; // Initialize device-side storage cl::Buffer buf_input{ context, std::begin(input), std::end(input), true }, @@ -129,9 +130,9 @@ int main(int argc, char* argv[]) if( bins * sizeof(cl_uint) <= device.getInfo() ) { size_t items_per_thread = 32; - size_t gird_size = (length + items_per_thread - 1) / items_per_thread; + size_t grid_size = (length + items_per_thread - 1) / items_per_thread; histogram_shared( - cl::EnqueueArgs{ queue, cl::NDRange{ gird_size } }, + cl::EnqueueArgs{ queue, cl::NDRange{ grid_size } }, length, bins, items_per_thread, buf_input, buf_levels, cl::Local(bins * sizeof(cl_uint)), buf_histogram ); From bd3e9b9e287e06bdc416cecbd534c93f84936eb4 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 15:29:53 +0100 Subject: [PATCH 117/203] Remove barrier --- samples/extensions/khr/histogram/histogram.cl | 3 --- 1 file changed, 3 deletions(-) diff --git a/samples/extensions/khr/histogram/histogram.cl b/samples/extensions/khr/histogram/histogram.cl index 1f0095f4..f8806d1e 100644 --- a/samples/extensions/khr/histogram/histogram.cl +++ b/samples/extensions/khr/histogram/histogram.cl @@ -52,7 +52,6 @@ __kernel void histogram_shared( uint channel = binary_search(value, levels_array, bins); atomic_add(&block_histogram[channel], 1); - barrier(CLK_LOCAL_MEM_FENCE); } } } @@ -66,7 +65,6 @@ __kernel void histogram_shared( if( block_histogram[channel] > 0) { atomic_add(&histogram[channel], block_histogram[channel]); - barrier(CLK_GLOBAL_MEM_FENCE); } } } @@ -89,5 +87,4 @@ __kernel void histogram_global( uint channel = binary_search(input_array[gid], levels_array, bins); atomic_add(&histogram[channel], 1u); - barrier(CLK_GLOBAL_MEM_FENCE); } From 51a927c1ff3aab893449cf1727cccf26e6c9ce48 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 15:48:52 +0100 Subject: [PATCH 118/203] Add one barrier --- samples/extensions/khr/histogram/histogram.cl | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/extensions/khr/histogram/histogram.cl b/samples/extensions/khr/histogram/histogram.cl index f8806d1e..f597b1a1 100644 --- a/samples/extensions/khr/histogram/histogram.cl +++ b/samples/extensions/khr/histogram/histogram.cl @@ -55,6 +55,7 @@ __kernel void histogram_shared( } } } + barrier(CLK_LOCAL_MEM_FENCE); // Sum up the results to global memory for( From e2cc406e437e6f41a0c4c067fa5e5574880d7ef6 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Mon, 15 Nov 2021 16:37:22 +0100 Subject: [PATCH 119/203] Removed unused variable --- samples/extensions/khr/histogram/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index ff948c18..3e2bad05 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -107,7 +107,6 @@ int main(int argc, char* argv[]) return dist(engine); }; - cl_float a = prng(); std::valarray input(length); std::valarray levels(bins + 1); std::valarray histogram(length); From acfd8aabd82451fcc771c1dce854b1a16e5a13d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 15 Nov 2021 13:14:51 +0100 Subject: [PATCH 120/203] Updated build instructions --- README.md | 58 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 4aead069..090dc802 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# OpenCL-SDK (in development) +# OpenCLTM SDK (in development) This is the Khronos OpenCL SDK. It brings together all the components needed to develop OpenCL applications: @@ -13,40 +13,46 @@ It also contains resources useful to OpenCL developers: - Code samples (`samples/`) - Documentation (`docs/`) -## Setting Up the SDK +## Build Instructions -This repository uses sub-modules for the OpenCL Headers, OpenCL C++ bindings, and OpenCL ICD Loader. +### Dependencies -To clone a new repository with all sub-modules included, use the `--recursive` option. -Note that this option clones all sub-modules and their dependencies, which are not required for the OpenCL SDK: +- This repository uses sub-modules for the OpenCL Headers, OpenCL C++ bindings, and OpenCL ICD Loader and some of their transitive dependencies. -```sh -$ git clone --recursive https://github.com/KhronosGroup/OpenCL-SDK.git -``` + - To clone a new repository with all sub-modules included, use the `--recursive` option. Note that this option clones all sub-modules and their dependencies, which are not strictly required for the OpenCL SDK: -Alternatively, to clone only the sub-modules for the OpenCL SDK, first clone this repository without sub-modules included: + git clone --recursive https://github.com/KhronosGroup/OpenCL-SDK.git -```sh -$ git clone https://github.com/KhronosGroup/OpenCL-SDK.git -``` + - Alternatively, to clone only the sub-modules for the OpenCL SDK, first clone this repository without sub-modules included then setup submodules non-recursively: -Then setup sub-modules: + git clone https://github.com/KhronosGroup/OpenCL-SDK.git + git submodule init + git submodule update -```sh -$ git submodule init -$ git submodule update -``` +- The SDK uses CMake for its build system. +If CMake is not provided by your build system or OS package manager, please consult the [CMake website](https://cmake.org). -## Building the Samples +- The SDK samples depend on -This repository uses CMake as its build system. -The suggested build directory is `build`. + - [Templatized C++ Command Line Parser Library](http://tclap.sourceforge.net/) (aka. TCLAP) + - [Simple and Fast Multimedia Library](https://www.sfml-dev.org/) (aka. SFML) + - [OpenGL Mathematics](https://glm.g-truc.net/0.9.9/index.html) (aka. GLM) -To generate build files, use for example: +### Example Build -```sh -$ mkdir build && cd build -$ cmake .. -``` +> The example build guide uses [Vcpkg](https://vcpkg.io/en/index.html) to fetch all dependencies. Note that Vcpkg is _not_ a requirement and is only used for convenience. One may provide dependencies through any other CMake mechanism. For details on how to install Vcpkg, refer to it's [Getting Started Guide](https://vcpkg.io/en/getting-started.html) -Then build with the generated build files. +1. Clone this repo with the rest of the OpenCL SDK components: + + git clone https://github.com/KhronosGroup/OpenCL-SDK.git + git submodule init + git submodule update + +1. Install dependencies + + vcpkg install sfml tclap glm + +1. Build and install SDK with samples and no downstream unit tests + + cmake -D BUILD_TESTING=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=OFF -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake -B ./OpenCL-SDK/build -S ./OpenCL-SDK + C:\Kellekek\Kitware\CMake\3.21.4\bin\cmake.exe --build ./OpenCL-SDK/build --target install \ No newline at end of file From 71f10f43a61fbf4d3ec9a08de979b0c5371be0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 29 Oct 2021 16:35:39 +0200 Subject: [PATCH 121/203] InteropWindow stub implementation --- CMakeLists.txt | 9 +++ lib/CMakeLists.txt | 2 + lib/include/CL/Utils/Error.hpp | 10 +-- lib/include/CL/Utils/InteropContext.hpp | 16 +++++ lib/include/CL/Utils/InteropWindow.hpp | 46 +++++++++++++ lib/src/Utils/InteropContext.cpp | 90 +++++++++++++++++++++++++ lib/src/Utils/InteropWindow.cpp | 45 +++++++++++++ lib/src/Utils/Utils.cpp | 4 +- 8 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 lib/include/CL/Utils/InteropContext.hpp create mode 100644 lib/include/CL/Utils/InteropWindow.hpp create mode 100644 lib/src/Utils/InteropContext.cpp create mode 100644 lib/src/Utils/InteropWindow.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1411203d..78658351 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ project(OpenCL-SDK include(CMakeDependentOption) option(OPENCL_SDK_BUILD_SAMPLES "Build sample code" ON) +cmake_dependent_option(OPENCL_SDK_BUILD_OPENGL_SAMPLES "Build OpenCL-OpenGL interop sample code" ON OPENCL_SDK_BUILD_SAMPLES OFF) cmake_dependent_option(OPENCL_SDK_TEST_SAMPLES "Add CTest to samples (where applicable)" ON OPENCL_SDK_BUILD_SAMPLES OFF) include(CTest) @@ -43,6 +44,14 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(third_party/cargs) add_subdirectory(third_party/stb) +if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) + find_package(OpenGL REQUIRED) + find_package(SFML 2 + REQUIRED + COMPONENTS window + ) + find_package(GLEW REQUIRED) +endif() add_subdirectory(lib) add_subdirectory(samples) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 86879dd3..75c23874 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -13,6 +13,8 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp OpenCL::Utils + OpenGL::GL + sfml-window ) set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index 03361dd9..bb22f145 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -7,6 +7,7 @@ #include #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 +#define CL_UTIL_DEVICE_NOT_INTEROPERABLE -2001 namespace cl { @@ -61,23 +62,22 @@ namespace util namespace detail { - void errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); + cl_int errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); } } } -void cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) +cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) { if (err != CL_SUCCESS) { #if defined(CL_HPP_ENABLE_EXCEPTIONS) throw cl::util::Error{err, errStr}; -#else +#endif (void)errStr; // suppress unused variable warning - //std::cerr << errStr << std::endl; if (errPtr != nullptr) *errPtr = err; -#endif } + return err; } diff --git a/lib/include/CL/Utils/InteropContext.hpp b/lib/include/CL/Utils/InteropContext.hpp new file mode 100644 index 00000000..9c308ef7 --- /dev/null +++ b/lib/include/CL/Utils/InteropContext.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +namespace cl +{ +namespace util +{ + vector UTILSCPP_EXPORT get_interop_context_properties(const cl::Device& plat); + + Context UTILSCPP_EXPORT get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); +} +} diff --git a/lib/include/CL/Utils/InteropWindow.hpp b/lib/include/CL/Utils/InteropWindow.hpp new file mode 100644 index 00000000..563c5f3a --- /dev/null +++ b/lib/include/CL/Utils/InteropWindow.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +#include +#include + +namespace cl +{ +namespace util +{ + class UTILSCPP_EXPORT InteropWindow : public sf::Window + { + public: + explicit InteropWindow( + sf::VideoMode mode, + const sf::String& title, + sf::Uint32 style = sf::Style::Default, + const sf::ContextSettings& settings = sf::ContextSettings{}, + int platform_id = 0, + int device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT + ); + + void run(); + + protected: + // Core functionality to be overriden + virtual void initializeGL() = 0; // Function that initializes all OpenGL assets needed to draw a scene + virtual void initializeCL() = 0; // Function that initializes all OpenCL assets needed to draw a scene + virtual void updateScene() = 0; // Function that holds scene update guaranteed not to conflict with drawing + virtual void render() = 0; // Function that does the native rendering + virtual void event(const sf::Event& e) = 0; // Function that handles render area resize + + cl::Context opencl_context; + + private: + int plat_id; + int dev_id; + cl_bitfield dev_type; + }; +} +} diff --git a/lib/src/Utils/InteropContext.cpp b/lib/src/Utils/InteropContext.cpp new file mode 100644 index 00000000..30259a8e --- /dev/null +++ b/lib/src/Utils/InteropContext.cpp @@ -0,0 +1,90 @@ +#include + +#include + +cl::vector cl::util::get_interop_context_properties(const cl::Device& device) +{ + return cl::vector{ + CL_CONTEXT_PLATFORM, reinterpret_cast(cl::Platform{ device.getInfo() }()), +#ifdef _WIN32 + CL_WGL_HDC_KHR, reinterpret_cast(wglGetCurrentDC()), + CL_GL_CONTEXT_KHR, reinterpret_cast(wglGetCurrentContext()), +#endif +#ifdef __linux__ + CL_GLX_DISPLAY_KHR, reinterpret_cast(glXGetCurrentDisplay()), + CL_GL_CONTEXT_KHR, reinterpret_cast(glXGetCurrentContext()), +#endif + 0 + }; +} + +cl::Context cl::util::get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +{ + cl::vector platforms; + cl_int plat_err = cl::Platform::get(&platforms); + + if (plat_err == CL_SUCCESS) + { + if (plat_id >= 0 && plat_id < platforms.size()) + { + cl::vector devices; + cl_int dev_err = platforms[plat_id].getDevices(type, &devices); + + if (dev_err == CL_SUCCESS) + { + if (dev_id >= 0 && dev_id < devices.size()) + { + cl_int ctx_err = CL_SUCCESS; + auto props = get_interop_context_properties(devices[dev_id]); +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try + { +#endif + cl::Context context( + devices[dev_id], + props.data(), + nullptr, + nullptr, + &ctx_err + ); +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + } + catch (cl::Error& e) + { + ctx_err = e.err(); + } +#endif + if (ctx_err == CL_SUCCESS) + return context; + else + { + detail::errHandler( + CL_UTIL_DEVICE_NOT_INTEROPERABLE, + error, + "Selected device isn't interoperable with the current OpenGL context." + ); + return cl::Context{}; + } + } + else + detail::errHandler( + CL_UTIL_INDEX_OUT_OF_RANGE, + error, + "Invalid device index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error); + } + else + detail::errHandler( + CL_UTIL_INDEX_OUT_OF_RANGE, + error, + "Invalid platform index provided for cl::Context cl::sdk::get_context()" + ); + } + else + detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); + + return cl::Context{}; +} diff --git a/lib/src/Utils/InteropWindow.cpp b/lib/src/Utils/InteropWindow.cpp new file mode 100644 index 00000000..40fdb284 --- /dev/null +++ b/lib/src/Utils/InteropWindow.cpp @@ -0,0 +1,45 @@ +#include + +#include + +cl::util::InteropWindow::InteropWindow( + sf::VideoMode mode, + const sf::String& title, + sf::Uint32 style, + const sf::ContextSettings& settings, + int platform_id, + int device_id, + cl_bitfield device_type +) + : sf::Window{mode, title, style, settings} + , plat_id{platform_id} + , dev_id{device_id} + , dev_type{device_type} +{ +} + +void cl::util::InteropWindow::run() +{ + setActive(true); + + initializeGL(); + + opencl_context = get_interop_context(plat_id, dev_id, dev_type); + + initializeCL(); + + while(isOpen()) + { + sf::Event ev; + while (pollEvent(ev)) + event(ev); + + updateScene(); + + render(); + + display(); + } + + setActive(false); +} diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index ca057b2a..127c5f46 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1,4 +1,6 @@ #include "Platform.cpp" #include "Device.cpp" #include "Context.cpp" -#include "Image.cpp" \ No newline at end of file +#include "Image.cpp" +#include "InteropContext.cpp" +#include "InteropWindow.cpp" From eb731b5f6acf89926a69ccf2df3aa970fe9287f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 29 Oct 2021 16:36:09 +0200 Subject: [PATCH 122/203] WIP --- samples/extensions/CMakeLists.txt | 3 + samples/extensions/khr/.keepme | 0 samples/extensions/khr/conway/CMakeLists.txt | 22 ++ samples/extensions/khr/conway/README.md | 47 ++++ samples/extensions/khr/conway/conway.cl | 8 + .../extensions/khr/conway/conway.frag.glsl | 25 ++ .../extensions/khr/conway/conway.vert.glsl | 25 ++ samples/extensions/khr/conway/main.cpp | 254 ++++++++++++++++++ 8 files changed, 384 insertions(+) delete mode 100644 samples/extensions/khr/.keepme create mode 100644 samples/extensions/khr/conway/CMakeLists.txt create mode 100644 samples/extensions/khr/conway/README.md create mode 100644 samples/extensions/khr/conway/conway.cl create mode 100644 samples/extensions/khr/conway/conway.frag.glsl create mode 100644 samples/extensions/khr/conway/conway.vert.glsl create mode 100644 samples/extensions/khr/conway/main.cpp diff --git a/samples/extensions/CMakeLists.txt b/samples/extensions/CMakeLists.txt index 6a36d43a..899ae382 100644 --- a/samples/extensions/CMakeLists.txt +++ b/samples/extensions/CMakeLists.txt @@ -13,3 +13,6 @@ # limitations under the License. add_subdirectory(khr) +if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) + add_subdirectory(khr/conway) +endif() diff --git a/samples/extensions/khr/.keepme b/samples/extensions/khr/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/samples/extensions/khr/conway/CMakeLists.txt b/samples/extensions/khr/conway/CMakeLists.txt new file mode 100644 index 00000000..68a9395c --- /dev/null +++ b/samples/extensions/khr/conway/CMakeLists.txt @@ -0,0 +1,22 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET conwaycpp + VERSION 120 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR} + LIBS sfml-window OpenGL::GL GLEW::GLEW + ) diff --git a/samples/extensions/khr/conway/README.md b/samples/extensions/khr/conway/README.md new file mode 100644 index 00000000..007d5585 --- /dev/null +++ b/samples/extensions/khr/conway/README.md @@ -0,0 +1,47 @@ +# saxpy + +## Sample Purpose + +This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. + +This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. + +## Key APIs and Concepts + +The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. + +### Application flow + +You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flexibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is _the alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. + +If we aim for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. + +### Lazy buffer movement + +OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. + +This sample creates buffers, specifies their initial content with an iterator range spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to device global memory. + +Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. + +#### Explicit host-device-host buffer movement + +Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer constructor (henceforth CTOR) overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. + +### In-order queue usage + +While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) and therefore commands enqueued are not allowed to overtake each other, so `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). + +### Used API surface + +```c++ +cl::util::get_context(cl::util::Triplet) +cl::Context::getInfo() +cl::CommandQueue(cl::Context, cl::Device) +cl::Device::getInfo() +cl::util::get_program(cl::Context, cl::string) +cl::KernelFunctor<...>(cl::Program, const char*) +cl::sdk::fill_with_random(...) +cl::Buffer(cl::CommandQueue, Iter, Iter, bool) +cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +``` diff --git a/samples/extensions/khr/conway/conway.cl b/samples/extensions/khr/conway/conway.cl new file mode 100644 index 00000000..c0fbb791 --- /dev/null +++ b/samples/extensions/khr/conway/conway.cl @@ -0,0 +1,8 @@ +__kernel void conway(float a, + __global float* x, + __global float* y) +{ + int gid = get_global_id(0); + + y[gid] = a * x[gid] + y[gid]; +} diff --git a/samples/extensions/khr/conway/conway.frag.glsl b/samples/extensions/khr/conway/conway.frag.glsl new file mode 100644 index 00000000..334f959d --- /dev/null +++ b/samples/extensions/khr/conway/conway.frag.glsl @@ -0,0 +1,25 @@ +#version 330 + +// VS locations +#define POSITION 0 +#define TEXCOORD 1 + +// FS locations +#define COORDINATE 0 + +in block +{ + vec2 TexCoord; +} FS_In; + +out vec4 FragColor; + +uniform sampler2D texsampler; + +void main() +{ + //FragColor = vec4(FS_In.TexCoord, 0.0, 1.0); + //FragColor = uvec4(1, 0, 1, 1); + + FragColor = texture(texsampler, FS_In.TexCoord); +} diff --git a/samples/extensions/khr/conway/conway.vert.glsl b/samples/extensions/khr/conway/conway.vert.glsl new file mode 100644 index 00000000..a64140a4 --- /dev/null +++ b/samples/extensions/khr/conway/conway.vert.glsl @@ -0,0 +1,25 @@ +#version 330 + +// VS locations +#define POSITION 0 +#define TEXCOORD 1 + +// FS locations +#define COORDINATE 0 + +layout(location = POSITION) in vec2 in_Position; +layout(location = TEXCOORD) in vec2 in_TexCoord; + +out block +{ + vec2 TexCoord; +} VS_Out; + +uniform mat4 mat_MVP; + +void main() +{ + gl_Position = mat_MVP * vec4(in_Position, 0.0, 1.0); + + VS_Out.TexCoord = in_TexCoord; +} diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp new file mode 100644 index 00000000..6c61fcd4 --- /dev/null +++ b/samples/extensions/khr/conway/main.cpp @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +// OpenCL SDK includes +#include +#include +#include +#include +#include +#include + +// STL includes +#include +#include +#include +#include +#include +#include // std::make_tuple + +// TCLAP includes +#include + +// OpenGL includes +#include + +template +struct DoubleBuffer +{ + T front, back; + + void swap() + { + std::swap(front, back); + } +}; + +class Conway : public cl::util::InteropWindow +{ +public: + explicit Conway( + int platform_id = 0, + int device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT + ) : InteropWindow{ + sf::VideoMode::VideoMode(800,800), + "Conway's Game of Life", + sf::Style::Default, + sf::ContextSettings{ + 0, 0, 0, // Depth, Stencil, AA + 3, 3, // OpenGL version + sf::ContextSettings::Attribute::Core + }, + platform_id, + device_id, + device_type + } + {} + +protected: + virtual void initializeGL() override; // Function that initializes all OpenGL assets needed to draw a scene + virtual void initializeCL() override; // Function that initializes all OpenCL assets needed to draw a scene + virtual void updateScene() override; // Function that holds scene update guaranteed not to conflict with drawing + virtual void render() override; // Function that does the native rendering + virtual void event(const sf::Event& e) override; // Function that handles render area resize + +private: + // OpenGL objects + DoubleBuffer gl_images; + cl_GLuint vertex_shader, fragment_shader, shader_program; + cl_GLuint vertex_buffer, vertex_array; + + // OpenCL objects + cl::Device device; + cl::CommandQueue queue; + cl::Program program; + cl::Kernel kernel; + + DoubleBuffer cl_images; + cl::vector interop_resources; +}; + +void Conway::initializeGL() +{ + if (glewInit() != GLEW_OK) std::exit(EXIT_FAILURE); + + auto create_shader = [](std::string file_path, cl_GLenum shader_stage) + { + std::ifstream shader_stream(file_path); + std::string shader_string{ std::istreambuf_iterator{ shader_stream }, + std::istreambuf_iterator{} }; + auto pshader_string = shader_string.c_str(); + GLuint shader = glCreateShader(shader_stage); + glShaderSource(shader, 1, &pshader_string, NULL); + glCompileShader(shader); + + GLint status = GL_FALSE; + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + if(status != GL_TRUE) + { + int log_length = 0; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); + std::vector shader_log(log_length); + glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); + std::cerr << std::string(shader_log.cbegin(), shader_log.cend()) << std::endl; + } + + return shader; + }; + auto create_program = [](std::initializer_list shader_stages) + { + GLuint program = glCreateProgram(); + for (auto shader_stage : shader_stages) + glAttachShader(program, shader_stage); + + glLinkProgram(program); + GLint status = GL_FALSE; + glGetProgramiv(program, GL_LINK_STATUS, &status); + if(status != GL_TRUE) + { + int log_length = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); + std::vector program_log(log_length); + glGetProgramInfoLog(program, log_length, NULL, program_log.data()); + std::cerr << std::string(program_log.cbegin(), program_log.cend()) << std::endl; + } + + return program; + }; + + vertex_shader = create_shader("./conway.vert.glsl", GL_VERTEX_SHADER); + fragment_shader = create_shader("./conway.frag.glsl", GL_FRAGMENT_SHADER); + shader_program = create_program({ vertex_shader, fragment_shader }); + + std::vector quad = + // vertices , tex coords + // x , y , u , v + { -1.0f, -1.0f, 0.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 1.0f }; + + glGenBuffers(1, &vertex_buffer); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + glGenVertexArrays(1, &vertex_array); + glBindVertexArray(vertex_array); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL)); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float))); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glBindVertexArray(0); + + +} + +void Conway::initializeCL() +{ + device = opencl_context.getInfo().at(0); + + // Compile kernel + const char* kernel_location = "./conway.cl"; + std::ifstream kernel_stream{ kernel_location }; + if (!kernel_stream.is_open()) + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + + program = cl::Program{ opencl_context, + std::string{ std::istreambuf_iterator{ kernel_stream }, + std::istreambuf_iterator{} } }; + program.build( device ); + kernel = cl::Kernel{program, "conway"}; + + // Translate OpenGL object handles into OpenCL handles + cl_images.front = cl::ImageGL{opencl_context, CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, gl_images.front}; + cl_images.back = cl::ImageGL{opencl_context, CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, gl_images.back}; + + // Translate + interop_resources = cl::vector{ cl_images.front, cl_images.back }; +} + +void Conway::updateScene() +{ +} + +void Conway::render() +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +void Conway::event(const sf::Event&) {} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = cl::sdk::parse_cli< + cl::sdk::options::Diagnostic, + cl::sdk::options::SingleDevice>(argc, argv); + const auto& dev_opts = std::get<1>(opts).triplet; + + Conway window{ + dev_opts.plat_index, + dev_opts.dev_index, + dev_opts.dev_type + }; + + window.run(); + } + catch(cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} \ No newline at end of file From 46fa5a324667652233ceee54414f837e83b5f6d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 3 Nov 2021 12:42:32 +0100 Subject: [PATCH 123/203] Feature complete sample --- lib/include/CL/Utils/InteropWindow.hpp | 1 + lib/src/Utils/InteropWindow.cpp | 7 +- samples/extensions/khr/conway/conway.cl | 27 ++- .../extensions/khr/conway/conway.frag.glsl | 8 +- .../extensions/khr/conway/conway.vert.glsl | 7 +- samples/extensions/khr/conway/main.cpp | 180 ++++++++++++++---- 6 files changed, 175 insertions(+), 55 deletions(-) diff --git a/lib/include/CL/Utils/InteropWindow.hpp b/lib/include/CL/Utils/InteropWindow.hpp index 563c5f3a..4cc3144b 100644 --- a/lib/include/CL/Utils/InteropWindow.hpp +++ b/lib/include/CL/Utils/InteropWindow.hpp @@ -36,6 +36,7 @@ namespace util virtual void event(const sf::Event& e) = 0; // Function that handles render area resize cl::Context opencl_context; + bool cl_khr_gl_event_supported; private: int plat_id; diff --git a/lib/src/Utils/InteropWindow.cpp b/lib/src/Utils/InteropWindow.cpp index 40fdb284..cef7de5d 100644 --- a/lib/src/Utils/InteropWindow.cpp +++ b/lib/src/Utils/InteropWindow.cpp @@ -26,6 +26,9 @@ void cl::util::InteropWindow::run() opencl_context = get_interop_context(plat_id, dev_id, dev_type); + cl_khr_gl_event_supported = + opencl_context.getInfo().at(0).getInfo().find("cl_khr_gl_event") != cl::string::npos; + initializeCL(); while(isOpen()) @@ -34,11 +37,11 @@ void cl::util::InteropWindow::run() while (pollEvent(ev)) event(ev); - updateScene(); - render(); display(); + + updateScene(); } setActive(false); diff --git a/samples/extensions/khr/conway/conway.cl b/samples/extensions/khr/conway/conway.cl index c0fbb791..eb2c4bc3 100644 --- a/samples/extensions/khr/conway/conway.cl +++ b/samples/extensions/khr/conway/conway.cl @@ -1,8 +1,25 @@ -__kernel void conway(float a, - __global float* x, - __global float* y) +#define read_cell(delta) read_imageui(front, periodic, (gidf + delta) * inv_image_size + d_2).x + +__kernel void conway( + __read_only image2d_t front, + __write_only image2d_t back, + float2 inv_image_size +) { - int gid = get_global_id(0); + const sampler_t periodic = CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_NEAREST | CLK_ADDRESS_REPEAT; + + int2 gid = (int2)(get_global_id(0), get_global_id(1)); + float2 gidf = (float2)(gid.x, gid.y); + float2 d_2 = inv_image_size * 0.5f; + + uchar self = read_cell((float2)(0, 0)); + uchar count = + read_cell((float2)(-1,+1)) + read_cell((float2)(0,+1)) + read_cell((float2)(+1,+1)) + + read_cell((float2)(-1, 0)) + + read_cell((float2)(+1, 0)) + + read_cell((float2)(-1,-1)) + read_cell((float2)(0,-1)) + read_cell((float2)(+1,-1)); - y[gid] = a * x[gid] + y[gid]; + write_imageui(back, gid, self ? + (count < 2 || count > 3 ? 0 : 1) : + (count == 3 ? 1 : 0) + ); } diff --git a/samples/extensions/khr/conway/conway.frag.glsl b/samples/extensions/khr/conway/conway.frag.glsl index 334f959d..662afddf 100644 --- a/samples/extensions/khr/conway/conway.frag.glsl +++ b/samples/extensions/khr/conway/conway.frag.glsl @@ -4,9 +4,6 @@ #define POSITION 0 #define TEXCOORD 1 -// FS locations -#define COORDINATE 0 - in block { vec2 TexCoord; @@ -14,12 +11,9 @@ in block out vec4 FragColor; -uniform sampler2D texsampler; +uniform usampler2D texsampler; void main() { - //FragColor = vec4(FS_In.TexCoord, 0.0, 1.0); - //FragColor = uvec4(1, 0, 1, 1); - FragColor = texture(texsampler, FS_In.TexCoord); } diff --git a/samples/extensions/khr/conway/conway.vert.glsl b/samples/extensions/khr/conway/conway.vert.glsl index a64140a4..42b481b6 100644 --- a/samples/extensions/khr/conway/conway.vert.glsl +++ b/samples/extensions/khr/conway/conway.vert.glsl @@ -4,9 +4,6 @@ #define POSITION 0 #define TEXCOORD 1 -// FS locations -#define COORDINATE 0 - layout(location = POSITION) in vec2 in_Position; layout(location = TEXCOORD) in vec2 in_TexCoord; @@ -15,11 +12,11 @@ out block vec2 TexCoord; } VS_Out; -uniform mat4 mat_MVP; +//uniform mat4 mat_MVP; void main() { - gl_Position = mat_MVP * vec4(in_Position, 0.0, 1.0); + gl_Position = vec4(in_Position, 0.0, 1.0); VS_Out.TexCoord = in_TexCoord; } diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index 6c61fcd4..ca2b5ef6 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -80,20 +80,53 @@ class Conway : public cl::util::InteropWindow private: // OpenGL objects - DoubleBuffer gl_images; - cl_GLuint vertex_shader, fragment_shader, shader_program; + cl_GLuint vertex_shader, fragment_shader, gl_program; cl_GLuint vertex_buffer, vertex_array; + DoubleBuffer gl_images; // OpenCL objects cl::Device device; cl::CommandQueue queue; - cl::Program program; + cl::Program cl_program; cl::Kernel kernel; + cl::Sampler sampler; DoubleBuffer cl_images; cl::vector interop_resources; }; +inline bool checkError(const char* Title) +{ + int Error; + if((Error = glGetError()) != GL_NO_ERROR) + { + std::string ErrorString; + switch(Error) + { + case GL_INVALID_ENUM: + ErrorString = "GL_INVALID_ENUM"; + break; + case GL_INVALID_VALUE: + ErrorString = "GL_INVALID_VALUE"; + break; + case GL_INVALID_OPERATION: + ErrorString = "GL_INVALID_OPERATION"; + break; + case GL_INVALID_FRAMEBUFFER_OPERATION: + ErrorString = "GL_INVALID_FRAMEBUFFER_OPERATION"; + break; + case GL_OUT_OF_MEMORY: + ErrorString = "GL_OUT_OF_MEMORY"; + break; + default: + ErrorString = "UNKNOWN"; + break; + } + fprintf(stdout, "OpenGL Error(%s): %s\n", ErrorString.c_str(), Title); + } + return Error == GL_NO_ERROR; +} + void Conway::initializeGL() { if (glewInit() != GLEW_OK) std::exit(EXIT_FAILURE); @@ -105,17 +138,17 @@ void Conway::initializeGL() std::istreambuf_iterator{} }; auto pshader_string = shader_string.c_str(); GLuint shader = glCreateShader(shader_stage); - glShaderSource(shader, 1, &pshader_string, NULL); - glCompileShader(shader); + glShaderSource(shader, 1, &pshader_string, NULL); checkError("glShaderSource(shader, 1, &pshader_string, NULL)"); + glCompileShader(shader); checkError("glCompileShader(shader)"); GLint status = GL_FALSE; - glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); checkError("glGetShaderiv(shader, GL_COMPILE_STATUS, &status)"); if(status != GL_TRUE) { int log_length = 0; - glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); checkError("glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length)"); std::vector shader_log(log_length); - glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); + glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); checkError("glGetShaderInfoLog(shader, log_length, NULL, shader_log.data())"); std::cerr << std::string(shader_log.cbegin(), shader_log.cend()) << std::endl; } @@ -123,19 +156,19 @@ void Conway::initializeGL() }; auto create_program = [](std::initializer_list shader_stages) { - GLuint program = glCreateProgram(); - for (auto shader_stage : shader_stages) - glAttachShader(program, shader_stage); + GLuint program = glCreateProgram(); checkError("glCreateProgram()"); + for (auto shader_stage : shader_stages) { + glAttachShader(program, shader_stage); checkError("glAttachShader(program, shader_stage)"); } - glLinkProgram(program); + glLinkProgram(program); checkError("glLinkProgram(program)"); GLint status = GL_FALSE; - glGetProgramiv(program, GL_LINK_STATUS, &status); + glGetProgramiv(program, GL_LINK_STATUS, &status); checkError("glGetProgramiv(program, GL_LINK_STATUS, &status)"); if(status != GL_TRUE) { int log_length = 0; - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); checkError("glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length)"); std::vector program_log(log_length); - glGetProgramInfoLog(program, log_length, NULL, program_log.data()); + glGetProgramInfoLog(program, log_length, NULL, program_log.data()); checkError("glGetProgramInfoLog(program, log_length, NULL, program_log.data())"); std::cerr << std::string(program_log.cbegin(), program_log.cend()) << std::endl; } @@ -144,7 +177,7 @@ void Conway::initializeGL() vertex_shader = create_shader("./conway.vert.glsl", GL_VERTEX_SHADER); fragment_shader = create_shader("./conway.frag.glsl", GL_FRAGMENT_SHADER); - shader_program = create_program({ vertex_shader, fragment_shader }); + gl_program = create_program({ vertex_shader, fragment_shader }); std::vector quad = // vertices , tex coords @@ -154,26 +187,52 @@ void Conway::initializeGL() 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f }; - glGenBuffers(1, &vertex_buffer); - glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); - glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW); - glBindBuffer(GL_ARRAY_BUFFER, 0); + glGenBuffers(1, &vertex_buffer); checkError("glGenBuffers(1, &vertex_buffer)"); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); + glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW); checkError("glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW)"); + glBindBuffer(GL_ARRAY_BUFFER, 0); checkError("glBindBuffer(GL_ARRAY_BUFFER, 0)"); + + glGenVertexArrays(1, &vertex_array); checkError("glGenVertexArrays(1, &vertex_array)"); + glBindVertexArray(vertex_array); checkError("glBindVertexArray(vertex_array)"); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL)); checkError("glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL))"); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float))); checkError("glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float)))"); + glEnableVertexAttribArray(0); checkError("glEnableVertexAttribArray(0)"); + glEnableVertexAttribArray(1); checkError("glEnableVertexAttribArray(1)"); + glBindVertexArray(0); checkError("glBindVertexArray(0)"); + + std::vector texels; + std::generate_n(std::back_inserter(texels), + getSize().x * getSize().y, + [prng = std::ranlux48{ std::random_device{}() }, + dist = std::uniform_int_distribution{ 0, 1 }]() mutable + { + return static_cast(dist(prng)); + }); - glGenVertexArrays(1, &vertex_array); - glBindVertexArray(vertex_array); - glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL)); - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float))); - glEnableVertexAttribArray(0); - glEnableVertexAttribArray(1); - glBindVertexArray(0); + glUseProgram(gl_program); checkError(""); + for(auto image : {&gl_images.front, &gl_images.back}) + { + glGenTextures(1, image); checkError("glGenTextures(1, image);"); + glActiveTexture(GL_TEXTURE0); checkError("glActiveTexture(GL_TEXTURE0);"); + glBindTexture(GL_TEXTURE_2D, *image); checkError("glBindTexture(GL_TEXTURE_2D, *image);"); + glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data()); checkError("glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data())"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);"); + glBindTexture(GL_TEXTURE_2D, 0); checkError("glBindTexture(GL_TEXTURE_2D, 0);"); + } + glUseProgram(0); checkError("glUseProgram(0);"); - + glViewport(0, 0, getSize().x, getSize().y); checkError("glViewport(0, 0, getSize().x, getSize().y)"); + glDisable(GL_DEPTH_TEST); checkError("glDisable(GL_DEPTH_TEST)"); } void Conway::initializeCL() { device = opencl_context.getInfo().at(0); + queue = cl::CommandQueue{ opencl_context, device }; // Compile kernel const char* kernel_location = "./conway.cl"; @@ -181,11 +240,11 @@ void Conway::initializeCL() if (!kernel_stream.is_open()) throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; - program = cl::Program{ opencl_context, - std::string{ std::istreambuf_iterator{ kernel_stream }, - std::istreambuf_iterator{} } }; - program.build( device ); - kernel = cl::Kernel{program, "conway"}; + cl_program = cl::Program{ opencl_context, + std::string{ std::istreambuf_iterator{ kernel_stream }, + std::istreambuf_iterator{} } }; + cl_program.build( device ); + kernel = cl::Kernel{cl_program, "conway"}; // Translate OpenGL object handles into OpenCL handles cl_images.front = cl::ImageGL{opencl_context, CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, gl_images.front}; @@ -197,14 +256,63 @@ void Conway::initializeCL() void Conway::updateScene() { + auto conway = cl::KernelFunctor{cl_program, "conway"}; + cl::Event acquire, release; + + queue.enqueueAcquireGLObjects(&interop_resources, nullptr, &acquire); + + conway( + cl::EnqueueArgs{ + queue, + cl::NDRange{ getSize().x, getSize().y } + }, + cl_images.front, + cl_images.back, + cl_float2{ + 1.f / getSize().x, + 1.f / getSize().y + } + ); + + queue.enqueueReleaseGLObjects(&interop_resources, nullptr, &release); + + // Wait for all OpenCL commands to finish + if (!cl_khr_gl_event_supported) cl::finish(); + else release.wait(); + + // Swap front and back buffer handles + std::swap(cl_images.front, cl_images.back); + std::swap(gl_images.front, gl_images.back); } void Conway::render() { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(gl_program); + glBindVertexArray(vertex_array); + glBindTexture(GL_TEXTURE_2D, gl_images.front); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, static_cast(4)); + + glBindTexture(GL_TEXTURE_2D, 0); + glBindVertexArray(0); + glUseProgram(0); + + // Wait for all drawing commands to finish + if (!cl_khr_gl_event_supported) glFinish(); + else glFlush(); } -void Conway::event(const sf::Event&) {} +void Conway::event(const sf::Event& event) +{ + switch(event.type) + { + case sf::Event::Closed: + close(); + break; + } +} int main(int argc, char* argv[]) { From d3d894dd984957fdc9e0afb1cb7c9a9ae32fc705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 10:22:09 +0100 Subject: [PATCH 124/203] Added generic windowing options --- lib/include/CL/SDK/CLI.hpp | 22 ++++++++++++++++++++++ lib/include/CL/SDK/Options.hpp | 6 ++++++ samples/extensions/khr/conway/main.cpp | 16 ++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index 50094c8f..e80d0419 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -113,3 +113,25 @@ cl::sdk::options::SingleDevice cl::sdk::comprehendgetValue()) }; } + +template <> +auto cl::sdk::parse() +{ + return std::make_tuple( + std::make_shared>("x", "width", "Width of window", false, 800, "positive integral"), + std::make_shared>("y", "height", "Height of window", false, 800, "positive integral"), + std::make_shared("f", "fullscreen", "Fullscreen window", false) + ); +} +template <> +cl::sdk::options::Window cl::sdk::comprehend( + std::shared_ptr> width_arg, + std::shared_ptr> height_arg, + std::shared_ptr fullscreen_arg) +{ + return options::Window{ + width_arg->getValue(), + height_arg->getValue(), + fullscreen_arg->getValue() + }; +} diff --git a/lib/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp index 6f1b82e2..bb5cacb6 100644 --- a/lib/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -28,6 +28,12 @@ namespace options { cl::vector triplets; }; + struct Window + { + int width; + int height; + bool fullscreen; + }; } } } diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index ca2b5ef6..b55451a0 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -53,13 +53,16 @@ class Conway : public cl::util::InteropWindow { public: explicit Conway( + int width, + int height, + bool fullscreen, int platform_id = 0, int device_id = 0, cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT ) : InteropWindow{ - sf::VideoMode::VideoMode(800,800), + sf::VideoMode::VideoMode(width,height), "Conway's Game of Life", - sf::Style::Default, + fullscreen ? sf::Style::Fullscreen : sf::Style::Default, sf::ContextSettings{ 0, 0, 0, // Depth, Stencil, AA 3, 3, // OpenGL version @@ -321,10 +324,15 @@ int main(int argc, char* argv[]) // Parse command-line options auto opts = cl::sdk::parse_cli< cl::sdk::options::Diagnostic, - cl::sdk::options::SingleDevice>(argc, argv); - const auto& dev_opts = std::get<1>(opts).triplet; + cl::sdk::options::SingleDevice, + cl::sdk::options::Window>(argc, argv); + const auto& dev_opts = std::get<1>(opts).triplet; + const auto& win_opts = std::get<2>(opts); Conway window{ + win_opts.width, + win_opts.height, + win_opts.fullscreen, dev_opts.plat_index, dev_opts.dev_index, dev_opts.dev_type From 1a78e739683e103e066c97856632090233827adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 10:25:31 +0100 Subject: [PATCH 125/203] Fix grammar --- samples/core/reduce/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/reduce/README.md b/samples/core/reduce/README.md index 1ab358e0..4f2ba4ff 100644 --- a/samples/core/reduce/README.md +++ b/samples/core/reduce/README.md @@ -72,7 +72,7 @@ _(Note: the main reason why net kernel execution time doesn't amount to the time ## Kernel logic -The sample implements a special case of reduction, where the binary operation can meaningfully operate on any combination of input data and accumulators. (for the non-special case interface, refer to [`std::reduce`](https://en.cppreference.com/w/cpp/algorithm/reduce)) The kernel holds three implementations which are all enabled/disabled based on host side queries. +The sample implements a special case of reduction, where the binary operation can meaningfully operate on any combination of input data and accumulators. (For the non-special case interface, refer to [`std::reduce`](https://en.cppreference.com/w/cpp/algorithm/reduce).) The kernel holds three implementations which are all enabled/disabled based on host side queries. ### Vanilla work-group reduction From 2e8d7f9bb0ea2bf1231336906e5b7b5a44a0b6b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 15:04:01 +0100 Subject: [PATCH 126/203] Conditional CMake minimum bump --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78658351..3b59aa52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,7 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(third_party/cargs) add_subdirectory(third_party/stb) if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) + cmake_minimum_required(VERSION 3.3) # SFML 2 won't find_dependency(Freetype) under 3.3 find_package(OpenGL REQUIRED) find_package(SFML 2 REQUIRED From 804d829678f28323e6dea688c543c2f852e068a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 15:04:48 +0100 Subject: [PATCH 127/203] Bump image versions --- .gitlab/stream-ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index e51b3d93..1cd83b56 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -20,7 +20,7 @@ variables: ######################## .toolchain-matrix-minimum: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211103 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211117 parallel: matrix: # NOTE: Old CMake versions will likely not use cutting-edge compilers @@ -40,7 +40,7 @@ variables: - git submodule sync && git submodule update --init --recursive .toolchain-matrix-latest: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211103 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211117 parallel: matrix: # NOTE: Cutting edge CMake versions will likely not use old compilers @@ -180,7 +180,7 @@ build:cmake-latest: test:cmake-minimum-rocm: extends: .exec-matrix-minimum - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211117 tags: - rocm-stable stage: test @@ -193,7 +193,7 @@ test:cmake-minimum-rocm: test:cmake-latest-rocm: extends: .exec-matrix-latest - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211104 + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211117 tags: - rocm-stable stage: test From 555703944d586bbfc6402c67408ba2498e883360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 15:07:53 +0100 Subject: [PATCH 128/203] Bump minimum CMake ver in CI --- .gitlab/stream-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 1cd83b56..7b3327e6 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -10,7 +10,7 @@ variables: DEPS_DIR: "$CI_PROJECT_DIR/dependencies" BUILD_DIR: "$CI_PROJECT_DIR/build" INSTALL_DIR: "$CI_PROJECT_DIR/install" - CMAKE_MINIMUM: "3.1.3" + CMAKE_MINIMUM: "3.3.2" CMAKE_LATEST: "3.21.2" ######################## From 6ada8a100c6b0b8ca725ad135f412797483006b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 15:57:48 +0100 Subject: [PATCH 129/203] Backport IMPT TGT --- lib/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 75c23874..621f60bb 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -13,9 +13,13 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp OpenCL::Utils - OpenGL::GL sfml-window ) + if(CMAKE_VERSION VERSION_LESS 3.4) + list(APPEND UTIL_LIB_DEPS ${OPENGL_LIBRARIES}) + else() + list(APPEND UTIL_LIB_DEPS OpenGL::OpenGL) + endif() set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() message(FATAL_ERROR "Unkown SDK flavor") From d76d13b566c38078f48265fb92bb56822f502a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 16:03:29 +0100 Subject: [PATCH 130/203] Remove explicit OpenGL::OpenGL --- samples/extensions/khr/conway/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/extensions/khr/conway/CMakeLists.txt b/samples/extensions/khr/conway/CMakeLists.txt index 68a9395c..36dc874b 100644 --- a/samples/extensions/khr/conway/CMakeLists.txt +++ b/samples/extensions/khr/conway/CMakeLists.txt @@ -18,5 +18,5 @@ add_sample( VERSION 120 SOURCES main.cpp INCLUDES ${TCLAP_INCLUDE_DIR} - LIBS sfml-window OpenGL::GL GLEW::GLEW + LIBS sfml-window GLEW::GLEW ) From 212bb78fe8a46a9fa14e135bb50e38088739ebcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 16:18:10 +0100 Subject: [PATCH 131/203] Platform-specific OpenGL --- CMakeLists.txt | 2 +- lib/CMakeLists.txt | 4 ++-- samples/extensions/khr/conway/main.cpp | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b59aa52..92e0a019 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) find_package(OpenGL REQUIRED) find_package(SFML 2 REQUIRED - COMPONENTS window + COMPONENTS window graphics ) find_package(GLEW REQUIRED) endif() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 621f60bb..531fd8b4 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -13,12 +13,12 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp OpenCL::Utils - sfml-window + sfml-window sfml-graphics ) if(CMAKE_VERSION VERSION_LESS 3.4) list(APPEND UTIL_LIB_DEPS ${OPENGL_LIBRARIES}) else() - list(APPEND UTIL_LIB_DEPS OpenGL::OpenGL) + list(APPEND UTIL_LIB_DEPS OpenGL::GL) endif() set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index b55451a0..d6a3ecfe 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -36,6 +36,7 @@ #include // OpenGL includes +#include #include template From 62888739b73ce3daede4677379a765b38ad99e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 18:40:38 +0100 Subject: [PATCH 132/203] Update minimum CMake for samples to 3.10 --- .gitlab/stream-ci.yaml | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 7b3327e6..1fa29948 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -10,7 +10,7 @@ variables: DEPS_DIR: "$CI_PROJECT_DIR/dependencies" BUILD_DIR: "$CI_PROJECT_DIR/build" INSTALL_DIR: "$CI_PROJECT_DIR/install" - CMAKE_MINIMUM: "3.3.2" + CMAKE_MINIMUM: "3.10.3" CMAKE_LATEST: "3.21.2" ######################## diff --git a/CMakeLists.txt b/CMakeLists.txt index 92e0a019..3b19e402 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,7 @@ add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(third_party/cargs) add_subdirectory(third_party/stb) if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) - cmake_minimum_required(VERSION 3.3) # SFML 2 won't find_dependency(Freetype) under 3.3 + cmake_minimum_required(VERSION 3.10) # SFML 2 won't find Freetype::Freetype under 3.10 find_package(OpenGL REQUIRED) find_package(SFML 2 REQUIRED From 361cbbe779ae9d4d27548af00fb79d89b2158817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 17 Nov 2021 18:45:57 +0100 Subject: [PATCH 133/203] Include X11 headers --- lib/src/Utils/InteropContext.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/Utils/InteropContext.cpp b/lib/src/Utils/InteropContext.cpp index 30259a8e..aa4fde62 100644 --- a/lib/src/Utils/InteropContext.cpp +++ b/lib/src/Utils/InteropContext.cpp @@ -1,5 +1,6 @@ #include +#include cl::vector cl::util::get_interop_context_properties(const cl::Device& device) From feadafab191c8b93478ad6a0d9d8a48c71ac39ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 11:23:01 +0100 Subject: [PATCH 134/203] No explicit CTOR call --- samples/extensions/khr/conway/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index d6a3ecfe..dd7b63b7 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -61,7 +61,7 @@ class Conway : public cl::util::InteropWindow int device_id = 0, cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT ) : InteropWindow{ - sf::VideoMode::VideoMode(width,height), + sf::VideoMode(width,height), "Conway's Game of Life", fullscreen ? sf::Style::Fullscreen : sf::Style::Default, sf::ContextSettings{ From c527075ec55532552f60e8525b3b7ace8aa5d4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 11:23:20 +0100 Subject: [PATCH 135/203] More precise platform header includes --- lib/src/Utils/InteropContext.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/src/Utils/InteropContext.cpp b/lib/src/Utils/InteropContext.cpp index aa4fde62..0affb178 100644 --- a/lib/src/Utils/InteropContext.cpp +++ b/lib/src/Utils/InteropContext.cpp @@ -1,7 +1,16 @@ #include -#include +// Platform includes +#ifdef _WIN32 +#include +#include // wglGetCurrent...() +#endif +#ifdef __linux__ +#include +#undef None +#endif + +//#include cl::vector cl::util::get_interop_context_properties(const cl::Device& device) { From 389bdb8125fca88156dead680117e93cb1bf4ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 12:34:11 +0100 Subject: [PATCH 136/203] Install GLU in CI --- .gitlab/stream-ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 1fa29948..ca70444a 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -38,6 +38,7 @@ variables: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - git submodule sync && git submodule update --init --recursive + - apt install libglu1-mesa-dev -y -qq .toolchain-matrix-latest: image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211117 @@ -58,6 +59,7 @@ variables: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - git submodule sync && git submodule update --init --recursive + - apt install libglu1-mesa-dev -y -qq .exec-matrix-minimum: parallel: From 829ddec1c5b2c981f459c4cce2e26257c701354b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 12:45:40 +0100 Subject: [PATCH 137/203] Refine dependency detection --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b19e402..fd032f88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,11 +47,19 @@ add_subdirectory(third_party/stb) if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) cmake_minimum_required(VERSION 3.10) # SFML 2 won't find Freetype::Freetype under 3.10 find_package(OpenGL REQUIRED) + if(CMAKE_SYSTEM_NAME MATCHES Linux) # TODO: Add EGL support + # OpenGL doesn't explicitly depend on X11 (as of CMake v3.2) but we'll need it + find_package(X11 REQUIRED) + endif() + find_package(GLEW REQUIRED) + if(NOT TARGET OpenGL::GLU) + # GLU is a dependency of GLEW but it's not advertized as an OpenGL COMPONENT + message(FATAL_ERROR "GLEW depends on GLU but was not found.") + endif() find_package(SFML 2 REQUIRED COMPONENTS window graphics ) - find_package(GLEW REQUIRED) endif() add_subdirectory(lib) From e231240262b7954a564f4594c07dea884d8c619f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 12:45:52 +0100 Subject: [PATCH 138/203] Add deps to Util lib --- lib/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 531fd8b4..98e193d7 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -13,7 +13,11 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp OpenCL::Utils - sfml-window sfml-graphics + OpenGL::GL + GLEW::GLEW + $<$:OpenGL::GLU> + sfml-window + sfml-graphics ) if(CMAKE_VERSION VERSION_LESS 3.4) list(APPEND UTIL_LIB_DEPS ${OPENGL_LIBRARIES}) From 33ad12a69e604708a47d65ad1fe6b2b1e124c6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 12:55:28 +0100 Subject: [PATCH 139/203] GCC warning: expression result unused --- lib/include/CL/Utils/Detail.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index ed7e155b..facd6b86 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -16,7 +16,7 @@ namespace detail template F for_each_arg(F f, Args&&...args) { - std::initializer_list{((void)f(std::forward(args)), 0)...}; + (void)std::initializer_list{((void)f(std::forward(args)), 0)...}; return f; } From 5a255e04ed88c8413ad7406694b8b9c14421947d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 13:02:05 +0100 Subject: [PATCH 140/203] MSVC warning: unreachable code --- lib/include/CL/Utils/Error.hpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index bb22f145..11e7c59d 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -68,16 +68,21 @@ namespace detail } } -cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char* errStr) +#if defined(CL_HPP_ENABLE_EXCEPTIONS) +cl_int cl::util::detail::errHandler(cl_int err, cl_int*, const char* errStr) { if (err != CL_SUCCESS) - { -#if defined(CL_HPP_ENABLE_EXCEPTIONS) throw cl::util::Error{err, errStr}; -#endif - (void)errStr; // suppress unused variable warning + return err; +} +#else +cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char*) +{ + if (err != CL_SUCCESS) + { if (errPtr != nullptr) *errPtr = err; } return err; } +#endif From 99c8046d62f4ed0f6afb41fb52510eb66e55853b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 13:02:23 +0100 Subject: [PATCH 141/203] Fix error variable --- lib/src/Utils/Context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index 96519818..aba7bfb7 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -27,7 +27,7 @@ cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, ); } else - detail::errHandler(plat_err, error); + detail::errHandler(dev_err, error); } else detail::errHandler( From 71dcc4aa6cec5662f4aa634bcdcfce7afcd2dd66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 13:25:47 +0100 Subject: [PATCH 142/203] Don't test GUI sample --- samples/extensions/khr/conway/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/extensions/khr/conway/CMakeLists.txt b/samples/extensions/khr/conway/CMakeLists.txt index 36dc874b..03f930ce 100644 --- a/samples/extensions/khr/conway/CMakeLists.txt +++ b/samples/extensions/khr/conway/CMakeLists.txt @@ -13,7 +13,6 @@ # limitations under the License. add_sample( - TEST TARGET conwaycpp VERSION 120 SOURCES main.cpp From 569587288e33cda6511684bad8bc1b479004816c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 14:43:27 +0100 Subject: [PATCH 143/203] Bump image versions --- .gitlab/stream-ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index ca70444a..e01514bb 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -20,7 +20,7 @@ variables: ######################## .toolchain-matrix-minimum: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211117 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 parallel: matrix: # NOTE: Old CMake versions will likely not use cutting-edge compilers @@ -41,7 +41,7 @@ variables: - apt install libglu1-mesa-dev -y -qq .toolchain-matrix-latest: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211117 + image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 parallel: matrix: # NOTE: Cutting edge CMake versions will likely not use old compilers @@ -182,7 +182,7 @@ build:cmake-latest: test:cmake-minimum-rocm: extends: .exec-matrix-minimum - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211117 + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211119 tags: - rocm-stable stage: test @@ -195,7 +195,7 @@ test:cmake-minimum-rocm: test:cmake-latest-rocm: extends: .exec-matrix-latest - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211117 + image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211119 tags: - rocm-stable stage: test From acdce5f0c505ca596e6a2966cd564a99aac0ef5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 19 Nov 2021 14:44:07 +0100 Subject: [PATCH 144/203] Take dep from image --- .gitlab/stream-ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index e01514bb..9f83a0ee 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -38,7 +38,6 @@ variables: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - git submodule sync && git submodule update --init --recursive - - apt install libglu1-mesa-dev -y -qq .toolchain-matrix-latest: image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 @@ -59,7 +58,6 @@ variables: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - git submodule sync && git submodule update --init --recursive - - apt install libglu1-mesa-dev -y -qq .exec-matrix-minimum: parallel: From 48f5fdce669ec6894f63f2a8b764ec29c0232708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 22 Nov 2021 12:09:45 +0100 Subject: [PATCH 145/203] Declare tests only if both user and sample allows --- samples/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 32e23e17..0274f329 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -88,7 +88,7 @@ macro(add_sample) install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) endforeach() - if(OPENCL_SDK_TEST_SAMPLES) + if(OPENCL_SDK_TEST_SAMPLES AND OPENCL_SAMPLE_TEST) add_test( NAME ${OPENCL_SAMPLE_TARGET} COMMAND ${OPENCL_SAMPLE_TARGET} From c3cc6cf258219cf5dcd53d9ae9e1b5cd8fe55d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 22 Nov 2021 15:52:45 +0100 Subject: [PATCH 146/203] WIP --- lib/CMakeLists.txt | 65 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 98e193d7..d6b5c33f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -26,7 +26,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) endif() set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() - message(FATAL_ERROR "Unkown SDK flavor") + message(FATAL_ERROR "Unkown Util flavor") endif() set(UTIL_LIB_TARGET OpenCL${UTIL_LIB_NAME}) add_library(${UTIL_LIB_TARGET} ${UTIL_LIB_SOURCES}) @@ -108,3 +108,66 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) DESTINATION ${config_package_location} ) endforeach() + +foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) + if(SDK_LIB_NAME STREQUAL SDK) + set(SDK_LIB_SOURCES src/SDK/SDK.c) + set(SDK_LIB_DEPS + OpenCL::Headers + OpenCL::Utils + ) + set(SDK_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) + elseif(SDK_LIB_NAME STREQUAL SDKCpp) + set(SDK_LIB_SOURCES src/SDK/SDK.cpp) + set(SDK_LIB_DEPS + OpenCL::HeadersCpp + OpenCL::UtilsCpp + GLEW::GLEW + $<$:OpenGL::GLU> + sfml-window + sfml-graphics + ) + if(CMAKE_VERSION VERSION_LESS 3.4) + list(APPEND SDK_LIB_DEPS ${OPENGL_LIBRARIES}) + else() + list(APPEND SDK_LIB_DEPS OpenGL::GL) + endif() + set(SDK_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) + else() + message(FATAL_ERROR "Unkown SDK flavor") + endif() + set(SDK_LIB_TARGET OpenCL${SDK_LIB_NAME}) + add_library(${SDK_LIB_TARGET} ${SDK_LIB_SOURCES}) + add_library(OpenCL::${SDK_LIB_NAME} ALIAS ${SDK_LIB_TARGET}) + + string(TOUPPER ${SDK_LIB_NAME} UPPER_SDK_LIB_NAME) + generate_export_header(${SDK_LIB_TARGET} + EXPORT_MACRO_NAME ${UPPER_SDK_LIB_NAME}_EXPORT + EXPORT_FILE_NAME OpenCL${SDK_LIB_NAME}_Export.h + ) + + target_include_directories(${SDK_LIB_TARGET} + PUBLIC + $ + $ + $ + ) + target_link_libraries(${SDK_LIB_TARGET} + PUBLIC + ${SDK_LIB_DEPS} + OpenCL::OpenCL + PRIVATE + cargs + stb + ) + target_compile_definitions(${SDK_LIB_TARGET} + PRIVATE + ${SDK_CL_VERSION_MACRO_NAME}=300 + ) + + set_target_properties(${SDK_LIB_TARGET} + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} + FOLDER "Libraries/${SDK_LIB_NAME}" + ) +endforeach() From 85cac55b46a7530ca12ab44baba9c7e495d03348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Mon, 22 Nov 2021 17:08:15 +0100 Subject: [PATCH 147/203] WIP --- lib/include/CL/SDK/Random.hpp | 2 ++ lib/include/CL/SDK/SDK.h | 13 +++++++++++++ lib/include/CL/SDK/SDK.hpp | 0 lib/include/CL/Utils/Utils.h | 2 +- lib/src/SDK/Context.c | 18 ++++++++++++++++++ lib/src/{Utils => SDK}/Image.c | 0 lib/src/{Utils => SDK}/Image.cpp | 0 lib/src/{Utils => SDK}/InteropContext.cpp | 0 lib/src/{Utils => SDK}/InteropWindow.cpp | 0 lib/src/SDK/SDK.c | 4 ++++ lib/src/SDK/SDK.cpp | 3 +++ lib/src/Utils/Utils.c | 2 +- lib/src/Utils/Utils.cpp | 4 +--- samples/extensions/khr/histogram/main.cpp | 2 +- 14 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 lib/include/CL/SDK/SDK.h create mode 100644 lib/include/CL/SDK/SDK.hpp create mode 100644 lib/src/SDK/Context.c rename lib/src/{Utils => SDK}/Image.c (100%) rename lib/src/{Utils => SDK}/Image.cpp (100%) rename lib/src/{Utils => SDK}/InteropContext.cpp (100%) rename lib/src/{Utils => SDK}/InteropWindow.cpp (100%) create mode 100644 lib/src/SDK/SDK.c create mode 100644 lib/src/SDK/SDK.cpp diff --git a/lib/include/CL/SDK/Random.hpp b/lib/include/CL/SDK/Random.hpp index c61da48d..5e162188 100644 --- a/lib/include/CL/SDK/Random.hpp +++ b/lib/include/CL/SDK/Random.hpp @@ -5,6 +5,8 @@ // STL includes #include // std::generate_n +#include // std::begin +#include namespace cl { diff --git a/lib/include/CL/SDK/SDK.h b/lib/include/CL/SDK/SDK.h new file mode 100644 index 00000000..c90e882f --- /dev/null +++ b/lib/include/CL/SDK/SDK.h @@ -0,0 +1,13 @@ +#pragma once + +// OpenCL SDK includes +#include "OpenCLSDK_Export.h" + +#include +#include +#include +#include +#include + +// OpenCL includes +#include diff --git a/lib/include/CL/SDK/SDK.hpp b/lib/include/CL/SDK/SDK.hpp new file mode 100644 index 00000000..e69de29b diff --git a/lib/include/CL/Utils/Utils.h b/lib/include/CL/Utils/Utils.h index 0e1f601d..9d1c2471 100644 --- a/lib/include/CL/Utils/Utils.h +++ b/lib/include/CL/Utils/Utils.h @@ -1,6 +1,6 @@ #pragma once -// OpenCL SDK includes +// OpenCL Utils includes #include "OpenCLUtils_Export.h" #include diff --git a/lib/src/SDK/Context.c b/lib/src/SDK/Context.c new file mode 100644 index 00000000..cb556fe0 --- /dev/null +++ b/lib/src/SDK/Context.c @@ -0,0 +1,18 @@ +// OpenCL SDK includes +#include +#include +#include + +// STL includes +#include // malloc, free +#include // printf + +cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) +{ + return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); +} + +cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) +{ + return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); +} diff --git a/lib/src/Utils/Image.c b/lib/src/SDK/Image.c similarity index 100% rename from lib/src/Utils/Image.c rename to lib/src/SDK/Image.c diff --git a/lib/src/Utils/Image.cpp b/lib/src/SDK/Image.cpp similarity index 100% rename from lib/src/Utils/Image.cpp rename to lib/src/SDK/Image.cpp diff --git a/lib/src/Utils/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp similarity index 100% rename from lib/src/Utils/InteropContext.cpp rename to lib/src/SDK/InteropContext.cpp diff --git a/lib/src/Utils/InteropWindow.cpp b/lib/src/SDK/InteropWindow.cpp similarity index 100% rename from lib/src/Utils/InteropWindow.cpp rename to lib/src/SDK/InteropWindow.cpp diff --git a/lib/src/SDK/SDK.c b/lib/src/SDK/SDK.c new file mode 100644 index 00000000..735e96ce --- /dev/null +++ b/lib/src/SDK/SDK.c @@ -0,0 +1,4 @@ +// OpenCL SDK includes +#include + +#include "Image.c" \ No newline at end of file diff --git a/lib/src/SDK/SDK.cpp b/lib/src/SDK/SDK.cpp new file mode 100644 index 00000000..7b723e40 --- /dev/null +++ b/lib/src/SDK/SDK.cpp @@ -0,0 +1,3 @@ +#include "Image.cpp" +#include "InteropContext.cpp" +#include "InteropWindow.cpp" \ No newline at end of file diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index df9efad0..77cc9cfb 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -3,4 +3,4 @@ #include "Context.c" #include "File.c" -#include "Image.c" + diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index 127c5f46..4dc0c6f8 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1,6 +1,4 @@ #include "Platform.cpp" #include "Device.cpp" #include "Context.cpp" -#include "Image.cpp" -#include "InteropContext.cpp" -#include "InteropWindow.cpp" + diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index 3e2bad05..2bef20e5 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -114,7 +114,7 @@ int main(int argc, char* argv[]) // Initialize input variables cl::sdk::fill_with_random(prng, input); cl_float epsilon = (max - min) / bins; - for(uint index = 0; index < bins; index++) + for(cl_uint index = 0; index < bins; index++) { levels[index] = min + epsilon * index; } From b26e5de9128e40591e030d9096360c9abdc815b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 10:41:32 +0100 Subject: [PATCH 148/203] Utils and SDK lib separation cleanup --- lib/include/CL/SDK/Context.h | 19 ++++++++-------- lib/include/CL/SDK/Image.h | 9 +++++--- lib/include/CL/SDK/Image.hpp | 8 +++---- lib/include/CL/SDK/InteropContext.hpp | 17 ++++++++++++++ .../CL/{Utils => SDK}/InteropWindow.hpp | 11 +++++++--- lib/include/CL/SDK/SDK.h | 2 +- lib/include/CL/SDK/SDK.hpp | 12 ++++++++++ lib/include/CL/Utils/Context.h | 6 +++++ lib/include/CL/Utils/Event.h | 14 +++++------- lib/include/CL/Utils/File.h | 6 +++++ lib/include/CL/Utils/InteropContext.hpp | 16 -------------- lib/include/CL/Utils/Utils.hpp | 7 +++++- lib/src/SDK/Context.c | 5 +++-- lib/src/SDK/Image.c | 6 ++--- lib/src/SDK/Image.cpp | 2 -- lib/src/SDK/InteropContext.cpp | 22 ++++++++++--------- lib/src/SDK/InteropWindow.cpp | 10 ++++----- lib/src/SDK/SDK.c | 5 +++-- lib/src/SDK/SDK.cpp | 5 ++++- lib/src/Utils/Context.c | 5 ++--- lib/src/Utils/Event.c | 12 ++++++++++ lib/src/Utils/File.c | 5 ++--- lib/src/Utils/Utils.c | 6 ++--- lib/src/Utils/Utils.cpp | 4 +++- samples/CMakeLists.txt | 2 ++ samples/extensions/khr/conway/main.cpp | 15 +++++-------- 26 files changed, 140 insertions(+), 91 deletions(-) create mode 100644 lib/include/CL/SDK/InteropContext.hpp rename lib/include/CL/{Utils => SDK}/InteropWindow.hpp (87%) delete mode 100644 lib/include/CL/Utils/InteropContext.hpp create mode 100644 lib/src/Utils/Event.c diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index 14a6f8ed..392cdd1d 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -1,15 +1,16 @@ #pragma once +// OpenCL SDK includes +#include "OpenCLSDK_Export.h" + // OpenCL SDK includes #include -#include -cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) -{ - return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); -} +// OpenCL includes +#include + +SDK_EXPORT +cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error); -cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) -{ - return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); -} +SDK_EXPORT +cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error); diff --git a/lib/include/CL/SDK/Image.h b/lib/include/CL/SDK/Image.h index 1482d8e3..8c6d5b88 100644 --- a/lib/include/CL/SDK/Image.h +++ b/lib/include/CL/SDK/Image.h @@ -1,7 +1,10 @@ #pragma once // OpenCL SDK includes -#include "OpenCLUtils_Export.h" +#include "OpenCLSDK_Export.h" + +// OpenCL includes +#include typedef struct cl_sdk_image { @@ -10,8 +13,8 @@ typedef struct cl_sdk_image } cl_sdk_image; -UTILS_EXPORT +SDK_EXPORT cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err); -UTILS_EXPORT +SDK_EXPORT void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err); diff --git a/lib/include/CL/SDK/Image.hpp b/lib/include/CL/SDK/Image.hpp index 993d2399..bc3453f7 100644 --- a/lib/include/CL/SDK/Image.hpp +++ b/lib/include/CL/SDK/Image.hpp @@ -1,7 +1,7 @@ #pragma once // OpenCL SDK includes -#include "OpenCLUtilsCpp_Export.h" +#include "OpenCLSDKCpp_Export.h" // OpenCL includes #include @@ -13,13 +13,13 @@ namespace sdk struct Image { int width, height, pixel_size; - std::vector pixels; + cl::vector pixels; }; - UTILSCPP_EXPORT + SDKCPP_EXPORT Image read_image(const char* file_name, cl_int* err); - UTILSCPP_EXPORT + SDKCPP_EXPORT void write_image(const char* file_name, const Image& image, cl_int* err); } } diff --git a/lib/include/CL/SDK/InteropContext.hpp b/lib/include/CL/SDK/InteropContext.hpp new file mode 100644 index 00000000..21e51280 --- /dev/null +++ b/lib/include/CL/SDK/InteropContext.hpp @@ -0,0 +1,17 @@ +#pragma once + +// OpenCL SDK includes +#include "OpenCLSDKCpp_Export.h" + +// OpenCL includes +#include + +namespace cl +{ +namespace sdk +{ + vector SDKCPP_EXPORT get_interop_context_properties(const cl::Device& plat); + + Context SDKCPP_EXPORT get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); +} +} diff --git a/lib/include/CL/Utils/InteropWindow.hpp b/lib/include/CL/SDK/InteropWindow.hpp similarity index 87% rename from lib/include/CL/Utils/InteropWindow.hpp rename to lib/include/CL/SDK/InteropWindow.hpp index 4cc3144b..e65667bf 100644 --- a/lib/include/CL/Utils/InteropWindow.hpp +++ b/lib/include/CL/SDK/InteropWindow.hpp @@ -1,18 +1,23 @@ #pragma once -#include "OpenCLUtilsCpp_Export.h" +// OpenCL SDK includes +#include "OpenCLSDKCpp_Export.h" + +// OpenCL Utils includes #include +// OpenCL includes #include +// SFML includes #include #include namespace cl { -namespace util +namespace sdk { - class UTILSCPP_EXPORT InteropWindow : public sf::Window + class SDKCPP_EXPORT InteropWindow : public sf::Window { public: explicit InteropWindow( diff --git a/lib/include/CL/SDK/SDK.h b/lib/include/CL/SDK/SDK.h index c90e882f..884c91d2 100644 --- a/lib/include/CL/SDK/SDK.h +++ b/lib/include/CL/SDK/SDK.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include // OpenCL includes #include diff --git a/lib/include/CL/SDK/SDK.hpp b/lib/include/CL/SDK/SDK.hpp index e69de29b..82a6b113 100644 --- a/lib/include/CL/SDK/SDK.hpp +++ b/lib/include/CL/SDK/SDK.hpp @@ -0,0 +1,12 @@ +#pragma once + +// OpenCL SDK includes +#include "OpenCLSDK_Export.h" + +#include +#include +#include +#include + +// OpenCL includes +#include diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index f5f1fa88..a69908a1 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -1,5 +1,11 @@ #pragma once +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + +// OpenCL includes +#include + // STL includes #include diff --git a/lib/include/CL/Utils/Event.h b/lib/include/CL/Utils/Event.h index b872adff..f6528164 100644 --- a/lib/include/CL/Utils/Event.h +++ b/lib/include/CL/Utils/Event.h @@ -1,14 +1,10 @@ #pragma once +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + // OpenCL includes #include -cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) -{ - cl_ulong start_time = 0, end_time = 0; - OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); - OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); - return end_time - start_time; - -end: return 0; -} \ No newline at end of file +UTILS_EXPORT +cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error); \ No newline at end of file diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index d474eeb7..84e61cd7 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -1,5 +1,11 @@ #pragma once +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + +// OpenCL includes +#include + // read all the text file contents securely in ANSI C89 // return pointer to C-string with file contents // can handle streams with no known size and no support for fseek diff --git a/lib/include/CL/Utils/InteropContext.hpp b/lib/include/CL/Utils/InteropContext.hpp deleted file mode 100644 index 9c308ef7..00000000 --- a/lib/include/CL/Utils/InteropContext.hpp +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "OpenCLUtilsCpp_Export.h" -#include - -#include - -namespace cl -{ -namespace util -{ - vector UTILSCPP_EXPORT get_interop_context_properties(const cl::Device& plat); - - Context UTILSCPP_EXPORT get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); -} -} diff --git a/lib/include/CL/Utils/Utils.hpp b/lib/include/CL/Utils/Utils.hpp index 4e8d900b..40dd8d79 100644 --- a/lib/include/CL/Utils/Utils.hpp +++ b/lib/include/CL/Utils/Utils.hpp @@ -1,9 +1,14 @@ #pragma once -// OpenCL SDK includes +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + #include #include #include #include #include #include + +// OpenCL includes +#include diff --git a/lib/src/SDK/Context.c b/lib/src/SDK/Context.c index cb556fe0..c3651569 100644 --- a/lib/src/SDK/Context.c +++ b/lib/src/SDK/Context.c @@ -1,6 +1,7 @@ // OpenCL SDK includes -#include -#include +#include + +// OpenCL Utils includes #include // STL includes diff --git a/lib/src/SDK/Image.c b/lib/src/SDK/Image.c index b828e005..fce297e3 100644 --- a/lib/src/SDK/Image.c +++ b/lib/src/SDK/Image.c @@ -1,7 +1,9 @@ // OpenCL SDK includes -#include #include +// OpenCL Utils includes +#include + // STL includes #include // fprintf #include // tolower @@ -15,7 +17,6 @@ // OpenCL includes #include -UTILS_EXPORT cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err) { cl_sdk_image im = { .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL }; @@ -40,7 +41,6 @@ static char * to_lowercase(const char * s, char * d, size_t n) return d; } -UTILS_EXPORT void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err) { *err = CL_SUCCESS; diff --git a/lib/src/SDK/Image.cpp b/lib/src/SDK/Image.cpp index 041f9fd9..505fc767 100644 --- a/lib/src/SDK/Image.cpp +++ b/lib/src/SDK/Image.cpp @@ -24,7 +24,6 @@ namespace cl { namespace sdk { - UTILSCPP_EXPORT Image read_image(const char* file_name, cl_int * err) { Image im; @@ -39,7 +38,6 @@ namespace sdk return im; } - UTILSCPP_EXPORT void write_image(const char * file_name, const Image& image, cl_int * err) { *err = CL_SUCCESS; diff --git a/lib/src/SDK/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp index 0affb178..584dc377 100644 --- a/lib/src/SDK/InteropContext.cpp +++ b/lib/src/SDK/InteropContext.cpp @@ -1,4 +1,8 @@ -#include +// OpenCL SDK includes +#include + +// OpenCL Utils includes +#include // Platform includes #ifdef _WIN32 @@ -10,9 +14,7 @@ #undef None #endif -//#include - -cl::vector cl::util::get_interop_context_properties(const cl::Device& device) +cl::vector cl::sdk::get_interop_context_properties(const cl::Device& device) { return cl::vector{ CL_CONTEXT_PLATFORM, reinterpret_cast(cl::Platform{ device.getInfo() }()), @@ -28,7 +30,7 @@ cl::vector cl::util::get_interop_context_properties(const }; } -cl::Context cl::util::get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +cl::Context cl::sdk::get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); @@ -68,7 +70,7 @@ cl::Context cl::util::get_interop_context(int plat_id, int dev_id, cl_device_typ return context; else { - detail::errHandler( + cl::util::detail::errHandler( CL_UTIL_DEVICE_NOT_INTEROPERABLE, error, "Selected device isn't interoperable with the current OpenGL context." @@ -77,24 +79,24 @@ cl::Context cl::util::get_interop_context(int plat_id, int dev_id, cl_device_typ } } else - detail::errHandler( + cl::util::detail::errHandler( CL_UTIL_INDEX_OUT_OF_RANGE, error, "Invalid device index provided for cl::Context cl::sdk::get_context()" ); } else - detail::errHandler(plat_err, error); + cl::util::detail::errHandler(plat_err, error); } else - detail::errHandler( + cl::util::detail::errHandler( CL_UTIL_INDEX_OUT_OF_RANGE, error, "Invalid platform index provided for cl::Context cl::sdk::get_context()" ); } else - detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); + cl::util::detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); return cl::Context{}; } diff --git a/lib/src/SDK/InteropWindow.cpp b/lib/src/SDK/InteropWindow.cpp index cef7de5d..bbcf29f9 100644 --- a/lib/src/SDK/InteropWindow.cpp +++ b/lib/src/SDK/InteropWindow.cpp @@ -1,8 +1,8 @@ -#include +// OpenCL SDK includes +#include +#include -#include - -cl::util::InteropWindow::InteropWindow( +cl::sdk::InteropWindow::InteropWindow( sf::VideoMode mode, const sf::String& title, sf::Uint32 style, @@ -18,7 +18,7 @@ cl::util::InteropWindow::InteropWindow( { } -void cl::util::InteropWindow::run() +void cl::sdk::InteropWindow::run() { setActive(true); diff --git a/lib/src/SDK/SDK.c b/lib/src/SDK/SDK.c index 735e96ce..cab9ea55 100644 --- a/lib/src/SDK/SDK.c +++ b/lib/src/SDK/SDK.c @@ -1,4 +1,5 @@ // OpenCL SDK includes -#include +#include -#include "Image.c" \ No newline at end of file +#include "Context.c" +#include "Image.c" diff --git a/lib/src/SDK/SDK.cpp b/lib/src/SDK/SDK.cpp index 7b723e40..81c083b1 100644 --- a/lib/src/SDK/SDK.cpp +++ b/lib/src/SDK/SDK.cpp @@ -1,3 +1,6 @@ +// OpenCL SDK includes +#include + #include "Image.cpp" #include "InteropContext.cpp" -#include "InteropWindow.cpp" \ No newline at end of file +#include "InteropWindow.cpp" diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index f5df1330..10a4bcdc 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -1,7 +1,6 @@ -// OpenCL SDK includes -#include -#include +// OpenCL Utils includes #include +#include // STL includes #include // malloc, free diff --git a/lib/src/Utils/Event.c b/lib/src/Utils/Event.c new file mode 100644 index 00000000..fa7271da --- /dev/null +++ b/lib/src/Utils/Event.c @@ -0,0 +1,12 @@ +// OpenCL Utils includes +#include + +cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) +{ + cl_ulong start_time = 0, end_time = 0; + OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); + OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); + return end_time - start_time; + +end: return 0; +} diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 32b061ba..ab5371f4 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -1,5 +1,5 @@ -// OpenCL SDK includes -#include +// OpenCL Utils includes +#include // STL includes #include // realloc, free @@ -9,7 +9,6 @@ // return pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal -UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) { char * data = NULL, * temp; diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index 77cc9cfb..cd669b9c 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,6 +1,6 @@ -// OpenCL SDK includes +// OpenCL Utils includes #include -#include "Context.c" #include "File.c" - +#include "Context.c" +#include "Event.c" diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index 4dc0c6f8..1985beb1 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1,4 +1,6 @@ +// OpenCL Utils includes +#include + #include "Platform.cpp" #include "Device.cpp" #include "Context.cpp" - diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 0274f329..2802b778 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -66,6 +66,8 @@ macro(add_sample) OpenCL::OpenCL OpenCL::Utils OpenCL::UtilsCpp + OpenCL::SDK + OpenCL::SDKCpp $<$:m> ${OPENCL_SAMPLE_LIBS} ) diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index dd7b63b7..c3ca9868 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -17,12 +17,10 @@ #include // OpenCL SDK includes -#include -#include -#include -#include -#include -#include +#include + +// OpenCL Utils includes +#include // STL includes #include @@ -32,9 +30,6 @@ #include #include // std::make_tuple -// TCLAP includes -#include - // OpenGL includes #include #include @@ -50,7 +45,7 @@ struct DoubleBuffer } }; -class Conway : public cl::util::InteropWindow +class Conway : public cl::sdk::InteropWindow { public: explicit Conway( From 080eae08bc73cd1a65041354ce819373edff821c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 12:23:28 +0000 Subject: [PATCH 149/203] Fix Linux linkage --- lib/CMakeLists.txt | 10 +- lib/include/CL/Utils/Error.h | 223 ++---------------------------- lib/include/CL/Utils/Error.hpp | 33 +---- lib/include/CL/Utils/ErrorCodes.h | 4 + lib/src/SDK/Image.cpp | 3 + lib/src/SDK/InteropContext.cpp | 17 ++- lib/src/Utils/Error.c | 216 +++++++++++++++++++++++++++++ lib/src/Utils/Error.cpp | 21 +++ lib/src/Utils/Utils.cpp | 1 + 9 files changed, 279 insertions(+), 249 deletions(-) create mode 100644 lib/include/CL/Utils/ErrorCodes.h create mode 100644 lib/src/Utils/Error.c create mode 100644 lib/src/Utils/Error.cpp diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index d6b5c33f..ed62ff0f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -55,6 +55,8 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) target_compile_definitions(${UTIL_LIB_TARGET} PRIVATE ${UTIL_CL_VERSION_MACRO_NAME}=300 + PUBLIC + CL_HPP_ENABLE_EXCEPTIONS ) set_target_properties(${UTIL_LIB_TARGET} @@ -118,7 +120,11 @@ foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) ) set(SDK_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) elseif(SDK_LIB_NAME STREQUAL SDKCpp) - set(SDK_LIB_SOURCES src/SDK/SDK.cpp) + set(SDK_LIB_SOURCES + src/SDK/Image.cpp + src/SDK/InteropContext.cpp + src/SDK/InteropWindow.cpp + ) set(SDK_LIB_DEPS OpenCL::HeadersCpp OpenCL::UtilsCpp @@ -163,6 +169,8 @@ foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) target_compile_definitions(${SDK_LIB_TARGET} PRIVATE ${SDK_CL_VERSION_MACRO_NAME}=300 + PUBLIC + CL_HPP_ENABLE_EXCEPTIONS ) set_target_properties(${SDK_LIB_TARGET} diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index 2ef91939..c6c282cf 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -1,13 +1,17 @@ #pragma once +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + +// OpenCL Utils includes +#include + // STL includes #include // fprintf // OpenCL includes #include -#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 - // RET = function returns error code // PAR = functions sets error code in the paremeter @@ -35,216 +39,5 @@ do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) #endif -void cl_util_print_error(cl_int error) -{ - switch (error) { - case CL_SUCCESS: - break; - case CL_DEVICE_NOT_FOUND: - fprintf(stderr, "\nError: CL_DEVICE_NOT_FOUND\n"); - break; - case CL_DEVICE_NOT_AVAILABLE: - fprintf(stderr, "\nError: CL_DEVICE_NOT_AVAILABLE\n"); - break; - case CL_COMPILER_NOT_AVAILABLE: - fprintf(stderr, "\nError: CL_COMPILER_NOT_AVAILABLE\n"); - break; - case CL_MEM_OBJECT_ALLOCATION_FAILURE: - fprintf(stderr, "\nError: CL_MEM_OBJECT_ALLOCATION_FAILURE\n"); - break; - case CL_OUT_OF_RESOURCES: - fprintf(stderr, "\nError: CL_OUT_OF_RESOURCES\n"); - break; - case CL_OUT_OF_HOST_MEMORY: - fprintf(stderr, "\nError: CL_OUT_OF_HOST_MEMORY\n"); - break; - case CL_PROFILING_INFO_NOT_AVAILABLE: - fprintf(stderr, "\nError: CL_PROFILING_INFO_NOT_AVAILABLE\n"); - break; - case CL_MEM_COPY_OVERLAP: - fprintf(stderr, "\nError: CL_MEM_COPY_OVERLAP\n"); - break; - case CL_IMAGE_FORMAT_MISMATCH: - fprintf(stderr, "\nError: CL_IMAGE_FORMAT_MISMATCH\n"); - break; - case CL_IMAGE_FORMAT_NOT_SUPPORTED: - fprintf(stderr, "\nError: CL_IMAGE_FORMAT_NOT_SUPPORTED\n"); - break; - case CL_BUILD_PROGRAM_FAILURE: - fprintf(stderr, "\nError: CL_BUILD_PROGRAM_FAILURE\n"); - break; - case CL_MAP_FAILURE: - fprintf(stderr, "\nError: CL_MAP_FAILURE\n"); - break; -#ifdef CL_VERSION_1_1 - case CL_MISALIGNED_SUB_BUFFER_OFFSET: - fprintf(stderr, "\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); - break; - case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: - fprintf(stderr, "\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); - break; -#endif -#ifdef CL_VERSION_1_2 - case CL_COMPILE_PROGRAM_FAILURE: - fprintf(stderr, "\nError: CL_COMPILE_PROGRAM_FAILURE\n"); - break; - case CL_LINKER_NOT_AVAILABLE: - fprintf(stderr, "\nError: CL_LINKER_NOT_AVAILABLE\n"); - break; - case CL_LINK_PROGRAM_FAILURE: - fprintf(stderr, "\nError: CL_LINK_PROGRAM_FAILURE\n"); - break; - case CL_DEVICE_PARTITION_FAILED: - fprintf(stderr, "\nError: CL_DEVICE_PARTITION_FAILED\n"); - break; - case CL_KERNEL_ARG_INFO_NOT_AVAILABLE: - fprintf(stderr, "\nError: CL_KERNEL_ARG_INFO_NOT_AVAILABLE\n"); - break; -#endif - case CL_INVALID_VALUE: - fprintf(stderr, "\nError: CL_INVALID_VALUE\n"); - break; - case CL_INVALID_DEVICE_TYPE: - fprintf(stderr, "\nError: CL_INVALID_DEVICE_TYPE\n"); - break; - case CL_INVALID_PLATFORM: - fprintf(stderr, "\nError: CL_INVALID_PLATFORM\n"); - break; - case CL_INVALID_DEVICE: - fprintf(stderr, "\nError: CL_INVALID_DEVICE\n"); - break; - case CL_INVALID_CONTEXT: - fprintf(stderr, "\nError: CL_INVALID_CONTEXT\n"); - break; - case CL_INVALID_QUEUE_PROPERTIES: - fprintf(stderr, "\nError: CL_INVALID_QUEUE_PROPERTIES\n"); - break; - case CL_INVALID_COMMAND_QUEUE: - fprintf(stderr, "\nError: CL_INVALID_COMMAND_QUEUE\n"); - break; - case CL_INVALID_HOST_PTR: - fprintf(stderr, "\nError: CL_INVALID_HOST_PTR\n"); - break; - case CL_INVALID_MEM_OBJECT: - fprintf(stderr, "\nError: CL_INVALID_MEM_OBJECT\n"); - break; - case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: - fprintf(stderr, "\nError: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR\n"); - break; - case CL_INVALID_IMAGE_SIZE: - fprintf(stderr, "\nError: CL_INVALID_IMAGE_SIZE\n"); - break; - case CL_INVALID_SAMPLER: - fprintf(stderr, "\nError: CL_INVALID_SAMPLER\n"); - break; - case CL_INVALID_BINARY: - fprintf(stderr, "\nError: CL_INVALID_BINARY\n"); - break; - case CL_INVALID_BUILD_OPTIONS: - fprintf(stderr, "\nError: CL_INVALID_BUILD_OPTIONS\n"); - break; - case CL_INVALID_PROGRAM: - fprintf(stderr, "\nError: CL_INVALID_PROGRAM\n"); - break; - case CL_INVALID_PROGRAM_EXECUTABLE: - fprintf(stderr, "\nError: CL_INVALID_PROGRAM_EXECUTABLE\n"); - break; - case CL_INVALID_KERNEL_NAME: - fprintf(stderr, "\nError: CL_INVALID_KERNEL_NAME\n"); - break; - case CL_INVALID_KERNEL_DEFINITION: - fprintf(stderr, "\nError: CL_INVALID_KERNEL_DEFINITION\n"); - break; - case CL_INVALID_KERNEL: - fprintf(stderr, "\nError: CL_INVALID_KERNEL\n"); - break; - case CL_INVALID_ARG_INDEX: - fprintf(stderr, "\nError: CL_INVALID_ARG_INDEX\n"); - break; - case CL_INVALID_ARG_VALUE: - fprintf(stderr, "\nError: CL_INVALID_ARG_VALUE\n"); - break; - case CL_INVALID_ARG_SIZE: - fprintf(stderr, "\nError: CL_INVALID_ARG_SIZE\n"); - break; - case CL_INVALID_KERNEL_ARGS: - fprintf(stderr, "\nError: CL_INVALID_KERNEL_ARGS\n"); - break; - case CL_INVALID_WORK_DIMENSION: - fprintf(stderr, "\nError: CL_INVALID_WORK_DIMENSION\n"); - break; - case CL_INVALID_WORK_GROUP_SIZE: - fprintf(stderr, "\nError: CL_INVALID_WORK_GROUP_SIZE\n"); - break; - case CL_INVALID_WORK_ITEM_SIZE: - fprintf(stderr, "\nError: CL_INVALID_WORK_ITEM_SIZE\n"); - break; - case CL_INVALID_GLOBAL_OFFSET: - fprintf(stderr, "\nError: CL_INVALID_GLOBAL_OFFSET\n"); - break; - case CL_INVALID_EVENT_WAIT_LIST: - fprintf(stderr, "\nError: CL_INVALID_EVENT_WAIT_LIST\n"); - break; - case CL_INVALID_EVENT: - fprintf(stderr, "\nError: CL_INVALID_EVENT\n"); - break; - case CL_INVALID_OPERATION: - fprintf(stderr, "\nError: CL_INVALID_OPERATION\n"); - break; - case CL_INVALID_GL_OBJECT: - fprintf(stderr, "\nError: CL_INVALID_GL_OBJECT\n"); - break; - case CL_INVALID_BUFFER_SIZE: - fprintf(stderr, "\nError: CL_INVALID_BUFFER_SIZE\n"); - break; - case CL_INVALID_MIP_LEVEL: - fprintf(stderr, "\nError: CL_INVALID_MIP_LEVEL\n"); - break; - case CL_INVALID_GLOBAL_WORK_SIZE: - fprintf(stderr, "\nError: CL_INVALID_GLOBAL_WORK_SIZE\n"); - break; -#ifdef CL_VERSION_1_1 - case CL_INVALID_PROPERTY: - fprintf(stderr, "\nError: CL_INVALID_PROPERTY\n"); - break; -#endif -#ifdef CL_VERSION_1_2 - case CL_INVALID_IMAGE_DESCRIPTOR: - fprintf(stderr, "\nError: CL_INVALID_IMAGE_DESCRIPTOR\n"); - break; - case CL_INVALID_COMPILER_OPTIONS: - fprintf(stderr, "\nError: CL_INVALID_COMPILER_OPTIONS\n"); - break; - case CL_INVALID_LINKER_OPTIONS: - fprintf(stderr, "\nError: CL_INVALID_LINKER_OPTIONS\n"); - break; - case CL_INVALID_DEVICE_PARTITION_COUNT: - fprintf(stderr, "\nError: CL_INVALID_DEVICE_PARTITION_COUNT\n"); - break; -#endif -#ifdef CL_VERSION_2_0 - case CL_INVALID_PIPE_SIZE: - fprintf(stderr, "\nError: CL_INVALID_PIPE_SIZE\n"); - break; - case CL_INVALID_DEVICE_QUEUE: - fprintf(stderr, "\nError: CL_INVALID_DEVICE_QUEUE\n"); - break; -#endif -#ifdef CL_VERSION_2_2 - case CL_INVALID_SPEC_ID: - fprintf(stderr, "\nError: CL_INVALID_SPEC_ID\n"); - break; - case CL_MAX_SIZE_RESTRICTION_EXCEEDED: - fprintf(stderr, "\nError: CL_MAX_SIZE_RESTRICTION_EXCEEDED\n"); - break; -#endif - // SDK errors - case CL_UTIL_INDEX_OUT_OF_RANGE: - fprintf(stderr, "\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); - break; - // end of SDK errors - default: - fprintf(stderr, "\nUnknown error: %i\n", error); - break; - } -} \ No newline at end of file +UTILS_EXPORT +void cl_util_print_error(cl_int error); diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index 11e7c59d..fb3b7f34 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -1,14 +1,14 @@ #pragma once -// STL includes -//#include +// OpenCL Utils includes +#include "OpenCLUtils_Export.h" + +// OpenCL Utils includes +#include // OpenCL includes #include -#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 -#define CL_UTIL_DEVICE_NOT_INTEROPERABLE -2001 - namespace cl { namespace util @@ -18,7 +18,7 @@ namespace util * * This may be thrown by SDK utility functions when CL_HPP_ENABLE_EXCEPTIONS is defined. */ - class Error : public std::exception + class UTILS_EXPORT Error : public std::exception { private: int err_; @@ -62,27 +62,8 @@ namespace util namespace detail { - cl_int errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); -} - -} + UTILS_EXPORT cl_int errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) -cl_int cl::util::detail::errHandler(cl_int err, cl_int*, const char* errStr) -{ - if (err != CL_SUCCESS) - throw cl::util::Error{err, errStr}; - return err; } -#else -cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char*) -{ - if (err != CL_SUCCESS) - { - if (errPtr != nullptr) - *errPtr = err; - } - return err; } -#endif diff --git a/lib/include/CL/Utils/ErrorCodes.h b/lib/include/CL/Utils/ErrorCodes.h new file mode 100644 index 00000000..ca0751cf --- /dev/null +++ b/lib/include/CL/Utils/ErrorCodes.h @@ -0,0 +1,4 @@ +#pragma once + +#define CL_UTIL_INDEX_OUT_OF_RANGE -2000 +#define CL_UTIL_DEVICE_NOT_INTEROPERABLE -2001 diff --git a/lib/src/SDK/Image.cpp b/lib/src/SDK/Image.cpp index 505fc767..a206d408 100644 --- a/lib/src/SDK/Image.cpp +++ b/lib/src/SDK/Image.cpp @@ -1,6 +1,9 @@ // OpenCL SDK includes #include +// OpenCL Utils includes +#include + // stb includes #define STB_IMAGE_IMPLEMENTATION #include diff --git a/lib/src/SDK/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp index 584dc377..18b5887d 100644 --- a/lib/src/SDK/InteropContext.cpp +++ b/lib/src/SDK/InteropContext.cpp @@ -1,10 +1,6 @@ -// OpenCL SDK includes -#include - -// OpenCL Utils includes -#include - // Platform includes +// +// Note: gl.h need to be included before glxew.h which will define the glXGetCurrent...() functions. #ifdef _WIN32 #include #include // wglGetCurrent...() @@ -14,6 +10,12 @@ #undef None #endif +// OpenCL SDK includes +#include + +// OpenCL Utils includes +#include + cl::vector cl::sdk::get_interop_context_properties(const cl::Device& device) { return cl::vector{ @@ -48,11 +50,12 @@ cl::Context cl::sdk::get_interop_context(int plat_id, int dev_id, cl_device_type { cl_int ctx_err = CL_SUCCESS; auto props = get_interop_context_properties(devices[dev_id]); + cl::Context context; #if defined(CL_HPP_ENABLE_EXCEPTIONS) try { #endif - cl::Context context( + context = cl::Context( devices[dev_id], props.data(), nullptr, diff --git a/lib/src/Utils/Error.c b/lib/src/Utils/Error.c new file mode 100644 index 00000000..ee922be0 --- /dev/null +++ b/lib/src/Utils/Error.c @@ -0,0 +1,216 @@ +// OpenCL Utils includes +#include + +void cl_util_print_error(cl_int error) +{ + switch (error) { + case CL_SUCCESS: + break; + case CL_DEVICE_NOT_FOUND: + fprintf(stderr, "\nError: CL_DEVICE_NOT_FOUND\n"); + break; + case CL_DEVICE_NOT_AVAILABLE: + fprintf(stderr, "\nError: CL_DEVICE_NOT_AVAILABLE\n"); + break; + case CL_COMPILER_NOT_AVAILABLE: + fprintf(stderr, "\nError: CL_COMPILER_NOT_AVAILABLE\n"); + break; + case CL_MEM_OBJECT_ALLOCATION_FAILURE: + fprintf(stderr, "\nError: CL_MEM_OBJECT_ALLOCATION_FAILURE\n"); + break; + case CL_OUT_OF_RESOURCES: + fprintf(stderr, "\nError: CL_OUT_OF_RESOURCES\n"); + break; + case CL_OUT_OF_HOST_MEMORY: + fprintf(stderr, "\nError: CL_OUT_OF_HOST_MEMORY\n"); + break; + case CL_PROFILING_INFO_NOT_AVAILABLE: + fprintf(stderr, "\nError: CL_PROFILING_INFO_NOT_AVAILABLE\n"); + break; + case CL_MEM_COPY_OVERLAP: + fprintf(stderr, "\nError: CL_MEM_COPY_OVERLAP\n"); + break; + case CL_IMAGE_FORMAT_MISMATCH: + fprintf(stderr, "\nError: CL_IMAGE_FORMAT_MISMATCH\n"); + break; + case CL_IMAGE_FORMAT_NOT_SUPPORTED: + fprintf(stderr, "\nError: CL_IMAGE_FORMAT_NOT_SUPPORTED\n"); + break; + case CL_BUILD_PROGRAM_FAILURE: + fprintf(stderr, "\nError: CL_BUILD_PROGRAM_FAILURE\n"); + break; + case CL_MAP_FAILURE: + fprintf(stderr, "\nError: CL_MAP_FAILURE\n"); + break; +#ifdef CL_VERSION_1_1 + case CL_MISALIGNED_SUB_BUFFER_OFFSET: + fprintf(stderr, "\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); + break; + case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: + fprintf(stderr, "\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); + break; +#endif +#ifdef CL_VERSION_1_2 + case CL_COMPILE_PROGRAM_FAILURE: + fprintf(stderr, "\nError: CL_COMPILE_PROGRAM_FAILURE\n"); + break; + case CL_LINKER_NOT_AVAILABLE: + fprintf(stderr, "\nError: CL_LINKER_NOT_AVAILABLE\n"); + break; + case CL_LINK_PROGRAM_FAILURE: + fprintf(stderr, "\nError: CL_LINK_PROGRAM_FAILURE\n"); + break; + case CL_DEVICE_PARTITION_FAILED: + fprintf(stderr, "\nError: CL_DEVICE_PARTITION_FAILED\n"); + break; + case CL_KERNEL_ARG_INFO_NOT_AVAILABLE: + fprintf(stderr, "\nError: CL_KERNEL_ARG_INFO_NOT_AVAILABLE\n"); + break; +#endif + case CL_INVALID_VALUE: + fprintf(stderr, "\nError: CL_INVALID_VALUE\n"); + break; + case CL_INVALID_DEVICE_TYPE: + fprintf(stderr, "\nError: CL_INVALID_DEVICE_TYPE\n"); + break; + case CL_INVALID_PLATFORM: + fprintf(stderr, "\nError: CL_INVALID_PLATFORM\n"); + break; + case CL_INVALID_DEVICE: + fprintf(stderr, "\nError: CL_INVALID_DEVICE\n"); + break; + case CL_INVALID_CONTEXT: + fprintf(stderr, "\nError: CL_INVALID_CONTEXT\n"); + break; + case CL_INVALID_QUEUE_PROPERTIES: + fprintf(stderr, "\nError: CL_INVALID_QUEUE_PROPERTIES\n"); + break; + case CL_INVALID_COMMAND_QUEUE: + fprintf(stderr, "\nError: CL_INVALID_COMMAND_QUEUE\n"); + break; + case CL_INVALID_HOST_PTR: + fprintf(stderr, "\nError: CL_INVALID_HOST_PTR\n"); + break; + case CL_INVALID_MEM_OBJECT: + fprintf(stderr, "\nError: CL_INVALID_MEM_OBJECT\n"); + break; + case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: + fprintf(stderr, "\nError: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR\n"); + break; + case CL_INVALID_IMAGE_SIZE: + fprintf(stderr, "\nError: CL_INVALID_IMAGE_SIZE\n"); + break; + case CL_INVALID_SAMPLER: + fprintf(stderr, "\nError: CL_INVALID_SAMPLER\n"); + break; + case CL_INVALID_BINARY: + fprintf(stderr, "\nError: CL_INVALID_BINARY\n"); + break; + case CL_INVALID_BUILD_OPTIONS: + fprintf(stderr, "\nError: CL_INVALID_BUILD_OPTIONS\n"); + break; + case CL_INVALID_PROGRAM: + fprintf(stderr, "\nError: CL_INVALID_PROGRAM\n"); + break; + case CL_INVALID_PROGRAM_EXECUTABLE: + fprintf(stderr, "\nError: CL_INVALID_PROGRAM_EXECUTABLE\n"); + break; + case CL_INVALID_KERNEL_NAME: + fprintf(stderr, "\nError: CL_INVALID_KERNEL_NAME\n"); + break; + case CL_INVALID_KERNEL_DEFINITION: + fprintf(stderr, "\nError: CL_INVALID_KERNEL_DEFINITION\n"); + break; + case CL_INVALID_KERNEL: + fprintf(stderr, "\nError: CL_INVALID_KERNEL\n"); + break; + case CL_INVALID_ARG_INDEX: + fprintf(stderr, "\nError: CL_INVALID_ARG_INDEX\n"); + break; + case CL_INVALID_ARG_VALUE: + fprintf(stderr, "\nError: CL_INVALID_ARG_VALUE\n"); + break; + case CL_INVALID_ARG_SIZE: + fprintf(stderr, "\nError: CL_INVALID_ARG_SIZE\n"); + break; + case CL_INVALID_KERNEL_ARGS: + fprintf(stderr, "\nError: CL_INVALID_KERNEL_ARGS\n"); + break; + case CL_INVALID_WORK_DIMENSION: + fprintf(stderr, "\nError: CL_INVALID_WORK_DIMENSION\n"); + break; + case CL_INVALID_WORK_GROUP_SIZE: + fprintf(stderr, "\nError: CL_INVALID_WORK_GROUP_SIZE\n"); + break; + case CL_INVALID_WORK_ITEM_SIZE: + fprintf(stderr, "\nError: CL_INVALID_WORK_ITEM_SIZE\n"); + break; + case CL_INVALID_GLOBAL_OFFSET: + fprintf(stderr, "\nError: CL_INVALID_GLOBAL_OFFSET\n"); + break; + case CL_INVALID_EVENT_WAIT_LIST: + fprintf(stderr, "\nError: CL_INVALID_EVENT_WAIT_LIST\n"); + break; + case CL_INVALID_EVENT: + fprintf(stderr, "\nError: CL_INVALID_EVENT\n"); + break; + case CL_INVALID_OPERATION: + fprintf(stderr, "\nError: CL_INVALID_OPERATION\n"); + break; + case CL_INVALID_GL_OBJECT: + fprintf(stderr, "\nError: CL_INVALID_GL_OBJECT\n"); + break; + case CL_INVALID_BUFFER_SIZE: + fprintf(stderr, "\nError: CL_INVALID_BUFFER_SIZE\n"); + break; + case CL_INVALID_MIP_LEVEL: + fprintf(stderr, "\nError: CL_INVALID_MIP_LEVEL\n"); + break; + case CL_INVALID_GLOBAL_WORK_SIZE: + fprintf(stderr, "\nError: CL_INVALID_GLOBAL_WORK_SIZE\n"); + break; +#ifdef CL_VERSION_1_1 + case CL_INVALID_PROPERTY: + fprintf(stderr, "\nError: CL_INVALID_PROPERTY\n"); + break; +#endif +#ifdef CL_VERSION_1_2 + case CL_INVALID_IMAGE_DESCRIPTOR: + fprintf(stderr, "\nError: CL_INVALID_IMAGE_DESCRIPTOR\n"); + break; + case CL_INVALID_COMPILER_OPTIONS: + fprintf(stderr, "\nError: CL_INVALID_COMPILER_OPTIONS\n"); + break; + case CL_INVALID_LINKER_OPTIONS: + fprintf(stderr, "\nError: CL_INVALID_LINKER_OPTIONS\n"); + break; + case CL_INVALID_DEVICE_PARTITION_COUNT: + fprintf(stderr, "\nError: CL_INVALID_DEVICE_PARTITION_COUNT\n"); + break; +#endif +#ifdef CL_VERSION_2_0 + case CL_INVALID_PIPE_SIZE: + fprintf(stderr, "\nError: CL_INVALID_PIPE_SIZE\n"); + break; + case CL_INVALID_DEVICE_QUEUE: + fprintf(stderr, "\nError: CL_INVALID_DEVICE_QUEUE\n"); + break; +#endif +#ifdef CL_VERSION_2_2 + case CL_INVALID_SPEC_ID: + fprintf(stderr, "\nError: CL_INVALID_SPEC_ID\n"); + break; + case CL_MAX_SIZE_RESTRICTION_EXCEEDED: + fprintf(stderr, "\nError: CL_MAX_SIZE_RESTRICTION_EXCEEDED\n"); + break; +#endif + // SDK errors + case CL_UTIL_INDEX_OUT_OF_RANGE: + fprintf(stderr, "\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); + break; + // end of SDK errors + default: + fprintf(stderr, "\nUnknown error: %i\n", error); + break; + } +} diff --git a/lib/src/Utils/Error.cpp b/lib/src/Utils/Error.cpp new file mode 100644 index 00000000..079cc1fe --- /dev/null +++ b/lib/src/Utils/Error.cpp @@ -0,0 +1,21 @@ +// OpenCL SDK includes +#include + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) +cl_int cl::util::detail::errHandler(cl_int err, cl_int*, const char* errStr) +{ + if (err != CL_SUCCESS) + throw cl::util::Error{err, errStr}; + return err; +} +#else +cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char*) +{ + if (err != CL_SUCCESS) + { + if (errPtr != nullptr) + *errPtr = err; + } + return err; +} +#endif \ No newline at end of file diff --git a/lib/src/Utils/Utils.cpp b/lib/src/Utils/Utils.cpp index 1985beb1..5bbea86f 100644 --- a/lib/src/Utils/Utils.cpp +++ b/lib/src/Utils/Utils.cpp @@ -1,6 +1,7 @@ // OpenCL Utils includes #include +#include "Error.cpp" #include "Platform.cpp" #include "Device.cpp" #include "Context.cpp" From 90758db179f1ca04dc454c18839bd831638fc8bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 12:31:55 +0000 Subject: [PATCH 150/203] Add missing source from unity build --- lib/src/Utils/Utils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/Utils/Utils.c b/lib/src/Utils/Utils.c index cd669b9c..e28a2dfd 100644 --- a/lib/src/Utils/Utils.c +++ b/lib/src/Utils/Utils.c @@ -1,6 +1,7 @@ // OpenCL Utils includes #include +#include "Error.c" #include "File.c" #include "Context.c" #include "Event.c" From 091f69eba9dbdcd569a1f932d6dfa0703574dc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 13:48:05 +0100 Subject: [PATCH 151/203] NOMINMAX --- lib/src/SDK/InteropContext.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/SDK/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp index 18b5887d..fb2f36b4 100644 --- a/lib/src/SDK/InteropContext.cpp +++ b/lib/src/SDK/InteropContext.cpp @@ -2,6 +2,7 @@ // // Note: gl.h need to be included before glxew.h which will define the glXGetCurrent...() functions. #ifdef _WIN32 +#define NOMINMAX #include #include // wglGetCurrent...() #endif From 728a6317c9510c36d90e06712a0b8b8f1ba6832e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 13:48:19 +0100 Subject: [PATCH 152/203] Don't export cl::Error --- lib/include/CL/Utils/Error.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index fb3b7f34..2acd03ab 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -18,7 +18,7 @@ namespace util * * This may be thrown by SDK utility functions when CL_HPP_ENABLE_EXCEPTIONS is defined. */ - class UTILS_EXPORT Error : public std::exception + class Error : public std::exception { private: int err_; From eed2cea92dbf8bad90ac53e6eb6275fe22f8b8c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 14:04:21 +0100 Subject: [PATCH 153/203] Update readme --- samples/extensions/khr/conway/README.md | 30 +++++++++---------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/samples/extensions/khr/conway/README.md b/samples/extensions/khr/conway/README.md index 007d5585..33429bfd 100644 --- a/samples/extensions/khr/conway/README.md +++ b/samples/extensions/khr/conway/README.md @@ -1,36 +1,28 @@ -# saxpy +# Conway's Game of Life ## Sample Purpose -This sample intends to be a minimal end-to-end OpenCL application doing actual device-side computation. The structure of the sample rhymes well with the [How Does OpenCL Work?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md) chapter of the OpenCL-Guide, particularly the [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program) part. - -This sample is implemented using both C and C++ languages to demonstrate the difference in verbosity when using the naked C bindings compared to the C++ wrapper. +This sample intends to demonstrate how to share images (textures) between OpenCL and OpenGL. [How Does OpenCL-OpenGL Interop?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl-opencl_interop.md) chapter of the OpenCL-Guide lays out the fundamentals of OpenCL-OpenGL interoperability. ## Key APIs and Concepts -The most important aspect of this sample is to understand what entities / API objects are involved in the execution of a typical OpenCL application. +The most important aspect of this sample is to understand how OpenCL-OpenGL interop contexts and shared resources are setup. The `cl::sdk::get_interop_context` function takes much of the tedium out of setting up such a context while the `cl::sdk::InteropWindow` adds "GLUT-like" features, dealing with typical windowed interop app control flow, making sure that API objects are created in the correct order. ### Application flow -You may note that the actual order in creating the relevant API objects in this sample differs slightly from the list in [Executing an OpenCL Program](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl_work.md#executing-an-opencl-program). That is because the actual data dependence allows for some flexibility. The most important is obtaining a `cl_context`/`cl::Context`, because that is _the alpha and the omega_ of all other API objects in the runtime layer. For a distinction on where the platform layer ends and where the runtime layer begings, refer to **REF**. - -If we aim for absolute fastest execution, compiling our kernel may have been concurrent to initializing our input data. - -### Lazy buffer movement - -OpenCL buffers when created are bound to a context, not any specific device. Device-local physical memory is conceptually used as a cache to access the contents of the buffer. (See [OpenCL API - Memory Model: Fundamental Memory Regions](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_fundamental_memory_regions)) To paraphrase, one may think of buffers migrating from device-to-device as needed, while the OpenCL Runtime keeps track of where the most current (last written) contents reside. +Application flow is primarily dictated by `cl::sdk::InteropWindow`, more specifically by `cl::sdk::InteropWindow::run()`. For a deatiled overview of what the `InteropWindow` utility does, please refer to the [Utils documentation](../../../../lib/Utils.md). -This sample creates buffers, specifies their initial content with an iterator range spanning host containers and launches a kernel using said buffer. The OpenCL Runtime will take care of dispatching data to device global memory. +### Double buffering -Reading buffer contents on host cannot happen lazily, as we have to obtain a pointer to the buffer's contents. This happens internally inside `cl::copy( cl::CommandQueue, cl::Buffer, Iter, Iter )`. +The kernel used to implement the stepping routine uses double-buffering of the shared textures. Without double buffering a data race arises between the pixels of the image. -#### Explicit host-device-host buffer movement +### Implicit interop context synchronization -Note that this sample uses the more minimal `cl::Buffer{ cl::Context, Iter, Iter, bool }` buffer constructor (henceforth CTOR) overload, but there exists a `cl::Buffer{ cl::CommandQueue, Iter, Iter, bool }` overload, which still inside the CTOR invokes obtains the context of the queue, creates the buffer with it, followed by a `cl::copy( cl::CommandQueue, Iter, Iter, cl::Buffer )` which copies to the device associated with the queue using `cl::CommandQueue::enqueueMapBuffer`. +This sample uses basic and implicit interop context synchronization.For a detailed overview on the various ways OpenCL and OpenGL can be synchronized, refer to [Synchronizing the two APIs](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl-opencl_interop.md#Synchronizing-the-two-APIs) section of the OpenCL-OpenGL interop guide. -### In-order queue usage +## Kernel logic -While our kernel launch operation is asynchronous (and the host validation set is calculated concurrently, even if we use `CL_DEVICE_TYPE_CPU`), one may think that if the host is fast enough it's possible to fetch buffer contents before the device finishes running the kernels. This doesn't happen, because the queue we created had no properties specified (no `cl::QueueProperties::OutOfOrder`) and therefore commands enqueued are not allowed to overtake each other, so `cl::copy` may only start once the previous kernel has finished executing (and it's memory operations are visible to subsequent commands). +The kernel implements the classic [Game of Life rules](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life#Rules). Each pixel of the texture is 1 byte in size, which is stored in the red channel and is used to code 1 bit of data. (The current 1:7 useful:waste bit ratio can be improved in multiple ways, most trivially by bitcoding the data and storing muliple lattice sites in one pixel coordinate.) ### Used API surface @@ -44,4 +36,4 @@ cl::KernelFunctor<...>(cl::Program, const char*) cl::sdk::fill_with_random(...) cl::Buffer(cl::CommandQueue, Iter, Iter, bool) cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) -``` +``` \ No newline at end of file From 36c3750ea433a5f9cf5fb2a213d2bc0caf6741b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 14:05:03 +0100 Subject: [PATCH 154/203] remove extra space --- samples/extensions/khr/conway/conway.cl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/extensions/khr/conway/conway.cl b/samples/extensions/khr/conway/conway.cl index eb2c4bc3..471455dd 100644 --- a/samples/extensions/khr/conway/conway.cl +++ b/samples/extensions/khr/conway/conway.cl @@ -2,7 +2,7 @@ __kernel void conway( __read_only image2d_t front, - __write_only image2d_t back, + __write_only image2d_t back, float2 inv_image_size ) { From 5c2b0dda2752b0535bf50e4808369e5b88b1f231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 14:06:35 +0100 Subject: [PATCH 155/203] Remove dead code --- samples/extensions/khr/conway/conway.vert.glsl | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/extensions/khr/conway/conway.vert.glsl b/samples/extensions/khr/conway/conway.vert.glsl index 42b481b6..9df52c64 100644 --- a/samples/extensions/khr/conway/conway.vert.glsl +++ b/samples/extensions/khr/conway/conway.vert.glsl @@ -12,8 +12,6 @@ out block vec2 TexCoord; } VS_Out; -//uniform mat4 mat_MVP; - void main() { gl_Position = vec4(in_Position, 0.0, 1.0); From 07b6d8f1b51551bc689b966a994f8910e0f4cdd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 23 Nov 2021 14:10:43 +0100 Subject: [PATCH 156/203] Print errors to cerr --- samples/extensions/khr/conway/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index c3ca9868..e0a545be 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -121,7 +121,7 @@ inline bool checkError(const char* Title) ErrorString = "UNKNOWN"; break; } - fprintf(stdout, "OpenGL Error(%s): %s\n", ErrorString.c_str(), Title); + std::cerr << "OpenGL Error(" << ErrorString.c_str() << "): " << Title << std::endl; } return Error == GL_NO_ERROR; } @@ -363,4 +363,4 @@ int main(int argc, char* argv[]) } return 0; -} \ No newline at end of file +} From 33f4ff54fee38ff33ba6624aa1ebae508227e009 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 15 Nov 2021 14:14:38 +0200 Subject: [PATCH 157/203] Working Blur C --- samples/core/CMakeLists.txt | 1 + samples/core/blur/CMakeLists.txt | 26 +++ samples/core/blur/blur.cl | 86 ++++++++ samples/core/blur/main.c | 339 +++++++++++++++++++++++++++++ samples/core/blur/main.cpp | 64 ++++++ samples/core/reduce/CMakeLists.txt | 3 +- samples/core/reduce/main.c | 16 +- 7 files changed, 525 insertions(+), 10 deletions(-) create mode 100644 samples/core/blur/CMakeLists.txt create mode 100644 samples/core/blur/blur.cl create mode 100644 samples/core/blur/main.c create mode 100644 samples/core/blur/main.cpp diff --git a/samples/core/CMakeLists.txt b/samples/core/CMakeLists.txt index 85bead5a..9edf8685 100644 --- a/samples/core/CMakeLists.txt +++ b/samples/core/CMakeLists.txt @@ -17,3 +17,4 @@ add_subdirectory(copybuffer) add_subdirectory(copybufferkernel) add_subdirectory(saxpy) add_subdirectory(reduce) +add_subdirectory(blur) diff --git a/samples/core/blur/CMakeLists.txt b/samples/core/blur/CMakeLists.txt new file mode 100644 index 00000000..ed247c87 --- /dev/null +++ b/samples/core/blur/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET blur + VERSION 300 + SOURCES main.c) + +add_sample( + TEST + TARGET blurcpp + VERSION 300 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl new file mode 100644 index 00000000..6f847d49 --- /dev/null +++ b/samples/core/blur/blur.cl @@ -0,0 +1,86 @@ +kernel void blur_box( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size +) +{ + const int width = get_global_size(0); + const int height = get_global_size(1); + const int2 coord = { get_global_id(0), get_global_id(1) }; + const sampler_t s = CLK_NORMALIZED_COORDS_FALSE + | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // + | CLK_FILTER_NEAREST; + + float4 sum = 0.0; + uint num = 0; + int2 shift; + for (shift.x = -size; shift.x <= size; ++shift.x) + for (shift.y = -size; shift.y <= size; ++shift.y) { + int2 cur = coord + shift; + if ((0 <= cur.x) && (cur.x < width) + && (0 <= cur.y) && (cur.y < height)) + { + ++num; + sum += as_float4(read_imageui(input_image, s, cur)); + //printf("%v4hlX%s%v2hli\n", sum, " ", cur); + } + } + write_imageui(output_image, coord, as_uint4(sum / num)); +} + + +kernel void blur_box_horizontal( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size +) +{ + const int width = get_global_size(0); + const int height = get_global_size(1); + const int2 coord = { get_global_id(0), get_global_id(1) }; + const sampler_t s = CLK_NORMALIZED_COORDS_FALSE + | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // + | CLK_FILTER_NEAREST; + + float4 sum = 0.0; + uint num = 0; + int2 shift = 0; + for (shift.x = -size; shift.x <= size; ++shift.x) + { + int2 cur = coord + shift; + if ((0 <= cur.x) && (cur.x < width)) + { + ++num; + sum += as_float4(read_imageui(input_image, s, cur)); + } + } + write_imageui(output_image, coord, as_uint4(sum / num)); +} + +kernel void blur_box_vertical( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size +) +{ + const int width = get_global_size(0); + const int height = get_global_size(1); + const int2 coord = { get_global_id(0), get_global_id(1) }; + const sampler_t s = CLK_NORMALIZED_COORDS_FALSE + | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // + | CLK_FILTER_NEAREST; + + float4 sum = 0.0; + uint num = 0; + int2 shift = 0; + for (shift.y = -size; shift.y <= size; ++shift.y) + { + int2 cur = coord + shift; + if ((0 <= cur.y) && (cur.y < height)) + { + ++num; + sum += as_float4(read_imageui(input_image, s, cur)); + } + } + write_imageui(output_image, coord, as_uint4(sum / num)); +} diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c new file mode 100644 index 00000000..1b9354df --- /dev/null +++ b/samples/core/blur/main.c @@ -0,0 +1,339 @@ +/* + * Copyright (c) 2021 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include +#include + +// STL includes +#include +#include +#include + +// Sample-specific option +struct options_Blur { + unsigned int size; + const char * in, * out, * op; +}; + +cag_option BlurOptions[] = { + {.identifier = 'i', + .access_letters = "i", + .access_name = "in", + .value_name = "(name)", + .description = "Input image file (obligatory)"}, + + {.identifier = 'o', + .access_letters = "o", + .access_name = "out", + .value_name = "(name)", + .description = "Output image file"}, + + {.identifier = 's', + .access_letters = "s", + .access_name = "size", + .value_name = "(positive integer)", + .description = "Size of blur kernel"}, + + {.identifier = 'b', + .access_letters = "b", + .access_name = "blur", + .value_name = "(box|gauss)", + .description = "Operation of blur to perform"} +}; + +ParseState parse_BlurOptions(const char identifier, cag_option_context * cag_context, struct options_Blur * opts) +{ + const char * value; + +#define IF_ERR(op) \ +if ((value = cag_option_get_value(cag_context))) \ + { op; return ParsedOK; } \ +else return ParseError; + + switch (identifier) { + case 'i': + case 'o': + IF_ERR(opts->in = value) + case 's': + IF_ERR(opts->size = strtoul(value, NULL, 0)) + case 'b': + if ((value = cag_option_get_value(cag_context)) + && (!strcmp(value, "box") || !strcmp(value, "gauss"))) + { + opts->op = value; + return ParsedOK; + } + else return ParseError; + } + return NotParsed; +} + +cl_int parse_options(int argc, + char* argv[], + struct cl_sdk_options_Diagnostic * diag_opts, + struct cl_sdk_options_SingleDevice * dev_opts, + struct options_Blur * blur_opts) +{ + cl_int error = CL_SUCCESS; + struct cag_option * opts = NULL, * tmp = NULL; + size_t n = 0; + + /* Prepare all options array. */ + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + opts = tmp; + MEM_CHECK(tmp = add_CLI_options(opts, &n, BlurOptions, CAG_ARRAY_SIZE(BlurOptions)), error, end); + opts = tmp; + + char identifier; + cag_option_context cag_context; + + /* Prepare the context and iterate over all options. */ + cag_option_prepare(&cag_context, opts, n, argc, argv); + while (cag_option_fetch(&cag_context)) { + ParseState state = NotParsed; + identifier = cag_option_get(&cag_context); + + state = parse_DiagnosticOptions(identifier, diag_opts); + if (state == ParsedOK) continue; + state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); + if (state == ParsedOK) continue; + state = parse_BlurOptions(identifier, &cag_context, blur_opts); + if (state == ParsedOK) continue; + + if ((identifier == 'h') || (state == ParseError)) { + printf("Usage: blur [OPTION]...\n"); + /*printf("Demonstrates how to query various OpenCL extensions applicable " + "in the context of a reduction algorithm and to touch up kernel sources " + "at runtime to select the best kernel implementation for the task.\n\n");*/ + cag_option_print(opts, n, stdout); + exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); + } + } + +end: free(opts); + return error; +} + +int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +{ + int res = 0; + return res; +} + +int check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +{ + int res = 0; + return res; +} + +int main(int argc, char* argv[]) +{ + cl_int error = CL_SUCCESS, + end_error = CL_SUCCESS; + cl_platform_id platform; + cl_device_id device; + cl_context context; + cl_command_queue queue; + + // Parse command-line options + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct options_Blur blur_opts = { .size = 1, .op = "box", .in = NULL, .out = "out.png" }; + + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &blur_opts), error, end); + if (!blur_opts.in) { + error = CL_INVALID_IMAGE_DESCRIPTOR; + fprintf(stderr, "No input image name!\n"); + goto end; + } + + // Create runtime objects based on user preference or default + OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, + dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); + OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_command_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, cont); +#else + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); +#endif + + if (!diag_opts.quiet) { + cl_util_print_device_info(device); + } + + // Query device and runtime capabilities + // 1) query image support + cl_bool image_support = false; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, que); + if (!image_support) { + fprintf(stderr, "No image support on device!\n"); + error = CL_INVALID_DEVICE; + goto que; + } + + // Compile kernel + const char * kernel_location = "./blur.cl"; + char * kernel = NULL, * tmp = NULL; + size_t program_size = 0; + cl_program program = NULL; + char kernel_op[1024] = ""; + + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); + // Note append of definitions + program_size += 1 + strlen(kernel_op); + MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); + strcat(tmp, kernel_op); + + kernel = tmp; + //printf("%s", kernel); + + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); + kernel_op[0] = '\0'; + OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); + + cl_kernel blur; + OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, prg); + + cl_sdk_image input_image = { .width = 0, .height = 0, .pixel_size = 0, .pixels = NULL }; + OCLERROR_PAR(input_image = cl_sdk_read_image(blur_opts.in, &error), error, blr); + + cl_sdk_image output_image = { .width = input_image.width, .height = input_image.height, + .pixel_size = input_image.pixel_size, .pixels = NULL }; + MEM_CHECK(output_image.pixels = (unsigned char *)malloc(sizeof(unsigned char) * + output_image.width * output_image.height * output_image.pixel_size), error, inim); + + // query if the image format is supported and change image if not + cl_image_format * formats = NULL, * format = NULL; + if ((input_image.pixel_size == 1) || (input_image.pixel_size == 3)) { + cl_uint formats_number = 0; + OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + 0, NULL, &formats_number), error, outim); + MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) * formats_number), error, outim); + OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + formats_number, formats, NULL), error, frmt); + // search for 3/1 channels of uint8_t + for (cl_uint i = 0; i < formats_number; ++i) + if ( ((input_image.pixel_size == 3) + && (formats[i].image_channel_order == CL_RGB) + && (formats[i].image_channel_data_type == CL_UNORM_INT8)) + || ((input_image.pixel_size == 1) + && (formats[i].image_channel_order == CL_R) + && (formats[i].image_channel_data_type == CL_UNORM_INT8))) + { + format = formats + i; + break; + } + // if not found, default to 4 channels of uint8_t + if (!format) { + if (diag_opts.verbose) + printf("Converting picture into supported format... "); + format = formats; + format->image_channel_order = CL_RGBA; + formats->image_channel_data_type = CL_UNORM_INT8; + + const size_t + pixels = input_image.width * input_image.height, + new = sizeof(unsigned char) * pixels * 4; + unsigned char * tmp = NULL; + MEM_CHECK(tmp = (unsigned char *)realloc(input_image.pixels, new), error, frmt); + input_image.pixels = tmp; + MEM_CHECK(tmp = (unsigned char *)realloc(output_image.pixels, new), error, frmt); + output_image.pixels = tmp; + + // change picture + const size_t pixel_size = input_image.pixel_size; + for (size_t i = pixels - 1; i != 0; --i) { + memcpy(input_image.pixels + 4 * i, input_image.pixels + pixel_size * i, pixel_size); + memset(input_image.pixels + 4 * i + pixel_size, 0, 4 - pixel_size); + } + memset(input_image.pixels + pixel_size, 0, 4 - pixel_size); + input_image.pixel_size = 4; + // store initial pixel_size in output_image.pixel_size + if (diag_opts.verbose) + printf("done.\n"); + } + } + else if (input_image.pixel_size == 4) { + MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format)), error, outim); + format = formats; + format->image_channel_order = CL_RGBA; + formats->image_channel_data_type = CL_UNORM_INT8; + } + else { + fprintf(stderr, "Unknown image format!\n"); + error = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; + goto outim; + } + + cl_mem input_image_buf, output_image_buf; + const cl_image_desc desc = { + .image_type = CL_MEM_OBJECT_IMAGE2D, + .image_width = input_image.width, + .image_height = input_image.height, + .image_row_pitch = 0, + .num_mip_levels = 0, + .num_samples = 0, + .mem_object = NULL + }; + OCLERROR_PAR(input_image_buf = clCreateImage(context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, + format, &desc, NULL, &error), error, frmt); + OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, + format, &desc, NULL, &error), error, inbuf); + + OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, outbuf); + OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, outbuf); + OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, outbuf); + + size_t image_size[3] = { input_image.width, input_image.height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + input_image.pixels, 0, NULL, NULL), error, outbuf); + + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size/*gl_size*/, NULL, 0, NULL, NULL), error, outbuf); + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image.pixels, 0, NULL, NULL), error, outbuf); + + if (input_image.pixel_size != output_image.pixel_size) { + const size_t + pixels = input_image.width * input_image.height, + pixel_size = output_image.pixel_size; + for (size_t i = 1; i < pixels; ++i) + memcpy(output_image.pixels + pixel_size * i, output_image.pixels + 4 * i, pixel_size); + } + + OCLERROR_PAR(cl_sdk_write_image(blur_opts.out, &output_image, &error), error, outbuf); + +outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); +inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); +frmt: free(formats); +outim: free(output_image.pixels); +inim: free(input_image.pixels); +blr: OCLERROR_RET(clReleaseKernel(blur), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); +ker: free(kernel); +que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); +cont: OCLERROR_RET(clReleaseContext(context), end_error, end); +end: if (error) cl_util_print_error(error); + return error; +} diff --git a/samples/core/blur/main.cpp b/samples/core/blur/main.cpp new file mode 100644 index 00000000..db47a5f7 --- /dev/null +++ b/samples/core/blur/main.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include + +// STL includes +#include + +// TCLAP includes +#include + +// Sample-specific option + + +int main(int argc, char* argv[]) +{ + try + { + + } + catch(cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} diff --git a/samples/core/reduce/CMakeLists.txt b/samples/core/reduce/CMakeLists.txt index 708a1322..36586654 100644 --- a/samples/core/reduce/CMakeLists.txt +++ b/samples/core/reduce/CMakeLists.txt @@ -16,8 +16,7 @@ add_sample( TEST TARGET reduce VERSION 300 - SOURCES main.c - INCLUDES ${PROJECT_SOURCE_DIR}/third_party/cargs) + SOURCES main.c) add_sample( TEST diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 707d40df..a8d45ae6 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -26,7 +26,7 @@ #include // Sample-specific option -struct options_Reduce { +struct options_Blur { size_t length; const char * op; }; @@ -45,7 +45,7 @@ cag_option ReduceOptions[] = { .description = "Operation to perform"} }; -ParseState parse_ReduceOptions(const char identifier, cag_option_context * cag_context, struct options_Reduce * opts) +ParseState parse_BlurOptions(const char identifier, cag_option_context * cag_context, struct options_Blur * opts) { const char * value; switch (identifier) { @@ -71,7 +71,7 @@ cl_int parse_options(int argc, char* argv[], struct cl_sdk_options_Diagnostic * diag_opts, struct cl_sdk_options_SingleDevice * dev_opts, - struct options_Reduce * reduce_opts) + struct options_Blur * reduce_opts) { cl_int error = CL_SUCCESS; struct cag_option * opts = NULL, * tmp = NULL; @@ -97,14 +97,14 @@ cl_int parse_options(int argc, if (state == ParsedOK) continue; state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); if (state == ParsedOK) continue; - state = parse_ReduceOptions(identifier, &cag_context, reduce_opts); + state = parse_BlurOptions(identifier, &cag_context, reduce_opts); if (state == ParsedOK) continue; if ((identifier == 'h') || (state == ParseError)) { printf("Usage: reduce [OPTION]...\n"); - printf("Demonstrates how to query various OpenCL extensions applicable \ - in the context of a reduction algorithm and to touch up kernel sources \ - at runtime to select the best kernel implementation for the task.\n\n"); + printf("Demonstrates how to query various OpenCL extensions applicable " + "in the context of a reduction algorithm and to touch up kernel sources " + "at runtime to select the best kernel implementation for the task.\n\n"); cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } @@ -219,7 +219,7 @@ int main(int argc, char* argv[]) // Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct options_Reduce reduce_opts = { .length = 1048576, .op = "min" }; + struct options_Blur reduce_opts = { .length = 1048576, .op = "min" }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &reduce_opts), error, end); From bcf9e59bee4e18946d65be5f9db70bb3acf801f7 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 15 Nov 2021 18:31:42 +0200 Subject: [PATCH 158/203] Bug in Intel CPU runtime? --- samples/core/blur/blur.cl | 57 ++++++++++++++++++++++++++++++--------- samples/core/blur/main.c | 35 ++++++++++++++++++------ 2 files changed, 71 insertions(+), 21 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 6f847d49..675bd55e 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -4,28 +4,59 @@ kernel void blur_box( int size ) { - const int width = get_global_size(0); - const int height = get_global_size(1); + const int width = get_image_width(input_image); //get_global_size(0);// + const int height = get_image_height(input_image); //get_global_size(1);// + // coordinates of the pixel to work on const int2 coord = { get_global_id(0), get_global_id(1) }; const sampler_t s = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // | CLK_FILTER_NEAREST; - float4 sum = 0.0; + //if (coord.x == get_global_offset(0) && coord.y == get_global_offset(1)) + // printf("%i%s%i\n\n", width, " ", height); + + uint4 sum = 0;//100 * 112 * 112; uint num = 0; + // Intel CPU runtime bug? + // gives memory access violations for size >= 0 + // even if there is no acceses out of bounds (checked by printf) + // but works with any size if write_imageui is commented out + + // 1st variant int2 shift; for (shift.x = -size; shift.x <= size; ++shift.x) for (shift.y = -size; shift.y <= size; ++shift.y) { int2 cur = coord + shift; - if ((0 <= cur.x) && (cur.x < width) - && (0 <= cur.y) && (cur.y < height)) + if ((0 <= cur.x) && (cur.x < width) && (0 <= cur.y) && (cur.y < height)) { ++num; - sum += as_float4(read_imageui(input_image, s, cur)); + //if ((cur.x < 0) || (cur.x > width - 1) || (cur.y < 0) || (cur.y > height - 1)) + // printf("%v2hli%s%v2hli\n", coord, " ", cur); + //sum += read_imageui(input_image, s, cur); // works only with size=0 and does not with size>=0 + sum += read_imageui(input_image, cur); // this works always //printf("%v4hlX%s%v2hli\n", sum, " ", cur); } } - write_imageui(output_image, coord, as_uint4(sum / num)); + + // 2nd variant + /*const int4 lims = { max(coord.x - size, 0), min(coord.x + size, width - 1), + max(coord.y - size, 0), min(coord.y + size, height - 1) }; + int2 cur; + for (cur.x = lims.s0; cur.x <= lims.s1; ++cur.x) + for (cur.y = lims.s2; cur.y <= lims.s3; ++cur.y) { + ++num; + //if ((cur.x < 0) || (cur.x > width - 1) || (cur.y < 0) || (cur.y > height - 1)) + // printf("%v2hli%s%v2hli\n", coord, " ", cur); + sum += read_imageui(input_image, s, cur); // this works with size=0,1,2, but not with size>=3 + //sum += read_imageui(input_image, cur); // this works with any size + //printf("%v4hlX%s%v2hli\n", sum, " ", cur); + }*/ + + //if (!num) printf("%i%s%i%s%u\n", coord.x, " ", coord.y, " ", num); + //if ((0 <= coord.x) && (coord.x < width) && (0 <= coord.y) && (coord.y < height)) + // write_imageui(output_image, (int2)(get_global_id(0), get_global_id(1))/*coord*/, (sum + num / 2) / num); + //write_imageui(output_image, (int2)(0, 0), (sum + num / 2) / num); + write_imageui(output_image, coord, (sum + num / 2) / num); } @@ -42,7 +73,7 @@ kernel void blur_box_horizontal( | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // | CLK_FILTER_NEAREST; - float4 sum = 0.0; + uint4 sum = 0.0; uint num = 0; int2 shift = 0; for (shift.x = -size; shift.x <= size; ++shift.x) @@ -51,10 +82,10 @@ kernel void blur_box_horizontal( if ((0 <= cur.x) && (cur.x < width)) { ++num; - sum += as_float4(read_imageui(input_image, s, cur)); + sum += read_imageui(input_image, s, cur); } } - write_imageui(output_image, coord, as_uint4(sum / num)); + write_imageui(output_image, coord, (sum + num / 2) / num); } kernel void blur_box_vertical( @@ -70,7 +101,7 @@ kernel void blur_box_vertical( | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // | CLK_FILTER_NEAREST; - float4 sum = 0.0; + uint4 sum = 0.0; uint num = 0; int2 shift = 0; for (shift.y = -size; shift.y <= size; ++shift.y) @@ -79,8 +110,8 @@ kernel void blur_box_vertical( if ((0 <= cur.y) && (cur.y < height)) { ++num; - sum += as_float4(read_imageui(input_image, s, cur)); + sum += read_imageui(input_image, s, cur); } } - write_imageui(output_image, coord, as_uint4(sum / num)); + write_imageui(output_image, coord, (sum + num / 2) / num); } diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 1b9354df..87f7d9cd 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -163,6 +163,9 @@ int main(int argc, char* argv[]) fprintf(stderr, "No input image name!\n"); goto end; } + if (!diag_opts.quiet) { + printf("Blur size: %u\n", blur_opts.size); + } // Create runtime objects based on user preference or default OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, @@ -234,10 +237,10 @@ int main(int argc, char* argv[]) for (cl_uint i = 0; i < formats_number; ++i) if ( ((input_image.pixel_size == 3) && (formats[i].image_channel_order == CL_RGB) - && (formats[i].image_channel_data_type == CL_UNORM_INT8)) + && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) || ((input_image.pixel_size == 1) && (formats[i].image_channel_order == CL_R) - && (formats[i].image_channel_data_type == CL_UNORM_INT8))) + && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8))) { format = formats + i; break; @@ -248,7 +251,7 @@ int main(int argc, char* argv[]) printf("Converting picture into supported format... "); format = formats; format->image_channel_order = CL_RGBA; - formats->image_channel_data_type = CL_UNORM_INT8; + formats->image_channel_data_type = CL_UNSIGNED_INT8; const size_t pixels = input_image.width * input_image.height, @@ -276,7 +279,7 @@ int main(int argc, char* argv[]) MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format)), error, outim); format = formats; format->image_channel_order = CL_RGBA; - formats->image_channel_data_type = CL_UNORM_INT8; + formats->image_channel_data_type = CL_UNSIGNED_INT8; } else { fprintf(stderr, "Unknown image format!\n"); @@ -284,6 +287,15 @@ int main(int argc, char* argv[]) goto outim; } + if (format->image_channel_order == CL_R) + printf("CL_R "); + else if (format->image_channel_order == CL_RGB) + printf("CL_RBG "); + else if (format->image_channel_order == CL_RGBA) + printf("CL_RBGA "); + if (format->image_channel_data_type == CL_UNSIGNED_INT8) + printf("CL_UNSIGNED_INT8\n"); + cl_mem input_image_buf, output_image_buf; const cl_image_desc desc = { .image_type = CL_MEM_OBJECT_IMAGE2D, @@ -294,9 +306,9 @@ int main(int argc, char* argv[]) .num_samples = 0, .mem_object = NULL }; - OCLERROR_PAR(input_image_buf = clCreateImage(context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, + OCLERROR_PAR(input_image_buf = clCreateImage(context, 0 /*CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY*/, format, &desc, NULL, &error), error, frmt); - OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, + OCLERROR_PAR(output_image_buf = clCreateImage(context, 0 /*CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY*/, format, &desc, NULL, &error), error, inbuf); OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, outbuf); @@ -306,10 +318,16 @@ int main(int argc, char* argv[]) size_t image_size[3] = { input_image.width, input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; - OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, input_image.pixels, 0, NULL, NULL), error, outbuf); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size/*gl_size*/, NULL, 0, NULL, NULL), error, outbuf); + clFinish(queue); + + size_t shift[3] = {0, 0, 0}; + size_t size[3] = { input_image.width * 1 - shift[0] - 0, input_image.height * 1 - shift[1] - 0, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, shift, size, NULL, 0, NULL, NULL), error, outbuf); + + clFinish(queue); OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, output_image.pixels, 0, NULL, NULL), error, outbuf); @@ -323,6 +341,7 @@ int main(int argc, char* argv[]) } OCLERROR_PAR(cl_sdk_write_image(blur_opts.out, &output_image, &error), error, outbuf); + printf("File %s written.", blur_opts.out); outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); From 582b431c5d52e89112a643e28a6f7b252e612afc Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 15 Nov 2021 19:19:04 +0200 Subject: [PATCH 159/203] Dual-pass blur --- samples/core/blur/blur.cl | 57 ++++------------------------ samples/core/blur/main.c | 79 +++++++++++++++++++++++++++++++++------ 2 files changed, 75 insertions(+), 61 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 675bd55e..59d90c9c 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -4,25 +4,13 @@ kernel void blur_box( int size ) { - const int width = get_image_width(input_image); //get_global_size(0);// - const int height = get_image_height(input_image); //get_global_size(1);// + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); // coordinates of the pixel to work on const int2 coord = { get_global_id(0), get_global_id(1) }; - const sampler_t s = CLK_NORMALIZED_COORDS_FALSE - | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // - | CLK_FILTER_NEAREST; - //if (coord.x == get_global_offset(0) && coord.y == get_global_offset(1)) - // printf("%i%s%i\n\n", width, " ", height); - - uint4 sum = 0;//100 * 112 * 112; + uint4 sum = 0; uint num = 0; - // Intel CPU runtime bug? - // gives memory access violations for size >= 0 - // even if there is no acceses out of bounds (checked by printf) - // but works with any size if write_imageui is commented out - - // 1st variant int2 shift; for (shift.x = -size; shift.x <= size; ++shift.x) for (shift.y = -size; shift.y <= size; ++shift.y) { @@ -30,32 +18,9 @@ kernel void blur_box( if ((0 <= cur.x) && (cur.x < width) && (0 <= cur.y) && (cur.y < height)) { ++num; - //if ((cur.x < 0) || (cur.x > width - 1) || (cur.y < 0) || (cur.y > height - 1)) - // printf("%v2hli%s%v2hli\n", coord, " ", cur); - //sum += read_imageui(input_image, s, cur); // works only with size=0 and does not with size>=0 - sum += read_imageui(input_image, cur); // this works always - //printf("%v4hlX%s%v2hli\n", sum, " ", cur); + sum += read_imageui(input_image, cur); } } - - // 2nd variant - /*const int4 lims = { max(coord.x - size, 0), min(coord.x + size, width - 1), - max(coord.y - size, 0), min(coord.y + size, height - 1) }; - int2 cur; - for (cur.x = lims.s0; cur.x <= lims.s1; ++cur.x) - for (cur.y = lims.s2; cur.y <= lims.s3; ++cur.y) { - ++num; - //if ((cur.x < 0) || (cur.x > width - 1) || (cur.y < 0) || (cur.y > height - 1)) - // printf("%v2hli%s%v2hli\n", coord, " ", cur); - sum += read_imageui(input_image, s, cur); // this works with size=0,1,2, but not with size>=3 - //sum += read_imageui(input_image, cur); // this works with any size - //printf("%v4hlX%s%v2hli\n", sum, " ", cur); - }*/ - - //if (!num) printf("%i%s%i%s%u\n", coord.x, " ", coord.y, " ", num); - //if ((0 <= coord.x) && (coord.x < width) && (0 <= coord.y) && (coord.y < height)) - // write_imageui(output_image, (int2)(get_global_id(0), get_global_id(1))/*coord*/, (sum + num / 2) / num); - //write_imageui(output_image, (int2)(0, 0), (sum + num / 2) / num); write_imageui(output_image, coord, (sum + num / 2) / num); } @@ -69,11 +34,8 @@ kernel void blur_box_horizontal( const int width = get_global_size(0); const int height = get_global_size(1); const int2 coord = { get_global_id(0), get_global_id(1) }; - const sampler_t s = CLK_NORMALIZED_COORDS_FALSE - | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // - | CLK_FILTER_NEAREST; - uint4 sum = 0.0; + uint4 sum = 0; uint num = 0; int2 shift = 0; for (shift.x = -size; shift.x <= size; ++shift.x) @@ -82,7 +44,7 @@ kernel void blur_box_horizontal( if ((0 <= cur.x) && (cur.x < width)) { ++num; - sum += read_imageui(input_image, s, cur); + sum += read_imageui(input_image, cur); } } write_imageui(output_image, coord, (sum + num / 2) / num); @@ -97,11 +59,8 @@ kernel void blur_box_vertical( const int width = get_global_size(0); const int height = get_global_size(1); const int2 coord = { get_global_id(0), get_global_id(1) }; - const sampler_t s = CLK_NORMALIZED_COORDS_FALSE - | CLK_ADDRESS_NONE // CLK_ADDRESS_CLAMP_TO_EDGE // - | CLK_FILTER_NEAREST; - uint4 sum = 0.0; + uint4 sum = 0; uint num = 0; int2 shift = 0; for (shift.y = -size; shift.y <= size; ++shift.y) @@ -110,7 +69,7 @@ kernel void blur_box_vertical( if ((0 <= cur.y) && (cur.y < height)) { ++num; - sum += read_imageui(input_image, s, cur); + sum += read_imageui(input_image, cur); } } write_imageui(output_image, coord, (sum + num / 2) / num); diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 87f7d9cd..f28935b5 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -24,6 +24,7 @@ #include #include #include +#include // Sample-specific option struct options_Blur { @@ -296,7 +297,7 @@ int main(int argc, char* argv[]) if (format->image_channel_data_type == CL_UNSIGNED_INT8) printf("CL_UNSIGNED_INT8\n"); - cl_mem input_image_buf, output_image_buf; + cl_mem input_image_buf, output_image_buf, temp_image_buf; const cl_image_desc desc = { .image_type = CL_MEM_OBJECT_IMAGE2D, .image_width = input_image.width, @@ -306,28 +307,28 @@ int main(int argc, char* argv[]) .num_samples = 0, .mem_object = NULL }; - OCLERROR_PAR(input_image_buf = clCreateImage(context, 0 /*CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY*/, + OCLERROR_PAR(input_image_buf = clCreateImage(context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, format, &desc, NULL, &error), error, frmt); - OCLERROR_PAR(output_image_buf = clCreateImage(context, 0 /*CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY*/, + OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, format, &desc, NULL, &error), error, inbuf); OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, outbuf); OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, outbuf); OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, outbuf); + cl_event pass[3]; + size_t image_size[3] = { input_image.width, input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; - OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, + OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_BLOCKING, origin, image_size, 0, 0, input_image.pixels, 0, NULL, NULL), error, outbuf); - clFinish(queue); - - size_t shift[3] = {0, 0, 0}; - size_t size[3] = { input_image.width * 1 - shift[0] - 0, input_image.height * 1 - shift[1] - 0, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, shift, size, NULL, 0, NULL, NULL), error, outbuf); - - clFinish(queue); + // Single-pass blur + GET_CURRENT_TIMER(single_start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, outbuf); + OCLERROR_RET(clWaitForEvents(1, pass), error, outbuf); + GET_CURRENT_TIMER(single_end) OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, output_image.pixels, 0, NULL, NULL), error, outbuf); @@ -341,8 +342,62 @@ int main(int argc, char* argv[]) } OCLERROR_PAR(cl_sdk_write_image(blur_opts.out, &output_image, &error), error, outbuf); - printf("File %s written.", blur_opts.out); + cl_ulong single_time; + TIMER_DIFFERENCE(single_time, single_start, single_end) + printf("Single-pass execution as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(single_time + 500) / 1000, + (unsigned long long)(cl_util_get_event_duration(pass[0], + CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); + printf("Single-pass blurred image %s written.\n", blur_opts.out); + + // Dual-pass blur + OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + format, &desc, NULL, &error), error, outbuf); + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal", &error), error, tmpbuf); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical", &error), error, blr1); + + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + + GET_CURRENT_TIMER(dual_start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, outbuf); + GET_CURRENT_TIMER(dual_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image.pixels, 0, NULL, NULL), error, outbuf); + + if (input_image.pixel_size != output_image.pixel_size) { + const size_t + pixels = input_image.width * input_image.height, + pixel_size = output_image.pixel_size; + for (size_t i = 1; i < pixels; ++i) + memcpy(output_image.pixels + pixel_size * i, output_image.pixels + 4 * i, pixel_size); + } + strcat(kernel_op, "2"); + strncat(kernel_op, blur_opts.out, sizeof(kernel_op) - 2); + OCLERROR_PAR(cl_sdk_write_image(kernel_op, &output_image, &error), error, outbuf); + cl_ulong dual_time; + TIMER_DIFFERENCE(dual_time, dual_start, dual_end) + printf("Dual-pass execution as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(dual_time + 500) / 1000, + (unsigned long long)( + cl_util_get_event_duration(pass[1], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + + cl_util_get_event_duration(pass[2], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + + 500) / 1000); + printf("Dual-pass blurred image %s written.\n", kernel_op); + +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, tmpbuf); +tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, outbuf); outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); frmt: free(formats); From 92db64becf4e963f339168675d051a5237f1c509 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 16 Nov 2021 13:27:00 +0200 Subject: [PATCH 160/203] Box blur in one and two passes --- samples/core/blur/main.c | 157 ++++++++++++++++++++----------------- samples/core/reduce/main.c | 19 +++-- 2 files changed, 97 insertions(+), 79 deletions(-) diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index f28935b5..72f184fc 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -69,8 +69,9 @@ else return ParseError; switch (identifier) { case 'i': - case 'o': IF_ERR(opts->in = value) + case 'o': + IF_ERR(opts->out = value) case 's': IF_ERR(opts->size = strtoul(value, NULL, 0)) case 'b': @@ -111,39 +112,32 @@ cl_int parse_options(int argc, ParseState state = NotParsed; identifier = cag_option_get(&cag_context); - state = parse_DiagnosticOptions(identifier, diag_opts); - if (state == ParsedOK) continue; - state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); - if (state == ParsedOK) continue; - state = parse_BlurOptions(identifier, &cag_context, blur_opts); - if (state == ParsedOK) continue; +#define PARS_OPTIONS(parser) \ +if ((state = parser) == ParsedOK) \ + continue; \ +else if (state == ParseError) \ + {printf("Parse error\n"); identifier = 'h';} + + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts)) + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts)) + PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, blur_opts)) - if ((identifier == 'h') || (state == ParseError)) { + if (identifier == 'h') { printf("Usage: blur [OPTION]...\n"); + printf("Option name and value should be separated by '=' or a space\n"); /*printf("Demonstrates how to query various OpenCL extensions applicable " "in the context of a reduction algorithm and to touch up kernel sources " "at runtime to select the best kernel implementation for the task.\n\n");*/ cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } +#undef PARS_OPTIONS } end: free(opts); return error; } -int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) -{ - int res = 0; - return res; -} - -int check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) -{ - int res = 0; - return res; -} - int main(int argc, char* argv[]) { cl_int error = CL_SUCCESS, @@ -152,8 +146,9 @@ int main(int argc, char* argv[]) cl_device_id device; cl_context context; cl_command_queue queue; + cl_event pass[3]; // events to measure execution time - // Parse command-line options + /// Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; struct options_Blur blur_opts = { .size = 1, .op = "box", .in = NULL, .out = "out.png" }; @@ -164,11 +159,8 @@ int main(int argc, char* argv[]) fprintf(stderr, "No input image name!\n"); goto end; } - if (!diag_opts.quiet) { - printf("Blur size: %u\n", blur_opts.size); - } - // Create runtime objects based on user preference or default + /// Create runtime objects based on user preference or default OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); @@ -182,32 +174,24 @@ int main(int argc, char* argv[]) if (!diag_opts.quiet) { cl_util_print_device_info(device); + char * name = NULL; + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, &error), error, nam); + printf("%s", name); +nam: free(name); } - // Query device and runtime capabilities - // 1) query image support - cl_bool image_support = false; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, que); - if (!image_support) { - fprintf(stderr, "No image support on device!\n"); - error = CL_INVALID_DEVICE; - goto que; - } - - // Compile kernel + /// Compile kernel const char * kernel_location = "./blur.cl"; char * kernel = NULL, * tmp = NULL; size_t program_size = 0; cl_program program = NULL; - char kernel_op[1024] = ""; + char kernel_op[1024] = ""; // here we can put some dynamic definitions OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); - // Note append of definitions - program_size += 1 + strlen(kernel_op); - MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); - strcat(tmp, kernel_op); - - kernel = tmp; + //program_size += 1 + strlen(kernel_op); + //MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); + //strcat(tmp, kernel_op); + //kernel = tmp; //printf("%s", kernel); OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); @@ -217,6 +201,7 @@ int main(int argc, char* argv[]) cl_kernel blur; OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, prg); + /// Read input image and prepare output image cl_sdk_image input_image = { .width = 0, .height = 0, .pixel_size = 0, .pixels = NULL }; OCLERROR_PAR(input_image = cl_sdk_read_image(blur_opts.in, &error), error, blr); @@ -225,7 +210,17 @@ int main(int argc, char* argv[]) MEM_CHECK(output_image.pixels = (unsigned char *)malloc(sizeof(unsigned char) * output_image.width * output_image.height * output_image.pixel_size), error, inim); - // query if the image format is supported and change image if not + /// Query device and runtime capabilities + // 1) query image support + cl_bool image_support = false; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, outim); + if (!image_support) { + fprintf(stderr, "No image support on device!\n"); + error = CL_INVALID_DEVICE; + goto outim; + } + + // 2) query if the image format is supported and change image if not cl_image_format * formats = NULL, * format = NULL; if ((input_image.pixel_size == 1) || (input_image.pixel_size == 3)) { cl_uint formats_number = 0; @@ -288,15 +283,20 @@ int main(int argc, char* argv[]) goto outim; } - if (format->image_channel_order == CL_R) - printf("CL_R "); - else if (format->image_channel_order == CL_RGB) - printf("CL_RBG "); - else if (format->image_channel_order == CL_RGBA) - printf("CL_RBGA "); - if (format->image_channel_data_type == CL_UNSIGNED_INT8) - printf("CL_UNSIGNED_INT8\n"); + // show image format used + if (diag_opts.verbose) { + printf("Format: "); + if (format->image_channel_order == CL_R) + printf("CL_R, "); + else if (format->image_channel_order == CL_RGB) + printf("CL_RBG, "); + else if (format->image_channel_order == CL_RGBA) + printf("CL_RBGA, "); + if (format->image_channel_data_type == CL_UNSIGNED_INT8) + printf("CL_UNSIGNED_INT8\n\n"); + } + /// Create image buffers cl_mem input_image_buf, output_image_buf, temp_image_buf; const cl_image_desc desc = { .image_type = CL_MEM_OBJECT_IMAGE2D, @@ -312,19 +312,20 @@ int main(int argc, char* argv[]) OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, format, &desc, NULL, &error), error, inbuf); + /// Single-pass blur + + // set kernel parameters OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, outbuf); OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, outbuf); OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, outbuf); - cl_event pass[3]; - size_t image_size[3] = { input_image.width, input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_BLOCKING, origin, image_size, 0, 0, input_image.pixels, 0, NULL, NULL), error, outbuf); - // Single-pass blur + // blur GET_CURRENT_TIMER(single_start) OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, outbuf); OCLERROR_RET(clWaitForEvents(1, pass), error, outbuf); @@ -333,6 +334,7 @@ int main(int argc, char* argv[]) OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, output_image.pixels, 0, NULL, NULL), error, outbuf); + // restore image type if needed if (input_image.pixel_size != output_image.pixel_size) { const size_t pixels = input_image.width * input_image.height, @@ -342,21 +344,29 @@ int main(int argc, char* argv[]) } OCLERROR_PAR(cl_sdk_write_image(blur_opts.out, &output_image, &error), error, outbuf); - cl_ulong single_time; - TIMER_DIFFERENCE(single_time, single_start, single_end) - printf("Single-pass execution as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(single_time + 500) / 1000, - (unsigned long long)(cl_util_get_event_duration(pass[0], - CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); + + if (diag_opts.verbose) { + cl_ulong single_time; + TIMER_DIFFERENCE(single_time, single_start, single_end) + printf("Single-pass execution as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(single_time + 500) / 1000, + (unsigned long long)(cl_util_get_event_duration(pass[0], + CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); + } printf("Single-pass blurred image %s written.\n", blur_opts.out); - // Dual-pass blur + /// Dual-pass blur + + // create temporary buffer OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, format, &desc, NULL, &error), error, outbuf); + + // create kernels cl_kernel blur1, blur2; OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal", &error), error, tmpbuf); OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical", &error), error, blr1); + // set kernel parameters OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); @@ -365,6 +375,7 @@ int main(int argc, char* argv[]) OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + // blur GET_CURRENT_TIMER(dual_start) OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); @@ -374,6 +385,7 @@ int main(int argc, char* argv[]) OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, output_image.pixels, 0, NULL, NULL), error, outbuf); + // restore image type if needed if (input_image.pixel_size != output_image.pixel_size) { const size_t pixels = input_image.width * input_image.height, @@ -384,15 +396,18 @@ int main(int argc, char* argv[]) strcat(kernel_op, "2"); strncat(kernel_op, blur_opts.out, sizeof(kernel_op) - 2); - OCLERROR_PAR(cl_sdk_write_image(kernel_op, &output_image, &error), error, outbuf); - cl_ulong dual_time; - TIMER_DIFFERENCE(dual_time, dual_start, dual_end) - printf("Dual-pass execution as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(dual_time + 500) / 1000, - (unsigned long long)( - cl_util_get_event_duration(pass[1], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + - cl_util_get_event_duration(pass[2], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + - 500) / 1000); + OCLERROR_PAR(cl_sdk_write_image(kernel_op, &output_image, &error), error, blr2); + + if (diag_opts.verbose) { + cl_ulong dual_time; + TIMER_DIFFERENCE(dual_time, dual_start, dual_end) + printf("Dual-pass execution as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(dual_time + 500) / 1000, + (unsigned long long)( + cl_util_get_event_duration(pass[1], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + + cl_util_get_event_duration(pass[2], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + + 500) / 1000); + } printf("Dual-pass blurred image %s written.\n", kernel_op); blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index a8d45ae6..c61be6ff 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -93,14 +93,17 @@ cl_int parse_options(int argc, ParseState state = NotParsed; identifier = cag_option_get(&cag_context); - state = parse_DiagnosticOptions(identifier, diag_opts); - if (state == ParsedOK) continue; - state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); - if (state == ParsedOK) continue; - state = parse_BlurOptions(identifier, &cag_context, reduce_opts); - if (state == ParsedOK) continue; - - if ((identifier == 'h') || (state == ParseError)) { +#define PARS_OPTIONS(parser) \ +if ((state = parser) == ParsedOK) \ + continue; \ +else if (state == ParseError) \ + {printf("Parse error\n"); identifier = 'h';} + + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts)) + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts)) + PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, reduce_opts)) + + if (identifier == 'h') { printf("Usage: reduce [OPTION]...\n"); printf("Demonstrates how to query various OpenCL extensions applicable " "in the context of a reduction algorithm and to touch up kernel sources " From b3eabd7a90073ba8dfe65564e2fcc24e8c0e1203 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 12:56:01 +0200 Subject: [PATCH 161/203] WIP subgroup exchange --- samples/core/blur/blur.cl | 217 ++++++++++++++++- samples/core/blur/main.c | 501 ++++++++++++++++++++++++++------------ 2 files changed, 549 insertions(+), 169 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 59d90c9c..6e7a25ce 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -15,8 +15,7 @@ kernel void blur_box( for (shift.x = -size; shift.x <= size; ++shift.x) for (shift.y = -size; shift.y <= size; ++shift.y) { int2 cur = coord + shift; - if ((0 <= cur.x) && (cur.x < width) && (0 <= cur.y) && (cur.y < height)) - { + if ((0 <= cur.x) && (cur.x < width) && (0 <= cur.y) && (cur.y < height)) { ++num; sum += read_imageui(input_image, cur); } @@ -38,11 +37,9 @@ kernel void blur_box_horizontal( uint4 sum = 0; uint num = 0; int2 shift = 0; - for (shift.x = -size; shift.x <= size; ++shift.x) - { + for (shift.x = -size; shift.x <= size; ++shift.x) { int2 cur = coord + shift; - if ((0 <= cur.x) && (cur.x < width)) - { + if ((0 <= cur.x) && (cur.x < width)) { ++num; sum += read_imageui(input_image, cur); } @@ -63,14 +60,214 @@ kernel void blur_box_vertical( uint4 sum = 0; uint num = 0; int2 shift = 0; - for (shift.y = -size; shift.y <= size; ++shift.y) - { + for (shift.y = -size; shift.y <= size; ++shift.y) { int2 cur = coord + shift; - if ((0 <= cur.y) && (cur.y < height)) - { + if ((0 <= cur.y) && (cur.y < height)) { ++num; sum += read_imageui(input_image, cur); } } write_imageui(output_image, coord, (sum + num / 2) / num); } + +kernel void blur_box_horizontal_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + local uchar4 * line +) +{ + const int + width = get_image_width(input_image), + height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + const int + grs = get_local_size(0), + lid = get_local_id(0); + // coordinates of the leftmost and rightmost pixels needed for the workgroup + const int start = get_group_id(0) * grs; + const int2 + start_coord = { max(start - size, 0), coord.y }, + end_coord = { min(start + grs + size, width - 1), coord.y}; + + // copy all pixels needed for workgroup into local memory + int2 cur = start_coord + (int2)(lid, 0); + uint pos = lid; + while (cur.x <= end_coord.x) { + line[pos] = convert_uchar4(read_imageui(input_image, cur)); + cur.x += grs; + pos += grs; + } + barrier(CLK_LOCAL_MEM_FENCE); + + // blur + if (coord.x < width) { + uint4 sum = 0; + uint num = 0; + pos = lid + (start - size - start_coord.x); + for (cur.x = coord.x - size; cur.x <= coord.x + size; ++cur.x, ++pos) + if ((0 <= cur.x) && (cur.x < width)) { + ++num; + sum += convert_uint4(line[pos]); + } + write_imageui(output_image, coord, (sum + num / 2) / num); + } +} + +kernel void blur_box_vertical_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + local uchar4 * line +) +{ + const int + width = get_image_width(input_image), + height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + const int + grs = get_local_size(1), + lid = get_local_id(1); + // coordinates of the topmost and lowest pixels needed for the workgroup + const int start = get_group_id(1) * grs; + const int2 + start_coord = { coord.x, max(start - size, 0) }, + end_coord = { coord.x, min(start + grs + size, height - 1) }; + + // copy all pixels needed for workgroup into local memory + int2 cur = start_coord + (int2)(0, lid); + uint pos = lid; + while (cur.y <= end_coord.y) { + line[pos] = convert_uchar4(read_imageui(input_image, cur)); + cur.y += grs; + pos += grs; + } + barrier(CLK_LOCAL_MEM_FENCE); + + // blur + if (coord.y < height) { + uint4 sum = 0; + uint num = 0; + pos = lid + (start - size - start_coord.y); + for (cur.y = coord.y - size; cur.y <= coord.y + size; ++cur.y, ++pos) + if ((0 <= cur.y) && (cur.y < height)) { + ++num; + sum += convert_uint4(line[pos]); + } + write_imageui(output_image, coord, (sum + num / 2) / num); + } +} + +#if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) || defined(USE_SUBGROUP_EXCHANGE) + +kernel void blur_box_horizontal_subgroup_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size +) +{ + const int + width = get_image_width(input_image), + height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + if (coord.x < width) { + // write_imageui(output_image, coord, read_imageui(input_image, coord)); + //return; + + uint4 pixel = 0; + uint4 sum = 0; + uint num = 0; + + // initial read + int2 cur = coord + (int2)(size, 0); + if (cur.x < width) { + pixel = read_imageui(input_image, cur); + sum = pixel; + num = 1; + } + // shifts and reads + const uint sglid = get_sub_group_local_id(); + for (int i = size - 1; i >= -size; --i) { + --cur.x; + if ((cur.x >= 0) && (cur.x < width)) { + if (sglid != 0) +#if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, 1), + sub_group_shuffle_up(pixel.s1, 1), + sub_group_shuffle_up(pixel.s2, 1), + sub_group_shuffle_up(pixel.s3, 1)); +#elif defined(USE_SUBGROUP_EXCHANGE) + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - 1), + sub_group_shuffle(pixel.s1, sglid - 1), + sub_group_shuffle(pixel.s2, sglid - 1), + sub_group_shuffle(pixel.s3, sglid - 1)); +#endif + else + pixel = read_imageui(input_image, cur); + sum += pixel; + ++num; + } + } + + write_imageui(output_image, coord, (sum + num / 2) / num); + } +} + +kernel void blur_box_vertical_subgroup_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size +) +{ + const int + width = get_image_width(input_image), + height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + if (coord.y < height) { + // write_imageui(output_image, coord, read_imageui(input_image, coord)); + //return; + + uint4 pixel = 0; + uint4 sum = 0; + uint num = 0; + + // initial read + int2 cur = coord + (int2)(0, size); + if (cur.y < height) { + pixel = read_imageui(input_image, cur); + sum = pixel; + num = 1; + } + // shifts and reads + const uint sglid = get_sub_group_local_id(); + for (int i = size - 1; i >= -size; --i) { + --cur.y; + if ((cur.y >= 0) && (cur.y < height)) { + if (sglid != 0) +#if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, 1), + sub_group_shuffle_up(pixel.s1, 1), + sub_group_shuffle_up(pixel.s2, 1), + sub_group_shuffle_up(pixel.s3, 1)); +#elif defined(USE_SUBGROUP_EXCHANGE) + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - 1), + sub_group_shuffle(pixel.s1, sglid - 1), + sub_group_shuffle(pixel.s2, sglid - 1), + sub_group_shuffle(pixel.s3, sglid - 1)); +#endif + else + pixel = read_imageui(input_image, cur); + sum += pixel; + ++num; + } + } + + write_imageui(output_image, coord, (sum + num / 2) / num); + } +} + +#endif // USE_SUBGROUP_EXCHANGE_RELATIVE || USE_SUBGROUP_EXCHANGE diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 72f184fc..0c8989a8 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -138,6 +138,125 @@ end: free(opts); return error; } +cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image * const output_image, + const cl_context context, const bool verbose, cl_int * const error) +{ + // this format is always supported + cl_image_format res = { + .image_channel_order = CL_RGBA, + .image_channel_data_type = CL_UNSIGNED_INT8 + }; + *error = CL_SUCCESS; + + if ((input_image->pixel_size == 1) || (input_image->pixel_size == 3)) { + cl_image_format * formats = NULL; + cl_uint formats_number = 0; + OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + 0, NULL, &formats_number), *error, end); + MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) * formats_number), *error, end); + OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + formats_number, formats, NULL), *error, end); + // search for 3/1 channels of uint8_t + for (cl_uint i = 0; i < formats_number; ++i) + if ( ((input_image->pixel_size == 3) + && (formats[i].image_channel_order == CL_RGB) + && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) + || ((input_image->pixel_size == 1) + && (formats[i].image_channel_order == CL_R) + && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8))) + { + return formats[i]; + } + + // if not found, default to 4 channels of uint8_t + if (verbose) + printf("Converting picture into supported format... "); + + const size_t + pixels = input_image->width * input_image->height, + new = sizeof(unsigned char) * pixels * 4; + unsigned char * tmp = NULL; + MEM_CHECK(tmp = (unsigned char *)realloc(input_image->pixels, new), *error, end); + input_image->pixels = tmp; + MEM_CHECK(tmp = (unsigned char *)realloc(output_image->pixels, new), *error, end); + output_image->pixels = tmp; + + // change picture + const size_t pixel_size = input_image->pixel_size; + for (size_t i = pixels - 1; i != 0; --i) { + memcpy(input_image->pixels + 4 * i, input_image->pixels + pixel_size * i, pixel_size); + memset(input_image->pixels + 4 * i + pixel_size, 0, 4 - pixel_size); + } + memset(input_image->pixels + pixel_size, 0, 4 - pixel_size); + input_image->pixel_size = 4; + // store initial pixel_size in output_image->pixel_size + if (verbose) + printf("done.\n"); + } + else if (input_image->pixel_size != 4) { + fprintf(stderr, "Unknown image format!\n"); + *error = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; + return res; + } + + // show image format used + if (verbose) { + printf("Format: "); + if (res.image_channel_order == CL_R) + printf("CL_R, "); + else if (res.image_channel_order == CL_RGB) + printf("CL_RBG, "); + else if (res.image_channel_order == CL_RGBA) + printf("CL_RBGA, "); + if (res.image_channel_data_type == CL_UNSIGNED_INT8) + printf("CL_UNSIGNED_INT8\n\n"); + } + +end: return res; +} + +cl_int finalize_blur(cl_sdk_image * const input_image, cl_sdk_image * const output_image, + const char * const filename, const cl_uint step) +{ + cl_int error = CL_SUCCESS; + + // restore image type if needed + if (input_image->pixel_size != output_image->pixel_size) { + const size_t + pixels = input_image->width * input_image->height, + pixel_size = output_image->pixel_size; + for (size_t i = 1; i < pixels; ++i) + memcpy(output_image->pixels + pixel_size * i, output_image->pixels + 4 * i, pixel_size); + } + + char name[1024]; + sprintf(name, "%u", step); + strncat(name, filename, sizeof(name) - 2); + cl_sdk_write_image(name, output_image, &error); + if (error == CL_SUCCESS) + printf("Image %s written.\n\n", name); + + return error; +} + +cl_int print_timings(struct timespec start, struct timespec end, cl_event * event_list, cl_uint event_number) +{ + cl_int error = CL_SUCCESS; + + cl_ulong time_host, time_device = 0; + TIMER_DIFFERENCE(time_host, start, end) + for (cl_uint i = 0; i < event_number; ++i) { + time_device += cl_util_get_event_duration(event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error); + if (error != CL_SUCCESS) + return error; + } + printf("Execution time as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(time_host + 500) / 1000, + (unsigned long long)(time_device + 500) / 1000); + + return error; +} + int main(int argc, char* argv[]) { cl_int error = CL_SUCCESS, @@ -147,6 +266,7 @@ int main(int argc, char* argv[]) cl_context context; cl_command_queue queue; cl_event pass[3]; // events to measure execution time + cl_uint im = 1; /// Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; @@ -174,36 +294,11 @@ int main(int argc, char* argv[]) if (!diag_opts.quiet) { cl_util_print_device_info(device); - char * name = NULL; - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, &error), error, nam); - printf("%s", name); -nam: free(name); } - /// Compile kernel - const char * kernel_location = "./blur.cl"; - char * kernel = NULL, * tmp = NULL; - size_t program_size = 0; - cl_program program = NULL; - char kernel_op[1024] = ""; // here we can put some dynamic definitions - - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); - //program_size += 1 + strlen(kernel_op); - //MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); - //strcat(tmp, kernel_op); - //kernel = tmp; - //printf("%s", kernel); - - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); - kernel_op[0] = '\0'; - OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); - - cl_kernel blur; - OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, prg); - /// Read input image and prepare output image cl_sdk_image input_image = { .width = 0, .height = 0, .pixel_size = 0, .pixels = NULL }; - OCLERROR_PAR(input_image = cl_sdk_read_image(blur_opts.in, &error), error, blr); + OCLERROR_PAR(input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); cl_sdk_image output_image = { .width = input_image.width, .height = input_image.height, .pixel_size = input_image.pixel_size, .pixels = NULL }; @@ -221,79 +316,36 @@ nam: free(name); } // 2) query if the image format is supported and change image if not - cl_image_format * formats = NULL, * format = NULL; - if ((input_image.pixel_size == 1) || (input_image.pixel_size == 3)) { - cl_uint formats_number = 0; - OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, - 0, NULL, &formats_number), error, outim); - MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) * formats_number), error, outim); - OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, - formats_number, formats, NULL), error, frmt); - // search for 3/1 channels of uint8_t - for (cl_uint i = 0; i < formats_number; ++i) - if ( ((input_image.pixel_size == 3) - && (formats[i].image_channel_order == CL_RGB) - && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) - || ((input_image.pixel_size == 1) - && (formats[i].image_channel_order == CL_R) - && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8))) - { - format = formats + i; - break; - } - // if not found, default to 4 channels of uint8_t - if (!format) { - if (diag_opts.verbose) - printf("Converting picture into supported format... "); - format = formats; - format->image_channel_order = CL_RGBA; - formats->image_channel_data_type = CL_UNSIGNED_INT8; - - const size_t - pixels = input_image.width * input_image.height, - new = sizeof(unsigned char) * pixels * 4; - unsigned char * tmp = NULL; - MEM_CHECK(tmp = (unsigned char *)realloc(input_image.pixels, new), error, frmt); - input_image.pixels = tmp; - MEM_CHECK(tmp = (unsigned char *)realloc(output_image.pixels, new), error, frmt); - output_image.pixels = tmp; - - // change picture - const size_t pixel_size = input_image.pixel_size; - for (size_t i = pixels - 1; i != 0; --i) { - memcpy(input_image.pixels + 4 * i, input_image.pixels + pixel_size * i, pixel_size); - memset(input_image.pixels + 4 * i + pixel_size, 0, 4 - pixel_size); - } - memset(input_image.pixels + pixel_size, 0, 4 - pixel_size); - input_image.pixel_size = 4; - // store initial pixel_size in output_image.pixel_size - if (diag_opts.verbose) - printf("done.\n"); - } - } - else if (input_image.pixel_size == 4) { - MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format)), error, outim); - format = formats; - format->image_channel_order = CL_RGBA; - formats->image_channel_data_type = CL_UNSIGNED_INT8; - } - else { - fprintf(stderr, "Unknown image format!\n"); - error = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; - goto outim; - } + cl_image_format format; + OCLERROR_PAR(format = set_image_format(&input_image, &output_image, context, diag_opts.verbose, &error), error, outim); + + // 3) query if device have local memory and its size + bool use_local_mem = false; + cl_device_local_mem_type mt; + OCLERROR_RET(clGetDeviceInfo(device, + CL_DEVICE_LOCAL_MEM_TYPE, sizeof(cl_device_local_mem_type), &mt, NULL), error, outim); + if (mt == CL_LOCAL) + use_local_mem = true; + + cl_ulong loc_mem; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, outim); + + // 4) query if device allow subgroup shuffle operations + bool use_subgroup_exchange = false, use_subgroup_exchange_relative = false; + { + char * name = NULL, * tmp1 = NULL, * tmp2 = NULL; + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, &error), error, nam); + printf("%s\n\n", name); + tmp1 = strstr(name, "cl_khr_subgroup_shuffle_relative"); + if (tmp1) + use_subgroup_exchange_relative = true; + tmp2 = strstr(name, "cl_khr_subgroup_shuffle"); + if (tmp2 && (tmp2 == tmp1)) // exclude relative + tmp2 = strstr(tmp2 + 1, "cl_khr_subgroup_shuffle"); + if (tmp2) + use_subgroup_exchange = true; - // show image format used - if (diag_opts.verbose) { - printf("Format: "); - if (format->image_channel_order == CL_R) - printf("CL_R, "); - else if (format->image_channel_order == CL_RGB) - printf("CL_RBG, "); - else if (format->image_channel_order == CL_RGBA) - printf("CL_RBGA, "); - if (format->image_channel_data_type == CL_UNSIGNED_INT8) - printf("CL_UNSIGNED_INT8\n\n"); +nam: free(name); } /// Create image buffers @@ -308,58 +360,69 @@ nam: free(name); .mem_object = NULL }; OCLERROR_PAR(input_image_buf = clCreateImage(context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, - format, &desc, NULL, &error), error, frmt); + &format, &desc, NULL, &error), error, outim); OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - format, &desc, NULL, &error), error, inbuf); - - /// Single-pass blur - - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, outbuf); - OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, outbuf); - OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, outbuf); + &format, &desc, NULL, &error), error, inbuf); size_t image_size[3] = { input_image.width, input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; - OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, input_image.pixels, 0, NULL, NULL), error, outbuf); + /// Create OpenCL program + const char * kernel_location = "./blur.cl"; + char * kernel = NULL, * tmp = NULL; + size_t program_size = 0; + cl_program program = NULL; + char kernel_op[1024] = ""; // here we can put some dynamic definitions + + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, outbuf); + //program_size += 1 + strlen(kernel_op); + //MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); + //strcat(tmp, kernel_op); + //kernel = tmp; + //printf("%s", kernel); + + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, + (const char **)&kernel, &program_size, &error), error, ker); + OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); + kernel_op[0] = '\0'; + + /// Single-pass blur + printf("Single-pass blur\n"); + + // compile kernel + cl_kernel blur; + OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, prg); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, blr); + // blur GET_CURRENT_TIMER(single_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, outbuf); - OCLERROR_RET(clWaitForEvents(1, pass), error, outbuf); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, blr); + OCLERROR_RET(clWaitForEvents(1, pass), error, blr); GET_CURRENT_TIMER(single_end) OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, outbuf); - - // restore image type if needed - if (input_image.pixel_size != output_image.pixel_size) { - const size_t - pixels = input_image.width * input_image.height, - pixel_size = output_image.pixel_size; - for (size_t i = 1; i < pixels; ++i) - memcpy(output_image.pixels + pixel_size * i, output_image.pixels + 4 * i, pixel_size); - } + output_image.pixels, 0, NULL, NULL), error, blr); - OCLERROR_PAR(cl_sdk_write_image(blur_opts.out, &output_image, &error), error, outbuf); + if (diag_opts.verbose) + print_timings(single_start, single_end, pass, 1); - if (diag_opts.verbose) { - cl_ulong single_time; - TIMER_DIFFERENCE(single_time, single_start, single_end) - printf("Single-pass execution as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(single_time + 500) / 1000, - (unsigned long long)(cl_util_get_event_duration(pass[0], - CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); - } - printf("Single-pass blurred image %s written.\n", blur_opts.out); + // write output file + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr); /// Dual-pass blur + printf("Dual-pass blur\n"); + ++im; // create temporary buffer OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - format, &desc, NULL, &error), error, outbuf); + &format, &desc, NULL, &error), error, blr); // create kernels cl_kernel blur1, blur2; @@ -379,48 +442,168 @@ nam: free(name); GET_CURRENT_TIMER(dual_start) OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, outbuf); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); GET_CURRENT_TIMER(dual_end) OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, outbuf); + output_image.pixels, 0, NULL, NULL), error, blr2); + + if (diag_opts.verbose) + print_timings(dual_start, dual_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); + + /// Use local memory exchange in dual-pass blur + if (use_local_mem) { + printf("Dual-pass local memory exchange blur\n"); + ++im; + + clReleaseKernel(blur2); + clReleaseKernel(blur1); + + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_exchange", &error), error, tmpbuf); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_exchange", &error), error, blr1); + + // 4) query maximum supported WGS of kernel on device based on private mem (register) constraints + size_t wgs1, psm1, wgs2, psm2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); + + // Further constrain (reduce) WGS based on shared mem size on device + if (loc_mem >= (max(psm1, psm2) + 2 * blur_opts.size) * sizeof(cl_uchar4)) { + while (loc_mem < (wgs1 + 2 * blur_opts.size) * sizeof(cl_uchar4)) + wgs1 -= psm1; + while (loc_mem < (wgs2 + 2 * blur_opts.size) * sizeof(cl_uchar4)) + wgs2 -= psm2; + } + else { + printf("Not enough local memory to serve a single sub-group.\n"); + error = CL_OUT_OF_RESOURCES; + goto blr2; + } - // restore image type if needed - if (input_image.pixel_size != output_image.pixel_size) { - const size_t - pixels = input_image.width * input_image.height, - pixel_size = output_image.pixel_size; - for (size_t i = 1; i < pixels; ++i) - memcpy(output_image.pixels + pixel_size * i, output_image.pixels + 4 * i, pixel_size); + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * blur_opts.size), NULL), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * blur_opts.size), NULL), error, blr2); + + // blur + GET_CURRENT_TIMER(dual_start) + size_t work_size1[3] = { (input_image.width + wgs1 - 1) / wgs1 * wgs1, input_image.height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + size_t work_size2[3] = { input_image.width, (input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(dual_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image.pixels, 0, NULL, NULL), error, blr2); + + if (diag_opts.verbose) + print_timings(dual_start, dual_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); } - strcat(kernel_op, "2"); - strncat(kernel_op, blur_opts.out, sizeof(kernel_op) - 2); - OCLERROR_PAR(cl_sdk_write_image(kernel_op, &output_image, &error), error, blr2); - - if (diag_opts.verbose) { - cl_ulong dual_time; - TIMER_DIFFERENCE(dual_time, dual_start, dual_end) - printf("Dual-pass execution as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(dual_time + 500) / 1000, - (unsigned long long)( - cl_util_get_event_duration(pass[1], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + - cl_util_get_event_duration(pass[2], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + - 500) / 1000); + /// Subgroup exchange + while (use_subgroup_exchange_relative || use_subgroup_exchange) { + if (use_subgroup_exchange_relative) + printf("Dual-pass subgroup relative exchange blur\n"); + else if (use_subgroup_exchange) + printf("Dual-pass subgroup exchange blur\n"); + ++im; + + clReleaseKernel(blur2); + clReleaseKernel(blur1); + cl_program pr; + + // TODO error handling + kernel_op[0] = '\0'; + if (use_subgroup_exchange_relative) + strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); + else if (use_subgroup_exchange) + strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); + OCLERROR_PAR(pr = clCreateProgramWithSource(context, 1, + (const char **)&kernel, &program_size, &error), error, tmpbuf); + OCLERROR_RET(cl_util_build_program(pr, device, kernel_op), error, tmpbuf); + + // create kernels + OCLERROR_PAR(blur1 = clCreateKernel(pr, "blur_box_horizontal_subgroup_exchange", &error), error, tmpbuf); + OCLERROR_PAR(blur2 = clCreateKernel(pr, "blur_box_vertical_subgroup_exchange", &error), error, blr1); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + + // 5) query preferred subgroup size of kernel on device + size_t wgs1, wgs2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + + // blur + GET_CURRENT_TIMER(rel_start) + size_t work_size1[3] = { (input_image.width + wgs1 - 1) / wgs1 * wgs1, input_image.height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + size_t work_size2[3] = { input_image.width, (input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(rel_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image.pixels, 0, NULL, NULL), error, blr2); + + if (diag_opts.verbose) + print_timings(rel_start, rel_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); + + if (use_subgroup_exchange_relative) { + use_subgroup_exchange_relative = false; + continue; + } + else if (use_subgroup_exchange) { + use_subgroup_exchange = false; + continue; + } } - printf("Dual-pass blurred image %s written.\n", kernel_op); + /// Cleanup blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, tmpbuf); -tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, outbuf); +tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, blr); +blr: OCLERROR_RET(clReleaseKernel(blur), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); +ker: free(kernel); outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); -frmt: free(formats); outim: free(output_image.pixels); inim: free(input_image.pixels); -blr: OCLERROR_RET(clReleaseKernel(blur), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); -ker: free(kernel); que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); cont: OCLERROR_RET(clReleaseContext(context), end_error, end); end: if (error) cl_util_print_error(error); From a89c35fc60ebf814aff298e739ad83dc3d2c37d9 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 13:15:21 +0200 Subject: [PATCH 162/203] Fixing GCC compilation --- samples/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 2802b778..d51fa22c 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -59,7 +59,7 @@ macro(add_sample) ) target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE - stb +# stb cargs OpenCL::Headers OpenCL::HeadersCpp From a7169e214f21f8a4feead35a00b4df6707947f64 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 13:19:27 +0200 Subject: [PATCH 163/203] No max defined in GCC --- samples/core/blur/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 0c8989a8..07aae762 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -477,7 +477,7 @@ nam: free(name); CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); // Further constrain (reduce) WGS based on shared mem size on device - if (loc_mem >= (max(psm1, psm2) + 2 * blur_opts.size) * sizeof(cl_uchar4)) { + if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * blur_opts.size) * sizeof(cl_uchar4)) { while (loc_mem < (wgs1 + 2 * blur_opts.size) * sizeof(cl_uchar4)) wgs1 -= psm1; while (loc_mem < (wgs2 + 2 * blur_opts.size) * sizeof(cl_uchar4)) From 978a43864abae925316520b89443f6e08a99b0f0 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 13:32:43 +0200 Subject: [PATCH 164/203] And link m here also --- lib/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index ed62ff0f..96e76d36 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -6,6 +6,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_SOURCES src/Utils/Utils.c) set(UTIL_LIB_DEPS OpenCL::Headers + $<$:m> ) set(UTIL_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) elseif(UTIL_LIB_NAME STREQUAL UtilsCpp) From 64ef1580a8a0cd8213d7ce219f4d73104c6ce80c Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 15:28:07 +0200 Subject: [PATCH 165/203] Variant for review --- samples/core/blur/blur.cl | 90 +++++++++++++++++---------------------- samples/core/blur/main.c | 59 ++++++++++++------------- 2 files changed, 68 insertions(+), 81 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 6e7a25ce..559fe04f 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -77,19 +77,16 @@ kernel void blur_box_horizontal_exchange( local uchar4 * line ) { - const int - width = get_image_width(input_image), - height = get_image_height(input_image); + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); const int2 coord = { get_global_id(0), get_global_id(1) }; - const int - grs = get_local_size(0), - lid = get_local_id(0); + const int grs = get_local_size(0); + const int lid = get_local_id(0); // coordinates of the leftmost and rightmost pixels needed for the workgroup const int start = get_group_id(0) * grs; - const int2 - start_coord = { max(start - size, 0), coord.y }, - end_coord = { min(start + grs + size, width - 1), coord.y}; + const int2 start_coord = { max(start - size, 0), coord.y }; + const int2 end_coord = { min(start + grs + size, width - 1), coord.y}; // copy all pixels needed for workgroup into local memory int2 cur = start_coord + (int2)(lid, 0); @@ -122,19 +119,16 @@ kernel void blur_box_vertical_exchange( local uchar4 * line ) { - const int - width = get_image_width(input_image), - height = get_image_height(input_image); + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); const int2 coord = { get_global_id(0), get_global_id(1) }; - const int - grs = get_local_size(1), - lid = get_local_id(1); + const int grs = get_local_size(1); + const int lid = get_local_id(1); // coordinates of the topmost and lowest pixels needed for the workgroup const int start = get_group_id(1) * grs; - const int2 - start_coord = { coord.x, max(start - size, 0) }, - end_coord = { coord.x, min(start + grs + size, height - 1) }; + const int2 start_coord = { coord.x, max(start - size, 0) }; + const int2 end_coord = { coord.x, min(start + grs + size, height - 1) }; // copy all pixels needed for workgroup into local memory int2 cur = start_coord + (int2)(0, lid); @@ -168,15 +162,11 @@ kernel void blur_box_horizontal_subgroup_exchange( int size ) { - const int - width = get_image_width(input_image), - height = get_image_height(input_image); + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); const int2 coord = { get_global_id(0), get_global_id(1) }; if (coord.x < width) { - // write_imageui(output_image, coord, read_imageui(input_image, coord)); - //return; - uint4 pixel = 0; uint4 sum = 0; uint num = 0; @@ -190,22 +180,22 @@ kernel void blur_box_horizontal_subgroup_exchange( } // shifts and reads const uint sglid = get_sub_group_local_id(); + const uint shift = (sglid != 0); for (int i = size - 1; i >= -size; --i) { --cur.x; - if ((cur.x >= 0) && (cur.x < width)) { - if (sglid != 0) #if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) - pixel = (uint4)(sub_group_shuffle_up(pixel.s0, 1), - sub_group_shuffle_up(pixel.s1, 1), - sub_group_shuffle_up(pixel.s2, 1), - sub_group_shuffle_up(pixel.s3, 1)); + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, shift), + sub_group_shuffle_up(pixel.s1, shift), + sub_group_shuffle_up(pixel.s2, shift), + sub_group_shuffle_up(pixel.s3, shift)); #elif defined(USE_SUBGROUP_EXCHANGE) - pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - 1), - sub_group_shuffle(pixel.s1, sglid - 1), - sub_group_shuffle(pixel.s2, sglid - 1), - sub_group_shuffle(pixel.s3, sglid - 1)); + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - shift), + sub_group_shuffle(pixel.s1, sglid - shift), + sub_group_shuffle(pixel.s2, sglid - shift), + sub_group_shuffle(pixel.s3, sglid - shift)); #endif - else + if ((cur.x >= 0) && (cur.x < width)) { + if (!shift) // 0th workitem reads new pixel pixel = read_imageui(input_image, cur); sum += pixel; ++num; @@ -222,15 +212,11 @@ kernel void blur_box_vertical_subgroup_exchange( int size ) { - const int - width = get_image_width(input_image), - height = get_image_height(input_image); + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); const int2 coord = { get_global_id(0), get_global_id(1) }; if (coord.y < height) { - // write_imageui(output_image, coord, read_imageui(input_image, coord)); - //return; - uint4 pixel = 0; uint4 sum = 0; uint num = 0; @@ -244,22 +230,22 @@ kernel void blur_box_vertical_subgroup_exchange( } // shifts and reads const uint sglid = get_sub_group_local_id(); + const uint shift = (sglid != 0); for (int i = size - 1; i >= -size; --i) { --cur.y; - if ((cur.y >= 0) && (cur.y < height)) { - if (sglid != 0) #if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) - pixel = (uint4)(sub_group_shuffle_up(pixel.s0, 1), - sub_group_shuffle_up(pixel.s1, 1), - sub_group_shuffle_up(pixel.s2, 1), - sub_group_shuffle_up(pixel.s3, 1)); + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, shift), + sub_group_shuffle_up(pixel.s1, shift), + sub_group_shuffle_up(pixel.s2, shift), + sub_group_shuffle_up(pixel.s3, shift)); #elif defined(USE_SUBGROUP_EXCHANGE) - pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - 1), - sub_group_shuffle(pixel.s1, sglid - 1), - sub_group_shuffle(pixel.s2, sglid - 1), - sub_group_shuffle(pixel.s3, sglid - 1)); + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - shift), + sub_group_shuffle(pixel.s1, sglid - shift), + sub_group_shuffle(pixel.s2, sglid - shift), + sub_group_shuffle(pixel.s3, sglid - shift)); #endif - else + if ((cur.y >= 0) && (cur.y < height)) { + if (!shift) // 0th workitem reads new pixel pixel = read_imageui(input_image, cur); sum += pixel; ++num; diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 07aae762..03993c76 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -292,9 +292,8 @@ int main(int argc, char* argv[]) OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); #endif - if (!diag_opts.quiet) { + if (!diag_opts.quiet) cl_util_print_device_info(device); - } /// Read input image and prepare output image cl_sdk_image input_image = { .width = 0, .height = 0, .pixel_size = 0, .pixels = NULL }; @@ -335,7 +334,6 @@ int main(int argc, char* argv[]) { char * name = NULL, * tmp1 = NULL, * tmp2 = NULL; OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, &error), error, nam); - printf("%s\n\n", name); tmp1 = strstr(name, "cl_khr_subgroup_shuffle_relative"); if (tmp1) use_subgroup_exchange_relative = true; @@ -375,14 +373,9 @@ nam: free(name); char * kernel = NULL, * tmp = NULL; size_t program_size = 0; cl_program program = NULL; - char kernel_op[1024] = ""; // here we can put some dynamic definitions + char kernel_op[1024] = ""; // here we put some dynamic definitions OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, outbuf); - //program_size += 1 + strlen(kernel_op); - //MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); - //strcat(tmp, kernel_op); - //kernel = tmp; - //printf("%s", kernel); OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); @@ -521,7 +514,7 @@ nam: free(name); OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); } - /// Subgroup exchange + /// Subgroup exchange in dual-pass blur while (use_subgroup_exchange_relative || use_subgroup_exchange) { if (use_subgroup_exchange_relative) printf("Dual-pass subgroup relative exchange blur\n"); @@ -529,48 +522,50 @@ nam: free(name); printf("Dual-pass subgroup exchange blur\n"); ++im; - clReleaseKernel(blur2); - clReleaseKernel(blur1); cl_program pr; - // TODO error handling kernel_op[0] = '\0'; if (use_subgroup_exchange_relative) strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); else if (use_subgroup_exchange) strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); OCLERROR_PAR(pr = clCreateProgramWithSource(context, 1, - (const char **)&kernel, &program_size, &error), error, tmpbuf); - OCLERROR_RET(cl_util_build_program(pr, device, kernel_op), error, tmpbuf); + (const char **)&kernel, &program_size, &error), error, sbg); + OCLERROR_RET(cl_util_build_program(pr, device, kernel_op), error, newprg); // create kernels - OCLERROR_PAR(blur1 = clCreateKernel(pr, "blur_box_horizontal_subgroup_exchange", &error), error, tmpbuf); - OCLERROR_PAR(blur2 = clCreateKernel(pr, "blur_box_vertical_subgroup_exchange", &error), error, blr1); + cl_kernel temp_kernel; + OCLERROR_PAR(temp_kernel = clCreateKernel(pr, "blur_box_horizontal_subgroup_exchange", &error), error, newprg); + OCLERROR_RET(clReleaseKernel(blur1), error, newprg); + blur1 = temp_kernel; + OCLERROR_PAR(temp_kernel = clCreateKernel(pr, "blur_box_vertical_subgroup_exchange", &error), error, newprg); + OCLERROR_RET(clReleaseKernel(blur2), error, newprg); + blur2 = temp_kernel; // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, newprg); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, newprg); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, newprg); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, newprg); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, newprg); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, newprg); // 5) query preferred subgroup size of kernel on device size_t wgs1, wgs2; OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, newprg); OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, newprg); // blur GET_CURRENT_TIMER(rel_start) size_t work_size1[3] = { (input_image.width + wgs1 - 1) / wgs1 * wgs1, input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, newprg); size_t work_size2[3] = { input_image.width, (input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, newprg); OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); GET_CURRENT_TIMER(rel_end) @@ -581,16 +576,22 @@ nam: free(name); print_timings(rel_start, rel_end, pass + 1, 2); // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, newprg); if (use_subgroup_exchange_relative) { use_subgroup_exchange_relative = false; + OCLERROR_RET(clReleaseProgram(pr), error, sbg); continue; } else if (use_subgroup_exchange) { use_subgroup_exchange = false; + OCLERROR_RET(clReleaseProgram(pr), error, sbg); continue; } + + // cleanup for error handling +newprg: clReleaseProgram(pr); +sbg: goto blr2; } /// Cleanup @@ -606,6 +607,6 @@ outim: free(output_image.pixels); inim: free(input_image.pixels); que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); cont: OCLERROR_RET(clReleaseContext(context), end_error, end); -end: if (error) cl_util_print_error(error); +end: if (error != CL_SUCCESS) cl_util_print_error(error); return error; } From 732e091bc0315f48023b3348ee4755161b2eab8b Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 17 Nov 2021 18:09:52 +0200 Subject: [PATCH 166/203] WIP Gaussian blur --- samples/core/blur/blur.cl | 52 ++++++++++++++++++++++++++ samples/core/blur/main.c | 77 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 128 insertions(+), 1 deletion(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 559fe04f..4af25040 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -257,3 +257,55 @@ kernel void blur_box_vertical_subgroup_exchange( } #endif // USE_SUBGROUP_EXCHANGE_RELATIVE || USE_SUBGROUP_EXCHANGE + +kernel void blur_gauss_horizontal( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + const float * kern +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + // coordinates of the pixel to work on + const int2 coord = { get_global_id(0), get_global_id(1) }; + + float4 sum = 0; + float weight = 0; + int2 shift = 0; + for (shift.x = -size; shift.x <= size; ++shift.x) { + int2 cur = coord + shift; + if ((0 <= cur.x) && (cur.x < width)) { + const float w = kern[size + shift.x]; + weight += w; + sum += read_imageui(input_image, cur) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); +} + +kernel void blur_gauss_vertical( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + const float * kern +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + // coordinates of the pixel to work on + const int2 coord = { get_global_id(0), get_global_id(1) }; + + float4 sum = 0; + float weight = 0; + int2 shift = 0; + for (shift.y = -size; shift.y <= size; ++shift.y) { + int2 cur = coord + shift; + if ((0 <= cur.y) && (cur.y < height)) { + const float w = kern[size + shift.y]; + weight += w; + sum += read_imageui(input_image, cur) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); +} \ No newline at end of file diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 03993c76..40c3ae9c 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -28,7 +28,7 @@ // Sample-specific option struct options_Blur { - unsigned int size; + int size; const char * in, * out, * op; }; @@ -138,6 +138,32 @@ end: free(opts); return error; } +float Gaussian(float x, float radius) +{ + const float M_PI = 3.141592653589793238462f; + return expf(-x * x / (2 * radius * radius)) / (sqrtf(2 * M_PI) * radius); +} + +// note that the kernel is not normalized and has size of 2*(*size)+1 elements +cl_int create_gaussian_kernel(float radius, float ** const kernel, int * const size) +{ + cl_int error = CL_SUCCESS; + + radius = fabsf(radius); + *size = ceilf(3 * radius); + int span = 2 * *size + 1; + *kernel = NULL; + MEM_CHECK(*kernel = (float *)malloc(sizeof(float) * span), error, end); + + for (int i = 0; i <= *size; ++i) { + float gx = Gaussian((float)i, radius); + (*kernel)[*size + i] = gx; + (*kernel)[*size - i] = gx; + } + +end: return error; +} + cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image * const output_image, const cl_context context, const bool verbose, cl_int * const error) { @@ -594,6 +620,55 @@ newprg: clReleaseProgram(pr); sbg: goto blr2; } + /// Gaussian blur + { + printf("Dual-pass Gaussian blur\n"); + ++im; + + clReleaseKernel(blur2); + clReleaseKernel(blur1); + + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_gauss_horizontal", &error), error, tmpbuf); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_gauss_vertical", &error), error, blr1); + + float * gauss = NULL; + int gauss_size = 0; + OCLERROR_RET(create_gaussian_kernel(blur_opts.size, &gauss, &gauss_size), error, gau); + cl_mem gauss_kern; + OCLERROR_PAR(gauss_kern = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + sizeof(float) * (2 * gauss_size + 1), gauss, &error), error, gau); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &gauss_size), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &gauss_kern), error, gaukrn); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &gauss_size), error, gaukrn); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &gauss_kern), error, gaukrn); + + // blur + GET_CURRENT_TIMER(gauss_start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, gaukrn); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, gaukrn); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, gaukrn); + GET_CURRENT_TIMER(gauss_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image.pixels, 0, NULL, NULL), error, gaukrn); + + if (diag_opts.verbose) + print_timings(gauss_start, gauss_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, gaukrn); + +gaukrn: OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); +gau: free(gauss); + } + /// Cleanup blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, tmpbuf); From 177cb27c068fccf157833cdb2149621c8bedaa29 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 18 Nov 2021 13:20:33 +0200 Subject: [PATCH 167/203] Gauss dual-pass: simple and subgroup excahnge --- samples/core/blur/blur.cl | 162 +++++++-- samples/core/blur/main.c | 673 ++++++++++++++++++++++++-------------- 2 files changed, 554 insertions(+), 281 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 4af25040..1d92fb96 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -70,6 +70,58 @@ kernel void blur_box_vertical( write_imageui(output_image, coord, (sum + num / 2) / num); } + +kernel void blur_kernel_horizontal( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + const float * kern +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + float4 sum = 0; + float weight = 0; + int2 shift = 0; + for (shift.x = -size; shift.x <= size; ++shift.x) { + int2 cur = coord + shift; + if ((0 <= cur.x) && (cur.x < width)) { + const float w = kern[size + shift.x]; + weight += w; + sum += read_imageui(input_image, cur) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); +} + +kernel void blur_kernel_vertical( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + const float * kern +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + float4 sum = 0; + float weight = 0; + int2 shift = 0; + for (shift.y = -size; shift.y <= size; ++shift.y) { + int2 cur = coord + shift; + if ((0 <= cur.y) && (cur.y < height)) { + const float w = kern[size + shift.y]; + weight += w; + sum += read_imageui(input_image, cur) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); +} + + kernel void blur_box_horizontal_exchange( read_only image2d_t input_image, write_only image2d_t output_image, @@ -154,6 +206,7 @@ kernel void blur_box_vertical_exchange( } } + #if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) || defined(USE_SUBGROUP_EXCHANGE) kernel void blur_box_horizontal_subgroup_exchange( @@ -256,56 +309,109 @@ kernel void blur_box_vertical_subgroup_exchange( } } -#endif // USE_SUBGROUP_EXCHANGE_RELATIVE || USE_SUBGROUP_EXCHANGE -kernel void blur_gauss_horizontal( +kernel void blur_kernel_horizontal_subgroup_exchange( read_only image2d_t input_image, write_only image2d_t output_image, int size, - const float * kern + constant float * kern ) { const int width = get_image_width(input_image); const int height = get_image_height(input_image); - // coordinates of the pixel to work on const int2 coord = { get_global_id(0), get_global_id(1) }; - float4 sum = 0; - float weight = 0; - int2 shift = 0; - for (shift.x = -size; shift.x <= size; ++shift.x) { - int2 cur = coord + shift; - if ((0 <= cur.x) && (cur.x < width)) { - const float w = kern[size + shift.x]; - weight += w; - sum += read_imageui(input_image, cur) * w; + if (coord.x < width) { + uint4 pixel = 0; + float4 sum = 0; + float weight = 0; + + // initial read + int2 cur = coord + (int2)(size, 0); + if (cur.x < width) { + pixel = read_imageui(input_image, cur); + weight = kern[2 * size]; + sum = convert_float4(pixel) * weight; + } + // shifts and reads + const uint sglid = get_sub_group_local_id(); + const uint shift = (sglid != 0); + for (int i = size - 1; i >= -size; --i) { + --cur.x; +#if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, shift), + sub_group_shuffle_up(pixel.s1, shift), + sub_group_shuffle_up(pixel.s2, shift), + sub_group_shuffle_up(pixel.s3, shift)); +#elif defined(USE_SUBGROUP_EXCHANGE) + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - shift), + sub_group_shuffle(pixel.s1, sglid - shift), + sub_group_shuffle(pixel.s2, sglid - shift), + sub_group_shuffle(pixel.s3, sglid - shift)); +#endif + if ((cur.x >= 0) && (cur.x < width)) { + if (!shift) // 0th workitem reads new pixel + pixel = read_imageui(input_image, cur); + float w = kern[size + i]; + weight += w; + sum += convert_float4(pixel) * w; + } } + + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); } - write_imageui(output_image, coord, convert_uint4(round(sum / weight))); } -kernel void blur_gauss_vertical( +kernel void blur_kernel_vertical_subgroup_exchange( read_only image2d_t input_image, write_only image2d_t output_image, int size, - const float * kern + constant float * kern ) { const int width = get_image_width(input_image); const int height = get_image_height(input_image); - // coordinates of the pixel to work on const int2 coord = { get_global_id(0), get_global_id(1) }; - float4 sum = 0; - float weight = 0; - int2 shift = 0; - for (shift.y = -size; shift.y <= size; ++shift.y) { - int2 cur = coord + shift; - if ((0 <= cur.y) && (cur.y < height)) { - const float w = kern[size + shift.y]; - weight += w; - sum += read_imageui(input_image, cur) * w; + if (coord.y < height) { + uint4 pixel = 0; + float4 sum = 0; + float weight = 0; + + // initial read + int2 cur = coord + (int2)(0, size); + if (cur.y < height) { + pixel = read_imageui(input_image, cur); + weight = kern[2 * size]; + sum = convert_float4(pixel) * weight; + } + // shifts and reads + const uint sglid = get_sub_group_local_id(); + const uint shift = (sglid != 0); + for (int i = size - 1; i >= -size; --i) { + --cur.y; +#if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) + pixel = (uint4)(sub_group_shuffle_up(pixel.s0, shift), + sub_group_shuffle_up(pixel.s1, shift), + sub_group_shuffle_up(pixel.s2, shift), + sub_group_shuffle_up(pixel.s3, shift)); +#elif defined(USE_SUBGROUP_EXCHANGE) + pixel = (uint4)(sub_group_shuffle(pixel.s0, sglid - shift), + sub_group_shuffle(pixel.s1, sglid - shift), + sub_group_shuffle(pixel.s2, sglid - shift), + sub_group_shuffle(pixel.s3, sglid - shift)); +#endif + if ((cur.y >= 0) && (cur.y < height)) { + if (!shift) // 0th workitem reads new pixel + pixel = read_imageui(input_image, cur); + float w = kern[size + i]; + sum += convert_float4(pixel) * w; + weight += w; + } } + + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); } - write_imageui(output_image, coord, convert_uint4(round(sum / weight))); -} \ No newline at end of file +} + +#endif // USE_SUBGROUP_EXCHANGE_RELATIVE || USE_SUBGROUP_EXCHANGE diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 40c3ae9c..5cecbab0 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -28,7 +28,7 @@ // Sample-specific option struct options_Blur { - int size; + float size; const char * in, * out, * op; }; @@ -48,7 +48,7 @@ cag_option BlurOptions[] = { {.identifier = 's', .access_letters = "s", .access_name = "size", - .value_name = "(positive integer)", + .value_name = "(positive float)", .description = "Size of blur kernel"}, {.identifier = 'b', @@ -73,7 +73,7 @@ else return ParseError; case 'o': IF_ERR(opts->out = value) case 's': - IF_ERR(opts->size = strtoul(value, NULL, 0)) + IF_ERR(opts->size = fabsf(strtof(value, NULL))) case 'b': if ((value = cag_option_get_value(cag_context)) && (!strcmp(value, "box") || !strcmp(value, "gauss"))) @@ -150,8 +150,8 @@ cl_int create_gaussian_kernel(float radius, float ** const kernel, int * const s cl_int error = CL_SUCCESS; radius = fabsf(radius); - *size = ceilf(3 * radius); - int span = 2 * *size + 1; + *size = (int)ceilf(3 * radius); + int span = 2 * (*size) + 1; *kernel = NULL; MEM_CHECK(*kernel = (float *)malloc(sizeof(float) * span), error, end); @@ -256,7 +256,7 @@ cl_int finalize_blur(cl_sdk_image * const input_image, cl_sdk_image * const outp } char name[1024]; - sprintf(name, "%u", step); + sprintf(name, "%u", (unsigned int)step); strncat(name, filename, sizeof(name) - 2); cl_sdk_write_image(name, output_image, &error); if (error == CL_SUCCESS) @@ -265,7 +265,8 @@ cl_int finalize_blur(cl_sdk_image * const input_image, cl_sdk_image * const outp return error; } -cl_int print_timings(struct timespec start, struct timespec end, cl_event * event_list, cl_uint event_number) +cl_int print_timings(struct timespec start, struct timespec end, const cl_event * const event_list, + cl_uint event_number) { cl_int error = CL_SUCCESS; @@ -283,6 +284,350 @@ cl_int print_timings(struct timespec start, struct timespec end, cl_event * even return error; } +cl_int single_pass_box_blur(cl_command_queue queue, cl_program program, cl_event * const pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_int size, const char * const filename, cl_uint * const step, bool verbose) +{ + cl_int error = CL_SUCCESS; + printf("Single-pass blur\n"); + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // compile kernel + cl_kernel blur; + OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, end); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &size), error, blr); + + // blur + GET_CURRENT_TIMER(single_start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, blr); + OCLERROR_RET(clWaitForEvents(1, pass), error, blr); + GET_CURRENT_TIMER(single_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr); + + if (verbose) + print_timings(single_start, single_end, pass, 1); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr); + +blr: clReleaseKernel(blur); +end: return error; +} + +cl_int dual_pass_box_blur(cl_command_queue queue, cl_program program, cl_event * const pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * const step, bool verbose) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + printf("Dual-pass blur\n"); + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // create kernels + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical", &error), error, blr1); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + + // blur + GET_CURRENT_TIMER(dual_start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(dual_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr2); + + if (verbose) + print_timings(dual_start, dual_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: return error; +} + +cl_int dual_pass_local_memory_exchange_box_blur(cl_command_queue queue, cl_device_id device, + cl_program program, cl_event * pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * step, bool verbose) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + printf("Dual-pass local memory exchange blur\n"); + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // create kernels + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_exchange", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_exchange", &error), error, blr1); + + // query maximum supported WGS of kernel on device based on private mem (register) constraints + size_t wgs1, psm1, wgs2, psm2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); + + // Further constrain (reduce) WGS based on shared mem size on device + cl_ulong loc_mem; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); + + if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) { + while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) + wgs1 -= psm1; + while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) + wgs2 -= psm2; + } + else { + printf("Not enough local memory to serve a single sub-group.\n"); + error = CL_OUT_OF_RESOURCES; + goto blr2; + } + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), error, blr2); + + // blur + GET_CURRENT_TIMER(dual_start) + size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(dual_end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr2); + + if (verbose) + print_timings(dual_start, dual_end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: return error; +} + +cl_int dual_pass_subgroup_exchange_box_blur(cl_command_queue queue, cl_device_id device, cl_context context, + const char * const kernel, size_t program_size, const char * const options, cl_event * const pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * const step, bool verbose) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // build program with options + cl_program program; + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, + (const char **)&kernel, &program_size, &error), error, end); + OCLERROR_RET(cl_util_build_program(program, device, options), error, prg); + + // create kernels + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_subgroup_exchange", &error), error, prg); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_subgroup_exchange", &error), error, blr1); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + + // query preferred subgroup size of kernel on device + size_t wgs1, wgs2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + + // blur + GET_CURRENT_TIMER(start) + size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr2); + + if (verbose) + print_timings(start, end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + + // cleanup for error handling +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, end);; +end: return error; +} + +cl_int dual_pass_kernel_blur(cl_command_queue queue, cl_program program, cl_event * const pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_mem temp_image_buf, cl_int size, cl_mem kern, const char * const filename, cl_uint * const step, bool verbose) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_kernel_horizontal", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_kernel_vertical", &error), error, blr1); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); + + // blur + GET_CURRENT_TIMER(start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr2); + + if (verbose) + print_timings(start, end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: return error; +} + +cl_int dual_pass_subgroup_exchange_kernel_blur(cl_command_queue queue, cl_device_id device, cl_context context, + const char * const kernel, size_t program_size, const char * const options, cl_event * const pass, + cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, + cl_mem temp_image_buf, cl_int size, cl_mem kern, const char * const filename, cl_uint * const step, bool verbose) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + ++(*step); + + size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // build program with options + cl_program program; + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, + (const char **)&kernel, &program_size, &error), error, end); + OCLERROR_RET(cl_util_build_program(program, device, options), error, prg); + + // create kernels + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_kernel_horizontal_subgroup_exchange", &error), error, prg); + OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_kernel_vertical_subgroup_exchange", &error), error, blr1); + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); + + // query preferred subgroup size of kernel on device + size_t wgs1, wgs2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + + // blur + GET_CURRENT_TIMER(start) + size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); + size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + GET_CURRENT_TIMER(end) + + OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + output_image->pixels, 0, NULL, NULL), error, blr2); + + if (verbose) + print_timings(start, end, pass + 1, 2); + + // write output file + OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + + // cleanup for error handling +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, end);; +end: return error; +} + + int main(int argc, char* argv[]) { cl_int error = CL_SUCCESS, @@ -292,7 +637,7 @@ int main(int argc, char* argv[]) cl_context context; cl_command_queue queue; cl_event pass[3]; // events to measure execution time - cl_uint im = 1; + cl_uint im = 0; /// Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; @@ -352,9 +697,6 @@ int main(int argc, char* argv[]) if (mt == CL_LOCAL) use_local_mem = true; - cl_ulong loc_mem; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, outim); - // 4) query if device allow subgroup shuffle operations bool use_subgroup_exchange = false, use_subgroup_exchange_relative = false; { @@ -387,12 +729,14 @@ nam: free(name); &format, &desc, NULL, &error), error, outim); OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, &format, &desc, NULL, &error), error, inbuf); + OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + &format, &desc, NULL, &error), error, outbuf); size_t image_size[3] = { input_image.width, input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, - input_image.pixels, 0, NULL, NULL), error, outbuf); + input_image.pixels, 0, NULL, NULL), error, tmpbuf); /// Create OpenCL program const char * kernel_location = "./blur.cl"; @@ -401,236 +745,59 @@ nam: free(name); cl_program program = NULL; char kernel_op[1024] = ""; // here we put some dynamic definitions - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, outbuf); + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, tmpbuf); OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); kernel_op[0] = '\0'; - /// Single-pass blur - printf("Single-pass blur\n"); - - // compile kernel - cl_kernel blur; - OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, prg); - - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, blr); - OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, blr); - OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &blur_opts.size), error, blr); - - // blur - GET_CURRENT_TIMER(single_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, blr); - OCLERROR_RET(clWaitForEvents(1, pass), error, blr); - GET_CURRENT_TIMER(single_end) - - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, blr); - - if (diag_opts.verbose) - print_timings(single_start, single_end, pass, 1); - - // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr); - - /// Dual-pass blur - printf("Dual-pass blur\n"); - ++im; - - // create temporary buffer - OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - &format, &desc, NULL, &error), error, blr); - - // create kernels - cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal", &error), error, tmpbuf); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical", &error), error, blr1); - - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); - - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); - - // blur - GET_CURRENT_TIMER(dual_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); - GET_CURRENT_TIMER(dual_end) - - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, blr2); + /// Box blur + if (strstr(blur_opts.op, "box")) { + /// Single-pass blur + OCLERROR_RET(single_pass_box_blur(queue, program, pass, + &input_image, input_image_buf, &output_image, output_image_buf, + (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + + /// Dual-pass blur + OCLERROR_RET(dual_pass_box_blur(queue, program, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + + /// Use local memory exchange in dual-pass blur + if (use_local_mem) + OCLERROR_RET(dual_pass_local_memory_exchange_box_blur(queue, device, program, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + + /// Subgroup exchange in dual-pass blur + if (use_subgroup_exchange_relative) { + printf("Dual-pass subgroup relative exchange blur\n"); - if (diag_opts.verbose) - print_timings(dual_start, dual_end, pass + 1, 2); + kernel_op[0] = '\0'; + strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); - - /// Use local memory exchange in dual-pass blur - if (use_local_mem) { - printf("Dual-pass local memory exchange blur\n"); - ++im; - - clReleaseKernel(blur2); - clReleaseKernel(blur1); - - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_exchange", &error), error, tmpbuf); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_exchange", &error), error, blr1); - - // 4) query maximum supported WGS of kernel on device based on private mem (register) constraints - size_t wgs1, psm1, wgs2, psm2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); - - // Further constrain (reduce) WGS based on shared mem size on device - if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * blur_opts.size) * sizeof(cl_uchar4)) { - while (loc_mem < (wgs1 + 2 * blur_opts.size) * sizeof(cl_uchar4)) - wgs1 -= psm1; - while (loc_mem < (wgs2 + 2 * blur_opts.size) * sizeof(cl_uchar4)) - wgs2 -= psm2; + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( + queue, device, context, kernel, program_size, kernel_op, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); } - else { - printf("Not enough local memory to serve a single sub-group.\n"); - error = CL_OUT_OF_RESOURCES; - goto blr2; - } - - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * blur_opts.size), NULL), error, blr2); - - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * blur_opts.size), NULL), error, blr2); - - // blur - GET_CURRENT_TIMER(dual_start) - size_t work_size1[3] = { (input_image.width + wgs1 - 1) / wgs1 * wgs1, input_image.height, 1 }; - size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); - size_t work_size2[3] = { input_image.width, (input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; - size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); - GET_CURRENT_TIMER(dual_end) - - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, blr2); - - if (diag_opts.verbose) - print_timings(dual_start, dual_end, pass + 1, 2); - - // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, blr2); - } - - /// Subgroup exchange in dual-pass blur - while (use_subgroup_exchange_relative || use_subgroup_exchange) { - if (use_subgroup_exchange_relative) - printf("Dual-pass subgroup relative exchange blur\n"); - else if (use_subgroup_exchange) + if (use_subgroup_exchange) { printf("Dual-pass subgroup exchange blur\n"); - ++im; - - cl_program pr; - kernel_op[0] = '\0'; - if (use_subgroup_exchange_relative) - strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - else if (use_subgroup_exchange) + kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - OCLERROR_PAR(pr = clCreateProgramWithSource(context, 1, - (const char **)&kernel, &program_size, &error), error, sbg); - OCLERROR_RET(cl_util_build_program(pr, device, kernel_op), error, newprg); - - // create kernels - cl_kernel temp_kernel; - OCLERROR_PAR(temp_kernel = clCreateKernel(pr, "blur_box_horizontal_subgroup_exchange", &error), error, newprg); - OCLERROR_RET(clReleaseKernel(blur1), error, newprg); - blur1 = temp_kernel; - OCLERROR_PAR(temp_kernel = clCreateKernel(pr, "blur_box_vertical_subgroup_exchange", &error), error, newprg); - OCLERROR_RET(clReleaseKernel(blur2), error, newprg); - blur2 = temp_kernel; - - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, newprg); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, newprg); - OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &blur_opts.size), error, newprg); - - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, newprg); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, newprg); - OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &blur_opts.size), error, newprg); - - // 5) query preferred subgroup size of kernel on device - size_t wgs1, wgs2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, newprg); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, newprg); - - // blur - GET_CURRENT_TIMER(rel_start) - size_t work_size1[3] = { (input_image.width + wgs1 - 1) / wgs1 * wgs1, input_image.height, 1 }; - size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, newprg); - size_t work_size2[3] = { input_image.width, (input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; - size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, newprg); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); - GET_CURRENT_TIMER(rel_end) - - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, blr2); - - if (diag_opts.verbose) - print_timings(rel_start, rel_end, pass + 1, 2); - - // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, newprg); - if (use_subgroup_exchange_relative) { - use_subgroup_exchange_relative = false; - OCLERROR_RET(clReleaseProgram(pr), error, sbg); - continue; + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( + queue, device, context, kernel, program_size, kernel_op, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); } - else if (use_subgroup_exchange) { - use_subgroup_exchange = false; - OCLERROR_RET(clReleaseProgram(pr), error, sbg); - continue; - } - - // cleanup for error handling -newprg: clReleaseProgram(pr); -sbg: goto blr2; - } + } // Box blur /// Gaussian blur - { - printf("Dual-pass Gaussian blur\n"); - ++im; - - clReleaseKernel(blur2); - clReleaseKernel(blur1); - - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_gauss_horizontal", &error), error, tmpbuf); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_gauss_vertical", &error), error, blr1); - + if (strstr(blur_opts.op, "gauss")) { + // create Gaussian convolution kernel float * gauss = NULL; int gauss_size = 0; OCLERROR_RET(create_gaussian_kernel(blur_opts.size, &gauss, &gauss_size), error, gau); @@ -638,44 +805,44 @@ sbg: goto blr2; OCLERROR_PAR(gauss_kern = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(float) * (2 * gauss_size + 1), gauss, &error), error, gau); - // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &gauss_size), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &gauss_kern), error, gaukrn); + /// Dual-pass Gaussian blur + printf("Dual-pass Gaussian blur\n"); + OCLERROR_RET(dual_pass_kernel_blur(queue, program, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &gauss_size), error, gaukrn); - OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &gauss_kern), error, gaukrn); + /// Subgroup exchange in dual-pass Gaussian blur + if (use_subgroup_exchange_relative) { + printf("Dual-pass subgroup relative exchange Gaussian blur\n"); - // blur - GET_CURRENT_TIMER(gauss_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, gaukrn); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, gaukrn); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, gaukrn); - GET_CURRENT_TIMER(gauss_end) + kernel_op[0] = '\0'; + strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image.pixels, 0, NULL, NULL), error, gaukrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur( + queue, device, context, kernel, program_size, kernel_op, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); + } + if (use_subgroup_exchange) { + printf("Dual-pass subgroup exchange Gaussian blur\n"); - if (diag_opts.verbose) - print_timings(gauss_start, gauss_end, pass + 1, 2); + kernel_op[0] = '\0'; + strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - // write output file - OCLERROR_RET(finalize_blur(&input_image, &output_image, blur_opts.out, im), error, gaukrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur( + queue, device, context, kernel, program_size, kernel_op, pass, + &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, + gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); + } -gaukrn: OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); +gkrn: OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); gau: free(gauss); - } + } // Gaussian blur /// Cleanup -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, tmpbuf); -tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, blr); -blr: OCLERROR_RET(clReleaseKernel(blur), end_error, prg); prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); ker: free(kernel); +tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, outbuf); outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); outim: free(output_image.pixels); From fbccfa1b5e16f4ba69c228b22277a66600b3288a Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Thu, 18 Nov 2021 15:43:52 +0200 Subject: [PATCH 168/203] Pi fix --- samples/core/blur/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 5cecbab0..3a8e0146 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -140,8 +140,8 @@ end: free(opts); float Gaussian(float x, float radius) { - const float M_PI = 3.141592653589793238462f; - return expf(-x * x / (2 * radius * radius)) / (sqrtf(2 * M_PI) * radius); + const float pi = 3.141592653589793238462f; + return expf(-x * x / (2 * radius * radius)) / (sqrtf(2 * pi) * radius); } // note that the kernel is not normalized and has size of 2*(*size)+1 elements From 35c7887c107ef98b3752ae692a4cd97c240e5e56 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Wed, 24 Nov 2021 15:20:34 +0200 Subject: [PATCH 169/203] Gauss local memory exchange --- samples/core/blur/blur.cl | 93 +++++++ samples/core/blur/main.c | 557 +++++++++++++++++++++----------------- 2 files changed, 406 insertions(+), 244 deletions(-) diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index 1d92fb96..dfbd2fa2 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -207,6 +207,99 @@ kernel void blur_box_vertical_exchange( } +kernel void blur_kernel_horizontal_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + constant float * kern, + local uchar4 * line +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + const int grs = get_local_size(0); + const int lid = get_local_id(0); + // coordinates of the leftmost and rightmost pixels needed for the workgroup + const int start = get_group_id(0) * grs; + const int2 start_coord = { max(start - size, 0), coord.y }; + const int2 end_coord = { min(start + grs + size, width - 1), coord.y}; + + // copy all pixels needed for workgroup into local memory + int2 cur = start_coord + (int2)(lid, 0); + uint pos = lid; + while (cur.x <= end_coord.x) { + line[pos] = convert_uchar4(read_imageui(input_image, cur)); + cur.x += grs; + pos += grs; + } + barrier(CLK_LOCAL_MEM_FENCE); + + // blur + if (coord.x < width) { + float4 sum = 0; + float weight = 0; + pos = lid + (start - size - start_coord.x); + for (int shift = -size; shift <= size; ++shift, ++pos) { + cur.x = coord.x + shift; + if ((0 <= cur.x) && (cur.x < width)) { + float w = kern[size + shift]; + weight += w; + sum += convert_float4(line[pos]) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); + } +} + +kernel void blur_kernel_vertical_exchange( + read_only image2d_t input_image, + write_only image2d_t output_image, + int size, + constant float * kern, + local uchar4 * line +) +{ + const int width = get_image_width(input_image); + const int height = get_image_height(input_image); + const int2 coord = { get_global_id(0), get_global_id(1) }; + + const int grs = get_local_size(1); + const int lid = get_local_id(1); + // coordinates of the topmost and lowest pixels needed for the workgroup + const int start = get_group_id(1) * grs; + const int2 start_coord = { coord.x, max(start - size, 0) }; + const int2 end_coord = { coord.x, min(start + grs + size, height - 1) }; + + // copy all pixels needed for workgroup into local memory + int2 cur = start_coord + (int2)(0, lid); + uint pos = lid; + while (cur.y <= end_coord.y) { + line[pos] = convert_uchar4(read_imageui(input_image, cur)); + cur.y += grs; + pos += grs; + } + barrier(CLK_LOCAL_MEM_FENCE); + + // blur + if (coord.y < height) { + float4 sum = 0; + float weight = 0; + pos = lid + (start - size - start_coord.y); + for (int shift = -size; shift <= size; ++shift, ++pos) { + cur.y = coord.y + shift; + if ((0 <= cur.y) && (cur.y < height)) { + float w = kern[size + shift]; + weight += w; + sum += convert_float4(line[pos]) * w; + } + } + write_imageui(output_image, coord, convert_uint4(round(sum / weight))); + } +} + + #if defined(USE_SUBGROUP_EXCHANGE_RELATIVE) || defined(USE_SUBGROUP_EXCHANGE) kernel void blur_box_horizontal_subgroup_exchange( diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 3a8e0146..73f492bd 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -164,8 +164,25 @@ cl_int create_gaussian_kernel(float radius, float ** const kernel, int * const s end: return error; } -cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image * const output_image, - const cl_context context, const bool verbose, cl_int * const error) +typedef struct state { + cl_device_id device; + cl_context context; + cl_command_queue queue; + char * kernel; + size_t program_size; + char * options; + cl_program program; + cl_uint step; + cl_sdk_image input_image; + cl_mem input_image_buf; + cl_sdk_image output_image; + cl_mem output_image_buf; + cl_mem temp_image_buf; + const char * filename; + bool verbose; +} state; + +cl_image_format set_image_format(state * const s, cl_int * const error) { // this format is always supported cl_image_format res = { @@ -174,20 +191,20 @@ cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image }; *error = CL_SUCCESS; - if ((input_image->pixel_size == 1) || (input_image->pixel_size == 3)) { + if ((s->input_image.pixel_size == 1) || (s->input_image.pixel_size == 3)) { + // search for 1/3 channels of uint8_t cl_image_format * formats = NULL; cl_uint formats_number = 0; - OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, 0, NULL, &formats_number), *error, end); MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) * formats_number), *error, end); - OCLERROR_RET(clGetSupportedImageFormats(context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, + OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, formats_number, formats, NULL), *error, end); - // search for 3/1 channels of uint8_t for (cl_uint i = 0; i < formats_number; ++i) - if ( ((input_image->pixel_size == 3) + if ( ((s->input_image.pixel_size == 3) && (formats[i].image_channel_order == CL_RGB) && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) - || ((input_image->pixel_size == 1) + || ((s->input_image.pixel_size == 1) && (formats[i].image_channel_order == CL_R) && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8))) { @@ -195,38 +212,38 @@ cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image } // if not found, default to 4 channels of uint8_t - if (verbose) + if (s->verbose) printf("Converting picture into supported format... "); const size_t - pixels = input_image->width * input_image->height, + pixels = s->input_image.width * s->input_image.height, new = sizeof(unsigned char) * pixels * 4; unsigned char * tmp = NULL; - MEM_CHECK(tmp = (unsigned char *)realloc(input_image->pixels, new), *error, end); - input_image->pixels = tmp; - MEM_CHECK(tmp = (unsigned char *)realloc(output_image->pixels, new), *error, end); - output_image->pixels = tmp; + MEM_CHECK(tmp = (unsigned char *)realloc(s->input_image.pixels, new), *error, end); + s->input_image.pixels = tmp; + MEM_CHECK(tmp = (unsigned char *)realloc(s->output_image.pixels, new), *error, end); + s->output_image.pixels = tmp; // change picture - const size_t pixel_size = input_image->pixel_size; + const size_t pixel_size = s->input_image.pixel_size; for (size_t i = pixels - 1; i != 0; --i) { - memcpy(input_image->pixels + 4 * i, input_image->pixels + pixel_size * i, pixel_size); - memset(input_image->pixels + 4 * i + pixel_size, 0, 4 - pixel_size); + memcpy(s->input_image.pixels + 4 * i, s->input_image.pixels + pixel_size * i, pixel_size); + memset(s->input_image.pixels + 4 * i + pixel_size, 0, 4 - pixel_size); } - memset(input_image->pixels + pixel_size, 0, 4 - pixel_size); - input_image->pixel_size = 4; - // store initial pixel_size in output_image->pixel_size - if (verbose) + memset(s->input_image.pixels + pixel_size, 0, 4 - pixel_size); + s->input_image.pixel_size = 4; + // store initial pixel_size in s->output_image.pixel_size + if (s->verbose) printf("done.\n"); } - else if (input_image->pixel_size != 4) { + else if (s->input_image.pixel_size != 4) { fprintf(stderr, "Unknown image format!\n"); *error = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; return res; } // show image format used - if (verbose) { + if (s->verbose) { printf("Format: "); if (res.image_channel_order == CL_R) printf("CL_R, "); @@ -241,24 +258,23 @@ cl_image_format set_image_format(cl_sdk_image * const input_image, cl_sdk_image end: return res; } -cl_int finalize_blur(cl_sdk_image * const input_image, cl_sdk_image * const output_image, - const char * const filename, const cl_uint step) +cl_int finalize_blur(state * const s) { cl_int error = CL_SUCCESS; // restore image type if needed - if (input_image->pixel_size != output_image->pixel_size) { + if (s->input_image.pixel_size != s->output_image.pixel_size) { const size_t - pixels = input_image->width * input_image->height, - pixel_size = output_image->pixel_size; + pixels = s->input_image.width * s->input_image.height, + pixel_size = s->output_image.pixel_size; for (size_t i = 1; i < pixels; ++i) - memcpy(output_image->pixels + pixel_size * i, output_image->pixels + 4 * i, pixel_size); + memcpy(s->output_image.pixels + pixel_size * i, s->output_image.pixels + 4 * i, pixel_size); } char name[1024]; - sprintf(name, "%u", (unsigned int)step); - strncat(name, filename, sizeof(name) - 2); - cl_sdk_write_image(name, output_image, &error); + sprintf(name, "%u", (unsigned int)s->step); + strncat(name, s->filename, sizeof(name) - 2); + cl_sdk_write_image(name, &s->output_image, &error); if (error == CL_SUCCESS) printf("Image %s written.\n\n", name); @@ -284,122 +300,117 @@ cl_int print_timings(struct timespec start, struct timespec end, const cl_event return error; } -cl_int single_pass_box_blur(cl_command_queue queue, cl_program program, cl_event * const pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_int size, const char * const filename, cl_uint * const step, bool verbose) +cl_int single_pass_box_blur(state * const s, cl_int size) { cl_int error = CL_SUCCESS; printf("Single-pass blur\n"); - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; // compile kernel cl_kernel blur; - OCLERROR_PAR(blur = clCreateKernel(program, "blur_box", &error), error, end); + OCLERROR_PAR(blur = clCreateKernel(s->program, "blur_box", &error), error, end); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &input_image_buf), error, blr); - OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &output_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &s->input_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &s->output_image_buf), error, blr); OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &size), error, blr); // blur - GET_CURRENT_TIMER(single_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur, 2, origin, image_size, NULL, 0, NULL, pass), error, blr); - OCLERROR_RET(clWaitForEvents(1, pass), error, blr); - GET_CURRENT_TIMER(single_end) + cl_event pass; + GET_CURRENT_TIMER(start) + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur, 2, origin, image_size, NULL, 0, NULL, &pass), error, blr); + OCLERROR_RET(clWaitForEvents(1, &pass), error, blr); + GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr); - if (verbose) - print_timings(single_start, single_end, pass, 1); + if (s->verbose) + print_timings(start, end, &pass, 1); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr); + OCLERROR_RET(finalize_blur(s), error, blr); blr: clReleaseKernel(blur); end: return error; } -cl_int dual_pass_box_blur(cl_command_queue queue, cl_program program, cl_event * const pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * const step, bool verbose) +cl_int dual_pass_box_blur(state * const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; printf("Dual-pass blur\n"); - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical", &error), error, blr1); + OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_box_horizontal", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_box_vertical", &error), error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); // blur - GET_CURRENT_TIMER(dual_start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); - GET_CURRENT_TIMER(dual_end) + cl_event pass[2]; + GET_CURRENT_TIMER(start) + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); + GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); - if (verbose) - print_timings(dual_start, dual_end, pass + 1, 2); + if (s->verbose) + print_timings(start, end, pass, 2); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + OCLERROR_RET(finalize_blur(s), error, blr2); blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); end: return error; } -cl_int dual_pass_local_memory_exchange_box_blur(cl_command_queue queue, cl_device_id device, - cl_program program, cl_event * pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * step, bool verbose) +cl_int dual_pass_local_memory_exchange_box_blur(state * const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; printf("Dual-pass local memory exchange blur\n"); - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_exchange", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_exchange", &error), error, blr1); + OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_box_horizontal_exchange", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_box_vertical_exchange", &error), error, blr1); // query maximum supported WGS of kernel on device based on private mem (register) constraints size_t wgs1, psm1, wgs2, psm2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); // Further constrain (reduce) WGS based on shared mem size on device cl_ulong loc_mem; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); + OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) { while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) @@ -414,57 +425,55 @@ cl_int dual_pass_local_memory_exchange_box_blur(cl_command_queue queue, cl_devic } // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), error, blr2); // blur - GET_CURRENT_TIMER(dual_start) - size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + cl_event pass[2]; + GET_CURRENT_TIMER(start) + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); - size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); + size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); - GET_CURRENT_TIMER(dual_end) + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); + GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); - if (verbose) - print_timings(dual_start, dual_end, pass + 1, 2); + if (s->verbose) + print_timings(start, end, pass, 2); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + OCLERROR_RET(finalize_blur(s), error, blr2); blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); end: return error; } -cl_int dual_pass_subgroup_exchange_box_blur(cl_command_queue queue, cl_device_id device, cl_context context, - const char * const kernel, size_t program_size, const char * const options, cl_event * const pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_mem temp_image_buf, cl_int size, const char * const filename, cl_uint * const step, bool verbose) +cl_int dual_pass_subgroup_exchange_box_blur(state * const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; // build program with options cl_program program; - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, - (const char **)&kernel, &program_size, &error), error, end); - OCLERROR_RET(cl_util_build_program(program, device, options), error, prg); + OCLERROR_PAR(program = clCreateProgramWithSource(s->context, 1, + (const char **)&s->kernel, &s->program_size, &error), error, end); + OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, prg); // create kernels cl_kernel blur1, blur2; @@ -472,40 +481,41 @@ cl_int dual_pass_subgroup_exchange_box_blur(cl_command_queue queue, cl_device_id OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_subgroup_exchange", &error), error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); // query preferred subgroup size of kernel on device size_t wgs1, wgs2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); // blur + cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); - size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); + size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); - if (verbose) - print_timings(start, end, pass + 1, 2); + if (s->verbose) + print_timings(start, end, pass, 2); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + OCLERROR_RET(finalize_blur(s), error, blr2); // cleanup for error handling blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); @@ -514,68 +524,143 @@ prg: OCLERROR_RET(clReleaseProgram(program), end_error, end);; end: return error; } -cl_int dual_pass_kernel_blur(cl_command_queue queue, cl_program program, cl_event * const pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_mem temp_image_buf, cl_int size, cl_mem kern, const char * const filename, cl_uint * const step, bool verbose) +cl_int dual_pass_kernel_blur(state * const s, cl_int size, cl_mem kern) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_kernel_horizontal", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_kernel_vertical", &error), error, blr1); + OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_kernel_horizontal", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_kernel_vertical", &error), error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); // blur + cl_event pass[2]; GET_CURRENT_TIMER(start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); - if (verbose) - print_timings(start, end, pass + 1, 2); + if (s->verbose) + print_timings(start, end, pass, 2); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + OCLERROR_RET(finalize_blur(s), error, blr2); blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); end: return error; } -cl_int dual_pass_subgroup_exchange_kernel_blur(cl_command_queue queue, cl_device_id device, cl_context context, - const char * const kernel, size_t program_size, const char * const options, cl_event * const pass, - cl_sdk_image * input_image, cl_mem input_image_buf, cl_sdk_image * output_image, cl_mem output_image_buf, - cl_mem temp_image_buf, cl_int size, cl_mem kern, const char * const filename, cl_uint * const step, bool verbose) +cl_int dual_pass_local_memory_exchange_kernel_blur(state * const s, cl_int size, cl_mem kern) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; - ++(*step); + ++(s->step); - size_t image_size[3] = { input_image->width, input_image->height, 1 }; + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; + size_t origin[3] = { 0, 0, 0 }; + + // create kernels + cl_kernel blur1, blur2; + OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_kernel_horizontal_exchange", &error), error, end); + OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_kernel_vertical_exchange", &error), error, blr1); + + // query maximum supported WGS of kernel on device based on private mem (register) constraints + size_t wgs1, psm1, wgs2, psm2; + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); + + // Further constrain (reduce) WGS based on shared mem size on device + cl_ulong loc_mem; + OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); + + if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) { + while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) + wgs1 -= psm1; + while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) + wgs2 -= psm2; + } + else { + printf("Not enough local memory to serve a single sub-group.\n"); + error = CL_OUT_OF_RESOURCES; + goto blr2; + } + + // set kernel parameters + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 4, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 4, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), error, blr2); + + // blur + cl_event pass[2]; + GET_CURRENT_TIMER(start) + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; + size_t wgsf[3] = { wgs1, 1, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); + size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + size_t wgss[3] = { 1, wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); + GET_CURRENT_TIMER(end) + + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); + + if (s->verbose) + print_timings(start, end, pass, 2); + + // write output file + OCLERROR_RET(finalize_blur(s), error, blr2); + +blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: return error; +} + +cl_int dual_pass_subgroup_exchange_kernel_blur(state * const s, cl_int size, cl_mem kern) +{ + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + ++(s->step); + + size_t image_size[3] = { s->input_image.width, s->input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; // build program with options cl_program program; - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, - (const char **)&kernel, &program_size, &error), error, end); - OCLERROR_RET(cl_util_build_program(program, device, options), error, prg); + OCLERROR_PAR(program = clCreateProgramWithSource(s->context, 1, + (const char **)&s->kernel, &s->program_size, &error), error, end); + OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, prg); // create kernels cl_kernel blur1, blur2; @@ -583,42 +668,43 @@ cl_int dual_pass_subgroup_exchange_kernel_blur(cl_command_queue queue, cl_device OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_kernel_vertical_subgroup_exchange", &error), error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); // query preferred subgroup size of kernel on device size_t wgs1, wgs2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, device, + OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); // blur + cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (input_image->width + wgs1 - 1) / wgs1 * wgs1, input_image->height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 1), error, blr2); - size_t work_size2[3] = { input_image->width, (input_image->height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); + size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 2), error, blr2); - OCLERROR_RET(clWaitForEvents(2, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(queue, output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - output_image->pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), error, blr2); - if (verbose) - print_timings(start, end, pass + 1, 2); + if (s->verbose) + print_timings(start, end, pass, 2); // write output file - OCLERROR_RET(finalize_blur(input_image, output_image, filename, *step), error, blr2); + OCLERROR_RET(finalize_blur(s), error, blr2); // cleanup for error handling blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); @@ -628,16 +714,12 @@ end: return error; } -int main(int argc, char* argv[]) +int main(int argc, char * argv[]) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; + state s; cl_platform_id platform; - cl_device_id device; - cl_context context; - cl_command_queue queue; - cl_event pass[3]; // events to measure execution time - cl_uint im = 0; /// Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; @@ -650,35 +732,37 @@ int main(int argc, char* argv[]) fprintf(stderr, "No input image name!\n"); goto end; } + s.verbose = diag_opts.verbose; + s.filename = blur_opts.out; + s.step = 0; /// Create runtime objects based on user preference or default - OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, + OCLERROR_PAR(s.device = cl_util_get_device(dev_opts.triplet.plat_index, dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); - OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); + OCLERROR_PAR(s.context = clCreateContext(NULL, 1, &s.device, NULL, NULL, &error), error, end); + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 cl_command_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, cont); + OCLERROR_PAR(s.queue = clCreateCommandQueueWithProperties(s.context, s.device, props, &error), error, cont); #else - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); + OCLERROR_PAR(s.queue = clCreateCommandQueue(s.context, s.device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); #endif if (!diag_opts.quiet) - cl_util_print_device_info(device); + cl_util_print_device_info(s.device); /// Read input image and prepare output image - cl_sdk_image input_image = { .width = 0, .height = 0, .pixel_size = 0, .pixels = NULL }; - OCLERROR_PAR(input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); + OCLERROR_PAR(s.input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); - cl_sdk_image output_image = { .width = input_image.width, .height = input_image.height, - .pixel_size = input_image.pixel_size, .pixels = NULL }; - MEM_CHECK(output_image.pixels = (unsigned char *)malloc(sizeof(unsigned char) * - output_image.width * output_image.height * output_image.pixel_size), error, inim); + s.output_image = s.input_image; + s.output_image.pixels = NULL; + MEM_CHECK(s.output_image.pixels = (unsigned char *)malloc(sizeof(unsigned char) * + s.output_image.width * s.output_image.height * s.output_image.pixel_size), error, inim); /// Query device and runtime capabilities // 1) query image support cl_bool image_support = false; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, outim); + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, outim); if (!image_support) { fprintf(stderr, "No image support on device!\n"); error = CL_INVALID_DEVICE; @@ -687,12 +771,12 @@ int main(int argc, char* argv[]) // 2) query if the image format is supported and change image if not cl_image_format format; - OCLERROR_PAR(format = set_image_format(&input_image, &output_image, context, diag_opts.verbose, &error), error, outim); + OCLERROR_PAR(format = set_image_format(&s, &error), error, outim); // 3) query if device have local memory and its size bool use_local_mem = false; cl_device_local_mem_type mt; - OCLERROR_RET(clGetDeviceInfo(device, + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_LOCAL_MEM_TYPE, sizeof(cl_device_local_mem_type), &mt, NULL), error, outim); if (mt == CL_LOCAL) use_local_mem = true; @@ -701,7 +785,7 @@ int main(int argc, char* argv[]) bool use_subgroup_exchange = false, use_subgroup_exchange_relative = false; { char * name = NULL, * tmp1 = NULL, * tmp2 = NULL; - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, &error), error, nam); + OCLERROR_PAR(name = cl_util_get_device_info(s.device, CL_DEVICE_EXTENSIONS, &error), error, nam); tmp1 = strstr(name, "cl_khr_subgroup_shuffle_relative"); if (tmp1) use_subgroup_exchange_relative = true; @@ -715,60 +799,53 @@ nam: free(name); } /// Create image buffers - cl_mem input_image_buf, output_image_buf, temp_image_buf; const cl_image_desc desc = { .image_type = CL_MEM_OBJECT_IMAGE2D, - .image_width = input_image.width, - .image_height = input_image.height, + .image_width = s.input_image.width, + .image_height = s.input_image.height, .image_row_pitch = 0, .num_mip_levels = 0, .num_samples = 0, .mem_object = NULL }; - OCLERROR_PAR(input_image_buf = clCreateImage(context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, + OCLERROR_PAR(s.input_image_buf = clCreateImage(s.context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, &format, &desc, NULL, &error), error, outim); - OCLERROR_PAR(output_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + OCLERROR_PAR(s.output_image_buf = clCreateImage(s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, &format, &desc, NULL, &error), error, inbuf); - OCLERROR_PAR(temp_image_buf = clCreateImage(context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + OCLERROR_PAR(s.temp_image_buf = clCreateImage(s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, &format, &desc, NULL, &error), error, outbuf); - size_t image_size[3] = { input_image.width, input_image.height, 1 }; + size_t image_size[3] = { s.input_image.width, s.input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; - OCLERROR_RET(clEnqueueWriteImage(queue, input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, - input_image.pixels, 0, NULL, NULL), error, tmpbuf); + OCLERROR_RET(clEnqueueWriteImage(s.queue, s.input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, + s.input_image.pixels, 0, NULL, NULL), error, tmpbuf); /// Create OpenCL program const char * kernel_location = "./blur.cl"; - char * kernel = NULL, * tmp = NULL; - size_t program_size = 0; - cl_program program = NULL; + s.kernel = NULL; + s.program_size = 0; char kernel_op[1024] = ""; // here we put some dynamic definitions + s.options = kernel_op; - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, tmpbuf); + OCLERROR_PAR(s.kernel = cl_util_read_text_file(kernel_location, &s.program_size, &error), error, tmpbuf); - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, - (const char **)&kernel, &program_size, &error), error, ker); - OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); + OCLERROR_PAR(s.program = clCreateProgramWithSource(s.context, 1, + (const char **)&s.kernel, &s.program_size, &error), error, ker); + OCLERROR_RET(cl_util_build_program(s.program, s.device, kernel_op), error, prg); kernel_op[0] = '\0'; /// Box blur if (strstr(blur_opts.op, "box")) { /// Single-pass blur - OCLERROR_RET(single_pass_box_blur(queue, program, pass, - &input_image, input_image_buf, &output_image, output_image_buf, - (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + OCLERROR_RET(single_pass_box_blur(&s, (cl_int)blur_opts.size), error, prg); /// Dual-pass blur - OCLERROR_RET(dual_pass_box_blur(queue, program, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + OCLERROR_RET(dual_pass_box_blur(&s, (cl_int)blur_opts.size), error, prg); /// Use local memory exchange in dual-pass blur if (use_local_mem) - OCLERROR_RET(dual_pass_local_memory_exchange_box_blur(queue, device, program, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + OCLERROR_RET(dual_pass_local_memory_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); /// Subgroup exchange in dual-pass blur if (use_subgroup_exchange_relative) { @@ -777,10 +854,7 @@ nam: free(name); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( - queue, device, context, kernel, program_size, kernel_op, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); } if (use_subgroup_exchange) { printf("Dual-pass subgroup exchange blur\n"); @@ -788,10 +862,7 @@ nam: free(name); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( - queue, device, context, kernel, program_size, kernel_op, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - (cl_int)blur_opts.size, blur_opts.out, &im, diag_opts.verbose), error, prg); + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); } } // Box blur @@ -802,14 +873,18 @@ nam: free(name); int gauss_size = 0; OCLERROR_RET(create_gaussian_kernel(blur_opts.size, &gauss, &gauss_size), error, gau); cl_mem gauss_kern; - OCLERROR_PAR(gauss_kern = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + OCLERROR_PAR(gauss_kern = clCreateBuffer(s.context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(float) * (2 * gauss_size + 1), gauss, &error), error, gau); /// Dual-pass Gaussian blur printf("Dual-pass Gaussian blur\n"); - OCLERROR_RET(dual_pass_kernel_blur(queue, program, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); + OCLERROR_RET(dual_pass_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + + /// Local memory exchange Gaussian blur + if (use_local_mem) { + printf("Dual-pass local memory exchange Gaussian blur\n"); + OCLERROR_RET(dual_pass_local_memory_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + } /// Subgroup exchange in dual-pass Gaussian blur if (use_subgroup_exchange_relative) { @@ -818,10 +893,7 @@ nam: free(name); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur( - queue, device, context, kernel, program_size, kernel_op, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); } if (use_subgroup_exchange) { printf("Dual-pass subgroup exchange Gaussian blur\n"); @@ -829,10 +901,7 @@ nam: free(name); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur( - queue, device, context, kernel, program_size, kernel_op, pass, - &input_image, input_image_buf, &output_image, output_image_buf, temp_image_buf, - gauss_size, gauss_kern, blur_opts.out, &im, diag_opts.verbose), error, gkrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); } gkrn: OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); @@ -840,15 +909,15 @@ gau: free(gauss); } // Gaussian blur /// Cleanup -prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); -ker: free(kernel); -tmpbuf: OCLERROR_RET(clReleaseMemObject(temp_image_buf), end_error, outbuf); -outbuf: OCLERROR_RET(clReleaseMemObject(output_image_buf), end_error, inbuf); -inbuf: OCLERROR_RET(clReleaseMemObject(input_image_buf), end_error, outim); -outim: free(output_image.pixels); -inim: free(input_image.pixels); -que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); -cont: OCLERROR_RET(clReleaseContext(context), end_error, end); +prg: OCLERROR_RET(clReleaseProgram(s.program), end_error, ker); +ker: free(s.kernel); +tmpbuf: OCLERROR_RET(clReleaseMemObject(s.temp_image_buf), end_error, outbuf); +outbuf: OCLERROR_RET(clReleaseMemObject(s.output_image_buf), end_error, inbuf); +inbuf: OCLERROR_RET(clReleaseMemObject(s.input_image_buf), end_error, outim); +outim: free(s.output_image.pixels); +inim: free(s.input_image.pixels); +que: OCLERROR_RET(clReleaseCommandQueue(s.queue), end_error, cont); +cont: OCLERROR_RET(clReleaseContext(s.context), end_error, end); end: if (error != CL_SUCCESS) cl_util_print_error(error); return error; } From b35fdf1651e3a7dfda50ac97e2a1d4393374cce5 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 15:02:14 +0200 Subject: [PATCH 170/203] Docs --- samples/core/blur/README.md | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 samples/core/blur/README.md diff --git a/samples/core/blur/README.md b/samples/core/blur/README.md new file mode 100644 index 00000000..efc14d01 --- /dev/null +++ b/samples/core/blur/README.md @@ -0,0 +1,68 @@ +# Blur + +## Sample Purpose + +This sample intends to demonstrate how to use different techniques of data exchange between workitems in workgroup, query various extensions applicable and use compile options to touch up kernel sources at runtime to produce the best kernel implementation for the task. + +## Key APIs and Concepts + +The tasks that are memory bound need reduction of memory accesses to the minimum possible. It can be achieved by exchange of the data between the workitems in the same workgroup. + +The most important aspect of this sample is to demonstrate different ways of data exchange: through the use of local memory and through the use of OpenCL 3.0 extensions of `cl_khr_subgroup_shuffle` and `cl_khr_subgroup_shuffle_relative`. + +### Application flow + +The application once a device is selected queries its supported image formats and uses the format closest to the format of image to apply blur to. Then to find out what variants of blur are possible to execute on the device it is queried about several features. + +First the type of local memory is checked and whether local memory is actually not different from global, then local memory exchange blur step is skipped. Second the application queries whether the device is capable of executing built-in `sub_group_shuffle` and/or `sub_group_shuffle_up/down` intrinsics. If not, the corresponding steps are also skipped. + +Image buffers are created, and the OpenCL program is compiled with different options for general steps of no data exchange and local memory data exchange and for specialized steps of sub-group data exchange. Kernels used for box and Gaussian blur allow decomposition into 1D convolutions and it is used for speedup of the blur calculations. + +Local memory exchange algorithm proceeds by first collectively loading all the pixels needed for workgroup into local memory and then read the pixels sequentially into each of workitems. + +Subgroup exchange algorithm does not use local memory but instead exchanges data directly between different workitems in the subgroup. Note that for the subgroup data exchange to work correctly all the workitems sourcing data for exchange should encounter `sub_group_shuffle[_up/down]` operations. The kernels otherwise are conceptually simple, they read data first and then exchange it shuffling up in the workgroup while 0-th subgroup workitem reads new pixel from the image. + +#### Event profiling + +While events are multi-purpose in OpenCL, they are the handles through which synchronization and profiling can be done, here we only demonstrate their profiling capabilities. Event profiling is turned on by creating the queue as such: +```c +cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; +queue = clCreateCommandQueueWithProperties(context, device, props, &error); +``` +We do not have to test for this capability, as it's mandatory for a device to provide profiling capabilities. + +To record the execution time of every reduction step, we save the associated events like this: +```c +cl_event pass[2]; +clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0); +clEnqueueNDRangeKernel(queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 1); +clWaitForEvents(2, pass); +``` +Calling the kernel returns the event associated with it. Instead calling finish on the queue, we may as well wait for all events in `passes` to signal completion. (For a complete list of event state, refer to the [Execution Model](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_execution_model) chapter of the OpenCL API spec). + +Because most often we measure durations between event state transitions, we use the utility `cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int *error)` to get duration in nanoseconds between the states `start` and `end`. +_(Note: the main reason why net kernel execution time doesn't amount to the time measured by the host are due to dispatching kernel binaries to the device which happen on the first execution, as the sample doesn't invoke a so called warm-up kernel. By doing so, one can reduce the difference to minimal runtime overhead.)_ + +## Kernel logic + +### Vanilla single-pass 2D blur + +### Dual-pass 1D blur + +### Local memory exchange blur + +### Sub-group exchange blur + +### Used API surface + +```c +cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int *error) +cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int *error) +cl_util_print_device_info(cl_device_id device) +cl_util_read_text_file(const char *filename, size_t *length, cl_int *error) +cl_util_build_program(cl_program pr, const cl_device_id dev, const char *opt) +cl_sdk_read_image(const char *file_name, cl_int *err) +cl_sdk_write_image(const char *file_name, cl_int *err) +cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int *error) +cl_util_print_error(cl_int error) +``` From b87003eefa550773770ad8815f88e6bd441e08d1 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 15:04:46 +0200 Subject: [PATCH 171/203] Docs --- samples/core/blur/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/blur/README.md b/samples/core/blur/README.md index efc14d01..f285d8ae 100644 --- a/samples/core/blur/README.md +++ b/samples/core/blur/README.md @@ -31,7 +31,7 @@ queue = clCreateCommandQueueWithProperties(context, device, props, &error); ``` We do not have to test for this capability, as it's mandatory for a device to provide profiling capabilities. -To record the execution time of every reduction step, we save the associated events like this: +To record the execution time of every blur step, we save the associated events like this: ```c cl_event pass[2]; clEnqueueNDRangeKernel(queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0); From 1d74bf441f3d07438f45ef563e2f66c6d40a395c Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 19:07:55 +0200 Subject: [PATCH 172/203] File utils, stb fixed, some code cleaning --- CMakeLists.txt | 2 +- lib/CMakeLists.txt | 6 +- lib/include/CL/SDK/CLI.h | 3 +- lib/include/CL/SDK/CLI.hpp | 8 +- lib/include/CL/SDK/Options.h | 4 +- lib/include/CL/SDK/Options.hpp | 4 +- lib/include/CL/SDK/Random.h | 14 +- lib/include/CL/Utils/Context.h | 4 +- lib/include/CL/Utils/ErrorCodes.h | 1 + lib/include/CL/Utils/File.h | 20 + lib/src/Utils/Context.c | 12 +- lib/src/Utils/File.c | 215 +- samples/CMakeLists.txt | 1 - samples/core/reduce/main.c | 18 +- samples/extensions/khr/conway/main.cpp | 4 +- third_party/stb/CMakeLists.txt | 6 - third_party/stb/stb_image.h | 7897 ------------------------ third_party/stb/stb_image_write.h | 1724 ------ 18 files changed, 268 insertions(+), 9675 deletions(-) delete mode 100644 third_party/stb/CMakeLists.txt delete mode 100644 third_party/stb/stb_image.h delete mode 100644 third_party/stb/stb_image_write.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fd032f88..821bd393 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,9 +43,9 @@ add_subdirectory(external/OpenCL-ICD-Loader) add_subdirectory(external/OpenCL-CLHPP) add_subdirectory(third_party/cargs) -add_subdirectory(third_party/stb) if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) cmake_minimum_required(VERSION 3.10) # SFML 2 won't find Freetype::Freetype under 3.10 + find_package(Stb REQUIRED) find_package(OpenGL REQUIRED) if(CMAKE_SYSTEM_NAME MATCHES Linux) # TODO: Add EGL support # OpenGL doesn't explicitly depend on X11 (as of CMake v3.2) but we'll need it diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 96e76d36..d558b669 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -44,14 +44,13 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) $ $ $ - ) + ) target_link_libraries(${UTIL_LIB_TARGET} PUBLIC ${UTIL_LIB_DEPS} OpenCL::OpenCL PRIVATE cargs - stb ) target_compile_definitions(${UTIL_LIB_TARGET} PRIVATE @@ -158,6 +157,8 @@ foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) $ $ $ + PRIVATE + ${Stb_INCLUDE_DIR} ) target_link_libraries(${SDK_LIB_TARGET} PUBLIC @@ -165,7 +166,6 @@ foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) OpenCL::OpenCL PRIVATE cargs - stb ) target_compile_definitions(${SDK_LIB_TARGET} PRIVATE diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index 58c6f010..2f36c18d 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -81,7 +81,7 @@ cag_option SingleDeviceOptions[] = { {.identifier = 't', .access_letters = "t", .access_name = "type", - .value_name = "(all|cpu|gpu|acc|def)", + .value_name = "(all|cpu|gpu|acc|def|cus)", .description = "Type of device to use"} }; @@ -93,6 +93,7 @@ cl_device_type get_dev_type(const char * in) else if (!strcmp(in, "gpu")) return CL_DEVICE_TYPE_GPU; else if (!strcmp(in, "acc")) return CL_DEVICE_TYPE_ACCELERATOR; else if (!strcmp(in, "def")) return CL_DEVICE_TYPE_DEFAULT; + else if (!strcmp(in, "cus")) return CL_DEVICE_TYPE_CUSTOM; else return CL_DEVICE_TYPE_ALL;//CL_INVALID_DEVICE_TYPE;// "Unkown device type after cli parse. Should not have happened." } diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index e80d0419..bb844fae 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -85,15 +85,15 @@ auto cl::sdk::parse() TCLAP::ValuesConstraint valid_dev_constraint{ valid_dev_strings }; return std::make_tuple( - std::make_shared>("p", "platform", "Index of platform to use", false, 0, "positive integral"), - std::make_shared>("d", "device", "Index of device to use", false, 0, "positive integral"), + std::make_shared>("p", "platform", "Index of platform to use", false, 0, "positive integral"), + std::make_shared>("d", "device", "Index of device to use", false, 0, "positive integral"), std::make_shared>( "t", "type","Type of device to use", false, "def", &valid_dev_constraint) ); } template <> cl::sdk::options::SingleDevice cl::sdk::comprehend( - std::shared_ptr> platform_arg, - std::shared_ptr> device_arg, + std::shared_ptr> platform_arg, + std::shared_ptr> device_arg, std::shared_ptr> type_arg) { auto device_type = [](std::string in) -> cl_device_type diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 6cc17513..476d8f5f 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -8,8 +8,8 @@ struct cl_sdk_options_DeviceTriplet { - int plat_index; - int dev_index; + cl_uint plat_index; + cl_uint dev_index; cl_device_type dev_type; }; diff --git a/lib/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp index bb5cacb6..736e9bb8 100644 --- a/lib/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -11,8 +11,8 @@ namespace options { struct DeviceTriplet { - int plat_index; - int dev_index; + cl_uint plat_index; + cl_uint dev_index; cl_device_type dev_type; }; struct Diagnostic diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index b17904a7..c7162ddd 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -43,19 +43,21 @@ uint32_t pcg32_random_r(pcg32_random_t * rng) // Advance internal state rng->state = oldstate * 6364136223846793005ULL + (rng->inc | 1); // Calculate output function (XSH RR), uses old state for max ILP - uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u; + uint32_t xorshifted = (uint32_t)(((oldstate >> 18u) ^ oldstate) >> 27u); uint32_t rot = oldstate >> 59u; - return (xorshifted >> rot) | (xorshifted << ((-rot) & 31)); + return (xorshifted >> rot) | (xorshifted << ((0-rot) & 31)); } +// give almost uniformly distributed random float in [0, 1) cl_float pcg32_random_float(pcg32_random_t * rng) { - return ldexpf(pcg32_random_r(rng), -32); + return ldexpf((float)pcg32_random_r(rng), -32); } +// give almost uniformly distributed random float in [low, high) cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) { - return ldexpf(pcg32_random_r(rng), -32) * (hi - low) + low; + return ldexpf((float)pcg32_random_r(rng), -32) * (hi - low) + low; } // pcg32_srandom(initstate, initseq) @@ -95,7 +97,7 @@ void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, const uint32_t diff = hi - low, bits_of_uint32_t = 32, - bits_needed = diff ? log2(diff) + 1 : 1, + bits_needed = diff ? (uint32_t)log2(diff) + 1 : 1, mask = diff ? (1u << bits_needed) - 1 : 0; for (size_t index = 0; index < len; ++index) { uint32_t res; @@ -103,7 +105,7 @@ void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, do { res = pcg32_random_r(rng); // get 32 random bits // and take enough of them to cover [0..diff] range - for (int i = 0; i < bits_of_uint32_t / bits_needed; ++i) + for (uint32_t i = 0; i < bits_of_uint32_t / bits_needed; ++i) if ((res & mask) <= diff) { // no rejection res &= mask; // take this number reject = false; diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index a69908a1..87216d15 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -10,9 +10,9 @@ #include UTILS_EXPORT -cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); +cl_context cl_util_get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error); UTILS_EXPORT -cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error); +cl_device_id cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error); UTILS_EXPORT void cl_util_print_device_info(cl_device_id device); diff --git a/lib/include/CL/Utils/ErrorCodes.h b/lib/include/CL/Utils/ErrorCodes.h index ca0751cf..a1f9d4a8 100644 --- a/lib/include/CL/Utils/ErrorCodes.h +++ b/lib/include/CL/Utils/ErrorCodes.h @@ -2,3 +2,4 @@ #define CL_UTIL_INDEX_OUT_OF_RANGE -2000 #define CL_UTIL_DEVICE_NOT_INTEROPERABLE -2001 +#define CL_UTIL_FILE_OPERATION_ERROR -2002 diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 84e61cd7..ffb15c2a 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -12,3 +12,23 @@ // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error); + +// read all the binary file contents securely in ANSI C89 +// return pointer to file contents +// can handle streams with no known size and no support for fseek +// based on https://stackoverflow.com/questions/14002954/ by Nominal Animal +UTILS_EXPORT +unsigned char * cl_util_read_binary_file(const char * filename, size_t * length, cl_int * error); + +// write binaries of OpenCL compiled program +// binaries are written as separate files for each device +// with file name "(program_file_name)_(name of device).bin" +// based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ +UTILS_EXPORT +cl_int cl_util_write_binaries(cl_program const program, const char * const program_file_name); + +// read binaries of OpenCL compiled program +// from files of file names "(program_file_name)_(name of device).bin" +UTILS_EXPORT +cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, const cl_uint num_devices, + const char * const program_file_name, cl_int * error); diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 10a4bcdc..775025be 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -7,7 +7,7 @@ #include // printf UTILS_EXPORT -cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int * error) +cl_context cl_util_get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) { cl_context result = NULL; cl_platform_id * platforms; @@ -19,7 +19,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); - if (plat_id < 0 || plat_id >= num_platforms) { + if (plat_id >= num_platforms) { *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" goto plat; } @@ -28,7 +28,7 @@ cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_ MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); - if (dev_id < 0 || dev_id >= num_devices) { + if (dev_id >= num_devices) { *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" goto dev; } @@ -41,7 +41,7 @@ end: return result; } UTILS_EXPORT -cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) +cl_device_id cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) { cl_device_id result = NULL; cl_platform_id * platforms; @@ -53,7 +53,7 @@ cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); - if (plat_id < 0 || plat_id >= num_platforms) { + if (plat_id >= num_platforms) { *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" goto plat; } @@ -62,7 +62,7 @@ cl_device_id cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); - if (dev_id < 0 || dev_id >= num_devices) { + if (dev_id >= num_devices) { *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" goto dev; } diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index ab5371f4..bbaa69a6 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -1,32 +1,33 @@ -// OpenCL Utils includes -#include +// OpenCL SDK includes +#include // STL includes -#include // realloc, free -#include // fopen, ferror, fread, fclose +#include // realloc, free +#include // fopen, ferror, fread, fclose +#include // memset // read all the text file contents securely in ANSI C89 // return pointer to C-string with file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal +UTILS_EXPORT char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) { + cl_int err = CL_SUCCESS; char * data = NULL, * temp; size_t size = 0; size_t used = 0; size_t n; FILE * in; - cl_int err; /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 -#define IF_ERR(func, err, label) \ -do { if (func) {*error = err; goto label;} } while (0) +#define IF_ERR(func, er, label) \ +do { if (func) {*error = er; goto label;} } while (0) - if (error == NULL) { + if (error == NULL) error = &err; - } /* File name can not be NULL. */ IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); @@ -76,3 +77,199 @@ dt: fclose(in); #undef IF_ERR } + +UTILS_EXPORT +unsigned char * cl_util_read_binary_file(const char * filename, size_t * length, cl_int * error) +{ + cl_int err = CL_SUCCESS; + unsigned char * data = NULL, * temp; + size_t size = 0; + size_t used = 0; + size_t n; + FILE * in; + + /* Size of each input chunk to be read and allocate for. */ +#define READALL_CHUNK 2097152 + +#define IF_ERR(func, er, label) \ +do { if (func) {*error = er; goto label;} } while (0) + + if (error == NULL) + error = &err; + + /* File name can not be NULL. */ + IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); + + /* Open file. */ + IF_ERR(!(in = fopen(filename, "rb")), CL_INVALID_VALUE, end); + + /* A read error already occurred? */ + IF_ERR(ferror(in), CL_INVALID_VALUE, fl); + + while (1) { + if (used + READALL_CHUNK + 1 > size) { + size = used + READALL_CHUNK + 1; + + /* Overflow check. */ + IF_ERR(size <= used, CL_OUT_OF_RESOURCES, dt); + + MEM_CHECK(temp = (unsigned char *)realloc(data, size), *error, dt); + data = temp; + } + + /* Read file in chunks. */ + n = fread(data + used, 1, READALL_CHUNK, in); + if (n == 0) + break; + + used += n; + } + + /* A read error already occurred? */ + IF_ERR(ferror(in), CL_INVALID_VALUE, dt); + + /* Truncate to the real size. */ + MEM_CHECK(temp = (unsigned char *)realloc(data, used), *error, dt); + data = temp; + if (length != NULL) + *length = used; + + *error = CL_SUCCESS; +fl: fclose(in); +end: return data; + +dt: fclose(in); + free(data); + return NULL; + +#undef IF_ERR +} + +// function to write binaries of OpenCL compiled program +// binaries are written as separate files for each device +// with file name "(program_file_name)_(name of device).bin" +// based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ +UTILS_EXPORT +cl_int cl_util_write_binaries(cl_program const program, const char * const program_file_name) +{ + cl_int error = CL_SUCCESS; + + cl_uint num_devices = 0; + size_t binaries_size_alloc_size = 0; + size_t binaries_ptr_alloc_size = 0; + size_t * binaries_size = NULL; + unsigned char ** binaries_ptr = NULL; + cl_device_id * devices = NULL; + + // read number of devices + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_NUM_DEVICES, sizeof(cl_uint), &num_devices, NULL), error, end); + if (num_devices == 0) + return CL_INVALID_PROGRAM_EXECUTABLE; + + // read the binaries size + binaries_size_alloc_size = sizeof(size_t) * num_devices; + MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), error, end); + + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARY_SIZES, binaries_size_alloc_size, binaries_size, NULL), error, end); + + // read the binaries + binaries_ptr_alloc_size = sizeof(unsigned char *) * num_devices; + MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), error, end); + memset(binaries_ptr, 0, binaries_ptr_alloc_size); + + for (cl_uint i = 0; i < num_devices; ++i) + MEM_CHECK(binaries_ptr[i] = (unsigned char *)malloc(binaries_size[i]), error, end); + + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARIES, binaries_ptr_alloc_size, binaries_ptr, NULL), error, end); + + // query devices + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), error, end); + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_DEVICES, sizeof(cl_device_id) * num_devices, devices, NULL), error, end); + + // write the binaries to files + for (cl_uint i = 0; i < num_devices; ++i) { + // get device name + char name_data[201]; + OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), error, end); + name_data[200] = '\0'; + // create output file name + char filename[256]; + sprintf_s(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + + // write the binary to the output file + FILE * f = fopen(filename, "wb"); + if (f != NULL) { + if (fwrite(binaries_ptr[i], sizeof(unsigned char), binaries_size[i], f) != binaries_size[i]) + error = CL_UTIL_FILE_OPERATION_ERROR; + fclose(f); + } + else + error = CL_UTIL_FILE_OPERATION_ERROR; + } + +end: // cleanup + if (binaries_ptr != NULL) { + for (cl_uint i = 0; i < num_devices; ++i) + free(binaries_ptr[i]); + free(binaries_ptr); + } + free(binaries_size); + + return error; +} + +// function to read binaries of OpenCL compiled program +// read binaries from files of file names "(program_file_name)_(name of device).bin" +UTILS_EXPORT +cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, const cl_uint num_devices, + const char * const program_file_name, cl_int * error) +{ + cl_int err = CL_SUCCESS; + size_t binaries_size_alloc_size = 0; + size_t binaries_ptr_alloc_size = 0; + size_t * binaries_size = NULL; + unsigned char ** binaries_ptr = NULL; + cl_program program = NULL; + + if (error == NULL) + error = &err; + + // array for binaries' sizes + binaries_size_alloc_size = sizeof(size_t) * num_devices; + MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), *error, end); + + // array for the binaries + binaries_ptr_alloc_size = sizeof(unsigned char *) * num_devices; + MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), *error, end); + memset(binaries_ptr, 0, binaries_ptr_alloc_size); + + // read binaries from files + for (cl_uint i = 0; i < num_devices; ++i) { + // get device name + char name_data[201]; + OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), *error, end); + name_data[200] = '\0'; + // create input file name + char filename[256]; + sprintf_s(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + + binaries_ptr[i] = cl_util_read_binary_file(filename, binaries_size + i, error); + if (*error == CL_INVALID_VALUE) { + fprintf(stderr, "No suitable file found\n"); + goto end; + }; + } + + OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, devices, + binaries_size, binaries_ptr, error, NULL), *error, end); + +end: // Cleanup + if (binaries_ptr != NULL) { + for (cl_uint i = 0; i < num_devices; ++i) + free(binaries_ptr[i]); + free(binaries_ptr); + } + free(binaries_size); + + return program; +} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index d51fa22c..c2aa8250 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -59,7 +59,6 @@ macro(add_sample) ) target_link_libraries(${OPENCL_SAMPLE_TARGET} PRIVATE -# stb cargs OpenCL::Headers OpenCL::HeadersCpp diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index c61be6ff..fae5423c 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -341,12 +341,14 @@ int main(int argc, char* argv[]) OCLERROR_PAR(back = clCreateBuffer(context, CL_MEM_READ_WRITE, sizeof(cl_int) * new_size(length, factor), NULL, &error), error, buff); // Launch kernels - if (diag_opts.verbose) - { printf("Executing on device... "); fflush(stdout); } + if (diag_opts.verbose) { + printf("Executing on device... "); + fflush(stdout); + } - cl_ulong curr = length, steps = 0; - while ( curr > 1 ) - { + cl_ulong curr = length; + cl_uint steps = 0; + while (curr > 1) { curr = new_size(curr, factor); ++steps; } @@ -359,8 +361,7 @@ int main(int argc, char* argv[]) GET_CURRENT_TIMER(dev_start) curr = length; pass = passes; - while ( curr > 1 ) - { + while (curr > 1) { OCLERROR_RET(clSetKernelArg(reduce, 0, sizeof(cl_mem), &front), error, pas); OCLERROR_RET(clSetKernelArg(reduce, 1, sizeof(cl_mem), &back), error, pas); OCLERROR_RET(clSetKernelArg(reduce, 3, sizeof(cl_ulong), &curr), error, pas); @@ -402,8 +403,7 @@ int main(int argc, char* argv[]) else printf("Validation passed!\n\n"); - if (!diag_opts.quiet) - { + if (!diag_opts.quiet) { printf("Total device execution as seen by host: %llu us.\n", (unsigned long long)(dev_time + 500) / 1000); printf("Reduction steps as measured by device :\n"); for (size_t i = 0; i < steps; ++i) diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index e0a545be..9fb3c3e8 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -52,8 +52,8 @@ class Conway : public cl::sdk::InteropWindow int width, int height, bool fullscreen, - int platform_id = 0, - int device_id = 0, + cl_uint platform_id = 0, + cl_uint device_id = 0, cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT ) : InteropWindow{ sf::VideoMode(width,height), diff --git a/third_party/stb/CMakeLists.txt b/third_party/stb/CMakeLists.txt deleted file mode 100644 index ef884923..00000000 --- a/third_party/stb/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# stb -file(GLOB_RECURSE _HDRS "*.h") - -add_library(stb INTERFACE) - -target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/third_party/stb/stb_image.h b/third_party/stb/stb_image.h deleted file mode 100644 index d60371b9..00000000 --- a/third_party/stb/stb_image.h +++ /dev/null @@ -1,7897 +0,0 @@ -/* stb_image - v2.27 - public domain image loader - http://nothings.org/stb - no warranty implied; use at your own risk - - Do this: - #define STB_IMAGE_IMPLEMENTATION - before you include this file in *one* C or C++ file to create the implementation. - - // i.e. it should look like this: - #include ... - #include ... - #include ... - #define STB_IMAGE_IMPLEMENTATION - #include "stb_image.h" - - You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. - And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free - - - QUICK NOTES: - Primarily of interest to game developers and other people who can - avoid problematic images and only need the trivial interface - - JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) - PNG 1/2/4/8/16-bit-per-channel - - TGA (not sure what subset, if a subset) - BMP non-1bpp, non-RLE - PSD (composited view only, no extra channels, 8/16 bit-per-channel) - - GIF (*comp always reports as 4-channel) - HDR (radiance rgbE format) - PIC (Softimage PIC) - PNM (PPM and PGM binary only) - - Animated GIF still needs a proper API, but here's one way to do it: - http://gist.github.com/urraka/685d9a6340b26b830d49 - - - decode from memory or through FILE (define STBI_NO_STDIO to remove code) - - decode from arbitrary I/O callbacks - - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) - - Full documentation under "DOCUMENTATION" below. - - -LICENSE - - See end of file for license information. - -RECENT REVISION HISTORY: - - 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes - 2.26 (2020-07-13) many minor fixes - 2.25 (2020-02-02) fix warnings - 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically - 2.23 (2019-08-11) fix clang static analysis warning - 2.22 (2019-03-04) gif fixes, fix warnings - 2.21 (2019-02-25) fix typo in comment - 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs - 2.19 (2018-02-11) fix warning - 2.18 (2018-01-30) fix warnings - 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings - 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes - 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC - 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs - 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes - 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes - 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 - RGB-format JPEG; remove white matting in PSD; - allocate large structures on the stack; - correct channel count for PNG & BMP - 2.10 (2016-01-22) avoid warning introduced in 2.09 - 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED - - See end of file for full revision history. - - - ============================ Contributors ========================= - - Image formats Extensions, features - Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) - Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) - Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) - Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) - Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) - Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) - Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) - github:urraka (animated gif) Junggon Kim (PNM comments) - Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) - socks-the-fox (16-bit PNG) - Jeremy Sawicki (handle all ImageNet JPGs) - Optimizations & bugfixes Mikhail Morozov (1-bit BMP) - Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) - Arseny Kapoulkine Simon Breuss (16-bit PNM) - John-Mark Allen - Carmelo J Fdez-Aguera - - Bug & warning fixes - Marc LeBlanc David Woo Guillaume George Martins Mozeiko - Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski - Phil Jordan Dave Moore Roy Eltham - Hayaki Saito Nathan Reed Won Chun - Luke Graham Johan Duparc Nick Verigakis the Horde3D community - Thomas Ruf Ronny Chevalier github:rlyeh - Janez Zemva John Bartholomew Michal Cichon github:romigrou - Jonathan Blow Ken Hamada Tero Hanninen github:svdijk - Eugene Golushkov Laurent Gomila Cort Stratton github:snagar - Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex - Cass Everitt Ryamond Barbiero github:grim210 - Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw - Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus - Josh Tobin Matthew Gregan github:poppolopoppo - Julian Raschke Gregory Mullen Christian Floisand github:darealshinji - Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 - Brad Weinberger Matvey Cherevko github:mosra - Luca Sas Alexander Veselov Zack Middleton [reserved] - Ryan C. Gordon [reserved] [reserved] - DO NOT ADD YOUR NAME HERE - - Jacko Dirks - - To add your name to the credits, pick a random blank space in the middle and fill it. - 80% of merge conflicts on stb PRs are due to people adding their name at the end - of the credits. -*/ - -#ifndef STBI_INCLUDE_STB_IMAGE_H -#define STBI_INCLUDE_STB_IMAGE_H - -// DOCUMENTATION -// -// Limitations: -// - no 12-bit-per-channel JPEG -// - no JPEGs with arithmetic coding -// - GIF always returns *comp=4 -// -// Basic usage (see HDR discussion below for HDR usage): -// int x,y,n; -// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); -// // ... process data if not NULL ... -// // ... x = width, y = height, n = # 8-bit components per pixel ... -// // ... replace '0' with '1'..'4' to force that many components per pixel -// // ... but 'n' will always be the number that it would have been if you said 0 -// stbi_image_free(data) -// -// Standard parameters: -// int *x -- outputs image width in pixels -// int *y -- outputs image height in pixels -// int *channels_in_file -- outputs # of image components in image file -// int desired_channels -- if non-zero, # of image components requested in result -// -// The return value from an image loader is an 'unsigned char *' which points -// to the pixel data, or NULL on an allocation failure or if the image is -// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, -// with each pixel consisting of N interleaved 8-bit components; the first -// pixel pointed to is top-left-most in the image. There is no padding between -// image scanlines or between pixels, regardless of format. The number of -// components N is 'desired_channels' if desired_channels is non-zero, or -// *channels_in_file otherwise. If desired_channels is non-zero, -// *channels_in_file has the number of components that _would_ have been -// output otherwise. E.g. if you set desired_channels to 4, you will always -// get RGBA output, but you can check *channels_in_file to see if it's trivially -// opaque because e.g. there were only 3 channels in the source image. -// -// An output image with N components has the following components interleaved -// in this order in each pixel: -// -// N=#comp components -// 1 grey -// 2 grey, alpha -// 3 red, green, blue -// 4 red, green, blue, alpha -// -// If image loading fails for any reason, the return value will be NULL, -// and *x, *y, *channels_in_file will be unchanged. The function -// stbi_failure_reason() can be queried for an extremely brief, end-user -// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS -// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly -// more user-friendly ones. -// -// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. -// -// To query the width, height and component count of an image without having to -// decode the full file, you can use the stbi_info family of functions: -// -// int x,y,n,ok; -// ok = stbi_info(filename, &x, &y, &n); -// // returns ok=1 and sets x, y, n if image is a supported format, -// // 0 otherwise. -// -// Note that stb_image pervasively uses ints in its public API for sizes, -// including sizes of memory buffers. This is now part of the API and thus -// hard to change without causing breakage. As a result, the various image -// loaders all have certain limits on image size; these differ somewhat -// by format but generally boil down to either just under 2GB or just under -// 1GB. When the decoded image would be larger than this, stb_image decoding -// will fail. -// -// Additionally, stb_image will reject image files that have any of their -// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, -// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, -// the only way to have an image with such dimensions load correctly -// is for it to have a rather extreme aspect ratio. Either way, the -// assumption here is that such larger images are likely to be malformed -// or malicious. If you do need to load an image with individual dimensions -// larger than that, and it still fits in the overall size limit, you can -// #define STBI_MAX_DIMENSIONS on your own to be something larger. -// -// =========================================================================== -// -// UNICODE: -// -// If compiling for Windows and you wish to use Unicode filenames, compile -// with -// #define STBI_WINDOWS_UTF8 -// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert -// Windows wchar_t filenames to utf8. -// -// =========================================================================== -// -// Philosophy -// -// stb libraries are designed with the following priorities: -// -// 1. easy to use -// 2. easy to maintain -// 3. good performance -// -// Sometimes I let "good performance" creep up in priority over "easy to maintain", -// and for best performance I may provide less-easy-to-use APIs that give higher -// performance, in addition to the easy-to-use ones. Nevertheless, it's important -// to keep in mind that from the standpoint of you, a client of this library, -// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. -// -// Some secondary priorities arise directly from the first two, some of which -// provide more explicit reasons why performance can't be emphasized. -// -// - Portable ("ease of use") -// - Small source code footprint ("easy to maintain") -// - No dependencies ("ease of use") -// -// =========================================================================== -// -// I/O callbacks -// -// I/O callbacks allow you to read from arbitrary sources, like packaged -// files or some other source. Data read from callbacks are processed -// through a small internal buffer (currently 128 bytes) to try to reduce -// overhead. -// -// The three functions you must define are "read" (reads some bytes of data), -// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). -// -// =========================================================================== -// -// SIMD support -// -// The JPEG decoder will try to automatically use SIMD kernels on x86 when -// supported by the compiler. For ARM Neon support, you must explicitly -// request it. -// -// (The old do-it-yourself SIMD API is no longer supported in the current -// code.) -// -// On x86, SSE2 will automatically be used when available based on a run-time -// test; if not, the generic C versions are used as a fall-back. On ARM targets, -// the typical path is to have separate builds for NEON and non-NEON devices -// (at least this is true for iOS and Android). Therefore, the NEON support is -// toggled by a build flag: define STBI_NEON to get NEON loops. -// -// If for some reason you do not want to use any of SIMD code, or if -// you have issues compiling it, you can disable it entirely by -// defining STBI_NO_SIMD. -// -// =========================================================================== -// -// HDR image support (disable by defining STBI_NO_HDR) -// -// stb_image supports loading HDR images in general, and currently the Radiance -// .HDR file format specifically. You can still load any file through the existing -// interface; if you attempt to load an HDR file, it will be automatically remapped -// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; -// both of these constants can be reconfigured through this interface: -// -// stbi_hdr_to_ldr_gamma(2.2f); -// stbi_hdr_to_ldr_scale(1.0f); -// -// (note, do not use _inverse_ constants; stbi_image will invert them -// appropriately). -// -// Additionally, there is a new, parallel interface for loading files as -// (linear) floats to preserve the full dynamic range: -// -// float *data = stbi_loadf(filename, &x, &y, &n, 0); -// -// If you load LDR images through this interface, those images will -// be promoted to floating point values, run through the inverse of -// constants corresponding to the above: -// -// stbi_ldr_to_hdr_scale(1.0f); -// stbi_ldr_to_hdr_gamma(2.2f); -// -// Finally, given a filename (or an open file or memory block--see header -// file for details) containing image data, you can query for the "most -// appropriate" interface to use (that is, whether the image is HDR or -// not), using: -// -// stbi_is_hdr(char *filename); -// -// =========================================================================== -// -// iPhone PNG support: -// -// We optionally support converting iPhone-formatted PNGs (which store -// premultiplied BGRA) back to RGB, even though they're internally encoded -// differently. To enable this conversion, call -// stbi_convert_iphone_png_to_rgb(1). -// -// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per -// pixel to remove any premultiplied alpha *only* if the image file explicitly -// says there's premultiplied data (currently only happens in iPhone images, -// and only if iPhone convert-to-rgb processing is on). -// -// =========================================================================== -// -// ADDITIONAL CONFIGURATION -// -// - You can suppress implementation of any of the decoders to reduce -// your code footprint by #defining one or more of the following -// symbols before creating the implementation. -// -// STBI_NO_JPEG -// STBI_NO_PNG -// STBI_NO_BMP -// STBI_NO_PSD -// STBI_NO_TGA -// STBI_NO_GIF -// STBI_NO_HDR -// STBI_NO_PIC -// STBI_NO_PNM (.ppm and .pgm) -// -// - You can request *only* certain decoders and suppress all other ones -// (this will be more forward-compatible, as addition of new decoders -// doesn't require you to disable them explicitly): -// -// STBI_ONLY_JPEG -// STBI_ONLY_PNG -// STBI_ONLY_BMP -// STBI_ONLY_PSD -// STBI_ONLY_TGA -// STBI_ONLY_GIF -// STBI_ONLY_HDR -// STBI_ONLY_PIC -// STBI_ONLY_PNM (.ppm and .pgm) -// -// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still -// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB -// -// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater -// than that size (in either width or height) without further processing. -// This is to let programs in the wild set an upper bound to prevent -// denial-of-service attacks on untrusted data, as one could generate a -// valid image of gigantic dimensions and force stb_image to allocate a -// huge block of memory and spend disproportionate time decoding it. By -// default this is set to (1 << 24), which is 16777216, but that's still -// very big. - -#ifndef STBI_NO_STDIO -#include -#endif // STBI_NO_STDIO - -#define STBI_VERSION 1 - -enum -{ - STBI_default = 0, // only used for desired_channels - - STBI_grey = 1, - STBI_grey_alpha = 2, - STBI_rgb = 3, - STBI_rgb_alpha = 4 -}; - -#include -typedef unsigned char stbi_uc; -typedef unsigned short stbi_us; - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef STBIDEF -#ifdef STB_IMAGE_STATIC -#define STBIDEF static -#else -#define STBIDEF extern -#endif -#endif - -////////////////////////////////////////////////////////////////////////////// -// -// PRIMARY API - works on images of any type -// - -// -// load image by filename, open file, or memory buffer -// - -typedef struct -{ - int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read - void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative - int (*eof) (void *user); // returns nonzero if we are at end of file/data -} stbi_io_callbacks; - -//////////////////////////////////// -// -// 8-bits-per-channel interface -// - -STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); -STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); - -#ifndef STBI_NO_STDIO -STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); -STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); -// for stbi_load_from_file, file pointer is left pointing immediately after image -#endif - -#ifndef STBI_NO_GIF -STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); -#endif - -#ifdef STBI_WINDOWS_UTF8 -STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); -#endif - -//////////////////////////////////// -// -// 16-bits-per-channel interface -// - -STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); -STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); - -#ifndef STBI_NO_STDIO -STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); -STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); -#endif - -//////////////////////////////////// -// -// float-per-channel interface -// -#ifndef STBI_NO_LINEAR - STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); - STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); - - #ifndef STBI_NO_STDIO - STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); - STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); - #endif -#endif - -#ifndef STBI_NO_HDR - STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); - STBIDEF void stbi_hdr_to_ldr_scale(float scale); -#endif // STBI_NO_HDR - -#ifndef STBI_NO_LINEAR - STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); - STBIDEF void stbi_ldr_to_hdr_scale(float scale); -#endif // STBI_NO_LINEAR - -// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR -STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); -STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); -#ifndef STBI_NO_STDIO -STBIDEF int stbi_is_hdr (char const *filename); -STBIDEF int stbi_is_hdr_from_file(FILE *f); -#endif // STBI_NO_STDIO - - -// get a VERY brief reason for failure -// on most compilers (and ALL modern mainstream compilers) this is threadsafe -STBIDEF const char *stbi_failure_reason (void); - -// free the loaded image -- this is just free() -STBIDEF void stbi_image_free (void *retval_from_stbi_load); - -// get image dimensions & components without fully decoding -STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); -STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); -STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); -STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); - -#ifndef STBI_NO_STDIO -STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); -STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); -STBIDEF int stbi_is_16_bit (char const *filename); -STBIDEF int stbi_is_16_bit_from_file(FILE *f); -#endif - - - -// for image formats that explicitly notate that they have premultiplied alpha, -// we just return the colors as stored in the file. set this flag to force -// unpremultiplication. results are undefined if the unpremultiply overflow. -STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); - -// indicate whether we should process iphone images back to canonical format, -// or just pass them through "as-is" -STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); - -// flip the image vertically, so the first pixel in the output array is the bottom left -STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); - -// as above, but only applies to images loaded on the thread that calls the function -// this function is only available if your compiler supports thread-local variables; -// calling it will fail to link if your compiler doesn't -STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); -STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); -STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); - -// ZLIB client - used by PNG, available for other purposes - -STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); -STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); -STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); -STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); - -STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); -STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); - - -#ifdef __cplusplus -} -#endif - -// -// -//// end header file ///////////////////////////////////////////////////// -#endif // STBI_INCLUDE_STB_IMAGE_H - -#ifdef STB_IMAGE_IMPLEMENTATION - -#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ - || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ - || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ - || defined(STBI_ONLY_ZLIB) - #ifndef STBI_ONLY_JPEG - #define STBI_NO_JPEG - #endif - #ifndef STBI_ONLY_PNG - #define STBI_NO_PNG - #endif - #ifndef STBI_ONLY_BMP - #define STBI_NO_BMP - #endif - #ifndef STBI_ONLY_PSD - #define STBI_NO_PSD - #endif - #ifndef STBI_ONLY_TGA - #define STBI_NO_TGA - #endif - #ifndef STBI_ONLY_GIF - #define STBI_NO_GIF - #endif - #ifndef STBI_ONLY_HDR - #define STBI_NO_HDR - #endif - #ifndef STBI_ONLY_PIC - #define STBI_NO_PIC - #endif - #ifndef STBI_ONLY_PNM - #define STBI_NO_PNM - #endif -#endif - -#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) -#define STBI_NO_ZLIB -#endif - - -#include -#include // ptrdiff_t on osx -#include -#include -#include - -#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) -#include // ldexp, pow -#endif - -#ifndef STBI_NO_STDIO -#include -#endif - -#ifndef STBI_ASSERT -#include -#define STBI_ASSERT(x) assert(x) -#endif - -#ifdef __cplusplus -#define STBI_EXTERN extern "C" -#else -#define STBI_EXTERN extern -#endif - - -#ifndef _MSC_VER - #ifdef __cplusplus - #define stbi_inline inline - #else - #define stbi_inline - #endif -#else - #define stbi_inline __forceinline -#endif - -#ifndef STBI_NO_THREAD_LOCALS - #if defined(__cplusplus) && __cplusplus >= 201103L - #define STBI_THREAD_LOCAL thread_local - #elif defined(__GNUC__) && __GNUC__ < 5 - #define STBI_THREAD_LOCAL __thread - #elif defined(_MSC_VER) - #define STBI_THREAD_LOCAL __declspec(thread) - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) - #define STBI_THREAD_LOCAL _Thread_local - #endif - - #ifndef STBI_THREAD_LOCAL - #if defined(__GNUC__) - #define STBI_THREAD_LOCAL __thread - #endif - #endif -#endif - -#ifdef _MSC_VER -typedef unsigned short stbi__uint16; -typedef signed short stbi__int16; -typedef unsigned int stbi__uint32; -typedef signed int stbi__int32; -#else -#include -typedef uint16_t stbi__uint16; -typedef int16_t stbi__int16; -typedef uint32_t stbi__uint32; -typedef int32_t stbi__int32; -#endif - -// should produce compiler error if size is wrong -typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; - -#ifdef _MSC_VER -#define STBI_NOTUSED(v) (void)(v) -#else -#define STBI_NOTUSED(v) (void)sizeof(v) -#endif - -#ifdef _MSC_VER -#define STBI_HAS_LROTL -#endif - -#ifdef STBI_HAS_LROTL - #define stbi_lrot(x,y) _lrotl(x,y) -#else - #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) -#endif - -#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) -// ok -#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) -// ok -#else -#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." -#endif - -#ifndef STBI_MALLOC -#define STBI_MALLOC(sz) malloc(sz) -#define STBI_REALLOC(p,newsz) realloc(p,newsz) -#define STBI_FREE(p) free(p) -#endif - -#ifndef STBI_REALLOC_SIZED -#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) -#endif - -// x86/x64 detection -#if defined(__x86_64__) || defined(_M_X64) -#define STBI__X64_TARGET -#elif defined(__i386) || defined(_M_IX86) -#define STBI__X86_TARGET -#endif - -#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) -// gcc doesn't support sse2 intrinsics unless you compile with -msse2, -// which in turn means it gets to use SSE2 everywhere. This is unfortunate, -// but previous attempts to provide the SSE2 functions with runtime -// detection caused numerous issues. The way architecture extensions are -// exposed in GCC/Clang is, sadly, not really suited for one-file libs. -// New behavior: if compiled with -msse2, we use SSE2 without any -// detection; if not, we don't use it at all. -#define STBI_NO_SIMD -#endif - -#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) -// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET -// -// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the -// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. -// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not -// simultaneously enabling "-mstackrealign". -// -// See https://github.com/nothings/stb/issues/81 for more information. -// -// So default to no SSE2 on 32-bit MinGW. If you've read this far and added -// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. -#define STBI_NO_SIMD -#endif - -#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) -#define STBI_SSE2 -#include - -#ifdef _MSC_VER - -#if _MSC_VER >= 1400 // not VC6 -#include // __cpuid -static int stbi__cpuid3(void) -{ - int info[4]; - __cpuid(info,1); - return info[3]; -} -#else -static int stbi__cpuid3(void) -{ - int res; - __asm { - mov eax,1 - cpuid - mov res,edx - } - return res; -} -#endif - -#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name - -#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) -static int stbi__sse2_available(void) -{ - int info3 = stbi__cpuid3(); - return ((info3 >> 26) & 1) != 0; -} -#endif - -#else // assume GCC-style if not VC++ -#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) - -#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) -static int stbi__sse2_available(void) -{ - // If we're even attempting to compile this on GCC/Clang, that means - // -msse2 is on, which means the compiler is allowed to use SSE2 - // instructions at will, and so are we. - return 1; -} -#endif - -#endif -#endif - -// ARM NEON -#if defined(STBI_NO_SIMD) && defined(STBI_NEON) -#undef STBI_NEON -#endif - -#ifdef STBI_NEON -#include -#ifdef _MSC_VER -#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name -#else -#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) -#endif -#endif - -#ifndef STBI_SIMD_ALIGN -#define STBI_SIMD_ALIGN(type, name) type name -#endif - -#ifndef STBI_MAX_DIMENSIONS -#define STBI_MAX_DIMENSIONS (1 << 24) -#endif - -/////////////////////////////////////////////// -// -// stbi__context struct and start_xxx functions - -// stbi__context structure is our basic context used by all images, so it -// contains all the IO context, plus some basic image information -typedef struct -{ - stbi__uint32 img_x, img_y; - int img_n, img_out_n; - - stbi_io_callbacks io; - void *io_user_data; - - int read_from_callbacks; - int buflen; - stbi_uc buffer_start[128]; - int callback_already_read; - - stbi_uc *img_buffer, *img_buffer_end; - stbi_uc *img_buffer_original, *img_buffer_original_end; -} stbi__context; - - -static void stbi__refill_buffer(stbi__context *s); - -// initialize a memory-decode context -static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) -{ - s->io.read = NULL; - s->read_from_callbacks = 0; - s->callback_already_read = 0; - s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; - s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; -} - -// initialize a callback-based context -static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) -{ - s->io = *c; - s->io_user_data = user; - s->buflen = sizeof(s->buffer_start); - s->read_from_callbacks = 1; - s->callback_already_read = 0; - s->img_buffer = s->img_buffer_original = s->buffer_start; - stbi__refill_buffer(s); - s->img_buffer_original_end = s->img_buffer_end; -} - -#ifndef STBI_NO_STDIO - -static int stbi__stdio_read(void *user, char *data, int size) -{ - return (int) fread(data,1,size,(FILE*) user); -} - -static void stbi__stdio_skip(void *user, int n) -{ - int ch; - fseek((FILE*) user, n, SEEK_CUR); - ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ - if (ch != EOF) { - ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ - } -} - -static int stbi__stdio_eof(void *user) -{ - return feof((FILE*) user) || ferror((FILE *) user); -} - -static stbi_io_callbacks stbi__stdio_callbacks = -{ - stbi__stdio_read, - stbi__stdio_skip, - stbi__stdio_eof, -}; - -static void stbi__start_file(stbi__context *s, FILE *f) -{ - stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); -} - -//static void stop_file(stbi__context *s) { } - -#endif // !STBI_NO_STDIO - -static void stbi__rewind(stbi__context *s) -{ - // conceptually rewind SHOULD rewind to the beginning of the stream, - // but we just rewind to the beginning of the initial buffer, because - // we only use it after doing 'test', which only ever looks at at most 92 bytes - s->img_buffer = s->img_buffer_original; - s->img_buffer_end = s->img_buffer_original_end; -} - -enum -{ - STBI_ORDER_RGB, - STBI_ORDER_BGR -}; - -typedef struct -{ - int bits_per_channel; - int num_channels; - int channel_order; -} stbi__result_info; - -#ifndef STBI_NO_JPEG -static int stbi__jpeg_test(stbi__context *s); -static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_PNG -static int stbi__png_test(stbi__context *s); -static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); -static int stbi__png_is16(stbi__context *s); -#endif - -#ifndef STBI_NO_BMP -static int stbi__bmp_test(stbi__context *s); -static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_TGA -static int stbi__tga_test(stbi__context *s); -static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_PSD -static int stbi__psd_test(stbi__context *s); -static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); -static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); -static int stbi__psd_is16(stbi__context *s); -#endif - -#ifndef STBI_NO_HDR -static int stbi__hdr_test(stbi__context *s); -static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_PIC -static int stbi__pic_test(stbi__context *s); -static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_GIF -static int stbi__gif_test(stbi__context *s); -static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); -static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); -#endif - -#ifndef STBI_NO_PNM -static int stbi__pnm_test(stbi__context *s); -static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); -static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); -static int stbi__pnm_is16(stbi__context *s); -#endif - -static -#ifdef STBI_THREAD_LOCAL -STBI_THREAD_LOCAL -#endif -const char *stbi__g_failure_reason; - -STBIDEF const char *stbi_failure_reason(void) -{ - return stbi__g_failure_reason; -} - -#ifndef STBI_NO_FAILURE_STRINGS -static int stbi__err(const char *str) -{ - stbi__g_failure_reason = str; - return 0; -} -#endif - -static void *stbi__malloc(size_t size) -{ - return STBI_MALLOC(size); -} - -// stb_image uses ints pervasively, including for offset calculations. -// therefore the largest decoded image size we can support with the -// current code, even on 64-bit targets, is INT_MAX. this is not a -// significant limitation for the intended use case. -// -// we do, however, need to make sure our size calculations don't -// overflow. hence a few helper functions for size calculations that -// multiply integers together, making sure that they're non-negative -// and no overflow occurs. - -// return 1 if the sum is valid, 0 on overflow. -// negative terms are considered invalid. -static int stbi__addsizes_valid(int a, int b) -{ - if (b < 0) return 0; - // now 0 <= b <= INT_MAX, hence also - // 0 <= INT_MAX - b <= INTMAX. - // And "a + b <= INT_MAX" (which might overflow) is the - // same as a <= INT_MAX - b (no overflow) - return a <= INT_MAX - b; -} - -// returns 1 if the product is valid, 0 on overflow. -// negative factors are considered invalid. -static int stbi__mul2sizes_valid(int a, int b) -{ - if (a < 0 || b < 0) return 0; - if (b == 0) return 1; // mul-by-0 is always safe - // portable way to check for no overflows in a*b - return a <= INT_MAX/b; -} - -#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) -// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow -static int stbi__mad2sizes_valid(int a, int b, int add) -{ - return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); -} -#endif - -// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow -static int stbi__mad3sizes_valid(int a, int b, int c, int add) -{ - return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && - stbi__addsizes_valid(a*b*c, add); -} - -// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow -#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) -static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) -{ - return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && - stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); -} -#endif - -#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) -// mallocs with size overflow checking -static void *stbi__malloc_mad2(int a, int b, int add) -{ - if (!stbi__mad2sizes_valid(a, b, add)) return NULL; - return stbi__malloc(a*b + add); -} -#endif - -static void *stbi__malloc_mad3(int a, int b, int c, int add) -{ - if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; - return stbi__malloc(a*b*c + add); -} - -#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) -static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) -{ - if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; - return stbi__malloc(a*b*c*d + add); -} -#endif - -// stbi__err - error -// stbi__errpf - error returning pointer to float -// stbi__errpuc - error returning pointer to unsigned char - -#ifdef STBI_NO_FAILURE_STRINGS - #define stbi__err(x,y) 0 -#elif defined(STBI_FAILURE_USERMSG) - #define stbi__err(x,y) stbi__err(y) -#else - #define stbi__err(x,y) stbi__err(x) -#endif - -#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) -#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) - -STBIDEF void stbi_image_free(void *retval_from_stbi_load) -{ - STBI_FREE(retval_from_stbi_load); -} - -#ifndef STBI_NO_LINEAR -static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); -#endif - -#ifndef STBI_NO_HDR -static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); -#endif - -static int stbi__vertically_flip_on_load_global = 0; - -STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) -{ - stbi__vertically_flip_on_load_global = flag_true_if_should_flip; -} - -#ifndef STBI_THREAD_LOCAL -#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global -#else -static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; - -STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) -{ - stbi__vertically_flip_on_load_local = flag_true_if_should_flip; - stbi__vertically_flip_on_load_set = 1; -} - -#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ - ? stbi__vertically_flip_on_load_local \ - : stbi__vertically_flip_on_load_global) -#endif // STBI_THREAD_LOCAL - -static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) -{ - memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields - ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed - ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order - ri->num_channels = 0; - - // test the formats with a very explicit header first (at least a FOURCC - // or distinctive magic number first) - #ifndef STBI_NO_PNG - if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); - #endif - #ifndef STBI_NO_BMP - if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); - #endif - #ifndef STBI_NO_GIF - if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); - #endif - #ifndef STBI_NO_PSD - if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); - #else - STBI_NOTUSED(bpc); - #endif - #ifndef STBI_NO_PIC - if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); - #endif - - // then the formats that can end up attempting to load with just 1 or 2 - // bytes matching expectations; these are prone to false positives, so - // try them later - #ifndef STBI_NO_JPEG - if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); - #endif - #ifndef STBI_NO_PNM - if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); - #endif - - #ifndef STBI_NO_HDR - if (stbi__hdr_test(s)) { - float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); - return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); - } - #endif - - #ifndef STBI_NO_TGA - // test tga last because it's a crappy test! - if (stbi__tga_test(s)) - return stbi__tga_load(s,x,y,comp,req_comp, ri); - #endif - - return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); -} - -static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) -{ - int i; - int img_len = w * h * channels; - stbi_uc *reduced; - - reduced = (stbi_uc *) stbi__malloc(img_len); - if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); - - for (i = 0; i < img_len; ++i) - reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling - - STBI_FREE(orig); - return reduced; -} - -static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) -{ - int i; - int img_len = w * h * channels; - stbi__uint16 *enlarged; - - enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); - if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); - - for (i = 0; i < img_len; ++i) - enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff - - STBI_FREE(orig); - return enlarged; -} - -static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) -{ - int row; - size_t bytes_per_row = (size_t)w * bytes_per_pixel; - stbi_uc temp[2048]; - stbi_uc *bytes = (stbi_uc *)image; - - for (row = 0; row < (h>>1); row++) { - stbi_uc *row0 = bytes + row*bytes_per_row; - stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; - // swap row0 with row1 - size_t bytes_left = bytes_per_row; - while (bytes_left) { - size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); - memcpy(temp, row0, bytes_copy); - memcpy(row0, row1, bytes_copy); - memcpy(row1, temp, bytes_copy); - row0 += bytes_copy; - row1 += bytes_copy; - bytes_left -= bytes_copy; - } - } -} - -#ifndef STBI_NO_GIF -static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) -{ - int slice; - int slice_size = w * h * bytes_per_pixel; - - stbi_uc *bytes = (stbi_uc *)image; - for (slice = 0; slice < z; ++slice) { - stbi__vertical_flip(bytes, w, h, bytes_per_pixel); - bytes += slice_size; - } -} -#endif - -static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) -{ - stbi__result_info ri; - void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); - - if (result == NULL) - return NULL; - - // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. - STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); - - if (ri.bits_per_channel != 8) { - result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); - ri.bits_per_channel = 8; - } - - // @TODO: move stbi__convert_format to here - - if (stbi__vertically_flip_on_load) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); - } - - return (unsigned char *) result; -} - -static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) -{ - stbi__result_info ri; - void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); - - if (result == NULL) - return NULL; - - // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. - STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); - - if (ri.bits_per_channel != 16) { - result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); - ri.bits_per_channel = 16; - } - - // @TODO: move stbi__convert_format16 to here - // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision - - if (stbi__vertically_flip_on_load) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); - } - - return (stbi__uint16 *) result; -} - -#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) -static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) -{ - if (stbi__vertically_flip_on_load && result != NULL) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); - } -} -#endif - -#ifndef STBI_NO_STDIO - -#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) -STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); -STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); -#endif - -#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) -STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) -{ - return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); -} -#endif - -static FILE *stbi__fopen(char const *filename, char const *mode) -{ - FILE *f; -#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) - wchar_t wMode[64]; - wchar_t wFilename[1024]; - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) - return 0; - - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) - return 0; - -#if defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != _wfopen_s(&f, wFilename, wMode)) - f = 0; -#else - f = _wfopen(wFilename, wMode); -#endif - -#elif defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != fopen_s(&f, filename, mode)) - f=0; -#else - f = fopen(filename, mode); -#endif - return f; -} - - -STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) -{ - FILE *f = stbi__fopen(filename, "rb"); - unsigned char *result; - if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); - result = stbi_load_from_file(f,x,y,comp,req_comp); - fclose(f); - return result; -} - -STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) -{ - unsigned char *result; - stbi__context s; - stbi__start_file(&s,f); - result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); - if (result) { - // need to 'unget' all the characters in the IO buffer - fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); - } - return result; -} - -STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) -{ - stbi__uint16 *result; - stbi__context s; - stbi__start_file(&s,f); - result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); - if (result) { - // need to 'unget' all the characters in the IO buffer - fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); - } - return result; -} - -STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) -{ - FILE *f = stbi__fopen(filename, "rb"); - stbi__uint16 *result; - if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); - result = stbi_load_from_file_16(f,x,y,comp,req_comp); - fclose(f); - return result; -} - - -#endif //!STBI_NO_STDIO - -STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) -{ - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); -} - -STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) -{ - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); - return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); -} - -STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) -{ - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); -} - -STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) -{ - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); - return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); -} - -#ifndef STBI_NO_GIF -STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) -{ - unsigned char *result; - stbi__context s; - stbi__start_mem(&s,buffer,len); - - result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); - if (stbi__vertically_flip_on_load) { - stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); - } - - return result; -} -#endif - -#ifndef STBI_NO_LINEAR -static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) -{ - unsigned char *data; - #ifndef STBI_NO_HDR - if (stbi__hdr_test(s)) { - stbi__result_info ri; - float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); - if (hdr_data) - stbi__float_postprocess(hdr_data,x,y,comp,req_comp); - return hdr_data; - } - #endif - data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); - if (data) - return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); - return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); -} - -STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) -{ - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__loadf_main(&s,x,y,comp,req_comp); -} - -STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) -{ - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); - return stbi__loadf_main(&s,x,y,comp,req_comp); -} - -#ifndef STBI_NO_STDIO -STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) -{ - float *result; - FILE *f = stbi__fopen(filename, "rb"); - if (!f) return stbi__errpf("can't fopen", "Unable to open file"); - result = stbi_loadf_from_file(f,x,y,comp,req_comp); - fclose(f); - return result; -} - -STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) -{ - stbi__context s; - stbi__start_file(&s,f); - return stbi__loadf_main(&s,x,y,comp,req_comp); -} -#endif // !STBI_NO_STDIO - -#endif // !STBI_NO_LINEAR - -// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is -// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always -// reports false! - -STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) -{ - #ifndef STBI_NO_HDR - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__hdr_test(&s); - #else - STBI_NOTUSED(buffer); - STBI_NOTUSED(len); - return 0; - #endif -} - -#ifndef STBI_NO_STDIO -STBIDEF int stbi_is_hdr (char const *filename) -{ - FILE *f = stbi__fopen(filename, "rb"); - int result=0; - if (f) { - result = stbi_is_hdr_from_file(f); - fclose(f); - } - return result; -} - -STBIDEF int stbi_is_hdr_from_file(FILE *f) -{ - #ifndef STBI_NO_HDR - long pos = ftell(f); - int res; - stbi__context s; - stbi__start_file(&s,f); - res = stbi__hdr_test(&s); - fseek(f, pos, SEEK_SET); - return res; - #else - STBI_NOTUSED(f); - return 0; - #endif -} -#endif // !STBI_NO_STDIO - -STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) -{ - #ifndef STBI_NO_HDR - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); - return stbi__hdr_test(&s); - #else - STBI_NOTUSED(clbk); - STBI_NOTUSED(user); - return 0; - #endif -} - -#ifndef STBI_NO_LINEAR -static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; - -STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } -STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } -#endif - -static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; - -STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } -STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } - - -////////////////////////////////////////////////////////////////////////////// -// -// Common code used by all image loaders -// - -enum -{ - STBI__SCAN_load=0, - STBI__SCAN_type, - STBI__SCAN_header -}; - -static void stbi__refill_buffer(stbi__context *s) -{ - int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); - s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); - if (n == 0) { - // at end of file, treat same as if from memory, but need to handle case - // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file - s->read_from_callbacks = 0; - s->img_buffer = s->buffer_start; - s->img_buffer_end = s->buffer_start+1; - *s->img_buffer = 0; - } else { - s->img_buffer = s->buffer_start; - s->img_buffer_end = s->buffer_start + n; - } -} - -stbi_inline static stbi_uc stbi__get8(stbi__context *s) -{ - if (s->img_buffer < s->img_buffer_end) - return *s->img_buffer++; - if (s->read_from_callbacks) { - stbi__refill_buffer(s); - return *s->img_buffer++; - } - return 0; -} - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) -// nothing -#else -stbi_inline static int stbi__at_eof(stbi__context *s) -{ - if (s->io.read) { - if (!(s->io.eof)(s->io_user_data)) return 0; - // if feof() is true, check if buffer = end - // special case: we've only got the special 0 character at the end - if (s->read_from_callbacks == 0) return 1; - } - - return s->img_buffer >= s->img_buffer_end; -} -#endif - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) -// nothing -#else -static void stbi__skip(stbi__context *s, int n) -{ - if (n == 0) return; // already there! - if (n < 0) { - s->img_buffer = s->img_buffer_end; - return; - } - if (s->io.read) { - int blen = (int) (s->img_buffer_end - s->img_buffer); - if (blen < n) { - s->img_buffer = s->img_buffer_end; - (s->io.skip)(s->io_user_data, n - blen); - return; - } - } - s->img_buffer += n; -} -#endif - -#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) -// nothing -#else -static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) -{ - if (s->io.read) { - int blen = (int) (s->img_buffer_end - s->img_buffer); - if (blen < n) { - int res, count; - - memcpy(buffer, s->img_buffer, blen); - - count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); - res = (count == (n-blen)); - s->img_buffer = s->img_buffer_end; - return res; - } - } - - if (s->img_buffer+n <= s->img_buffer_end) { - memcpy(buffer, s->img_buffer, n); - s->img_buffer += n; - return 1; - } else - return 0; -} -#endif - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) -// nothing -#else -static int stbi__get16be(stbi__context *s) -{ - int z = stbi__get8(s); - return (z << 8) + stbi__get8(s); -} -#endif - -#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) -// nothing -#else -static stbi__uint32 stbi__get32be(stbi__context *s) -{ - stbi__uint32 z = stbi__get16be(s); - return (z << 16) + stbi__get16be(s); -} -#endif - -#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) -// nothing -#else -static int stbi__get16le(stbi__context *s) -{ - int z = stbi__get8(s); - return z + (stbi__get8(s) << 8); -} -#endif - -#ifndef STBI_NO_BMP -static stbi__uint32 stbi__get32le(stbi__context *s) -{ - stbi__uint32 z = stbi__get16le(s); - z += (stbi__uint32)stbi__get16le(s) << 16; - return z; -} -#endif - -#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) -// nothing -#else -////////////////////////////////////////////////////////////////////////////// -// -// generic converter from built-in img_n to req_comp -// individual types do this automatically as much as possible (e.g. jpeg -// does all cases internally since it needs to colorspace convert anyway, -// and it never has alpha, so very few cases ). png can automatically -// interleave an alpha=255 channel, but falls back to this for other cases -// -// assume data buffer is malloced, so malloc a new one and free that one -// only failure mode is malloc failing - -static stbi_uc stbi__compute_y(int r, int g, int b) -{ - return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); -} -#endif - -#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) -// nothing -#else -static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) -{ - int i,j; - unsigned char *good; - - if (req_comp == img_n) return data; - STBI_ASSERT(req_comp >= 1 && req_comp <= 4); - - good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); - if (good == NULL) { - STBI_FREE(data); - return stbi__errpuc("outofmem", "Out of memory"); - } - - for (j=0; j < (int) y; ++j) { - unsigned char *src = data + j * x * img_n ; - unsigned char *dest = good + j * x * req_comp; - - #define STBI__COMBO(a,b) ((a)*8+(b)) - #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) - // convert source image with img_n components to one with req_comp components; - // avoid switch per pixel, so use switch per scanline and massive macros - switch (STBI__COMBO(img_n, req_comp)) { - STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; - STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; - STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; - STBI__CASE(2,1) { dest[0]=src[0]; } break; - STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; - STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; - STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; - STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; - STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; - STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; - STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; - STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; - default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); - } - #undef STBI__CASE - } - - STBI_FREE(data); - return good; -} -#endif - -#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) -// nothing -#else -static stbi__uint16 stbi__compute_y_16(int r, int g, int b) -{ - return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); -} -#endif - -#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) -// nothing -#else -static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) -{ - int i,j; - stbi__uint16 *good; - - if (req_comp == img_n) return data; - STBI_ASSERT(req_comp >= 1 && req_comp <= 4); - - good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); - if (good == NULL) { - STBI_FREE(data); - return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); - } - - for (j=0; j < (int) y; ++j) { - stbi__uint16 *src = data + j * x * img_n ; - stbi__uint16 *dest = good + j * x * req_comp; - - #define STBI__COMBO(a,b) ((a)*8+(b)) - #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) - // convert source image with img_n components to one with req_comp components; - // avoid switch per pixel, so use switch per scanline and massive macros - switch (STBI__COMBO(img_n, req_comp)) { - STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; - STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; - STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; - STBI__CASE(2,1) { dest[0]=src[0]; } break; - STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; - STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; - STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; - STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; - STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; - STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; - STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; - STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; - default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); - } - #undef STBI__CASE - } - - STBI_FREE(data); - return good; -} -#endif - -#ifndef STBI_NO_LINEAR -static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) -{ - int i,k,n; - float *output; - if (!data) return NULL; - output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); - if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } - // compute number of non-alpha components - if (comp & 1) n = comp; else n = comp-1; - for (i=0; i < x*y; ++i) { - for (k=0; k < n; ++k) { - output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); - } - } - if (n < comp) { - for (i=0; i < x*y; ++i) { - output[i*comp + n] = data[i*comp + n]/255.0f; - } - } - STBI_FREE(data); - return output; -} -#endif - -#ifndef STBI_NO_HDR -#define stbi__float2int(x) ((int) (x)) -static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) -{ - int i,k,n; - stbi_uc *output; - if (!data) return NULL; - output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); - if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } - // compute number of non-alpha components - if (comp & 1) n = comp; else n = comp-1; - for (i=0; i < x*y; ++i) { - for (k=0; k < n; ++k) { - float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; - if (z < 0) z = 0; - if (z > 255) z = 255; - output[i*comp + k] = (stbi_uc) stbi__float2int(z); - } - if (k < comp) { - float z = data[i*comp+k] * 255 + 0.5f; - if (z < 0) z = 0; - if (z > 255) z = 255; - output[i*comp + k] = (stbi_uc) stbi__float2int(z); - } - } - STBI_FREE(data); - return output; -} -#endif - -////////////////////////////////////////////////////////////////////////////// -// -// "baseline" JPEG/JFIF decoder -// -// simple implementation -// - doesn't support delayed output of y-dimension -// - simple interface (only one output format: 8-bit interleaved RGB) -// - doesn't try to recover corrupt jpegs -// - doesn't allow partial loading, loading multiple at once -// - still fast on x86 (copying globals into locals doesn't help x86) -// - allocates lots of intermediate memory (full size of all components) -// - non-interleaved case requires this anyway -// - allows good upsampling (see next) -// high-quality -// - upsampled channels are bilinearly interpolated, even across blocks -// - quality integer IDCT derived from IJG's 'slow' -// performance -// - fast huffman; reasonable integer IDCT -// - some SIMD kernels for common paths on targets with SSE2/NEON -// - uses a lot of intermediate memory, could cache poorly - -#ifndef STBI_NO_JPEG - -// huffman decoding acceleration -#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache - -typedef struct -{ - stbi_uc fast[1 << FAST_BITS]; - // weirdly, repacking this into AoS is a 10% speed loss, instead of a win - stbi__uint16 code[256]; - stbi_uc values[256]; - stbi_uc size[257]; - unsigned int maxcode[18]; - int delta[17]; // old 'firstsymbol' - old 'firstcode' -} stbi__huffman; - -typedef struct -{ - stbi__context *s; - stbi__huffman huff_dc[4]; - stbi__huffman huff_ac[4]; - stbi__uint16 dequant[4][64]; - stbi__int16 fast_ac[4][1 << FAST_BITS]; - -// sizes for components, interleaved MCUs - int img_h_max, img_v_max; - int img_mcu_x, img_mcu_y; - int img_mcu_w, img_mcu_h; - -// definition of jpeg image component - struct - { - int id; - int h,v; - int tq; - int hd,ha; - int dc_pred; - - int x,y,w2,h2; - stbi_uc *data; - void *raw_data, *raw_coeff; - stbi_uc *linebuf; - short *coeff; // progressive only - int coeff_w, coeff_h; // number of 8x8 coefficient blocks - } img_comp[4]; - - stbi__uint32 code_buffer; // jpeg entropy-coded buffer - int code_bits; // number of valid bits - unsigned char marker; // marker seen while filling entropy buffer - int nomore; // flag if we saw a marker so must stop - - int progressive; - int spec_start; - int spec_end; - int succ_high; - int succ_low; - int eob_run; - int jfif; - int app14_color_transform; // Adobe APP14 tag - int rgb; - - int scan_n, order[4]; - int restart_interval, todo; - -// kernels - void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); - void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); - stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); -} stbi__jpeg; - -static int stbi__build_huffman(stbi__huffman *h, int *count) -{ - int i,j,k=0; - unsigned int code; - // build size list for each symbol (from JPEG spec) - for (i=0; i < 16; ++i) - for (j=0; j < count[i]; ++j) - h->size[k++] = (stbi_uc) (i+1); - h->size[k] = 0; - - // compute actual symbols (from jpeg spec) - code = 0; - k = 0; - for(j=1; j <= 16; ++j) { - // compute delta to add to code to compute symbol id - h->delta[j] = k - code; - if (h->size[k] == j) { - while (h->size[k] == j) - h->code[k++] = (stbi__uint16) (code++); - if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); - } - // compute largest code + 1 for this size, preshifted as needed later - h->maxcode[j] = code << (16-j); - code <<= 1; - } - h->maxcode[j] = 0xffffffff; - - // build non-spec acceleration table; 255 is flag for not-accelerated - memset(h->fast, 255, 1 << FAST_BITS); - for (i=0; i < k; ++i) { - int s = h->size[i]; - if (s <= FAST_BITS) { - int c = h->code[i] << (FAST_BITS-s); - int m = 1 << (FAST_BITS-s); - for (j=0; j < m; ++j) { - h->fast[c+j] = (stbi_uc) i; - } - } - } - return 1; -} - -// build a table that decodes both magnitude and value of small ACs in -// one go. -static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) -{ - int i; - for (i=0; i < (1 << FAST_BITS); ++i) { - stbi_uc fast = h->fast[i]; - fast_ac[i] = 0; - if (fast < 255) { - int rs = h->values[fast]; - int run = (rs >> 4) & 15; - int magbits = rs & 15; - int len = h->size[fast]; - - if (magbits && len + magbits <= FAST_BITS) { - // magnitude code followed by receive_extend code - int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); - int m = 1 << (magbits - 1); - if (k < m) k += (~0U << magbits) + 1; - // if the result is small enough, we can fit it in fast_ac table - if (k >= -128 && k <= 127) - fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); - } - } - } -} - -static void stbi__grow_buffer_unsafe(stbi__jpeg *j) -{ - do { - unsigned int b = j->nomore ? 0 : stbi__get8(j->s); - if (b == 0xff) { - int c = stbi__get8(j->s); - while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes - if (c != 0) { - j->marker = (unsigned char) c; - j->nomore = 1; - return; - } - } - j->code_buffer |= b << (24 - j->code_bits); - j->code_bits += 8; - } while (j->code_bits <= 24); -} - -// (1 << n) - 1 -static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; - -// decode a jpeg huffman value from the bitstream -stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) -{ - unsigned int temp; - int c,k; - - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - - // look at the top FAST_BITS and determine what symbol ID it is, - // if the code is <= FAST_BITS - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); - k = h->fast[c]; - if (k < 255) { - int s = h->size[k]; - if (s > j->code_bits) - return -1; - j->code_buffer <<= s; - j->code_bits -= s; - return h->values[k]; - } - - // naive test is to shift the code_buffer down so k bits are - // valid, then test against maxcode. To speed this up, we've - // preshifted maxcode left so that it has (16-k) 0s at the - // end; in other words, regardless of the number of bits, it - // wants to be compared against something shifted to have 16; - // that way we don't need to shift inside the loop. - temp = j->code_buffer >> 16; - for (k=FAST_BITS+1 ; ; ++k) - if (temp < h->maxcode[k]) - break; - if (k == 17) { - // error! code not found - j->code_bits -= 16; - return -1; - } - - if (k > j->code_bits) - return -1; - - // convert the huffman code to the symbol id - c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; - STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); - - // convert the id to a symbol - j->code_bits -= k; - j->code_buffer <<= k; - return h->values[c]; -} - -// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); - - sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) - k = stbi_lrot(j->code_buffer, n); - j->code_buffer = k & ~stbi__bmask[n]; - k &= stbi__bmask[n]; - j->code_bits -= n; - return k + (stbi__jbias[n] & (sgn - 1)); -} - -// get some unsigned bits -stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) -{ - unsigned int k; - if (j->code_bits < n) stbi__grow_buffer_unsafe(j); - k = stbi_lrot(j->code_buffer, n); - j->code_buffer = k & ~stbi__bmask[n]; - k &= stbi__bmask[n]; - j->code_bits -= n; - return k; -} - -stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) -{ - unsigned int k; - if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); - k = j->code_buffer; - j->code_buffer <<= 1; - --j->code_bits; - return k & 0x80000000; -} - -// given a value that's at position X in the zigzag stream, -// where does it appear in the 8x8 matrix coded as row-major? -static const stbi_uc stbi__jpeg_dezigzag[64+15] = -{ - 0, 1, 8, 16, 9, 2, 3, 10, - 17, 24, 32, 25, 18, 11, 4, 5, - 12, 19, 26, 33, 40, 48, 41, 34, - 27, 20, 13, 6, 7, 14, 21, 28, - 35, 42, 49, 56, 57, 50, 43, 36, - 29, 22, 15, 23, 30, 37, 44, 51, - 58, 59, 52, 45, 38, 31, 39, 46, - 53, 60, 61, 54, 47, 55, 62, 63, - // let corrupt input sample past end - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63 -}; - -// decode one 64-entry block-- -static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) -{ - int diff,dc,k; - int t; - - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - t = stbi__jpeg_huff_decode(j, hdc); - if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); - - // 0 all the ac values now so we can do it 32-bits at a time - memset(data,0,64*sizeof(data[0])); - - diff = t ? stbi__extend_receive(j, t) : 0; - dc = j->img_comp[b].dc_pred + diff; - j->img_comp[b].dc_pred = dc; - data[0] = (short) (dc * dequant[0]); - - // decode AC components, see JPEG spec - k = 1; - do { - unsigned int zig; - int c,r,s; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); - r = fac[c]; - if (r) { // fast-AC path - k += (r >> 4) & 15; // run - s = r & 15; // combined length - j->code_buffer <<= s; - j->code_bits -= s; - // decode into unzigzag'd location - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short) ((r >> 8) * dequant[zig]); - } else { - int rs = stbi__jpeg_huff_decode(j, hac); - if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (rs != 0xf0) break; // end block - k += 16; - } else { - k += r; - // decode into unzigzag'd location - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); - } - } - } while (k < 64); - return 1; -} - -static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) -{ - int diff,dc; - int t; - if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - - if (j->succ_high == 0) { - // first scan for DC coefficient, must be first - memset(data,0,64*sizeof(data[0])); // 0 all the ac values now - t = stbi__jpeg_huff_decode(j, hdc); - if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - diff = t ? stbi__extend_receive(j, t) : 0; - - dc = j->img_comp[b].dc_pred + diff; - j->img_comp[b].dc_pred = dc; - data[0] = (short) (dc * (1 << j->succ_low)); - } else { - // refinement scan for DC coefficient - if (stbi__jpeg_get_bit(j)) - data[0] += (short) (1 << j->succ_low); - } - return 1; -} - -// @OPTIMIZE: store non-zigzagged during the decode passes, -// and only de-zigzag when dequantizing -static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) -{ - int k; - if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - - if (j->succ_high == 0) { - int shift = j->succ_low; - - if (j->eob_run) { - --j->eob_run; - return 1; - } - - k = j->spec_start; - do { - unsigned int zig; - int c,r,s; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); - r = fac[c]; - if (r) { // fast-AC path - k += (r >> 4) & 15; // run - s = r & 15; // combined length - j->code_buffer <<= s; - j->code_bits -= s; - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short) ((r >> 8) * (1 << shift)); - } else { - int rs = stbi__jpeg_huff_decode(j, hac); - if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (r < 15) { - j->eob_run = (1 << r); - if (r) - j->eob_run += stbi__jpeg_get_bits(j, r); - --j->eob_run; - break; - } - k += 16; - } else { - k += r; - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); - } - } - } while (k <= j->spec_end); - } else { - // refinement scan for these AC coefficients - - short bit = (short) (1 << j->succ_low); - - if (j->eob_run) { - --j->eob_run; - for (k = j->spec_start; k <= j->spec_end; ++k) { - short *p = &data[stbi__jpeg_dezigzag[k]]; - if (*p != 0) - if (stbi__jpeg_get_bit(j)) - if ((*p & bit)==0) { - if (*p > 0) - *p += bit; - else - *p -= bit; - } - } - } else { - k = j->spec_start; - do { - int r,s; - int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh - if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (r < 15) { - j->eob_run = (1 << r) - 1; - if (r) - j->eob_run += stbi__jpeg_get_bits(j, r); - r = 64; // force end of block - } else { - // r=15 s=0 should write 16 0s, so we just do - // a run of 15 0s and then write s (which is 0), - // so we don't have to do anything special here - } - } else { - if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); - // sign bit - if (stbi__jpeg_get_bit(j)) - s = bit; - else - s = -bit; - } - - // advance by r - while (k <= j->spec_end) { - short *p = &data[stbi__jpeg_dezigzag[k++]]; - if (*p != 0) { - if (stbi__jpeg_get_bit(j)) - if ((*p & bit)==0) { - if (*p > 0) - *p += bit; - else - *p -= bit; - } - } else { - if (r == 0) { - *p = (short) s; - break; - } - --r; - } - } - } while (k <= j->spec_end); - } - } - return 1; -} - -// take a -128..127 value and stbi__clamp it and convert to 0..255 -stbi_inline static stbi_uc stbi__clamp(int x) -{ - // trick to use a single test to catch both cases - if ((unsigned int) x > 255) { - if (x < 0) return 0; - if (x > 255) return 255; - } - return (stbi_uc) x; -} - -#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) -#define stbi__fsh(x) ((x) * 4096) - -// derived from jidctint -- DCT_ISLOW -#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ - int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ - p2 = s2; \ - p3 = s6; \ - p1 = (p2+p3) * stbi__f2f(0.5411961f); \ - t2 = p1 + p3*stbi__f2f(-1.847759065f); \ - t3 = p1 + p2*stbi__f2f( 0.765366865f); \ - p2 = s0; \ - p3 = s4; \ - t0 = stbi__fsh(p2+p3); \ - t1 = stbi__fsh(p2-p3); \ - x0 = t0+t3; \ - x3 = t0-t3; \ - x1 = t1+t2; \ - x2 = t1-t2; \ - t0 = s7; \ - t1 = s5; \ - t2 = s3; \ - t3 = s1; \ - p3 = t0+t2; \ - p4 = t1+t3; \ - p1 = t0+t3; \ - p2 = t1+t2; \ - p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ - t0 = t0*stbi__f2f( 0.298631336f); \ - t1 = t1*stbi__f2f( 2.053119869f); \ - t2 = t2*stbi__f2f( 3.072711026f); \ - t3 = t3*stbi__f2f( 1.501321110f); \ - p1 = p5 + p1*stbi__f2f(-0.899976223f); \ - p2 = p5 + p2*stbi__f2f(-2.562915447f); \ - p3 = p3*stbi__f2f(-1.961570560f); \ - p4 = p4*stbi__f2f(-0.390180644f); \ - t3 += p1+p4; \ - t2 += p2+p3; \ - t1 += p2+p4; \ - t0 += p1+p3; - -static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) -{ - int i,val[64],*v=val; - stbi_uc *o; - short *d = data; - - // columns - for (i=0; i < 8; ++i,++d, ++v) { - // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing - if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 - && d[40]==0 && d[48]==0 && d[56]==0) { - // no shortcut 0 seconds - // (1|2|3|4|5|6|7)==0 0 seconds - // all separate -0.047 seconds - // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds - int dcterm = d[0]*4; - v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; - } else { - STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) - // constants scaled things up by 1<<12; let's bring them back - // down, but keep 2 extra bits of precision - x0 += 512; x1 += 512; x2 += 512; x3 += 512; - v[ 0] = (x0+t3) >> 10; - v[56] = (x0-t3) >> 10; - v[ 8] = (x1+t2) >> 10; - v[48] = (x1-t2) >> 10; - v[16] = (x2+t1) >> 10; - v[40] = (x2-t1) >> 10; - v[24] = (x3+t0) >> 10; - v[32] = (x3-t0) >> 10; - } - } - - for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { - // no fast case since the first 1D IDCT spread components out - STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) - // constants scaled things up by 1<<12, plus we had 1<<2 from first - // loop, plus horizontal and vertical each scale by sqrt(8) so together - // we've got an extra 1<<3, so 1<<17 total we need to remove. - // so we want to round that, which means adding 0.5 * 1<<17, - // aka 65536. Also, we'll end up with -128 to 127 that we want - // to encode as 0..255 by adding 128, so we'll add that before the shift - x0 += 65536 + (128<<17); - x1 += 65536 + (128<<17); - x2 += 65536 + (128<<17); - x3 += 65536 + (128<<17); - // tried computing the shifts into temps, or'ing the temps to see - // if any were out of range, but that was slower - o[0] = stbi__clamp((x0+t3) >> 17); - o[7] = stbi__clamp((x0-t3) >> 17); - o[1] = stbi__clamp((x1+t2) >> 17); - o[6] = stbi__clamp((x1-t2) >> 17); - o[2] = stbi__clamp((x2+t1) >> 17); - o[5] = stbi__clamp((x2-t1) >> 17); - o[3] = stbi__clamp((x3+t0) >> 17); - o[4] = stbi__clamp((x3-t0) >> 17); - } -} - -#ifdef STBI_SSE2 -// sse2 integer IDCT. not the fastest possible implementation but it -// produces bit-identical results to the generic C version so it's -// fully "transparent". -static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) -{ - // This is constructed to match our regular (generic) integer IDCT exactly. - __m128i row0, row1, row2, row3, row4, row5, row6, row7; - __m128i tmp; - - // dot product constant: even elems=x, odd elems=y - #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) - - // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) - // out(1) = c1[even]*x + c1[odd]*y - #define dct_rot(out0,out1, x,y,c0,c1) \ - __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ - __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ - __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ - __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ - __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ - __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) - - // out = in << 12 (in 16-bit, out 32-bit) - #define dct_widen(out, in) \ - __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ - __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) - - // wide add - #define dct_wadd(out, a, b) \ - __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ - __m128i out##_h = _mm_add_epi32(a##_h, b##_h) - - // wide sub - #define dct_wsub(out, a, b) \ - __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ - __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) - - // butterfly a/b, add bias, then shift by "s" and pack - #define dct_bfly32o(out0, out1, a,b,bias,s) \ - { \ - __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ - __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ - dct_wadd(sum, abiased, b); \ - dct_wsub(dif, abiased, b); \ - out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ - out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ - } - - // 8-bit interleave step (for transposes) - #define dct_interleave8(a, b) \ - tmp = a; \ - a = _mm_unpacklo_epi8(a, b); \ - b = _mm_unpackhi_epi8(tmp, b) - - // 16-bit interleave step (for transposes) - #define dct_interleave16(a, b) \ - tmp = a; \ - a = _mm_unpacklo_epi16(a, b); \ - b = _mm_unpackhi_epi16(tmp, b) - - #define dct_pass(bias,shift) \ - { \ - /* even part */ \ - dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ - __m128i sum04 = _mm_add_epi16(row0, row4); \ - __m128i dif04 = _mm_sub_epi16(row0, row4); \ - dct_widen(t0e, sum04); \ - dct_widen(t1e, dif04); \ - dct_wadd(x0, t0e, t3e); \ - dct_wsub(x3, t0e, t3e); \ - dct_wadd(x1, t1e, t2e); \ - dct_wsub(x2, t1e, t2e); \ - /* odd part */ \ - dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ - dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ - __m128i sum17 = _mm_add_epi16(row1, row7); \ - __m128i sum35 = _mm_add_epi16(row3, row5); \ - dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ - dct_wadd(x4, y0o, y4o); \ - dct_wadd(x5, y1o, y5o); \ - dct_wadd(x6, y2o, y5o); \ - dct_wadd(x7, y3o, y4o); \ - dct_bfly32o(row0,row7, x0,x7,bias,shift); \ - dct_bfly32o(row1,row6, x1,x6,bias,shift); \ - dct_bfly32o(row2,row5, x2,x5,bias,shift); \ - dct_bfly32o(row3,row4, x3,x4,bias,shift); \ - } - - __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); - __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); - __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); - __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); - __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); - __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); - __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); - __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); - - // rounding biases in column/row passes, see stbi__idct_block for explanation. - __m128i bias_0 = _mm_set1_epi32(512); - __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); - - // load - row0 = _mm_load_si128((const __m128i *) (data + 0*8)); - row1 = _mm_load_si128((const __m128i *) (data + 1*8)); - row2 = _mm_load_si128((const __m128i *) (data + 2*8)); - row3 = _mm_load_si128((const __m128i *) (data + 3*8)); - row4 = _mm_load_si128((const __m128i *) (data + 4*8)); - row5 = _mm_load_si128((const __m128i *) (data + 5*8)); - row6 = _mm_load_si128((const __m128i *) (data + 6*8)); - row7 = _mm_load_si128((const __m128i *) (data + 7*8)); - - // column pass - dct_pass(bias_0, 10); - - { - // 16bit 8x8 transpose pass 1 - dct_interleave16(row0, row4); - dct_interleave16(row1, row5); - dct_interleave16(row2, row6); - dct_interleave16(row3, row7); - - // transpose pass 2 - dct_interleave16(row0, row2); - dct_interleave16(row1, row3); - dct_interleave16(row4, row6); - dct_interleave16(row5, row7); - - // transpose pass 3 - dct_interleave16(row0, row1); - dct_interleave16(row2, row3); - dct_interleave16(row4, row5); - dct_interleave16(row6, row7); - } - - // row pass - dct_pass(bias_1, 17); - - { - // pack - __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 - __m128i p1 = _mm_packus_epi16(row2, row3); - __m128i p2 = _mm_packus_epi16(row4, row5); - __m128i p3 = _mm_packus_epi16(row6, row7); - - // 8bit 8x8 transpose pass 1 - dct_interleave8(p0, p2); // a0e0a1e1... - dct_interleave8(p1, p3); // c0g0c1g1... - - // transpose pass 2 - dct_interleave8(p0, p1); // a0c0e0g0... - dct_interleave8(p2, p3); // b0d0f0h0... - - // transpose pass 3 - dct_interleave8(p0, p2); // a0b0c0d0... - dct_interleave8(p1, p3); // a4b4c4d4... - - // store - _mm_storel_epi64((__m128i *) out, p0); out += out_stride; - _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i *) out, p2); out += out_stride; - _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i *) out, p1); out += out_stride; - _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i *) out, p3); out += out_stride; - _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); - } - -#undef dct_const -#undef dct_rot -#undef dct_widen -#undef dct_wadd -#undef dct_wsub -#undef dct_bfly32o -#undef dct_interleave8 -#undef dct_interleave16 -#undef dct_pass -} - -#endif // STBI_SSE2 - -#ifdef STBI_NEON - -// NEON integer IDCT. should produce bit-identical -// results to the generic C version. -static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) -{ - int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; - - int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); - int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); - int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); - int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); - int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); - int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); - int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); - int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); - int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); - int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); - int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); - int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); - -#define dct_long_mul(out, inq, coeff) \ - int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ - int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) - -#define dct_long_mac(out, acc, inq, coeff) \ - int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ - int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) - -#define dct_widen(out, inq) \ - int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ - int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) - -// wide add -#define dct_wadd(out, a, b) \ - int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ - int32x4_t out##_h = vaddq_s32(a##_h, b##_h) - -// wide sub -#define dct_wsub(out, a, b) \ - int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ - int32x4_t out##_h = vsubq_s32(a##_h, b##_h) - -// butterfly a/b, then shift using "shiftop" by "s" and pack -#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ - { \ - dct_wadd(sum, a, b); \ - dct_wsub(dif, a, b); \ - out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ - out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ - } - -#define dct_pass(shiftop, shift) \ - { \ - /* even part */ \ - int16x8_t sum26 = vaddq_s16(row2, row6); \ - dct_long_mul(p1e, sum26, rot0_0); \ - dct_long_mac(t2e, p1e, row6, rot0_1); \ - dct_long_mac(t3e, p1e, row2, rot0_2); \ - int16x8_t sum04 = vaddq_s16(row0, row4); \ - int16x8_t dif04 = vsubq_s16(row0, row4); \ - dct_widen(t0e, sum04); \ - dct_widen(t1e, dif04); \ - dct_wadd(x0, t0e, t3e); \ - dct_wsub(x3, t0e, t3e); \ - dct_wadd(x1, t1e, t2e); \ - dct_wsub(x2, t1e, t2e); \ - /* odd part */ \ - int16x8_t sum15 = vaddq_s16(row1, row5); \ - int16x8_t sum17 = vaddq_s16(row1, row7); \ - int16x8_t sum35 = vaddq_s16(row3, row5); \ - int16x8_t sum37 = vaddq_s16(row3, row7); \ - int16x8_t sumodd = vaddq_s16(sum17, sum35); \ - dct_long_mul(p5o, sumodd, rot1_0); \ - dct_long_mac(p1o, p5o, sum17, rot1_1); \ - dct_long_mac(p2o, p5o, sum35, rot1_2); \ - dct_long_mul(p3o, sum37, rot2_0); \ - dct_long_mul(p4o, sum15, rot2_1); \ - dct_wadd(sump13o, p1o, p3o); \ - dct_wadd(sump24o, p2o, p4o); \ - dct_wadd(sump23o, p2o, p3o); \ - dct_wadd(sump14o, p1o, p4o); \ - dct_long_mac(x4, sump13o, row7, rot3_0); \ - dct_long_mac(x5, sump24o, row5, rot3_1); \ - dct_long_mac(x6, sump23o, row3, rot3_2); \ - dct_long_mac(x7, sump14o, row1, rot3_3); \ - dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ - dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ - dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ - dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ - } - - // load - row0 = vld1q_s16(data + 0*8); - row1 = vld1q_s16(data + 1*8); - row2 = vld1q_s16(data + 2*8); - row3 = vld1q_s16(data + 3*8); - row4 = vld1q_s16(data + 4*8); - row5 = vld1q_s16(data + 5*8); - row6 = vld1q_s16(data + 6*8); - row7 = vld1q_s16(data + 7*8); - - // add DC bias - row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); - - // column pass - dct_pass(vrshrn_n_s32, 10); - - // 16bit 8x8 transpose - { -// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. -// whether compilers actually get this is another story, sadly. -#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } -#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } -#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } - - // pass 1 - dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 - dct_trn16(row2, row3); - dct_trn16(row4, row5); - dct_trn16(row6, row7); - - // pass 2 - dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 - dct_trn32(row1, row3); - dct_trn32(row4, row6); - dct_trn32(row5, row7); - - // pass 3 - dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 - dct_trn64(row1, row5); - dct_trn64(row2, row6); - dct_trn64(row3, row7); - -#undef dct_trn16 -#undef dct_trn32 -#undef dct_trn64 - } - - // row pass - // vrshrn_n_s32 only supports shifts up to 16, we need - // 17. so do a non-rounding shift of 16 first then follow - // up with a rounding shift by 1. - dct_pass(vshrn_n_s32, 16); - - { - // pack and round - uint8x8_t p0 = vqrshrun_n_s16(row0, 1); - uint8x8_t p1 = vqrshrun_n_s16(row1, 1); - uint8x8_t p2 = vqrshrun_n_s16(row2, 1); - uint8x8_t p3 = vqrshrun_n_s16(row3, 1); - uint8x8_t p4 = vqrshrun_n_s16(row4, 1); - uint8x8_t p5 = vqrshrun_n_s16(row5, 1); - uint8x8_t p6 = vqrshrun_n_s16(row6, 1); - uint8x8_t p7 = vqrshrun_n_s16(row7, 1); - - // again, these can translate into one instruction, but often don't. -#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } -#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } -#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } - - // sadly can't use interleaved stores here since we only write - // 8 bytes to each scan line! - - // 8x8 8-bit transpose pass 1 - dct_trn8_8(p0, p1); - dct_trn8_8(p2, p3); - dct_trn8_8(p4, p5); - dct_trn8_8(p6, p7); - - // pass 2 - dct_trn8_16(p0, p2); - dct_trn8_16(p1, p3); - dct_trn8_16(p4, p6); - dct_trn8_16(p5, p7); - - // pass 3 - dct_trn8_32(p0, p4); - dct_trn8_32(p1, p5); - dct_trn8_32(p2, p6); - dct_trn8_32(p3, p7); - - // store - vst1_u8(out, p0); out += out_stride; - vst1_u8(out, p1); out += out_stride; - vst1_u8(out, p2); out += out_stride; - vst1_u8(out, p3); out += out_stride; - vst1_u8(out, p4); out += out_stride; - vst1_u8(out, p5); out += out_stride; - vst1_u8(out, p6); out += out_stride; - vst1_u8(out, p7); - -#undef dct_trn8_8 -#undef dct_trn8_16 -#undef dct_trn8_32 - } - -#undef dct_long_mul -#undef dct_long_mac -#undef dct_widen -#undef dct_wadd -#undef dct_wsub -#undef dct_bfly32o -#undef dct_pass -} - -#endif // STBI_NEON - -#define STBI__MARKER_none 0xff -// if there's a pending marker from the entropy stream, return that -// otherwise, fetch from the stream and get a marker. if there's no -// marker, return 0xff, which is never a valid marker value -static stbi_uc stbi__get_marker(stbi__jpeg *j) -{ - stbi_uc x; - if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } - x = stbi__get8(j->s); - if (x != 0xff) return STBI__MARKER_none; - while (x == 0xff) - x = stbi__get8(j->s); // consume repeated 0xff fill bytes - return x; -} - -// in each scan, we'll have scan_n components, and the order -// of the components is specified by order[] -#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) - -// after a restart interval, stbi__jpeg_reset the entropy decoder and -// the dc prediction -static void stbi__jpeg_reset(stbi__jpeg *j) -{ - j->code_bits = 0; - j->code_buffer = 0; - j->nomore = 0; - j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; - j->marker = STBI__MARKER_none; - j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; - j->eob_run = 0; - // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, - // since we don't even allow 1<<30 pixels -} - -static int stbi__parse_entropy_coded_data(stbi__jpeg *z) -{ - stbi__jpeg_reset(z); - if (!z->progressive) { - if (z->scan_n == 1) { - int i,j; - STBI_SIMD_ALIGN(short, data[64]); - int n = z->order[0]; - // non-interleaved data, we just need to process one block at a time, - // in trivial scanline order - // number of blocks to do just depends on how many actual "pixels" this - // component has, independent of interleaved MCU blocking and such - int w = (z->img_comp[n].x+7) >> 3; - int h = (z->img_comp[n].y+7) >> 3; - for (j=0; j < h; ++j) { - for (i=0; i < w; ++i) { - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; - z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); - // every data block is an MCU, so countdown the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - // if it's NOT a restart, then just bail, so we get corrupt data - // rather than no data - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } else { // interleaved - int i,j,k,x,y; - STBI_SIMD_ALIGN(short, data[64]); - for (j=0; j < z->img_mcu_y; ++j) { - for (i=0; i < z->img_mcu_x; ++i) { - // scan an interleaved mcu... process scan_n components in order - for (k=0; k < z->scan_n; ++k) { - int n = z->order[k]; - // scan out an mcu's worth of this component; that's just determined - // by the basic H and V specified for the component - for (y=0; y < z->img_comp[n].v; ++y) { - for (x=0; x < z->img_comp[n].h; ++x) { - int x2 = (i*z->img_comp[n].h + x)*8; - int y2 = (j*z->img_comp[n].v + y)*8; - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; - z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); - } - } - } - // after all interleaved components, that's an interleaved MCU, - // so now count down the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } - } else { - if (z->scan_n == 1) { - int i,j; - int n = z->order[0]; - // non-interleaved data, we just need to process one block at a time, - // in trivial scanline order - // number of blocks to do just depends on how many actual "pixels" this - // component has, independent of interleaved MCU blocking and such - int w = (z->img_comp[n].x+7) >> 3; - int h = (z->img_comp[n].y+7) >> 3; - for (j=0; j < h; ++j) { - for (i=0; i < w; ++i) { - short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); - if (z->spec_start == 0) { - if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) - return 0; - } else { - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) - return 0; - } - // every data block is an MCU, so countdown the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } else { // interleaved - int i,j,k,x,y; - for (j=0; j < z->img_mcu_y; ++j) { - for (i=0; i < z->img_mcu_x; ++i) { - // scan an interleaved mcu... process scan_n components in order - for (k=0; k < z->scan_n; ++k) { - int n = z->order[k]; - // scan out an mcu's worth of this component; that's just determined - // by the basic H and V specified for the component - for (y=0; y < z->img_comp[n].v; ++y) { - for (x=0; x < z->img_comp[n].h; ++x) { - int x2 = (i*z->img_comp[n].h + x); - int y2 = (j*z->img_comp[n].v + y); - short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); - if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) - return 0; - } - } - } - // after all interleaved components, that's an interleaved MCU, - // so now count down the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } - } -} - -static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) -{ - int i; - for (i=0; i < 64; ++i) - data[i] *= dequant[i]; -} - -static void stbi__jpeg_finish(stbi__jpeg *z) -{ - if (z->progressive) { - // dequantize and idct the data - int i,j,n; - for (n=0; n < z->s->img_n; ++n) { - int w = (z->img_comp[n].x+7) >> 3; - int h = (z->img_comp[n].y+7) >> 3; - for (j=0; j < h; ++j) { - for (i=0; i < w; ++i) { - short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); - stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); - z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); - } - } - } - } -} - -static int stbi__process_marker(stbi__jpeg *z, int m) -{ - int L; - switch (m) { - case STBI__MARKER_none: // no marker found - return stbi__err("expected marker","Corrupt JPEG"); - - case 0xDD: // DRI - specify restart interval - if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); - z->restart_interval = stbi__get16be(z->s); - return 1; - - case 0xDB: // DQT - define quantization table - L = stbi__get16be(z->s)-2; - while (L > 0) { - int q = stbi__get8(z->s); - int p = q >> 4, sixteen = (p != 0); - int t = q & 15,i; - if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); - if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); - - for (i=0; i < 64; ++i) - z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); - L -= (sixteen ? 129 : 65); - } - return L==0; - - case 0xC4: // DHT - define huffman table - L = stbi__get16be(z->s)-2; - while (L > 0) { - stbi_uc *v; - int sizes[16],i,n=0; - int q = stbi__get8(z->s); - int tc = q >> 4; - int th = q & 15; - if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); - for (i=0; i < 16; ++i) { - sizes[i] = stbi__get8(z->s); - n += sizes[i]; - } - L -= 17; - if (tc == 0) { - if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; - v = z->huff_dc[th].values; - } else { - if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; - v = z->huff_ac[th].values; - } - for (i=0; i < n; ++i) - v[i] = stbi__get8(z->s); - if (tc != 0) - stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); - L -= n; - } - return L==0; - } - - // check for comment block or APP blocks - if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { - L = stbi__get16be(z->s); - if (L < 2) { - if (m == 0xFE) - return stbi__err("bad COM len","Corrupt JPEG"); - else - return stbi__err("bad APP len","Corrupt JPEG"); - } - L -= 2; - - if (m == 0xE0 && L >= 5) { // JFIF APP0 segment - static const unsigned char tag[5] = {'J','F','I','F','\0'}; - int ok = 1; - int i; - for (i=0; i < 5; ++i) - if (stbi__get8(z->s) != tag[i]) - ok = 0; - L -= 5; - if (ok) - z->jfif = 1; - } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment - static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; - int ok = 1; - int i; - for (i=0; i < 6; ++i) - if (stbi__get8(z->s) != tag[i]) - ok = 0; - L -= 6; - if (ok) { - stbi__get8(z->s); // version - stbi__get16be(z->s); // flags0 - stbi__get16be(z->s); // flags1 - z->app14_color_transform = stbi__get8(z->s); // color transform - L -= 6; - } - } - - stbi__skip(z->s, L); - return 1; - } - - return stbi__err("unknown marker","Corrupt JPEG"); -} - -// after we see SOS -static int stbi__process_scan_header(stbi__jpeg *z) -{ - int i; - int Ls = stbi__get16be(z->s); - z->scan_n = stbi__get8(z->s); - if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); - if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); - for (i=0; i < z->scan_n; ++i) { - int id = stbi__get8(z->s), which; - int q = stbi__get8(z->s); - for (which = 0; which < z->s->img_n; ++which) - if (z->img_comp[which].id == id) - break; - if (which == z->s->img_n) return 0; // no match - z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); - z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); - z->order[i] = which; - } - - { - int aa; - z->spec_start = stbi__get8(z->s); - z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 - aa = stbi__get8(z->s); - z->succ_high = (aa >> 4); - z->succ_low = (aa & 15); - if (z->progressive) { - if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) - return stbi__err("bad SOS", "Corrupt JPEG"); - } else { - if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); - if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); - z->spec_end = 63; - } - } - - return 1; -} - -static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) -{ - int i; - for (i=0; i < ncomp; ++i) { - if (z->img_comp[i].raw_data) { - STBI_FREE(z->img_comp[i].raw_data); - z->img_comp[i].raw_data = NULL; - z->img_comp[i].data = NULL; - } - if (z->img_comp[i].raw_coeff) { - STBI_FREE(z->img_comp[i].raw_coeff); - z->img_comp[i].raw_coeff = 0; - z->img_comp[i].coeff = 0; - } - if (z->img_comp[i].linebuf) { - STBI_FREE(z->img_comp[i].linebuf); - z->img_comp[i].linebuf = NULL; - } - } - return why; -} - -static int stbi__process_frame_header(stbi__jpeg *z, int scan) -{ - stbi__context *s = z->s; - int Lf,p,i,q, h_max=1,v_max=1,c; - Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG - p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline - s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG - s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - c = stbi__get8(s); - if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); - s->img_n = c; - for (i=0; i < c; ++i) { - z->img_comp[i].data = NULL; - z->img_comp[i].linebuf = NULL; - } - - if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); - - z->rgb = 0; - for (i=0; i < s->img_n; ++i) { - static const unsigned char rgb[3] = { 'R', 'G', 'B' }; - z->img_comp[i].id = stbi__get8(s); - if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) - ++z->rgb; - q = stbi__get8(s); - z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); - z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); - z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); - } - - if (scan != STBI__SCAN_load) return 1; - - if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); - - for (i=0; i < s->img_n; ++i) { - if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; - if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; - } - - // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios - // and I've never seen a non-corrupted JPEG file actually use them - for (i=0; i < s->img_n; ++i) { - if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); - if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); - } - - // compute interleaved mcu info - z->img_h_max = h_max; - z->img_v_max = v_max; - z->img_mcu_w = h_max * 8; - z->img_mcu_h = v_max * 8; - // these sizes can't be more than 17 bits - z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; - z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; - - for (i=0; i < s->img_n; ++i) { - // number of effective pixels (e.g. for non-interleaved MCU) - z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; - z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; - // to simplify generation, we'll allocate enough memory to decode - // the bogus oversized data from using interleaved MCUs and their - // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't - // discard the extra data until colorspace conversion - // - // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) - // so these muls can't overflow with 32-bit ints (which we require) - z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; - z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; - z->img_comp[i].coeff = 0; - z->img_comp[i].raw_coeff = 0; - z->img_comp[i].linebuf = NULL; - z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); - if (z->img_comp[i].raw_data == NULL) - return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); - // align blocks for idct using mmx/sse - z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); - if (z->progressive) { - // w2, h2 are multiples of 8 (see above) - z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; - z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; - z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); - if (z->img_comp[i].raw_coeff == NULL) - return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); - z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); - } - } - - return 1; -} - -// use comparisons since in some cases we handle more than one case (e.g. SOF) -#define stbi__DNL(x) ((x) == 0xdc) -#define stbi__SOI(x) ((x) == 0xd8) -#define stbi__EOI(x) ((x) == 0xd9) -#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) -#define stbi__SOS(x) ((x) == 0xda) - -#define stbi__SOF_progressive(x) ((x) == 0xc2) - -static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) -{ - int m; - z->jfif = 0; - z->app14_color_transform = -1; // valid values are 0,1,2 - z->marker = STBI__MARKER_none; // initialize cached marker to empty - m = stbi__get_marker(z); - if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); - if (scan == STBI__SCAN_type) return 1; - m = stbi__get_marker(z); - while (!stbi__SOF(m)) { - if (!stbi__process_marker(z,m)) return 0; - m = stbi__get_marker(z); - while (m == STBI__MARKER_none) { - // some files have extra padding after their blocks, so ok, we'll scan - if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); - m = stbi__get_marker(z); - } - } - z->progressive = stbi__SOF_progressive(m); - if (!stbi__process_frame_header(z, scan)) return 0; - return 1; -} - -// decode image to YCbCr format -static int stbi__decode_jpeg_image(stbi__jpeg *j) -{ - int m; - for (m = 0; m < 4; m++) { - j->img_comp[m].raw_data = NULL; - j->img_comp[m].raw_coeff = NULL; - } - j->restart_interval = 0; - if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; - m = stbi__get_marker(j); - while (!stbi__EOI(m)) { - if (stbi__SOS(m)) { - if (!stbi__process_scan_header(j)) return 0; - if (!stbi__parse_entropy_coded_data(j)) return 0; - if (j->marker == STBI__MARKER_none ) { - // handle 0s at the end of image data from IP Kamera 9060 - while (!stbi__at_eof(j->s)) { - int x = stbi__get8(j->s); - if (x == 255) { - j->marker = stbi__get8(j->s); - break; - } - } - // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 - } - } else if (stbi__DNL(m)) { - int Ld = stbi__get16be(j->s); - stbi__uint32 NL = stbi__get16be(j->s); - if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); - if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); - } else { - if (!stbi__process_marker(j, m)) return 0; - } - m = stbi__get_marker(j); - } - if (j->progressive) - stbi__jpeg_finish(j); - return 1; -} - -// static jfif-centered resampling (across block boundaries) - -typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, - int w, int hs); - -#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) - -static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - STBI_NOTUSED(out); - STBI_NOTUSED(in_far); - STBI_NOTUSED(w); - STBI_NOTUSED(hs); - return in_near; -} - -static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - // need to generate two samples vertically for every one in input - int i; - STBI_NOTUSED(hs); - for (i=0; i < w; ++i) - out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); - return out; -} - -static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - // need to generate two samples horizontally for every one in input - int i; - stbi_uc *input = in_near; - - if (w == 1) { - // if only one sample, can't do any interpolation - out[0] = out[1] = input[0]; - return out; - } - - out[0] = input[0]; - out[1] = stbi__div4(input[0]*3 + input[1] + 2); - for (i=1; i < w-1; ++i) { - int n = 3*input[i]+2; - out[i*2+0] = stbi__div4(n+input[i-1]); - out[i*2+1] = stbi__div4(n+input[i+1]); - } - out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); - out[i*2+1] = input[w-1]; - - STBI_NOTUSED(in_far); - STBI_NOTUSED(hs); - - return out; -} - -#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) - -static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - // need to generate 2x2 samples for every one in input - int i,t0,t1; - if (w == 1) { - out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); - return out; - } - - t1 = 3*in_near[0] + in_far[0]; - out[0] = stbi__div4(t1+2); - for (i=1; i < w; ++i) { - t0 = t1; - t1 = 3*in_near[i]+in_far[i]; - out[i*2-1] = stbi__div16(3*t0 + t1 + 8); - out[i*2 ] = stbi__div16(3*t1 + t0 + 8); - } - out[w*2-1] = stbi__div4(t1+2); - - STBI_NOTUSED(hs); - - return out; -} - -#if defined(STBI_SSE2) || defined(STBI_NEON) -static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - // need to generate 2x2 samples for every one in input - int i=0,t0,t1; - - if (w == 1) { - out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); - return out; - } - - t1 = 3*in_near[0] + in_far[0]; - // process groups of 8 pixels for as long as we can. - // note we can't handle the last pixel in a row in this loop - // because we need to handle the filter boundary conditions. - for (; i < ((w-1) & ~7); i += 8) { -#if defined(STBI_SSE2) - // load and perform the vertical filtering pass - // this uses 3*x + y = 4*x + (y - x) - __m128i zero = _mm_setzero_si128(); - __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); - __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); - __m128i farw = _mm_unpacklo_epi8(farb, zero); - __m128i nearw = _mm_unpacklo_epi8(nearb, zero); - __m128i diff = _mm_sub_epi16(farw, nearw); - __m128i nears = _mm_slli_epi16(nearw, 2); - __m128i curr = _mm_add_epi16(nears, diff); // current row - - // horizontal filter works the same based on shifted vers of current - // row. "prev" is current row shifted right by 1 pixel; we need to - // insert the previous pixel value (from t1). - // "next" is current row shifted left by 1 pixel, with first pixel - // of next block of 8 pixels added in. - __m128i prv0 = _mm_slli_si128(curr, 2); - __m128i nxt0 = _mm_srli_si128(curr, 2); - __m128i prev = _mm_insert_epi16(prv0, t1, 0); - __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); - - // horizontal filter, polyphase implementation since it's convenient: - // even pixels = 3*cur + prev = cur*4 + (prev - cur) - // odd pixels = 3*cur + next = cur*4 + (next - cur) - // note the shared term. - __m128i bias = _mm_set1_epi16(8); - __m128i curs = _mm_slli_epi16(curr, 2); - __m128i prvd = _mm_sub_epi16(prev, curr); - __m128i nxtd = _mm_sub_epi16(next, curr); - __m128i curb = _mm_add_epi16(curs, bias); - __m128i even = _mm_add_epi16(prvd, curb); - __m128i odd = _mm_add_epi16(nxtd, curb); - - // interleave even and odd pixels, then undo scaling. - __m128i int0 = _mm_unpacklo_epi16(even, odd); - __m128i int1 = _mm_unpackhi_epi16(even, odd); - __m128i de0 = _mm_srli_epi16(int0, 4); - __m128i de1 = _mm_srli_epi16(int1, 4); - - // pack and write output - __m128i outv = _mm_packus_epi16(de0, de1); - _mm_storeu_si128((__m128i *) (out + i*2), outv); -#elif defined(STBI_NEON) - // load and perform the vertical filtering pass - // this uses 3*x + y = 4*x + (y - x) - uint8x8_t farb = vld1_u8(in_far + i); - uint8x8_t nearb = vld1_u8(in_near + i); - int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); - int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); - int16x8_t curr = vaddq_s16(nears, diff); // current row - - // horizontal filter works the same based on shifted vers of current - // row. "prev" is current row shifted right by 1 pixel; we need to - // insert the previous pixel value (from t1). - // "next" is current row shifted left by 1 pixel, with first pixel - // of next block of 8 pixels added in. - int16x8_t prv0 = vextq_s16(curr, curr, 7); - int16x8_t nxt0 = vextq_s16(curr, curr, 1); - int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); - int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); - - // horizontal filter, polyphase implementation since it's convenient: - // even pixels = 3*cur + prev = cur*4 + (prev - cur) - // odd pixels = 3*cur + next = cur*4 + (next - cur) - // note the shared term. - int16x8_t curs = vshlq_n_s16(curr, 2); - int16x8_t prvd = vsubq_s16(prev, curr); - int16x8_t nxtd = vsubq_s16(next, curr); - int16x8_t even = vaddq_s16(curs, prvd); - int16x8_t odd = vaddq_s16(curs, nxtd); - - // undo scaling and round, then store with even/odd phases interleaved - uint8x8x2_t o; - o.val[0] = vqrshrun_n_s16(even, 4); - o.val[1] = vqrshrun_n_s16(odd, 4); - vst2_u8(out + i*2, o); -#endif - - // "previous" value for next iter - t1 = 3*in_near[i+7] + in_far[i+7]; - } - - t0 = t1; - t1 = 3*in_near[i] + in_far[i]; - out[i*2] = stbi__div16(3*t1 + t0 + 8); - - for (++i; i < w; ++i) { - t0 = t1; - t1 = 3*in_near[i]+in_far[i]; - out[i*2-1] = stbi__div16(3*t0 + t1 + 8); - out[i*2 ] = stbi__div16(3*t1 + t0 + 8); - } - out[w*2-1] = stbi__div4(t1+2); - - STBI_NOTUSED(hs); - - return out; -} -#endif - -static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) -{ - // resample with nearest-neighbor - int i,j; - STBI_NOTUSED(in_far); - for (i=0; i < w; ++i) - for (j=0; j < hs; ++j) - out[i*hs+j] = in_near[i]; - return out; -} - -// this is a reduced-precision calculation of YCbCr-to-RGB introduced -// to make sure the code produces the same results in both SIMD and scalar -#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) -static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) -{ - int i; - for (i=0; i < count; ++i) { - int y_fixed = (y[i] << 20) + (1<<19); // rounding - int r,g,b; - int cr = pcr[i] - 128; - int cb = pcb[i] - 128; - r = y_fixed + cr* stbi__float2fixed(1.40200f); - g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); - b = y_fixed + cb* stbi__float2fixed(1.77200f); - r >>= 20; - g >>= 20; - b >>= 20; - if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } - if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } - if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } - out[0] = (stbi_uc)r; - out[1] = (stbi_uc)g; - out[2] = (stbi_uc)b; - out[3] = 255; - out += step; - } -} - -#if defined(STBI_SSE2) || defined(STBI_NEON) -static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) -{ - int i = 0; - -#ifdef STBI_SSE2 - // step == 3 is pretty ugly on the final interleave, and i'm not convinced - // it's useful in practice (you wouldn't use it for textures, for example). - // so just accelerate step == 4 case. - if (step == 4) { - // this is a fairly straightforward implementation and not super-optimized. - __m128i signflip = _mm_set1_epi8(-0x80); - __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); - __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); - __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); - __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); - __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); - __m128i xw = _mm_set1_epi16(255); // alpha channel - - for (; i+7 < count; i += 8) { - // load - __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); - __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); - __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); - __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 - __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 - - // unpack to short (and left-shift cr, cb by 8) - __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); - __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); - __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); - - // color transform - __m128i yws = _mm_srli_epi16(yw, 4); - __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); - __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); - __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); - __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); - __m128i rws = _mm_add_epi16(cr0, yws); - __m128i gwt = _mm_add_epi16(cb0, yws); - __m128i bws = _mm_add_epi16(yws, cb1); - __m128i gws = _mm_add_epi16(gwt, cr1); - - // descale - __m128i rw = _mm_srai_epi16(rws, 4); - __m128i bw = _mm_srai_epi16(bws, 4); - __m128i gw = _mm_srai_epi16(gws, 4); - - // back to byte, set up for transpose - __m128i brb = _mm_packus_epi16(rw, bw); - __m128i gxb = _mm_packus_epi16(gw, xw); - - // transpose to interleave channels - __m128i t0 = _mm_unpacklo_epi8(brb, gxb); - __m128i t1 = _mm_unpackhi_epi8(brb, gxb); - __m128i o0 = _mm_unpacklo_epi16(t0, t1); - __m128i o1 = _mm_unpackhi_epi16(t0, t1); - - // store - _mm_storeu_si128((__m128i *) (out + 0), o0); - _mm_storeu_si128((__m128i *) (out + 16), o1); - out += 32; - } - } -#endif - -#ifdef STBI_NEON - // in this version, step=3 support would be easy to add. but is there demand? - if (step == 4) { - // this is a fairly straightforward implementation and not super-optimized. - uint8x8_t signflip = vdup_n_u8(0x80); - int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); - int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); - int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); - int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); - - for (; i+7 < count; i += 8) { - // load - uint8x8_t y_bytes = vld1_u8(y + i); - uint8x8_t cr_bytes = vld1_u8(pcr + i); - uint8x8_t cb_bytes = vld1_u8(pcb + i); - int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); - int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); - - // expand to s16 - int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); - int16x8_t crw = vshll_n_s8(cr_biased, 7); - int16x8_t cbw = vshll_n_s8(cb_biased, 7); - - // color transform - int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); - int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); - int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); - int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); - int16x8_t rws = vaddq_s16(yws, cr0); - int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); - int16x8_t bws = vaddq_s16(yws, cb1); - - // undo scaling, round, convert to byte - uint8x8x4_t o; - o.val[0] = vqrshrun_n_s16(rws, 4); - o.val[1] = vqrshrun_n_s16(gws, 4); - o.val[2] = vqrshrun_n_s16(bws, 4); - o.val[3] = vdup_n_u8(255); - - // store, interleaving r/g/b/a - vst4_u8(out, o); - out += 8*4; - } - } -#endif - - for (; i < count; ++i) { - int y_fixed = (y[i] << 20) + (1<<19); // rounding - int r,g,b; - int cr = pcr[i] - 128; - int cb = pcb[i] - 128; - r = y_fixed + cr* stbi__float2fixed(1.40200f); - g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); - b = y_fixed + cb* stbi__float2fixed(1.77200f); - r >>= 20; - g >>= 20; - b >>= 20; - if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } - if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } - if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } - out[0] = (stbi_uc)r; - out[1] = (stbi_uc)g; - out[2] = (stbi_uc)b; - out[3] = 255; - out += step; - } -} -#endif - -// set up the kernels -static void stbi__setup_jpeg(stbi__jpeg *j) -{ - j->idct_block_kernel = stbi__idct_block; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; - -#ifdef STBI_SSE2 - if (stbi__sse2_available()) { - j->idct_block_kernel = stbi__idct_simd; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; - } -#endif - -#ifdef STBI_NEON - j->idct_block_kernel = stbi__idct_simd; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; -#endif -} - -// clean up the temporary component buffers -static void stbi__cleanup_jpeg(stbi__jpeg *j) -{ - stbi__free_jpeg_components(j, j->s->img_n, 0); -} - -typedef struct -{ - resample_row_func resample; - stbi_uc *line0,*line1; - int hs,vs; // expansion factor in each axis - int w_lores; // horizontal pixels pre-expansion - int ystep; // how far through vertical expansion we are - int ypos; // which pre-expansion row we're on -} stbi__resample; - -// fast 0..255 * 0..255 => 0..255 rounded multiplication -static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) -{ - unsigned int t = x*y + 128; - return (stbi_uc) ((t + (t >>8)) >> 8); -} - -static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) -{ - int n, decode_n, is_rgb; - z->s->img_n = 0; // make stbi__cleanup_jpeg safe - - // validate req_comp - if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); - - // load a jpeg image from whichever source, but leave in YCbCr format - if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } - - // determine actual number of components to generate - n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; - - is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); - - if (z->s->img_n == 3 && n < 3 && !is_rgb) - decode_n = 1; - else - decode_n = z->s->img_n; - - // nothing to do if no components requested; check this now to avoid - // accessing uninitialized coutput[0] later - if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } - - // resample and color-convert - { - int k; - unsigned int i,j; - stbi_uc *output; - stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; - - stbi__resample res_comp[4]; - - for (k=0; k < decode_n; ++k) { - stbi__resample *r = &res_comp[k]; - - // allocate line buffer big enough for upsampling off the edges - // with upsample factor of 4 - z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); - if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } - - r->hs = z->img_h_max / z->img_comp[k].h; - r->vs = z->img_v_max / z->img_comp[k].v; - r->ystep = r->vs >> 1; - r->w_lores = (z->s->img_x + r->hs-1) / r->hs; - r->ypos = 0; - r->line0 = r->line1 = z->img_comp[k].data; - - if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; - else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; - else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; - else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; - else r->resample = stbi__resample_row_generic; - } - - // can't error after this so, this is safe - output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); - if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } - - // now go ahead and resample - for (j=0; j < z->s->img_y; ++j) { - stbi_uc *out = output + n * z->s->img_x * j; - for (k=0; k < decode_n; ++k) { - stbi__resample *r = &res_comp[k]; - int y_bot = r->ystep >= (r->vs >> 1); - coutput[k] = r->resample(z->img_comp[k].linebuf, - y_bot ? r->line1 : r->line0, - y_bot ? r->line0 : r->line1, - r->w_lores, r->hs); - if (++r->ystep >= r->vs) { - r->ystep = 0; - r->line0 = r->line1; - if (++r->ypos < z->img_comp[k].y) - r->line1 += z->img_comp[k].w2; - } - } - if (n >= 3) { - stbi_uc *y = coutput[0]; - if (z->s->img_n == 3) { - if (is_rgb) { - for (i=0; i < z->s->img_x; ++i) { - out[0] = y[i]; - out[1] = coutput[1][i]; - out[2] = coutput[2][i]; - out[3] = 255; - out += n; - } - } else { - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - } - } else if (z->s->img_n == 4) { - if (z->app14_color_transform == 0) { // CMYK - for (i=0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - out[0] = stbi__blinn_8x8(coutput[0][i], m); - out[1] = stbi__blinn_8x8(coutput[1][i], m); - out[2] = stbi__blinn_8x8(coutput[2][i], m); - out[3] = 255; - out += n; - } - } else if (z->app14_color_transform == 2) { // YCCK - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - for (i=0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - out[0] = stbi__blinn_8x8(255 - out[0], m); - out[1] = stbi__blinn_8x8(255 - out[1], m); - out[2] = stbi__blinn_8x8(255 - out[2], m); - out += n; - } - } else { // YCbCr + alpha? Ignore the fourth channel for now - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - } - } else - for (i=0; i < z->s->img_x; ++i) { - out[0] = out[1] = out[2] = y[i]; - out[3] = 255; // not used if n==3 - out += n; - } - } else { - if (is_rgb) { - if (n == 1) - for (i=0; i < z->s->img_x; ++i) - *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); - else { - for (i=0; i < z->s->img_x; ++i, out += 2) { - out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); - out[1] = 255; - } - } - } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { - for (i=0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); - stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); - stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); - out[0] = stbi__compute_y(r, g, b); - out[1] = 255; - out += n; - } - } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { - for (i=0; i < z->s->img_x; ++i) { - out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); - out[1] = 255; - out += n; - } - } else { - stbi_uc *y = coutput[0]; - if (n == 1) - for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; - else - for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } - } - } - } - stbi__cleanup_jpeg(z); - *out_x = z->s->img_x; - *out_y = z->s->img_y; - if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output - return output; - } -} - -static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - unsigned char* result; - stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); - if (!j) return stbi__errpuc("outofmem", "Out of memory"); - STBI_NOTUSED(ri); - j->s = s; - stbi__setup_jpeg(j); - result = load_jpeg_image(j, x,y,comp,req_comp); - STBI_FREE(j); - return result; -} - -static int stbi__jpeg_test(stbi__context *s) -{ - int r; - stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); - if (!j) return stbi__err("outofmem", "Out of memory"); - j->s = s; - stbi__setup_jpeg(j); - r = stbi__decode_jpeg_header(j, STBI__SCAN_type); - stbi__rewind(s); - STBI_FREE(j); - return r; -} - -static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) -{ - if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { - stbi__rewind( j->s ); - return 0; - } - if (x) *x = j->s->img_x; - if (y) *y = j->s->img_y; - if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; - return 1; -} - -static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) -{ - int result; - stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); - if (!j) return stbi__err("outofmem", "Out of memory"); - j->s = s; - result = stbi__jpeg_info_raw(j, x, y, comp); - STBI_FREE(j); - return result; -} -#endif - -// public domain zlib decode v0.2 Sean Barrett 2006-11-18 -// simple implementation -// - all input must be provided in an upfront buffer -// - all output is written to a single output buffer (can malloc/realloc) -// performance -// - fast huffman - -#ifndef STBI_NO_ZLIB - -// fast-way is faster to check than jpeg huffman, but slow way is slower -#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables -#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) -#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet - -// zlib-style huffman encoding -// (jpegs packs from left, zlib from right, so can't share code) -typedef struct -{ - stbi__uint16 fast[1 << STBI__ZFAST_BITS]; - stbi__uint16 firstcode[16]; - int maxcode[17]; - stbi__uint16 firstsymbol[16]; - stbi_uc size[STBI__ZNSYMS]; - stbi__uint16 value[STBI__ZNSYMS]; -} stbi__zhuffman; - -stbi_inline static int stbi__bitreverse16(int n) -{ - n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); - n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); - n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); - n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); - return n; -} - -stbi_inline static int stbi__bit_reverse(int v, int bits) -{ - STBI_ASSERT(bits <= 16); - // to bit reverse n bits, reverse 16 and shift - // e.g. 11 bits, bit reverse and shift away 5 - return stbi__bitreverse16(v) >> (16-bits); -} - -static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) -{ - int i,k=0; - int code, next_code[16], sizes[17]; - - // DEFLATE spec for generating codes - memset(sizes, 0, sizeof(sizes)); - memset(z->fast, 0, sizeof(z->fast)); - for (i=0; i < num; ++i) - ++sizes[sizelist[i]]; - sizes[0] = 0; - for (i=1; i < 16; ++i) - if (sizes[i] > (1 << i)) - return stbi__err("bad sizes", "Corrupt PNG"); - code = 0; - for (i=1; i < 16; ++i) { - next_code[i] = code; - z->firstcode[i] = (stbi__uint16) code; - z->firstsymbol[i] = (stbi__uint16) k; - code = (code + sizes[i]); - if (sizes[i]) - if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); - z->maxcode[i] = code << (16-i); // preshift for inner loop - code <<= 1; - k += sizes[i]; - } - z->maxcode[16] = 0x10000; // sentinel - for (i=0; i < num; ++i) { - int s = sizelist[i]; - if (s) { - int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; - stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); - z->size [c] = (stbi_uc ) s; - z->value[c] = (stbi__uint16) i; - if (s <= STBI__ZFAST_BITS) { - int j = stbi__bit_reverse(next_code[s],s); - while (j < (1 << STBI__ZFAST_BITS)) { - z->fast[j] = fastv; - j += (1 << s); - } - } - ++next_code[s]; - } - } - return 1; -} - -// zlib-from-memory implementation for PNG reading -// because PNG allows splitting the zlib stream arbitrarily, -// and it's annoying structurally to have PNG call ZLIB call PNG, -// we require PNG read all the IDATs and combine them into a single -// memory buffer - -typedef struct -{ - stbi_uc *zbuffer, *zbuffer_end; - int num_bits; - stbi__uint32 code_buffer; - - char *zout; - char *zout_start; - char *zout_end; - int z_expandable; - - stbi__zhuffman z_length, z_distance; -} stbi__zbuf; - -stbi_inline static int stbi__zeof(stbi__zbuf *z) -{ - return (z->zbuffer >= z->zbuffer_end); -} - -stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) -{ - return stbi__zeof(z) ? 0 : *z->zbuffer++; -} - -static void stbi__fill_bits(stbi__zbuf *z) -{ - do { - if (z->code_buffer >= (1U << z->num_bits)) { - z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ - return; - } - z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; - z->num_bits += 8; - } while (z->num_bits <= 24); -} - -stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) -{ - unsigned int k; - if (z->num_bits < n) stbi__fill_bits(z); - k = z->code_buffer & ((1 << n) - 1); - z->code_buffer >>= n; - z->num_bits -= n; - return k; -} - -static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) -{ - int b,s,k; - // not resolved by fast table, so compute it the slow way - // use jpeg approach, which requires MSbits at top - k = stbi__bit_reverse(a->code_buffer, 16); - for (s=STBI__ZFAST_BITS+1; ; ++s) - if (k < z->maxcode[s]) - break; - if (s >= 16) return -1; // invalid code! - // code size is s, so: - b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; - if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! - if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. - a->code_buffer >>= s; - a->num_bits -= s; - return z->value[b]; -} - -stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) -{ - int b,s; - if (a->num_bits < 16) { - if (stbi__zeof(a)) { - return -1; /* report error for unexpected end of data. */ - } - stbi__fill_bits(a); - } - b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; - if (b) { - s = b >> 9; - a->code_buffer >>= s; - a->num_bits -= s; - return b & 511; - } - return stbi__zhuffman_decode_slowpath(a, z); -} - -static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes -{ - char *q; - unsigned int cur, limit, old_limit; - z->zout = zout; - if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); - cur = (unsigned int) (z->zout - z->zout_start); - limit = old_limit = (unsigned) (z->zout_end - z->zout_start); - if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); - while (cur + n > limit) { - if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); - limit *= 2; - } - q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); - STBI_NOTUSED(old_limit); - if (q == NULL) return stbi__err("outofmem", "Out of memory"); - z->zout_start = q; - z->zout = q + cur; - z->zout_end = q + limit; - return 1; -} - -static const int stbi__zlength_base[31] = { - 3,4,5,6,7,8,9,10,11,13, - 15,17,19,23,27,31,35,43,51,59, - 67,83,99,115,131,163,195,227,258,0,0 }; - -static const int stbi__zlength_extra[31]= -{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; - -static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, -257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; - -static const int stbi__zdist_extra[32] = -{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; - -static int stbi__parse_huffman_block(stbi__zbuf *a) -{ - char *zout = a->zout; - for(;;) { - int z = stbi__zhuffman_decode(a, &a->z_length); - if (z < 256) { - if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes - if (zout >= a->zout_end) { - if (!stbi__zexpand(a, zout, 1)) return 0; - zout = a->zout; - } - *zout++ = (char) z; - } else { - stbi_uc *p; - int len,dist; - if (z == 256) { - a->zout = zout; - return 1; - } - z -= 257; - len = stbi__zlength_base[z]; - if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); - z = stbi__zhuffman_decode(a, &a->z_distance); - if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); - dist = stbi__zdist_base[z]; - if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); - if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); - if (zout + len > a->zout_end) { - if (!stbi__zexpand(a, zout, len)) return 0; - zout = a->zout; - } - p = (stbi_uc *) (zout - dist); - if (dist == 1) { // run of one byte; common in images. - stbi_uc v = *p; - if (len) { do *zout++ = v; while (--len); } - } else { - if (len) { do *zout++ = *p++; while (--len); } - } - } - } -} - -static int stbi__compute_huffman_codes(stbi__zbuf *a) -{ - static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; - stbi__zhuffman z_codelength; - stbi_uc lencodes[286+32+137];//padding for maximum single op - stbi_uc codelength_sizes[19]; - int i,n; - - int hlit = stbi__zreceive(a,5) + 257; - int hdist = stbi__zreceive(a,5) + 1; - int hclen = stbi__zreceive(a,4) + 4; - int ntot = hlit + hdist; - - memset(codelength_sizes, 0, sizeof(codelength_sizes)); - for (i=0; i < hclen; ++i) { - int s = stbi__zreceive(a,3); - codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; - } - if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; - - n = 0; - while (n < ntot) { - int c = stbi__zhuffman_decode(a, &z_codelength); - if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); - if (c < 16) - lencodes[n++] = (stbi_uc) c; - else { - stbi_uc fill = 0; - if (c == 16) { - c = stbi__zreceive(a,2)+3; - if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); - fill = lencodes[n-1]; - } else if (c == 17) { - c = stbi__zreceive(a,3)+3; - } else if (c == 18) { - c = stbi__zreceive(a,7)+11; - } else { - return stbi__err("bad codelengths", "Corrupt PNG"); - } - if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); - memset(lencodes+n, fill, c); - n += c; - } - } - if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); - if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; - if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; - return 1; -} - -static int stbi__parse_uncompressed_block(stbi__zbuf *a) -{ - stbi_uc header[4]; - int len,nlen,k; - if (a->num_bits & 7) - stbi__zreceive(a, a->num_bits & 7); // discard - // drain the bit-packed data into header - k = 0; - while (a->num_bits > 0) { - header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check - a->code_buffer >>= 8; - a->num_bits -= 8; - } - if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); - // now fill header the normal way - while (k < 4) - header[k++] = stbi__zget8(a); - len = header[1] * 256 + header[0]; - nlen = header[3] * 256 + header[2]; - if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); - if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); - if (a->zout + len > a->zout_end) - if (!stbi__zexpand(a, a->zout, len)) return 0; - memcpy(a->zout, a->zbuffer, len); - a->zbuffer += len; - a->zout += len; - return 1; -} - -static int stbi__parse_zlib_header(stbi__zbuf *a) -{ - int cmf = stbi__zget8(a); - int cm = cmf & 15; - /* int cinfo = cmf >> 4; */ - int flg = stbi__zget8(a); - if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec - if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec - if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png - if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png - // window = 1 << (8 + cinfo)... but who cares, we fully buffer output - return 1; -} - -static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = -{ - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 -}; -static const stbi_uc stbi__zdefault_distance[32] = -{ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 -}; -/* -Init algorithm: -{ - int i; // use <= to match clearly with spec - for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; - for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; - for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; - for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; - - for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; -} -*/ - -static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) -{ - int final, type; - if (parse_header) - if (!stbi__parse_zlib_header(a)) return 0; - a->num_bits = 0; - a->code_buffer = 0; - do { - final = stbi__zreceive(a,1); - type = stbi__zreceive(a,2); - if (type == 0) { - if (!stbi__parse_uncompressed_block(a)) return 0; - } else if (type == 3) { - return 0; - } else { - if (type == 1) { - // use fixed code lengths - if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; - if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; - } else { - if (!stbi__compute_huffman_codes(a)) return 0; - } - if (!stbi__parse_huffman_block(a)) return 0; - } - } while (!final); - return 1; -} - -static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) -{ - a->zout_start = obuf; - a->zout = obuf; - a->zout_end = obuf + olen; - a->z_expandable = exp; - - return stbi__parse_zlib(a, parse_header); -} - -STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) -{ - stbi__zbuf a; - char *p = (char *) stbi__malloc(initial_size); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc *) buffer; - a.zbuffer_end = (stbi_uc *) buffer + len; - if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { - if (outlen) *outlen = (int) (a.zout - a.zout_start); - return a.zout_start; - } else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) -{ - return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); -} - -STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) -{ - stbi__zbuf a; - char *p = (char *) stbi__malloc(initial_size); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc *) buffer; - a.zbuffer_end = (stbi_uc *) buffer + len; - if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { - if (outlen) *outlen = (int) (a.zout - a.zout_start); - return a.zout_start; - } else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) -{ - stbi__zbuf a; - a.zbuffer = (stbi_uc *) ibuffer; - a.zbuffer_end = (stbi_uc *) ibuffer + ilen; - if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) - return (int) (a.zout - a.zout_start); - else - return -1; -} - -STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) -{ - stbi__zbuf a; - char *p = (char *) stbi__malloc(16384); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc *) buffer; - a.zbuffer_end = (stbi_uc *) buffer+len; - if (stbi__do_zlib(&a, p, 16384, 1, 0)) { - if (outlen) *outlen = (int) (a.zout - a.zout_start); - return a.zout_start; - } else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) -{ - stbi__zbuf a; - a.zbuffer = (stbi_uc *) ibuffer; - a.zbuffer_end = (stbi_uc *) ibuffer + ilen; - if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) - return (int) (a.zout - a.zout_start); - else - return -1; -} -#endif - -// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 -// simple implementation -// - only 8-bit samples -// - no CRC checking -// - allocates lots of intermediate memory -// - avoids problem of streaming data between subsystems -// - avoids explicit window management -// performance -// - uses stb_zlib, a PD zlib implementation with fast huffman decoding - -#ifndef STBI_NO_PNG -typedef struct -{ - stbi__uint32 length; - stbi__uint32 type; -} stbi__pngchunk; - -static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) -{ - stbi__pngchunk c; - c.length = stbi__get32be(s); - c.type = stbi__get32be(s); - return c; -} - -static int stbi__check_png_header(stbi__context *s) -{ - static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; - int i; - for (i=0; i < 8; ++i) - if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); - return 1; -} - -typedef struct -{ - stbi__context *s; - stbi_uc *idata, *expanded, *out; - int depth; -} stbi__png; - - -enum { - STBI__F_none=0, - STBI__F_sub=1, - STBI__F_up=2, - STBI__F_avg=3, - STBI__F_paeth=4, - // synthetic filters used for first scanline to avoid needing a dummy row of 0s - STBI__F_avg_first, - STBI__F_paeth_first -}; - -static stbi_uc first_row_filter[5] = -{ - STBI__F_none, - STBI__F_sub, - STBI__F_none, - STBI__F_avg_first, - STBI__F_paeth_first -}; - -static int stbi__paeth(int a, int b, int c) -{ - int p = a + b - c; - int pa = abs(p-a); - int pb = abs(p-b); - int pc = abs(p-c); - if (pa <= pb && pa <= pc) return a; - if (pb <= pc) return b; - return c; -} - -static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; - -// create the png data from post-deflated data -static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) -{ - int bytes = (depth == 16? 2 : 1); - stbi__context *s = a->s; - stbi__uint32 i,j,stride = x*out_n*bytes; - stbi__uint32 img_len, img_width_bytes; - int k; - int img_n = s->img_n; // copy it into a local for later - - int output_bytes = out_n*bytes; - int filter_bytes = img_n*bytes; - int width = x; - - STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); - a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into - if (!a->out) return stbi__err("outofmem", "Out of memory"); - - if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); - img_width_bytes = (((img_n * x * depth) + 7) >> 3); - img_len = (img_width_bytes + 1) * y; - - // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, - // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), - // so just check for raw_len < img_len always. - if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); - - for (j=0; j < y; ++j) { - stbi_uc *cur = a->out + stride*j; - stbi_uc *prior; - int filter = *raw++; - - if (filter > 4) - return stbi__err("invalid filter","Corrupt PNG"); - - if (depth < 8) { - if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); - cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place - filter_bytes = 1; - width = img_width_bytes; - } - prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above - - // if first row, use special filter that doesn't sample previous row - if (j == 0) filter = first_row_filter[filter]; - - // handle first byte explicitly - for (k=0; k < filter_bytes; ++k) { - switch (filter) { - case STBI__F_none : cur[k] = raw[k]; break; - case STBI__F_sub : cur[k] = raw[k]; break; - case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; - case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; - case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; - case STBI__F_avg_first : cur[k] = raw[k]; break; - case STBI__F_paeth_first: cur[k] = raw[k]; break; - } - } - - if (depth == 8) { - if (img_n != out_n) - cur[img_n] = 255; // first pixel - raw += img_n; - cur += out_n; - prior += out_n; - } else if (depth == 16) { - if (img_n != out_n) { - cur[filter_bytes] = 255; // first pixel top byte - cur[filter_bytes+1] = 255; // first pixel bottom byte - } - raw += filter_bytes; - cur += output_bytes; - prior += output_bytes; - } else { - raw += 1; - cur += 1; - prior += 1; - } - - // this is a little gross, so that we don't switch per-pixel or per-component - if (depth < 8 || img_n == out_n) { - int nk = (width - 1)*filter_bytes; - #define STBI__CASE(f) \ - case f: \ - for (k=0; k < nk; ++k) - switch (filter) { - // "none" filter turns into a memcpy here; make that explicit. - case STBI__F_none: memcpy(cur, raw, nk); break; - STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; - STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; - STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; - STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; - STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; - STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; - } - #undef STBI__CASE - raw += nk; - } else { - STBI_ASSERT(img_n+1 == out_n); - #define STBI__CASE(f) \ - case f: \ - for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ - for (k=0; k < filter_bytes; ++k) - switch (filter) { - STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; - STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; - STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; - STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; - STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; - STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; - STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; - } - #undef STBI__CASE - - // the loop above sets the high byte of the pixels' alpha, but for - // 16 bit png files we also need the low byte set. we'll do that here. - if (depth == 16) { - cur = a->out + stride*j; // start at the beginning of the row again - for (i=0; i < x; ++i,cur+=output_bytes) { - cur[filter_bytes+1] = 255; - } - } - } - } - - // we make a separate pass to expand bits to pixels; for performance, - // this could run two scanlines behind the above code, so it won't - // intefere with filtering but will still be in the cache. - if (depth < 8) { - for (j=0; j < y; ++j) { - stbi_uc *cur = a->out + stride*j; - stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; - // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit - // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop - stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range - - // note that the final byte might overshoot and write more data than desired. - // we can allocate enough data that this never writes out of memory, but it - // could also overwrite the next scanline. can it overwrite non-empty data - // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. - // so we need to explicitly clamp the final ones - - if (depth == 4) { - for (k=x*img_n; k >= 2; k-=2, ++in) { - *cur++ = scale * ((*in >> 4) ); - *cur++ = scale * ((*in ) & 0x0f); - } - if (k > 0) *cur++ = scale * ((*in >> 4) ); - } else if (depth == 2) { - for (k=x*img_n; k >= 4; k-=4, ++in) { - *cur++ = scale * ((*in >> 6) ); - *cur++ = scale * ((*in >> 4) & 0x03); - *cur++ = scale * ((*in >> 2) & 0x03); - *cur++ = scale * ((*in ) & 0x03); - } - if (k > 0) *cur++ = scale * ((*in >> 6) ); - if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); - if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); - } else if (depth == 1) { - for (k=x*img_n; k >= 8; k-=8, ++in) { - *cur++ = scale * ((*in >> 7) ); - *cur++ = scale * ((*in >> 6) & 0x01); - *cur++ = scale * ((*in >> 5) & 0x01); - *cur++ = scale * ((*in >> 4) & 0x01); - *cur++ = scale * ((*in >> 3) & 0x01); - *cur++ = scale * ((*in >> 2) & 0x01); - *cur++ = scale * ((*in >> 1) & 0x01); - *cur++ = scale * ((*in ) & 0x01); - } - if (k > 0) *cur++ = scale * ((*in >> 7) ); - if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); - if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); - if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); - if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); - if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); - if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); - } - if (img_n != out_n) { - int q; - // insert alpha = 255 - cur = a->out + stride*j; - if (img_n == 1) { - for (q=x-1; q >= 0; --q) { - cur[q*2+1] = 255; - cur[q*2+0] = cur[q]; - } - } else { - STBI_ASSERT(img_n == 3); - for (q=x-1; q >= 0; --q) { - cur[q*4+3] = 255; - cur[q*4+2] = cur[q*3+2]; - cur[q*4+1] = cur[q*3+1]; - cur[q*4+0] = cur[q*3+0]; - } - } - } - } - } else if (depth == 16) { - // force the image data from big-endian to platform-native. - // this is done in a separate pass due to the decoding relying - // on the data being untouched, but could probably be done - // per-line during decode if care is taken. - stbi_uc *cur = a->out; - stbi__uint16 *cur16 = (stbi__uint16*)cur; - - for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { - *cur16 = (cur[0] << 8) | cur[1]; - } - } - - return 1; -} - -static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) -{ - int bytes = (depth == 16 ? 2 : 1); - int out_bytes = out_n * bytes; - stbi_uc *final; - int p; - if (!interlaced) - return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); - - // de-interlacing - final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); - if (!final) return stbi__err("outofmem", "Out of memory"); - for (p=0; p < 7; ++p) { - int xorig[] = { 0,4,0,2,0,1,0 }; - int yorig[] = { 0,0,4,0,2,0,1 }; - int xspc[] = { 8,8,4,4,2,2,1 }; - int yspc[] = { 8,8,8,4,4,2,2 }; - int i,j,x,y; - // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 - x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; - y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; - if (x && y) { - stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; - if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { - STBI_FREE(final); - return 0; - } - for (j=0; j < y; ++j) { - for (i=0; i < x; ++i) { - int out_y = j*yspc[p]+yorig[p]; - int out_x = i*xspc[p]+xorig[p]; - memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, - a->out + (j*x+i)*out_bytes, out_bytes); - } - } - STBI_FREE(a->out); - image_data += img_len; - image_data_len -= img_len; - } - } - a->out = final; - - return 1; -} - -static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) -{ - stbi__context *s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi_uc *p = z->out; - - // compute color-based transparency, assuming we've - // already got 255 as the alpha value in the output - STBI_ASSERT(out_n == 2 || out_n == 4); - - if (out_n == 2) { - for (i=0; i < pixel_count; ++i) { - p[1] = (p[0] == tc[0] ? 0 : 255); - p += 2; - } - } else { - for (i=0; i < pixel_count; ++i) { - if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) - p[3] = 0; - p += 4; - } - } - return 1; -} - -static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) -{ - stbi__context *s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi__uint16 *p = (stbi__uint16*) z->out; - - // compute color-based transparency, assuming we've - // already got 65535 as the alpha value in the output - STBI_ASSERT(out_n == 2 || out_n == 4); - - if (out_n == 2) { - for (i = 0; i < pixel_count; ++i) { - p[1] = (p[0] == tc[0] ? 0 : 65535); - p += 2; - } - } else { - for (i = 0; i < pixel_count; ++i) { - if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) - p[3] = 0; - p += 4; - } - } - return 1; -} - -static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) -{ - stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; - stbi_uc *p, *temp_out, *orig = a->out; - - p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); - if (p == NULL) return stbi__err("outofmem", "Out of memory"); - - // between here and free(out) below, exitting would leak - temp_out = p; - - if (pal_img_n == 3) { - for (i=0; i < pixel_count; ++i) { - int n = orig[i]*4; - p[0] = palette[n ]; - p[1] = palette[n+1]; - p[2] = palette[n+2]; - p += 3; - } - } else { - for (i=0; i < pixel_count; ++i) { - int n = orig[i]*4; - p[0] = palette[n ]; - p[1] = palette[n+1]; - p[2] = palette[n+2]; - p[3] = palette[n+3]; - p += 4; - } - } - STBI_FREE(a->out); - a->out = temp_out; - - STBI_NOTUSED(len); - - return 1; -} - -static int stbi__unpremultiply_on_load_global = 0; -static int stbi__de_iphone_flag_global = 0; - -STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) -{ - stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; -} - -STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) -{ - stbi__de_iphone_flag_global = flag_true_if_should_convert; -} - -#ifndef STBI_THREAD_LOCAL -#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global -#define stbi__de_iphone_flag stbi__de_iphone_flag_global -#else -static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; -static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; - -STBIDEF void stbi__unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) -{ - stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; - stbi__unpremultiply_on_load_set = 1; -} - -STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) -{ - stbi__de_iphone_flag_local = flag_true_if_should_convert; - stbi__de_iphone_flag_set = 1; -} - -#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ - ? stbi__unpremultiply_on_load_local \ - : stbi__unpremultiply_on_load_global) -#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ - ? stbi__de_iphone_flag_local \ - : stbi__de_iphone_flag_global) -#endif // STBI_THREAD_LOCAL - -static void stbi__de_iphone(stbi__png *z) -{ - stbi__context *s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi_uc *p = z->out; - - if (s->img_out_n == 3) { // convert bgr to rgb - for (i=0; i < pixel_count; ++i) { - stbi_uc t = p[0]; - p[0] = p[2]; - p[2] = t; - p += 3; - } - } else { - STBI_ASSERT(s->img_out_n == 4); - if (stbi__unpremultiply_on_load) { - // convert bgr to rgb and unpremultiply - for (i=0; i < pixel_count; ++i) { - stbi_uc a = p[3]; - stbi_uc t = p[0]; - if (a) { - stbi_uc half = a / 2; - p[0] = (p[2] * 255 + half) / a; - p[1] = (p[1] * 255 + half) / a; - p[2] = ( t * 255 + half) / a; - } else { - p[0] = p[2]; - p[2] = t; - } - p += 4; - } - } else { - // convert bgr to rgb - for (i=0; i < pixel_count; ++i) { - stbi_uc t = p[0]; - p[0] = p[2]; - p[2] = t; - p += 4; - } - } - } -} - -#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) - -static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) -{ - stbi_uc palette[1024], pal_img_n=0; - stbi_uc has_trans=0, tc[3]={0}; - stbi__uint16 tc16[3]; - stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; - int first=1,k,interlace=0, color=0, is_iphone=0; - stbi__context *s = z->s; - - z->expanded = NULL; - z->idata = NULL; - z->out = NULL; - - if (!stbi__check_png_header(s)) return 0; - - if (scan == STBI__SCAN_type) return 1; - - for (;;) { - stbi__pngchunk c = stbi__get_chunk_header(s); - switch (c.type) { - case STBI__PNG_TYPE('C','g','B','I'): - is_iphone = 1; - stbi__skip(s, c.length); - break; - case STBI__PNG_TYPE('I','H','D','R'): { - int comp,filter; - if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); - first = 0; - if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); - s->img_x = stbi__get32be(s); - s->img_y = stbi__get32be(s); - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); - color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); - if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); - if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); - comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); - filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); - interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); - if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); - if (!pal_img_n) { - s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); - if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); - if (scan == STBI__SCAN_header) return 1; - } else { - // if paletted, then pal_n is our final components, and - // img_n is # components to decompress/filter. - s->img_n = 1; - if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); - // if SCAN_header, have to scan to see if we have a tRNS - } - break; - } - - case STBI__PNG_TYPE('P','L','T','E'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); - pal_len = c.length / 3; - if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); - for (i=0; i < pal_len; ++i) { - palette[i*4+0] = stbi__get8(s); - palette[i*4+1] = stbi__get8(s); - palette[i*4+2] = stbi__get8(s); - palette[i*4+3] = 255; - } - break; - } - - case STBI__PNG_TYPE('t','R','N','S'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); - if (pal_img_n) { - if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } - if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); - if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); - pal_img_n = 4; - for (i=0; i < c.length; ++i) - palette[i*4+3] = stbi__get8(s); - } else { - if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); - if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); - has_trans = 1; - if (z->depth == 16) { - for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is - } else { - for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger - } - } - break; - } - - case STBI__PNG_TYPE('I','D','A','T'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); - if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } - if ((int)(ioff + c.length) < (int)ioff) return 0; - if (ioff + c.length > idata_limit) { - stbi__uint32 idata_limit_old = idata_limit; - stbi_uc *p; - if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; - while (ioff + c.length > idata_limit) - idata_limit *= 2; - STBI_NOTUSED(idata_limit_old); - p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); - z->idata = p; - } - if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); - ioff += c.length; - break; - } - - case STBI__PNG_TYPE('I','E','N','D'): { - stbi__uint32 raw_len, bpl; - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (scan != STBI__SCAN_load) return 1; - if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); - // initial guess for decoded data size to avoid unnecessary reallocs - bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component - raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; - z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); - if (z->expanded == NULL) return 0; // zlib should set error - STBI_FREE(z->idata); z->idata = NULL; - if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) - s->img_out_n = s->img_n+1; - else - s->img_out_n = s->img_n; - if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; - if (has_trans) { - if (z->depth == 16) { - if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; - } else { - if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; - } - } - if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) - stbi__de_iphone(z); - if (pal_img_n) { - // pal_img_n == 3 or 4 - s->img_n = pal_img_n; // record the actual colors we had - s->img_out_n = pal_img_n; - if (req_comp >= 3) s->img_out_n = req_comp; - if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) - return 0; - } else if (has_trans) { - // non-paletted image with tRNS -> source image has (constant) alpha - ++s->img_n; - } - STBI_FREE(z->expanded); z->expanded = NULL; - // end of PNG chunk, read and skip CRC - stbi__get32be(s); - return 1; - } - - default: - // if critical, fail - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if ((c.type & (1 << 29)) == 0) { - #ifndef STBI_NO_FAILURE_STRINGS - // not threadsafe - static char invalid_chunk[] = "XXXX PNG chunk not known"; - invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); - invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); - invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); - invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); - #endif - return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); - } - stbi__skip(s, c.length); - break; - } - // end of PNG chunk, read and skip CRC - stbi__get32be(s); - } -} - -static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) -{ - void *result=NULL; - if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); - if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { - if (p->depth <= 8) - ri->bits_per_channel = 8; - else if (p->depth == 16) - ri->bits_per_channel = 16; - else - return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); - result = p->out; - p->out = NULL; - if (req_comp && req_comp != p->s->img_out_n) { - if (ri->bits_per_channel == 8) - result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); - else - result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); - p->s->img_out_n = req_comp; - if (result == NULL) return result; - } - *x = p->s->img_x; - *y = p->s->img_y; - if (n) *n = p->s->img_n; - } - STBI_FREE(p->out); p->out = NULL; - STBI_FREE(p->expanded); p->expanded = NULL; - STBI_FREE(p->idata); p->idata = NULL; - - return result; -} - -static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - stbi__png p; - p.s = s; - return stbi__do_png(&p, x,y,comp,req_comp, ri); -} - -static int stbi__png_test(stbi__context *s) -{ - int r; - r = stbi__check_png_header(s); - stbi__rewind(s); - return r; -} - -static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) -{ - if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { - stbi__rewind( p->s ); - return 0; - } - if (x) *x = p->s->img_x; - if (y) *y = p->s->img_y; - if (comp) *comp = p->s->img_n; - return 1; -} - -static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) -{ - stbi__png p; - p.s = s; - return stbi__png_info_raw(&p, x, y, comp); -} - -static int stbi__png_is16(stbi__context *s) -{ - stbi__png p; - p.s = s; - if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) - return 0; - if (p.depth != 16) { - stbi__rewind(p.s); - return 0; - } - return 1; -} -#endif - -// Microsoft/Windows BMP image - -#ifndef STBI_NO_BMP -static int stbi__bmp_test_raw(stbi__context *s) -{ - int r; - int sz; - if (stbi__get8(s) != 'B') return 0; - if (stbi__get8(s) != 'M') return 0; - stbi__get32le(s); // discard filesize - stbi__get16le(s); // discard reserved - stbi__get16le(s); // discard reserved - stbi__get32le(s); // discard data offset - sz = stbi__get32le(s); - r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); - return r; -} - -static int stbi__bmp_test(stbi__context *s) -{ - int r = stbi__bmp_test_raw(s); - stbi__rewind(s); - return r; -} - - -// returns 0..31 for the highest set bit -static int stbi__high_bit(unsigned int z) -{ - int n=0; - if (z == 0) return -1; - if (z >= 0x10000) { n += 16; z >>= 16; } - if (z >= 0x00100) { n += 8; z >>= 8; } - if (z >= 0x00010) { n += 4; z >>= 4; } - if (z >= 0x00004) { n += 2; z >>= 2; } - if (z >= 0x00002) { n += 1;/* >>= 1;*/ } - return n; -} - -static int stbi__bitcount(unsigned int a) -{ - a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 - a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 - a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits - a = (a + (a >> 8)); // max 16 per 8 bits - a = (a + (a >> 16)); // max 32 per 8 bits - return a & 0xff; -} - -// extract an arbitrarily-aligned N-bit value (N=bits) -// from v, and then make it 8-bits long and fractionally -// extend it to full full range. -static int stbi__shiftsigned(unsigned int v, int shift, int bits) -{ - static unsigned int mul_table[9] = { - 0, - 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, - 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, - }; - static unsigned int shift_table[9] = { - 0, 0,0,1,0,2,4,6,0, - }; - if (shift < 0) - v <<= -shift; - else - v >>= shift; - STBI_ASSERT(v < 256); - v >>= (8-bits); - STBI_ASSERT(bits >= 0 && bits <= 8); - return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; -} - -typedef struct -{ - int bpp, offset, hsz; - unsigned int mr,mg,mb,ma, all_a; - int extra_read; -} stbi__bmp_data; - -static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) -{ - // BI_BITFIELDS specifies masks explicitly, don't override - if (compress == 3) - return 1; - - if (compress == 0) { - if (info->bpp == 16) { - info->mr = 31u << 10; - info->mg = 31u << 5; - info->mb = 31u << 0; - } else if (info->bpp == 32) { - info->mr = 0xffu << 16; - info->mg = 0xffu << 8; - info->mb = 0xffu << 0; - info->ma = 0xffu << 24; - info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 - } else { - // otherwise, use defaults, which is all-0 - info->mr = info->mg = info->mb = info->ma = 0; - } - return 1; - } - return 0; // error -} - -static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) -{ - int hsz; - if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); - stbi__get32le(s); // discard filesize - stbi__get16le(s); // discard reserved - stbi__get16le(s); // discard reserved - info->offset = stbi__get32le(s); - info->hsz = hsz = stbi__get32le(s); - info->mr = info->mg = info->mb = info->ma = 0; - info->extra_read = 14; - - if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); - - if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); - if (hsz == 12) { - s->img_x = stbi__get16le(s); - s->img_y = stbi__get16le(s); - } else { - s->img_x = stbi__get32le(s); - s->img_y = stbi__get32le(s); - } - if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); - info->bpp = stbi__get16le(s); - if (hsz != 12) { - int compress = stbi__get32le(s); - if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); - if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes - if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel - stbi__get32le(s); // discard sizeof - stbi__get32le(s); // discard hres - stbi__get32le(s); // discard vres - stbi__get32le(s); // discard colorsused - stbi__get32le(s); // discard max important - if (hsz == 40 || hsz == 56) { - if (hsz == 56) { - stbi__get32le(s); - stbi__get32le(s); - stbi__get32le(s); - stbi__get32le(s); - } - if (info->bpp == 16 || info->bpp == 32) { - if (compress == 0) { - stbi__bmp_set_mask_defaults(info, compress); - } else if (compress == 3) { - info->mr = stbi__get32le(s); - info->mg = stbi__get32le(s); - info->mb = stbi__get32le(s); - info->extra_read += 12; - // not documented, but generated by photoshop and handled by mspaint - if (info->mr == info->mg && info->mg == info->mb) { - // ?!?!? - return stbi__errpuc("bad BMP", "bad BMP"); - } - } else - return stbi__errpuc("bad BMP", "bad BMP"); - } - } else { - // V4/V5 header - int i; - if (hsz != 108 && hsz != 124) - return stbi__errpuc("bad BMP", "bad BMP"); - info->mr = stbi__get32le(s); - info->mg = stbi__get32le(s); - info->mb = stbi__get32le(s); - info->ma = stbi__get32le(s); - if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs - stbi__bmp_set_mask_defaults(info, compress); - stbi__get32le(s); // discard color space - for (i=0; i < 12; ++i) - stbi__get32le(s); // discard color space parameters - if (hsz == 124) { - stbi__get32le(s); // discard rendering intent - stbi__get32le(s); // discard offset of profile data - stbi__get32le(s); // discard size of profile data - stbi__get32le(s); // discard reserved - } - } - } - return (void *) 1; -} - - -static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - stbi_uc *out; - unsigned int mr=0,mg=0,mb=0,ma=0, all_a; - stbi_uc pal[256][4]; - int psize=0,i,j,width; - int flip_vertically, pad, target; - stbi__bmp_data info; - STBI_NOTUSED(ri); - - info.all_a = 255; - if (stbi__bmp_parse_header(s, &info) == NULL) - return NULL; // error code already set - - flip_vertically = ((int) s->img_y) > 0; - s->img_y = abs((int) s->img_y); - - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - - mr = info.mr; - mg = info.mg; - mb = info.mb; - ma = info.ma; - all_a = info.all_a; - - if (info.hsz == 12) { - if (info.bpp < 24) - psize = (info.offset - info.extra_read - 24) / 3; - } else { - if (info.bpp < 16) - psize = (info.offset - info.extra_read - info.hsz) >> 2; - } - if (psize == 0) { - if (info.offset != s->callback_already_read + (s->img_buffer - s->img_buffer_original)) { - return stbi__errpuc("bad offset", "Corrupt BMP"); - } - } - - if (info.bpp == 24 && ma == 0xff000000) - s->img_n = 3; - else - s->img_n = ma ? 4 : 3; - if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 - target = req_comp; - else - target = s->img_n; // if they want monochrome, we'll post-convert - - // sanity-check size - if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) - return stbi__errpuc("too large", "Corrupt BMP"); - - out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - if (info.bpp < 16) { - int z=0; - if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } - for (i=0; i < psize; ++i) { - pal[i][2] = stbi__get8(s); - pal[i][1] = stbi__get8(s); - pal[i][0] = stbi__get8(s); - if (info.hsz != 12) stbi__get8(s); - pal[i][3] = 255; - } - stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); - if (info.bpp == 1) width = (s->img_x + 7) >> 3; - else if (info.bpp == 4) width = (s->img_x + 1) >> 1; - else if (info.bpp == 8) width = s->img_x; - else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } - pad = (-width)&3; - if (info.bpp == 1) { - for (j=0; j < (int) s->img_y; ++j) { - int bit_offset = 7, v = stbi__get8(s); - for (i=0; i < (int) s->img_x; ++i) { - int color = (v>>bit_offset)&0x1; - out[z++] = pal[color][0]; - out[z++] = pal[color][1]; - out[z++] = pal[color][2]; - if (target == 4) out[z++] = 255; - if (i+1 == (int) s->img_x) break; - if((--bit_offset) < 0) { - bit_offset = 7; - v = stbi__get8(s); - } - } - stbi__skip(s, pad); - } - } else { - for (j=0; j < (int) s->img_y; ++j) { - for (i=0; i < (int) s->img_x; i += 2) { - int v=stbi__get8(s),v2=0; - if (info.bpp == 4) { - v2 = v & 15; - v >>= 4; - } - out[z++] = pal[v][0]; - out[z++] = pal[v][1]; - out[z++] = pal[v][2]; - if (target == 4) out[z++] = 255; - if (i+1 == (int) s->img_x) break; - v = (info.bpp == 8) ? stbi__get8(s) : v2; - out[z++] = pal[v][0]; - out[z++] = pal[v][1]; - out[z++] = pal[v][2]; - if (target == 4) out[z++] = 255; - } - stbi__skip(s, pad); - } - } - } else { - int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; - int z = 0; - int easy=0; - stbi__skip(s, info.offset - info.extra_read - info.hsz); - if (info.bpp == 24) width = 3 * s->img_x; - else if (info.bpp == 16) width = 2*s->img_x; - else /* bpp = 32 and pad = 0 */ width=0; - pad = (-width) & 3; - if (info.bpp == 24) { - easy = 1; - } else if (info.bpp == 32) { - if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) - easy = 2; - } - if (!easy) { - if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } - // right shift amt to put high bit in position #7 - rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); - gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); - bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); - ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); - if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } - } - for (j=0; j < (int) s->img_y; ++j) { - if (easy) { - for (i=0; i < (int) s->img_x; ++i) { - unsigned char a; - out[z+2] = stbi__get8(s); - out[z+1] = stbi__get8(s); - out[z+0] = stbi__get8(s); - z += 3; - a = (easy == 2 ? stbi__get8(s) : 255); - all_a |= a; - if (target == 4) out[z++] = a; - } - } else { - int bpp = info.bpp; - for (i=0; i < (int) s->img_x; ++i) { - stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); - unsigned int a; - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); - a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); - all_a |= a; - if (target == 4) out[z++] = STBI__BYTECAST(a); - } - } - stbi__skip(s, pad); - } - } - - // if alpha channel is all 0s, replace with all 255s - if (target == 4 && all_a == 0) - for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) - out[i] = 255; - - if (flip_vertically) { - stbi_uc t; - for (j=0; j < (int) s->img_y>>1; ++j) { - stbi_uc *p1 = out + j *s->img_x*target; - stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; - for (i=0; i < (int) s->img_x*target; ++i) { - t = p1[i]; p1[i] = p2[i]; p2[i] = t; - } - } - } - - if (req_comp && req_comp != target) { - out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); - if (out == NULL) return out; // stbi__convert_format frees input on failure - } - - *x = s->img_x; - *y = s->img_y; - if (comp) *comp = s->img_n; - return out; -} -#endif - -// Targa Truevision - TGA -// by Jonathan Dummer -#ifndef STBI_NO_TGA -// returns STBI_rgb or whatever, 0 on error -static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) -{ - // only RGB or RGBA (incl. 16bit) or grey allowed - if (is_rgb16) *is_rgb16 = 0; - switch(bits_per_pixel) { - case 8: return STBI_grey; - case 16: if(is_grey) return STBI_grey_alpha; - // fallthrough - case 15: if(is_rgb16) *is_rgb16 = 1; - return STBI_rgb; - case 24: // fallthrough - case 32: return bits_per_pixel/8; - default: return 0; - } -} - -static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) -{ - int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; - int sz, tga_colormap_type; - stbi__get8(s); // discard Offset - tga_colormap_type = stbi__get8(s); // colormap type - if( tga_colormap_type > 1 ) { - stbi__rewind(s); - return 0; // only RGB or indexed allowed - } - tga_image_type = stbi__get8(s); // image type - if ( tga_colormap_type == 1 ) { // colormapped (paletted) image - if (tga_image_type != 1 && tga_image_type != 9) { - stbi__rewind(s); - return 0; - } - stbi__skip(s,4); // skip index of first colormap entry and number of entries - sz = stbi__get8(s); // check bits per palette color entry - if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { - stbi__rewind(s); - return 0; - } - stbi__skip(s,4); // skip image x and y origin - tga_colormap_bpp = sz; - } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE - if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { - stbi__rewind(s); - return 0; // only RGB or grey allowed, +/- RLE - } - stbi__skip(s,9); // skip colormap specification and image x/y origin - tga_colormap_bpp = 0; - } - tga_w = stbi__get16le(s); - if( tga_w < 1 ) { - stbi__rewind(s); - return 0; // test width - } - tga_h = stbi__get16le(s); - if( tga_h < 1 ) { - stbi__rewind(s); - return 0; // test height - } - tga_bits_per_pixel = stbi__get8(s); // bits per pixel - stbi__get8(s); // ignore alpha bits - if (tga_colormap_bpp != 0) { - if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { - // when using a colormap, tga_bits_per_pixel is the size of the indexes - // I don't think anything but 8 or 16bit indexes makes sense - stbi__rewind(s); - return 0; - } - tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); - } else { - tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); - } - if(!tga_comp) { - stbi__rewind(s); - return 0; - } - if (x) *x = tga_w; - if (y) *y = tga_h; - if (comp) *comp = tga_comp; - return 1; // seems to have passed everything -} - -static int stbi__tga_test(stbi__context *s) -{ - int res = 0; - int sz, tga_color_type; - stbi__get8(s); // discard Offset - tga_color_type = stbi__get8(s); // color type - if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed - sz = stbi__get8(s); // image type - if ( tga_color_type == 1 ) { // colormapped (paletted) image - if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 - stbi__skip(s,4); // skip index of first colormap entry and number of entries - sz = stbi__get8(s); // check bits per palette color entry - if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; - stbi__skip(s,4); // skip image x and y origin - } else { // "normal" image w/o colormap - if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE - stbi__skip(s,9); // skip colormap specification and image x/y origin - } - if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width - if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height - sz = stbi__get8(s); // bits per pixel - if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index - if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; - - res = 1; // if we got this far, everything's good and we can return 1 instead of 0 - -errorEnd: - stbi__rewind(s); - return res; -} - -// read 16bit value and convert to 24bit RGB -static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) -{ - stbi__uint16 px = (stbi__uint16)stbi__get16le(s); - stbi__uint16 fiveBitMask = 31; - // we have 3 channels with 5bits each - int r = (px >> 10) & fiveBitMask; - int g = (px >> 5) & fiveBitMask; - int b = px & fiveBitMask; - // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later - out[0] = (stbi_uc)((r * 255)/31); - out[1] = (stbi_uc)((g * 255)/31); - out[2] = (stbi_uc)((b * 255)/31); - - // some people claim that the most significant bit might be used for alpha - // (possibly if an alpha-bit is set in the "image descriptor byte") - // but that only made 16bit test images completely translucent.. - // so let's treat all 15 and 16bit TGAs as RGB with no alpha. -} - -static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - // read in the TGA header stuff - int tga_offset = stbi__get8(s); - int tga_indexed = stbi__get8(s); - int tga_image_type = stbi__get8(s); - int tga_is_RLE = 0; - int tga_palette_start = stbi__get16le(s); - int tga_palette_len = stbi__get16le(s); - int tga_palette_bits = stbi__get8(s); - int tga_x_origin = stbi__get16le(s); - int tga_y_origin = stbi__get16le(s); - int tga_width = stbi__get16le(s); - int tga_height = stbi__get16le(s); - int tga_bits_per_pixel = stbi__get8(s); - int tga_comp, tga_rgb16=0; - int tga_inverted = stbi__get8(s); - // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) - // image data - unsigned char *tga_data; - unsigned char *tga_palette = NULL; - int i, j; - unsigned char raw_data[4] = {0}; - int RLE_count = 0; - int RLE_repeating = 0; - int read_next_pixel = 1; - STBI_NOTUSED(ri); - STBI_NOTUSED(tga_x_origin); // @TODO - STBI_NOTUSED(tga_y_origin); // @TODO - - if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - - // do a tiny bit of precessing - if ( tga_image_type >= 8 ) - { - tga_image_type -= 8; - tga_is_RLE = 1; - } - tga_inverted = 1 - ((tga_inverted >> 5) & 1); - - // If I'm paletted, then I'll use the number of bits from the palette - if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); - else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); - - if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency - return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); - - // tga info - *x = tga_width; - *y = tga_height; - if (comp) *comp = tga_comp; - - if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) - return stbi__errpuc("too large", "Corrupt TGA"); - - tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); - if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); - - // skip to the data's starting position (offset usually = 0) - stbi__skip(s, tga_offset ); - - if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { - for (i=0; i < tga_height; ++i) { - int row = tga_inverted ? tga_height -i - 1 : i; - stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; - stbi__getn(s, tga_row, tga_width * tga_comp); - } - } else { - // do I need to load a palette? - if ( tga_indexed) - { - if (tga_palette_len == 0) { /* you have to have at least one entry! */ - STBI_FREE(tga_data); - return stbi__errpuc("bad palette", "Corrupt TGA"); - } - - // any data to skip? (offset usually = 0) - stbi__skip(s, tga_palette_start ); - // load the palette - tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); - if (!tga_palette) { - STBI_FREE(tga_data); - return stbi__errpuc("outofmem", "Out of memory"); - } - if (tga_rgb16) { - stbi_uc *pal_entry = tga_palette; - STBI_ASSERT(tga_comp == STBI_rgb); - for (i=0; i < tga_palette_len; ++i) { - stbi__tga_read_rgb16(s, pal_entry); - pal_entry += tga_comp; - } - } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { - STBI_FREE(tga_data); - STBI_FREE(tga_palette); - return stbi__errpuc("bad palette", "Corrupt TGA"); - } - } - // load the data - for (i=0; i < tga_width * tga_height; ++i) - { - // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? - if ( tga_is_RLE ) - { - if ( RLE_count == 0 ) - { - // yep, get the next byte as a RLE command - int RLE_cmd = stbi__get8(s); - RLE_count = 1 + (RLE_cmd & 127); - RLE_repeating = RLE_cmd >> 7; - read_next_pixel = 1; - } else if ( !RLE_repeating ) - { - read_next_pixel = 1; - } - } else - { - read_next_pixel = 1; - } - // OK, if I need to read a pixel, do it now - if ( read_next_pixel ) - { - // load however much data we did have - if ( tga_indexed ) - { - // read in index, then perform the lookup - int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); - if ( pal_idx >= tga_palette_len ) { - // invalid index - pal_idx = 0; - } - pal_idx *= tga_comp; - for (j = 0; j < tga_comp; ++j) { - raw_data[j] = tga_palette[pal_idx+j]; - } - } else if(tga_rgb16) { - STBI_ASSERT(tga_comp == STBI_rgb); - stbi__tga_read_rgb16(s, raw_data); - } else { - // read in the data raw - for (j = 0; j < tga_comp; ++j) { - raw_data[j] = stbi__get8(s); - } - } - // clear the reading flag for the next pixel - read_next_pixel = 0; - } // end of reading a pixel - - // copy data - for (j = 0; j < tga_comp; ++j) - tga_data[i*tga_comp+j] = raw_data[j]; - - // in case we're in RLE mode, keep counting down - --RLE_count; - } - // do I need to invert the image? - if ( tga_inverted ) - { - for (j = 0; j*2 < tga_height; ++j) - { - int index1 = j * tga_width * tga_comp; - int index2 = (tga_height - 1 - j) * tga_width * tga_comp; - for (i = tga_width * tga_comp; i > 0; --i) - { - unsigned char temp = tga_data[index1]; - tga_data[index1] = tga_data[index2]; - tga_data[index2] = temp; - ++index1; - ++index2; - } - } - } - // clear my palette, if I had one - if ( tga_palette != NULL ) - { - STBI_FREE( tga_palette ); - } - } - - // swap RGB - if the source data was RGB16, it already is in the right order - if (tga_comp >= 3 && !tga_rgb16) - { - unsigned char* tga_pixel = tga_data; - for (i=0; i < tga_width * tga_height; ++i) - { - unsigned char temp = tga_pixel[0]; - tga_pixel[0] = tga_pixel[2]; - tga_pixel[2] = temp; - tga_pixel += tga_comp; - } - } - - // convert to target component count - if (req_comp && req_comp != tga_comp) - tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); - - // the things I do to get rid of an error message, and yet keep - // Microsoft's C compilers happy... [8^( - tga_palette_start = tga_palette_len = tga_palette_bits = - tga_x_origin = tga_y_origin = 0; - STBI_NOTUSED(tga_palette_start); - // OK, done - return tga_data; -} -#endif - -// ************************************************************************************************* -// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB - -#ifndef STBI_NO_PSD -static int stbi__psd_test(stbi__context *s) -{ - int r = (stbi__get32be(s) == 0x38425053); - stbi__rewind(s); - return r; -} - -static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) -{ - int count, nleft, len; - - count = 0; - while ((nleft = pixelCount - count) > 0) { - len = stbi__get8(s); - if (len == 128) { - // No-op. - } else if (len < 128) { - // Copy next len+1 bytes literally. - len++; - if (len > nleft) return 0; // corrupt data - count += len; - while (len) { - *p = stbi__get8(s); - p += 4; - len--; - } - } else if (len > 128) { - stbi_uc val; - // Next -len+1 bytes in the dest are replicated from next source byte. - // (Interpret len as a negative 8-bit int.) - len = 257 - len; - if (len > nleft) return 0; // corrupt data - val = stbi__get8(s); - count += len; - while (len) { - *p = val; - p += 4; - len--; - } - } - } - - return 1; -} - -static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) -{ - int pixelCount; - int channelCount, compression; - int channel, i; - int bitdepth; - int w,h; - stbi_uc *out; - STBI_NOTUSED(ri); - - // Check identifier - if (stbi__get32be(s) != 0x38425053) // "8BPS" - return stbi__errpuc("not PSD", "Corrupt PSD image"); - - // Check file type version. - if (stbi__get16be(s) != 1) - return stbi__errpuc("wrong version", "Unsupported version of PSD image"); - - // Skip 6 reserved bytes. - stbi__skip(s, 6 ); - - // Read the number of channels (R, G, B, A, etc). - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) - return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); - - // Read the rows and columns of the image. - h = stbi__get32be(s); - w = stbi__get32be(s); - - if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - - // Make sure the depth is 8 bits. - bitdepth = stbi__get16be(s); - if (bitdepth != 8 && bitdepth != 16) - return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); - - // Make sure the color mode is RGB. - // Valid options are: - // 0: Bitmap - // 1: Grayscale - // 2: Indexed color - // 3: RGB color - // 4: CMYK color - // 7: Multichannel - // 8: Duotone - // 9: Lab color - if (stbi__get16be(s) != 3) - return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); - - // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) - stbi__skip(s,stbi__get32be(s) ); - - // Skip the image resources. (resolution, pen tool paths, etc) - stbi__skip(s, stbi__get32be(s) ); - - // Skip the reserved data. - stbi__skip(s, stbi__get32be(s) ); - - // Find out if the data is compressed. - // Known values: - // 0: no compression - // 1: RLE compressed - compression = stbi__get16be(s); - if (compression > 1) - return stbi__errpuc("bad compression", "PSD has an unknown compression format"); - - // Check size - if (!stbi__mad3sizes_valid(4, w, h, 0)) - return stbi__errpuc("too large", "Corrupt PSD"); - - // Create the destination image. - - if (!compression && bitdepth == 16 && bpc == 16) { - out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); - ri->bits_per_channel = 16; - } else - out = (stbi_uc *) stbi__malloc(4 * w*h); - - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - pixelCount = w*h; - - // Initialize the data to zero. - //memset( out, 0, pixelCount * 4 ); - - // Finally, the image data. - if (compression) { - // RLE as used by .PSD and .TIFF - // Loop until you get the number of unpacked bytes you are expecting: - // Read the next source byte into n. - // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. - // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. - // Else if n is 128, noop. - // Endloop - - // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, - // which we're going to just skip. - stbi__skip(s, h * channelCount * 2 ); - - // Read the RLE data by channel. - for (channel = 0; channel < 4; channel++) { - stbi_uc *p; - - p = out+channel; - if (channel >= channelCount) { - // Fill this channel with default data. - for (i = 0; i < pixelCount; i++, p += 4) - *p = (channel == 3 ? 255 : 0); - } else { - // Read the RLE data. - if (!stbi__psd_decode_rle(s, p, pixelCount)) { - STBI_FREE(out); - return stbi__errpuc("corrupt", "bad RLE data"); - } - } - } - - } else { - // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) - // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. - - // Read the data by channel. - for (channel = 0; channel < 4; channel++) { - if (channel >= channelCount) { - // Fill this channel with default data. - if (bitdepth == 16 && bpc == 16) { - stbi__uint16 *q = ((stbi__uint16 *) out) + channel; - stbi__uint16 val = channel == 3 ? 65535 : 0; - for (i = 0; i < pixelCount; i++, q += 4) - *q = val; - } else { - stbi_uc *p = out+channel; - stbi_uc val = channel == 3 ? 255 : 0; - for (i = 0; i < pixelCount; i++, p += 4) - *p = val; - } - } else { - if (ri->bits_per_channel == 16) { // output bpc - stbi__uint16 *q = ((stbi__uint16 *) out) + channel; - for (i = 0; i < pixelCount; i++, q += 4) - *q = (stbi__uint16) stbi__get16be(s); - } else { - stbi_uc *p = out+channel; - if (bitdepth == 16) { // input bpc - for (i = 0; i < pixelCount; i++, p += 4) - *p = (stbi_uc) (stbi__get16be(s) >> 8); - } else { - for (i = 0; i < pixelCount; i++, p += 4) - *p = stbi__get8(s); - } - } - } - } - } - - // remove weird white matte from PSD - if (channelCount >= 4) { - if (ri->bits_per_channel == 16) { - for (i=0; i < w*h; ++i) { - stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; - if (pixel[3] != 0 && pixel[3] != 65535) { - float a = pixel[3] / 65535.0f; - float ra = 1.0f / a; - float inv_a = 65535.0f * (1 - ra); - pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); - pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); - pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); - } - } - } else { - for (i=0; i < w*h; ++i) { - unsigned char *pixel = out + 4*i; - if (pixel[3] != 0 && pixel[3] != 255) { - float a = pixel[3] / 255.0f; - float ra = 1.0f / a; - float inv_a = 255.0f * (1 - ra); - pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); - pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); - pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); - } - } - } - } - - // convert to desired output format - if (req_comp && req_comp != 4) { - if (ri->bits_per_channel == 16) - out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); - else - out = stbi__convert_format(out, 4, req_comp, w, h); - if (out == NULL) return out; // stbi__convert_format frees input on failure - } - - if (comp) *comp = 4; - *y = h; - *x = w; - - return out; -} -#endif - -// ************************************************************************************************* -// Softimage PIC loader -// by Tom Seddon -// -// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format -// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ - -#ifndef STBI_NO_PIC -static int stbi__pic_is4(stbi__context *s,const char *str) -{ - int i; - for (i=0; i<4; ++i) - if (stbi__get8(s) != (stbi_uc)str[i]) - return 0; - - return 1; -} - -static int stbi__pic_test_core(stbi__context *s) -{ - int i; - - if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) - return 0; - - for(i=0;i<84;++i) - stbi__get8(s); - - if (!stbi__pic_is4(s,"PICT")) - return 0; - - return 1; -} - -typedef struct -{ - stbi_uc size,type,channel; -} stbi__pic_packet; - -static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) -{ - int mask=0x80, i; - - for (i=0; i<4; ++i, mask>>=1) { - if (channel & mask) { - if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); - dest[i]=stbi__get8(s); - } - } - - return dest; -} - -static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) -{ - int mask=0x80,i; - - for (i=0;i<4; ++i, mask>>=1) - if (channel&mask) - dest[i]=src[i]; -} - -static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) -{ - int act_comp=0,num_packets=0,y,chained; - stbi__pic_packet packets[10]; - - // this will (should...) cater for even some bizarre stuff like having data - // for the same channel in multiple packets. - do { - stbi__pic_packet *packet; - - if (num_packets==sizeof(packets)/sizeof(packets[0])) - return stbi__errpuc("bad format","too many packets"); - - packet = &packets[num_packets++]; - - chained = stbi__get8(s); - packet->size = stbi__get8(s); - packet->type = stbi__get8(s); - packet->channel = stbi__get8(s); - - act_comp |= packet->channel; - - if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); - if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); - } while (chained); - - *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? - - for(y=0; ytype) { - default: - return stbi__errpuc("bad format","packet has bad compression type"); - - case 0: {//uncompressed - int x; - - for(x=0;xchannel,dest)) - return 0; - break; - } - - case 1://Pure RLE - { - int left=width, i; - - while (left>0) { - stbi_uc count,value[4]; - - count=stbi__get8(s); - if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); - - if (count > left) - count = (stbi_uc) left; - - if (!stbi__readval(s,packet->channel,value)) return 0; - - for(i=0; ichannel,dest,value); - left -= count; - } - } - break; - - case 2: {//Mixed RLE - int left=width; - while (left>0) { - int count = stbi__get8(s), i; - if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); - - if (count >= 128) { // Repeated - stbi_uc value[4]; - - if (count==128) - count = stbi__get16be(s); - else - count -= 127; - if (count > left) - return stbi__errpuc("bad file","scanline overrun"); - - if (!stbi__readval(s,packet->channel,value)) - return 0; - - for(i=0;ichannel,dest,value); - } else { // Raw - ++count; - if (count>left) return stbi__errpuc("bad file","scanline overrun"); - - for(i=0;ichannel,dest)) - return 0; - } - left-=count; - } - break; - } - } - } - } - - return result; -} - -static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) -{ - stbi_uc *result; - int i, x,y, internal_comp; - STBI_NOTUSED(ri); - - if (!comp) comp = &internal_comp; - - for (i=0; i<92; ++i) - stbi__get8(s); - - x = stbi__get16be(s); - y = stbi__get16be(s); - - if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - - if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); - if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); - - stbi__get32be(s); //skip `ratio' - stbi__get16be(s); //skip `fields' - stbi__get16be(s); //skip `pad' - - // intermediate buffer is RGBA - result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); - if (!result) return stbi__errpuc("outofmem", "Out of memory"); - memset(result, 0xff, x*y*4); - - if (!stbi__pic_load_core(s,x,y,comp, result)) { - STBI_FREE(result); - result=0; - } - *px = x; - *py = y; - if (req_comp == 0) req_comp = *comp; - result=stbi__convert_format(result,4,req_comp,x,y); - - return result; -} - -static int stbi__pic_test(stbi__context *s) -{ - int r = stbi__pic_test_core(s); - stbi__rewind(s); - return r; -} -#endif - -// ************************************************************************************************* -// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb - -#ifndef STBI_NO_GIF -typedef struct -{ - stbi__int16 prefix; - stbi_uc first; - stbi_uc suffix; -} stbi__gif_lzw; - -typedef struct -{ - int w,h; - stbi_uc *out; // output buffer (always 4 components) - stbi_uc *background; // The current "background" as far as a gif is concerned - stbi_uc *history; - int flags, bgindex, ratio, transparent, eflags; - stbi_uc pal[256][4]; - stbi_uc lpal[256][4]; - stbi__gif_lzw codes[8192]; - stbi_uc *color_table; - int parse, step; - int lflags; - int start_x, start_y; - int max_x, max_y; - int cur_x, cur_y; - int line_size; - int delay; -} stbi__gif; - -static int stbi__gif_test_raw(stbi__context *s) -{ - int sz; - if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; - sz = stbi__get8(s); - if (sz != '9' && sz != '7') return 0; - if (stbi__get8(s) != 'a') return 0; - return 1; -} - -static int stbi__gif_test(stbi__context *s) -{ - int r = stbi__gif_test_raw(s); - stbi__rewind(s); - return r; -} - -static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) -{ - int i; - for (i=0; i < num_entries; ++i) { - pal[i][2] = stbi__get8(s); - pal[i][1] = stbi__get8(s); - pal[i][0] = stbi__get8(s); - pal[i][3] = transp == i ? 0 : 255; - } -} - -static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) -{ - stbi_uc version; - if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') - return stbi__err("not GIF", "Corrupt GIF"); - - version = stbi__get8(s); - if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); - if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); - - stbi__g_failure_reason = ""; - g->w = stbi__get16le(s); - g->h = stbi__get16le(s); - g->flags = stbi__get8(s); - g->bgindex = stbi__get8(s); - g->ratio = stbi__get8(s); - g->transparent = -1; - - if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); - - if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments - - if (is_info) return 1; - - if (g->flags & 0x80) - stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); - - return 1; -} - -static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) -{ - stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); - if (!g) return stbi__err("outofmem", "Out of memory"); - if (!stbi__gif_header(s, g, comp, 1)) { - STBI_FREE(g); - stbi__rewind( s ); - return 0; - } - if (x) *x = g->w; - if (y) *y = g->h; - STBI_FREE(g); - return 1; -} - -static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) -{ - stbi_uc *p, *c; - int idx; - - // recurse to decode the prefixes, since the linked-list is backwards, - // and working backwards through an interleaved image would be nasty - if (g->codes[code].prefix >= 0) - stbi__out_gif_code(g, g->codes[code].prefix); - - if (g->cur_y >= g->max_y) return; - - idx = g->cur_x + g->cur_y; - p = &g->out[idx]; - g->history[idx / 4] = 1; - - c = &g->color_table[g->codes[code].suffix * 4]; - if (c[3] > 128) { // don't render transparent pixels; - p[0] = c[2]; - p[1] = c[1]; - p[2] = c[0]; - p[3] = c[3]; - } - g->cur_x += 4; - - if (g->cur_x >= g->max_x) { - g->cur_x = g->start_x; - g->cur_y += g->step; - - while (g->cur_y >= g->max_y && g->parse > 0) { - g->step = (1 << g->parse) * g->line_size; - g->cur_y = g->start_y + (g->step >> 1); - --g->parse; - } - } -} - -static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) -{ - stbi_uc lzw_cs; - stbi__int32 len, init_code; - stbi__uint32 first; - stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; - stbi__gif_lzw *p; - - lzw_cs = stbi__get8(s); - if (lzw_cs > 12) return NULL; - clear = 1 << lzw_cs; - first = 1; - codesize = lzw_cs + 1; - codemask = (1 << codesize) - 1; - bits = 0; - valid_bits = 0; - for (init_code = 0; init_code < clear; init_code++) { - g->codes[init_code].prefix = -1; - g->codes[init_code].first = (stbi_uc) init_code; - g->codes[init_code].suffix = (stbi_uc) init_code; - } - - // support no starting clear code - avail = clear+2; - oldcode = -1; - - len = 0; - for(;;) { - if (valid_bits < codesize) { - if (len == 0) { - len = stbi__get8(s); // start new block - if (len == 0) - return g->out; - } - --len; - bits |= (stbi__int32) stbi__get8(s) << valid_bits; - valid_bits += 8; - } else { - stbi__int32 code = bits & codemask; - bits >>= codesize; - valid_bits -= codesize; - // @OPTIMIZE: is there some way we can accelerate the non-clear path? - if (code == clear) { // clear code - codesize = lzw_cs + 1; - codemask = (1 << codesize) - 1; - avail = clear + 2; - oldcode = -1; - first = 0; - } else if (code == clear + 1) { // end of stream code - stbi__skip(s, len); - while ((len = stbi__get8(s)) > 0) - stbi__skip(s,len); - return g->out; - } else if (code <= avail) { - if (first) { - return stbi__errpuc("no clear code", "Corrupt GIF"); - } - - if (oldcode >= 0) { - p = &g->codes[avail++]; - if (avail > 8192) { - return stbi__errpuc("too many codes", "Corrupt GIF"); - } - - p->prefix = (stbi__int16) oldcode; - p->first = g->codes[oldcode].first; - p->suffix = (code == avail) ? p->first : g->codes[code].first; - } else if (code == avail) - return stbi__errpuc("illegal code in raster", "Corrupt GIF"); - - stbi__out_gif_code(g, (stbi__uint16) code); - - if ((avail & codemask) == 0 && avail <= 0x0FFF) { - codesize++; - codemask = (1 << codesize) - 1; - } - - oldcode = code; - } else { - return stbi__errpuc("illegal code in raster", "Corrupt GIF"); - } - } - } -} - -// this function is designed to support animated gifs, although stb_image doesn't support it -// two back is the image from two frames ago, used for a very specific disposal format -static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) -{ - int dispose; - int first_frame; - int pi; - int pcount; - STBI_NOTUSED(req_comp); - - // on first frame, any non-written pixels get the background colour (non-transparent) - first_frame = 0; - if (g->out == 0) { - if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header - if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) - return stbi__errpuc("too large", "GIF image is too large"); - pcount = g->w * g->h; - g->out = (stbi_uc *) stbi__malloc(4 * pcount); - g->background = (stbi_uc *) stbi__malloc(4 * pcount); - g->history = (stbi_uc *) stbi__malloc(pcount); - if (!g->out || !g->background || !g->history) - return stbi__errpuc("outofmem", "Out of memory"); - - // image is treated as "transparent" at the start - ie, nothing overwrites the current background; - // background colour is only used for pixels that are not rendered first frame, after that "background" - // color refers to the color that was there the previous frame. - memset(g->out, 0x00, 4 * pcount); - memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) - memset(g->history, 0x00, pcount); // pixels that were affected previous frame - first_frame = 1; - } else { - // second frame - how do we dispose of the previous one? - dispose = (g->eflags & 0x1C) >> 2; - pcount = g->w * g->h; - - if ((dispose == 3) && (two_back == 0)) { - dispose = 2; // if I don't have an image to revert back to, default to the old background - } - - if (dispose == 3) { // use previous graphic - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi]) { - memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); - } - } - } else if (dispose == 2) { - // restore what was changed last frame to background before that frame; - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi]) { - memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); - } - } - } else { - // This is a non-disposal case eithe way, so just - // leave the pixels as is, and they will become the new background - // 1: do not dispose - // 0: not specified. - } - - // background is what out is after the undoing of the previou frame; - memcpy( g->background, g->out, 4 * g->w * g->h ); - } - - // clear my history; - memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame - - for (;;) { - int tag = stbi__get8(s); - switch (tag) { - case 0x2C: /* Image Descriptor */ - { - stbi__int32 x, y, w, h; - stbi_uc *o; - - x = stbi__get16le(s); - y = stbi__get16le(s); - w = stbi__get16le(s); - h = stbi__get16le(s); - if (((x + w) > (g->w)) || ((y + h) > (g->h))) - return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); - - g->line_size = g->w * 4; - g->start_x = x * 4; - g->start_y = y * g->line_size; - g->max_x = g->start_x + w * 4; - g->max_y = g->start_y + h * g->line_size; - g->cur_x = g->start_x; - g->cur_y = g->start_y; - - // if the width of the specified rectangle is 0, that means - // we may not see *any* pixels or the image is malformed; - // to make sure this is caught, move the current y down to - // max_y (which is what out_gif_code checks). - if (w == 0) - g->cur_y = g->max_y; - - g->lflags = stbi__get8(s); - - if (g->lflags & 0x40) { - g->step = 8 * g->line_size; // first interlaced spacing - g->parse = 3; - } else { - g->step = g->line_size; - g->parse = 0; - } - - if (g->lflags & 0x80) { - stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); - g->color_table = (stbi_uc *) g->lpal; - } else if (g->flags & 0x80) { - g->color_table = (stbi_uc *) g->pal; - } else - return stbi__errpuc("missing color table", "Corrupt GIF"); - - o = stbi__process_gif_raster(s, g); - if (!o) return NULL; - - // if this was the first frame, - pcount = g->w * g->h; - if (first_frame && (g->bgindex > 0)) { - // if first frame, any pixel not drawn to gets the background color - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi] == 0) { - g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; - memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); - } - } - } - - return o; - } - - case 0x21: // Comment Extension. - { - int len; - int ext = stbi__get8(s); - if (ext == 0xF9) { // Graphic Control Extension. - len = stbi__get8(s); - if (len == 4) { - g->eflags = stbi__get8(s); - g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. - - // unset old transparent - if (g->transparent >= 0) { - g->pal[g->transparent][3] = 255; - } - if (g->eflags & 0x01) { - g->transparent = stbi__get8(s); - if (g->transparent >= 0) { - g->pal[g->transparent][3] = 0; - } - } else { - // don't need transparent - stbi__skip(s, 1); - g->transparent = -1; - } - } else { - stbi__skip(s, len); - break; - } - } - while ((len = stbi__get8(s)) != 0) { - stbi__skip(s, len); - } - break; - } - - case 0x3B: // gif stream termination code - return (stbi_uc *) s; // using '1' causes warning on some compilers - - default: - return stbi__errpuc("unknown code", "Corrupt GIF"); - } - } -} - -static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) -{ - STBI_FREE(g->out); - STBI_FREE(g->history); - STBI_FREE(g->background); - - if (out) STBI_FREE(out); - if (delays && *delays) STBI_FREE(*delays); - return stbi__errpuc("outofmem", "Out of memory"); -} - -static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) -{ - if (stbi__gif_test(s)) { - int layers = 0; - stbi_uc *u = 0; - stbi_uc *out = 0; - stbi_uc *two_back = 0; - stbi__gif g; - int stride; - int out_size = 0; - int delays_size = 0; - - STBI_NOTUSED(out_size); - STBI_NOTUSED(delays_size); - - memset(&g, 0, sizeof(g)); - if (delays) { - *delays = 0; - } - - do { - u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); - if (u == (stbi_uc *) s) u = 0; // end of animated gif marker - - if (u) { - *x = g.w; - *y = g.h; - ++layers; - stride = g.w * g.h * 4; - - if (out) { - void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); - if (!tmp) - return stbi__load_gif_main_outofmem(&g, out, delays); - else { - out = (stbi_uc*) tmp; - out_size = layers * stride; - } - - if (delays) { - int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); - if (!new_delays) - return stbi__load_gif_main_outofmem(&g, out, delays); - *delays = new_delays; - delays_size = layers * sizeof(int); - } - } else { - out = (stbi_uc*)stbi__malloc( layers * stride ); - if (!out) - return stbi__load_gif_main_outofmem(&g, out, delays); - out_size = layers * stride; - if (delays) { - *delays = (int*) stbi__malloc( layers * sizeof(int) ); - if (!*delays) - return stbi__load_gif_main_outofmem(&g, out, delays); - delays_size = layers * sizeof(int); - } - } - memcpy( out + ((layers - 1) * stride), u, stride ); - if (layers >= 2) { - two_back = out - 2 * stride; - } - - if (delays) { - (*delays)[layers - 1U] = g.delay; - } - } - } while (u != 0); - - // free temp buffer; - STBI_FREE(g.out); - STBI_FREE(g.history); - STBI_FREE(g.background); - - // do the final conversion after loading everything; - if (req_comp && req_comp != 4) - out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); - - *z = layers; - return out; - } else { - return stbi__errpuc("not GIF", "Image was not as a gif type."); - } -} - -static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - stbi_uc *u = 0; - stbi__gif g; - memset(&g, 0, sizeof(g)); - STBI_NOTUSED(ri); - - u = stbi__gif_load_next(s, &g, comp, req_comp, 0); - if (u == (stbi_uc *) s) u = 0; // end of animated gif marker - if (u) { - *x = g.w; - *y = g.h; - - // moved conversion to after successful load so that the same - // can be done for multiple frames. - if (req_comp && req_comp != 4) - u = stbi__convert_format(u, 4, req_comp, g.w, g.h); - } else if (g.out) { - // if there was an error and we allocated an image buffer, free it! - STBI_FREE(g.out); - } - - // free buffers needed for multiple frame loading; - STBI_FREE(g.history); - STBI_FREE(g.background); - - return u; -} - -static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) -{ - return stbi__gif_info_raw(s,x,y,comp); -} -#endif - -// ************************************************************************************************* -// Radiance RGBE HDR loader -// originally by Nicolas Schulz -#ifndef STBI_NO_HDR -static int stbi__hdr_test_core(stbi__context *s, const char *signature) -{ - int i; - for (i=0; signature[i]; ++i) - if (stbi__get8(s) != signature[i]) - return 0; - stbi__rewind(s); - return 1; -} - -static int stbi__hdr_test(stbi__context* s) -{ - int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); - stbi__rewind(s); - if(!r) { - r = stbi__hdr_test_core(s, "#?RGBE\n"); - stbi__rewind(s); - } - return r; -} - -#define STBI__HDR_BUFLEN 1024 -static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) -{ - int len=0; - char c = '\0'; - - c = (char) stbi__get8(z); - - while (!stbi__at_eof(z) && c != '\n') { - buffer[len++] = c; - if (len == STBI__HDR_BUFLEN-1) { - // flush to end of line - while (!stbi__at_eof(z) && stbi__get8(z) != '\n') - ; - break; - } - c = (char) stbi__get8(z); - } - - buffer[len] = 0; - return buffer; -} - -static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) -{ - if ( input[3] != 0 ) { - float f1; - // Exponent - f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); - if (req_comp <= 2) - output[0] = (input[0] + input[1] + input[2]) * f1 / 3; - else { - output[0] = input[0] * f1; - output[1] = input[1] * f1; - output[2] = input[2] * f1; - } - if (req_comp == 2) output[1] = 1; - if (req_comp == 4) output[3] = 1; - } else { - switch (req_comp) { - case 4: output[3] = 1; /* fallthrough */ - case 3: output[0] = output[1] = output[2] = 0; - break; - case 2: output[1] = 1; /* fallthrough */ - case 1: output[0] = 0; - break; - } - } -} - -static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - char buffer[STBI__HDR_BUFLEN]; - char *token; - int valid = 0; - int width, height; - stbi_uc *scanline; - float *hdr_data; - int len; - unsigned char count, value; - int i, j, k, c1,c2, z; - const char *headerToken; - STBI_NOTUSED(ri); - - // Check identifier - headerToken = stbi__hdr_gettoken(s,buffer); - if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) - return stbi__errpf("not HDR", "Corrupt HDR image"); - - // Parse header - for(;;) { - token = stbi__hdr_gettoken(s,buffer); - if (token[0] == 0) break; - if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; - } - - if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); - - // Parse width and height - // can't use sscanf() if we're not using stdio! - token = stbi__hdr_gettoken(s,buffer); - if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); - token += 3; - height = (int) strtol(token, &token, 10); - while (*token == ' ') ++token; - if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); - token += 3; - width = (int) strtol(token, NULL, 10); - - if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); - if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); - - *x = width; - *y = height; - - if (comp) *comp = 3; - if (req_comp == 0) req_comp = 3; - - if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) - return stbi__errpf("too large", "HDR image is too large"); - - // Read data - hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); - if (!hdr_data) - return stbi__errpf("outofmem", "Out of memory"); - - // Load image data - // image data is stored as some number of sca - if ( width < 8 || width >= 32768) { - // Read flat data - for (j=0; j < height; ++j) { - for (i=0; i < width; ++i) { - stbi_uc rgbe[4]; - main_decode_loop: - stbi__getn(s, rgbe, 4); - stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); - } - } - } else { - // Read RLE-encoded data - scanline = NULL; - - for (j = 0; j < height; ++j) { - c1 = stbi__get8(s); - c2 = stbi__get8(s); - len = stbi__get8(s); - if (c1 != 2 || c2 != 2 || (len & 0x80)) { - // not run-length encoded, so we have to actually use THIS data as a decoded - // pixel (note this can't be a valid pixel--one of RGB must be >= 128) - stbi_uc rgbe[4]; - rgbe[0] = (stbi_uc) c1; - rgbe[1] = (stbi_uc) c2; - rgbe[2] = (stbi_uc) len; - rgbe[3] = (stbi_uc) stbi__get8(s); - stbi__hdr_convert(hdr_data, rgbe, req_comp); - i = 1; - j = 0; - STBI_FREE(scanline); - goto main_decode_loop; // yes, this makes no sense - } - len <<= 8; - len |= stbi__get8(s); - if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } - if (scanline == NULL) { - scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); - if (!scanline) { - STBI_FREE(hdr_data); - return stbi__errpf("outofmem", "Out of memory"); - } - } - - for (k = 0; k < 4; ++k) { - int nleft; - i = 0; - while ((nleft = width - i) > 0) { - count = stbi__get8(s); - if (count > 128) { - // Run - value = stbi__get8(s); - count -= 128; - if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } - for (z = 0; z < count; ++z) - scanline[i++ * 4 + k] = value; - } else { - // Dump - if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } - for (z = 0; z < count; ++z) - scanline[i++ * 4 + k] = stbi__get8(s); - } - } - } - for (i=0; i < width; ++i) - stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); - } - if (scanline) - STBI_FREE(scanline); - } - - return hdr_data; -} - -static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) -{ - char buffer[STBI__HDR_BUFLEN]; - char *token; - int valid = 0; - int dummy; - - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - - if (stbi__hdr_test(s) == 0) { - stbi__rewind( s ); - return 0; - } - - for(;;) { - token = stbi__hdr_gettoken(s,buffer); - if (token[0] == 0) break; - if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; - } - - if (!valid) { - stbi__rewind( s ); - return 0; - } - token = stbi__hdr_gettoken(s,buffer); - if (strncmp(token, "-Y ", 3)) { - stbi__rewind( s ); - return 0; - } - token += 3; - *y = (int) strtol(token, &token, 10); - while (*token == ' ') ++token; - if (strncmp(token, "+X ", 3)) { - stbi__rewind( s ); - return 0; - } - token += 3; - *x = (int) strtol(token, NULL, 10); - *comp = 3; - return 1; -} -#endif // STBI_NO_HDR - -#ifndef STBI_NO_BMP -static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) -{ - void *p; - stbi__bmp_data info; - - info.all_a = 255; - p = stbi__bmp_parse_header(s, &info); - if (p == NULL) { - stbi__rewind( s ); - return 0; - } - if (x) *x = s->img_x; - if (y) *y = s->img_y; - if (comp) { - if (info.bpp == 24 && info.ma == 0xff000000) - *comp = 3; - else - *comp = info.ma ? 4 : 3; - } - return 1; -} -#endif - -#ifndef STBI_NO_PSD -static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) -{ - int channelCount, dummy, depth; - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - if (stbi__get32be(s) != 0x38425053) { - stbi__rewind( s ); - return 0; - } - if (stbi__get16be(s) != 1) { - stbi__rewind( s ); - return 0; - } - stbi__skip(s, 6); - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) { - stbi__rewind( s ); - return 0; - } - *y = stbi__get32be(s); - *x = stbi__get32be(s); - depth = stbi__get16be(s); - if (depth != 8 && depth != 16) { - stbi__rewind( s ); - return 0; - } - if (stbi__get16be(s) != 3) { - stbi__rewind( s ); - return 0; - } - *comp = 4; - return 1; -} - -static int stbi__psd_is16(stbi__context *s) -{ - int channelCount, depth; - if (stbi__get32be(s) != 0x38425053) { - stbi__rewind( s ); - return 0; - } - if (stbi__get16be(s) != 1) { - stbi__rewind( s ); - return 0; - } - stbi__skip(s, 6); - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) { - stbi__rewind( s ); - return 0; - } - STBI_NOTUSED(stbi__get32be(s)); - STBI_NOTUSED(stbi__get32be(s)); - depth = stbi__get16be(s); - if (depth != 16) { - stbi__rewind( s ); - return 0; - } - return 1; -} -#endif - -#ifndef STBI_NO_PIC -static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) -{ - int act_comp=0,num_packets=0,chained,dummy; - stbi__pic_packet packets[10]; - - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - - if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { - stbi__rewind(s); - return 0; - } - - stbi__skip(s, 88); - - *x = stbi__get16be(s); - *y = stbi__get16be(s); - if (stbi__at_eof(s)) { - stbi__rewind( s); - return 0; - } - if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { - stbi__rewind( s ); - return 0; - } - - stbi__skip(s, 8); - - do { - stbi__pic_packet *packet; - - if (num_packets==sizeof(packets)/sizeof(packets[0])) - return 0; - - packet = &packets[num_packets++]; - chained = stbi__get8(s); - packet->size = stbi__get8(s); - packet->type = stbi__get8(s); - packet->channel = stbi__get8(s); - act_comp |= packet->channel; - - if (stbi__at_eof(s)) { - stbi__rewind( s ); - return 0; - } - if (packet->size != 8) { - stbi__rewind( s ); - return 0; - } - } while (chained); - - *comp = (act_comp & 0x10 ? 4 : 3); - - return 1; -} -#endif - -// ************************************************************************************************* -// Portable Gray Map and Portable Pixel Map loader -// by Ken Miller -// -// PGM: http://netpbm.sourceforge.net/doc/pgm.html -// PPM: http://netpbm.sourceforge.net/doc/ppm.html -// -// Known limitations: -// Does not support comments in the header section -// Does not support ASCII image data (formats P2 and P3) - -#ifndef STBI_NO_PNM - -static int stbi__pnm_test(stbi__context *s) -{ - char p, t; - p = (char) stbi__get8(s); - t = (char) stbi__get8(s); - if (p != 'P' || (t != '5' && t != '6')) { - stbi__rewind( s ); - return 0; - } - return 1; -} - -static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) -{ - stbi_uc *out; - STBI_NOTUSED(ri); - - ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); - if (ri->bits_per_channel == 0) - return 0; - - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); - - *x = s->img_x; - *y = s->img_y; - if (comp) *comp = s->img_n; - - if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) - return stbi__errpuc("too large", "PNM too large"); - - out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8)); - - if (req_comp && req_comp != s->img_n) { - out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); - if (out == NULL) return out; // stbi__convert_format frees input on failure - } - return out; -} - -static int stbi__pnm_isspace(char c) -{ - return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; -} - -static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) -{ - for (;;) { - while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) - *c = (char) stbi__get8(s); - - if (stbi__at_eof(s) || *c != '#') - break; - - while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) - *c = (char) stbi__get8(s); - } -} - -static int stbi__pnm_isdigit(char c) -{ - return c >= '0' && c <= '9'; -} - -static int stbi__pnm_getinteger(stbi__context *s, char *c) -{ - int value = 0; - - while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { - value = value*10 + (*c - '0'); - *c = (char) stbi__get8(s); - } - - return value; -} - -static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) -{ - int maxv, dummy; - char c, p, t; - - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - - stbi__rewind(s); - - // Get identifier - p = (char) stbi__get8(s); - t = (char) stbi__get8(s); - if (p != 'P' || (t != '5' && t != '6')) { - stbi__rewind(s); - return 0; - } - - *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm - - c = (char) stbi__get8(s); - stbi__pnm_skip_whitespace(s, &c); - - *x = stbi__pnm_getinteger(s, &c); // read width - stbi__pnm_skip_whitespace(s, &c); - - *y = stbi__pnm_getinteger(s, &c); // read height - stbi__pnm_skip_whitespace(s, &c); - - maxv = stbi__pnm_getinteger(s, &c); // read max value - if (maxv > 65535) - return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); - else if (maxv > 255) - return 16; - else - return 8; -} - -static int stbi__pnm_is16(stbi__context *s) -{ - if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) - return 1; - return 0; -} -#endif - -static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) -{ - #ifndef STBI_NO_JPEG - if (stbi__jpeg_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_PNG - if (stbi__png_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_GIF - if (stbi__gif_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_BMP - if (stbi__bmp_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_PSD - if (stbi__psd_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_PIC - if (stbi__pic_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_PNM - if (stbi__pnm_info(s, x, y, comp)) return 1; - #endif - - #ifndef STBI_NO_HDR - if (stbi__hdr_info(s, x, y, comp)) return 1; - #endif - - // test tga last because it's a crappy test! - #ifndef STBI_NO_TGA - if (stbi__tga_info(s, x, y, comp)) - return 1; - #endif - return stbi__err("unknown image type", "Image not of any known type, or corrupt"); -} - -static int stbi__is_16_main(stbi__context *s) -{ - #ifndef STBI_NO_PNG - if (stbi__png_is16(s)) return 1; - #endif - - #ifndef STBI_NO_PSD - if (stbi__psd_is16(s)) return 1; - #endif - - #ifndef STBI_NO_PNM - if (stbi__pnm_is16(s)) return 1; - #endif - return 0; -} - -#ifndef STBI_NO_STDIO -STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) -{ - FILE *f = stbi__fopen(filename, "rb"); - int result; - if (!f) return stbi__err("can't fopen", "Unable to open file"); - result = stbi_info_from_file(f, x, y, comp); - fclose(f); - return result; -} - -STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) -{ - int r; - stbi__context s; - long pos = ftell(f); - stbi__start_file(&s, f); - r = stbi__info_main(&s,x,y,comp); - fseek(f,pos,SEEK_SET); - return r; -} - -STBIDEF int stbi_is_16_bit(char const *filename) -{ - FILE *f = stbi__fopen(filename, "rb"); - int result; - if (!f) return stbi__err("can't fopen", "Unable to open file"); - result = stbi_is_16_bit_from_file(f); - fclose(f); - return result; -} - -STBIDEF int stbi_is_16_bit_from_file(FILE *f) -{ - int r; - stbi__context s; - long pos = ftell(f); - stbi__start_file(&s, f); - r = stbi__is_16_main(&s); - fseek(f,pos,SEEK_SET); - return r; -} -#endif // !STBI_NO_STDIO - -STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) -{ - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__info_main(&s,x,y,comp); -} - -STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) -{ - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); - return stbi__info_main(&s,x,y,comp); -} - -STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) -{ - stbi__context s; - stbi__start_mem(&s,buffer,len); - return stbi__is_16_main(&s); -} - -STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) -{ - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); - return stbi__is_16_main(&s); -} - -#endif // STB_IMAGE_IMPLEMENTATION - -/* - revision history: - 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs - 2.19 (2018-02-11) fix warning - 2.18 (2018-01-30) fix warnings - 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug - 1-bit BMP - *_is_16_bit api - avoid warnings - 2.16 (2017-07-23) all functions have 16-bit variants; - STBI_NO_STDIO works again; - compilation fixes; - fix rounding in unpremultiply; - optimize vertical flip; - disable raw_len validation; - documentation fixes - 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; - warning fixes; disable run-time SSE detection on gcc; - uniform handling of optional "return" values; - thread-safe initialization of zlib tables - 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs - 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now - 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes - 2.11 (2016-04-02) allocate large structures on the stack - remove white matting for transparent PSD - fix reported channel count for PNG & BMP - re-enable SSE2 in non-gcc 64-bit - support RGB-formatted JPEG - read 16-bit PNGs (only as 8-bit) - 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED - 2.09 (2016-01-16) allow comments in PNM files - 16-bit-per-pixel TGA (not bit-per-component) - info() for TGA could break due to .hdr handling - info() for BMP to shares code instead of sloppy parse - can use STBI_REALLOC_SIZED if allocator doesn't support realloc - code cleanup - 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA - 2.07 (2015-09-13) fix compiler warnings - partial animated GIF support - limited 16-bpc PSD support - #ifdef unused functions - bug with < 92 byte PIC,PNM,HDR,TGA - 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value - 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning - 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit - 2.03 (2015-04-12) extra corruption checking (mmozeiko) - stbi_set_flip_vertically_on_load (nguillemot) - fix NEON support; fix mingw support - 2.02 (2015-01-19) fix incorrect assert, fix warning - 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 - 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG - 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) - progressive JPEG (stb) - PGM/PPM support (Ken Miller) - STBI_MALLOC,STBI_REALLOC,STBI_FREE - GIF bugfix -- seemingly never worked - STBI_NO_*, STBI_ONLY_* - 1.48 (2014-12-14) fix incorrectly-named assert() - 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) - optimize PNG (ryg) - fix bug in interlaced PNG with user-specified channel count (stb) - 1.46 (2014-08-26) - fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG - 1.45 (2014-08-16) - fix MSVC-ARM internal compiler error by wrapping malloc - 1.44 (2014-08-07) - various warning fixes from Ronny Chevalier - 1.43 (2014-07-15) - fix MSVC-only compiler problem in code changed in 1.42 - 1.42 (2014-07-09) - don't define _CRT_SECURE_NO_WARNINGS (affects user code) - fixes to stbi__cleanup_jpeg path - added STBI_ASSERT to avoid requiring assert.h - 1.41 (2014-06-25) - fix search&replace from 1.36 that messed up comments/error messages - 1.40 (2014-06-22) - fix gcc struct-initialization warning - 1.39 (2014-06-15) - fix to TGA optimization when req_comp != number of components in TGA; - fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) - add support for BMP version 5 (more ignored fields) - 1.38 (2014-06-06) - suppress MSVC warnings on integer casts truncating values - fix accidental rename of 'skip' field of I/O - 1.37 (2014-06-04) - remove duplicate typedef - 1.36 (2014-06-03) - convert to header file single-file library - if de-iphone isn't set, load iphone images color-swapped instead of returning NULL - 1.35 (2014-05-27) - various warnings - fix broken STBI_SIMD path - fix bug where stbi_load_from_file no longer left file pointer in correct place - fix broken non-easy path for 32-bit BMP (possibly never used) - TGA optimization by Arseny Kapoulkine - 1.34 (unknown) - use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case - 1.33 (2011-07-14) - make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements - 1.32 (2011-07-13) - support for "info" function for all supported filetypes (SpartanJ) - 1.31 (2011-06-20) - a few more leak fixes, bug in PNG handling (SpartanJ) - 1.30 (2011-06-11) - added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) - removed deprecated format-specific test/load functions - removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway - error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) - fix inefficiency in decoding 32-bit BMP (David Woo) - 1.29 (2010-08-16) - various warning fixes from Aurelien Pocheville - 1.28 (2010-08-01) - fix bug in GIF palette transparency (SpartanJ) - 1.27 (2010-08-01) - cast-to-stbi_uc to fix warnings - 1.26 (2010-07-24) - fix bug in file buffering for PNG reported by SpartanJ - 1.25 (2010-07-17) - refix trans_data warning (Won Chun) - 1.24 (2010-07-12) - perf improvements reading from files on platforms with lock-heavy fgetc() - minor perf improvements for jpeg - deprecated type-specific functions so we'll get feedback if they're needed - attempt to fix trans_data warning (Won Chun) - 1.23 fixed bug in iPhone support - 1.22 (2010-07-10) - removed image *writing* support - stbi_info support from Jetro Lauha - GIF support from Jean-Marc Lienher - iPhone PNG-extensions from James Brown - warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) - 1.21 fix use of 'stbi_uc' in header (reported by jon blow) - 1.20 added support for Softimage PIC, by Tom Seddon - 1.19 bug in interlaced PNG corruption check (found by ryg) - 1.18 (2008-08-02) - fix a threading bug (local mutable static) - 1.17 support interlaced PNG - 1.16 major bugfix - stbi__convert_format converted one too many pixels - 1.15 initialize some fields for thread safety - 1.14 fix threadsafe conversion bug - header-file-only version (#define STBI_HEADER_FILE_ONLY before including) - 1.13 threadsafe - 1.12 const qualifiers in the API - 1.11 Support installable IDCT, colorspace conversion routines - 1.10 Fixes for 64-bit (don't use "unsigned long") - optimized upsampling by Fabian "ryg" Giesen - 1.09 Fix format-conversion for PSD code (bad global variables!) - 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz - 1.07 attempt to fix C++ warning/errors again - 1.06 attempt to fix C++ warning/errors again - 1.05 fix TGA loading to return correct *comp and use good luminance calc - 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free - 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR - 1.02 support for (subset of) HDR files, float interface for preferred access to them - 1.01 fix bug: possible bug in handling right-side up bmps... not sure - fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all - 1.00 interface to zlib that skips zlib header - 0.99 correct handling of alpha in palette - 0.98 TGA loader by lonesock; dynamically add loaders (untested) - 0.97 jpeg errors on too large a file; also catch another malloc failure - 0.96 fix detection of invalid v value - particleman@mollyrocket forum - 0.95 during header scan, seek to markers in case of padding - 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same - 0.93 handle jpegtran output; verbose errors - 0.92 read 4,8,16,24,32-bit BMP files of several formats - 0.91 output 24-bit Windows 3.0 BMP files - 0.90 fix a few more warnings; bump version number to approach 1.0 - 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd - 0.60 fix compiling as c++ - 0.59 fix warnings: merge Dave Moore's -Wall fixes - 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian - 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available - 0.56 fix bug: zlib uncompressed mode len vs. nlen - 0.55 fix bug: restart_interval not initialized to 0 - 0.54 allow NULL for 'int *comp' - 0.53 fix bug in png 3->4; speedup png decoding - 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments - 0.51 obey req_comp requests, 1-component jpegs return as 1-component, - on 'test' only check type, not whether we support this variant - 0.50 (2006-11-19) - first released version -*/ - - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright (c) 2017 Sean Barrett -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain (www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non-commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors. We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ diff --git a/third_party/stb/stb_image_write.h b/third_party/stb/stb_image_write.h deleted file mode 100644 index e4b32ed1..00000000 --- a/third_party/stb/stb_image_write.h +++ /dev/null @@ -1,1724 +0,0 @@ -/* stb_image_write - v1.16 - public domain - http://nothings.org/stb - writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 - no warranty implied; use at your own risk - - Before #including, - - #define STB_IMAGE_WRITE_IMPLEMENTATION - - in the file that you want to have the implementation. - - Will probably not work correctly with strict-aliasing optimizations. - -ABOUT: - - This header file is a library for writing images to C stdio or a callback. - - The PNG output is not optimal; it is 20-50% larger than the file - written by a decent optimizing implementation; though providing a custom - zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. - This library is designed for source code compactness and simplicity, - not optimal image file size or run-time performance. - -BUILDING: - - You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. - You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace - malloc,realloc,free. - You can #define STBIW_MEMMOVE() to replace memmove() - You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function - for PNG compression (instead of the builtin one), it must have the following signature: - unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); - The returned data will be freed with STBIW_FREE() (free() by default), - so it must be heap allocated with STBIW_MALLOC() (malloc() by default), - -UNICODE: - - If compiling for Windows and you wish to use Unicode filenames, compile - with - #define STBIW_WINDOWS_UTF8 - and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert - Windows wchar_t filenames to utf8. - -USAGE: - - There are five functions, one for each image file format: - - int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); - int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); - int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); - int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); - int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); - - void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically - - There are also five equivalent functions that use an arbitrary write function. You are - expected to open/close your file-equivalent before and after calling these: - - int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); - int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); - int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); - int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); - int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); - - where the callback is: - void stbi_write_func(void *context, void *data, int size); - - You can configure it with these global variables: - int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE - int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression - int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode - - - You can define STBI_WRITE_NO_STDIO to disable the file variant of these - functions, so the library will not use stdio.h at all. However, this will - also disable HDR writing, because it requires stdio for formatted output. - - Each function returns 0 on failure and non-0 on success. - - The functions create an image file defined by the parameters. The image - is a rectangle of pixels stored from left-to-right, top-to-bottom. - Each pixel contains 'comp' channels of data stored interleaved with 8-bits - per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is - monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. - The *data pointer points to the first byte of the top-left-most pixel. - For PNG, "stride_in_bytes" is the distance in bytes from the first byte of - a row of pixels to the first byte of the next row of pixels. - - PNG creates output files with the same number of components as the input. - The BMP format expands Y to RGB in the file format and does not - output alpha. - - PNG supports writing rectangles of data even when the bytes storing rows of - data are not consecutive in memory (e.g. sub-rectangles of a larger image), - by supplying the stride between the beginning of adjacent rows. The other - formats do not. (Thus you cannot write a native-format BMP through the BMP - writer, both because it is in BGR order and because it may have padding - at the end of the line.) - - PNG allows you to set the deflate compression level by setting the global - variable 'stbi_write_png_compression_level' (it defaults to 8). - - HDR expects linear float data. Since the format is always 32-bit rgb(e) - data, alpha (if provided) is discarded, and for monochrome data it is - replicated across all three channels. - - TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed - data, set the global variable 'stbi_write_tga_with_rle' to 0. - - JPEG does ignore alpha channels in input data; quality is between 1 and 100. - Higher quality looks better but results in a bigger image. - JPEG baseline (no JPEG progressive). - -CREDITS: - - - Sean Barrett - PNG/BMP/TGA - Baldur Karlsson - HDR - Jean-Sebastien Guay - TGA monochrome - Tim Kelsey - misc enhancements - Alan Hickman - TGA RLE - Emmanuel Julien - initial file IO callback implementation - Jon Olick - original jo_jpeg.cpp code - Daniel Gibson - integrate JPEG, allow external zlib - Aarni Koskela - allow choosing PNG filter - - bugfixes: - github:Chribba - Guillaume Chereau - github:jry2 - github:romigrou - Sergio Gonzalez - Jonas Karlsson - Filip Wasil - Thatcher Ulrich - github:poppolopoppo - Patrick Boettcher - github:xeekworx - Cap Petschulat - Simon Rodriguez - Ivan Tikhonov - github:ignotion - Adam Schackart - Andrew Kensler - -LICENSE - - See end of file for license information. - -*/ - -#ifndef INCLUDE_STB_IMAGE_WRITE_H -#define INCLUDE_STB_IMAGE_WRITE_H - -#include - -// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' -#ifndef STBIWDEF -#ifdef STB_IMAGE_WRITE_STATIC -#define STBIWDEF static -#else -#ifdef __cplusplus -#define STBIWDEF extern "C" -#else -#define STBIWDEF extern -#endif -#endif -#endif - -#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations -STBIWDEF int stbi_write_tga_with_rle; -STBIWDEF int stbi_write_png_compression_level; -STBIWDEF int stbi_write_force_png_filter; -#endif - -#ifndef STBI_WRITE_NO_STDIO -STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); -STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); -STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); -STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); -STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); - -#ifdef STBIW_WINDOWS_UTF8 -STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); -#endif -#endif - -typedef void stbi_write_func(void *context, void *data, int size); - -STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); -STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); -STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); -STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); -STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); - -STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); - -#endif//INCLUDE_STB_IMAGE_WRITE_H - -#ifdef STB_IMAGE_WRITE_IMPLEMENTATION - -#ifdef _WIN32 - #ifndef _CRT_SECURE_NO_WARNINGS - #define _CRT_SECURE_NO_WARNINGS - #endif - #ifndef _CRT_NONSTDC_NO_DEPRECATE - #define _CRT_NONSTDC_NO_DEPRECATE - #endif -#endif - -#ifndef STBI_WRITE_NO_STDIO -#include -#endif // STBI_WRITE_NO_STDIO - -#include -#include -#include -#include - -#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) -// ok -#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) -// ok -#else -#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." -#endif - -#ifndef STBIW_MALLOC -#define STBIW_MALLOC(sz) malloc(sz) -#define STBIW_REALLOC(p,newsz) realloc(p,newsz) -#define STBIW_FREE(p) free(p) -#endif - -#ifndef STBIW_REALLOC_SIZED -#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) -#endif - - -#ifndef STBIW_MEMMOVE -#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) -#endif - - -#ifndef STBIW_ASSERT -#include -#define STBIW_ASSERT(x) assert(x) -#endif - -#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) - -#ifdef STB_IMAGE_WRITE_STATIC -static int stbi_write_png_compression_level = 8; -static int stbi_write_tga_with_rle = 1; -static int stbi_write_force_png_filter = -1; -#else -int stbi_write_png_compression_level = 8; -int stbi_write_tga_with_rle = 1; -int stbi_write_force_png_filter = -1; -#endif - -static int stbi__flip_vertically_on_write = 0; - -STBIWDEF void stbi_flip_vertically_on_write(int flag) -{ - stbi__flip_vertically_on_write = flag; -} - -typedef struct -{ - stbi_write_func *func; - void *context; - unsigned char buffer[64]; - int buf_used; -} stbi__write_context; - -// initialize a callback-based context -static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) -{ - s->func = c; - s->context = context; -} - -#ifndef STBI_WRITE_NO_STDIO - -static void stbi__stdio_write(void *context, void *data, int size) -{ - fwrite(data,1,size,(FILE*) context); -} - -#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) -#ifdef __cplusplus -#define STBIW_EXTERN extern "C" -#else -#define STBIW_EXTERN extern -#endif -STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); -STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); - -STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) -{ - return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); -} -#endif - -static FILE *stbiw__fopen(char const *filename, char const *mode) -{ - FILE *f; -#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) - wchar_t wMode[64]; - wchar_t wFilename[1024]; - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) - return 0; - - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) - return 0; - -#if defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != _wfopen_s(&f, wFilename, wMode)) - f = 0; -#else - f = _wfopen(wFilename, wMode); -#endif - -#elif defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != fopen_s(&f, filename, mode)) - f=0; -#else - f = fopen(filename, mode); -#endif - return f; -} - -static int stbi__start_write_file(stbi__write_context *s, const char *filename) -{ - FILE *f = stbiw__fopen(filename, "wb"); - stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); - return f != NULL; -} - -static void stbi__end_write_file(stbi__write_context *s) -{ - fclose((FILE *)s->context); -} - -#endif // !STBI_WRITE_NO_STDIO - -typedef unsigned int stbiw_uint32; -typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; - -static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) -{ - while (*fmt) { - switch (*fmt++) { - case ' ': break; - case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); - s->func(s->context,&x,1); - break; } - case '2': { int x = va_arg(v,int); - unsigned char b[2]; - b[0] = STBIW_UCHAR(x); - b[1] = STBIW_UCHAR(x>>8); - s->func(s->context,b,2); - break; } - case '4': { stbiw_uint32 x = va_arg(v,int); - unsigned char b[4]; - b[0]=STBIW_UCHAR(x); - b[1]=STBIW_UCHAR(x>>8); - b[2]=STBIW_UCHAR(x>>16); - b[3]=STBIW_UCHAR(x>>24); - s->func(s->context,b,4); - break; } - default: - STBIW_ASSERT(0); - return; - } - } -} - -static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) -{ - va_list v; - va_start(v, fmt); - stbiw__writefv(s, fmt, v); - va_end(v); -} - -static void stbiw__write_flush(stbi__write_context *s) -{ - if (s->buf_used) { - s->func(s->context, &s->buffer, s->buf_used); - s->buf_used = 0; - } -} - -static void stbiw__putc(stbi__write_context *s, unsigned char c) -{ - s->func(s->context, &c, 1); -} - -static void stbiw__write1(stbi__write_context *s, unsigned char a) -{ - if ((size_t)s->buf_used + 1 > sizeof(s->buffer)) - stbiw__write_flush(s); - s->buffer[s->buf_used++] = a; -} - -static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) -{ - int n; - if ((size_t)s->buf_used + 3 > sizeof(s->buffer)) - stbiw__write_flush(s); - n = s->buf_used; - s->buf_used = n+3; - s->buffer[n+0] = a; - s->buffer[n+1] = b; - s->buffer[n+2] = c; -} - -static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) -{ - unsigned char bg[3] = { 255, 0, 255}, px[3]; - int k; - - if (write_alpha < 0) - stbiw__write1(s, d[comp - 1]); - - switch (comp) { - case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case - case 1: - if (expand_mono) - stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp - else - stbiw__write1(s, d[0]); // monochrome TGA - break; - case 4: - if (!write_alpha) { - // composite against pink background - for (k = 0; k < 3; ++k) - px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; - stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); - break; - } - /* FALLTHROUGH */ - case 3: - stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); - break; - } - if (write_alpha > 0) - stbiw__write1(s, d[comp - 1]); -} - -static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) -{ - stbiw_uint32 zero = 0; - int i,j, j_end; - - if (y <= 0) - return; - - if (stbi__flip_vertically_on_write) - vdir *= -1; - - if (vdir < 0) { - j_end = -1; j = y-1; - } else { - j_end = y; j = 0; - } - - for (; j != j_end; j += vdir) { - for (i=0; i < x; ++i) { - unsigned char *d = (unsigned char *) data + (j*x+i)*comp; - stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); - } - stbiw__write_flush(s); - s->func(s->context, &zero, scanline_pad); - } -} - -static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) -{ - if (y < 0 || x < 0) { - return 0; - } else { - va_list v; - va_start(v, fmt); - stbiw__writefv(s, fmt, v); - va_end(v); - stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); - return 1; - } -} - -static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) -{ - if (comp != 4) { - // write RGB bitmap - int pad = (-x*3) & 3; - return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, - "11 4 22 4" "4 44 22 444444", - 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header - 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header - } else { - // RGBA bitmaps need a v4 header - // use BI_BITFIELDS mode with 32bpp and alpha mask - // (straight BI_RGB with alpha mask doesn't work in most readers) - return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0, - "11 4 22 4" "4 44 22 444444 4444 4 444 444 444 444", - 'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header - 108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header - } -} - -STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) -{ - stbi__write_context s = { 0 }; - stbi__start_write_callbacks(&s, func, context); - return stbi_write_bmp_core(&s, x, y, comp, data); -} - -#ifndef STBI_WRITE_NO_STDIO -STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) -{ - stbi__write_context s = { 0 }; - if (stbi__start_write_file(&s,filename)) { - int r = stbi_write_bmp_core(&s, x, y, comp, data); - stbi__end_write_file(&s); - return r; - } else - return 0; -} -#endif //!STBI_WRITE_NO_STDIO - -static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) -{ - int has_alpha = (comp == 2 || comp == 4); - int colorbytes = has_alpha ? comp-1 : comp; - int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 - - if (y < 0 || x < 0) - return 0; - - if (!stbi_write_tga_with_rle) { - return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, - "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); - } else { - int i,j,k; - int jend, jdir; - - stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); - - if (stbi__flip_vertically_on_write) { - j = 0; - jend = y; - jdir = 1; - } else { - j = y-1; - jend = -1; - jdir = -1; - } - for (; j != jend; j += jdir) { - unsigned char *row = (unsigned char *) data + j * x * comp; - int len; - - for (i = 0; i < x; i += len) { - unsigned char *begin = row + i * comp; - int diff = 1; - len = 1; - - if (i < x - 1) { - ++len; - diff = memcmp(begin, row + (i + 1) * comp, comp); - if (diff) { - const unsigned char *prev = begin; - for (k = i + 2; k < x && len < 128; ++k) { - if (memcmp(prev, row + k * comp, comp)) { - prev += comp; - ++len; - } else { - --len; - break; - } - } - } else { - for (k = i + 2; k < x && len < 128; ++k) { - if (!memcmp(begin, row + k * comp, comp)) { - ++len; - } else { - break; - } - } - } - } - - if (diff) { - unsigned char header = STBIW_UCHAR(len - 1); - stbiw__write1(s, header); - for (k = 0; k < len; ++k) { - stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); - } - } else { - unsigned char header = STBIW_UCHAR(len - 129); - stbiw__write1(s, header); - stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); - } - } - } - stbiw__write_flush(s); - } - return 1; -} - -STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) -{ - stbi__write_context s = { 0 }; - stbi__start_write_callbacks(&s, func, context); - return stbi_write_tga_core(&s, x, y, comp, (void *) data); -} - -#ifndef STBI_WRITE_NO_STDIO -STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) -{ - stbi__write_context s = { 0 }; - if (stbi__start_write_file(&s,filename)) { - int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); - stbi__end_write_file(&s); - return r; - } else - return 0; -} -#endif - -// ************************************************************************************************* -// Radiance RGBE HDR writer -// by Baldur Karlsson - -#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) - -#ifndef STBI_WRITE_NO_STDIO - -static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) -{ - int exponent; - float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); - - if (maxcomp < 1e-32f) { - rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; - } else { - float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; - - rgbe[0] = (unsigned char)(linear[0] * normalize); - rgbe[1] = (unsigned char)(linear[1] * normalize); - rgbe[2] = (unsigned char)(linear[2] * normalize); - rgbe[3] = (unsigned char)(exponent + 128); - } -} - -static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) -{ - unsigned char lengthbyte = STBIW_UCHAR(length+128); - STBIW_ASSERT(length+128 <= 255); - s->func(s->context, &lengthbyte, 1); - s->func(s->context, &databyte, 1); -} - -static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) -{ - unsigned char lengthbyte = STBIW_UCHAR(length); - STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code - s->func(s->context, &lengthbyte, 1); - s->func(s->context, data, length); -} - -static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) -{ - unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; - unsigned char rgbe[4]; - float linear[3]; - int x; - - scanlineheader[2] = (width&0xff00)>>8; - scanlineheader[3] = (width&0x00ff); - - /* skip RLE for images too small or large */ - if (width < 8 || width >= 32768) { - for (x=0; x < width; x++) { - switch (ncomp) { - case 4: /* fallthrough */ - case 3: linear[2] = scanline[x*ncomp + 2]; - linear[1] = scanline[x*ncomp + 1]; - linear[0] = scanline[x*ncomp + 0]; - break; - default: - linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; - break; - } - stbiw__linear_to_rgbe(rgbe, linear); - s->func(s->context, rgbe, 4); - } - } else { - int c,r; - /* encode into scratch buffer */ - for (x=0; x < width; x++) { - switch(ncomp) { - case 4: /* fallthrough */ - case 3: linear[2] = scanline[x*ncomp + 2]; - linear[1] = scanline[x*ncomp + 1]; - linear[0] = scanline[x*ncomp + 0]; - break; - default: - linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; - break; - } - stbiw__linear_to_rgbe(rgbe, linear); - scratch[x + width*0] = rgbe[0]; - scratch[x + width*1] = rgbe[1]; - scratch[x + width*2] = rgbe[2]; - scratch[x + width*3] = rgbe[3]; - } - - s->func(s->context, scanlineheader, 4); - - /* RLE each component separately */ - for (c=0; c < 4; c++) { - unsigned char *comp = &scratch[width*c]; - - x = 0; - while (x < width) { - // find first run - r = x; - while (r+2 < width) { - if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) - break; - ++r; - } - if (r+2 >= width) - r = width; - // dump up to first run - while (x < r) { - int len = r-x; - if (len > 128) len = 128; - stbiw__write_dump_data(s, len, &comp[x]); - x += len; - } - // if there's a run, output it - if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd - // find next byte after run - while (r < width && comp[r] == comp[x]) - ++r; - // output run up to r - while (x < r) { - int len = r-x; - if (len > 127) len = 127; - stbiw__write_run_data(s, len, comp[x]); - x += len; - } - } - } - } - } -} - -static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) -{ - if (y <= 0 || x <= 0 || data == NULL) - return 0; - else { - // Each component is stored separately. Allocate scratch space for full output scanline. - unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); - int i, len; - char buffer[128]; - char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; - s->func(s->context, header, sizeof(header)-1); - -#ifdef __STDC_LIB_EXT1__ - len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); -#else - len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); -#endif - s->func(s->context, buffer, len); - - for(i=0; i < y; i++) - stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); - STBIW_FREE(scratch); - return 1; - } -} - -STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) -{ - stbi__write_context s = { 0 }; - stbi__start_write_callbacks(&s, func, context); - return stbi_write_hdr_core(&s, x, y, comp, (float *) data); -} - -STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) -{ - stbi__write_context s = { 0 }; - if (stbi__start_write_file(&s,filename)) { - int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); - stbi__end_write_file(&s); - return r; - } else - return 0; -} -#endif // STBI_WRITE_NO_STDIO - - -////////////////////////////////////////////////////////////////////////////// -// -// PNG writer -// - -#ifndef STBIW_ZLIB_COMPRESS -// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() -#define stbiw__sbraw(a) ((int *) (void *) (a) - 2) -#define stbiw__sbm(a) stbiw__sbraw(a)[0] -#define stbiw__sbn(a) stbiw__sbraw(a)[1] - -#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) -#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) -#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) - -#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) -#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) -#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) - -static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) -{ - int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; - void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); - STBIW_ASSERT(p); - if (p) { - if (!*arr) ((int *) p)[1] = 0; - *arr = (void *) ((int *) p + 2); - stbiw__sbm(*arr) = m; - } - return *arr; -} - -static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) -{ - while (*bitcount >= 8) { - stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); - *bitbuffer >>= 8; - *bitcount -= 8; - } - return data; -} - -static int stbiw__zlib_bitrev(int code, int codebits) -{ - int res=0; - while (codebits--) { - res = (res << 1) | (code & 1); - code >>= 1; - } - return res; -} - -static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) -{ - int i; - for (i=0; i < limit && i < 258; ++i) - if (a[i] != b[i]) break; - return i; -} - -static unsigned int stbiw__zhash(unsigned char *data) -{ - stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - return hash; -} - -#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) -#define stbiw__zlib_add(code,codebits) \ - (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) -#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) -// default huffman tables -#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) -#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) -#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) -#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) -#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) -#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) - -#define stbiw__ZHASH 16384 - -#endif // STBIW_ZLIB_COMPRESS - -STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) -{ -#ifdef STBIW_ZLIB_COMPRESS - // user provided a zlib compress implementation, use that - return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); -#else // use builtin - static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; - static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; - static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; - static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; - unsigned int bitbuf=0; - int i,j, bitcount=0; - unsigned char *out = NULL; - unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); - if (hash_table == NULL) - return NULL; - if (quality < 5) quality = 5; - - stbiw__sbpush(out, 0x78); // DEFLATE 32K window - stbiw__sbpush(out, 0x5e); // FLEVEL = 1 - stbiw__zlib_add(1,1); // BFINAL = 1 - stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman - - for (i=0; i < stbiw__ZHASH; ++i) - hash_table[i] = NULL; - - i=0; - while (i < data_len-3) { - // hash next 3 bytes of data to be compressed - int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; - unsigned char *bestloc = 0; - unsigned char **hlist = hash_table[h]; - int n = stbiw__sbcount(hlist); - for (j=0; j < n; ++j) { - if (hlist[j]-data > i-32768) { // if entry lies within window - int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); - if (d >= best) { best=d; bestloc=hlist[j]; } - } - } - // when hash table entry is too long, delete half the entries - if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { - STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); - stbiw__sbn(hash_table[h]) = quality; - } - stbiw__sbpush(hash_table[h],data+i); - - if (bestloc) { - // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal - h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); - hlist = hash_table[h]; - n = stbiw__sbcount(hlist); - for (j=0; j < n; ++j) { - if (hlist[j]-data > i-32767) { - int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); - if (e > best) { // if next match is better, bail on current match - bestloc = NULL; - break; - } - } - } - } - - if (bestloc) { - int d = (int) (data+i - bestloc); // distance back - STBIW_ASSERT(d <= 32767 && best <= 258); - for (j=0; best > lengthc[j+1]-1; ++j); - stbiw__zlib_huff(j+257); - if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); - for (j=0; d > distc[j+1]-1; ++j); - stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); - if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); - i += best; - } else { - stbiw__zlib_huffb(data[i]); - ++i; - } - } - // write out final bytes - for (;i < data_len; ++i) - stbiw__zlib_huffb(data[i]); - stbiw__zlib_huff(256); // end of block - // pad with 0 bits to byte boundary - while (bitcount) - stbiw__zlib_add(0,1); - - for (i=0; i < stbiw__ZHASH; ++i) - (void) stbiw__sbfree(hash_table[i]); - STBIW_FREE(hash_table); - - // store uncompressed instead if compression was worse - if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) { - stbiw__sbn(out) = 2; // truncate to DEFLATE 32K window and FLEVEL = 1 - for (j = 0; j < data_len;) { - int blocklen = data_len - j; - if (blocklen > 32767) blocklen = 32767; - stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression - stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN - stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8)); - stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN - stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8)); - memcpy(out+stbiw__sbn(out), data+j, blocklen); - stbiw__sbn(out) += blocklen; - j += blocklen; - } - } - - { - // compute adler32 on input - unsigned int s1=1, s2=0; - int blocklen = (int) (data_len % 5552); - j=0; - while (j < data_len) { - for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } - s1 %= 65521; s2 %= 65521; - j += blocklen; - blocklen = 5552; - } - stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); - stbiw__sbpush(out, STBIW_UCHAR(s2)); - stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); - stbiw__sbpush(out, STBIW_UCHAR(s1)); - } - *out_len = stbiw__sbn(out); - // make returned pointer freeable - STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); - return (unsigned char *) stbiw__sbraw(out); -#endif // STBIW_ZLIB_COMPRESS -} - -static unsigned int stbiw__crc32(unsigned char *buffer, int len) -{ -#ifdef STBIW_CRC32 - return STBIW_CRC32(buffer, len); -#else - static unsigned int crc_table[256] = - { - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, - 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, - 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, - 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, - 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, - 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, - 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, - 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, - 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, - 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, - 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, - 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, - 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, - 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, - 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, - 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, - 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, - 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, - 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, - 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, - 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, - 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, - 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, - 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D - }; - - unsigned int crc = ~0u; - int i; - for (i=0; i < len; ++i) - crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; - return ~crc; -#endif -} - -#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) -#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); -#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) - -static void stbiw__wpcrc(unsigned char **data, int len) -{ - unsigned int crc = stbiw__crc32(*data - len - 4, len+4); - stbiw__wp32(*data, crc); -} - -static unsigned char stbiw__paeth(int a, int b, int c) -{ - int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); - if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); - if (pb <= pc) return STBIW_UCHAR(b); - return STBIW_UCHAR(c); -} - -// @OPTIMIZE: provide an option that always forces left-predict or paeth predict -static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) -{ - static int mapping[] = { 0,1,2,3,4 }; - static int firstmap[] = { 0,1,0,5,6 }; - int *mymap = (y != 0) ? mapping : firstmap; - int i; - int type = mymap[filter_type]; - unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); - int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; - - if (type==0) { - memcpy(line_buffer, z, width*n); - return; - } - - // first loop isn't optimized since it's just one pixel - for (i = 0; i < n; ++i) { - switch (type) { - case 1: line_buffer[i] = z[i]; break; - case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; - case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; - case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; - case 5: line_buffer[i] = z[i]; break; - case 6: line_buffer[i] = z[i]; break; - } - } - switch (type) { - case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; - case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; - case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; - case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; - case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; - case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; - } -} - -STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) -{ - int force_filter = stbi_write_force_png_filter; - int ctype[5] = { -1, 0, 4, 2, 6 }; - unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; - unsigned char *out,*o, *filt, *zlib; - signed char *line_buffer; - int j,zlen; - - if (stride_bytes == 0) - stride_bytes = x * n; - - if (force_filter >= 5) { - force_filter = -1; - } - - filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; - line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } - for (j=0; j < y; ++j) { - int filter_type; - if (force_filter > -1) { - filter_type = force_filter; - stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); - } else { // Estimate the best filter by running through all of them: - int best_filter = 0, best_filter_val = 0x7fffffff, est, i; - for (filter_type = 0; filter_type < 5; filter_type++) { - stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); - - // Estimate the entropy of the line using this filter; the less, the better. - est = 0; - for (i = 0; i < x*n; ++i) { - est += abs((signed char) line_buffer[i]); - } - if (est < best_filter_val) { - best_filter_val = est; - best_filter = filter_type; - } - } - if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it - stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); - filter_type = best_filter; - } - } - // when we get here, filter_type contains the filter type, and line_buffer contains the data - filt[j*(x*n+1)] = (unsigned char) filter_type; - STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); - } - STBIW_FREE(line_buffer); - zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); - STBIW_FREE(filt); - if (!zlib) return 0; - - // each tag requires 12 bytes of overhead - out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); - if (!out) return 0; - *out_len = 8 + 12+13 + 12+zlen + 12; - - o=out; - STBIW_MEMMOVE(o,sig,8); o+= 8; - stbiw__wp32(o, 13); // header length - stbiw__wptag(o, "IHDR"); - stbiw__wp32(o, x); - stbiw__wp32(o, y); - *o++ = 8; - *o++ = STBIW_UCHAR(ctype[n]); - *o++ = 0; - *o++ = 0; - *o++ = 0; - stbiw__wpcrc(&o,13); - - stbiw__wp32(o, zlen); - stbiw__wptag(o, "IDAT"); - STBIW_MEMMOVE(o, zlib, zlen); - o += zlen; - STBIW_FREE(zlib); - stbiw__wpcrc(&o, zlen); - - stbiw__wp32(o,0); - stbiw__wptag(o, "IEND"); - stbiw__wpcrc(&o,0); - - STBIW_ASSERT(o == out + *out_len); - - return out; -} - -#ifndef STBI_WRITE_NO_STDIO -STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) -{ - FILE *f; - int len; - unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); - if (png == NULL) return 0; - - f = stbiw__fopen(filename, "wb"); - if (!f) { STBIW_FREE(png); return 0; } - fwrite(png, 1, len, f); - fclose(f); - STBIW_FREE(png); - return 1; -} -#endif - -STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) -{ - int len; - unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); - if (png == NULL) return 0; - func(context, png, len); - STBIW_FREE(png); - return 1; -} - - -/* *************************************************************************** - * - * JPEG writer - * - * This is based on Jon Olick's jo_jpeg.cpp: - * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html - */ - -static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, - 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; - -static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { - int bitBuf = *bitBufP, bitCnt = *bitCntP; - bitCnt += bs[1]; - bitBuf |= bs[0] << (24 - bitCnt); - while(bitCnt >= 8) { - unsigned char c = (bitBuf >> 16) & 255; - stbiw__putc(s, c); - if(c == 255) { - stbiw__putc(s, 0); - } - bitBuf <<= 8; - bitCnt -= 8; - } - *bitBufP = bitBuf; - *bitCntP = bitCnt; -} - -static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { - float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; - float z1, z2, z3, z4, z5, z11, z13; - - float tmp0 = d0 + d7; - float tmp7 = d0 - d7; - float tmp1 = d1 + d6; - float tmp6 = d1 - d6; - float tmp2 = d2 + d5; - float tmp5 = d2 - d5; - float tmp3 = d3 + d4; - float tmp4 = d3 - d4; - - // Even part - float tmp10 = tmp0 + tmp3; // phase 2 - float tmp13 = tmp0 - tmp3; - float tmp11 = tmp1 + tmp2; - float tmp12 = tmp1 - tmp2; - - d0 = tmp10 + tmp11; // phase 3 - d4 = tmp10 - tmp11; - - z1 = (tmp12 + tmp13) * 0.707106781f; // c4 - d2 = tmp13 + z1; // phase 5 - d6 = tmp13 - z1; - - // Odd part - tmp10 = tmp4 + tmp5; // phase 2 - tmp11 = tmp5 + tmp6; - tmp12 = tmp6 + tmp7; - - // The rotator is modified from fig 4-8 to avoid extra negations. - z5 = (tmp10 - tmp12) * 0.382683433f; // c6 - z2 = tmp10 * 0.541196100f + z5; // c2-c6 - z4 = tmp12 * 1.306562965f + z5; // c2+c6 - z3 = tmp11 * 0.707106781f; // c4 - - z11 = tmp7 + z3; // phase 5 - z13 = tmp7 - z3; - - *d5p = z13 + z2; // phase 6 - *d3p = z13 - z2; - *d1p = z11 + z4; - *d7p = z11 - z4; - - *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; -} - -static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { - int tmp1 = val < 0 ? -val : val; - val = val < 0 ? val-1 : val; - bits[1] = 1; - while(tmp1 >>= 1) { - ++bits[1]; - } - bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { - } - // end0pos = first element in reverse order !=0 - if(end0pos == 0) { - stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); - return DU[0]; - } - for(i = 1; i <= end0pos; ++i) { - int startpos = i; - int nrzeroes; - unsigned short bits[2]; - for (; DU[i]==0 && i<=end0pos; ++i) { - } - nrzeroes = i-startpos; - if ( nrzeroes >= 16 ) { - int lng = nrzeroes>>4; - int nrmarker; - for (nrmarker=1; nrmarker <= lng; ++nrmarker) - stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); - nrzeroes &= 15; - } - stbiw__jpg_calcBits(DU[i], bits); - stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); - stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); - } - if(end0pos != 63) { - stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); - } - return DU[0]; -} - -static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { - // Constants that don't pollute global namespace - static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; - static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; - static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; - static const unsigned char std_ac_luminance_values[] = { - 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 - }; - static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; - static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; - static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; - static const unsigned char std_ac_chrominance_values[] = { - 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 - }; - // Huffman tables - static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; - static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; - static const unsigned short YAC_HT[256][2] = { - {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, - {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} - }; - static const unsigned short UVAC_HT[256][2] = { - {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, - {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, - {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} - }; - static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, - 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; - static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, - 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; - static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, - 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; - - int row, col, i, k, subsample; - float fdtbl_Y[64], fdtbl_UV[64]; - unsigned char YTable[64], UVTable[64]; - - if(!data || !width || !height || comp > 4 || comp < 1) { - return 0; - } - - quality = quality ? quality : 90; - subsample = quality <= 90 ? 1 : 0; - quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; - quality = quality < 50 ? 5000 / quality : 200 - quality * 2; - - for(i = 0; i < 64; ++i) { - int uvti, yti = (YQT[i]*quality+50)/100; - YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); - uvti = (UVQT[i]*quality+50)/100; - UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); - } - - for(row = 0, k = 0; row < 8; ++row) { - for(col = 0; col < 8; ++col, ++k) { - fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); - fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); - } - } - - // Write Headers - { - static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; - static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; - const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), - 3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; - s->func(s->context, (void*)head0, sizeof(head0)); - s->func(s->context, (void*)YTable, sizeof(YTable)); - stbiw__putc(s, 1); - s->func(s->context, UVTable, sizeof(UVTable)); - s->func(s->context, (void*)head1, sizeof(head1)); - s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); - s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); - stbiw__putc(s, 0x10); // HTYACinfo - s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); - s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); - stbiw__putc(s, 1); // HTUDCinfo - s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); - s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); - stbiw__putc(s, 0x11); // HTUACinfo - s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); - s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); - s->func(s->context, (void*)head2, sizeof(head2)); - } - - // Encode 8x8 macroblocks - { - static const unsigned short fillBits[] = {0x7F, 7}; - int DCY=0, DCU=0, DCV=0; - int bitBuf=0, bitCnt=0; - // comp == 2 is grey+alpha (alpha is ignored) - int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; - const unsigned char *dataR = (const unsigned char *)data; - const unsigned char *dataG = dataR + ofsG; - const unsigned char *dataB = dataR + ofsB; - int x, y, pos; - if(subsample) { - for(y = 0; y < height; y += 16) { - for(x = 0; x < width; x += 16) { - float Y[256], U[256], V[256]; - for(row = y, pos = 0; row < y+16; ++row) { - // row >= height => use last input row - int clamped_row = (row < height) ? row : height - 1; - int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; - for(col = x; col < x+16; ++col, ++pos) { - // if col >= width => use pixel from last input column - int p = base_p + ((col < width) ? col : (width-1))*comp; - float r = dataR[p], g = dataG[p], b = dataB[p]; - Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; - U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; - V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; - } - } - DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); - DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); - DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); - DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); - - // subsample U,V - { - float subU[64], subV[64]; - int yy, xx; - for(yy = 0, pos = 0; yy < 8; ++yy) { - for(xx = 0; xx < 8; ++xx, ++pos) { - int j = yy*32+xx*2; - subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f; - subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f; - } - } - DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); - DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); - } - } - } - } else { - for(y = 0; y < height; y += 8) { - for(x = 0; x < width; x += 8) { - float Y[64], U[64], V[64]; - for(row = y, pos = 0; row < y+8; ++row) { - // row >= height => use last input row - int clamped_row = (row < height) ? row : height - 1; - int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; - for(col = x; col < x+8; ++col, ++pos) { - // if col >= width => use pixel from last input column - int p = base_p + ((col < width) ? col : (width-1))*comp; - float r = dataR[p], g = dataG[p], b = dataB[p]; - Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; - U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; - V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; - } - } - - DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y, DCY, YDC_HT, YAC_HT); - DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); - DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); - } - } - } - - // Do the bit alignment of the EOI marker - stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); - } - - // EOI - stbiw__putc(s, 0xFF); - stbiw__putc(s, 0xD9); - - return 1; -} - -STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) -{ - stbi__write_context s = { 0 }; - stbi__start_write_callbacks(&s, func, context); - return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); -} - - -#ifndef STBI_WRITE_NO_STDIO -STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) -{ - stbi__write_context s = { 0 }; - if (stbi__start_write_file(&s,filename)) { - int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); - stbi__end_write_file(&s); - return r; - } else - return 0; -} -#endif - -#endif // STB_IMAGE_WRITE_IMPLEMENTATION - -/* Revision history - 1.16 (2021-07-11) - make Deflate code emit uncompressed blocks when it would otherwise expand - support writing BMPs with alpha channel - 1.15 (2020-07-13) unknown - 1.14 (2020-02-02) updated JPEG writer to downsample chroma channels - 1.13 - 1.12 - 1.11 (2019-08-11) - - 1.10 (2019-02-07) - support utf8 filenames in Windows; fix warnings and platform ifdefs - 1.09 (2018-02-11) - fix typo in zlib quality API, improve STB_I_W_STATIC in C++ - 1.08 (2018-01-29) - add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter - 1.07 (2017-07-24) - doc fix - 1.06 (2017-07-23) - writing JPEG (using Jon Olick's code) - 1.05 ??? - 1.04 (2017-03-03) - monochrome BMP expansion - 1.03 ??? - 1.02 (2016-04-02) - avoid allocating large structures on the stack - 1.01 (2016-01-16) - STBIW_REALLOC_SIZED: support allocators with no realloc support - avoid race-condition in crc initialization - minor compile issues - 1.00 (2015-09-14) - installable file IO function - 0.99 (2015-09-13) - warning fixes; TGA rle support - 0.98 (2015-04-08) - added STBIW_MALLOC, STBIW_ASSERT etc - 0.97 (2015-01-18) - fixed HDR asserts, rewrote HDR rle logic - 0.96 (2015-01-17) - add HDR output - fix monochrome BMP - 0.95 (2014-08-17) - add monochrome TGA output - 0.94 (2014-05-31) - rename private functions to avoid conflicts with stb_image.h - 0.93 (2014-05-27) - warning fixes - 0.92 (2010-08-01) - casts to unsigned char to fix warnings - 0.91 (2010-07-17) - first public release - 0.90 first internal release -*/ - -/* ------------------------------------------------------------------------------- -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License -Copyright (c) 2017 Sean Barrett -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain (www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non-commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors. We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -*/ From 440190948e2423a6cc081f97f15e577d1e8f7551 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 19:16:02 +0200 Subject: [PATCH 173/203] Correct naming restored --- samples/core/reduce/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index fae5423c..129953d9 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -26,7 +26,7 @@ #include // Sample-specific option -struct options_Blur { +struct options_Reduce { size_t length; const char * op; }; @@ -45,7 +45,7 @@ cag_option ReduceOptions[] = { .description = "Operation to perform"} }; -ParseState parse_BlurOptions(const char identifier, cag_option_context * cag_context, struct options_Blur * opts) +ParseState parse_ReduceOptions(const char identifier, cag_option_context * cag_context, struct options_Reduce * opts) { const char * value; switch (identifier) { @@ -71,7 +71,7 @@ cl_int parse_options(int argc, char* argv[], struct cl_sdk_options_Diagnostic * diag_opts, struct cl_sdk_options_SingleDevice * dev_opts, - struct options_Blur * reduce_opts) + struct options_Reduce * reduce_opts) { cl_int error = CL_SUCCESS; struct cag_option * opts = NULL, * tmp = NULL; @@ -101,7 +101,7 @@ else if (state == ParseError) \ PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts)) PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts)) - PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, reduce_opts)) + PARS_OPTIONS(parse_ReduceOptions(identifier, &cag_context, reduce_opts)) if (identifier == 'h') { printf("Usage: reduce [OPTION]...\n"); @@ -222,7 +222,7 @@ int main(int argc, char* argv[]) // Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct options_Blur reduce_opts = { .length = 1048576, .op = "min" }; + struct options_Reduce reduce_opts = { .length = 1048576, .op = "min" }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &reduce_opts), error, end); From 87810633e49d8d304cac8ad95e7127cf7a6a78e5 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 19:22:54 +0200 Subject: [PATCH 174/203] More consistent cl_uint for plat_id and dev_id --- lib/include/CL/SDK/InteropWindow.hpp | 8 ++++---- lib/src/SDK/InteropWindow.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/include/CL/SDK/InteropWindow.hpp b/lib/include/CL/SDK/InteropWindow.hpp index e65667bf..beaf5ba7 100644 --- a/lib/include/CL/SDK/InteropWindow.hpp +++ b/lib/include/CL/SDK/InteropWindow.hpp @@ -25,8 +25,8 @@ namespace sdk const sf::String& title, sf::Uint32 style = sf::Style::Default, const sf::ContextSettings& settings = sf::ContextSettings{}, - int platform_id = 0, - int device_id = 0, + cl_uint platform_id = 0, + cl_uint device_id = 0, cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT ); @@ -44,8 +44,8 @@ namespace sdk bool cl_khr_gl_event_supported; private: - int plat_id; - int dev_id; + cl_uint plat_id; + cl_uint dev_id; cl_bitfield dev_type; }; } diff --git a/lib/src/SDK/InteropWindow.cpp b/lib/src/SDK/InteropWindow.cpp index bbcf29f9..af80beab 100644 --- a/lib/src/SDK/InteropWindow.cpp +++ b/lib/src/SDK/InteropWindow.cpp @@ -7,8 +7,8 @@ cl::sdk::InteropWindow::InteropWindow( const sf::String& title, sf::Uint32 style, const sf::ContextSettings& settings, - int platform_id, - int device_id, + cl_uint platform_id, + cl_uint device_id, cl_bitfield device_type ) : sf::Window{mode, title, style, settings} From 169b1ef34d39af1d4f598dec83f7f740d211d21b Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 19:35:43 +0200 Subject: [PATCH 175/203] snprintf for Linux --- lib/src/Utils/File.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index bbaa69a6..8b3e6667 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -194,7 +194,7 @@ cl_int cl_util_write_binaries(cl_program const program, const char * const progr name_data[200] = '\0'; // create output file name char filename[256]; - sprintf_s(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); // write the binary to the output file FILE * f = fopen(filename, "wb"); @@ -251,7 +251,7 @@ cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, con name_data[200] = '\0'; // create input file name char filename[256]; - sprintf_s(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); binaries_ptr[i] = cl_util_read_binary_file(filename, binaries_size + i, error); if (*error == CL_INVALID_VALUE) { From 88b62e2bcc4b647d870b14e06e2f8c160ae47509 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Fri, 26 Nov 2021 23:35:34 +0200 Subject: [PATCH 176/203] Blur standard image added, error handling in image SDK improved, blur kernels updated --- lib/include/CL/SDK/Image.h | 4 +- lib/include/CL/SDK/Image.hpp | 2 +- lib/src/SDK/Image.c | 28 +- lib/src/SDK/Image.cpp | 26 +- samples/core/blur/README.md | 14 +- samples/core/blur/blur.cl | 11 +- samples/core/blur/image.c | 11879 +++++++++++++++++++++++++++++++++ samples/core/blur/main.c | 40 +- 8 files changed, 11953 insertions(+), 51 deletions(-) create mode 100644 samples/core/blur/image.c diff --git a/lib/include/CL/SDK/Image.h b/lib/include/CL/SDK/Image.h index 8c6d5b88..32ac6320 100644 --- a/lib/include/CL/SDK/Image.h +++ b/lib/include/CL/SDK/Image.h @@ -14,7 +14,7 @@ typedef struct cl_sdk_image cl_sdk_image; SDK_EXPORT -cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err); +cl_sdk_image cl_sdk_read_image(const char * file_name, cl_int * err); SDK_EXPORT -void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err); +cl_int cl_sdk_write_image(const char * file_name, const cl_sdk_image * im); diff --git a/lib/include/CL/SDK/Image.hpp b/lib/include/CL/SDK/Image.hpp index bc3453f7..53b964b2 100644 --- a/lib/include/CL/SDK/Image.hpp +++ b/lib/include/CL/SDK/Image.hpp @@ -20,6 +20,6 @@ namespace sdk Image read_image(const char* file_name, cl_int* err); SDKCPP_EXPORT - void write_image(const char* file_name, const Image& image, cl_int* err); + cl_int write_image(const char* file_name, const Image& image); } } diff --git a/lib/src/SDK/Image.c b/lib/src/SDK/Image.c index fce297e3..409060a2 100644 --- a/lib/src/SDK/Image.c +++ b/lib/src/SDK/Image.c @@ -17,16 +17,20 @@ // OpenCL includes #include -cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err) +cl_sdk_image cl_sdk_read_image(const char * file_name, cl_int * error) { + cl_int err; + if (error == NULL) + error = &err; + cl_sdk_image im = { .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL }; im.pixels = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); if (im.width && im.height && im.pixel_size && im.pixels) - *err = CL_SUCCESS; + *error = CL_SUCCESS; else { fprintf(stderr, "File read error!"); - *err = CL_INVALID_ARG_VALUE; + *error = CL_INVALID_ARG_VALUE; } return im; @@ -41,30 +45,30 @@ static char * to_lowercase(const char * s, char * d, size_t n) return d; } -void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err) +cl_int cl_sdk_write_image(const char * file_name, const cl_sdk_image * im) { - *err = CL_SUCCESS; + cl_int error = CL_SUCCESS; char fext[5] = {0, 0, 0, 0, 0}; #define IF_EXT(ext, func, err_text) \ if (!strcmp(to_lowercase(file_name + strlen(file_name) - 4, fext, 4), ext)) { \ if (!func) { \ fprintf(stderr, err_text); \ - *err = CL_INVALID_ARG_VALUE; \ + error = CL_INVALID_ARG_VALUE; \ } \ } \ IF_EXT(".png", stbi_write_png(file_name, im->width, im->height, im->pixel_size, im->pixels, 0), - "Not possible to write PNG file!") + "Not possible to write PNG file!\n") else IF_EXT(".bmp", stbi_write_bmp(file_name, im->width, im->height, im->pixel_size, im->pixels), - "Not possible to write BMP file!") + "Not possible to write BMP file!\n") else IF_EXT(".jpg", stbi_write_jpg(file_name, im->width, im->height, im->pixel_size, im->pixels, 80), - "Not possible to write JPG file!") + "Not possible to write JPG file!\n") else { - fprintf(stderr, "Unknown file extension!"); - *err = CL_IMAGE_FORMAT_NOT_SUPPORTED; + fprintf(stderr, "Unknown file extension!\n"); + error = CL_IMAGE_FORMAT_NOT_SUPPORTED; } #undef IF_EXT - return; + return error; } diff --git a/lib/src/SDK/Image.cpp b/lib/src/SDK/Image.cpp index a206d408..14c26a55 100644 --- a/lib/src/SDK/Image.cpp +++ b/lib/src/SDK/Image.cpp @@ -27,23 +27,27 @@ namespace cl { namespace sdk { - Image read_image(const char* file_name, cl_int * err) + Image read_image(const char* file_name, cl_int * error) { + cl_int err; + if (error == NULL) + error = &err; + Image im; unsigned char *data = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); im.pixels.insert(im.pixels.end(), data, data + im.width * im.height * im.pixel_size); if (im.width && im.height && im.pixel_size && im.pixels.size() == im.width * im.height * im.pixel_size) - *err = CL_SUCCESS; + *error = CL_SUCCESS; else - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "File read error!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, error, "File read error!"); return im; } - void write_image(const char * file_name, const Image& image, cl_int * err) + cl_int write_image(const char * file_name, const Image& image) { - *err = CL_SUCCESS; + cl_int error = CL_SUCCESS; #if __cplusplus >= 201703L std::filesystem::path fn(file_name); @@ -51,7 +55,7 @@ namespace sdk #else const char * extpos = strrchr(file_name, '.'); if (extpos == nullptr) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "No file extension!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "No file extension!"); std::string extension(extpos); #endif @@ -67,20 +71,20 @@ namespace sdk if (str_compare(extension, ".png")) { if (!stbi_write_png(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 0)) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write PNG file!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write PNG file!"); } else if (str_compare(extension, ".bmp")) { if (!stbi_write_bmp(file_name, image.width, image.height, image.pixel_size, image.pixels.data())) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write BMP file!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write BMP file!"); } else if (str_compare(extension, ".jpg")) { if (!stbi_write_jpg(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 80)) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, err, "Not possible to write JPG file!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write JPG file!"); } else - cl::util::detail::errHandler(CL_IMAGE_FORMAT_NOT_SUPPORTED, err, "Unknown file extension!"); + cl::util::detail::errHandler(CL_IMAGE_FORMAT_NOT_SUPPORTED, &error, "Unknown file extension!"); - return; + return error; } } } diff --git a/samples/core/blur/README.md b/samples/core/blur/README.md index f285d8ae..1c5a0826 100644 --- a/samples/core/blur/README.md +++ b/samples/core/blur/README.md @@ -56,13 +56,13 @@ _(Note: the main reason why net kernel execution time doesn't amount to the time ### Used API surface ```c -cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int *error) -cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int *error) +cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) +cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error) cl_util_print_device_info(cl_device_id device) -cl_util_read_text_file(const char *filename, size_t *length, cl_int *error) -cl_util_build_program(cl_program pr, const cl_device_id dev, const char *opt) -cl_sdk_read_image(const char *file_name, cl_int *err) -cl_sdk_write_image(const char *file_name, cl_int *err) -cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int *error) +cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) +cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt) +cl_sdk_read_image(const char * file_name, cl_int * error) +cl_sdk_write_image(const char * file_name, const cl_sdk_image * im) +cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) cl_util_print_error(cl_int error) ``` diff --git a/samples/core/blur/blur.cl b/samples/core/blur/blur.cl index dfbd2fa2..807e5e6f 100644 --- a/samples/core/blur/blur.cl +++ b/samples/core/blur/blur.cl @@ -75,7 +75,7 @@ kernel void blur_kernel_horizontal( read_only image2d_t input_image, write_only image2d_t output_image, int size, - const float * kern + constant float * kern ) { const int width = get_image_width(input_image); @@ -90,17 +90,18 @@ kernel void blur_kernel_horizontal( if ((0 <= cur.x) && (cur.x < width)) { const float w = kern[size + shift.x]; weight += w; - sum += read_imageui(input_image, cur) * w; + sum += convert_float4(read_imageui(input_image, cur)) * w; } } - write_imageui(output_image, coord, convert_uint4(round(sum / weight))); + uint4 res = convert_uint4(round(sum / weight)); + write_imageui(output_image, coord, res); } kernel void blur_kernel_vertical( read_only image2d_t input_image, write_only image2d_t output_image, int size, - const float * kern + constant float * kern ) { const int width = get_image_width(input_image); @@ -115,7 +116,7 @@ kernel void blur_kernel_vertical( if ((0 <= cur.y) && (cur.y < height)) { const float w = kern[size + shift.y]; weight += w; - sum += read_imageui(input_image, cur) * w; + sum += convert_float4(read_imageui(input_image, cur)) * w; } } write_imageui(output_image, coord, convert_uint4(round(sum / weight))); diff --git a/samples/core/blur/image.c b/samples/core/blur/image.c new file mode 100644 index 00000000..704000cb --- /dev/null +++ b/samples/core/blur/image.c @@ -0,0 +1,11879 @@ +/* Generated by bin2c from image by Andrew Svk https://unsplash.com/photos/7oJ4D_ewB7c */ + +/* Contents of file c:\Users\Uzivatel\Downloads\andrew-svk-7oJ4D_ewB7c-unsplash.png */ +const size_t andrew_svk_7oJ4D_ewB7c_unsplash_png_size = 189954; +const unsigned char andrew_svk_7oJ4D_ewB7c_unsplash_png[189954] = { + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x01, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x02, 0xBA, 0xF5, + 0xB7, 0x00, 0x00, 0x01, 0x1C, 0x69, 0x43, 0x43, 0x50, 0x49, 0x43, 0x43, 0x20, 0x70, 0x72, 0x6F, + 0x66, 0x69, 0x6C, 0x65, 0x00, 0x00, 0x28, 0x91, 0x63, 0x60, 0x60, 0xE2, 0xC9, 0x49, 0xCE, 0x2D, + 0x66, 0x12, 0x60, 0x60, 0xC8, 0xCD, 0x2B, 0x29, 0x0A, 0x72, 0x77, 0x52, 0x88, 0x88, 0x8C, 0x52, + 0x60, 0xBF, 0xC3, 0xC0, 0xC8, 0x20, 0xC9, 0xC0, 0xCC, 0xA0, 0xC9, 0x60, 0x99, 0x98, 0x5C, 0x5C, + 0xE0, 0x18, 0x10, 0xE0, 0xC3, 0x80, 0x13, 0x7C, 0xBB, 0x06, 0x54, 0x0D, 0x04, 0x97, 0x75, 0x41, + 0x66, 0xE1, 0x56, 0x87, 0x15, 0x70, 0xA5, 0xA4, 0x16, 0x27, 0x03, 0xE9, 0x3F, 0x40, 0x1C, 0x97, + 0x5C, 0x50, 0x54, 0xC2, 0xC0, 0xC0, 0x18, 0x03, 0x64, 0x73, 0x97, 0x97, 0x14, 0x80, 0xD8, 0x19, + 0x40, 0xB6, 0x48, 0x52, 0x36, 0x98, 0x5D, 0x03, 0x62, 0x17, 0x01, 0x1D, 0x08, 0x64, 0x4F, 0x00, + 0xB1, 0xD3, 0x21, 0xEC, 0x25, 0x60, 0x35, 0x10, 0xF6, 0x0E, 0xB0, 0x9A, 0x90, 0x20, 0x67, 0x20, + 0xFB, 0x0C, 0x90, 0xED, 0x90, 0x8E, 0xC4, 0x4E, 0x42, 0x62, 0x43, 0xED, 0x05, 0x01, 0xE6, 0x64, + 0x23, 0x12, 0x5D, 0x4D, 0x04, 0x28, 0x49, 0xAD, 0x28, 0x01, 0xD1, 0x9E, 0x11, 0x0C, 0x0C, 0xA0, + 0x30, 0x85, 0x88, 0x22, 0xC2, 0x0A, 0x21, 0xC6, 0x2C, 0x06, 0xC4, 0xC6, 0x0C, 0x0C, 0x4C, 0x4B, + 0x10, 0x62, 0xF9, 0x8B, 0x18, 0x18, 0x2C, 0xBE, 0x02, 0xC5, 0x27, 0x20, 0xC4, 0x92, 0x66, 0x32, + 0x30, 0x6C, 0x6F, 0x65, 0x60, 0x90, 0xB8, 0x85, 0x10, 0x53, 0x59, 0xC0, 0xC0, 0xC0, 0xDF, 0xC2, + 0xC0, 0xB0, 0xED, 0x7C, 0x72, 0x69, 0x51, 0x19, 0xD4, 0x6A, 0x29, 0x20, 0x3E, 0xCD, 0x78, 0x92, + 0x39, 0x99, 0x75, 0x12, 0x47, 0x36, 0xF7, 0x37, 0x01, 0x7B, 0xD1, 0x40, 0x69, 0x13, 0xC5, 0x8F, + 0x9A, 0x13, 0x8C, 0x24, 0xAC, 0x27, 0xB9, 0xB1, 0x06, 0x96, 0xC7, 0xBE, 0xCD, 0x2E, 0xA8, 0x62, + 0xED, 0xDC, 0x38, 0xAB, 0x66, 0x4D, 0xE6, 0xFE, 0xDA, 0xCB, 0x87, 0x5F, 0x1A, 0xFC, 0xFF, 0x0F, + 0x00, 0xEE, 0x93, 0x53, 0x96, 0xD2, 0xC6, 0x80, 0x56, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, + 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01, 0xD2, 0xDD, 0x7E, 0xFC, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9C, 0x8C, 0xBD, 0x59, 0x8F, 0x2C, 0x4B, 0x92, 0x1E, + 0x66, 0x8B, 0x7B, 0x44, 0xE4, 0x52, 0x55, 0x67, 0xB9, 0x4B, 0x77, 0x4F, 0x37, 0x1B, 0x33, 0xC4, + 0x50, 0xE4, 0x48, 0xE0, 0x22, 0x3D, 0x09, 0xD0, 0x0B, 0xFF, 0x90, 0x20, 0x40, 0xBF, 0x50, 0x7A, + 0xD0, 0x83, 0x1E, 0x28, 0x90, 0x18, 0x0C, 0xC5, 0x6D, 0x7A, 0x7A, 0x99, 0x5E, 0xEE, 0x72, 0xEE, + 0xA9, 0x25, 0x33, 0x23, 0xC2, 0xDD, 0xCC, 0xF8, 0x60, 0xEE, 0x1E, 0x9E, 0x59, 0x75, 0x87, 0x8C, + 0x0B, 0x9C, 0x5B, 0x95, 0x15, 0xE9, 0xAB, 0xD9, 0x67, 0x8B, 0x9B, 0x99, 0xE3, 0xBF, 0xFD, 0xF7, + 0xBF, 0x8E, 0x81, 0xA7, 0x21, 0x0C, 0x43, 0x08, 0x44, 0x06, 0x06, 0x80, 0x00, 0x06, 0x06, 0x44, + 0x04, 0x06, 0x80, 0x06, 0x80, 0xA2, 0x62, 0x06, 0x4B, 0xCA, 0xA6, 0x06, 0xFE, 0x20, 0x12, 0x00, + 0x22, 0x02, 0x82, 0x88, 0x02, 0x00, 0x31, 0x83, 0x19, 0x22, 0x20, 0xA0, 0x9A, 0x31, 0xA3, 0x88, + 0x8A, 0x28, 0x02, 0x02, 0x82, 0xAA, 0x65, 0xD1, 0x94, 0xC5, 0xCC, 0x0C, 0x90, 0x11, 0x89, 0x31, + 0x30, 0x1D, 0x77, 0x23, 0x12, 0x8A, 0xE8, 0x92, 0x72, 0xCE, 0x62, 0x06, 0x59, 0x54, 0xD4, 0xB2, + 0xA8, 0x88, 0x8C, 0x43, 0x18, 0x62, 0x48, 0x59, 0x97, 0x94, 0xD7, 0x24, 0x22, 0x06, 0x00, 0x6A, + 0x60, 0x3E, 0x44, 0x00, 0x33, 0x33, 0x03, 0x30, 0x10, 0x53, 0x33, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x35, 0x43, 0x00, 0x42, 0x44, 0x34, 0x00, 0x40, 0x44, 0x44, 0x04, 0x00, 0x33, 0x55, 0x45, 0x05, + 0x30, 0x03, 0x55, 0x53, 0x50, 0x53, 0x34, 0xF3, 0x17, 0x20, 0x30, 0x02, 0xC2, 0x92, 0x14, 0xC0, + 0x54, 0xB1, 0x4E, 0x14, 0xCC, 0x3B, 0x03, 0x50, 0x33, 0x30, 0x33, 0x00, 0x00, 0x34, 0x33, 0x66, + 0x9A, 0x22, 0xA5, 0xAC, 0x63, 0x24, 0x44, 0xBC, 0xDF, 0xC7, 0xFB, 0x5D, 0xFC, 0x7C, 0x5A, 0x3F, + 0xBD, 0xAC, 0x7F, 0xF6, 0x71, 0x8F, 0x08, 0x39, 0xDB, 0xFB, 0xBB, 0x29, 0x32, 0x8E, 0x43, 0xD8, + 0xEF, 0x06, 0x42, 0xF8, 0x0F, 0xBF, 0xFE, 0xFE, 0xEF, 0x3F, 0x9D, 0x0D, 0xB0, 0xB4, 0x02, 0x65, + 0xC5, 0x11, 0x4B, 0x5F, 0x88, 0x10, 0x03, 0xAF, 0x49, 0xCD, 0x00, 0x11, 0xC4, 0x4C, 0x0D, 0x08, + 0xC0, 0xCC, 0xD4, 0x20, 0x30, 0x12, 0x62, 0x12, 0x43, 0xAC, 0x03, 0xF1, 0x5D, 0x00, 0x20, 0x84, + 0xE3, 0x14, 0x10, 0x21, 0x12, 0x25, 0xB5, 0x25, 0xC9, 0x18, 0x29, 0x89, 0x9D, 0x66, 0xF1, 0x4E, + 0xB0, 0x4C, 0xE8, 0xF6, 0xF9, 0xB1, 0x3F, 0xF8, 0xE7, 0xBE, 0x70, 0x08, 0x86, 0x4E, 0x0A, 0x65, + 0x81, 0xB7, 0xC7, 0xAC, 0x2D, 0x0B, 0x12, 0xDA, 0xFF, 0xFA, 0x57, 0x3F, 0xFD, 0xF0, 0xB0, 0xB3, + 0x8D, 0x4C, 0xD0, 0xCA, 0x03, 0x21, 0x04, 0x66, 0xEA, 0x7B, 0xF4, 0xBF, 0xD6, 0x76, 0x4C, 0x55, + 0x45, 0xC4, 0xCC, 0x44, 0x24, 0xA5, 0x9C, 0x52, 0xF6, 0x77, 0x98, 0xC9, 0x0C, 0x54, 0xD5, 0x1B, + 0x42, 0x44, 0x44, 0x62, 0x46, 0x22, 0x24, 0x22, 0xFF, 0x6E, 0x25, 0x06, 0xF3, 0xD7, 0x54, 0xCB, + 0xAF, 0xDE, 0x38, 0x33, 0x0D, 0x31, 0x0E, 0x31, 0x72, 0x0C, 0x56, 0xFE, 0x0C, 0xC8, 0x64, 0x66, + 0xE8, 0xE3, 0x56, 0x53, 0x55, 0x2B, 0x34, 0x53, 0x17, 0x84, 0xEA, 0xCF, 0xE6, 0xFF, 0x99, 0xA9, + 0xB5, 0x47, 0x4D, 0x45, 0x54, 0x54, 0x24, 0x4B, 0x16, 0x55, 0x55, 0x11, 0x55, 0xB1, 0xBE, 0xDF, + 0x7E, 0xA6, 0x21, 0x10, 0x07, 0x66, 0x66, 0x22, 0xF2, 0x61, 0x23, 0x02, 0x11, 0x02, 0x00, 0x33, + 0x77, 0x24, 0x5A, 0xE6, 0x82, 0x88, 0xF5, 0xB5, 0xDB, 0x3F, 0xF9, 0x42, 0xF9, 0x4C, 0xEB, 0x1A, + 0x3A, 0x19, 0x03, 0x00, 0xA8, 0x9A, 0x88, 0x00, 0x80, 0xAA, 0xFA, 0xD7, 0x89, 0xA8, 0xDB, 0x88, + 0xB2, 0x86, 0x65, 0xC5, 0x14, 0xFB, 0xD5, 0xB3, 0xD6, 0x0A, 0x42, 0xB7, 0xA4, 0x00, 0x60, 0xAA, + 0xEA, 0x0D, 0xB6, 0x31, 0x38, 0x13, 0x22, 0x12, 0x21, 0x6D, 0x8B, 0x86, 0x18, 0x23, 0x85, 0x10, + 0x42, 0x08, 0x60, 0x96, 0x25, 0xAB, 0x9A, 0x8A, 0x22, 0x51, 0x99, 0x3A, 0x02, 0x21, 0x31, 0x13, + 0x22, 0x70, 0x60, 0x55, 0x45, 0x44, 0x55, 0x93, 0xAC, 0x59, 0x44, 0x6B, 0xBB, 0x3E, 0xF7, 0x35, + 0x6B, 0xCA, 0x92, 0xB2, 0xCE, 0xAB, 0xA4, 0xAC, 0x00, 0xE0, 0x6F, 0x88, 0x99, 0x81, 0x31, 0x11, + 0x18, 0x1C, 0xA6, 0x18, 0x44, 0x0C, 0x41, 0x35, 0x18, 0x98, 0xCD, 0x6B, 0x4A, 0x59, 0x08, 0x31, + 0x04, 0x8E, 0x81, 0x54, 0x35, 0x57, 0x6E, 0x4E, 0xA2, 0x60, 0x80, 0x8E, 0x5E, 0x75, 0x83, 0x22, + 0x33, 0x33, 0x49, 0x99, 0x1E, 0x82, 0xA9, 0x19, 0x88, 0xA8, 0x99, 0x11, 0x11, 0x33, 0x13, 0x62, + 0x36, 0x33, 0x30, 0x42, 0x12, 0x55, 0x33, 0x03, 0x84, 0x94, 0xD5, 0xD4, 0x04, 0x11, 0x32, 0x22, + 0x82, 0xAA, 0x8D, 0x43, 0x58, 0xD7, 0xEC, 0x7C, 0xC0, 0x8C, 0x00, 0x10, 0x03, 0x02, 0x80, 0xA8, + 0x99, 0x59, 0x60, 0x1A, 0x02, 0xEF, 0x86, 0x70, 0x59, 0xF3, 0xE7, 0xE7, 0xD9, 0x00, 0xB4, 0x42, + 0x58, 0xE5, 0x24, 0x50, 0x6B, 0xB0, 0x50, 0xFE, 0x87, 0x80, 0xB4, 0x2D, 0x2C, 0x38, 0xA3, 0x21, + 0x56, 0x2E, 0xB0, 0x02, 0x7B, 0x00, 0x08, 0x58, 0x3E, 0x22, 0x44, 0x03, 0x13, 0x01, 0xE7, 0xD8, + 0x9E, 0x51, 0xCD, 0x77, 0x14, 0xC0, 0xBF, 0xE4, 0x7B, 0xED, 0xAB, 0xBF, 0x66, 0x8D, 0x81, 0x86, + 0x40, 0x3E, 0xE0, 0x6F, 0x1E, 0x2F, 0x29, 0x9B, 0xAA, 0x9D, 0xE6, 0x7C, 0x37, 0xC5, 0x25, 0xA5, + 0x4F, 0x4F, 0x97, 0x7F, 0xF4, 0xF5, 0xC3, 0x6E, 0x8A, 0x08, 0xB8, 0xAE, 0xD9, 0x87, 0x15, 0x08, + 0xD5, 0x40, 0xB5, 0xEF, 0x07, 0x9D, 0x57, 0xD4, 0x6C, 0x00, 0x78, 0xD8, 0x87, 0x39, 0xE9, 0x9A, + 0xD5, 0x87, 0x82, 0x08, 0x81, 0x49, 0xD5, 0x88, 0x48, 0x54, 0x6F, 0x90, 0xC7, 0x67, 0x95, 0xD5, + 0x98, 0x70, 0x88, 0x24, 0x62, 0x00, 0x36, 0x46, 0x0A, 0x4C, 0x97, 0x35, 0xC3, 0x3F, 0x80, 0x61, + 0x3F, 0xF2, 0xF4, 0xEF, 0x3B, 0x8A, 0xF9, 0xE8, 0x0A, 0xD8, 0x76, 0x7F, 0x35, 0x33, 0x44, 0xD8, + 0x0F, 0x0C, 0x00, 0x97, 0x25, 0xFD, 0xE5, 0x9F, 0xBD, 0xFB, 0xF8, 0xB0, 0x47, 0xA2, 0xBA, 0xD0, + 0xD8, 0xB8, 0xBA, 0x71, 0xCE, 0xCD, 0xD7, 0x5F, 0xF7, 0xBE, 0x71, 0x14, 0x80, 0x88, 0x81, 0x15, + 0x6E, 0x44, 0xC4, 0xC6, 0x48, 0x44, 0x88, 0x88, 0x8E, 0x02, 0x1B, 0x4F, 0x9A, 0x33, 0x9B, 0xF9, + 0x76, 0xF7, 0x80, 0x02, 0x60, 0x0E, 0x1F, 0x26, 0xEA, 0xFB, 0x88, 0x00, 0x2A, 0x6A, 0x60, 0x8C, + 0xE4, 0x82, 0x71, 0xA3, 0xEE, 0x7E, 0x1D, 0x6E, 0xC0, 0xCB, 0x51, 0xD2, 0x29, 0x50, 0x4D, 0xC4, + 0x85, 0x75, 0xEB, 0xCB, 0x7A, 0x94, 0x6F, 0x92, 0xC0, 0xFF, 0x35, 0xD8, 0x56, 0xC3, 0x79, 0xC4, + 0x57, 0xC2, 0x51, 0x06, 0x00, 0x9C, 0xA5, 0xDB, 0x77, 0xDB, 0xE7, 0xFD, 0xF4, 0x37, 0xD0, 0x69, + 0x2D, 0x97, 0xC6, 0xA1, 0x76, 0x8D, 0x0D, 0xDD, 0x36, 0x51, 0x54, 0xF7, 0xA2, 0x1F, 0x52, 0x83, + 0xBF, 0x9B, 0xA1, 0x96, 0xF6, 0xAF, 0x24, 0x25, 0xF4, 0xAF, 0xF5, 0x20, 0x5B, 0x65, 0x24, 0x32, + 0x23, 0x21, 0x67, 0x71, 0x09, 0x82, 0x66, 0x40, 0x84, 0x01, 0x99, 0x98, 0x52, 0xCA, 0xFE, 0x3E, + 0xB9, 0x9A, 0x83, 0x8E, 0xAA, 0x80, 0x08, 0xAA, 0x2A, 0xD9, 0x88, 0x8C, 0x18, 0x31, 0x10, 0x31, + 0x89, 0x88, 0xAB, 0x3E, 0xDE, 0x42, 0x8C, 0x26, 0xA2, 0xF3, 0x92, 0xB2, 0x28, 0x02, 0x89, 0x2A, + 0x00, 0x89, 0x2A, 0x33, 0xBE, 0x3F, 0xEE, 0xA6, 0x81, 0x55, 0xE1, 0x30, 0x85, 0x00, 0x00, 0x6A, + 0x36, 0xAF, 0x79, 0x5E, 0xB3, 0x99, 0x21, 0x20, 0x11, 0x8A, 0x9A, 0x28, 0x21, 0xE0, 0x30, 0x30, + 0x63, 0x25, 0x4A, 0x40, 0x22, 0x64, 0x26, 0x66, 0x72, 0x79, 0x04, 0x08, 0xCC, 0x6C, 0x66, 0x43, + 0x0C, 0x95, 0xEC, 0x74, 0x4D, 0x19, 0x01, 0x62, 0x0C, 0xCC, 0xA4, 0x6A, 0xE3, 0x10, 0x53, 0x96, + 0x9C, 0x33, 0x13, 0x89, 0x64, 0x04, 0x18, 0x42, 0x58, 0x53, 0xCE, 0xA2, 0xCE, 0x18, 0xAE, 0x7F, + 0x31, 0xA1, 0x9A, 0x69, 0x52, 0x01, 0x33, 0x73, 0xA0, 0x35, 0x00, 0x24, 0xC4, 0x79, 0xC9, 0x48, + 0xC8, 0x84, 0x43, 0xA0, 0x71, 0xE0, 0x94, 0x35, 0x67, 0xAD, 0x7A, 0x0C, 0x98, 0x0B, 0x5E, 0x30, + 0x74, 0x75, 0x69, 0xDB, 0x0C, 0x13, 0x03, 0xBA, 0x92, 0xF9, 0x58, 0x36, 0xBA, 0x51, 0xDA, 0x35, + 0x7F, 0x8B, 0x98, 0x56, 0xD6, 0x42, 0x44, 0x04, 0x53, 0xF3, 0xDD, 0x05, 0xFF, 0x1F, 0x21, 0x10, + 0xA1, 0x54, 0x4E, 0x70, 0x8A, 0xCA, 0x62, 0x77, 0xBB, 0x80, 0x00, 0xF7, 0xFB, 0xE1, 0xBB, 0xE7, + 0x65, 0x49, 0xB2, 0x1B, 0x82, 0xA8, 0x9D, 0x97, 0x7C, 0xBF, 0x8B, 0x31, 0xD0, 0xFB, 0xFB, 0xDD, + 0x10, 0x99, 0x10, 0xE7, 0x25, 0xAD, 0x29, 0x13, 0x96, 0x15, 0x86, 0xAA, 0x7F, 0xA9, 0xFA, 0x40, + 0x8A, 0x24, 0x44, 0x80, 0x35, 0xAB, 0x19, 0xF8, 0x3B, 0x60, 0x80, 0x05, 0x3A, 0x31, 0x04, 0x54, + 0x35, 0x31, 0xC0, 0x6E, 0x06, 0x8D, 0x3A, 0x09, 0xF1, 0xB2, 0xCA, 0x10, 0xF8, 0x38, 0x05, 0x00, + 0x38, 0xEC, 0xE2, 0xB7, 0x8F, 0x17, 0x35, 0xAB, 0xBA, 0xDE, 0x7F, 0x2F, 0x96, 0x35, 0xF6, 0x28, + 0xEA, 0x09, 0x18, 0xA0, 0x61, 0x13, 0x12, 0xD8, 0xBF, 0x09, 0x6A, 0xF0, 0xE5, 0xFD, 0xF4, 0xD5, + 0xFD, 0x78, 0x9A, 0x57, 0xC4, 0xE9, 0x2F, 0x7E, 0xF6, 0x9E, 0x98, 0xFD, 0xAF, 0xCE, 0x87, 0x4D, + 0x29, 0xB8, 0x69, 0xFF, 0xC7, 0x9E, 0x0A, 0x46, 0x5A, 0xA9, 0xAE, 0x70, 0x54, 0xDD, 0x97, 0xBA, + 0x39, 0x00, 0xD4, 0xE4, 0x6A, 0x6D, 0x11, 0x09, 0xB1, 0x12, 0x42, 0x0F, 0x64, 0x6D, 0x7D, 0x4A, + 0x17, 0x8E, 0x86, 0xA5, 0x6D, 0x00, 0x04, 0x35, 0x73, 0xF1, 0x85, 0x4C, 0x9B, 0xC6, 0x89, 0x05, + 0x30, 0x1A, 0x7E, 0xB9, 0x12, 0xA4, 0x66, 0x66, 0x0A, 0x88, 0x0D, 0x37, 0x6F, 0x56, 0xAF, 0xC9, + 0xB9, 0x9B, 0x59, 0x23, 0x56, 0xA2, 0xBD, 0x82, 0x98, 0x32, 0xEB, 0x5E, 0x51, 0xF2, 0xA5, 0xEB, + 0x61, 0xA8, 0x6B, 0xBC, 0xBC, 0xC6, 0x48, 0x02, 0x8A, 0x8D, 0x06, 0xEA, 0xBA, 0x88, 0x6E, 0x8D, + 0xFB, 0xCB, 0x0D, 0x10, 0x7B, 0x9C, 0xDA, 0x7A, 0xB7, 0x4D, 0x07, 0xEB, 0xF5, 0x3E, 0x27, 0xC8, + 0x0A, 0x76, 0x7A, 0x03, 0x82, 0xDD, 0x6B, 0x00, 0x00, 0xCC, 0x1C, 0x63, 0x40, 0xC0, 0x3C, 0x27, + 0x30, 0x13, 0x71, 0x25, 0x4B, 0x95, 0x0B, 0xF7, 0x10, 0xD1, 0x18, 0x23, 0x31, 0x8A, 0xAB, 0x44, + 0x84, 0x44, 0x18, 0x63, 0x30, 0x53, 0x22, 0x70, 0x51, 0x01, 0x08, 0x84, 0x40, 0xC4, 0x0E, 0x91, + 0xAE, 0x1E, 0x91, 0x9A, 0xA9, 0x11, 0xE1, 0x18, 0x78, 0x05, 0xDD, 0x8D, 0x31, 0x8B, 0x70, 0x92, + 0xE3, 0x6E, 0xB8, 0x3F, 0x8C, 0xC7, 0xFD, 0x48, 0x84, 0x29, 0x49, 0x00, 0x00, 0x55, 0x5B, 0x4D, + 0x7C, 0xE9, 0x09, 0xC0, 0xC4, 0xCC, 0x4C, 0xC4, 0x62, 0x20, 0x53, 0x32, 0x2A, 0xD8, 0x1F, 0x03, + 0x23, 0x60, 0x0C, 0x1C, 0x22, 0x6F, 0xAB, 0xC9, 0xE4, 0x52, 0xB1, 0x49, 0x1A, 0x51, 0x73, 0xE9, + 0xA0, 0x85, 0x10, 0x41, 0x0D, 0xDC, 0x32, 0x5D, 0xD7, 0x0C, 0x00, 0xBB, 0x29, 0xBE, 0x9C, 0x97, + 0x4F, 0x9F, 0x4F, 0x44, 0xA8, 0x66, 0xEB, 0x9A, 0x2F, 0xCB, 0xCA, 0x44, 0xCE, 0x36, 0x2E, 0xFF, + 0x44, 0x9C, 0xB4, 0x60, 0x88, 0x01, 0x11, 0x52, 0x96, 0xA5, 0x70, 0x3E, 0x8A, 0x9A, 0x96, 0x9F, + 0x9B, 0x99, 0xE9, 0x32, 0x6A, 0xE3, 0x84, 0x4D, 0x81, 0x2A, 0x54, 0x85, 0x6E, 0x21, 0x3B, 0x04, + 0x10, 0x16, 0x95, 0xCA, 0x75, 0x4C, 0x43, 0x2C, 0x64, 0x0F, 0x68, 0xB6, 0x69, 0xCE, 0x1B, 0x7B, + 0x20, 0x8A, 0xEA, 0x17, 0xF7, 0xE3, 0x18, 0xF9, 0xE9, 0xBC, 0x66, 0xC6, 0x35, 0xAB, 0xA8, 0xD3, + 0x3B, 0xEE, 0x06, 0x06, 0x83, 0xE3, 0x3E, 0x8A, 0x9A, 0x9A, 0x89, 0xC2, 0x9A, 0xF5, 0xB8, 0x0B, + 0x5F, 0xDC, 0x4F, 0xFB, 0x29, 0x1E, 0x76, 0x71, 0x37, 0x06, 0x33, 0x43, 0x84, 0x24, 0xF2, 0xC3, + 0xCB, 0xFC, 0x7C, 0x59, 0x09, 0x29, 0x9B, 0x12, 0xFA, 0x14, 0x8A, 0x58, 0x6B, 0x24, 0xE4, 0xF4, + 0xB7, 0x66, 0x55, 0xB3, 0x21, 0x10, 0x02, 0x24, 0x05, 0x30, 0xC8, 0x62, 0x4C, 0x98, 0xC4, 0x7A, + 0x24, 0x21, 0x44, 0x40, 0xAC, 0xDA, 0x25, 0xAC, 0x59, 0x5F, 0xE6, 0x44, 0x08, 0xEF, 0xEF, 0x26, + 0xFF, 0x55, 0x14, 0x7A, 0x3E, 0x80, 0xBA, 0x5C, 0x6F, 0x3D, 0x58, 0x4D, 0x8A, 0xC2, 0x6F, 0xFE, + 0xC5, 0xF6, 0xEB, 0x2D, 0x53, 0xB9, 0xFA, 0x61, 0x7A, 0x18, 0x79, 0xBF, 0x8B, 0xEF, 0xEE, 0xA7, + 0xFD, 0x34, 0xEE, 0xA6, 0x51, 0xAB, 0x2E, 0xD6, 0x56, 0xB2, 0xFD, 0x6A, 0xD7, 0xEA, 0xD8, 0xEB, + 0xA7, 0xD7, 0x7A, 0x0A, 0x93, 0x81, 0x76, 0xA2, 0x08, 0xAA, 0x22, 0x60, 0x48, 0x06, 0x4D, 0x7F, + 0x6A, 0xCD, 0x6A, 0x9B, 0x86, 0xB6, 0xD6, 0x10, 0x31, 0x30, 0x0D, 0x21, 0xC2, 0x15, 0x03, 0x6F, + 0xAC, 0x0E, 0x75, 0x7A, 0x06, 0xC5, 0x61, 0x51, 0x7E, 0x2D, 0x64, 0x54, 0xF1, 0x4B, 0xB5, 0xD9, + 0x6B, 0x52, 0xD5, 0xA2, 0xA2, 0xB0, 0x82, 0x6D, 0x5A, 0x0F, 0x5A, 0xAF, 0x06, 0x11, 0xE1, 0xF6, + 0xE2, 0xF5, 0x1C, 0x7B, 0xDB, 0xDD, 0x3F, 0xE9, 0xF1, 0xAB, 0xEA, 0x3B, 0xDB, 0xDE, 0xDC, 0x40, + 0xB3, 0xA1, 0x81, 0x6E, 0xEB, 0xD9, 0x10, 0xB1, 0xFF, 0xCA, 0x0D, 0xF4, 0xB4, 0x01, 0xF4, 0x6D, + 0x22, 0x01, 0x02, 0x98, 0xB6, 0x06, 0x4A, 0x17, 0x65, 0x39, 0x00, 0xDA, 0xEC, 0x1C, 0x13, 0xFB, + 0xC1, 0xF4, 0x1D, 0xF9, 0x87, 0x4C, 0x80, 0x82, 0xD9, 0x14, 0x15, 0xD7, 0x25, 0xDB, 0x50, 0xB6, + 0x8C, 0x10, 0x98, 0x89, 0x18, 0x99, 0xC9, 0xD4, 0x88, 0x89, 0x08, 0x89, 0x10, 0x31, 0x00, 0x40, + 0xD5, 0x69, 0xCB, 0xD8, 0x98, 0xB9, 0xAE, 0x06, 0x18, 0x21, 0x12, 0x32, 0x53, 0x0C, 0x7C, 0x9E, + 0x93, 0xA8, 0xAD, 0x8B, 0xAE, 0x49, 0xD2, 0x50, 0x1C, 0x0D, 0xCC, 0xA1, 0xB4, 0xD2, 0x3F, 0x02, + 0x86, 0x00, 0xA6, 0xA0, 0xAE, 0x1B, 0x81, 0x4D, 0x43, 0x8C, 0x81, 0x8A, 0x9E, 0x0B, 0x48, 0xEC, + 0x32, 0x10, 0xDC, 0xD8, 0x7F, 0x0D, 0xD2, 0x11, 0xDD, 0x69, 0xA2, 0x56, 0xA1, 0xC7, 0xCC, 0x22, + 0x10, 0x11, 0x1D, 0xF7, 0xA3, 0x81, 0xA9, 0xDA, 0x5E, 0x0D, 0xDF, 0x01, 0x33, 0x01, 0x20, 0x21, + 0x64, 0xD1, 0xCF, 0xCF, 0x17, 0x03, 0x5B, 0xD6, 0xBC, 0x66, 0xC9, 0xA2, 0x66, 0x38, 0x46, 0xDE, + 0x8D, 0x43, 0x8C, 0xAE, 0xF1, 0x15, 0x05, 0x5F, 0xD5, 0x88, 0x10, 0x17, 0x48, 0x49, 0x0B, 0x54, + 0x55, 0x14, 0xF3, 0x55, 0xD5, 0x5E, 0xC0, 0x00, 0x18, 0x80, 0x98, 0x6B, 0x13, 0x65, 0xD1, 0xB5, + 0xC1, 0x5C, 0xC7, 0xCE, 0x76, 0xAB, 0xAA, 0x5D, 0x3D, 0x66, 0x76, 0xB7, 0x8B, 0x6A, 0xF6, 0xF9, + 0xB4, 0x9E, 0x17, 0x89, 0x8C, 0x91, 0x5D, 0xC5, 0x45, 0x00, 0xCB, 0x6A, 0x7B, 0xC2, 0x2C, 0xF6, + 0x7C, 0x49, 0x4B, 0x52, 0x05, 0x58, 0xB3, 0x1C, 0xA7, 0xF1, 0xEB, 0xF7, 0x87, 0x94, 0x95, 0xD0, + 0x15, 0x07, 0xFC, 0xDB, 0xDF, 0xFF, 0xF0, 0xDD, 0xE7, 0xCB, 0x22, 0x9A, 0xC5, 0x39, 0xC7, 0xE9, + 0xBB, 0xF0, 0x40, 0xED, 0xE7, 0x4A, 0xDA, 0x21, 0xE0, 0x9A, 0xD5, 0xED, 0x11, 0x9F, 0xA3, 0xCA, + 0xED, 0x08, 0xB5, 0xFB, 0x0E, 0x02, 0x44, 0xA6, 0xC3, 0x14, 0xC6, 0x81, 0xD7, 0x94, 0x01, 0x70, + 0x59, 0x15, 0x00, 0x68, 0x23, 0x63, 0x43, 0x84, 0xA2, 0x4E, 0xBE, 0x52, 0x8C, 0x10, 0x8A, 0x06, + 0xE4, 0x0B, 0x62, 0x86, 0x08, 0x0A, 0x80, 0x70, 0xCD, 0x2A, 0xBD, 0x23, 0x46, 0x4D, 0x3F, 0x1E, + 0xC7, 0x2F, 0x1E, 0xF6, 0x1F, 0xDF, 0x1D, 0x86, 0x21, 0x6E, 0x84, 0x5F, 0x99, 0xCD, 0x99, 0xDF, + 0x1D, 0x40, 0x00, 0x57, 0x38, 0xD8, 0x2F, 0x2F, 0x74, 0x2A, 0x49, 0x6F, 0xC7, 0x99, 0x19, 0x02, + 0x9A, 0x9A, 0xE1, 0x86, 0x14, 0x88, 0xC5, 0x0F, 0xEB, 0xAA, 0x13, 0x12, 0xBA, 0xAA, 0x95, 0x55, + 0x9D, 0x08, 0x88, 0x50, 0x64, 0x63, 0x57, 0x42, 0x9C, 0xC6, 0xB1, 0xB9, 0xD2, 0x5C, 0x43, 0x0C, + 0x21, 0xB4, 0xE5, 0xB6, 0x6B, 0x43, 0xAC, 0xB8, 0x88, 0x2B, 0xDC, 0xF8, 0x14, 0xDC, 0x31, 0xA2, + 0xE5, 0xBF, 0x8D, 0xE5, 0x6E, 0x98, 0xDF, 0xAC, 0x89, 0x42, 0x24, 0x72, 0x1D, 0x0F, 0x7C, 0x48, + 0x6D, 0x3C, 0xDD, 0xCB, 0x6A, 0xC6, 0xB5, 0x11, 0x64, 0x66, 0xE8, 0x40, 0xA1, 0x5F, 0x46, 0x00, + 0x70, 0xD7, 0x21, 0x22, 0x42, 0x9D, 0x42, 0xE5, 0x7C, 0x6D, 0x20, 0xE2, 0xAD, 0x83, 0xD5, 0xDE, + 0x8B, 0x38, 0x2A, 0x9A, 0x97, 0x2B, 0xFE, 0x0D, 0x8C, 0x6E, 0x90, 0x08, 0x08, 0xC0, 0xAE, 0xB0, + 0xD2, 0xE7, 0xAB, 0x1D, 0x06, 0xDF, 0x20, 0x63, 0x2F, 0x15, 0xCC, 0x9A, 0x7A, 0x01, 0x88, 0xC0, + 0x40, 0x08, 0x20, 0xAA, 0x54, 0x76, 0x1F, 0x10, 0x49, 0xCD, 0x02, 0x32, 0x12, 0x19, 0x29, 0x62, + 0x71, 0x0E, 0x78, 0x0B, 0xCC, 0x08, 0x40, 0x66, 0x26, 0xB2, 0xAD, 0x2D, 0x00, 0xB8, 0x66, 0x87, + 0x00, 0x84, 0x34, 0x84, 0xA0, 0x83, 0x9D, 0xE6, 0xD5, 0xD4, 0x44, 0x6D, 0x5E, 0xF3, 0x9A, 0x24, + 0x8B, 0x46, 0x33, 0x22, 0x0C, 0xA5, 0x2D, 0x02, 0x46, 0x72, 0x07, 0x0D, 0x00, 0x28, 0x18, 0x16, + 0x53, 0x4B, 0x00, 0x00, 0x71, 0x88, 0x01, 0xB0, 0xAC, 0x8E, 0x01, 0x60, 0x0C, 0xDC, 0x1B, 0xF0, + 0x00, 0x37, 0x6C, 0x61, 0x08, 0x44, 0x7C, 0x4B, 0xD0, 0x6D, 0x21, 0xA6, 0xA9, 0x88, 0x47, 0x42, + 0x24, 0xA6, 0x03, 0xF3, 0x34, 0x0D, 0x22, 0x9A, 0x45, 0xCE, 0x97, 0xF5, 0xBB, 0xC7, 0xD3, 0x65, + 0x4E, 0xAA, 0xB4, 0xE6, 0x8C, 0x04, 0x31, 0xF0, 0x61, 0x8A, 0xEE, 0xFE, 0x77, 0x0C, 0x50, 0xB5, + 0x94, 0x57, 0x77, 0x09, 0x6E, 0xC2, 0xAE, 0x91, 0x4D, 0x27, 0xC0, 0x7B, 0x56, 0xE9, 0x41, 0xC2, + 0xAC, 0xA9, 0x42, 0x3E, 0xDA, 0x46, 0x00, 0x0D, 0xCD, 0x5C, 0x55, 0x2F, 0xE6, 0xAA, 0x98, 0x5D, + 0x2E, 0xE2, 0xCE, 0xB8, 0xAC, 0x30, 0x20, 0x22, 0x00, 0x12, 0xA8, 0x82, 0x88, 0xCD, 0x49, 0x44, + 0x4D, 0x2A, 0x25, 0x29, 0xC0, 0x2A, 0x3A, 0x2F, 0x39, 0x38, 0xE8, 0x03, 0x3E, 0x9D, 0xE6, 0x3F, + 0x7E, 0x3A, 0x0F, 0x81, 0x46, 0x24, 0x51, 0x49, 0xE2, 0xBE, 0xF3, 0xD6, 0x51, 0xF5, 0xD0, 0xBC, + 0x56, 0x56, 0x6C, 0x1B, 0xD0, 0xEB, 0xA7, 0x70, 0x11, 0x00, 0x00, 0xC4, 0x80, 0xBB, 0x18, 0x76, + 0x03, 0xDF, 0xED, 0xA2, 0x81, 0x1D, 0xF7, 0xC3, 0x79, 0x4E, 0x88, 0x05, 0x9E, 0xAA, 0xA0, 0xC6, + 0xD2, 0x62, 0x93, 0xDE, 0xB5, 0x4B, 0x02, 0x73, 0x12, 0xF4, 0x81, 0x80, 0x99, 0x1B, 0x69, 0x50, + 0x4D, 0x8E, 0xD6, 0xA3, 0x99, 0x0D, 0x81, 0x76, 0x91, 0xD7, 0x2C, 0x3F, 0xFB, 0xE2, 0xFE, 0xCF, + 0x3E, 0x1E, 0xF7, 0xBB, 0x21, 0xC4, 0xD8, 0x2F, 0x75, 0xFB, 0xC1, 0x9D, 0x3E, 0x4D, 0xB9, 0x78, + 0x6B, 0x86, 0xDB, 0xCB, 0x15, 0x39, 0xA4, 0x3A, 0xF5, 0xCB, 0x90, 0x0B, 0x7C, 0xA3, 0x31, 0x13, + 0x56, 0x83, 0xC8, 0x7F, 0x20, 0x2E, 0xDC, 0xE0, 0x5E, 0x00, 0xAB, 0x6A, 0x04, 0x11, 0xAA, 0xBA, + 0x1F, 0x07, 0xC7, 0x21, 0x12, 0x91, 0x4B, 0x78, 0xB3, 0xE2, 0x05, 0xEF, 0x21, 0xF5, 0x86, 0x5A, + 0xD0, 0xB6, 0xF1, 0xB4, 0x17, 0x0A, 0x8A, 0x99, 0xB9, 0x41, 0x60, 0x55, 0x81, 0xE9, 0x15, 0xA5, + 0x2A, 0xBC, 0x5D, 0x9F, 0x02, 0x03, 0x73, 0x7D, 0x99, 0x2A, 0xAB, 0x5B, 0xE7, 0x37, 0xF4, 0xAF, + 0xAB, 0xAA, 0x3B, 0x67, 0xA0, 0xA3, 0x52, 0xC7, 0x7D, 0x5F, 0xBA, 0x86, 0x62, 0x8D, 0x7D, 0xAE, + 0x7D, 0xFC, 0xDA, 0x4F, 0x04, 0x5D, 0x37, 0x47, 0xE8, 0xBD, 0xC3, 0xE0, 0xFE, 0x44, 0x00, 0x20, + 0xDF, 0x91, 0xD2, 0xEF, 0x15, 0x0C, 0x35, 0x16, 0xE8, 0xA6, 0xEC, 0x4E, 0x77, 0xEC, 0x24, 0x59, + 0xBF, 0x5F, 0x76, 0xAD, 0x77, 0xFB, 0xC0, 0x8A, 0x67, 0x9C, 0x8A, 0x29, 0x56, 0xBD, 0xE7, 0x80, + 0x88, 0x46, 0x00, 0x68, 0x06, 0x4C, 0x68, 0xD5, 0xBF, 0x49, 0xAD, 0x35, 0x77, 0x11, 0x98, 0x19, + 0x11, 0x98, 0x75, 0xDE, 0x12, 0xDF, 0x32, 0x55, 0x04, 0x22, 0xC6, 0x18, 0x78, 0x3F, 0xC6, 0x94, + 0x34, 0x04, 0x3A, 0xEE, 0x87, 0xBB, 0xFD, 0x80, 0x88, 0x39, 0x0B, 0x22, 0x04, 0x3F, 0x7A, 0xE4, + 0xD7, 0xB4, 0x05, 0xA0, 0x60, 0x6C, 0x98, 0xB2, 0x22, 0xAC, 0x29, 0x13, 0x11, 0xC5, 0x40, 0x31, + 0x84, 0x21, 0xB0, 0xAB, 0x72, 0x3D, 0x81, 0xDE, 0x50, 0x30, 0x34, 0x1F, 0x56, 0xA7, 0x32, 0xA8, + 0x36, 0x9B, 0x0F, 0x89, 0x30, 0x65, 0xCD, 0xAA, 0x03, 0xC2, 0x9C, 0x65, 0x5E, 0xD3, 0x10, 0xE2, + 0x34, 0xC4, 0xC8, 0xCC, 0x8C, 0x7F, 0xFF, 0xCD, 0xD3, 0xB2, 0x66, 0x44, 0xD8, 0x4F, 0xC3, 0x6E, + 0x8A, 0x86, 0x38, 0xAF, 0x89, 0x10, 0x0D, 0x60, 0x4D, 0x32, 0xAF, 0x59, 0xD5, 0x10, 0x01, 0x0C, + 0xAD, 0x03, 0x1E, 0x2B, 0x44, 0x58, 0x97, 0xB8, 0xA3, 0xD0, 0xEB, 0x11, 0x82, 0x3B, 0x4C, 0xCC, + 0xA0, 0x1E, 0x6D, 0xA1, 0x0B, 0xB7, 0xF6, 0xBA, 0x0F, 0xBE, 0x9E, 0x21, 0xC0, 0x69, 0x16, 0x42, + 0x18, 0x02, 0xB9, 0xF3, 0x7D, 0xCD, 0x9B, 0x8B, 0xC1, 0x00, 0xD4, 0xE0, 0xBC, 0x0A, 0x34, 0x34, + 0x32, 0x30, 0xB3, 0x71, 0x08, 0x31, 0xD0, 0xB2, 0xE6, 0x1F, 0x9E, 0x2F, 0x4F, 0x97, 0x64, 0x00, + 0xAB, 0x68, 0x64, 0x9C, 0x22, 0x9B, 0xA9, 0xF8, 0xC9, 0xC7, 0x8D, 0x5D, 0xB0, 0x3D, 0xAE, 0x6D, + 0x00, 0x20, 0x10, 0xA0, 0x81, 0xAB, 0x46, 0xDB, 0xF2, 0xF6, 0xD3, 0x71, 0x3C, 0x62, 0xC4, 0xBB, + 0x5D, 0xF8, 0xEA, 0x61, 0x6F, 0x00, 0x97, 0x94, 0x22, 0xB3, 0x59, 0x4A, 0xA2, 0x8C, 0x75, 0xC6, + 0x15, 0xA0, 0x6A, 0xC3, 0x45, 0x2D, 0x04, 0x28, 0xA8, 0x5A, 0xF5, 0x11, 0x6C, 0xAF, 0x36, 0x8F, + 0x54, 0x5D, 0x11, 0xC7, 0x40, 0x03, 0xB3, 0xAF, 0xDE, 0x4D, 0x3F, 0xFF, 0xFA, 0xDD, 0x6E, 0x0C, + 0x6A, 0xC0, 0xBC, 0x91, 0x0F, 0x76, 0x46, 0x47, 0x4A, 0x09, 0x00, 0x62, 0x8C, 0x6F, 0x8C, 0xF9, + 0x35, 0xBD, 0x99, 0x39, 0xC9, 0x8A, 0x5E, 0x59, 0x19, 0x00, 0xD5, 0x1A, 0x36, 0x54, 0x54, 0x25, + 0x2A, 0x00, 0x4B, 0xD5, 0x0B, 0xE5, 0x3D, 0xAA, 0x9A, 0x9A, 0xA9, 0xF5, 0x98, 0x0D, 0x08, 0x91, + 0x39, 0x86, 0xC8, 0xCC, 0x3E, 0xC8, 0x9C, 0x33, 0x54, 0xF6, 0xB0, 0xEA, 0xB1, 0xEE, 0xB5, 0x0C, + 0xEF, 0xD5, 0xAE, 0xB4, 0x9E, 0xC2, 0x96, 0x04, 0x28, 0x1B, 0x6D, 0x6F, 0x7A, 0xDC, 0xA6, 0xC5, + 0x98, 0xAF, 0x91, 0x21, 0x35, 0xF1, 0x83, 0x6D, 0x61, 0xBD, 0xD3, 0x36, 0x59, 0x6F, 0xBF, 0xE9, + 0xAA, 0x9D, 0x7A, 0x64, 0xAE, 0x7C, 0xF5, 0x5D, 0xB8, 0x2D, 0xDB, 0xBA, 0x2B, 0xC7, 0x66, 0x58, + 0x4C, 0x51, 0x73, 0x5D, 0x6B, 0xD3, 0x79, 0x6F, 0xE9, 0xAA, 0x0C, 0xC0, 0x4D, 0x76, 0x55, 0xAB, + 0xBA, 0x45, 0x73, 0x62, 0x16, 0xE7, 0x7A, 0x47, 0x83, 0x75, 0x38, 0xD8, 0xD4, 0x82, 0x1E, 0xB9, + 0x7A, 0x20, 0xC3, 0xEE, 0x05, 0x33, 0xAB, 0xC6, 0x31, 0x82, 0x47, 0x26, 0x54, 0xD1, 0xE3, 0xC3, + 0x31, 0x8F, 0x6A, 0xE8, 0x46, 0xDB, 0xBA, 0xEB, 0x7E, 0xED, 0xEC, 0xF0, 0xBA, 0x88, 0x44, 0x45, + 0x22, 0x30, 0x11, 0x11, 0x9A, 0xC1, 0x38, 0xC4, 0x18, 0x58, 0xD4, 0x54, 0x15, 0x11, 0x82, 0x37, + 0xA9, 0x56, 0x24, 0x11, 0x34, 0x9F, 0xA8, 0x81, 0xBB, 0xA5, 0x11, 0x51, 0xD4, 0x0C, 0x34, 0x18, + 0x60, 0x60, 0x04, 0x20, 0xC6, 0x1E, 0xA4, 0x5E, 0x53, 0x67, 0xE7, 0xE3, 0x00, 0xA8, 0x5A, 0xB1, + 0x7F, 0xA0, 0x06, 0x92, 0xD5, 0x17, 0x31, 0x67, 0x11, 0x51, 0x15, 0xCD, 0x22, 0xA2, 0x46, 0x80, + 0x43, 0x1C, 0x95, 0x70, 0x8C, 0xE1, 0xDD, 0x71, 0x4A, 0x59, 0xA6, 0x21, 0x12, 0xE1, 0xF9, 0xB2, + 0xFA, 0xF9, 0xAB, 0xF7, 0xB5, 0x24, 0xC9, 0x6A, 0x6A, 0x2E, 0xEE, 0x5C, 0xC3, 0x28, 0xFA, 0x54, + 0x03, 0x35, 0x2B, 0x4E, 0x5C, 0xB4, 0x57, 0x9E, 0xE6, 0x1E, 0x6F, 0xB5, 0x90, 0xD4, 0x95, 0xDB, + 0x08, 0x71, 0x6B, 0xAD, 0xC3, 0x41, 0x50, 0xB3, 0x25, 0x17, 0x39, 0x4C, 0x08, 0x06, 0xC5, 0x61, + 0x4F, 0xDB, 0xD6, 0x22, 0x23, 0x26, 0x35, 0x26, 0xCC, 0x62, 0xCB, 0x9A, 0x52, 0xC2, 0xF3, 0x92, + 0x1E, 0x4F, 0xAB, 0x01, 0x10, 0xE1, 0x92, 0x64, 0x49, 0x30, 0x04, 0x3A, 0x4E, 0x7C, 0x5A, 0x44, + 0xD5, 0xCA, 0x59, 0xD3, 0xAB, 0x9D, 0xF3, 0x1E, 0xD1, 0xDC, 0x4F, 0x68, 0x04, 0x80, 0x00, 0x0A, + 0xDB, 0xDE, 0x3B, 0x75, 0x68, 0x25, 0x0D, 0x42, 0x73, 0xF2, 0x00, 0x04, 0x33, 0x63, 0xC4, 0x35, + 0xCB, 0x79, 0xC9, 0xA5, 0xA1, 0x8A, 0x4E, 0xED, 0x37, 0x32, 0x00, 0xC7, 0x83, 0x1F, 0x53, 0xF7, + 0x9A, 0x67, 0xB7, 0x7D, 0xCB, 0xCC, 0xC0, 0x98, 0x30, 0x65, 0xFB, 0xC5, 0x97, 0xFB, 0x5F, 0x7C, + 0xFD, 0x6E, 0xB7, 0x1B, 0x01, 0x20, 0xBC, 0xE5, 0x7F, 0x69, 0x54, 0x71, 0x43, 0x1E, 0x8D, 0x0D, + 0x6E, 0x3F, 0x51, 0x13, 0xC9, 0xAA, 0x9A, 0x53, 0x6E, 0xEA, 0x58, 0x73, 0xF9, 0x57, 0x08, 0x35, + 0x33, 0xAC, 0x2A, 0x9E, 0x6F, 0xFC, 0xD6, 0xB7, 0xB7, 0xE8, 0x24, 0x5E, 0x08, 0x00, 0x21, 0x84, + 0x10, 0x43, 0x70, 0xB0, 0x20, 0xA2, 0x9C, 0x73, 0xCF, 0x72, 0xF0, 0xCA, 0x8E, 0xC3, 0xAA, 0x25, + 0xB5, 0x17, 0xDA, 0x50, 0xB1, 0xD2, 0x52, 0x3F, 0xF2, 0xD7, 0x94, 0x8F, 0xC5, 0xE8, 0xBD, 0x72, + 0xEA, 0xBD, 0xFE, 0x4A, 0x0F, 0x07, 0x66, 0x26, 0x02, 0x88, 0x57, 0x1E, 0xFA, 0xA6, 0x3F, 0xD6, + 0x17, 0xB4, 0x90, 0x00, 0x40, 0x19, 0x05, 0x16, 0xDD, 0x0D, 0x0C, 0x04, 0x4A, 0x9C, 0x00, 0x02, + 0xBA, 0x75, 0xD8, 0x81, 0x5A, 0xD9, 0x64, 0x47, 0x59, 0x9F, 0x95, 0x76, 0x13, 0x29, 0xD3, 0x6C, + 0xE7, 0xE5, 0x05, 0x28, 0x37, 0x31, 0xBB, 0xC1, 0xF4, 0x5B, 0xBB, 0xDC, 0x2F, 0x26, 0xB4, 0xA3, + 0x64, 0xAC, 0x67, 0xC9, 0xD5, 0x8F, 0xE1, 0x76, 0x6E, 0x60, 0x0F, 0xB9, 0xA0, 0xFE, 0xAC, 0xF9, + 0xAD, 0xC5, 0xF4, 0x6E, 0x37, 0x89, 0xD8, 0xA2, 0x55, 0x88, 0x0C, 0x02, 0x8E, 0x10, 0x45, 0xC5, + 0x9D, 0x54, 0x58, 0x3B, 0x0D, 0xB5, 0xA1, 0xA2, 0x4D, 0x0C, 0x81, 0xC1, 0x2C, 0x67, 0xF5, 0x61, + 0xB1, 0x6B, 0xA5, 0x08, 0x43, 0xE4, 0xFD, 0x34, 0x4E, 0x63, 0x64, 0xA6, 0x10, 0x36, 0x31, 0xD2, + 0x04, 0xD7, 0x0D, 0xA5, 0x6A, 0x75, 0x21, 0x15, 0x03, 0x4D, 0xA1, 0x39, 0x3F, 0x00, 0x40, 0xD5, + 0x96, 0x75, 0x71, 0xFB, 0x7B, 0x5E, 0x12, 0x20, 0x30, 0xD1, 0x30, 0x04, 0x37, 0x1B, 0x43, 0x08, + 0x5F, 0x7D, 0xB8, 0x5B, 0x53, 0x5E, 0xB3, 0xA4, 0x2C, 0x04, 0x18, 0x02, 0x9F, 0xE6, 0x74, 0x99, + 0x73, 0x0C, 0x94, 0x44, 0xB3, 0xA8, 0x99, 0x49, 0x39, 0x8F, 0xC3, 0x06, 0x49, 0x57, 0xEB, 0x02, + 0xD0, 0xA3, 0x58, 0xED, 0xBA, 0x8B, 0xB5, 0xA9, 0x1E, 0x8D, 0x5E, 0x6B, 0x6B, 0x3B, 0xE5, 0xFA, + 0x1D, 0xC0, 0x2D, 0xCB, 0xF9, 0xA3, 0x08, 0x68, 0x40, 0xC5, 0x57, 0x8F, 0x59, 0x0C, 0x10, 0xEF, + 0x77, 0x61, 0x49, 0x9A, 0x45, 0x10, 0x80, 0x10, 0x4E, 0x4B, 0x66, 0x84, 0x35, 0xEB, 0x10, 0xD9, + 0x9D, 0x65, 0x50, 0xBD, 0x5D, 0xBB, 0x81, 0x01, 0xF0, 0xB4, 0xA4, 0x02, 0x54, 0x55, 0x64, 0xDD, + 0x32, 0x06, 0x42, 0xF5, 0x58, 0xBD, 0x1A, 0x8D, 0xFF, 0xB5, 0x6A, 0x80, 0x43, 0x20, 0x26, 0xFA, + 0x7C, 0x5A, 0xD6, 0x2C, 0x1E, 0x08, 0x92, 0x45, 0xB5, 0x5A, 0x58, 0xAF, 0xE9, 0xEF, 0x4D, 0x0B, + 0xEF, 0x2D, 0xB6, 0x84, 0xA2, 0x99, 0xAA, 0x4E, 0x91, 0x10, 0x71, 0xCD, 0x72, 0x18, 0xE9, 0x27, + 0x1F, 0x0E, 0x87, 0xC3, 0xA4, 0x9D, 0xA7, 0xB9, 0xFF, 0x7A, 0xDD, 0xE2, 0x22, 0xAE, 0xDC, 0xE2, + 0xB8, 0x89, 0xF6, 0x2A, 0x92, 0x1C, 0x8A, 0x2F, 0xD0, 0xCC, 0x3C, 0x82, 0x48, 0xAA, 0x5D, 0xD9, + 0x24, 0xA5, 0xF9, 0xE1, 0x36, 0x02, 0x12, 0x54, 0xD0, 0x53, 0x34, 0x56, 0x35, 0xE3, 0xF2, 0x5E, + 0xA7, 0x9B, 0x39, 0xAF, 0x1A, 0x21, 0x19, 0x5B, 0x60, 0x6E, 0xF1, 0x59, 0xD5, 0x0B, 0xD1, 0x14, + 0x87, 0x2D, 0xE2, 0xA1, 0x19, 0x16, 0x95, 0xC3, 0xCD, 0xAE, 0x0F, 0x3D, 0xDB, 0x4F, 0xDE, 0x78, + 0x59, 0xC3, 0x4E, 0xFD, 0x7F, 0x93, 0x48, 0xDE, 0x5C, 0xD2, 0x36, 0xFD, 0xF6, 0xB3, 0xDB, 0x8C, + 0xCD, 0x3F, 0xD6, 0x3E, 0xF7, 0xA7, 0x12, 0x46, 0x81, 0x66, 0xD7, 0x4D, 0x7C, 0xF3, 0xA9, 0x79, + 0xA8, 0x6B, 0x18, 0xC7, 0xCD, 0x18, 0xDE, 0x84, 0x1B, 0x55, 0xCD, 0x39, 0x97, 0x48, 0x94, 0x36, + 0x12, 0x03, 0xC9, 0x1B, 0x84, 0x79, 0xC7, 0xFD, 0x48, 0x6E, 0x1A, 0xBC, 0x41, 0x7F, 0x5F, 0x4C, + 0x66, 0x42, 0x40, 0x33, 0xA5, 0x2E, 0xFC, 0x4D, 0x4C, 0x97, 0x35, 0xA9, 0xDA, 0x34, 0x45, 0x57, + 0xA6, 0x9A, 0x26, 0x6D, 0xAF, 0x62, 0x44, 0xAA, 0x1D, 0xEA, 0xCB, 0x62, 0x15, 0x40, 0xBA, 0x19, + 0x55, 0x45, 0xC4, 0xBF, 0x98, 0x55, 0x87, 0xC0, 0x88, 0x28, 0xA2, 0xC1, 0x17, 0x05, 0x01, 0x10, + 0x81, 0x7D, 0x77, 0x11, 0x63, 0x44, 0x26, 0xF4, 0x60, 0x54, 0x35, 0x8D, 0x81, 0x87, 0x18, 0x63, + 0x64, 0x8F, 0x3F, 0xC4, 0xCE, 0x7C, 0xE8, 0x57, 0xBC, 0xF5, 0x87, 0x88, 0x88, 0x94, 0xB3, 0xB4, + 0xCF, 0xDD, 0x31, 0xB1, 0x7D, 0x17, 0xEC, 0xB2, 0xA4, 0xC0, 0x64, 0x06, 0x39, 0x4B, 0x8C, 0x61, + 0x1A, 0xA2, 0x47, 0x75, 0xC4, 0xC0, 0xAE, 0xFE, 0xB2, 0x12, 0x79, 0x88, 0x0E, 0x40, 0x60, 0xDA, + 0x8D, 0x31, 0x67, 0x0D, 0x4C, 0x80, 0x78, 0x5E, 0x72, 0x15, 0x5C, 0x00, 0x9D, 0xFF, 0xBE, 0x8D, + 0x81, 0xEA, 0x02, 0x34, 0x3A, 0xAA, 0x82, 0xBA, 0x70, 0xA7, 0x95, 0x65, 0x79, 0x03, 0x1F, 0xCA, + 0xC2, 0xB9, 0xE5, 0x7A, 0xFD, 0xB9, 0x13, 0x4E, 0xF9, 0x5A, 0xD1, 0x12, 0x8A, 0x34, 0x43, 0x80, + 0x79, 0x95, 0x55, 0x8C, 0x09, 0x91, 0x60, 0x8C, 0x9C, 0xB3, 0x3C, 0xAD, 0x62, 0x6A, 0x0A, 0x90, + 0x45, 0x77, 0x03, 0xA7, 0xAC, 0x86, 0x48, 0x84, 0x77, 0xBB, 0xE1, 0x30, 0x19, 0xBF, 0xC0, 0x79, + 0x95, 0x94, 0x8B, 0xB2, 0x7D, 0xC3, 0x12, 0x57, 0x74, 0x0F, 0xD5, 0x72, 0xDE, 0xCC, 0x42, 0x00, + 0xF7, 0xDC, 0x1B, 0x12, 0xE2, 0x14, 0x79, 0x8A, 0x7C, 0x5A, 0xD2, 0x69, 0x4E, 0x39, 0xF0, 0xDD, + 0x3E, 0x22, 0xF2, 0xA7, 0xE7, 0x45, 0xB5, 0x28, 0x98, 0x37, 0x24, 0xFE, 0xDF, 0x7C, 0xEA, 0x9B, + 0xE5, 0x1C, 0x2A, 0x06, 0xFA, 0x27, 0x3F, 0xFF, 0x70, 0x9E, 0x97, 0xF3, 0x9C, 0x7E, 0xF9, 0x93, + 0x77, 0xEF, 0xEE, 0xF7, 0xF6, 0xFA, 0xB0, 0xA0, 0xFB, 0xAE, 0xF3, 0x43, 0xB1, 0x9B, 0x6C, 0x6B, + 0xB0, 0x0F, 0xA7, 0x6C, 0xD4, 0x03, 0x00, 0xAA, 0xA2, 0x66, 0xB9, 0xC6, 0x92, 0x42, 0xAF, 0xD9, + 0xA1, 0xB9, 0xB1, 0x66, 0x65, 0xE6, 0x0D, 0xDB, 0x51, 0x45, 0x19, 0x09, 0xF8, 0x4A, 0x91, 0x31, + 0x33, 0x37, 0x92, 0x88, 0x83, 0xDB, 0xF8, 0xCD, 0x80, 0x72, 0xB7, 0x4F, 0x1F, 0x62, 0x7A, 0x25, + 0x9C, 0xD4, 0xA0, 0x46, 0x87, 0x69, 0x77, 0x78, 0x7D, 0x35, 0x24, 0x0F, 0x44, 0x81, 0x62, 0xBF, + 0x80, 0x4B, 0x93, 0xFA, 0xC2, 0x9B, 0x0B, 0xD2, 0x2C, 0xB8, 0x37, 0x57, 0xD8, 0xC7, 0xCC, 0x4C, + 0x37, 0xB6, 0x8D, 0x7F, 0xDE, 0x83, 0x85, 0xA3, 0x98, 0x2F, 0xA9, 0xDB, 0x92, 0xA5, 0x1D, 0x42, + 0x06, 0x02, 0x00, 0xB5, 0x6D, 0xD8, 0x37, 0x58, 0xD6, 0xD6, 0xF9, 0x3A, 0xEC, 0xCE, 0x55, 0x10, + 0x04, 0x8F, 0xA7, 0xEB, 0xE2, 0x8D, 0xAD, 0x93, 0xAA, 0x37, 0x22, 0xF6, 0x15, 0x9B, 0x83, 0xDB, + 0x7C, 0x44, 0xE4, 0x6F, 0x30, 0xB1, 0x87, 0xE3, 0xFA, 0xAC, 0x45, 0xDC, 0x8B, 0x62, 0x60, 0x50, + 0x14, 0xA0, 0x6B, 0xE1, 0x77, 0x83, 0x65, 0xB5, 0x2F, 0x17, 0x73, 0x57, 0x6E, 0x3B, 0x28, 0x48, + 0x65, 0xE0, 0xB1, 0x0A, 0x66, 0x44, 0x9A, 0x05, 0x40, 0x20, 0x8B, 0x06, 0x30, 0x53, 0x04, 0xF2, + 0x10, 0x1C, 0x30, 0x53, 0x60, 0xC6, 0x18, 0x38, 0x30, 0x31, 0xA1, 0x99, 0x8D, 0x31, 0x86, 0x40, + 0x88, 0xE0, 0x6E, 0xA9, 0x7E, 0x7D, 0xDB, 0xC4, 0x7A, 0x2C, 0xF3, 0x87, 0xC8, 0x10, 0x21, 0x25, + 0x11, 0x91, 0x10, 0x78, 0x18, 0x62, 0x95, 0xCC, 0x98, 0xB3, 0x4E, 0xE3, 0x30, 0xC4, 0xE8, 0x7E, + 0x5D, 0xD3, 0xC1, 0x00, 0x86, 0x21, 0xB6, 0x98, 0xEF, 0x2C, 0xA6, 0x49, 0x53, 0x96, 0x25, 0xE5, + 0xE7, 0xF3, 0x9A, 0xB2, 0x88, 0x1A, 0x21, 0x30, 0xB3, 0xB3, 0x32, 0xD5, 0x00, 0x8A, 0x1B, 0x59, + 0x51, 0x9D, 0xFE, 0xDB, 0xBF, 0xFD, 0x5F, 0xCB, 0x9E, 0xB6, 0x95, 0xA9, 0x51, 0xB2, 0xFD, 0xAB, + 0x1B, 0x35, 0xBD, 0x82, 0xB1, 0xB2, 0x7F, 0xE8, 0xD1, 0x93, 0x57, 0xB2, 0xC2, 0xB3, 0x08, 0xD6, + 0xAC, 0xA5, 0x59, 0x85, 0x35, 0xCB, 0x65, 0xA5, 0x25, 0x89, 0x19, 0xA8, 0xD9, 0x14, 0x79, 0x8A, + 0x01, 0x0F, 0x08, 0x00, 0x4B, 0x92, 0x4B, 0xCA, 0x97, 0x25, 0xFB, 0xFB, 0x4E, 0x0D, 0x3F, 0x62, + 0xE0, 0xF5, 0x53, 0x40, 0xF3, 0xC8, 0xA9, 0xCE, 0x82, 0x86, 0xEA, 0x7A, 0x0F, 0xEE, 0xDB, 0x06, + 0x64, 0xC6, 0xBB, 0x5D, 0x1C, 0x23, 0xCF, 0xAB, 0x24, 0xF1, 0x9D, 0x42, 0xC4, 0x6B, 0x6A, 0x78, + 0x53, 0xFB, 0xAB, 0x73, 0xEF, 0xC8, 0x14, 0xC0, 0xF4, 0x30, 0x86, 0xAF, 0x1E, 0xA6, 0xFD, 0x34, + 0x7C, 0xF9, 0x6E, 0xFF, 0xF9, 0x09, 0x7E, 0xF2, 0xE1, 0xEE, 0xFD, 0xBB, 0xC3, 0x6B, 0x43, 0xF8, + 0x6A, 0xE9, 0xBA, 0x5F, 0x55, 0x04, 0x0C, 0x10, 0x88, 0xCA, 0x21, 0x3F, 0x68, 0x0D, 0x26, 0x2D, + 0xA3, 0x77, 0x52, 0xD6, 0x6A, 0xCE, 0xD4, 0xA0, 0x39, 0x7F, 0xA1, 0x77, 0x60, 0xD5, 0x1F, 0x80, + 0xAA, 0xE6, 0xD2, 0x74, 0x15, 0xA8, 0xF6, 0x60, 0x73, 0x2D, 0x63, 0xD1, 0xC3, 0xFC, 0x28, 0xD0, + 0x44, 0x45, 0xA5, 0x04, 0x37, 0xF5, 0x0D, 0xDE, 0x32, 0xBC, 0x23, 0x88, 0x6D, 0x46, 0x86, 0x75, + 0x4F, 0xED, 0xDD, 0xD4, 0x8A, 0xD1, 0x5F, 0x06, 0xD0, 0xF9, 0xA4, 0xAE, 0xB7, 0xEC, 0x56, 0xD2, + 0xB7, 0xC5, 0xEF, 0x7F, 0x00, 0xC7, 0x50, 0xF3, 0xF3, 0xC4, 0xE2, 0xF6, 0xEE, 0x7D, 0x67, 0x55, + 0x9D, 0xDD, 0xE2, 0x66, 0x91, 0xB7, 0xF8, 0x27, 0xF4, 0x43, 0x5C, 0x33, 0x50, 0x53, 0x54, 0x28, + 0x51, 0x41, 0xD0, 0xB8, 0xB2, 0x2E, 0x66, 0x41, 0xB3, 0x7A, 0xE2, 0xA1, 0x66, 0x00, 0xE6, 0x5E, + 0x86, 0x12, 0xDC, 0x5F, 0x5E, 0xED, 0x24, 0xDF, 0x6B, 0x3A, 0xB9, 0xA2, 0x10, 0x57, 0x0C, 0xA9, + 0x84, 0xF5, 0xAB, 0xBB, 0x38, 0xAB, 0xDD, 0x91, 0x55, 0x44, 0x2C, 0x89, 0x22, 0x52, 0x64, 0x66, + 0x22, 0x35, 0x23, 0xD8, 0x16, 0xBC, 0x07, 0x90, 0x9B, 0x96, 0x5D, 0x33, 0x41, 0x40, 0xBC, 0x05, + 0x38, 0x20, 0x26, 0x40, 0x83, 0x0C, 0x62, 0x4A, 0x48, 0x66, 0x96, 0x44, 0xC1, 0x2C, 0xB4, 0x48, + 0x47, 0x87, 0x64, 0x00, 0x33, 0xE3, 0x2A, 0x28, 0x98, 0xC9, 0x97, 0x21, 0x20, 0x02, 0x93, 0x89, + 0x20, 0x80, 0xB9, 0x75, 0xD9, 0x62, 0x5E, 0xFA, 0x2D, 0xE9, 0x7F, 0x66, 0xE6, 0x18, 0xAD, 0x0F, + 0xC5, 0xF6, 0x1F, 0x3C, 0x0A, 0xCE, 0xCC, 0xCC, 0xC8, 0x0C, 0x44, 0x44, 0xB2, 0x35, 0xA1, 0xA5, + 0x22, 0x22, 0x96, 0xB2, 0x5C, 0xE6, 0xF5, 0xB2, 0xE4, 0x65, 0xCD, 0xA7, 0x25, 0x03, 0x40, 0x64, + 0x22, 0x35, 0x42, 0x90, 0xEA, 0x2B, 0x32, 0x0F, 0x10, 0xB0, 0xED, 0xC0, 0x0F, 0xA1, 0x66, 0x4D, + 0xD5, 0x35, 0xAF, 0xC1, 0xE8, 0x60, 0x55, 0xC3, 0xEA, 0xA4, 0x1E, 0x54, 0x0B, 0xE6, 0x6A, 0xF0, + 0x58, 0xB5, 0x2E, 0xBA, 0x8E, 0xEF, 0xC7, 0x02, 0x61, 0xA0, 0x06, 0x00, 0x46, 0xF5, 0xFC, 0xDF, + 0xAC, 0x1C, 0x12, 0x11, 0x41, 0x60, 0x8A, 0x4C, 0x77, 0xBB, 0x78, 0x9C, 0xE2, 0x7E, 0x8A, 0x2F, + 0x97, 0xF5, 0x34, 0x27, 0x40, 0xF8, 0x70, 0xB7, 0xBB, 0xDB, 0x0D, 0x4F, 0xE7, 0xC5, 0xD4, 0x3E, + 0xBD, 0x2C, 0xCF, 0xE7, 0x35, 0x89, 0x25, 0xD1, 0xE6, 0x48, 0x70, 0xC0, 0x69, 0x34, 0x07, 0xD7, + 0xFD, 0x56, 0xB6, 0xA9, 0x52, 0x71, 0x23, 0x2B, 0x60, 0x84, 0x94, 0xF5, 0x87, 0xB4, 0x42, 0xC9, + 0x13, 0x81, 0x1F, 0x4E, 0xEB, 0xB8, 0x12, 0x00, 0xDE, 0xEF, 0xE2, 0x92, 0xD5, 0x63, 0x6B, 0x6F, + 0xB6, 0xE6, 0xAA, 0xE5, 0x8E, 0x50, 0x9A, 0x6E, 0x5E, 0x98, 0x81, 0xF0, 0xA7, 0xEF, 0xF7, 0x3F, + 0xFB, 0xF2, 0x6E, 0x1A, 0x63, 0x4A, 0xF9, 0xB0, 0x1B, 0xF6, 0xFB, 0xB1, 0xB9, 0x3C, 0x6E, 0x9E, + 0xC6, 0xB7, 0x5A, 0xFC, 0xEE, 0xEE, 0xB6, 0x57, 0x50, 0x40, 0x55, 0x50, 0xF3, 0x98, 0x37, 0x28, + 0xF4, 0xDA, 0xA2, 0x49, 0x4B, 0xE4, 0x64, 0xD3, 0x37, 0xAB, 0xE3, 0x13, 0x81, 0x7C, 0xAE, 0x58, + 0x02, 0x2C, 0x70, 0xCB, 0x14, 0x6B, 0x5C, 0xAA, 0x66, 0x28, 0x9B, 0x57, 0xDE, 0xC7, 0x4D, 0x88, + 0x4C, 0x8C, 0x88, 0x21, 0x04, 0x00, 0x48, 0x29, 0xAB, 0x8A, 0xBB, 0x40, 0x5E, 0xCB, 0xFF, 0xEB, + 0x19, 0x58, 0xCF, 0xB7, 0x3D, 0x84, 0xB5, 0x85, 0x2A, 0x3C, 0x56, 0x85, 0x8F, 0xE1, 0xDB, 0x7C, + 0xDE, 0xF3, 0x9E, 0xCF, 0xB1, 0xE7, 0xDB, 0x9B, 0x95, 0x07, 0x17, 0x4E, 0xE6, 0x27, 0xAD, 0xE5, + 0xE5, 0x66, 0xBE, 0xF4, 0x88, 0xD6, 0x0F, 0x6F, 0x73, 0x35, 0x21, 0xA2, 0x01, 0x91, 0x99, 0x92, + 0x82, 0x2A, 0x5C, 0xED, 0x29, 0x14, 0x51, 0x5D, 0xA0, 0xAF, 0x92, 0x5C, 0x3D, 0xD9, 0x52, 0x1F, + 0xF6, 0x1B, 0x84, 0x07, 0x70, 0x8B, 0x62, 0xDD, 0x1C, 0xAB, 0x19, 0x07, 0xD8, 0xB2, 0x71, 0x40, + 0xD1, 0x1D, 0x9C, 0xDB, 0xEE, 0xA8, 0xF9, 0x18, 0x89, 0x91, 0x19, 0x5D, 0xA7, 0xE9, 0x9B, 0xB5, + 0x6A, 0x59, 0x77, 0x5A, 0xF3, 0xA6, 0xFA, 0x19, 0x18, 0x21, 0x98, 0x16, 0x5B, 0xB4, 0xFB, 0x93, + 0x01, 0x80, 0x65, 0x68, 0x81, 0x06, 0x59, 0x35, 0x10, 0x12, 0xD5, 0x4C, 0xC3, 0x61, 0x88, 0xCE, + 0x55, 0x66, 0xEE, 0x92, 0xC0, 0x61, 0x08, 0x84, 0xC5, 0xCF, 0x22, 0x92, 0x11, 0x91, 0xB0, 0x24, + 0xD6, 0x4C, 0x53, 0x78, 0x1D, 0xB3, 0xF7, 0x7A, 0xF2, 0xCD, 0x39, 0xD2, 0x8E, 0x99, 0x01, 0x00, + 0x80, 0x55, 0xB5, 0x42, 0x27, 0x70, 0x40, 0x33, 0x13, 0x31, 0x55, 0x53, 0xD5, 0x35, 0xCB, 0x65, + 0x4E, 0xF3, 0x2A, 0x29, 0x0B, 0x22, 0x70, 0xDD, 0xAF, 0x94, 0x35, 0x10, 0xED, 0xC6, 0xC0, 0x88, + 0xE7, 0x25, 0x99, 0x15, 0x3D, 0xA5, 0xF4, 0x0E, 0x1E, 0xC7, 0xEF, 0x30, 0x67, 0x60, 0x25, 0xF0, + 0x75, 0x5B, 0xB5, 0xBA, 0x57, 0x4E, 0x85, 0x85, 0x44, 0x8B, 0x9A, 0x85, 0x84, 0x58, 0xB3, 0x3F, + 0x00, 0x00, 0x5A, 0xE4, 0xBD, 0x56, 0x9C, 0x02, 0x33, 0x31, 0x55, 0xB3, 0xC3, 0x34, 0x0C, 0x01, + 0x4F, 0x73, 0xAA, 0xFB, 0x08, 0xAA, 0xBA, 0x1F, 0xC3, 0x61, 0x0C, 0x6B, 0x96, 0x31, 0xF2, 0xFD, + 0x3E, 0x3E, 0x1C, 0xA6, 0xBB, 0xC3, 0x38, 0x0E, 0x1C, 0x98, 0x08, 0xE1, 0x30, 0x45, 0xF7, 0x9D, + 0x3D, 0xDC, 0xED, 0xBE, 0x78, 0x77, 0xF8, 0xFD, 0x77, 0xCF, 0x4F, 0xE7, 0xF5, 0xB4, 0x4A, 0xA5, + 0xB4, 0x1A, 0xA5, 0xEA, 0xB4, 0xF1, 0x8A, 0x86, 0x10, 0xAF, 0xA4, 0xE4, 0x6B, 0x3D, 0xA2, 0x89, + 0x01, 0x03, 0x58, 0xB2, 0x8A, 0x02, 0x11, 0x1C, 0xA7, 0x30, 0x04, 0xFA, 0x7C, 0x5E, 0x45, 0x00, + 0xDE, 0x42, 0xB1, 0x37, 0x7F, 0xA8, 0x5E, 0x67, 0x54, 0xB5, 0x77, 0x87, 0xF8, 0xB3, 0x2F, 0xEF, + 0xC6, 0xC1, 0x13, 0x24, 0xC3, 0x34, 0x21, 0x22, 0xF5, 0x61, 0x01, 0x37, 0xCF, 0xC6, 0xF9, 0xF5, + 0x5F, 0x67, 0x50, 0x57, 0xB8, 0xB8, 0x7A, 0xAC, 0xA0, 0x7A, 0xD0, 0x5A, 0x7C, 0xA9, 0xB5, 0xD4, + 0x91, 0xEA, 0xAB, 0xED, 0x47, 0xB5, 0x31, 0xBF, 0x6A, 0xE7, 0xD2, 0xBC, 0x52, 0x79, 0x9A, 0x2E, + 0xC6, 0x44, 0xA5, 0x23, 0x02, 0x30, 0xCD, 0xB9, 0x4B, 0x12, 0xF8, 0x91, 0x61, 0xBF, 0x5E, 0x99, + 0x37, 0x19, 0xB8, 0x43, 0x9F, 0xC2, 0xCC, 0x45, 0x1B, 0xDB, 0x30, 0x60, 0x3B, 0xE7, 0xBD, 0x06, + 0xBE, 0x2B, 0xD3, 0xAC, 0x6F, 0xB0, 0x3E, 0x7E, 0xB8, 0xE7, 0x86, 0x2A, 0x60, 0xA7, 0xE2, 0xF5, + 0x2C, 0x66, 0x1D, 0x46, 0xD4, 0xFE, 0xAA, 0x16, 0xE2, 0xDD, 0x12, 0x10, 0xD0, 0x76, 0xF8, 0xEE, + 0xE6, 0x3F, 0x36, 0x63, 0xAD, 0x8D, 0xA8, 0x7C, 0xBF, 0x7E, 0x8E, 0xD8, 0xA2, 0xCC, 0x60, 0x8B, + 0x30, 0xEC, 0xE1, 0xE6, 0x66, 0xFC, 0x08, 0x25, 0x76, 0xCF, 0xE5, 0x4B, 0x49, 0x06, 0x54, 0x75, + 0x26, 0x6A, 0x7B, 0x11, 0x23, 0x11, 0x31, 0x02, 0x84, 0x50, 0x12, 0x4C, 0x8B, 0x0C, 0xE8, 0x65, + 0x71, 0x7D, 0x7F, 0x0B, 0x06, 0x36, 0x43, 0x24, 0xC3, 0xE2, 0x70, 0x28, 0xC7, 0xCF, 0x95, 0x3F, + 0x0A, 0x05, 0x3A, 0x08, 0xAA, 0xA8, 0x7A, 0x80, 0x14, 0x06, 0x06, 0x20, 0x46, 0x22, 0x0A, 0x4C, + 0x43, 0xE4, 0xE8, 0x90, 0x59, 0x08, 0xD0, 0x7C, 0x10, 0x66, 0x40, 0x88, 0x6A, 0xBA, 0x2C, 0xC9, + 0xCC, 0x86, 0x18, 0x00, 0x80, 0x70, 0x1D, 0xC6, 0xE1, 0x66, 0xA1, 0xFB, 0x9F, 0xFB, 0x2D, 0xEC, + 0x68, 0xAE, 0xFD, 0xB1, 0x1C, 0x29, 0x98, 0xD9, 0x9A, 0xA4, 0x44, 0xC1, 0x22, 0x66, 0xD1, 0x2C, + 0xB2, 0x26, 0x51, 0x35, 0x24, 0x1A, 0x62, 0x18, 0x62, 0x08, 0xCC, 0x6B, 0xCA, 0x4B, 0x12, 0xE7, + 0x58, 0x77, 0xE0, 0x9A, 0x29, 0xF8, 0x1A, 0xE2, 0x96, 0x2F, 0xE6, 0x1E, 0x64, 0xF0, 0xC5, 0x6E, + 0xB1, 0x06, 0x9B, 0x02, 0xE7, 0x3F, 0xD6, 0xA4, 0xC1, 0xBA, 0x35, 0xAE, 0x98, 0xC7, 0x40, 0x00, + 0x10, 0x03, 0x99, 0xC1, 0x61, 0x8A, 0x6B, 0xD6, 0xE7, 0xCB, 0x8A, 0x48, 0x1E, 0x76, 0xBC, 0x1F, + 0xC3, 0xBB, 0xE3, 0x2E, 0x65, 0xFD, 0xE9, 0x87, 0xC3, 0xFD, 0x61, 0xBC, 0x2C, 0xF9, 0xB2, 0xE6, + 0xBF, 0xFD, 0xC3, 0xE3, 0x9C, 0xC4, 0xD4, 0x3E, 0xDE, 0x8D, 0xBF, 0xF8, 0xEA, 0xE1, 0x3C, 0xAF, + 0x66, 0x96, 0x3C, 0x28, 0x3F, 0x06, 0xA6, 0xE4, 0x41, 0x24, 0x00, 0xF0, 0xFE, 0x7E, 0xFF, 0x93, + 0x2F, 0xEE, 0xFD, 0x58, 0x6D, 0x3F, 0xC5, 0xDF, 0x7E, 0xF3, 0x74, 0xFA, 0xD3, 0x53, 0x4B, 0x07, + 0xAD, 0x8E, 0x36, 0x37, 0xB8, 0x8A, 0x22, 0xB2, 0x91, 0x69, 0x23, 0xA3, 0xEA, 0x9A, 0x69, 0x9C, + 0xD9, 0xAD, 0x79, 0xB5, 0xB6, 0x00, 0xB2, 0x18, 0x88, 0x7D, 0xCA, 0x2B, 0x23, 0xE4, 0xAB, 0xA3, + 0x36, 0x9F, 0x70, 0x61, 0x81, 0x6B, 0x7D, 0xB4, 0xB1, 0x06, 0x20, 0x00, 0x33, 0x25, 0x93, 0x8F, + 0x0F, 0xBB, 0xFB, 0xBB, 0x9D, 0xA8, 0x79, 0xAA, 0x6F, 0xCE, 0x19, 0x51, 0x1B, 0x18, 0xBD, 0x7E, + 0x9A, 0x06, 0xD1, 0x3C, 0xE2, 0xAF, 0x11, 0xC1, 0x2D, 0xC0, 0x16, 0x0C, 0x05, 0x15, 0xC8, 0x1A, + 0x1D, 0xF7, 0xAA, 0x4A, 0x8F, 0x62, 0xE0, 0x31, 0x28, 0xF5, 0x5B, 0x9D, 0xD5, 0x09, 0x58, 0x33, + 0x5A, 0x3C, 0x51, 0x86, 0x39, 0x00, 0x82, 0xE4, 0x9C, 0x52, 0x0D, 0xD3, 0xB9, 0x1E, 0xE1, 0xAB, + 0x81, 0xBF, 0x6D, 0xD9, 0xB7, 0xF1, 0x34, 0x04, 0x69, 0x03, 0x83, 0xA2, 0xCD, 0x97, 0x0F, 0xAB, + 0xB3, 0x1D, 0xB5, 0x7A, 0xFF, 0x1A, 0x16, 0xF4, 0x3F, 0xF4, 0x0F, 0x55, 0x9B, 0x0C, 0xAA, 0xF0, + 0x70, 0x14, 0x6E, 0x46, 0x43, 0xEF, 0x8C, 0xEE, 0xB5, 0xB3, 0xD6, 0xBD, 0x93, 0xB1, 0xB9, 0x30, + 0xF7, 0x00, 0x8A, 0xF2, 0x59, 0xD3, 0xAF, 0x01, 0x5E, 0xCD, 0xF7, 0x0A, 0x95, 0xCA, 0xC1, 0x3F, + 0x3A, 0xBE, 0x28, 0x98, 0xD6, 0x1E, 0x7A, 0x14, 0xDB, 0x16, 0x04, 0x50, 0x55, 0x91, 0x10, 0x80, + 0xAA, 0x66, 0x6D, 0xC5, 0xE9, 0x0D, 0xE6, 0xAA, 0x8F, 0xBF, 0xE9, 0x0B, 0xC2, 0xC4, 0x21, 0xF0, + 0x10, 0x03, 0x31, 0x22, 0x62, 0x55, 0xC7, 0xA0, 0xF7, 0x75, 0x6C, 0x00, 0x62, 0x6D, 0x77, 0x3C, + 0x3A, 0xD7, 0x88, 0xC8, 0x8A, 0x8D, 0x58, 0xE5, 0x3D, 0xA0, 0xE7, 0xCB, 0xAB, 0x39, 0x96, 0xC1, + 0xBC, 0x26, 0x00, 0x20, 0xE6, 0xE0, 0xE9, 0x93, 0x81, 0x39, 0x78, 0xF6, 0x80, 0x19, 0x11, 0xC5, + 0x10, 0xD0, 0x03, 0x73, 0x91, 0xDC, 0xB3, 0x40, 0x8C, 0x81, 0xD8, 0xCC, 0x2E, 0x97, 0x65, 0x59, + 0x92, 0x0F, 0x83, 0x5F, 0x85, 0xC5, 0xBE, 0x5E, 0xB5, 0x7E, 0xED, 0xAA, 0x23, 0xA3, 0x0C, 0xCB, + 0x6D, 0x10, 0x35, 0x10, 0x55, 0xDF, 0x87, 0x94, 0xF3, 0x92, 0x64, 0x1A, 0xE2, 0x71, 0x3F, 0xAD, + 0x29, 0x2F, 0xAB, 0xFB, 0x92, 0x32, 0x82, 0x85, 0x40, 0x4B, 0xCA, 0x29, 0xE9, 0x65, 0xCD, 0x4E, + 0x2A, 0x4C, 0x3E, 0x5A, 0x8F, 0xFC, 0xAE, 0xEA, 0x71, 0x51, 0x92, 0x9C, 0xA0, 0xAE, 0xC4, 0x4B, + 0x33, 0xD1, 0xAA, 0x8D, 0xE2, 0xC6, 0x0E, 0x18, 0xD8, 0xFD, 0x7E, 0xF8, 0xEA, 0xDD, 0xFE, 0xB8, + 0x8B, 0xBB, 0x29, 0x46, 0xA6, 0x18, 0x3C, 0x69, 0x01, 0x3E, 0x3D, 0x5E, 0x96, 0x35, 0x3D, 0x9E, + 0x16, 0x66, 0xFE, 0xF2, 0x61, 0xB7, 0x1B, 0xA3, 0x19, 0x88, 0xEA, 0x6E, 0x8A, 0x1F, 0xDF, 0x1D, + 0x54, 0xF5, 0xFD, 0xDD, 0x74, 0x9A, 0xF3, 0xB2, 0x26, 0x02, 0x98, 0xC6, 0xF0, 0x70, 0x37, 0x95, + 0xEC, 0x7D, 0x40, 0x24, 0x3A, 0xEE, 0xC7, 0x21, 0x9E, 0xBF, 0x7D, 0x3C, 0xC7, 0x39, 0x3D, 0xDC, + 0xED, 0x86, 0x18, 0x92, 0x08, 0x00, 0xC4, 0xC8, 0xEE, 0xD9, 0xC8, 0x62, 0xD4, 0xD0, 0xB4, 0xB0, + 0x93, 0xEF, 0x56, 0xDD, 0xCD, 0x6B, 0xBE, 0x82, 0x62, 0x79, 0xBD, 0xED, 0x6A, 0x81, 0x26, 0xA2, + 0xAB, 0x64, 0xCD, 0xE5, 0x18, 0xDD, 0xDF, 0x04, 0xA8, 0x86, 0x76, 0x51, 0xDF, 0x1C, 0x36, 0x37, + 0xE9, 0x0E, 0x88, 0x30, 0x04, 0xDA, 0x8F, 0x61, 0xCD, 0xCA, 0xC8, 0x53, 0x60, 0x44, 0x0C, 0xCC, + 0xBE, 0x57, 0xFF, 0x4D, 0xA5, 0xE6, 0x46, 0xFB, 0xF0, 0x2D, 0xB8, 0x21, 0x8F, 0x26, 0x7E, 0x1B, + 0x3D, 0xC0, 0x2B, 0xC0, 0xEA, 0xB1, 0xA0, 0x9D, 0x78, 0xB6, 0xD7, 0x5C, 0x25, 0x64, 0x26, 0x62, + 0x2A, 0x02, 0xAC, 0x70, 0x4E, 0x70, 0xDD, 0xC6, 0xFD, 0x15, 0x39, 0x4B, 0x8D, 0x7D, 0xBD, 0xF2, + 0x81, 0xF4, 0xFF, 0xD6, 0x10, 0x87, 0xCD, 0x4B, 0x50, 0x36, 0x02, 0x3D, 0x03, 0x08, 0xDA, 0xEA, + 0xB4, 0x59, 0x34, 0x6C, 0xAA, 0xB1, 0xA2, 0x75, 0x71, 0x1D, 0x7D, 0x6A, 0x00, 0xC4, 0xCD, 0xB7, + 0x7A, 0x5C, 0xA6, 0xF2, 0x54, 0xE3, 0x01, 0x4B, 0x8A, 0x4B, 0xF9, 0x9B, 0x03, 0x16, 0x80, 0xE7, + 0x33, 0xDC, 0x7C, 0xDD, 0x79, 0xBD, 0x39, 0x18, 0x9D, 0x7A, 0x7D, 0xF7, 0xAE, 0x03, 0x2A, 0xAB, + 0x38, 0xB7, 0x8D, 0xFB, 0x8A, 0xFA, 0x50, 0x57, 0xEC, 0xCA, 0xD7, 0x68, 0x5E, 0x05, 0xA4, 0xF0, + 0x48, 0x5B, 0xFF, 0xAB, 0x89, 0xB4, 0xB3, 0x26, 0x05, 0xC3, 0x42, 0x0D, 0x66, 0xA8, 0x02, 0x66, + 0x9E, 0x10, 0x74, 0x05, 0x9A, 0x3E, 0x3C, 0x66, 0x42, 0x42, 0x66, 0xBE, 0x3A, 0x67, 0x70, 0x9B, + 0xCE, 0x0C, 0x3B, 0xF4, 0x70, 0x7E, 0xBD, 0xD6, 0x86, 0x80, 0xB0, 0xC5, 0xEE, 0x15, 0xE2, 0xC1, + 0x62, 0x2F, 0x22, 0x07, 0x34, 0x00, 0x66, 0x51, 0x35, 0x30, 0x0B, 0xFE, 0x07, 0x55, 0x13, 0x34, + 0x52, 0x9C, 0x86, 0x48, 0xA5, 0xDA, 0x06, 0x06, 0xF0, 0xB2, 0x3C, 0x2D, 0x07, 0x18, 0xA7, 0x71, + 0xD8, 0x4D, 0xA3, 0x9F, 0x5D, 0xFA, 0x6B, 0x6F, 0xA2, 0xD8, 0xCD, 0x7C, 0x6E, 0xA8, 0xDC, 0xAC, + 0x54, 0x1D, 0x80, 0x72, 0xFA, 0x00, 0x81, 0xD9, 0x41, 0x9A, 0x88, 0x76, 0xD3, 0x18, 0x43, 0x89, + 0x6C, 0xCE, 0x84, 0x43, 0xE4, 0xC0, 0xB4, 0xA4, 0x6C, 0x49, 0xC7, 0x18, 0x34, 0xD8, 0x69, 0x4E, + 0x52, 0x63, 0x0A, 0xAC, 0x1E, 0x5C, 0x7A, 0xDB, 0xE8, 0x5B, 0xED, 0x90, 0xEF, 0x63, 0x2E, 0x06, + 0x97, 0xD7, 0xED, 0xE9, 0x85, 0xB3, 0xD5, 0x0C, 0x7B, 0x9B, 0x06, 0xFE, 0xE5, 0xD7, 0xF7, 0x3F, + 0xFF, 0xEA, 0x3E, 0x04, 0x16, 0x55, 0x33, 0x08, 0x81, 0x01, 0x2C, 0x25, 0x19, 0x23, 0x01, 0x84, + 0x9F, 0x8C, 0xF1, 0x87, 0xE7, 0x8B, 0xAA, 0x66, 0xD1, 0xDD, 0x6E, 0xF0, 0x58, 0xF2, 0x65, 0x4D, + 0xCC, 0xF4, 0xE1, 0x61, 0xFF, 0xE5, 0x7B, 0x5C, 0x96, 0xFC, 0xBB, 0x6F, 0x3E, 0x7F, 0xFF, 0xF9, + 0xF4, 0xEE, 0xB8, 0x13, 0x53, 0x4F, 0x95, 0x67, 0x53, 0x55, 0xFD, 0xF2, 0xDD, 0x01, 0x11, 0x3F, + 0xBF, 0xCC, 0xE7, 0x79, 0x05, 0x30, 0x53, 0x7B, 0x39, 0xCD, 0x44, 0xF4, 0xE1, 0x7E, 0x1F, 0x88, + 0xBF, 0x7D, 0xBA, 0x9C, 0x2E, 0xE9, 0x92, 0x04, 0x3B, 0xE3, 0x4F, 0x0D, 0x3C, 0x10, 0xDA, 0xB6, + 0x4C, 0xED, 0x37, 0x3C, 0x5C, 0xED, 0xF3, 0xC6, 0x5A, 0x95, 0xBD, 0xC0, 0x75, 0x85, 0x2D, 0x25, + 0x1A, 0xCA, 0x69, 0x9F, 0x13, 0x62, 0x07, 0x46, 0xD6, 0x94, 0x76, 0x22, 0x04, 0x83, 0x69, 0xE0, + 0x87, 0xFD, 0x30, 0x46, 0xFE, 0xEE, 0xE9, 0x62, 0x08, 0x9F, 0x9E, 0xCE, 0x5F, 0x9E, 0x8F, 0xC7, + 0xC3, 0xCE, 0x8A, 0x5F, 0xEC, 0x47, 0x75, 0xB1, 0x1B, 0x89, 0x05, 0x84, 0x08, 0xE4, 0xF4, 0x5A, + 0xB8, 0xB4, 0xF6, 0xEB, 0x1E, 0x86, 0xDE, 0x3E, 0xFD, 0x31, 0x67, 0x6B, 0x99, 0x54, 0xC7, 0x00, + 0xED, 0xB5, 0xD2, 0x8F, 0x47, 0xC0, 0x18, 0x00, 0x6A, 0xD5, 0x5F, 0xD5, 0xCB, 0x44, 0x49, 0xDE, + 0x4E, 0xFD, 0x7A, 0x34, 0xE9, 0xE1, 0xAC, 0xFF, 0xC1, 0xCC, 0x00, 0x89, 0x8A, 0x3E, 0x55, 0x60, + 0xA9, 0xC9, 0x96, 0x9B, 0x46, 0xDE, 0x52, 0x87, 0xAD, 0xA8, 0xB2, 0x15, 0x26, 0xEC, 0xAD, 0x2D, + 0x6B, 0x03, 0x70, 0x31, 0x59, 0x31, 0x10, 0x91, 0x88, 0x89, 0x55, 0xB4, 0x5F, 0x96, 0x26, 0x86, + 0x6F, 0xF3, 0x22, 0xB0, 0xED, 0xB0, 0xE7, 0x33, 0x6C, 0x31, 0xE1, 0x1D, 0xAF, 0xB5, 0xA1, 0x37, + 0x1F, 0x0A, 0x78, 0x14, 0x5E, 0x61, 0x13, 0xAA, 0xF9, 0x06, 0xB5, 0x97, 0x42, 0x2B, 0x1E, 0xAA, + 0xDD, 0x68, 0xA9, 0x39, 0x2C, 0xAE, 0x14, 0x14, 0x03, 0x03, 0xDD, 0xFA, 0xDA, 0xA6, 0x59, 0xD3, + 0xA0, 0x5D, 0x4F, 0x06, 0x51, 0x15, 0x11, 0x3F, 0x2A, 0x84, 0x0D, 0x88, 0xA1, 0x69, 0x13, 0x45, + 0x9F, 0x80, 0xEB, 0x5E, 0x10, 0xDC, 0x67, 0xE4, 0xE7, 0x16, 0x08, 0xD8, 0x8A, 0x41, 0xF4, 0x1B, + 0x2A, 0xA6, 0x88, 0x10, 0x98, 0x56, 0x55, 0x11, 0x0D, 0x0D, 0xE4, 0x54, 0xCD, 0x2B, 0x40, 0x4D, + 0xE3, 0xB0, 0xDB, 0x0D, 0x88, 0x14, 0xDD, 0xC1, 0x53, 0xF7, 0xA7, 0x84, 0xE4, 0x94, 0xA5, 0x2C, + 0x8B, 0xF6, 0x0F, 0xAB, 0x60, 0xAF, 0x7E, 0x28, 0x78, 0x9F, 0x55, 0xD7, 0x35, 0x01, 0xA0, 0xAA, + 0x02, 0x82, 0xAA, 0xAD, 0x49, 0xCA, 0xF6, 0x54, 0x5C, 0x57, 0xB5, 0xCB, 0x9A, 0x53, 0x2E, 0xF1, + 0x24, 0x5A, 0x77, 0x64, 0x1C, 0x82, 0x2E, 0x39, 0x89, 0x33, 0x7F, 0x23, 0xAF, 0x32, 0xD3, 0xB6, + 0xD4, 0x8D, 0x57, 0xCB, 0x90, 0x0D, 0x44, 0x9B, 0xD8, 0x05, 0x46, 0x54, 0x83, 0x21, 0x10, 0x21, + 0xFC, 0xE4, 0xC3, 0xF1, 0xE7, 0x5F, 0xDF, 0x87, 0x10, 0xCA, 0x01, 0x04, 0x33, 0x00, 0x88, 0x68, + 0xCE, 0xC2, 0x4C, 0x77, 0x43, 0x1C, 0x22, 0x1F, 0xF6, 0xC3, 0x9A, 0x64, 0xF4, 0xCC, 0x2C, 0xDA, + 0xA8, 0x79, 0x5E, 0xD2, 0xBA, 0x66, 0x00, 0xFC, 0xE2, 0xE1, 0xB8, 0xA6, 0xE4, 0x11, 0x4C, 0xDF, + 0x3E, 0x3E, 0xEF, 0xA7, 0xE1, 0xC3, 0xFD, 0x3E, 0x25, 0xC9, 0xA2, 0x5F, 0xBD, 0x3B, 0xFC, 0xF4, + 0xE3, 0x5D, 0x8C, 0x94, 0xB2, 0xCC, 0x4B, 0x1A, 0x86, 0x10, 0x43, 0x38, 0x32, 0xBD, 0xBB, 0xDB, + 0xDD, 0xED, 0x87, 0xE7, 0xF3, 0xF2, 0x78, 0x5A, 0x5F, 0xE6, 0xF4, 0x32, 0x27, 0x57, 0x0D, 0xDC, + 0x51, 0x99, 0xB5, 0x2E, 0xD7, 0x2B, 0x03, 0x10, 0x7B, 0xD5, 0xBC, 0x6C, 0xB0, 0x2F, 0xDE, 0xC6, + 0x57, 0x95, 0x04, 0x4B, 0xCC, 0x2D, 0x56, 0x24, 0x81, 0xE2, 0x82, 0xE9, 0xB4, 0x0F, 0x40, 0x26, + 0x0C, 0x8C, 0x29, 0xEB, 0xC0, 0x24, 0x6A, 0x4F, 0xA7, 0xC5, 0xD4, 0x54, 0x74, 0x49, 0xFA, 0xF4, + 0x72, 0x19, 0x86, 0x10, 0x98, 0x1B, 0xF7, 0xC2, 0x8F, 0x3C, 0xAF, 0xD4, 0x10, 0xAB, 0x3C, 0xE3, + 0xC8, 0xDF, 0x81, 0xB2, 0x6E, 0x0B, 0x08, 0x1D, 0x7B, 0xE3, 0xB5, 0x0A, 0x80, 0x55, 0x03, 0xED, + 0xC9, 0xD7, 0x7F, 0xF1, 0x9D, 0x52, 0xB5, 0x66, 0x6A, 0x03, 0x02, 0x80, 0x80, 0x81, 0xEA, 0x56, + 0x84, 0x0B, 0xAE, 0x2C, 0x50, 0xEC, 0x53, 0xB2, 0x6B, 0xE3, 0x9B, 0x00, 0x41, 0x40, 0xDB, 0x0C, + 0xBB, 0xEA, 0xDC, 0xAB, 0x86, 0xB9, 0xEB, 0x6E, 0x1E, 0x4B, 0xD1, 0x1D, 0xDC, 0x6F, 0x14, 0xDE, + 0x8D, 0x0E, 0xD5, 0xAB, 0xA8, 0x5C, 0xC9, 0x0C, 0x68, 0xDD, 0x61, 0x2D, 0xDF, 0xD5, 0x00, 0xD3, + 0x97, 0x86, 0x98, 0x54, 0x44, 0x45, 0x0A, 0x1B, 0x20, 0x32, 0xF1, 0xDB, 0x47, 0xA2, 0x6F, 0x6D, + 0xC2, 0x15, 0xA3, 0x35, 0x89, 0x62, 0x1E, 0x32, 0x52, 0x16, 0xA9, 0xAD, 0xED, 0xAB, 0x8C, 0x02, + 0x57, 0xE3, 0xEA, 0x59, 0x0A, 0x54, 0xDA, 0xC1, 0xCA, 0xE4, 0x58, 0x8A, 0x74, 0x5D, 0x49, 0xDC, + 0xCE, 0xF9, 0xB8, 0xB1, 0x37, 0x00, 0x20, 0x66, 0x11, 0xFF, 0x1E, 0x0B, 0x79, 0x34, 0x46, 0x49, + 0xFF, 0x68, 0x06, 0x82, 0xA7, 0x94, 0x99, 0x82, 0x12, 0x52, 0xB3, 0xA7, 0xAA, 0x55, 0x5C, 0xC6, + 0x09, 0x00, 0x48, 0x66, 0x80, 0xAD, 0x1A, 0x00, 0xFA, 0x01, 0x82, 0x6F, 0xB1, 0x88, 0x65, 0xB1, + 0x9C, 0x55, 0xD4, 0x3C, 0xD7, 0x12, 0x87, 0x48, 0xC7, 0xFD, 0x18, 0x42, 0xB1, 0x69, 0x63, 0x0C, + 0x8D, 0xCA, 0xB7, 0xD5, 0x2B, 0x5A, 0x6D, 0x1F, 0xF1, 0xFE, 0x86, 0xC2, 0xD5, 0x7E, 0xBD, 0xF9, + 0xD9, 0x29, 0xCF, 0x01, 0x42, 0xB4, 0x14, 0x4A, 0x34, 0x05, 0x35, 0x4B, 0x59, 0xD6, 0xEC, 0x85, + 0x11, 0xCD, 0x00, 0x54, 0x41, 0xFC, 0x30, 0x4B, 0x2C, 0x5D, 0xC7, 0x73, 0x12, 0xFA, 0x59, 0xA2, + 0x11, 0x22, 0xF5, 0x27, 0x79, 0x3D, 0x23, 0xB5, 0x9D, 0x28, 0x27, 0x3B, 0x2E, 0x76, 0x6C, 0x8A, + 0x1C, 0x03, 0x65, 0xD1, 0x35, 0x6B, 0x16, 0x65, 0xA2, 0x87, 0xFD, 0x70, 0xB7, 0x1B, 0xBE, 0xFC, + 0x70, 0x0C, 0x21, 0xF8, 0x6E, 0x90, 0x4B, 0x65, 0x00, 0x55, 0x9B, 0x97, 0x84, 0x88, 0xD3, 0xC8, + 0x44, 0xB8, 0xDF, 0x0D, 0x43, 0xD4, 0xD3, 0x79, 0x21, 0x26, 0x0F, 0x99, 0x89, 0x81, 0x9F, 0x4F, + 0xF3, 0xA7, 0xC7, 0x33, 0x13, 0x85, 0x40, 0xBB, 0xB1, 0x84, 0x8F, 0x4C, 0x03, 0x7F, 0xF9, 0xEE, + 0xE0, 0xC5, 0x73, 0xA6, 0x31, 0xBA, 0xFB, 0xDA, 0x2B, 0xC9, 0x9D, 0xCE, 0x6B, 0xCA, 0xC2, 0xE4, + 0x0E, 0x69, 0x00, 0xC0, 0x87, 0xE3, 0x44, 0x84, 0x31, 0xD0, 0xFB, 0xBB, 0xF1, 0xB7, 0xDF, 0x3E, + 0x9F, 0x57, 0x19, 0x03, 0xDF, 0xEF, 0x82, 0x01, 0xCC, 0x49, 0x0A, 0x55, 0x11, 0x3E, 0x9D, 0x1D, + 0xCF, 0xCB, 0x2E, 0x94, 0x4D, 0x2E, 0x92, 0xCD, 0xFA, 0x7D, 0xEA, 0x01, 0xA2, 0xBD, 0xDC, 0x73, + 0x82, 0x57, 0x2A, 0xA1, 0x42, 0xDB, 0x4D, 0xFD, 0xD0, 0x9C, 0x11, 0x11, 0x56, 0x91, 0x35, 0xCB, + 0x9A, 0x65, 0xA8, 0xA7, 0x4B, 0xA7, 0xCB, 0x1A, 0x1F, 0xCF, 0xEF, 0x1F, 0xF6, 0x56, 0xA3, 0xC0, + 0x6E, 0x4E, 0x78, 0xFA, 0x95, 0xEF, 0xFB, 0xD2, 0x8E, 0x93, 0x1D, 0x40, 0x37, 0x22, 0xAE, 0x6F, + 0x62, 0x3D, 0xA8, 0xDA, 0x5E, 0xEB, 0x6D, 0xB7, 0x32, 0xDC, 0x6A, 0xC1, 0x75, 0x9F, 0xD2, 0x46, + 0x5D, 0xD5, 0x12, 0xF2, 0xF9, 0xA8, 0xDD, 0xB4, 0xDF, 0xAB, 0x7B, 0xB7, 0xB0, 0xD2, 0xB5, 0xD9, + 0xAD, 0xDB, 0x46, 0xE3, 0x56, 0x93, 0xBD, 0x2B, 0xF5, 0x2A, 0x21, 0x79, 0xFA, 0xFA, 0x8D, 0xFC, + 0xBE, 0x99, 0x3B, 0x00, 0x9A, 0xA1, 0x9F, 0x4B, 0x50, 0xD5, 0x15, 0x9D, 0xD1, 0x9C, 0x2E, 0x25, + 0x8B, 0x31, 0x11, 0x33, 0x02, 0x98, 0xA7, 0x08, 0x95, 0xC1, 0x21, 0x78, 0xC1, 0x85, 0x7A, 0x30, + 0xCA, 0x14, 0x4C, 0x3D, 0xE7, 0xA9, 0xBA, 0xBD, 0xA0, 0xEA, 0x6B, 0x7A, 0xA5, 0x25, 0xF4, 0x0C, + 0x78, 0xAB, 0x20, 0x17, 0x0C, 0x2D, 0x01, 0x0D, 0x2D, 0x90, 0x00, 0xAB, 0x73, 0xD9, 0x17, 0xD2, + 0xE3, 0x27, 0xFC, 0xFC, 0xA2, 0xAE, 0x24, 0x56, 0x5D, 0xB3, 0x90, 0xCA, 0x9B, 0x5B, 0xAF, 0x25, + 0x11, 0x15, 0xDA, 0xF6, 0x61, 0x55, 0x24, 0x55, 0x55, 0xA4, 0x94, 0xCF, 0x9B, 0xE7, 0x15, 0x11, + 0xA7, 0x69, 0x60, 0xCF, 0xEA, 0xF1, 0xD4, 0xA2, 0xC0, 0x60, 0x5C, 0xD1, 0xDF, 0x33, 0xBE, 0x4B, + 0xDB, 0xE5, 0x7F, 0xBE, 0x70, 0x35, 0xD0, 0x01, 0xA0, 0x55, 0xF1, 0xB3, 0xEC, 0xE9, 0xFC, 0xA6, + 0x06, 0x18, 0x00, 0x20, 0x30, 0x7E, 0x78, 0x38, 0xDC, 0xDD, 0xED, 0xA9, 0x09, 0xEB, 0xBA, 0x1F, + 0xAF, 0x07, 0xFD, 0xFA, 0x93, 0x1F, 0x5B, 0xBB, 0x1B, 0xAD, 0xCD, 0x0C, 0x72, 0x96, 0x94, 0x24, + 0x65, 0x71, 0x77, 0xFE, 0x65, 0x4E, 0x59, 0x34, 0x65, 0x75, 0x8D, 0xD4, 0x37, 0xCC, 0x0C, 0x44, + 0x5D, 0x14, 0xA2, 0xAF, 0x7D, 0x51, 0xF2, 0xCD, 0x00, 0x20, 0x9B, 0x7A, 0xF8, 0x03, 0xBB, 0x7B, + 0x6B, 0xE3, 0xE2, 0x9B, 0x03, 0x23, 0x84, 0x7A, 0xA2, 0x04, 0x60, 0x4C, 0xC8, 0xC4, 0x3F, 0xFB, + 0x78, 0xDC, 0x8D, 0xF1, 0xBB, 0xC7, 0xF3, 0x77, 0x8F, 0x97, 0xC0, 0xF4, 0xB0, 0x1F, 0x0E, 0x53, + 0x7C, 0xB8, 0x9B, 0xEE, 0x0E, 0x63, 0x1B, 0x73, 0xCE, 0xE2, 0xC0, 0x37, 0xCF, 0x89, 0x99, 0x77, + 0xD3, 0x90, 0xB3, 0x40, 0x39, 0x11, 0x85, 0x21, 0x06, 0xA7, 0x74, 0x46, 0x78, 0x7C, 0xB9, 0x7C, + 0xF3, 0xFD, 0xB3, 0x2A, 0x0C, 0x91, 0x43, 0xA0, 0x94, 0xC5, 0xD7, 0x6B, 0x45, 0xBC, 0x3B, 0x4C, + 0x97, 0x79, 0x4D, 0x39, 0x0F, 0x31, 0x4C, 0x31, 0xAC, 0x59, 0xD4, 0xCC, 0xE3, 0x9B, 0x99, 0x30, + 0x8B, 0x9E, 0xE7, 0xF5, 0x80, 0x23, 0x80, 0x89, 0xEA, 0x10, 0x79, 0x4D, 0x34, 0x46, 0xFA, 0xC5, + 0x17, 0x77, 0xDF, 0x3D, 0x5D, 0xC6, 0xC8, 0xD3, 0x10, 0x00, 0xE0, 0x3D, 0xE1, 0x65, 0x4D, 0x81, + 0x38, 0x06, 0x5A, 0xD3, 0xF3, 0x49, 0xE5, 0x5A, 0xA8, 0x14, 0x31, 0x8A, 0x00, 0xA5, 0xAE, 0x8D, + 0x4B, 0x4D, 0xB8, 0x75, 0xA2, 0x95, 0x18, 0x06, 0xB3, 0xE6, 0x3B, 0x39, 0x4C, 0x21, 0x8B, 0xAE, + 0x09, 0xAA, 0x1D, 0x0A, 0x8D, 0xC1, 0x72, 0x76, 0x87, 0x43, 0xA1, 0xA3, 0xAC, 0x6A, 0x66, 0x43, + 0x0C, 0x39, 0x0B, 0x20, 0x30, 0xB3, 0x67, 0x9B, 0x79, 0x58, 0x43, 0x37, 0x98, 0x2B, 0xF4, 0xB4, + 0x2A, 0x5D, 0xFB, 0x61, 0x74, 0x56, 0x43, 0x51, 0x8E, 0xB6, 0x98, 0xAF, 0x0E, 0x62, 0xAE, 0x30, + 0xA2, 0xB2, 0x3E, 0xBA, 0x2F, 0xB3, 0xCD, 0x88, 0xF0, 0x3A, 0x98, 0xD1, 0x55, 0x81, 0x62, 0x31, + 0x55, 0xFD, 0xA8, 0x6A, 0x3F, 0xD4, 0xAC, 0xA8, 0x0D, 0xDC, 0x1D, 0x11, 0x8C, 0xB6, 0x0F, 0x01, + 0x6A, 0xAC, 0x8D, 0xD5, 0x3F, 0xBB, 0x9B, 0x09, 0x15, 0xB4, 0xF5, 0x4B, 0x86, 0xCD, 0x4D, 0x53, + 0x7A, 0xBC, 0x26, 0xF8, 0x32, 0x7D, 0xB7, 0xD3, 0xA9, 0x1C, 0xA7, 0x58, 0x67, 0x1C, 0x82, 0xA7, + 0xD6, 0x95, 0xC8, 0xEA, 0xAE, 0x2C, 0x5A, 0x29, 0x0B, 0x65, 0xDA, 0xF4, 0x22, 0xD7, 0xAC, 0x40, + 0xCD, 0xC8, 0x4A, 0x7A, 0x5A, 0x57, 0xEC, 0xA4, 0x47, 0xAE, 0xD7, 0x70, 0x56, 0x46, 0x02, 0x1B, + 0x63, 0x76, 0x2B, 0xBA, 0x2D, 0xF2, 0xD6, 0x91, 0x99, 0x9A, 0xB9, 0x1A, 0x55, 0x42, 0x15, 0x09, + 0xA1, 0x46, 0x08, 0x6F, 0xDB, 0x57, 0x5A, 0xC3, 0xAA, 0xEE, 0x17, 0x14, 0xB3, 0x72, 0x34, 0xE8, + 0x28, 0xB3, 0x95, 0x09, 0x40, 0x64, 0xAC, 0x55, 0x1E, 0x53, 0x92, 0x9C, 0x44, 0xEB, 0xF9, 0xB5, + 0x7B, 0x5D, 0x89, 0x48, 0xD5, 0x10, 0xC5, 0xBD, 0xF3, 0x88, 0x68, 0xA8, 0x4D, 0xFE, 0x99, 0x3B, + 0x09, 0xAB, 0xC6, 0x58, 0xA7, 0x00, 0x00, 0xA0, 0x0A, 0x2A, 0x25, 0x3F, 0x29, 0x06, 0x52, 0x83, + 0x30, 0xC4, 0xF0, 0xD5, 0xC7, 0xFB, 0x62, 0xC8, 0x49, 0xF9, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xFD, 0x7E, 0x44, 0xBC, 0xF2, 0x6E, 0xF6, 0x44, 0x89, 0xAF, 0xA1, 0xF8, 0xD5, 0xD3, + 0x90, 0xBE, 0x2D, 0xE8, 0xCD, 0xB7, 0x10, 0x01, 0x91, 0x0C, 0xF2, 0x9A, 0x73, 0x4A, 0x92, 0xB3, + 0xA6, 0xAC, 0x73, 0x4A, 0xAA, 0x66, 0xEE, 0xDE, 0x6E, 0xCE, 0xCD, 0xC2, 0x75, 0xE5, 0x7F, 0xD8, + 0x31, 0x70, 0x83, 0xDA, 0xBA, 0x9D, 0x8A, 0x35, 0xCB, 0xC7, 0x6A, 0x64, 0xAB, 0x1F, 0xE5, 0x50, + 0xD1, 0x52, 0x01, 0x10, 0x0E, 0x53, 0xFC, 0x70, 0xB7, 0x7B, 0x7F, 0xBF, 0x9B, 0xD7, 0x3C, 0x0D, + 0xFC, 0xD3, 0x0F, 0x07, 0x33, 0xBB, 0xDB, 0x8F, 0xEF, 0xEE, 0xF7, 0x43, 0x64, 0x04, 0x70, 0xAF, + 0x70, 0x4A, 0x92, 0x72, 0x39, 0x8E, 0x00, 0xF0, 0x55, 0xD6, 0x2C, 0x72, 0x59, 0x64, 0x88, 0xBC, + 0xDF, 0x8D, 0xE0, 0x09, 0x55, 0x09, 0x5E, 0xCE, 0xCB, 0x9F, 0x3E, 0xBD, 0x98, 0xC1, 0x71, 0x37, + 0xDC, 0x1D, 0x46, 0x04, 0x78, 0x3E, 0x2F, 0x43, 0x0C, 0x44, 0x88, 0x24, 0xB8, 0x66, 0x27, 0x38, + 0x51, 0x13, 0xD1, 0x94, 0x4A, 0x28, 0x97, 0xA7, 0x8B, 0x7A, 0x45, 0x18, 0x00, 0x18, 0x63, 0x58, + 0xD6, 0x3C, 0xAF, 0x19, 0x00, 0x54, 0x2D, 0x46, 0xFA, 0xFA, 0xDD, 0x5E, 0xCC, 0xEE, 0x76, 0xE3, + 0x38, 0x04, 0x35, 0xFB, 0xF6, 0x87, 0x97, 0x18, 0x78, 0xCD, 0x3A, 0x27, 0xA9, 0xE7, 0x62, 0x55, + 0x4E, 0x42, 0x71, 0x3B, 0x05, 0x42, 0x83, 0x32, 0x79, 0xC4, 0x92, 0x2E, 0xEB, 0xB2, 0xDD, 0x4A, + 0x2A, 0x78, 0x01, 0x04, 0x55, 0x33, 0xB0, 0x31, 0xD0, 0x87, 0xE3, 0xF4, 0xE9, 0x79, 0x36, 0x16, + 0x0F, 0xF0, 0x2A, 0x47, 0xE7, 0x1E, 0x6F, 0x44, 0xF0, 0x7E, 0x37, 0x00, 0xD8, 0xD3, 0x79, 0xCD, + 0x6A, 0x94, 0xF5, 0xB2, 0xE4, 0x18, 0x39, 0xE5, 0x12, 0xEC, 0xE3, 0x16, 0x56, 0xCE, 0xF9, 0xCD, + 0xB3, 0xCB, 0x1E, 0xCB, 0xD0, 0xC3, 0x5C, 0x41, 0x99, 0x59, 0xB7, 0xE4, 0x84, 0x1A, 0x81, 0x85, + 0xC5, 0x58, 0xBB, 0x89, 0x8D, 0xDA, 0x78, 0x12, 0x00, 0x4D, 0x19, 0xA8, 0xB8, 0xF7, 0xA0, 0x80, + 0x5A, 0xC3, 0xC7, 0x46, 0x99, 0x3D, 0x6B, 0x01, 0x01, 0xE8, 0xAD, 0x33, 0xE5, 0x8D, 0x87, 0x8A, + 0xEB, 0xBA, 0xBD, 0x63, 0xCD, 0xD2, 0x2E, 0xC4, 0x54, 0x49, 0xDA, 0x00, 0xC9, 0x4D, 0x05, 0xCF, + 0x7F, 0x52, 0x44, 0xFE, 0x31, 0xEC, 0xB8, 0x42, 0xB4, 0x2B, 0xF7, 0x66, 0x87, 0x98, 0x45, 0xBF, + 0x44, 0x0F, 0x7C, 0xC5, 0x66, 0xDC, 0xA1, 0x96, 0x9A, 0x39, 0x45, 0xD1, 0xF6, 0x8C, 0x45, 0x77, + 0x24, 0x29, 0x02, 0x75, 0x3E, 0xA9, 0x37, 0x7A, 0x2F, 0x60, 0xF4, 0x2A, 0xB3, 0x18, 0x0A, 0x1E, + 0x17, 0xCE, 0xEE, 0xDF, 0xF7, 0xBF, 0x79, 0x39, 0xD7, 0x3E, 0x2B, 0xC0, 0xCC, 0xC8, 0x8F, 0x3A, + 0xB0, 0xD2, 0x9A, 0x6D, 0x23, 0x6D, 0x13, 0xAD, 0xE0, 0xB5, 0x1D, 0x32, 0xB4, 0xC6, 0x3D, 0xB6, + 0xC6, 0x6D, 0xC9, 0x05, 0x40, 0xA1, 0xD4, 0x34, 0xF1, 0x1C, 0x34, 0x55, 0x25, 0xCA, 0xE3, 0x34, + 0xC4, 0x18, 0xBC, 0x3C, 0x92, 0x87, 0x98, 0xA9, 0x42, 0x8C, 0x2C, 0x22, 0x49, 0xB4, 0x78, 0x70, + 0x00, 0x8A, 0xA7, 0xB0, 0x13, 0x6D, 0x5E, 0x71, 0x15, 0x6B, 0x59, 0x9A, 0x21, 0xB0, 0x99, 0x65, + 0xB5, 0x70, 0x7F, 0xB7, 0x3B, 0x1E, 0xA6, 0x37, 0x14, 0xE5, 0x8E, 0x62, 0x7A, 0x38, 0xBB, 0x91, + 0x3F, 0xAF, 0x5E, 0x06, 0x4F, 0xAF, 0xF3, 0x6C, 0x87, 0xCD, 0xC9, 0xE7, 0xF4, 0x43, 0xE8, 0x05, + 0xF8, 0xD7, 0x24, 0x88, 0xB8, 0x1B, 0x23, 0x13, 0x5E, 0x52, 0x16, 0x31, 0x3F, 0x43, 0x04, 0x44, + 0xF3, 0x83, 0xB6, 0xEA, 0xAE, 0x86, 0x52, 0xA3, 0xE2, 0x4A, 0x56, 0x6F, 0xD2, 0xB5, 0xD1, 0x8B, + 0x47, 0x8D, 0x15, 0xF5, 0xBB, 0x73, 0x7F, 0x82, 0x21, 0xE0, 0x79, 0x49, 0x63, 0xE4, 0xFD, 0x14, + 0x10, 0x60, 0x3F, 0xC6, 0x35, 0x49, 0x56, 0x4B, 0x59, 0x11, 0x20, 0x04, 0x5E, 0x96, 0xE4, 0xC7, + 0x17, 0x6B, 0xCA, 0x6B, 0x12, 0x66, 0x02, 0x33, 0x51, 0x63, 0x00, 0x33, 0x9B, 0xC6, 0x38, 0xC4, + 0xE0, 0x48, 0x27, 0xA2, 0xEB, 0x9A, 0x1F, 0x4F, 0xF3, 0xB7, 0x9F, 0xCF, 0x31, 0xD0, 0xDD, 0x6E, + 0x8C, 0x81, 0x73, 0x29, 0x1A, 0x0A, 0x29, 0xCB, 0x7E, 0x1A, 0x02, 0xB3, 0xAA, 0x0E, 0x91, 0xDD, + 0xE7, 0xE8, 0xD7, 0x14, 0x78, 0x85, 0x6B, 0x55, 0x53, 0x85, 0x35, 0x0B, 0x31, 0xE1, 0x79, 0x39, + 0xE1, 0x8A, 0x88, 0x8F, 0x2F, 0xF3, 0x7E, 0x8A, 0x63, 0x0C, 0x04, 0x38, 0x8C, 0x3C, 0xC4, 0x70, + 0xD8, 0x8F, 0x00, 0xF0, 0xE9, 0xF1, 0xE4, 0xAA, 0xFE, 0x0F, 0x2F, 0x33, 0x41, 0xC9, 0x90, 0x2E, + 0x47, 0xED, 0x08, 0x1E, 0x88, 0xE9, 0x55, 0x73, 0x73, 0xA9, 0x9D, 0x58, 0x82, 0xFB, 0xF7, 0x23, + 0x2F, 0xC9, 0xC5, 0x1A, 0xA0, 0x47, 0x95, 0x9A, 0x05, 0xA6, 0xDD, 0x3E, 0x8E, 0x31, 0x1C, 0x77, + 0xC3, 0xE9, 0xB2, 0x10, 0xC2, 0xFD, 0x7E, 0x70, 0xE0, 0xF3, 0x78, 0x3D, 0x5F, 0xF6, 0xFB, 0xFD, + 0x38, 0x45, 0x7E, 0x39, 0xAF, 0x66, 0x40, 0x04, 0xAA, 0xEA, 0x4A, 0xD9, 0xE5, 0xB2, 0x1E, 0x8F, + 0x53, 0x2B, 0x98, 0xF5, 0x63, 0x74, 0xD2, 0x7F, 0x42, 0x44, 0xA1, 0x38, 0x28, 0xAA, 0x1C, 0x6F, + 0xAC, 0x4D, 0x9E, 0xEF, 0x0E, 0xBE, 0xC9, 0xFD, 0x17, 0x7D, 0x29, 0x3D, 0x2C, 0x81, 0x39, 0x14, + 0x6A, 0x35, 0xE8, 0x63, 0x45, 0x5E, 0x63, 0x19, 0xA0, 0xB6, 0xEC, 0x58, 0x37, 0xDA, 0x9B, 0xBA, + 0xF4, 0x7A, 0x9C, 0xD5, 0xEB, 0xD4, 0xE9, 0x1A, 0xBD, 0xBE, 0x06, 0x00, 0x9B, 0x2E, 0xE0, 0x5A, + 0x15, 0xB6, 0x52, 0x5D, 0x68, 0xC5, 0xA8, 0x35, 0x73, 0xA3, 0x4C, 0x3B, 0x06, 0xA9, 0x12, 0xE4, + 0xDA, 0x46, 0xD9, 0x74, 0x43, 0xF7, 0xD9, 0xB5, 0xBF, 0xD6, 0xB4, 0xF0, 0x3A, 0x8A, 0x5A, 0x1D, + 0xC8, 0x00, 0x88, 0xAA, 0xB2, 0x0D, 0x66, 0x66, 0x62, 0x46, 0x1B, 0x33, 0xF7, 0xED, 0xBF, 0xF1, + 0xB4, 0x59, 0x40, 0xC5, 0x65, 0x28, 0x39, 0xAD, 0x3E, 0x48, 0x8F, 0x13, 0x68, 0x96, 0x63, 0x99, + 0x0D, 0xA0, 0x56, 0xEC, 0x0E, 0x4C, 0x00, 0x28, 0x2A, 0xEE, 0xBA, 0x12, 0x54, 0xAB, 0xB6, 0xEC, + 0x75, 0xEF, 0x60, 0x56, 0xCA, 0x33, 0xDF, 0x2C, 0xB5, 0xEB, 0x34, 0x2D, 0xD4, 0x59, 0x24, 0xDB, + 0x30, 0xC4, 0x10, 0x88, 0x09, 0x10, 0x3C, 0xC7, 0xC3, 0x13, 0xB3, 0x6A, 0x3D, 0x1F, 0x34, 0x05, + 0x42, 0xCB, 0x39, 0x9B, 0x81, 0xB9, 0x12, 0xDC, 0x80, 0xB5, 0x84, 0x31, 0x97, 0x0D, 0x72, 0xE7, + 0x9B, 0x9B, 0xAB, 0x81, 0x49, 0xCD, 0x72, 0x36, 0x51, 0x0B, 0xC7, 0xC3, 0xA8, 0xDD, 0x8A, 0xFF, + 0xD8, 0xD3, 0x4B, 0x9E, 0xF6, 0xF2, 0x0D, 0xA1, 0x34, 0x41, 0xE8, 0x3F, 0x7B, 0xA8, 0xD0, 0xCD, + 0x8E, 0x32, 0xF3, 0x61, 0x3F, 0x12, 0xE2, 0x92, 0xF2, 0xBC, 0xA4, 0xA0, 0xBC, 0x27, 0xCC, 0x52, + 0x06, 0xED, 0xF0, 0xB7, 0x66, 0xB7, 0xAB, 0x6B, 0xEC, 0x0C, 0x38, 0x99, 0xE0, 0xCD, 0x08, 0xAF, + 0x7B, 0xB7, 0xAD, 0xE3, 0x82, 0x83, 0xC5, 0xA2, 0x02, 0x80, 0x94, 0xF5, 0xF1, 0xE4, 0x39, 0xEA, + 0xB6, 0x26, 0x0D, 0x8C, 0x7E, 0x32, 0x3A, 0x2F, 0x89, 0x08, 0xB3, 0xC8, 0x40, 0x21, 0x67, 0x51, + 0x31, 0x55, 0x1D, 0x63, 0xC8, 0xA2, 0xCB, 0xBA, 0xBE, 0xBF, 0x3F, 0x88, 0x2A, 0x11, 0x86, 0x40, + 0xD5, 0x9C, 0x81, 0x71, 0x08, 0xC3, 0xC2, 0xFB, 0x31, 0x1E, 0xA6, 0x98, 0x55, 0x2F, 0xCB, 0x2A, + 0xCA, 0xC7, 0xDD, 0x68, 0xB1, 0x88, 0xB2, 0x58, 0x42, 0x31, 0xE1, 0x34, 0x2F, 0xEB, 0x9A, 0xE7, + 0x55, 0xD4, 0x8C, 0x09, 0xD1, 0xC0, 0x85, 0x8F, 0x73, 0xE9, 0xE3, 0xCB, 0x12, 0x43, 0x39, 0x74, + 0x17, 0x31, 0x65, 0x1B, 0x06, 0x9E, 0x06, 0x2F, 0x39, 0x83, 0x58, 0x0E, 0xB6, 0xF0, 0xFB, 0xA7, + 0xCB, 0xE3, 0x29, 0x21, 0x96, 0x88, 0x1F, 0xAA, 0x25, 0x04, 0xC6, 0x40, 0xA2, 0x36, 0x46, 0x5E, + 0xB3, 0x9C, 0xE7, 0x62, 0x5E, 0xBD, 0xBF, 0x9F, 0xE6, 0x35, 0xE7, 0xAC, 0x63, 0xA4, 0x35, 0x4B, + 0x73, 0xE0, 0x02, 0xC2, 0x71, 0x17, 0xFF, 0xC9, 0x3F, 0xFA, 0x62, 0x1A, 0xE2, 0xBC, 0xA6, 0x4F, + 0x8F, 0xF8, 0xEE, 0x6E, 0xB7, 0x1F, 0xE3, 0x92, 0xB2, 0x88, 0x26, 0xD1, 0xDF, 0x7D, 0xF7, 0x6C, + 0xA6, 0x87, 0x89, 0xCF, 0x97, 0xF4, 0xF4, 0xB2, 0x80, 0x17, 0xB4, 0x32, 0x18, 0x23, 0x7F, 0xF5, + 0xEE, 0x10, 0x98, 0xC6, 0x31, 0x86, 0x10, 0xBC, 0x6E, 0xE7, 0xEB, 0xC5, 0xEF, 0x0D, 0x96, 0x9E, + 0x33, 0xFB, 0xC4, 0xEC, 0x4A, 0x1E, 0x9E, 0x09, 0x07, 0xD5, 0xB9, 0x89, 0xD6, 0x45, 0x60, 0xF8, + 0xFF, 0x4C, 0xE4, 0xFF, 0xFD, 0xFF, 0xFE, 0x86, 0x90, 0x38, 0xF0, 0xFF, 0xFC, 0xCF, 0xFF, 0x59, + 0x0C, 0x41, 0x3C, 0x16, 0xAC, 0x5C, 0xD6, 0x51, 0x37, 0xFB, 0xE6, 0x29, 0xC5, 0xB8, 0x37, 0xFB, + 0xB1, 0x91, 0x68, 0xC9, 0x76, 0x24, 0xAA, 0x5E, 0x5F, 0x6C, 0xCB, 0xD2, 0x1C, 0x13, 0xE5, 0x5B, + 0x1D, 0xD8, 0x16, 0x4F, 0xBC, 0x7A, 0x0C, 0x27, 0x5B, 0x29, 0x13, 0x5A, 0xD4, 0x1A, 0x55, 0x43, + 0x03, 0xB3, 0xAD, 0xA2, 0x96, 0x93, 0xC7, 0x36, 0x97, 0xCA, 0xDE, 0xED, 0x20, 0xD2, 0xFF, 0xD4, + 0x47, 0x87, 0xF9, 0xB3, 0xB1, 0x52, 0x95, 0xC1, 0x15, 0x5D, 0xCC, 0x4A, 0x4D, 0x03, 0x44, 0xD9, + 0x56, 0xB5, 0xFF, 0xA1, 0x65, 0x47, 0x02, 0x80, 0xBB, 0x9B, 0x7B, 0x5F, 0x29, 0xA0, 0x87, 0x4A, + 0x58, 0x1B, 0x61, 0xD1, 0xA4, 0x5A, 0xD5, 0xD3, 0xD2, 0xD4, 0xC6, 0xCE, 0x4C, 0xC4, 0xC4, 0xCC, + 0x08, 0xC0, 0x2A, 0x90, 0x72, 0xD2, 0x62, 0x2C, 0xDD, 0x18, 0x6A, 0x57, 0x28, 0xD6, 0x93, 0x41, + 0x9B, 0xA6, 0x59, 0xC9, 0xB8, 0x8C, 0x61, 0x18, 0xC7, 0xE8, 0x41, 0x61, 0x29, 0x1B, 0x36, 0x30, + 0x31, 0x08, 0x81, 0x09, 0x90, 0x88, 0x8C, 0xA0, 0x94, 0xAF, 0x54, 0x8F, 0x47, 0xAB, 0xFA, 0x5E, + 0x39, 0x7D, 0xAF, 0x9E, 0x13, 0x33, 0xF3, 0xFC, 0x2A, 0x6D, 0x4B, 0x0D, 0x44, 0xC8, 0x8A, 0x41, + 0x45, 0x95, 0x84, 0xF8, 0x75, 0x45, 0xB2, 0x5B, 0x7A, 0xAD, 0x6B, 0xB1, 0xE5, 0xBB, 0xBF, 0x41, + 0x4E, 0x88, 0x66, 0xE6, 0x61, 0xBC, 0xCC, 0xE6, 0xB1, 0x3C, 0x7D, 0x01, 0x06, 0x00, 0x60, 0xA2, + 0xC3, 0x7E, 0xDC, 0xDB, 0x90, 0xB2, 0x2C, 0x6B, 0xBE, 0xCC, 0x69, 0x4D, 0x59, 0xCC, 0xB2, 0xA8, + 0x4B, 0x0A, 0x0F, 0x49, 0xDD, 0xF6, 0xAC, 0x91, 0x19, 0xF4, 0xD6, 0xC4, 0xC6, 0x39, 0xBD, 0xEA, + 0x5E, 0x81, 0x14, 0xA0, 0xE4, 0x12, 0x95, 0xCD, 0x5E, 0x12, 0xA4, 0x3C, 0x67, 0xD5, 0xFD, 0x10, + 0x62, 0x88, 0xBB, 0x29, 0xBE, 0xBB, 0xDB, 0x21, 0xA0, 0x8F, 0x61, 0x59, 0xB3, 0x88, 0x8E, 0x43, + 0xF0, 0x08, 0x8C, 0x94, 0xF3, 0xC3, 0x71, 0x1F, 0x02, 0x9F, 0xE7, 0x55, 0xC5, 0xC6, 0xB1, 0x16, + 0x04, 0x4F, 0xB2, 0xA6, 0x6C, 0x00, 0xF7, 0xFB, 0x51, 0xCC, 0x1E, 0x4F, 0x0B, 0x23, 0x4D, 0x43, + 0x64, 0x46, 0x11, 0x34, 0xC4, 0x10, 0x48, 0xC1, 0x96, 0x39, 0xCF, 0xCB, 0x9A, 0xC4, 0xCE, 0x97, + 0x75, 0xCD, 0xE2, 0xAA, 0x93, 0x97, 0x04, 0x10, 0x05, 0xB7, 0x25, 0xCD, 0x20, 0x04, 0x9A, 0x06, + 0x0E, 0x44, 0xA2, 0x16, 0x23, 0x07, 0xA2, 0x61, 0x08, 0x2E, 0x00, 0x9C, 0x76, 0xCE, 0x73, 0x7A, + 0xB9, 0x24, 0xAC, 0x12, 0x82, 0x08, 0x22, 0xF3, 0x61, 0x0A, 0x87, 0x69, 0xB8, 0x3F, 0x0C, 0x31, + 0x84, 0xC7, 0x97, 0xF9, 0xF1, 0x34, 0x4B, 0x24, 0x33, 0x18, 0x23, 0xDF, 0xED, 0x86, 0x2F, 0x1E, + 0x76, 0x63, 0x0C, 0x6B, 0x96, 0x1F, 0x9E, 0x2F, 0x39, 0x2B, 0x96, 0x42, 0x00, 0xF0, 0x93, 0x0F, + 0x25, 0xCD, 0x28, 0x06, 0xFE, 0xC9, 0x17, 0xF7, 0xBE, 0x92, 0x07, 0x1D, 0x55, 0x8D, 0x09, 0x76, + 0x63, 0xFC, 0xF4, 0x74, 0x5E, 0xCA, 0x35, 0x25, 0xBE, 0x68, 0xA6, 0x6A, 0x81, 0xE9, 0xFE, 0x38, + 0x71, 0xE0, 0x1D, 0x95, 0x18, 0xC3, 0x9E, 0x70, 0x7B, 0x43, 0xA6, 0x27, 0x86, 0xB6, 0x71, 0x0D, + 0xC5, 0xDC, 0xD0, 0xC0, 0x16, 0x49, 0xD0, 0xB1, 0x23, 0x20, 0x78, 0xF2, 0x44, 0x8B, 0x5D, 0x1E, + 0xC6, 0xF8, 0xCD, 0x37, 0x3F, 0xA8, 0xC8, 0xAF, 0x7F, 0xFF, 0xFD, 0x2A, 0xF8, 0xAF, 0xFF, 0xB7, + 0x7F, 0xA5, 0xF3, 0x6A, 0x7D, 0x9A, 0x1E, 0xB4, 0xF6, 0xDB, 0x89, 0x25, 0xF5, 0x0A, 0xD1, 0x8D, + 0x82, 0x60, 0xE6, 0x45, 0x9F, 0x0A, 0x36, 0xF9, 0x5D, 0x13, 0xDB, 0xCD, 0x34, 0x1D, 0xE9, 0xDE, + 0x90, 0x31, 0xB8, 0xFD, 0xE7, 0x9C, 0xE4, 0xEE, 0xB7, 0x92, 0xE8, 0x66, 0x48, 0x7A, 0x45, 0xA2, + 0x66, 0xD8, 0xB9, 0x56, 0x5E, 0xF3, 0x45, 0x2F, 0xCB, 0x37, 0xE8, 0x79, 0xA5, 0x07, 0xB4, 0x4F, + 0xE8, 0xDA, 0xB4, 0xEC, 0x95, 0xD0, 0xFE, 0xEB, 0xED, 0xB7, 0xED, 0xDF, 0xA2, 0x71, 0x3A, 0x05, + 0xD5, 0xF5, 0x6A, 0xA0, 0xD8, 0xE1, 0xA3, 0x56, 0xE3, 0xD0, 0xD9, 0x27, 0x84, 0x40, 0x84, 0x8C, + 0xA4, 0xA6, 0x04, 0x8C, 0x08, 0x48, 0x18, 0x63, 0x90, 0xD5, 0xA0, 0xE2, 0xE8, 0x16, 0xEB, 0x0C, + 0x35, 0xDC, 0xB6, 0x0E, 0x8C, 0xBA, 0x12, 0x6F, 0xAD, 0xCD, 0xFA, 0x14, 0xAC, 0x34, 0xF7, 0x36, + 0x98, 0xE7, 0x38, 0x06, 0x0E, 0x14, 0x42, 0x20, 0x40, 0x35, 0x65, 0xA4, 0x32, 0x87, 0x92, 0x35, + 0x51, 0x7C, 0x4A, 0x56, 0x8A, 0xF9, 0xD4, 0xD2, 0x45, 0x00, 0xAA, 0x62, 0xA5, 0x12, 0x30, 0x10, + 0x90, 0x82, 0xAB, 0x66, 0x18, 0x9E, 0x5E, 0x2E, 0x77, 0x87, 0x69, 0x9A, 0xDE, 0x06, 0xA6, 0x1F, + 0xDB, 0x92, 0x26, 0x67, 0x6E, 0xF0, 0xF8, 0xE6, 0x87, 0x10, 0x18, 0x11, 0xFC, 0x9E, 0x99, 0x5E, + 0x34, 0xF9, 0xCC, 0xDD, 0x9B, 0x7E, 0xD8, 0x89, 0xDF, 0xCA, 0xB1, 0xA4, 0x9C, 0xB3, 0xA6, 0x24, + 0x6A, 0x46, 0x28, 0x9E, 0x71, 0xED, 0xFD, 0x15, 0x83, 0xBE, 0x0C, 0x60, 0x1B, 0x89, 0x55, 0x53, + 0xFF, 0xF5, 0x29, 0xF5, 0xF6, 0x57, 0x57, 0x0F, 0x15, 0x92, 0xA9, 0x13, 0xC5, 0xFD, 0x7E, 0x74, + 0xB1, 0x10, 0x03, 0x89, 0xDA, 0x9C, 0xF2, 0xBA, 0x66, 0x44, 0x10, 0xB3, 0x58, 0xCA, 0xF2, 0x62, + 0x60, 0xBA, 0xCC, 0xEB, 0xBA, 0xA6, 0x8B, 0xDA, 0x79, 0xC6, 0xAC, 0xEA, 0xC7, 0x27, 0x4E, 0x23, + 0x2F, 0xF3, 0x32, 0xAF, 0x62, 0x0A, 0xC7, 0x63, 0x9C, 0xC6, 0x30, 0x2F, 0x39, 0x65, 0x19, 0x62, + 0x40, 0xC4, 0x65, 0xCD, 0x97, 0x79, 0x5D, 0x92, 0x9C, 0x1C, 0xC5, 0x0C, 0xCC, 0x40, 0x08, 0xC6, + 0x18, 0xC0, 0xEC, 0xBC, 0xE6, 0x35, 0xAB, 0x1A, 0x20, 0x00, 0x33, 0xBD, 0x3F, 0xC6, 0xDD, 0x18, + 0xE6, 0x94, 0x55, 0x15, 0x98, 0x72, 0x96, 0x61, 0x08, 0xF3, 0x9C, 0x45, 0xF5, 0xF3, 0xF3, 0x2C, + 0xA2, 0x81, 0xC9, 0xED, 0x17, 0x87, 0xA4, 0x18, 0x08, 0x11, 0xCE, 0x4B, 0xBA, 0x2C, 0xE9, 0xDD, + 0xDD, 0xC4, 0x04, 0x53, 0x64, 0x3F, 0x90, 0xBE, 0xDB, 0x8F, 0x22, 0x2A, 0x82, 0xB3, 0xA5, 0xCB, + 0x9C, 0xA6, 0xC8, 0x3C, 0x86, 0x87, 0xE3, 0x34, 0xC4, 0x90, 0x92, 0xEC, 0x77, 0x83, 0xB9, 0xA8, + 0xC8, 0xEA, 0x67, 0xD3, 0x29, 0xA5, 0x9C, 0x95, 0x99, 0x88, 0xF9, 0xFD, 0xFD, 0x8E, 0x08, 0x5E, + 0xCE, 0x8B, 0x3C, 0x5E, 0x3C, 0x4A, 0xD1, 0xCC, 0x98, 0x60, 0x3F, 0x45, 0xD7, 0xE1, 0x4B, 0xD1, + 0x85, 0x6B, 0x8B, 0xE9, 0x35, 0x84, 0xF5, 0x0C, 0xD9, 0x50, 0x4C, 0xA4, 0x84, 0x34, 0xB6, 0x37, + 0xB7, 0x76, 0xBC, 0xFE, 0x52, 0xAD, 0x2C, 0x66, 0x66, 0x21, 0xF2, 0x6F, 0x7E, 0xF3, 0xFB, 0x65, + 0x5E, 0x01, 0x20, 0xC4, 0xE1, 0x3F, 0xFD, 0xED, 0xDF, 0x3F, 0xDC, 0x1F, 0xFF, 0xC5, 0x5F, 0xFD, + 0x85, 0x57, 0xF7, 0x21, 0xDA, 0x82, 0xD8, 0x5D, 0x5C, 0x03, 0x34, 0xBB, 0x06, 0xDF, 0x68, 0xBF, + 0xB1, 0x59, 0xD1, 0xC2, 0x0A, 0x1F, 0x23, 0x61, 0x83, 0x86, 0x9E, 0x60, 0xDE, 0x60, 0x01, 0x6F, + 0xD5, 0xA0, 0x15, 0xD6, 0xAD, 0xD3, 0xEF, 0x3D, 0x65, 0x8A, 0x88, 0x6A, 0x46, 0x40, 0xAF, 0x51, + 0xE6, 0xA6, 0x8B, 0x1B, 0xF6, 0x81, 0x57, 0xB0, 0x5B, 0x3E, 0x84, 0x0E, 0xF3, 0x3A, 0xB8, 0x7C, + 0x05, 0x64, 0xE5, 0x5F, 0xAD, 0xBF, 0x40, 0xA9, 0xDB, 0x82, 0x8D, 0x55, 0xCA, 0x5F, 0xF4, 0xAA, + 0x05, 0x05, 0x57, 0x85, 0x37, 0x25, 0x91, 0x89, 0x62, 0x08, 0xED, 0xCF, 0x49, 0x84, 0x4B, 0x59, + 0x7D, 0xCA, 0x22, 0xCD, 0x97, 0x0F, 0x8D, 0xBB, 0x01, 0xB1, 0xFF, 0xF5, 0xC6, 0x3D, 0xDA, 0x26, + 0x8E, 0x80, 0x48, 0x1E, 0xD3, 0x8F, 0x88, 0x71, 0x08, 0x66, 0x16, 0x98, 0x43, 0xA8, 0xD7, 0x8B, + 0x10, 0xB9, 0x2D, 0x5F, 0xCA, 0x0A, 0x79, 0xB6, 0xA6, 0x8B, 0xA7, 0x0D, 0x78, 0x7B, 0xB1, 0x04, + 0x4D, 0xA7, 0x51, 0x50, 0x2F, 0xAC, 0x28, 0x6A, 0xE1, 0x32, 0xA7, 0xDD, 0x34, 0xFC, 0xD8, 0xC9, + 0xFA, 0xCD, 0x06, 0x6C, 0x42, 0xF5, 0xBF, 0xFB, 0x69, 0xBA, 0x9B, 0x27, 0x24, 0xA9, 0x4A, 0x2B, + 0x6B, 0xEB, 0xAD, 0x4D, 0x13, 0xC5, 0x18, 0x96, 0x35, 0xD1, 0x65, 0x79, 0xCE, 0x73, 0x3B, 0x48, + 0xF3, 0xA0, 0x5E, 0xDF, 0x8A, 0xBA, 0xBB, 0xC5, 0x2C, 0x50, 0xBB, 0x22, 0x05, 0x00, 0x17, 0xD3, + 0xAF, 0x8E, 0x17, 0x5C, 0x51, 0x2F, 0x85, 0x21, 0x0B, 0xC5, 0xAC, 0x59, 0x44, 0x35, 0x86, 0x30, + 0xCF, 0x29, 0x1E, 0x99, 0x90, 0x02, 0xE1, 0x02, 0xB0, 0x2C, 0x19, 0x00, 0xE3, 0x9E, 0xBD, 0xD8, + 0xD9, 0xA7, 0xA7, 0x93, 0xAA, 0x11, 0x53, 0x20, 0x7C, 0x3A, 0x2D, 0x4F, 0xA7, 0xE5, 0xB8, 0x1B, + 0x86, 0xC8, 0x81, 0xF9, 0xB2, 0xA4, 0x4F, 0xCF, 0xCB, 0x14, 0xF9, 0x8B, 0x87, 0x5D, 0x8C, 0xFC, + 0xE9, 0xE9, 0xE2, 0x97, 0xE6, 0xDD, 0x23, 0xCE, 0x6B, 0x9A, 0x86, 0xF8, 0xF1, 0xFD, 0x21, 0x25, + 0x3D, 0xEE, 0xD7, 0x6F, 0x7F, 0x38, 0xBD, 0x5C, 0x12, 0x11, 0x06, 0x2E, 0x00, 0x04, 0x08, 0x81, + 0x49, 0xC4, 0xB2, 0x2A, 0x13, 0x8A, 0x99, 0x5F, 0xD7, 0xC6, 0x4C, 0x59, 0x75, 0x39, 0xCD, 0xF7, + 0x30, 0x5D, 0x96, 0xB5, 0x5C, 0x00, 0xEA, 0x87, 0x32, 0x5B, 0xF9, 0x5E, 0x04, 0x80, 0x94, 0x75, + 0x49, 0x0A, 0x00, 0x29, 0xCB, 0xBB, 0xE3, 0xF4, 0xC5, 0xFB, 0xC3, 0xD3, 0x69, 0x51, 0xB5, 0x87, + 0xE3, 0x94, 0x52, 0xFE, 0xFE, 0xF1, 0xEC, 0x0A, 0xE3, 0x65, 0xCD, 0xF7, 0x87, 0x71, 0x8C, 0x41, + 0xCD, 0xC6, 0x21, 0x88, 0xEA, 0xF9, 0x69, 0x1D, 0x86, 0xB0, 0xA6, 0x2C, 0xA5, 0x08, 0xBD, 0x57, + 0x4C, 0x32, 0x11, 0xCB, 0x59, 0x72, 0x56, 0x50, 0x18, 0x87, 0xB0, 0x1B, 0x71, 0x49, 0xF9, 0x34, + 0x27, 0x26, 0x5C, 0x96, 0xA4, 0x35, 0xC6, 0x91, 0x6A, 0x02, 0xCA, 0x6B, 0xAE, 0xEB, 0x3F, 0xBC, + 0xA6, 0x39, 0x93, 0x66, 0x2F, 0x5C, 0x97, 0x36, 0x6E, 0x13, 0xD2, 0x2C, 0x92, 0x85, 0xD8, 0x88, + 0x49, 0x55, 0x19, 0xF0, 0x3F, 0xFC, 0xC7, 0x5F, 0x49, 0xCE, 0xC7, 0xC3, 0xF4, 0xD5, 0xFB, 0xC3, + 0x30, 0xC6, 0xBF, 0xF9, 0x4F, 0xBF, 0x35, 0x80, 0x7F, 0xF1, 0xCF, 0xFE, 0x9C, 0x91, 0x5C, 0xC7, + 0xB4, 0x3E, 0x22, 0xBC, 0xBA, 0x82, 0x7F, 0xCC, 0x3E, 0x40, 0x2C, 0x06, 0xA4, 0x75, 0x27, 0x51, + 0xD4, 0x8A, 0x87, 0xD6, 0x49, 0xBD, 0x96, 0x82, 0x57, 0x00, 0xE4, 0xDE, 0xAA, 0x7A, 0xF4, 0xD4, + 0xD9, 0x04, 0xAE, 0x6B, 0x30, 0xA0, 0x9A, 0x54, 0xD3, 0x56, 0xB7, 0xAF, 0xF7, 0x42, 0xFD, 0x06, + 0x5E, 0x1B, 0x88, 0xBC, 0xEE, 0xB1, 0xAC, 0x73, 0x67, 0xF3, 0xB6, 0xF7, 0x3B, 0x20, 0xF3, 0x8B, + 0x3B, 0xEB, 0xE7, 0xED, 0xB4, 0xD9, 0x8A, 0x9E, 0x5B, 0xE2, 0x31, 0xDD, 0x96, 0xB4, 0xED, 0xEB, + 0x9E, 0x56, 0xD3, 0x95, 0x1D, 0x2B, 0x11, 0x30, 0x6B, 0x4A, 0xA2, 0x02, 0x00, 0x9E, 0x26, 0xE5, + 0x05, 0xFF, 0x20, 0x83, 0xB6, 0x43, 0x08, 0x75, 0x6D, 0x4C, 0xB1, 0xE6, 0x97, 0xDE, 0xE8, 0xB0, + 0xAF, 0x57, 0xBE, 0x3A, 0x11, 0x36, 0x33, 0xCE, 0xBD, 0x13, 0x88, 0x28, 0x62, 0x66, 0x4A, 0xA4, + 0x1C, 0x88, 0x89, 0x11, 0xA9, 0x9D, 0xE1, 0x5A, 0x43, 0x76, 0xC3, 0x52, 0x70, 0xBB, 0x5B, 0x04, + 0x57, 0xC7, 0x10, 0x51, 0xEA, 0xED, 0x09, 0x0E, 0xD4, 0x81, 0x08, 0xBD, 0x1A, 0x86, 0x5D, 0x97, + 0x40, 0xFA, 0x31, 0xE2, 0xF0, 0xA7, 0x8F, 0x33, 0x84, 0x6B, 0xF2, 0xBD, 0x21, 0x88, 0x0E, 0x50, + 0x2D, 0x65, 0x41, 0x40, 0xE6, 0xB2, 0x85, 0x1E, 0x46, 0x63, 0x06, 0xCC, 0xB8, 0xDF, 0x0D, 0x84, + 0x38, 0x2F, 0x29, 0x65, 0x5D, 0x92, 0xAC, 0x39, 0x8B, 0x00, 0x22, 0x0E, 0x91, 0xDB, 0xB5, 0x49, + 0x35, 0x7C, 0xE4, 0x4A, 0xD8, 0xFA, 0x6E, 0x35, 0x8D, 0xAC, 0xF5, 0xE6, 0x62, 0xA9, 0x85, 0xD7, + 0xFA, 0x68, 0x00, 0x40, 0x0C, 0x3E, 0xBF, 0x2C, 0x44, 0xEB, 0xFD, 0x7E, 0x18, 0x22, 0x23, 0xE2, + 0x10, 0x43, 0x0C, 0x7C, 0xBA, 0xAC, 0x22, 0xFA, 0x7C, 0x5A, 0x42, 0x20, 0x55, 0xBD, 0x2C, 0x39, + 0x30, 0xDD, 0x1D, 0x26, 0x4F, 0x9C, 0xAC, 0x96, 0x08, 0x8A, 0xEA, 0x9A, 0x85, 0x11, 0xDD, 0xFE, + 0xFD, 0xF6, 0xF3, 0x69, 0x4D, 0xE2, 0xD7, 0x0C, 0x1F, 0x76, 0xE3, 0x71, 0x3F, 0xC6, 0xC8, 0x00, + 0x46, 0x48, 0xF7, 0xC7, 0xE9, 0xEE, 0x30, 0xFD, 0xFA, 0xF7, 0x9F, 0x1C, 0x14, 0x00, 0x60, 0x1A, + 0x82, 0x7A, 0x49, 0x00, 0x80, 0x40, 0xCC, 0x4C, 0x8F, 0x2F, 0x33, 0x22, 0x1C, 0xA6, 0x21, 0x06, + 0x3A, 0x5D, 0x52, 0x60, 0xBC, 0x84, 0xA4, 0x66, 0x6B, 0x12, 0x3F, 0xAC, 0x44, 0xAC, 0xE7, 0xE0, + 0x80, 0x00, 0xB6, 0x26, 0x8B, 0x01, 0x77, 0x03, 0x8B, 0x5A, 0x16, 0xCB, 0xA2, 0xFB, 0x71, 0x38, + 0xEE, 0x47, 0xCF, 0xD9, 0xFB, 0xE6, 0xD3, 0x73, 0x16, 0xBD, 0xDB, 0x8F, 0xE7, 0x25, 0x1D, 0xA6, + 0x21, 0x67, 0xFD, 0xD5, 0x1F, 0x7E, 0x00, 0x83, 0x69, 0x60, 0x44, 0x18, 0x62, 0x88, 0x6B, 0x32, + 0x00, 0x53, 0x5B, 0xB3, 0x1C, 0xF7, 0x23, 0x13, 0xE6, 0x2C, 0x22, 0x5C, 0x63, 0x71, 0xE0, 0xB8, + 0x1B, 0x76, 0x63, 0x7C, 0x39, 0x2F, 0xAA, 0x16, 0x03, 0xBD, 0x3B, 0x4E, 0xD3, 0x18, 0x45, 0x94, + 0x08, 0x55, 0x4B, 0xCC, 0x44, 0x4F, 0x1B, 0x37, 0xFF, 0x5A, 0x2D, 0x66, 0xE0, 0x1F, 0x88, 0x48, + 0xCE, 0x1E, 0xE3, 0xA9, 0x5E, 0xD3, 0xB5, 0xD7, 0xEC, 0xAA, 0x33, 0xD8, 0xE6, 0x35, 0x4F, 0x63, + 0xAC, 0x46, 0x27, 0xEC, 0x77, 0xC3, 0xBF, 0xFA, 0x9F, 0xFE, 0xFC, 0x3F, 0xFF, 0xDD, 0x1F, 0x7F, + 0xFA, 0xF1, 0xFE, 0x79, 0xCE, 0x21, 0x4E, 0xDF, 0x7C, 0xFB, 0xF8, 0x7F, 0x7D, 0xFE, 0x77, 0x7F, + 0xF5, 0x97, 0xBF, 0xF8, 0xEA, 0x8B, 0xF7, 0x00, 0x90, 0x92, 0xA2, 0xC9, 0xCD, 0xC9, 0x43, 0x03, + 0x82, 0x1B, 0x52, 0xF4, 0x13, 0x24, 0x67, 0x6F, 0xAD, 0xB7, 0x93, 0xA8, 0x2A, 0xA1, 0x1F, 0x80, + 0x81, 0xE1, 0xD5, 0xB1, 0xF8, 0x8F, 0x11, 0xB3, 0x55, 0x0F, 0x6C, 0x93, 0xAC, 0x55, 0xEF, 0x00, + 0x33, 0x75, 0xA7, 0x90, 0x02, 0x60, 0x3B, 0x0F, 0x30, 0xE8, 0x03, 0xA7, 0xEB, 0x08, 0xC1, 0xFD, + 0xEB, 0xBD, 0x67, 0xC6, 0x7F, 0x68, 0x8E, 0xFF, 0x86, 0xF8, 0x9B, 0xAF, 0xA4, 0x56, 0x0A, 0xBB, + 0xE6, 0xA9, 0x4E, 0x5D, 0xA9, 0x3C, 0xE6, 0x97, 0x58, 0x20, 0x22, 0xD4, 0x72, 0x3E, 0xAF, 0x6D, + 0xD0, 0x1A, 0x58, 0x5E, 0xC2, 0xD7, 0xDC, 0x91, 0x8F, 0x88, 0x66, 0x29, 0x67, 0xBC, 0x7A, 0x02, + 0x9B, 0x81, 0x94, 0x4B, 0x12, 0x51, 0xAC, 0x5C, 0x4F, 0xD8, 0x92, 0xEA, 0xA8, 0x96, 0xB4, 0x29, + 0x23, 0x27, 0x02, 0xB5, 0xEA, 0xFC, 0x74, 0x77, 0x8A, 0xAB, 0x5D, 0x36, 0xCF, 0x2B, 0x11, 0x0D, + 0x43, 0x2B, 0x33, 0x61, 0xE5, 0x9A, 0x62, 0x44, 0xBF, 0x1A, 0xB9, 0x60, 0x94, 0x97, 0x12, 0x50, + 0x00, 0x2C, 0x17, 0xAA, 0x5D, 0x55, 0xFD, 0x2F, 0x8C, 0x5D, 0xB2, 0xB8, 0xA0, 0xDA, 0x68, 0x44, + 0x84, 0x66, 0xFC, 0xBF, 0xFF, 0x1F, 0xFF, 0xE7, 0x30, 0xB0, 0x87, 0xAC, 0xDF, 0xEC, 0x65, 0x07, + 0x0D, 0x1B, 0x70, 0xB4, 0xE7, 0x66, 0xA7, 0x5F, 0x7F, 0x72, 0xB5, 0xCA, 0x85, 0x15, 0x51, 0x44, + 0xFD, 0x94, 0xAD, 0xD8, 0x16, 0x56, 0x1C, 0xFC, 0x7E, 0x6B, 0xEF, 0x38, 0x04, 0x42, 0xCA, 0xF5, + 0x94, 0xE0, 0xDD, 0x71, 0x0A, 0x4C, 0x6B, 0x12, 0x00, 0x34, 0x30, 0x31, 0x54, 0xAF, 0xDC, 0x52, + 0x47, 0x60, 0xE5, 0x2E, 0x4B, 0x2C, 0xC1, 0xB4, 0x56, 0x5C, 0x03, 0xD6, 0xE1, 0xD7, 0x96, 0x6E, + 0xE8, 0xD1, 0x09, 0x6A, 0x9E, 0x43, 0x1A, 0x03, 0x79, 0x64, 0xAC, 0x88, 0x64, 0xB5, 0xAC, 0xB6, + 0xD4, 0xDB, 0x36, 0x2F, 0x4B, 0x4E, 0x59, 0x63, 0xE4, 0xF3, 0x9C, 0x1E, 0x4F, 0xCB, 0x79, 0xC9, + 0x81, 0x28, 0x30, 0x89, 0x68, 0x0C, 0x9C, 0x44, 0xDC, 0xEB, 0x7F, 0x59, 0x52, 0xCA, 0x1A, 0x02, + 0x1F, 0xA6, 0xF8, 0xC5, 0xC3, 0x7E, 0xBF, 0x1B, 0x90, 0x70, 0x9E, 0x93, 0x88, 0xFA, 0xE5, 0x4F, + 0x31, 0x86, 0xC3, 0x34, 0x1C, 0xA6, 0xC8, 0x4C, 0xD3, 0x10, 0x01, 0x6C, 0x0C, 0x61, 0x18, 0x82, + 0x59, 0x11, 0x72, 0x58, 0x6F, 0xB7, 0xCB, 0x59, 0xD7, 0x2C, 0xA9, 0x9C, 0x72, 0xE0, 0xE9, 0xB2, + 0x2E, 0x29, 0xAB, 0x9A, 0x17, 0xBA, 0xAC, 0x76, 0x90, 0x1B, 0x3A, 0x06, 0x06, 0x81, 0x29, 0x04, + 0x1A, 0x23, 0x7F, 0x78, 0x38, 0x8C, 0x63, 0xC8, 0x59, 0x2F, 0x4B, 0x3A, 0x5D, 0x56, 0xD7, 0x55, + 0x01, 0x31, 0xA5, 0xFC, 0xED, 0xE3, 0x39, 0x8B, 0x81, 0x59, 0xCA, 0x22, 0x62, 0xD3, 0x18, 0xC6, + 0x21, 0xAC, 0xAB, 0x9C, 0xE7, 0xA4, 0x66, 0xE7, 0x39, 0x8D, 0x91, 0xD9, 0x73, 0xD5, 0xCC, 0x76, + 0x53, 0x64, 0x26, 0x55, 0xF5, 0x6B, 0xBB, 0xEE, 0xF6, 0xC3, 0x57, 0x1F, 0x8E, 0x1F, 0x3F, 0xDC, + 0xB9, 0x6B, 0x4C, 0xA4, 0xA4, 0xB6, 0x94, 0x93, 0xB5, 0x57, 0x4E, 0x52, 0xDF, 0x63, 0x11, 0x59, + 0xD7, 0xE4, 0xB7, 0x8E, 0xFA, 0xB7, 0x52, 0x96, 0x9C, 0x05, 0x10, 0x03, 0x33, 0xB4, 0x52, 0x4E, + 0x06, 0x6A, 0xB2, 0xAE, 0xB2, 0xAE, 0x49, 0xD5, 0xD6, 0x94, 0xFD, 0x64, 0x23, 0x04, 0x7E, 0x79, + 0x3E, 0xFD, 0xEE, 0x77, 0x7F, 0x0C, 0x31, 0xFE, 0xE7, 0x5F, 0xFF, 0xFE, 0xC3, 0xFB, 0xFB, 0xFF, + 0xF8, 0xEB, 0x6F, 0xD4, 0x8C, 0x99, 0x53, 0x96, 0x5F, 0xFD, 0xF6, 0x8F, 0x97, 0xCB, 0x72, 0xDC, + 0x4F, 0x93, 0x67, 0xBC, 0xD6, 0xC2, 0xF6, 0x8D, 0x1A, 0x7B, 0x00, 0x2A, 0x14, 0x52, 0xAB, 0x91, + 0x42, 0xE1, 0xEA, 0x7A, 0xB7, 0x4E, 0xD5, 0xCE, 0xB0, 0xC2, 0x53, 0x3F, 0x91, 0x62, 0x4A, 0xF6, + 0xB2, 0xBC, 0xB2, 0xD1, 0x66, 0x17, 0x60, 0x73, 0x5D, 0x42, 0xB9, 0x5B, 0xB3, 0x96, 0x75, 0x40, + 0x24, 0xA4, 0x76, 0x5D, 0xF9, 0x16, 0x91, 0xEB, 0x49, 0x7D, 0x85, 0x79, 0x4B, 0x86, 0x5F, 0xAD, + 0x9A, 0x56, 0x07, 0x50, 0xC3, 0xAF, 0xAE, 0x92, 0x10, 0x1A, 0xFF, 0x38, 0x12, 0x35, 0x0F, 0xE1, + 0x36, 0x66, 0x00, 0x73, 0xB2, 0x30, 0x33, 0xC3, 0xE2, 0x42, 0xAA, 0x81, 0xC2, 0x0D, 0xB6, 0xB4, + 0xDC, 0x9C, 0x52, 0x1E, 0x70, 0x47, 0x57, 0xAD, 0x14, 0x5F, 0x5B, 0xDA, 0x56, 0x2F, 0x70, 0x40, + 0x84, 0x9C, 0xC5, 0xA5, 0xB8, 0x6A, 0x0B, 0x72, 0x53, 0x44, 0x04, 0x24, 0x66, 0xE2, 0x1A, 0x0F, + 0x48, 0x44, 0x8C, 0x88, 0x7E, 0x96, 0x55, 0x1A, 0x21, 0x40, 0x08, 0x1C, 0x98, 0xD9, 0xD4, 0xC0, + 0x20, 0x7B, 0x45, 0x42, 0x44, 0x22, 0x1C, 0x86, 0x18, 0xEA, 0x55, 0x92, 0x0D, 0x23, 0xB4, 0xB8, + 0xA0, 0x6A, 0x49, 0xB8, 0x57, 0x76, 0xA5, 0x2F, 0xBD, 0x15, 0xFD, 0x6E, 0xAB, 0x7E, 0x8C, 0x88, + 0x61, 0x08, 0x81, 0x3C, 0xE8, 0x81, 0xB4, 0x5F, 0x9D, 0x7E, 0x11, 0xFB, 0x50, 0xE0, 0x37, 0x51, + 0xAC, 0x7F, 0xAC, 0x93, 0x02, 0x0D, 0x47, 0x6B, 0xD5, 0x8A, 0x10, 0x02, 0xD5, 0xC2, 0x07, 0xE5, + 0x3E, 0x1B, 0x1F, 0xA7, 0x9A, 0xAD, 0x6B, 0x62, 0xE6, 0xC3, 0x7E, 0x08, 0x01, 0x1F, 0x5F, 0x16, + 0x97, 0xD8, 0xA7, 0x39, 0x37, 0x63, 0xDE, 0xC1, 0x9E, 0xA8, 0x5C, 0xC5, 0xA6, 0x60, 0x8C, 0xE8, + 0x59, 0x35, 0xC3, 0x18, 0x88, 0xD0, 0x83, 0x21, 0x3C, 0xC8, 0x96, 0x08, 0xB3, 0xD8, 0x9A, 0xCB, + 0x25, 0xB7, 0x06, 0x40, 0x04, 0x8C, 0xB4, 0x26, 0x05, 0xC4, 0xAC, 0xFA, 0xFD, 0xD3, 0xC5, 0x15, + 0x10, 0x87, 0x2F, 0x42, 0xCC, 0xAA, 0x91, 0xF9, 0xF1, 0x65, 0xF1, 0x2B, 0x4E, 0xD3, 0xCB, 0x92, + 0xC4, 0x44, 0x14, 0x10, 0xB2, 0x5A, 0x0C, 0x7C, 0xB7, 0x1F, 0x96, 0x94, 0xCD, 0x60, 0x08, 0x8C, + 0x80, 0x6B, 0x89, 0x95, 0x05, 0x33, 0x38, 0x2F, 0xEB, 0xD9, 0xC3, 0x38, 0x10, 0xA6, 0x31, 0x12, + 0x62, 0x60, 0x56, 0x12, 0x0F, 0xF7, 0x57, 0xB5, 0x79, 0x4D, 0x62, 0x36, 0x30, 0x06, 0xA2, 0x21, + 0xB2, 0x78, 0x6A, 0x05, 0x19, 0x98, 0x89, 0xE8, 0x30, 0x04, 0xEF, 0x48, 0xD5, 0xB2, 0xE8, 0x92, + 0xB2, 0x47, 0x87, 0xF8, 0x42, 0x53, 0x2D, 0x7E, 0x05, 0x60, 0xBB, 0x61, 0x20, 0x84, 0x25, 0xE7, + 0x7D, 0x88, 0x0F, 0x87, 0x89, 0x98, 0x10, 0xC9, 0x43, 0x46, 0x8E, 0xBB, 0x21, 0x04, 0x1A, 0x42, + 0xC8, 0x22, 0x97, 0x25, 0x7F, 0xB8, 0x67, 0x33, 0x23, 0x42, 0x11, 0x45, 0xC0, 0x40, 0xE4, 0x81, + 0x1D, 0x06, 0x36, 0xC4, 0xF0, 0xF9, 0xF9, 0xF2, 0x74, 0x9A, 0xEF, 0xF6, 0x93, 0xB3, 0x4C, 0x0C, + 0xC1, 0xDF, 0x01, 0x00, 0xBF, 0x83, 0xD9, 0x4B, 0xCE, 0x79, 0x64, 0xF6, 0x9A, 0x64, 0x1C, 0x02, + 0x73, 0xC9, 0xB8, 0x6C, 0x87, 0xEB, 0x8D, 0x52, 0xCC, 0x2C, 0xE7, 0xBC, 0x2C, 0x39, 0x67, 0x41, + 0x44, 0x11, 0x22, 0xC4, 0xAC, 0x96, 0x52, 0x36, 0x33, 0x8F, 0x5F, 0x09, 0xA1, 0xE4, 0x39, 0xB9, + 0x69, 0x23, 0xA2, 0x39, 0x17, 0xFF, 0x40, 0x4A, 0x42, 0x84, 0x31, 0x0C, 0xBF, 0xFF, 0xC3, 0x37, + 0x6B, 0x86, 0x7F, 0xF3, 0xD7, 0x7F, 0xF7, 0xF1, 0xC3, 0xC3, 0x92, 0xF4, 0xF3, 0xD3, 0x09, 0x89, + 0x5E, 0x5E, 0x5E, 0x7E, 0xF9, 0x8B, 0x9F, 0x7D, 0x7C, 0xFF, 0xF0, 0x87, 0x6F, 0x7F, 0xF8, 0xD3, + 0x37, 0xDF, 0x7F, 0xF9, 0xF1, 0xFE, 0x2F, 0xFF, 0xE2, 0xE7, 0x77, 0xC7, 0x83, 0xE7, 0xBE, 0xF4, + 0xD1, 0xFB, 0x8D, 0xFC, 0xB0, 0x44, 0x8A, 0x15, 0x08, 0x73, 0x6C, 0x6A, 0x6A, 0x54, 0xCA, 0x59, + 0xD5, 0x42, 0xE4, 0xC0, 0x8C, 0x82, 0x54, 0x83, 0xEC, 0x0B, 0x2B, 0x5B, 0x45, 0xAB, 0xC6, 0x0B, + 0xC5, 0x90, 0xBA, 0x65, 0x29, 0x6F, 0xD4, 0x21, 0xCE, 0xD5, 0x11, 0x2C, 0xBE, 0xA3, 0x46, 0xF6, + 0x45, 0x73, 0x70, 0x14, 0xA4, 0xEA, 0x54, 0x69, 0x9C, 0xD2, 0x31, 0x08, 0xB5, 0x1F, 0xE0, 0x95, + 0xE3, 0x0C, 0x2A, 0x8A, 0x15, 0xBF, 0xA0, 0xF5, 0x1F, 0xDE, 0xB0, 0xDF, 0x2D, 0x0F, 0x56, 0x16, + 0xAE, 0x05, 0x2D, 0x3B, 0xCD, 0x02, 0x4C, 0xEB, 0x25, 0x2E, 0xC5, 0x65, 0xE9, 0x03, 0x20, 0x66, + 0xCF, 0x53, 0x51, 0xC0, 0xC0, 0xEC, 0xD7, 0x7A, 0x4B, 0xC5, 0x17, 0x66, 0x1E, 0x8A, 0xCF, 0x0B, + 0xB0, 0x66, 0x3B, 0xD1, 0x56, 0x08, 0xCB, 0x90, 0x01, 0x4D, 0x09, 0xB0, 0x79, 0x00, 0xCC, 0x4A, + 0x54, 0x66, 0x4A, 0x89, 0xC7, 0x01, 0xFC, 0x16, 0x18, 0xE6, 0x66, 0x30, 0xB9, 0x58, 0x72, 0xA1, + 0xEE, 0xCA, 0xA7, 0xD5, 0x24, 0xA7, 0x3A, 0x53, 0xF4, 0x3A, 0x0B, 0x4D, 0xC9, 0xAC, 0xC3, 0xAE, + 0xB0, 0x1B, 0x02, 0x79, 0xBC, 0x92, 0xAE, 0xEA, 0x55, 0xC0, 0xCD, 0xC0, 0x9D, 0x7C, 0x76, 0x2D, + 0xBE, 0xCC, 0xD4, 0x89, 0xC6, 0xEC, 0x4A, 0x32, 0xD3, 0xF5, 0x35, 0x79, 0xED, 0x5F, 0xBC, 0xB6, + 0x3D, 0xFD, 0x63, 0x22, 0x72, 0x50, 0xF7, 0xC2, 0x19, 0x22, 0xA5, 0x8B, 0xCB, 0x65, 0x15, 0xB1, + 0xD3, 0xE5, 0xB2, 0xA6, 0x6C, 0x80, 0x59, 0x15, 0x14, 0x96, 0xB4, 0x22, 0x82, 0x5A, 0xB9, 0xDB, + 0x2E, 0x12, 0x0D, 0x81, 0x00, 0xD1, 0x55, 0xB6, 0xDD, 0x14, 0xEF, 0xF7, 0xE3, 0x6E, 0x8A, 0x08, + 0x70, 0x7F, 0xB7, 0x53, 0xAF, 0xE5, 0x0F, 0xB0, 0xAE, 0x32, 0xAF, 0xE9, 0xFB, 0xA7, 0xF3, 0xBC, + 0xE4, 0x35, 0x77, 0xA7, 0xFB, 0xF5, 0x7C, 0x7A, 0x49, 0x3A, 0xAF, 0x79, 0x37, 0x84, 0x35, 0x4B, + 0x0C, 0x34, 0xC6, 0x30, 0x44, 0x56, 0xB3, 0xCB, 0x9C, 0x96, 0x2C, 0xE3, 0x10, 0x98, 0xF0, 0xE5, + 0xB2, 0xCE, 0xAB, 0x7A, 0x1C, 0x36, 0x02, 0x64, 0xD1, 0xD3, 0xB2, 0x1E, 0xA6, 0xE8, 0x45, 0xD3, + 0x00, 0x40, 0x55, 0x3C, 0x92, 0x20, 0x8B, 0x8A, 0xD9, 0x69, 0x4E, 0x39, 0xEB, 0x57, 0xEF, 0x0F, + 0xF3, 0x9A, 0xC7, 0x01, 0x98, 0xC9, 0xC0, 0xBE, 0xFB, 0x74, 0x12, 0x55, 0x42, 0xF4, 0x1A, 0x1E, + 0x81, 0x79, 0x4E, 0x39, 0x08, 0x21, 0x96, 0xD8, 0x24, 0x2F, 0x70, 0x10, 0x03, 0x0D, 0x4C, 0x2A, + 0x7A, 0xDC, 0x0D, 0xC7, 0xFD, 0xF8, 0xFD, 0xE3, 0xD9, 0x0C, 0xB8, 0x17, 0x38, 0xE0, 0x58, 0x0F, + 0x84, 0xF8, 0xEE, 0x38, 0x8E, 0x43, 0x78, 0x7C, 0x99, 0xA3, 0xE7, 0x45, 0x11, 0x22, 0x22, 0x33, + 0x0D, 0x43, 0x98, 0xA6, 0x61, 0x27, 0xE2, 0xBA, 0xCF, 0x65, 0x5E, 0x73, 0x96, 0x69, 0x1A, 0x52, + 0xCA, 0x22, 0x1A, 0x63, 0xF0, 0x1A, 0x4D, 0x0B, 0xD3, 0x71, 0x3F, 0x8E, 0x31, 0x22, 0x40, 0x56, + 0x4D, 0x39, 0xC7, 0x18, 0x22, 0x91, 0xAA, 0x0D, 0x43, 0x30, 0xB0, 0x9C, 0x35, 0xC6, 0xE0, 0xF8, + 0x15, 0xA3, 0x6F, 0x25, 0xF8, 0xBD, 0x76, 0xBD, 0x92, 0x52, 0xEB, 0xE1, 0x61, 0xE5, 0x08, 0x5D, + 0xD7, 0xBC, 0x2C, 0x49, 0x3C, 0x1B, 0xB1, 0x16, 0x7F, 0xF7, 0x8C, 0xDF, 0x2C, 0xCA, 0x80, 0xA4, + 0x2D, 0x61, 0x11, 0x44, 0x8C, 0x89, 0x32, 0x88, 0x97, 0x61, 0x59, 0x2D, 0x4F, 0xD3, 0xF0, 0xD7, + 0xFF, 0xFE, 0xBF, 0xFC, 0x9B, 0x7F, 0xF7, 0x2B, 0x95, 0xFC, 0xF9, 0xE9, 0xE5, 0x1F, 0xFF, 0xE2, + 0xCB, 0x6F, 0x1F, 0x2F, 0x77, 0xC7, 0xBD, 0xE4, 0x84, 0x48, 0x4F, 0x4F, 0xCF, 0xEF, 0xEE, 0x8F, + 0x87, 0xDD, 0xA8, 0x39, 0x7F, 0xF3, 0xCD, 0xE7, 0xF9, 0x32, 0x7F, 0xF5, 0xE5, 0x87, 0xAF, 0xBE, + 0xFC, 0x70, 0x7F, 0x77, 0x20, 0x22, 0x11, 0x05, 0x28, 0x97, 0x15, 0x62, 0xBD, 0x29, 0xBC, 0xEA, + 0xFC, 0x2D, 0x9C, 0xB6, 0x70, 0xA9, 0x8F, 0x2C, 0xAB, 0x42, 0x06, 0x35, 0x23, 0xC0, 0x88, 0x01, + 0x4A, 0xF6, 0x40, 0xC1, 0xBD, 0x1B, 0x41, 0xDD, 0x54, 0x1B, 0xA8, 0xF1, 0xAC, 0x1B, 0xC2, 0xF9, + 0x17, 0x14, 0xCC, 0x4A, 0x84, 0x94, 0x7F, 0x40, 0xB0, 0x45, 0x10, 0xF4, 0xF1, 0x9C, 0x3D, 0x2A, + 0x81, 0x95, 0xCE, 0x5A, 0x65, 0x91, 0xEB, 0x1E, 0xAF, 0x40, 0x07, 0x11, 0xCB, 0xC5, 0xF7, 0x1B, + 0x5E, 0x39, 0xDE, 0x5D, 0xD7, 0x69, 0xAA, 0x1F, 0xBC, 0x46, 0xB1, 0x2B, 0x08, 0xAB, 0x2F, 0x43, + 0xB5, 0x04, 0x6B, 0x7B, 0x44, 0x4C, 0x1E, 0x8F, 0x6A, 0x66, 0x08, 0x30, 0x0E, 0x83, 0xA8, 0xE6, + 0x9C, 0x03, 0x23, 0x53, 0x09, 0xC7, 0xC7, 0x9A, 0xA7, 0x85, 0x08, 0x5C, 0xAE, 0xE4, 0x43, 0x53, + 0xF3, 0x7B, 0xC2, 0x01, 0xA1, 0x95, 0xB6, 0x8F, 0x91, 0x01, 0x01, 0xD0, 0x88, 0x30, 0xC4, 0x20, + 0xA2, 0x29, 0xE7, 0x10, 0x02, 0x11, 0xA8, 0x34, 0xC5, 0xB0, 0x5C, 0x15, 0xAA, 0x9D, 0xD7, 0xAB, + 0xAD, 0x19, 0xB8, 0x2F, 0xD2, 0x0F, 0xC8, 0xC8, 0x5A, 0xE2, 0x8A, 0x5E, 0xCF, 0x25, 0xAC, 0x29, + 0x13, 0x33, 0x98, 0x18, 0x40, 0x0C, 0xC6, 0xF5, 0x2A, 0xC6, 0x8A, 0x62, 0xE6, 0x52, 0x1D, 0x00, + 0x44, 0xCC, 0x2C, 0x57, 0xC7, 0xA1, 0x21, 0x51, 0x0C, 0x01, 0xAE, 0x31, 0xAB, 0x35, 0xDD, 0xEF, + 0x0A, 0x16, 0x2F, 0x80, 0xC3, 0x27, 0x30, 0x53, 0x8C, 0x1E, 0x60, 0x51, 0x72, 0xD9, 0x98, 0x39, + 0x30, 0x8B, 0x64, 0x8F, 0x98, 0x55, 0xB3, 0x7D, 0x18, 0x76, 0x63, 0x74, 0xE7, 0xC6, 0x0F, 0x8F, + 0xE7, 0x24, 0xA2, 0x6A, 0x29, 0xC9, 0x38, 0x06, 0x26, 0x72, 0xE5, 0xE2, 0xFD, 0xC3, 0xBE, 0xAA, + 0xE9, 0x08, 0x60, 0x97, 0xCB, 0x1A, 0x89, 0x99, 0x68, 0x8C, 0x9C, 0x72, 0xFE, 0xE1, 0x79, 0x9E, + 0x93, 0xF2, 0xF5, 0x29, 0xBB, 0xEF, 0x8D, 0x93, 0xAF, 0x17, 0x41, 0x44, 0xC0, 0x2C, 0x7E, 0x3F, + 0x88, 0x30, 0xD3, 0x5D, 0xE4, 0x35, 0x6B, 0xCA, 0x25, 0x3B, 0x03, 0xB1, 0x08, 0x75, 0x42, 0x04, + 0xC3, 0xEF, 0x9F, 0xCE, 0x53, 0x0C, 0x00, 0xB0, 0x8A, 0x78, 0x42, 0x28, 0x81, 0x4B, 0x78, 0x19, + 0xA6, 0xE1, 0x70, 0x1C, 0x98, 0x69, 0x8C, 0xC1, 0x35, 0x84, 0xCB, 0xBC, 0x9E, 0xE6, 0xD5, 0x45, + 0xF9, 0x79, 0x4D, 0x84, 0x5E, 0xF3, 0x03, 0xE2, 0x40, 0x4B, 0x12, 0x44, 0x1C, 0x23, 0x65, 0xD1, + 0x77, 0xC7, 0x69, 0x1A, 0xC2, 0xE7, 0x97, 0x59, 0xCC, 0x2D, 0x6B, 0x30, 0xB3, 0x18, 0xC8, 0xB3, + 0x35, 0x4B, 0xB9, 0x3B, 0x35, 0x04, 0x18, 0x03, 0x0F, 0x81, 0xCF, 0x73, 0x5A, 0xD6, 0x7C, 0xB7, + 0x1F, 0x08, 0x51, 0x6A, 0x64, 0x03, 0x11, 0x8F, 0x63, 0xF4, 0xF8, 0x1F, 0x51, 0x71, 0xB5, 0x68, + 0xB7, 0x1B, 0xF6, 0xBB, 0xE1, 0x74, 0xB2, 0x18, 0x78, 0x18, 0x02, 0x18, 0x9C, 0xE7, 0xF5, 0x34, + 0x2F, 0x39, 0xDB, 0x1A, 0xF3, 0x61, 0x3F, 0x5D, 0xE6, 0xF5, 0xB2, 0xAC, 0x88, 0x28, 0x59, 0x60, + 0xC5, 0xE3, 0x7E, 0xF4, 0x94, 0x06, 0x55, 0x13, 0x55, 0xE6, 0xA2, 0x3B, 0xAB, 0x6A, 0xCE, 0x42, + 0x14, 0xFB, 0x95, 0x74, 0x13, 0x58, 0x04, 0x10, 0x21, 0x67, 0x4D, 0x29, 0x7B, 0xE6, 0x19, 0x00, + 0xA8, 0x6A, 0xF2, 0xF3, 0x50, 0xC4, 0xF3, 0xBC, 0xC4, 0x18, 0x48, 0xC0, 0x5D, 0x6C, 0x6C, 0xE8, + 0x7E, 0xAA, 0x94, 0x25, 0xAD, 0x39, 0xAB, 0x9B, 0xF6, 0x06, 0x48, 0x7F, 0xFF, 0xC7, 0xEF, 0xFE, + 0xEF, 0xFF, 0xE7, 0xDF, 0x32, 0x0D, 0x4F, 0x2F, 0x2F, 0x5F, 0x7F, 0xF5, 0xFE, 0xDD, 0xC3, 0xF1, + 0x37, 0x7F, 0xFC, 0x74, 0x38, 0xEC, 0x41, 0x25, 0x06, 0x3C, 0xEC, 0x06, 0x53, 0xFD, 0xE2, 0xFD, + 0x7D, 0x5E, 0xD7, 0x65, 0x1A, 0x44, 0xF5, 0x9B, 0x6F, 0x3F, 0x7F, 0xFB, 0xFD, 0xE3, 0xF1, 0xB8, + 0xFB, 0xE5, 0x2F, 0x7E, 0xFA, 0xFE, 0xE1, 0xDE, 0x0B, 0x54, 0x41, 0xDD, 0xAF, 0xA6, 0x3C, 0x99, + 0xBD, 0xC6, 0x25, 0x88, 0x31, 0x28, 0x08, 0x22, 0x32, 0x21, 0xBA, 0x83, 0x58, 0xCD, 0x4A, 0x91, + 0x0E, 0xD8, 0xC0, 0xE6, 0x9A, 0x72, 0x4A, 0xDC, 0xC6, 0x2B, 0xFF, 0x3D, 0x22, 0x1A, 0x01, 0x6A, + 0xFB, 0xAA, 0x91, 0x47, 0xB5, 0x59, 0x3D, 0x5D, 0xAD, 0xE6, 0xE9, 0xD6, 0x9A, 0x33, 0xAF, 0xBA, + 0x42, 0xA7, 0x37, 0x03, 0xEC, 0x35, 0xB5, 0x7E, 0x14, 0x9D, 0xCA, 0x79, 0x7D, 0xA9, 0x5F, 0x3F, + 0x52, 0xBB, 0x6D, 0xCA, 0xD9, 0xBD, 0x37, 0xD3, 0x6A, 0x9B, 0x0D, 0x8E, 0xD5, 0xD3, 0xA8, 0xDC, + 0x6D, 0x15, 0x39, 0x78, 0xFD, 0x30, 0x62, 0x22, 0x26, 0x44, 0x18, 0x30, 0x2C, 0x0B, 0x22, 0x89, + 0x2A, 0x96, 0xE2, 0x48, 0x56, 0x4A, 0x78, 0xC5, 0x2E, 0xC1, 0xA3, 0x95, 0x17, 0xD7, 0x1A, 0xEB, + 0xDB, 0xD8, 0x87, 0x19, 0xDD, 0x29, 0xE6, 0xB7, 0xE2, 0x04, 0x00, 0x04, 0x90, 0x2C, 0x02, 0x8A, + 0x25, 0xC9, 0x89, 0xA0, 0x5A, 0xCD, 0xFD, 0x94, 0x0B, 0x4A, 0x97, 0x1B, 0x39, 0x01, 0x6B, 0x1E, + 0xBB, 0x07, 0x70, 0x7B, 0xA1, 0xC0, 0xA2, 0x91, 0x65, 0xCF, 0x1B, 0xF0, 0x02, 0x4F, 0x55, 0xB7, + 0x12, 0x31, 0x22, 0x2A, 0x09, 0x13, 0x06, 0x49, 0x64, 0x5D, 0x73, 0x4A, 0xB9, 0x64, 0x95, 0x0F, + 0x21, 0x56, 0x76, 0xBD, 0xC9, 0x8A, 0xC0, 0xAE, 0x5E, 0x6D, 0x2F, 0xC0, 0x7B, 0x59, 0xA4, 0xAA, + 0xAE, 0x88, 0xB9, 0x58, 0xF2, 0x8C, 0x9D, 0x69, 0x8C, 0x31, 0x70, 0xCA, 0xE5, 0xBA, 0x4C, 0x72, + 0xFF, 0x06, 0xA1, 0xA8, 0x7E, 0xF5, 0xE1, 0x0E, 0xB1, 0x5C, 0x9E, 0xE8, 0x90, 0xBA, 0xAC, 0x69, + 0x37, 0x0D, 0x7E, 0xB5, 0x75, 0xED, 0x08, 0xC7, 0x71, 0xF0, 0xAE, 0x39, 0x84, 0x8F, 0xEF, 0x0E, + 0xFF, 0x03, 0xC0, 0xEF, 0xBE, 0x7D, 0x5E, 0x92, 0xF8, 0xB1, 0x60, 0xE0, 0xE2, 0x96, 0x13, 0xBF, + 0xAB, 0xDC, 0xCC, 0x0C, 0x22, 0x93, 0xDF, 0x44, 0xE7, 0x39, 0xEA, 0xAE, 0x30, 0x67, 0x91, 0xE7, + 0x4B, 0x2A, 0x3A, 0x51, 0x15, 0xA8, 0x84, 0x58, 0x2A, 0x53, 0x13, 0x6A, 0x56, 0x53, 0xCB, 0xC5, + 0x07, 0x6A, 0x84, 0x98, 0x92, 0xBE, 0xD8, 0x42, 0x88, 0xBB, 0x29, 0x0C, 0x43, 0x50, 0x95, 0xCB, + 0x65, 0x59, 0xB2, 0x44, 0x26, 0x00, 0x58, 0x45, 0x09, 0x91, 0x09, 0x87, 0xC8, 0xFB, 0x71, 0xD8, + 0xEF, 0xE2, 0xBC, 0xE6, 0xE7, 0xF3, 0xAA, 0xAA, 0xC7, 0xDD, 0x10, 0x03, 0xCF, 0x6B, 0x56, 0xD5, + 0x35, 0xE5, 0xF3, 0x92, 0x44, 0x94, 0x18, 0x2D, 0x03, 0x00, 0x10, 0x13, 0xA2, 0x31, 0x53, 0xE0, + 0x00, 0x06, 0xBB, 0x31, 0xCC, 0x4B, 0x32, 0x33, 0x44, 0x3A, 0x5D, 0xD6, 0xC3, 0x6E, 0xF0, 0x80, + 0x0F, 0x2D, 0xF5, 0xB9, 0x8A, 0x1F, 0xDD, 0x0C, 0x44, 0x6C, 0xBF, 0x8B, 0x66, 0x96, 0xB3, 0x1E, + 0x0E, 0x93, 0x16, 0x7C, 0xB2, 0x21, 0xF2, 0x18, 0x03, 0x98, 0x78, 0xA9, 0xA4, 0xC0, 0xB4, 0x9F, + 0x06, 0x00, 0x18, 0x62, 0xF0, 0x68, 0xC9, 0x65, 0xCD, 0x39, 0x8B, 0x19, 0xDC, 0x1D, 0x77, 0x66, + 0x7A, 0x3E, 0x2F, 0x59, 0xF4, 0xB2, 0xA4, 0x94, 0xF2, 0xD7, 0x1F, 0xEF, 0xA1, 0x5A, 0x67, 0xBE, + 0xC3, 0x29, 0x65, 0x0F, 0x18, 0x46, 0xC3, 0x5C, 0xBD, 0x7B, 0x8D, 0x79, 0x08, 0x49, 0x4D, 0x93, + 0x28, 0xA0, 0x04, 0x26, 0x37, 0x18, 0x6A, 0x69, 0x0A, 0x23, 0x04, 0x43, 0xF0, 0x9B, 0xA2, 0x55, + 0xED, 0x70, 0x18, 0xFF, 0xFA, 0xAF, 0xFF, 0x46, 0x52, 0x4E, 0x26, 0xA2, 0xF2, 0xB3, 0xAF, 0x3F, + 0x20, 0xDA, 0x65, 0x5E, 0xEE, 0xEE, 0xEF, 0xC7, 0x61, 0x37, 0x0D, 0x61, 0x1A, 0x07, 0x04, 0x41, + 0x10, 0xAF, 0x6C, 0x35, 0xAF, 0x19, 0x10, 0x41, 0xE0, 0xD3, 0x0F, 0xCF, 0x4F, 0x4F, 0xA7, 0xFF, + 0xE5, 0x5F, 0xFE, 0xD3, 0xBB, 0xE3, 0x31, 0xE7, 0x8C, 0x08, 0x9E, 0xD2, 0x56, 0xAD, 0xC3, 0xCA, + 0xAB, 0xD7, 0xD2, 0xDB, 0xB1, 0x85, 0x09, 0x03, 0x85, 0x92, 0x46, 0x5F, 0x45, 0xBE, 0x07, 0xA4, + 0x02, 0x76, 0xEE, 0x76, 0x28, 0x59, 0xD1, 0x85, 0x67, 0x3A, 0x4C, 0xB9, 0x82, 0x18, 0x76, 0xD3, + 0x1F, 0xA0, 0x5E, 0xB4, 0xD7, 0x8E, 0xF6, 0x0A, 0x98, 0xE2, 0x66, 0xB8, 0x22, 0x20, 0x02, 0x2A, + 0x1A, 0x60, 0xF1, 0x38, 0xB5, 0x76, 0x6E, 0xB4, 0xB0, 0xD7, 0x6E, 0x9C, 0x0A, 0x73, 0x6E, 0x59, + 0xC1, 0x66, 0x39, 0x03, 0x6C, 0x75, 0xDD, 0xBB, 0x46, 0xEC, 0x3A, 0xCB, 0xA7, 0x5B, 0x07, 0x8F, + 0x7B, 0x29, 0xF6, 0x6C, 0x08, 0x61, 0xF0, 0xEB, 0x85, 0x10, 0x11, 0x81, 0x18, 0x87, 0x21, 0x10, + 0xA1, 0x7B, 0x95, 0x62, 0x64, 0x04, 0x58, 0x56, 0x6D, 0x3A, 0xB8, 0xBB, 0x23, 0xE8, 0x55, 0xA8, + 0x8D, 0x8F, 0x99, 0x88, 0x10, 0xA1, 0x7A, 0xC0, 0xC0, 0xA5, 0x85, 0xD6, 0x04, 0x35, 0x33, 0xCD, + 0x52, 0xEC, 0x64, 0xF5, 0x50, 0x7E, 0x93, 0x36, 0xA8, 0x36, 0x47, 0x00, 0x68, 0xC1, 0xA3, 0x6D, + 0xE3, 0x00, 0xAC, 0xE6, 0xA8, 0x77, 0x11, 0x24, 0xCC, 0x61, 0x08, 0x7E, 0x70, 0x89, 0xCE, 0xEA, + 0x39, 0x4B, 0xCA, 0x12, 0x03, 0x23, 0x92, 0x8A, 0x99, 0xA9, 0xA8, 0xE5, 0x2C, 0xAA, 0x8A, 0x84, + 0x21, 0xD0, 0x38, 0xC6, 0x18, 0xD9, 0x15, 0xA1, 0xAD, 0xBF, 0xEB, 0x55, 0xEE, 0x77, 0xE5, 0x66, + 0xD7, 0x1D, 0x25, 0xD7, 0x35, 0xA9, 0x99, 0x1B, 0x83, 0x50, 0x15, 0x1F, 0x2E, 0x57, 0xD7, 0x11, + 0x22, 0x84, 0x40, 0xCC, 0x94, 0x45, 0x55, 0x8C, 0x88, 0xA6, 0x29, 0x56, 0xCF, 0x20, 0x22, 0xE2, + 0x6E, 0x37, 0xF6, 0x52, 0xCB, 0x1F, 0x22, 0x24, 0x2A, 0x27, 0x59, 0x81, 0xF9, 0xCB, 0x0F, 0xB8, + 0x9F, 0x86, 0x25, 0xE5, 0x1F, 0x9E, 0x2F, 0xDF, 0x7E, 0x3E, 0xAF, 0x59, 0xA6, 0x21, 0xEC, 0x86, + 0xF0, 0x32, 0x27, 0xBF, 0xBD, 0x6D, 0x8A, 0xEC, 0x94, 0xE0, 0x46, 0xAE, 0xAA, 0xAD, 0x59, 0x5F, + 0x2E, 0x8B, 0xB7, 0x20, 0xAA, 0xE0, 0x57, 0x67, 0x16, 0x92, 0xF4, 0xCB, 0x7A, 0xDA, 0x1D, 0x9D, + 0xE5, 0xA4, 0xD4, 0xCC, 0xC4, 0xC5, 0x6A, 0xB6, 0x25, 0xE5, 0x65, 0x0D, 0x81, 0xED, 0xB8, 0x1F, + 0xC1, 0x40, 0xD7, 0x4C, 0x84, 0x49, 0x0C, 0x00, 0x99, 0xF0, 0x30, 0xC5, 0x0F, 0xF7, 0x7B, 0x2F, + 0xD9, 0x38, 0x0D, 0x51, 0xC5, 0x2E, 0x4B, 0x42, 0x84, 0xE7, 0xF3, 0x0C, 0x80, 0xA2, 0x10, 0x39, + 0xA4, 0x24, 0x29, 0x79, 0x74, 0x08, 0x7B, 0x6C, 0x84, 0x07, 0xDF, 0x13, 0xC2, 0xFB, 0xE3, 0xEE, + 0xC3, 0xC3, 0x7E, 0x4D, 0x32, 0x0C, 0x4C, 0x44, 0xDF, 0x7F, 0x7E, 0x11, 0xD5, 0x2C, 0x9A, 0x92, + 0xC4, 0x58, 0xDC, 0xC3, 0x8D, 0x76, 0x99, 0x69, 0x5E, 0xD6, 0x79, 0x49, 0xF7, 0xC7, 0x9D, 0x64, + 0x5F, 0x7F, 0x03, 0xB0, 0x61, 0x88, 0x5F, 0x8C, 0x83, 0xBF, 0x96, 0xB3, 0x8C, 0x63, 0xA0, 0x7A, + 0x46, 0x96, 0x73, 0x06, 0xB0, 0x2C, 0x32, 0xC4, 0x70, 0x77, 0x9C, 0x98, 0xE9, 0xE5, 0xB4, 0xBC, + 0x9C, 0x97, 0x18, 0x78, 0x08, 0xCC, 0x84, 0xD6, 0xD5, 0x41, 0xF4, 0x12, 0x26, 0x2F, 0xE7, 0x79, + 0x4D, 0xE2, 0x27, 0xBF, 0xDE, 0x26, 0x22, 0xC4, 0x10, 0x54, 0xD5, 0x80, 0x52, 0xCE, 0x59, 0x8C, + 0x99, 0x45, 0xD4, 0x53, 0xD0, 0xCE, 0x75, 0x6D, 0x63, 0xE0, 0x21, 0xFA, 0x05, 0x87, 0x08, 0x02, + 0xCC, 0xFC, 0xC7, 0x3F, 0x7D, 0xF7, 0x9B, 0xDF, 0xFE, 0xF1, 0xAB, 0xF7, 0xF7, 0xFF, 0xFF, 0xDF, + 0xFD, 0xE1, 0xCF, 0x7F, 0xF9, 0xF5, 0x71, 0x37, 0x7D, 0xF7, 0xE9, 0x05, 0x89, 0x43, 0xE0, 0x87, + 0xFB, 0xE3, 0xDD, 0x61, 0x42, 0x30, 0x42, 0x3C, 0x9F, 0x66, 0x2D, 0xF5, 0x8F, 0x0B, 0xB7, 0xC6, + 0x18, 0xB3, 0xC8, 0xAF, 0x7E, 0xFD, 0xBB, 0xFF, 0xF1, 0x9F, 0xFE, 0xE3, 0xCA, 0xC9, 0x56, 0x63, + 0x90, 0xAC, 0x53, 0xC8, 0x3A, 0x8B, 0x01, 0xBD, 0xCC, 0x3C, 0x11, 0x51, 0x43, 0x31, 0xD7, 0x1C, + 0x9C, 0x3F, 0xFC, 0x14, 0x9F, 0x90, 0x7A, 0x0F, 0x4D, 0x71, 0x13, 0xAB, 0x5F, 0x3D, 0x70, 0x93, + 0xE9, 0x59, 0xE8, 0x1D, 0x8A, 0x51, 0xDB, 0x13, 0xFC, 0xF6, 0x6B, 0x65, 0xE2, 0x96, 0x4F, 0x80, + 0xC4, 0xED, 0x6E, 0x5D, 0x28, 0x46, 0xE6, 0xAD, 0xC7, 0xEB, 0xEA, 0xDC, 0x13, 0x36, 0x14, 0xF3, + 0xD3, 0x52, 0x30, 0xB3, 0x7A, 0x1B, 0xAD, 0xBF, 0x6D, 0x57, 0xB7, 0xEC, 0xDE, 0xAA, 0x95, 0xAF, + 0x1A, 0x27, 0x40, 0x2C, 0xA5, 0x2B, 0x7B, 0xCC, 0xB4, 0x7A, 0x87, 0x98, 0xFA, 0x7D, 0xB7, 0x35, + 0x21, 0xDF, 0x1F, 0x57, 0x29, 0x42, 0xF5, 0xF4, 0x5B, 0xF7, 0x54, 0x10, 0x04, 0xC4, 0x37, 0x00, + 0xB4, 0x9E, 0xCF, 0x94, 0x10, 0x0A, 0xC5, 0x16, 0x1D, 0x52, 0x1E, 0x22, 0xAA, 0xB6, 0x3B, 0xD6, + 0xC9, 0x9A, 0x01, 0xFA, 0xAB, 0x35, 0xE2, 0x8A, 0xDA, 0x84, 0xDB, 0x88, 0x09, 0x31, 0x7C, 0xFC, + 0x70, 0x87, 0x08, 0xEB, 0x9A, 0x2F, 0xF3, 0x5A, 0xE5, 0x18, 0x21, 0x60, 0x4A, 0x69, 0x59, 0xD2, + 0x65, 0x4D, 0x08, 0x38, 0x8D, 0xB1, 0xA9, 0x70, 0x6E, 0x7A, 0x10, 0x5D, 0xD5, 0xC6, 0x7B, 0x73, + 0xD5, 0x7A, 0x55, 0xB6, 0x47, 0x34, 0x66, 0x0C, 0x91, 0xE7, 0x39, 0x65, 0xD1, 0xC7, 0x97, 0x8B, + 0x9A, 0x21, 0x20, 0x13, 0xEE, 0xC6, 0x38, 0x4D, 0x03, 0x13, 0x7A, 0x85, 0x6F, 0x00, 0x8B, 0x81, + 0x62, 0x18, 0xDA, 0xAC, 0xDA, 0xFD, 0x11, 0xAD, 0xDF, 0x5E, 0x82, 0x59, 0xBD, 0xEC, 0xA0, 0x2C, + 0x74, 0x08, 0xC7, 0x03, 0x8E, 0x39, 0x8C, 0x91, 0xF7, 0x63, 0xFC, 0xE6, 0xF3, 0x29, 0x8B, 0x7E, + 0xF9, 0x6E, 0x4F, 0x4F, 0x97, 0xF3, 0x92, 0x93, 0x1F, 0x25, 0x5B, 0x69, 0xF0, 0xB2, 0xE4, 0x97, + 0x39, 0xA9, 0x9A, 0xC7, 0x6E, 0x72, 0x6B, 0x1C, 0xAB, 0x33, 0x1F, 0x4B, 0xAA, 0x84, 0x1F, 0x1E, + 0x88, 0x0B, 0xDE, 0x72, 0x04, 0x01, 0x0A, 0x10, 0xD8, 0x53, 0x47, 0xC9, 0xC3, 0x6E, 0x10, 0x3C, + 0x49, 0x01, 0x01, 0xF4, 0x30, 0x05, 0x46, 0x98, 0x86, 0x30, 0xC4, 0x30, 0x4D, 0x71, 0x59, 0xF3, + 0xE9, 0xB2, 0x64, 0x11, 0x22, 0x3C, 0xCF, 0x49, 0x54, 0x87, 0x18, 0x3C, 0xCA, 0xDF, 0x6B, 0x01, + 0xCD, 0x4B, 0x5E, 0x53, 0x1E, 0x87, 0x90, 0xB2, 0x0E, 0x91, 0x5D, 0x27, 0x72, 0x99, 0x34, 0x46, + 0x1E, 0xC7, 0x18, 0x98, 0x87, 0x2F, 0x1F, 0x56, 0xD7, 0x4A, 0xCA, 0xE8, 0xAE, 0x96, 0x5D, 0x44, + 0x5E, 0xCE, 0xCB, 0xF3, 0x69, 0xB9, 0x2C, 0xD9, 0x4B, 0x3C, 0xC4, 0xC0, 0xFB, 0x69, 0x18, 0x47, + 0x8C, 0x31, 0x20, 0x92, 0x9A, 0x86, 0x00, 0x35, 0x58, 0x1F, 0x96, 0x79, 0x75, 0xD7, 0xD2, 0x71, + 0x37, 0xC5, 0x81, 0x89, 0x28, 0xE7, 0x7C, 0x99, 0xD3, 0xB2, 0xE6, 0xAC, 0x32, 0xC6, 0x80, 0x88, + 0xF3, 0x92, 0xFC, 0x14, 0x72, 0x1C, 0x82, 0x19, 0x88, 0x9A, 0xA8, 0x2D, 0xAB, 0x88, 0x9A, 0xCF, + 0x1D, 0xCB, 0x21, 0x5D, 0x71, 0x23, 0x2C, 0x6B, 0x26, 0x84, 0x21, 0x84, 0x25, 0xE5, 0x24, 0x12, + 0x98, 0x44, 0xF5, 0x3C, 0x67, 0x26, 0x1C, 0x23, 0xA7, 0x1C, 0x62, 0x70, 0x59, 0x28, 0xD3, 0x34, + 0xFC, 0xE1, 0x0F, 0x7F, 0xCA, 0x49, 0x3E, 0x3D, 0x9F, 0x8E, 0x87, 0x09, 0x11, 0x9F, 0xCE, 0xF3, + 0x9F, 0xBE, 0x7F, 0xDC, 0xED, 0xA6, 0xC3, 0x6E, 0x22, 0x66, 0x62, 0x9E, 0x22, 0xA7, 0x94, 0x55, + 0x35, 0x46, 0x4E, 0x97, 0x25, 0x84, 0xC0, 0xC4, 0xBE, 0xD0, 0x88, 0xF8, 0xEB, 0xDF, 0xFC, 0xE9, + 0x27, 0x5F, 0x7F, 0xFC, 0xE2, 0xE3, 0x07, 0x3F, 0xD6, 0x80, 0x4E, 0xF9, 0x29, 0x6C, 0x59, 0xB6, + 0xCB, 0x29, 0x84, 0x02, 0x73, 0x8B, 0x38, 0x75, 0x65, 0x01, 0x4A, 0xCC, 0xBF, 0x9A, 0x1A, 0x81, + 0x9B, 0x26, 0xB6, 0x1D, 0x5E, 0x6E, 0xF9, 0x46, 0xE2, 0xAC, 0x04, 0x57, 0x68, 0xD5, 0x63, 0x03, + 0xFE, 0xD8, 0xAF, 0x4E, 0x52, 0x25, 0xDA, 0xA3, 0xD9, 0xBF, 0x88, 0x56, 0xCA, 0xB5, 0x13, 0x54, + 0x06, 0xED, 0x4C, 0xC8, 0x4D, 0x44, 0xBD, 0xC9, 0x5F, 0x85, 0x8D, 0x01, 0xA4, 0xFB, 0xF8, 0xE6, + 0x05, 0xEC, 0x73, 0x8F, 0xAF, 0x91, 0x11, 0xBB, 0x07, 0xC0, 0x72, 0xCE, 0x4C, 0xCC, 0x25, 0x2A, + 0x4A, 0x3D, 0x1C, 0xA3, 0x59, 0x69, 0xBE, 0x1A, 0x8C, 0x68, 0x58, 0x2E, 0x60, 0xAC, 0x42, 0xFD, + 0x8A, 0xBB, 0x01, 0xD1, 0xCC, 0x23, 0x2A, 0x10, 0x19, 0x98, 0xB7, 0xC8, 0x61, 0x37, 0x39, 0x89, + 0xA9, 0x89, 0x9A, 0x2D, 0x0E, 0x0C, 0xB6, 0x29, 0xDF, 0x3E, 0x7E, 0xF3, 0x56, 0x47, 0xDB, 0xCE, + 0x75, 0x54, 0x4E, 0x52, 0xCA, 0xB7, 0xC2, 0x65, 0x5E, 0x87, 0xC0, 0xCB, 0x9A, 0x3E, 0x3F, 0x5F, + 0xFC, 0xE2, 0x48, 0xD7, 0x1E, 0x93, 0x88, 0x88, 0x82, 0xC1, 0x34, 0x06, 0x3F, 0x9E, 0xD8, 0x4D, + 0x43, 0x8C, 0xE5, 0x16, 0x81, 0x37, 0xBA, 0x7B, 0x65, 0xCC, 0x43, 0x35, 0x24, 0xEB, 0x36, 0x94, + 0x6D, 0x55, 0x35, 0x0F, 0x1A, 0x4C, 0xA2, 0x84, 0x94, 0x72, 0xF6, 0xE8, 0x50, 0x00, 0x24, 0xA6, + 0x10, 0xC8, 0xCC, 0x52, 0xCA, 0x5B, 0x42, 0xE9, 0x8F, 0x84, 0x08, 0xDD, 0xF4, 0x6B, 0x66, 0x5E, + 0x96, 0x2E, 0xAD, 0x19, 0x10, 0x3C, 0xE5, 0x22, 0x86, 0xE0, 0xF2, 0xE6, 0xDD, 0x71, 0xF7, 0xF9, + 0xE5, 0xB2, 0x1B, 0xE3, 0x71, 0x3F, 0x7C, 0x7A, 0x3A, 0xFF, 0xF0, 0xBC, 0x10, 0x61, 0x56, 0x45, + 0x65, 0x00, 0xBB, 0xAC, 0x19, 0xAC, 0xC4, 0xA9, 0xD5, 0x92, 0x38, 0x1B, 0x48, 0xD7, 0xDE, 0x41, + 0x51, 0xD7, 0xE4, 0x76, 0xC6, 0x95, 0xC7, 0x17, 0x3D, 0x46, 0x4C, 0xED, 0xF1, 0x34, 0xA7, 0x2C, + 0x4F, 0xE7, 0xE5, 0xEB, 0xF7, 0xC7, 0xFB, 0xE3, 0xEE, 0xB2, 0xAC, 0x00, 0x91, 0x10, 0xA7, 0x18, + 0xC6, 0x21, 0xB8, 0xCB, 0x3C, 0x30, 0x05, 0x66, 0x35, 0xB8, 0xAC, 0x79, 0x37, 0x84, 0xF3, 0x92, + 0x4F, 0xF3, 0x7A, 0xB7, 0x1B, 0x03, 0xB3, 0xA8, 0x39, 0xB6, 0x9C, 0xE6, 0x75, 0xCD, 0xB2, 0x1B, + 0xE3, 0xC7, 0x87, 0xBD, 0x99, 0xFD, 0xF1, 0xFB, 0x67, 0x97, 0x57, 0x7E, 0xB6, 0xE6, 0x11, 0x09, + 0xE3, 0xB8, 0xE5, 0x48, 0xB4, 0x15, 0xF0, 0x05, 0x9F, 0x97, 0x9C, 0xB3, 0x4E, 0x63, 0x5C, 0xD6, + 0x34, 0xC6, 0x00, 0x88, 0xBA, 0xA6, 0xC0, 0x14, 0x63, 0x31, 0xCF, 0x19, 0x6B, 0x0C, 0xB7, 0x6F, + 0xD0, 0x18, 0x9D, 0xC9, 0x87, 0x48, 0x00, 0xF0, 0xF4, 0x7C, 0x46, 0xC4, 0xCB, 0x9C, 0x9E, 0xCF, + 0x0B, 0x31, 0x0D, 0x51, 0xC6, 0xC0, 0x00, 0x30, 0xCF, 0xAB, 0x07, 0xF7, 0x1A, 0x60, 0xCE, 0xD9, + 0xD4, 0x88, 0x9B, 0x12, 0xED, 0xF8, 0x85, 0x84, 0xB8, 0x8A, 0x02, 0x80, 0x5F, 0xFE, 0x40, 0x84, + 0x48, 0xC1, 0x15, 0x69, 0x03, 0x1C, 0x07, 0x1B, 0x82, 0x07, 0xC1, 0x09, 0xB3, 0x9F, 0x66, 0x20, + 0x33, 0xBD, 0xBB, 0xDF, 0xAF, 0x29, 0x5D, 0x96, 0x35, 0x04, 0x7A, 0xFF, 0x70, 0xB7, 0x9F, 0xA6, + 0x0F, 0xEF, 0xEE, 0x63, 0x8C, 0xD3, 0x6E, 0x1C, 0x86, 0xB8, 0x9B, 0x06, 0x22, 0x10, 0xD1, 0xDD, + 0x34, 0x10, 0xE3, 0x30, 0x0E, 0xA7, 0xD3, 0x05, 0x01, 0x2D, 0x86, 0x94, 0x73, 0x0C, 0x71, 0x59, + 0xD3, 0xE5, 0xB2, 0x94, 0xB2, 0xC8, 0x9D, 0x8B, 0x0B, 0x11, 0x81, 0x0C, 0x3C, 0xE5, 0xDA, 0x40, + 0xC5, 0xAA, 0xC7, 0x93, 0x90, 0xB7, 0x4C, 0x9A, 0x9A, 0x07, 0xE3, 0xA1, 0x09, 0x4D, 0x35, 0xC0, + 0x5E, 0x9B, 0x80, 0x76, 0xEA, 0xD5, 0x99, 0x1D, 0xFF, 0xB0, 0xBE, 0xD3, 0xB3, 0xC3, 0xA6, 0x49, + 0xC1, 0x2D, 0xFC, 0x21, 0x80, 0x55, 0x42, 0x03, 0xC7, 0xBA, 0x6B, 0x2D, 0xAC, 0x62, 0xE8, 0x55, + 0x8C, 0x67, 0x8D, 0x12, 0x69, 0x6F, 0x14, 0xF3, 0xCB, 0xB6, 0x1C, 0xA2, 0xDB, 0xB1, 0x95, 0xD6, + 0xBB, 0x94, 0xBE, 0x0E, 0xCE, 0x4A, 0x88, 0xB0, 0x99, 0xB9, 0x55, 0x23, 0x62, 0x88, 0xD2, 0x22, + 0xDA, 0x54, 0xF5, 0xE6, 0x9E, 0x76, 0x31, 0xAF, 0x00, 0xB9, 0x9D, 0x08, 0x97, 0x1E, 0x15, 0x88, + 0xA8, 0xD8, 0xCF, 0x84, 0x00, 0xE0, 0x17, 0xC1, 0x79, 0x54, 0x85, 0x98, 0x20, 0x20, 0x0E, 0x7E, + 0xB9, 0xC1, 0xE6, 0xB9, 0x73, 0xCC, 0x69, 0x90, 0x57, 0xD7, 0xBD, 0x14, 0xE7, 0x68, 0x33, 0xDD, + 0x10, 0xD3, 0x75, 0x33, 0x02, 0x3F, 0xE7, 0x51, 0xD5, 0xF0, 0xED, 0xA7, 0x67, 0x77, 0x75, 0x3F, + 0x9D, 0x16, 0xAB, 0xC7, 0x4C, 0x6E, 0xDF, 0x22, 0xE2, 0xC0, 0x8C, 0x08, 0xA2, 0xBA, 0x9F, 0xC6, + 0xB1, 0x5E, 0x3D, 0xD9, 0x1D, 0xBD, 0x77, 0x9D, 0x5E, 0x03, 0xF3, 0x26, 0x2E, 0xB6, 0x24, 0x2C, + 0xD0, 0x52, 0xD6, 0x46, 0x9C, 0x6D, 0xCE, 0x97, 0x25, 0x67, 0xF7, 0x1F, 0x41, 0x16, 0x7D, 0x4A, + 0xB3, 0xA3, 0xA7, 0xFB, 0x89, 0x43, 0xF0, 0xFC, 0x19, 0x77, 0x43, 0x7A, 0xEE, 0xEE, 0x95, 0xD7, + 0xA0, 0xDF, 0x0C, 0x27, 0xBE, 0x10, 0xC0, 0xCC, 0x72, 0x96, 0xE7, 0x97, 0xCB, 0xB2, 0x9E, 0xA6, + 0x71, 0x18, 0x86, 0x60, 0x6A, 0xA7, 0xCB, 0x6A, 0x06, 0xC7, 0xDD, 0xF0, 0x72, 0x59, 0xBE, 0x7F, + 0x9A, 0x5F, 0x2E, 0xAB, 0xA8, 0x79, 0x1C, 0x59, 0xCC, 0x4A, 0x88, 0x6B, 0x2E, 0x70, 0xDB, 0x66, + 0x85, 0x35, 0x08, 0xE9, 0x7A, 0x8A, 0x20, 0xDB, 0x81, 0x98, 0x75, 0xAE, 0x61, 0xBC, 0x2C, 0x79, + 0x5E, 0x65, 0x8C, 0x6C, 0x66, 0xCB, 0x9A, 0xE7, 0x35, 0x79, 0x38, 0xC8, 0x34, 0xC6, 0x9C, 0xC5, + 0xEF, 0xFD, 0x66, 0x2F, 0x81, 0x1F, 0xF8, 0xB0, 0x1F, 0x7D, 0xD7, 0xF6, 0x63, 0x34, 0x80, 0x79, + 0x4D, 0x97, 0x35, 0x47, 0x26, 0x55, 0x20, 0xB2, 0xFD, 0x2E, 0x9E, 0x97, 0xB4, 0xA6, 0xCC, 0x44, + 0x31, 0xF2, 0xBC, 0xA4, 0x69, 0x08, 0x87, 0x9D, 0x7B, 0x30, 0x7C, 0x0D, 0xCB, 0xDD, 0xDD, 0xBD, + 0xA0, 0x76, 0x3B, 0x37, 0xE7, 0xEC, 0xCB, 0xEB, 0x81, 0xC4, 0x38, 0xC4, 0xC3, 0x6E, 0x40, 0x80, + 0x10, 0x18, 0x09, 0x89, 0xAF, 0x8E, 0xFF, 0xDB, 0x62, 0xBA, 0xCD, 0x1E, 0x07, 0x56, 0x91, 0xC7, + 0xA7, 0xF3, 0x79, 0x5E, 0x45, 0xF5, 0xE5, 0x9C, 0x10, 0x31, 0x25, 0x41, 0x80, 0xE3, 0x34, 0x04, + 0xA6, 0x94, 0x32, 0x18, 0x5C, 0xE6, 0xD5, 0x31, 0xD7, 0xFD, 0x6E, 0x46, 0xE0, 0x71, 0x70, 0x25, + 0xE2, 0xCC, 0x00, 0x0C, 0xD6, 0x2C, 0xD1, 0x0D, 0x52, 0xAF, 0x63, 0x0E, 0xA5, 0xB6, 0x72, 0x2E, + 0xD7, 0xB5, 0x02, 0xF8, 0x0D, 0x29, 0x88, 0xCC, 0x94, 0xD3, 0xFA, 0x5F, 0xFE, 0xF6, 0xB7, 0xC4, + 0xFC, 0xF3, 0x3F, 0xFB, 0xE2, 0xE1, 0xEE, 0xF0, 0xF1, 0xFD, 0x91, 0x38, 0x7C, 0xFD, 0xE5, 0x87, + 0x87, 0x87, 0x43, 0x88, 0xE1, 0x72, 0x99, 0xC1, 0xEF, 0x91, 0xD8, 0x8F, 0xCB, 0x9A, 0x52, 0x36, + 0x0F, 0x64, 0xFD, 0xFC, 0xF4, 0xB4, 0xDB, 0xEF, 0x86, 0x71, 0xF8, 0xF4, 0xE9, 0x31, 0x8B, 0x7D, + 0x7E, 0x7C, 0xF9, 0xE5, 0x2F, 0x8A, 0xDB, 0xE5, 0x95, 0xF3, 0xDB, 0x6A, 0x00, 0x44, 0x27, 0x7D, + 0xFE, 0x2B, 0x67, 0x6F, 0xD2, 0x63, 0x49, 0x92, 0xA4, 0x89, 0x89, 0x88, 0xAA, 0x9A, 0xD9, 0x5B, + 0x7D, 0x89, 0x25, 0x23, 0x97, 0xC8, 0xAA, 0xEC, 0xDA, 0xBA, 0xBA, 0xD1, 0x8D, 0x1E, 0x0E, 0x38, + 0xC3, 0x03, 0x81, 0x41, 0x1F, 0xF9, 0x23, 0x88, 0x39, 0x10, 0x73, 0xE2, 0xFC, 0x3D, 0x5E, 0x78, + 0x22, 0x88, 0x26, 0x06, 0x43, 0x0E, 0x7A, 0xAB, 0xAA, 0xAC, 0xCC, 0xCA, 0xCA, 0x25, 0x22, 0x63, + 0x0F, 0x5F, 0xDE, 0x6E, 0x66, 0xBA, 0x88, 0xF0, 0x20, 0xAA, 0xF6, 0xCC, 0x9F, 0x47, 0x15, 0x01, + 0xBE, 0x2A, 0x44, 0xBA, 0x3F, 0xB7, 0x55, 0x55, 0x54, 0xF4, 0x93, 0xED, 0x93, 0xE2, 0x82, 0x11, + 0x39, 0x96, 0x31, 0x97, 0xAC, 0x20, 0x11, 0xF1, 0xD6, 0x14, 0x86, 0xE6, 0x6C, 0x6A, 0x0D, 0xD2, + 0x70, 0x77, 0xB1, 0xFD, 0xE9, 0xCF, 0x58, 0x78, 0x4E, 0x64, 0x35, 0x5F, 0x74, 0x20, 0x2F, 0xCC, + 0x24, 0x8C, 0x47, 0x9D, 0x40, 0x77, 0xD9, 0x8D, 0x00, 0xB2, 0x8F, 0x78, 0xA4, 0xCE, 0x78, 0x78, + 0x9F, 0x41, 0x14, 0x0B, 0x6E, 0x3A, 0xD5, 0x62, 0x98, 0xC9, 0x64, 0x90, 0xEE, 0xCE, 0xFE, 0xF0, + 0x88, 0x08, 0xA5, 0x6B, 0x3D, 0x62, 0x8A, 0xA2, 0x00, 0x11, 0x73, 0x46, 0x0A, 0xB0, 0x48, 0x0C, + 0x29, 0xC4, 0x98, 0x8E, 0x94, 0x01, 0xA8, 0xE5, 0xFE, 0x88, 0x68, 0xEE, 0xB9, 0x92, 0x58, 0x29, + 0xFC, 0x0D, 0x0A, 0x0B, 0x13, 0x33, 0x03, 0xAB, 0x5B, 0x8B, 0x11, 0x40, 0x90, 0x44, 0x12, 0x03, + 0xD1, 0x10, 0xA2, 0x84, 0x82, 0x78, 0x8E, 0x53, 0x36, 0x18, 0xB9, 0x77, 0xB3, 0xDF, 0x55, 0x90, + 0x94, 0x18, 0x4A, 0xCF, 0x1C, 0x54, 0x9F, 0xDD, 0xB5, 0x3E, 0xED, 0x8F, 0x10, 0x0F, 0x01, 0x34, + 0xC2, 0xA5, 0x9C, 0x7F, 0x95, 0x33, 0xCE, 0xDA, 0xCA, 0xA9, 0x6E, 0xC1, 0x72, 0xEE, 0x1D, 0x50, + 0x3A, 0xD6, 0xA3, 0xA3, 0x5D, 0xEE, 0x8E, 0x5E, 0x43, 0x44, 0x29, 0xCD, 0xDF, 0xAA, 0xCA, 0x6A, + 0xC2, 0x07, 0x91, 0xB2, 0xB9, 0xA8, 0x59, 0x2F, 0x21, 0x26, 0x1F, 0xD2, 0xBE, 0x0B, 0xCE, 0xE4, + 0x96, 0x4E, 0xD3, 0xC6, 0xA9, 0x3F, 0x5B, 0x8B, 0xB3, 0x0C, 0x19, 0x24, 0x41, 0xFC, 0x80, 0x75, + 0x39, 0x16, 0x11, 0x63, 0x0C, 0x19, 0xDA, 0x6E, 0x0F, 0x9B, 0x5D, 0x17, 0x36, 0x0C, 0x22, 0x3E, + 0xB1, 0x08, 0x74, 0xDE, 0x1C, 0xBA, 0xE0, 0x43, 0xAC, 0x9C, 0x71, 0x56, 0xD5, 0x54, 0x6C, 0xFB, + 0x58, 0xC6, 0x29, 0x6F, 0x2F, 0xE3, 0x09, 0x1E, 0x3D, 0x3F, 0x64, 0xB2, 0xAB, 0x11, 0x62, 0x27, + 0x3C, 0x76, 0x8D, 0x8B, 0x0C, 0x84, 0xE2, 0x23, 0x80, 0x80, 0x21, 0x3C, 0x74, 0xC1, 0x59, 0x53, + 0x3B, 0xCB, 0x9C, 0x87, 0xA6, 0xAE, 0x9D, 0x0E, 0x09, 0x11, 0x59, 0x4B, 0x67, 0x8B, 0xA9, 0xB3, + 0xC6, 0x87, 0xD8, 0xFA, 0xA8, 0xFA, 0x82, 0x27, 0x72, 0x31, 0x9F, 0x88, 0x48, 0x76, 0x3C, 0x11, + 0x3A, 0x43, 0x29, 0x72, 0x5D, 0xB9, 0xB3, 0x05, 0xCE, 0x26, 0xB5, 0x88, 0x30, 0x83, 0x31, 0x26, + 0x84, 0xD8, 0xF0, 0x40, 0x75, 0x8A, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x7B, 0xDF, + 0xD4, 0xCE, 0x14, 0xCA, 0x1A, 0x50, 0xBA, 0x74, 0xE6, 0xDE, 0xC7, 0xED, 0xBE, 0xAB, 0x9C, 0x3D, + 0x9B, 0x4F, 0x00, 0xD1, 0xFB, 0x90, 0x58, 0x0C, 0xA1, 0x73, 0x56, 0x7D, 0xB7, 0x27, 0x3B, 0xD0, + 0x30, 0x47, 0xA8, 0xF9, 0x07, 0x44, 0x4D, 0xED, 0x42, 0x4C, 0xB1, 0xE7, 0xDA, 0x19, 0x40, 0x30, + 0x89, 0x34, 0xE8, 0x31, 0x6C, 0x30, 0x5A, 0xDB, 0x80, 0x5A, 0x5D, 0xA8, 0xA9, 0x92, 0x02, 0x0C, + 0x62, 0x0A, 0x56, 0xB0, 0xD6, 0x48, 0xF6, 0x54, 0xA1, 0xC2, 0x1A, 0x63, 0xA8, 0xAE, 0xAC, 0xA6, + 0xF8, 0x77, 0x3E, 0x36, 0x95, 0xB5, 0xD6, 0xA8, 0xD6, 0xB0, 0xD6, 0xC6, 0xD8, 0xA7, 0x18, 0x7F, + 0xFD, 0x8B, 0x9F, 0x4C, 0x26, 0xD5, 0x72, 0x3E, 0x4D, 0x2C, 0xCB, 0xC5, 0xDC, 0x5A, 0xE3, 0x9C, + 0xF1, 0xDE, 0xC7, 0x10, 0xC8, 0x18, 0x67, 0xED, 0x61, 0xDF, 0xEE, 0xF7, 0xAD, 0x20, 0xD6, 0x75, + 0xD5, 0xC7, 0xD0, 0xF6, 0x7D, 0xDB, 0xF5, 0xD6, 0xDA, 0x5D, 0xDB, 0x27, 0x96, 0xEB, 0xDB, 0x2D, + 0xB3, 0xF6, 0xB9, 0x85, 0xC1, 0x1B, 0x5D, 0x16, 0xA9, 0x2E, 0xD3, 0x1C, 0x72, 0x1C, 0xD6, 0x9B, + 0xBE, 0x75, 0x36, 0x5B, 0x04, 0x86, 0x4C, 0x08, 0x25, 0x46, 0x00, 0x88, 0x54, 0x08, 0x1D, 0x75, + 0xD4, 0x28, 0xA7, 0xF3, 0xDE, 0x71, 0x57, 0xC1, 0xFF, 0xDF, 0x8F, 0x1C, 0xAB, 0x44, 0x8F, 0x9F, + 0xF2, 0x0D, 0x96, 0x0A, 0x02, 0x18, 0x9E, 0x73, 0x58, 0x59, 0xC3, 0xDE, 0x93, 0xD2, 0xC8, 0x8C, + 0xC4, 0xF2, 0xA4, 0x04, 0xF7, 0x70, 0x9F, 0x0C, 0xE5, 0x97, 0x05, 0x25, 0x15, 0x91, 0x2E, 0xE5, + 0x5D, 0x00, 0xA3, 0xFD, 0x39, 0x1B, 0xDA, 0x20, 0x49, 0x95, 0x3B, 0x8B, 0x48, 0x0C, 0x31, 0xA6, + 0x04, 0xDA, 0x24, 0x21, 0x33, 0x4A, 0x65, 0xF2, 0x5B, 0x16, 0x1E, 0xE7, 0xC7, 0xA9, 0x94, 0x12, + 0x11, 0x31, 0x31, 0x28, 0xA1, 0x8F, 0x0C, 0x20, 0x41, 0x1F, 0x3E, 0x71, 0x69, 0x08, 0x3C, 0xD2, + 0x1B, 0x22, 0x52, 0x98, 0x3A, 0xB2, 0xF5, 0x86, 0x38, 0x2A, 0x51, 0xCA, 0x15, 0xB6, 0x80, 0xAC, + 0x24, 0x50, 0xB9, 0xAF, 0x5B, 0x7E, 0x7B, 0x40, 0xEB, 0x43, 0x1A, 0x65, 0xFC, 0xA3, 0x00, 0x7A, + 0x1F, 0xA5, 0x2C, 0x54, 0x16, 0x38, 0x74, 0x21, 0x25, 0xC6, 0x09, 0x86, 0x10, 0x45, 0x34, 0x36, + 0x93, 0x43, 0x8A, 0x58, 0x0C, 0xF8, 0x13, 0x14, 0xA6, 0xFA, 0xAE, 0xA4, 0xFC, 0xE6, 0x81, 0x23, + 0x42, 0xCD, 0x1D, 0x57, 0x31, 0xD1, 0xD6, 0x4D, 0xCC, 0x61, 0x73, 0xF0, 0x52, 0x50, 0x26, 0x11, + 0xC6, 0xC4, 0x9E, 0xB0, 0x76, 0x56, 0x47, 0x38, 0xC4, 0x24, 0x02, 0xAA, 0xD7, 0x26, 0x4D, 0x5D, + 0x55, 0x16, 0x00, 0x4E, 0x04, 0xE8, 0xFE, 0xE2, 0xB4, 0xC6, 0x5C, 0x9C, 0xCD, 0x27, 0x4D, 0xFD, + 0xF6, 0x6A, 0x7D, 0xB5, 0x3A, 0x44, 0xE6, 0xC8, 0x62, 0x89, 0x8C, 0xC1, 0x69, 0x53, 0x69, 0x56, + 0x4A, 0x1F, 0x52, 0x4C, 0x3C, 0x72, 0x75, 0x21, 0xA2, 0x0C, 0xB2, 0x7F, 0x57, 0x57, 0x0E, 0x57, + 0xD6, 0x6F, 0x04, 0x11, 0x6A, 0x4B, 0x21, 0x89, 0x21, 0x28, 0xE1, 0x2C, 0x11, 0x80, 0x3E, 0x32, + 0x82, 0x54, 0x40, 0x95, 0xB3, 0xB6, 0xD0, 0x45, 0xA8, 0xE7, 0x5E, 0xEB, 0x81, 0x10, 0xD1, 0x98, + 0xDC, 0xF2, 0xDA, 0x59, 0xD3, 0xF5, 0x21, 0xC4, 0x34, 0xAD, 0xAD, 0x0F, 0x1C, 0x22, 0xF7, 0x21, + 0xB6, 0x7D, 0xE8, 0x7C, 0x4C, 0x2C, 0x0F, 0xCF, 0xA6, 0xCE, 0x1A, 0xEB, 0x0C, 0x33, 0x1B, 0xC2, + 0xD2, 0x01, 0xEF, 0x88, 0xB9, 0xD4, 0x67, 0x34, 0xB8, 0xA5, 0x14, 0x09, 0xF6, 0x7D, 0x4C, 0x89, + 0x7B, 0x0E, 0xCE, 0x98, 0xBA, 0x76, 0x4E, 0xCB, 0xE2, 0x41, 0xB2, 0x85, 0x7D, 0xBF, 0xDA, 0x11, + 0x00, 0x00, 0xAC, 0xB5, 0xFA, 0x0D, 0x11, 0x4D, 0x26, 0x95, 0x4E, 0x56, 0xDB, 0x05, 0x40, 0x40, + 0xD0, 0x04, 0x57, 0x8E, 0x88, 0xCA, 0x4D, 0x1C, 0x23, 0xC7, 0xC4, 0xCE, 0x1A, 0x61, 0xD6, 0xFA, + 0x36, 0x2E, 0x9D, 0xAB, 0x09, 0x73, 0x46, 0xBB, 0xB3, 0x66, 0x0C, 0x9F, 0x95, 0x44, 0x47, 0x84, + 0x26, 0x8D, 0x43, 0x84, 0xBA, 0x72, 0x9D, 0x8F, 0xAA, 0x24, 0x00, 0x05, 0x89, 0xCE, 0xCF, 0x16, + 0x31, 0xA6, 0xBA, 0x72, 0xCC, 0x3C, 0x9F, 0xCF, 0xE6, 0xF3, 0xC9, 0xB3, 0xE7, 0xAF, 0x74, 0x15, + 0x5B, 0xC2, 0xBA, 0xAE, 0x44, 0x7C, 0x88, 0x0C, 0x48, 0x21, 0xA6, 0x10, 0x0F, 0x5D, 0xE7, 0x91, + 0xEC, 0x66, 0xB3, 0xEB, 0x43, 0x48, 0x89, 0x4D, 0x66, 0xAC, 0x2D, 0x00, 0xA7, 0xE4, 0x46, 0x1D, + 0x69, 0x79, 0x64, 0xE0, 0x0B, 0x2E, 0xCB, 0x49, 0x7F, 0x2E, 0x16, 0x5F, 0xF6, 0xA7, 0xE4, 0xE0, + 0x99, 0x00, 0x90, 0x88, 0xF2, 0x62, 0x65, 0x46, 0x75, 0x66, 0x26, 0x83, 0xD9, 0x03, 0x84, 0x1F, + 0x26, 0xFB, 0xBE, 0x2F, 0x87, 0xC3, 0x37, 0xA7, 0x20, 0x4E, 0xEE, 0x68, 0x9A, 0x91, 0x25, 0x90, + 0x0D, 0xBD, 0xE1, 0xF0, 0x61, 0x65, 0x0D, 0xB7, 0x28, 0xC9, 0x78, 0x92, 0x99, 0x28, 0x54, 0xCD, + 0xE9, 0xD1, 0x04, 0xBA, 0xD7, 0x72, 0x1A, 0xDF, 0x30, 0x4B, 0xAC, 0x46, 0x19, 0x34, 0xED, 0x0B, + 0x8A, 0x8D, 0x9C, 0xF5, 0x63, 0x91, 0xF7, 0xE3, 0x63, 0x0B, 0x88, 0x80, 0x72, 0x1E, 0x30, 0xA7, + 0x98, 0x92, 0x70, 0x89, 0x7D, 0x71, 0xF6, 0xD1, 0xEB, 0x10, 0x0F, 0x86, 0xCC, 0x40, 0x76, 0x8D, + 0x08, 0x59, 0xF9, 0xC8, 0xF8, 0xE1, 0xB3, 0x80, 0x01, 0x40, 0x8A, 0x40, 0x26, 0xC3, 0x52, 0x55, + 0x23, 0x47, 0xAD, 0x96, 0x75, 0xF7, 0xD1, 0xA0, 0xE6, 0x01, 0x3C, 0xE9, 0xFB, 0x0B, 0x47, 0x06, + 0x43, 0xC6, 0x1A, 0x43, 0x48, 0x5A, 0x9C, 0x21, 0x00, 0x16, 0x71, 0xC8, 0x80, 0xCE, 0x9E, 0x20, + 0x45, 0x19, 0xD6, 0x1A, 0x00, 0x0C, 0x21, 0x22, 0x21, 0x91, 0x05, 0x38, 0x9A, 0xA3, 0xAC, 0x76, + 0x9C, 0x21, 0xAD, 0xB6, 0x39, 0xD9, 0x31, 0xA0, 0x30, 0xB7, 0xE8, 0x6B, 0x69, 0x75, 0x28, 0x94, + 0x5D, 0xA6, 0xF7, 0xD1, 0xFB, 0x18, 0x62, 0xDA, 0x1C, 0xBA, 0x7D, 0xEB, 0xDB, 0x2E, 0x6A, 0xEA, + 0x03, 0x96, 0x4D, 0x53, 0x63, 0x25, 0x88, 0xA0, 0x69, 0x76, 0xD6, 0x18, 0xF5, 0x85, 0xEB, 0x7E, + 0x32, 0xC6, 0x14, 0x45, 0x7F, 0x9C, 0xE0, 0xBE, 0xA2, 0x55, 0x01, 0x26, 0x4D, 0xF5, 0xF4, 0x93, + 0x07, 0x67, 0xCB, 0xE9, 0xDB, 0xAB, 0xED, 0xD5, 0xA6, 0xDD, 0xE7, 0x2E, 0x76, 0xBE, 0xE4, 0xCA, + 0x01, 0x97, 0x62, 0xF2, 0x32, 0xD3, 0x23, 0xC9, 0x1A, 0xFD, 0xA2, 0xFB, 0x83, 0x14, 0xD7, 0x22, + 0x20, 0xCC, 0x6A, 0x0B, 0x00, 0xAD, 0x0F, 0x83, 0xBA, 0x53, 0xF1, 0xD3, 0x74, 0x72, 0x63, 0x68, + 0xB5, 0x6D, 0xD7, 0xFB, 0x76, 0x31, 0xA9, 0x97, 0xB3, 0x7A, 0x36, 0x69, 0x90, 0x30, 0xC5, 0x94, + 0x54, 0xF1, 0x29, 0x57, 0x6B, 0x62, 0x6D, 0x6D, 0xA8, 0xC4, 0xD6, 0xCE, 0xF2, 0xAE, 0xED, 0x99, + 0x4B, 0x4D, 0xBB, 0x31, 0x21, 0x72, 0x4C, 0x3C, 0x9D, 0xD4, 0x06, 0xD1, 0x38, 0x6D, 0x74, 0x46, + 0x31, 0x26, 0xEF, 0x63, 0x4C, 0xA2, 0xE9, 0xB2, 0x22, 0x6C, 0xAD, 0x49, 0x29, 0xF9, 0x90, 0x82, + 0x8F, 0x37, 0xDB, 0xB6, 0xA9, 0xAC, 0xFA, 0xE6, 0x8D, 0xCD, 0xEF, 0x68, 0x2D, 0x0D, 0xB9, 0x32, + 0xC3, 0xB8, 0x9D, 0xAE, 0xAB, 0x32, 0x74, 0xBA, 0x73, 0xAA, 0x91, 0x08, 0x00, 0xF3, 0x49, 0x0D, + 0x93, 0x8C, 0xDE, 0x13, 0x73, 0x5D, 0xD9, 0x22, 0xFA, 0x94, 0x12, 0x87, 0x24, 0x84, 0x60, 0x1C, + 0x18, 0x44, 0x4E, 0xC2, 0x9C, 0x8C, 0xA1, 0x04, 0x32, 0x70, 0x16, 0x09, 0x80, 0x35, 0x46, 0x69, + 0x3F, 0x7B, 0x1F, 0x43, 0x4C, 0x21, 0x26, 0x16, 0xD8, 0xB7, 0x5E, 0xA1, 0x25, 0x11, 0x58, 0x6B, + 0xD6, 0x9B, 0xCD, 0xD9, 0x7C, 0xF2, 0xD3, 0x2F, 0x3E, 0x57, 0x02, 0xA2, 0xD9, 0x6C, 0xF2, 0xF6, + 0xDD, 0x55, 0x4C, 0xC9, 0x18, 0x2D, 0x9F, 0x60, 0x86, 0x40, 0x31, 0xC5, 0x98, 0x42, 0x8C, 0x29, + 0xC9, 0x6A, 0xB3, 0x25, 0x34, 0x68, 0xA8, 0xF3, 0x29, 0xC6, 0x84, 0x00, 0xFB, 0x5D, 0xDB, 0x76, + 0x61, 0x70, 0xE0, 0x40, 0x31, 0x43, 0x8E, 0x99, 0x52, 0xB9, 0xBF, 0xC5, 0xA0, 0x21, 0x44, 0x19, + 0x27, 0xA1, 0x4C, 0x9E, 0x88, 0xA0, 0x32, 0xD3, 0x38, 0x15, 0x60, 0x01, 0x90, 0xEC, 0xE7, 0x2E, + 0xE0, 0x72, 0x48, 0x73, 0x81, 0xBB, 0x3A, 0x2B, 0x57, 0x06, 0xDD, 0x33, 0x24, 0x47, 0xF2, 0x73, + 0xA2, 0xC5, 0x46, 0xA9, 0xB2, 0xC7, 0xE5, 0x7B, 0x47, 0xFA, 0xF4, 0x9F, 0x71, 0x14, 0x73, 0xA4, + 0xC2, 0x78, 0x84, 0xDA, 0xF2, 0x46, 0xAB, 0x97, 0x54, 0x31, 0x24, 0x02, 0xC9, 0xF4, 0xDC, 0x23, + 0xD0, 0x97, 0x55, 0xF9, 0x9D, 0x0C, 0x76, 0xBE, 0x47, 0xC2, 0x31, 0x46, 0x24, 0x7A, 0x17, 0x11, + 0x1E, 0x53, 0x71, 0xC9, 0x50, 0xE9, 0x85, 0x20, 0x20, 0x99, 0x25, 0x51, 0x32, 0x3D, 0xE6, 0xB1, + 0xA1, 0x4D, 0xC1, 0x31, 0x77, 0x14, 0xEA, 0xA8, 0x5D, 0x00, 0x00, 0x21, 0xDD, 0xD9, 0x12, 0x0A, + 0x46, 0x00, 0x25, 0x64, 0x1B, 0x7C, 0xEB, 0x9A, 0xC8, 0x91, 0xBF, 0xD1, 0x2C, 0x99, 0x0C, 0x2F, + 0x41, 0x4A, 0x5E, 0x41, 0x12, 0x2E, 0x65, 0x9C, 0x38, 0xD6, 0x0B, 0x08, 0x00, 0x84, 0xA0, 0x3C, + 0xF4, 0xB5, 0xA6, 0xB2, 0x21, 0xB2, 0x80, 0xA4, 0x6C, 0x84, 0x22, 0x40, 0x14, 0x26, 0x1A, 0xD2, + 0x46, 0x8E, 0xC5, 0x77, 0x19, 0xCD, 0x95, 0x7D, 0x23, 0xB7, 0xC5, 0x24, 0x8C, 0x31, 0xB5, 0x9D, + 0xDF, 0x1E, 0xBA, 0xB6, 0x8B, 0x02, 0x70, 0xE8, 0xBC, 0x0F, 0x49, 0x53, 0x2E, 0x92, 0xF0, 0xA4, + 0xB2, 0xCE, 0x19, 0x25, 0x8F, 0x15, 0x90, 0xA6, 0xB2, 0x8B, 0x69, 0x6D, 0x9D, 0x69, 0x6A, 0x67, + 0x88, 0x54, 0x73, 0x9B, 0xE2, 0xE2, 0x39, 0x19, 0x9D, 0xFB, 0xB2, 0x32, 0xDE, 0x5B, 0x96, 0xB3, + 0xA6, 0xA9, 0xEC, 0xC3, 0xF3, 0xA9, 0x8F, 0xBC, 0x6F, 0xFD, 0xED, 0xB6, 0x3D, 0xF4, 0x51, 0x57, + 0x94, 0x7E, 0x18, 0x80, 0x48, 0xBB, 0x94, 0xE3, 0x20, 0xDB, 0x83, 0x08, 0x96, 0x4B, 0x1D, 0x65, + 0xCC, 0x19, 0x24, 0xC2, 0x10, 0x53, 0xE5, 0x88, 0x59, 0x9C, 0xA1, 0x90, 0x12, 0x96, 0x02, 0x16, + 0x03, 0xC4, 0x0C, 0x6D, 0x88, 0x88, 0xD8, 0xFB, 0x83, 0x46, 0xF7, 0xAC, 0x21, 0x67, 0x0D, 0x02, + 0x86, 0x94, 0x52, 0x60, 0x4B, 0xE4, 0x9C, 0x45, 0x00, 0x4B, 0x58, 0x39, 0xB3, 0xDA, 0x29, 0x08, + 0x93, 0xD6, 0x07, 0x15, 0xCA, 0x10, 0x79, 0xDF, 0x79, 0x4B, 0xD4, 0xF5, 0xA1, 0x72, 0xC6, 0x1A, + 0x64, 0x16, 0x63, 0x20, 0xB1, 0x26, 0xD5, 0x2A, 0xC1, 0xA6, 0x15, 0x11, 0x1F, 0x62, 0x8C, 0x69, + 0x77, 0xE8, 0x29, 0xEF, 0x60, 0x32, 0x2E, 0x9B, 0xD5, 0xF8, 0xC0, 0x48, 0x49, 0xC1, 0xC9, 0x00, + 0x0E, 0xAF, 0x9C, 0x87, 0x42, 0xF3, 0xE9, 0x2A, 0x37, 0x6D, 0x6A, 0x3D, 0xBD, 0x76, 0x06, 0x89, + 0x44, 0xA4, 0xED, 0x7C, 0xD7, 0x07, 0x75, 0x75, 0x19, 0x43, 0xD6, 0x88, 0x49, 0x18, 0xA2, 0x72, + 0x21, 0x20, 0xE7, 0xD3, 0x73, 0xF5, 0xA8, 0x56, 0x7F, 0xE8, 0x6D, 0xB4, 0x46, 0xEA, 0xD0, 0xFB, + 0x10, 0xB2, 0x83, 0x0C, 0x11, 0x8D, 0x41, 0x22, 0x20, 0x42, 0x02, 0x5C, 0x2E, 0x26, 0x0F, 0xFE, + 0xE6, 0x57, 0x93, 0xC9, 0xA4, 0xEB, 0xFC, 0xED, 0xDB, 0xAB, 0xAB, 0x9B, 0x75, 0x8A, 0xA9, 0xA9, + 0xEA, 0x7D, 0xD7, 0x69, 0xA9, 0x40, 0xE5, 0x1C, 0x20, 0xEE, 0xF6, 0x2D, 0x12, 0xF9, 0x3E, 0x74, + 0xDE, 0x4F, 0x9A, 0x46, 0x12, 0x9F, 0x9F, 0x2D, 0x6E, 0xD7, 0x1B, 0x6D, 0x63, 0xF1, 0xE2, 0xD5, + 0xFB, 0x43, 0xDB, 0xD5, 0x55, 0x75, 0xDC, 0xD8, 0x4A, 0xAE, 0xC5, 0x51, 0x28, 0x40, 0x11, 0x95, + 0xAE, 0xCF, 0x3B, 0x8B, 0x36, 0x8F, 0x82, 0x31, 0x4E, 0x08, 0x32, 0x29, 0x31, 0x0F, 0x59, 0x60, + 0xC3, 0x45, 0xFE, 0x3F, 0x34, 0xD4, 0xBD, 0x63, 0x3E, 0x70, 0x00, 0x0F, 0x83, 0x2F, 0x0A, 0x77, + 0x0A, 0xD6, 0xC8, 0x67, 0x8C, 0x4D, 0x84, 0x72, 0xF2, 0x1D, 0xB8, 0x37, 0x92, 0xD2, 0xE1, 0x5D, + 0x32, 0x62, 0x39, 0x2E, 0xE1, 0x62, 0xFD, 0x1D, 0xA1, 0xDC, 0x50, 0xE6, 0x36, 0x76, 0x39, 0x8D, + 0x65, 0xFD, 0x68, 0x43, 0x8F, 0x15, 0x99, 0xE4, 0xDA, 0xC7, 0xF2, 0x80, 0x05, 0x3A, 0x1D, 0xDB, + 0x00, 0x83, 0x00, 0x1F, 0x73, 0xE1, 0x74, 0xCC, 0x01, 0x72, 0xB5, 0xB3, 0x8C, 0xDA, 0x30, 0x1D, + 0x6F, 0x57, 0xCA, 0x06, 0xF0, 0xAE, 0x17, 0x27, 0xBB, 0x77, 0xA4, 0x38, 0x01, 0x54, 0xD9, 0x89, + 0x26, 0x9A, 0x31, 0x03, 0xA2, 0x0E, 0x17, 0x21, 0x69, 0x4D, 0x67, 0x2E, 0xC9, 0x14, 0x61, 0x66, + 0x5B, 0xAE, 0x70, 0x04, 0x21, 0x59, 0x34, 0x45, 0x24, 0x6A, 0x53, 0x00, 0x48, 0x89, 0xD9, 0x0A, + 0xA1, 0x02, 0x5A, 0x74, 0xD6, 0x8A, 0x00, 0x0B, 0xF7, 0x7D, 0x74, 0x4E, 0xEB, 0x60, 0xEF, 0xD8, + 0x95, 0x0A, 0xC7, 0x24, 0x93, 0xDF, 0x43, 0x4C, 0xDC, 0x1D, 0x7C, 0x08, 0x49, 0x4B, 0x08, 0x2B, + 0x67, 0x2A, 0x67, 0xCF, 0xE6, 0xB5, 0x21, 0xA3, 0xC4, 0x8B, 0x44, 0x64, 0x88, 0x00, 0xA1, 0xEB, + 0xBD, 0xAE, 0x61, 0xAD, 0xF5, 0xB3, 0xC6, 0x80, 0x28, 0xBE, 0x13, 0x64, 0x48, 0x09, 0x35, 0x23, + 0x57, 0x07, 0x73, 0x9C, 0x39, 0x75, 0x32, 0xC7, 0xE3, 0x5F, 0x05, 0xD1, 0x18, 0xB3, 0x98, 0x37, + 0x20, 0xF0, 0xF0, 0x7C, 0xF6, 0xE8, 0x62, 0xB6, 0xDA, 0xB6, 0x3E, 0xF0, 0xA4, 0xC9, 0x29, 0xA3, + 0xD7, 0xDB, 0xC3, 0x66, 0xDF, 0x33, 0x83, 0x21, 0x24, 0x1A, 0x12, 0x17, 0x8F, 0x03, 0x53, 0xC2, + 0xD7, 0x65, 0xAA, 0x18, 0xDA, 0x2E, 0x46, 0x61, 0x67, 0xC8, 0x19, 0xA5, 0xBA, 0x02, 0x4D, 0x08, + 0x32, 0x44, 0x96, 0x90, 0x08, 0x62, 0x04, 0x11, 0x41, 0xC2, 0xDB, 0x5D, 0x7B, 0xE8, 0x3C, 0x22, + 0xCE, 0x26, 0xD5, 0xAC, 0x71, 0x9D, 0x8F, 0xBD, 0x8F, 0x8B, 0x69, 0x2D, 0xAD, 0x3F, 0x5F, 0x4C, + 0xAA, 0xCA, 0x2A, 0x4E, 0xC4, 0x42, 0x8A, 0xA0, 0xE5, 0xB5, 0x49, 0xD8, 0x10, 0x3D, 0x38, 0x9F, + 0x22, 0x40, 0xDB, 0x79, 0xE7, 0xEC, 0xCC, 0x50, 0x8C, 0x09, 0x04, 0x42, 0x4C, 0xD6, 0x90, 0xB5, + 0xD6, 0x5A, 0xDA, 0xEF, 0xFB, 0x7D, 0xE7, 0x63, 0x64, 0x22, 0x6C, 0x1A, 0x0B, 0x58, 0xD5, 0xCE, + 0x19, 0x32, 0xDA, 0x9E, 0x30, 0x69, 0x7B, 0x54, 0xFC, 0x00, 0x16, 0x93, 0xE2, 0x5B, 0xD5, 0xF6, + 0x51, 0xE3, 0x01, 0xD4, 0x63, 0x26, 0x93, 0x8A, 0x08, 0x0F, 0x6D, 0x1F, 0x63, 0xAA, 0x9C, 0x35, + 0x5A, 0xC2, 0x19, 0x53, 0x4C, 0x29, 0xB2, 0x0C, 0xA6, 0xB7, 0xB3, 0x26, 0x2B, 0x8D, 0x82, 0x75, + 0xF4, 0xB2, 0xCC, 0x62, 0x99, 0x04, 0x44, 0xCB, 0xEC, 0xFB, 0x90, 0x54, 0x8B, 0xA9, 0x21, 0x5C, + 0x2C, 0x19, 0x10, 0x4E, 0x93, 0xCA, 0x05, 0xB4, 0xDB, 0x6D, 0xBB, 0x3B, 0xF4, 0x7D, 0xD7, 0xFB, + 0x90, 0x42, 0x48, 0x21, 0xC4, 0xBE, 0xEF, 0x3B, 0x1F, 0x7C, 0x88, 0x9C, 0xB8, 0x25, 0xBF, 0x6F, + 0xBB, 0x10, 0xD2, 0xE5, 0xC5, 0x19, 0x19, 0x43, 0x64, 0xD6, 0x9B, 0xBD, 0x88, 0x34, 0x4D, 0xAD, + 0x31, 0x74, 0x32, 0xF4, 0xE8, 0xE1, 0x99, 0xB3, 0x2E, 0x0D, 0xB4, 0xCC, 0x28, 0xCA, 0x97, 0x9C, + 0xD7, 0x30, 0x8C, 0xAC, 0xB5, 0x91, 0x6C, 0x9C, 0x08, 0xBF, 0x4E, 0x01, 0x64, 0x14, 0x46, 0x52, + 0x92, 0x45, 0x3F, 0xB8, 0xF2, 0xD5, 0xE2, 0xC9, 0x16, 0xEC, 0x5D, 0xE5, 0xF5, 0xC1, 0xCD, 0x75, + 0xB0, 0xE5, 0xB2, 0x0C, 0xA9, 0xFE, 0x81, 0x8C, 0x21, 0x86, 0x7E, 0xA4, 0x20, 0xA2, 0x1D, 0x1D, + 0x47, 0xB4, 0xD8, 0x70, 0xFF, 0x6A, 0xE5, 0x57, 0x1C, 0x54, 0xED, 0x90, 0xD2, 0x35, 0x5A, 0xCA, + 0x47, 0xE3, 0x11, 0x4A, 0xCF, 0x97, 0x9C, 0xAB, 0x85, 0x32, 0x34, 0x45, 0x19, 0x2C, 0xEE, 0x93, + 0xEB, 0x0F, 0xA2, 0x82, 0x72, 0xDC, 0xE6, 0x41, 0x2D, 0xCB, 0xE1, 0x85, 0x86, 0xF2, 0xFB, 0xD1, + 0xD2, 0x1B, 0x3C, 0x2D, 0x05, 0x0C, 0x82, 0x80, 0x10, 0x00, 0x09, 0x30, 0x89, 0x02, 0x60, 0x00, + 0x18, 0x52, 0xDE, 0x8E, 0x19, 0x1E, 0x23, 0x23, 0x1D, 0x33, 0x5F, 0x76, 0xB9, 0x82, 0xE4, 0x01, + 0x32, 0x06, 0x9D, 0xB5, 0xC6, 0x12, 0x14, 0x79, 0x4B, 0xC2, 0x29, 0x25, 0xCB, 0xCA, 0x97, 0x3F, + 0x52, 0xCD, 0x38, 0x54, 0xBE, 0x12, 0x02, 0x80, 0x8F, 0xE9, 0xD0, 0x07, 0x24, 0xAC, 0x6C, 0x2E, + 0x47, 0xF0, 0x31, 0x4A, 0xB6, 0xFE, 0xF2, 0x40, 0x0C, 0x33, 0xC7, 0x2C, 0x9A, 0x52, 0x0B, 0x02, + 0x31, 0xA5, 0xC8, 0x1C, 0x42, 0x3A, 0x74, 0xE1, 0xD0, 0xF9, 0x98, 0x52, 0xED, 0x6C, 0x64, 0x61, + 0xE6, 0x59, 0x5D, 0xCD, 0x67, 0x75, 0x5D, 0xD9, 0x4A, 0x4C, 0x4C, 0xC9, 0x1A, 0x63, 0x8D, 0xF1, + 0x21, 0x22, 0x54, 0x95, 0x63, 0x75, 0x06, 0x1B, 0x43, 0x08, 0xC8, 0x2C, 0xD6, 0x92, 0x73, 0x94, + 0x93, 0x83, 0x4B, 0x58, 0xE2, 0x24, 0xAC, 0x73, 0xA2, 0xF2, 0x87, 0x0F, 0x96, 0x92, 0xE2, 0x52, + 0x5D, 0xC1, 0x93, 0xA6, 0x9A, 0x4D, 0xEB, 0x12, 0xBB, 0x80, 0xDE, 0x87, 0x8B, 0xE5, 0xE4, 0xD0, + 0x87, 0x97, 0xEF, 0x37, 0x9B, 0xBD, 0x57, 0x2D, 0x86, 0x47, 0x9D, 0x08, 0x88, 0x47, 0xC9, 0x50, + 0x79, 0xD0, 0xBC, 0x6F, 0x7B, 0x7C, 0x77, 0xAD, 0x8B, 0x04, 0x10, 0x20, 0x02, 0x43, 0xA8, 0xCB, + 0x29, 0x81, 0x20, 0x83, 0x35, 0xD4, 0x85, 0x04, 0x20, 0x5D, 0x88, 0xBD, 0xCF, 0xC4, 0x41, 0x5D, + 0x88, 0x21, 0x24, 0x63, 0x68, 0x31, 0xAD, 0x2B, 0x6B, 0x26, 0xB5, 0xED, 0x7C, 0x8C, 0x89, 0x0C, + 0xA2, 0x18, 0x14, 0x91, 0x89, 0xB5, 0x86, 0xD0, 0x1A, 0xAA, 0x9C, 0xBD, 0xDD, 0x04, 0x1F, 0xFA, + 0xDA, 0x99, 0xAA, 0x32, 0x48, 0x60, 0x88, 0x7C, 0x48, 0x22, 0x90, 0x12, 0x8A, 0xF2, 0xFC, 0x1A, + 0x9C, 0xD4, 0xD5, 0xA4, 0x71, 0x33, 0xCA, 0x16, 0xFA, 0xB0, 0x1B, 0xAB, 0x1B, 0x60, 0x2C, 0x22, + 0x70, 0x6C, 0x47, 0x98, 0x8F, 0xC9, 0x83, 0x56, 0x92, 0x17, 0x45, 0x24, 0xC6, 0x08, 0x80, 0x75, + 0xED, 0x58, 0x64, 0xBF, 0xEF, 0xD6, 0xBD, 0x57, 0x0A, 0xEE, 0xBC, 0x72, 0x25, 0x97, 0xAC, 0xDA, + 0x63, 0x9D, 0x75, 0x01, 0x05, 0x23, 0x7B, 0x3F, 0x89, 0x58, 0x42, 0x63, 0x8C, 0x66, 0x53, 0x6B, + 0x81, 0x1E, 0x40, 0x4E, 0xB5, 0x24, 0xC2, 0xDA, 0x12, 0x0A, 0xDC, 0xDC, 0xAC, 0x5E, 0xBC, 0x7E, + 0x6F, 0xC9, 0x6A, 0x2F, 0x1C, 0x16, 0xE9, 0xBD, 0xF7, 0x7D, 0xB8, 0x59, 0x6D, 0x94, 0x6B, 0x73, + 0x36, 0x9B, 0xCE, 0x27, 0xF5, 0xEE, 0x6A, 0xB5, 0xDD, 0xEE, 0x7D, 0x88, 0x1F, 0x7F, 0xFC, 0xD8, + 0x26, 0x11, 0xE9, 0x63, 0x8C, 0x29, 0x39, 0x63, 0xA8, 0xAE, 0xAA, 0xB6, 0xF3, 0x3F, 0xF9, 0xEC, + 0x49, 0x5D, 0xBB, 0xAE, 0xF3, 0x48, 0x24, 0x23, 0x03, 0x33, 0x8B, 0x01, 0x0C, 0x58, 0xEC, 0x14, + 0x55, 0x9D, 0x48, 0x4B, 0xD9, 0xAD, 0x20, 0x2B, 0xC4, 0xD1, 0x1A, 0x3F, 0x11, 0xB0, 0xA2, 0x1A, + 0xE5, 0xBE, 0x16, 0x28, 0xA9, 0x6B, 0x23, 0xE1, 0x2C, 0xC0, 0x24, 0x8F, 0x12, 0x28, 0xED, 0xEB, + 0xB0, 0xCE, 0x0B, 0xB6, 0x29, 0x74, 0x82, 0x3A, 0x51, 0x02, 0xC0, 0x49, 0x4E, 0xB4, 0x12, 0x1F, + 0x43, 0x87, 0x2C, 0x23, 0x27, 0x94, 0x96, 0x93, 0x95, 0x59, 0xF8, 0xC0, 0xA6, 0x3E, 0x3C, 0x7C, + 0x5E, 0xB0, 0x98, 0xEF, 0x85, 0xAA, 0x3D, 0xE5, 0x38, 0x3E, 0x27, 0xA2, 0x32, 0x5C, 0x65, 0x8C, + 0x1A, 0x86, 0x83, 0x07, 0x1B, 0x70, 0x34, 0x8C, 0x65, 0x68, 0xC6, 0x22, 0x01, 0xC0, 0x90, 0x0B, + 0x27, 0x58, 0x98, 0x80, 0x14, 0x6A, 0x99, 0xBC, 0xB4, 0x8F, 0xAC, 0xAB, 0x19, 0xF2, 0xE9, 0xCD, + 0x75, 0x37, 0x22, 0x30, 0x64, 0x40, 0xA0, 0xD2, 0x5D, 0x90, 0x50, 0x91, 0x13, 0x33, 0x47, 0x4E, + 0x1A, 0x34, 0xB7, 0x31, 0x8F, 0x4B, 0x49, 0x6E, 0x80, 0x6C, 0x82, 0xAA, 0x6C, 0x33, 0x03, 0x8A, + 0x84, 0xC8, 0x5D, 0x17, 0x92, 0xCB, 0xDA, 0x57, 0xD3, 0x85, 0x6A, 0xE7, 0x8C, 0x25, 0x6B, 0x8D, + 0x73, 0xB9, 0xE2, 0xB2, 0xED, 0xFC, 0x66, 0xD7, 0x2A, 0x15, 0x8E, 0x3A, 0x6E, 0x00, 0x21, 0x44, + 0xEE, 0x7D, 0x36, 0xE4, 0xB4, 0xA3, 0x90, 0xB3, 0x14, 0x12, 0x7B, 0x1F, 0xAD, 0xA1, 0xBA, 0x72, + 0xDD, 0xA1, 0x6F, 0xFB, 0xB6, 0xB2, 0x46, 0xDD, 0xF9, 0x31, 0x46, 0x74, 0x36, 0xA6, 0xD4, 0x87, + 0xB8, 0x98, 0x4E, 0x34, 0xC5, 0x5F, 0x8D, 0x4A, 0xEF, 0x23, 0x95, 0xBE, 0xD3, 0x38, 0x32, 0x97, + 0x3E, 0x28, 0xA0, 0x83, 0x6E, 0x95, 0x5C, 0x14, 0x95, 0x77, 0xAC, 0x18, 0x93, 0x73, 0xEA, 0x69, + 0x44, 0x24, 0x30, 0xC6, 0x4C, 0x1A, 0x9C, 0x34, 0x6E, 0x5A, 0xBB, 0x97, 0xEF, 0xD7, 0xEF, 0x56, + 0x07, 0x73, 0x2F, 0x4B, 0xCE, 0x00, 0x22, 0xA2, 0x31, 0xC8, 0x02, 0x29, 0x71, 0x76, 0x11, 0x03, + 0x22, 0x8A, 0xB2, 0xB6, 0x6A, 0x8E, 0x9E, 0xB1, 0xD9, 0xC4, 0x8E, 0x1C, 0x91, 0x00, 0x05, 0x0D, + 0x61, 0x53, 0xD9, 0x43, 0x17, 0x34, 0xC1, 0xB2, 0xF3, 0x51, 0xCB, 0xD7, 0xBA, 0x3E, 0x26, 0xE6, + 0xF5, 0xB6, 0xD5, 0x98, 0x49, 0x65, 0xCD, 0xBE, 0x0B, 0x93, 0xDA, 0x89, 0x48, 0x88, 0xC9, 0x5A, + 0xC3, 0x22, 0x7D, 0x48, 0xAB, 0x5D, 0x77, 0x36, 0xAB, 0x2B, 0x67, 0x7C, 0x48, 0x6D, 0x1F, 0x34, + 0xD7, 0x17, 0x11, 0xF7, 0x6D, 0x3F, 0x9B, 0x54, 0x3B, 0x9F, 0x79, 0xD0, 0x42, 0x4C, 0xB1, 0xA4, + 0xAA, 0x6A, 0x9C, 0x4D, 0xDF, 0x94, 0x4B, 0xF7, 0x07, 0x0D, 0xD5, 0x43, 0x5E, 0x21, 0xA2, 0x74, + 0x89, 0xAE, 0xB2, 0x9A, 0xEA, 0x35, 0x88, 0x5A, 0xC1, 0x49, 0x20, 0x25, 0xBE, 0x3C, 0x69, 0x9C, + 0x35, 0xA6, 0xEF, 0xC3, 0xBE, 0xED, 0x7A, 0x1F, 0x8A, 0x5D, 0x50, 0x1C, 0x9A, 0x03, 0x7E, 0x38, + 0x9A, 0x4B, 0x47, 0xF3, 0x04, 0xD5, 0xB0, 0xA5, 0xCC, 0x6A, 0x09, 0x9A, 0x02, 0xA2, 0x9E, 0x75, + 0x10, 0x6B, 0xB0, 0xEF, 0xFA, 0x97, 0x6F, 0xAF, 0x6F, 0x57, 0x5B, 0x4E, 0x89, 0x10, 0xAB, 0xCA, + 0x7A, 0x1F, 0x99, 0x79, 0xB7, 0x3F, 0xB4, 0x9D, 0xDF, 0xB7, 0x7D, 0xD7, 0x7B, 0x01, 0x30, 0xC6, + 0x32, 0x43, 0xD3, 0xD4, 0xD6, 0xD9, 0x10, 0xE2, 0x7A, 0xBD, 0x5D, 0x2E, 0x66, 0x7D, 0xDF, 0x5B, + 0x6B, 0x43, 0xD0, 0x0E, 0x7B, 0xD6, 0x87, 0x10, 0x62, 0x1C, 0x01, 0x05, 0x80, 0xA3, 0xFF, 0xE8, + 0xE8, 0xFC, 0xC4, 0x0F, 0xE9, 0xB2, 0xE1, 0xCB, 0x61, 0xBD, 0x9D, 0x60, 0x37, 0xC5, 0x02, 0x78, + 0x57, 0x2A, 0x06, 0x40, 0x34, 0xA0, 0xF7, 0x3B, 0xA0, 0x0C, 0x46, 0x19, 0xA8, 0x23, 0xA3, 0xEC, + 0xF8, 0xF7, 0xD1, 0x71, 0x32, 0xE2, 0x47, 0x24, 0xCA, 0x8D, 0x42, 0x98, 0x07, 0x9D, 0x52, 0x50, + 0xC9, 0x48, 0x2F, 0x14, 0xE6, 0x2E, 0x80, 0xE2, 0xB3, 0xCE, 0x5C, 0x6B, 0x45, 0x0B, 0xC0, 0xA8, + 0xA5, 0xCB, 0x48, 0x7F, 0x0D, 0x2E, 0x2A, 0x22, 0x73, 0x17, 0x07, 0x7D, 0x08, 0xF1, 0x8D, 0x34, + 0xE6, 0x71, 0x64, 0xB9, 0x3C, 0xEB, 0x09, 0x68, 0x18, 0x36, 0xB0, 0x11, 0x62, 0xBD, 0xB3, 0x3C, + 0x01, 0x8A, 0x17, 0x0F, 0x8E, 0x9E, 0xA8, 0x92, 0x0F, 0x74, 0xC7, 0x9B, 0x96, 0xCF, 0xCA, 0x65, + 0x61, 0xBA, 0xAC, 0x4A, 0x55, 0xC1, 0x00, 0x3C, 0x59, 0x62, 0xE4, 0x98, 0x52, 0xA1, 0x27, 0x60, + 0x4B, 0x54, 0xEA, 0xC8, 0x45, 0x13, 0xF6, 0x20, 0xB7, 0x0D, 0x2D, 0xEF, 0x45, 0x40, 0x31, 0xA5, + 0x83, 0x88, 0x09, 0xC9, 0x50, 0xAE, 0xD1, 0x6E, 0x1A, 0x37, 0x9B, 0xD5, 0xCE, 0x39, 0x65, 0x92, + 0xE2, 0x94, 0xB4, 0x66, 0x65, 0xBD, 0x6D, 0x7B, 0x1F, 0x75, 0xC7, 0x2E, 0x04, 0x46, 0x12, 0x93, + 0x28, 0x09, 0x45, 0x01, 0x53, 0x18, 0x13, 0x1F, 0xFA, 0x00, 0x00, 0x29, 0x71, 0xDB, 0x87, 0xED, + 0xA1, 0x27, 0xA2, 0xE5, 0xAC, 0x46, 0x22, 0x67, 0xC8, 0x5A, 0x23, 0x20, 0x21, 0x26, 0x11, 0x26, + 0x32, 0xD9, 0x50, 0xD7, 0x8C, 0xF9, 0x8C, 0x8C, 0x78, 0x98, 0x9B, 0x61, 0x04, 0xEF, 0x57, 0x1A, + 0x8C, 0x27, 0x52, 0xC3, 0xD5, 0x9D, 0x0F, 0x9C, 0xA4, 0x4E, 0xAE, 0x69, 0xD0, 0x39, 0x04, 0x40, + 0x6B, 0x31, 0x25, 0x14, 0xC1, 0xE9, 0xA4, 0x7A, 0xFA, 0xD1, 0x39, 0x21, 0xD6, 0x95, 0x5D, 0xEF, + 0xFB, 0xD5, 0xB6, 0x53, 0x7E, 0x5E, 0x16, 0x10, 0x10, 0x9B, 0xCB, 0xDA, 0x44, 0x15, 0x69, 0x16, + 0x77, 0x01, 0x66, 0xEE, 0x83, 0x88, 0x88, 0x76, 0x07, 0x61, 0x56, 0xEE, 0x1D, 0x04, 0x12, 0x0B, + 0xD9, 0x95, 0xA6, 0xD5, 0xC3, 0xD6, 0x1A, 0x6B, 0xA8, 0xF5, 0x41, 0xCD, 0x73, 0x4D, 0xDD, 0x08, + 0x91, 0x63, 0x4A, 0xFB, 0x36, 0xC4, 0xC8, 0x9C, 0xEB, 0xE8, 0x25, 0x29, 0x59, 0x01, 0xA7, 0xF5, + 0xAE, 0x0B, 0x21, 0xCD, 0x26, 0x15, 0xB3, 0xEC, 0x0E, 0xBD, 0x21, 0x6A, 0xEA, 0x8C, 0xB7, 0x3B, + 0x1F, 0x7D, 0x48, 0x3E, 0x64, 0x48, 0x18, 0x42, 0x72, 0x36, 0x97, 0xBE, 0x2A, 0x3D, 0x4E, 0x49, + 0x24, 0x2E, 0x14, 0x60, 0x00, 0x29, 0xA5, 0x43, 0xE7, 0x99, 0xB9, 0xED, 0x63, 0x4A, 0x69, 0x36, + 0xAD, 0x6B, 0x67, 0xA7, 0x93, 0x5A, 0x4B, 0x56, 0xC7, 0x80, 0x9C, 0x88, 0xB4, 0xBC, 0x30, 0x46, + 0x00, 0xC0, 0xA6, 0x76, 0x88, 0xB0, 0x3B, 0x74, 0x2C, 0xE0, 0x4C, 0xEE, 0x4B, 0x36, 0x9A, 0x8E, + 0x81, 0xDA, 0xF3, 0xB8, 0xC7, 0x98, 0xD2, 0x4B, 0x12, 0x00, 0x41, 0x14, 0x8E, 0x41, 0xEF, 0x43, + 0x0C, 0x1E, 0x39, 0xFD, 0xE1, 0xDB, 0xE7, 0xF3, 0xF9, 0x5C, 0xEB, 0x19, 0x97, 0xCB, 0xF9, 0x76, + 0xBB, 0x4B, 0x21, 0xF6, 0x3E, 0x84, 0x18, 0x57, 0xAB, 0x2D, 0x00, 0xF9, 0x98, 0xF6, 0x87, 0x2E, + 0xA5, 0xE4, 0x9C, 0x8B, 0x91, 0x7B, 0xBF, 0x07, 0x91, 0x07, 0x0F, 0x2E, 0x42, 0x88, 0x29, 0xF2, + 0x66, 0xB3, 0x27, 0xA2, 0x10, 0x82, 0x88, 0xA4, 0xC4, 0xFB, 0x83, 0xA4, 0xC4, 0xEB, 0xCD, 0xAE, + 0x6C, 0x5A, 0x90, 0xCB, 0xB5, 0x91, 0x11, 0xAD, 0xDA, 0x17, 0x59, 0xEB, 0x28, 0xF3, 0xFE, 0x48, + 0x93, 0x0C, 0x12, 0x32, 0xAC, 0x40, 0xCC, 0x08, 0x69, 0xA4, 0x74, 0x06, 0xC4, 0xA4, 0x75, 0x4B, + 0x34, 0x28, 0xC8, 0x1C, 0x35, 0x3C, 0xAE, 0xE4, 0xA3, 0x27, 0x69, 0xAC, 0x11, 0xC6, 0x8A, 0x22, + 0xC3, 0xAE, 0x8C, 0x39, 0x80, 0xCB, 0x36, 0x90, 0x17, 0x79, 0x2A, 0xE4, 0xF8, 0xEA, 0x29, 0x2B, + 0x41, 0xB3, 0x3B, 0x2B, 0x1C, 0x4B, 0x5B, 0x1F, 0x35, 0xE2, 0xA5, 0x90, 0xBE, 0x0E, 0x8A, 0x03, + 0xEE, 0x66, 0x96, 0xD2, 0x3D, 0x15, 0x2C, 0xA2, 0x0B, 0x5D, 0xED, 0x95, 0x6C, 0xD8, 0xDE, 0xC7, + 0xA9, 0x63, 0x68, 0x96, 0xDF, 0xE1, 0xEE, 0xCB, 0x0D, 0x28, 0x61, 0xAC, 0xBF, 0x60, 0xA4, 0xD4, + 0x4E, 0x14, 0x99, 0x1E, 0x93, 0xFB, 0x79, 0x18, 0x63, 0x4C, 0xEE, 0x43, 0x3A, 0xBC, 0x97, 0x4A, + 0xEC, 0x00, 0x41, 0xCA, 0x45, 0xF4, 0x39, 0x73, 0xFE, 0x16, 0xAB, 0x31, 0xC9, 0x12, 0xB5, 0x64, + 0xBC, 0xB0, 0x4E, 0xAA, 0xB9, 0x88, 0x29, 0x57, 0x1D, 0xDC, 0xF1, 0x9D, 0x63, 0xA6, 0x85, 0x03, + 0x91, 0xDC, 0x97, 0x4B, 0x93, 0xDF, 0xE7, 0xF3, 0xC9, 0xE5, 0xF9, 0xAC, 0xAA, 0x9C, 0x96, 0x89, + 0xC6, 0x98, 0x7A, 0x1F, 0x0F, 0x6D, 0x7F, 0xBB, 0x69, 0xBB, 0x10, 0x63, 0xCA, 0xC4, 0x47, 0xDA, + 0x63, 0x4C, 0x97, 0xB7, 0x00, 0x0C, 0x05, 0x46, 0x7D, 0xE0, 0x94, 0x7C, 0x5D, 0x19, 0x1F, 0x93, + 0x69, 0x95, 0x2B, 0x31, 0x47, 0x10, 0x11, 0x21, 0x96, 0x70, 0xDE, 0xB4, 0xD1, 0x92, 0x54, 0x00, + 0xC0, 0x18, 0x53, 0xD7, 0x07, 0x4D, 0x5F, 0x68, 0x6A, 0xA7, 0xB3, 0x39, 0x54, 0x7F, 0x8D, 0x07, + 0x62, 0x50, 0x67, 0x32, 0x8A, 0xA2, 0xEA, 0x5C, 0xD6, 0x35, 0x59, 0x6B, 0xB4, 0xF5, 0x59, 0xDB, + 0xF9, 0x94, 0x4C, 0xAE, 0x9F, 0x60, 0x61, 0x81, 0x10, 0x63, 0x08, 0x69, 0x39, 0xAB, 0x45, 0x60, + 0x3E, 0x71, 0x21, 0xA6, 0x98, 0x24, 0x69, 0x90, 0x1B, 0x10, 0x04, 0x38, 0x81, 0x26, 0xA6, 0x0A, + 0x80, 0xBA, 0xBD, 0x43, 0xE4, 0x10, 0xD3, 0x70, 0x40, 0x52, 0x4E, 0x77, 0xED, 0x6B, 0x57, 0xFC, + 0xC4, 0x5C, 0xAA, 0xD2, 0x10, 0x40, 0xC9, 0x66, 0x61, 0x54, 0x54, 0x77, 0xE8, 0x42, 0x4C, 0xEC, + 0xA3, 0x92, 0x46, 0x08, 0x92, 0x86, 0x8C, 0x05, 0x73, 0xCF, 0x1F, 0xD8, 0x77, 0x21, 0xB1, 0x10, + 0x02, 0x8B, 0xB8, 0xCE, 0xEB, 0x9A, 0xAA, 0x9C, 0x0D, 0x29, 0x55, 0x8E, 0xBA, 0x3E, 0xED, 0x3B, + 0x3F, 0x9B, 0x54, 0xD3, 0x49, 0xED, 0x2C, 0xA9, 0x07, 0x2D, 0x44, 0xD6, 0x66, 0x97, 0x2C, 0xE2, + 0x8C, 0x09, 0x31, 0x71, 0x62, 0x6B, 0xCD, 0x7A, 0xDB, 0xEE, 0x0E, 0x7D, 0xCA, 0xAD, 0x2C, 0x84, + 0x77, 0xFD, 0x9E, 0x7C, 0x8C, 0xBC, 0x5C, 0xC8, 0xE0, 0x29, 0x2B, 0xFB, 0xB0, 0x14, 0xB9, 0xC9, + 0xC0, 0xAB, 0xAA, 0xDC, 0x1C, 0xC0, 0x87, 0xA4, 0xF4, 0x2C, 0x3A, 0x65, 0x03, 0x70, 0x80, 0xC2, + 0x81, 0xA3, 0xE3, 0x6D, 0x08, 0x2B, 0x6B, 0x20, 0x73, 0x45, 0x41, 0x55, 0xB9, 0xB6, 0xED, 0x56, + 0xEB, 0x0D, 0x21, 0x34, 0x4D, 0x7D, 0x75, 0xB3, 0x79, 0xF3, 0xE6, 0xEA, 0xB3, 0xCF, 0xAA, 0xC9, + 0xB4, 0x41, 0xA4, 0xD9, 0x74, 0xD2, 0xB7, 0x1D, 0x13, 0x32, 0x80, 0x0F, 0x69, 0xBB, 0x6F, 0x9B, + 0x66, 0xA2, 0xD0, 0x4C, 0x2F, 0xE8, 0xBD, 0xEF, 0xFB, 0x5E, 0x44, 0xCE, 0xCE, 0x96, 0xCC, 0xEC, + 0x83, 0xEF, 0xFB, 0x1E, 0x91, 0x00, 0x50, 0x2B, 0xAB, 0xCE, 0xCE, 0x96, 0xFB, 0x7D, 0xBB, 0xDE, + 0xEC, 0x43, 0x0C, 0xD9, 0x86, 0x2D, 0x99, 0x01, 0x39, 0x6E, 0x39, 0x2C, 0xB2, 0xE2, 0x86, 0x2A, + 0x50, 0x12, 0x00, 0x8E, 0x2D, 0x2C, 0x8F, 0xCA, 0xA2, 0x98, 0x46, 0x88, 0x38, 0x14, 0xD1, 0x80, + 0x66, 0xA2, 0xA2, 0x60, 0x31, 0x5D, 0x86, 0xFE, 0xBE, 0x43, 0x81, 0x63, 0xD6, 0x4E, 0x79, 0xB5, + 0xAB, 0x96, 0x53, 0x1A, 0x30, 0x55, 0x5C, 0xC7, 0x9C, 0x8B, 0x8C, 0x92, 0x01, 0x00, 0x20, 0x95, + 0x14, 0x61, 0xCE, 0x8C, 0x88, 0x19, 0xF6, 0x8E, 0x75, 0xD9, 0x58, 0xD5, 0xE6, 0x24, 0xF9, 0x02, + 0xBA, 0x05, 0x07, 0x1D, 0x29, 0x59, 0x9D, 0xF2, 0x1D, 0x40, 0x38, 0xAC, 0x82, 0x21, 0x8C, 0x98, + 0x4D, 0x52, 0x73, 0x7C, 0xF1, 0x01, 0x5F, 0x0F, 0xEA, 0xE9, 0xBE, 0x46, 0x93, 0xBB, 0xBF, 0x1E, + 0x87, 0xEB, 0x1E, 0x3A, 0x83, 0xA3, 0xBA, 0xBC, 0x73, 0xA9, 0x0C, 0x29, 0x4A, 0x7B, 0xE2, 0xF1, + 0x8E, 0xA2, 0x1C, 0xC5, 0x58, 0x8E, 0x38, 0x7A, 0x30, 0x74, 0xB8, 0x12, 0x73, 0x42, 0x6D, 0xC1, + 0x9E, 0x58, 0x38, 0x71, 0x86, 0x6B, 0x9C, 0x8D, 0x87, 0xC4, 0x68, 0x8F, 0xD3, 0x99, 0x77, 0xA4, + 0x6C, 0x45, 0x8B, 0x80, 0x21, 0x32, 0x96, 0x72, 0x34, 0x1D, 0x91, 0x59, 0xEA, 0xCA, 0x5C, 0x9C, + 0xCD, 0xE6, 0xB3, 0x06, 0x00, 0xFA, 0xCE, 0x2B, 0xFF, 0xA7, 0x26, 0xB2, 0xB7, 0x3E, 0x6A, 0x85, + 0xB3, 0x68, 0xEA, 0x09, 0x83, 0x00, 0x10, 0xA1, 0x25, 0x03, 0x68, 0xFA, 0x10, 0xB1, 0x64, 0x97, + 0x68, 0x1E, 0x8B, 0xF7, 0x29, 0x10, 0x0F, 0x12, 0x66, 0xAC, 0x09, 0x31, 0x6D, 0xF7, 0x7D, 0xEB, + 0x83, 0x33, 0xB4, 0x9C, 0x35, 0xD3, 0xA6, 0x82, 0xD1, 0x00, 0x59, 0x43, 0x78, 0x1C, 0xB8, 0x61, + 0x58, 0x8E, 0x3A, 0x6B, 0x3C, 0x6A, 0xF7, 0xB7, 0x02, 0x8D, 0x9A, 0x1B, 0x63, 0x9C, 0xB3, 0x29, + 0xC5, 0xB6, 0x0D, 0xDB, 0x7D, 0xA7, 0x4F, 0xAB, 0x7C, 0xB4, 0x21, 0x26, 0x66, 0xB6, 0xC6, 0xB0, + 0x48, 0x4C, 0x3C, 0xA9, 0x6C, 0x48, 0xA9, 0xEB, 0x35, 0x2C, 0x4B, 0x90, 0x33, 0xF4, 0x00, 0x01, + 0xAC, 0x21, 0x37, 0x6D, 0x9C, 0xA5, 0xC4, 0xBC, 0x3B, 0xF8, 0xFD, 0xB1, 0x46, 0x55, 0x10, 0x91, + 0x01, 0x51, 0x80, 0x8E, 0x9E, 0x46, 0x40, 0x38, 0xA2, 0xF4, 0x9C, 0xE3, 0xAE, 0xB4, 0x48, 0x2C, + 0x12, 0x35, 0x47, 0x3F, 0x8F, 0xBC, 0x92, 0x97, 0x95, 0x55, 0x25, 0x00, 0xA8, 0xA6, 0x19, 0x13, + 0x1A, 0x40, 0xEF, 0x93, 0x88, 0x68, 0xBA, 0xBF, 0x0E, 0xB2, 0xB6, 0x02, 0x88, 0x91, 0x0D, 0x32, + 0x11, 0x11, 0x8B, 0x35, 0x46, 0x72, 0x6E, 0x5C, 0xE6, 0x53, 0xF6, 0x7D, 0x88, 0x89, 0xE3, 0xA1, + 0x6F, 0xFB, 0x6C, 0x7C, 0x11, 0x02, 0x82, 0xF6, 0x6A, 0xC2, 0xB6, 0xF7, 0xD6, 0xD0, 0x74, 0x8A, + 0x88, 0xA0, 0x95, 0xAA, 0x83, 0x7A, 0xA2, 0xEC, 0x89, 0xD0, 0x01, 0x04, 0xE7, 0x6C, 0xB6, 0x7A, + 0x52, 0x52, 0x50, 0xA9, 0x7F, 0xAA, 0x9C, 0x4D, 0xB9, 0xAC, 0x27, 0x6B, 0x5F, 0x6D, 0x58, 0x27, + 0x92, 0xF9, 0x96, 0xB7, 0x9B, 0xCD, 0x76, 0xB3, 0x35, 0xD6, 0x34, 0x55, 0x7D, 0x7D, 0xBD, 0x7A, + 0xFD, 0xE6, 0xFA, 0xF2, 0xE2, 0xBC, 0xEF, 0xFB, 0x10, 0xC3, 0xE3, 0xC7, 0x0F, 0x39, 0x31, 0x20, + 0x12, 0x19, 0xE6, 0x74, 0xBB, 0xDA, 0xEC, 0x0E, 0xDD, 0xA1, 0xF5, 0xBA, 0xB6, 0x07, 0xF3, 0xC9, + 0x18, 0x63, 0x0C, 0xF5, 0xBD, 0x6F, 0xBB, 0x2E, 0xF8, 0x80, 0x44, 0xD6, 0xE2, 0x6C, 0x36, 0x5D, + 0xAD, 0xB7, 0x1C, 0xD2, 0xFE, 0xD0, 0x26, 0xE6, 0x49, 0x53, 0x6B, 0x7E, 0x86, 0xB3, 0xD6, 0x3A, + 0x25, 0xB8, 0x54, 0xC5, 0x73, 0xDF, 0x83, 0x55, 0x64, 0x22, 0xBB, 0x86, 0x06, 0xFD, 0x96, 0xD3, + 0x2C, 0xA0, 0xAC, 0x85, 0x41, 0x7E, 0x32, 0xE8, 0x20, 0x64, 0x64, 0x62, 0xCA, 0x44, 0x2C, 0xA5, + 0xE9, 0xB0, 0x2E, 0x9F, 0xF1, 0xBA, 0x45, 0x84, 0xC4, 0xB1, 0x28, 0x30, 0x28, 0xA4, 0x3B, 0x59, + 0x93, 0x49, 0x09, 0x85, 0x0D, 0x88, 0x06, 0xCA, 0x16, 0xA2, 0x03, 0x9B, 0x95, 0x70, 0xCE, 0xC3, + 0x2F, 0x97, 0xC8, 0x73, 0x91, 0x55, 0x62, 0xD9, 0x7F, 0xCB, 0x11, 0xF9, 0x7F, 0x28, 0x59, 0x87, + 0x8F, 0x13, 0x68, 0x01, 0x09, 0x84, 0x8F, 0x5C, 0x6C, 0xEA, 0x32, 0x62, 0x66, 0x5B, 0xBA, 0x8D, + 0xA0, 0xAE, 0x2D, 0x3E, 0xAA, 0x96, 0xF1, 0xDA, 0x39, 0xD1, 0x6B, 0x30, 0x2A, 0xD7, 0x19, 0x8D, + 0xE5, 0x1D, 0x75, 0x76, 0x5F, 0x1B, 0xE6, 0x13, 0x0B, 0xDA, 0x10, 0xC6, 0x9C, 0x76, 0x55, 0x86, + 0x97, 0xF3, 0x56, 0xA1, 0x7A, 0x0E, 0xA1, 0x28, 0x68, 0x8E, 0xC0, 0x25, 0x4F, 0x96, 0x59, 0x94, + 0xD0, 0x58, 0xF7, 0x07, 0xCE, 0xAD, 0x0A, 0x50, 0x40, 0xAC, 0x3E, 0x3A, 0x95, 0xBE, 0x32, 0xC3, + 0x63, 0x29, 0x0C, 0x36, 0x44, 0x93, 0xCA, 0x4C, 0x9B, 0xCA, 0x3A, 0x2B, 0x22, 0x4A, 0xB6, 0xB5, + 0x3F, 0xF4, 0xCC, 0x9C, 0x9B, 0xB9, 0xF5, 0x21, 0x46, 0x96, 0x82, 0xBF, 0x74, 0x57, 0x00, 0x40, + 0x6D, 0x2F, 0x27, 0x00, 0x4D, 0x6D, 0xAD, 0xA1, 0x49, 0x6D, 0x99, 0xA5, 0x0F, 0xB1, 0x0F, 0x09, + 0x24, 0xA7, 0x83, 0x69, 0x94, 0x90, 0x0B, 0x79, 0x61, 0xDB, 0x7B, 0xC0, 0xDC, 0x70, 0xD9, 0x87, + 0x04, 0xE0, 0xFB, 0x10, 0xB5, 0xA1, 0xA2, 0x35, 0xD4, 0x34, 0x55, 0xF1, 0xE2, 0x50, 0xF9, 0x01, + 0x87, 0x11, 0xFC, 0xE0, 0xCE, 0x70, 0x32, 0xD0, 0xA3, 0x11, 0xA7, 0xAA, 0xB2, 0x6D, 0xEF, 0xDB, + 0x3E, 0xF8, 0xC0, 0x21, 0x26, 0x40, 0x0C, 0x31, 0x31, 0x8B, 0xB3, 0x04, 0x90, 0x2B, 0x6C, 0xCE, + 0xE7, 0x93, 0x83, 0x55, 0x9E, 0x0E, 0x09, 0x91, 0x01, 0x30, 0x31, 0xEF, 0x3A, 0x8F, 0x00, 0x88, + 0x38, 0x6D, 0x5C, 0x53, 0xD9, 0xA6, 0xB2, 0x89, 0xB9, 0x0F, 0x47, 0x46, 0x06, 0x04, 0xA0, 0x63, + 0x76, 0xCC, 0x07, 0x36, 0xC6, 0xFC, 0x6B, 0x51, 0x72, 0x06, 0x41, 0x0C, 0x45, 0xF5, 0x6A, 0x12, + 0x66, 0x0D, 0x98, 0xC7, 0x1F, 0x88, 0xD0, 0x8C, 0xBE, 0x42, 0x84, 0x10, 0x93, 0xB5, 0x64, 0x0C, + 0x84, 0x08, 0x88, 0x50, 0x39, 0x53, 0x59, 0xAD, 0x2B, 0x05, 0x6B, 0x31, 0xAA, 0xF3, 0x53, 0x80, + 0x85, 0x09, 0x20, 0x04, 0xE8, 0x43, 0xD4, 0xC6, 0x54, 0xCC, 0x0C, 0x08, 0xA6, 0x44, 0xF7, 0xD5, + 0x2C, 0x0C, 0x91, 0x0F, 0x9D, 0x57, 0x6A, 0x5C, 0x24, 0x4D, 0x64, 0xD5, 0xB2, 0xA4, 0xEC, 0x07, + 0xD3, 0x3E, 0x58, 0x00, 0x60, 0x08, 0x9D, 0x55, 0x2A, 0x8B, 0xA4, 0xD1, 0x55, 0x22, 0xB4, 0xD6, + 0x5E, 0x2C, 0x67, 0x31, 0xA5, 0x10, 0x92, 0x52, 0xB8, 0x68, 0x7F, 0x62, 0xF5, 0x42, 0xC6, 0x28, + 0x29, 0x84, 0xED, 0x66, 0xA3, 0x98, 0x7A, 0xEB, 0xF7, 0xC0, 0x5C, 0x39, 0xB3, 0xDD, 0xB7, 0xB6, + 0xB2, 0x0F, 0x1F, 0x5C, 0xA4, 0x94, 0x5E, 0xBF, 0x7A, 0xEB, 0xBD, 0x5F, 0x2C, 0xE6, 0xB7, 0xEB, + 0xDD, 0xD5, 0xCD, 0x3A, 0x86, 0xC4, 0x12, 0x11, 0x51, 0xB5, 0xEA, 0xE0, 0xE6, 0x73, 0xCE, 0xED, + 0xF6, 0x87, 0x94, 0xD2, 0x62, 0x3E, 0x67, 0xE6, 0xBA, 0xAE, 0x91, 0xB0, 0x69, 0x6A, 0x00, 0x64, + 0x91, 0xDD, 0xFE, 0xF0, 0xE0, 0x72, 0xC9, 0x9C, 0x82, 0xF7, 0x86, 0xC8, 0x9A, 0x3A, 0xF7, 0xF1, + 0xC6, 0x42, 0xE8, 0xF3, 0x27, 0x3E, 0x77, 0x71, 0x04, 0x02, 0x1E, 0x1B, 0x43, 0x0C, 0x7E, 0xAB, + 0xB2, 0xF8, 0x41, 0x12, 0x03, 0x02, 0x9A, 0xFC, 0x54, 0x65, 0x7E, 0x87, 0x69, 0xCD, 0x4C, 0xCD, + 0x19, 0x4D, 0x70, 0x61, 0x49, 0x11, 0x31, 0xE3, 0x48, 0x6D, 0xF6, 0x2A, 0x1E, 0x5D, 0x5B, 0xC3, + 0xD5, 0x52, 0x92, 0x01, 0x87, 0x42, 0xD9, 0x17, 0x8F, 0x8A, 0xB0, 0x80, 0xBE, 0xFC, 0x30, 0x9C, + 0xBB, 0x8D, 0x94, 0xDF, 0xB3, 0x80, 0x40, 0x56, 0xC2, 0x47, 0xF7, 0x5D, 0x06, 0x92, 0x65, 0xE3, + 0x19, 0xE4, 0x50, 0x78, 0x5C, 0x6D, 0x2A, 0x00, 0x80, 0x04, 0x22, 0xA7, 0xE1, 0xDD, 0xB2, 0x88, + 0xF2, 0xE5, 0x4E, 0xD6, 0xD7, 0x78, 0x89, 0x9D, 0x80, 0xB2, 0x13, 0x0D, 0x88, 0x88, 0x3A, 0x59, + 0x43, 0xA9, 0x3F, 0xA4, 0xEC, 0xC1, 0x14, 0x51, 0xF6, 0x5A, 0xED, 0xDA, 0x47, 0x39, 0x4D, 0x4E, + 0xB2, 0x91, 0x9F, 0xC7, 0xA2, 0xCC, 0xC8, 0x10, 0x9C, 0x15, 0xC1, 0x1C, 0xFA, 0x05, 0x41, 0x44, + 0x3B, 0xB8, 0x38, 0x51, 0xA9, 0xCB, 0xEE, 0xCE, 0x7A, 0x4A, 0x29, 0x24, 0xDC, 0x77, 0xBE, 0x8A, + 0xC9, 0x18, 0xEA, 0x7D, 0x50, 0xD2, 0x7D, 0x66, 0x09, 0x29, 0x69, 0xD2, 0xA6, 0xBE, 0x8E, 0x0A, + 0x9F, 0xA6, 0x5E, 0xFA, 0xC0, 0x81, 0x93, 0x30, 0x20, 0xE0, 0xBE, 0xF5, 0xC6, 0x60, 0x53, 0xD9, + 0x49, 0xED, 0x1A, 0x67, 0xD6, 0x87, 0x5E, 0x3D, 0x38, 0x1A, 0x95, 0x5B, 0xCC, 0x1A, 0x04, 0x50, + 0x02, 0x55, 0x4E, 0xE2, 0x43, 0x42, 0x81, 0x94, 0x64, 0x25, 0x9D, 0x21, 0x12, 0x90, 0xCA, 0xD0, + 0xD9, 0xBC, 0x39, 0x5B, 0x4C, 0xE9, 0xC8, 0xDE, 0x71, 0xCC, 0xA3, 0x1B, 0x90, 0xD7, 0x71, 0x7A, + 0xE4, 0xCE, 0x70, 0xDF, 0xD7, 0x65, 0xFA, 0xB3, 0x35, 0xD4, 0x54, 0xCE, 0xFB, 0x98, 0x58, 0x18, + 0xC8, 0x7B, 0xED, 0x2D, 0x24, 0x21, 0xB1, 0x21, 0x10, 0x81, 0x98, 0xB8, 0xF7, 0x51, 0x8B, 0x0A, + 0x7B, 0xCF, 0x02, 0x90, 0x98, 0x39, 0x60, 0x4E, 0x99, 0x42, 0x88, 0x8A, 0x3D, 0xD5, 0xD6, 0xB3, + 0xA4, 0x93, 0x14, 0x52, 0x2A, 0x60, 0xEA, 0xCE, 0x48, 0x8E, 0xD5, 0x6E, 0x79, 0x60, 0xC8, 0x16, + 0xAB, 0x80, 0x7A, 0xD0, 0x00, 0x32, 0xA5, 0x55, 0x39, 0x4F, 0x08, 0x8A, 0x85, 0xA9, 0xDB, 0x2C, + 0x01, 0x80, 0x3A, 0xFB, 0x84, 0x10, 0x9C, 0x25, 0x67, 0x8C, 0x73, 0x46, 0xF3, 0x2D, 0xAC, 0x35, + 0x22, 0xD0, 0xFB, 0x28, 0xCC, 0x7D, 0x88, 0x80, 0x68, 0x88, 0xB4, 0xB2, 0xB5, 0x20, 0xA6, 0x92, + 0x30, 0xC8, 0x9C, 0x18, 0x58, 0x24, 0xB2, 0x38, 0x81, 0x0E, 0xA2, 0x0F, 0x91, 0xB4, 0x9A, 0x62, + 0x52, 0x29, 0x81, 0x47, 0x52, 0xFA, 0x4E, 0x96, 0xC9, 0xA4, 0xAA, 0x9C, 0x92, 0x91, 0x20, 0x8B, + 0x38, 0x6B, 0xAC, 0x25, 0x55, 0x72, 0x25, 0xAF, 0x58, 0xAC, 0x31, 0x4E, 0x4B, 0x8E, 0x58, 0x5C, + 0x65, 0x99, 0x19, 0x11, 0x0E, 0xFB, 0xFD, 0x9B, 0x37, 0x57, 0x5D, 0xE7, 0x53, 0xE2, 0xD9, 0x7C, + 0xDA, 0x77, 0xFD, 0x6E, 0x77, 0x88, 0x29, 0xFB, 0x5E, 0x0F, 0x87, 0xF6, 0xF9, 0x8F, 0xAF, 0xDA, + 0x43, 0x07, 0x00, 0x40, 0xB8, 0xDE, 0xB6, 0xDB, 0xDD, 0x41, 0x45, 0xCB, 0x5A, 0xA3, 0xEC, 0x7D, + 0xC6, 0x18, 0xA8, 0x50, 0x41, 0x3E, 0x77, 0x7E, 0xB1, 0x98, 0x19, 0x43, 0x4D, 0xD3, 0xC4, 0x14, + 0x43, 0x08, 0x49, 0xE4, 0xE1, 0x83, 0xCB, 0x1F, 0x5E, 0xBC, 0x6A, 0xAA, 0x6A, 0x3A, 0x99, 0x58, + 0x63, 0x43, 0x88, 0xCC, 0xE2, 0x2A, 0xA3, 0x3B, 0xDD, 0xB1, 0xAA, 0xFA, 0x6E, 0x5B, 0x55, 0x9D, + 0x8F, 0x3F, 0xA3, 0xDD, 0x74, 0x0B, 0x91, 0xEC, 0xC0, 0x2A, 0x9F, 0xB2, 0x82, 0x02, 0xA5, 0x4C, + 0x67, 0x80, 0x28, 0x02, 0x83, 0x17, 0x7A, 0xBC, 0xC4, 0xD4, 0x53, 0x29, 0x92, 0x99, 0xC2, 0x8C, + 0x25, 0x42, 0x75, 0x0B, 0x49, 0xF1, 0xD0, 0x0C, 0xDC, 0xF9, 0x52, 0x5C, 0xDB, 0xBA, 0x03, 0x1D, + 0x53, 0x25, 0x8E, 0x34, 0x19, 0xA3, 0xC7, 0x2F, 0xAB, 0x3B, 0x23, 0x30, 0x4D, 0x76, 0xD3, 0x4D, + 0x10, 0x11, 0x91, 0xA4, 0x94, 0x4C, 0x16, 0x74, 0x06, 0x00, 0x80, 0x03, 0xD9, 0xD7, 0x9D, 0x1D, + 0x1D, 0x65, 0xBC, 0x70, 0x8A, 0x54, 0xE6, 0x91, 0x19, 0x03, 0xCC, 0xE1, 0x14, 0x81, 0x62, 0x11, + 0x1E, 0xB1, 0x67, 0x36, 0x84, 0x71, 0x54, 0xA5, 0x34, 0x08, 0xFC, 0xA0, 0x97, 0xCB, 0x5D, 0xB2, + 0x32, 0x12, 0xC4, 0x52, 0x8C, 0x80, 0x45, 0xC0, 0xB3, 0xE0, 0x2B, 0xA2, 0x54, 0x1B, 0xFD, 0x78, + 0xF7, 0xD1, 0xC3, 0x8C, 0xB4, 0xD8, 0x51, 0xE5, 0x22, 0xA2, 0x06, 0x1C, 0xC7, 0x41, 0x5F, 0x54, + 0x27, 0xEE, 0xA0, 0x41, 0xFB, 0x90, 0x7C, 0x4C, 0x5D, 0x1F, 0x39, 0xF3, 0x9C, 0x40, 0x92, 0xF2, + 0x53, 0xB9, 0xB7, 0xBA, 0x1B, 0x35, 0x90, 0xE7, 0xAC, 0x99, 0x34, 0xD4, 0xB0, 0x15, 0x91, 0x3E, + 0x24, 0x66, 0x8E, 0x89, 0x0F, 0x5D, 0x08, 0x31, 0x35, 0x95, 0x9B, 0xD4, 0x2E, 0x50, 0xEA, 0x7C, + 0x44, 0xC4, 0xBA, 0xB2, 0xD3, 0xDA, 0xF9, 0x18, 0xD5, 0x37, 0x94, 0xB8, 0x94, 0x3D, 0x20, 0x30, + 0x73, 0xEF, 0x63, 0x53, 0x59, 0x53, 0x51, 0x62, 0xF1, 0x31, 0xD9, 0x60, 0x94, 0xF7, 0xDD, 0xE5, + 0xEA, 0xA5, 0xA3, 0xE6, 0x3A, 0x51, 0x5B, 0x27, 0x73, 0x30, 0x4E, 0x6A, 0x1F, 0xBE, 0x11, 0xC4, + 0x99, 0x12, 0xDE, 0x6F, 0x0E, 0x7D, 0x88, 0x95, 0x31, 0x7D, 0x4C, 0xDE, 0x47, 0x7D, 0xDF, 0x90, + 0x04, 0x23, 0xB7, 0x7D, 0x34, 0x86, 0x10, 0x20, 0x24, 0xCE, 0x5B, 0xBB, 0x88, 0x29, 0xA0, 0x30, + 0x32, 0x1F, 0x7A, 0x5F, 0x59, 0x0B, 0x00, 0x2C, 0xE0, 0x2C, 0x99, 0x9C, 0x11, 0x0E, 0xC5, 0xCD, + 0x32, 0xCC, 0xD6, 0x9D, 0x90, 0x90, 0x3E, 0x8C, 0x0A, 0x30, 0x31, 0x88, 0x28, 0x67, 0x34, 0x61, + 0xF6, 0xEA, 0x40, 0x31, 0x54, 0x89, 0x10, 0x89, 0xB2, 0x6F, 0x51, 0x23, 0xC5, 0xE3, 0xEB, 0xD4, + 0xCE, 0xAA, 0x1B, 0xCB, 0x68, 0x9D, 0x86, 0x40, 0xEF, 0x23, 0x33, 0xE7, 0x91, 0x04, 0xE8, 0xBD, + 0x07, 0x54, 0x23, 0x42, 0x49, 0x32, 0xF4, 0xEE, 0xC2, 0x90, 0x59, 0xEE, 0x26, 0x95, 0x55, 0x90, + 0x35, 0x9F, 0x56, 0x4A, 0x4F, 0x14, 0x42, 0x62, 0x94, 0xC8, 0x69, 0x70, 0xDC, 0x78, 0x8D, 0xB4, + 0x66, 0xF2, 0x4F, 0xB0, 0x96, 0xAC, 0x35, 0x29, 0x89, 0xB5, 0x64, 0xAD, 0x55, 0x49, 0x4D, 0x29, + 0xE9, 0x16, 0x58, 0x4D, 0xAA, 0x18, 0xC2, 0x7E, 0xB7, 0x47, 0x80, 0x43, 0xDB, 0xED, 0xB6, 0xFB, + 0xF5, 0x76, 0xFF, 0xF0, 0xF2, 0xFC, 0x70, 0x68, 0xDF, 0xBC, 0xBB, 0xB9, 0x5D, 0x1D, 0x9C, 0x73, + 0x64, 0x60, 0xB7, 0x3B, 0x68, 0x9B, 0x02, 0x66, 0x06, 0xA1, 0xED, 0x7E, 0xBF, 0x3B, 0xB4, 0x75, + 0x5D, 0x4F, 0xA7, 0xD3, 0xDD, 0xFE, 0xBA, 0x4C, 0x22, 0x50, 0xE6, 0xB0, 0x16, 0x25, 0x27, 0x3D, + 0x1C, 0xBA, 0xBA, 0x76, 0xDE, 0x47, 0x1F, 0x42, 0x0C, 0x71, 0x3A, 0x9D, 0xEC, 0xDB, 0xD6, 0x59, + 0x67, 0x9D, 0x6B, 0xDB, 0x76, 0x36, 0x6D, 0x0A, 0xB7, 0x1D, 0x65, 0xF7, 0x88, 0x0C, 0xAB, 0xF3, + 0xDE, 0xAE, 0x56, 0xA0, 0xD4, 0x58, 0x2A, 0x8A, 0x7E, 0x10, 0x01, 0xCD, 0x03, 0xC9, 0xAE, 0x28, + 0xD5, 0x37, 0x31, 0xA5, 0x58, 0xC6, 0x24, 0xAF, 0xC9, 0x62, 0x80, 0x67, 0xCD, 0x51, 0x1C, 0x64, + 0xA2, 0x01, 0xB7, 0xCC, 0xBE, 0x8D, 0x00, 0x80, 0x09, 0xAD, 0x31, 0x26, 0x31, 0x99, 0xBC, 0x31, + 0x29, 0x01, 0x0E, 0x33, 0x94, 0x04, 0x73, 0x85, 0x67, 0xFA, 0x54, 0xC5, 0xD3, 0x2A, 0x59, 0x9B, + 0x8D, 0x9E, 0x50, 0xE4, 0xCE, 0x7F, 0x61, 0xF0, 0xC0, 0xAB, 0x16, 0x1B, 0x32, 0xDA, 0xB4, 0xF1, + 0x87, 0x2E, 0x69, 0xD6, 0x00, 0x02, 0x02, 0xDC, 0xCB, 0xC9, 0x18, 0x2B, 0x9A, 0x91, 0x6F, 0xF0, + 0x8E, 0xB8, 0x16, 0xA1, 0xCD, 0xD7, 0x80, 0x41, 0x03, 0xDD, 0xC5, 0x0D, 0xA7, 0x14, 0x06, 0x23, + 0xDF, 0xF4, 0xF8, 0x82, 0xA3, 0x1F, 0xF2, 0x30, 0xA6, 0xD1, 0x90, 0x96, 0x6B, 0xE6, 0x23, 0x3F, + 0x74, 0x56, 0xFE, 0x72, 0x4C, 0xEF, 0xAD, 0x67, 0xD9, 0x94, 0xC7, 0xAF, 0x18, 0x3B, 0xE5, 0x42, + 0xB9, 0xF5, 0x2F, 0x43, 0x1A, 0x93, 0x82, 0xEB, 0x0C, 0x8F, 0xD2, 0x55, 0xF2, 0x85, 0xCA, 0x34, + 0x86, 0xC4, 0xA9, 0x0B, 0xCA, 0x39, 0x85, 0x1A, 0x5E, 0x11, 0x61, 0x11, 0x63, 0x51, 0x04, 0x36, + 0x87, 0x5E, 0x78, 0x18, 0x2F, 0x69, 0xFB, 0xA0, 0x1D, 0x7D, 0x20, 0xF3, 0xFA, 0x00, 0x12, 0x1A, + 0x42, 0x83, 0x28, 0x20, 0x54, 0x82, 0x1A, 0x89, 0x39, 0x86, 0x78, 0xD3, 0x79, 0x16, 0x5E, 0xCC, + 0xA6, 0x1A, 0x27, 0x1D, 0xA7, 0x29, 0x0E, 0xAF, 0x3A, 0x14, 0x7E, 0x8E, 0xB5, 0xD8, 0x58, 0x0C, + 0xC6, 0x23, 0x82, 0x88, 0x4D, 0xED, 0xE2, 0xB4, 0x86, 0x16, 0x7A, 0x9F, 0x26, 0x95, 0xAB, 0xAD, + 0xD9, 0x77, 0x3E, 0x24, 0x86, 0x32, 0xF7, 0x21, 0x96, 0x99, 0x06, 0xD1, 0x5A, 0xD5, 0xB2, 0x71, + 0x00, 0x27, 0xF0, 0x90, 0x98, 0x73, 0xC7, 0x04, 0x65, 0x43, 0x1C, 0x89, 0xC2, 0x71, 0x99, 0x0C, + 0xD2, 0x83, 0x79, 0x27, 0x2C, 0x66, 0x1B, 0x08, 0xB3, 0x56, 0xE1, 0x8A, 0x76, 0xE1, 0x55, 0x5E, + 0xDC, 0x81, 0xE3, 0x4E, 0xCD, 0x73, 0x6B, 0xE8, 0x28, 0x46, 0xC7, 0xD9, 0xC9, 0x23, 0x90, 0x52, + 0x8A, 0x09, 0x9D, 0xA5, 0x90, 0xD2, 0xAE, 0xED, 0xB5, 0xE9, 0x14, 0x22, 0x86, 0x90, 0x92, 0x08, + 0xD1, 0x20, 0x58, 0x00, 0x08, 0xA4, 0x40, 0x85, 0x00, 0x11, 0xAC, 0x98, 0xF3, 0xE5, 0xD4, 0x1A, + 0x83, 0x28, 0x93, 0x49, 0x0D, 0x00, 0x5D, 0xE7, 0xB5, 0xEB, 0xA5, 0x88, 0x28, 0x42, 0x24, 0x44, + 0x32, 0xC8, 0xC5, 0x9C, 0x2C, 0xC2, 0x2A, 0xC6, 0x68, 0x63, 0x6A, 0x8D, 0xB3, 0x6A, 0x74, 0x45, + 0x88, 0x4C, 0xDF, 0x75, 0xAB, 0x9B, 0xDB, 0xDB, 0xDB, 0xAD, 0x20, 0x12, 0x11, 0xA3, 0xD9, 0xED, + 0xBB, 0xDD, 0xFE, 0x4D, 0xE7, 0x63, 0x33, 0x99, 0x2C, 0xCF, 0xE6, 0x6F, 0xDE, 0x5E, 0x1F, 0xDA, + 0xCE, 0x39, 0x63, 0x88, 0x42, 0x9B, 0xAC, 0xB5, 0x29, 0x85, 0x3E, 0xC4, 0xBA, 0xAE, 0x1F, 0x3F, + 0x7E, 0xB8, 0xDD, 0xED, 0xAB, 0xAA, 0x8A, 0x29, 0x69, 0xF1, 0x80, 0xCA, 0x0F, 0x00, 0xD4, 0x35, + 0x05, 0x1F, 0xB7, 0xFB, 0x76, 0xD7, 0x76, 0x88, 0x50, 0x55, 0xAE, 0xA9, 0x2A, 0x66, 0x7E, 0x77, + 0x75, 0x7B, 0x71, 0xB6, 0x6C, 0xBB, 0x2E, 0xF8, 0xA8, 0x39, 0x2B, 0x05, 0x4F, 0x0C, 0x7B, 0xC9, + 0x71, 0x69, 0xE9, 0x86, 0x0B, 0x00, 0x08, 0x85, 0xD3, 0x7A, 0xFC, 0x91, 0x21, 0x98, 0xA8, 0xA5, + 0xD2, 0x92, 0x52, 0x4A, 0x51, 0x8E, 0x70, 0x2C, 0x1D, 0x79, 0x01, 0x53, 0x3C, 0x72, 0x93, 0x96, + 0x49, 0x2D, 0xB8, 0x83, 0x40, 0x04, 0x94, 0xFB, 0x51, 0x7F, 0xD5, 0x3F, 0xA6, 0x28, 0xC6, 0x20, + 0x15, 0xE6, 0x75, 0x3D, 0x59, 0x8A, 0xE9, 0x3A, 0xF6, 0xFD, 0x43, 0x86, 0x62, 0xDA, 0xA7, 0x4E, + 0x10, 0x8E, 0x6E, 0x93, 0xE3, 0xBB, 0x0C, 0xA1, 0xD4, 0xEC, 0x56, 0xCA, 0x37, 0x1A, 0x24, 0x6D, + 0x38, 0x45, 0x40, 0xC8, 0x64, 0x1F, 0xFE, 0x20, 0x7B, 0xBA, 0xC1, 0x8E, 0xD2, 0xF5, 0xC7, 0x08, + 0xE0, 0x74, 0xD3, 0x95, 0xA3, 0x45, 0x9A, 0x13, 0xC3, 0x8B, 0x67, 0xE2, 0x38, 0x84, 0xE3, 0x55, + 0x36, 0x7E, 0x86, 0x71, 0x86, 0xC7, 0xFD, 0xCF, 0x18, 0xBE, 0x7D, 0x70, 0xBF, 0xF9, 0x53, 0xE7, + 0x1E, 0xD5, 0xCE, 0xE8, 0x18, 0x9B, 0x49, 0x9A, 0x04, 0x00, 0x85, 0x94, 0xDE, 0x4D, 0xF7, 0x03, + 0x66, 0x40, 0x4A, 0xA3, 0xC6, 0x6A, 0x74, 0xB4, 0x5B, 0x87, 0xDB, 0xEB, 0xCE, 0x09, 0x86, 0x70, + 0xE0, 0x4C, 0x67, 0x61, 0x60, 0xDA, 0xB5, 0x7E, 0xB8, 0x9F, 0x41, 0x9C, 0xD6, 0x15, 0x19, 0x4C, + 0x07, 0x9F, 0x54, 0x61, 0xA1, 0x1A, 0x62, 0x0C, 0x05, 0xC7, 0xEB, 0x65, 0x55, 0x8B, 0x29, 0xB6, + 0x64, 0x6D, 0x86, 0x86, 0xB9, 0xD7, 0x31, 0x20, 0x56, 0xD6, 0xC5, 0x18, 0x0F, 0x07, 0x99, 0xCD, + 0x1A, 0x75, 0xB8, 0xDE, 0x1F, 0x3E, 0xB8, 0x6B, 0x69, 0x22, 0x7E, 0xC0, 0x55, 0x39, 0x06, 0xC6, + 0xF3, 0x69, 0x53, 0x39, 0x7B, 0x75, 0xBB, 0xDB, 0xB7, 0x3E, 0x24, 0x6E, 0x7D, 0x8C, 0xB9, 0xE8, + 0x1F, 0x86, 0x9C, 0xB5, 0xBC, 0x7F, 0x03, 0xD2, 0x5D, 0xFE, 0x4D, 0x16, 0x50, 0x5E, 0x1A, 0x50, + 0xB1, 0x88, 0xC3, 0xF6, 0xA8, 0x05, 0xD1, 0x47, 0xE0, 0x4B, 0x25, 0xFD, 0x6A, 0xD8, 0x33, 0x73, + 0xE8, 0xA8, 0x30, 0xC5, 0x0C, 0xFB, 0x0C, 0x22, 0xD8, 0xA3, 0xDB, 0x05, 0x0C, 0x12, 0x20, 0x94, + 0x9E, 0x8F, 0x32, 0xEC, 0x63, 0x88, 0xA8, 0x0C, 0x73, 0x06, 0x09, 0x00, 0x25, 0xC7, 0x2B, 0x23, + 0x80, 0x89, 0x31, 0x49, 0xA1, 0x32, 0x15, 0x90, 0xD1, 0x84, 0x67, 0x93, 0x8A, 0x00, 0x04, 0x60, + 0x3E, 0x6F, 0xA6, 0x93, 0xDA, 0x18, 0xE5, 0xBC, 0x20, 0x44, 0x68, 0x9A, 0xAA, 0x56, 0xD2, 0xA1, + 0x98, 0x88, 0x50, 0x2B, 0x28, 0x38, 0x73, 0xF6, 0xB3, 0x31, 0xA0, 0x88, 0x6C, 0x64, 0x29, 0x00, + 0x11, 0x32, 0xA3, 0xB5, 0x36, 0xC6, 0xB8, 0xDB, 0x6E, 0xF7, 0xDB, 0xFD, 0xED, 0x7A, 0xBB, 0xD9, + 0x75, 0x31, 0x25, 0x16, 0xB0, 0xD6, 0x9E, 0x5F, 0x5E, 0xEC, 0x76, 0x6D, 0xB7, 0x5B, 0xF5, 0xF1, + 0xB0, 0xDF, 0x1D, 0x0E, 0x6D, 0x6B, 0x8D, 0x4D, 0x91, 0x13, 0x0A, 0x11, 0x22, 0xA6, 0xAA, 0x72, + 0x53, 0x6E, 0xC8, 0xDA, 0x57, 0xAF, 0xDF, 0x3A, 0xE7, 0x16, 0x8B, 0xD9, 0x6A, 0xB5, 0x19, 0x36, + 0x2A, 0x95, 0x31, 0x22, 0x0B, 0x10, 0x63, 0x8A, 0x24, 0x64, 0xAD, 0x8D, 0x31, 0xDD, 0x1C, 0x36, + 0x4D, 0x53, 0xA5, 0x24, 0xB1, 0x28, 0x97, 0x9B, 0xDB, 0xED, 0xE3, 0x87, 0x4B, 0x10, 0x89, 0x29, + 0x92, 0x21, 0x42, 0xFB, 0x27, 0x96, 0x8F, 0x6E, 0x9A, 0x38, 0x2A, 0x86, 0x29, 0x39, 0x0C, 0x70, + 0x74, 0x5A, 0x71, 0xD2, 0x2C, 0x96, 0xC4, 0xCC, 0x91, 0x39, 0x45, 0x4E, 0x43, 0xCB, 0x74, 0x91, + 0x18, 0x4B, 0x6E, 0xDC, 0xB0, 0xC6, 0xF3, 0xD4, 0x0E, 0x60, 0x0D, 0x40, 0x47, 0x95, 0x11, 0xB0, + 0xCC, 0x99, 0x10, 0x6A, 0xF2, 0x79, 0x59, 0x44, 0x2A, 0xA1, 0xEA, 0x4C, 0xBB, 0xE3, 0xCB, 0x93, + 0xA2, 0x84, 0x06, 0xA7, 0x4F, 0x56, 0x7D, 0x83, 0xB5, 0xAC, 0x02, 0x83, 0x45, 0x18, 0x20, 0xAB, + 0xB3, 0xA2, 0xC8, 0x33, 0x05, 0x98, 0x08, 0x65, 0x7C, 0x92, 0xDD, 0xD2, 0x59, 0x0D, 0xE4, 0xD3, + 0xEE, 0xA8, 0x03, 0xBD, 0xEF, 0x30, 0x66, 0x77, 0xF7, 0x00, 0x50, 0x5C, 0x9C, 0x51, 0x9E, 0x9A, + 0x76, 0x25, 0xBC, 0x76, 0x0A, 0x6C, 0xC7, 0x3B, 0xF7, 0x08, 0x97, 0x0D, 0x76, 0xD2, 0x78, 0x49, + 0x0E, 0xBF, 0x8E, 0x69, 0xA9, 0x3E, 0x30, 0x65, 0xFA, 0x30, 0xA3, 0x11, 0xC2, 0xE2, 0x63, 0x1E, + 0x4E, 0xB1, 0x43, 0xEA, 0x1D, 0x22, 0x08, 0x09, 0xE7, 0xD3, 0x04, 0x24, 0xE7, 0x78, 0x94, 0xE7, + 0x51, 0x2A, 0xAE, 0x02, 0x32, 0x07, 0xBE, 0x91, 0x9C, 0x38, 0x71, 0x47, 0x8B, 0xB3, 0x30, 0xB3, + 0xF2, 0x5B, 0x60, 0x12, 0xA1, 0xD2, 0x84, 0xCE, 0x18, 0x34, 0x06, 0x87, 0xB6, 0x95, 0xC3, 0x60, + 0x11, 0xE2, 0x62, 0x52, 0x4F, 0x9B, 0x8A, 0x10, 0x9D, 0x25, 0xB5, 0xF2, 0x04, 0xC0, 0x19, 0x9A, + 0x4D, 0x2A, 0x63, 0x94, 0xDD, 0xD4, 0x6A, 0xD5, 0x34, 0x16, 0x70, 0x3E, 0xA4, 0xC9, 0x7D, 0x70, + 0x1C, 0xEF, 0xFF, 0x3A, 0x56, 0x73, 0xC7, 0x21, 0x23, 0xA8, 0x10, 0xE6, 0xD3, 0xEA, 0x76, 0x7B, + 0x68, 0xFB, 0xD8, 0x85, 0x14, 0x52, 0x29, 0xB2, 0x2B, 0xB1, 0x7B, 0xA3, 0xF1, 0x3B, 0x7D, 0x7D, + 0x5D, 0x07, 0xCA, 0xE9, 0xC3, 0x20, 0x05, 0xCA, 0xE6, 0xF9, 0x80, 0x52, 0xFF, 0x01, 0x70, 0xCC, + 0x48, 0x28, 0x3F, 0x0F, 0x5A, 0x4C, 0xC1, 0xB8, 0x08, 0xD3, 0x5D, 0x1B, 0x47, 0xCA, 0x41, 0xA0, + 0x16, 0x0A, 0x83, 0xB1, 0x32, 0xB0, 0x10, 0x1F, 0xE9, 0x66, 0x00, 0x44, 0xA4, 0x0F, 0x8C, 0x88, + 0x62, 0xC1, 0xB0, 0x74, 0x49, 0x42, 0x64, 0x83, 0x14, 0x22, 0x87, 0xA4, 0x7B, 0x93, 0x18, 0x40, + 0x6B, 0x08, 0x0D, 0xA8, 0x89, 0x93, 0x0A, 0x49, 0x9D, 0xAA, 0x09, 0x43, 0x28, 0xC2, 0xA3, 0xAA, + 0x5D, 0x54, 0x17, 0x8E, 0x96, 0xA6, 0x65, 0x17, 0x6C, 0xA1, 0x0F, 0x18, 0xB2, 0xC6, 0xAC, 0xA5, + 0x51, 0x73, 0x80, 0x3C, 0x86, 0x9B, 0xF5, 0x66, 0xB3, 0xD9, 0xB6, 0xAD, 0x8F, 0x31, 0xBE, 0x7C, + 0x7D, 0xB5, 0xDB, 0x77, 0x87, 0xB6, 0x0B, 0x31, 0xD5, 0x55, 0x55, 0x37, 0xF5, 0xF9, 0xF9, 0x12, + 0x11, 0x6F, 0x6F, 0x56, 0xEA, 0xE4, 0x65, 0x61, 0x14, 0x83, 0x00, 0x9A, 0x85, 0xFF, 0xB7, 0x7F, + 0xF3, 0xEB, 0xD5, 0x7A, 0xFB, 0xF6, 0xFD, 0xCD, 0xD3, 0xCF, 0x3E, 0x59, 0x6F, 0xB6, 0xBB, 0xDD, + 0x7E, 0xBC, 0x06, 0xD4, 0x11, 0xDE, 0xF7, 0x3D, 0x97, 0xE6, 0x89, 0x88, 0xCA, 0xF9, 0x87, 0x00, + 0x68, 0x0C, 0x5D, 0x5D, 0xDF, 0x22, 0xA1, 0x35, 0xE6, 0x7A, 0xB5, 0x35, 0x64, 0x58, 0x92, 0xF2, + 0xFF, 0xD5, 0x35, 0x10, 0x9A, 0xA3, 0xD1, 0xF7, 0xE1, 0xF5, 0x01, 0x79, 0x0B, 0x15, 0x29, 0xDE, + 0xB0, 0x94, 0x92, 0xA4, 0x98, 0x7F, 0xCA, 0x0D, 0x86, 0x25, 0xC5, 0x90, 0x1B, 0x2E, 0x1E, 0x19, + 0x51, 0xC7, 0xCE, 0x20, 0x19, 0x76, 0x9E, 0x63, 0xAC, 0xAD, 0xF4, 0x9D, 0xC5, 0x01, 0x87, 0x0F, + 0x6B, 0x7E, 0x40, 0x8B, 0x58, 0x8A, 0x07, 0xA1, 0xF0, 0x60, 0x0F, 0xD8, 0x44, 0xCA, 0xDA, 0xD0, + 0xEF, 0x8F, 0x4B, 0x78, 0x78, 0xA1, 0xD2, 0x93, 0x13, 0x14, 0x7D, 0x28, 0x73, 0x49, 0x5D, 0xEB, + 0xDF, 0x76, 0xFB, 0xAE, 0xAE, 0xAC, 0xA6, 0xC8, 0x58, 0x73, 0x9C, 0xE2, 0xA2, 0x32, 0x73, 0x99, + 0xD1, 0x78, 0xA5, 0xE8, 0x5A, 0x1F, 0x02, 0xA1, 0xA3, 0x41, 0xCA, 0xDB, 0x67, 0xF6, 0x7B, 0x14, + 0xDD, 0x7D, 0x02, 0xDC, 0xF0, 0x4E, 0x41, 0xF8, 0xF1, 0x4B, 0x95, 0x58, 0x3D, 0xFB, 0x44, 0xEB, + 0x9D, 0x20, 0xAF, 0x13, 0xE5, 0xA8, 0x3F, 0x14, 0xD3, 0x0F, 0xB2, 0xDB, 0x85, 0xA1, 0x94, 0xC6, + 0xE7, 0x45, 0x37, 0xE4, 0x30, 0x5A, 0x55, 0x4F, 0x46, 0x07, 0x8B, 0x87, 0xE7, 0x96, 0xC8, 0x9C, + 0xED, 0x91, 0x92, 0x79, 0x30, 0x3C, 0xE1, 0x5D, 0x61, 0xC8, 0x37, 0x1A, 0x9E, 0x12, 0xA1, 0xF4, + 0xFE, 0x11, 0xF1, 0x41, 0x90, 0x84, 0x01, 0x36, 0x87, 0x5C, 0x5E, 0xAE, 0x8B, 0x03, 0xCB, 0xBE, + 0x41, 0x88, 0x86, 0xE8, 0x6C, 0xDE, 0x3C, 0x38, 0x9B, 0x55, 0xCE, 0x28, 0xCE, 0xEA, 0x7C, 0xD8, + 0x1D, 0x3A, 0xAD, 0xF2, 0x5B, 0xCC, 0x1A, 0x44, 0xD4, 0x8A, 0x4E, 0x93, 0xFD, 0xA5, 0x39, 0x4A, + 0x7D, 0x5F, 0x85, 0x8D, 0x64, 0xE5, 0xC3, 0x48, 0x75, 0x98, 0x83, 0xF1, 0x52, 0x44, 0xC4, 0xD9, + 0xB4, 0x99, 0x36, 0x6E, 0x73, 0xD0, 0xE2, 0x2B, 0xD1, 0xE8, 0x5E, 0xBE, 0x0B, 0x88, 0x16, 0x40, + 0x23, 0x0E, 0xCD, 0xB3, 0x86, 0x1B, 0xE4, 0xE9, 0xC5, 0xBC, 0xC1, 0x17, 0x2F, 0x57, 0x01, 0xDE, + 0x03, 0x55, 0x07, 0x19, 0x94, 0x11, 0x36, 0x22, 0x82, 0x21, 0x97, 0x7E, 0x90, 0x27, 0x2D, 0xE1, + 0xA1, 0xE2, 0xE0, 0x35, 0x94, 0x83, 0xE8, 0x52, 0x3C, 0xCA, 0xA6, 0xB4, 0xC0, 0x92, 0xEC, 0x53, + 0x01, 0x00, 0x49, 0x89, 0xA3, 0x80, 0x68, 0x4F, 0x40, 0xC9, 0x58, 0x83, 0x50, 0x58, 0xB2, 0xD7, + 0xC3, 0xE4, 0x0A, 0xAD, 0xEC, 0x3A, 0x2E, 0x58, 0x40, 0x3A, 0x1F, 0x0C, 0xA1, 0x88, 0xD4, 0x4D, + 0x35, 0x32, 0x01, 0xD0, 0x1A, 0x63, 0xA7, 0xDA, 0x3F, 0x89, 0x75, 0x9F, 0x34, 0x86, 0x42, 0x08, + 0x88, 0xD9, 0x9C, 0x1C, 0x7B, 0x43, 0x10, 0xF1, 0xC7, 0xE7, 0x2F, 0xF7, 0xBB, 0x7D, 0x1F, 0xE2, + 0xCD, 0xED, 0x76, 0xB5, 0xDE, 0xCE, 0x66, 0x73, 0x16, 0xF6, 0xDE, 0x13, 0xD2, 0x6A, 0xB5, 0x7A, + 0xF0, 0xE8, 0x41, 0x4A, 0x31, 0xC6, 0xA8, 0xDB, 0x39, 0x0A, 0xA9, 0xBA, 0x3C, 0x74, 0x9D, 0xB5, + 0xF6, 0xA7, 0x3F, 0xFD, 0x34, 0x44, 0xAE, 0xEB, 0xAA, 0xAA, 0x9C, 0x75, 0x76, 0xBB, 0xDD, 0x89, + 0x40, 0x55, 0xB9, 0x94, 0x58, 0x0F, 0x8B, 0x31, 0xFA, 0x10, 0x5D, 0xE5, 0xAA, 0xBA, 0x4A, 0xB9, + 0x30, 0x43, 0x09, 0xAF, 0x8F, 0x2D, 0x9D, 0x38, 0x09, 0x5A, 0x7A, 0xF5, 0xEE, 0x66, 0x7F, 0xE8, + 0xA6, 0x4D, 0x15, 0x63, 0x02, 0xC0, 0x94, 0x22, 0xDA, 0xE2, 0x2C, 0xC3, 0x63, 0x01, 0xD6, 0x51, + 0x68, 0x07, 0x01, 0x11, 0xF5, 0x97, 0x64, 0x71, 0x28, 0x08, 0x34, 0x86, 0x98, 0x52, 0x62, 0x45, + 0x7C, 0xCA, 0xA4, 0x96, 0x49, 0x21, 0xEF, 0x8A, 0x53, 0x16, 0x84, 0x2C, 0x6F, 0xAA, 0x46, 0x04, + 0x51, 0x7B, 0x7D, 0x67, 0x10, 0x80, 0x05, 0x9F, 0x67, 0x9B, 0xE5, 0xDE, 0x67, 0x2C, 0x93, 0x63, + 0x1D, 0xF1, 0x01, 0x2D, 0x3C, 0xA4, 0x88, 0x68, 0xBC, 0xA8, 0x60, 0x7A, 0x67, 0xAD, 0x35, 0xE6, + 0x8F, 0xCF, 0x5E, 0xCD, 0x26, 0xCD, 0xD5, 0xCD, 0xE6, 0xB7, 0x7F, 0xF8, 0xF1, 0xD7, 0x3F, 0xFF, + 0xEC, 0xBF, 0xFB, 0xEB, 0x9F, 0xA6, 0x42, 0xC3, 0x59, 0xA6, 0x0C, 0x98, 0x73, 0x4B, 0x9D, 0x61, + 0xA5, 0x1C, 0xFF, 0x85, 0x53, 0x2D, 0xA6, 0x7F, 0x62, 0x00, 0x3D, 0x47, 0x73, 0xB0, 0x86, 0xF8, + 0x29, 0x8E, 0x88, 0xB0, 0x35, 0x6C, 0x31, 0x4E, 0xCB, 0x18, 0xF6, 0x6C, 0x80, 0xA3, 0x25, 0x3E, + 0x5C, 0xFC, 0x44, 0x8B, 0x41, 0xE6, 0x41, 0xC8, 0xFC, 0x7A, 0x39, 0x50, 0x22, 0xC0, 0x47, 0xDC, + 0x28, 0xE5, 0x9D, 0x33, 0x90, 0xE6, 0x52, 0xE3, 0xA5, 0x37, 0xB2, 0x54, 0xF0, 0x2A, 0x8B, 0x60, + 0xD9, 0x13, 0x12, 0x03, 0x03, 0x1B, 0xAD, 0x22, 0x44, 0x40, 0x40, 0x2A, 0xBD, 0xAD, 0x32, 0x3E, + 0x85, 0x6C, 0xF7, 0x09, 0xE4, 0xFC, 0x3B, 0x5D, 0xCC, 0xE3, 0x72, 0x8A, 0x41, 0x99, 0x14, 0xAD, + 0x01, 0x45, 0xA1, 0x83, 0x96, 0x28, 0x38, 0x43, 0x93, 0xDA, 0xD5, 0x95, 0x9D, 0x36, 0xCE, 0x87, + 0xD8, 0x7A, 0x5F, 0x57, 0x8E, 0x59, 0x10, 0xC0, 0x10, 0x25, 0xE4, 0xE9, 0xA4, 0x52, 0x36, 0x21, + 0xCD, 0x06, 0x2E, 0xE7, 0x1F, 0x1B, 0x3E, 0xDD, 0x17, 0x88, 0xFB, 0x12, 0x70, 0x6F, 0x64, 0x8F, + 0x28, 0x77, 0xF8, 0xD9, 0x10, 0x3E, 0x38, 0x9B, 0xEF, 0xDA, 0x10, 0x62, 0x27, 0x5C, 0xFA, 0x8C, + 0x2A, 0x54, 0xCF, 0x53, 0x05, 0x47, 0x43, 0x62, 0x48, 0x6C, 0x44, 0x39, 0x76, 0x42, 0x10, 0x25, + 0xF1, 0x01, 0x82, 0xA3, 0x92, 0x65, 0x11, 0x14, 0x75, 0xD8, 0x67, 0xBE, 0x11, 0x2A, 0x7B, 0x14, + 0x40, 0x16, 0x02, 0x75, 0x16, 0x13, 0x00, 0x0A, 0xAA, 0x1E, 0x72, 0x36, 0x93, 0x7C, 0x15, 0xE7, + 0x58, 0x7E, 0xE8, 0x21, 0xE1, 0x4C, 0xB3, 0xDE, 0x10, 0xB5, 0x99, 0x1E, 0xA4, 0x94, 0x2D, 0xA5, + 0x21, 0x98, 0x48, 0x20, 0xC2, 0x42, 0x04, 0x43, 0x53, 0x9C, 0x23, 0x66, 0xCC, 0x79, 0x09, 0x50, + 0x59, 0xDB, 0x34, 0x95, 0xB1, 0xD6, 0x9A, 0x71, 0xA1, 0x12, 0xA8, 0xA1, 0x3A, 0xA4, 0xC8, 0xEA, + 0x59, 0xC6, 0x5A, 0xB5, 0x40, 0xC7, 0x12, 0x8C, 0x08, 0xAF, 0x5E, 0xBE, 0xB9, 0xBA, 0xC9, 0x24, + 0x2E, 0xD3, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xBA, 0x89, 0x31, 0x5D, 0xDF, 0x6C, + 0xB7, 0xDB, 0xDD, 0xF2, 0xEC, 0x0C, 0x09, 0x9B, 0xC9, 0x44, 0x00, 0xBB, 0xB6, 0xFF, 0xE8, 0xA3, + 0xC7, 0x8F, 0x3F, 0x7A, 0xD8, 0x34, 0xF5, 0x64, 0x32, 0xDD, 0x6C, 0x77, 0xEB, 0xCD, 0x6E, 0xB5, + 0xDA, 0xA4, 0xC8, 0x21, 0xC5, 0xE5, 0x72, 0x71, 0x79, 0x79, 0x3E, 0x9B, 0xCD, 0xBE, 0xFF, 0xE1, + 0x45, 0xD7, 0xF7, 0x55, 0xE5, 0xFA, 0xDE, 0xAB, 0x7A, 0xEA, 0x7B, 0x9F, 0x52, 0x9A, 0xCD, 0xA6, + 0x4D, 0x53, 0xDF, 0xDC, 0xAC, 0x22, 0x07, 0x62, 0xA6, 0x78, 0x24, 0x92, 0x41, 0xC4, 0x94, 0x92, + 0x1A, 0xC5, 0xCC, 0xF2, 0xC9, 0xC7, 0x8F, 0x1E, 0x5E, 0x9E, 0x7F, 0xF5, 0xD5, 0xB7, 0x6F, 0xDF, + 0xDF, 0xFE, 0xF2, 0x67, 0x9F, 0xB2, 0x67, 0xD5, 0xEF, 0xC6, 0x30, 0xA0, 0x40, 0x66, 0xD0, 0x03, + 0xB9, 0xE3, 0x20, 0x4E, 0x02, 0x02, 0x92, 0xA3, 0xAE, 0x00, 0x1A, 0x67, 0xCC, 0x0E, 0xDD, 0xAC, + 0xB6, 0x62, 0x8A, 0xE9, 0x98, 0x77, 0x9A, 0x33, 0x30, 0xEF, 0x29, 0xB2, 0x93, 0xD5, 0x38, 0xFE, + 0x3D, 0x3F, 0x2B, 0x96, 0xA4, 0xA8, 0xA2, 0x39, 0x70, 0x94, 0xE7, 0x05, 0xF7, 0xB4, 0xD5, 0xC9, + 0xF7, 0x63, 0x75, 0x53, 0x64, 0x38, 0x1B, 0x95, 0x99, 0xE9, 0x0F, 0xA5, 0xAE, 0x2A, 0x4E, 0xFC, + 0x4F, 0x5F, 0x7E, 0xFF, 0x5F, 0xFF, 0xF9, 0x9B, 0x8F, 0x1E, 0x5E, 0xAE, 0xB6, 0x7B, 0x67, 0xCD, + 0xBF, 0x7C, 0xFD, 0xE3, 0x8B, 0x37, 0xD7, 0x7F, 0xFF, 0x3F, 0xFC, 0xF5, 0x62, 0x36, 0x51, 0x1A, + 0x9B, 0xD1, 0x2A, 0x39, 0x5A, 0x69, 0x77, 0x34, 0x8B, 0xDC, 0xF9, 0xB2, 0x60, 0xA2, 0x62, 0xD6, + 0x8A, 0xD6, 0x13, 0xCB, 0x38, 0x00, 0x81, 0x25, 0x2F, 0x0C, 0x0A, 0x5E, 0xFE, 0x33, 0xAA, 0xEA, + 0x83, 0x4B, 0x72, 0x58, 0x8C, 0x9A, 0xE6, 0x56, 0xC6, 0xF9, 0xCE, 0x68, 0x64, 0xB4, 0x0B, 0x00, + 0x85, 0xBF, 0xE1, 0xFE, 0xA2, 0x56, 0x3E, 0x75, 0x12, 0x91, 0x9C, 0x7A, 0xAC, 0x69, 0xF6, 0x02, + 0xA0, 0x1D, 0x0D, 0x18, 0x88, 0x84, 0x50, 0xE9, 0xDA, 0x44, 0x99, 0x0D, 0x14, 0xDA, 0x09, 0x00, + 0x0E, 0x77, 0x2D, 0x96, 0x38, 0x00, 0x1E, 0x8B, 0x9B, 0x40, 0x0A, 0x42, 0x19, 0xD4, 0x7F, 0x3E, + 0x86, 0xCB, 0x36, 0x98, 0x58, 0x7C, 0x8C, 0x6D, 0x17, 0x58, 0x84, 0x08, 0xAD, 0xE9, 0x2D, 0x11, + 0x11, 0x5A, 0x4B, 0x8B, 0xD9, 0xA4, 0xAE, 0x2A, 0x32, 0x0A, 0xB9, 0x07, 0xD7, 0xBE, 0x7A, 0xA0, + 0xFE, 0x64, 0x01, 0xF0, 0x89, 0xA8, 0x9D, 0xC8, 0xC1, 0xFD, 0x83, 0xF5, 0x87, 0xC4, 0x6C, 0x2D, + 0x3D, 0x38, 0x9B, 0x58, 0x43, 0xBB, 0x36, 0xB4, 0x3E, 0xE6, 0xD0, 0xAD, 0x42, 0x5A, 0x84, 0x12, + 0xD5, 0x01, 0x94, 0xC1, 0xAF, 0x95, 0x81, 0xF6, 0x51, 0xE0, 0x4E, 0x9B, 0x80, 0xDC, 0x41, 0xB2, + 0x94, 0x75, 0x98, 0x50, 0xEE, 0x5D, 0x92, 0x5F, 0xC7, 0xE4, 0x2A, 0x28, 0x40, 0x14, 0x8B, 0x68, + 0x0C, 0x56, 0xC6, 0x10, 0x91, 0x6E, 0x15, 0xA3, 0xB9, 0x07, 0xC8, 0x89, 0x8B, 0x60, 0x00, 0xA4, + 0x94, 0x0A, 0x0D, 0xC8, 0x9B, 0x28, 0x37, 0xE5, 0x61, 0x6D, 0x6C, 0x66, 0x94, 0x14, 0x0C, 0x35, + 0xD1, 0x9D, 0xA1, 0xB8, 0x51, 0x50, 0x10, 0xD1, 0x12, 0xCD, 0x67, 0x4D, 0x5D, 0xD7, 0xC3, 0x48, + 0x1E, 0x65, 0x77, 0x34, 0x6E, 0xC3, 0xE8, 0x11, 0x80, 0x30, 0x24, 0x4E, 0x48, 0x68, 0xAD, 0xED, + 0xFB, 0x7E, 0xBB, 0x6B, 0xFB, 0xBE, 0xBF, 0x7A, 0x7F, 0x83, 0x48, 0xBD, 0xEF, 0x9B, 0xA6, 0x9E, + 0xCF, 0xE7, 0xC6, 0xDA, 0x3E, 0x46, 0x1F, 0xE2, 0xA3, 0x87, 0x0F, 0x74, 0x22, 0xDA, 0xB6, 0x45, + 0xC4, 0xB3, 0xB3, 0xF9, 0x74, 0xDA, 0x9C, 0x9D, 0x9F, 0x3D, 0x7A, 0x78, 0xB9, 0xD9, 0xEC, 0xBA, + 0xDE, 0xA7, 0xC4, 0xAF, 0xDF, 0xBC, 0x7F, 0xF9, 0xF2, 0x4D, 0x62, 0xAE, 0xEB, 0xDA, 0x10, 0x09, + 0xC0, 0x7E, 0xB7, 0x47, 0xA2, 0x10, 0xE3, 0x6C, 0x3A, 0x9D, 0x4C, 0x1A, 0xEF, 0xBD, 0xCF, 0x7D, + 0xCB, 0x45, 0x85, 0x51, 0x7D, 0xFF, 0x84, 0x82, 0x44, 0x3E, 0x24, 0x00, 0xB1, 0xD6, 0x58, 0x6B, + 0x6F, 0x6E, 0x37, 0x02, 0xF8, 0xFA, 0xDD, 0xED, 0x5F, 0xFD, 0xEA, 0xF3, 0x3E, 0xE4, 0xAD, 0x45, + 0x11, 0x25, 0x60, 0x2A, 0xEA, 0xA0, 0x6C, 0xD8, 0xAC, 0x60, 0x53, 0x00, 0x93, 0x8A, 0x16, 0x21, + 0x01, 0xA4, 0xE0, 0x63, 0x8C, 0xC9, 0x18, 0x42, 0x10, 0x6D, 0x91, 0xA8, 0xE8, 0x2C, 0xC4, 0x38, + 0x00, 0xB1, 0x0F, 0x0A, 0xD2, 0xFD, 0x2F, 0x33, 0x36, 0xC9, 0xD6, 0x49, 0x76, 0xC8, 0x4B, 0x11, + 0x8F, 0xEC, 0x9E, 0x43, 0xC0, 0xD2, 0xE6, 0x66, 0x38, 0xEB, 0x4F, 0xD9, 0x13, 0xF7, 0xA5, 0xBD, + 0xAC, 0x6E, 0xAE, 0xEB, 0xBA, 0xEF, 0xE3, 0x3F, 0x7F, 0xF9, 0xFD, 0x7A, 0xD7, 0x7F, 0xF1, 0x93, + 0x4F, 0x0F, 0xAD, 0x76, 0xA0, 0x14, 0x00, 0xB9, 0xDE, 0x74, 0xFF, 0xF0, 0x8F, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFD, 0x5F, 0x22, 0x82, 0xE6, 0xF7, 0xC1, 0x50, 0x60, 0x75, 0xAA, 0x56, 0x72, 0x5A, 0xD9, + 0xC9, 0x06, 0x7F, 0x4C, 0xE9, 0x1D, 0xBD, 0x23, 0xCB, 0xB1, 0x16, 0x70, 0xF8, 0x7E, 0xA0, 0x69, + 0x1B, 0xFF, 0xE9, 0xBE, 0xE6, 0x1A, 0x3F, 0xBF, 0x7E, 0x89, 0x9A, 0xC8, 0x02, 0x20, 0x22, 0x5A, + 0x92, 0xCD, 0x22, 0x20, 0xCA, 0x1D, 0x95, 0x5F, 0x73, 0x94, 0x5E, 0x77, 0x54, 0x7F, 0xE3, 0x07, + 0x40, 0xC4, 0xE3, 0xC6, 0x4B, 0x02, 0xA5, 0xD7, 0x9C, 0xDA, 0xF0, 0x00, 0x80, 0x0C, 0x42, 0xA2, + 0xD1, 0x7A, 0x60, 0x91, 0xC2, 0xEC, 0x2C, 0x06, 0x51, 0xEB, 0x66, 0xB2, 0x0B, 0x79, 0xFC, 0x9A, + 0x02, 0x82, 0x40, 0x02, 0x05, 0x41, 0x1C, 0x07, 0x4B, 0x0D, 0x7B, 0x24, 0x11, 0x16, 0x61, 0xB0, + 0x8E, 0x44, 0xA4, 0xED, 0x23, 0x40, 0x44, 0x84, 0xDA, 0xB9, 0x98, 0xB8, 0x76, 0xA6, 0x22, 0x1B, + 0x22, 0xAB, 0x67, 0x2A, 0x67, 0x25, 0x0C, 0xBA, 0xB9, 0x0C, 0xD3, 0x7D, 0x15, 0xF6, 0x41, 0x91, + 0x1A, 0xD2, 0x0E, 0xB5, 0xB6, 0x06, 0x47, 0x9F, 0xF1, 0x45, 0x88, 0xC8, 0x59, 0xE3, 0x8C, 0x31, + 0xA4, 0x7D, 0x73, 0x29, 0x40, 0x3A, 0x6E, 0x5B, 0xD9, 0xDC, 0xBE, 0x73, 0xE5, 0x3C, 0xAA, 0x19, + 0x8E, 0x02, 0x80, 0x06, 0xC3, 0x64, 0xB8, 0x3A, 0x8E, 0x68, 0x20, 0x75, 0x24, 0x0A, 0xFF, 0x43, + 0xE9, 0x3E, 0xA8, 0xA7, 0x00, 0x14, 0x96, 0x4D, 0x04, 0xC8, 0x01, 0xFB, 0x4C, 0x8E, 0x4E, 0xB9, + 0xC5, 0xF7, 0xB0, 0xB7, 0x28, 0x74, 0x8F, 0xCC, 0x7C, 0x94, 0xF5, 0x1C, 0x7C, 0x22, 0x02, 0x22, + 0x83, 0x28, 0x90, 0x8E, 0x06, 0xAB, 0x35, 0x68, 0xCA, 0x46, 0xA7, 0x63, 0x43, 0x48, 0xCE, 0x9A, + 0xD9, 0xB4, 0x6E, 0x9A, 0x53, 0x2D, 0x96, 0xCF, 0x11, 0x01, 0x01, 0xCD, 0x85, 0xC9, 0xEB, 0x5F, + 0xB4, 0xFD, 0xA1, 0x88, 0x48, 0xED, 0xAA, 0x17, 0x2F, 0x5F, 0x7F, 0xF7, 0xC3, 0x2B, 0xB2, 0x16, + 0x01, 0x38, 0x32, 0x02, 0x1B, 0x63, 0xAA, 0xAA, 0x62, 0x34, 0x44, 0x64, 0x58, 0x2E, 0x2F, 0x2F, + 0x62, 0x8C, 0x9C, 0x18, 0x84, 0x63, 0xC2, 0x94, 0xF8, 0x76, 0xB5, 0x49, 0x2C, 0x5D, 0xE7, 0xEB, + 0xCA, 0x3E, 0x7A, 0x74, 0x79, 0x76, 0xB6, 0x7C, 0xF6, 0xFC, 0xD5, 0xF9, 0xC5, 0x72, 0xBB, 0xDD, + 0xC7, 0xC4, 0x4F, 0x3F, 0x7D, 0xF2, 0xF6, 0xDD, 0xD5, 0x8B, 0x97, 0x6F, 0x67, 0xF3, 0xD9, 0x76, + 0xBB, 0x9F, 0x4E, 0x26, 0x67, 0x67, 0xCB, 0xCD, 0x76, 0xB7, 0x5A, 0x6F, 0x13, 0xB3, 0xB5, 0x16, + 0x80, 0xAB, 0xAA, 0x0E, 0x21, 0xFA, 0x10, 0x40, 0x85, 0x1C, 0x24, 0x72, 0xB4, 0x84, 0x09, 0xF0, + 0xC7, 0x17, 0x6F, 0xAC, 0x35, 0xC6, 0x9A, 0xCD, 0xBE, 0x0D, 0x31, 0x59, 0x32, 0x23, 0x5F, 0x64, + 0xB6, 0x97, 0x55, 0x8D, 0xEB, 0x2B, 0xA8, 0x71, 0xAA, 0xE8, 0x83, 0x59, 0x94, 0xF8, 0x80, 0x13, + 0xC7, 0x98, 0xDA, 0xAE, 0x57, 0x98, 0x13, 0x63, 0x12, 0xC1, 0xC4, 0x29, 0x67, 0xB1, 0xFD, 0x89, + 0x72, 0xC2, 0xF1, 0x82, 0xBC, 0x2B, 0x77, 0x77, 0xCC, 0xC3, 0x72, 0x3C, 0x0C, 0x47, 0xE9, 0x86, + 0x02, 0x79, 0xEF, 0x93, 0x91, 0xA4, 0xFD, 0x39, 0x91, 0x16, 0x39, 0x4A, 0x14, 0x00, 0x00, 0x42, + 0x5D, 0x55, 0x5D, 0xEB, 0xFF, 0x9F, 0xDF, 0x7E, 0xD7, 0xF6, 0xE9, 0x66, 0xB5, 0xF9, 0xE8, 0xD1, + 0x83, 0xBA, 0x72, 0xBD, 0xF7, 0xB3, 0xE9, 0x34, 0x25, 0xEE, 0xDA, 0xEE, 0xD5, 0x3B, 0xFE, 0xDF, + 0xFE, 0x8F, 0x7F, 0x39, 0x5F, 0x4E, 0xFF, 0xDD, 0xDF, 0xFE, 0xC5, 0x7C, 0xDA, 0xF4, 0x21, 0x11, + 0x8E, 0x2E, 0x7B, 0x44, 0x3E, 0x1F, 0x30, 0x53, 0xA4, 0xFC, 0x7D, 0xFC, 0x72, 0x27, 0x2F, 0x3B, + 0x80, 0xA9, 0xF1, 0xD3, 0xDE, 0x3F, 0x06, 0x46, 0x1A, 0x67, 0x3C, 0x2C, 0xC3, 0x06, 0x53, 0xB4, + 0xE6, 0x31, 0x0C, 0x52, 0x6E, 0x7D, 0x7C, 0xA4, 0x62, 0x07, 0xE0, 0x58, 0x09, 0x0E, 0x77, 0xB9, + 0xD3, 0x2A, 0xFC, 0x38, 0xF3, 0x83, 0x55, 0x5F, 0x02, 0x98, 0xBA, 0x41, 0x95, 0x87, 0x20, 0x20, + 0x55, 0x6D, 0x00, 0xD9, 0xA2, 0x1A, 0x4F, 0x22, 0xE8, 0x46, 0x87, 0x94, 0x57, 0xFF, 0xDD, 0x69, + 0x16, 0x43, 0x98, 0x00, 0x38, 0x89, 0xF7, 0x49, 0xB4, 0x4F, 0xAA, 0xA5, 0xCA, 0x1A, 0x67, 0x0D, + 0x0B, 0x1F, 0xFA, 0xD0, 0xF6, 0xC1, 0x19, 0x63, 0x0C, 0xCD, 0x53, 0xB2, 0xD6, 0xD4, 0xA5, 0xAA, + 0xF9, 0x3E, 0xBC, 0x3A, 0x19, 0xA3, 0x13, 0xF5, 0x34, 0x3E, 0x12, 0x4B, 0x41, 0xB5, 0x42, 0x2D, + 0x35, 0x4E, 0x73, 0x09, 0x7E, 0x09, 0x90, 0xCD, 0x26, 0xB5, 0xA6, 0xE8, 0x6F, 0x0F, 0x9E, 0x73, + 0x6B, 0x78, 0xC4, 0x52, 0x8C, 0xA7, 0x7A, 0xA7, 0x28, 0x35, 0xCC, 0x35, 0x21, 0x05, 0x76, 0x11, + 0x20, 0x51, 0x99, 0x9E, 0x63, 0xB2, 0x68, 0xBE, 0x35, 0xC2, 0x51, 0xC1, 0x09, 0x40, 0x21, 0xF1, + 0x82, 0x02, 0x92, 0x54, 0x1A, 0x90, 0x08, 0x0D, 0x62, 0x2E, 0x13, 0x40, 0x68, 0xC8, 0x58, 0x22, + 0x01, 0x41, 0x81, 0x90, 0xD2, 0xB3, 0x67, 0x3F, 0xF6, 0x7D, 0xF8, 0xF8, 0xD3, 0x27, 0xF3, 0xF9, + 0x7C, 0xF4, 0x8E, 0x00, 0x98, 0xB9, 0xA4, 0x2D, 0x91, 0x90, 0x0C, 0x38, 0xD1, 0x12, 0x39, 0xAB, + 0x79, 0xF6, 0xB6, 0xAE, 0x91, 0x13, 0xF7, 0x3E, 0x32, 0x8B, 0xB5, 0x34, 0x99, 0xDC, 0xD1, 0x62, + 0x27, 0x6E, 0xDA, 0x3C, 0x83, 0x59, 0x92, 0xB2, 0x37, 0x8E, 0x0C, 0x39, 0xEB, 0xBE, 0xFF, 0xE1, + 0xC5, 0xCB, 0xD7, 0xD7, 0x48, 0xA6, 0x6F, 0xFB, 0x18, 0x93, 0x73, 0x36, 0x25, 0xAE, 0x9C, 0xED, + 0x7C, 0xDA, 0xEC, 0xB6, 0x93, 0xA6, 0xB6, 0xD6, 0x79, 0x1F, 0x9C, 0x33, 0xC1, 0x87, 0xDE, 0xFB, + 0xD5, 0x66, 0x0B, 0x40, 0xF3, 0xD9, 0x4C, 0x40, 0xE6, 0xF3, 0xE9, 0x72, 0x31, 0x5F, 0xAD, 0xB7, + 0xBF, 0xFB, 0xF2, 0x9B, 0x98, 0xF8, 0xF2, 0xF2, 0xFC, 0xE3, 0x27, 0x8F, 0x1F, 0x3F, 0xBA, 0x5C, + 0x6F, 0xB6, 0xBB, 0x7D, 0x8B, 0x88, 0xB3, 0xF9, 0x74, 0x3E, 0x9B, 0xF6, 0x3E, 0x20, 0x61, 0xDF, + 0xFB, 0xC4, 0x6C, 0xC8, 0x70, 0x62, 0x35, 0x21, 0x53, 0x4C, 0x08, 0x18, 0x85, 0x05, 0x18, 0x05, + 0x53, 0x4A, 0x56, 0x1D, 0x11, 0x84, 0x22, 0xD2, 0x87, 0xF0, 0xFE, 0x66, 0xFB, 0x8F, 0xBF, 0xFD, + 0x21, 0xC5, 0xF0, 0x57, 0xBF, 0x7C, 0x7A, 0x7E, 0x56, 0x8F, 0x96, 0x53, 0x81, 0x16, 0xDA, 0x44, + 0x23, 0x44, 0x11, 0x4E, 0xCC, 0x84, 0xD4, 0xF5, 0xDE, 0x5A, 0xE3, 0x9C, 0xE3, 0xC4, 0xBD, 0x0F, + 0x87, 0xD6, 0x73, 0xA9, 0xD5, 0x25, 0xCC, 0x35, 0xC2, 0x27, 0x82, 0x37, 0x5E, 0x90, 0x2A, 0x3C, + 0x3C, 0x50, 0xA1, 0x66, 0x34, 0x7B, 0xDC, 0xF3, 0x86, 0x55, 0x77, 0xBA, 0xCA, 0xF2, 0x61, 0x1A, + 0x56, 0x1E, 0xBB, 0x55, 0x8F, 0x67, 0xC1, 0xDD, 0x8F, 0x73, 0x16, 0xA1, 0xF8, 0x6A, 0x75, 0x55, + 0x1B, 0x04, 0x80, 0x2F, 0xBF, 0x7D, 0x79, 0xB3, 0x6A, 0xDB, 0xBE, 0x5F, 0x6D, 0x0E, 0x80, 0xF4, + 0x93, 0xA7, 0x1F, 0x1F, 0xDA, 0xFE, 0x66, 0xB5, 0x0D, 0x21, 0x5E, 0xDF, 0xAE, 0x99, 0xF9, 0xA3, + 0xC7, 0x0F, 0xDE, 0xBC, 0x5F, 0x6D, 0xF7, 0xDD, 0xDF, 0xFF, 0xFB, 0x5F, 0x2F, 0xE7, 0x93, 0xCE, + 0x87, 0x21, 0x62, 0x2B, 0x47, 0x37, 0xCB, 0x1D, 0x1D, 0x5D, 0xB4, 0xCA, 0xB0, 0xB0, 0x33, 0x92, + 0x3D, 0x79, 0xB6, 0xA1, 0x1D, 0x2F, 0xDE, 0xF5, 0xF4, 0x8F, 0x81, 0xD8, 0x78, 0x15, 0x9C, 0x8C, + 0x43, 0xE6, 0xD7, 0x92, 0x3C, 0x72, 0x32, 0xEA, 0x5A, 0x87, 0x23, 0x93, 0x73, 0xBC, 0x55, 0x8C, + 0xAF, 0x7C, 0xB2, 0x79, 0xD8, 0x90, 0x09, 0x1B, 0x86, 0xE7, 0xD6, 0x9D, 0x2A, 0x3F, 0xBD, 0x20, + 0xA4, 0xE1, 0xB5, 0x8E, 0x1F, 0x61, 0x86, 0xA3, 0x49, 0xAD, 0x8E, 0xEE, 0x61, 0x28, 0x04, 0x28, + 0x1B, 0xF0, 0x23, 0xAD, 0x89, 0xA0, 0xC6, 0xA4, 0xDA, 0x86, 0x84, 0xCC, 0x2A, 0x9D, 0x00, 0x91, + 0x25, 0x24, 0x0E, 0x51, 0x0B, 0x75, 0x80, 0x41, 0x08, 0x31, 0x59, 0xC1, 0x7D, 0x1F, 0x63, 0x9A, + 0xD4, 0xAE, 0x72, 0x06, 0x06, 0x1B, 0xF5, 0x2E, 0x7C, 0x18, 0xDE, 0xE7, 0x83, 0x00, 0x6D, 0xF8, + 0x5E, 0xE9, 0xF7, 0x62, 0x8C, 0x1A, 0xFA, 0x4B, 0x89, 0x99, 0x93, 0xB5, 0x77, 0xB2, 0x34, 0xAC, + 0xB5, 0x8B, 0x85, 0x99, 0xCF, 0x27, 0x6D, 0xE7, 0xA7, 0x13, 0xB7, 0xDD, 0xFB, 0x5D, 0xEB, 0x7D, + 0xE4, 0xC1, 0x95, 0x0F, 0x05, 0x34, 0xE5, 0xC9, 0x90, 0xC1, 0x57, 0x01, 0x04, 0x88, 0x28, 0xA5, + 0x88, 0x1D, 0x0C, 0x91, 0x35, 0xA8, 0xAF, 0x6E, 0x0D, 0x55, 0x36, 0xBB, 0xAA, 0x62, 0xCA, 0x9A, + 0x74, 0xAC, 0x75, 0x8B, 0x70, 0x80, 0x32, 0x89, 0xE8, 0xC5, 0x59, 0xC4, 0x22, 0x19, 0x63, 0x12, + 0x0B, 0x20, 0x54, 0x95, 0xBB, 0xBE, 0xBA, 0x3E, 0x6C, 0x77, 0xEB, 0xED, 0x21, 0x89, 0xFC, 0xF2, + 0x57, 0x3F, 0xDF, 0x6E, 0x77, 0x17, 0x67, 0x4B, 0x63, 0x0D, 0x40, 0xD4, 0x8D, 0xDA, 0x19, 0xB2, + 0x56, 0x17, 0x55, 0xBE, 0x74, 0xD7, 0xB6, 0x29, 0xD2, 0x6C, 0x3A, 0x51, 0x72, 0x37, 0x11, 0xEE, + 0x43, 0xB4, 0x96, 0x66, 0xD3, 0x86, 0xC8, 0x9C, 0x6E, 0x9E, 0xA5, 0x3E, 0xBC, 0x98, 0xA0, 0x20, + 0x7C, 0xFC, 0x2B, 0x11, 0xEE, 0x76, 0x87, 0xDF, 0xFF, 0xE1, 0xFB, 0xEB, 0xDB, 0xDD, 0x6C, 0x3A, + 0xD1, 0xBA, 0x4B, 0x16, 0xD6, 0xCE, 0xE7, 0x21, 0x26, 0x22, 0x42, 0x81, 0xAB, 0xEB, 0x55, 0xDF, + 0xF7, 0x9F, 0x7C, 0xF2, 0x04, 0x40, 0x92, 0xC8, 0x6C, 0x36, 0xB3, 0xCE, 0xBD, 0x7A, 0xFD, 0x3E, + 0x4D, 0xB8, 0x99, 0xD4, 0x67, 0x67, 0x8B, 0x17, 0x2F, 0xDE, 0x3C, 0x7B, 0xFE, 0xEA, 0xFA, 0x66, + 0x6D, 0x8C, 0x79, 0xF4, 0xF0, 0x72, 0xB1, 0x98, 0x11, 0xE1, 0xFB, 0xAB, 0xDB, 0xC3, 0xBE, 0x25, + 0xA2, 0xF6, 0xD0, 0x01, 0x82, 0x30, 0xB4, 0xB7, 0x9B, 0xDD, 0xA1, 0x15, 0x01, 0x32, 0xE4, 0xFB, + 0x58, 0xD5, 0x4E, 0xD9, 0x96, 0x35, 0xD0, 0x00, 0x05, 0xB1, 0x86, 0x98, 0x88, 0xC0, 0x91, 0xB1, + 0xD6, 0x26, 0xEF, 0xB7, 0xDB, 0xC3, 0x8B, 0xD7, 0xD7, 0x57, 0x37, 0xAB, 0x47, 0x0F, 0x96, 0x0F, + 0x2E, 0x17, 0x7D, 0x9F, 0x06, 0x8B, 0x40, 0x04, 0x83, 0x0F, 0x0A, 0xCC, 0x43, 0xD0, 0xC2, 0x01, + 0x06, 0xC4, 0x18, 0x92, 0xB1, 0xC9, 0x87, 0x94, 0x62, 0xEA, 0x7D, 0x88, 0x29, 0x96, 0xE4, 0xE1, + 0x3B, 0xEE, 0x8B, 0xC1, 0x87, 0x7D, 0xA2, 0x8C, 0x86, 0x2D, 0xB0, 0x08, 0xFE, 0x9D, 0x0D, 0x75, + 0x2C, 0xAE, 0x27, 0x27, 0x96, 0x9F, 0xB3, 0x5F, 0x00, 0x4E, 0xE1, 0xFE, 0xDD, 0xDD, 0x1A, 0x60, + 0xD2, 0xD4, 0xFF, 0xF5, 0x9F, 0x7E, 0xF7, 0xC9, 0x47, 0x8F, 0xBE, 0x78, 0xFA, 0x71, 0xEF, 0x03, + 0x11, 0x01, 0x4A, 0xE5, 0xEC, 0x7E, 0xDF, 0x7D, 0xF7, 0xFC, 0xDD, 0xED, 0x7A, 0x57, 0xD7, 0x75, + 0x5D, 0x57, 0x29, 0x25, 0x43, 0x34, 0x9F, 0x4D, 0xDE, 0x5D, 0xAD, 0x66, 0xB3, 0x69, 0xD7, 0xFB, + 0x37, 0x6F, 0xAF, 0x5E, 0xBC, 0x78, 0xF3, 0xF8, 0xF1, 0x83, 0xDF, 0x7C, 0xF5, 0xEC, 0xDD, 0xD5, + 0xED, 0xFF, 0xF4, 0x1F, 0xFE, 0xCD, 0xE3, 0x07, 0xCB, 0xA4, 0xB5, 0x56, 0x38, 0x00, 0x21, 0x1C, + 0x23, 0xB2, 0xD1, 0xAD, 0x71, 0x50, 0x65, 0xE3, 0xEF, 0xC7, 0x2F, 0x28, 0x23, 0x07, 0xFF, 0x78, + 0xC4, 0x86, 0x53, 0xEE, 0xA7, 0x98, 0xDD, 0x7D, 0xCF, 0x21, 0x12, 0x7A, 0x67, 0x70, 0x4E, 0xD4, + 0xD6, 0xF8, 0xCA, 0xF7, 0x1E, 0x32, 0x7F, 0xAC, 0x52, 0x51, 0x8F, 0xBC, 0x39, 0x38, 0x3E, 0x26, + 0xE3, 0xBD, 0xD1, 0x55, 0x8E, 0x1B, 0x42, 0x41, 0xD6, 0xC3, 0xBA, 0xC6, 0x72, 0x57, 0x02, 0x64, + 0x06, 0x2C, 0xBA, 0x0C, 0x72, 0xC3, 0x2D, 0x60, 0x10, 0x64, 0xE8, 0x7C, 0x74, 0x96, 0xAC, 0x21, + 0x46, 0xE5, 0xC2, 0x96, 0x24, 0x1C, 0xA2, 0x10, 0x81, 0x23, 0xB2, 0x96, 0x9A, 0xCA, 0xCE, 0x9A, + 0xCA, 0x18, 0x74, 0xD6, 0xD4, 0x5A, 0x20, 0x43, 0xE6, 0x3E, 0x1C, 0x1B, 0x36, 0x81, 0x61, 0x5B, + 0xF8, 0x53, 0xA2, 0xA0, 0x9F, 0x82, 0xB0, 0x72, 0x2D, 0xD7, 0x7D, 0x7A, 0x13, 0xBD, 0xC8, 0x6C, + 0x5A, 0xFF, 0xB4, 0x79, 0xD8, 0xF5, 0xFE, 0xFD, 0xED, 0xEE, 0xDD, 0xCD, 0xAE, 0xF3, 0xB1, 0x64, + 0x35, 0x2A, 0x28, 0x2F, 0x2E, 0x18, 0x00, 0x55, 0xDF, 0x9A, 0x62, 0x9A, 0xED, 0x3B, 0x00, 0x40, + 0x34, 0x0A, 0x8E, 0x24, 0x27, 0xA0, 0x58, 0x4B, 0xCA, 0xA3, 0x1F, 0x53, 0x0A, 0x31, 0xA5, 0x84, + 0x6A, 0xA4, 0x8F, 0xDE, 0x08, 0x8B, 0x19, 0xAE, 0x44, 0xB3, 0xA0, 0xFD, 0xBD, 0x45, 0x32, 0xB2, + 0x7D, 0xF5, 0xF2, 0xCD, 0xBB, 0xB7, 0xEF, 0xAC, 0xB3, 0xD3, 0xE9, 0x74, 0xBF, 0x6F, 0x7F, 0xF3, + 0xAF, 0x5F, 0x75, 0x5D, 0xF7, 0xF0, 0xF2, 0xEC, 0xD0, 0x87, 0xCF, 0x3E, 0xFB, 0x64, 0x36, 0xAD, + 0xFB, 0x3E, 0x55, 0x8B, 0xA9, 0x12, 0xBB, 0x84, 0x10, 0x56, 0xB7, 0xEB, 0x94, 0x52, 0x8C, 0xC1, + 0x58, 0xB3, 0xB2, 0xF6, 0xE3, 0x27, 0x8F, 0x16, 0x8B, 0x29, 0xA2, 0x39, 0x5F, 0xCE, 0xD4, 0xA9, + 0x74, 0x67, 0x70, 0x06, 0x13, 0x02, 0x86, 0x95, 0x75, 0x94, 0x24, 0x11, 0x41, 0x84, 0x7F, 0xF9, + 0xED, 0x37, 0x6F, 0xDF, 0xAF, 0x0F, 0x6D, 0x67, 0xAD, 0x21, 0xC2, 0xCA, 0xB9, 0xA6, 0x76, 0xAF, + 0x5F, 0xBF, 0xBB, 0x5D, 0x6D, 0x97, 0xCB, 0x79, 0x5D, 0xD7, 0x6D, 0xD7, 0xBD, 0xBD, 0xBA, 0x7E, + 0xF8, 0xE0, 0xC1, 0xC5, 0xE5, 0x79, 0x5D, 0x57, 0xCB, 0xC5, 0x4C, 0x1D, 0xCC, 0xF3, 0xF9, 0x6C, + 0x79, 0xB6, 0x34, 0x44, 0x4D, 0x5D, 0x7F, 0xF5, 0xCD, 0xF7, 0x5F, 0x7D, 0xF5, 0x6D, 0x8C, 0xDC, + 0xD4, 0xF5, 0xD3, 0xA7, 0x9F, 0x54, 0x95, 0x43, 0x80, 0xC3, 0xA1, 0x5B, 0xAF, 0x77, 0x6D, 0xDB, + 0x91, 0x31, 0xDE, 0xEF, 0x8C, 0xB5, 0xCB, 0xE5, 0xE2, 0xFA, 0x76, 0xC5, 0xC2, 0xC0, 0xD8, 0x77, + 0x41, 0x9F, 0x64, 0x36, 0x9B, 0x8A, 0xEC, 0x11, 0x09, 0x7D, 0x00, 0x00, 0x1F, 0x82, 0x0A, 0xAA, + 0x96, 0x2A, 0xA6, 0x98, 0x38, 0xF1, 0xA1, 0x6D, 0x13, 0x73, 0xDF, 0x87, 0xAB, 0x9B, 0x2D, 0x02, + 0xA5, 0xC8, 0x1A, 0x1F, 0x11, 0x8D, 0x7E, 0xC6, 0x10, 0x63, 0x8A, 0x21, 0xC5, 0xC8, 0x31, 0xC6, + 0x98, 0x92, 0x6E, 0x22, 0x89, 0x19, 0x31, 0xC5, 0x18, 0x13, 0xB3, 0xA8, 0x5F, 0x64, 0xB4, 0xBD, + 0x15, 0x3D, 0x7E, 0x27, 0x36, 0x37, 0x96, 0xBA, 0xB1, 0xFC, 0x9C, 0x48, 0xD4, 0x87, 0x34, 0xD7, + 0x11, 0xA3, 0x1D, 0x45, 0x4A, 0x00, 0x0A, 0xFC, 0x1D, 0xBC, 0x57, 0x58, 0xB2, 0xAB, 0xD4, 0x74, + 0xE8, 0x7D, 0x78, 0x7F, 0xBD, 0x45, 0xAA, 0x1E, 0x3D, 0xBC, 0x5C, 0x4C, 0x9B, 0x90, 0x22, 0x11, + 0x75, 0x9D, 0xFF, 0x87, 0xFF, 0xF6, 0xB5, 0x20, 0x2D, 0x17, 0xB3, 0x17, 0xAF, 0xDF, 0xCF, 0xE7, + 0x33, 0x10, 0xF9, 0xCD, 0xEF, 0xBF, 0x25, 0x32, 0x6D, 0xD7, 0xBF, 0x7C, 0xFD, 0xAE, 0xAE, 0xAB, + 0x8F, 0x1E, 0x3F, 0xDC, 0x1F, 0xDA, 0xD7, 0x6F, 0xAE, 0x52, 0x4A, 0x97, 0x17, 0xCB, 0xFF, 0xFD, + 0x1F, 0x7E, 0xFB, 0xEF, 0xFE, 0xF6, 0x8B, 0xBF, 0xFC, 0xD9, 0x27, 0x9D, 0x0F, 0x5A, 0x62, 0x55, + 0xA8, 0xC0, 0xEE, 0x68, 0x07, 0xF9, 0x90, 0xFE, 0x1A, 0xBF, 0xCB, 0x18, 0x69, 0xC2, 0x3D, 0x35, + 0x37, 0x92, 0x1C, 0x1C, 0xBF, 0xF8, 0xC9, 0xA5, 0x44, 0x8E, 0x09, 0xCC, 0xCC, 0x77, 0xD6, 0xF5, + 0xF8, 0xAC, 0x61, 0x6D, 0x8E, 0xB7, 0x8D, 0xB1, 0x36, 0xD0, 0xBB, 0x58, 0x16, 0x31, 0x6A, 0x48, + 0x8E, 0x83, 0x9B, 0x7A, 0xC5, 0xF2, 0x34, 0x43, 0x66, 0xE8, 0xB1, 0x16, 0x17, 0x00, 0x00, 0x34, + 0x45, 0x40, 0x3D, 0x8B, 0x26, 0xDB, 0x60, 0x1A, 0x73, 0xCC, 0x49, 0xAD, 0x9A, 0xF2, 0x83, 0x85, + 0x50, 0xC0, 0x00, 0x12, 0xA1, 0x73, 0x34, 0xAD, 0x1D, 0x22, 0x6E, 0xF6, 0x3D, 0xC7, 0x44, 0x84, + 0x06, 0x8D, 0x1E, 0x50, 0x59, 0x22, 0xA4, 0xCA, 0x9A, 0xA6, 0xB6, 0x22, 0x42, 0x88, 0xD6, 0x8C, + 0x5A, 0x01, 0x94, 0xF7, 0x3F, 0x31, 0x85, 0xC6, 0x32, 0x74, 0x7F, 0xE0, 0x86, 0x6F, 0x86, 0x20, + 0xB4, 0x31, 0xA7, 0xD6, 0xC1, 0x78, 0x32, 0xF5, 0xE0, 0xAA, 0x72, 0x1F, 0x3F, 0x3A, 0x9B, 0x4D, + 0xEA, 0x9B, 0xF5, 0x7E, 0xBB, 0xEF, 0x22, 0xB3, 0x86, 0x19, 0x54, 0x92, 0x99, 0xC5, 0x10, 0xCE, + 0x9A, 0x6A, 0xD2, 0x38, 0x66, 0xD1, 0x45, 0x8B, 0x45, 0x36, 0x8D, 0x21, 0x6B, 0x48, 0x24, 0x87, + 0xAB, 0x63, 0x4C, 0x84, 0xA8, 0xEE, 0x2A, 0x72, 0x18, 0x89, 0x59, 0x72, 0x5A, 0x96, 0x08, 0x68, + 0xDA, 0x44, 0xA6, 0x2E, 0x29, 0x78, 0x48, 0x85, 0xCC, 0x39, 0xEB, 0x7D, 0xFF, 0xFB, 0x2F, 0xBF, + 0xBB, 0x7A, 0x7F, 0xB3, 0x5C, 0xCE, 0x91, 0x30, 0x24, 0x6E, 0x0F, 0x5D, 0xDB, 0xAE, 0xDB, 0xDE, + 0xAF, 0x56, 0x3B, 0x11, 0x79, 0xFB, 0xEE, 0xE6, 0xF2, 0xE2, 0x3C, 0xC6, 0x18, 0x63, 0x9C, 0xCF, + 0x26, 0xCA, 0x0D, 0x8D, 0x00, 0x55, 0x6D, 0x8D, 0xB1, 0xF3, 0xF9, 0x34, 0x58, 0xF9, 0xE3, 0x77, + 0x2F, 0xAD, 0x35, 0x4F, 0x3E, 0xBA, 0x9C, 0xCD, 0x14, 0x9D, 0x99, 0x18, 0xE3, 0x68, 0x94, 0x58, + 0xEB, 0x69, 0x46, 0x03, 0x98, 0xC7, 0x21, 0xA5, 0x54, 0x55, 0xEE, 0xE5, 0xAB, 0x77, 0x3F, 0x3C, + 0x7F, 0x7B, 0xF9, 0xE0, 0xE2, 0xE2, 0xF2, 0xDC, 0x1A, 0x72, 0xCE, 0x76, 0x9D, 0x37, 0x22, 0x9B, + 0xF5, 0xA6, 0x3D, 0xB4, 0xC6, 0xA0, 0x2A, 0x81, 0xE9, 0x74, 0x72, 0xBB, 0x5E, 0x3F, 0x74, 0x0F, + 0xA0, 0xEB, 0x6E, 0x57, 0x6B, 0x44, 0xBC, 0xBC, 0x38, 0x37, 0xD6, 0x24, 0x96, 0xD5, 0x7E, 0xD7, + 0xF7, 0x7E, 0xB7, 0x3B, 0x24, 0x96, 0xB3, 0xF3, 0xE5, 0xCF, 0x7F, 0xF6, 0xF9, 0x62, 0x31, 0x43, + 0xC0, 0xCD, 0x76, 0xFF, 0xEA, 0xCD, 0xFB, 0xDE, 0x87, 0xE5, 0xD9, 0xF2, 0xFD, 0xD5, 0x4D, 0x62, + 0xFE, 0xE5, 0x2F, 0x3E, 0xD9, 0xEF, 0x0F, 0xCB, 0xE5, 0xFC, 0xDD, 0xFB, 0x5B, 0x7D, 0x0A, 0x7D, + 0x1E, 0xDD, 0x4E, 0x8D, 0xA5, 0xC9, 0xB4, 0x49, 0x4A, 0x24, 0x99, 0x9D, 0xFD, 0xC4, 0x2C, 0x3E, + 0x46, 0x1F, 0xA2, 0x31, 0x74, 0xBE, 0x9C, 0xCF, 0x67, 0xD3, 0xB6, 0x8F, 0xBB, 0x5D, 0x8B, 0x88, + 0x31, 0x46, 0x44, 0x64, 0x6D, 0x9F, 0x91, 0x58, 0xE9, 0xCC, 0x52, 0xE2, 0xA8, 0x89, 0x14, 0x4A, + 0xF6, 0x59, 0x16, 0x8F, 0x48, 0xC9, 0x50, 0xBA, 0x6B, 0x3F, 0x8E, 0x97, 0xDF, 0xC9, 0x1A, 0xD6, + 0x9F, 0x87, 0x98, 0xDD, 0xC9, 0x89, 0x63, 0x85, 0x08, 0x77, 0x3F, 0xA3, 0x6F, 0x54, 0xB6, 0x4B, + 0x5F, 0xDD, 0xA3, 0xF5, 0xA2, 0x4A, 0x18, 0x7F, 0xF7, 0xCD, 0x8B, 0x9B, 0xF5, 0x16, 0x00, 0x96, + 0xCB, 0xE5, 0xC7, 0x8F, 0x2F, 0x7E, 0x7C, 0xF9, 0x86, 0x45, 0xFE, 0xF2, 0xE7, 0x4F, 0xA7, 0x93, + 0xFA, 0xB7, 0xCF, 0xDE, 0xDE, 0x6E, 0x3B, 0x22, 0x7C, 0xF5, 0xF6, 0xFA, 0xE2, 0x7C, 0x69, 0x8C, + 0xF9, 0xFE, 0xD9, 0x4B, 0xE7, 0x5C, 0x55, 0xB9, 0xC5, 0x6C, 0xFA, 0xD1, 0xE3, 0x87, 0x02, 0xD2, + 0xD4, 0x55, 0x55, 0xB9, 0x14, 0x13, 0x54, 0x8E, 0x08, 0x93, 0xC0, 0x37, 0x3F, 0xBC, 0xF9, 0xC5, + 0x17, 0x4F, 0x50, 0xB3, 0x20, 0xC7, 0x01, 0xC2, 0x61, 0x71, 0x1D, 0xC9, 0x3A, 0x4E, 0x15, 0x1C, + 0x22, 0x8E, 0xFB, 0x73, 0x0F, 0x0B, 0x6A, 0xAC, 0x6E, 0x4E, 0x14, 0xFD, 0x07, 0x50, 0xD8, 0xE8, + 0xAF, 0xE3, 0x18, 0xE5, 0x78, 0x48, 0x4F, 0xAE, 0x33, 0xDC, 0x7A, 0x7C, 0x97, 0x93, 0x27, 0xB7, + 0xC7, 0x11, 0x1D, 0x65, 0x35, 0x71, 0x29, 0x5F, 0x28, 0x40, 0x0D, 0xB3, 0xC1, 0x51, 0x1E, 0x58, + 0x04, 0x9C, 0xC5, 0x69, 0x65, 0x13, 0x8B, 0x56, 0x77, 0x6B, 0x01, 0x79, 0x62, 0x41, 0xCC, 0x8C, + 0x17, 0xAD, 0x0F, 0x00, 0x54, 0x57, 0x06, 0x01, 0xFA, 0x10, 0xA5, 0xD0, 0x43, 0x27, 0x2E, 0x84, + 0x49, 0x08, 0x95, 0x35, 0xCA, 0xF5, 0x6C, 0x0D, 0x29, 0x79, 0xEC, 0xB4, 0x71, 0x44, 0xC4, 0x2C, + 0xC6, 0x98, 0xF9, 0xA4, 0x72, 0xCE, 0xC4, 0x98, 0x0C, 0xB1, 0x86, 0x31, 0xB4, 0xFE, 0x4E, 0x33, + 0x15, 0x07, 0xDC, 0xAB, 0x2F, 0x56, 0x55, 0xB6, 0xAA, 0xAA, 0xE1, 0x55, 0x87, 0xEF, 0x4F, 0xA4, + 0x07, 0x8B, 0x5F, 0x63, 0x18, 0x91, 0xF1, 0x0E, 0x30, 0x1E, 0x65, 0x22, 0xBA, 0x3C, 0x9B, 0xCD, + 0x27, 0xD5, 0xBE, 0xF5, 0x37, 0xEB, 0x43, 0xEF, 0xC3, 0x6C, 0x52, 0xAB, 0xE3, 0x9C, 0x08, 0x17, + 0xB3, 0x66, 0x31, 0x6B, 0x84, 0xA5, 0xF3, 0x51, 0x75, 0x6E, 0xE4, 0x63, 0xA3, 0xC1, 0x98, 0x53, + 0x90, 0x8E, 0x4C, 0xEA, 0x89, 0x41, 0x44, 0xAB, 0x54, 0xB3, 0x72, 0x4F, 0x2C, 0x2C, 0x62, 0x8C, + 0x81, 0x04, 0xEA, 0xBA, 0xD3, 0x18, 0xA3, 0x35, 0x88, 0x84, 0x0C, 0xF0, 0xED, 0x77, 0xCF, 0xAF, + 0xDE, 0x5F, 0x1D, 0xDA, 0xDE, 0x56, 0xB5, 0xB6, 0xF9, 0xF0, 0xDE, 0x2B, 0xC4, 0x05, 0x91, 0x94, + 0x52, 0x55, 0x55, 0x5D, 0xE7, 0x5F, 0xBD, 0x7E, 0xDF, 0x4C, 0xEA, 0x94, 0x78, 0xB5, 0x39, 0x38, + 0x67, 0x09, 0xB1, 0xAA, 0x2B, 0x26, 0x49, 0x5D, 0xFF, 0xFA, 0xED, 0xCD, 0xA7, 0x1F, 0x3F, 0x9A, + 0x4C, 0x9A, 0xCD, 0x6E, 0xF7, 0xFE, 0x6A, 0x65, 0x08, 0x43, 0x0C, 0xFF, 0xE6, 0xEF, 0xFE, 0xF2, + 0xC9, 0xA3, 0x07, 0xB9, 0x94, 0x1C, 0x65, 0xF0, 0x82, 0x0D, 0xA2, 0x9C, 0x05, 0x9A, 0xC5, 0x59, + 0xF3, 0xFC, 0xC5, 0xEB, 0xFF, 0xF2, 0xDF, 0xBE, 0xBC, 0xB8, 0xB8, 0x70, 0xAE, 0x9A, 0x36, 0x8D, + 0x0F, 0xFE, 0xF6, 0x76, 0xE3, 0x7D, 0x88, 0xC1, 0xC7, 0xC4, 0xCD, 0xA4, 0x89, 0x29, 0xC5, 0xFD, + 0x81, 0x13, 0x5B, 0x67, 0x11, 0xE0, 0xF5, 0xAB, 0xB7, 0xD3, 0x69, 0x23, 0x00, 0x4D, 0x53, 0x6F, + 0x36, 0xBB, 0xCE, 0x07, 0xEB, 0x6C, 0x08, 0x69, 0xB7, 0xDB, 0xF7, 0xBD, 0xFF, 0xD5, 0x2F, 0xBF, + 0xF8, 0xE4, 0xE3, 0xC7, 0x2C, 0x50, 0x57, 0x2E, 0xC6, 0xB8, 0xDD, 0xF7, 0x87, 0xB6, 0x7B, 0x77, + 0x75, 0x13, 0x53, 0xEA, 0x7A, 0xFF, 0x93, 0xCF, 0x3F, 0x39, 0x5B, 0xCE, 0x9F, 0xFD, 0xF8, 0xFA, + 0x6C, 0xB9, 0x48, 0x49, 0x03, 0xAD, 0x99, 0x77, 0x30, 0x31, 0xCF, 0x66, 0xD3, 0xDD, 0xBE, 0xBD, + 0xBC, 0x3C, 0x7F, 0xFA, 0xE9, 0xE3, 0x7F, 0xFD, 0xED, 0x37, 0x7D, 0xBF, 0x77, 0xCE, 0xA4, 0xC4, + 0xDE, 0xA7, 0xAA, 0xB2, 0xCC, 0xC2, 0x1C, 0xDF, 0xBC, 0xBF, 0xB9, 0x3C, 0x5F, 0x3E, 0x7F, 0x79, + 0xFD, 0x77, 0xBF, 0xFE, 0xC9, 0x6C, 0x5A, 0x87, 0x14, 0x41, 0x84, 0x19, 0x62, 0x4A, 0x29, 0xA6, + 0x81, 0x25, 0xB8, 0xBC, 0x20, 0xE3, 0x5D, 0xEF, 0xC4, 0x20, 0x06, 0xE3, 0xD5, 0x72, 0xA2, 0xB6, + 0x4A, 0x8F, 0xEA, 0x23, 0xE2, 0x18, 0x21, 0xAC, 0x53, 0x49, 0xFB, 0xA0, 0x04, 0x8E, 0x7F, 0xE6, + 0x51, 0x69, 0x52, 0x81, 0x27, 0xB9, 0x18, 0xC0, 0x5A, 0xF3, 0xF5, 0xB7, 0x2F, 0xFF, 0xEF, 0x7F, + 0xFE, 0xDA, 0x55, 0x35, 0x73, 0x7A, 0xF2, 0xE8, 0xF2, 0x5F, 0x7E, 0xFF, 0xC3, 0xD5, 0xCD, 0x6A, + 0x3A, 0x99, 0x3C, 0xFD, 0xF4, 0xA3, 0xDD, 0xA1, 0x5F, 0xED, 0xFA, 0xCB, 0xF3, 0xE5, 0xBB, 0xAB, + 0xDB, 0xF3, 0xE5, 0xC2, 0x58, 0x32, 0xC6, 0xFC, 0xE2, 0x67, 0x3F, 0xD9, 0xED, 0xDB, 0x18, 0xE3, + 0xED, 0x6A, 0xFB, 0xF9, 0xE7, 0x1F, 0x1B, 0x63, 0xBE, 0xF9, 0xE3, 0x0F, 0x75, 0x5D, 0x7F, 0xF6, + 0xD9, 0x47, 0xD3, 0x49, 0xF3, 0xEE, 0xEA, 0xA6, 0xA9, 0x6B, 0xA2, 0x85, 0xB2, 0x9B, 0x1C, 0xA9, + 0xD6, 0x46, 0xF3, 0x5E, 0x1A, 0x80, 0x03, 0x80, 0x8C, 0x51, 0x92, 0x7E, 0x86, 0xB2, 0xE5, 0x61, + 0x0C, 0xC7, 0x6B, 0xED, 0x64, 0x05, 0x41, 0x09, 0x65, 0x0E, 0x38, 0xE3, 0x24, 0x66, 0x22, 0x85, + 0x71, 0x4C, 0xEE, 0x9E, 0x35, 0xDC, 0x6B, 0x7C, 0xF0, 0x89, 0x4E, 0x1C, 0x1C, 0x76, 0x03, 0x58, + 0x33, 0xFF, 0xF3, 0xFF, 0xF2, 0xBF, 0xEA, 0xE3, 0x19, 0x44, 0xCA, 0x85, 0x0C, 0xC7, 0x6C, 0xF5, + 0x5C, 0xCC, 0x5C, 0x7E, 0x85, 0x6C, 0x6C, 0xA2, 0x7A, 0x7F, 0xAC, 0xA1, 0x87, 0x67, 0xB3, 0xBA, + 0xB2, 0x21, 0xB1, 0xD1, 0x30, 0xBF, 0x88, 0xB5, 0x64, 0x48, 0xE9, 0x5C, 0xA4, 0xAA, 0x8C, 0x33, + 0x86, 0x25, 0x37, 0x5E, 0xD3, 0x0E, 0x6F, 0x89, 0x25, 0xC4, 0x24, 0xCC, 0xD6, 0x98, 0xE5, 0xB4, + 0xBE, 0x3C, 0x9B, 0x5C, 0x2E, 0xA7, 0xCE, 0xE5, 0x4E, 0x88, 0x7D, 0x4C, 0xFB, 0xD6, 0x13, 0xE2, + 0x7C, 0x52, 0x19, 0x63, 0xBA, 0x3E, 0xB4, 0xBD, 0xEF, 0xFA, 0xA0, 0xFF, 0xF7, 0xF1, 0x98, 0x5C, + 0xAD, 0xD9, 0x80, 0xEA, 0x36, 0x41, 0xD4, 0xD4, 0xA7, 0x21, 0xB8, 0x4E, 0x27, 0xE3, 0x3B, 0x1E, + 0x88, 0x41, 0x46, 0x35, 0xBE, 0x3E, 0x4C, 0xC9, 0xFD, 0x52, 0x01, 0x2E, 0xD3, 0x6A, 0x88, 0xCE, + 0x16, 0x93, 0xF9, 0xB4, 0x9E, 0x4F, 0xEB, 0xF3, 0xE5, 0xF4, 0x62, 0x39, 0x9B, 0x4D, 0x6B, 0xCC, + 0x2D, 0xC6, 0x40, 0xC9, 0xB8, 0xEB, 0xCA, 0x4E, 0x9A, 0xCA, 0x39, 0x6B, 0x8C, 0x76, 0x40, 0xC4, + 0xCA, 0x59, 0x25, 0xC6, 0x51, 0x52, 0xE9, 0x18, 0xB3, 0x7B, 0x8C, 0x75, 0x38, 0x58, 0xC8, 0x9A, + 0x9B, 0x9B, 0x95, 0xB5, 0x66, 0x3A, 0x9D, 0x18, 0x63, 0x08, 0xD1, 0x39, 0x4B, 0x48, 0x5D, 0x17, + 0x5E, 0xBC, 0x7C, 0xF3, 0xDD, 0xB7, 0x3F, 0x26, 0xE6, 0x66, 0xD2, 0x84, 0x10, 0xFB, 0x10, 0xBA, + 0xCE, 0x6F, 0xB6, 0x3B, 0x91, 0x21, 0xC1, 0x9D, 0x03, 0x73, 0x4A, 0x6C, 0xAC, 0x89, 0x21, 0x97, + 0x25, 0xC5, 0xC4, 0x5D, 0xEF, 0xEB, 0xBA, 0xEE, 0xDA, 0xFE, 0xD0, 0xF6, 0x57, 0x37, 0x2B, 0x8D, + 0x0C, 0xBE, 0x7C, 0xFD, 0x9E, 0x99, 0x9F, 0x3C, 0x79, 0xBC, 0xDE, 0x1C, 0xAE, 0x6F, 0xD6, 0xEF, + 0xAF, 0x56, 0x00, 0x7C, 0xBE, 0x9C, 0xF9, 0xDE, 0xF3, 0x40, 0x06, 0x30, 0xDA, 0x84, 0x59, 0xB9, + 0x95, 0x08, 0x7F, 0xF3, 0xE5, 0xB7, 0x5D, 0xEB, 0xA3, 0x36, 0x4A, 0x44, 0x7C, 0xFD, 0xEA, 0xED, + 0xED, 0x6A, 0x93, 0x24, 0xC5, 0xC8, 0x64, 0x08, 0x80, 0x40, 0xE0, 0x70, 0xE8, 0x0E, 0x6D, 0x17, + 0x42, 0x8C, 0x31, 0x71, 0x76, 0xD3, 0x4C, 0xA7, 0x4D, 0x9D, 0x62, 0xDA, 0xED, 0xDB, 0xEB, 0x9B, + 0xD5, 0xF5, 0xF5, 0x6D, 0xDB, 0x76, 0x4F, 0x3E, 0x7A, 0xF4, 0xF0, 0xE1, 0xC5, 0xF5, 0xED, 0x3A, + 0x84, 0x68, 0xAD, 0xB9, 0xB9, 0xDD, 0xDC, 0xDC, 0xAE, 0x9A, 0xA6, 0xFE, 0xE1, 0xF9, 0x2B, 0x66, + 0xAE, 0xEB, 0x1A, 0x00, 0xDF, 0x5F, 0xAD, 0x6E, 0x6F, 0xB7, 0xFB, 0xC3, 0x21, 0x26, 0x26, 0xC2, + 0xB3, 0xB3, 0xB9, 0x12, 0xD8, 0x2E, 0x97, 0x73, 0x55, 0xB7, 0x3F, 0x7D, 0xFA, 0x09, 0x80, 0xAC, + 0x37, 0x7B, 0x55, 0x4B, 0x25, 0xA1, 0x0C, 0x7D, 0x48, 0xD6, 0x98, 0x18, 0xE3, 0x62, 0x31, 0x7F, + 0xFB, 0xEE, 0xFA, 0xF3, 0x4F, 0x1F, 0x2E, 0x17, 0x13, 0xED, 0x95, 0xC5, 0xCC, 0x51, 0x9B, 0xA6, + 0x8C, 0xDE, 0x6E, 0x10, 0x12, 0xD1, 0xCC, 0xCB, 0xBB, 0x12, 0x72, 0x02, 0xF0, 0xCB, 0x42, 0xD0, + 0xB8, 0xEC, 0xE9, 0x9F, 0x4E, 0xD6, 0xF3, 0xFD, 0x85, 0x3D, 0x5E, 0xFC, 0x7F, 0x06, 0xA3, 0xA1, + 0x2E, 0x3D, 0x02, 0x44, 0xB4, 0xC6, 0x3C, 0x7B, 0xF5, 0xFE, 0x87, 0x57, 0xB7, 0x49, 0x60, 0x52, + 0xBB, 0x5F, 0xFE, 0xEC, 0xA9, 0x31, 0xE6, 0x66, 0xB5, 0x79, 0xF2, 0xE8, 0x61, 0xEF, 0xE3, 0xBB, + 0xAB, 0xD5, 0xFB, 0x9B, 0xDD, 0xD7, 0xDF, 0xBD, 0x52, 0x38, 0x3C, 0x99, 0xD4, 0x86, 0x28, 0xC6, + 0x34, 0x99, 0x34, 0xBB, 0xDD, 0xE1, 0xD5, 0x9B, 0xF7, 0xBB, 0xDD, 0x7E, 0xB1, 0x98, 0x09, 0xC3, + 0xA3, 0x87, 0x97, 0x31, 0xC6, 0xC3, 0xA1, 0x9B, 0xCF, 0xA7, 0xDA, 0x19, 0x63, 0xDF, 0x76, 0xE7, + 0x8B, 0xD9, 0xE5, 0xF9, 0x7C, 0x40, 0xE5, 0x30, 0x54, 0x37, 0x8C, 0x3E, 0xE3, 0xDF, 0xC6, 0x0B, + 0xE7, 0xFE, 0xB0, 0x9C, 0x94, 0x33, 0x0F, 0xA3, 0x37, 0x04, 0xD3, 0x60, 0x04, 0x57, 0x45, 0xD3, + 0x1A, 0xB2, 0x12, 0xCF, 0xFE, 0x98, 0xF1, 0xC8, 0xDC, 0x1F, 0xF3, 0x93, 0x71, 0x96, 0x51, 0x10, + 0x79, 0x30, 0x36, 0x89, 0xC8, 0xFC, 0xC7, 0xFF, 0xF4, 0x9F, 0x09, 0xC1, 0x64, 0x1E, 0x6D, 0x50, + 0x65, 0x66, 0x10, 0xB5, 0xF2, 0x61, 0x5C, 0x8C, 0x3A, 0x7A, 0x33, 0x20, 0x44, 0x10, 0x70, 0x96, + 0x08, 0xF1, 0x76, 0xD7, 0xB5, 0x7D, 0xE4, 0x9C, 0xBF, 0x04, 0x00, 0x90, 0x58, 0x34, 0xE5, 0x27, + 0x97, 0xBC, 0x8A, 0x4C, 0xEA, 0xAA, 0xA9, 0x2C, 0x02, 0x52, 0x6E, 0x62, 0x42, 0x80, 0x60, 0x8D, + 0xB6, 0x47, 0x4C, 0x21, 0x26, 0x1F, 0xE2, 0xBE, 0xF5, 0xEF, 0xD7, 0x87, 0xD5, 0xAE, 0x8F, 0x89, + 0x0F, 0x9D, 0xEF, 0x7C, 0x3C, 0xB4, 0x7E, 0xDF, 0xF5, 0xDB, 0x7D, 0x7F, 0xBB, 0xEB, 0xDA, 0x3E, + 0xE8, 0xD3, 0x57, 0xCE, 0x3A, 0x67, 0x88, 0xC0, 0x59, 0xE3, 0x9C, 0x25, 0x42, 0x53, 0x3A, 0x6C, + 0x0E, 0x21, 0xA7, 0xFB, 0x82, 0x32, 0x16, 0x97, 0x61, 0x5C, 0x78, 0x04, 0xAD, 0x07, 0x14, 0x96, + 0xB7, 0xCA, 0x23, 0xED, 0x91, 0x00, 0xE0, 0x44, 0x59, 0x58, 0x9D, 0x51, 0x9D, 0x65, 0xAC, 0xC6, + 0x1F, 0x80, 0x08, 0xAC, 0xB5, 0xBA, 0x96, 0x86, 0x48, 0x28, 0x11, 0x18, 0x43, 0x95, 0x33, 0x75, + 0x65, 0xB5, 0x39, 0x9B, 0x1A, 0x9B, 0xB9, 0xCA, 0xC7, 0x90, 0x52, 0x59, 0xB8, 0xBA, 0x7A, 0xF1, + 0xE3, 0xAB, 0x2F, 0x7F, 0xFB, 0xF5, 0x66, 0x7B, 0xF0, 0x3E, 0xC4, 0x10, 0x8D, 0x35, 0xEB, 0xF5, + 0xEE, 0xEB, 0x3F, 0x3E, 0xFB, 0xC3, 0x1F, 0x9F, 0xC5, 0x10, 0xCF, 0xCE, 0x97, 0x29, 0xC6, 0xDE, + 0x87, 0xAE, 0xF3, 0xDE, 0x87, 0xD5, 0x66, 0xD7, 0xF9, 0x18, 0x63, 0x22, 0x22, 0x2D, 0xF3, 0x64, + 0x01, 0xEF, 0x43, 0xD7, 0xFB, 0xDE, 0x7B, 0x22, 0x33, 0x9D, 0x4E, 0x67, 0xD3, 0x86, 0x0C, 0x75, + 0x9D, 0x47, 0x44, 0x63, 0xAC, 0x80, 0x5C, 0x5D, 0xDF, 0xB6, 0x87, 0x3E, 0xC6, 0xB4, 0xDE, 0xEE, + 0x13, 0xC3, 0xA3, 0x87, 0x17, 0x64, 0xEC, 0xFE, 0xD0, 0xBD, 0x79, 0x77, 0xDB, 0xFB, 0xFE, 0xC1, + 0xC5, 0x52, 0x05, 0x5A, 0xEE, 0x7C, 0xC0, 0x59, 0x1B, 0x63, 0x7C, 0xF6, 0xE2, 0xDD, 0xCD, 0xCD, + 0xA6, 0xEF, 0xDA, 0xAA, 0xAA, 0xB4, 0xB9, 0x72, 0xF0, 0xE1, 0xD0, 0x1E, 0x9A, 0xA6, 0x51, 0xD4, + 0x5C, 0x55, 0xCE, 0xFB, 0x28, 0x88, 0x75, 0x55, 0xB5, 0xBD, 0x37, 0x64, 0x42, 0x8C, 0x31, 0x25, + 0x41, 0x60, 0x91, 0x18, 0xC2, 0x6A, 0xB5, 0xB9, 0xBA, 0xBE, 0xD5, 0xD8, 0x59, 0x55, 0xB9, 0xED, + 0x6E, 0x7F, 0x71, 0x7E, 0x46, 0x86, 0x0E, 0x87, 0xAE, 0xAE, 0xAB, 0xA7, 0x9F, 0x3D, 0xF9, 0xF2, + 0xF7, 0xDF, 0xAD, 0xD7, 0x3B, 0x11, 0xF0, 0xBD, 0x0F, 0x31, 0x74, 0xBD, 0x8F, 0x31, 0x09, 0xF3, + 0x74, 0x52, 0x6B, 0x32, 0x5D, 0xD0, 0x14, 0x7B, 0x16, 0x6B, 0xED, 0xA7, 0x9F, 0x7C, 0xF4, 0xE8, + 0xC1, 0xC5, 0xF5, 0xF5, 0xAA, 0xEB, 0xFB, 0x8F, 0x9F, 0x3C, 0x3A, 0x5B, 0xCC, 0x0E, 0x6D, 0x1B, + 0x42, 0x14, 0x81, 0x14, 0x79, 0x3A, 0x9B, 0xFC, 0xCD, 0x5F, 0xFD, 0x6C, 0xBB, 0xDD, 0xBD, 0x7E, + 0x7B, 0x6D, 0x8C, 0xF9, 0xF9, 0x4F, 0x3F, 0xF5, 0x21, 0x4A, 0xC9, 0xCB, 0x2F, 0x6B, 0x36, 0x3B, + 0x4C, 0x86, 0x89, 0x06, 0x38, 0x5D, 0x45, 0xC3, 0x67, 0x58, 0x27, 0xC3, 0xB2, 0xC1, 0x63, 0xF6, + 0x03, 0x0E, 0xEA, 0x69, 0x40, 0x1C, 0x27, 0x9B, 0xE5, 0x07, 0xC5, 0x0F, 0xFE, 0xB4, 0x96, 0x44, + 0x44, 0x32, 0x88, 0x80, 0x95, 0x75, 0xDE, 0xFB, 0xFF, 0xF2, 0x8F, 0x5F, 0x5F, 0xDD, 0xEE, 0x36, + 0xEB, 0x7D, 0x88, 0xE1, 0xD0, 0x76, 0xC6, 0x98, 0xDB, 0xF5, 0xBE, 0xED, 0xBA, 0xD5, 0x7A, 0xF7, + 0xFA, 0xDD, 0xED, 0xBE, 0xF5, 0x7D, 0xEF, 0x57, 0xEB, 0x5D, 0x5D, 0x57, 0x67, 0xCB, 0x45, 0xEF, + 0x63, 0xEF, 0xC3, 0x62, 0x3E, 0x59, 0x6F, 0xF6, 0xDB, 0xED, 0x41, 0x04, 0x66, 0xB3, 0x29, 0x0B, + 0x37, 0xB5, 0xBB, 0x38, 0x5F, 0xBE, 0x7D, 0x77, 0xF5, 0xEE, 0xFD, 0x8D, 0x0F, 0xD1, 0x5A, 0xEB, + 0x7D, 0x40, 0x84, 0x2F, 0x3E, 0x7B, 0x94, 0x52, 0xD9, 0xBA, 0x4A, 0x58, 0x0F, 0x4A, 0xFE, 0xC1, + 0xA8, 0xEE, 0xE1, 0x54, 0xF3, 0x0E, 0x20, 0x6E, 0x50, 0x61, 0xE3, 0x71, 0x18, 0xDE, 0xF4, 0xB8, + 0x12, 0x06, 0x16, 0xC6, 0xA2, 0xC8, 0x10, 0x4B, 0x64, 0x1D, 0x20, 0x27, 0x02, 0xDC, 0x1D, 0xF9, + 0xFB, 0xF7, 0x1D, 0x96, 0xE4, 0xE0, 0xA3, 0xBC, 0x7F, 0x98, 0x35, 0x94, 0x95, 0x55, 0xCE, 0x0D, + 0x47, 0x44, 0xCC, 0xF6, 0xF3, 0x78, 0x0E, 0x04, 0x8E, 0x31, 0x3B, 0xD0, 0xC4, 0x0B, 0x94, 0x3E, + 0xA4, 0x98, 0xBA, 0x3E, 0x26, 0xBD, 0x02, 0xB3, 0xD6, 0x5A, 0x43, 0x64, 0xEE, 0xA3, 0x54, 0xC6, + 0x98, 0x8A, 0x9A, 0xDA, 0xD1, 0xC0, 0xCF, 0x27, 0xD1, 0xC7, 0x18, 0x52, 0x02, 0x44, 0x6B, 0xB0, + 0xF3, 0x31, 0x26, 0x26, 0xC4, 0x69, 0xC3, 0x02, 0xD0, 0xF9, 0xA8, 0x6C, 0x10, 0x2A, 0x3A, 0x0A, + 0xC1, 0x58, 0x40, 0xE9, 0xED, 0x75, 0x8C, 0x89, 0xC8, 0x18, 0x1F, 0x93, 0xA9, 0x2B, 0xAB, 0x55, + 0x2C, 0x44, 0xC8, 0x89, 0xBD, 0x4F, 0x54, 0x98, 0x57, 0xE1, 0x43, 0xA1, 0xE2, 0xF1, 0xCB, 0xDF, + 0x8F, 0xB3, 0x1C, 0x5F, 0x53, 0x01, 0xB6, 0xFA, 0x90, 0x55, 0xD3, 0x1B, 0x53, 0xD7, 0x38, 0x44, + 0x3C, 0x46, 0xF3, 0x07, 0x44, 0x06, 0x60, 0xE8, 0x4D, 0x77, 0xBC, 0x8E, 0x96, 0x52, 0x95, 0x7D, + 0x43, 0x1A, 0x22, 0xAD, 0x44, 0x9F, 0x4C, 0x2A, 0x61, 0x49, 0xCC, 0x90, 0xD8, 0x54, 0xEE, 0xEA, + 0xFA, 0xF6, 0x87, 0xEF, 0x9F, 0xD7, 0x75, 0x9D, 0x62, 0x7C, 0xF3, 0xE6, 0x5D, 0x55, 0xD5, 0xC6, + 0xD0, 0xBB, 0x77, 0xD7, 0xAE, 0xAE, 0x41, 0x24, 0x86, 0x18, 0x6C, 0x38, 0xB4, 0x5D, 0xD7, 0xF7, + 0xBB, 0x7D, 0x67, 0x8D, 0x25, 0x63, 0xA6, 0x4D, 0xB3, 0x5C, 0xCC, 0x43, 0xF0, 0x5D, 0x1F, 0x18, + 0x92, 0x24, 0x59, 0x2C, 0x16, 0x3E, 0x44, 0xEF, 0x3D, 0x00, 0xEC, 0x0F, 0x87, 0xBA, 0x3E, 0x5B, + 0x2C, 0xE6, 0x75, 0xE5, 0x44, 0x60, 0xBD, 0xD9, 0x31, 0x4B, 0xD3, 0xD4, 0x93, 0x69, 0x03, 0x00, + 0x9B, 0xCD, 0xF6, 0xC7, 0x97, 0x6F, 0x9A, 0xA6, 0xAA, 0x9C, 0x65, 0x4E, 0xDE, 0x87, 0xE7, 0x2F, + 0xDE, 0xFD, 0xF2, 0x2F, 0x9E, 0x8E, 0xA5, 0x50, 0x51, 0xA1, 0x20, 0xAC, 0xB7, 0xBB, 0xAF, 0xBF, + 0x79, 0xB6, 0xDD, 0x75, 0x31, 0x78, 0x6B, 0x1D, 0x8A, 0x70, 0x4A, 0x7D, 0x4A, 0x02, 0xA2, 0x09, + 0x68, 0xCE, 0x39, 0x63, 0x0C, 0xB3, 0xCC, 0x96, 0xB3, 0x19, 0x50, 0x55, 0xD9, 0x7A, 0xBD, 0x0D, + 0x21, 0xCE, 0x0D, 0xAD, 0x6E, 0xD7, 0xEB, 0xF5, 0x7E, 0xB7, 0xEB, 0xDA, 0xB6, 0x7D, 0xFC, 0xE8, + 0xC1, 0xD3, 0xCF, 0x3F, 0xBD, 0xB8, 0x38, 0xDB, 0x6C, 0xF7, 0xEF, 0xAF, 0x6E, 0x2E, 0xCE, 0xCF, + 0x9C, 0x33, 0x86, 0x8D, 0x30, 0x3C, 0x7A, 0x70, 0xB6, 0x5A, 0xEF, 0xAE, 0x6F, 0x6E, 0x7D, 0x8C, + 0xE7, 0xB3, 0xF9, 0xE5, 0xF9, 0xE2, 0xA3, 0x47, 0x97, 0xD7, 0x37, 0xAB, 0x18, 0xD2, 0xAB, 0x77, + 0x37, 0x87, 0xCE, 0x3B, 0x63, 0xFB, 0xBE, 0x47, 0x84, 0xF3, 0x8B, 0xC5, 0x2F, 0x7E, 0xF6, 0x79, + 0x62, 0xA9, 0x9C, 0x6D, 0xBB, 0xAE, 0xED, 0xFA, 0xBA, 0xAE, 0x2F, 0xCE, 0x96, 0x6F, 0xDE, 0x5D, + 0x13, 0x6A, 0x1D, 0x68, 0xD2, 0x68, 0x6C, 0x53, 0xD7, 0x3F, 0x7D, 0xFA, 0xF1, 0x7C, 0x36, 0xB1, + 0xD6, 0xF4, 0x3E, 0x00, 0x40, 0x8A, 0x5C, 0x92, 0x1F, 0x29, 0x97, 0xEA, 0x21, 0x1A, 0x32, 0x80, + 0xA7, 0x96, 0xCE, 0x78, 0x39, 0x8D, 0x17, 0x2D, 0x16, 0x81, 0x84, 0x0F, 0x7D, 0xE4, 0x9E, 0x6D, + 0xF5, 0x67, 0x0E, 0x3E, 0x39, 0x05, 0xB2, 0xB1, 0x96, 0x5D, 0x3A, 0x44, 0x44, 0x90, 0xFD, 0x0B, + 0xBF, 0xF9, 0xFA, 0xF9, 0xDB, 0xEB, 0x6D, 0x08, 0x71, 0xD2, 0xD4, 0x95, 0xB3, 0xDF, 0x3F, 0x7F, + 0x63, 0xCC, 0xFB, 0x9F, 0x7F, 0xF1, 0xE9, 0xC3, 0x8B, 0xB3, 0x6F, 0xBE, 0x7F, 0xF1, 0xFC, 0xE5, + 0x9B, 0xA7, 0x9F, 0x3D, 0x51, 0x54, 0x5B, 0x55, 0xD5, 0xD5, 0xF5, 0x6A, 0x36, 0x9D, 0x4C, 0x27, + 0xCD, 0x8F, 0x2F, 0xDE, 0xBE, 0x7B, 0x7F, 0xBB, 0xD9, 0xED, 0x2F, 0xCF, 0xCF, 0x10, 0xF1, 0xE6, + 0x66, 0xED, 0xBD, 0x3F, 0x5B, 0x2E, 0x7E, 0xF5, 0x8B, 0x2F, 0x6E, 0xD7, 0x9B, 0xFD, 0xBE, 0xBB, + 0x5D, 0x6D, 0x10, 0xF1, 0xFA, 0x76, 0x1B, 0x4B, 0xAE, 0xBF, 0x14, 0xCB, 0x4E, 0x8E, 0xF9, 0xDB, + 0xF7, 0xF2, 0xA9, 0x46, 0x43, 0x34, 0xD8, 0x94, 0x83, 0x43, 0xE6, 0xCF, 0x8C, 0xCC, 0x89, 0xF1, + 0xAE, 0x0B, 0x68, 0xA4, 0xF1, 0x10, 0xF1, 0x38, 0xC8, 0xF7, 0x35, 0xD4, 0x70, 0x62, 0x81, 0x1D, + 0xC7, 0xB4, 0xD8, 0xE2, 0x3C, 0x3D, 0xDE, 0xCB, 0x02, 0xA2, 0x6A, 0xCB, 0xD1, 0x63, 0xE5, 0x89, + 0x49, 0x20, 0xC7, 0x1A, 0xB5, 0xE1, 0xBF, 0xF9, 0xD2, 0x90, 0x04, 0x24, 0x30, 0x91, 0x9A, 0x93, + 0x38, 0xA4, 0x0E, 0x48, 0x61, 0xB4, 0x23, 0x42, 0x22, 0xF0, 0x21, 0xC5, 0x94, 0xB4, 0xC3, 0x9B, + 0xF2, 0x8E, 0x11, 0xE1, 0xD9, 0xAC, 0x11, 0x80, 0x6B, 0xBF, 0xF7, 0x91, 0x0D, 0x61, 0x4A, 0xE2, + 0x53, 0xEA, 0x7D, 0x32, 0x5A, 0x73, 0xC3, 0x6C, 0x89, 0x42, 0x14, 0x1F, 0x19, 0x49, 0x23, 0x00, + 0xB9, 0xCC, 0x50, 0x99, 0x63, 0x17, 0xB3, 0x46, 0x01, 0x02, 0xB3, 0x78, 0x1F, 0x7C, 0x48, 0x95, + 0x33, 0x55, 0x65, 0x45, 0xA0, 0x54, 0x73, 0xDE, 0x41, 0xB9, 0xF7, 0x77, 0x15, 0xFD, 0xD3, 0x49, + 0xF2, 0xCB, 0x58, 0xDF, 0x0F, 0xC0, 0x18, 0x75, 0x7C, 0xCA, 0xDC, 0x8E, 0x76, 0xF2, 0xE3, 0x34, + 0xE3, 0xA8, 0xAB, 0xE0, 0xF8, 0x9A, 0xE5, 0xBE, 0xA0, 0x80, 0x51, 0xEF, 0xAC, 0xDE, 0x9F, 0xF5, + 0x66, 0xF7, 0xD5, 0x57, 0x7F, 0xB4, 0xD6, 0x0D, 0x25, 0xD9, 0xC1, 0x87, 0x9E, 0x93, 0x21, 0xF4, + 0x6D, 0xCB, 0xCC, 0xEB, 0xD5, 0x9A, 0x45, 0x62, 0xE4, 0xDE, 0x7B, 0x25, 0xFF, 0x78, 0x70, 0x79, + 0x51, 0x55, 0x75, 0x62, 0x69, 0x26, 0xD3, 0xF3, 0xF3, 0x6A, 0xB7, 0xDB, 0x5F, 0xDD, 0xAC, 0x5C, + 0xE5, 0xAC, 0xB5, 0xCC, 0x42, 0x84, 0x87, 0xB6, 0x7B, 0xE3, 0xC3, 0x64, 0xD2, 0x4C, 0x27, 0xF5, + 0x6C, 0x36, 0x35, 0xC6, 0xCC, 0x26, 0x8D, 0x35, 0x64, 0x8D, 0x61, 0xE1, 0xC5, 0x62, 0xC1, 0x22, + 0xEB, 0xF5, 0x0E, 0x09, 0xAD, 0xC1, 0xB3, 0xE5, 0x3C, 0xA5, 0xB4, 0xD9, 0x1E, 0xCE, 0x97, 0xF3, + 0x10, 0x23, 0x33, 0x1B, 0x43, 0xEB, 0xCD, 0xDE, 0xFB, 0x70, 0x7D, 0xBB, 0x7E, 0xF9, 0xFA, 0xDA, + 0x87, 0x70, 0xB6, 0x5C, 0x78, 0x22, 0x57, 0x31, 0x82, 0x52, 0x5C, 0xA4, 0xD9, 0xC5, 0xCC, 0x59, + 0x7B, 0x75, 0x75, 0xD3, 0x75, 0x7D, 0xDD, 0xD4, 0xC6, 0x28, 0x43, 0x00, 0xC4, 0xC4, 0x9F, 0x7E, + 0xFA, 0x64, 0xB3, 0xD9, 0x9D, 0x9F, 0x2F, 0x37, 0x17, 0xE7, 0x2F, 0x5F, 0xBE, 0x9D, 0x4C, 0x9B, + 0xBF, 0xFA, 0xF5, 0xCF, 0xE7, 0xF3, 0xE9, 0x6A, 0xBD, 0x5D, 0x6F, 0x76, 0x95, 0xB3, 0x3F, 0x79, + 0xFA, 0xB1, 0x75, 0xCE, 0x1A, 0xF3, 0xFD, 0xB3, 0x97, 0xAB, 0xF5, 0x6E, 0x3A, 0x6D, 0xFE, 0xF8, + 0xED, 0xF3, 0xDD, 0xBE, 0x9D, 0x4E, 0xAA, 0x7F, 0xFB, 0x77, 0x7F, 0x35, 0x9F, 0x4D, 0xFB, 0xBE, + 0xDB, 0x6E, 0xF7, 0x00, 0xF0, 0xE0, 0x62, 0xEE, 0x43, 0xE2, 0x04, 0x8B, 0xC5, 0x64, 0xBB, 0x3B, + 0x4C, 0x27, 0xCD, 0x67, 0x9F, 0x3C, 0x0A, 0x31, 0x39, 0x6B, 0xBF, 0xFC, 0xFA, 0xFB, 0x67, 0x2F, + 0xDE, 0x3C, 0x7A, 0x70, 0x71, 0xBB, 0xDE, 0xBC, 0x7C, 0xF5, 0x6E, 0xBF, 0x6F, 0xD5, 0xAB, 0xF0, + 0xC9, 0xC7, 0x8F, 0x43, 0x08, 0xBF, 0xFF, 0xC3, 0x0F, 0x97, 0x17, 0x8B, 0xBF, 0xFD, 0xF5, 0x5F, + 0xFC, 0xE1, 0xDB, 0xE7, 0x6D, 0xE7, 0x27, 0xB5, 0xEB, 0x39, 0x16, 0x3F, 0x94, 0x18, 0x32, 0x28, + 0x18, 0x25, 0xE9, 0x74, 0x52, 0xB1, 0x6B, 0xEE, 0x6F, 0x66, 0x78, 0xCF, 0xD9, 0x3C, 0x4C, 0xE9, + 0x09, 0xDF, 0xC1, 0x78, 0xAE, 0xE5, 0x8E, 0x03, 0xE8, 0x78, 0xC0, 0xC9, 0x6E, 0x5A, 0x44, 0x08, + 0x07, 0xBF, 0x33, 0x22, 0xE6, 0xD2, 0x31, 0x80, 0xCA, 0xB9, 0xAF, 0xBE, 0x7B, 0xF1, 0xD5, 0xB7, + 0xAF, 0x36, 0xDB, 0xFD, 0xD9, 0x72, 0xF1, 0xF0, 0xE1, 0x79, 0x7B, 0xE8, 0x8C, 0x31, 0x17, 0x67, + 0x8B, 0xF9, 0x74, 0xB2, 0xD9, 0x1D, 0x12, 0xCB, 0x74, 0x3A, 0xBD, 0x5D, 0x6D, 0x8D, 0x35, 0x75, + 0x55, 0x39, 0x6B, 0x26, 0x93, 0xC5, 0x6A, 0xB5, 0x5D, 0x6F, 0x77, 0xEB, 0xF5, 0xEE, 0xFA, 0x76, + 0x25, 0x00, 0x21, 0xA6, 0xCD, 0x76, 0xF7, 0xF4, 0xD3, 0xC7, 0x7D, 0x1F, 0xDF, 0xBD, 0xBF, 0x59, + 0xAD, 0x36, 0x9F, 0x7E, 0xFC, 0x68, 0x3E, 0x9D, 0xBE, 0x79, 0x77, 0xDD, 0x76, 0x7E, 0xBB, 0xDD, + 0x0F, 0xFE, 0xF5, 0x12, 0x5D, 0x28, 0x39, 0x70, 0x45, 0x8D, 0x8C, 0x47, 0x63, 0x78, 0x05, 0xC9, + 0x69, 0xBD, 0x43, 0x60, 0xF0, 0x78, 0x00, 0xDC, 0xD5, 0xE0, 0xE3, 0x31, 0x1C, 0x7E, 0x16, 0x38, + 0x2D, 0x2C, 0xBF, 0x63, 0x05, 0x8C, 0x16, 0x17, 0x8E, 0x0C, 0xC9, 0xE1, 0xEE, 0xA3, 0xB4, 0xDB, + 0x3B, 0xEB, 0x0B, 0x00, 0x98, 0xD9, 0x1E, 0x0F, 0xCD, 0x3D, 0xF2, 0x80, 0x47, 0xF1, 0x57, 0x10, + 0x7D, 0x6E, 0x80, 0xC2, 0x16, 0x42, 0x99, 0x6A, 0xFA, 0x88, 0x92, 0x9C, 0x21, 0x93, 0x0B, 0x0A, + 0x00, 0x50, 0x84, 0xC1, 0x1A, 0xB2, 0x96, 0x9C, 0xA1, 0xD6, 0xA7, 0x7D, 0xD7, 0x59, 0x42, 0x61, + 0xA9, 0x2A, 0x40, 0x94, 0xDA, 0xD9, 0xCA, 0x19, 0x00, 0x68, 0x3B, 0x0F, 0x80, 0xB3, 0xC6, 0x59, + 0x43, 0x3E, 0xA6, 0x3E, 0xE4, 0x2D, 0x82, 0x01, 0x52, 0xE4, 0x8E, 0x13, 0x02, 0x34, 0x95, 0x01, + 0xC0, 0x98, 0x94, 0x88, 0x03, 0x0C, 0x51, 0x62, 0x26, 0xB2, 0x31, 0xA6, 0xDD, 0xBE, 0xD7, 0xC8, + 0x7A, 0xDF, 0xAB, 0xF1, 0x61, 0x53, 0x62, 0xE7, 0xAC, 0x31, 0xB9, 0x06, 0x6D, 0x3C, 0x46, 0x63, + 0x5B, 0xFA, 0x64, 0x7A, 0x4E, 0x46, 0x7F, 0x2C, 0x6A, 0xC3, 0xE6, 0x3C, 0x78, 0x3F, 0x4E, 0x64, + 0xF7, 0x64, 0xB2, 0xA1, 0x40, 0xB9, 0xE1, 0xFB, 0x93, 0x24, 0x1A, 0x11, 0x60, 0x4E, 0x55, 0xE5, + 0x36, 0xEB, 0xDD, 0x3F, 0xFE, 0xD3, 0x97, 0xDB, 0x7D, 0xDF, 0x34, 0xD5, 0xA1, 0xF5, 0x95, 0x33, + 0x37, 0xB7, 0x6B, 0x11, 0x68, 0x26, 0xB5, 0x08, 0x20, 0xD1, 0x6E, 0x77, 0xD0, 0x50, 0xA0, 0x00, + 0x28, 0xB2, 0x30, 0xC6, 0xBC, 0x7F, 0x7F, 0x6D, 0x8C, 0xF5, 0xBD, 0x27, 0x43, 0x8B, 0xF9, 0xEC, + 0xE1, 0xA3, 0x07, 0xC6, 0xD8, 0x9B, 0xDB, 0xF5, 0x7C, 0x36, 0x3B, 0xB4, 0xDD, 0x6E, 0xB7, 0x9F, + 0x4E, 0x9A, 0xC3, 0xA1, 0xED, 0xBA, 0xDE, 0xFB, 0x69, 0x8C, 0x8C, 0x39, 0x76, 0x2C, 0xAB, 0xCD, + 0x76, 0x36, 0x9D, 0x02, 0xC0, 0x6E, 0xB7, 0x0F, 0xDE, 0xC7, 0x98, 0x3E, 0x7A, 0xFC, 0x00, 0x44, + 0x9A, 0xBA, 0xFA, 0xE1, 0xC7, 0x37, 0x93, 0xA6, 0x7A, 0xFC, 0xF0, 0x62, 0x36, 0x6D, 0xFE, 0xF8, + 0xDD, 0x8B, 0x67, 0x2F, 0xDE, 0x57, 0xB5, 0xE3, 0x94, 0xBC, 0xF7, 0x64, 0x0D, 0x11, 0xCD, 0xE7, + 0xD3, 0x9B, 0x9B, 0x5B, 0x63, 0x2C, 0x89, 0x34, 0x93, 0x9A, 0x45, 0xDA, 0xAE, 0x0B, 0x41, 0xBB, + 0x34, 0x04, 0x4E, 0xCC, 0x02, 0xCE, 0xB9, 0x8F, 0x9F, 0x3C, 0x5A, 0xCC, 0x67, 0x8B, 0xF9, 0xCC, + 0x87, 0xF0, 0xD9, 0x67, 0x4F, 0x3E, 0x7F, 0xFA, 0xB1, 0xF7, 0x71, 0xBB, 0x3F, 0xBC, 0x7D, 0x77, + 0xFB, 0xEC, 0xF9, 0x4B, 0x22, 0xFC, 0xD9, 0x17, 0x4F, 0x3F, 0x7A, 0xFC, 0x70, 0xBF, 0x6F, 0x9F, + 0xBF, 0x7C, 0x53, 0x39, 0xFB, 0xF1, 0x93, 0x87, 0xCF, 0x7E, 0x7C, 0xFD, 0xFB, 0xAF, 0xBF, 0x9B, + 0xCF, 0x66, 0x3F, 0xFF, 0xD9, 0xD3, 0xBE, 0xF7, 0x8F, 0x1F, 0x5D, 0x5E, 0x5F, 0x5D, 0x13, 0x91, + 0x2A, 0xAC, 0xE5, 0x7C, 0x62, 0x8C, 0xB1, 0xD6, 0x4E, 0x1A, 0x57, 0x57, 0xF6, 0xF9, 0x8B, 0x37, + 0x95, 0xB3, 0x17, 0x17, 0x67, 0xBF, 0xFA, 0xF9, 0xE7, 0x7D, 0x1F, 0xAE, 0x6E, 0xD7, 0xEF, 0xAF, + 0x6F, 0xC9, 0x90, 0x73, 0x56, 0xE9, 0x36, 0xF7, 0x87, 0xB6, 0xEF, 0x7A, 0x20, 0xB4, 0x86, 0x6E, + 0x57, 0xBB, 0xA6, 0xA9, 0xBF, 0xFC, 0xE6, 0xF9, 0xBF, 0xFF, 0xBB, 0x5F, 0x89, 0xF4, 0xC3, 0xF8, + 0x33, 0x88, 0x21, 0x63, 0x88, 0x62, 0xE2, 0xC4, 0x49, 0x94, 0xE1, 0x5D, 0xEE, 0x38, 0xB9, 0x4E, + 0x22, 0x3F, 0x38, 0xB6, 0x2B, 0x3F, 0x64, 0x43, 0x8D, 0x97, 0xD3, 0x9F, 0x07, 0x65, 0x83, 0x44, + 0x8D, 0x96, 0x6B, 0x96, 0x2A, 0xED, 0x4D, 0x26, 0x22, 0x88, 0xD4, 0xD4, 0x36, 0xC6, 0xB8, 0xDE, + 0x77, 0xEA, 0x71, 0xFE, 0xFE, 0xD9, 0x6B, 0x16, 0x39, 0x5B, 0xCC, 0x17, 0xF3, 0xE9, 0x76, 0xDF, + 0xFA, 0x90, 0x76, 0xFB, 0xC3, 0xE3, 0x47, 0x0F, 0x6E, 0xD7, 0xDB, 0xBF, 0xFF, 0x1F, 0xFF, 0x2D, + 0x11, 0xFE, 0xF8, 0xF2, 0xDD, 0x9B, 0xB7, 0xD7, 0x3E, 0x04, 0x04, 0xDA, 0xEC, 0xF6, 0x2C, 0x62, + 0x8D, 0xD9, 0xEE, 0xF6, 0x93, 0xA6, 0xBA, 0xB9, 0x5D, 0xAF, 0x56, 0xBB, 0x8B, 0xCB, 0xB3, 0x18, + 0xE2, 0x6F, 0x7E, 0xF7, 0x4D, 0x88, 0xE9, 0xF2, 0xE2, 0xAC, 0xEF, 0x7B, 0x98, 0xD7, 0x1A, 0x5B, + 0xCB, 0x8F, 0x91, 0x1F, 0x0F, 0x10, 0x47, 0xCB, 0x1E, 0x60, 0xAC, 0xCE, 0xEE, 0xBE, 0xA0, 0x68, + 0x46, 0xD4, 0x07, 0x87, 0xE2, 0xE4, 0xA3, 0x07, 0xB0, 0x28, 0x0F, 0x61, 0xC9, 0xC4, 0x1D, 0x29, + 0xA0, 0x93, 0x8B, 0x8C, 0x11, 0xAE, 0x42, 0x0D, 0x1E, 0xB5, 0x13, 0x12, 0xF9, 0xB0, 0xCD, 0x8B, + 0x88, 0xE6, 0x3F, 0xFE, 0xA7, 0xFF, 0x0C, 0x00, 0x48, 0xC4, 0xA0, 0x1C, 0x3E, 0xC0, 0x50, 0x40, + 0x17, 0x64, 0xED, 0x3B, 0x7E, 0x56, 0x63, 0x68, 0xDA, 0xD8, 0xCA, 0x19, 0x10, 0xB1, 0x16, 0x27, + 0x95, 0x45, 0x84, 0xCA, 0x92, 0x3E, 0x92, 0x31, 0xB9, 0x19, 0x7A, 0x5D, 0x1B, 0x24, 0x0C, 0x31, + 0xA9, 0x2F, 0xBC, 0xAA, 0xCC, 0x7C, 0x5A, 0x3D, 0x38, 0x9B, 0x3D, 0x38, 0x9B, 0x55, 0x95, 0x09, + 0x31, 0x85, 0x24, 0xCB, 0x59, 0xAD, 0x65, 0xCF, 0x02, 0x39, 0xDB, 0x3E, 0x31, 0x87, 0xC4, 0x21, + 0x66, 0x5E, 0x3A, 0xED, 0x23, 0xE9, 0x8C, 0xE9, 0x03, 0xAB, 0xB2, 0xBB, 0xD9, 0x75, 0xBB, 0xD6, + 0x83, 0xC8, 0x7A, 0xD7, 0x1E, 0x5A, 0xDF, 0xFB, 0x88, 0x84, 0xC5, 0xCC, 0xCC, 0x34, 0xB3, 0x5A, + 0x38, 0x45, 0x04, 0x6A, 0xFB, 0xC4, 0x58, 0x78, 0x87, 0x01, 0xD4, 0xB8, 0x18, 0x20, 0xE7, 0x30, + 0x0A, 0x03, 0x04, 0x2B, 0x6D, 0xAA, 0xF0, 0x3E, 0xF2, 0x3A, 0x11, 0xD6, 0x61, 0xB7, 0x39, 0xD9, + 0xBA, 0xC7, 0xFF, 0x8E, 0xE7, 0x49, 0x44, 0x98, 0xC5, 0x5A, 0xF3, 0xFA, 0xCD, 0xFB, 0xFF, 0xF3, + 0xFF, 0xFA, 0xA7, 0xB7, 0xEF, 0xD7, 0x49, 0x64, 0xB5, 0xDE, 0xB6, 0x7D, 0xEC, 0x7C, 0x58, 0xDD, + 0x6E, 0xBB, 0xCE, 0x33, 0x40, 0x08, 0xA9, 0x8F, 0xB1, 0xEB, 0xFD, 0xA1, 0xED, 0x42, 0x48, 0x7D, + 0xDF, 0xCF, 0x17, 0x73, 0x2D, 0x6F, 0x44, 0xA4, 0xBE, 0x0F, 0x20, 0x10, 0x13, 0x6F, 0xF7, 0x87, + 0xCD, 0x66, 0x4B, 0x48, 0x8B, 0xE5, 0x1C, 0x00, 0x67, 0xD3, 0x26, 0x86, 0xE8, 0x63, 0xB8, 0xB8, + 0x38, 0x03, 0x80, 0xE9, 0xA4, 0x21, 0xA2, 0xED, 0x76, 0xB7, 0xDD, 0xEE, 0x45, 0xA4, 0xEB, 0xFD, + 0x6E, 0x7B, 0xD8, 0xEE, 0x76, 0x21, 0x44, 0x67, 0xAD, 0xB5, 0xD6, 0x10, 0x59, 0x6B, 0xE6, 0xB3, + 0x89, 0x08, 0xAC, 0x36, 0xBB, 0xC3, 0xBE, 0xED, 0xBB, 0xEE, 0xD9, 0x8B, 0xF7, 0x31, 0xC5, 0xC5, + 0x7C, 0x66, 0xAD, 0x61, 0x66, 0x6B, 0xAC, 0xB5, 0xA6, 0x69, 0x2A, 0x63, 0x0C, 0x12, 0x56, 0xCE, + 0x85, 0x98, 0xDA, 0xAE, 0x45, 0xA4, 0xF3, 0x8B, 0x33, 0x22, 0x9A, 0x4D, 0x27, 0x4F, 0x3E, 0x7A, + 0xFC, 0xE4, 0xF1, 0xC3, 0x47, 0x0F, 0x2F, 0x66, 0xD3, 0x49, 0x4C, 0x1C, 0x7C, 0x00, 0x40, 0x6B, + 0x8C, 0xF7, 0x7E, 0xB3, 0xDD, 0x75, 0xBD, 0x7F, 0x7F, 0x75, 0x1B, 0x63, 0xFA, 0xC9, 0xE7, 0x9F, + 0x58, 0x6B, 0x5E, 0xBE, 0x7E, 0x7B, 0x71, 0xBE, 0x9C, 0xCD, 0xA6, 0xC6, 0xD0, 0xBB, 0xF7, 0xB7, + 0xBF, 0xF9, 0xDD, 0x1F, 0x45, 0x24, 0xA6, 0x34, 0x9B, 0x4D, 0xEA, 0xCA, 0xB5, 0x6D, 0xDF, 0x34, + 0x6E, 0xB3, 0xD9, 0xE9, 0x32, 0x52, 0x02, 0x0C, 0x63, 0x68, 0x36, 0x9D, 0x4C, 0x67, 0xD3, 0x10, + 0x22, 0x21, 0x7A, 0x1F, 0x1F, 0x3F, 0xBA, 0xFC, 0xEB, 0xBF, 0xFC, 0x02, 0x01, 0x98, 0x65, 0x3E, + 0x9B, 0x5E, 0x9C, 0x2F, 0x1F, 0x3F, 0xBC, 0x7C, 0xFC, 0xF8, 0x72, 0x7F, 0x68, 0x53, 0xE2, 0x27, + 0x8F, 0x1F, 0xEE, 0x0E, 0x2D, 0x11, 0x59, 0x6B, 0x5F, 0xBD, 0xB9, 0xFA, 0xF9, 0x4F, 0x3F, 0x1E, + 0xD6, 0x52, 0x8E, 0x90, 0x30, 0x83, 0x80, 0x51, 0x4A, 0xC8, 0xD2, 0x60, 0x05, 0x47, 0xEE, 0xB0, + 0xF1, 0x14, 0x53, 0x29, 0xFC, 0x18, 0x44, 0xE5, 0xE4, 0x98, 0xFB, 0xEB, 0xEA, 0x44, 0x36, 0xC6, + 0xC7, 0xEB, 0x0F, 0xC6, 0x18, 0xF5, 0x46, 0x0F, 0xFE, 0x23, 0x43, 0x59, 0xE0, 0xEA, 0xAA, 0x22, + 0xC2, 0xCD, 0xFE, 0xF0, 0xFB, 0x6F, 0x7E, 0xDC, 0xEC, 0x7B, 0x6B, 0xED, 0x7A, 0xBB, 0x9B, 0x34, + 0xD5, 0x4F, 0x3E, 0x7B, 0xFC, 0xC5, 0xE7, 0x4F, 0x00, 0xF0, 0xDD, 0xD5, 0x6A, 0xB5, 0xDE, 0x4E, + 0x9A, 0x66, 0xB9, 0x98, 0xDD, 0xAE, 0x36, 0xAE, 0x72, 0x2F, 0x5F, 0xBD, 0xEB, 0xFA, 0x90, 0x52, + 0x7A, 0x7F, 0x75, 0x9B, 0x52, 0x5A, 0xAD, 0x37, 0xEA, 0xC4, 0x35, 0x06, 0x27, 0x4D, 0xDD, 0x75, + 0xBE, 0xAE, 0x2B, 0x6B, 0xCC, 0x62, 0x31, 0xB3, 0xD6, 0xAE, 0xD7, 0x9B, 0xC4, 0x1C, 0x7C, 0x00, + 0xA4, 0xBF, 0xFE, 0xC5, 0xD3, 0x49, 0x53, 0x0D, 0x06, 0x1A, 0x0E, 0xC8, 0xF0, 0xF8, 0x76, 0x1F, + 0xF6, 0x32, 0x03, 0x00, 0x96, 0xFE, 0xAA, 0xF7, 0x41, 0xD3, 0x7D, 0x65, 0x2D, 0x22, 0xA5, 0xDC, + 0x1F, 0x45, 0xEF, 0x37, 0xDA, 0x0F, 0x4E, 0x76, 0xFD, 0x93, 0x15, 0x34, 0xE8, 0xAF, 0xE1, 0xDF, + 0x61, 0xA6, 0xEE, 0x4E, 0x0D, 0x29, 0xFF, 0xDC, 0xB0, 0xE4, 0xEE, 0x2F, 0x5A, 0x01, 0x38, 0x56, + 0xCA, 0x8B, 0x08, 0x33, 0x20, 0xB0, 0x76, 0xC5, 0x54, 0xFD, 0x4D, 0x84, 0x8D, 0xAB, 0x94, 0x25, + 0x71, 0xDE, 0x54, 0xCC, 0x72, 0x80, 0x88, 0x00, 0x4A, 0x78, 0xAF, 0xB5, 0x93, 0x8F, 0x2F, 0xE7, + 0x67, 0x8B, 0x89, 0x35, 0x34, 0x9D, 0xD4, 0xCC, 0x1C, 0x77, 0x89, 0x10, 0xE7, 0x8D, 0xF3, 0x31, + 0x1D, 0xBA, 0xA0, 0x17, 0x27, 0xC4, 0x10, 0x25, 0x84, 0x52, 0xB1, 0x20, 0xA8, 0xE9, 0x01, 0xCE, + 0x9A, 0xC8, 0x1C, 0x12, 0x13, 0x41, 0x4A, 0x82, 0x80, 0x3E, 0xA6, 0xCD, 0xA1, 0x5F, 0xCE, 0xEA, + 0xC2, 0x7F, 0xC0, 0x31, 0x61, 0x4C, 0x8C, 0x88, 0x86, 0x08, 0x10, 0x4C, 0xA2, 0xCA, 0x82, 0x31, + 0x0E, 0x11, 0x75, 0x4D, 0x7A, 0x1F, 0x9D, 0xB3, 0xCC, 0xAC, 0x79, 0x6D, 0xD6, 0x82, 0x29, 0xE4, + 0xCD, 0x63, 0x68, 0x06, 0xF7, 0x0C, 0x84, 0xFB, 0x9F, 0x0F, 0x5A, 0x22, 0x27, 0x26, 0xC6, 0xD8, + 0x68, 0x1D, 0x6F, 0x23, 0xC6, 0x50, 0x4A, 0xFC, 0xCF, 0xFF, 0xFA, 0x87, 0xAB, 0xDB, 0xAD, 0xB5, + 0x86, 0x53, 0x02, 0x81, 0xAA, 0x76, 0xEB, 0xCD, 0xB6, 0xF5, 0x3D, 0x01, 0xFA, 0x55, 0x34, 0xD6, + 0xA4, 0x98, 0x2E, 0x2E, 0xCF, 0x01, 0x70, 0xBD, 0xDE, 0x32, 0x4B, 0x08, 0x71, 0xB9, 0x5C, 0x10, + 0xD1, 0x76, 0xBB, 0xAF, 0x9B, 0xFA, 0xE2, 0xE2, 0x6C, 0x75, 0xBB, 0xDE, 0x1F, 0x0E, 0x22, 0xE0, + 0x43, 0x08, 0x3E, 0x3A, 0xE7, 0x98, 0xF9, 0x2F, 0xBE, 0xF8, 0xFC, 0xC5, 0xCB, 0xD7, 0x22, 0xFC, + 0x93, 0xCF, 0x3F, 0xF5, 0x3E, 0xBC, 0x7A, 0xFD, 0x36, 0x84, 0xD0, 0xF7, 0xC1, 0x7B, 0xDF, 0x75, + 0xDD, 0x6C, 0x36, 0x5B, 0x2E, 0x17, 0x8B, 0xC5, 0x8C, 0x53, 0x8A, 0x31, 0x2E, 0x97, 0xD3, 0xB3, + 0xE5, 0x9C, 0x0C, 0xF5, 0xBD, 0x5F, 0x4C, 0x1B, 0x4E, 0xE9, 0xD9, 0xB3, 0x57, 0x3E, 0x70, 0x33, + 0x99, 0x80, 0x88, 0x73, 0x76, 0x31, 0x9F, 0x01, 0x40, 0x33, 0xA9, 0x8D, 0x31, 0x44, 0x33, 0x24, + 0xDC, 0x6C, 0x76, 0xC6, 0x98, 0x87, 0x0F, 0x1E, 0x10, 0xA1, 0x0F, 0xF1, 0xE9, 0x67, 0x9F, 0x20, + 0xA2, 0x32, 0xDE, 0x68, 0xF2, 0xC4, 0xD9, 0x7C, 0x7A, 0xE0, 0xB4, 0x6F, 0xBB, 0xDD, 0x6E, 0xAF, + 0x11, 0xCF, 0x94, 0xD2, 0xE1, 0xD0, 0x8A, 0xC8, 0xE1, 0xD0, 0x7D, 0xF5, 0xE3, 0xAB, 0xCB, 0x8B, + 0xB3, 0xDE, 0xFB, 0xBE, 0xF3, 0xB7, 0xAB, 0xCD, 0x8F, 0x2F, 0xDE, 0x5C, 0xDF, 0xDC, 0x7E, 0xF4, + 0xD1, 0x03, 0x22, 0x0C, 0xDE, 0x77, 0x5D, 0xC7, 0x2C, 0x17, 0xE7, 0x8F, 0x66, 0xB3, 0xE9, 0xED, + 0x6A, 0x6D, 0xAD, 0xFD, 0x7F, 0x19, 0x7B, 0xAF, 0x26, 0xC9, 0xB6, 0xEC, 0x3C, 0x6C, 0x6D, 0x7F, + 0x7C, 0x9A, 0x72, 0x5D, 0xD5, 0xF6, 0xF6, 0xBD, 0x77, 0xEE, 0x38, 0x80, 0x00, 0x83, 0x08, 0x90, + 0x7C, 0xA1, 0x4C, 0x04, 0x1F, 0x18, 0xC1, 0x9F, 0x20, 0x85, 0x14, 0x18, 0x90, 0xA0, 0x02, 0x23, + 0xFE, 0x30, 0xBD, 0xEA, 0x41, 0x0F, 0x32, 0x94, 0x28, 0x20, 0x30, 0x00, 0x89, 0xE1, 0xCC, 0x9D, + 0xB9, 0xB6, 0x7D, 0x77, 0x55, 0x97, 0x4B, 0x7B, 0xDC, 0xF6, 0x5B, 0x0F, 0xFB, 0x64, 0x56, 0x76, + 0x55, 0xCF, 0x08, 0x27, 0x3A, 0xAA, 0x33, 0x4F, 0x9E, 0x34, 0x67, 0xEF, 0xBD, 0xBE, 0xBD, 0xEC, + 0xB7, 0x00, 0x40, 0x4A, 0xCD, 0x19, 0x1B, 0xEC, 0x6E, 0x63, 0xB5, 0xD2, 0x5C, 0xF0, 0xD7, 0x6F, + 0xDE, 0x3F, 0x7E, 0x74, 0xFC, 0xD9, 0x27, 0xF7, 0x9F, 0x3E, 0x3E, 0x89, 0x6D, 0x05, 0xBA, 0x4E, + 0x5E, 0xCE, 0x56, 0xEB, 0xBA, 0x3D, 0x3A, 0xDC, 0xF3, 0xDE, 0x4B, 0xA9, 0x5F, 0xBD, 0x7D, 0xEF, + 0xAC, 0x1F, 0x57, 0xF9, 0x37, 0xCF, 0xDE, 0xFD, 0xE8, 0xB3, 0x87, 0x76, 0x43, 0x5D, 0xB7, 0x11, + 0x09, 0x80, 0x98, 0x45, 0xB1, 0x21, 0x4A, 0x8A, 0x8B, 0xFF, 0xEE, 0xD4, 0xEF, 0xE2, 0xD7, 0x2D, + 0x71, 0xFD, 0xA8, 0x62, 0x7E, 0xF7, 0xD8, 0x4A, 0xE3, 0xF6, 0xE9, 0xF6, 0xD3, 0x06, 0xB1, 0x44, + 0x28, 0x5A, 0x33, 0x04, 0xE3, 0xB7, 0x17, 0xD7, 0xEF, 0xCE, 0x17, 0x4D, 0xA7, 0xCE, 0xAE, 0xD7, + 0x75, 0xD3, 0x1A, 0x6D, 0xB4, 0x31, 0x0B, 0x6B, 0xBD, 0xF7, 0x6D, 0x27, 0xFB, 0x5E, 0x9D, 0x5D, + 0x5C, 0x53, 0x42, 0x8A, 0x22, 0x0B, 0x21, 0x3C, 0x7A, 0x70, 0x7C, 0x71, 0xB5, 0x58, 0x2E, 0xD7, + 0xEB, 0x75, 0x43, 0x28, 0x0E, 0x3E, 0xD4, 0x75, 0x83, 0x09, 0xF1, 0x21, 0x30, 0x46, 0xA7, 0xE3, + 0x51, 0x51, 0x64, 0xA3, 0x32, 0x6F, 0xBB, 0xBE, 0xEB, 0xD4, 0xE9, 0xD9, 0x85, 0xD6, 0x9A, 0x10, + 0x6C, 0x8C, 0x25, 0x84, 0x2C, 0x56, 0x75, 0x27, 0xD5, 0xA8, 0xCA, 0x62, 0x32, 0xFC, 0xAD, 0x9F, + 0xBC, 0x5D, 0xD7, 0xF0, 0x21, 0x3A, 0xEF, 0xDE, 0x14, 0x7C, 0x47, 0x02, 0x5C, 0x71, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xB8, 0x91, 0xDF, 0xBA, 0x0C, 0xED, 0x18, 0x95, 0x91, 0x90, + 0x27, 0xC4, 0xDE, 0x62, 0x3B, 0x12, 0xB1, 0x1D, 0xCF, 0xDD, 0x6D, 0x66, 0x77, 0xAC, 0x6E, 0x7D, + 0xDA, 0xC6, 0x85, 0x37, 0xE4, 0x09, 0xDF, 0xDA, 0x78, 0x10, 0x02, 0xBA, 0xF9, 0xCA, 0xCD, 0x6F, + 0xBF, 0x71, 0xA3, 0x85, 0xB0, 0x69, 0xD9, 0xBB, 0x95, 0x54, 0x42, 0xD0, 0xA4, 0x4A, 0x9C, 0x0B, + 0xBD, 0x35, 0x00, 0x90, 0x0A, 0x46, 0x10, 0x1E, 0xF2, 0xAA, 0x52, 0x81, 0x00, 0x4C, 0xF0, 0xCE, + 0x7B, 0x04, 0x88, 0x62, 0x24, 0x18, 0x99, 0x56, 0x59, 0x9E, 0xF2, 0x2A, 0x4F, 0x00, 0xA1, 0xC8, + 0x27, 0xB0, 0xAE, 0xFB, 0x75, 0x2B, 0xAD, 0xF3, 0xAD, 0xD4, 0x6D, 0x6F, 0x42, 0x00, 0x42, 0x86, + 0xF2, 0x77, 0x40, 0xC1, 0x43, 0x08, 0x08, 0x8E, 0xC6, 0x99, 0xF7, 0xA1, 0x91, 0x46, 0x5B, 0xAF, + 0xB4, 0x63, 0x0C, 0xA5, 0x82, 0x32, 0x8C, 0x32, 0x41, 0xED, 0x26, 0x1E, 0xDA, 0x6B, 0xAB, 0xB5, + 0x75, 0x01, 0x08, 0x42, 0x84, 0x00, 0x0A, 0x50, 0x64, 0x62, 0x5A, 0xC5, 0x18, 0xF3, 0x10, 0xED, + 0x02, 0xA0, 0x00, 0x01, 0x63, 0x9C, 0x65, 0x62, 0x67, 0x38, 0x86, 0xF0, 0xE2, 0x2D, 0xF8, 0x0F, + 0x1F, 0x5A, 0xF5, 0xB7, 0x56, 0xDE, 0x76, 0x0E, 0x6E, 0x3D, 0xB8, 0xF5, 0xD2, 0x2D, 0x25, 0x79, + 0xF7, 0x71, 0x08, 0x61, 0xB5, 0x6E, 0x5E, 0xBD, 0x7E, 0x3F, 0x5F, 0xD4, 0x82, 0x73, 0xAD, 0x2D, + 0x26, 0x38, 0xCF, 0xB3, 0xA6, 0xE9, 0x8C, 0x36, 0x94, 0x52, 0xC6, 0x18, 0xE3, 0x2C, 0x11, 0x42, + 0x4A, 0x75, 0x3D, 0x5B, 0x96, 0x45, 0x9E, 0x97, 0x45, 0xFC, 0xFA, 0x75, 0xDD, 0x08, 0xC1, 0x08, + 0x25, 0x52, 0xAA, 0xC5, 0x62, 0xC5, 0x19, 0x2B, 0xCB, 0x82, 0x73, 0x96, 0xA6, 0xA9, 0xB1, 0xB6, + 0xED, 0xBA, 0xAE, 0x93, 0xE7, 0x17, 0xB3, 0x34, 0x4D, 0xE6, 0x57, 0x8B, 0xE0, 0x91, 0x0F, 0xDE, + 0x1A, 0xAB, 0xB5, 0x49, 0x12, 0x4E, 0x09, 0xA9, 0xCA, 0x82, 0x31, 0xFA, 0xF8, 0xD1, 0xFD, 0x24, + 0x11, 0x4A, 0x29, 0x82, 0x21, 0x15, 0x1C, 0x63, 0x24, 0x38, 0x13, 0x9C, 0x81, 0xF7, 0xD6, 0xB8, + 0x80, 0x30, 0x26, 0xC0, 0x28, 0x15, 0x09, 0x4F, 0xD3, 0xC4, 0x3A, 0xCF, 0x19, 0xA3, 0x94, 0x2C, + 0x16, 0x2B, 0x6B, 0x5C, 0x51, 0xE6, 0xE3, 0x71, 0x15, 0x42, 0xDC, 0x00, 0x80, 0x73, 0x8E, 0x10, + 0x38, 0xEF, 0x00, 0x80, 0x10, 0x22, 0x95, 0x0E, 0xC1, 0xBF, 0x7E, 0x7B, 0x96, 0x65, 0xD9, 0xC5, + 0xE5, 0xB5, 0xF7, 0xE1, 0x60, 0x7F, 0x9C, 0xF2, 0x64, 0xBE, 0xA8, 0xF7, 0xF7, 0xC6, 0x3E, 0xF8, + 0xF9, 0x7C, 0x91, 0x65, 0xC9, 0xE3, 0xC7, 0x27, 0xD7, 0xF3, 0xF5, 0xD9, 0xF9, 0x55, 0x08, 0xC1, + 0x3A, 0xBB, 0x37, 0x29, 0x12, 0x86, 0x31, 0x21, 0x04, 0x41, 0xDB, 0xF6, 0x3E, 0xC0, 0xE5, 0xD5, + 0x9C, 0x10, 0x62, 0xAC, 0x23, 0x14, 0xC6, 0x55, 0xD9, 0x4B, 0x69, 0xBD, 0x47, 0x21, 0xF6, 0x04, + 0x70, 0x8B, 0xE5, 0xBA, 0xCC, 0x73, 0x42, 0x68, 0xD7, 0xCB, 0x98, 0xA7, 0x92, 0xA7, 0x89, 0xD6, + 0x66, 0x32, 0x2E, 0xB5, 0xB1, 0x52, 0x8D, 0x18, 0x65, 0x17, 0x17, 0x33, 0x6D, 0x0C, 0x25, 0x78, + 0xB5, 0x6E, 0x08, 0xC1, 0xCF, 0x5E, 0x9D, 0x3D, 0x79, 0x78, 0x84, 0x37, 0x75, 0xD2, 0x00, 0x40, + 0x10, 0xF6, 0x9B, 0x0C, 0x2A, 0x02, 0x18, 0x10, 0xF8, 0x9B, 0xE0, 0x0F, 0xC0, 0xC6, 0x73, 0xBA, + 0xBB, 0xF9, 0xEF, 0x42, 0xD8, 0xAD, 0x03, 0xEF, 0x90, 0x9A, 0xDE, 0x35, 0xB2, 0xEE, 0x5E, 0xBF, + 0x11, 0x54, 0x14, 0x02, 0x78, 0xE7, 0x11, 0xC1, 0x10, 0xC0, 0x7B, 0x9F, 0x26, 0xE2, 0xF2, 0x7A, + 0xF1, 0xD7, 0xFF, 0xF9, 0x5B, 0x1F, 0x50, 0xDD, 0xB4, 0xDA, 0x58, 0xE7, 0x3C, 0x26, 0x84, 0x86, + 0xD0, 0x4B, 0x79, 0xA5, 0x75, 0x4C, 0x37, 0x11, 0x82, 0xC7, 0x44, 0x42, 0xA5, 0xCC, 0xD1, 0xD1, + 0x74, 0x54, 0xE5, 0xF3, 0xC5, 0x0A, 0xA3, 0x21, 0xAF, 0x15, 0x63, 0xE2, 0x8C, 0xA2, 0x94, 0x8C, + 0xCA, 0x02, 0x20, 0xB4, 0x5D, 0x8F, 0x11, 0x7A, 0x70, 0x72, 0xF8, 0xF6, 0xDD, 0xF9, 0xC2, 0x3A, + 0xA5, 0x0D, 0xA3, 0x2C, 0xC6, 0xDC, 0xB5, 0xB5, 0x5F, 0x3F, 0x3F, 0xFB, 0xE4, 0xC1, 0xE1, 0x96, + 0xA6, 0x14, 0x06, 0x6F, 0xD2, 0x60, 0xF0, 0xC6, 0x5B, 0xF9, 0x28, 0x88, 0xC3, 0x87, 0x74, 0x3D, + 0xBB, 0x42, 0x74, 0x6B, 0xB5, 0xC7, 0x21, 0x77, 0xE1, 0x03, 0xBD, 0xF5, 0xD6, 0x96, 0xBF, 0xF3, + 0x46, 0xB4, 0xAB, 0x1A, 0xC3, 0x26, 0xF8, 0xB0, 0xA3, 0x25, 0x84, 0xCD, 0x99, 0x81, 0xBA, 0x79, + 0x13, 0x27, 0x41, 0x21, 0x00, 0xC6, 0x70, 0xD3, 0xD7, 0x72, 0x4B, 0x91, 0x38, 0x38, 0xFC, 0x37, + 0x7D, 0x64, 0xD1, 0xC6, 0x18, 0x4B, 0x04, 0x4D, 0x39, 0x4D, 0x39, 0x0D, 0x01, 0x08, 0x46, 0x6D, + 0x6F, 0x94, 0xB6, 0xBD, 0x0F, 0x9C, 0xE1, 0x54, 0x30, 0xEB, 0x03, 0x67, 0x84, 0x01, 0x2E, 0x53, + 0x51, 0x65, 0x42, 0xF0, 0xC1, 0x03, 0x4D, 0x09, 0x56, 0xC6, 0x12, 0x8C, 0xB5, 0xB1, 0x8B, 0xBA, + 0x6D, 0x3A, 0xD5, 0x29, 0xDB, 0xF4, 0x26, 0xA6, 0x9E, 0x31, 0x82, 0x01, 0x40, 0x59, 0x87, 0x00, + 0x18, 0x25, 0xD3, 0x32, 0x49, 0x39, 0xCB, 0x12, 0x16, 0xF7, 0x8A, 0xAB, 0x55, 0xC7, 0x28, 0x19, + 0x67, 0x3C, 0xFE, 0x74, 0x42, 0xB0, 0x71, 0xD6, 0xFB, 0xE0, 0x42, 0x50, 0xC6, 0x31, 0x8A, 0x31, + 0x02, 0x1F, 0x3C, 0x09, 0x84, 0x31, 0x3C, 0x2A, 0xD2, 0x2C, 0xE5, 0x9C, 0x53, 0x6B, 0x7D, 0x74, + 0x9B, 0x29, 0x6D, 0x19, 0xC5, 0x49, 0x22, 0x18, 0xA3, 0xB7, 0x76, 0xD1, 0x5B, 0x1B, 0xEF, 0xEF, + 0x9A, 0x92, 0xBB, 0x0B, 0x31, 0xEC, 0x38, 0x53, 0x76, 0xA7, 0x6D, 0x77, 0x41, 0x87, 0x5B, 0x71, + 0x03, 0x44, 0x18, 0xA7, 0x6F, 0xDE, 0x9C, 0xFE, 0xCD, 0x2F, 0xBE, 0xC4, 0x94, 0x22, 0x40, 0x46, + 0x29, 0xEF, 0xBD, 0x31, 0xA1, 0xEF, 0x7A, 0x40, 0xA8, 0x1A, 0x95, 0x59, 0x96, 0x85, 0x10, 0xB4, + 0x36, 0xCE, 0xB9, 0xAA, 0x2A, 0x7B, 0xA9, 0xCE, 0x2F, 0xAE, 0x1F, 0x3E, 0x3C, 0xB6, 0xD6, 0x59, + 0x6B, 0xEB, 0xBA, 0x59, 0xAF, 0xDD, 0xA8, 0xAA, 0x9C, 0x0B, 0xAB, 0x55, 0x4D, 0x29, 0x39, 0x38, + 0x98, 0xEE, 0xEF, 0x4D, 0xA3, 0x4A, 0x25, 0xA5, 0xF4, 0xDE, 0x59, 0x6B, 0xA5, 0x94, 0xD6, 0xBA, + 0x8B, 0xCB, 0xAB, 0xD1, 0xA8, 0xAC, 0xAA, 0x22, 0x4D, 0x93, 0xA6, 0xED, 0x94, 0x54, 0x87, 0x87, + 0xFB, 0x7B, 0xD3, 0x11, 0x42, 0x08, 0x20, 0x8C, 0x47, 0x05, 0x40, 0xE0, 0x04, 0x31, 0xC6, 0x8C, + 0xB5, 0x10, 0x7C, 0x70, 0x8E, 0xA7, 0x82, 0xA5, 0x02, 0x00, 0x10, 0xC2, 0x55, 0x59, 0x10, 0x8C, + 0x84, 0xE0, 0x6D, 0x27, 0x9B, 0xB6, 0xA3, 0x8C, 0x95, 0x55, 0xE5, 0xBD, 0x0F, 0xCE, 0xA1, 0x00, + 0x98, 0x60, 0xB2, 0xD1, 0x37, 0x13, 0xC1, 0x29, 0x25, 0x52, 0x2A, 0xC1, 0x99, 0x36, 0xA6, 0xED, + 0xA4, 0x48, 0x92, 0xFB, 0x27, 0x87, 0x89, 0x10, 0x65, 0x99, 0x7B, 0xEF, 0x47, 0x55, 0x49, 0x09, + 0xD1, 0xD6, 0x9C, 0x9E, 0x9E, 0xBF, 0x7C, 0xF3, 0x1E, 0x61, 0xB2, 0xBF, 0x37, 0x7E, 0xF8, 0xE0, + 0x9E, 0xF7, 0xFE, 0xED, 0xDB, 0xB3, 0xBF, 0xFF, 0xE5, 0x97, 0x89, 0x60, 0x79, 0x5E, 0x30, 0xCE, + 0xAF, 0xAF, 0x67, 0x08, 0x41, 0x91, 0xA5, 0x71, 0xED, 0x1A, 0x63, 0x8D, 0xB1, 0x91, 0x13, 0x2D, + 0x8E, 0xA7, 0x52, 0x1A, 0x13, 0xD2, 0xF7, 0x92, 0x71, 0xB6, 0x5C, 0x36, 0x55, 0x99, 0x51, 0x4A, + 0x22, 0xBB, 0xFF, 0xF5, 0x6C, 0xC1, 0x28, 0xFE, 0xEC, 0xF1, 0xFD, 0x8B, 0xEB, 0x45, 0xDB, 0xF7, + 0x8C, 0x52, 0x8C, 0x71, 0x96, 0xA5, 0xC6, 0x3A, 0xA3, 0xED, 0xF9, 0xE5, 0xFC, 0xC9, 0xC3, 0x23, + 0xA9, 0xCD, 0xD6, 0x41, 0x33, 0xAC, 0xF4, 0xCD, 0xC6, 0xB6, 0x2B, 0x80, 0xF0, 0xA1, 0x23, 0x15, + 0xA1, 0x4D, 0x93, 0xE1, 0x0F, 0xA5, 0xF4, 0xEE, 0xB2, 0x81, 0x8F, 0xED, 0x6D, 0xBB, 0x26, 0xD2, + 0xEE, 0x99, 0x28, 0x5E, 0x51, 0x1B, 0x74, 0xE0, 0x19, 0x61, 0xBD, 0xD2, 0x7F, 0xF3, 0xAB, 0xEF, + 0x2F, 0xAE, 0x96, 0x94, 0x92, 0x07, 0x27, 0x87, 0x57, 0xB3, 0x15, 0x63, 0xDC, 0x3B, 0xD7, 0x4B, + 0x8D, 0x10, 0x0A, 0xDE, 0x2B, 0x6D, 0xA2, 0xFE, 0x3B, 0x9D, 0x8C, 0xF3, 0x2C, 0x3B, 0x3C, 0x18, + 0x07, 0x40, 0xDF, 0x3D, 0x7F, 0xA3, 0x95, 0xA1, 0x94, 0x19, 0x6B, 0x07, 0x36, 0x84, 0x00, 0x08, + 0x90, 0xF7, 0xBE, 0xEF, 0x25, 0xA5, 0xC4, 0x68, 0xB3, 0x37, 0xA9, 0x18, 0x67, 0xF7, 0xEE, 0xED, + 0x4F, 0xC7, 0x55, 0xDF, 0xCB, 0x97, 0xAF, 0xCF, 0x00, 0xE0, 0x70, 0x7F, 0xF2, 0xF2, 0xF4, 0xFA, + 0xAB, 0x17, 0x67, 0x9F, 0x3E, 0x3C, 0x34, 0x66, 0xC0, 0xB2, 0x8D, 0xE1, 0xF5, 0x81, 0x82, 0xF5, + 0x51, 0xEB, 0x64, 0x6B, 0xCA, 0xDC, 0xD5, 0x61, 0x77, 0x9F, 0xFA, 0x10, 0x6E, 0x28, 0xAF, 0x3E, + 0x1C, 0x93, 0xF8, 0x20, 0x6E, 0x8A, 0xDB, 0x3C, 0xE0, 0x08, 0x4C, 0x70, 0xE3, 0xCB, 0x0F, 0x21, + 0xC0, 0x8E, 0xBD, 0x18, 0x75, 0xAA, 0x61, 0x36, 0xD0, 0x8D, 0x37, 0x20, 0x44, 0x70, 0xA0, 0x37, + 0xB3, 0xBB, 0x75, 0x68, 0xDF, 0xDC, 0xD5, 0x26, 0xF5, 0x23, 0x76, 0x8B, 0x09, 0x60, 0xAC, 0x6B, + 0x7B, 0x40, 0x18, 0x79, 0xE7, 0xB3, 0x84, 0xF9, 0xE0, 0x8D, 0xF5, 0x04, 0x63, 0x46, 0x49, 0x96, + 0x70, 0x84, 0x20, 0xF8, 0x30, 0xA6, 0xC4, 0x0E, 0x81, 0x6D, 0x30, 0xD6, 0x46, 0x0A, 0x40, 0xEF, + 0x43, 0xDD, 0xA9, 0xBA, 0xD7, 0x9C, 0x12, 0x65, 0x5D, 0xAF, 0x87, 0x7E, 0xBD, 0xC6, 0xFA, 0xA1, + 0xB3, 0xD9, 0x50, 0x8B, 0x84, 0x94, 0xB1, 0xCB, 0x46, 0x22, 0x14, 0xAB, 0x98, 0x91, 0x87, 0xD0, + 0x2A, 0x33, 0xCE, 0x93, 0x54, 0xD0, 0x5E, 0x19, 0xC1, 0xA8, 0x60, 0x60, 0xAC, 0x73, 0xDE, 0x67, + 0x09, 0x47, 0x00, 0x08, 0x41, 0xC2, 0x69, 0xC2, 0x99, 0xE0, 0xD4, 0x79, 0x6F, 0x8C, 0xE5, 0x9C, + 0x71, 0x4E, 0x63, 0x87, 0x6D, 0x21, 0x18, 0x63, 0x6C, 0xBB, 0xA4, 0x76, 0xD1, 0xE7, 0x96, 0x9E, + 0x0F, 0x77, 0x8E, 0x5D, 0x15, 0xFA, 0xEE, 0xB1, 0xB5, 0x1F, 0x77, 0xDF, 0xFB, 0xA1, 0xF3, 0x12, + 0x21, 0x04, 0xC6, 0xD8, 0xD5, 0xBA, 0xA3, 0x94, 0x3C, 0x7B, 0xFE, 0x4E, 0x1B, 0xC7, 0x00, 0x5B, + 0xEB, 0x82, 0x77, 0x21, 0x0C, 0x71, 0x52, 0x2E, 0x04, 0x00, 0xEA, 0x7B, 0xC9, 0x18, 0x65, 0x8C, + 0xE5, 0x79, 0x1A, 0x3C, 0x9C, 0x1C, 0x1F, 0x69, 0xE3, 0xBA, 0x5E, 0xA6, 0x49, 0xA2, 0x95, 0xA6, + 0x94, 0x16, 0x79, 0xEE, 0x83, 0x4F, 0x53, 0x51, 0x96, 0x79, 0x5D, 0xB7, 0x4A, 0xD9, 0xB6, 0x93, + 0xCE, 0x59, 0xA5, 0x34, 0x82, 0x58, 0x24, 0xE4, 0xBD, 0xF7, 0x94, 0xD2, 0x34, 0x4D, 0x93, 0x24, + 0x41, 0x98, 0x74, 0x9D, 0x7C, 0xFF, 0xFE, 0xD2, 0x39, 0xA7, 0x8D, 0x05, 0x80, 0xFD, 0xBD, 0x71, + 0x9A, 0xF0, 0xE0, 0x43, 0x92, 0x88, 0x3C, 0x13, 0xEB, 0xE5, 0x8A, 0x11, 0x98, 0x94, 0xE2, 0xF9, + 0xBB, 0x59, 0x02, 0x28, 0xCF, 0x12, 0x4A, 0x69, 0xA4, 0x39, 0xC9, 0xF3, 0x0C, 0xBC, 0xFB, 0xFE, + 0xC5, 0xDB, 0xA2, 0x28, 0xCA, 0x3C, 0xD3, 0xDA, 0x60, 0x8C, 0x94, 0xD4, 0xD1, 0xFB, 0x1E, 0xEF, + 0x8E, 0x52, 0xDA, 0x75, 0xDD, 0xFB, 0xF7, 0x57, 0x5C, 0xF0, 0x2C, 0x4B, 0x7D, 0x08, 0x3F, 0xFE, + 0xD1, 0x67, 0x9C, 0x51, 0xCE, 0x99, 0x31, 0xC6, 0xFB, 0x40, 0x30, 0xA6, 0x84, 0x78, 0xEF, 0x10, + 0x84, 0x17, 0xAF, 0xCE, 0xA4, 0x76, 0x08, 0x41, 0x51, 0xE6, 0x5F, 0x7D, 0xF5, 0xBD, 0x52, 0xFA, + 0xDE, 0xD1, 0xC1, 0xF1, 0xC9, 0xB1, 0x35, 0x66, 0xB5, 0x5A, 0x27, 0x69, 0xCA, 0x39, 0x77, 0xCE, + 0xD5, 0x75, 0xA3, 0x94, 0xA2, 0x84, 0x68, 0xEB, 0xBC, 0x0F, 0x22, 0xE1, 0x21, 0x04, 0xA5, 0x14, + 0xE3, 0x0C, 0x21, 0x34, 0xAA, 0x8A, 0xD5, 0x62, 0x3D, 0x9B, 0xCD, 0x63, 0xA1, 0x55, 0xDF, 0x4B, + 0xEF, 0xC3, 0x93, 0x47, 0x27, 0x94, 0xD0, 0xA6, 0x6D, 0x93, 0x44, 0x3C, 0x7E, 0x70, 0xD8, 0x75, + 0xFD, 0xCB, 0x37, 0xE7, 0x52, 0x2A, 0xA5, 0x94, 0x0F, 0xE1, 0x12, 0xC3, 0xEB, 0x77, 0x97, 0x0F, + 0x4F, 0x0E, 0xB6, 0xBC, 0x3E, 0x3B, 0x14, 0xAF, 0xBB, 0xD2, 0x0B, 0x9B, 0x33, 0x5B, 0x2D, 0x23, + 0x0C, 0x14, 0x78, 0xDB, 0x6C, 0xFB, 0x8F, 0xC5, 0x28, 0x3F, 0x2A, 0xA2, 0xB7, 0x24, 0xFC, 0xAE, + 0x5D, 0xB9, 0x2B, 0x61, 0x21, 0x04, 0x42, 0xF0, 0xD5, 0x6C, 0xB5, 0x58, 0xF7, 0xDE, 0xBB, 0x4F, + 0x9F, 0x3C, 0xCA, 0xB3, 0x34, 0x9A, 0x2F, 0x6D, 0x2F, 0x39, 0xE7, 0x52, 0xF6, 0x4A, 0xFB, 0xA8, + 0xFA, 0xC5, 0x72, 0xFD, 0xB6, 0x6D, 0xC5, 0xC9, 0xC1, 0xD5, 0x7C, 0x15, 0x53, 0xEA, 0xBC, 0x0F, + 0xD8, 0xE3, 0x48, 0x25, 0xCF, 0x28, 0x01, 0x8C, 0xD7, 0x75, 0x9B, 0x25, 0x02, 0x63, 0xDC, 0xF5, + 0x72, 0x55, 0x37, 0xC6, 0x58, 0xC1, 0x39, 0x40, 0x28, 0xF2, 0x6C, 0x3A, 0xA9, 0xAA, 0xB2, 0x90, + 0x52, 0xCE, 0xE6, 0xCB, 0xBF, 0xFE, 0x2F, 0xCF, 0xAA, 0x3C, 0x39, 0x9C, 0x56, 0x77, 0x68, 0x17, + 0x3F, 0x00, 0xA9, 0xBB, 0xD2, 0x71, 0x6B, 0xE7, 0xDE, 0x8E, 0xC6, 0xEE, 0xFD, 0xEE, 0xA8, 0x70, + 0xE8, 0x77, 0x8D, 0x06, 0x25, 0x68, 0x5B, 0xFC, 0xEC, 0x42, 0x88, 0x08, 0x10, 0x36, 0x76, 0x93, + 0xF3, 0x37, 0xD9, 0x7F, 0xDB, 0x4C, 0xB4, 0x48, 0x3E, 0xBA, 0xD5, 0xD0, 0xA2, 0xDE, 0x1C, 0x67, + 0x86, 0xFC, 0xF7, 0x3F, 0xFB, 0x4B, 0xB4, 0x63, 0xCC, 0xDF, 0x1C, 0x9B, 0x2F, 0x8C, 0xDF, 0xEA, + 0x43, 0x88, 0x15, 0x48, 0xC6, 0x07, 0x63, 0x1C, 0x42, 0x80, 0x30, 0x12, 0x8C, 0xE6, 0x09, 0x4B, + 0x13, 0x5E, 0x15, 0x69, 0x22, 0x98, 0xB5, 0x8E, 0x90, 0xD8, 0x99, 0xD5, 0x39, 0x17, 0x22, 0x2B, + 0x5E, 0xDB, 0x9B, 0x75, 0x2B, 0x67, 0xEB, 0xBE, 0x95, 0xD6, 0x07, 0x68, 0xA5, 0xD1, 0x26, 0xF6, + 0xD8, 0x06, 0xB4, 0xA1, 0xF3, 0x8A, 0xBD, 0x46, 0xAD, 0xF3, 0xAD, 0x34, 0x52, 0x5B, 0x63, 0x9D, + 0x32, 0x3E, 0x78, 0x40, 0x08, 0x79, 0x17, 0x18, 0x25, 0xB1, 0x1B, 0x2E, 0xA7, 0xD4, 0x38, 0xEF, + 0xBD, 0xA7, 0x04, 0xA7, 0x82, 0x55, 0x59, 0x92, 0x67, 0x9C, 0x20, 0x44, 0x30, 0xE2, 0x8C, 0x62, + 0x8C, 0x28, 0x21, 0x9C, 0x33, 0x3A, 0x24, 0xD3, 0xC7, 0x58, 0x3F, 0xD9, 0x2E, 0xC1, 0x8F, 0x42, + 0xD2, 0xAD, 0x75, 0xF6, 0xB1, 0x01, 0xB8, 0x79, 0xBC, 0xFB, 0x39, 0xDB, 0xB9, 0xD9, 0x51, 0xA4, + 0x6F, 0x59, 0x19, 0x81, 0x32, 0xFA, 0xE5, 0x97, 0xDF, 0xFD, 0xE2, 0xEF, 0x7E, 0xFB, 0xF2, 0xF5, + 0x99, 0x54, 0xD6, 0x58, 0x17, 0x02, 0x68, 0xAD, 0x63, 0x6D, 0x43, 0x64, 0x41, 0x91, 0x4A, 0x1B, + 0x63, 0xAC, 0xB5, 0x1B, 0x68, 0x0B, 0x75, 0xDB, 0x5A, 0xEB, 0xF6, 0xF6, 0xA6, 0x01, 0xA0, 0xA9, + 0x1B, 0xC6, 0x58, 0x92, 0x0A, 0x00, 0xA8, 0xAA, 0x72, 0xB9, 0x5C, 0x1B, 0x63, 0x4F, 0x4E, 0x0E, + 0x39, 0xE7, 0xD7, 0xF3, 0x85, 0xE0, 0x9C, 0x73, 0x86, 0x10, 0x08, 0xC1, 0x8D, 0xB1, 0x08, 0x80, + 0x50, 0x0A, 0x08, 0xE5, 0x59, 0xEA, 0x9D, 0xBB, 0x9E, 0xCD, 0xFB, 0x5E, 0x1E, 0x1D, 0xEE, 0x1F, + 0xDD, 0xDB, 0xCF, 0xF3, 0x74, 0x3C, 0x2A, 0x30, 0xC2, 0x69, 0x9A, 0x20, 0x08, 0xF5, 0x7A, 0x2D, + 0xFB, 0xF6, 0xE9, 0xFD, 0xBD, 0xA6, 0xED, 0xE7, 0xB5, 0x41, 0x08, 0x4B, 0xA9, 0x62, 0x54, 0xC4, + 0x6A, 0x53, 0xA6, 0xE4, 0x6F, 0xFF, 0xCB, 0xB7, 0x9D, 0x34, 0x8C, 0xD1, 0x34, 0x49, 0x10, 0xC6, + 0x84, 0x52, 0xCE, 0x18, 0x65, 0x0C, 0x00, 0x08, 0x46, 0x4A, 0xE9, 0xB7, 0xA7, 0x17, 0xD7, 0xB3, + 0x65, 0x2F, 0x65, 0x9A, 0x26, 0x65, 0x9E, 0xE7, 0x59, 0x36, 0x9B, 0x2F, 0x8D, 0x31, 0xB1, 0x89, + 0xDA, 0x62, 0xB1, 0x6E, 0xDB, 0xCE, 0x39, 0xDB, 0x36, 0xDD, 0xE5, 0xF5, 0x62, 0xDD, 0xCA, 0xA2, + 0x48, 0xD3, 0x24, 0x61, 0x94, 0x54, 0x65, 0x21, 0x38, 0x5B, 0xD7, 0xAD, 0x75, 0x2E, 0xCB, 0xB2, + 0xA6, 0xED, 0xFA, 0xAE, 0xAF, 0x46, 0x55, 0x1C, 0x62, 0x6D, 0x8C, 0xF7, 0x9E, 0x12, 0xC2, 0x38, + 0xB3, 0xD6, 0xC8, 0x5E, 0x85, 0x21, 0xE8, 0x1C, 0x9C, 0xF3, 0x75, 0xD3, 0x52, 0x82, 0x9D, 0xF5, + 0x22, 0x11, 0x4A, 0x1B, 0xAD, 0x75, 0xAF, 0x14, 0xE3, 0x6C, 0x5C, 0x95, 0x89, 0x10, 0x75, 0xDD, + 0x26, 0x9C, 0x72, 0x46, 0x97, 0xAB, 0xA6, 0xED, 0xFA, 0x32, 0xCF, 0x9C, 0x73, 0xDA, 0xBA, 0x51, + 0x99, 0xEF, 0x4F, 0x2B, 0xEB, 0xFC, 0xC6, 0x9D, 0x8D, 0x60, 0x83, 0x5F, 0xBB, 0x02, 0xBA, 0x9D, + 0xFF, 0x4D, 0x60, 0x6D, 0x57, 0x9F, 0xFA, 0xC8, 0xDA, 0xB9, 0xF9, 0xA8, 0x9D, 0x15, 0x72, 0x6B, + 0x09, 0x6D, 0x7D, 0xD2, 0xBB, 0x3E, 0xA0, 0xDD, 0x25, 0x46, 0x08, 0x11, 0x8C, 0xBE, 0x3F, 0x7B, + 0x4F, 0x93, 0xF4, 0x93, 0xC7, 0xF7, 0xE7, 0x8B, 0xF5, 0xF3, 0x57, 0x67, 0x00, 0x20, 0xB5, 0xE9, + 0xA5, 0x52, 0x4A, 0x03, 0xA0, 0xAB, 0xEB, 0x05, 0x8A, 0x61, 0x0A, 0x88, 0x89, 0x9E, 0xF8, 0x57, + 0xBF, 0xFD, 0x9E, 0x52, 0xFA, 0xC5, 0x67, 0x0F, 0x31, 0xA6, 0xDA, 0x98, 0x34, 0x4D, 0xB4, 0x36, + 0x9C, 0xD3, 0xE9, 0x74, 0x2C, 0x95, 0x0E, 0x01, 0xA4, 0x92, 0xC9, 0xC6, 0x97, 0x7F, 0xB8, 0xBF, + 0xD7, 0x76, 0x12, 0x01, 0x34, 0x6D, 0x4F, 0x08, 0x19, 0x55, 0x45, 0x96, 0xA5, 0x55, 0x99, 0x21, + 0x84, 0xE6, 0xAB, 0xFA, 0x8B, 0x27, 0xC7, 0x1B, 0x52, 0xFB, 0x81, 0x10, 0x0F, 0x3E, 0xC4, 0xDC, + 0x5B, 0x72, 0x71, 0x57, 0x10, 0xB6, 0x2F, 0xC7, 0x18, 0xCB, 0x60, 0x78, 0x0E, 0xEF, 0x8A, 0xB7, + 0x8F, 0x10, 0x8A, 0x09, 0x98, 0x08, 0x00, 0x61, 0x82, 0xD1, 0x86, 0x29, 0x2F, 0x86, 0x3D, 0x10, + 0x42, 0x3E, 0x00, 0xD9, 0xF9, 0x8A, 0x98, 0x1A, 0x11, 0x86, 0xEE, 0x9C, 0x1B, 0x01, 0x43, 0x00, + 0x80, 0x36, 0x59, 0xC9, 0xBB, 0x62, 0x8B, 0x00, 0x62, 0x5F, 0xCB, 0xC1, 0x02, 0x82, 0xAD, 0xCB, + 0x73, 0x7B, 0x72, 0xFB, 0xBB, 0xE3, 0x49, 0xEB, 0x01, 0xA1, 0x90, 0x8A, 0x48, 0x4E, 0xED, 0x18, + 0x25, 0xE3, 0x32, 0x4D, 0x05, 0x27, 0x04, 0x3B, 0xE7, 0x68, 0x91, 0x42, 0xE4, 0x75, 0x00, 0x58, + 0x0D, 0x59, 0xE8, 0xA1, 0xE9, 0x4D, 0xEC, 0x7A, 0x88, 0x00, 0x9C, 0xF3, 0xD6, 0x7B, 0xE7, 0x43, + 0x64, 0x90, 0xF6, 0x00, 0x04, 0x0D, 0xE3, 0x37, 0x54, 0xFE, 0x6D, 0x7E, 0x1E, 0x46, 0xE0, 0x42, + 0x40, 0x10, 0x52, 0x4E, 0x26, 0x65, 0x82, 0x10, 0x5A, 0x36, 0x32, 0x84, 0xC0, 0x29, 0xBD, 0xB7, + 0x57, 0x01, 0x04, 0xE7, 0x7D, 0x96, 0x08, 0x4A, 0xB0, 0xE3, 0x6C, 0x93, 0xDC, 0x1F, 0x21, 0x6C, + 0xA8, 0xA4, 0xDF, 0xC6, 0xD1, 0xD1, 0xC6, 0x12, 0x8C, 0xD0, 0xB3, 0x55, 0xA3, 0xB6, 0x1E, 0x90, + 0xDD, 0x69, 0xBB, 0x65, 0x38, 0xDC, 0x3A, 0xB9, 0x7D, 0xE9, 0x16, 0x72, 0xED, 0x22, 0x9A, 0x1F, + 0xA8, 0x1C, 0x03, 0x42, 0x60, 0xB5, 0x3D, 0x3B, 0xBF, 0xC6, 0x84, 0x84, 0x00, 0xCA, 0x18, 0x84, + 0x70, 0xD7, 0xF5, 0xDE, 0x7B, 0xE3, 0x86, 0x5C, 0x41, 0x42, 0x29, 0x13, 0x3C, 0x36, 0x2E, 0xAA, + 0xD7, 0x4D, 0x59, 0x15, 0xCE, 0x7B, 0x6B, 0x6D, 0xDF, 0xEB, 0x75, 0xD3, 0x71, 0x46, 0x19, 0x67, + 0x5D, 0xDF, 0x63, 0x8C, 0x38, 0xE7, 0x8B, 0xC5, 0x32, 0x49, 0x04, 0xE7, 0x3C, 0xCF, 0xB2, 0xB6, + 0xEB, 0x47, 0x65, 0x69, 0xAC, 0xD3, 0x5A, 0x53, 0x82, 0x39, 0xE3, 0xD3, 0xE9, 0xC4, 0x3B, 0xB7, + 0x5C, 0xD5, 0x4A, 0xE9, 0xF9, 0x7C, 0xC5, 0x39, 0xE5, 0x8C, 0xFD, 0xD1, 0x1F, 0xFE, 0xB8, 0x1A, + 0x15, 0x8C, 0xB1, 0xAA, 0x48, 0x29, 0x25, 0xEF, 0x4E, 0xCF, 0xBB, 0xAE, 0x37, 0x5A, 0x1F, 0x1F, + 0xED, 0x09, 0xC6, 0x01, 0x82, 0x0F, 0xE0, 0x9C, 0x6B, 0x9A, 0xA6, 0x2C, 0x4B, 0xE7, 0xFC, 0x6A, + 0xDD, 0xFE, 0xF4, 0xF3, 0xFB, 0xD7, 0xD7, 0x8B, 0xAE, 0x37, 0x7B, 0x7B, 0x93, 0x24, 0x4D, 0x18, + 0x63, 0x1E, 0x82, 0xDD, 0x54, 0xC5, 0x53, 0x82, 0xB5, 0xB1, 0x67, 0x17, 0xB3, 0xA6, 0xE9, 0x0F, + 0x0F, 0xC6, 0xD3, 0xC9, 0x28, 0xF8, 0xB0, 0xAE, 0x9B, 0xEB, 0xF9, 0xD2, 0x7B, 0x57, 0xAF, 0xEB, + 0x35, 0x67, 0x59, 0x96, 0xF6, 0x52, 0x11, 0x8C, 0xD2, 0x84, 0x33, 0x46, 0xD2, 0x44, 0x7C, 0xF6, + 0xE4, 0xA4, 0x28, 0x72, 0x4A, 0x99, 0x32, 0x7A, 0x5C, 0x95, 0x10, 0xFC, 0xB3, 0xE7, 0xAF, 0xFA, + 0x5E, 0x1B, 0xAD, 0xAD, 0x35, 0x55, 0x55, 0xAE, 0x56, 0x35, 0xE7, 0x8C, 0x03, 0xC4, 0xD2, 0x6E, + 0x91, 0x20, 0xAD, 0x14, 0xA5, 0xD4, 0x18, 0x13, 0x4B, 0xDC, 0x31, 0xC6, 0xDE, 0xB9, 0xE0, 0xBD, + 0xD6, 0x06, 0xE3, 0x7E, 0x3E, 0x5B, 0xEE, 0x1F, 0x4C, 0xD3, 0x3C, 0x6B, 0x9A, 0x56, 0x6B, 0xBB, + 0x26, 0xED, 0x83, 0x7B, 0x07, 0xF7, 0x0E, 0xF7, 0xCF, 0xCE, 0x2F, 0x0E, 0xF6, 0x46, 0x82, 0xD3, + 0xFF, 0xED, 0xFF, 0xFC, 0x45, 0x96, 0x25, 0x45, 0x9E, 0x52, 0x4A, 0xBF, 0x7F, 0x79, 0xF6, 0xF4, + 0xF1, 0x31, 0xC6, 0x43, 0xD8, 0xEA, 0x96, 0xBA, 0xB1, 0xB3, 0xFD, 0x0C, 0xFF, 0x6F, 0x9D, 0x44, + 0x9B, 0x93, 0xBF, 0xCF, 0xAF, 0xBF, 0x9D, 0xFA, 0xBB, 0x92, 0xBF, 0xBB, 0x8A, 0x3E, 0xDC, 0x17, + 0x21, 0x04, 0x08, 0x01, 0x28, 0x25, 0x01, 0xE0, 0xAB, 0xEF, 0x5E, 0x4C, 0x0A, 0xFE, 0xDD, 0xE9, + 0xF2, 0xFD, 0x8B, 0x53, 0x67, 0x5D, 0x9E, 0x25, 0x01, 0xC0, 0x79, 0xDF, 0xB4, 0xBD, 0xE0, 0x2C, + 0xCA, 0x7F, 0xEC, 0x44, 0xB7, 0x5A, 0x37, 0x5D, 0xAF, 0x8A, 0x3C, 0x2D, 0xF2, 0x8C, 0x60, 0xF2, + 0xED, 0xB3, 0x37, 0x07, 0x7B, 0x93, 0x3C, 0x4B, 0xCE, 0xAF, 0xE6, 0xCB, 0x55, 0xAD, 0xB4, 0x39, + 0xBE, 0x77, 0x50, 0xB7, 0x1D, 0x63, 0x90, 0x26, 0x55, 0x5D, 0xD7, 0x00, 0x28, 0x4B, 0x53, 0x8C, + 0xA0, 0x97, 0x12, 0x21, 0xE8, 0x7A, 0x99, 0x24, 0xC9, 0x7A, 0xDD, 0x74, 0x52, 0xE5, 0x59, 0x72, + 0x74, 0x30, 0x2D, 0xF2, 0xC4, 0xFA, 0x20, 0x04, 0x57, 0x5A, 0xA3, 0x8D, 0x23, 0xE9, 0xF7, 0x40, + 0xF6, 0xEF, 0xBC, 0x7D, 0x84, 0xC8, 0x0E, 0xF7, 0x51, 0x74, 0x79, 0x7B, 0x80, 0xD8, 0xCD, 0x0E, + 0xA1, 0x6D, 0x1E, 0x52, 0xCC, 0x36, 0x0D, 0x91, 0x02, 0x74, 0x83, 0xF5, 0x28, 0x04, 0x44, 0x36, + 0x64, 0x30, 0x36, 0xDA, 0x4C, 0x61, 0x20, 0x6A, 0xC3, 0x18, 0xBC, 0x1F, 0x8C, 0x43, 0xB4, 0x09, + 0x3C, 0xEE, 0xFE, 0x9E, 0xAD, 0x43, 0x93, 0xFC, 0x77, 0x3F, 0xFB, 0x4B, 0xD8, 0x69, 0x93, 0x31, + 0xBC, 0xBC, 0xBD, 0x9B, 0xCD, 0xC9, 0xED, 0x9B, 0x09, 0x46, 0xD3, 0x2A, 0x49, 0x05, 0x65, 0x94, + 0xE4, 0x29, 0x67, 0x84, 0x84, 0x10, 0x22, 0xA5, 0xA8, 0xB5, 0x56, 0x5B, 0xA7, 0xB4, 0xA9, 0x3B, + 0xD5, 0xF4, 0xAA, 0x91, 0xA6, 0x93, 0xC6, 0xB8, 0x81, 0xF6, 0x7B, 0x48, 0x81, 0x40, 0x10, 0x5B, + 0x03, 0xC4, 0xE9, 0xF7, 0x1B, 0x12, 0x93, 0xDD, 0xD1, 0x43, 0x68, 0x68, 0x9E, 0xC6, 0x19, 0xC9, + 0x05, 0x25, 0x78, 0x20, 0xC0, 0xA1, 0x94, 0x94, 0x19, 0x4F, 0xF8, 0xA6, 0xE8, 0x87, 0x12, 0xCE, + 0xA9, 0x10, 0x4C, 0x08, 0x16, 0x49, 0x1D, 0x76, 0xB6, 0x87, 0xE1, 0xC1, 0x6E, 0xEC, 0xFC, 0xD6, + 0xAE, 0x72, 0x7B, 0x73, 0xFC, 0xBD, 0xC7, 0x5D, 0x2C, 0x43, 0x1F, 0xEE, 0xB4, 0xBB, 0x97, 0x79, + 0xEF, 0x19, 0x25, 0x49, 0x9A, 0x5C, 0xCF, 0x16, 0xCF, 0x5F, 0x9C, 0x51, 0x4A, 0x01, 0x01, 0x26, + 0x14, 0x42, 0x70, 0xCE, 0x01, 0xC2, 0x8C, 0x32, 0x4A, 0x29, 0x60, 0xEC, 0x9C, 0xC3, 0x04, 0x77, + 0x4D, 0xAF, 0x94, 0x56, 0x4A, 0x1B, 0x6B, 0xFB, 0x4E, 0xD6, 0x75, 0x17, 0x00, 0xEA, 0xB6, 0xBD, + 0xBA, 0x9C, 0xA5, 0x89, 0x78, 0xF4, 0xF0, 0x24, 0x4B, 0xD3, 0x5E, 0xAA, 0x34, 0x4D, 0x26, 0x93, + 0x71, 0x55, 0x95, 0x4A, 0xE9, 0xE9, 0xA4, 0xF2, 0xC1, 0x5F, 0x5C, 0x5D, 0x37, 0x6D, 0xDF, 0x77, + 0x52, 0x5B, 0xCB, 0x18, 0xCB, 0xB2, 0x2C, 0xCB, 0x32, 0x84, 0x50, 0xDB, 0x76, 0x56, 0x9B, 0xFD, + 0xFD, 0xE9, 0x78, 0x32, 0xB2, 0xCE, 0xED, 0x4F, 0xAB, 0x44, 0x70, 0x6B, 0xEC, 0x6A, 0xB5, 0xB6, + 0xC6, 0xEC, 0x4D, 0x27, 0x45, 0x59, 0x74, 0x9D, 0xC4, 0x18, 0x5B, 0x1F, 0x2E, 0xAE, 0x57, 0x65, + 0x99, 0x73, 0xCE, 0x11, 0x42, 0x0F, 0x8E, 0x27, 0xA3, 0x22, 0x99, 0x37, 0x16, 0x61, 0x92, 0x24, + 0x49, 0x59, 0xE6, 0xEB, 0xA6, 0x75, 0x3E, 0x10, 0x42, 0x9C, 0xF3, 0x01, 0xC2, 0x72, 0x55, 0xBF, + 0x7C, 0xFD, 0xFE, 0xE5, 0xAB, 0x53, 0x6D, 0x8C, 0x75, 0x3E, 0x4D, 0x04, 0x67, 0xDC, 0x79, 0xAF, + 0x8D, 0x51, 0x4A, 0x03, 0x40, 0x27, 0x55, 0xDF, 0x4B, 0x8C, 0x31, 0xA3, 0x94, 0x12, 0xDC, 0xB6, + 0x5D, 0xDD, 0x4A, 0x8C, 0xD1, 0xCB, 0x57, 0x6F, 0x38, 0xA5, 0x59, 0x96, 0xCD, 0x17, 0xAB, 0x67, + 0xCF, 0x5E, 0xCD, 0x66, 0x0B, 0xC6, 0x98, 0x94, 0x32, 0xCB, 0x33, 0x42, 0x68, 0xD3, 0x76, 0x00, + 0x9E, 0x52, 0x62, 0xAC, 0x0B, 0x10, 0x62, 0x37, 0xB3, 0xC8, 0xE8, 0xCA, 0x39, 0xF7, 0xCE, 0x13, + 0x4A, 0x9D, 0x77, 0x7D, 0x27, 0xAD, 0x73, 0x04, 0x63, 0xA9, 0x0C, 0x21, 0xA4, 0x2A, 0x0B, 0x4A, + 0x49, 0xD3, 0x76, 0x18, 0x63, 0xE7, 0x7D, 0x91, 0xA5, 0xE3, 0x51, 0x39, 0x19, 0x97, 0x82, 0xF3, + 0xAA, 0x2C, 0x9C, 0x47, 0x00, 0xB0, 0x37, 0xAE, 0x10, 0xC1, 0x08, 0xC1, 0xD1, 0xFE, 0x18, 0x63, + 0xE4, 0xBD, 0xDF, 0xA6, 0xD2, 0xEF, 0xCC, 0x2E, 0x0C, 0x62, 0xBC, 0xB3, 0xE8, 0x77, 0x96, 0x04, + 0xDA, 0xC1, 0xB5, 0x1B, 0xA5, 0xFB, 0xD6, 0xA4, 0xDF, 0x5A, 0x1B, 0xBB, 0x6B, 0x6F, 0x5B, 0x70, + 0x82, 0x36, 0x26, 0x2E, 0x21, 0x38, 0x11, 0x0C, 0x63, 0xBC, 0x98, 0xAF, 0xBE, 0x7B, 0xF1, 0xEE, + 0xE9, 0xC3, 0xA3, 0x57, 0x67, 0xCB, 0xA6, 0x55, 0x52, 0x69, 0xC6, 0xD9, 0xC1, 0x74, 0x4C, 0x08, + 0xC9, 0xB3, 0x84, 0x51, 0x8A, 0x10, 0xEA, 0xA5, 0x92, 0x52, 0xC5, 0xB5, 0x96, 0xE7, 0x59, 0x8C, + 0xB4, 0x24, 0x82, 0x13, 0x42, 0x7A, 0xA9, 0xF3, 0x3C, 0x7B, 0xFC, 0xE0, 0xF0, 0xB3, 0xA7, 0x0F, + 0x8F, 0x8F, 0xF6, 0x9C, 0x0F, 0xFB, 0xD3, 0x71, 0x22, 0x44, 0xDB, 0x76, 0x88, 0x60, 0xE7, 0xFC, + 0x62, 0xB9, 0x3A, 0xD8, 0x9F, 0xD6, 0x4D, 0xDB, 0xB4, 0x5D, 0xAC, 0x4F, 0x6A, 0xDA, 0xAE, 0x97, + 0xF2, 0xE2, 0x72, 0x16, 0x42, 0x98, 0x8C, 0x4B, 0x84, 0x30, 0x04, 0x5F, 0x64, 0xA9, 0xBB, 0xC9, + 0x84, 0x08, 0xBB, 0x72, 0x84, 0x76, 0x9C, 0x86, 0x77, 0xA5, 0x06, 0xA1, 0x4D, 0x3A, 0xEF, 0x4E, + 0xB5, 0x0C, 0x0C, 0x24, 0x57, 0x78, 0x3B, 0x90, 0x68, 0xC8, 0x2A, 0x47, 0x74, 0xD3, 0xA2, 0xF8, + 0x96, 0x60, 0x62, 0x3C, 0xA4, 0x04, 0x3B, 0xEF, 0x11, 0x42, 0xDE, 0x07, 0x17, 0x1D, 0x5E, 0x37, + 0xE1, 0xDD, 0x6D, 0xF7, 0x89, 0x2D, 0x1B, 0xE5, 0x0D, 0x6C, 0x84, 0x10, 0x06, 0xF6, 0x8B, 0x6D, + 0x70, 0x74, 0x7B, 0x0F, 0x1B, 0xA3, 0x14, 0x60, 0xC3, 0xD4, 0x1C, 0x6D, 0xD7, 0x10, 0x42, 0xEC, + 0xAA, 0x8B, 0x00, 0xF9, 0x5E, 0x77, 0x52, 0x63, 0x8C, 0x7C, 0x08, 0xC1, 0x83, 0xB1, 0x4E, 0x1B, + 0x67, 0x9D, 0xB7, 0x3E, 0x68, 0xEB, 0xAD, 0xFB, 0xA0, 0xCC, 0x09, 0x45, 0xC6, 0x41, 0x8A, 0xAD, + 0xF3, 0xC6, 0x3A, 0x40, 0x40, 0x29, 0xF1, 0x01, 0xC2, 0xD0, 0x47, 0xD2, 0x6F, 0x94, 0xEF, 0x9B, + 0xEB, 0xAD, 0xF3, 0x75, 0xEF, 0xB1, 0x34, 0x94, 0x62, 0x8C, 0xC0, 0x5A, 0x47, 0x30, 0x76, 0x3E, + 0x60, 0x04, 0x42, 0xB0, 0x44, 0xB0, 0x48, 0x45, 0xB0, 0x63, 0x81, 0xC3, 0xD6, 0x26, 0xDF, 0x1D, + 0xFD, 0xDD, 0x75, 0x19, 0xBF, 0xE3, 0xA3, 0x9A, 0xD7, 0x47, 0x8F, 0xBB, 0x46, 0xC5, 0x76, 0x70, + 0x77, 0x3F, 0x7C, 0xBB, 0xC3, 0x1B, 0x63, 0x42, 0x80, 0xBF, 0xFF, 0xF5, 0xB7, 0x9C, 0xF1, 0x77, + 0xA7, 0x97, 0x52, 0x69, 0x00, 0xC0, 0x88, 0x60, 0x0A, 0x52, 0x2A, 0xCA, 0xA8, 0x07, 0x30, 0xDA, + 0x79, 0xEF, 0xB5, 0x52, 0xB1, 0xDD, 0x45, 0x96, 0xA5, 0x8B, 0xD5, 0xDA, 0x58, 0xA7, 0x74, 0x6B, + 0x9D, 0x0F, 0x1E, 0x9A, 0x5E, 0x8E, 0x46, 0xC5, 0xC1, 0xE3, 0xE9, 0x64, 0x5C, 0x95, 0x65, 0x91, + 0xA6, 0xA2, 0x28, 0xB2, 0xD9, 0x7C, 0xB5, 0x5E, 0x37, 0x94, 0xD1, 0xAE, 0xEB, 0xCF, 0x2F, 0xAE, + 0xAA, 0xB2, 0x38, 0xD8, 0x9B, 0xCE, 0xE6, 0x4B, 0xCE, 0xE8, 0x0F, 0x3E, 0x7F, 0x42, 0x19, 0xF7, + 0xDE, 0x1B, 0x63, 0xF6, 0xF7, 0xC7, 0x5A, 0xEB, 0xB2, 0xC8, 0x30, 0xC6, 0x4D, 0x2B, 0x29, 0xC1, + 0xBF, 0xFD, 0xEA, 0x7B, 0xC6, 0xD9, 0x78, 0x5C, 0x71, 0x21, 0x44, 0x22, 0xD2, 0x2C, 0xC5, 0x08, + 0x23, 0x04, 0xB3, 0x95, 0x44, 0x94, 0x5A, 0x1F, 0x3C, 0x20, 0xED, 0xFC, 0xB4, 0x4A, 0x19, 0xF2, + 0x8B, 0x75, 0xAF, 0xB4, 0x49, 0xB3, 0x54, 0x70, 0xAE, 0x94, 0x16, 0x82, 0x33, 0xC6, 0xBC, 0x0F, + 0x94, 0x91, 0x3C, 0x49, 0xBE, 0xFC, 0xF2, 0xEB, 0x5F, 0x7F, 0xF5, 0xBC, 0x6F, 0xFB, 0xFD, 0xFD, + 0xC9, 0x0F, 0xBF, 0xF8, 0x04, 0x21, 0xD4, 0x2B, 0x95, 0xA6, 0x49, 0x91, 0x67, 0x21, 0x04, 0x46, + 0xC9, 0x72, 0x5D, 0x4B, 0xA5, 0x39, 0xA3, 0x3C, 0xB6, 0xFE, 0xF3, 0xE0, 0x42, 0xB0, 0xCE, 0xEF, + 0xEF, 0xEF, 0x37, 0x5D, 0xDF, 0x69, 0xF3, 0xFA, 0xF5, 0xBB, 0x7A, 0x55, 0xC7, 0x5C, 0x36, 0x2E, + 0xB8, 0x54, 0x8A, 0x51, 0x57, 0x16, 0x59, 0x88, 0x06, 0x4E, 0x08, 0x18, 0xA1, 0xA6, 0xEB, 0x38, + 0xA5, 0x20, 0x06, 0xFA, 0x04, 0xEB, 0x3D, 0x58, 0xDB, 0xB6, 0xB2, 0xE9, 0x55, 0xE4, 0xBC, 0xF5, + 0x60, 0x67, 0xF3, 0x65, 0x9A, 0x26, 0x79, 0x9E, 0x25, 0x42, 0x2C, 0x17, 0x6B, 0xCE, 0xE8, 0xB2, + 0x6E, 0xF2, 0x2C, 0x25, 0x04, 0x55, 0x65, 0xFE, 0xCF, 0xFF, 0xE4, 0xA7, 0xEB, 0xA6, 0xFF, 0xD5, + 0x6F, 0x9F, 0x29, 0x6D, 0x70, 0x40, 0x67, 0x97, 0x8B, 0x75, 0xD3, 0x4D, 0x46, 0xC5, 0xE3, 0x07, + 0x87, 0xDA, 0x58, 0xB4, 0x33, 0x71, 0xB0, 0x71, 0x10, 0x47, 0x77, 0xD8, 0xDD, 0x10, 0xE5, 0x5D, + 0x6D, 0xEB, 0xF7, 0xA0, 0x18, 0xEC, 0xEC, 0xA3, 0x9B, 0xEB, 0x3F, 0xB8, 0x38, 0x40, 0xA0, 0x84, + 0x28, 0xA5, 0x7E, 0xFD, 0xF5, 0xCB, 0xCB, 0xD9, 0xBA, 0x69, 0x5A, 0x46, 0xC8, 0x77, 0xCF, 0x4E, + 0x4F, 0x2F, 0xAE, 0xB5, 0x76, 0xDA, 0x58, 0xA9, 0xF4, 0xBA, 0x69, 0x39, 0x67, 0x14, 0x63, 0xE5, + 0x07, 0xBA, 0x17, 0x00, 0x08, 0x01, 0x30, 0x82, 0x34, 0x15, 0x07, 0xFB, 0x53, 0x00, 0x78, 0x77, + 0x7A, 0x5E, 0x14, 0x79, 0xEC, 0x09, 0x3D, 0xAA, 0xB2, 0xD3, 0xF7, 0x57, 0x9F, 0x3E, 0xBE, 0x5F, + 0x15, 0xBA, 0x93, 0x3A, 0x00, 0x58, 0x6F, 0x31, 0xC2, 0x57, 0xD7, 0xF3, 0x75, 0x6D, 0xD7, 0x75, + 0x2B, 0x38, 0x9F, 0x8E, 0x47, 0x5C, 0xF0, 0x37, 0x6F, 0xCF, 0x9C, 0xF7, 0xA3, 0xAA, 0x3C, 0xDC, + 0x9B, 0xFA, 0xE0, 0xDF, 0x9F, 0xCF, 0x16, 0xCB, 0x3A, 0x04, 0xFF, 0xDF, 0xFC, 0xD3, 0x9F, 0x1E, + 0xEC, 0x8F, 0x42, 0x08, 0xC6, 0x58, 0x8C, 0xB0, 0x75, 0xEE, 0xAE, 0xD4, 0x84, 0x0F, 0xC3, 0x94, + 0x7E, 0x6B, 0xED, 0x01, 0xDC, 0x80, 0x06, 0x00, 0x00, 0xC4, 0xE6, 0xE1, 0x04, 0xC7, 0x6B, 0x6E, + 0x64, 0x73, 0x9B, 0x34, 0xBA, 0x75, 0x72, 0xDD, 0x7C, 0x26, 0x42, 0x01, 0xBC, 0xF7, 0xB0, 0x2D, + 0x1B, 0x88, 0xAC, 0xF0, 0x68, 0x53, 0x33, 0xB3, 0xFB, 0x03, 0x36, 0xAD, 0x59, 0x87, 0xED, 0x67, + 0xD8, 0x1B, 0xFE, 0x87, 0x7F, 0xF3, 0xF3, 0x68, 0xAA, 0x6E, 0x10, 0x6D, 0xD8, 0x37, 0x36, 0x5D, + 0x3E, 0xA2, 0x37, 0x0C, 0x36, 0x70, 0x18, 0x10, 0x02, 0xE7, 0x83, 0x52, 0x4E, 0x19, 0xA3, 0xAD, + 0xD3, 0xD6, 0x77, 0x52, 0x6B, 0xE3, 0x7B, 0x6D, 0xEB, 0x5E, 0x77, 0xCA, 0x6A, 0x1B, 0x8C, 0xF5, + 0x6E, 0x33, 0xC1, 0x18, 0x23, 0xC1, 0x08, 0x25, 0x84, 0x51, 0xCC, 0x08, 0x8A, 0x2D, 0xC8, 0x10, + 0xC2, 0x82, 0x91, 0x84, 0x92, 0x8C, 0x53, 0x41, 0x49, 0x9A, 0x30, 0x46, 0x49, 0xCC, 0x64, 0xDF, + 0x2D, 0x58, 0x65, 0x04, 0x73, 0x8A, 0x83, 0x0F, 0x82, 0x91, 0x22, 0xE1, 0x55, 0x9E, 0x14, 0x19, + 0xDF, 0x50, 0x4D, 0x0C, 0x99, 0xAB, 0x30, 0x14, 0x60, 0x92, 0x5B, 0x18, 0x7F, 0xCB, 0x9F, 0x75, + 0x33, 0x0A, 0x1F, 0xEA, 0xFC, 0xBB, 0xAF, 0xEE, 0x1E, 0x77, 0x4F, 0xDE, 0xFA, 0x84, 0xBB, 0x2F, + 0x45, 0xE8, 0xA4, 0x84, 0xF4, 0x52, 0xFD, 0xD5, 0x5F, 0xFF, 0xEA, 0xE5, 0xAB, 0xF7, 0x3E, 0x00, + 0x13, 0x22, 0x04, 0xE8, 0xA5, 0x0A, 0x01, 0x28, 0xA3, 0x3E, 0x84, 0x34, 0x49, 0x9C, 0x77, 0x4A, + 0x69, 0x42, 0x69, 0x96, 0x67, 0x42, 0x24, 0x94, 0xD0, 0xA6, 0x69, 0xB5, 0x31, 0x08, 0x21, 0xEB, + 0x3C, 0x22, 0xF8, 0xF0, 0x70, 0xFF, 0xC1, 0xC9, 0xBD, 0xE9, 0x64, 0x24, 0x7B, 0xA9, 0xB4, 0x06, + 0xC0, 0x84, 0x90, 0x22, 0xCF, 0x16, 0xAB, 0x75, 0x0C, 0x08, 0x08, 0xCE, 0x92, 0x44, 0xA4, 0x69, + 0x7A, 0x70, 0x30, 0x3D, 0x39, 0x39, 0x4C, 0xD3, 0x24, 0x9E, 0x11, 0x9C, 0x67, 0x69, 0x72, 0x78, + 0x30, 0x5D, 0x2E, 0x56, 0x9D, 0x54, 0x00, 0xC1, 0x18, 0xBB, 0xBF, 0x3F, 0x1D, 0x8F, 0x2A, 0xAD, + 0x0D, 0x00, 0x20, 0x84, 0xB3, 0x44, 0xBC, 0x7A, 0xF3, 0x96, 0x32, 0xE1, 0x03, 0x08, 0x21, 0xAA, + 0xF1, 0x48, 0x08, 0xB1, 0x58, 0xD6, 0x2F, 0x5F, 0xBD, 0x4B, 0x12, 0x41, 0x28, 0x3F, 0xBF, 0x5A, + 0x46, 0x1A, 0xD2, 0x3C, 0xCB, 0x38, 0x67, 0x94, 0xD2, 0x10, 0xBC, 0x73, 0xAE, 0x69, 0xDA, 0xEF, + 0x9F, 0xBF, 0xBE, 0x9A, 0x2D, 0xB2, 0x2C, 0xFD, 0xEC, 0xD3, 0x27, 0xD6, 0xFA, 0xB6, 0xED, 0x28, + 0xA3, 0x21, 0x00, 0xA3, 0xC4, 0x39, 0x8F, 0x30, 0x9E, 0x2F, 0xD7, 0x9C, 0xB3, 0xAA, 0xCC, 0x0E, + 0x0E, 0x26, 0x17, 0x57, 0x8B, 0xF3, 0xCB, 0xB9, 0x51, 0xA6, 0x2C, 0x8B, 0xC9, 0xB8, 0x0A, 0x00, + 0x9C, 0xF3, 0x7B, 0x47, 0x07, 0x4D, 0xDD, 0xCC, 0x67, 0x73, 0x63, 0x2C, 0xE7, 0xDC, 0x39, 0x0F, + 0x10, 0xAA, 0xAA, 0xEC, 0xBA, 0x1E, 0x23, 0xA4, 0x8C, 0x61, 0x94, 0x71, 0xC6, 0x03, 0x0A, 0x9C, + 0x71, 0xCE, 0x39, 0x26, 0xD8, 0xF9, 0x80, 0x10, 0x76, 0xDE, 0x6B, 0x65, 0x42, 0x08, 0x89, 0x60, + 0xDA, 0x58, 0x40, 0x48, 0x69, 0xEB, 0x83, 0xCF, 0xB3, 0x74, 0xB9, 0xAA, 0x9B, 0xA6, 0x4B, 0x84, + 0xA8, 0xCA, 0x0C, 0x61, 0x6C, 0x7D, 0xB0, 0xD6, 0xE5, 0x29, 0x7F, 0x78, 0x72, 0x10, 0x02, 0x9C, + 0x5F, 0xCE, 0xBB, 0x4E, 0x9D, 0x5F, 0x2D, 0xBD, 0xF7, 0x9F, 0x3E, 0x3E, 0xC6, 0x9B, 0xE6, 0x35, + 0x71, 0x4B, 0xBF, 0x35, 0x9B, 0xB7, 0x9E, 0x7E, 0xD4, 0xAF, 0xFA, 0xD1, 0xF5, 0x70, 0x6B, 0x63, + 0xDB, 0x39, 0x89, 0xB6, 0x2A, 0x60, 0x22, 0x18, 0x67, 0x4C, 0x70, 0xFA, 0x7F, 0xFD, 0xD5, 0x2F, + 0xBF, 0x7B, 0x33, 0xE3, 0x5C, 0xD4, 0x8D, 0xCC, 0xF2, 0xB4, 0x28, 0x32, 0x65, 0x43, 0x9E, 0xA7, + 0x75, 0xD3, 0x2D, 0x16, 0xAB, 0xBA, 0x6E, 0xAF, 0xAF, 0x97, 0xB3, 0xC5, 0xDA, 0x18, 0x13, 0xF3, + 0x7B, 0xBB, 0xAE, 0x8F, 0x9A, 0x48, 0xD3, 0xB6, 0x98, 0x50, 0x4A, 0x49, 0x9E, 0xA5, 0x4A, 0xE9, + 0xD5, 0xAA, 0xF6, 0xDE, 0xFF, 0xE4, 0x87, 0x4F, 0xD7, 0x75, 0xFB, 0xFE, 0x62, 0x3E, 0x19, 0x15, + 0x9C, 0xD1, 0x2F, 0xBF, 0xFA, 0xDE, 0xFB, 0x60, 0xAC, 0x09, 0x00, 0x94, 0x50, 0x21, 0x38, 0x21, + 0x84, 0x52, 0x12, 0xB7, 0xA5, 0xC7, 0x0F, 0xEF, 0xFD, 0xE8, 0xF3, 0x27, 0x4F, 0x1F, 0x1F, 0xFF, + 0xE0, 0xE9, 0x23, 0x21, 0xD8, 0xDB, 0xD3, 0x0B, 0x8C, 0xE9, 0x8B, 0x77, 0x97, 0xB3, 0xC5, 0x3A, + 0x11, 0x8C, 0x51, 0xAA, 0xB4, 0x11, 0x82, 0x6D, 0xE3, 0x58, 0x77, 0x55, 0xB0, 0xED, 0x9D, 0xC6, + 0xDA, 0xD0, 0x8D, 0x63, 0x0A, 0x6D, 0xEF, 0x76, 0x23, 0x0E, 0x68, 0x53, 0x05, 0x84, 0xB6, 0x96, + 0x0B, 0xD9, 0x9E, 0xDC, 0x0E, 0xE3, 0x66, 0xB8, 0xFC, 0xD6, 0x68, 0xDB, 0x98, 0xF9, 0x61, 0x9B, + 0x09, 0x86, 0x80, 0x10, 0x1C, 0xC3, 0x2F, 0x18, 0x63, 0x1A, 0x89, 0x1B, 0x08, 0xA1, 0x04, 0x93, + 0xA8, 0xCB, 0x61, 0x44, 0xFE, 0xEC, 0xDF, 0xFE, 0x7C, 0xE0, 0xBA, 0xD8, 0xFC, 0x6A, 0xB8, 0x81, + 0xB3, 0xAD, 0x0E, 0x3E, 0x78, 0xAF, 0x86, 0x60, 0x34, 0x02, 0x18, 0xBA, 0xD7, 0x06, 0xEB, 0xBC, + 0xF7, 0xE0, 0x7C, 0x90, 0xC6, 0x86, 0x9D, 0x4A, 0xCE, 0x0D, 0xA8, 0x44, 0xBD, 0x1E, 0x08, 0x46, + 0x45, 0x42, 0x47, 0x45, 0x82, 0x11, 0x4A, 0x39, 0x2B, 0x52, 0x36, 0x2E, 0x93, 0x2C, 0x61, 0x65, + 0xC6, 0xAB, 0x3C, 0x19, 0xE5, 0xA2, 0xCA, 0x45, 0xCA, 0x29, 0xC1, 0x28, 0xE5, 0x94, 0x52, 0x8C, + 0x11, 0x4A, 0x38, 0x2D, 0x32, 0x9E, 0x30, 0xC2, 0x28, 0x26, 0x18, 0x15, 0xA9, 0x60, 0x14, 0x53, + 0x4A, 0xD2, 0x84, 0x73, 0x36, 0xC4, 0xCE, 0xA2, 0x46, 0xB6, 0x9B, 0x85, 0x7F, 0x0B, 0x80, 0x76, + 0xB7, 0xD0, 0x0F, 0xC2, 0xEA, 0xFF, 0xB0, 0x95, 0xFA, 0x81, 0x53, 0xF3, 0x0E, 0x84, 0xED, 0x3A, + 0xC5, 0xC2, 0x26, 0x4D, 0xD9, 0x39, 0xF7, 0x1F, 0xFF, 0xEA, 0xEF, 0xAF, 0xAE, 0x97, 0x1B, 0xE2, + 0x2A, 0x9F, 0xA6, 0x22, 0x11, 0xC2, 0x38, 0x87, 0x31, 0x4A, 0xD2, 0x24, 0x56, 0x51, 0x31, 0x21, + 0x08, 0x21, 0x5D, 0xD7, 0xAD, 0x96, 0xEB, 0xBA, 0xE9, 0x22, 0x9D, 0x86, 0x71, 0xCE, 0xFB, 0x90, + 0x67, 0x39, 0xA5, 0xF4, 0xF4, 0xF4, 0x7C, 0xB9, 0x58, 0x4A, 0x29, 0xB9, 0x10, 0x75, 0xDB, 0xD5, + 0x75, 0x83, 0x20, 0x94, 0x65, 0x21, 0x8D, 0x49, 0x13, 0xF1, 0xE0, 0xFE, 0xBD, 0xC3, 0x83, 0x29, + 0x65, 0x84, 0x52, 0x4A, 0x29, 0x8D, 0x3D, 0x65, 0xD1, 0x50, 0x5B, 0xEB, 0x8C, 0x56, 0xEB, 0x55, + 0x3D, 0x9E, 0x8C, 0x27, 0x93, 0x51, 0x9A, 0xA6, 0x6D, 0xDB, 0x2D, 0xAF, 0xAF, 0xAA, 0x51, 0x39, + 0x99, 0x8E, 0xB5, 0x92, 0x5F, 0x7E, 0xF9, 0x55, 0x9A, 0x15, 0xAB, 0xBA, 0x33, 0xD6, 0x63, 0x42, + 0xAE, 0x67, 0x4B, 0xA5, 0xF5, 0x62, 0xBE, 0xAC, 0x46, 0x65, 0x9A, 0x66, 0xA7, 0x17, 0x73, 0xCA, + 0x68, 0xEC, 0xE5, 0x1E, 0x2D, 0x3B, 0x29, 0xD5, 0xC5, 0xE5, 0xEC, 0xF2, 0x72, 0x21, 0xFB, 0x0E, + 0x10, 0xFE, 0xA3, 0x3F, 0xFC, 0x49, 0x51, 0xE6, 0x17, 0x97, 0xD7, 0x67, 0x67, 0x17, 0x9F, 0x3C, + 0x79, 0xB8, 0x37, 0x1D, 0x71, 0x4A, 0x66, 0xB3, 0xF9, 0xEB, 0x77, 0x67, 0x75, 0xD3, 0xC6, 0x84, + 0x7B, 0x8C, 0xA0, 0x69, 0x3A, 0x00, 0x22, 0x04, 0x17, 0x82, 0x53, 0x4A, 0x8D, 0xB5, 0x80, 0x50, + 0x5C, 0x7F, 0xF3, 0xC5, 0x72, 0x3E, 0x5B, 0xA2, 0x8D, 0x61, 0x1E, 0x20, 0x3C, 0x7D, 0xFA, 0x88, + 0x31, 0xB6, 0x5A, 0xAD, 0x31, 0xC2, 0x91, 0x6E, 0x87, 0x52, 0x1A, 0xBC, 0x67, 0x8C, 0x61, 0x84, + 0x8D, 0x35, 0x9C, 0x33, 0x08, 0x28, 0xB2, 0xA4, 0xA4, 0x82, 0x19, 0xEB, 0x63, 0x13, 0x12, 0x82, + 0xF1, 0x64, 0x5C, 0x11, 0x82, 0xE7, 0xCB, 0x75, 0x00, 0x60, 0x94, 0x55, 0x65, 0x1E, 0x69, 0xAC, + 0x8D, 0x75, 0x08, 0xD0, 0xD1, 0xC1, 0x78, 0x32, 0x2A, 0xDF, 0x5F, 0xCC, 0x4E, 0xCF, 0xAF, 0xAA, + 0xAA, 0x08, 0x01, 0x94, 0xD2, 0x08, 0xA1, 0x24, 0xE1, 0x5B, 0xFF, 0xC9, 0x1D, 0x2C, 0xFB, 0x5D, + 0x2B, 0xE2, 0x83, 0xA9, 0xDF, 0x7D, 0xEF, 0xF6, 0xEF, 0x5D, 0x69, 0x8F, 0x7A, 0x0A, 0x21, 0x84, + 0x31, 0xF2, 0xFA, 0xDD, 0x65, 0xDB, 0xAB, 0x5F, 0xFD, 0xF6, 0xF9, 0xAF, 0xBE, 0x79, 0xB7, 0x37, + 0x19, 0x31, 0x4A, 0xBF, 0xF8, 0xEC, 0xE1, 0xF1, 0xE1, 0xB4, 0xED, 0xFA, 0x55, 0xDD, 0xAF, 0x9B, + 0x1E, 0x21, 0xD4, 0x76, 0x92, 0x11, 0x1A, 0xE9, 0x43, 0xB4, 0x36, 0xA3, 0xAA, 0x28, 0xF2, 0xAC, + 0xEB, 0xA5, 0x52, 0x86, 0x10, 0xE2, 0x3D, 0x20, 0x08, 0xB1, 0x5B, 0x4A, 0x5D, 0xB7, 0xB3, 0xC5, + 0x0A, 0x00, 0x3D, 0x79, 0x78, 0x4C, 0x30, 0xFE, 0xF4, 0xC9, 0x49, 0x9A, 0xF0, 0xF9, 0xB2, 0x16, + 0x42, 0xAC, 0xD6, 0xCD, 0x62, 0x59, 0x53, 0x42, 0xE3, 0x9D, 0x86, 0xC1, 0x9D, 0x83, 0x4E, 0x8E, + 0x0F, 0x8E, 0x0F, 0xA7, 0x51, 0x7C, 0x12, 0xC1, 0x28, 0x25, 0x65, 0x59, 0x4C, 0x46, 0xA5, 0x10, + 0xBC, 0x57, 0xE6, 0xEB, 0x67, 0xEF, 0x5E, 0xBD, 0xB9, 0x78, 0x75, 0x7A, 0xBD, 0x37, 0x29, 0xAB, + 0x22, 0x8D, 0xF7, 0xB3, 0xF1, 0x5C, 0xA3, 0xBB, 0xF7, 0xB8, 0x7D, 0x42, 0x36, 0x29, 0xAA, 0x18, + 0x63, 0xB2, 0xF5, 0xEA, 0x23, 0x84, 0x36, 0x98, 0x85, 0x37, 0x4A, 0x11, 0xDE, 0x49, 0xFA, 0xDF, + 0xCD, 0xD1, 0x8F, 0x1F, 0x17, 0x36, 0x3D, 0xA1, 0x01, 0x00, 0x93, 0xE1, 0x63, 0x08, 0x41, 0x94, + 0x10, 0x46, 0x09, 0xC1, 0x08, 0x63, 0x4C, 0x28, 0x8A, 0x84, 0xD1, 0x18, 0x63, 0x8A, 0x11, 0xC5, + 0x38, 0xA6, 0x3B, 0x50, 0x08, 0x00, 0x78, 0xD0, 0x12, 0x69, 0xAC, 0x08, 0x05, 0xB4, 0xA5, 0xC0, + 0xBD, 0x99, 0x8C, 0x0D, 0xCA, 0x02, 0x6C, 0xBD, 0x9F, 0xB1, 0xDB, 0xFB, 0xF0, 0x9C, 0x20, 0x1C, + 0x10, 0xEC, 0x5E, 0x16, 0x95, 0xE1, 0x58, 0x4B, 0x8F, 0x11, 0xB2, 0x3E, 0x2C, 0x1B, 0x09, 0x00, + 0x8C, 0x62, 0xE4, 0x07, 0x2F, 0x9D, 0xC6, 0x37, 0xB7, 0xCA, 0x28, 0xCE, 0x13, 0x86, 0x11, 0x8A, + 0x36, 0xA3, 0xB5, 0x4E, 0x1B, 0x8B, 0x11, 0xE6, 0x9C, 0x72, 0x46, 0x04, 0xA3, 0x9B, 0xCC, 0x11, + 0xD8, 0x0C, 0xD4, 0xF0, 0x21, 0xB7, 0xAA, 0xB1, 0x60, 0x87, 0xA3, 0x02, 0x86, 0x08, 0x37, 0xF9, + 0x28, 0x42, 0xDD, 0x5D, 0x9D, 0xBB, 0xFA, 0xF3, 0xDD, 0x57, 0x3F, 0x7A, 0x7E, 0xFB, 0xAA, 0x52, + 0x9A, 0x52, 0xFC, 0xE6, 0xCD, 0xF9, 0x8B, 0x97, 0xA7, 0x94, 0x32, 0xCA, 0x18, 0xA5, 0x04, 0x42, + 0xB0, 0x46, 0xC7, 0xD8, 0xAB, 0x0F, 0xC1, 0x6A, 0xDB, 0x1B, 0xEB, 0x43, 0x90, 0x4A, 0x4B, 0x29, + 0x05, 0xE7, 0x8C, 0x73, 0x41, 0x30, 0xC1, 0xC4, 0x87, 0x9E, 0x0A, 0x4E, 0x08, 0xEB, 0xBB, 0xBE, + 0xAE, 0x9B, 0x24, 0x49, 0x26, 0xE3, 0x32, 0x4D, 0x44, 0x51, 0xE4, 0x57, 0xF3, 0xA5, 0xEA, 0xE5, + 0x74, 0x32, 0x9A, 0x8C, 0x2B, 0xA9, 0x6D, 0x59, 0x16, 0x9C, 0xD2, 0x5E, 0x2A, 0x21, 0x78, 0xF0, + 0xE0, 0xBD, 0xC7, 0x6C, 0xC8, 0xA9, 0xA9, 0xEB, 0x0E, 0x82, 0x9B, 0x4E, 0xC6, 0x9F, 0x7D, 0xFE, + 0x89, 0xF7, 0xE1, 0xFC, 0x6A, 0xAE, 0xFA, 0xEE, 0x60, 0x5C, 0xB0, 0xC9, 0x31, 0x65, 0xA2, 0x5E, + 0xAF, 0xE7, 0x8B, 0x55, 0x9E, 0x65, 0x47, 0x07, 0x13, 0x69, 0x9C, 0x73, 0xE1, 0xE8, 0x70, 0x4F, + 0x08, 0x1E, 0x13, 0x7E, 0xA4, 0x52, 0x17, 0x57, 0x2B, 0x4C, 0x10, 0x84, 0x60, 0x8D, 0xC3, 0x80, + 0x2D, 0xD8, 0x77, 0x67, 0x17, 0x7D, 0xAF, 0x30, 0x42, 0x18, 0xA3, 0xD9, 0x62, 0x75, 0x7E, 0x39, + 0x37, 0x2E, 0x3C, 0x7D, 0xF2, 0x60, 0x5C, 0x15, 0xD6, 0xDA, 0xC8, 0x69, 0xE2, 0x9C, 0xB3, 0xCE, + 0x1F, 0xDF, 0x3B, 0xD2, 0xC6, 0x54, 0x65, 0x91, 0x08, 0x4E, 0x30, 0x5A, 0x2C, 0xD7, 0x3E, 0x04, + 0x82, 0xB1, 0x74, 0x3E, 0x11, 0xA8, 0xEB, 0xA5, 0xB1, 0x7E, 0x54, 0xE5, 0xB3, 0xF9, 0x72, 0x31, + 0x5F, 0x32, 0x4A, 0xF3, 0x2C, 0xF3, 0xC1, 0x87, 0x10, 0x18, 0x63, 0xC6, 0xD8, 0xE9, 0x64, 0xBC, + 0x5C, 0xAE, 0xD6, 0xEB, 0x26, 0x62, 0x3A, 0x42, 0x48, 0x1B, 0x8B, 0x7A, 0x29, 0x38, 0x23, 0x08, + 0xF7, 0xBD, 0xF2, 0x21, 0x60, 0x32, 0x30, 0x62, 0x12, 0x82, 0x9C, 0x73, 0x5A, 0xEB, 0xE5, 0xCA, + 0x4F, 0x27, 0x15, 0x67, 0x6C, 0x6F, 0x6F, 0x02, 0x3E, 0x5C, 0xCD, 0x96, 0x84, 0x92, 0xB2, 0x48, + 0xDB, 0xA6, 0x2F, 0x8B, 0x5C, 0x59, 0x67, 0x3A, 0x7F, 0xB8, 0x3F, 0xFE, 0x57, 0xFF, 0xED, 0x9F, + 0x7E, 0xF9, 0xCD, 0x8B, 0xAB, 0xEB, 0xD5, 0xF9, 0xD5, 0x62, 0xBD, 0xEE, 0x04, 0x27, 0xFF, 0xD5, + 0x3F, 0xFB, 0x43, 0x8C, 0x90, 0xBB, 0x93, 0x67, 0xB0, 0xBB, 0x34, 0xEE, 0x7A, 0xC4, 0x76, 0x97, + 0xCD, 0xEF, 0x59, 0x0F, 0xDB, 0x55, 0x14, 0x42, 0xC0, 0x18, 0xA5, 0x82, 0x2F, 0x16, 0xEB, 0xBF, + 0xF9, 0xFB, 0xAF, 0x67, 0x8D, 0x9E, 0x8E, 0x47, 0x5F, 0x7F, 0xFB, 0x2A, 0x40, 0x70, 0xCE, 0x4D, + 0xC6, 0xE5, 0x8B, 0xD7, 0xEF, 0xEB, 0xA6, 0xBB, 0xB7, 0x3F, 0xFE, 0xEE, 0xC5, 0xDB, 0x34, 0x4D, + 0x47, 0xA3, 0x72, 0x3A, 0x1E, 0x35, 0x5D, 0xEF, 0x9C, 0xE7, 0x9C, 0x4D, 0x27, 0x23, 0x00, 0xB4, + 0x5C, 0xAE, 0xFC, 0xE0, 0x7B, 0x0D, 0x08, 0xA1, 0xBA, 0xE9, 0xD2, 0x44, 0x18, 0xEB, 0xB3, 0x2C, + 0xDD, 0xDF, 0x1B, 0xBF, 0x7C, 0xFD, 0x7E, 0xB1, 0x6A, 0x9E, 0x3C, 0x38, 0x44, 0x18, 0x25, 0x82, + 0x9F, 0x1C, 0xED, 0x7D, 0xFA, 0xE8, 0xDE, 0x9F, 0xFE, 0xF1, 0x0F, 0xDF, 0xBD, 0xBF, 0x8E, 0x36, + 0x8B, 0xD2, 0x3A, 0x04, 0x78, 0xF9, 0xF6, 0xBC, 0xCC, 0xD3, 0x83, 0xBD, 0x11, 0xE7, 0xEC, 0xFC, + 0x72, 0xE6, 0x7D, 0x58, 0xAE, 0x5E, 0xE5, 0x69, 0x72, 0x72, 0x7C, 0xC0, 0x28, 0x29, 0x8B, 0xD4, + 0x5A, 0x47, 0x30, 0x7A, 0xF9, 0xFA, 0xEC, 0xD1, 0x83, 0xE3, 0xFF, 0xE7, 0x17, 0x5F, 0x3D, 0x7D, + 0x74, 0xF4, 0x93, 0x1F, 0x3C, 0xD4, 0xDA, 0x64, 0x69, 0x12, 0xCB, 0x78, 0x00, 0x3E, 0xC2, 0xC3, + 0x0C, 0x3B, 0xBE, 0x1A, 0x34, 0x40, 0x12, 0x10, 0x00, 0xEF, 0x6F, 0x18, 0x90, 0xA2, 0xEC, 0xED, + 0xF4, 0xDA, 0x89, 0xB1, 0x8E, 0x41, 0x4E, 0x23, 0x3C, 0x6E, 0x3F, 0x3C, 0x0C, 0x1C, 0xA3, 0x88, + 0x62, 0x8C, 0x10, 0x84, 0x10, 0xC8, 0xB6, 0xDA, 0x09, 0x80, 0xD0, 0xAD, 0xBE, 0x32, 0x78, 0xFD, + 0x01, 0xA2, 0x52, 0x85, 0xC8, 0xFF, 0xF8, 0xE7, 0x7F, 0x39, 0x7C, 0x56, 0x18, 0x3C, 0x65, 0x18, + 0x03, 0x46, 0xF1, 0x1F, 0xC6, 0x68, 0x50, 0xA9, 0x10, 0x42, 0x64, 0xAB, 0x19, 0x02, 0x8A, 0x54, + 0xF5, 0x61, 0xB3, 0xE1, 0x6C, 0xBC, 0x0C, 0x5B, 0x47, 0xD5, 0xE6, 0x19, 0x02, 0x00, 0xA0, 0x08, + 0xFB, 0x00, 0x31, 0x03, 0x56, 0x30, 0x9A, 0x30, 0xCA, 0x39, 0xE1, 0x8C, 0x6A, 0xE3, 0x00, 0x21, + 0x82, 0x71, 0x95, 0x27, 0x69, 0xC2, 0x11, 0x42, 0x82, 0xB3, 0x2C, 0xE1, 0x59, 0xC2, 0x53, 0xC1, + 0x04, 0x67, 0x31, 0x9E, 0x10, 0xCB, 0x86, 0x19, 0xA3, 0x94, 0x12, 0x4A, 0x09, 0xE7, 0x2C, 0x3E, + 0xDE, 0xE1, 0xFF, 0xC2, 0xDB, 0x92, 0xA3, 0xBB, 0x0E, 0xF8, 0x8F, 0xAE, 0xB3, 0xED, 0x71, 0x77, + 0x56, 0x6E, 0x5D, 0xB0, 0x3D, 0x3E, 0x4A, 0x0D, 0xF4, 0xE1, 0xE2, 0x0E, 0x9C, 0xD1, 0x57, 0x6F, + 0xDE, 0xBF, 0x7B, 0x77, 0x89, 0x10, 0x22, 0x04, 0x0B, 0xC1, 0xB3, 0x2C, 0x21, 0x18, 0xD5, 0x4D, + 0xDB, 0x77, 0x7D, 0xDF, 0xAB, 0xC5, 0xB2, 0x46, 0x84, 0xF8, 0x10, 0x16, 0xCB, 0x35, 0x42, 0x78, + 0xDD, 0x74, 0x4A, 0x99, 0xD8, 0x4F, 0xBB, 0x57, 0x4A, 0x49, 0xED, 0x9D, 0xA7, 0x94, 0x72, 0xCE, + 0x93, 0x54, 0x64, 0x79, 0xC6, 0x39, 0x93, 0xCA, 0xB4, 0x6D, 0x57, 0xE4, 0xE9, 0x78, 0x54, 0x16, + 0x45, 0xD6, 0x74, 0xFD, 0xD9, 0xF9, 0x35, 0x02, 0x34, 0x19, 0x57, 0xF1, 0xC7, 0x30, 0x4E, 0x95, + 0x54, 0x00, 0xA0, 0x8D, 0xEE, 0x7B, 0x99, 0x66, 0x69, 0x96, 0x65, 0x5A, 0xEB, 0xF9, 0x62, 0x55, + 0xA6, 0xF4, 0x07, 0x4F, 0x8E, 0x9F, 0x3C, 0x3E, 0x4E, 0x13, 0x71, 0x39, 0x5B, 0xB9, 0x00, 0x1E, + 0xE0, 0x87, 0x5F, 0x7C, 0x96, 0x17, 0x05, 0x67, 0x3C, 0x4D, 0x45, 0xDB, 0xF6, 0x6D, 0xDB, 0xC7, + 0x6E, 0x20, 0x8C, 0x31, 0xA5, 0x14, 0x42, 0xA8, 0xEF, 0xD5, 0x6C, 0xB1, 0x94, 0xBD, 0x8A, 0xCC, + 0x22, 0x59, 0x9A, 0x4C, 0x26, 0x15, 0x04, 0x47, 0x08, 0xA9, 0x9B, 0x46, 0x24, 0xFC, 0x70, 0x7F, + 0x82, 0x09, 0x2A, 0xF2, 0x6C, 0x3C, 0xAA, 0x10, 0x40, 0xDB, 0xF5, 0x88, 0x60, 0xCE, 0x18, 0xA5, + 0x94, 0x51, 0xEA, 0xBC, 0xB7, 0xCE, 0x17, 0x45, 0x2E, 0xA5, 0xAC, 0x9B, 0x2E, 0x4B, 0x85, 0x73, + 0x2E, 0x20, 0x5C, 0xD7, 0xCD, 0xCB, 0x97, 0x6F, 0x7C, 0x08, 0xCB, 0xC5, 0xAA, 0xEF, 0x3A, 0x9E, + 0x24, 0x18, 0xA1, 0x34, 0x4B, 0x17, 0xCB, 0x65, 0x59, 0x96, 0xCB, 0x55, 0xED, 0x9D, 0x1B, 0x32, + 0x13, 0x09, 0xA1, 0x34, 0x5A, 0x94, 0x1B, 0x9E, 0x3C, 0x8C, 0x8C, 0x75, 0x10, 0xC0, 0x5A, 0x87, + 0x09, 0x8E, 0xAE, 0x6E, 0x80, 0xC8, 0x1C, 0xE5, 0xAD, 0x75, 0x55, 0x91, 0x3D, 0x79, 0x74, 0xA2, + 0xB4, 0xAE, 0xEB, 0x0E, 0x01, 0xF8, 0x10, 0x16, 0xCB, 0x3A, 0x4B, 0x13, 0xA5, 0xCD, 0x6C, 0x51, + 0xBF, 0x3B, 0xBB, 0x7C, 0x74, 0xFF, 0xE8, 0xD3, 0x4F, 0x4E, 0x30, 0xC2, 0xDE, 0x87, 0x5E, 0xEA, + 0x5E, 0x2A, 0x82, 0x71, 0x59, 0x64, 0x3B, 0x74, 0x34, 0xC3, 0x12, 0xB8, 0x05, 0x61, 0xB7, 0xD6, + 0xC6, 0xDD, 0x63, 0x57, 0xEB, 0xBF, 0xA5, 0xA0, 0x15, 0x79, 0x3A, 0x5F, 0xD4, 0xEF, 0xCE, 0x67, + 0x6F, 0xDE, 0x5E, 0xFC, 0x1F, 0x7F, 0xF5, 0x65, 0x9E, 0xE7, 0x69, 0x2A, 0x02, 0x40, 0xD7, 0x6B, + 0xAD, 0x4D, 0x51, 0x64, 0xDF, 0x3C, 0x7B, 0xED, 0x5C, 0xE8, 0x95, 0x09, 0x80, 0x08, 0xC1, 0x10, + 0x60, 0xBE, 0x5C, 0xC7, 0x37, 0x22, 0x8C, 0xA4, 0x54, 0x6D, 0xD7, 0xD5, 0x75, 0x6B, 0x8C, 0xDD, + 0xEE, 0xD9, 0xDE, 0x87, 0xCF, 0x9E, 0x3E, 0xFC, 0xC1, 0x67, 0x8F, 0xBE, 0xFB, 0xFE, 0x4D, 0x55, + 0x15, 0x59, 0x9A, 0xE4, 0x59, 0xF2, 0xF8, 0xE1, 0x11, 0x02, 0xE8, 0xA4, 0x66, 0x94, 0xC4, 0xF4, + 0xA3, 0xA3, 0xFD, 0x2A, 0xCF, 0x12, 0x82, 0x91, 0x0F, 0x70, 0xEF, 0x70, 0x7A, 0x74, 0x30, 0xA1, + 0x14, 0x5F, 0xCF, 0x57, 0xE7, 0x97, 0xF3, 0xF3, 0xAB, 0xF9, 0x62, 0xBE, 0xBA, 0x9E, 0xAF, 0xB4, + 0xB1, 0x07, 0x7B, 0xE3, 0x44, 0xF0, 0x3C, 0x4B, 0xD6, 0x75, 0x9B, 0x26, 0x22, 0xCB, 0xD2, 0xD3, + 0xF7, 0x57, 0x17, 0x57, 0xF3, 0xD3, 0x8B, 0xF9, 0xDB, 0xF7, 0xB3, 0xD3, 0xF3, 0xF9, 0xD3, 0x47, + 0xF7, 0xA2, 0xDB, 0x86, 0x73, 0xB6, 0xAB, 0x8E, 0x6D, 0xE5, 0x6E, 0x93, 0x62, 0x82, 0x76, 0xC9, + 0x16, 0xB6, 0xC6, 0x63, 0xD4, 0x28, 0xA2, 0x11, 0x8A, 0x76, 0x7A, 0x3C, 0xDF, 0x52, 0x26, 0x76, + 0xDF, 0x48, 0x30, 0x22, 0x43, 0x72, 0xC6, 0xED, 0x92, 0xE7, 0x6D, 0xB4, 0x64, 0xF3, 0x60, 0x6B, + 0x8A, 0x06, 0xF2, 0x67, 0xFF, 0xEE, 0xE7, 0xE8, 0xC6, 0x56, 0x84, 0xAD, 0xAC, 0x22, 0x14, 0xFB, + 0x9B, 0x0D, 0xFF, 0xC8, 0xF0, 0x74, 0x03, 0xA0, 0x9B, 0x7E, 0x8A, 0x9B, 0xD8, 0x42, 0x08, 0x80, + 0xC2, 0x86, 0xD2, 0x88, 0x11, 0x1C, 0x0B, 0x8F, 0x62, 0x8E, 0x6B, 0xF0, 0x21, 0xE1, 0x74, 0x7F, + 0x9C, 0x1D, 0xEF, 0x95, 0xD3, 0x51, 0x36, 0xA9, 0xB2, 0x71, 0x99, 0x96, 0x79, 0x72, 0x30, 0xAD, + 0xF6, 0x46, 0xD9, 0xB8, 0xCA, 0xAA, 0x32, 0x4D, 0x04, 0xE3, 0x94, 0x08, 0xCE, 0x28, 0xC1, 0x3A, + 0x26, 0x6E, 0x84, 0x20, 0x38, 0x4D, 0x12, 0x46, 0x29, 0xDD, 0x80, 0x17, 0x8D, 0x89, 0x2A, 0xDB, + 0x41, 0x8C, 0xC7, 0x4E, 0x78, 0xE8, 0x76, 0xB6, 0xCE, 0x76, 0x39, 0x6E, 0xD7, 0xD6, 0xEE, 0xB8, + 0x6C, 0x2D, 0x47, 0x3F, 0x34, 0x9A, 0x8E, 0xE4, 0xEE, 0xC3, 0xC3, 0x2D, 0x91, 0xDB, 0xF6, 0xAF, + 0xDF, 0xD0, 0xC9, 0xFA, 0x48, 0xAB, 0x1A, 0x00, 0x00, 0x86, 0x7A, 0x43, 0x6B, 0x31, 0xC6, 0xCF, + 0x5F, 0xBE, 0xFB, 0xC5, 0xDF, 0xFE, 0x06, 0x00, 0x62, 0xB9, 0xB5, 0xB3, 0x06, 0x01, 0x30, 0xCE, + 0x11, 0xC6, 0x52, 0x5B, 0x6D, 0x2C, 0x65, 0x2C, 0x49, 0x44, 0x6C, 0x3B, 0xD4, 0xF5, 0xAA, 0xD7, + 0xCA, 0xFB, 0x80, 0x09, 0x31, 0xCE, 0xF5, 0x9D, 0x74, 0xCE, 0xA5, 0x59, 0x9A, 0x24, 0x22, 0x78, + 0xBF, 0x5C, 0xAE, 0xDB, 0xA6, 0x47, 0x08, 0xF5, 0x7D, 0xAF, 0x8D, 0x55, 0xCA, 0x54, 0x65, 0xBE, + 0x58, 0x35, 0x79, 0x96, 0x0A, 0xC1, 0x8B, 0x3C, 0xAB, 0x46, 0x39, 0xC6, 0x08, 0x82, 0x7F, 0xF1, + 0xFC, 0xE5, 0xF9, 0xE5, 0xB5, 0xD4, 0xBA, 0xC8, 0xF3, 0x22, 0xCF, 0x93, 0x84, 0x23, 0x00, 0x8C, + 0xE1, 0xC9, 0x83, 0xBD, 0x83, 0xBD, 0x51, 0x9A, 0x66, 0xB3, 0xF9, 0xEA, 0xAB, 0xEF, 0xDF, 0x68, + 0xE3, 0x11, 0x42, 0x45, 0x9E, 0x53, 0xC6, 0x7A, 0xA9, 0x00, 0xA1, 0xC5, 0xAA, 0x6E, 0xDA, 0x2E, + 0x3A, 0x20, 0x52, 0xC1, 0x57, 0xCB, 0xBA, 0xEB, 0x5A, 0x8C, 0xF1, 0xDE, 0xDE, 0x94, 0x31, 0xAA, + 0x94, 0xC6, 0x88, 0xD4, 0x75, 0x4B, 0x28, 0x31, 0xC6, 0x5C, 0xCF, 0x16, 0x8C, 0xB3, 0xC3, 0x83, + 0x29, 0xE7, 0x94, 0x10, 0x32, 0x19, 0x8F, 0x84, 0x60, 0x14, 0xE3, 0xD9, 0x6C, 0xC9, 0x04, 0xCF, + 0xB2, 0x14, 0x63, 0xC4, 0x28, 0x33, 0xC6, 0xFA, 0xE0, 0x09, 0xC6, 0x6D, 0xD7, 0x1A, 0x6D, 0x12, + 0xC1, 0x72, 0x41, 0xCE, 0xCE, 0xE7, 0x67, 0xE7, 0xD7, 0xB3, 0xEB, 0xD9, 0xDB, 0x77, 0xE7, 0x7D, + 0x2F, 0xBB, 0xAE, 0xC5, 0x98, 0x68, 0xAD, 0xBB, 0xBE, 0x77, 0xCE, 0x69, 0x65, 0xEA, 0xA6, 0x45, + 0x08, 0xC5, 0xBD, 0xC9, 0x18, 0x0B, 0x18, 0xA5, 0x89, 0x18, 0x5C, 0x6F, 0xD6, 0x51, 0x46, 0x8D, + 0x75, 0xC6, 0x38, 0x4C, 0x48, 0xEC, 0xA5, 0x24, 0x95, 0xF6, 0x01, 0x18, 0xA3, 0x42, 0x88, 0xF5, + 0xAA, 0x3E, 0xD8, 0x9F, 0xBC, 0xBF, 0xB8, 0xB6, 0xCE, 0xDE, 0x3F, 0x3E, 0x04, 0x14, 0xAE, 0xAE, + 0x17, 0x94, 0x92, 0xA6, 0xED, 0x67, 0x8B, 0xB5, 0xB5, 0xF6, 0xF2, 0x6A, 0xF1, 0xEC, 0xC5, 0x9B, + 0xB7, 0xA7, 0x57, 0x00, 0xE8, 0xE1, 0xC9, 0x41, 0x59, 0xA4, 0xEB, 0xBA, 0xBB, 0x9A, 0xAD, 0x2E, + 0xAF, 0x17, 0x47, 0x07, 0x13, 0x21, 0xF8, 0x87, 0xEA, 0xF9, 0xC7, 0x5D, 0x0D, 0xBF, 0x4B, 0x55, + 0xDF, 0xAE, 0xAB, 0xAD, 0xC8, 0x6D, 0xD7, 0x18, 0x46, 0xE8, 0xFB, 0x97, 0xEF, 0xFE, 0xEE, 0xD7, + 0xCF, 0xFF, 0xEE, 0xD7, 0xCF, 0x5E, 0x9F, 0x5E, 0x01, 0x20, 0x65, 0xCC, 0xD9, 0xF9, 0x2C, 0x46, + 0x66, 0x7B, 0xA5, 0xE7, 0x8B, 0xF5, 0x62, 0xB1, 0xEE, 0xA5, 0x8C, 0x49, 0xCB, 0x52, 0x6A, 0x19, + 0x2B, 0x90, 0xB4, 0x69, 0x9A, 0x5E, 0x6B, 0xAD, 0xB5, 0xED, 0xFB, 0x3E, 0x56, 0x9B, 0x6E, 0x81, + 0xD2, 0x5A, 0x57, 0x16, 0xD9, 0xE1, 0xE1, 0xF4, 0x7A, 0xB6, 0x9A, 0xCD, 0x16, 0x59, 0x96, 0x44, + 0x91, 0xEF, 0xA5, 0x9A, 0x8E, 0x8B, 0x24, 0xE1, 0x10, 0x02, 0x63, 0xD4, 0x59, 0x17, 0x20, 0x68, + 0xE3, 0x7E, 0xF3, 0xCD, 0x8B, 0x57, 0xEF, 0xCE, 0xAB, 0x32, 0xC7, 0x18, 0xA7, 0x09, 0x1F, 0x57, + 0xB9, 0xD6, 0xF6, 0xF4, 0xFD, 0x95, 0x36, 0x9A, 0x12, 0xCA, 0x39, 0x8B, 0x11, 0x41, 0x65, 0xCC, + 0xC5, 0xD5, 0xC2, 0x7B, 0xDF, 0x75, 0xBD, 0xF7, 0xA1, 0xEF, 0xFA, 0x2F, 0x7F, 0xF3, 0x9D, 0xB6, + 0xF0, 0xF0, 0xE4, 0xE0, 0xE4, 0x68, 0x1C, 0x02, 0x74, 0xBD, 0x8A, 0x51, 0xD4, 0xDB, 0x07, 0x1E, + 0xE8, 0x70, 0xD0, 0x06, 0x5F, 0x30, 0xC6, 0x80, 0x20, 0x26, 0x45, 0x21, 0x1C, 0xB3, 0x28, 0xB6, + 0x8E, 0x2B, 0x84, 0x76, 0xDC, 0xF6, 0xBB, 0x26, 0xD4, 0x16, 0xF8, 0xB6, 0x66, 0xEC, 0xAE, 0x63, + 0x67, 0x67, 0xB4, 0x6F, 0x4E, 0xB8, 0x10, 0xA2, 0x67, 0xCD, 0x87, 0x40, 0x7E, 0xF6, 0x17, 0xFF, + 0x7E, 0x77, 0xF4, 0xEF, 0xFE, 0x1D, 0x1E, 0x6C, 0x00, 0x2C, 0x6C, 0xA0, 0x31, 0x3E, 0xDE, 0x60, + 0xEB, 0x76, 0x82, 0x43, 0x08, 0x90, 0x09, 0xB6, 0x69, 0x02, 0x04, 0x21, 0x04, 0xC1, 0xC9, 0xA7, + 0x0F, 0xF6, 0xF6, 0x27, 0x45, 0x9E, 0xA5, 0x69, 0xC2, 0x63, 0x27, 0x1E, 0xBA, 0xE1, 0x77, 0x8D, + 0x71, 0x99, 0x98, 0x9B, 0xAE, 0x8D, 0xD5, 0xDA, 0x52, 0x4A, 0xB2, 0x94, 0x27, 0x82, 0x0B, 0x21, + 0x22, 0x80, 0xFD, 0x03, 0x95, 0xAC, 0x5B, 0xB7, 0xBD, 0x7B, 0x66, 0x7B, 0x47, 0xB7, 0x9E, 0xA2, + 0x0D, 0x67, 0x9B, 0xB5, 0xCE, 0x18, 0xAB, 0xF5, 0x50, 0xED, 0xB1, 0x25, 0x56, 0xDC, 0x5E, 0x13, + 0x0F, 0x63, 0x06, 0xA8, 0x8B, 0x57, 0xC6, 0xE5, 0xE5, 0x9C, 0xEB, 0x7B, 0xED, 0x3C, 0xFC, 0xED, + 0xDF, 0x7D, 0x39, 0x9B, 0xAD, 0x18, 0x67, 0x7B, 0xE3, 0xF2, 0xE4, 0x68, 0xDF, 0x3A, 0xAF, 0xE3, + 0x61, 0xBD, 0x0B, 0x80, 0x31, 0x71, 0xD6, 0x35, 0x4D, 0x2B, 0xA5, 0x46, 0x08, 0x8B, 0x44, 0x88, + 0x24, 0x09, 0x80, 0xAC, 0xF5, 0xD6, 0xBA, 0x00, 0x41, 0x24, 0xE9, 0x74, 0x32, 0x4A, 0x12, 0x6E, + 0x8D, 0xCD, 0xF3, 0x2C, 0x04, 0x9F, 0xA4, 0x89, 0xD2, 0x86, 0x51, 0xAA, 0xB5, 0xE5, 0x9C, 0x55, + 0x65, 0x51, 0x16, 0xF9, 0xC1, 0xFE, 0x64, 0x34, 0x2A, 0x10, 0x0A, 0xC6, 0xB8, 0xBE, 0x69, 0x5E, + 0xBF, 0x79, 0x4B, 0xB9, 0xD8, 0xDF, 0x1B, 0x57, 0x45, 0xEA, 0x62, 0xA3, 0x13, 0x4A, 0x20, 0xF8, + 0xE0, 0xC3, 0x62, 0xDD, 0xBD, 0x7B, 0x7F, 0xF9, 0xE2, 0xCD, 0x79, 0xD7, 0x47, 0xCE, 0x58, 0x0C, + 0x00, 0xCE, 0x39, 0xA5, 0xB4, 0x73, 0xBE, 0xED, 0xFA, 0x24, 0x49, 0x30, 0x42, 0x6D, 0xDB, 0x5D, + 0x5E, 0xCE, 0xD6, 0xEB, 0xBA, 0xEF, 0xA5, 0x73, 0x9E, 0x0B, 0xBE, 0x5E, 0xAD, 0x03, 0x20, 0xA5, + 0xE4, 0xF9, 0xF9, 0xA5, 0xF7, 0x60, 0x8C, 0x41, 0x08, 0xB2, 0x2C, 0x59, 0xAD, 0x6B, 0x63, 0x1C, + 0xC2, 0xA8, 0xA9, 0x9B, 0xAE, 0xED, 0xBC, 0x55, 0x97, 0xD7, 0x8B, 0x80, 0x50, 0x9E, 0xA5, 0xAB, + 0x75, 0xCD, 0x39, 0x8F, 0x2E, 0x58, 0xE7, 0xDC, 0xC0, 0x45, 0x69, 0x35, 0x20, 0xD4, 0x4A, 0xDB, + 0xC9, 0x5E, 0x08, 0xF1, 0xFE, 0xEC, 0xE2, 0xF0, 0x60, 0x0F, 0x21, 0xE4, 0xBD, 0x4F, 0xD3, 0x84, + 0xD0, 0x4D, 0x12, 0x75, 0x08, 0x08, 0x81, 0xF7, 0x0E, 0x13, 0xAC, 0xAC, 0xC5, 0x08, 0x59, 0x63, + 0x01, 0xBC, 0xF5, 0x9E, 0x12, 0x6C, 0xAD, 0xF5, 0x01, 0xBA, 0x5E, 0x32, 0xC6, 0x30, 0x8E, 0x1D, + 0x33, 0x8D, 0xB5, 0x4E, 0x08, 0x56, 0x96, 0x19, 0x21, 0xC4, 0x39, 0x37, 0xAA, 0x8A, 0xE5, 0xBA, + 0x89, 0xE9, 0x3C, 0x65, 0x96, 0xAE, 0xD7, 0x2D, 0xC6, 0xB8, 0xED, 0xE5, 0xBA, 0x6E, 0x95, 0xD4, + 0xCA, 0x18, 0x67, 0xED, 0xF5, 0x7C, 0x75, 0x3D, 0x5F, 0xDD, 0x3B, 0x98, 0x1E, 0x1F, 0x4D, 0x85, + 0xE0, 0x8B, 0xE5, 0x9A, 0x60, 0x7C, 0xB8, 0x3F, 0x76, 0x1F, 0x92, 0x64, 0xFD, 0x43, 0x8E, 0xED, + 0x32, 0xDB, 0x15, 0x9C, 0x1D, 0x41, 0x05, 0xCE, 0xD9, 0xE9, 0xFB, 0xAB, 0xFF, 0xE5, 0x7F, 0xFD, + 0x8F, 0xAB, 0x5A, 0xA6, 0x69, 0x7A, 0x71, 0x39, 0x8F, 0x85, 0xE9, 0xD3, 0xC9, 0x38, 0x49, 0xF8, + 0xBA, 0x6E, 0x0E, 0xF6, 0x26, 0xD6, 0xB8, 0x75, 0xDD, 0x72, 0x4E, 0x03, 0x42, 0x46, 0x0F, 0x3A, + 0x97, 0xB5, 0xF6, 0xDE, 0xD1, 0xDE, 0xC3, 0xFB, 0x47, 0x79, 0x91, 0x49, 0xA9, 0xA5, 0x54, 0xDE, + 0x7B, 0xEF, 0x1D, 0x1E, 0x3A, 0xE1, 0x41, 0x34, 0x57, 0xF7, 0xA7, 0xE3, 0x8B, 0xD9, 0xD2, 0x5A, + 0x77, 0xB8, 0x3F, 0x7D, 0xFC, 0xE8, 0xDE, 0x72, 0xD5, 0x2C, 0xEB, 0x46, 0x2A, 0x7D, 0xB8, 0x3F, + 0x71, 0xD6, 0x1B, 0x63, 0xA2, 0xBB, 0x2A, 0x6E, 0xFF, 0x8B, 0x65, 0x93, 0xE7, 0x29, 0xC6, 0x68, + 0x3A, 0x2A, 0xB3, 0x2C, 0x89, 0xED, 0xD5, 0x29, 0xA5, 0x5D, 0xDF, 0xA7, 0x69, 0x92, 0x08, 0x2E, + 0x95, 0xFE, 0xCD, 0xD7, 0xCF, 0x01, 0xD0, 0x7C, 0xB9, 0x92, 0x52, 0x1D, 0x1D, 0xEE, 0x8F, 0xAA, + 0xB2, 0x6D, 0x3B, 0x6D, 0x4D, 0x27, 0xAD, 0x10, 0x6C, 0xB1, 0x58, 0xFF, 0x87, 0xBF, 0xFD, 0xAA, + 0xED, 0xD4, 0x83, 0xA3, 0x3D, 0xB4, 0x93, 0x5E, 0x70, 0xA3, 0x1F, 0x0D, 0xE8, 0xB3, 0xD5, 0x81, + 0x30, 0xC1, 0x98, 0xC4, 0xA4, 0x8A, 0xBB, 0xCE, 0xB5, 0x1B, 0xFD, 0x37, 0x36, 0xF4, 0x0E, 0x37, + 0xF1, 0xCF, 0x38, 0xB6, 0xE1, 0x03, 0x7C, 0x96, 0x71, 0x76, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x41, 0xDE, 0x0E, 0xF5, 0x16, 0x79, 0x7C, 0x08, 0x76, 0xCB, 0x0C, 0x17, 0x50, 0x08, + 0x40, 0xFE, 0xFC, 0x2F, 0x7E, 0xBE, 0x89, 0x53, 0xDE, 0xD6, 0x59, 0x76, 0x31, 0x77, 0x5B, 0x88, + 0xB5, 0x73, 0x7E, 0x08, 0x39, 0x0C, 0x9D, 0x4A, 0x10, 0x50, 0x12, 0x6B, 0x27, 0x11, 0xA3, 0x18, + 0x01, 0x0A, 0x01, 0x8A, 0x94, 0x1F, 0x4E, 0x8B, 0xFB, 0x87, 0xA3, 0x51, 0x99, 0x31, 0xCE, 0x76, + 0x55, 0xA7, 0xCD, 0x0E, 0xB6, 0xD5, 0xA1, 0x60, 0xB0, 0xC5, 0xD2, 0x24, 0xCF, 0x53, 0x21, 0x44, + 0x44, 0xB0, 0x8F, 0xE2, 0xD7, 0x47, 0x31, 0xEB, 0xCE, 0x4E, 0xF1, 0x11, 0x15, 0x6C, 0xF7, 0xFA, + 0x98, 0x64, 0xE8, 0x87, 0xC3, 0x45, 0xCB, 0x3C, 0xC6, 0x77, 0x36, 0xA6, 0x2B, 0xD9, 0x5E, 0x1C, + 0x06, 0x37, 0x64, 0xB0, 0xD6, 0x19, 0xE3, 0xAC, 0xF5, 0x03, 0x03, 0xB3, 0xF7, 0x00, 0x21, 0x36, + 0x12, 0x63, 0x8C, 0xBE, 0x7D, 0xF7, 0x5E, 0x4A, 0x95, 0x67, 0xC9, 0x83, 0x93, 0x83, 0xAC, 0x28, + 0x18, 0x63, 0xBD, 0xD2, 0xDE, 0x03, 0x67, 0xC4, 0xF9, 0xA0, 0x8D, 0x75, 0x37, 0x4E, 0x3D, 0x6C, + 0xAC, 0x35, 0xC6, 0x6A, 0x6B, 0xAD, 0x75, 0x52, 0xE9, 0xAA, 0x2A, 0xC7, 0xA3, 0x2A, 0xBA, 0xD5, + 0x00, 0x21, 0x9E, 0xF0, 0x7B, 0x87, 0xFB, 0x3E, 0xF8, 0xAE, 0x57, 0x08, 0x61, 0x21, 0xF8, 0xFE, + 0xDE, 0xA4, 0x28, 0x32, 0xE3, 0x5C, 0x91, 0xA7, 0xC1, 0x87, 0xCB, 0xCB, 0xF9, 0x7A, 0x5D, 0x9F, + 0x9F, 0x9F, 0x53, 0x26, 0xF2, 0x22, 0xCF, 0xB3, 0xD4, 0x68, 0x93, 0x67, 0x82, 0x52, 0xE2, 0xAC, + 0x9D, 0x5D, 0x2F, 0x09, 0xA5, 0x9C, 0xB3, 0xEB, 0xF9, 0xAA, 0xC8, 0xF3, 0x51, 0x55, 0x22, 0x04, + 0xA3, 0x51, 0x21, 0x38, 0x73, 0x6E, 0x48, 0xDF, 0x93, 0x52, 0xF5, 0xBD, 0xBC, 0x38, 0xBF, 0xEA, + 0x9A, 0x6E, 0x5D, 0xAF, 0x23, 0x05, 0x93, 0xB3, 0xCE, 0x79, 0x5F, 0xD7, 0xCD, 0x64, 0x3C, 0x3A, + 0x3B, 0x3B, 0xB7, 0xD6, 0x7A, 0x6F, 0x01, 0xC2, 0xE1, 0xE1, 0xBE, 0x54, 0xBA, 0x28, 0xF2, 0xE3, + 0x7B, 0x07, 0xB2, 0x97, 0x21, 0x84, 0xBE, 0x97, 0xFD, 0x6A, 0x55, 0xAF, 0x9B, 0x41, 0x1D, 0x63, + 0xDC, 0x59, 0x8B, 0x31, 0xB6, 0xD6, 0x19, 0xAD, 0xB3, 0x24, 0xE9, 0x65, 0x0F, 0xDE, 0xFE, 0xFA, + 0xB7, 0xCF, 0x7A, 0xA5, 0x21, 0x04, 0x63, 0xED, 0xC5, 0xE5, 0xE5, 0xFD, 0x93, 0x63, 0x6B, 0xAD, + 0x52, 0xCA, 0xFB, 0x00, 0x08, 0x23, 0x84, 0xAC, 0x73, 0x08, 0x21, 0x4A, 0x08, 0x00, 0x20, 0x8C, + 0x43, 0xF0, 0x28, 0x0C, 0x2C, 0xBB, 0x21, 0x04, 0x42, 0xB0, 0x0F, 0x40, 0x08, 0xC5, 0x84, 0x58, + 0x63, 0xCB, 0x22, 0x03, 0x08, 0x52, 0x69, 0x42, 0x48, 0x88, 0xA9, 0x8B, 0xDA, 0xF4, 0xBD, 0x2C, + 0xF2, 0xD4, 0x79, 0xA7, 0x8D, 0x19, 0x55, 0x45, 0xD3, 0xF5, 0x79, 0x9E, 0x21, 0x04, 0x18, 0x21, + 0x6B, 0xED, 0xBA, 0x6E, 0xA5, 0x54, 0xCE, 0x39, 0x65, 0xF4, 0xBA, 0x6E, 0xAF, 0xE7, 0x2B, 0x6B, + 0x5D, 0x91, 0xA7, 0x55, 0x91, 0xBB, 0xE0, 0xF3, 0x2C, 0xE1, 0x8C, 0x7D, 0x48, 0xF8, 0x77, 0xDB, + 0xAE, 0xFC, 0x5D, 0xEE, 0xB0, 0xBB, 0x4B, 0x6E, 0x2B, 0x6C, 0x8C, 0xD1, 0xEF, 0x9F, 0xBD, 0xBD, + 0x9A, 0xD5, 0xCA, 0xFA, 0xE8, 0x12, 0x35, 0xD6, 0x1D, 0xEC, 0x4F, 0x38, 0xA7, 0x04, 0xE3, 0xCF, + 0x3E, 0x79, 0xC8, 0x39, 0xCD, 0xF3, 0x1C, 0x10, 0x72, 0x9B, 0x1D, 0x14, 0x63, 0x44, 0x28, 0xF9, + 0xD1, 0x17, 0x9F, 0x3C, 0xBE, 0x7F, 0xEF, 0xE2, 0x6A, 0x7E, 0x7A, 0x76, 0xA9, 0xB5, 0x89, 0xB4, + 0x3F, 0x5A, 0xDB, 0x58, 0x14, 0x19, 0x07, 0xAA, 0x97, 0x2A, 0x49, 0x92, 0x4F, 0x1E, 0x9D, 0x1C, + 0x1D, 0x4C, 0x46, 0x55, 0xF9, 0xF8, 0xFE, 0x61, 0x9A, 0xF2, 0x87, 0xF7, 0x0F, 0x0F, 0xA7, 0x23, + 0xAD, 0xAD, 0x87, 0x30, 0x5B, 0xAC, 0x7B, 0xA9, 0x00, 0x23, 0x8C, 0x10, 0xE7, 0x8C, 0x32, 0xB2, + 0x5A, 0x37, 0x00, 0x50, 0xB7, 0xDD, 0x62, 0xD5, 0xAC, 0xEB, 0xF6, 0xF2, 0x7A, 0xDE, 0xF7, 0x6A, + 0x3A, 0x19, 0x39, 0xE7, 0xEA, 0xA6, 0x5B, 0xAF, 0x5B, 0x6B, 0x5D, 0x55, 0xE5, 0x93, 0x71, 0x75, + 0x7E, 0x31, 0xFF, 0xE6, 0xBB, 0xE7, 0xBD, 0x54, 0x45, 0x59, 0x94, 0x65, 0x1E, 0x00, 0x5D, 0x2F, + 0xEA, 0x67, 0xAF, 0xCE, 0xDB, 0x4E, 0x37, 0xAD, 0x2C, 0xF3, 0x74, 0x3A, 0x29, 0xB6, 0x01, 0x2E, + 0xB4, 0xC9, 0x92, 0xDB, 0x75, 0x9F, 0x45, 0xD9, 0x26, 0x18, 0x6D, 0x20, 0xEE, 0x06, 0x86, 0x76, + 0x04, 0x0A, 0xC2, 0xD0, 0x42, 0x29, 0xA0, 0xAD, 0xAB, 0x6C, 0x73, 0x4D, 0x6C, 0xA9, 0xBA, 0x3B, + 0xA4, 0xDB, 0x89, 0xD9, 0xF2, 0x54, 0x47, 0xF0, 0x8B, 0x30, 0x84, 0x10, 0x90, 0x3F, 0xFF, 0x77, + 0xFF, 0x33, 0xFA, 0x70, 0xDA, 0x76, 0xE7, 0x29, 0xFE, 0x87, 0xE1, 0xA6, 0x5E, 0xF3, 0xC3, 0x19, + 0x1D, 0xD2, 0x49, 0x00, 0x01, 0x41, 0x38, 0x4B, 0x68, 0x36, 0xF4, 0xD3, 0x05, 0x4A, 0xF1, 0xFE, + 0x38, 0xBF, 0xB7, 0x5F, 0x8D, 0x8A, 0x24, 0x49, 0x38, 0x26, 0xF4, 0xB6, 0xD5, 0xB7, 0x73, 0x60, + 0x8C, 0xA3, 0xD9, 0x18, 0x11, 0x64, 0x83, 0xD9, 0x77, 0x7F, 0xD1, 0x0D, 0xAC, 0xDC, 0xFA, 0x25, + 0x1F, 0x35, 0x2A, 0x77, 0x1F, 0x7C, 0x30, 0x4C, 0x9B, 0x8A, 0xEE, 0x08, 0x67, 0x7E, 0xD3, 0xCE, + 0x0B, 0x0F, 0x9D, 0xC4, 0x21, 0x6A, 0x88, 0xD6, 0x3A, 0xE7, 0xBC, 0xDB, 0x34, 0x3C, 0x8C, 0x6D, + 0x5D, 0x43, 0x18, 0x62, 0x17, 0x64, 0x08, 0xA9, 0x60, 0xC6, 0x28, 0x21, 0x98, 0x33, 0x9A, 0x08, + 0x7E, 0x71, 0x7E, 0xB5, 0x5C, 0xD6, 0xC7, 0xC7, 0x87, 0xBD, 0x09, 0xCE, 0x03, 0xE5, 0x9C, 0x50, + 0x1A, 0x00, 0x78, 0x92, 0x78, 0x80, 0x10, 0x42, 0x92, 0x88, 0xB2, 0xCC, 0x4F, 0x4E, 0x8E, 0x4E, + 0x4E, 0xEE, 0x9D, 0x1C, 0x1F, 0x1D, 0xDF, 0x3B, 0x3C, 0x3A, 0xDC, 0xA7, 0x8C, 0xF7, 0x52, 0xE5, + 0x59, 0xDA, 0xB6, 0x5D, 0x92, 0xF0, 0xC3, 0x83, 0xE9, 0xA3, 0x07, 0xC7, 0xDE, 0x07, 0xCE, 0x68, + 0x59, 0x64, 0x07, 0xFB, 0x7B, 0x69, 0x96, 0x60, 0x8C, 0xEE, 0x1D, 0xED, 0x51, 0xCA, 0xB2, 0x34, + 0xE9, 0xFB, 0xFE, 0xDD, 0xBB, 0xB3, 0xC5, 0x7C, 0x31, 0x9B, 0xCD, 0xD6, 0xEB, 0x9A, 0x52, 0x3A, + 0x19, 0x8F, 0x94, 0x94, 0x84, 0xD0, 0x84, 0xB3, 0x2C, 0x65, 0xCE, 0xB9, 0x34, 0xE1, 0x4A, 0x1B, + 0x91, 0xA6, 0xD6, 0xBA, 0xC5, 0x62, 0x8D, 0x10, 0x92, 0x52, 0x36, 0x4D, 0x47, 0x29, 0x2B, 0x8A, + 0x8C, 0x60, 0x82, 0x00, 0x54, 0xDF, 0x9D, 0x9D, 0xBE, 0xBF, 0xB8, 0xBC, 0x8E, 0x6D, 0xD3, 0xFA, + 0x5E, 0x36, 0x4D, 0xEB, 0x82, 0x47, 0x80, 0xB4, 0x31, 0x84, 0xD2, 0xA6, 0x69, 0xB9, 0xE0, 0x18, + 0xC2, 0x74, 0x3A, 0x49, 0xB3, 0x34, 0xCF, 0xD2, 0x24, 0xE1, 0x08, 0xA1, 0x44, 0x08, 0xA5, 0xCD, + 0xFE, 0xA4, 0x34, 0x5A, 0x23, 0x42, 0xC7, 0xA3, 0xD2, 0x18, 0x6B, 0xAC, 0x15, 0x42, 0xF4, 0xBD, + 0xEC, 0xBB, 0x16, 0x03, 0x64, 0x99, 0x48, 0x19, 0x79, 0xFD, 0xFA, 0xEC, 0xF4, 0xFC, 0x2A, 0x38, + 0xBB, 0x5C, 0xAC, 0xFA, 0x5E, 0x6A, 0x65, 0x8A, 0xAA, 0x40, 0x28, 0x2C, 0x16, 0x2B, 0xC6, 0x58, + 0xCC, 0xBD, 0x20, 0x84, 0x94, 0x65, 0x11, 0xBD, 0xA5, 0x10, 0x02, 0x63, 0x2C, 0xC4, 0xA8, 0x65, + 0x08, 0x18, 0x21, 0xE7, 0x3C, 0x84, 0xE0, 0x21, 0x10, 0x42, 0xA4, 0xD4, 0x80, 0x60, 0x3A, 0x19, + 0x5B, 0xEB, 0x7A, 0x29, 0x29, 0xA1, 0x18, 0x23, 0x40, 0xE0, 0x7D, 0xE8, 0xA5, 0x64, 0x8C, 0x2F, + 0x16, 0x2B, 0xEB, 0x86, 0xFE, 0x50, 0x9C, 0x51, 0xA5, 0x4D, 0xDD, 0xF4, 0x11, 0x73, 0x21, 0x84, + 0xAA, 0xC8, 0x23, 0x7D, 0xC8, 0xAA, 0x6E, 0x19, 0x65, 0x08, 0xC0, 0x6A, 0xEB, 0x9D, 0xDD, 0x9F, + 0x8C, 0x8C, 0xB5, 0x1B, 0x37, 0xEF, 0x76, 0xA9, 0xFC, 0x4E, 0x03, 0x65, 0xBB, 0xFC, 0x76, 0x9D, + 0xB3, 0x5B, 0x08, 0x8B, 0xFF, 0x84, 0xE0, 0x2F, 0x5E, 0x9D, 0xBE, 0x78, 0x75, 0x76, 0xEF, 0xDE, + 0xE1, 0xBA, 0x69, 0x37, 0x9D, 0x07, 0x7C, 0x96, 0x25, 0x00, 0x08, 0x23, 0x20, 0x04, 0xAF, 0x9A, + 0x2E, 0xCF, 0xD3, 0xAE, 0x57, 0xD1, 0x78, 0x4C, 0x12, 0x91, 0x65, 0x49, 0x9A, 0x8A, 0x67, 0xCF, + 0xDF, 0x5E, 0x5C, 0xCD, 0xE2, 0xA4, 0x00, 0x80, 0x0F, 0x70, 0xEF, 0xDE, 0xFE, 0xF1, 0xD1, 0x9E, + 0xF7, 0xA1, 0x69, 0x3A, 0xCE, 0x99, 0x10, 0xBC, 0x97, 0xEA, 0x8B, 0xCF, 0x1F, 0xFD, 0xF3, 0x7F, + 0xF2, 0xE3, 0xE3, 0xA3, 0xA9, 0xE0, 0x74, 0x7F, 0x3A, 0x8A, 0x3E, 0x17, 0xA9, 0x74, 0x96, 0xF2, + 0x32, 0xCF, 0x92, 0x84, 0x6B, 0x6D, 0xFB, 0x5E, 0x67, 0x99, 0xC8, 0xD3, 0xC4, 0xFB, 0x30, 0x5B, + 0xAC, 0x16, 0xAB, 0xFA, 0x6A, 0xB6, 0x7A, 0xF6, 0xE2, 0x8D, 0x73, 0xA1, 0x2A, 0x8A, 0xF9, 0x72, + 0x75, 0x71, 0x35, 0x33, 0xC6, 0xF6, 0x4A, 0x69, 0x6B, 0xA7, 0x93, 0x31, 0x21, 0xF8, 0xD3, 0x4F, + 0x1E, 0x00, 0x20, 0xCE, 0xF9, 0x8F, 0xBF, 0x78, 0xF2, 0xF4, 0xC9, 0xFD, 0x44, 0xF0, 0xD7, 0x6F, + 0xCF, 0x26, 0xE3, 0xD1, 0x6C, 0xBE, 0x5C, 0xAC, 0xEA, 0x5E, 0xDB, 0x37, 0x67, 0x57, 0x52, 0xEA, + 0xE3, 0xC3, 0x89, 0x31, 0x36, 0x00, 0x6C, 0x52, 0x55, 0x3F, 0x64, 0x2D, 0x45, 0x08, 0x62, 0x2A, + 0xD8, 0x16, 0x6C, 0x76, 0x24, 0xD7, 0x0F, 0x74, 0x1D, 0x38, 0xAA, 0x0E, 0xE4, 0xE6, 0xED, 0x1B, + 0xB1, 0x05, 0xC0, 0x3B, 0xF6, 0x10, 0x6C, 0xF6, 0x96, 0x8D, 0x39, 0x88, 0x00, 0x20, 0x32, 0x98, + 0x6F, 0x02, 0x80, 0x88, 0x0E, 0x90, 0x16, 0x36, 0xAD, 0x4D, 0x76, 0x0A, 0xA1, 0xC3, 0x8E, 0xE7, + 0x73, 0x1B, 0x23, 0xD8, 0x30, 0x97, 0x05, 0x08, 0x38, 0xB6, 0x3F, 0x8B, 0x5F, 0x99, 0x70, 0xC2, + 0x29, 0x29, 0x33, 0x8E, 0x10, 0xE2, 0x8C, 0x0A, 0x4E, 0xA3, 0x76, 0xE0, 0x7D, 0x00, 0xC0, 0xBB, + 0xE0, 0xF7, 0xBB, 0x8E, 0xF0, 0xBB, 0xA0, 0xEB, 0xC3, 0xE3, 0x16, 0x48, 0xC3, 0x6D, 0x6C, 0xFD, + 0x88, 0x75, 0x09, 0x3B, 0x46, 0xE5, 0xF6, 0xF1, 0x76, 0x1C, 0x07, 0x95, 0x6C, 0x70, 0x8D, 0x05, + 0xEF, 0x7D, 0x6C, 0x09, 0x6E, 0xAC, 0x1D, 0x66, 0x68, 0xF3, 0x17, 0x13, 0x44, 0x30, 0x12, 0x2C, + 0x26, 0xE2, 0x7E, 0x40, 0xAA, 0x17, 0x07, 0x34, 0xE1, 0x54, 0x70, 0x76, 0x79, 0xBD, 0x14, 0xC9, + 0xE0, 0xB9, 0x10, 0x69, 0x96, 0x16, 0x65, 0xF0, 0xBE, 0x1A, 0xB9, 0x00, 0xA0, 0xB5, 0x11, 0x89, + 0x40, 0x08, 0x19, 0x6D, 0x8D, 0x75, 0xC6, 0x1A, 0x6D, 0x6C, 0x92, 0xF0, 0x3C, 0x4B, 0x8B, 0x3C, + 0xA3, 0x94, 0x64, 0x69, 0x96, 0x67, 0x59, 0x24, 0x05, 0x4D, 0xB3, 0x84, 0x32, 0x1A, 0x42, 0x10, + 0x9D, 0xDC, 0x9B, 0x8C, 0x00, 0xD0, 0x6A, 0xB5, 0x5A, 0xCC, 0xE6, 0x4D, 0xDD, 0x04, 0x08, 0x18, + 0xA1, 0xB6, 0xEB, 0xB3, 0x2C, 0x25, 0x04, 0xCF, 0xE7, 0x0B, 0xCE, 0x79, 0x08, 0x90, 0x70, 0x22, + 0x04, 0x43, 0x10, 0xAE, 0xE7, 0x0B, 0x9E, 0x64, 0xCE, 0x39, 0xCE, 0x69, 0x55, 0x15, 0xCE, 0xB9, + 0xD5, 0xAA, 0xC1, 0x18, 0x5B, 0x1B, 0x9A, 0xAE, 0xA7, 0x94, 0xCE, 0x67, 0x73, 0x8A, 0xC3, 0x4F, + 0x3E, 0x7F, 0xF4, 0xAE, 0xCC, 0x16, 0xAB, 0x66, 0xBE, 0x58, 0x21, 0x8C, 0x09, 0x25, 0x84, 0x50, + 0x8C, 0x71, 0x9A, 0xA6, 0x7D, 0x2F, 0xA3, 0x9D, 0x3D, 0x1D, 0x17, 0xEB, 0x55, 0xED, 0x9C, 0x7F, + 0xFA, 0xF4, 0x51, 0xAC, 0x02, 0x6B, 0xBB, 0xBE, 0x2C, 0xB2, 0x3C, 0x21, 0xAF, 0xD6, 0x0D, 0x65, + 0x1C, 0x13, 0x52, 0x8D, 0x72, 0xE7, 0x43, 0xDB, 0xF7, 0x2F, 0x5E, 0xBC, 0xC9, 0xD2, 0xF4, 0x07, + 0x9F, 0x3D, 0x5E, 0xAF, 0x56, 0xF5, 0xBA, 0x99, 0xAD, 0x7B, 0x6D, 0xDD, 0x34, 0x11, 0x84, 0xE0, + 0x75, 0xD3, 0x27, 0x89, 0x58, 0xAD, 0xEA, 0xA2, 0x48, 0xAB, 0xAA, 0x0C, 0x21, 0x70, 0xCA, 0xE2, + 0xD8, 0xB7, 0x7D, 0x2F, 0x18, 0x63, 0x94, 0x69, 0x63, 0xA2, 0xE3, 0xD7, 0x18, 0x83, 0x31, 0xA1, + 0x94, 0x00, 0x80, 0x31, 0x06, 0x01, 0x20, 0xC2, 0xCA, 0x32, 0x6B, 0xDA, 0xBE, 0x6E, 0xBA, 0xA3, + 0xC3, 0xFD, 0xC8, 0xCE, 0x58, 0x95, 0x79, 0x8C, 0x86, 0xA9, 0x60, 0x99, 0x94, 0x80, 0xD0, 0xFB, + 0xF3, 0xAB, 0xB2, 0xC8, 0x55, 0x9E, 0xAB, 0x54, 0x07, 0x80, 0xBE, 0x97, 0x5D, 0xD7, 0x91, 0xC8, + 0x80, 0xEE, 0x7D, 0x9E, 0xA7, 0x79, 0x96, 0x12, 0x4A, 0x67, 0xCB, 0x5A, 0x70, 0x56, 0x16, 0x29, + 0x89, 0x19, 0x70, 0x28, 0x76, 0x98, 0xDE, 0xF5, 0x3F, 0xC4, 0xAD, 0xEE, 0x23, 0x0B, 0x6C, 0x77, + 0x1D, 0x6E, 0xDD, 0xCF, 0xB7, 0x2E, 0x8B, 0x42, 0x21, 0x18, 0x4E, 0x05, 0x0F, 0x01, 0x84, 0xE0, + 0x82, 0xF3, 0xBA, 0x69, 0x28, 0x63, 0xD3, 0x49, 0xB5, 0x5C, 0x37, 0xE7, 0x17, 0xB3, 0x3C, 0x4F, + 0x9F, 0x3C, 0xBE, 0x1F, 0x97, 0x1D, 0xA5, 0xA4, 0x69, 0x3A, 0x4A, 0xC9, 0xAB, 0xD7, 0xA7, 0x08, + 0xA1, 0xC9, 0x64, 0x34, 0x9F, 0x2F, 0xB5, 0x36, 0xD3, 0xBD, 0xF1, 0xE7, 0x4F, 0x1F, 0xFE, 0xE0, + 0xD3, 0xFB, 0xE3, 0xB2, 0xA8, 0xDB, 0xFE, 0x17, 0xFF, 0xE9, 0xAB, 0xD3, 0xF7, 0x57, 0x8B, 0xE5, + 0xAA, 0x28, 0xD2, 0xF7, 0x17, 0x73, 0x6B, 0xCC, 0x9F, 0xFC, 0xD1, 0x0F, 0x97, 0x6B, 0xE5, 0xC3, + 0xD0, 0x4F, 0x76, 0x3C, 0x2A, 0x00, 0xC0, 0x59, 0xC7, 0x08, 0xC1, 0x18, 0x4B, 0xDD, 0xAB, 0x6B, + 0x3D, 0x1E, 0x95, 0xD6, 0xD9, 0xE9, 0xA4, 0xDA, 0x9F, 0x8E, 0xA5, 0xD2, 0x9F, 0x3F, 0x7D, 0x50, + 0x16, 0x39, 0x40, 0x58, 0xAE, 0x1A, 0x84, 0x20, 0x4B, 0x92, 0xF9, 0xAA, 0xA6, 0x94, 0xD0, 0xA1, + 0x31, 0x68, 0x72, 0xEF, 0x70, 0x02, 0x00, 0xC6, 0xD8, 0xB3, 0x8B, 0xEB, 0x2C, 0x4B, 0x9E, 0x3C, + 0x3A, 0xE9, 0x7B, 0xB5, 0xBF, 0x37, 0x3E, 0xBF, 0x9C, 0x5D, 0x5C, 0x2D, 0x10, 0x26, 0xA7, 0x97, + 0xAB, 0xC3, 0xBD, 0xC5, 0xFE, 0xB4, 0x8A, 0xEE, 0x15, 0x82, 0x71, 0xA4, 0xEA, 0x44, 0x9B, 0x12, + 0xC0, 0x10, 0x36, 0xFC, 0xE2, 0x68, 0x70, 0xA2, 0x6F, 0x94, 0x38, 0x70, 0x3B, 0xD9, 0xB6, 0xDB, + 0xDE, 0x7A, 0x9B, 0xA1, 0x1B, 0x14, 0x8C, 0xA8, 0x68, 0x44, 0x5B, 0xDA, 0x7F, 0x28, 0xD2, 0x3E, + 0x04, 0x3F, 0x10, 0xE1, 0x45, 0xFD, 0x23, 0x76, 0xC3, 0x02, 0x3A, 0xC8, 0x61, 0x84, 0x4C, 0x40, + 0x68, 0xD7, 0x03, 0x77, 0x93, 0x68, 0x81, 0x00, 0x6E, 0xCE, 0xDF, 0x44, 0x4C, 0x01, 0x30, 0xC6, + 0xB1, 0x31, 0x65, 0x00, 0x60, 0x04, 0x11, 0x82, 0x8B, 0x2C, 0x89, 0x8D, 0x8E, 0x28, 0x25, 0x00, + 0x88, 0x90, 0xDF, 0x69, 0xDF, 0x7D, 0x14, 0x7A, 0x76, 0x17, 0xCA, 0xFF, 0xEF, 0x35, 0xDB, 0x97, + 0x76, 0x71, 0xEA, 0xEE, 0xF5, 0xBB, 0x36, 0xC2, 0xF6, 0xFA, 0xED, 0x83, 0x6D, 0xB8, 0x20, 0x04, + 0x1B, 0x9D, 0x11, 0x04, 0xB6, 0x05, 0x9B, 0x01, 0xE3, 0x4D, 0x03, 0x4A, 0x8C, 0x49, 0xC0, 0x81, + 0x00, 0x80, 0xF3, 0xDE, 0x6F, 0x34, 0xEA, 0x9B, 0x8D, 0x48, 0x4A, 0xD5, 0x75, 0xFD, 0xC3, 0xFB, + 0x07, 0xD5, 0x78, 0xFC, 0xED, 0xF3, 0x77, 0x52, 0xA9, 0xD1, 0xA8, 0x92, 0x4A, 0xD7, 0x4D, 0x1F, + 0x20, 0xE4, 0x59, 0xDA, 0xD4, 0x6D, 0xD7, 0x2B, 0x79, 0x31, 0xC3, 0x18, 0x4B, 0xA9, 0x1C, 0x04, + 0x00, 0x54, 0xE4, 0x39, 0x25, 0xE4, 0xF3, 0x4F, 0x1F, 0x31, 0x4A, 0xCE, 0xCF, 0xAF, 0x20, 0x38, + 0x84, 0x20, 0x72, 0x78, 0x20, 0x84, 0xAE, 0xAF, 0xE7, 0x46, 0xEB, 0xE0, 0xBD, 0x94, 0xAA, 0x6D, + 0x9A, 0xA6, 0x6D, 0xBA, 0xA6, 0x2B, 0xF3, 0x1C, 0x61, 0xC8, 0x8B, 0xEC, 0x93, 0x27, 0x0F, 0x8A, + 0x8C, 0xCF, 0x56, 0x1D, 0x84, 0x30, 0x1E, 0x95, 0x0F, 0xEF, 0xEF, 0x43, 0x08, 0xCE, 0x3A, 0xD9, + 0xF5, 0xDA, 0x38, 0xEB, 0xFB, 0x2C, 0xCF, 0x13, 0x21, 0x08, 0x21, 0xA7, 0x67, 0x17, 0x52, 0x2A, + 0x84, 0x91, 0x10, 0xBC, 0xAA, 0x8A, 0x7A, 0xDD, 0xCC, 0x66, 0x0B, 0x63, 0x34, 0xC5, 0x68, 0x6F, + 0x52, 0x51, 0x4A, 0xF6, 0x26, 0xD5, 0xBA, 0xEE, 0xD7, 0x4D, 0x9B, 0x66, 0x19, 0x20, 0x84, 0x31, + 0x89, 0x15, 0xCB, 0x45, 0x9E, 0x60, 0x42, 0xFA, 0x4E, 0x1D, 0x57, 0x65, 0x08, 0x41, 0x4A, 0x59, + 0x64, 0xA9, 0x0F, 0x21, 0x17, 0xE4, 0xE5, 0x9B, 0xF7, 0x69, 0x5E, 0x8C, 0xC7, 0xE3, 0x2C, 0xCF, + 0x95, 0xD6, 0xDE, 0x87, 0x6F, 0xBE, 0x7D, 0x71, 0x79, 0x71, 0xA9, 0xB4, 0x91, 0x4A, 0x2A, 0x29, + 0x39, 0x67, 0x82, 0x93, 0x87, 0x27, 0x07, 0x10, 0x10, 0x26, 0xB8, 0x93, 0xAA, 0xEB, 0x65, 0x00, + 0x24, 0x04, 0xCF, 0xF2, 0x22, 0x78, 0x27, 0x95, 0x46, 0x08, 0x71, 0xCE, 0xBB, 0x5E, 0xC6, 0xED, + 0xD8, 0x7B, 0xAF, 0x95, 0xE6, 0x9C, 0x11, 0x42, 0xAC, 0xF7, 0x04, 0x30, 0x21, 0x38, 0x04, 0xAA, + 0xB4, 0x35, 0xB6, 0x17, 0x82, 0x13, 0x8C, 0xA5, 0x54, 0x94, 0xE0, 0x87, 0x0F, 0x8E, 0xA7, 0x93, + 0xF1, 0xAB, 0x37, 0xA7, 0x91, 0x3A, 0x8D, 0x73, 0xE6, 0x5C, 0x10, 0x9C, 0xAF, 0xD6, 0x2D, 0x21, + 0xC4, 0x87, 0xD0, 0xB4, 0x6D, 0x08, 0xD0, 0xB6, 0x7D, 0xDF, 0xF7, 0x79, 0xCA, 0x29, 0xC2, 0x4D, + 0xD3, 0xDA, 0x10, 0x18, 0xA3, 0x93, 0x34, 0xBD, 0xBC, 0x9E, 0xDF, 0x3B, 0x98, 0xBC, 0x3B, 0xBD, + 0x58, 0xAE, 0x56, 0xC7, 0xFF, 0xEA, 0x5F, 0x10, 0x3C, 0xF4, 0xB8, 0x0A, 0x1B, 0x3E, 0x2B, 0xB4, + 0x93, 0x53, 0xBE, 0xD5, 0xC8, 0x6E, 0xF9, 0x34, 0x36, 0x5C, 0xAF, 0x03, 0x59, 0xE3, 0x56, 0x61, + 0x23, 0x94, 0xB6, 0x4D, 0xBD, 0x9A, 0x5D, 0xFD, 0x93, 0x1F, 0x3F, 0x5A, 0x6A, 0x18, 0x55, 0xB9, + 0xE0, 0x7C, 0xBE, 0x58, 0xAF, 0xEB, 0x3A, 0x4E, 0xEE, 0xE9, 0xD9, 0x65, 0x54, 0xF0, 0xDF, 0xBE, + 0x3B, 0x47, 0x08, 0xAC, 0xB5, 0xA3, 0xAA, 0x9C, 0x8C, 0x2B, 0x6B, 0x0D, 0x00, 0xC1, 0x84, 0xC4, + 0x9E, 0x7E, 0xD3, 0x69, 0xFA, 0x93, 0x2F, 0x9E, 0xFC, 0xC1, 0x0F, 0x3F, 0x41, 0x18, 0x29, 0x65, + 0x00, 0xC2, 0xBF, 0xFE, 0x97, 0xFF, 0xF4, 0x3F, 0x7F, 0xF9, 0xFD, 0x7F, 0xF8, 0x7F, 0x7F, 0xC9, + 0x28, 0x65, 0x84, 0xFC, 0xEA, 0xB7, 0xCF, 0xBC, 0x0F, 0x08, 0x63, 0xEF, 0x83, 0xD6, 0xBA, 0x2C, + 0xD2, 0xAE, 0x57, 0x4F, 0x1F, 0x1D, 0x4F, 0xC6, 0x65, 0x08, 0x21, 0x4F, 0x85, 0xF7, 0xE1, 0xEB, + 0xEF, 0xDF, 0xBC, 0x7D, 0x7F, 0xFD, 0x93, 0x2F, 0x9E, 0x08, 0xCE, 0x10, 0x40, 0x96, 0x70, 0xE7, + 0xDC, 0x72, 0x55, 0xEF, 0x4F, 0xAB, 0xCF, 0x9F, 0xDE, 0x8F, 0xB5, 0x89, 0x47, 0x07, 0x63, 0x65, + 0x0C, 0x46, 0x98, 0x33, 0xB2, 0x6E, 0xBA, 0x10, 0x60, 0x32, 0xCA, 0x25, 0x46, 0xE3, 0xAA, 0xB4, + 0xCE, 0x8D, 0xAA, 0x02, 0x00, 0x0E, 0xF6, 0x27, 0x6F, 0x4F, 0xCF, 0x09, 0xC9, 0xBF, 0xFC, 0xED, + 0xB7, 0xC7, 0xF7, 0x0E, 0x47, 0x79, 0x72, 0xB0, 0x57, 0x59, 0xE7, 0xB1, 0x07, 0x87, 0xDC, 0x90, + 0x14, 0x86, 0x90, 0xDF, 0xD0, 0x44, 0xDF, 0x68, 0x3C, 0xB0, 0xDD, 0x18, 0x6E, 0x14, 0xDB, 0x4D, + 0xB6, 0xD9, 0x80, 0x62, 0xC3, 0x90, 0x6E, 0x7C, 0x65, 0x61, 0x03, 0x85, 0xDB, 0xB7, 0xA1, 0x1D, + 0x3F, 0x75, 0x6C, 0x8B, 0xB5, 0x09, 0xE3, 0x02, 0x42, 0x9E, 0x52, 0x4A, 0x7E, 0xF6, 0x17, 0x3F, + 0xDF, 0x7E, 0x7A, 0xF8, 0xC0, 0x2F, 0xB6, 0xCD, 0xFA, 0xD8, 0xC5, 0x94, 0x4D, 0x84, 0x02, 0x21, + 0x00, 0x20, 0x18, 0xC5, 0xA2, 0xCB, 0x28, 0xF6, 0x89, 0xA0, 0x55, 0x96, 0x46, 0x45, 0x8C, 0x52, + 0x8A, 0xEE, 0xE8, 0x9C, 0xFF, 0x40, 0x60, 0x1A, 0xBE, 0xE9, 0x43, 0xB2, 0xC3, 0x3B, 0xEF, 0x8A, + 0x3F, 0x6D, 0x73, 0x76, 0xB3, 0xC2, 0x6E, 0x61, 0xD6, 0xDD, 0x2F, 0xBA, 0xF5, 0x69, 0xDB, 0x63, + 0xB3, 0x5E, 0xB7, 0xDA, 0xAF, 0x47, 0x80, 0x08, 0xC6, 0x08, 0xC0, 0x6F, 0x78, 0x95, 0x62, 0xDB, + 0x37, 0xE7, 0xBC, 0xF3, 0xDE, 0x5A, 0x07, 0x01, 0x22, 0x06, 0x0E, 0xBF, 0xD3, 0x39, 0x6B, 0x75, + 0xDB, 0x4A, 0xA5, 0x8C, 0xD4, 0x06, 0x05, 0xAF, 0x95, 0xAA, 0xEB, 0x7A, 0x36, 0x5F, 0xAC, 0x57, + 0x75, 0x00, 0x58, 0x2E, 0xD7, 0x08, 0xA1, 0xAE, 0x93, 0x59, 0x96, 0x3A, 0x1F, 0xD6, 0xAB, 0x3A, + 0x78, 0x67, 0x95, 0x6C, 0xD7, 0xAB, 0x7A, 0xB5, 0xBC, 0x78, 0x7F, 0xD1, 0xAE, 0xD7, 0x7D, 0xDF, + 0xAF, 0x16, 0xCB, 0x34, 0x4D, 0xA4, 0x94, 0x6F, 0x5E, 0xBF, 0x5D, 0xCC, 0xE6, 0xF3, 0xD9, 0x7C, + 0x76, 0x3D, 0x5B, 0x2C, 0x56, 0x4A, 0x4A, 0x8C, 0x50, 0x59, 0xE6, 0x71, 0xA1, 0x9C, 0xDC, 0x9B, + 0xEE, 0x4F, 0x8A, 0xE9, 0xB8, 0x40, 0xC1, 0x23, 0x44, 0x1E, 0xDD, 0x3F, 0xA2, 0x18, 0xAE, 0xE7, + 0xAB, 0xBE, 0xEF, 0x09, 0xC1, 0x9D, 0x34, 0x93, 0xC9, 0x78, 0xBD, 0xAE, 0x57, 0xAB, 0x35, 0xA5, + 0x24, 0x66, 0x45, 0x40, 0x40, 0xCE, 0x39, 0x42, 0xC8, 0x9B, 0xD7, 0x6F, 0x11, 0x42, 0xCE, 0xFB, + 0x5E, 0xE9, 0x00, 0xD0, 0x75, 0x2A, 0x49, 0x78, 0x55, 0xE6, 0xDA, 0x86, 0x58, 0xD6, 0x1E, 0xA3, + 0x96, 0x94, 0x62, 0x04, 0xC1, 0x3B, 0x4F, 0x29, 0x56, 0x4A, 0x47, 0x0F, 0x7D, 0xAF, 0xB4, 0xD5, + 0xAA, 0xEB, 0xFA, 0xD1, 0x78, 0xFC, 0xE8, 0xD1, 0x7D, 0xCA, 0xD8, 0x6A, 0xB1, 0xBC, 0x5E, 0xAC, + 0x94, 0x0D, 0xCB, 0xE5, 0x9A, 0x12, 0xE4, 0xBD, 0x6B, 0x3B, 0x55, 0x55, 0x25, 0x42, 0x70, 0xB4, + 0x3F, 0xF9, 0xD1, 0x67, 0x8F, 0x04, 0xA3, 0xCB, 0x55, 0x53, 0x37, 0x7D, 0xD3, 0x74, 0x5C, 0x08, + 0x80, 0x50, 0xD7, 0x0D, 0xE3, 0x02, 0x42, 0x88, 0x29, 0x92, 0xD1, 0x4C, 0x60, 0x8C, 0x1A, 0x63, + 0x11, 0xC2, 0x84, 0x31, 0x8C, 0x91, 0x71, 0x8E, 0x10, 0x6A, 0x94, 0x89, 0xED, 0xC4, 0x11, 0x42, + 0x91, 0x0B, 0xD7, 0x58, 0xCB, 0x18, 0xEF, 0x7B, 0x59, 0x56, 0xF9, 0xC1, 0xFE, 0x84, 0x51, 0x5A, + 0x37, 0x1D, 0x42, 0x98, 0x10, 0x9C, 0x08, 0xC1, 0x18, 0x51, 0xDA, 0x08, 0xCE, 0x10, 0xC2, 0x4D, + 0xD3, 0x75, 0x5D, 0xDF, 0x2B, 0xED, 0x9C, 0x8F, 0xA9, 0x70, 0x8C, 0x33, 0x08, 0x60, 0xBD, 0x93, + 0x52, 0xC5, 0x15, 0x70, 0x79, 0x35, 0xFF, 0xE3, 0x3F, 0xFC, 0x8C, 0xD3, 0xB8, 0xA3, 0xE3, 0xC8, + 0x24, 0xB3, 0xE3, 0x32, 0x86, 0x0F, 0xC5, 0x6F, 0x23, 0x1D, 0x78, 0x48, 0xEE, 0xC5, 0x18, 0x03, + 0xC2, 0x78, 0x68, 0x7E, 0x34, 0x88, 0x46, 0x08, 0xF0, 0xE6, 0xD5, 0xEB, 0x8B, 0xAB, 0xD9, 0xF3, + 0x77, 0xF3, 0x5E, 0x2A, 0xEF, 0x43, 0x22, 0xD8, 0x68, 0x54, 0x18, 0xE3, 0x92, 0x84, 0x9F, 0x1C, + 0x1F, 0x22, 0x00, 0xA9, 0x4C, 0x55, 0xE6, 0x75, 0xDB, 0xFA, 0xE0, 0x31, 0xC2, 0xD6, 0x3A, 0xCE, + 0x58, 0xF4, 0xF7, 0xB5, 0x6D, 0x37, 0x99, 0x8C, 0xFE, 0xE5, 0x7F, 0xFD, 0x27, 0x7F, 0xFA, 0xC7, + 0x3F, 0xDC, 0x9F, 0x8E, 0xD6, 0x4D, 0xBB, 0x58, 0x35, 0x59, 0x22, 0xAC, 0x73, 0x2F, 0xDF, 0x9C, + 0xAF, 0xEB, 0xAE, 0x69, 0x7A, 0x8C, 0xD1, 0xE9, 0xFB, 0x8B, 0x4F, 0x9F, 0x3E, 0xFA, 0xEC, 0xC9, + 0x7D, 0xA5, 0x4D, 0x9A, 0x8A, 0xE9, 0xA8, 0xC4, 0x98, 0x3C, 0x7F, 0x75, 0x8A, 0x30, 0xDE, 0x9B, + 0x8C, 0xE2, 0x1D, 0x30, 0x46, 0xEE, 0x1D, 0x4C, 0xAD, 0x73, 0xBD, 0x34, 0x75, 0xD3, 0xF5, 0xBD, + 0x5C, 0xAC, 0xEA, 0xAE, 0x57, 0x42, 0xF0, 0xBD, 0x49, 0xA5, 0x94, 0xEE, 0x7A, 0x55, 0xD7, 0x9D, + 0xF5, 0x2E, 0xD6, 0x07, 0x49, 0x6D, 0xA4, 0x34, 0xBD, 0x54, 0x3E, 0x80, 0x31, 0x16, 0x20, 0x68, + 0x6D, 0x04, 0xE3, 0xD6, 0x7B, 0xC1, 0x19, 0xE7, 0xDC, 0x58, 0x77, 0x7C, 0xEF, 0xE0, 0xE2, 0x72, + 0x5E, 0x56, 0xC5, 0x83, 0xE3, 0xBD, 0xA8, 0x52, 0xA1, 0x8D, 0x03, 0x3D, 0x06, 0x34, 0x30, 0xC2, + 0x10, 0xC0, 0x3A, 0x17, 0xB3, 0x0F, 0xB6, 0x8D, 0x80, 0x7D, 0xF0, 0x11, 0xF8, 0x63, 0x3A, 0x7E, + 0xD8, 0x49, 0x7F, 0x85, 0x8D, 0xE0, 0x85, 0x81, 0x11, 0x07, 0x85, 0x00, 0x3E, 0x84, 0x4D, 0x09, + 0x79, 0xD4, 0x7C, 0x21, 0x04, 0xD8, 0xC6, 0x70, 0x77, 0x73, 0x45, 0x01, 0x80, 0xFC, 0xD9, 0xBF, + 0xFD, 0xF9, 0x0D, 0x78, 0x01, 0x44, 0x05, 0x75, 0x37, 0x79, 0x63, 0x98, 0xD1, 0xA8, 0x7F, 0x6D, + 0x42, 0xAC, 0xDB, 0xD7, 0xBC, 0x0F, 0xDA, 0x39, 0xE7, 0x03, 0xA7, 0x24, 0x76, 0xA7, 0x65, 0x1B, + 0x27, 0x57, 0x3C, 0xB6, 0x46, 0xEC, 0xEF, 0x01, 0xAF, 0xED, 0x8E, 0xF7, 0xFB, 0x75, 0xB7, 0x1B, + 0x6C, 0x1A, 0x86, 0xCD, 0x0F, 0xA9, 0x75, 0x71, 0x08, 0x37, 0x23, 0xF6, 0x7B, 0xBE, 0x68, 0xD0, + 0x28, 0x3F, 0x84, 0xB1, 0x0F, 0x49, 0xC4, 0x00, 0xA1, 0xC1, 0xE3, 0x46, 0x07, 0xFF, 0x17, 0x11, + 0x9C, 0x09, 0x4E, 0x23, 0x9F, 0x04, 0xDF, 0x78, 0xF1, 0x18, 0x8D, 0xE4, 0xEB, 0x71, 0xFD, 0x86, + 0xBE, 0xAD, 0x9B, 0xBA, 0x9E, 0xCF, 0xD7, 0x8B, 0xBA, 0xEB, 0x7A, 0xE5, 0xAC, 0xB5, 0xD6, 0xB6, + 0x6D, 0x1B, 0xBC, 0x43, 0xCE, 0x3A, 0x6B, 0x30, 0xC6, 0x21, 0x76, 0x54, 0x49, 0x92, 0xB6, 0x6D, + 0x57, 0x8B, 0x85, 0x37, 0xBA, 0xAD, 0x6B, 0x6B, 0x8C, 0x35, 0xC6, 0x69, 0x13, 0x13, 0x0B, 0x10, + 0x80, 0x56, 0x7A, 0xB9, 0x58, 0x5C, 0xBC, 0xBF, 0xEC, 0x7A, 0x19, 0x21, 0x95, 0x10, 0x92, 0x24, + 0x1C, 0x63, 0x4C, 0x28, 0x49, 0xD3, 0x54, 0x6B, 0x3B, 0xAA, 0xD2, 0x1F, 0x7D, 0x7A, 0x9C, 0x08, + 0x51, 0x15, 0xC9, 0xE5, 0xF5, 0xBA, 0xD7, 0x6E, 0x3C, 0x2A, 0x00, 0xFC, 0xC5, 0xD5, 0x72, 0x5C, + 0x15, 0x9D, 0x72, 0x1E, 0x60, 0x34, 0x2E, 0x27, 0xA3, 0xAA, 0xAA, 0x8A, 0xD5, 0xBA, 0x51, 0x4A, + 0x8F, 0xC7, 0x95, 0xD6, 0x4A, 0x6B, 0x13, 0x00, 0x2D, 0x56, 0xAB, 0x34, 0x4D, 0xAB, 0xAA, 0x94, + 0xBD, 0xB4, 0xD6, 0xF9, 0x00, 0xB3, 0xC5, 0x9A, 0x53, 0x6A, 0xAC, 0xA5, 0x8C, 0x1F, 0x1D, 0x1E, + 0xC4, 0xEB, 0x19, 0x25, 0x84, 0xD0, 0xB2, 0x2C, 0xF7, 0x0F, 0xF6, 0x00, 0xA0, 0xA9, 0x3B, 0x1F, + 0x42, 0x55, 0x16, 0x87, 0x7B, 0x85, 0x0B, 0x98, 0x31, 0xE6, 0xAC, 0x31, 0x4A, 0x73, 0x4E, 0x5F, + 0x9F, 0x5D, 0xD5, 0x75, 0xBB, 0x5A, 0x2E, 0x8D, 0x31, 0x89, 0x48, 0xEB, 0xB6, 0xFF, 0xE4, 0x93, + 0x27, 0xD6, 0xB9, 0x54, 0xF0, 0xAB, 0xD9, 0x32, 0x49, 0xC4, 0x8B, 0x37, 0xEF, 0xD7, 0x75, 0x8F, + 0x09, 0x4D, 0x92, 0x84, 0x52, 0xB2, 0x5A, 0x37, 0x3E, 0x78, 0xC6, 0x58, 0xA4, 0x76, 0xC0, 0x08, + 0x69, 0x6B, 0x39, 0xA5, 0x01, 0x42, 0xCC, 0xDD, 0x8E, 0x0E, 0xC9, 0x3C, 0xCB, 0x94, 0xD6, 0x4A, + 0x19, 0x6D, 0x6D, 0x92, 0x08, 0xCE, 0x99, 0x94, 0x8A, 0x31, 0x0E, 0x00, 0x08, 0xA3, 0x58, 0xD4, + 0x35, 0x1E, 0x95, 0x82, 0xB3, 0x4E, 0xAA, 0xC8, 0xEB, 0x9F, 0x26, 0x7C, 0xB9, 0x6A, 0xBC, 0x0F, + 0x94, 0x90, 0xB6, 0xEB, 0x7B, 0x29, 0xAD, 0xF5, 0x94, 0x92, 0xA6, 0x93, 0xCB, 0x75, 0x97, 0xA7, + 0x82, 0x33, 0x16, 0x00, 0x01, 0xC6, 0xAB, 0x75, 0x0D, 0x10, 0x8A, 0x3C, 0x7F, 0xF2, 0xE0, 0x30, + 0xCF, 0x13, 0x1F, 0xFC, 0xD6, 0xCB, 0xB2, 0x5D, 0x96, 0x9B, 0x6C, 0x80, 0x21, 0xC7, 0x7B, 0xAB, + 0xBF, 0x0F, 0x79, 0x3F, 0x83, 0xD4, 0xDC, 0x88, 0x04, 0x42, 0x28, 0xC6, 0x55, 0xBF, 0xFE, 0xFA, + 0x3B, 0x4A, 0x69, 0xA7, 0x5D, 0x22, 0x78, 0xA7, 0x74, 0xDB, 0xF5, 0x10, 0xFC, 0x3F, 0xFA, 0xE9, + 0x0F, 0x38, 0xE3, 0x8B, 0xE5, 0x4A, 0x24, 0x1C, 0x21, 0xE8, 0x7B, 0xD9, 0xF7, 0x52, 0x6A, 0x65, + 0x8C, 0xDD, 0xDF, 0x9B, 0x3A, 0xEF, 0x9A, 0xB6, 0x75, 0xD6, 0x8D, 0x46, 0xD5, 0x1F, 0xFC, 0xF8, + 0xE9, 0xE3, 0xFB, 0x87, 0x00, 0xE1, 0xEB, 0xEF, 0xDF, 0x7C, 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xF3, + 0x5C, 0x2A, 0xFD, 0xC3, 0xCF, 0x1E, 0xBD, 0x7C, 0xF3, 0xDE, 0xFB, 0x70, 0x7E, 0x71, 0xBD, 0x58, + 0xAE, 0x7F, 0xF0, 0xD9, 0x93, 0x7F, 0xF1, 0xCF, 0xFE, 0x51, 0x5C, 0xBE, 0x9C, 0xB3, 0xE9, 0xA8, + 0x20, 0x18, 0xF7, 0x52, 0x35, 0xAD, 0x3C, 0x3E, 0xDA, 0x8B, 0x05, 0x49, 0xDE, 0x79, 0x4A, 0xC9, + 0xD1, 0xFE, 0xA4, 0x2C, 0xD2, 0x5E, 0xEA, 0x37, 0xA7, 0x97, 0xCF, 0x5E, 0x9D, 0xCE, 0x97, 0xCD, + 0xDE, 0xA4, 0x9A, 0x4E, 0x4A, 0x6D, 0xEC, 0x9B, 0xD3, 0x4B, 0x91, 0xF0, 0x22, 0x4B, 0x47, 0x45, + 0x86, 0x10, 0xD2, 0xDA, 0x72, 0x41, 0xA5, 0xD2, 0x4D, 0xDB, 0x07, 0x1F, 0xA4, 0x32, 0xFB, 0x93, + 0x51, 0x2F, 0x15, 0xA5, 0xA4, 0x6E, 0x3B, 0xE7, 0x7C, 0x9E, 0x25, 0xFB, 0x7B, 0x93, 0xD9, 0x62, + 0xF9, 0xCD, 0x77, 0xAF, 0xF7, 0xA7, 0xE3, 0x87, 0x27, 0xFB, 0x31, 0x56, 0x83, 0xB6, 0x1B, 0xC0, + 0xB0, 0xF7, 0x7B, 0xEB, 0xBD, 0x73, 0x03, 0xE2, 0xC4, 0x32, 0xEF, 0x0D, 0xA0, 0x41, 0x80, 0x60, + 0x7D, 0xD8, 0xF4, 0x7D, 0x8F, 0xFD, 0x92, 0x83, 0xF3, 0x10, 0x39, 0xF4, 0xB7, 0x6D, 0x37, 0x7C, + 0x24, 0x95, 0xD8, 0x58, 0xF7, 0x1B, 0x08, 0xBB, 0x1D, 0x63, 0x19, 0xE6, 0xE5, 0x67, 0x7F, 0xF1, + 0xF3, 0x1B, 0xA5, 0x69, 0x13, 0x4F, 0xDC, 0xB2, 0xC9, 0x6D, 0x41, 0x6D, 0xF7, 0x8D, 0x68, 0x70, + 0x0F, 0x6D, 0x95, 0x38, 0x20, 0x08, 0x31, 0x46, 0x63, 0x19, 0x41, 0xA4, 0xD2, 0xDF, 0x45, 0xA8, + 0x2D, 0x68, 0xDC, 0x05, 0xA9, 0xDD, 0x9F, 0x72, 0x1B, 0xAD, 0x3E, 0x06, 0x46, 0x1B, 0x6C, 0x1F, + 0xEE, 0x38, 0x26, 0x7B, 0x85, 0xE0, 0xE1, 0x66, 0x88, 0x6E, 0x22, 0xB9, 0xB7, 0xBE, 0x6E, 0x07, + 0xE6, 0x06, 0x38, 0xDC, 0x68, 0xAA, 0xEE, 0xD6, 0x05, 0x68, 0x53, 0x1F, 0x46, 0x29, 0xA6, 0x94, + 0x30, 0x46, 0x18, 0xDB, 0x66, 0xE4, 0x6E, 0xB6, 0x94, 0x4D, 0x74, 0x46, 0x75, 0xED, 0x6A, 0xB1, + 0x38, 0x3F, 0xBF, 0x7E, 0xF5, 0xFA, 0x7D, 0x08, 0xC8, 0xB9, 0xD0, 0x74, 0x7D, 0x64, 0x2B, 0x51, + 0x5A, 0xB7, 0x6D, 0xDF, 0xB4, 0xBD, 0x07, 0x64, 0xB4, 0xE9, 0xBA, 0x4E, 0x49, 0xD9, 0xB5, 0x5D, + 0x53, 0xD7, 0x7D, 0xD7, 0x6F, 0x39, 0xC8, 0x10, 0x40, 0xF0, 0x10, 0xA7, 0x09, 0x21, 0x10, 0xA9, + 0x00, 0x40, 0x80, 0x11, 0xE7, 0x8C, 0x60, 0x4C, 0x09, 0x8E, 0xED, 0x1E, 0xFA, 0x5E, 0x45, 0x1B, + 0xD8, 0x3A, 0xF7, 0xE0, 0x68, 0xFC, 0xF4, 0xD1, 0xE1, 0xAB, 0xD3, 0xEB, 0x97, 0x6F, 0x2F, 0xB3, + 0x34, 0xAD, 0x8A, 0xEC, 0xA7, 0x5F, 0x3C, 0xFA, 0xE6, 0xBB, 0x37, 0x55, 0x95, 0x2B, 0x6D, 0x94, + 0x75, 0xE3, 0xF1, 0x08, 0x42, 0xC8, 0xB2, 0x34, 0x4D, 0x13, 0x9E, 0x08, 0xCE, 0x98, 0x94, 0x7A, + 0x3C, 0x2A, 0xA7, 0xD3, 0x49, 0x92, 0x70, 0x42, 0x68, 0xDF, 0xAB, 0xB6, 0x6B, 0xB7, 0x8A, 0xBA, + 0x73, 0x8E, 0x32, 0x36, 0x9E, 0x8C, 0xF7, 0xF7, 0xA7, 0xDE, 0x07, 0xCE, 0x59, 0x91, 0x25, 0x22, + 0xE1, 0xA3, 0xAA, 0x64, 0x14, 0x73, 0xCE, 0x0E, 0x0F, 0xF6, 0xA4, 0xD2, 0xFB, 0x7B, 0xE3, 0x7B, + 0x07, 0xA3, 0xF3, 0xCB, 0x65, 0xD7, 0x75, 0x6D, 0x5D, 0x63, 0xF0, 0x4D, 0xD7, 0x4B, 0xE3, 0xE6, + 0xF3, 0xD5, 0xF5, 0x6C, 0xEE, 0x9D, 0x53, 0x4A, 0x3F, 0x78, 0xF4, 0xD0, 0x68, 0xDD, 0x76, 0x9D, + 0xB3, 0x36, 0xCD, 0xD2, 0xE7, 0xAF, 0xCF, 0x4E, 0x2F, 0x16, 0x4A, 0x5B, 0xC6, 0x98, 0x31, 0xA6, + 0x97, 0x0A, 0x61, 0x24, 0xB5, 0x19, 0x8D, 0x46, 0xD6, 0x58, 0x8C, 0x09, 0x02, 0xF0, 0x21, 0x20, + 0x8C, 0x13, 0x21, 0x62, 0x38, 0x25, 0xC6, 0xBE, 0x39, 0xE7, 0x94, 0x52, 0x40, 0xA8, 0x97, 0x1A, + 0x61, 0x1C, 0x22, 0x3F, 0x4C, 0x08, 0xBD, 0xD4, 0xD1, 0xAF, 0x84, 0x31, 0xB2, 0xCE, 0xB5, 0x6D, + 0x87, 0x30, 0xDA, 0x9B, 0x8E, 0x21, 0x80, 0x52, 0x9A, 0x33, 0xAA, 0xAD, 0xED, 0x3A, 0x85, 0x11, + 0x52, 0xDA, 0x86, 0x10, 0xA2, 0x9D, 0x9E, 0x24, 0xC2, 0x05, 0xA8, 0x9B, 0x2E, 0x4F, 0x45, 0x96, + 0x25, 0x7D, 0xAF, 0xD6, 0x75, 0x23, 0x95, 0xD1, 0xC6, 0x7E, 0xF2, 0xE8, 0x68, 0x3A, 0x2E, 0x23, + 0xEF, 0xF3, 0x4D, 0x9E, 0xD1, 0xCE, 0xC6, 0x7A, 0xB3, 0xD3, 0xE3, 0xA1, 0x2E, 0x39, 0xAE, 0x01, + 0xBC, 0xAD, 0x42, 0xDE, 0xAE, 0xE1, 0x00, 0x18, 0xE3, 0xE0, 0xCC, 0x2F, 0xBF, 0xFC, 0x86, 0x31, + 0xDE, 0x49, 0xD3, 0x4A, 0xC5, 0x18, 0xF3, 0x01, 0x59, 0x6B, 0xAD, 0x35, 0x9C, 0xD1, 0xD9, 0x62, + 0x8D, 0x00, 0x08, 0x02, 0x29, 0x7B, 0x42, 0x48, 0x22, 0x84, 0xF7, 0x2E, 0xCB, 0x12, 0xEF, 0x82, + 0xEC, 0x65, 0x80, 0x90, 0xA4, 0xC9, 0xDE, 0x64, 0x34, 0x1E, 0xE5, 0x57, 0xD7, 0xCB, 0xFF, 0xFD, + 0xFF, 0xFE, 0x4F, 0xE7, 0x17, 0x73, 0x8A, 0xD1, 0xE5, 0xF5, 0x02, 0x61, 0xFC, 0xC3, 0xCF, 0x1F, + 0x59, 0xE7, 0x47, 0xE3, 0xEA, 0xF4, 0xEC, 0x32, 0x2A, 0xAA, 0x59, 0x9A, 0xFC, 0xFD, 0xAF, 0xBF, + 0xA1, 0x8C, 0x65, 0x59, 0xF2, 0xEC, 0xD5, 0xE9, 0x6C, 0xBE, 0x6E, 0xDA, 0xF6, 0x60, 0x6F, 0xEA, + 0xBC, 0x43, 0x08, 0x25, 0x9C, 0x3B, 0xE7, 0x8C, 0xB3, 0x09, 0xE7, 0x65, 0x91, 0xC6, 0x52, 0x10, + 0x4A, 0xC9, 0xBB, 0xB3, 0xCB, 0xC5, 0xAA, 0x0E, 0x1E, 0x0E, 0x0F, 0xC6, 0x47, 0x7B, 0xE3, 0x24, + 0x61, 0x75, 0xDB, 0x3B, 0xEB, 0xAA, 0x2A, 0x8F, 0x04, 0xE8, 0xCE, 0xFB, 0x2C, 0x49, 0x7C, 0x08, + 0x9D, 0x94, 0xD7, 0x8B, 0x55, 0x84, 0x48, 0x21, 0xF8, 0xAA, 0x6E, 0x0E, 0xF6, 0xC6, 0x52, 0xAA, + 0xAF, 0xBE, 0x79, 0x8E, 0x08, 0xFB, 0xE2, 0xE9, 0x89, 0xE0, 0x34, 0x0A, 0xD4, 0xD6, 0x37, 0x1F, + 0x35, 0x29, 0xEF, 0x77, 0xDB, 0xCB, 0x0E, 0x09, 0x62, 0xCE, 0x85, 0x28, 0xAF, 0x9B, 0x78, 0x1B, + 0xC4, 0xE4, 0x09, 0xE7, 0x7D, 0x64, 0xC9, 0x89, 0xF5, 0xD6, 0x83, 0x7E, 0x82, 0x80, 0x0C, 0xAE, + 0x7F, 0xF0, 0x3E, 0xB8, 0x6D, 0xBA, 0x05, 0x0C, 0x16, 0xD2, 0xAE, 0x2D, 0x45, 0xFE, 0xCD, 0xFF, + 0xF4, 0xEF, 0xB7, 0x02, 0x1F, 0xBF, 0x6F, 0x5B, 0x22, 0x3E, 0xA8, 0x1B, 0x68, 0x6B, 0x23, 0x0E, + 0xB8, 0xBB, 0x99, 0x37, 0x88, 0x79, 0x19, 0x18, 0x23, 0xCE, 0x68, 0x9E, 0x32, 0xCE, 0x08, 0xA3, + 0x24, 0x26, 0x4C, 0x6E, 0xC1, 0xF1, 0x16, 0x7E, 0xDD, 0x55, 0xBE, 0x3E, 0x6A, 0xFA, 0xFD, 0x7E, + 0xC3, 0x70, 0x80, 0xAC, 0x88, 0x3B, 0x08, 0x6E, 0xC8, 0x3C, 0x03, 0x6C, 0xCB, 0xA4, 0x6E, 0xE1, + 0xE3, 0xF0, 0xED, 0x9B, 0xFF, 0xB6, 0xDF, 0x12, 0x93, 0x30, 0x76, 0x55, 0xB9, 0xAD, 0xEB, 0x71, + 0x3B, 0x02, 0xBB, 0x30, 0x17, 0x25, 0x0D, 0x21, 0x6C, 0xAC, 0xD1, 0xB2, 0x7B, 0xF1, 0xFC, 0xC5, + 0xF7, 0xCF, 0xDE, 0x7C, 0xFB, 0xFC, 0xF4, 0xF2, 0x6A, 0x89, 0x09, 0x6D, 0x3B, 0x35, 0x5B, 0xAC, + 0x9A, 0xA6, 0x83, 0x10, 0x94, 0xD2, 0x75, 0xD3, 0x29, 0x6D, 0x43, 0x40, 0xDE, 0x7B, 0xAD, 0x0D, + 0x0A, 0xC1, 0x39, 0xDF, 0x2B, 0x6D, 0x8C, 0xD9, 0x0E, 0x2B, 0x21, 0x84, 0x27, 0x0C, 0x21, 0x30, + 0xDA, 0x02, 0x04, 0xCE, 0x39, 0xC6, 0x78, 0xA8, 0xDD, 0xA1, 0x94, 0x12, 0xB2, 0xD5, 0x7F, 0x09, + 0x21, 0x18, 0x41, 0x08, 0x3E, 0x78, 0xFF, 0x8F, 0x7F, 0xFA, 0x89, 0x31, 0xE6, 0xAF, 0x7F, 0xF9, + 0xED, 0xA4, 0xCC, 0xF7, 0x46, 0xF9, 0x1F, 0xFC, 0xF0, 0xF1, 0xD5, 0x6C, 0x31, 0x9B, 0xAF, 0x97, + 0xEB, 0x56, 0x64, 0xF9, 0xDE, 0x74, 0x92, 0x65, 0x89, 0xE0, 0x3C, 0x32, 0x5E, 0x31, 0x4A, 0x8B, + 0x32, 0x4B, 0x84, 0x00, 0x40, 0x52, 0x29, 0xA9, 0x8C, 0x52, 0x3A, 0xF2, 0xBA, 0xC8, 0x5E, 0x61, + 0x82, 0x8B, 0x22, 0x3F, 0x3C, 0xDC, 0xDF, 0x3F, 0xD8, 0x17, 0x22, 0x59, 0x2C, 0x57, 0x42, 0xF0, + 0x32, 0x4F, 0x29, 0x81, 0x2C, 0x11, 0xC1, 0x5B, 0x8A, 0x11, 0x17, 0x3C, 0x40, 0x38, 0x38, 0x98, + 0xEE, 0x8D, 0x8A, 0x77, 0xEF, 0x2F, 0x8B, 0x3C, 0x4F, 0x04, 0x9F, 0x4E, 0x46, 0x65, 0x99, 0x63, + 0xCA, 0x2E, 0x2E, 0xAF, 0xDB, 0xB6, 0x9D, 0x4E, 0x26, 0x49, 0x92, 0x24, 0x89, 0x50, 0x4A, 0xE6, + 0x59, 0x9A, 0xE7, 0x79, 0xF0, 0xFE, 0xED, 0xBB, 0xF3, 0xB2, 0xAA, 0xB4, 0x75, 0xD7, 0xB3, 0x65, + 0x16, 0xC9, 0x66, 0xA3, 0x7F, 0x37, 0x84, 0x07, 0xF7, 0xEF, 0xF5, 0x52, 0xC6, 0x6D, 0x36, 0xEE, + 0x9D, 0xDE, 0x1A, 0x00, 0x60, 0x8C, 0x71, 0xCE, 0x03, 0x42, 0x8C, 0x31, 0xAD, 0x8D, 0x77, 0x2E, + 0xCE, 0x38, 0xC6, 0xC8, 0x3A, 0x1B, 0x63, 0x61, 0xD1, 0xFF, 0xE2, 0x7D, 0x88, 0xDB, 0x67, 0x34, + 0x5B, 0xF2, 0x3C, 0x8D, 0xB4, 0xB1, 0x64, 0xD3, 0x11, 0xD9, 0x18, 0x1B, 0xC1, 0x45, 0x5B, 0x27, + 0x18, 0x2B, 0xB2, 0x34, 0xBA, 0x66, 0x62, 0x5C, 0xA7, 0xEB, 0x25, 0x63, 0x34, 0xF8, 0xF0, 0xF4, + 0xF1, 0xBD, 0x83, 0xFD, 0x49, 0x6C, 0xE1, 0x1E, 0xF7, 0x30, 0x14, 0x36, 0xFC, 0xCB, 0x5B, 0xE6, + 0x04, 0xD8, 0x50, 0xCD, 0x20, 0x20, 0x51, 0x66, 0x37, 0x66, 0x4D, 0x8C, 0x93, 0x0D, 0x96, 0x07, + 0x46, 0x8C, 0x73, 0xD9, 0x2C, 0xE7, 0xB3, 0x79, 0xD3, 0x9B, 0xF9, 0xBA, 0xA5, 0x98, 0xF8, 0x30, + 0x78, 0x82, 0x10, 0x82, 0xC5, 0xB2, 0x0E, 0x21, 0x38, 0x6B, 0x13, 0xC1, 0x47, 0x55, 0x91, 0xE7, + 0x49, 0x91, 0x25, 0x82, 0x11, 0xA3, 0xB5, 0xB5, 0x9A, 0x10, 0x22, 0xB5, 0x7D, 0xF2, 0xE8, 0xF8, + 0xD3, 0xC7, 0x27, 0x5D, 0xDB, 0x7F, 0xF9, 0xD5, 0x8B, 0xEB, 0xF9, 0xAA, 0xEF, 0x65, 0x55, 0x15, + 0xA3, 0x71, 0x45, 0x30, 0x7E, 0xF2, 0xE0, 0xDE, 0xB3, 0x57, 0x67, 0x97, 0x57, 0x33, 0x29, 0xD5, + 0x7C, 0xB1, 0x9A, 0x2D, 0xD6, 0x4D, 0x2B, 0x01, 0x21, 0xA5, 0x4C, 0xD3, 0xF6, 0x8F, 0x1E, 0xDC, + 0xA3, 0x8C, 0x5A, 0xE7, 0xCB, 0x3C, 0xDB, 0xDF, 0x1B, 0x85, 0x10, 0x12, 0xCE, 0x7D, 0x08, 0xAB, + 0xBA, 0xED, 0xA5, 0x96, 0x4A, 0xE7, 0x59, 0xF2, 0xE0, 0xF8, 0x80, 0x51, 0x5A, 0xE4, 0xE9, 0x62, + 0x59, 0x37, 0x5D, 0x5F, 0xE6, 0xD9, 0x78, 0x94, 0xD7, 0x75, 0x1F, 0x00, 0x2E, 0x67, 0x4B, 0x4C, + 0x30, 0x02, 0xB8, 0x9C, 0xAD, 0x12, 0x21, 0x16, 0xEB, 0x7A, 0xB9, 0x6A, 0xBA, 0x5E, 0x8F, 0xAB, + 0x7C, 0x7F, 0x3A, 0x42, 0x08, 0xF5, 0x4A, 0x75, 0x4D, 0x7F, 0x76, 0x7E, 0xF5, 0xE0, 0xFE, 0xD1, + 0x7C, 0xB1, 0x7A, 0x77, 0x76, 0xF9, 0xC9, 0xA3, 0x7B, 0x0F, 0x8F, 0xF7, 0x8C, 0xF5, 0x91, 0xC9, + 0x67, 0x2B, 0xD4, 0x30, 0x70, 0x1F, 0x6D, 0xB3, 0xB5, 0xA2, 0x0F, 0x7A, 0xE8, 0x97, 0xE8, 0x42, + 0x04, 0xB8, 0x9B, 0x6C, 0xB2, 0xC1, 0x29, 0xE6, 0xC0, 0x47, 0xB8, 0x08, 0x28, 0x80, 0x8F, 0xC5, + 0x45, 0x91, 0xD2, 0xD5, 0x3A, 0x3F, 0xE4, 0x8D, 0xA1, 0xB0, 0xC9, 0x59, 0xFB, 0x40, 0xC6, 0x29, + 0xC1, 0x38, 0x62, 0xC2, 0xA6, 0xEA, 0x71, 0xB8, 0x6A, 0x03, 0x18, 0x71, 0x25, 0x84, 0x80, 0x06, + 0xF8, 0x40, 0x1B, 0x6B, 0x95, 0x0E, 0xC0, 0x30, 0x84, 0x56, 0xA5, 0xB2, 0x21, 0x04, 0xCE, 0xE8, + 0xE6, 0x4E, 0x06, 0x4D, 0x67, 0x37, 0xC1, 0xE4, 0x2E, 0x5A, 0x85, 0x1D, 0xBF, 0xFB, 0x5D, 0x14, + 0xBB, 0xAB, 0xC1, 0xC5, 0x57, 0xE3, 0x1E, 0x3E, 0x40, 0x18, 0x1A, 0x34, 0xC3, 0x4D, 0x9C, 0xE9, + 0xC6, 0x62, 0x0F, 0x1F, 0x4B, 0x45, 0xD9, 0xFD, 0x9C, 0x30, 0x24, 0x55, 0xF8, 0x4D, 0x5A, 0xDB, + 0xE0, 0x58, 0x74, 0x6E, 0x28, 0x94, 0x8D, 0x29, 0xFD, 0xB0, 0xD1, 0x6C, 0x9D, 0x73, 0x08, 0x53, + 0xAD, 0x65, 0xBD, 0x5A, 0x21, 0x2B, 0xAF, 0x2E, 0xAF, 0xCE, 0xAF, 0xEB, 0x75, 0x2D, 0x95, 0x71, + 0x84, 0x92, 0xC5, 0xE9, 0x25, 0x65, 0x4C, 0x69, 0x03, 0x21, 0x48, 0xD5, 0x84, 0x10, 0x94, 0x32, + 0x98, 0xE0, 0x24, 0x15, 0x8C, 0x31, 0xD5, 0x4B, 0x40, 0x10, 0x9C, 0xA7, 0x94, 0x00, 0x42, 0x11, + 0xA7, 0x30, 0x42, 0x80, 0x21, 0x84, 0x40, 0x19, 0x49, 0xF3, 0xD4, 0x7B, 0x1F, 0x87, 0x3A, 0x49, + 0x12, 0x84, 0x90, 0xD6, 0x3A, 0xEE, 0xAB, 0x4A, 0xA9, 0x34, 0x49, 0x10, 0x02, 0xEF, 0x1C, 0x63, + 0xD4, 0x28, 0x2B, 0x28, 0xBA, 0x5C, 0x34, 0x59, 0x92, 0x7E, 0xF2, 0x60, 0xFF, 0xE4, 0x78, 0x3F, + 0xCF, 0xC4, 0xDB, 0x33, 0x59, 0x14, 0xB9, 0x71, 0x6D, 0xC2, 0x19, 0xC6, 0x88, 0x53, 0x86, 0x22, + 0x31, 0x1D, 0x46, 0xC1, 0x07, 0x67, 0x3D, 0xA5, 0x74, 0x34, 0x2E, 0xC7, 0xE3, 0x6A, 0xB5, 0x6E, + 0x30, 0x46, 0xE3, 0x71, 0x85, 0x00, 0x96, 0xAB, 0x75, 0x9A, 0x24, 0xDA, 0x18, 0xE7, 0x43, 0x64, + 0xF2, 0x9B, 0x8C, 0x2B, 0xC1, 0x88, 0xE0, 0x14, 0xBC, 0xCB, 0x53, 0x51, 0x37, 0xBE, 0x57, 0x06, + 0x23, 0x64, 0x95, 0x62, 0x45, 0xDE, 0xF6, 0xF2, 0x60, 0x7F, 0xAF, 0xEB, 0x64, 0x99, 0x25, 0xFB, + 0x7B, 0xA3, 0x4E, 0x99, 0x80, 0xE9, 0xE3, 0xC7, 0x0F, 0x29, 0xA3, 0x52, 0xAA, 0x00, 0x1E, 0x02, + 0xF5, 0xCE, 0x72, 0x46, 0x0E, 0xF6, 0xAA, 0x00, 0xF8, 0xE5, 0x9B, 0xB3, 0xF3, 0xEB, 0x85, 0x36, + 0xCE, 0x39, 0xA7, 0x8C, 0x19, 0x8F, 0x4A, 0x42, 0xB0, 0xEC, 0xFB, 0xAA, 0x2A, 0xB5, 0xB1, 0x01, + 0x40, 0x69, 0xCD, 0x29, 0xF5, 0x21, 0x10, 0x4A, 0x70, 0x08, 0xD6, 0x3B, 0x17, 0x82, 0xF3, 0x5E, + 0x69, 0xAD, 0x95, 0x76, 0x3E, 0x44, 0xFA, 0x8D, 0xBE, 0x6F, 0xB2, 0x54, 0x48, 0x6D, 0x31, 0xC2, + 0x00, 0x88, 0x31, 0xEA, 0x7D, 0x50, 0xCA, 0x10, 0x82, 0x83, 0x67, 0x8C, 0x51, 0x08, 0x20, 0xA5, + 0x12, 0x42, 0x44, 0x4D, 0x1D, 0x20, 0x34, 0x5D, 0xEF, 0xAC, 0xC3, 0x84, 0xC4, 0x14, 0x67, 0x63, + 0xAD, 0x77, 0x8E, 0x0B, 0x16, 0x21, 0x2C, 0xC6, 0x19, 0x04, 0x67, 0x5A, 0x9B, 0xB6, 0x93, 0xF8, + 0x66, 0xBB, 0x06, 0xEF, 0x03, 0x10, 0xC0, 0x1E, 0x85, 0xC1, 0x37, 0x1A, 0x21, 0x6D, 0xBB, 0x30, + 0x51, 0xDC, 0xC2, 0x87, 0x86, 0x39, 0xC3, 0xEB, 0x38, 0x84, 0x40, 0x08, 0x09, 0xC1, 0x69, 0xD5, + 0x5F, 0x5E, 0x2D, 0x5A, 0xE5, 0x18, 0xA3, 0x18, 0xC1, 0x0F, 0x9F, 0xDE, 0xFB, 0xED, 0x8B, 0xF3, + 0x00, 0x81, 0x53, 0xB2, 0x3F, 0xCA, 0xDF, 0xF4, 0x8B, 0xD8, 0x9D, 0xD0, 0x39, 0x97, 0x24, 0x02, + 0x13, 0xDC, 0xB5, 0x3D, 0xE3, 0x8C, 0x31, 0x5A, 0x55, 0xA5, 0x03, 0x38, 0xD8, 0x9B, 0x3E, 0x3E, + 0x39, 0x68, 0xFB, 0xFE, 0xEA, 0x7A, 0x79, 0x3D, 0x5F, 0x12, 0x82, 0x19, 0x23, 0xCB, 0xD5, 0xBA, + 0xE9, 0x3A, 0xEF, 0xEC, 0x6F, 0xBE, 0x79, 0xF1, 0xDB, 0xAF, 0x9F, 0xC7, 0xAC, 0x63, 0xC1, 0xE8, + 0xE5, 0xE5, 0x6C, 0xB9, 0xAC, 0x47, 0x55, 0xB1, 0x58, 0xAE, 0x7F, 0xF2, 0xA3, 0xCF, 0x92, 0x54, + 0x4C, 0x47, 0x45, 0x22, 0x78, 0x22, 0x98, 0xD6, 0x56, 0x08, 0xA6, 0xAD, 0xC1, 0x04, 0x0B, 0xCE, + 0x97, 0xEB, 0x76, 0x3A, 0x2A, 0x62, 0xC0, 0xFD, 0xE8, 0x60, 0x7C, 0xB0, 0x57, 0x3D, 0x38, 0x39, + 0xA8, 0x9B, 0xAE, 0x2A, 0xB2, 0xD8, 0x1E, 0x5B, 0x4A, 0x4D, 0x28, 0x9D, 0xCD, 0xEB, 0xCF, 0x1E, + 0x1F, 0x1F, 0x1F, 0x4E, 0x01, 0xA1, 0x2C, 0x13, 0xB3, 0xF9, 0xEA, 0xF2, 0x7A, 0x31, 0x9B, 0xAF, + 0xAE, 0x17, 0x4B, 0x6B, 0x5C, 0x92, 0x88, 0xCF, 0x9F, 0x3E, 0xFC, 0xFA, 0xBB, 0x97, 0x8B, 0x55, + 0xFD, 0x27, 0xFF, 0xF8, 0xA7, 0xDF, 0xBF, 0x78, 0x7B, 0x71, 0xBD, 0x1C, 0x72, 0x55, 0x3E, 0xA2, + 0xAC, 0xDC, 0x9C, 0x74, 0xCE, 0x01, 0x10, 0x17, 0x13, 0x36, 0x63, 0x2D, 0x37, 0xF6, 0x3E, 0x44, + 0x63, 0x6F, 0xA3, 0x85, 0x79, 0x08, 0x3E, 0x6C, 0xF8, 0xC6, 0x01, 0x01, 0xF2, 0x0E, 0x3C, 0x38, + 0xEB, 0xC3, 0x36, 0xA2, 0xE9, 0x5D, 0x20, 0x18, 0x21, 0x02, 0x5B, 0x60, 0xD9, 0x24, 0xAE, 0x23, + 0x4A, 0x08, 0x1A, 0x7C, 0x69, 0xF1, 0xF3, 0x11, 0x6C, 0x36, 0xBD, 0x1D, 0xAE, 0xCC, 0x58, 0xA2, + 0x09, 0x10, 0xD0, 0xC0, 0x4D, 0x06, 0x30, 0xF0, 0x49, 0x22, 0x1C, 0xC9, 0x21, 0x91, 0x73, 0x43, + 0x98, 0x4F, 0x2A, 0x43, 0x09, 0x46, 0x08, 0x08, 0xC1, 0xB1, 0x7F, 0x04, 0xDC, 0x78, 0xEE, 0x07, + 0xA3, 0x30, 0x5A, 0xC7, 0xD1, 0xD7, 0xB0, 0xC5, 0x94, 0xED, 0x79, 0xB4, 0xC3, 0x36, 0x89, 0x3E, + 0x46, 0x8E, 0x1E, 0x99, 0x0F, 0xD0, 0x4E, 0x80, 0x3C, 0x92, 0xB8, 0x0D, 0xF1, 0xA6, 0x9D, 0x7A, + 0xAE, 0xED, 0xB0, 0x0E, 0x4F, 0x63, 0x26, 0xC9, 0x0D, 0xBF, 0x1D, 0x61, 0x2C, 0x84, 0xA0, 0x63, + 0x81, 0x51, 0xDC, 0x90, 0xA3, 0x8E, 0x16, 0x77, 0xE0, 0xC8, 0x26, 0xC8, 0x19, 0x05, 0x40, 0xC1, + 0x07, 0x00, 0x74, 0x7D, 0x79, 0xF1, 0xEC, 0xDB, 0x6F, 0x13, 0x4E, 0xF6, 0x46, 0x45, 0x96, 0x70, + 0x42, 0xA9, 0x75, 0xDE, 0x58, 0x23, 0x8D, 0xF1, 0x3E, 0x78, 0xE7, 0x10, 0x42, 0xCE, 0xD9, 0xB8, + 0xBD, 0xA7, 0x69, 0xE2, 0x01, 0x62, 0x9F, 0x70, 0xCC, 0xA8, 0xF7, 0x1E, 0x41, 0xE0, 0x8C, 0x21, + 0xEB, 0x42, 0x08, 0x94, 0x10, 0x00, 0x1F, 0xFC, 0x4D, 0x46, 0x0C, 0xC6, 0x58, 0x69, 0xED, 0x94, + 0x46, 0xD1, 0x41, 0x10, 0xBC, 0x31, 0x16, 0x42, 0x90, 0xBD, 0xCA, 0xD2, 0x44, 0x6B, 0xE3, 0x9C, + 0x0D, 0x01, 0xC6, 0xE3, 0x42, 0x29, 0x75, 0x75, 0xBD, 0x2A, 0x32, 0xEE, 0x01, 0x63, 0x04, 0x52, + 0x99, 0xA6, 0xD7, 0x52, 0x69, 0xC2, 0x68, 0x27, 0x15, 0xC2, 0xD8, 0x7B, 0xA8, 0xCA, 0xCC, 0xFB, + 0x60, 0x8D, 0x8D, 0xD2, 0x18, 0xAB, 0xF0, 0x7A, 0xA5, 0x43, 0x08, 0x07, 0xFB, 0x93, 0xAE, 0x97, + 0xCE, 0xF9, 0xA3, 0xA3, 0xC3, 0xA6, 0xED, 0xB0, 0x73, 0x08, 0xC1, 0x68, 0x54, 0x22, 0x08, 0x04, + 0x03, 0x27, 0xB8, 0x2A, 0x52, 0x67, 0xED, 0x64, 0x94, 0x4F, 0x46, 0xF9, 0xCB, 0x77, 0x97, 0x89, + 0xA0, 0x16, 0xF9, 0x34, 0x15, 0x4D, 0xDB, 0x13, 0xF2, 0xFF, 0x11, 0xF6, 0x5E, 0x4D, 0x92, 0x25, + 0x59, 0x7A, 0xD8, 0x39, 0x7E, 0x5C, 0x5C, 0x15, 0x32, 0x45, 0x65, 0x55, 0x75, 0x55, 0x77, 0xB5, + 0x9E, 0x1E, 0xB1, 0x33, 0x3B, 0x8B, 0x01, 0x07, 0xA0, 0x00, 0xD7, 0x40, 0x33, 0x3E, 0xF1, 0x85, + 0xBF, 0x82, 0x86, 0x15, 0xC0, 0xE2, 0xAF, 0xF0, 0x99, 0xFF, 0x81, 0x2F, 0x34, 0xD2, 0xC0, 0x25, + 0x09, 0xEE, 0x12, 0xB6, 0x8B, 0xDD, 0xC5, 0x08, 0xB4, 0x98, 0x16, 0x25, 0xBA, 0x44, 0x56, 0xEA, + 0x90, 0x57, 0xB9, 0x3A, 0x7C, 0xF0, 0x1B, 0x51, 0xD9, 0x33, 0x8B, 0x45, 0x58, 0x59, 0x5A, 0x55, + 0x66, 0x56, 0x44, 0xDC, 0x1B, 0xEE, 0xC7, 0x8F, 0xF8, 0x84, 0xBC, 0x7F, 0xEF, 0xA8, 0x30, 0xB4, + 0xDA, 0xB4, 0xD7, 0x8B, 0x55, 0x53, 0x37, 0x4D, 0xDB, 0x6F, 0x36, 0x5B, 0xE7, 0x7C, 0x08, 0x11, + 0x91, 0xEF, 0x1C, 0x1F, 0xAE, 0x36, 0xDB, 0x8B, 0xB3, 0xCB, 0xD9, 0xC1, 0x3C, 0x02, 0xB4, 0x5D, + 0x1F, 0x23, 0x24, 0x2E, 0xC7, 0xDD, 0x93, 0x3B, 0x21, 0x86, 0xD3, 0xD3, 0xB3, 0xE9, 0x64, 0xB2, + 0xAD, 0x1B, 0xE7, 0x43, 0xD7, 0x75, 0xBA, 0xAA, 0x04, 0xA2, 0xB3, 0x2E, 0xE5, 0x3D, 0x7D, 0x6F, + 0x15, 0x11, 0x30, 0x28, 0xAD, 0xC1, 0x7B, 0x22, 0xEA, 0x7B, 0x9B, 0xA4, 0xEB, 0x80, 0xB1, 0xED, + 0xED, 0xF1, 0xD1, 0x4C, 0x29, 0xD9, 0x75, 0x76, 0xED, 0x9A, 0xBE, 0xB7, 0xC0, 0xCC, 0x1C, 0x95, + 0x52, 0xDE, 0x07, 0xEB, 0x42, 0xC2, 0xB2, 0x23, 0x8A, 0x84, 0x95, 0xD7, 0xBB, 0x73, 0x54, 0x29, + 0x72, 0xD6, 0x39, 0xCB, 0x4A, 0xC9, 0x14, 0x74, 0xAC, 0xF5, 0xDE, 0x3A, 0x64, 0x4E, 0xD6, 0x1E, + 0xFB, 0x1A, 0x42, 0x08, 0x8E, 0x31, 0x82, 0xD8, 0xEF, 0x44, 0xDE, 0xA1, 0x3A, 0x91, 0xE3, 0xED, + 0x34, 0x1F, 0xDF, 0xFC, 0xC6, 0x00, 0x79, 0xF3, 0x9F, 0x7D, 0xF9, 0xE4, 0xEB, 0x6F, 0x5E, 0x14, + 0x5A, 0xC4, 0x08, 0x77, 0x8E, 0x46, 0xCB, 0x75, 0xAD, 0xB5, 0x6C, 0x7B, 0xC7, 0x00, 0xD3, 0x2A, + 0xCB, 0x14, 0xC5, 0xC8, 0x4A, 0xA9, 0x54, 0x1A, 0xA3, 0x40, 0x08, 0x50, 0x77, 0x76, 0x3E, 0x19, + 0x19, 0xA3, 0x7B, 0xE7, 0x3E, 0xF9, 0xE8, 0xBD, 0xE9, 0xB8, 0x3C, 0xBB, 0xB8, 0xBE, 0x5E, 0xAC, + 0x9B, 0xBA, 0x59, 0xAD, 0xD6, 0x49, 0x4F, 0xA9, 0xEB, 0x7A, 0x72, 0xEE, 0xE5, 0x2B, 0xFB, 0xFA, + 0xEC, 0x4A, 0x6B, 0x59, 0x15, 0xE3, 0xD5, 0xBA, 0xEF, 0x3A, 0x5B, 0xE4, 0x66, 0x53, 0xB7, 0xCE, + 0x7A, 0xAD, 0x95, 0x92, 0xF4, 0xBD, 0xF7, 0x1E, 0xF4, 0xBD, 0x8D, 0x15, 0x4B, 0x25, 0xA5, 0x10, + 0x24, 0x44, 0x6F, 0x6D, 0x55, 0xE6, 0xD3, 0x71, 0xE1, 0x9D, 0x97, 0x44, 0x29, 0xAC, 0x0B, 0x44, + 0xA5, 0x54, 0x6E, 0x4C, 0x55, 0x64, 0x52, 0xD2, 0xCD, 0x62, 0x5D, 0x64, 0xBA, 0x6B, 0x7B, 0x81, + 0xC2, 0xB9, 0xEE, 0xDB, 0x57, 0x17, 0x77, 0x8F, 0xE7, 0x5D, 0x6F, 0xCB, 0x32, 0x7B, 0xEF, 0xED, + 0x7B, 0x0F, 0xEF, 0x1F, 0x2F, 0x56, 0xF5, 0xD3, 0xE7, 0xA7, 0x9B, 0x4D, 0x33, 0x9F, 0x4D, 0x84, + 0x14, 0x3F, 0xFE, 0xE1, 0x47, 0xCF, 0x5E, 0x9C, 0xD5, 0x6D, 0x37, 0x1A, 0x97, 0xAF, 0xCE, 0x6F, + 0xFA, 0xDE, 0x49, 0x12, 0xBC, 0x43, 0x38, 0xA4, 0xE4, 0x21, 0x6D, 0xDF, 0x5D, 0x55, 0xB8, 0x7B, + 0x70, 0x8C, 0x8C, 0x00, 0x71, 0x80, 0x40, 0x44, 0xDE, 0x25, 0x4C, 0x30, 0x4C, 0x36, 0x71, 0xB8, + 0xA7, 0x1C, 0x21, 0xD5, 0x9B, 0x00, 0xC0, 0x28, 0xE2, 0xBE, 0x0E, 0x43, 0xE0, 0x08, 0x12, 0x21, + 0xD1, 0x25, 0x79, 0x40, 0x1D, 0x08, 0x12, 0x48, 0x7F, 0xF4, 0xC7, 0x7F, 0x46, 0x02, 0x45, 0xE2, + 0x8A, 0xC3, 0x40, 0x9C, 0xDA, 0x4D, 0xA0, 0x87, 0x4D, 0x0F, 0xBB, 0xC6, 0xE7, 0x6F, 0xA1, 0x4E, + 0x85, 0x40, 0x25, 0x84, 0x56, 0x84, 0x3B, 0x8D, 0xD9, 0x3E, 0xAD, 0x66, 0x00, 0x44, 0x91, 0x84, + 0x7A, 0xD3, 0x95, 0x38, 0xE7, 0xD2, 0xD7, 0xB6, 0xED, 0xAD, 0x75, 0x6D, 0xDB, 0x47, 0x8E, 0x49, + 0xD7, 0x75, 0x1F, 0xA1, 0xF6, 0x84, 0xC7, 0xDF, 0xCD, 0xA1, 0xFE, 0x9E, 0x7F, 0x22, 0xBE, 0x51, + 0xBD, 0xBD, 0x95, 0x76, 0xA5, 0xBF, 0xEC, 0x79, 0x91, 0xB7, 0xB9, 0x04, 0xB8, 0xAB, 0x9C, 0xF7, + 0x38, 0xC6, 0x14, 0xDD, 0xD2, 0x3F, 0x95, 0x4A, 0xDF, 0x41, 0xC4, 0x94, 0xF4, 0xA5, 0xB1, 0xD4, + 0x20, 0x45, 0x3B, 0x88, 0x6D, 0x5D, 0x5D, 0x7C, 0xF1, 0xEB, 0x5F, 0x9C, 0x4C, 0x0B, 0x85, 0xB0, + 0x69, 0x3A, 0x40, 0xF1, 0xE2, 0xF4, 0x66, 0xDB, 0xB4, 0xA4, 0x14, 0x82, 0x60, 0x1C, 0xBC, 0x38, + 0x9D, 0xF5, 0xA9, 0x42, 0x91, 0x4A, 0xFA, 0xC0, 0xDE, 0x85, 0x04, 0x2C, 0x48, 0xA2, 0x7A, 0x31, + 0x70, 0x0C, 0x11, 0x85, 0xC8, 0x33, 0x23, 0x25, 0x01, 0xC2, 0x90, 0x39, 0x73, 0x0C, 0x21, 0x20, + 0x40, 0x08, 0xC1, 0x5A, 0x17, 0x63, 0x4C, 0x83, 0xC2, 0x34, 0x20, 0xCB, 0x33, 0x63, 0xAD, 0x8B, + 0x91, 0x11, 0xC4, 0x5B, 0x47, 0x63, 0x8E, 0xB1, 0x0F, 0x1C, 0x19, 0x95, 0x14, 0x1F, 0xBD, 0xF7, + 0xE0, 0xAB, 0x67, 0x67, 0xA7, 0xAF, 0xAF, 0xAB, 0x51, 0xD5, 0xB4, 0xB6, 0xAA, 0x8A, 0x3C, 0xCF, + 0xAD, 0xB5, 0x75, 0xD3, 0x4A, 0x12, 0xBD, 0xB5, 0x4A, 0xC9, 0xA6, 0xED, 0x10, 0x99, 0x23, 0x87, + 0x10, 0xDA, 0xAE, 0x23, 0x21, 0xFA, 0xDE, 0xF6, 0xD6, 0x21, 0x40, 0x9E, 0x9B, 0xA2, 0xC8, 0x11, + 0x85, 0x24, 0xC1, 0x31, 0x08, 0x44, 0xA3, 0xA8, 0xC8, 0x54, 0x55, 0xE5, 0x45, 0x6E, 0x48, 0x4A, + 0x44, 0x94, 0x24, 0x8B, 0xAA, 0x12, 0x42, 0x18, 0x63, 0xCA, 0xC2, 0x70, 0xB0, 0xCC, 0xF1, 0xF9, + 0xAB, 0x8B, 0xAA, 0x2C, 0x8D, 0x96, 0x8C, 0xB8, 0xDE, 0xD4, 0xE3, 0xF1, 0xE8, 0xF8, 0xF8, 0x50, + 0x69, 0xBD, 0x5A, 0x6D, 0x1E, 0xBD, 0x7D, 0xBF, 0xCC, 0xF5, 0xB7, 0xA7, 0x57, 0x26, 0xCB, 0xD6, + 0xEB, 0x6D, 0x72, 0xDB, 0x8D, 0x91, 0x8F, 0x8F, 0x0F, 0x1E, 0x3E, 0xB8, 0xFF, 0xF2, 0xD5, 0xE9, + 0xE1, 0xC1, 0x41, 0x0C, 0x51, 0x12, 0x39, 0xE7, 0x52, 0x21, 0xA0, 0x24, 0x09, 0x49, 0x3E, 0x84, + 0x18, 0x62, 0x55, 0xE4, 0x59, 0x9E, 0x31, 0x00, 0x0F, 0x22, 0x2C, 0xEC, 0xBD, 0x8F, 0x91, 0x49, + 0x92, 0x94, 0x54, 0xE4, 0x86, 0x99, 0x89, 0x04, 0x09, 0xE1, 0x43, 0x20, 0x31, 0x2C, 0xA1, 0x10, + 0x93, 0x24, 0xB7, 0xC8, 0x32, 0xE3, 0x43, 0xD8, 0x6C, 0x6A, 0xE7, 0x3D, 0x33, 0xC7, 0x10, 0x99, + 0xC1, 0x28, 0x09, 0xCC, 0x44, 0x62, 0x32, 0x2E, 0x6F, 0x96, 0x5B, 0x8E, 0x8C, 0x08, 0xE3, 0x51, + 0x15, 0x9C, 0x3F, 0x3C, 0x98, 0xBC, 0xFF, 0xE8, 0x7E, 0x1A, 0xB6, 0xEC, 0x97, 0xD0, 0x9B, 0xBE, + 0xCA, 0x77, 0x9B, 0x21, 0x88, 0xFB, 0xF6, 0xFE, 0x6D, 0x82, 0x0A, 0x30, 0xF3, 0xBF, 0xF9, 0xB7, + 0x7F, 0xFB, 0xCB, 0x4F, 0x9F, 0xBC, 0xFF, 0xE8, 0xAD, 0xA6, 0x69, 0xAB, 0x5C, 0x8F, 0x47, 0xC5, + 0xB7, 0xAF, 0xAE, 0x98, 0x79, 0xDB, 0x58, 0xEB, 0xC3, 0xC9, 0xC1, 0x98, 0x08, 0x2F, 0x97, 0x35, + 0x87, 0x98, 0xE6, 0xC2, 0x5D, 0xD7, 0x7B, 0x1F, 0x26, 0x93, 0x51, 0x9E, 0x65, 0x37, 0x8B, 0x95, + 0x10, 0xA8, 0xA4, 0x3C, 0x7D, 0x7D, 0xF9, 0xE4, 0xDB, 0x97, 0x37, 0x37, 0xCB, 0xCD, 0xB6, 0x1E, + 0x15, 0xD9, 0x6C, 0x3A, 0x9A, 0x8C, 0x8A, 0x3C, 0x33, 0xDB, 0xA6, 0xF5, 0xDE, 0x23, 0x8A, 0x71, + 0x55, 0xA6, 0x03, 0x72, 0x36, 0x19, 0x09, 0x84, 0xD4, 0xBA, 0x3A, 0x38, 0x98, 0xAE, 0x36, 0xDB, + 0x2C, 0xD3, 0x52, 0xD2, 0x5F, 0xFE, 0xF5, 0xAF, 0xF3, 0x4C, 0x9B, 0x4C, 0x3B, 0x17, 0x46, 0x55, + 0x9E, 0x66, 0x53, 0xA9, 0xB6, 0xD2, 0x4A, 0x09, 0x14, 0x69, 0x77, 0xC7, 0x10, 0xDA, 0xDE, 0x86, + 0x10, 0x92, 0x06, 0x99, 0x0B, 0x51, 0x49, 0x19, 0x42, 0xB4, 0xCE, 0x3F, 0x7E, 0xF6, 0xEA, 0xC5, + 0xAB, 0x8B, 0xDE, 0x86, 0x4C, 0x2B, 0xAD, 0x55, 0x66, 0xD4, 0x7C, 0x3A, 0xFE, 0xE0, 0xD1, 0x83, + 0xB2, 0xC8, 0xEA, 0xBA, 0x7D, 0xF5, 0xFA, 0xB2, 0x28, 0x32, 0x63, 0xF4, 0xC5, 0xC5, 0xF5, 0xE7, + 0x5F, 0x3E, 0xB9, 0x77, 0xF7, 0xE8, 0x9D, 0xB7, 0xEE, 0x38, 0x17, 0x70, 0x27, 0x4E, 0x43, 0x83, + 0x02, 0xCF, 0x1E, 0x09, 0xB0, 0xBB, 0x8D, 0x3B, 0x22, 0xA3, 0x40, 0xA4, 0x24, 0x76, 0xBD, 0x6B, + 0x11, 0xF3, 0x6E, 0x5F, 0xEF, 0x5B, 0xF4, 0x91, 0x39, 0x30, 0x02, 0xBE, 0xF9, 0x44, 0x00, 0x40, + 0xA0, 0xD8, 0x4F, 0x62, 0xF6, 0xAD, 0x70, 0xA5, 0x48, 0x2B, 0x49, 0x7F, 0xFC, 0x27, 0x7F, 0x06, + 0x3C, 0xBC, 0x04, 0xE2, 0xAD, 0x9F, 0xEF, 0x22, 0xD8, 0x77, 0x43, 0xC9, 0x40, 0x27, 0x10, 0x28, + 0x54, 0xCA, 0xC5, 0x86, 0x7B, 0x04, 0x24, 0x70, 0x47, 0x26, 0x8F, 0x3E, 0x0C, 0xD6, 0x4A, 0xDE, + 0x0F, 0xDD, 0x56, 0xE7, 0x42, 0x8C, 0xEC, 0x7D, 0x88, 0x91, 0x7D, 0x88, 0x69, 0x39, 0xCA, 0x61, + 0xE6, 0xFD, 0x26, 0x6C, 0xDD, 0x1E, 0xA9, 0xEE, 0x57, 0xC9, 0xED, 0xAF, 0x6F, 0x62, 0xD9, 0xF0, + 0x06, 0xDF, 0x1C, 0xA4, 0xB7, 0x53, 0xBF, 0xFD, 0x4D, 0xF9, 0x7B, 0xC3, 0xDC, 0xFE, 0xEF, 0xB7, + 0x30, 0xFD, 0x09, 0x34, 0x04, 0x44, 0x89, 0xEC, 0x4A, 0x52, 0x91, 0x18, 0xA6, 0xEC, 0x18, 0x23, + 0x08, 0x01, 0x24, 0xE5, 0xD5, 0xE9, 0xF3, 0x66, 0xBD, 0xD6, 0x26, 0xD7, 0x4A, 0xF6, 0x36, 0xD4, + 0xAD, 0xBD, 0x59, 0xB7, 0x48, 0xC4, 0x11, 0x7C, 0x08, 0x4A, 0x6B, 0x00, 0x00, 0x06, 0x12, 0x98, + 0xC8, 0x25, 0x52, 0xA9, 0xAE, 0xB3, 0x31, 0xB2, 0x54, 0x52, 0x48, 0x91, 0x72, 0x3D, 0xEF, 0x3C, + 0x00, 0x0B, 0xC1, 0xC1, 0xFB, 0x94, 0x89, 0x58, 0xE7, 0x53, 0x46, 0x9A, 0x02, 0x2B, 0x49, 0xE9, + 0x77, 0x09, 0x33, 0xA2, 0x08, 0x21, 0xDD, 0xBA, 0xD8, 0xF5, 0xCE, 0xF9, 0xB0, 0x6D, 0xBB, 0xC3, + 0x71, 0xAE, 0x15, 0x09, 0xA9, 0x5C, 0xE0, 0xB7, 0xEF, 0x1F, 0x97, 0xA3, 0xD1, 0x5F, 0xFD, 0xCD, + 0xA7, 0x3F, 0xF9, 0xE1, 0x07, 0x7F, 0xF3, 0x1F, 0xBE, 0x70, 0xCE, 0xEB, 0x4C, 0xE7, 0x99, 0x79, + 0x7D, 0x76, 0x51, 0x96, 0x05, 0xA2, 0x88, 0x31, 0x4A, 0xA9, 0x9A, 0xB6, 0xDB, 0x36, 0x6D, 0xD3, + 0xB4, 0xD6, 0xB9, 0xC8, 0x20, 0x08, 0x09, 0x29, 0xCB, 0xB2, 0x10, 0xE2, 0xF5, 0x62, 0xD5, 0x34, + 0xAD, 0x52, 0x04, 0x1C, 0xBD, 0x73, 0x44, 0xA8, 0x15, 0x65, 0x5A, 0x06, 0x1F, 0xA4, 0x94, 0x11, + 0xD0, 0x68, 0x29, 0xA4, 0x2A, 0x8A, 0x42, 0x4A, 0x22, 0xC2, 0x83, 0xE9, 0x28, 0xCB, 0xF4, 0x9F, + 0xFF, 0xDB, 0xBF, 0xB9, 0xBA, 0x59, 0xDF, 0x3D, 0x39, 0x32, 0x59, 0xBE, 0x6D, 0x7B, 0xA3, 0xD5, + 0xB6, 0x6E, 0x80, 0x24, 0x0A, 0x59, 0x16, 0xF9, 0xA8, 0xCC, 0xE7, 0x47, 0x87, 0x9F, 0x7E, 0xF9, + 0x74, 0x3A, 0x9D, 0xCC, 0x67, 0x93, 0xB6, 0xED, 0x11, 0x91, 0x39, 0x3A, 0xE7, 0x1E, 0x3C, 0xB8, + 0xB7, 0x5A, 0x6D, 0xAE, 0x6E, 0x16, 0x3E, 0x84, 0xAE, 0xEB, 0xA4, 0xA4, 0xBE, 0x77, 0xC0, 0x3C, + 0x9D, 0x4E, 0x42, 0x8C, 0xBD, 0xF3, 0x44, 0x94, 0x69, 0x15, 0x62, 0xE8, 0xBA, 0x3E, 0xDD, 0x01, + 0x00, 0x24, 0x21, 0x7C, 0x88, 0x42, 0x88, 0xD9, 0x6C, 0x12, 0x42, 0xDC, 0x6E, 0xDB, 0xA6, 0xEB, + 0xA5, 0x24, 0xE0, 0xE4, 0x57, 0xC2, 0x00, 0x98, 0x56, 0xB9, 0x0F, 0x51, 0x6B, 0x9D, 0xE8, 0x5F, + 0x99, 0x51, 0x77, 0x0E, 0xA7, 0xE3, 0x2A, 0x47, 0x84, 0xB6, 0xEF, 0x99, 0x81, 0x88, 0xF2, 0xCC, + 0x24, 0x99, 0xEF, 0x18, 0xD9, 0x68, 0x95, 0x50, 0xB2, 0xDF, 0xFB, 0xF0, 0xED, 0xFD, 0x09, 0x7A, + 0x7B, 0xA9, 0xEC, 0x17, 0xFF, 0xAE, 0xE5, 0x3F, 0x74, 0x4E, 0x6F, 0x3F, 0x98, 0x59, 0x6B, 0x75, + 0xFA, 0xFA, 0xE2, 0x2F, 0xFE, 0xFA, 0x33, 0x10, 0xF4, 0xD1, 0xDB, 0x87, 0xCF, 0x5E, 0x5D, 0x8D, + 0x0A, 0x53, 0x18, 0xFD, 0xE4, 0xE5, 0x45, 0xA6, 0xF5, 0xA6, 0x75, 0x91, 0xF9, 0xC1, 0x9D, 0x99, + 0xF3, 0xE1, 0x6A, 0xD9, 0x70, 0x64, 0x44, 0x4C, 0xF3, 0xB7, 0x3C, 0xCF, 0x9C, 0x73, 0x8B, 0xE5, + 0x0A, 0x00, 0xEA, 0xA6, 0x7D, 0x7D, 0x76, 0x71, 0xBD, 0x58, 0x35, 0x6D, 0xEF, 0x9C, 0x13, 0x02, + 0x8C, 0xD1, 0x44, 0xA2, 0xC8, 0x4D, 0x96, 0x69, 0x12, 0x88, 0xC0, 0x21, 0x86, 0x94, 0x58, 0x3D, + 0xB8, 0x7F, 0xB7, 0xED, 0x7A, 0x21, 0xF0, 0xFE, 0xBD, 0x13, 0x12, 0x08, 0x31, 0x30, 0x07, 0xA5, + 0xCD, 0x66, 0xDB, 0xFE, 0xE2, 0xD7, 0x5F, 0x7E, 0xF5, 0xF8, 0x45, 0xDB, 0xD9, 0x2C, 0xD3, 0x89, + 0xC6, 0x8B, 0x88, 0x46, 0x2B, 0x18, 0x76, 0x2B, 0x13, 0x11, 0xC7, 0x98, 0x2E, 0x2B, 0x46, 0x3E, + 0xBB, 0x5C, 0x34, 0x6D, 0xFF, 0xD5, 0xE3, 0x17, 0x0C, 0x5C, 0xE4, 0x19, 0x00, 0x74, 0x7D, 0xAF, + 0x95, 0x6E, 0xFB, 0xFE, 0xF2, 0x7A, 0xB5, 0x5C, 0x6D, 0xF3, 0x3C, 0x23, 0x12, 0x69, 0x79, 0x1E, + 0x4C, 0xC7, 0x4A, 0xAB, 0x6D, 0xDD, 0xD6, 0x75, 0xDB, 0x76, 0x5D, 0x59, 0x14, 0xCE, 0xC7, 0xEF, + 0xBD, 0xFF, 0x40, 0x52, 0xE2, 0x56, 0xBF, 0xD1, 0xBD, 0x18, 0x6E, 0xE3, 0xD0, 0xB1, 0xC2, 0xDD, + 0x7A, 0x46, 0xD8, 0x81, 0x37, 0xE5, 0x80, 0x57, 0x81, 0x24, 0x2D, 0xB1, 0x6F, 0xA6, 0x0D, 0x47, + 0x48, 0x1A, 0xA7, 0xC0, 0xF0, 0x24, 0xDF, 0xFD, 0x68, 0xC4, 0x4E, 0x02, 0x90, 0x89, 0x44, 0xA6, + 0xA5, 0x56, 0x44, 0xFF, 0xD3, 0xBF, 0xF8, 0x97, 0x69, 0x40, 0x30, 0xD4, 0x53, 0xB8, 0x93, 0xC7, + 0xE6, 0xFD, 0x47, 0x88, 0xBC, 0x23, 0xE5, 0x20, 0x82, 0x00, 0x90, 0x83, 0xC7, 0x2D, 0x08, 0x1A, + 0x4E, 0xA7, 0xDD, 0x90, 0x1A, 0x01, 0x99, 0x23, 0x20, 0x60, 0x59, 0x18, 0x63, 0xD4, 0x3E, 0xC4, + 0x24, 0x95, 0x18, 0x29, 0x85, 0x94, 0xD2, 0x18, 0x95, 0x67, 0x26, 0x31, 0xE9, 0x6E, 0x8F, 0x02, + 0x52, 0x00, 0x12, 0x3B, 0xD3, 0xD3, 0x7D, 0xE4, 0xDA, 0x2F, 0x97, 0x5B, 0xAB, 0xEA, 0xCD, 0x55, + 0xFD, 0xF6, 0x69, 0x79, 0xBB, 0x35, 0x7E, 0x6B, 0xC5, 0xFD, 0x76, 0x42, 0xF7, 0x5D, 0x10, 0x59, + 0xBC, 0xA5, 0x68, 0x36, 0xDC, 0xF1, 0x21, 0x26, 0x02, 0x22, 0x92, 0x10, 0x92, 0x24, 0x11, 0x6D, + 0x6E, 0x2E, 0xFA, 0xDE, 0x26, 0xA3, 0x2A, 0x1F, 0x42, 0xDF, 0x87, 0x57, 0x97, 0x6B, 0x00, 0x68, + 0xDB, 0x5E, 0x84, 0x70, 0x21, 0x95, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x6B, 0x9D, + 0xC0, 0xA8, 0xCC, 0xB1, 0x6D, 0x3B, 0xEF, 0xBD, 0xD6, 0x2A, 0x02, 0x04, 0x3F, 0xA0, 0xC6, 0xD3, + 0x94, 0x20, 0x86, 0x40, 0x02, 0xB5, 0x94, 0x29, 0xDE, 0x71, 0x88, 0x91, 0xE3, 0xBE, 0xB0, 0x55, + 0x92, 0xD2, 0x1D, 0x23, 0x49, 0xCC, 0xD1, 0xF9, 0xE0, 0xBD, 0xB7, 0xD6, 0x87, 0x37, 0x76, 0x2A, + 0x22, 0x84, 0xF0, 0xDE, 0x83, 0x83, 0x3B, 0xC7, 0x07, 0xDB, 0xD6, 0x5E, 0x5C, 0xAF, 0x7E, 0xF2, + 0xC3, 0xF7, 0xFE, 0xF6, 0x97, 0x5F, 0x4D, 0xC7, 0x23, 0xEF, 0xE3, 0xB7, 0x2F, 0xCF, 0x85, 0x40, + 0x49, 0x12, 0x01, 0x67, 0xB3, 0x29, 0x33, 0xB4, 0x6D, 0x9F, 0xE7, 0x99, 0x31, 0x46, 0x4A, 0x42, + 0x80, 0xB2, 0x28, 0x92, 0x35, 0x4C, 0xDB, 0xF6, 0xEB, 0xF5, 0x66, 0xBD, 0xD9, 0x32, 0x80, 0xED, + 0xFB, 0xC4, 0xF3, 0x69, 0x9B, 0x26, 0xCF, 0x34, 0xA1, 0x98, 0x8C, 0x0A, 0x67, 0x9D, 0x31, 0xAA, + 0xAC, 0xAA, 0xF3, 0xCB, 0x9B, 0xB3, 0x8B, 0x25, 0x49, 0xE9, 0xDA, 0xFA, 0xE6, 0xE2, 0xF2, 0x9D, + 0x47, 0x0F, 0x9C, 0x73, 0xFF, 0xCF, 0x5F, 0xFC, 0xDD, 0xAB, 0xD3, 0xF3, 0xA3, 0xA3, 0xA3, 0xBA, + 0x69, 0x6F, 0x16, 0xAB, 0xB7, 0x1F, 0xDC, 0x17, 0x52, 0x1E, 0x1E, 0x1E, 0x5E, 0xDF, 0x2C, 0x7D, + 0xE4, 0xD1, 0xA8, 0x22, 0xA5, 0x9E, 0x3E, 0x7F, 0xBD, 0x5C, 0x2C, 0xAF, 0xAE, 0x17, 0x07, 0x07, + 0x33, 0xEB, 0x5C, 0x12, 0x08, 0x62, 0x00, 0xAD, 0xB5, 0x24, 0x61, 0x5D, 0x58, 0x2E, 0x57, 0x31, + 0x44, 0xAD, 0x55, 0x2A, 0xF4, 0x06, 0x73, 0x2D, 0x00, 0x29, 0xA5, 0xD1, 0x0A, 0x19, 0x92, 0x30, + 0xBF, 0x75, 0xDE, 0x85, 0x28, 0x48, 0x30, 0x73, 0x9E, 0xE7, 0xE9, 0x5C, 0xEC, 0x7B, 0x17, 0x23, + 0x77, 0xBD, 0x8D, 0x91, 0xA5, 0x54, 0xC6, 0x64, 0x21, 0x04, 0xE7, 0x5D, 0x3A, 0x29, 0x7B, 0x6B, + 0xD3, 0xF0, 0x5E, 0x49, 0x9A, 0x4F, 0x4B, 0x66, 0x36, 0x46, 0x8F, 0xAA, 0xA2, 0xEB, 0xAD, 0xF3, + 0x71, 0x32, 0x2A, 0x36, 0xDB, 0x36, 0x81, 0x75, 0x24, 0x11, 0x11, 0x8E, 0xAB, 0x32, 0x05, 0xB2, + 0xDB, 0x8B, 0x64, 0x58, 0x6F, 0xE9, 0x2C, 0x1F, 0x8A, 0xCB, 0x37, 0xAB, 0xF1, 0x36, 0x82, 0x89, + 0x99, 0xA5, 0x94, 0x5F, 0x7E, 0xF5, 0xF4, 0xCB, 0xC7, 0x2F, 0x3E, 0x7C, 0x74, 0x77, 0xB9, 0xDA, + 0x3E, 0x7B, 0x71, 0x61, 0x14, 0x39, 0x17, 0xCE, 0xAF, 0xD6, 0x6D, 0x6F, 0x03, 0x00, 0x03, 0x1E, + 0xCD, 0x4A, 0xE7, 0xC3, 0xCD, 0xAA, 0x26, 0x49, 0x24, 0x95, 0x10, 0x42, 0x12, 0x6D, 0xB7, 0x75, + 0xD7, 0xF5, 0x44, 0x82, 0x39, 0xDA, 0xDE, 0x31, 0x40, 0x96, 0x99, 0x84, 0x0A, 0x28, 0x32, 0xAD, + 0x48, 0xB8, 0x10, 0x85, 0x20, 0x66, 0xD0, 0x8A, 0xCA, 0x22, 0x4F, 0x4A, 0xD6, 0x80, 0x78, 0x73, + 0xB3, 0xF4, 0xCE, 0xB5, 0x6D, 0x97, 0x0E, 0xA1, 0x51, 0x95, 0xDF, 0x39, 0x9A, 0xFF, 0xD3, 0x9F, + 0xFD, 0xDE, 0x74, 0x5C, 0xBC, 0x3C, 0x3D, 0x77, 0xDE, 0x73, 0x8C, 0x4A, 0xC9, 0xF9, 0x74, 0x2C, + 0x04, 0xA5, 0xD2, 0x4C, 0x49, 0xDA, 0x5D, 0x11, 0x08, 0x14, 0x82, 0x04, 0x02, 0x26, 0x50, 0x51, + 0xE4, 0xD8, 0x5B, 0x67, 0xAD, 0x37, 0xC6, 0x5C, 0xDD, 0xAC, 0xCE, 0xCE, 0xAE, 0x5F, 0xBC, 0x7A, + 0xBD, 0x58, 0xAC, 0xBA, 0xDE, 0x3D, 0x7E, 0xF2, 0xE2, 0xF2, 0x6A, 0xF9, 0xEA, 0xEC, 0xCA, 0xF9, + 0x70, 0x75, 0xB3, 0x7A, 0x71, 0x7A, 0xD1, 0x75, 0x76, 0x36, 0x1D, 0x1D, 0xCE, 0x27, 0xC7, 0x47, + 0x73, 0x92, 0xB2, 0x77, 0x1E, 0x98, 0xEF, 0xDE, 0x39, 0x80, 0x5D, 0x75, 0x09, 0x80, 0x00, 0x22, + 0xF5, 0xFB, 0x13, 0x44, 0x65, 0x77, 0xDF, 0xC4, 0x8E, 0x22, 0xCE, 0x88, 0x28, 0xE5, 0x30, 0x4A, + 0x01, 0x00, 0x21, 0x90, 0x84, 0xD8, 0x6F, 0x59, 0x81, 0x28, 0x29, 0x31, 0xD6, 0x38, 0x32, 0x30, + 0x40, 0x62, 0x38, 0xEE, 0x11, 0x7E, 0x09, 0x7F, 0xA6, 0x95, 0x28, 0x33, 0x95, 0x80, 0x50, 0xF4, + 0x2F, 0xFE, 0xE4, 0x5F, 0xED, 0xB5, 0x2B, 0xD2, 0x91, 0x23, 0x08, 0xC5, 0xCE, 0x72, 0x8E, 0x48, + 0x0C, 0xE2, 0xD9, 0x02, 0x09, 0x91, 0xDE, 0x04, 0x45, 0x40, 0x71, 0x7B, 0xB6, 0x08, 0x08, 0x48, + 0x28, 0x04, 0x82, 0xD1, 0x6A, 0x36, 0x29, 0xAB, 0x32, 0x4F, 0x79, 0x8D, 0x4A, 0x7A, 0xFB, 0x00, + 0x03, 0x0F, 0x9B, 0x28, 0x25, 0x62, 0xBF, 0xD5, 0x89, 0xE7, 0xEF, 0x4A, 0xAD, 0xEE, 0x63, 0xD0, + 0x3E, 0xD6, 0xDC, 0x8E, 0x41, 0xB0, 0x2B, 0xBC, 0x7F, 0x2B, 0x3C, 0xFD, 0x56, 0x38, 0xBB, 0xF5, + 0xF6, 0x86, 0xE7, 0xBE, 0x2D, 0xCB, 0xB3, 0x2B, 0x58, 0x62, 0x4A, 0x94, 0xF6, 0x27, 0xC6, 0x9B, + 0xF8, 0x08, 0x7B, 0xA9, 0x38, 0xD0, 0x4A, 0x33, 0x87, 0x6E, 0xBD, 0xE8, 0x3B, 0xBB, 0xDA, 0xD4, + 0x29, 0xCA, 0xD6, 0x9D, 0x5B, 0xAC, 0x5B, 0x8E, 0x2C, 0x84, 0x10, 0x44, 0x00, 0x40, 0x02, 0x43, + 0x08, 0xDE, 0x07, 0x44, 0xE1, 0x9C, 0x4F, 0xE0, 0x78, 0x44, 0x1E, 0xD0, 0x98, 0x92, 0xB4, 0x94, + 0x69, 0xF8, 0x42, 0x02, 0x25, 0x09, 0x1F, 0x22, 0x20, 0x2A, 0x65, 0xD2, 0xAC, 0x38, 0xC4, 0x10, + 0x02, 0x6B, 0xAD, 0x01, 0xB1, 0xEB, 0xFA, 0xDD, 0xC0, 0x8E, 0xD3, 0x38, 0x82, 0x19, 0xF2, 0xCC, + 0x1C, 0xCE, 0xAA, 0x9F, 0x7E, 0xF2, 0x48, 0x67, 0xE6, 0x9B, 0x67, 0xAF, 0x27, 0x55, 0x7E, 0xFF, + 0x64, 0xF6, 0xFC, 0xC5, 0xF9, 0x0F, 0xBE, 0xFF, 0xFE, 0xE3, 0x67, 0xAF, 0xAF, 0x97, 0x1B, 0x88, + 0xB1, 0xDE, 0x6C, 0xF2, 0x22, 0x27, 0xA9, 0xB6, 0x75, 0x53, 0x55, 0x65, 0xD3, 0x75, 0xEB, 0x75, + 0x6D, 0x8C, 0x1A, 0x8D, 0xAA, 0x18, 0xE3, 0x62, 0xB9, 0xF2, 0xCE, 0x1D, 0xCC, 0xA7, 0xC7, 0x47, + 0x33, 0x41, 0xE4, 0xAC, 0x6B, 0xDB, 0x0E, 0x38, 0x0A, 0x64, 0x25, 0x87, 0x42, 0x4F, 0x0A, 0xAC, + 0xCA, 0xEC, 0xE8, 0x68, 0x1E, 0x18, 0x96, 0xEB, 0x36, 0x44, 0xFE, 0xEA, 0xF1, 0x8B, 0x27, 0x4F, + 0x5F, 0xE8, 0xCC, 0x4C, 0x26, 0xA3, 0xE7, 0x2F, 0x5F, 0xFF, 0xBB, 0xBF, 0xFE, 0x35, 0x08, 0x34, + 0x59, 0xD6, 0x76, 0x9D, 0x36, 0xC6, 0x79, 0xBF, 0xAD, 0xBB, 0xEB, 0xD5, 0xFA, 0xAD, 0xFB, 0x27, + 0x55, 0x91, 0x5F, 0x5E, 0x2F, 0x18, 0xF0, 0xF8, 0x70, 0x8E, 0x24, 0xCE, 0xCE, 0xAE, 0x9C, 0x0F, + 0x5A, 0xEB, 0xB2, 0xC8, 0x89, 0xC4, 0xCF, 0xFE, 0xE0, 0x27, 0x97, 0x57, 0xD7, 0xDB, 0xED, 0xB6, + 0xEF, 0x1D, 0x0A, 0xF4, 0xDE, 0xA7, 0x1A, 0x3F, 0xC1, 0xC1, 0x33, 0x63, 0x18, 0x80, 0x43, 0xCC, + 0xB4, 0x12, 0x42, 0x30, 0x40, 0xDB, 0x3B, 0x8E, 0x90, 0x94, 0x76, 0x42, 0x88, 0x55, 0x99, 0x77, + 0x7D, 0xEF, 0xBD, 0x0F, 0x31, 0x0E, 0x14, 0x77, 0x00, 0xA3, 0x14, 0x00, 0xE7, 0x45, 0xEE, 0x9D, + 0x0F, 0x21, 0x58, 0x1B, 0x22, 0x30, 0x33, 0x48, 0x49, 0xBD, 0x75, 0x21, 0xC2, 0xF5, 0x62, 0xBB, + 0xAE, 0xDB, 0x22, 0xCB, 0xA5, 0x92, 0xC9, 0xF2, 0x36, 0xC6, 0xE8, 0x7C, 0x10, 0x08, 0xA9, 0x6B, + 0xAE, 0x14, 0x7D, 0xFF, 0xA3, 0x47, 0xC3, 0x2A, 0xE3, 0x04, 0xEE, 0xDF, 0x47, 0x29, 0xBC, 0x25, + 0xE8, 0xBF, 0x2B, 0x01, 0xBE, 0x7B, 0x34, 0x22, 0x0A, 0x60, 0x5E, 0x2E, 0x97, 0xD7, 0x8B, 0x8D, + 0x00, 0x78, 0xF6, 0xFA, 0x4A, 0x08, 0x51, 0x15, 0xA6, 0x30, 0xFA, 0x7A, 0x59, 0x3F, 0xBC, 0x7B, + 0xB0, 0xAE, 0xFB, 0xDE, 0xF9, 0xB7, 0x8E, 0xA7, 0xD6, 0xFA, 0x8B, 0xC5, 0x36, 0x32, 0x27, 0x84, + 0x1D, 0x40, 0xE4, 0xC8, 0x91, 0x07, 0x41, 0x34, 0xEB, 0x83, 0x24, 0x2A, 0x0B, 0x93, 0x7A, 0xE2, + 0x52, 0x52, 0x66, 0x14, 0x22, 0x26, 0xF5, 0x17, 0xDB, 0x5B, 0x66, 0xD8, 0x36, 0x5D, 0x96, 0xE5, + 0x21, 0x04, 0x25, 0x50, 0x90, 0x40, 0x21, 0xDA, 0xAE, 0xE7, 0x18, 0xF3, 0x4C, 0x03, 0xC0, 0xF5, + 0xCD, 0xDA, 0x47, 0x5E, 0x6F, 0xB6, 0x4D, 0xD3, 0x6D, 0xEA, 0xE6, 0xB3, 0x2F, 0x9F, 0x5E, 0x5C, + 0x2E, 0x98, 0x63, 0xDB, 0x5B, 0x12, 0x02, 0x10, 0x43, 0x8C, 0xDE, 0x05, 0x29, 0x07, 0x29, 0x3F, + 0x22, 0x21, 0x50, 0x48, 0x49, 0xC8, 0x98, 0x68, 0x9E, 0xB3, 0x71, 0x39, 0x9F, 0x8E, 0x89, 0x44, + 0x59, 0x96, 0x45, 0x91, 0xCF, 0x67, 0xE3, 0x07, 0xF7, 0x8F, 0xBD, 0xF7, 0x07, 0xF3, 0xE9, 0x3B, + 0x0F, 0xEE, 0x66, 0x46, 0x85, 0x10, 0xAF, 0x6F, 0x56, 0x00, 0x18, 0x39, 0x5E, 0x5E, 0xDE, 0x4C, + 0x27, 0xD5, 0x6C, 0x3A, 0x02, 0xC0, 0xBF, 0xFA, 0xBB, 0xCF, 0xA7, 0x93, 0x6A, 0x3E, 0x1D, 0xC5, + 0xC8, 0x3B, 0x40, 0x2A, 0xA7, 0x11, 0xE4, 0xAE, 0x0B, 0x06, 0x88, 0x69, 0x2B, 0xA6, 0xBC, 0x08, + 0x77, 0x86, 0x1B, 0xC0, 0xCC, 0xA9, 0x7F, 0x22, 0x70, 0xC8, 0x88, 0x52, 0x03, 0x1C, 0x11, 0x23, + 0x83, 0x22, 0x21, 0x49, 0x48, 0x29, 0x94, 0x14, 0xC0, 0x83, 0x93, 0x11, 0x21, 0x6A, 0x89, 0x65, + 0xA6, 0x8D, 0xA6, 0xF4, 0x51, 0xC8, 0x21, 0x9F, 0xDA, 0xEB, 0x70, 0x40, 0x02, 0x1C, 0x20, 0xD2, + 0x40, 0x4A, 0x12, 0x02, 0x25, 0x88, 0xA4, 0x97, 0x70, 0x9B, 0x43, 0xB0, 0x9F, 0x9D, 0x0E, 0xA3, + 0x3E, 0x44, 0x92, 0x58, 0xE6, 0x45, 0xB2, 0x87, 0x71, 0xCE, 0x69, 0xAD, 0x05, 0x0C, 0xDE, 0x2A, + 0x7B, 0x7D, 0xFD, 0xBD, 0xB4, 0xD7, 0xED, 0xC0, 0x84, 0x3B, 0xD1, 0xC8, 0x24, 0xA7, 0xB3, 0xAF, + 0x67, 0xC5, 0xCE, 0x9A, 0x85, 0x77, 0x40, 0x5E, 0xFE, 0x1D, 0x04, 0x3F, 0xDC, 0x2A, 0x27, 0x7F, + 0x37, 0xBF, 0x4B, 0xF1, 0xCE, 0x7B, 0x9F, 0x9E, 0x2D, 0x51, 0x28, 0x52, 0x06, 0x94, 0x7C, 0xC6, + 0x52, 0x1E, 0xCA, 0xCC, 0xCC, 0xE1, 0xF6, 0x31, 0x0B, 0x3C, 0x94, 0xE7, 0xCC, 0xAC, 0xA4, 0x5A, + 0x2C, 0xAE, 0x9F, 0x3E, 0x79, 0x5A, 0xA9, 0x90, 0x67, 0x3A, 0x44, 0x1E, 0x57, 0xF9, 0xB6, 0xEE, + 0x8A, 0x4C, 0x95, 0xB9, 0xEE, 0x5D, 0x04, 0x44, 0xEF, 0x1C, 0x33, 0x28, 0x45, 0xDE, 0x79, 0x49, + 0x22, 0x32, 0x77, 0xBD, 0x27, 0xA9, 0x84, 0x40, 0x29, 0x85, 0x96, 0x64, 0xB4, 0x06, 0x84, 0x18, + 0x42, 0xE2, 0xB7, 0x92, 0x18, 0x2A, 0xCD, 0x10, 0x82, 0x90, 0x22, 0x02, 0x93, 0x92, 0xC1, 0xC6, + 0xC8, 0xAE, 0x69, 0xDB, 0x84, 0x1E, 0x48, 0xD7, 0xA2, 0xB4, 0x42, 0x1F, 0x62, 0x08, 0x52, 0xCA, + 0x10, 0x63, 0x55, 0xE8, 0xB7, 0xEF, 0xCF, 0xFF, 0xB7, 0xBF, 0xFC, 0x74, 0x53, 0x77, 0x3F, 0xFB, + 0xC9, 0x47, 0xDF, 0x3C, 0x39, 0xBD, 0x77, 0xF7, 0xB0, 0x1A, 0x95, 0x28, 0x70, 0x52, 0x66, 0x59, + 0x66, 0xEA, 0xBA, 0x5D, 0x2E, 0x57, 0x2E, 0x44, 0x00, 0xD4, 0x4A, 0x91, 0x94, 0x31, 0x86, 0x97, + 0xAF, 0x5E, 0x8F, 0xC7, 0x55, 0x6E, 0x0C, 0x0D, 0x1A, 0xCA, 0xB6, 0x6B, 0xDB, 0x8B, 0x8B, 0x6B, + 0xE6, 0xA8, 0x08, 0x4F, 0x8E, 0x66, 0x55, 0x91, 0x5D, 0xDD, 0xAC, 0x92, 0x17, 0xEF, 0x5B, 0xF7, + 0xEF, 0x1C, 0x1F, 0xCF, 0xCF, 0xAF, 0x56, 0xE7, 0x17, 0x37, 0x93, 0xC9, 0x68, 0x36, 0x1B, 0xAF, + 0xB7, 0xED, 0x6A, 0xB5, 0xFE, 0x0F, 0x9F, 0x7E, 0xDD, 0xF9, 0x38, 0x9D, 0x4E, 0xDE, 0xFB, 0xE0, + 0x3D, 0x06, 0x9C, 0xCD, 0xC6, 0xA3, 0x32, 0x57, 0x24, 0x4E, 0xCF, 0x2E, 0x23, 0xD2, 0xC9, 0xC9, + 0xB1, 0x92, 0xE4, 0x9C, 0xBF, 0x77, 0x72, 0xD4, 0x76, 0xF6, 0x7A, 0xB1, 0xD2, 0x4A, 0xCD, 0xE7, + 0x93, 0xB6, 0xB3, 0xDF, 0xFF, 0xF8, 0xBD, 0x5F, 0xFE, 0xC7, 0xDF, 0x08, 0x21, 0xAE, 0x6E, 0x16, + 0x45, 0x9E, 0xDF, 0x39, 0x3E, 0xF8, 0xF2, 0xCB, 0xA7, 0x8E, 0x41, 0x88, 0x84, 0xC5, 0x97, 0xAB, + 0xF5, 0x46, 0x4A, 0xE9, 0x7C, 0x48, 0x50, 0x8C, 0x6D, 0xDD, 0x4C, 0xC6, 0x95, 0xD6, 0xCA, 0x87, + 0xE8, 0x7D, 0x74, 0xCE, 0x49, 0x29, 0x95, 0x1E, 0x06, 0x47, 0xD6, 0x3A, 0x06, 0x10, 0x24, 0x14, + 0xE2, 0xB6, 0xED, 0x3A, 0xEC, 0x63, 0x4C, 0xDC, 0x58, 0x67, 0x9D, 0xD7, 0x4A, 0x87, 0xC8, 0x28, + 0x40, 0x49, 0xD9, 0x0B, 0xD1, 0x34, 0x9D, 0x24, 0xB4, 0x2E, 0x5E, 0xDE, 0xAC, 0x42, 0x08, 0x5A, + 0x49, 0x66, 0x48, 0x06, 0xD2, 0x49, 0x3D, 0x4F, 0x49, 0xB9, 0x6D, 0xBA, 0xAE, 0xB3, 0x46, 0xEB, + 0x38, 0x48, 0xA1, 0xEE, 0x22, 0x17, 0xC2, 0x3E, 0xC9, 0x60, 0x00, 0x91, 0xC8, 0x7F, 0x02, 0xF6, + 0xA8, 0x82, 0xDD, 0xAA, 0x8B, 0x88, 0xF2, 0xF2, 0x6A, 0xF9, 0xE2, 0xEC, 0xE6, 0xFD, 0x07, 0xC7, + 0xA3, 0xB2, 0x70, 0xDE, 0x97, 0x55, 0xD1, 0xD8, 0x40, 0x92, 0xEE, 0xBF, 0x75, 0xFC, 0xF2, 0x6A, + 0x83, 0x80, 0x69, 0x0E, 0x16, 0x22, 0xE4, 0x46, 0x29, 0x81, 0xC1, 0x87, 0xFD, 0x06, 0x26, 0xA2, + 0xA6, 0xED, 0xD3, 0x19, 0x9F, 0x2C, 0xD6, 0x33, 0x63, 0x56, 0xEB, 0x8D, 0x22, 0x61, 0x8C, 0x8A, + 0x1C, 0x11, 0x28, 0x95, 0x5A, 0x46, 0xAB, 0xD5, 0x6A, 0x6D, 0x8C, 0x3E, 0x3C, 0x9E, 0x76, 0xBD, + 0x63, 0xE0, 0x51, 0x55, 0x68, 0x25, 0xAB, 0xAA, 0xEC, 0xBA, 0xFE, 0xE2, 0xF2, 0x6A, 0xB3, 0x6D, + 0xDA, 0xCE, 0x4E, 0xC6, 0x55, 0x4A, 0x1B, 0x56, 0xEB, 0xED, 0xDF, 0xFE, 0xF2, 0x0B, 0x49, 0xF4, + 0xF6, 0xC3, 0xBB, 0xEF, 0x3F, 0x7A, 0x70, 0x72, 0x3C, 0x2F, 0x73, 0xD3, 0x75, 0xB6, 0xB7, 0xAE, + 0xED, 0x3A, 0x63, 0x74, 0x55, 0xE4, 0x46, 0xEB, 0xAA, 0xCC, 0x46, 0xA3, 0x7C, 0xB3, 0x6D, 0xB5, + 0x92, 0x65, 0x91, 0x1D, 0x1D, 0x4C, 0x22, 0x73, 0xDB, 0xF5, 0x6D, 0x67, 0x8B, 0xDC, 0xF4, 0xD6, + 0x09, 0xC4, 0xD5, 0x66, 0xBB, 0x58, 0x6E, 0xDF, 0x79, 0x70, 0xF2, 0xCE, 0x83, 0x93, 0xCE, 0xBA, + 0xC5, 0x62, 0xFD, 0xED, 0xCB, 0xD7, 0xC7, 0xBD, 0xFD, 0xFD, 0x1F, 0x7D, 0x54, 0xD7, 0xCD, 0x72, + 0xDD, 0xFE, 0xF2, 0xD3, 0xC7, 0xEF, 0x3C, 0x38, 0x19, 0x0C, 0xB9, 0x39, 0x42, 0xE2, 0x45, 0xFA, + 0x80, 0x38, 0xF8, 0x29, 0x01, 0xEC, 0x53, 0xAA, 0xDB, 0xA8, 0x26, 0x88, 0x0C, 0x62, 0x27, 0x2B, + 0x1D, 0x23, 0x2A, 0x1A, 0xD0, 0x03, 0x44, 0xC2, 0x28, 0x80, 0xC1, 0xE0, 0x91, 0x95, 0x94, 0x8A, + 0xFC, 0xBA, 0xB1, 0x80, 0xA8, 0x09, 0xB5, 0x14, 0xA9, 0xA1, 0x9C, 0x9E, 0x50, 0x0A, 0x14, 0x51, + 0x70, 0x2A, 0xA6, 0xD2, 0xBC, 0xF9, 0x8D, 0xB6, 0x58, 0x7A, 0x71, 0x01, 0xC8, 0x43, 0x93, 0x4D, + 0x50, 0x72, 0x57, 0xDA, 0x95, 0x6F, 0x42, 0x00, 0xA0, 0x56, 0x94, 0xEC, 0x00, 0x32, 0xAD, 0x94, + 0x92, 0xE9, 0xD4, 0x92, 0xC9, 0xF1, 0x0C, 0x80, 0x6F, 0x29, 0x4D, 0x0F, 0x47, 0xDE, 0xAE, 0x3F, + 0x95, 0xC2, 0x99, 0x73, 0x3E, 0x01, 0x82, 0x00, 0x60, 0x97, 0x1E, 0x71, 0x08, 0x48, 0x14, 0x13, + 0xFB, 0x27, 0x7D, 0xD2, 0x70, 0x2B, 0xC3, 0xFA, 0x4E, 0xDE, 0x74, 0x2B, 0x72, 0xED, 0xFE, 0x8E, + 0x7B, 0x04, 0x46, 0x9A, 0x30, 0xA4, 0x36, 0x81, 0x94, 0xE0, 0x23, 0x27, 0x96, 0x96, 0x10, 0x9C, + 0xA4, 0x17, 0x86, 0x0B, 0x21, 0xF1, 0x26, 0x32, 0x0E, 0x27, 0x08, 0x72, 0x64, 0x46, 0x26, 0xA2, + 0xD5, 0xE2, 0xFA, 0xB3, 0xCF, 0xBE, 0x20, 0x81, 0xF3, 0xA2, 0x8C, 0x01, 0x7D, 0xC0, 0xD6, 0x06, + 0x40, 0x01, 0x98, 0x12, 0xA5, 0xC0, 0x00, 0x3E, 0x04, 0x21, 0x44, 0xDD, 0x74, 0x7D, 0x67, 0xF3, + 0xDC, 0x28, 0x49, 0x59, 0x96, 0xB9, 0x10, 0x7D, 0x0C, 0x49, 0x21, 0x23, 0x9D, 0xF5, 0x42, 0xA0, + 0x94, 0xD2, 0xFB, 0x44, 0x53, 0x1F, 0x1C, 0x30, 0x5D, 0xDF, 0x01, 0xA2, 0xED, 0x2D, 0x22, 0x54, + 0x65, 0xD9, 0x5B, 0xDB, 0x75, 0x9B, 0xFD, 0x5D, 0x4A, 0xB7, 0xDB, 0x18, 0xDD, 0x5B, 0x7F, 0xB3, + 0xAC, 0xDF, 0xBD, 0x3F, 0x67, 0x44, 0x6B, 0x7D, 0x8C, 0xDC, 0x59, 0xBB, 0x5A, 0x6F, 0x1F, 0x3C, + 0xB8, 0xFB, 0xF8, 0xE9, 0xE9, 0xF2, 0xF2, 0xFA, 0xE1, 0xDD, 0xC3, 0x83, 0xC3, 0x69, 0x8C, 0xFC, + 0xF4, 0xF9, 0x99, 0xED, 0xFB, 0x2C, 0xCB, 0x97, 0xCB, 0x75, 0x51, 0xE6, 0x47, 0xF3, 0xA9, 0x96, + 0xD4, 0xF7, 0x2E, 0xB8, 0x08, 0xEC, 0x25, 0xC9, 0xED, 0x66, 0xD3, 0x34, 0x8D, 0xB7, 0xF6, 0xC1, + 0xBD, 0xE3, 0xCC, 0xC8, 0xE3, 0xC3, 0x49, 0x66, 0x34, 0x73, 0xB8, 0x59, 0xAC, 0x7F, 0xF4, 0xC3, + 0x0F, 0x95, 0x54, 0xE7, 0x57, 0xCB, 0xBE, 0xB3, 0x8B, 0xE5, 0xBA, 0x73, 0xA1, 0x6E, 0xDA, 0xD9, + 0x6C, 0x3A, 0x99, 0x8C, 0x36, 0x9B, 0x3A, 0xCB, 0xB4, 0x52, 0xFA, 0xDD, 0x47, 0x0F, 0xDB, 0xCE, + 0x96, 0x55, 0x1E, 0x63, 0xBC, 0x7B, 0x38, 0x3B, 0x38, 0x3C, 0x78, 0xF9, 0xFA, 0xF2, 0x3F, 0x7E, + 0xF6, 0xF5, 0x87, 0xEF, 0xBF, 0x73, 0x72, 0x34, 0x0B, 0x31, 0x22, 0x8A, 0xBE, 0xEF, 0xAF, 0xAE, + 0x16, 0x9F, 0x7C, 0xF2, 0xE1, 0x62, 0xB1, 0xBA, 0xB8, 0xBE, 0xF9, 0xE0, 0x83, 0x77, 0xB4, 0x54, + 0xA7, 0x67, 0x67, 0xC6, 0x64, 0x52, 0x29, 0xA5, 0xE5, 0xB6, 0xAE, 0x33, 0x63, 0xB4, 0xA4, 0x22, + 0x33, 0xB6, 0xEB, 0x89, 0x84, 0x75, 0x81, 0x39, 0x16, 0x79, 0xEE, 0x9C, 0x4F, 0xC7, 0x48, 0x5A, + 0x18, 0x29, 0x77, 0x36, 0x46, 0xA7, 0x9B, 0x16, 0x19, 0x54, 0x9A, 0x2F, 0x49, 0x61, 0x94, 0xCA, + 0xF3, 0x7C, 0xB9, 0xDE, 0x90, 0x75, 0x89, 0x25, 0x69, 0xBD, 0x93, 0x24, 0x11, 0xA1, 0xB7, 0xAE, + 0xB7, 0x4E, 0x91, 0x48, 0x0C, 0x2D, 0xAD, 0x54, 0xE3, 0x03, 0x02, 0x78, 0xEF, 0xE7, 0xD3, 0xE9, + 0x62, 0xB9, 0xF4, 0x2E, 0xF1, 0x1D, 0x63, 0xEF, 0xC3, 0x6A, 0xD3, 0xDC, 0x39, 0xD4, 0x91, 0xE3, + 0x00, 0x0F, 0x4B, 0x6A, 0xC9, 0x09, 0x6C, 0x91, 0x72, 0x03, 0xC6, 0x08, 0x11, 0x01, 0x21, 0x22, + 0x20, 0x32, 0xB2, 0xD8, 0x55, 0x24, 0x31, 0x70, 0x44, 0x46, 0x81, 0xD6, 0x85, 0xBA, 0xB3, 0x00, + 0x28, 0x89, 0x36, 0xDB, 0x2E, 0xC4, 0x68, 0x8C, 0x72, 0xD6, 0x73, 0x84, 0x22, 0xD7, 0x4D, 0x67, + 0x2F, 0x96, 0x5B, 0xA3, 0x25, 0x21, 0x84, 0xC8, 0xD6, 0x3A, 0xA5, 0x88, 0x99, 0x49, 0x08, 0xAD, + 0x54, 0xD7, 0xFB, 0x51, 0x95, 0x93, 0xC0, 0xA6, 0xED, 0x93, 0x44, 0x7D, 0x55, 0x64, 0x44, 0x02, + 0x00, 0x81, 0xD9, 0x79, 0x67, 0xAD, 0x53, 0x92, 0xBC, 0x73, 0x4D, 0xDB, 0x1D, 0xCC, 0xC6, 0x46, + 0x2B, 0xE7, 0x63, 0xD3, 0x75, 0x52, 0x52, 0x9E, 0xA7, 0x41, 0x50, 0xD4, 0x4A, 0xB5, 0x5D, 0x97, + 0x70, 0xF1, 0x02, 0xE4, 0xA8, 0x2C, 0xA4, 0x24, 0x1F, 0xC2, 0x72, 0xB5, 0xFD, 0xEC, 0x8B, 0x27, + 0xBF, 0xF9, 0xEA, 0xDB, 0xBB, 0x77, 0x0E, 0xEE, 0x9D, 0x1C, 0xFE, 0xFE, 0x8F, 0x3E, 0xAA, 0xCA, + 0xFC, 0xE2, 0x7A, 0xF1, 0xC5, 0xD7, 0xCF, 0x8B, 0x3C, 0x7B, 0xEF, 0xED, 0x7B, 0x28, 0x44, 0x9E, + 0xA9, 0xE3, 0xC3, 0xC9, 0x66, 0xDB, 0x26, 0x21, 0x90, 0x34, 0x66, 0x49, 0x9B, 0xB4, 0x2A, 0x32, + 0x45, 0xE4, 0x7D, 0x68, 0x5B, 0xAB, 0x24, 0x25, 0x91, 0xD3, 0x32, 0x33, 0xE6, 0xE7, 0x3F, 0x89, + 0x81, 0xF3, 0xCC, 0x28, 0x45, 0x59, 0xA6, 0xB4, 0xD6, 0x8A, 0x88, 0xB5, 0x02, 0x40, 0x1F, 0x23, + 0x44, 0x0E, 0xC1, 0x87, 0xC8, 0x72, 0x40, 0xD5, 0xBF, 0x09, 0x2B, 0x81, 0x93, 0xB3, 0x6D, 0xFA, + 0x88, 0x03, 0x20, 0x44, 0x66, 0xEF, 0x23, 0x91, 0xD0, 0x4A, 0x68, 0xA5, 0x18, 0x62, 0x02, 0xB9, + 0xA3, 0x00, 0x21, 0x28, 0x09, 0x3A, 0x84, 0x10, 0x95, 0x24, 0x45, 0x82, 0x39, 0x4A, 0x02, 0x91, + 0xC2, 0xA5, 0x47, 0x41, 0x2C, 0x84, 0x90, 0x24, 0x84, 0xD8, 0x83, 0xB9, 0x86, 0x7E, 0x3F, 0x30, + 0x0C, 0x7C, 0x9F, 0x21, 0x6A, 0x08, 0x46, 0x46, 0xA5, 0x08, 0x00, 0x9C, 0xF7, 0x8A, 0x44, 0xCA, + 0x29, 0x8A, 0x4C, 0x1B, 0x2D, 0x95, 0x4A, 0x6C, 0x0D, 0xB1, 0x4F, 0x9D, 0xF6, 0xA8, 0x8B, 0xBF, + 0x37, 0x5D, 0x0A, 0x61, 0x90, 0x24, 0x4C, 0x6F, 0xAE, 0x6E, 0x3A, 0x00, 0x90, 0x52, 0xE2, 0x80, + 0x72, 0x85, 0x1D, 0xF7, 0x03, 0x63, 0x04, 0x29, 0xDF, 0x00, 0x78, 0x6E, 0x65, 0x5A, 0x29, 0x1D, + 0x15, 0x6F, 0xDE, 0xE1, 0xAE, 0x0E, 0xBD, 0x95, 0x8B, 0x71, 0x08, 0xDE, 0x39, 0x37, 0xF4, 0x3B, + 0x07, 0xAD, 0xE4, 0x3D, 0x4C, 0x0F, 0xF6, 0x6C, 0x25, 0x44, 0xDE, 0xD7, 0xEA, 0xB0, 0xFF, 0xDE, + 0x0E, 0x7A, 0x12, 0x83, 0x7F, 0xFA, 0xE4, 0xD9, 0x6C, 0x32, 0x72, 0xAE, 0xDF, 0x6C, 0x5B, 0xEB, + 0xE2, 0xFD, 0x93, 0xD9, 0xD5, 0xB2, 0x76, 0xCE, 0x17, 0x99, 0x11, 0x88, 0xBD, 0x75, 0x92, 0x44, + 0x3A, 0x72, 0x01, 0xC0, 0x64, 0x5A, 0x10, 0x31, 0x70, 0xDF, 0xF5, 0x48, 0x24, 0x18, 0xE4, 0x4E, + 0x1E, 0x88, 0xA4, 0x48, 0x62, 0x1B, 0x42, 0x70, 0x8C, 0x28, 0x04, 0x03, 0x04, 0x40, 0x50, 0x4A, + 0x21, 0x62, 0x08, 0xC1, 0x28, 0x35, 0x99, 0x8E, 0x96, 0xEB, 0xED, 0xCD, 0xCD, 0x32, 0xDD, 0x04, + 0x21, 0x44, 0x08, 0xB1, 0x4F, 0x4A, 0x66, 0x31, 0x12, 0x89, 0x83, 0xE9, 0x68, 0xB3, 0xED, 0xBA, + 0xCE, 0x6A, 0x4D, 0xE9, 0x3F, 0xD6, 0xBD, 0xFB, 0xE5, 0x2F, 0x3E, 0xD7, 0x84, 0xDA, 0x48, 0x6B, + 0x5D, 0x22, 0x51, 0x75, 0x7D, 0xD7, 0xB4, 0xB1, 0x2C, 0x2B, 0xDB, 0xF7, 0xCE, 0xBB, 0xB2, 0xC8, + 0xC3, 0x36, 0x06, 0xEF, 0x9B, 0xA6, 0x2D, 0x8A, 0x1C, 0x80, 0x91, 0xF9, 0x60, 0x3A, 0x3A, 0x9C, + 0x57, 0x55, 0x91, 0x1D, 0x1E, 0xCE, 0xAC, 0x73, 0xF3, 0xE9, 0xE8, 0xBD, 0x77, 0xDF, 0xB6, 0x3E, + 0x9E, 0x9E, 0x5F, 0x11, 0x87, 0x2F, 0xBE, 0x7A, 0xF6, 0xD5, 0xD3, 0x53, 0x10, 0xE2, 0xD1, 0xA3, + 0x87, 0x87, 0x87, 0x07, 0x79, 0x96, 0x95, 0x45, 0x5E, 0x16, 0xF9, 0xCD, 0x72, 0x6D, 0x9D, 0x67, + 0xC4, 0x27, 0xCF, 0x5E, 0x29, 0xC2, 0xE9, 0xB8, 0x22, 0xA2, 0xC3, 0xF9, 0xF4, 0x9D, 0x87, 0xF6, + 0xFC, 0xEA, 0x66, 0x54, 0x15, 0x93, 0x71, 0x21, 0x89, 0xC6, 0xA3, 0x12, 0x51, 0xAC, 0xD6, 0x9B, + 0xCD, 0x66, 0xDB, 0x5B, 0xF7, 0xB3, 0xDF, 0xFF, 0x61, 0xD3, 0xF5, 0x27, 0x77, 0x0E, 0xD6, 0x9B, + 0xBA, 0xB7, 0xAE, 0x1A, 0x95, 0xAB, 0xD5, 0x46, 0x49, 0x62, 0x66, 0xE7, 0x1C, 0x91, 0x08, 0x3E, + 0x90, 0x40, 0x0E, 0xD8, 0x77, 0xBD, 0xD2, 0x0A, 0x10, 0xA3, 0x0F, 0x42, 0x08, 0x67, 0x1D, 0x23, + 0x28, 0x29, 0x39, 0x46, 0x44, 0x4C, 0x2A, 0x80, 0x46, 0xEB, 0x74, 0xC7, 0x88, 0xA8, 0xED, 0x7A, + 0x29, 0x28, 0xE9, 0x6B, 0x2B, 0x29, 0x7B, 0x67, 0x21, 0xA2, 0x96, 0x12, 0x89, 0x71, 0x70, 0xDF, + 0x41, 0xE7, 0xBD, 0x24, 0xA1, 0xB5, 0x14, 0x84, 0xA3, 0x51, 0x31, 0x1A, 0x95, 0xCB, 0xD5, 0x4A, + 0x4A, 0xF2, 0xC1, 0x03, 0xEA, 0xBA, 0xEE, 0x3E, 0xFF, 0xEA, 0xDB, 0x93, 0xE3, 0x59, 0x48, 0x52, + 0xF3, 0xBB, 0x8C, 0x0C, 0x11, 0x07, 0x11, 0x87, 0x01, 0x04, 0x8E, 0x88, 0x80, 0x0C, 0x08, 0x8C, + 0x8C, 0x91, 0x61, 0x70, 0x4B, 0x04, 0x0C, 0x31, 0xD4, 0x4D, 0x27, 0xA5, 0x5C, 0x6F, 0xBB, 0x32, + 0xD7, 0x0F, 0x4E, 0x0E, 0x56, 0xDB, 0x96, 0x04, 0x69, 0xA5, 0xEA, 0xBA, 0x4D, 0xDD, 0x3A, 0x1F, + 0x62, 0x91, 0x67, 0xD8, 0x3B, 0x44, 0xE1, 0x43, 0x48, 0x51, 0x0C, 0x11, 0x49, 0x60, 0x88, 0xA1, + 0xC8, 0x15, 0x0D, 0x13, 0x27, 0xF6, 0x21, 0x4A, 0x12, 0x46, 0x29, 0x1F, 0x82, 0xF5, 0x9D, 0xD6, + 0x3A, 0x04, 0x8F, 0x00, 0x44, 0x14, 0x98, 0xA7, 0xE3, 0xB2, 0xC8, 0x54, 0x1A, 0x04, 0x23, 0x62, + 0xD3, 0x76, 0x55, 0x99, 0x23, 0xA0, 0xF3, 0x11, 0x20, 0x6C, 0xB6, 0x8D, 0x92, 0xB2, 0xEB, 0x9D, + 0x40, 0xCC, 0x32, 0xE5, 0x7C, 0xA8, 0xCA, 0x7C, 0xBB, 0x6D, 0x32, 0x93, 0x2F, 0xD7, 0xF5, 0xD7, + 0x4F, 0x5E, 0x3C, 0x7D, 0x7E, 0x7A, 0x7E, 0xB5, 0x7C, 0xF4, 0xF6, 0xBD, 0x22, 0x33, 0xAB, 0x75, + 0xAD, 0xA4, 0x7C, 0x7E, 0x7A, 0x71, 0xF7, 0xCE, 0xE1, 0xD5, 0xCD, 0xEA, 0xF5, 0xC5, 0xE2, 0xFD, + 0xB7, 0xEF, 0x25, 0x64, 0x9C, 0x60, 0x1C, 0x29, 0x59, 0xE4, 0x46, 0xEC, 0xFC, 0x37, 0x8E, 0x0E, + 0x26, 0x07, 0xB3, 0x71, 0x1A, 0xBE, 0xE7, 0x99, 0x11, 0x88, 0x99, 0xD1, 0xDE, 0x07, 0xEB, 0x7D, + 0xA6, 0xD5, 0x4F, 0x7E, 0xF0, 0x3E, 0x00, 0x3C, 0xFE, 0xF6, 0x8C, 0x04, 0xBE, 0xBE, 0xB8, 0x3E, + 0x3A, 0x9C, 0xCD, 0x27, 0x95, 0x52, 0x89, 0xAF, 0x88, 0x69, 0xF8, 0xCE, 0xBB, 0xB6, 0xBB, 0x18, + 0x72, 0x20, 0x20, 0x21, 0x22, 0xB1, 0x10, 0xC3, 0xC7, 0x04, 0x9C, 0x7A, 0xFD, 0x40, 0x44, 0xDE, + 0xC7, 0xD4, 0x23, 0x88, 0x31, 0xE0, 0x60, 0x25, 0xC7, 0x00, 0x98, 0x69, 0xB2, 0x6E, 0x30, 0xEB, + 0x85, 0x84, 0x27, 0x0D, 0xC0, 0x1C, 0xE4, 0xCE, 0xDE, 0x9C, 0xE1, 0xD6, 0x3E, 0xBE, 0x9D, 0xEC, + 0x24, 0x50, 0xB5, 0x51, 0x52, 0x2B, 0x69, 0xAD, 0x47, 0x29, 0x8D, 0x92, 0x24, 0x85, 0x51, 0xCA, + 0x18, 0x45, 0x43, 0xCE, 0x9B, 0xEA, 0x3E, 0x80, 0xEF, 0x8A, 0xDB, 0xDC, 0x8E, 0x3D, 0xE9, 0x7A, + 0x42, 0x02, 0x59, 0xED, 0x70, 0xBA, 0x3E, 0x04, 0x22, 0xA1, 0x64, 0x1A, 0xC5, 0x90, 0x1A, 0xEC, + 0x91, 0x86, 0x7E, 0x56, 0x8C, 0x10, 0x02, 0x87, 0xE0, 0x87, 0xA3, 0x69, 0xC8, 0xEF, 0x92, 0x2A, + 0xC7, 0x1B, 0xC1, 0x90, 0xDD, 0x6C, 0x6B, 0x78, 0xAD, 0xFD, 0x23, 0xC9, 0x8A, 0xA5, 0x89, 0x72, + 0x42, 0xE7, 0xE2, 0x4E, 0x43, 0x6A, 0xE8, 0x21, 0x32, 0xC3, 0xCE, 0x8A, 0x69, 0xB8, 0x95, 0x6F, + 0xD2, 0xB9, 0x94, 0xA9, 0xD1, 0xF5, 0xE5, 0x65, 0xD7, 0xB6, 0xC1, 0x4B, 0x08, 0xDE, 0x03, 0xFB, + 0x18, 0xAB, 0xDC, 0xE4, 0x99, 0xC6, 0x1D, 0x12, 0x38, 0xF5, 0x6B, 0xAC, 0x75, 0x28, 0x44, 0x08, + 0x41, 0x2A, 0xA9, 0x8C, 0xF6, 0x7D, 0x2F, 0x15, 0x01, 0xA3, 0x90, 0xD2, 0x18, 0x9D, 0x10, 0xF9, + 0x43, 0x1E, 0x3A, 0xA4, 0xB4, 0x11, 0x10, 0x92, 0xDC, 0x19, 0x46, 0x17, 0x39, 0x4A, 0x49, 0xCC, + 0xF1, 0xE6, 0xFA, 0x66, 0xDB, 0x76, 0xB7, 0x51, 0xC4, 0x49, 0x64, 0xC6, 0x18, 0xD5, 0x75, 0xF6, + 0x70, 0x36, 0xFA, 0xF0, 0xD1, 0xC9, 0xB7, 0xA7, 0xD7, 0x6D, 0x67, 0xFF, 0xC9, 0x3F, 0xFE, 0xC1, + 0xCD, 0xCD, 0x52, 0x99, 0x6C, 0xBD, 0xED, 0x49, 0xC0, 0x27, 0x9F, 0xBC, 0x77, 0x30, 0x1F, 0x57, + 0x55, 0xE9, 0x9C, 0xBB, 0xBA, 0x59, 0x6F, 0xB6, 0x8D, 0x04, 0xD1, 0x35, 0x5B, 0x06, 0xDC, 0x6C, + 0x34, 0x8E, 0x90, 0x99, 0x7B, 0xEB, 0x36, 0xDB, 0x26, 0x0D, 0x49, 0x43, 0xF0, 0xCE, 0x87, 0xD5, + 0x2A, 0x3F, 0x3A, 0x9C, 0x92, 0x24, 0xB6, 0x3E, 0x30, 0x7E, 0xFE, 0xE5, 0xB3, 0xD9, 0xA4, 0xDA, + 0xAE, 0xD6, 0x97, 0xD7, 0xCB, 0xDE, 0xC3, 0xBD, 0x7B, 0x77, 0xAC, 0x8F, 0xBF, 0xFE, 0xF5, 0x17, + 0xAF, 0x5E, 0x9E, 0xFD, 0x77, 0xFF, 0xFC, 0xBF, 0x1A, 0x55, 0xC5, 0xF5, 0x62, 0x23, 0x48, 0xBA, + 0xCE, 0x5A, 0x17, 0x9C, 0xED, 0x7F, 0xF5, 0xC5, 0x37, 0x1F, 0x7F, 0xF8, 0x1E, 0x40, 0x40, 0xC4, + 0xBB, 0x77, 0x0E, 0xEF, 0xDE, 0x39, 0x7C, 0x79, 0x7A, 0xC9, 0x1C, 0x47, 0x55, 0x81, 0x00, 0x1F, + 0xBD, 0xFF, 0xF0, 0xE5, 0xE9, 0x45, 0xDF, 0xBB, 0xEB, 0xC5, 0xF2, 0xDF, 0xFC, 0x5F, 0xFF, 0xAE, + 0xAC, 0xCA, 0xB6, 0xEB, 0xAD, 0xF5, 0xFF, 0xE8, 0xA7, 0xDF, 0x7F, 0xF7, 0xD1, 0x83, 0xB3, 0xD7, + 0x17, 0xA9, 0x13, 0x9A, 0xDA, 0xF9, 0xA9, 0x55, 0x44, 0x29, 0xBA, 0xC7, 0x18, 0x62, 0x6C, 0xBB, + 0x4E, 0x08, 0x91, 0x06, 0x61, 0x52, 0x52, 0xF2, 0x60, 0x17, 0x02, 0x8B, 0xDC, 0x6C, 0xB6, 0x8D, + 0x56, 0x92, 0x48, 0xF4, 0xD6, 0xA6, 0x6D, 0xAF, 0x04, 0x31, 0x73, 0xDB, 0xF5, 0xCC, 0xCC, 0x94, + 0x74, 0x67, 0x65, 0xD2, 0xB4, 0xC8, 0x74, 0x3A, 0x68, 0x40, 0x0B, 0x91, 0xE5, 0xD9, 0xBD, 0xBB, + 0xC7, 0xD7, 0xD7, 0x37, 0x02, 0x51, 0x1A, 0xDD, 0xF7, 0x36, 0x32, 0x10, 0xD1, 0xCB, 0xB3, 0x2B, + 0xE7, 0x02, 0x0F, 0x62, 0x0C, 0x43, 0x22, 0xB6, 0x3F, 0x16, 0x11, 0x87, 0xCF, 0x9A, 0x41, 0xA4, + 0xCE, 0x3F, 0x02, 0xE0, 0x0E, 0x84, 0x8D, 0x08, 0xDE, 0xC7, 0xC5, 0xAA, 0x01, 0x80, 0xCE, 0xFA, + 0xCC, 0xA8, 0x18, 0xA3, 0x94, 0x64, 0xAD, 0x3F, 0x98, 0x4F, 0x62, 0x64, 0x8E, 0x31, 0x44, 0x71, + 0x7E, 0xB3, 0x39, 0x9A, 0x8D, 0x9A, 0xCE, 0x86, 0x18, 0x22, 0x83, 0xD1, 0xCA, 0xF9, 0x10, 0x63, + 0x40, 0x31, 0xB0, 0x2F, 0x9C, 0xF7, 0x75, 0xD3, 0x6F, 0x9B, 0x2E, 0xCF, 0xB4, 0x51, 0xE4, 0x43, + 0x90, 0x02, 0x11, 0x48, 0x08, 0xCC, 0x32, 0x0D, 0x00, 0xCE, 0x39, 0xE7, 0x7C, 0x72, 0x45, 0x62, + 0x00, 0x22, 0x2C, 0x72, 0x0D, 0x08, 0x09, 0x5E, 0xC3, 0x8C, 0xDE, 0x87, 0xB6, 0xEB, 0xA9, 0x10, + 0xCE, 0x79, 0x29, 0x49, 0x09, 0x99, 0x69, 0x01, 0xCC, 0x52, 0x49, 0x8E, 0xB1, 0xC8, 0xCD, 0xBD, + 0x3B, 0x87, 0x97, 0xD7, 0x8B, 0xCF, 0xBE, 0xF8, 0xE6, 0xF1, 0x93, 0x17, 0x79, 0x6E, 0xE6, 0xB3, + 0x29, 0x00, 0xEB, 0xB5, 0x9C, 0x4D, 0x46, 0x65, 0x91, 0x7D, 0xF9, 0xF8, 0x45, 0x55, 0xE6, 0x0F, + 0xEE, 0x1D, 0x26, 0x63, 0xF9, 0xB4, 0xB3, 0x78, 0xE8, 0x65, 0x43, 0xE4, 0x08, 0x08, 0x24, 0x07, + 0x65, 0x0B, 0xEB, 0x82, 0x92, 0x52, 0xA9, 0x94, 0xDF, 0xE0, 0xE1, 0x7C, 0x12, 0x42, 0x74, 0xC1, + 0x37, 0x9D, 0x27, 0x41, 0xDB, 0x6D, 0xD3, 0xB5, 0x7D, 0x51, 0x18, 0xAD, 0x94, 0x94, 0x54, 0x95, + 0xF9, 0xAE, 0x8E, 0x4E, 0x07, 0xF9, 0xB0, 0xC0, 0x05, 0x82, 0x96, 0x42, 0x90, 0x42, 0x4E, 0xFC, + 0xD7, 0xC1, 0xED, 0x3B, 0x6D, 0x92, 0x5D, 0x43, 0x09, 0x04, 0x42, 0x08, 0xC9, 0x2C, 0x6E, 0xF0, + 0x25, 0x01, 0x8E, 0xA9, 0xE7, 0x36, 0x6C, 0xF9, 0xC8, 0x72, 0x68, 0x15, 0xA4, 0x6F, 0xE2, 0xC0, + 0x71, 0x42, 0xC0, 0x84, 0x37, 0x4D, 0x61, 0x45, 0x2B, 0x25, 0x49, 0x00, 0x83, 0x94, 0x42, 0x23, + 0x65, 0x46, 0xE7, 0xB9, 0xC6, 0x94, 0xC6, 0xDC, 0x02, 0x4C, 0xEC, 0xA7, 0x13, 0xF0, 0xDD, 0xC7, + 0xBE, 0xD5, 0x95, 0xFE, 0x29, 0xA5, 0x24, 0xE2, 0x94, 0x2E, 0x1A, 0x52, 0x99, 0x51, 0x7B, 0xA4, + 0x44, 0x0A, 0x49, 0xCC, 0x31, 0x84, 0x28, 0x04, 0x49, 0x39, 0x50, 0xE4, 0xBD, 0xF7, 0x5D, 0xEF, + 0x98, 0x39, 0xF5, 0x29, 0x53, 0xF2, 0xE5, 0x43, 0x60, 0x06, 0x12, 0x82, 0x68, 0x08, 0xB8, 0x31, + 0x72, 0xE4, 0x61, 0xDE, 0x2C, 0xC4, 0xE0, 0xC3, 0xC4, 0x83, 0x5F, 0x1E, 0x73, 0x64, 0x14, 0x48, + 0x02, 0x95, 0x1C, 0x86, 0x09, 0x91, 0x53, 0x1B, 0x7E, 0xC0, 0x85, 0x24, 0xD4, 0xD8, 0xD0, 0xCB, + 0xE3, 0x98, 0x02, 0xD9, 0x62, 0xB9, 0x3E, 0x7D, 0x7D, 0x75, 0xFF, 0xDE, 0x61, 0x95, 0xA9, 0xAA, + 0xCC, 0xDB, 0xDE, 0x2D, 0x17, 0x4B, 0xA3, 0xCD, 0xE5, 0xF5, 0xBA, 0x2A, 0x4C, 0x91, 0x29, 0x04, + 0xF0, 0x3E, 0xD8, 0xDE, 0xE6, 0x65, 0xE1, 0x9D, 0x4B, 0xF2, 0x3B, 0x82, 0x64, 0x22, 0x1D, 0x68, + 0xAD, 0x38, 0x46, 0xCF, 0x11, 0x31, 0xC9, 0x09, 0x60, 0x8C, 0x1C, 0x62, 0x48, 0xC1, 0x3C, 0x39, + 0x30, 0x12, 0x09, 0x6D, 0x94, 0xED, 0x1D, 0x21, 0x2A, 0x29, 0x8F, 0x0F, 0x66, 0x0B, 0xB9, 0x5D, + 0x6F, 0xB6, 0x29, 0x95, 0xB0, 0xDE, 0x4B, 0x22, 0x04, 0x40, 0x84, 0xBB, 0xC7, 0xE3, 0xE5, 0x6A, + 0xF3, 0xEA, 0x62, 0x21, 0x95, 0x3C, 0x39, 0x9E, 0xFF, 0xF9, 0x67, 0x5F, 0x7F, 0xF8, 0xF1, 0x07, + 0x4F, 0x9E, 0xBD, 0xD6, 0x99, 0xA9, 0xAA, 0xE2, 0xBD, 0x77, 0x1F, 0xAE, 0xD6, 0x9B, 0xB6, 0x6D, + 0xEF, 0xDF, 0x3D, 0x20, 0xA2, 0xCB, 0xEB, 0xA5, 0x22, 0xDC, 0xD6, 0xCD, 0xC5, 0xEB, 0xCE, 0xF5, + 0xCE, 0xC5, 0x78, 0x7E, 0x71, 0xBD, 0xDD, 0x0E, 0xAA, 0xFC, 0x09, 0xAD, 0x56, 0x96, 0x0F, 0xA6, + 0x93, 0x71, 0x67, 0xFD, 0xCD, 0xB2, 0x76, 0x3E, 0x62, 0xF4, 0x67, 0x67, 0x17, 0x75, 0x1F, 0xAA, + 0xD9, 0xFC, 0xDD, 0xF7, 0xA6, 0x21, 0xF8, 0x9B, 0x4D, 0xBB, 0xD9, 0x6C, 0x3F, 0xFD, 0xF4, 0x8B, + 0x83, 0xF9, 0xE4, 0x67, 0x7F, 0xF0, 0x23, 0x40, 0x94, 0x92, 0xAA, 0x22, 0xFF, 0xCD, 0xE3, 0xE7, + 0x27, 0xC7, 0x47, 0xF3, 0xD9, 0xB4, 0xAE, 0x1B, 0x6D, 0x94, 0xD6, 0xDA, 0x76, 0xFD, 0x64, 0x54, + 0x54, 0xA5, 0x79, 0xFC, 0xED, 0xAB, 0x7B, 0x77, 0x8E, 0x8E, 0x0F, 0xA7, 0xDB, 0x6D, 0x3B, 0x9F, + 0x4D, 0xC6, 0xE3, 0x6A, 0x54, 0xE5, 0xAF, 0x5F, 0x5F, 0x2C, 0x17, 0x8B, 0xF3, 0xCB, 0xC5, 0xC5, + 0xE5, 0xA2, 0x6D, 0xDB, 0x7F, 0xFE, 0xDF, 0xFE, 0xFC, 0xE0, 0x60, 0x76, 0x73, 0x7D, 0x43, 0x54, + 0xB8, 0x10, 0x49, 0x4A, 0x6F, 0x2D, 0x87, 0x18, 0x05, 0x27, 0xB3, 0xB2, 0xAE, 0xB7, 0x59, 0x66, + 0x92, 0xE9, 0x06, 0x03, 0x6B, 0x96, 0x24, 0xA5, 0x75, 0x01, 0x11, 0x9D, 0x0F, 0xCE, 0x7B, 0x40, + 0x28, 0xA4, 0x21, 0x44, 0x16, 0xE8, 0x9C, 0x57, 0x44, 0xC0, 0x1C, 0x99, 0x33, 0x63, 0xBA, 0xBE, + 0x77, 0x3E, 0x38, 0x1F, 0xB3, 0x2C, 0x2B, 0x72, 0x2D, 0x10, 0xEE, 0x18, 0x7D, 0x79, 0xB5, 0x54, + 0x46, 0x49, 0x49, 0xAF, 0xCF, 0x2E, 0x63, 0x8C, 0x59, 0xA6, 0xDB, 0xCE, 0xA5, 0xA5, 0xA5, 0xA4, + 0x40, 0x41, 0xD6, 0x7B, 0x4C, 0x9F, 0x7B, 0xCA, 0x0D, 0x86, 0xE0, 0x35, 0x6C, 0x95, 0x61, 0x71, + 0x02, 0x33, 0xA4, 0xBD, 0xCD, 0x7B, 0x55, 0x98, 0xF4, 0xBF, 0xB6, 0x9D, 0xF5, 0x3E, 0xF4, 0xD6, + 0xE5, 0x99, 0x7A, 0x7E, 0xBE, 0xF0, 0x21, 0x21, 0x7B, 0x10, 0x62, 0x44, 0x81, 0x5D, 0x6F, 0xE7, + 0xE3, 0x92, 0x01, 0x42, 0x04, 0x49, 0x22, 0xFA, 0xD0, 0x76, 0x96, 0x48, 0xC8, 0xB4, 0xB1, 0x89, + 0x9C, 0x0F, 0xBD, 0xF3, 0x5D, 0x6F, 0x43, 0x88, 0x4D, 0xD7, 0x1B, 0xAD, 0x32, 0x89, 0xC0, 0xAC, + 0x8D, 0x36, 0xC6, 0xEC, 0xCB, 0x97, 0x3C, 0x33, 0x69, 0xDD, 0x4A, 0x29, 0x42, 0xE0, 0xD4, 0x46, + 0x14, 0x88, 0x65, 0x9E, 0x2D, 0x37, 0xB5, 0x40, 0x2C, 0x8B, 0x2C, 0x01, 0xD1, 0xD3, 0x3E, 0xE1, + 0x14, 0x2C, 0x94, 0xAC, 0xEB, 0x16, 0x11, 0xCA, 0xC2, 0x5C, 0x5E, 0x71, 0x91, 0x67, 0x42, 0x60, + 0x6E, 0xD4, 0x62, 0xB9, 0xD8, 0xD6, 0x5B, 0x25, 0x65, 0xEF, 0xDC, 0x8F, 0x7F, 0xF8, 0xF1, 0xE1, + 0x6C, 0xF2, 0xF9, 0x97, 0xCF, 0xA4, 0x10, 0x27, 0xC7, 0xB3, 0x1D, 0x06, 0x75, 0x70, 0x7D, 0x7F, + 0xD3, 0x1D, 0xDF, 0x25, 0x3B, 0x3C, 0x28, 0xF7, 0x85, 0x10, 0x23, 0xA6, 0xDC, 0x2A, 0x49, 0x5D, + 0x19, 0x55, 0xE5, 0x06, 0x00, 0x9C, 0xF3, 0x37, 0xCB, 0x0D, 0x02, 0x7A, 0x1F, 0xEE, 0xDE, 0x39, + 0x38, 0x3A, 0x9C, 0xA5, 0xC8, 0x92, 0xA6, 0xA5, 0x69, 0xD8, 0xB5, 0x4F, 0x1D, 0x50, 0x88, 0x18, + 0xA3, 0x40, 0x14, 0x84, 0x21, 0x44, 0x1F, 0x39, 0x46, 0x48, 0x48, 0xD7, 0x1D, 0xA0, 0x2F, 0x42, + 0x88, 0xD6, 0x86, 0x64, 0xE4, 0xFC, 0x26, 0xED, 0x4A, 0x0D, 0x00, 0x46, 0x19, 0x99, 0xE9, 0xD6, + 0x9C, 0x0E, 0x70, 0xA7, 0xCA, 0xB4, 0xFB, 0x5D, 0x12, 0x02, 0x18, 0xAC, 0xF3, 0x24, 0x84, 0xD6, + 0x4A, 0x4B, 0xCA, 0x32, 0x95, 0xA0, 0x6C, 0xF0, 0x5B, 0xD8, 0xAE, 0xDF, 0x09, 0x61, 0xB7, 0x7F, + 0xC4, 0x3B, 0xFC, 0x48, 0xEA, 0x70, 0x0F, 0x12, 0x28, 0xBB, 0x1C, 0x2A, 0xB5, 0xC6, 0xF6, 0xF2, + 0xB0, 0x29, 0xD0, 0x24, 0x75, 0x79, 0xE7, 0x83, 0xF7, 0xB1, 0xB7, 0x2E, 0x0E, 0xDE, 0x50, 0x90, + 0xBC, 0x97, 0x53, 0xE0, 0xA4, 0x37, 0xD6, 0x73, 0xE9, 0xF6, 0x02, 0xC7, 0x41, 0xCA, 0x39, 0x1D, + 0x1D, 0x0C, 0xB8, 0x1F, 0x54, 0xC4, 0x10, 0x01, 0x05, 0x84, 0x48, 0x91, 0x31, 0xB1, 0x14, 0x84, + 0x88, 0x0C, 0xC8, 0xC3, 0xB2, 0xDB, 0xA9, 0x57, 0xA7, 0xCA, 0x92, 0x99, 0xB9, 0xD9, 0xD6, 0x6D, + 0xD7, 0x6D, 0xEB, 0x4E, 0x0B, 0xA6, 0x71, 0xA5, 0x28, 0x28, 0x29, 0xBB, 0xDE, 0xD6, 0x6D, 0x5F, + 0x15, 0x46, 0x20, 0x3A, 0x1F, 0xB4, 0x22, 0xA5, 0xC8, 0x76, 0x9D, 0xD2, 0x12, 0x50, 0xD4, 0x4D, + 0xA7, 0x09, 0x09, 0x04, 0x08, 0x88, 0xC1, 0xEF, 0x36, 0x03, 0x44, 0x06, 0xEF, 0x5D, 0xA2, 0x40, + 0x84, 0x10, 0x03, 0x27, 0xAE, 0xF4, 0x90, 0xCC, 0x26, 0x0C, 0xA6, 0x52, 0x72, 0x8F, 0xA9, 0x09, + 0x21, 0x38, 0x17, 0xAC, 0x8F, 0x2E, 0x91, 0xA8, 0x88, 0xDE, 0xBA, 0x33, 0x2B, 0x8A, 0xFC, 0xE5, + 0xE9, 0xCD, 0x7F, 0xF9, 0x4F, 0x7F, 0xBC, 0x5E, 0x6D, 0xCA, 0xB2, 0xB8, 0x73, 0x74, 0x70, 0x73, + 0xB3, 0x04, 0xCE, 0x8C, 0x96, 0xDE, 0x79, 0x44, 0x5C, 0x6D, 0x6A, 0x1F, 0xF8, 0xE4, 0xF8, 0xA0, + 0xEF, 0xFA, 0xB3, 0x8B, 0xEB, 0xAA, 0xC8, 0x17, 0xEB, 0xED, 0xD5, 0xE5, 0x95, 0x29, 0x8B, 0xBE, + 0xEF, 0xFB, 0xDE, 0x0A, 0xA2, 0x64, 0xCF, 0xF3, 0x7B, 0xDF, 0x7F, 0xF7, 0xDD, 0x47, 0xF7, 0x6F, + 0x16, 0x9B, 0xCE, 0x05, 0x60, 0x0E, 0xD6, 0x36, 0x75, 0x7B, 0xB3, 0xAE, 0xEF, 0xDD, 0xBF, 0x33, + 0x2A, 0xF3, 0xAB, 0xCB, 0x8B, 0xAF, 0x1F, 0x3F, 0xDB, 0x34, 0x4E, 0x08, 0xFA, 0xE9, 0xEF, 0xFF, + 0xDE, 0xF9, 0xF9, 0xD5, 0xFF, 0xFE, 0x7F, 0xFE, 0xE5, 0x8F, 0x7F, 0xFC, 0x83, 0xD1, 0xA8, 0x2C, + 0x0A, 0xF3, 0xFE, 0x3B, 0xF7, 0x4F, 0xCF, 0xAE, 0xEE, 0xDD, 0x39, 0xC8, 0x12, 0xC5, 0x3D, 0x99, + 0xB0, 0x84, 0xF8, 0xF0, 0xFE, 0xC9, 0xC1, 0x6C, 0x52, 0x77, 0x7D, 0x72, 0xE5, 0x41, 0xC4, 0xBE, + 0x77, 0x1F, 0x3C, 0x7A, 0xF8, 0xFE, 0x3B, 0x6F, 0x5D, 0x5F, 0xDD, 0x7C, 0xF5, 0xE4, 0x85, 0x56, + 0xD2, 0xF6, 0xF6, 0xEC, 0xFC, 0x2A, 0xCD, 0x2E, 0x78, 0x28, 0xC9, 0x59, 0x12, 0x75, 0xCE, 0x2A, + 0xA5, 0x05, 0xA2, 0xB5, 0x7E, 0x94, 0x65, 0xF3, 0xD9, 0xB4, 0xB7, 0xEE, 0xF5, 0xD9, 0x25, 0x47, + 0xB0, 0xD6, 0x65, 0xB9, 0x18, 0x7A, 0xA6, 0x42, 0x10, 0x51, 0xF0, 0x21, 0xCD, 0x8B, 0x89, 0x59, + 0x1A, 0x43, 0x52, 0x28, 0xA6, 0xAE, 0x77, 0x16, 0xAD, 0x40, 0x74, 0x2E, 0xC4, 0x10, 0xF3, 0xC2, + 0x14, 0x45, 0x2E, 0x49, 0xC4, 0x10, 0xBB, 0xCE, 0x7A, 0xE7, 0xFA, 0xDE, 0x76, 0x5D, 0x64, 0x4E, + 0x33, 0x9F, 0xC0, 0x00, 0x08, 0x18, 0x62, 0xBC, 0xBA, 0x5E, 0x2E, 0xD7, 0xCD, 0x6C, 0x52, 0x85, + 0x90, 0xC0, 0x12, 0x20, 0xDE, 0xD0, 0xC7, 0x11, 0x12, 0xC9, 0x25, 0x82, 0xD8, 0x61, 0x17, 0x6F, + 0x0D, 0xBA, 0x00, 0x00, 0xAC, 0xF7, 0x75, 0xD3, 0x27, 0x8C, 0x08, 0x30, 0x38, 0x1F, 0xDA, 0xDE, + 0x4A, 0x21, 0xAE, 0x96, 0x9B, 0x10, 0x62, 0x64, 0x16, 0x42, 0xF4, 0x2E, 0x74, 0xAB, 0x3A, 0x04, + 0xC7, 0x51, 0x28, 0xA5, 0x7C, 0x88, 0xFB, 0xAC, 0x6F, 0xDB, 0xF4, 0xD6, 0xBA, 0xC3, 0xD9, 0x38, + 0x9D, 0xDF, 0x4D, 0xDB, 0x2E, 0x56, 0x9B, 0x59, 0x95, 0x17, 0x99, 0x0E, 0xDE, 0x3B, 0x21, 0xBC, + 0x0F, 0xC9, 0x85, 0x40, 0x2B, 0x25, 0x04, 0x56, 0x45, 0x96, 0x64, 0x76, 0x18, 0x30, 0xE9, 0x68, + 0xF6, 0xD6, 0x7A, 0xE7, 0xF2, 0xDC, 0xC4, 0xC8, 0x3E, 0x04, 0x21, 0x92, 0x17, 0x1A, 0x32, 0x70, + 0x52, 0x4C, 0x4C, 0xD9, 0x8D, 0x75, 0x4E, 0x08, 0x14, 0x11, 0x26, 0xA3, 0x62, 0x3E, 0xAD, 0x10, + 0xC5, 0x72, 0xB3, 0xF5, 0x3E, 0xBC, 0x7C, 0x75, 0x3E, 0x1E, 0x8F, 0xA6, 0x93, 0x51, 0xDF, 0xF7, + 0x9F, 0x7F, 0xF5, 0x94, 0x08, 0x8D, 0xD1, 0x92, 0x48, 0x6B, 0xB5, 0xDA, 0xD6, 0xC9, 0xE1, 0x6C, + 0x80, 0x52, 0x01, 0x00, 0xA2, 0x90, 0xC2, 0x20, 0xF6, 0xBD, 0x4B, 0x02, 0x9F, 0xE9, 0x42, 0x42, + 0x9A, 0xD3, 0x21, 0x5A, 0xF6, 0x08, 0x80, 0x00, 0x99, 0xD6, 0x44, 0xA2, 0xED, 0xFA, 0xD7, 0xE7, + 0xD7, 0x80, 0x5C, 0x55, 0x65, 0x91, 0x65, 0x88, 0x9C, 0xEA, 0x92, 0xB0, 0x9B, 0x5F, 0xD2, 0x77, + 0x32, 0xA1, 0x81, 0x09, 0x09, 0x10, 0xF7, 0x61, 0x6E, 0x68, 0x22, 0xF9, 0xB4, 0x8F, 0xDE, 0x28, + 0xBF, 0x02, 0x43, 0x80, 0x98, 0x7E, 0x9B, 0xFE, 0xE8, 0x4F, 0xFF, 0x0C, 0x76, 0xC1, 0x36, 0xC5, + 0xAF, 0x1D, 0xA1, 0x0C, 0x77, 0xB3, 0x99, 0x41, 0x40, 0x4E, 0x0A, 0xA1, 0x95, 0x14, 0x02, 0x93, + 0x64, 0x8E, 0xD8, 0xE9, 0x31, 0xF1, 0x77, 0x81, 0x14, 0x7F, 0xEF, 0x63, 0x9F, 0xA6, 0xEF, 0x4A, + 0xCB, 0x80, 0xF8, 0xE6, 0xBF, 0xF3, 0x60, 0xE1, 0x11, 0x87, 0x08, 0x05, 0x00, 0x00, 0xC9, 0xD1, + 0x63, 0xB5, 0x6D, 0x9B, 0xD6, 0x5A, 0x37, 0x84, 0x83, 0x24, 0xFD, 0x11, 0x86, 0xFC, 0x8E, 0x63, + 0x64, 0x1F, 0x38, 0x84, 0x98, 0xA4, 0xD6, 0xF6, 0xC6, 0x47, 0xBF, 0xFB, 0xEA, 0x4A, 0xD2, 0xA8, + 0xCC, 0x10, 0x51, 0x26, 0xAC, 0x0A, 0x20, 0xEE, 0x24, 0x59, 0xF6, 0xB3, 0x61, 0x66, 0x4E, 0xF3, + 0xE9, 0x14, 0xCB, 0x00, 0x80, 0x48, 0xBC, 0x7A, 0xF1, 0x7C, 0xBB, 0xDE, 0x6C, 0x9A, 0xFE, 0x68, + 0x3E, 0x26, 0x42, 0xAD, 0xD4, 0xA6, 0x69, 0x6E, 0x56, 0xF5, 0xA6, 0xE9, 0x7B, 0x17, 0x96, 0xEB, + 0x66, 0xB3, 0x69, 0x23, 0xEF, 0x74, 0x95, 0x10, 0xAD, 0xF3, 0x09, 0xA2, 0xCD, 0xCC, 0x52, 0xC9, + 0xA4, 0xDF, 0x90, 0xAC, 0xED, 0x77, 0xA5, 0xF0, 0x70, 0xBD, 0x49, 0xB2, 0x43, 0x08, 0xA1, 0xB5, + 0x0E, 0x3E, 0xA4, 0x10, 0x53, 0x16, 0xA6, 0x2C, 0x73, 0x66, 0x6E, 0x3B, 0xCB, 0x0C, 0x6D, 0x6F, + 0x7B, 0xEB, 0x52, 0x5C, 0x1B, 0x57, 0xC5, 0x1F, 0xFE, 0xFC, 0x93, 0xC7, 0xDF, 0xBE, 0xFE, 0xF6, + 0xF5, 0xE2, 0x7F, 0xFC, 0x1F, 0xFE, 0xD9, 0xDF, 0xFD, 0xDD, 0xA7, 0x77, 0x4E, 0x8E, 0xCB, 0xB2, + 0xF8, 0xF8, 0x83, 0x87, 0x0F, 0xEE, 0x1F, 0x97, 0x45, 0x26, 0x10, 0x8B, 0x22, 0x3F, 0x3C, 0x9C, + 0x6D, 0x37, 0xCD, 0xF9, 0xC5, 0x75, 0xD7, 0xD9, 0xBA, 0x69, 0x53, 0x7C, 0xD9, 0xB6, 0x7D, 0xD7, + 0xDB, 0xBA, 0x6E, 0xAB, 0x6A, 0xA4, 0xB5, 0x5E, 0x6F, 0xB6, 0x3F, 0xF8, 0xE8, 0xD1, 0x4F, 0x7F, + 0xFC, 0x3D, 0xEF, 0xB9, 0xAE, 0xBB, 0xBE, 0xEF, 0xAF, 0xAF, 0x16, 0x4D, 0xDB, 0x55, 0x55, 0x8E, + 0x08, 0x52, 0xA9, 0x8B, 0xF3, 0xCB, 0xD5, 0xA6, 0xFE, 0xFA, 0xF1, 0xF3, 0xAF, 0xBF, 0x7E, 0x56, + 0x56, 0xD5, 0x47, 0x9F, 0x7C, 0x9C, 0x97, 0xE5, 0x6C, 0x3A, 0xFD, 0xFC, 0x37, 0xDF, 0x14, 0x79, + 0x56, 0x16, 0xC5, 0xD1, 0x7C, 0x9A, 0x65, 0xBA, 0xEB, 0xFB, 0xF9, 0x64, 0x1C, 0x63, 0x72, 0x8A, + 0x6B, 0x94, 0xA4, 0xDC, 0x28, 0x25, 0x65, 0x91, 0x67, 0x5A, 0xA9, 0xD4, 0xE0, 0x13, 0x42, 0x48, + 0x29, 0x0E, 0x67, 0x23, 0xAD, 0xD5, 0x74, 0x3A, 0xBE, 0x73, 0x7C, 0x10, 0x23, 0xD7, 0x75, 0x7B, + 0x73, 0xB3, 0xEC, 0xFA, 0x0E, 0x51, 0x10, 0xC9, 0x84, 0xEA, 0x72, 0xCE, 0xA5, 0x4E, 0x79, 0x8A, + 0xDA, 0xE3, 0xF1, 0xE8, 0x60, 0x3E, 0xED, 0x7A, 0x9B, 0x65, 0x59, 0x8C, 0x4C, 0x52, 0xA0, 0xC0, + 0x22, 0xCF, 0x8C, 0xD1, 0xC0, 0x9C, 0xC0, 0x3D, 0x7B, 0xAB, 0xF0, 0x74, 0xF2, 0x34, 0x6D, 0x9F, + 0x6A, 0x13, 0xA5, 0x64, 0x04, 0x76, 0xD6, 0x6D, 0x36, 0x75, 0x0C, 0xBE, 0x6B, 0x3B, 0xAD, 0x95, + 0x24, 0x0A, 0x91, 0x43, 0x64, 0xE7, 0x83, 0x0F, 0x31, 0xD9, 0x4A, 0x10, 0xA1, 0xF3, 0x01, 0x51, + 0xBC, 0xFB, 0xCE, 0xFD, 0x51, 0x59, 0x24, 0x8B, 0xA3, 0xE1, 0xD8, 0x63, 0x88, 0x83, 0x9C, 0x0A, + 0xA2, 0xD8, 0x35, 0x91, 0xBF, 0x7B, 0x40, 0xA7, 0xC0, 0xBA, 0x6D, 0xBA, 0xBF, 0xFD, 0xE5, 0x97, + 0x6D, 0xE7, 0x8A, 0x3C, 0x1B, 0x57, 0xB9, 0x75, 0x3E, 0x46, 0x08, 0x21, 0x24, 0x26, 0x75, 0xD7, + 0x3B, 0x25, 0x15, 0x00, 0x93, 0x40, 0x12, 0xC2, 0x79, 0x4F, 0x44, 0x4A, 0x52, 0xDF, 0xFB, 0xB4, + 0x3C, 0x42, 0xE4, 0x18, 0xB9, 0x2C, 0x4C, 0x60, 0x76, 0xCE, 0xB7, 0x5D, 0xE7, 0x7D, 0x50, 0x24, + 0x32, 0xA3, 0x84, 0x40, 0xE7, 0xC3, 0x6A, 0x5D, 0x5B, 0xE7, 0x3A, 0xEB, 0xB4, 0x94, 0x89, 0x0F, + 0x94, 0x04, 0xBF, 0xD2, 0xF3, 0x84, 0x18, 0x42, 0x08, 0x65, 0x9E, 0x31, 0xA0, 0x73, 0x0E, 0x00, + 0x00, 0x41, 0x20, 0x5A, 0xE7, 0x52, 0x91, 0xE1, 0x5C, 0xE8, 0xFA, 0x5E, 0x12, 0x4D, 0xC7, 0xE5, + 0xD1, 0x7C, 0x9C, 0x19, 0xDD, 0xF6, 0x36, 0xCF, 0x34, 0x32, 0x1F, 0x1E, 0x4C, 0x62, 0xE0, 0xB3, + 0x8B, 0x9B, 0xAB, 0xAB, 0xC5, 0x72, 0xB5, 0x49, 0x9D, 0xAF, 0x10, 0xD8, 0x7B, 0x77, 0x75, 0xBD, + 0x22, 0x12, 0x8B, 0xD5, 0xA6, 0xDE, 0x76, 0x1C, 0x63, 0x08, 0x61, 0x5B, 0xB7, 0xCE, 0xB9, 0xAE, + 0xB7, 0x6D, 0x67, 0x53, 0xCE, 0x97, 0x68, 0x3C, 0x00, 0x89, 0x1E, 0x93, 0x72, 0x09, 0xE0, 0x44, + 0x25, 0x56, 0x32, 0x19, 0xC7, 0x28, 0x29, 0x8D, 0x56, 0xEB, 0x4D, 0xFD, 0xF2, 0xD5, 0xC5, 0xCD, + 0x72, 0x45, 0x92, 0x8A, 0x3C, 0x4B, 0x78, 0xA3, 0x04, 0xDB, 0x02, 0xE0, 0xFD, 0xC6, 0x8F, 0x31, + 0x71, 0xC2, 0x41, 0x26, 0x1B, 0x36, 0x81, 0x3B, 0x2B, 0x89, 0x81, 0xE2, 0xF4, 0x9D, 0x78, 0x02, + 0xE9, 0xD3, 0x06, 0x00, 0x90, 0xCC, 0x89, 0x44, 0x08, 0x6F, 0x5A, 0x97, 0x43, 0x4F, 0x80, 0x71, + 0x68, 0x23, 0xA5, 0x86, 0x00, 0x13, 0x0D, 0x66, 0xE5, 0x42, 0x60, 0x8C, 0x10, 0x42, 0x44, 0x0C, + 0xB7, 0x31, 0x5F, 0xFF, 0xA9, 0x28, 0xB6, 0x7F, 0xEC, 0x50, 0x17, 0xA8, 0x86, 0x55, 0x3E, 0xA8, + 0xE0, 0xA7, 0x44, 0x6C, 0x27, 0x8A, 0xCF, 0x00, 0xE0, 0x7D, 0x68, 0x7B, 0xEB, 0x9C, 0x0F, 0xBC, + 0xCF, 0xAD, 0x86, 0xB8, 0x0A, 0xC3, 0x62, 0x4A, 0x64, 0xFA, 0x7D, 0xB3, 0xFF, 0x0D, 0x9E, 0x36, + 0xBD, 0x96, 0x56, 0x32, 0x0C, 0xBC, 0x4E, 0x4E, 0x90, 0x96, 0xDE, 0x3A, 0x22, 0x22, 0x14, 0x0C, + 0x6F, 0xA0, 0x64, 0xE9, 0xE9, 0xC2, 0x10, 0x8A, 0x86, 0x10, 0x93, 0x62, 0x66, 0xDA, 0x87, 0xAB, + 0xF5, 0x56, 0x2B, 0x2A, 0xA4, 0x6C, 0xBB, 0x7E, 0x54, 0xE6, 0x8B, 0xD5, 0x06, 0x18, 0x14, 0x89, + 0xA6, 0xB3, 0x6D, 0xE7, 0x36, 0x75, 0x17, 0x99, 0x83, 0x75, 0x46, 0xAB, 0x18, 0xD9, 0x85, 0xA8, + 0x32, 0xA3, 0x07, 0xDB, 0x94, 0xD4, 0xC9, 0xF6, 0x80, 0xC0, 0x51, 0x58, 0x6B, 0x13, 0xB8, 0x64, + 0x20, 0x3C, 0x5B, 0x1B, 0x81, 0x63, 0x60, 0x00, 0x61, 0x6D, 0xAD, 0x94, 0x64, 0x80, 0x24, 0xFC, + 0x1F, 0xBC, 0x4F, 0x90, 0xDA, 0xC4, 0x5A, 0x4A, 0xFD, 0x52, 0xEF, 0xC2, 0x83, 0x93, 0x99, 0x31, + 0xEA, 0xD3, 0xAF, 0x5E, 0xFD, 0xF4, 0xF7, 0x3E, 0xEA, 0xDA, 0x1A, 0x88, 0xEE, 0xDE, 0xBD, 0x13, + 0x82, 0x1F, 0x8F, 0x47, 0xC6, 0xE8, 0xAE, 0x6D, 0x81, 0x99, 0xA4, 0x6C, 0x36, 0xDB, 0xED, 0xB6, + 0xBE, 0xBA, 0x5E, 0xAE, 0xD6, 0xDB, 0x41, 0xC1, 0x0E, 0xA0, 0xEB, 0x9D, 0x6F, 0x5A, 0x1F, 0x78, + 0x6A, 0x0C, 0x02, 0xFF, 0xFC, 0x0F, 0x3E, 0xF9, 0xDE, 0x47, 0x8F, 0x9C, 0x75, 0x5D, 0x6F, 0xEB, + 0xBA, 0xB9, 0xB8, 0xB8, 0x52, 0x92, 0xF2, 0xCC, 0x58, 0x1F, 0x5E, 0x9F, 0x5F, 0xF5, 0xBD, 0xCD, + 0xB3, 0xEC, 0xF9, 0xE9, 0xC5, 0xB6, 0x71, 0xF3, 0xC3, 0x03, 0xEF, 0x43, 0xA6, 0x65, 0x79, 0x34, + 0xEB, 0xAD, 0xFB, 0xF1, 0xEF, 0x7D, 0xF2, 0xEA, 0xD5, 0xD9, 0xDD, 0x3B, 0x87, 0xEB, 0x4D, 0x5D, + 0x96, 0xB9, 0x94, 0xE4, 0xBC, 0x1F, 0x97, 0xC5, 0xF5, 0x6A, 0x53, 0xE6, 0xE6, 0x60, 0x5A, 0xD6, + 0x75, 0xC7, 0x00, 0x8B, 0xE5, 0x7A, 0x34, 0x2A, 0x01, 0xD1, 0x18, 0xDD, 0x34, 0x5D, 0x8C, 0xD1, + 0x28, 0x39, 0x1E, 0x15, 0x2E, 0x70, 0x96, 0x65, 0x6D, 0x67, 0x7F, 0xF5, 0xE9, 0x6F, 0xD2, 0xF9, + 0x5D, 0x37, 0x8D, 0xD6, 0x3A, 0x33, 0x26, 0xF1, 0x25, 0x89, 0x44, 0x8C, 0x91, 0x88, 0x60, 0x98, + 0x1A, 0xD1, 0xF7, 0x3E, 0x7C, 0xF4, 0xE2, 0xD5, 0xB9, 0x73, 0x5E, 0x20, 0x59, 0x6B, 0x81, 0x51, + 0x6B, 0x35, 0x9D, 0x8C, 0x63, 0x8C, 0xCE, 0x3B, 0x1F, 0x02, 0x00, 0xC5, 0x10, 0x52, 0x19, 0x21, + 0x10, 0x39, 0x32, 0x09, 0x11, 0xBC, 0x27, 0x42, 0xA9, 0x34, 0x33, 0x58, 0x17, 0x8C, 0xA6, 0x24, + 0xD9, 0xC8, 0xC0, 0xDE, 0xC7, 0x54, 0x1E, 0x56, 0x65, 0x0E, 0xA9, 0x7F, 0x15, 0x7D, 0xE4, 0xD8, + 0xB6, 0x7D, 0x60, 0xF0, 0x21, 0x41, 0xA3, 0x61, 0xF8, 0x03, 0x38, 0x0C, 0xEC, 0x77, 0xF9, 0x41, + 0x00, 0x4E, 0xE8, 0x80, 0xD4, 0xF2, 0x4F, 0x8B, 0x2D, 0x59, 0x6A, 0xA5, 0x48, 0x97, 0xDC, 0xB5, + 0x88, 0x30, 0x04, 0x00, 0x14, 0x21, 0xB2, 0xF3, 0x51, 0x6B, 0x16, 0x8C, 0x44, 0xC2, 0xFB, 0x68, + 0x8C, 0x49, 0x2B, 0x5C, 0xEE, 0x6C, 0xB2, 0x2B, 0x25, 0x63, 0xA6, 0xB5, 0xD6, 0xD6, 0x07, 0xEB, + 0x9D, 0x73, 0x3E, 0xBD, 0xB6, 0x10, 0xA0, 0x95, 0xF4, 0x81, 0x8D, 0x51, 0x44, 0xC2, 0xF9, 0x90, + 0x1A, 0xC4, 0x44, 0x22, 0xC6, 0xC0, 0x0C, 0x59, 0xA6, 0x98, 0xC1, 0x7B, 0x46, 0x84, 0x10, 0xA3, + 0x94, 0x62, 0x9A, 0x55, 0x5D, 0xEF, 0xBA, 0xCE, 0xA2, 0x10, 0x46, 0x0A, 0x12, 0x22, 0xAD, 0x23, + 0xA3, 0x35, 0x33, 0x37, 0x4D, 0x57, 0x95, 0x59, 0xD7, 0xF7, 0x4A, 0x52, 0x55, 0xE4, 0x4A, 0x11, + 0x33, 0xAC, 0x37, 0x8D, 0x94, 0x32, 0xF8, 0x50, 0xD7, 0x6D, 0x95, 0x1B, 0xEF, 0xDC, 0x72, 0xB9, + 0xDA, 0x6E, 0xB7, 0xF3, 0xD9, 0xC4, 0xF6, 0x56, 0x30, 0x3B, 0x67, 0xAD, 0x22, 0xAD, 0xA4, 0xB7, + 0xAE, 0xB6, 0x2E, 0x46, 0xBE, 0x5E, 0xAE, 0xEF, 0x9D, 0x1C, 0x4D, 0xC6, 0xE5, 0xBE, 0xD6, 0xEE, + 0x9A, 0x2E, 0x26, 0x99, 0x4C, 0x00, 0x04, 0x90, 0x92, 0x7A, 0xE7, 0x30, 0x55, 0xA6, 0x31, 0xC6, + 0x18, 0x49, 0x88, 0x51, 0x59, 0x84, 0x18, 0x4E, 0xCF, 0xAE, 0xEA, 0xA6, 0x7D, 0xE7, 0xC1, 0xDD, + 0x94, 0x8D, 0x04, 0x1E, 0xB2, 0x86, 0xB4, 0x9D, 0x89, 0x92, 0x9C, 0x19, 0x8B, 0xD4, 0x16, 0x47, + 0x88, 0x91, 0x5D, 0x42, 0x3A, 0xC7, 0xDF, 0xC6, 0x81, 0xC2, 0x2E, 0x5E, 0x01, 0xC0, 0x30, 0x5E, + 0x8C, 0x03, 0x1C, 0x66, 0x60, 0x18, 0x70, 0x7A, 0x2E, 0x21, 0x62, 0xEA, 0xC2, 0x7A, 0xC8, 0x33, + 0x95, 0xD8, 0x88, 0xC9, 0x3C, 0x35, 0xB9, 0xA2, 0x21, 0xC2, 0xED, 0x01, 0xE5, 0x3F, 0xFC, 0xE0, + 0x9D, 0xA3, 0x84, 0x94, 0x6F, 0xE8, 0x44, 0xA9, 0xFF, 0x9D, 0xEA, 0x4D, 0xA5, 0xC8, 0x5A, 0xC7, + 0xCC, 0xD6, 0xF9, 0xCE, 0x3A, 0xEF, 0x23, 0x27, 0xD9, 0x5C, 0x48, 0xD4, 0xF1, 0xDB, 0x43, 0xC9, + 0xFD, 0x55, 0xA4, 0xC4, 0x71, 0xE0, 0x81, 0xFA, 0x1D, 0xB4, 0x35, 0x37, 0xDA, 0x68, 0x19, 0x99, + 0x63, 0x88, 0xD6, 0xF9, 0x28, 0x29, 0xE5, 0x92, 0xE9, 0xC9, 0x79, 0x30, 0x4C, 0x12, 0x00, 0x10, + 0x62, 0x14, 0x3B, 0x47, 0x38, 0x4E, 0xA5, 0x7E, 0x64, 0x66, 0x26, 0x46, 0x00, 0xB0, 0xCE, 0xF5, + 0xBD, 0xD7, 0x4A, 0xAE, 0xB7, 0xDD, 0xB8, 0xCA, 0x8A, 0x22, 0x5F, 0xAC, 0xB7, 0x91, 0x59, 0x29, + 0x59, 0xE5, 0xC6, 0x07, 0x5E, 0xD7, 0x1D, 0x03, 0x24, 0xBE, 0x05, 0x0B, 0x50, 0x42, 0x18, 0xAD, + 0x81, 0x59, 0x20, 0xF1, 0x4E, 0x6D, 0x06, 0x11, 0x22, 0xC4, 0x84, 0x59, 0x8B, 0x91, 0xDB, 0xB6, + 0x37, 0xC6, 0x10, 0x91, 0x1F, 0xB8, 0x35, 0x81, 0x88, 0xAC, 0x75, 0x92, 0xA8, 0xEB, 0xDD, 0xEB, + 0x8B, 0x45, 0x99, 0xEB, 0x22, 0xD3, 0x75, 0xA3, 0xD2, 0x24, 0x44, 0x30, 0x4B, 0xA5, 0x32, 0xA5, + 0xFF, 0xF1, 0x4F, 0xBF, 0xF7, 0xD5, 0xD3, 0xD7, 0x99, 0x31, 0xC7, 0x07, 0xE3, 0xCB, 0xEB, 0xED, + 0x27, 0x9F, 0x7C, 0x3C, 0x9F, 0x4D, 0xFA, 0xBE, 0x8D, 0x91, 0xA5, 0xD2, 0x99, 0xC0, 0x64, 0xEE, + 0x7B, 0xF6, 0xF8, 0xDB, 0x6F, 0x9E, 0xBD, 0xF6, 0x3E, 0x8E, 0x26, 0x63, 0x25, 0x65, 0xD3, 0xB6, + 0x65, 0xA5, 0xA5, 0x29, 0xB6, 0x4D, 0xAB, 0x94, 0x3E, 0x9A, 0x97, 0x1F, 0x3C, 0x7A, 0x6B, 0x3C, + 0x2A, 0x9F, 0xBF, 0x38, 0xED, 0xDA, 0xFE, 0xF9, 0xAB, 0x73, 0x04, 0xBC, 0x73, 0x30, 0xF5, 0xB6, + 0x37, 0xD3, 0x89, 0xED, 0xEC, 0xB6, 0xED, 0x97, 0xCB, 0xED, 0xC9, 0x49, 0x5E, 0x8D, 0xC6, 0x9D, + 0xF5, 0xE7, 0xE7, 0x97, 0x75, 0xDD, 0xF4, 0x5D, 0x77, 0xF7, 0xEE, 0xF1, 0xEB, 0xF3, 0x2B, 0x12, + 0xF4, 0xBD, 0x8F, 0xDF, 0x7B, 0xF2, 0xFC, 0xF5, 0x7B, 0x6F, 0xDF, 0xEB, 0x7B, 0x9B, 0xE7, 0x19, + 0x87, 0xE8, 0x43, 0x9C, 0x4D, 0x47, 0x5D, 0xEF, 0xB4, 0x56, 0xB3, 0x71, 0xE1, 0x43, 0xD4, 0x0A, + 0x97, 0x9B, 0x6E, 0xB1, 0xAE, 0xCB, 0x22, 0x9F, 0x4F, 0x47, 0x08, 0x68, 0xBD, 0x57, 0x92, 0xBE, + 0xFC, 0xFA, 0xE9, 0x74, 0x3A, 0x7E, 0xEF, 0x9D, 0xB7, 0xCE, 0xCE, 0xAF, 0x9E, 0x3E, 0x7B, 0xC1, + 0x91, 0x63, 0xE4, 0xAE, 0xED, 0xCB, 0x3C, 0x8F, 0x31, 0x00, 0x62, 0x8C, 0x60, 0x63, 0xD4, 0x02, + 0x89, 0xD9, 0x3B, 0x47, 0x44, 0x9B, 0x6D, 0xFD, 0xEA, 0xF4, 0xAC, 0x28, 0x0A, 0x00, 0xB0, 0xCE, + 0x87, 0x10, 0xB7, 0x75, 0x63, 0x9D, 0x17, 0x88, 0x45, 0x6E, 0x04, 0x0A, 0x17, 0xBC, 0x92, 0xB2, + 0xB7, 0xD6, 0x5B, 0xA7, 0x95, 0x70, 0x3E, 0x3A, 0xEF, 0x03, 0xD3, 0x38, 0xCB, 0xD3, 0xF4, 0xA0, + 0xEB, 0x2D, 0x21, 0x06, 0x8E, 0xCE, 0xDB, 0x22, 0xD3, 0x56, 0x80, 0xB3, 0x69, 0xDC, 0x11, 0x8A, + 0xDC, 0xB4, 0x1D, 0x33, 0x0A, 0xEF, 0xC2, 0x72, 0xBD, 0x4D, 0x39, 0xFE, 0xAE, 0xC3, 0x3D, 0x34, + 0xB9, 0x31, 0x22, 0x0B, 0xE6, 0x18, 0x71, 0xE8, 0xF6, 0x0E, 0xC8, 0x0C, 0x06, 0xA0, 0xE1, 0xE8, + 0x1F, 0x68, 0xC2, 0x79, 0x96, 0x01, 0x80, 0x73, 0x3E, 0xC4, 0x68, 0xB4, 0x2A, 0x72, 0xF2, 0x81, + 0x63, 0x8C, 0x99, 0xD1, 0x31, 0xC6, 0x28, 0xA0, 0x77, 0x7E, 0x8F, 0x90, 0x42, 0x4C, 0x28, 0xA8, + 0x30, 0x8C, 0xFC, 0x45, 0xC2, 0x1E, 0x3A, 0xA3, 0x54, 0x7E, 0x34, 0x4B, 0x07, 0x58, 0x8C, 0xD1, + 0x5A, 0x6B, 0xB2, 0x2C, 0x8B, 0xBA, 0x87, 0x04, 0xE5, 0xE5, 0x10, 0x22, 0x22, 0x44, 0x00, 0x21, + 0x50, 0x6B, 0xD9, 0x75, 0x0E, 0x87, 0x1E, 0xB3, 0x88, 0x81, 0x59, 0x70, 0x0C, 0x71, 0xDB, 0xB4, + 0x87, 0xD9, 0xC4, 0xA8, 0x21, 0xA1, 0x93, 0x89, 0x84, 0x17, 0x58, 0x10, 0x5D, 0x2E, 0x36, 0x31, + 0xF2, 0xC1, 0x74, 0xA4, 0x94, 0x52, 0x8A, 0x36, 0xDB, 0x76, 0xBD, 0xA9, 0xB3, 0xCC, 0x28, 0x25, + 0x25, 0x49, 0x00, 0x48, 0x7E, 0xA3, 0x07, 0xB3, 0x89, 0x96, 0x42, 0x11, 0x52, 0xA6, 0x57, 0x9B, + 0x7A, 0xB3, 0xA9, 0x67, 0xE3, 0x92, 0x08, 0x9D, 0x75, 0x4D, 0x67, 0x37, 0xDB, 0xFA, 0xF4, 0x35, + 0x28, 0x49, 0x24, 0x89, 0x48, 0x38, 0xEB, 0xCF, 0x2F, 0x6F, 0x6E, 0x16, 0xEB, 0x3B, 0xC7, 0xF3, + 0x32, 0xCF, 0x8C, 0x56, 0x29, 0x85, 0x8C, 0x21, 0x18, 0x2D, 0x81, 0x21, 0xCB, 0x74, 0x6F, 0x5D, + 0x5D, 0xB7, 0x52, 0xC9, 0xF1, 0xA8, 0x5A, 0xAF, 0xEB, 0xD7, 0x67, 0xD7, 0xB3, 0xF9, 0x44, 0x92, + 0xA0, 0x37, 0xA9, 0xC9, 0x90, 0x91, 0x08, 0x44, 0x42, 0x91, 0x80, 0xE5, 0x09, 0xFE, 0x2A, 0x52, + 0xC6, 0xB4, 0x03, 0x6C, 0xC5, 0x5B, 0x56, 0xD9, 0xC3, 0x50, 0x00, 0x40, 0xEE, 0xA3, 0x4C, 0xFA, + 0x81, 0x40, 0x91, 0xB2, 0x13, 0xA3, 0xA4, 0x0F, 0x91, 0xE3, 0xC0, 0xC9, 0x94, 0x34, 0x50, 0x4F, + 0xA5, 0xA4, 0x84, 0x03, 0x90, 0x92, 0x12, 0xD2, 0x62, 0x9F, 0x28, 0xFD, 0x6E, 0xE4, 0xBA, 0x9D, + 0x88, 0xE1, 0x2E, 0x5E, 0xEC, 0xB9, 0x47, 0xFB, 0xEC, 0x29, 0xA1, 0xDA, 0x88, 0xC8, 0x18, 0x95, + 0xFA, 0x65, 0x00, 0x4E, 0x08, 0x88, 0x01, 0x77, 0xBE, 0x45, 0xC0, 0x1C, 0x71, 0xD0, 0xE0, 0x18, + 0x5A, 0x73, 0xCC, 0x69, 0x55, 0x0C, 0x36, 0xF7, 0x98, 0xC4, 0x0C, 0x87, 0x7E, 0x0D, 0xF7, 0xBD, + 0xE3, 0x9D, 0xAA, 0x7A, 0xF2, 0x58, 0x14, 0x28, 0x50, 0x88, 0x10, 0x62, 0xE0, 0xB0, 0x47, 0xD9, + 0x25, 0x7D, 0xF7, 0x74, 0xED, 0x49, 0xA9, 0x4E, 0x08, 0xDC, 0x8B, 0x11, 0x49, 0x29, 0xA7, 0x93, + 0x92, 0xBC, 0xAA, 0x5B, 0xAB, 0x95, 0x4C, 0x79, 0x72, 0x9E, 0xE9, 0x10, 0xE2, 0x9D, 0x83, 0xCA, + 0x3A, 0x3E, 0x3D, 0xBF, 0x89, 0x1C, 0xB5, 0xD4, 0x4A, 0x2B, 0x44, 0x0C, 0x43, 0xA3, 0x2D, 0x38, + 0xEF, 0x77, 0x89, 0x64, 0x48, 0xFD, 0xCE, 0x84, 0x51, 0x9A, 0x4E, 0x46, 0x21, 0x06, 0x66, 0xEC, + 0x9D, 0x43, 0x10, 0x24, 0x41, 0x4A, 0x31, 0x2A, 0x4B, 0xE7, 0x5C, 0xDB, 0x59, 0x44, 0x40, 0x21, + 0x94, 0x56, 0x7D, 0xEF, 0xB4, 0x92, 0xA9, 0xDB, 0x1D, 0x22, 0x0B, 0x41, 0xEF, 0x3E, 0x3A, 0x59, + 0x6D, 0xB6, 0xBF, 0xFA, 0xFC, 0xD9, 0x8F, 0x3E, 0x79, 0x3F, 0x2F, 0xCB, 0xF3, 0xAB, 0xF5, 0xC1, + 0x6C, 0xE4, 0xBD, 0x57, 0x5A, 0x93, 0x54, 0xC9, 0x0E, 0x15, 0x09, 0x9D, 0xB3, 0xB3, 0xD9, 0xB4, + 0x1C, 0x8F, 0xCE, 0xCF, 0xAF, 0x19, 0x71, 0x36, 0x9D, 0xDC, 0xBB, 0x7F, 0x92, 0x65, 0x99, 0x75, + 0xA1, 0x73, 0x7E, 0x32, 0x2A, 0xEE, 0xDF, 0x39, 0x70, 0xCE, 0x5D, 0x5E, 0x5E, 0x5F, 0x9C, 0x5F, + 0x45, 0x14, 0xC1, 0xBA, 0x0F, 0xDE, 0x7F, 0x90, 0x67, 0x19, 0x12, 0x5D, 0xAF, 0x9A, 0x2F, 0xBE, + 0x7A, 0xFA, 0xE9, 0xE7, 0xDF, 0xBC, 0xF7, 0xFE, 0xBB, 0x6D, 0xEF, 0xB4, 0x31, 0xE3, 0xF1, 0xE8, + 0xE2, 0xEA, 0x7A, 0xBB, 0x69, 0xFA, 0xDE, 0x5E, 0xDD, 0x2C, 0xF3, 0x3C, 0xFF, 0xFA, 0x9B, 0x67, + 0xDF, 0x7E, 0xFB, 0x7C, 0x7E, 0x70, 0x30, 0x9D, 0x8C, 0xE7, 0xD3, 0x2A, 0x86, 0xD0, 0x34, 0x5D, + 0x88, 0xF1, 0x60, 0x3E, 0xD1, 0x8A, 0x48, 0x88, 0xF1, 0xA8, 0xE8, 0x7B, 0x0F, 0x0C, 0x89, 0x74, + 0xC9, 0xCC, 0xD7, 0x37, 0xAB, 0xA3, 0x83, 0x89, 0x56, 0x12, 0x01, 0x1E, 0xBD, 0x7D, 0xFF, 0xB3, + 0x2F, 0x9F, 0x20, 0xD2, 0x5B, 0x6F, 0xDD, 0x73, 0xCE, 0x3D, 0x79, 0xF2, 0x5C, 0x4A, 0x0A, 0x3E, + 0x44, 0x8E, 0x4A, 0x49, 0xDF, 0xBA, 0xC0, 0x4C, 0x02, 0x42, 0x04, 0x21, 0x44, 0x5D, 0xD7, 0x9B, + 0x6D, 0x71, 0x75, 0x75, 0x53, 0x37, 0x2D, 0xA2, 0x48, 0xA8, 0x05, 0x60, 0xEE, 0x7A, 0xAB, 0xB5, + 0xCA, 0xB4, 0x0E, 0x31, 0x64, 0x5A, 0xA3, 0x10, 0x6D, 0xDB, 0x49, 0x22, 0x95, 0x53, 0x5D, 0xD7, + 0x89, 0x24, 0x9E, 0x44, 0x47, 0xA5, 0x44, 0x29, 0x65, 0x86, 0x00, 0x0C, 0xB9, 0xCE, 0x44, 0x6F, + 0x95, 0x92, 0x05, 0x8A, 0xAE, 0x5B, 0x27, 0x0B, 0xF7, 0x18, 0x43, 0x59, 0x14, 0xD6, 0xBA, 0xBE, + 0xEF, 0xB7, 0x75, 0x3B, 0xD0, 0xFE, 0x86, 0x4D, 0x32, 0x80, 0x78, 0x10, 0x19, 0x19, 0x41, 0xA0, + 0xC0, 0x41, 0x34, 0x86, 0x87, 0xC6, 0x03, 0x84, 0xF4, 0x95, 0xC1, 0xBF, 0x69, 0x89, 0xC4, 0x10, + 0x91, 0x19, 0xBA, 0xCE, 0x09, 0x81, 0x49, 0x8A, 0x23, 0x29, 0x68, 0x62, 0x9A, 0x73, 0x0E, 0xE8, + 0x22, 0x90, 0x52, 0xA4, 0x34, 0xA3, 0xEF, 0xDD, 0x68, 0x54, 0xF9, 0x10, 0x4E, 0xCF, 0xAF, 0x05, + 0x89, 0xE3, 0xC3, 0xC9, 0x7A, 0x53, 0x9B, 0x22, 0x4B, 0x3C, 0x1C, 0xA5, 0x14, 0x09, 0xA1, 0x88, + 0x96, 0x5D, 0xEF, 0x5C, 0x30, 0x46, 0x4B, 0x99, 0x04, 0x03, 0xC1, 0x18, 0x09, 0xCC, 0x02, 0x41, + 0x1B, 0x19, 0x95, 0x70, 0x3E, 0x30, 0x0F, 0x40, 0x6B, 0x25, 0x09, 0x99, 0x01, 0x58, 0x91, 0x70, + 0x8E, 0x43, 0x08, 0x69, 0x44, 0xE6, 0x7C, 0x18, 0x55, 0x85, 0x24, 0x2A, 0x32, 0x2D, 0x84, 0x68, + 0x5A, 0xAB, 0xB5, 0xFA, 0xE0, 0xDD, 0xB7, 0x4E, 0xCF, 0xAE, 0x25, 0x49, 0x12, 0x58, 0x37, 0x2D, + 0x00, 0x1F, 0x4C, 0xC7, 0x6F, 0x9D, 0x1C, 0xCE, 0x27, 0xE5, 0x0E, 0x74, 0x89, 0x08, 0x68, 0xAD, + 0xED, 0x7B, 0xDB, 0xF5, 0x7D, 0xDB, 0x74, 0x1C, 0x63, 0xDD, 0x34, 0xAB, 0xF5, 0x96, 0x01, 0x42, + 0x88, 0x99, 0xD1, 0xD6, 0xB9, 0x6D, 0xDD, 0xF4, 0x2F, 0xFA, 0x49, 0x55, 0x76, 0xCE, 0x36, 0x75, + 0x2B, 0x84, 0x38, 0x98, 0x4F, 0xF4, 0x6C, 0x52, 0x14, 0xC6, 0x18, 0x43, 0x52, 0x19, 0x63, 0x96, + 0xAB, 0xF5, 0x72, 0xB5, 0xAE, 0xCA, 0xE2, 0xE9, 0x8B, 0xD3, 0xF3, 0xAB, 0x9B, 0x9F, 0xFE, 0xE8, + 0x83, 0x4C, 0xAB, 0xAE, 0x73, 0xB0, 0xAB, 0xA8, 0xF6, 0x51, 0xC3, 0x87, 0x18, 0x22, 0x87, 0x10, + 0x94, 0x92, 0xE9, 0x76, 0x87, 0x18, 0x15, 0x51, 0xDA, 0x59, 0xB8, 0x63, 0x79, 0xEF, 0x7A, 0x8D, + 0x7D, 0x23, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1F, 0xF4, 0xC7, 0xFF, 0xF2, 0x5F, + 0xA7, 0x6D, 0x4C, 0x98, 0xAA, 0x56, 0x56, 0x4A, 0x66, 0x8A, 0xD2, 0x73, 0x95, 0xB9, 0x2E, 0x32, + 0x93, 0x9A, 0xD0, 0x65, 0x9E, 0x25, 0x52, 0x18, 0xA7, 0x0E, 0xC5, 0x3F, 0xE8, 0x9B, 0xFB, 0x26, + 0x65, 0x7A, 0x13, 0x6B, 0x93, 0x9F, 0xE3, 0x1B, 0xFA, 0x37, 0xEE, 0xC0, 0x10, 0x62, 0x47, 0x0B, + 0xDF, 0xC1, 0xA6, 0x12, 0xC9, 0x3C, 0x32, 0x60, 0x64, 0x0E, 0x71, 0x98, 0x3A, 0xA6, 0x64, 0x5F, + 0xD0, 0xED, 0xB8, 0xF9, 0x46, 0x98, 0x38, 0xEC, 0x18, 0xE0, 0xFB, 0xA0, 0xE9, 0x63, 0x4C, 0xC3, + 0x41, 0x66, 0x48, 0xD0, 0xC7, 0x84, 0x36, 0x8A, 0xBB, 0x5B, 0x96, 0xF2, 0xB2, 0x74, 0x53, 0xCA, + 0x32, 0x2B, 0xF2, 0x2C, 0xB1, 0xD9, 0x73, 0x93, 0x29, 0x29, 0x95, 0x92, 0x21, 0x84, 0xB3, 0xD3, + 0x57, 0x8B, 0xE5, 0x56, 0x6B, 0x7A, 0xEB, 0xEE, 0x61, 0xD2, 0x57, 0x28, 0xF2, 0xAC, 0xAE, 0x9B, + 0x83, 0xD9, 0xC8, 0xB9, 0xF0, 0xF2, 0x6C, 0x41, 0x52, 0x11, 0x09, 0x40, 0x10, 0x29, 0x59, 0x4D, + 0xC6, 0x8E, 0xCE, 0xA7, 0xF0, 0x1D, 0x42, 0x88, 0x81, 0x95, 0x92, 0x28, 0x90, 0x48, 0x8C, 0x46, + 0xE5, 0xD1, 0xC1, 0x8C, 0x39, 0x5A, 0xE7, 0x13, 0x98, 0x28, 0xCF, 0x4C, 0x6E, 0xB4, 0x52, 0xD2, + 0x87, 0x60, 0x94, 0xF4, 0xDE, 0x27, 0xCA, 0x7D, 0x6F, 0x5D, 0x08, 0x21, 0xB9, 0x94, 0xFB, 0x10, + 0xFE, 0xC9, 0x3F, 0xFA, 0xF8, 0xE5, 0x8B, 0xB3, 0x71, 0x55, 0x3D, 0x7C, 0xE7, 0xA1, 0x8F, 0x80, + 0x00, 0x99, 0xD1, 0x29, 0x57, 0x1D, 0x8F, 0x4A, 0x52, 0x12, 0x00, 0x63, 0x0C, 0xC0, 0x6C, 0x5D, + 0xB0, 0x1E, 0xB4, 0xD6, 0x99, 0xD1, 0xF7, 0xEF, 0x9F, 0x8C, 0xC7, 0xD5, 0x64, 0x32, 0xCA, 0x8C, + 0x3A, 0x9A, 0x8D, 0x8E, 0x0F, 0xA6, 0x6D, 0xD3, 0x9E, 0x9F, 0x5F, 0x6C, 0xEB, 0x2E, 0xFA, 0x90, + 0x67, 0xEA, 0xC3, 0x0F, 0xDF, 0xB9, 0x77, 0x72, 0x54, 0x37, 0xAD, 0xF5, 0xF1, 0xC5, 0xE9, 0xE5, + 0xE9, 0xD9, 0x75, 0xDB, 0xBB, 0x7A, 0x5B, 0x87, 0xE0, 0x67, 0xF3, 0x59, 0x9E, 0x67, 0x45, 0x55, + 0xDD, 0x2C, 0x16, 0x27, 0x77, 0xEF, 0x64, 0x79, 0x76, 0x38, 0x1D, 0x49, 0x29, 0xCF, 0xCF, 0xAF, + 0xBE, 0x7D, 0xF6, 0xAD, 0x31, 0xFA, 0xE8, 0xE8, 0x50, 0x92, 0x40, 0x14, 0x5D, 0xDF, 0x93, 0xA0, + 0x2C, 0x33, 0xB9, 0x96, 0x09, 0x89, 0x93, 0xC4, 0x82, 0x52, 0xB9, 0x7D, 0x38, 0x9F, 0x08, 0x21, + 0x24, 0xA1, 0xB3, 0x36, 0x30, 0x5E, 0x5D, 0xAF, 0xBE, 0x7D, 0xF1, 0xFA, 0x60, 0x3E, 0x45, 0x41, + 0xAF, 0x5E, 0x9D, 0xED, 0x61, 0x2E, 0x90, 0x08, 0x3B, 0xCC, 0x02, 0x61, 0x36, 0x9B, 0xE6, 0x79, + 0xD6, 0x76, 0x1D, 0x33, 0x34, 0x4D, 0xBB, 0xAD, 0x9B, 0x74, 0xD6, 0x24, 0xAD, 0x0B, 0x39, 0x38, + 0x5A, 0x06, 0x8E, 0x03, 0x06, 0xAD, 0xB7, 0xCE, 0x79, 0x07, 0x0C, 0x49, 0x4A, 0x68, 0x38, 0xA5, + 0x79, 0xE8, 0x73, 0x07, 0x1F, 0x26, 0x93, 0xD1, 0xC1, 0x6C, 0x92, 0x50, 0xDF, 0x75, 0xD3, 0x05, + 0xE6, 0x18, 0xB9, 0x2A, 0x32, 0xEF, 0x63, 0x66, 0x94, 0x40, 0x6C, 0xDA, 0x2E, 0xCF, 0xCD, 0x87, + 0xEF, 0xBE, 0x1D, 0xDE, 0x94, 0x96, 0xB8, 0x13, 0x8C, 0xDF, 0xAD, 0x68, 0xC0, 0x08, 0xC8, 0x3B, + 0x0E, 0xD3, 0xF0, 0x35, 0x82, 0x94, 0x74, 0x79, 0xB3, 0xFE, 0xE2, 0xEB, 0xE7, 0xC1, 0x07, 0x04, + 0x10, 0x02, 0x7D, 0x82, 0x4D, 0x01, 0x0B, 0x1C, 0x0A, 0x91, 0x18, 0x82, 0x52, 0x94, 0xF2, 0xA3, + 0x34, 0x37, 0x60, 0xE6, 0x64, 0x11, 0x87, 0x02, 0x5D, 0x88, 0x9B, 0xBA, 0xED, 0x7A, 0xAB, 0xA5, + 0x14, 0x42, 0x38, 0xE7, 0xF3, 0x64, 0x17, 0x8F, 0x40, 0x34, 0x28, 0xAF, 0x58, 0xE7, 0xD3, 0x99, + 0x6D, 0x8C, 0x16, 0x44, 0xCE, 0xFB, 0x3C, 0x33, 0x89, 0xCB, 0xAD, 0x95, 0x14, 0x00, 0x4A, 0xCA, + 0x18, 0xA3, 0xF5, 0x1E, 0x00, 0xBA, 0xDE, 0xA6, 0x5E, 0xB0, 0x0F, 0xA1, 0x69, 0x7B, 0x67, 0x5D, + 0x92, 0xC3, 0xAE, 0x9B, 0x0E, 0x11, 0xA6, 0x93, 0x32, 0x25, 0x22, 0x7A, 0x70, 0x66, 0xA0, 0x84, + 0xC2, 0x9D, 0x8C, 0x4B, 0x25, 0xA9, 0xC8, 0xB3, 0xC3, 0xF9, 0x64, 0x3E, 0x1D, 0x69, 0x25, 0x63, + 0x88, 0xE9, 0x25, 0x52, 0x7C, 0xDC, 0x6C, 0xDB, 0xB6, 0xB3, 0x9B, 0xBA, 0x41, 0xC0, 0xB2, 0xC8, + 0x17, 0xCB, 0xF5, 0x72, 0xB5, 0x79, 0xFA, 0xFC, 0xD5, 0x72, 0xB5, 0x49, 0xFE, 0x81, 0x09, 0x13, + 0x73, 0x76, 0x71, 0x8D, 0x00, 0x47, 0x07, 0xB3, 0x2C, 0x37, 0x79, 0x9E, 0xA7, 0x04, 0xA9, 0xEB, + 0xFB, 0xBE, 0x77, 0xE3, 0x51, 0xA5, 0x95, 0x0A, 0x31, 0x94, 0x79, 0xB1, 0x6D, 0xDA, 0xC7, 0xDF, + 0x9E, 0x1E, 0x1F, 0x4C, 0x66, 0x93, 0xCA, 0x7B, 0x8F, 0x30, 0x20, 0x55, 0x53, 0x11, 0xE3, 0x7C, + 0x00, 0x80, 0x2C, 0xD3, 0x4F, 0x9F, 0xBF, 0x66, 0x06, 0x04, 0xCE, 0x8C, 0x3E, 0x3D, 0xBF, 0xCC, + 0x8C, 0x96, 0x52, 0x0E, 0x0C, 0x81, 0x5B, 0x31, 0x46, 0xEE, 0x74, 0x55, 0x07, 0x94, 0x96, 0x94, + 0x54, 0x64, 0x9A, 0x99, 0x83, 0x75, 0x65, 0xA6, 0x8B, 0xDC, 0x58, 0x17, 0x92, 0x22, 0x02, 0x20, + 0xF0, 0x80, 0x01, 0x79, 0x13, 0xBF, 0xFE, 0x53, 0x75, 0xE5, 0xED, 0xEF, 0xE3, 0x2D, 0xC1, 0x9C, + 0x7D, 0x13, 0x6A, 0xFF, 0x0B, 0xFB, 0x18, 0xB7, 0xCF, 0x1B, 0x53, 0xC6, 0x87, 0x08, 0xCE, 0x47, + 0xDC, 0x01, 0x3A, 0xC4, 0x20, 0x03, 0xBB, 0xCF, 0x25, 0xF7, 0xE1, 0x12, 0x93, 0x38, 0xD1, 0x2E, + 0x35, 0xE3, 0x34, 0x25, 0xF7, 0x3B, 0xF0, 0x5A, 0xCA, 0xFA, 0x52, 0x76, 0x16, 0xE3, 0x30, 0x2B, + 0x51, 0x03, 0xF1, 0x3E, 0x75, 0xFA, 0xB0, 0x2A, 0xB3, 0xCC, 0x68, 0x60, 0xC8, 0xB4, 0xDE, 0xCF, + 0x1F, 0x88, 0x10, 0x20, 0x5E, 0x2D, 0x36, 0xD6, 0x3A, 0xA3, 0x24, 0x00, 0x76, 0xD6, 0xA3, 0x10, + 0x4D, 0xDB, 0x75, 0xBD, 0x33, 0xDA, 0xF5, 0xD6, 0x91, 0x90, 0x20, 0x52, 0x7F, 0x7A, 0xA7, 0xF1, + 0x9D, 0xA8, 0xE3, 0x00, 0x88, 0x14, 0x42, 0x4C, 0xA7, 0xA8, 0x90, 0x34, 0x1F, 0x8F, 0x67, 0xD3, + 0xB1, 0x94, 0x84, 0x80, 0x8B, 0xC8, 0x92, 0x84, 0x54, 0x94, 0x69, 0x65, 0xB4, 0x3A, 0x98, 0x8F, + 0x97, 0xEB, 0xED, 0x7C, 0x32, 0xB2, 0xCE, 0x0B, 0x12, 0x5D, 0xEF, 0xCA, 0xBC, 0x50, 0x52, 0xD4, + 0x4D, 0xB7, 0xDA, 0xB4, 0x4D, 0x6B, 0xDF, 0xBA, 0x3B, 0x3F, 0x9E, 0x8F, 0x32, 0x65, 0x5C, 0x84, + 0xE5, 0xB6, 0x35, 0x8A, 0xBA, 0xAE, 0xD3, 0x5A, 0x1A, 0xA3, 0x8C, 0x56, 0x24, 0x44, 0x4A, 0x62, + 0x51, 0x08, 0x08, 0xEC, 0x43, 0xD4, 0x12, 0x0F, 0xA6, 0x55, 0xDB, 0xF5, 0xCE, 0xD9, 0x83, 0xD9, + 0x68, 0x54, 0x1A, 0x2E, 0xA4, 0xED, 0xAD, 0x14, 0xEC, 0x6C, 0xAF, 0xA4, 0x3C, 0x3A, 0x2C, 0x9A, + 0x6D, 0xF3, 0xF0, 0xC1, 0xC9, 0x64, 0x3A, 0xAE, 0x9B, 0x6E, 0xB1, 0xDA, 0x3C, 0xF9, 0xF6, 0xB5, + 0x32, 0xD9, 0xFB, 0xEF, 0xBD, 0xBD, 0x5C, 0xAD, 0xA2, 0xF7, 0x1C, 0xE3, 0xC5, 0xF9, 0xE5, 0xB6, + 0x69, 0x7A, 0x6B, 0x11, 0xE9, 0xF1, 0x93, 0xE7, 0x1F, 0x7F, 0xF8, 0xAE, 0x94, 0xB2, 0x2A, 0x8B, + 0xE3, 0x3B, 0x47, 0x52, 0xC9, 0x2F, 0xBF, 0xF8, 0xCD, 0x7C, 0x36, 0xFE, 0xDE, 0x47, 0xEF, 0x97, + 0x85, 0xD2, 0x5A, 0xD5, 0x4D, 0x2B, 0x3B, 0xAB, 0x09, 0x99, 0xA3, 0x96, 0xC2, 0xE8, 0x04, 0x6F, + 0x06, 0xA3, 0x24, 0x49, 0x4A, 0xC4, 0x46, 0x41, 0x74, 0x76, 0x7E, 0x19, 0x63, 0xFC, 0xFE, 0xC7, + 0xEF, 0xFE, 0xFA, 0xF3, 0x6F, 0x8E, 0x0E, 0x0F, 0x66, 0xD3, 0xC9, 0x6A, 0xB5, 0xDE, 0x71, 0xC8, + 0x28, 0x06, 0x4E, 0x20, 0x32, 0x66, 0x1E, 0xFC, 0xE8, 0xAC, 0xB5, 0xD6, 0x19, 0xAD, 0x9D, 0x0F, + 0x0A, 0xE5, 0x6E, 0x4E, 0x02, 0x30, 0x48, 0xC4, 0x30, 0x00, 0x38, 0x6B, 0x67, 0x93, 0xAA, 0xED, + 0x6C, 0xDB, 0x76, 0x42, 0x08, 0x49, 0x14, 0x39, 0x48, 0x29, 0x23, 0x73, 0xD3, 0xF6, 0x99, 0xD1, + 0x4A, 0xC9, 0xB6, 0x69, 0x17, 0xCB, 0xA5, 0x24, 0x4A, 0x16, 0x73, 0x2A, 0x50, 0xD3, 0xF6, 0xD6, + 0x3A, 0x00, 0xEE, 0x7B, 0x2B, 0x10, 0x94, 0x94, 0xEB, 0x75, 0xDD, 0xD9, 0x9E, 0x04, 0x31, 0x47, + 0x66, 0x04, 0xC0, 0x08, 0x91, 0x93, 0xD2, 0x1D, 0x43, 0x8C, 0x20, 0x76, 0xC8, 0xB1, 0x37, 0xD0, + 0xE9, 0x01, 0xA9, 0x03, 0x6D, 0xDB, 0x5B, 0xE7, 0xB3, 0xCC, 0x24, 0x1A, 0x89, 0xF3, 0x31, 0xAF, + 0x4C, 0xE4, 0xB8, 0x6D, 0xBA, 0xC9, 0xA8, 0x90, 0x24, 0x2C, 0x40, 0x8C, 0x51, 0x08, 0x42, 0x14, + 0xCE, 0x05, 0xA2, 0x61, 0xAD, 0x6A, 0x2D, 0xB5, 0x92, 0x8B, 0x75, 0xD3, 0x75, 0x7D, 0x9E, 0x9B, + 0x10, 0x83, 0xB5, 0xDE, 0xF9, 0x90, 0x90, 0x6A, 0x4D, 0xDB, 0x07, 0x1F, 0x4C, 0x96, 0x39, 0xE7, + 0x8C, 0x56, 0xFB, 0x95, 0xEF, 0x9C, 0x27, 0x49, 0x52, 0xCA, 0x10, 0x62, 0xCA, 0xF3, 0x10, 0xD1, + 0xA6, 0x8E, 0x21, 0x0F, 0xB6, 0xAD, 0x9D, 0xF5, 0x9B, 0xBA, 0x4D, 0x38, 0x6D, 0xE7, 0x93, 0xA0, + 0x51, 0x8D, 0x28, 0x94, 0x94, 0x00, 0x50, 0xE6, 0x06, 0x52, 0x11, 0x93, 0x9B, 0xB6, 0xEB, 0x95, + 0xA4, 0xD9, 0x64, 0x5C, 0xE4, 0xA6, 0x2C, 0xB2, 0xF9, 0x74, 0x94, 0x52, 0x94, 0x10, 0x62, 0xEF, + 0x5D, 0x32, 0x0C, 0xB7, 0x2E, 0xF8, 0x10, 0x9C, 0xF3, 0x6D, 0xD7, 0x3B, 0xE7, 0xF3, 0xCC, 0x08, + 0x04, 0xEF, 0x7C, 0xC2, 0x7C, 0xAC, 0xD7, 0x5B, 0x1F, 0x62, 0xDF, 0xF7, 0x26, 0x33, 0x79, 0x66, + 0x24, 0x51, 0x64, 0xD8, 0x36, 0x0D, 0x23, 0x77, 0x9D, 0x05, 0x80, 0xA2, 0xC8, 0xAF, 0x6F, 0x96, + 0x00, 0x7C, 0xEF, 0xE4, 0x28, 0xC6, 0x20, 0xA5, 0xEC, 0xBA, 0x8D, 0x0F, 0xB1, 0xAA, 0xCA, 0x5F, + 0x7F, 0xF9, 0xFC, 0xFD, 0x77, 0x4E, 0xEE, 0x1D, 0xCD, 0xE2, 0x0E, 0x4B, 0xDF, 0xF7, 0xD6, 0x79, + 0x9F, 0xDE, 0xE7, 0xD3, 0x6F, 0x4F, 0xFF, 0xE7, 0xFF, 0xE5, 0x7F, 0x3D, 0x38, 0x98, 0x7E, 0xFC, + 0xFE, 0xDB, 0x79, 0xA6, 0xFF, 0xFD, 0x2F, 0x7E, 0xF3, 0xF3, 0x3F, 0xF8, 0xE4, 0x0F, 0x7F, 0xFE, + 0x43, 0x20, 0x8C, 0x21, 0xF8, 0xC0, 0xB8, 0x43, 0x89, 0xD1, 0x9F, 0xFC, 0xE9, 0xBF, 0x4E, 0x00, + 0x3F, 0x22, 0xD4, 0x5A, 0xE6, 0x46, 0x33, 0x73, 0x62, 0x38, 0x67, 0x46, 0x25, 0xA5, 0x07, 0xAD, + 0x08, 0x60, 0x40, 0x39, 0xEF, 0x0C, 0xEE, 0xF1, 0x1F, 0x48, 0xC7, 0xFE, 0x81, 0xB8, 0xF6, 0x5B, + 0xD5, 0x25, 0x0E, 0x13, 0xD7, 0xFD, 0x23, 0x32, 0x43, 0x5A, 0x47, 0x42, 0x88, 0xC0, 0x91, 0x23, + 0x0B, 0xC4, 0x14, 0xE9, 0xF7, 0x20, 0xAF, 0xFD, 0x11, 0xB9, 0xB7, 0x57, 0xB9, 0xDD, 0x74, 0xDB, + 0xE7, 0x9C, 0x29, 0xA8, 0xA5, 0x77, 0x59, 0x64, 0x3A, 0x4B, 0x98, 0xAF, 0x5D, 0x15, 0x20, 0x10, + 0x95, 0x22, 0x25, 0xA9, 0x2A, 0xF3, 0x3C, 0xCF, 0x08, 0x13, 0x2C, 0x36, 0x9D, 0x09, 0x11, 0x05, + 0xA7, 0x5A, 0xF5, 0xF2, 0xF5, 0x59, 0x61, 0x54, 0x88, 0xA0, 0x94, 0xA8, 0x3B, 0xE7, 0x7D, 0x28, + 0x8C, 0x12, 0x00, 0x92, 0x84, 0xB5, 0xE1, 0x7A, 0xD9, 0x20, 0x82, 0x20, 0xD4, 0x5A, 0xED, 0x84, + 0x24, 0x87, 0xBE, 0x5B, 0x42, 0xD6, 0x84, 0xC8, 0x4A, 0xC9, 0xBB, 0x77, 0x0E, 0xC6, 0xA3, 0xF2, + 0xEE, 0x9D, 0x03, 0xAD, 0x65, 0x9A, 0xFE, 0xE4, 0x99, 0x39, 0x3E, 0x98, 0xDE, 0xBF, 0x7B, 0x14, + 0x42, 0x38, 0x3E, 0x9C, 0x3F, 0x7C, 0xEB, 0x4E, 0x66, 0x94, 0x56, 0xF2, 0x60, 0x3A, 0x7E, 0xFB, + 0xC1, 0xC9, 0x74, 0x54, 0x68, 0x25, 0xAD, 0xF3, 0x6D, 0xE7, 0x24, 0xC1, 0x7F, 0xFF, 0xCF, 0x7E, + 0x3A, 0x9B, 0x1F, 0x90, 0xD2, 0x9E, 0x31, 0x37, 0xAA, 0xEB, 0xDA, 0x22, 0xD3, 0x99, 0xD6, 0x00, + 0x3C, 0x9F, 0x8D, 0xB3, 0xDC, 0x30, 0xC7, 0x10, 0x7C, 0x32, 0xC9, 0xF2, 0xDE, 0x73, 0x88, 0xA3, + 0xB2, 0x28, 0x8A, 0x2C, 0x33, 0x7A, 0x5C, 0x16, 0xA3, 0x51, 0x51, 0x55, 0x65, 0x35, 0x2A, 0x95, + 0xA4, 0xA6, 0x6E, 0xA5, 0x92, 0x46, 0xEB, 0xF1, 0xB8, 0x1C, 0x4F, 0xC6, 0xD6, 0xDA, 0xEB, 0xAB, + 0x05, 0x91, 0xB4, 0x2E, 0xE4, 0x79, 0x71, 0x78, 0x38, 0x3D, 0x3E, 0x9C, 0x8D, 0xC7, 0x63, 0x1F, + 0x42, 0xDD, 0x34, 0x8C, 0x80, 0x20, 0x46, 0xA3, 0xF2, 0xC5, 0x8B, 0x57, 0x00, 0x58, 0x56, 0xE5, + 0x62, 0xB9, 0xFE, 0xE6, 0xF1, 0xD3, 0xE7, 0x2F, 0x5E, 0xE5, 0x5A, 0xA1, 0xA0, 0xF1, 0x74, 0x7A, + 0x7E, 0x79, 0x3D, 0x9B, 0x8E, 0x00, 0x61, 0xBB, 0x6D, 0x26, 0x55, 0x01, 0x00, 0x75, 0xDB, 0xC7, + 0xC8, 0x92, 0x84, 0x56, 0x54, 0x37, 0x4D, 0xD7, 0xBB, 0xB2, 0xC8, 0x90, 0xE3, 0xE5, 0xE5, 0x4D, + 0xEF, 0xC2, 0x64, 0x32, 0xCA, 0xB2, 0xEC, 0xF4, 0xF4, 0x3C, 0x95, 0x24, 0xAB, 0xD5, 0xDA, 0xF9, + 0xA0, 0xB5, 0x02, 0xC6, 0xDE, 0x39, 0xB9, 0x23, 0xD5, 0xEB, 0x81, 0x99, 0x14, 0x84, 0x10, 0x29, + 0x21, 0x27, 0xA2, 0xE4, 0x9F, 0xC8, 0x10, 0x13, 0x8D, 0x24, 0xA1, 0x2B, 0x01, 0xC0, 0x87, 0x38, + 0x74, 0x3C, 0x43, 0x60, 0x8E, 0x82, 0x84, 0xF3, 0x5E, 0x25, 0xA2, 0x2B, 0x09, 0xAD, 0x65, 0x1A, + 0x0A, 0x27, 0x88, 0x8F, 0xD6, 0x9A, 0x99, 0x77, 0x13, 0x3D, 0x12, 0x02, 0x49, 0x50, 0x08, 0xC1, + 0xF9, 0xF0, 0xFE, 0x7B, 0x0F, 0xF3, 0xDC, 0x84, 0xC0, 0x8C, 0x03, 0xB9, 0x05, 0x6E, 0xA3, 0x23, + 0x77, 0xE8, 0x80, 0x1D, 0x42, 0x7D, 0x58, 0x84, 0x4A, 0xAB, 0x17, 0xAF, 0xCE, 0x9F, 0x3E, 0x7F, + 0xAD, 0xA4, 0x4C, 0xA3, 0x74, 0x14, 0x98, 0x44, 0xBE, 0xF2, 0xCC, 0x8C, 0xAA, 0x1C, 0x00, 0x9A, + 0xB6, 0xCF, 0xB4, 0x06, 0xE6, 0xCE, 0xBA, 0x44, 0x1A, 0x4D, 0x23, 0x54, 0x49, 0x82, 0x23, 0x77, + 0xD6, 0x4B, 0x29, 0xDB, 0xAE, 0x57, 0x4A, 0x06, 0xEF, 0x93, 0xAD, 0x6A, 0xDF, 0xBB, 0x10, 0xA2, + 0x20, 0x91, 0x69, 0xD5, 0x59, 0x27, 0x89, 0x98, 0x41, 0x29, 0x99, 0x3A, 0x65, 0x69, 0xA4, 0xC4, + 0x0C, 0x31, 0x06, 0x45, 0xB4, 0x27, 0x6F, 0x01, 0x8A, 0xDE, 0xFA, 0xBE, 0x77, 0xD6, 0x39, 0x6B, + 0xBD, 0xF7, 0xC1, 0x39, 0xD7, 0xF7, 0x5E, 0x90, 0x00, 0x44, 0x49, 0x94, 0x65, 0x66, 0xBD, 0x69, + 0x98, 0xD9, 0x68, 0x6D, 0x7D, 0xE0, 0x18, 0x7D, 0xE0, 0x18, 0x79, 0x3C, 0x2A, 0x46, 0x45, 0x5E, + 0x95, 0xF9, 0x64, 0x5C, 0x66, 0x99, 0x4E, 0xB5, 0x9E, 0xED, 0x5D, 0xD7, 0x3B, 0x48, 0x0D, 0x65, + 0x06, 0xEB, 0x9C, 0x73, 0xBE, 0xC8, 0xB3, 0x3C, 0x33, 0x90, 0x9A, 0x74, 0x4A, 0x12, 0x11, 0x49, + 0x6A, 0xDA, 0xAE, 0xEF, 0x5C, 0xD3, 0x76, 0x1C, 0xA3, 0x40, 0xE1, 0x53, 0x03, 0x9D, 0xA8, 0x6E, + 0xDB, 0xCC, 0x98, 0x6D, 0xDD, 0x9C, 0x5F, 0xDE, 0x48, 0xA9, 0xFB, 0xBE, 0xDF, 0xD6, 0x9D, 0x77, + 0x4E, 0x2B, 0xBD, 0x5A, 0x6F, 0xAE, 0xAE, 0x97, 0x17, 0x57, 0x8B, 0x9B, 0x55, 0xB3, 0x69, 0xBA, + 0xE4, 0x56, 0xF7, 0xFA, 0xE2, 0xFA, 0x2F, 0xFF, 0xEA, 0x57, 0xDB, 0xBA, 0xF5, 0x81, 0xAF, 0x97, + 0xDB, 0xC5, 0xAA, 0x3E, 0x38, 0x98, 0x47, 0xC6, 0xD3, 0xB3, 0x9B, 0x5F, 0x7D, 0xF6, 0x78, 0xB9, + 0xDA, 0x5E, 0x5C, 0xAD, 0xDF, 0x7B, 0xFB, 0xE4, 0x66, 0xB9, 0x96, 0x24, 0x26, 0x55, 0x19, 0x99, + 0x3D, 0x47, 0x22, 0x41, 0x7F, 0xFC, 0xA7, 0x7F, 0x86, 0x00, 0x52, 0xCA, 0xA4, 0xB8, 0x9F, 0x6A, + 0x31, 0x49, 0x64, 0xB4, 0x24, 0x21, 0x00, 0x38, 0xB1, 0x4F, 0x13, 0x58, 0x39, 0x71, 0x62, 0x6E, + 0x4B, 0xF2, 0xFF, 0x67, 0x03, 0xD9, 0xAD, 0x39, 0x20, 0xEC, 0xF3, 0xB2, 0xDB, 0x41, 0xF0, 0xCD, + 0xF4, 0x21, 0xD9, 0x4A, 0x03, 0xA7, 0xE4, 0xCB, 0xBB, 0x84, 0xC5, 0x07, 0x44, 0x00, 0x01, 0x9A, + 0xA4, 0x92, 0x94, 0xDA, 0x64, 0x0C, 0x1C, 0x23, 0xE0, 0xA0, 0x0C, 0x05, 0x44, 0x42, 0x11, 0x49, + 0x1A, 0x00, 0x21, 0x5A, 0xCA, 0xFD, 0xE7, 0x4D, 0x24, 0x8C, 0x51, 0xA3, 0x2A, 0xCF, 0x73, 0x23, + 0x89, 0x52, 0x6B, 0x8C, 0x23, 0x6B, 0x29, 0xA7, 0x93, 0x32, 0xCB, 0x74, 0x91, 0x9B, 0x2C, 0x33, + 0x3B, 0x52, 0x2B, 0x00, 0x42, 0x8C, 0x01, 0x11, 0x49, 0x28, 0x81, 0x22, 0xC6, 0x78, 0xFA, 0xE2, + 0x65, 0xF4, 0x7E, 0xDB, 0xF6, 0xD3, 0x51, 0x81, 0x28, 0xDA, 0xDE, 0x5B, 0xEB, 0x8C, 0xA6, 0x18, + 0xD9, 0xF9, 0x78, 0xB5, 0xD8, 0x7A, 0x1F, 0xF2, 0x22, 0x43, 0x44, 0x29, 0x25, 0x49, 0x0A, 0x3E, + 0xF4, 0x2E, 0x24, 0x09, 0xF3, 0xDE, 0xF9, 0x18, 0xC1, 0x68, 0xF5, 0xD1, 0x07, 0x0F, 0x47, 0xA3, + 0x42, 0x1B, 0x75, 0x78, 0x30, 0x9B, 0x8E, 0x47, 0x00, 0xEC, 0x9C, 0x7F, 0xEF, 0x9D, 0xFB, 0xEF, + 0x3E, 0xBA, 0x3F, 0x9F, 0x4F, 0x94, 0xA4, 0x51, 0x95, 0x8F, 0x47, 0x95, 0x92, 0x34, 0x9B, 0x8D, + 0x8E, 0x8F, 0x66, 0x93, 0x71, 0x35, 0x1E, 0x95, 0x82, 0x68, 0xB5, 0x5C, 0x7E, 0xF2, 0xC1, 0xC3, + 0x77, 0x1E, 0x3D, 0x6C, 0x7B, 0x7F, 0xBD, 0x58, 0x87, 0x18, 0x36, 0xCB, 0xA5, 0x51, 0xE2, 0xBD, + 0x77, 0x1F, 0xC6, 0x18, 0xE6, 0xF3, 0x71, 0x51, 0x64, 0xE9, 0x06, 0xD6, 0x75, 0xE3, 0x5D, 0x48, + 0x10, 0xDC, 0x22, 0xCF, 0xB5, 0x51, 0x92, 0xC4, 0xE1, 0x7C, 0x22, 0x95, 0x94, 0x34, 0x38, 0xDD, + 0xC2, 0xCE, 0xD1, 0x63, 0x5B, 0xB7, 0x99, 0xC9, 0x7C, 0x8C, 0x97, 0x57, 0x8B, 0xDE, 0x06, 0x14, + 0x74, 0x79, 0xBD, 0xAC, 0x9B, 0x86, 0x63, 0x80, 0x18, 0xCB, 0xAA, 0x38, 0x3A, 0x3A, 0xEC, 0xAD, + 0x1B, 0x55, 0xE5, 0x7C, 0x32, 0x3A, 0x39, 0x9E, 0xDF, 0x3B, 0xB9, 0x73, 0xBD, 0xDC, 0xCC, 0xA6, + 0x93, 0xD9, 0xA4, 0x3A, 0xBF, 0xB8, 0x5E, 0x2C, 0x96, 0x5D, 0xDF, 0x37, 0x4D, 0xFF, 0xE0, 0xAD, + 0x13, 0x29, 0xD5, 0x93, 0x67, 0xAF, 0x8E, 0x8F, 0xE6, 0xC7, 0x07, 0x93, 0xD4, 0x0C, 0x8A, 0x1C, + 0x8D, 0x56, 0x49, 0x6D, 0xBD, 0xE9, 0x12, 0x68, 0xDF, 0x33, 0x63, 0xDD, 0xF6, 0x9B, 0xBA, 0x93, + 0x52, 0x7D, 0xFE, 0xC5, 0xD7, 0x07, 0xF3, 0xA9, 0x20, 0xBA, 0xBA, 0x5E, 0xB4, 0x6D, 0xE7, 0x9D, + 0x4F, 0x53, 0x23, 0xA9, 0x54, 0x92, 0x7E, 0xE3, 0x18, 0x97, 0xAB, 0xB5, 0xD1, 0x1A, 0x80, 0xAB, + 0x51, 0xD5, 0x75, 0xB6, 0xAE, 0x1B, 0x22, 0x2A, 0x8A, 0x2C, 0x35, 0x19, 0x12, 0x9A, 0x3A, 0xE1, + 0x68, 0xCA, 0xAA, 0x48, 0xB6, 0xF0, 0x42, 0xE0, 0xC0, 0xAB, 0x15, 0x22, 0x86, 0x68, 0xB4, 0x26, + 0x12, 0x21, 0x04, 0xEB, 0x9C, 0x56, 0x2A, 0xCF, 0xB3, 0xC8, 0x51, 0x24, 0xE0, 0xA5, 0x40, 0xE6, + 0xA4, 0x94, 0x4D, 0x4A, 0x52, 0x08, 0x21, 0x44, 0x0E, 0x31, 0x56, 0x65, 0x71, 0xF7, 0xEE, 0x51, + 0x52, 0xF4, 0x85, 0xDD, 0x38, 0x6C, 0xC7, 0xEC, 0xFD, 0x7B, 0xD6, 0x79, 0x5A, 0xBF, 0x5A, 0xC9, + 0x27, 0xCF, 0x4F, 0x9F, 0xBF, 0x3C, 0x4F, 0x23, 0xDA, 0x54, 0x20, 0x24, 0xBC, 0xAB, 0x91, 0x32, + 0x6D, 0x78, 0xE7, 0x7C, 0x6A, 0x80, 0x26, 0x65, 0x94, 0x04, 0xFA, 0x09, 0x21, 0xD9, 0x3B, 0xB5, + 0xD6, 0x05, 0x21, 0x70, 0x5B, 0x37, 0x00, 0x90, 0x7A, 0x40, 0x8A, 0x28, 0xC4, 0x38, 0xB4, 0x3E, + 0x00, 0x08, 0x51, 0x2A, 0x29, 0x50, 0x78, 0x17, 0xB2, 0x4C, 0x6B, 0xAD, 0x92, 0x3D, 0xAD, 0x56, + 0xC4, 0x0C, 0x31, 0xC6, 0x34, 0xE4, 0x4D, 0x8C, 0xC5, 0x54, 0xC0, 0x3A, 0xEB, 0x62, 0x1C, 0x88, + 0x0A, 0xA9, 0x90, 0x4C, 0x33, 0x2E, 0x63, 0xB4, 0x40, 0xF4, 0x3E, 0xA4, 0x89, 0x6C, 0xDB, 0x59, + 0x8E, 0x9C, 0x67, 0x26, 0x35, 0x8E, 0x94, 0x94, 0x69, 0xA6, 0x07, 0x80, 0x4D, 0x6B, 0xD3, 0x55, + 0x3A, 0xE7, 0x99, 0x07, 0x32, 0x69, 0xC2, 0x6F, 0x7B, 0x1F, 0xDA, 0xB6, 0xEB, 0xAD, 0x5F, 0xAC, + 0x36, 0x28, 0x84, 0xB5, 0x0E, 0x11, 0x23, 0x40, 0x8C, 0xAC, 0xB5, 0x0E, 0x21, 0x6A, 0x2D, 0x19, + 0xB8, 0x6B, 0x6D, 0x88, 0xF1, 0x66, 0xB9, 0xDE, 0x6E, 0x1B, 0x41, 0xA2, 0x2C, 0xF2, 0x10, 0xC2, + 0x76, 0x5B, 0x73, 0x8C, 0xD6, 0x79, 0x41, 0xD4, 0x5B, 0xB7, 0xD9, 0xD6, 0xF3, 0xE9, 0x78, 0xB9, + 0xA9, 0x57, 0x9B, 0x66, 0xB1, 0xDA, 0x2E, 0xD6, 0xCD, 0xE1, 0xC1, 0xFC, 0xE2, 0x6A, 0xE5, 0x02, + 0x23, 0x89, 0xF1, 0xA8, 0x7A, 0x70, 0xEF, 0xF8, 0xCE, 0xD1, 0x0C, 0x11, 0xA6, 0xE3, 0x32, 0x29, + 0x6D, 0x7C, 0xF9, 0xE4, 0xF4, 0xCF, 0xFF, 0xE2, 0x97, 0xCB, 0x75, 0x9D, 0x17, 0xC6, 0x3A, 0x77, + 0x30, 0x1D, 0xB7, 0x6D, 0x27, 0x43, 0x8C, 0x09, 0x1C, 0xCF, 0xCC, 0x7D, 0x62, 0xED, 0x66, 0xC6, + 0x68, 0x95, 0x8C, 0xCC, 0xD5, 0x8E, 0xA4, 0x9E, 0x48, 0xE0, 0xB7, 0x13, 0x9F, 0x7F, 0x38, 0x7E, + 0xDD, 0x8E, 0x50, 0xFB, 0x69, 0xE3, 0x00, 0xDE, 0xBD, 0x05, 0xA3, 0x7D, 0x93, 0x89, 0xC5, 0xB8, + 0x77, 0x33, 0x82, 0x37, 0xF3, 0x81, 0x9D, 0x3C, 0x19, 0x83, 0xD6, 0x32, 0x33, 0xAA, 0xB7, 0x3E, + 0x86, 0x18, 0x59, 0xF6, 0xD6, 0x25, 0x60, 0xF4, 0x70, 0x2C, 0x48, 0x82, 0x37, 0xBC, 0x4B, 0x40, + 0x40, 0xE7, 0x7D, 0xA6, 0xA5, 0x54, 0x52, 0x2B, 0x99, 0x25, 0x6C, 0x74, 0x8C, 0x3A, 0xBD, 0x62, + 0xA6, 0x8A, 0x3C, 0x4F, 0xA6, 0x15, 0xC3, 0xC0, 0x01, 0x61, 0x30, 0x94, 0x0B, 0x20, 0x08, 0x05, + 0x12, 0x00, 0x24, 0x9D, 0x99, 0xDE, 0xBA, 0x10, 0xA2, 0x73, 0x1E, 0x01, 0x26, 0x55, 0xD6, 0x34, + 0x1D, 0x11, 0x35, 0x5D, 0xBF, 0x5A, 0xB7, 0x2C, 0xA8, 0x28, 0x4C, 0x7A, 0xD3, 0x34, 0x18, 0x84, + 0x51, 0x08, 0x2C, 0x10, 0x02, 0x73, 0xDF, 0x5B, 0x00, 0x48, 0x98, 0x26, 0x93, 0xE9, 0xE3, 0xA3, + 0x83, 0x64, 0x26, 0x12, 0x39, 0xBE, 0x75, 0xFF, 0x24, 0xC4, 0x78, 0x7E, 0x75, 0x03, 0x02, 0xEF, + 0x1C, 0x1F, 0xF4, 0x5A, 0x93, 0x24, 0x63, 0x34, 0x00, 0x74, 0x5D, 0xCF, 0x31, 0x66, 0x99, 0x31, + 0x46, 0x5B, 0x6B, 0xD5, 0x0F, 0x3E, 0x38, 0x3A, 0x3A, 0x5C, 0xAC, 0xEB, 0xB4, 0x86, 0x32, 0x4D, + 0xA3, 0x32, 0xBF, 0x77, 0xEF, 0xA8, 0xAA, 0x32, 0x49, 0x30, 0x1A, 0x8F, 0x9C, 0x75, 0xC0, 0x1C, + 0x85, 0x68, 0x9B, 0x4E, 0x49, 0xA9, 0xB4, 0x4A, 0x6D, 0x60, 0xA5, 0xA8, 0xC8, 0x0D, 0x00, 0x26, + 0x6D, 0xDE, 0x10, 0x18, 0x01, 0xBD, 0x0B, 0xDE, 0x87, 0xEB, 0x9B, 0x95, 0x8F, 0xBC, 0xDC, 0xD4, + 0x5D, 0x67, 0x9F, 0x3E, 0x7B, 0x51, 0x94, 0x85, 0xD6, 0xA6, 0xDE, 0x36, 0x75, 0x5D, 0x5B, 0xEB, + 0x1E, 0x3E, 0x7C, 0x6B, 0xB3, 0xD9, 0xBC, 0xFD, 0xF6, 0x5D, 0xA3, 0xD5, 0xCD, 0xCD, 0xE2, 0xE1, + 0xFD, 0xE3, 0x7A, 0x5B, 0xFF, 0xE2, 0xD3, 0xAF, 0x46, 0x65, 0xB9, 0xDD, 0x36, 0xDF, 0x3C, 0x7E, + 0xF6, 0xE4, 0xC9, 0xB7, 0x55, 0x55, 0x3D, 0x78, 0x70, 0x5F, 0x1B, 0xFD, 0xFF, 0xFE, 0x7F, 0xFF, + 0xFE, 0x0F, 0xFF, 0xEB, 0xFF, 0xE2, 0x67, 0xBF, 0xFF, 0x83, 0xAE, 0x6D, 0x38, 0xC4, 0x2C, 0x33, + 0xCC, 0x80, 0x01, 0x22, 0xB3, 0x44, 0xE8, 0x5D, 0x10, 0x42, 0x68, 0x2D, 0xB5, 0x24, 0xEB, 0x5C, + 0x96, 0x67, 0xC6, 0x74, 0xBD, 0xB5, 0xF7, 0xEE, 0xDD, 0x19, 0x8F, 0xAA, 0xDE, 0x05, 0xEF, 0xC3, + 0x66, 0xBD, 0x76, 0x56, 0x78, 0x1F, 0xAA, 0x4A, 0x96, 0x65, 0x79, 0x7D, 0xB3, 0x42, 0xC4, 0x44, + 0x26, 0x41, 0x84, 0xA2, 0x28, 0x9A, 0xA6, 0x49, 0xB8, 0xD3, 0xB6, 0xED, 0x78, 0x20, 0xCD, 0x40, + 0xD2, 0xCF, 0x8B, 0x21, 0x2A, 0x2D, 0x9D, 0xF3, 0xC1, 0x87, 0xA4, 0x32, 0x92, 0xD2, 0xB7, 0x10, + 0x5C, 0x0C, 0xD1, 0x3A, 0x67, 0x8C, 0x4E, 0x5A, 0xE1, 0x46, 0xA9, 0xC9, 0x74, 0x1C, 0x23, 0x34, + 0x6D, 0x33, 0x2C, 0x40, 0x40, 0xE7, 0x3C, 0x00, 0x8C, 0xAA, 0xBC, 0xEF, 0x9D, 0x94, 0x84, 0x28, + 0xBF, 0xFA, 0xE6, 0xD9, 0xC7, 0x1F, 0xBE, 0x23, 0xE5, 0x50, 0x73, 0x24, 0x46, 0x9F, 0x18, 0x8A, + 0xB7, 0xDD, 0x68, 0x09, 0xF6, 0xD2, 0x78, 0xA9, 0x9B, 0x81, 0x91, 0xD9, 0x39, 0xC7, 0x1C, 0x9D, + 0xB5, 0x48, 0xC4, 0x83, 0x2A, 0x3A, 0x64, 0x03, 0x09, 0x29, 0x26, 0x41, 0x04, 0xE7, 0x93, 0xDE, + 0x1A, 0x58, 0xE7, 0xC1, 0x71, 0x92, 0xB7, 0x65, 0x06, 0xEB, 0xA3, 0xF7, 0xDE, 0x39, 0x6F, 0xB4, + 0x76, 0xCE, 0x15, 0x79, 0x9E, 0x2C, 0xAE, 0x97, 0xEB, 0xDA, 0x05, 0x0F, 0xC0, 0xE3, 0x32, 0x93, + 0x92, 0x7C, 0x04, 0x96, 0x28, 0x63, 0xC2, 0xB5, 0x7A, 0x44, 0x4A, 0xEF, 0x42, 0x6B, 0x05, 0x21, + 0x22, 0x42, 0xE0, 0x88, 0x3E, 0x18, 0xAD, 0x52, 0x26, 0x18, 0x42, 0x6C, 0xBB, 0x9E, 0x84, 0x00, + 0x01, 0x99, 0xD6, 0x31, 0x32, 0x82, 0x2F, 0x8B, 0xA2, 0x2A, 0x72, 0x25, 0x09, 0x80, 0x8B, 0x3C, + 0x23, 0x21, 0x8C, 0x92, 0x22, 0x41, 0xDB, 0xC4, 0xA0, 0x0F, 0xE8, 0x43, 0x90, 0x92, 0x36, 0xDB, + 0xA6, 0x6D, 0xFB, 0x14, 0xF5, 0x12, 0x8A, 0xB3, 0xC8, 0x0D, 0x22, 0xEC, 0x8D, 0x5D, 0xAC, 0xF5, + 0xD7, 0xCB, 0x55, 0x2A, 0x41, 0x94, 0xA2, 0x74, 0x6C, 0x33, 0x6B, 0x44, 0x28, 0x8B, 0x2C, 0xCB, + 0x94, 0x73, 0x41, 0x48, 0x72, 0xDE, 0xF7, 0xBD, 0x75, 0x2E, 0x98, 0x4C, 0xAD, 0x37, 0x5B, 0xEF, + 0x7D, 0xDF, 0xDB, 0x6D, 0xDD, 0x56, 0x65, 0x2E, 0x04, 0xCE, 0xA6, 0xE3, 0xEF, 0x7D, 0xF4, 0x6E, + 0x66, 0xB4, 0xF7, 0xBE, 0x2A, 0xF3, 0xAE, 0x77, 0x4A, 0x4B, 0x60, 0x38, 0x3C, 0x9C, 0xBF, 0xBE, + 0xB8, 0x5E, 0x6E, 0xEA, 0x10, 0xC2, 0x6C, 0x3A, 0xAE, 0xCA, 0xEC, 0x7B, 0x1F, 0x3E, 0x4A, 0xD3, + 0xB6, 0x8B, 0xEB, 0xF5, 0xFF, 0xF1, 0x7F, 0xFF, 0xF5, 0xC5, 0xC5, 0xD5, 0xE7, 0x4A, 0x3E, 0x7D, + 0x79, 0xF1, 0xDF, 0xFC, 0xE3, 0xEF, 0x1F, 0xCE, 0x67, 0xBF, 0xF8, 0xEC, 0x29, 0xFD, 0xD1, 0x9F, + 0xFC, 0x2B, 0x81, 0x18, 0x19, 0x12, 0x66, 0x0B, 0x11, 0xF3, 0x2C, 0x89, 0xDF, 0x0D, 0x32, 0x8C, + 0xFB, 0x04, 0x6A, 0x1F, 0x92, 0xFE, 0xB3, 0x45, 0xE5, 0x6F, 0xFD, 0x68, 0x08, 0x64, 0x31, 0xD1, + 0xA9, 0x7E, 0x27, 0x8A, 0xC5, 0xC8, 0xCC, 0xC1, 0x87, 0xE4, 0x56, 0xED, 0x7C, 0x68, 0x3B, 0xEB, + 0x7D, 0x90, 0x8A, 0x54, 0x9A, 0x4C, 0x23, 0x26, 0xD8, 0x8B, 0x36, 0x8A, 0x08, 0x93, 0x50, 0x60, + 0x9E, 0x69, 0xA3, 0x95, 0x24, 0xAA, 0x8A, 0xBC, 0x28, 0x92, 0xEE, 0xC6, 0xE0, 0x34, 0x98, 0xCA, + 0x43, 0x29, 0xA5, 0xD6, 0x4A, 0x2B, 0xA5, 0x94, 0x42, 0x21, 0x10, 0x06, 0xA8, 0x3E, 0x91, 0xC8, + 0xB4, 0x49, 0xA9, 0xE5, 0xAD, 0x77, 0x18, 0xF7, 0x17, 0x4B, 0x24, 0x01, 0x13, 0xC5, 0x0F, 0xDA, + 0xAE, 0xFB, 0xE5, 0xAF, 0xBE, 0x1C, 0x15, 0x59, 0x67, 0xFD, 0xC1, 0xB4, 0x6A, 0x5A, 0xBB, 0x6D, + 0xFA, 0xD9, 0xA8, 0xF0, 0x3E, 0xA4, 0xD6, 0x3E, 0x03, 0x86, 0x08, 0xC1, 0x7B, 0x41, 0x03, 0xFF, + 0xD9, 0x87, 0xD8, 0x74, 0xD6, 0xF6, 0x3E, 0x71, 0x38, 0x88, 0xA8, 0xEB, 0xBA, 0x51, 0x99, 0xBF, + 0xF3, 0xF0, 0x1E, 0x11, 0x01, 0x60, 0x60, 0x26, 0xA2, 0xCC, 0xE8, 0xCB, 0xAB, 0x65, 0x5D, 0xB7, + 0x5A, 0x2B, 0x8E, 0xAC, 0xB4, 0xEA, 0xBA, 0xAE, 0x69, 0x1A, 0x49, 0x22, 0xCF, 0x8D, 0x52, 0xAA, + 0xEB, 0x3A, 0x29, 0x25, 0x92, 0xCC, 0x8B, 0x5C, 0x4A, 0x5A, 0x6F, 0xEA, 0x51, 0x99, 0x1F, 0xCE, + 0x27, 0x65, 0x61, 0xB2, 0xCC, 0x8C, 0x26, 0x95, 0x52, 0x8A, 0x43, 0x0C, 0xD6, 0x09, 0x49, 0x82, + 0x06, 0x51, 0x20, 0xAD, 0x95, 0x10, 0x42, 0x90, 0x90, 0x4A, 0xCA, 0x24, 0xB9, 0x81, 0x48, 0x28, + 0x9C, 0x0F, 0x67, 0xE7, 0x97, 0xA7, 0xA7, 0xE7, 0x57, 0xAB, 0x4D, 0x6F, 0xC3, 0x72, 0xB5, 0x5D, + 0xAE, 0x36, 0x67, 0x17, 0xD7, 0x88, 0x42, 0x99, 0xEC, 0xEC, 0xE2, 0x1A, 0x11, 0x95, 0xD6, 0xCE, + 0x87, 0x3B, 0x27, 0xC7, 0xBD, 0x75, 0x9B, 0xCD, 0xF6, 0xE1, 0x5B, 0x77, 0xAB, 0xAA, 0xF8, 0xF4, + 0xF3, 0x6F, 0xBE, 0x79, 0xF6, 0x6A, 0xBB, 0x6D, 0x5E, 0x3C, 0x7F, 0xF9, 0xFA, 0xFC, 0xF2, 0xFE, + 0xFD, 0xFB, 0x87, 0x87, 0x53, 0xD7, 0x77, 0x57, 0xD7, 0x8B, 0xE7, 0xCF, 0x4F, 0x3F, 0xFE, 0xF8, + 0x83, 0xC7, 0x5F, 0x3F, 0x01, 0x8E, 0x21, 0x04, 0x41, 0x24, 0x89, 0x24, 0x89, 0x3C, 0x33, 0x80, + 0x98, 0x8A, 0x8B, 0xE0, 0x03, 0x09, 0x31, 0xA9, 0xCA, 0xA4, 0xA7, 0x60, 0x5D, 0xA8, 0x9B, 0x7E, + 0x34, 0xAA, 0x26, 0xE3, 0xAA, 0x6E, 0x5A, 0x04, 0x88, 0x91, 0xAF, 0xAE, 0x17, 0x31, 0x70, 0x66, + 0x8C, 0xD6, 0xCA, 0x39, 0x9B, 0xE8, 0xF1, 0x79, 0x9E, 0xDD, 0xBF, 0x7F, 0xD2, 0xB6, 0x5D, 0x6E, + 0x8C, 0xB5, 0xCE, 0x7A, 0x5F, 0x55, 0x79, 0x0C, 0xC1, 0xFB, 0x30, 0x1E, 0x97, 0xDE, 0x7B, 0x14, + 0x98, 0x19, 0x1D, 0xE2, 0xBE, 0xC9, 0x45, 0x02, 0x31, 0x30, 0x78, 0x1F, 0x98, 0x23, 0xA2, 0x40, + 0xC0, 0xD4, 0x48, 0xCA, 0x33, 0x6D, 0xAD, 0xB3, 0xD6, 0x35, 0x4D, 0x5B, 0xD7, 0xED, 0x7C, 0x36, + 0xC9, 0x32, 0xDD, 0xF7, 0x3D, 0x33, 0x74, 0x3B, 0x31, 0xF1, 0x18, 0xE2, 0x5B, 0xF7, 0xEF, 0xAC, + 0x36, 0xDB, 0x3C, 0xCB, 0xEE, 0x9D, 0x1C, 0x0E, 0xA3, 0x31, 0x00, 0xB1, 0xF3, 0x66, 0x8E, 0xF8, + 0x86, 0x75, 0xF9, 0x9D, 0x45, 0xCE, 0x40, 0x44, 0x9F, 0xFD, 0xE6, 0xF1, 0xCD, 0x62, 0x13, 0x19, + 0xB2, 0x4C, 0x39, 0xE7, 0x7D, 0x08, 0x99, 0x56, 0xA9, 0x20, 0x08, 0x83, 0x26, 0x30, 0xA4, 0x16, + 0x35, 0xC0, 0x1B, 0xB4, 0x94, 0xF5, 0xA1, 0xEB, 0x5C, 0x3A, 0xB6, 0x95, 0xA4, 0x04, 0x70, 0x4D, + 0x8B, 0xD8, 0x87, 0xE0, 0xBD, 0xB7, 0xCE, 0xA7, 0x1E, 0x1F, 0x60, 0x82, 0x95, 0x04, 0x21, 0x84, + 0x54, 0x8A, 0x77, 0x7E, 0xC6, 0x59, 0xA6, 0x11, 0x31, 0x33, 0x3A, 0xC1, 0xCA, 0x68, 0x87, 0x57, + 0xF7, 0x3E, 0x6C, 0xB6, 0x8D, 0x31, 0x2A, 0xC4, 0x38, 0x2A, 0x8B, 0x22, 0x33, 0x5D, 0x6F, 0x8B, + 0x3C, 0x9B, 0x4F, 0xC6, 0xA9, 0x3A, 0xD1, 0x5A, 0x93, 0x10, 0x46, 0xA9, 0x94, 0x1B, 0x4A, 0xA2, + 0x04, 0x29, 0x4F, 0x00, 0x4F, 0x66, 0x58, 0xAF, 0xEB, 0x6D, 0xDD, 0xA6, 0x54, 0x77, 0x53, 0xD7, + 0xA9, 0xEC, 0x55, 0x4A, 0x7A, 0x1F, 0x96, 0xAB, 0x6D, 0xD7, 0xFF, 0xFF, 0x9C, 0xBD, 0xD9, 0x93, + 0xA4, 0xD7, 0x75, 0x27, 0x76, 0xEE, 0x7E, 0xBF, 0x2D, 0xB7, 0xCA, 0xDA, 0xBA, 0xBA, 0x1B, 0x0D, + 0x74, 0x93, 0x20, 0x20, 0x50, 0x24, 0x35, 0x1C, 0xD9, 0x9A, 0x89, 0x91, 0xE5, 0x79, 0xB3, 0x23, + 0x1C, 0xFE, 0x4B, 0xBC, 0x8D, 0xFD, 0x28, 0x51, 0xB2, 0x23, 0xEC, 0xF9, 0x4F, 0xFC, 0x38, 0x8F, + 0x76, 0x38, 0x1C, 0x13, 0x76, 0xC4, 0x48, 0x23, 0x8D, 0x48, 0x90, 0x04, 0x48, 0x6C, 0xBD, 0x77, + 0x2D, 0x5D, 0x5B, 0x56, 0x6E, 0xDF, 0x76, 0xF7, 0xEB, 0x87, 0x9B, 0x59, 0x5D, 0x00, 0xA9, 0xB1, + 0xC7, 0xF9, 0xD0, 0x40, 0xD7, 0x92, 0x5D, 0x95, 0xF9, 0x7D, 0xE7, 0x9E, 0xF3, 0x3B, 0xBF, 0xC5, + 0x20, 0x48, 0x4A, 0x29, 0x42, 0x29, 0x6D, 0x5B, 0xE5, 0x5D, 0xA0, 0x94, 0x64, 0x92, 0x55, 0x55, + 0x91, 0x98, 0x1C, 0x89, 0xF6, 0xB5, 0x5C, 0xD6, 0x11, 0x20, 0xCF, 0xE5, 0x72, 0xD9, 0x18, 0x63, + 0x11, 0x80, 0xF3, 0xDE, 0xF9, 0xD0, 0xB4, 0xFD, 0x93, 0x0F, 0x1E, 0x7E, 0xF4, 0xE1, 0x07, 0x84, + 0xE0, 0xA4, 0x71, 0x69, 0xBA, 0x3E, 0x85, 0x3B, 0x3A, 0xE7, 0x4F, 0xDE, 0x5E, 0x7F, 0xFA, 0xD9, + 0xD7, 0xAB, 0x75, 0xFB, 0xCD, 0xB3, 0xD7, 0x08, 0x21, 0xCE, 0xC5, 0xF5, 0xCD, 0xB2, 0x57, 0xF6, + 0xD9, 0x8B, 0x37, 0x8C, 0xD3, 0x1F, 0x7D, 0xF2, 0xBD, 0xC3, 0x83, 0xE9, 0xEE, 0x74, 0x74, 0xEF, + 0x60, 0x4A, 0x19, 0x7F, 0xFE, 0xFA, 0xFC, 0xC5, 0xEB, 0x73, 0xF2, 0x5F, 0xFF, 0xB7, 0xFF, 0x7D, + 0x42, 0x4D, 0x43, 0x04, 0x1F, 0x42, 0xD2, 0x40, 0x01, 0x40, 0x5A, 0xFE, 0x6C, 0x71, 0xF4, 0x77, + 0x6F, 0xDE, 0xAD, 0xB4, 0xE8, 0x77, 0x0B, 0xD6, 0xEF, 0x3E, 0x6E, 0x7B, 0xB1, 0xF4, 0x67, 0x1A, + 0xB8, 0xEE, 0x7C, 0x7A, 0x03, 0xED, 0x27, 0xE3, 0x11, 0xE7, 0xBC, 0xD6, 0xD6, 0x58, 0x8F, 0x10, + 0x24, 0x19, 0x79, 0x08, 0x9B, 0xCD, 0x66, 0x9E, 0x89, 0xDB, 0x19, 0x0A, 0xBF, 0x33, 0xBD, 0x00, + 0xCE, 0x19, 0xE3, 0x2C, 0x5D, 0xB5, 0x89, 0xE7, 0x9B, 0xBC, 0x31, 0x11, 0x42, 0x8C, 0xA4, 0x51, + 0x8F, 0xC4, 0x77, 0xFC, 0x8D, 0x08, 0x80, 0x30, 0x20, 0x4A, 0x69, 0x0A, 0x24, 0x84, 0x5B, 0x5C, + 0x2E, 0xFA, 0x0D, 0xB9, 0x8C, 0xB2, 0xCD, 0x93, 0xC5, 0x80, 0x29, 0x39, 0x3B, 0xBB, 0xF8, 0xE2, + 0xAB, 0x97, 0x52, 0x50, 0x6D, 0xEC, 0xCE, 0xB0, 0x4A, 0x66, 0x22, 0xDA, 0x18, 0x4A, 0x70, 0x3A, + 0xD9, 0x96, 0x75, 0x1F, 0x22, 0x58, 0xEF, 0x53, 0xF0, 0xA2, 0xB5, 0xCE, 0x18, 0x67, 0x36, 0xDA, + 0x00, 0xC8, 0xA4, 0xCC, 0xF3, 0x2C, 0x78, 0xBF, 0xAE, 0xDB, 0x2C, 0x13, 0x83, 0xB2, 0xC0, 0x84, + 0x78, 0xEF, 0x39, 0x63, 0x9C, 0x33, 0x8C, 0xD1, 0x6C, 0xBE, 0x4A, 0xA8, 0x56, 0xD3, 0xB4, 0xC6, + 0x18, 0xCE, 0x59, 0x55, 0x16, 0x52, 0x8A, 0x34, 0x01, 0x01, 0xC2, 0x5D, 0xDB, 0x67, 0x19, 0xEF, + 0x3A, 0x55, 0x16, 0x99, 0x94, 0x7C, 0xBA, 0x33, 0x1C, 0x8D, 0x07, 0x98, 0x60, 0x29, 0x04, 0x00, + 0x68, 0xA5, 0x62, 0x0C, 0x94, 0xF3, 0xE4, 0x80, 0x4E, 0x36, 0x33, 0x35, 0xDE, 0xC2, 0x37, 0x31, + 0xC6, 0x68, 0x8D, 0xEB, 0xB5, 0x9A, 0x2F, 0x56, 0x37, 0xF3, 0xF5, 0xBA, 0xE9, 0x8D, 0x0D, 0xC6, + 0xD8, 0xBA, 0x6E, 0x9D, 0x0F, 0x32, 0x93, 0x45, 0x91, 0x2F, 0xD7, 0x0D, 0x21, 0xF4, 0xE0, 0x60, + 0x0F, 0x30, 0x05, 0x84, 0x87, 0x55, 0x59, 0x95, 0xC5, 0x97, 0x4F, 0x5F, 0x5D, 0xCE, 0xE6, 0x87, + 0x07, 0xFB, 0x4D, 0xAB, 0x4E, 0xCE, 0x2E, 0xAB, 0x41, 0xE5, 0x43, 0x5C, 0x2C, 0x97, 0x7B, 0x7B, + 0xD3, 0xC1, 0x68, 0x38, 0xBF, 0x59, 0xAE, 0xE6, 0x37, 0xDE, 0xBB, 0xBE, 0xEB, 0x77, 0x26, 0xA3, + 0x5F, 0x7E, 0xF6, 0xF5, 0x97, 0x5F, 0x3D, 0xBF, 0x99, 0x2D, 0x26, 0x93, 0xD1, 0x78, 0x34, 0x70, + 0xDE, 0xC5, 0x5B, 0xDB, 0x29, 0x84, 0x29, 0xC5, 0x04, 0xE3, 0x18, 0x63, 0x00, 0x44, 0x29, 0x9B, + 0x8C, 0x06, 0x79, 0x26, 0x8D, 0x75, 0xD6, 0xBA, 0xAA, 0xCC, 0x23, 0x42, 0x97, 0x97, 0xB3, 0x4E, + 0xE9, 0x2C, 0x93, 0xCE, 0xBB, 0x18, 0x22, 0x46, 0x29, 0x54, 0x8D, 0xE5, 0x59, 0x96, 0x4A, 0xB3, + 0x52, 0xC6, 0x5A, 0x97, 0x58, 0x4B, 0x31, 0xC6, 0xE0, 0x43, 0x59, 0xE6, 0xC6, 0xD8, 0xB4, 0xE7, + 0xCA, 0xB3, 0x4C, 0x69, 0xE5, 0x7D, 0xF2, 0xC8, 0x8C, 0xEB, 0xB6, 0x4F, 0xF4, 0x26, 0x1F, 0x22, + 0x00, 0xAA, 0xCA, 0x6C, 0x50, 0x16, 0x21, 0x46, 0xA5, 0x74, 0x6A, 0xE8, 0xBC, 0xF7, 0x21, 0xC6, + 0xFB, 0x47, 0xFB, 0x08, 0xE1, 0xA6, 0xED, 0x7C, 0x08, 0x82, 0x31, 0x6B, 0xED, 0x70, 0x50, 0x2A, + 0x6D, 0x6E, 0x16, 0xAB, 0x4F, 0x7E, 0xF0, 0xC1, 0xB6, 0x90, 0x6D, 0x38, 0x95, 0x5B, 0x77, 0x45, + 0x80, 0x04, 0xF5, 0x27, 0x16, 0x50, 0x72, 0xFE, 0x83, 0x08, 0x00, 0x5F, 0x3D, 0x7D, 0x5D, 0xB7, + 0x5D, 0xA2, 0xCA, 0x26, 0x2C, 0x2F, 0xAD, 0x05, 0xB2, 0x4C, 0xC4, 0x08, 0x82, 0xB3, 0x8D, 0x47, + 0x2B, 0x23, 0x71, 0xC3, 0x0B, 0xA1, 0x84, 0x60, 0xEF, 0x43, 0x8C, 0x41, 0x0A, 0x66, 0x9D, 0x8F, + 0x31, 0x58, 0xEF, 0x29, 0x65, 0x98, 0x20, 0x42, 0x70, 0x91, 0x4B, 0x82, 0xD1, 0xDE, 0xCE, 0x30, + 0x93, 0x5C, 0x1B, 0xCB, 0x05, 0x0B, 0x21, 0x86, 0x00, 0x18, 0x63, 0xEF, 0x3C, 0x42, 0x28, 0xCB, + 0xB8, 0x14, 0x3C, 0x25, 0x04, 0xA6, 0xF5, 0xBA, 0xF7, 0x81, 0x32, 0x1A, 0x22, 0x10, 0x4C, 0xAC, + 0xF7, 0xD6, 0xBA, 0x4C, 0xCA, 0x10, 0x62, 0xF0, 0x51, 0x69, 0x33, 0x1E, 0x96, 0x3B, 0xA3, 0x4A, + 0x0A, 0xDA, 0xF5, 0xBA, 0x6E, 0x7A, 0x82, 0x71, 0xEA, 0x7D, 0x7C, 0xF0, 0x89, 0xE5, 0xAE, 0x8C, + 0x05, 0x84, 0x04, 0x67, 0x98, 0x90, 0x54, 0xC2, 0xB4, 0x36, 0x31, 0xC2, 0xBA, 0x69, 0xAD, 0xF3, + 0xDA, 0xD8, 0x18, 0x23, 0x25, 0xB4, 0x57, 0xBA, 0x53, 0x9B, 0xDC, 0xE8, 0x8D, 0x76, 0x1E, 0x00, + 0x63, 0xD4, 0xB4, 0xCA, 0x5A, 0x9B, 0xC8, 0x25, 0x31, 0x44, 0x4A, 0xE9, 0xBA, 0x6E, 0x9D, 0xF7, + 0x08, 0xE1, 0xB6, 0x57, 0x83, 0xAA, 0x74, 0x3E, 0xD4, 0x4D, 0xEB, 0x7C, 0x10, 0x9C, 0x3B, 0xEF, + 0xFF, 0xE0, 0x07, 0x1F, 0x7C, 0xF2, 0xD1, 0x63, 0xEF, 0xFD, 0xB2, 0x6E, 0x97, 0xAB, 0x9A, 0x12, + 0x52, 0x14, 0x39, 0x44, 0x38, 0xBB, 0x9C, 0xFD, 0xF5, 0xDF, 0x7D, 0xF6, 0xE2, 0xE5, 0x89, 0x52, + 0xFA, 0xFE, 0xD1, 0x3E, 0x46, 0x78, 0xB1, 0xAC, 0x01, 0xE1, 0xAA, 0xCC, 0xAF, 0xAE, 0xE7, 0x7D, + 0xAF, 0x8C, 0xB1, 0x83, 0x41, 0xF9, 0xDE, 0x83, 0x83, 0xA3, 0x83, 0xE9, 0x83, 0xA3, 0xFD, 0xE7, + 0xAF, 0x4E, 0xBE, 0xFA, 0xEA, 0x05, 0x20, 0x44, 0xFE, 0xAB, 0xFF, 0xE6, 0x5F, 0xA4, 0x17, 0xB7, + 0xCC, 0xC4, 0x68, 0x58, 0x20, 0x80, 0x5E, 0x99, 0x04, 0xB8, 0x6E, 0xCE, 0xA2, 0x3B, 0x94, 0xFA, + 0xDB, 0xCC, 0x8E, 0xDF, 0x5B, 0xC2, 0x7E, 0x6F, 0x23, 0x76, 0xFB, 0xF1, 0x5B, 0x58, 0xED, 0xF6, + 0x23, 0x09, 0xE8, 0x42, 0x08, 0x39, 0xEF, 0xBC, 0xF7, 0x80, 0x80, 0x60, 0xCC, 0x39, 0x2D, 0x8A, + 0x4C, 0x08, 0x06, 0x00, 0x84, 0xE0, 0xD4, 0x82, 0x15, 0x79, 0x86, 0xB7, 0xEC, 0x8D, 0xF4, 0xCC, + 0x09, 0x23, 0xA0, 0x24, 0x99, 0x6D, 0x43, 0x32, 0xA2, 0x72, 0xCE, 0xC1, 0xB6, 0xB1, 0xA2, 0x49, + 0x69, 0x1A, 0x12, 0xFB, 0x0C, 0x82, 0x0F, 0x18, 0x63, 0x92, 0x98, 0xB3, 0xEF, 0xFC, 0x77, 0x53, + 0x2F, 0xB6, 0xD9, 0xB8, 0x63, 0x82, 0x31, 0xA6, 0xB0, 0x15, 0xD3, 0x61, 0x82, 0x57, 0xEB, 0xF5, + 0xCB, 0x17, 0xC7, 0x9C, 0x12, 0x1F, 0x51, 0x2E, 0x19, 0x23, 0xC4, 0x3B, 0x2F, 0x18, 0xA9, 0x72, + 0xD9, 0x29, 0x63, 0xAD, 0x43, 0x18, 0xCF, 0x97, 0x6D, 0xE2, 0xBD, 0x7A, 0x1F, 0x9C, 0xB3, 0xDE, + 0x07, 0x40, 0xC8, 0x5A, 0xC7, 0x29, 0xE5, 0x9C, 0x1A, 0x6D, 0x38, 0x67, 0x49, 0x32, 0x92, 0x65, + 0x82, 0x31, 0xE2, 0xBC, 0x67, 0x8C, 0x39, 0xEF, 0xB4, 0x32, 0x75, 0xD3, 0xC6, 0x18, 0x95, 0xD2, + 0x18, 0x21, 0xC6, 0x68, 0x59, 0xE4, 0xFB, 0xFB, 0x53, 0x2E, 0x78, 0x8A, 0x92, 0xF4, 0xCE, 0x0B, + 0x4E, 0xAD, 0x0D, 0x5D, 0xD7, 0x8E, 0x86, 0x65, 0x59, 0xE4, 0x79, 0x2E, 0xF3, 0x3C, 0x4B, 0x8E, + 0xA9, 0x21, 0x84, 0xE0, 0x1D, 0xA6, 0x84, 0x72, 0x86, 0x60, 0x63, 0x26, 0x8E, 0x31, 0x86, 0x18, + 0xAC, 0x73, 0xC9, 0x29, 0xC1, 0x1A, 0xAB, 0x94, 0x5A, 0xAF, 0xBB, 0xCB, 0xEB, 0xC5, 0xBA, 0xEE, + 0xEB, 0xB6, 0xCF, 0xA4, 0x18, 0x0C, 0x0A, 0x04, 0x88, 0x31, 0xB6, 0xBB, 0x33, 0x16, 0x82, 0x51, + 0x42, 0x19, 0x63, 0x80, 0x40, 0x29, 0x93, 0x65, 0x32, 0x02, 0x7A, 0xFE, 0xEA, 0x64, 0x34, 0x1C, + 0x68, 0xEB, 0x7D, 0x08, 0xEF, 0x3F, 0x7A, 0x60, 0x9D, 0xFF, 0xE2, 0xAB, 0xE7, 0xC3, 0xE1, 0x70, + 0x34, 0x1E, 0xCD, 0x97, 0xEB, 0x61, 0x55, 0x76, 0x7D, 0x0F, 0x10, 0x87, 0x55, 0xD9, 0xB6, 0xDD, + 0x70, 0x34, 0x8A, 0x80, 0xBA, 0xA6, 0x19, 0x55, 0x39, 0x46, 0x71, 0x67, 0x32, 0x02, 0x84, 0x92, + 0xDF, 0x7F, 0x04, 0xA0, 0x84, 0x48, 0xC1, 0x9D, 0xF7, 0x89, 0x17, 0xE1, 0x7D, 0x0C, 0x00, 0x89, + 0xA5, 0xBC, 0x5C, 0xD7, 0x6D, 0xA7, 0x7F, 0xF8, 0xF1, 0x93, 0xAA, 0x2A, 0xBF, 0xFA, 0xFA, 0x39, + 0x63, 0xEC, 0x60, 0x6F, 0xBA, 0xAE, 0xDB, 0x10, 0x42, 0x82, 0xAB, 0x22, 0xA0, 0xAE, 0xED, 0xB2, + 0x4C, 0x24, 0x93, 0xBF, 0x2C, 0x93, 0x5A, 0x6B, 0xCE, 0x36, 0x38, 0x74, 0x26, 0x45, 0xA2, 0x4B, + 0x02, 0x40, 0xDA, 0x45, 0x3B, 0xE7, 0x9D, 0x0F, 0xC6, 0xB8, 0x9D, 0x9D, 0x51, 0xF0, 0xC1, 0x39, + 0xCB, 0x18, 0xB1, 0xC6, 0x11, 0x82, 0xF3, 0x5C, 0x5A, 0xEB, 0x62, 0x04, 0xCE, 0x19, 0x46, 0xA0, + 0x8D, 0x1D, 0x0F, 0x07, 0x08, 0xA3, 0xA6, 0xED, 0x62, 0x88, 0x8C, 0x51, 0x8C, 0xF1, 0xE1, 0xE1, + 0x5E, 0x08, 0xE1, 0xE2, 0xF2, 0xE6, 0xE1, 0xFD, 0xFD, 0x41, 0x55, 0x3A, 0xEF, 0x37, 0x47, 0xDA, + 0x76, 0x94, 0x44, 0x1B, 0x5F, 0xF7, 0xDB, 0x8F, 0xA0, 0x88, 0xD2, 0x25, 0x04, 0x9F, 0x7D, 0xF1, + 0x74, 0xB9, 0x6E, 0xAD, 0x0B, 0x79, 0x26, 0x9D, 0x73, 0xDE, 0x47, 0xC6, 0x29, 0xA3, 0x24, 0xB8, + 0x80, 0x31, 0x12, 0x82, 0x1B, 0xE3, 0x92, 0x9E, 0x34, 0xB5, 0x63, 0x94, 0x12, 0xEF, 0x5D, 0x3A, + 0x30, 0xA5, 0xE4, 0xD6, 0x6E, 0x36, 0x95, 0x21, 0x06, 0x63, 0x0D, 0x46, 0xB8, 0xD7, 0xA6, 0xCC, + 0xB3, 0xC9, 0xA0, 0xCA, 0x32, 0x91, 0x16, 0xF7, 0x69, 0x32, 0xE5, 0x9C, 0x12, 0x82, 0x93, 0x85, + 0x19, 0x42, 0x80, 0x20, 0x26, 0x8C, 0x3C, 0x02, 0x38, 0x1F, 0x9A, 0x3E, 0xE5, 0x84, 0x06, 0xA5, + 0x8D, 0x73, 0x0E, 0x10, 0xF2, 0x3E, 0xF4, 0xBD, 0xDA, 0xDB, 0x1B, 0x33, 0x4A, 0x43, 0x88, 0x97, + 0xB3, 0x65, 0xDD, 0x76, 0x4D, 0xDB, 0x87, 0x18, 0x39, 0xA5, 0x09, 0x32, 0x0E, 0x31, 0x52, 0x42, + 0x8C, 0x73, 0x18, 0xE1, 0x5C, 0x0A, 0xE7, 0xBC, 0x71, 0xB6, 0x53, 0x2A, 0xD9, 0x10, 0x05, 0x00, + 0x65, 0xEC, 0x7A, 0xDD, 0x39, 0x1F, 0x9C, 0xF7, 0xDE, 0x7B, 0x6D, 0x2C, 0xC6, 0xC8, 0x5A, 0xDF, + 0x75, 0x0A, 0xA1, 0x04, 0xBF, 0xB8, 0x18, 0x21, 0x42, 0xC4, 0x18, 0x73, 0x46, 0xB7, 0x9B, 0x7D, + 0x93, 0x1C, 0xB4, 0xDA, 0xAE, 0x37, 0xC6, 0x1A, 0x6B, 0x23, 0x20, 0x67, 0xFD, 0xFE, 0xEE, 0xE4, + 0x3F, 0xFE, 0xE9, 0x0F, 0x7F, 0xF0, 0xFD, 0x47, 0xCB, 0x55, 0x5D, 0xB7, 0xFD, 0x68, 0x50, 0xEC, + 0xEE, 0x8C, 0x22, 0x80, 0x36, 0xEE, 0xF4, 0xFC, 0xFA, 0xE9, 0xF3, 0xD7, 0x94, 0xB2, 0xD9, 0xF5, + 0x8D, 0xD5, 0x56, 0x6B, 0x73, 0x71, 0x75, 0x73, 0x7D, 0xB3, 0x68, 0x3B, 0x65, 0xAD, 0xED, 0x7B, + 0x25, 0x84, 0x68, 0x9A, 0x16, 0x13, 0x9A, 0xC0, 0xD0, 0x9F, 0xFF, 0xF2, 0x8B, 0xD7, 0x6F, 0xCE, + 0x18, 0x63, 0x7B, 0xFB, 0xBB, 0xE4, 0x7F, 0xFE, 0x9F, 0xFE, 0xC7, 0x22, 0x97, 0x79, 0xC6, 0xA7, + 0xE3, 0x61, 0x91, 0x67, 0x29, 0x2A, 0x5C, 0x70, 0x9A, 0x49, 0x91, 0x00, 0x54, 0xB4, 0x49, 0x94, + 0xD9, 0xB8, 0x8C, 0xC5, 0x6F, 0x1B, 0x81, 0xDD, 0x16, 0xA6, 0xDF, 0x85, 0xCF, 0x36, 0x67, 0xF2, + 0xAD, 0x81, 0xF4, 0x9D, 0xAF, 0xD9, 0x36, 0x64, 0x90, 0x5A, 0xCD, 0x04, 0xDF, 0x32, 0xC6, 0xA4, + 0x94, 0x52, 0xCA, 0x54, 0x2E, 0x13, 0x30, 0x29, 0x18, 0x13, 0x82, 0xA3, 0x6D, 0x01, 0x85, 0x0D, + 0x5D, 0x3E, 0x39, 0x14, 0x92, 0xB8, 0xF1, 0x65, 0xF4, 0xDE, 0xFB, 0x5E, 0x19, 0x6B, 0x5C, 0x88, + 0x51, 0x30, 0x9E, 0x38, 0x35, 0x90, 0x38, 0x68, 0xDB, 0x5C, 0xBC, 0xDB, 0xA7, 0x4D, 0x35, 0x34, + 0x02, 0xA4, 0x6C, 0x0E, 0x1F, 0x7C, 0x82, 0x57, 0x30, 0xA6, 0xEF, 0x86, 0x68, 0x00, 0x8C, 0x51, + 0xD7, 0x34, 0x6F, 0x4F, 0x2F, 0x28, 0x46, 0x08, 0x40, 0x48, 0x1E, 0x42, 0x48, 0x53, 0x0C, 0x20, + 0x64, 0x9C, 0x27, 0x94, 0x2A, 0x6D, 0x97, 0x75, 0x97, 0x16, 0xC0, 0xD6, 0x59, 0xE7, 0x82, 0xB6, + 0x4E, 0x1B, 0xC7, 0x19, 0x49, 0x13, 0xE2, 0xEE, 0xEE, 0x18, 0x63, 0x94, 0x82, 0xE6, 0xC7, 0xA3, + 0x01, 0xC1, 0x49, 0x36, 0x1F, 0x8C, 0x31, 0x89, 0x4A, 0xAA, 0x7A, 0x2D, 0x25, 0x2F, 0x8B, 0x9C, + 0x10, 0x24, 0x25, 0x1F, 0x0E, 0x4B, 0xC6, 0x39, 0x02, 0x44, 0x39, 0x4B, 0x31, 0x54, 0x31, 0xC2, + 0xCE, 0xCE, 0x78, 0x34, 0x2C, 0x39, 0xA3, 0x42, 0x0A, 0xBC, 0xB5, 0x4B, 0x02, 0x00, 0xBC, 0x31, + 0x51, 0x7A, 0x97, 0x08, 0xE5, 0xBD, 0xB7, 0xD6, 0xA9, 0xDE, 0x74, 0xAD, 0xB2, 0xC6, 0x2D, 0x96, + 0xEB, 0xAB, 0xD9, 0xFA, 0xE4, 0xFC, 0xE6, 0xEA, 0x66, 0xB5, 0x58, 0xB7, 0x89, 0xD5, 0x3C, 0x1D, + 0x0F, 0xD3, 0x26, 0x41, 0x4A, 0x4E, 0x09, 0x2E, 0xCB, 0xBC, 0xED, 0xF4, 0x6C, 0xB6, 0x48, 0x7A, + 0xAD, 0xAA, 0xCC, 0xAD, 0xF5, 0x79, 0x9E, 0x41, 0x84, 0x93, 0xD3, 0x0B, 0x21, 0xF8, 0xC1, 0xFE, + 0x54, 0x1B, 0x7B, 0x7D, 0xB3, 0xE0, 0x94, 0x1A, 0x6B, 0x19, 0xE3, 0x45, 0x9E, 0xAD, 0xD7, 0x4D, + 0xD7, 0xF6, 0x9D, 0x52, 0xAB, 0x75, 0xB3, 0x58, 0xAC, 0x46, 0xC3, 0xF2, 0xE8, 0x70, 0xD7, 0x5B, + 0x77, 0x7A, 0x7A, 0xCE, 0x39, 0x0F, 0x3E, 0x18, 0xA3, 0x19, 0xC6, 0x45, 0x0A, 0xB3, 0xB0, 0x5E, + 0x69, 0x03, 0x11, 0x9C, 0x0F, 0x75, 0xDD, 0x52, 0xC6, 0x9C, 0xF3, 0x52, 0x08, 0xA5, 0xF4, 0xBA, + 0xEE, 0x3E, 0x78, 0xEF, 0x9E, 0xB6, 0x7E, 0x33, 0xBA, 0x25, 0xB3, 0x1A, 0xE7, 0x9D, 0xF5, 0x7D, + 0x0A, 0xC1, 0xB3, 0x0E, 0x21, 0xE4, 0x9D, 0x4B, 0x4D, 0x4D, 0x9A, 0xA0, 0xD3, 0x8C, 0xD9, 0x2B, + 0xBD, 0x39, 0x87, 0x00, 0x50, 0x32, 0x86, 0xA3, 0xB4, 0xEB, 0x55, 0xC2, 0x98, 0x92, 0xB9, 0x18, + 0xA1, 0x44, 0x1B, 0x9B, 0x8C, 0x15, 0x01, 0x01, 0xA5, 0x24, 0xAD, 0xF9, 0xE7, 0x8B, 0x55, 0xBA, + 0x08, 0x93, 0xE6, 0x05, 0x01, 0x20, 0x04, 0xD6, 0xD8, 0x55, 0xDD, 0xAE, 0xD6, 0xCD, 0x87, 0x4F, + 0x1E, 0x05, 0x1F, 0x52, 0x53, 0x0B, 0x61, 0xD3, 0x95, 0x45, 0x00, 0x78, 0x67, 0x76, 0xFA, 0x6E, + 0x73, 0x65, 0xB4, 0xF9, 0xD5, 0x6F, 0x9E, 0xAE, 0xD6, 0xED, 0x66, 0xC3, 0xA3, 0x0D, 0xC6, 0x58, + 0x48, 0x8E, 0xB6, 0xE4, 0x1E, 0x00, 0x48, 0xED, 0x76, 0xB2, 0xB8, 0x23, 0x84, 0x50, 0x82, 0x94, + 0xB2, 0x82, 0xD3, 0x08, 0x68, 0xB5, 0x6E, 0x38, 0x67, 0x36, 0xED, 0x2B, 0xD0, 0xA6, 0xA7, 0x8B, + 0x01, 0xF6, 0x77, 0xC7, 0x45, 0x2E, 0x12, 0x5A, 0x6F, 0xAC, 0xF5, 0x3E, 0xF9, 0x0E, 0xD2, 0x34, + 0x76, 0x84, 0x08, 0x49, 0xDE, 0x48, 0x08, 0xB2, 0xD6, 0x59, 0xEB, 0x00, 0x91, 0x44, 0xC3, 0x0C, + 0x3E, 0x34, 0x4D, 0x6F, 0xBC, 0xB7, 0xD6, 0x1A, 0xE3, 0x76, 0x26, 0x03, 0xE7, 0xFC, 0xF1, 0xE9, + 0x55, 0xDB, 0x29, 0xA5, 0x8D, 0xD1, 0x36, 0x39, 0xC4, 0x24, 0x20, 0xD8, 0xFB, 0x40, 0x08, 0x42, + 0x18, 0x73, 0x4A, 0x13, 0x69, 0x56, 0x1B, 0xEB, 0x43, 0x84, 0x08, 0x18, 0xE3, 0x2C, 0x93, 0x55, + 0x55, 0x28, 0xE3, 0x86, 0xC3, 0xAA, 0x1A, 0x94, 0x52, 0xCA, 0xE9, 0x74, 0x1C, 0x43, 0x5C, 0xD5, + 0x5D, 0xDB, 0xF5, 0xD6, 0x79, 0x63, 0x4C, 0x88, 0x51, 0x69, 0xB3, 0x5E, 0xB7, 0xD6, 0xFA, 0xA4, + 0x45, 0x31, 0xC6, 0xAD, 0xD6, 0x8D, 0xB6, 0x2E, 0xC6, 0x38, 0x1C, 0x94, 0x8C, 0xB2, 0xCB, 0xEB, + 0x1B, 0x84, 0x50, 0x99, 0xCB, 0x8F, 0x3F, 0xFC, 0xE0, 0x9F, 0xFE, 0xF1, 0x1F, 0xEE, 0x4E, 0xC7, + 0x8B, 0xE5, 0xFA, 0xF2, 0x7A, 0x81, 0x00, 0x31, 0x46, 0x7D, 0xF0, 0xC6, 0xFA, 0xE7, 0x2F, 0x8F, + 0x4F, 0xCF, 0x2E, 0x8F, 0xEE, 0x1D, 0x9C, 0x9C, 0x9C, 0xAD, 0x57, 0x29, 0x8D, 0x45, 0x71, 0x29, + 0xB5, 0x36, 0x5D, 0xD7, 0x5D, 0x5F, 0xCF, 0x9B, 0xBA, 0x29, 0xCB, 0xFC, 0xC9, 0xE3, 0x47, 0x5A, + 0x99, 0xD3, 0xB7, 0x17, 0xBD, 0xD2, 0x5F, 0x3F, 0x7F, 0x73, 0xB0, 0xBF, 0x5B, 0xE4, 0xB9, 0x52, + 0x8A, 0xFC, 0xCB, 0x7F, 0xF9, 0xBF, 0x48, 0xC1, 0xB3, 0xCD, 0x38, 0x13, 0x39, 0x67, 0x89, 0x17, + 0xCA, 0x18, 0x93, 0x52, 0xA4, 0x43, 0x9E, 0xB1, 0x84, 0x53, 0x93, 0xDB, 0x1A, 0x14, 0xEE, 0x84, + 0xAD, 0xDD, 0x2D, 0x55, 0x77, 0x4B, 0xD8, 0xEF, 0x7E, 0xE4, 0x77, 0xBB, 0x36, 0xD8, 0x72, 0x6B, + 0x29, 0xA5, 0x9C, 0xF3, 0x04, 0x6F, 0xA5, 0xAF, 0xA1, 0x78, 0xB3, 0x1B, 0x45, 0x5B, 0x6F, 0x37, + 0xEF, 0x83, 0xB5, 0x49, 0x5E, 0x07, 0x00, 0xA0, 0xB4, 0x4D, 0x11, 0xAD, 0x21, 0x44, 0x63, 0x9C, + 0x31, 0x1B, 0x41, 0x96, 0xE0, 0x14, 0x61, 0x94, 0x96, 0xD1, 0xCE, 0xBB, 0xF4, 0x96, 0x10, 0x4A, + 0x10, 0x46, 0x31, 0x26, 0x21, 0x70, 0x08, 0x21, 0x89, 0x3A, 0x63, 0x5A, 0x12, 0x13, 0x42, 0x51, + 0x8A, 0x1C, 0xB8, 0xF3, 0xD3, 0x61, 0x8C, 0x97, 0xF3, 0xF9, 0xE5, 0xF9, 0x85, 0xD2, 0x4E, 0x30, + 0x82, 0x10, 0xF4, 0xCA, 0x70, 0x86, 0x8D, 0x35, 0xE9, 0x8A, 0x89, 0x00, 0x6D, 0x67, 0xEA, 0x56, + 0xA7, 0x96, 0x36, 0xB9, 0x1F, 0xA6, 0x5B, 0xF4, 0x83, 0xF7, 0x0E, 0x7D, 0x88, 0x9C, 0xB1, 0x7B, + 0xFB, 0xD3, 0x64, 0x39, 0x30, 0x1E, 0x95, 0x00, 0xC9, 0x71, 0xC9, 0x1B, 0x6D, 0x10, 0xA0, 0x75, + 0xDD, 0x22, 0x04, 0x9C, 0x31, 0x84, 0x91, 0x31, 0xB6, 0xA9, 0xDB, 0xD1, 0xA0, 0x9C, 0x4C, 0x46, + 0x69, 0x9F, 0x4D, 0x29, 0xC5, 0x04, 0x33, 0x46, 0xB3, 0x5C, 0x4A, 0xC1, 0x29, 0xA3, 0x32, 0x93, + 0x9B, 0x49, 0xF9, 0x4E, 0xB7, 0x7B, 0x7B, 0xBA, 0xC4, 0x18, 0xBD, 0x0F, 0x5A, 0xE9, 0x5E, 0x69, + 0xD5, 0xAB, 0xAE, 0xD7, 0x67, 0xE7, 0xB3, 0xA7, 0xAF, 0x2E, 0xDE, 0x9C, 0xCD, 0x9C, 0x8F, 0x46, + 0xDB, 0xB2, 0xCC, 0x53, 0x2C, 0xC0, 0xA0, 0x2A, 0x62, 0x8C, 0xB3, 0xC5, 0x5A, 0x1B, 0xD7, 0x2B, + 0xA3, 0xB5, 0xBD, 0xBA, 0x59, 0x34, 0x6D, 0x4F, 0x29, 0xA5, 0x8C, 0x28, 0x65, 0x9C, 0xF3, 0x99, + 0x94, 0xD3, 0xE9, 0x48, 0x4A, 0xB1, 0x5C, 0xD5, 0x57, 0xB3, 0x79, 0x55, 0x95, 0xA7, 0x67, 0x97, + 0xC6, 0x58, 0xEF, 0xC3, 0x6A, 0xB5, 0xDE, 0xDD, 0xDD, 0xC9, 0x38, 0xE3, 0x52, 0x2C, 0x96, 0x2B, + 0x8C, 0x30, 0x02, 0xD8, 0x99, 0x0C, 0x76, 0x86, 0x05, 0x00, 0xD4, 0x75, 0xD3, 0x77, 0xFD, 0xCE, + 0xCE, 0x88, 0x60, 0x34, 0xA8, 0xF2, 0x24, 0x9E, 0xEF, 0x7B, 0xB5, 0x5A, 0x77, 0x84, 0x10, 0xEB, + 0xFC, 0x7C, 0xB1, 0x96, 0x82, 0x67, 0x92, 0x87, 0x10, 0x32, 0x29, 0xC6, 0xC3, 0x12, 0x21, 0xB4, + 0x33, 0x1D, 0x7F, 0xF2, 0xD1, 0x93, 0xF9, 0x7C, 0x39, 0xBB, 0x59, 0xC4, 0x18, 0x6F, 0xF5, 0xBD, + 0x8C, 0x31, 0xC6, 0x58, 0x72, 0x03, 0xE8, 0x7A, 0x05, 0x80, 0xD2, 0x29, 0x22, 0x05, 0xD7, 0xC6, + 0xC4, 0x18, 0x31, 0x82, 0x94, 0x29, 0x87, 0x10, 0x0A, 0x21, 0xEE, 0xED, 0x4E, 0xB3, 0x4C, 0xB4, + 0x5D, 0x4F, 0x09, 0x49, 0xD3, 0x60, 0x8A, 0x65, 0xD0, 0xDA, 0x50, 0xC6, 0x76, 0x26, 0x23, 0x4C, + 0x52, 0xFC, 0x0D, 0x6F, 0xBB, 0xDE, 0x39, 0x5F, 0x16, 0x39, 0xA5, 0x44, 0x29, 0xC3, 0x68, 0x22, + 0xFD, 0x59, 0x42, 0x48, 0xDB, 0xF4, 0x87, 0xFB, 0xD3, 0xD1, 0xA0, 0x72, 0xCE, 0x6F, 0x16, 0x0B, + 0xE9, 0x1A, 0x06, 0xD8, 0x4A, 0xC8, 0xDF, 0x2D, 0xA9, 0x28, 0xA5, 0x57, 0xB3, 0xF9, 0x57, 0xDF, + 0xBC, 0x9A, 0x4E, 0x27, 0x4A, 0x69, 0xC1, 0xA9, 0xB1, 0x36, 0x95, 0xBB, 0x98, 0x3A, 0x1D, 0x63, + 0x52, 0xE6, 0x66, 0x4A, 0xAC, 0x48, 0xA7, 0x28, 0x00, 0x58, 0xE7, 0x85, 0x48, 0xFE, 0x88, 0x94, + 0x12, 0xE2, 0x7D, 0x50, 0xC6, 0x58, 0xE7, 0xAD, 0xF5, 0x00, 0xF1, 0x8F, 0x3E, 0x79, 0x72, 0x74, + 0x30, 0xC9, 0x33, 0xD1, 0x2B, 0xE3, 0x7C, 0xD0, 0xD6, 0x16, 0x99, 0xC4, 0x04, 0x2B, 0x65, 0xB7, + 0xF6, 0x0F, 0x1B, 0x4A, 0xA6, 0xE0, 0x4C, 0x6B, 0x63, 0x5D, 0x00, 0x00, 0x29, 0x12, 0xC6, 0x6F, + 0x5C, 0x08, 0x21, 0x44, 0xA3, 0x6D, 0x6A, 0x00, 0x53, 0xAD, 0xCC, 0xA4, 0xC4, 0x08, 0x19, 0x63, + 0x13, 0xD6, 0x42, 0x28, 0x49, 0x86, 0x57, 0x31, 0x46, 0x8A, 0xB1, 0x60, 0x8C, 0x12, 0xE4, 0x7C, + 0x6C, 0x3A, 0xB5, 0x58, 0x35, 0x94, 0x52, 0x6D, 0xDC, 0xD5, 0xCD, 0x32, 0xCB, 0xE4, 0xCE, 0x64, + 0x24, 0x04, 0xCF, 0xA5, 0xD8, 0xDF, 0x9D, 0x8C, 0x47, 0x83, 0xC9, 0x78, 0xF8, 0xF0, 0xFE, 0x81, + 0x73, 0xFE, 0xFC, 0xE2, 0x3A, 0x01, 0x64, 0x6D, 0xAF, 0x8C, 0x35, 0xC6, 0xB9, 0xA6, 0x6D, 0xBD, + 0x8F, 0x42, 0xF0, 0xD5, 0xBA, 0x69, 0xBB, 0xBE, 0x57, 0x5A, 0x69, 0x33, 0x1A, 0x56, 0x21, 0xC2, + 0x74, 0x67, 0xFC, 0xA7, 0xFF, 0xE4, 0x27, 0x3F, 0xF8, 0xDE, 0x7B, 0xC6, 0xD8, 0x97, 0x6F, 0xCE, + 0x66, 0x37, 0x4B, 0xEB, 0x9C, 0x4E, 0xC3, 0x1F, 0x46, 0x6F, 0xCE, 0x2E, 0x4E, 0x4E, 0xCF, 0x87, + 0x55, 0xB9, 0x58, 0xAD, 0xCF, 0x4E, 0x2E, 0x28, 0xC6, 0x32, 0x93, 0x79, 0x9E, 0x79, 0xEF, 0xAD, + 0x31, 0x08, 0x41, 0x96, 0x49, 0x4A, 0xE9, 0x62, 0xB1, 0x5E, 0xD7, 0x4D, 0xD3, 0xB5, 0x4D, 0xDD, + 0x3D, 0x7B, 0xF1, 0xE6, 0x47, 0x3F, 0xFC, 0x28, 0x46, 0xF8, 0xED, 0x57, 0xCF, 0xF6, 0x76, 0xA7, + 0xF4, 0xF6, 0x78, 0x07, 0x78, 0x87, 0x1A, 0xBD, 0xAB, 0x59, 0x9B, 0xFC, 0xE4, 0x77, 0x5F, 0x93, + 0xDA, 0xB1, 0xBB, 0x1B, 0x80, 0xFF, 0x1F, 0x8F, 0xB8, 0x15, 0xAF, 0xDF, 0x06, 0x7E, 0x90, 0x3B, + 0x01, 0x97, 0x31, 0x04, 0x08, 0x31, 0x99, 0x78, 0x6F, 0x7C, 0xD1, 0xB6, 0x4B, 0x4F, 0x6D, 0x6C, + 0x42, 0xD0, 0x31, 0xC6, 0x04, 0xA3, 0xC4, 0x15, 0x82, 0x8D, 0x94, 0x04, 0x51, 0x82, 0x04, 0xA7, + 0xA9, 0xCA, 0xF8, 0xE0, 0x63, 0x8C, 0x18, 0x61, 0xC6, 0x08, 0xDD, 0xFC, 0x3A, 0xE9, 0x78, 0xDD, + 0xFC, 0x16, 0x21, 0x84, 0x18, 0x13, 0xBF, 0x97, 0xA0, 0xBB, 0xC8, 0xDD, 0x9D, 0x07, 0x25, 0x38, + 0x25, 0x1E, 0x50, 0x82, 0x62, 0x08, 0x94, 0x12, 0x1F, 0x92, 0x96, 0x4D, 0x95, 0x79, 0x16, 0x22, + 0x0C, 0xCA, 0xEC, 0x7A, 0xD1, 0x52, 0x00, 0x40, 0x98, 0x32, 0xAA, 0x8D, 0xE3, 0x3C, 0x1C, 0x1D, + 0xED, 0x8D, 0x06, 0xE5, 0xBA, 0xE9, 0x62, 0x0C, 0x67, 0xE7, 0x97, 0x69, 0xB3, 0x13, 0x23, 0x2C, + 0x97, 0x75, 0x8C, 0x71, 0x32, 0x19, 0x12, 0x82, 0xDB, 0xB6, 0x9F, 0xDD, 0x2C, 0x29, 0xC6, 0x93, + 0xC9, 0x90, 0x52, 0x62, 0x8C, 0x09, 0xCE, 0x8E, 0x46, 0x43, 0xC2, 0x68, 0xAA, 0xBC, 0xB7, 0xB3, + 0xFC, 0xDD, 0x33, 0x63, 0xAB, 0xBA, 0x07, 0xD8, 0x10, 0x2C, 0xF1, 0x6D, 0x23, 0xE6, 0x9D, 0x5F, + 0xAF, 0x1B, 0xA5, 0x35, 0x63, 0xAC, 0xEF, 0xCD, 0xF3, 0xE3, 0xCB, 0x9B, 0x45, 0x53, 0x14, 0x05, + 0xA5, 0xB6, 0x69, 0xDA, 0xAA, 0x2A, 0x19, 0x67, 0x21, 0x84, 0x32, 0x97, 0x4A, 0x5B, 0xE3, 0x5C, + 0xD3, 0xE9, 0xA6, 0x5D, 0x15, 0x39, 0x0F, 0x01, 0x62, 0x84, 0x3C, 0xCF, 0xD2, 0x91, 0x10, 0x7C, + 0x02, 0x47, 0xBC, 0x56, 0xBA, 0xCC, 0x33, 0x4E, 0xE9, 0xD7, 0xCF, 0x5E, 0x11, 0x4A, 0x1E, 0x1C, + 0x1D, 0xBE, 0x7C, 0xF9, 0x0A, 0x63, 0xE2, 0x9C, 0xBB, 0xBA, 0x9E, 0xDD, 0xDB, 0x9F, 0x62, 0x82, + 0xF7, 0x76, 0xA7, 0x5D, 0xD7, 0x0B, 0x46, 0x73, 0x29, 0xB4, 0xB6, 0xE3, 0x41, 0x41, 0x50, 0x81, + 0x20, 0x62, 0x80, 0xFD, 0xBD, 0x69, 0xBA, 0xAB, 0x63, 0x08, 0xD6, 0x98, 0xD5, 0x6A, 0x7D, 0xFA, + 0xF6, 0x12, 0x51, 0x36, 0x1E, 0x0E, 0x5E, 0x1E, 0x9F, 0x3D, 0xBC, 0x7F, 0x80, 0x10, 0x6A, 0xBA, + 0x5E, 0x08, 0xC6, 0x28, 0xC9, 0x38, 0xF3, 0xDE, 0x7F, 0xFC, 0x83, 0xC7, 0x2F, 0x5E, 0x1E, 0x27, + 0xCD, 0x26, 0xC4, 0x18, 0x62, 0x5C, 0xAD, 0x6B, 0x40, 0xC0, 0x19, 0xF5, 0xDE, 0x53, 0x9A, 0xC8, + 0x8C, 0x91, 0x20, 0x14, 0x63, 0x14, 0x9C, 0xC6, 0x88, 0x42, 0xF0, 0xCE, 0x79, 0x21, 0x44, 0xDF, + 0x77, 0x45, 0x9E, 0x25, 0x28, 0x4D, 0x70, 0xDE, 0x75, 0x7D, 0xB2, 0xC7, 0x48, 0x40, 0x08, 0xA5, + 0x74, 0xBD, 0x6E, 0x9C, 0x73, 0x83, 0xAA, 0x88, 0x31, 0x10, 0x4C, 0xF3, 0x4C, 0x5E, 0xCD, 0xE6, + 0x55, 0x99, 0xA7, 0x5C, 0x2B, 0x8C, 0x90, 0xF7, 0x9E, 0x12, 0x42, 0x31, 0x68, 0xE7, 0x5E, 0x9F, + 0xBC, 0xBD, 0x7F, 0x6F, 0x7F, 0x7B, 0x5A, 0xDC, 0x41, 0xF9, 0x23, 0x78, 0xE4, 0x6F, 0x01, 0xB3, + 0x10, 0x20, 0xC9, 0x09, 0x42, 0x8C, 0x37, 0xF3, 0x05, 0xDD, 0xD0, 0x2C, 0xF0, 0xED, 0xF7, 0x44, + 0x04, 0x21, 0x04, 0xAD, 0x15, 0xC6, 0xC8, 0x87, 0x80, 0x3C, 0x10, 0x82, 0xD3, 0x41, 0x4C, 0x08, + 0xB2, 0x2E, 0x79, 0x6D, 0x7A, 0x82, 0xD0, 0xA0, 0xCA, 0x05, 0xA7, 0xEB, 0xB6, 0x77, 0xD6, 0xA7, + 0x79, 0x22, 0x55, 0xD8, 0x64, 0x27, 0x29, 0x18, 0x8B, 0x10, 0x9D, 0x75, 0x84, 0xA0, 0xE0, 0x23, + 0x21, 0x29, 0x6B, 0xD1, 0x23, 0x40, 0x18, 0x61, 0x29, 0xA5, 0x69, 0x3A, 0x82, 0x51, 0x4A, 0x74, + 0xEE, 0x95, 0xB1, 0xCE, 0xDD, 0x7A, 0xCC, 0xD4, 0x4D, 0x87, 0x10, 0x4A, 0xC6, 0x67, 0x21, 0x04, + 0xC6, 0xD8, 0xED, 0xF5, 0xC3, 0x28, 0xED, 0xB5, 0x8D, 0x31, 0x4A, 0xC1, 0x03, 0x80, 0x75, 0x5E, + 0x29, 0xD3, 0x2B, 0x15, 0x63, 0xF8, 0xE4, 0xE3, 0x27, 0xC9, 0x29, 0x88, 0x73, 0x46, 0x09, 0x3E, + 0xBD, 0x98, 0x1D, 0xEC, 0xEF, 0x1C, 0xEE, 0x4D, 0x56, 0xEB, 0x66, 0xB9, 0xEE, 0xDA, 0xAE, 0xDF, + 0x99, 0x8E, 0x7E, 0xF8, 0xC9, 0x87, 0xBF, 0xFE, 0xFC, 0x6B, 0x1F, 0x42, 0x0C, 0x11, 0x52, 0xD7, + 0xEC, 0x63, 0xD3, 0xF6, 0x79, 0x9E, 0x11, 0x4A, 0x48, 0xA0, 0x46, 0x9B, 0xE5, 0xBA, 0xAE, 0xCA, + 0x12, 0x01, 0xFC, 0xF8, 0x93, 0xEF, 0x4F, 0x27, 0xA3, 0xE5, 0xAA, 0x79, 0xF6, 0xE2, 0xCD, 0x6A, + 0xB9, 0x92, 0x52, 0x60, 0x8C, 0xBA, 0x4E, 0xF9, 0xB0, 0x4B, 0x19, 0xC5, 0x80, 0xFE, 0xE8, 0xC7, + 0x1F, 0x33, 0x4A, 0xFF, 0xF5, 0xFF, 0xF5, 0xB7, 0x9C, 0x11, 0x84, 0x71, 0x51, 0x64, 0xBD, 0xD2, + 0x04, 0xA3, 0xE1, 0xB0, 0x04, 0x40, 0xCE, 0x5A, 0x4A, 0x30, 0x00, 0x3A, 0x39, 0x3E, 0x15, 0x52, + 0x00, 0xE0, 0x10, 0xA2, 0x52, 0xEA, 0xF1, 0x07, 0x0F, 0x08, 0xC1, 0xE7, 0x97, 0x33, 0xF2, 0x57, + 0x7F, 0xF5, 0x57, 0x70, 0xA7, 0x63, 0x4A, 0xBB, 0xC5, 0xF4, 0xD7, 0xDB, 0xC3, 0x3F, 0x06, 0x17, + 0x82, 0x8F, 0xA9, 0x8B, 0x89, 0xB7, 0xE1, 0x42, 0xDF, 0xEA, 0xB9, 0xFE, 0x83, 0xAB, 0x58, 0x8C, + 0x18, 0xFD, 0x03, 0xD5, 0x30, 0xC4, 0x04, 0xA5, 0xE2, 0x4D, 0xCE, 0x4A, 0xB2, 0xBC, 0x8D, 0xCE, + 0xBB, 0x10, 0xC2, 0x26, 0x2E, 0x6C, 0x13, 0x92, 0x1A, 0x9D, 0x0B, 0x89, 0xF8, 0xC7, 0x28, 0xCE, + 0x24, 0xCF, 0xA4, 0xD8, 0x8A, 0x4A, 0x10, 0x25, 0x84, 0xB1, 0xB4, 0x06, 0xDA, 0x18, 0xCC, 0x26, + 0x11, 0x4C, 0x7A, 0x47, 0x6F, 0x65, 0x06, 0x98, 0xFC, 0x8E, 0xEE, 0x3D, 0x46, 0x88, 0x01, 0x63, + 0x32, 0xBF, 0xB9, 0x39, 0x79, 0x73, 0xEA, 0x3C, 0x48, 0x41, 0x24, 0xA7, 0x94, 0x60, 0x41, 0xB1, + 0xB5, 0xAE, 0x28, 0x8A, 0xBE, 0x57, 0x8C, 0x92, 0xB2, 0x2A, 0xB9, 0xE0, 0xC6, 0x7A, 0x21, 0xC5, + 0xDE, 0xEE, 0x78, 0x67, 0x67, 0x94, 0x65, 0x22, 0x85, 0x03, 0xE6, 0x99, 0x40, 0x18, 0x55, 0x55, + 0xB5, 0x33, 0x19, 0x0D, 0x07, 0x65, 0x99, 0x67, 0xE3, 0xD1, 0xA0, 0x28, 0x24, 0x63, 0x0C, 0x42, + 0x58, 0x37, 0x2D, 0xC6, 0xA4, 0x2C, 0x0B, 0x42, 0x70, 0x9E, 0x09, 0xC1, 0xE9, 0x60, 0x50, 0x1D, + 0xDC, 0xDB, 0xDB, 0x04, 0x97, 0xDE, 0x69, 0x60, 0xF1, 0xD6, 0x86, 0xFB, 0xB6, 0x0B, 0xBB, 0xFB, + 0x1A, 0x86, 0x10, 0xB4, 0xD6, 0x8B, 0xC5, 0x7A, 0xB9, 0x5C, 0xAF, 0x56, 0x89, 0x60, 0x6D, 0x5F, + 0x9D, 0xCE, 0xCE, 0xAF, 0x16, 0x8C, 0x31, 0x63, 0x2D, 0x63, 0x54, 0x4A, 0x79, 0x4B, 0x29, 0xF0, + 0xDE, 0x6B, 0xEB, 0xEA, 0x56, 0x3B, 0x1F, 0x39, 0x67, 0x42, 0xB0, 0x32, 0xCF, 0xA5, 0x94, 0x00, + 0xF1, 0xF2, 0x6A, 0x06, 0x08, 0x7B, 0xE7, 0xBA, 0xB6, 0x9D, 0x8C, 0x06, 0xD3, 0x49, 0x55, 0xB7, + 0x2D, 0xC4, 0x90, 0x92, 0x09, 0xB5, 0x36, 0xEB, 0x75, 0x6D, 0x8D, 0x1E, 0x54, 0x25, 0x46, 0x88, + 0x10, 0x3A, 0x1E, 0x0D, 0xF6, 0xA6, 0xE3, 0xF9, 0x7C, 0x79, 0xEF, 0x70, 0xF7, 0x7B, 0x8F, 0x1F, + 0x32, 0x82, 0x53, 0xA0, 0x06, 0xC1, 0xA4, 0x2C, 0xF3, 0x3C, 0x13, 0xDE, 0xFB, 0xD9, 0x7C, 0x75, + 0xB3, 0x58, 0x73, 0x29, 0x87, 0x83, 0x6A, 0x36, 0x5F, 0x36, 0xAD, 0xDA, 0xDF, 0x9B, 0x62, 0x8C, + 0xAA, 0xB2, 0x28, 0x8B, 0x1C, 0x21, 0xB4, 0x58, 0x35, 0x08, 0x64, 0x54, 0x67, 0x17, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xA1, 0x4C, 0x30, 0xEB, 0x1C, 0xC2, 0x88, 0x52, 0x72, 0x7C, + 0xFC, 0x56, 0x48, 0x4E, 0x30, 0xF6, 0xCE, 0x87, 0x10, 0x38, 0xA3, 0x69, 0x2C, 0x50, 0x4A, 0x13, + 0x8C, 0xBC, 0x0F, 0x45, 0x99, 0x59, 0xBB, 0xE9, 0x35, 0xFA, 0x5E, 0x01, 0x40, 0x8A, 0xE3, 0xA4, + 0x94, 0xC5, 0x08, 0xCB, 0xD5, 0x8A, 0x31, 0xEE, 0x9C, 0x15, 0x82, 0x7B, 0xE7, 0x04, 0xE7, 0x94, + 0xB1, 0x18, 0x21, 0xCB, 0x44, 0xDF, 0xEB, 0xA4, 0x4F, 0xB3, 0xCE, 0xEE, 0x4C, 0x46, 0xDA, 0xD8, + 0x5E, 0x9B, 0x10, 0x62, 0xCA, 0xBE, 0x4B, 0xFD, 0xBC, 0x75, 0x8E, 0x31, 0x6A, 0xAD, 0x7D, 0xF2, + 0xC1, 0x03, 0xD8, 0xCA, 0x65, 0xE0, 0x96, 0x53, 0x06, 0xB7, 0x07, 0x7A, 0x62, 0xC6, 0x46, 0xC6, + 0xC8, 0xAB, 0xE3, 0xB7, 0xF3, 0xF9, 0x2A, 0x09, 0xDA, 0xD1, 0xD6, 0xCD, 0x46, 0x30, 0x86, 0x09, + 0x76, 0x3E, 0x48, 0x21, 0x92, 0x68, 0x25, 0x49, 0xC7, 0xE3, 0xD6, 0x74, 0xAF, 0xD7, 0xD6, 0xFB, + 0xE8, 0x43, 0x50, 0xDA, 0x64, 0x52, 0x60, 0x82, 0x39, 0xA3, 0x92, 0xB3, 0x41, 0x95, 0x8D, 0x87, + 0xE5, 0xEE, 0x64, 0xB8, 0xD9, 0x60, 0x62, 0x9C, 0x0C, 0x39, 0x8C, 0xB1, 0xCE, 0x7B, 0xC9, 0x68, + 0x88, 0xD1, 0xF9, 0x90, 0x70, 0xBD, 0xA4, 0x43, 0x4A, 0xCC, 0xDE, 0x24, 0x19, 0x5E, 0x37, 0xBD, + 0x75, 0x5E, 0x6B, 0xA3, 0x95, 0x4D, 0x78, 0x99, 0x0F, 0x21, 0x79, 0xD2, 0x4A, 0xC9, 0x23, 0x84, + 0x04, 0x96, 0x11, 0x82, 0xA5, 0x14, 0x79, 0x2E, 0x53, 0x0F, 0x81, 0x00, 0x18, 0xA3, 0xD6, 0xB9, + 0x5E, 0x99, 0x10, 0x20, 0x84, 0xB0, 0x58, 0xD5, 0x84, 0xD2, 0x07, 0x87, 0x7B, 0x31, 0x86, 0xB6, + 0xEB, 0x27, 0xE3, 0x11, 0x25, 0x68, 0xB1, 0x5C, 0x4B, 0x21, 0x62, 0xDC, 0xE4, 0x5A, 0x1D, 0xEC, + 0x4D, 0x09, 0xA3, 0x00, 0xD0, 0x2B, 0xED, 0x7D, 0x28, 0xF3, 0xBC, 0xDF, 0x44, 0xDB, 0x81, 0xF7, + 0xC1, 0xBB, 0x90, 0x54, 0x19, 0xDA, 0x98, 0x3C, 0xCF, 0x46, 0xA3, 0x4A, 0x08, 0x7E, 0x79, 0x39, + 0x5B, 0x2C, 0xD7, 0x89, 0xE6, 0xE9, 0x7D, 0xE8, 0x55, 0xCF, 0xB9, 0xC8, 0xF3, 0x7C, 0x30, 0x28, + 0xC6, 0x83, 0xC1, 0xEB, 0x93, 0xF3, 0xAE, 0x37, 0x01, 0x62, 0x59, 0xE4, 0x42, 0x48, 0x63, 0xDD, + 0xA0, 0x2A, 0x23, 0xC0, 0xB0, 0x2A, 0xD2, 0xA5, 0x9E, 0x3C, 0x1D, 0x18, 0xE7, 0x3B, 0xD3, 0xA9, + 0x73, 0xBE, 0x6E, 0xDA, 0x83, 0xBD, 0xC9, 0x93, 0xF7, 0x1F, 0xDC, 0x3F, 0xDC, 0xA3, 0xDF, 0x19, + 0x55, 0x22, 0xA4, 0x6E, 0x28, 0x09, 0x35, 0x52, 0x19, 0xF1, 0xDE, 0x27, 0x38, 0x7E, 0x63, 0xDA, + 0xC3, 0xB9, 0xA0, 0x5C, 0xFC, 0x87, 0xD6, 0xAF, 0xEF, 0x3C, 0x7E, 0x6F, 0x05, 0xDC, 0xF4, 0xEB, + 0x49, 0x3D, 0xB1, 0xA5, 0xB0, 0xA5, 0x46, 0x11, 0x00, 0x30, 0xC2, 0x79, 0x96, 0xA5, 0x65, 0x79, + 0xF4, 0x1B, 0xDE, 0x2C, 0x21, 0x21, 0xC4, 0x90, 0xD1, 0x0D, 0xC7, 0x38, 0x51, 0x6A, 0x11, 0x00, + 0x25, 0x18, 0x93, 0x3B, 0x85, 0x16, 0xC5, 0x64, 0xEF, 0x91, 0xFA, 0x97, 0x6F, 0x55, 0xE1, 0xDB, + 0x02, 0xB1, 0x3D, 0x75, 0x53, 0x89, 0x00, 0x88, 0x10, 0x3C, 0xA7, 0xA4, 0xD3, 0x1E, 0x01, 0x14, + 0xB9, 0x04, 0x00, 0x02, 0x01, 0xE3, 0x2C, 0xCD, 0xAD, 0x79, 0x59, 0x64, 0x55, 0xE5, 0x01, 0x87, + 0x80, 0x02, 0xA6, 0x55, 0x59, 0x10, 0x4A, 0x09, 0xAB, 0x95, 0xD2, 0xBD, 0x32, 0xBB, 0x3B, 0xA3, + 0xFD, 0xFD, 0x7D, 0xA5, 0xCD, 0xD1, 0xE1, 0x8E, 0x52, 0x3D, 0xC1, 0x68, 0x77, 0x3A, 0x49, 0xB6, + 0x45, 0x6B, 0xAD, 0x62, 0x84, 0x6A, 0x50, 0x31, 0x46, 0xFC, 0xC6, 0xE3, 0xC1, 0x30, 0xCE, 0x92, + 0x53, 0xE0, 0xED, 0x11, 0xB2, 0x45, 0xEB, 0x22, 0x7C, 0x57, 0x95, 0xB5, 0x01, 0x0A, 0x01, 0x40, + 0x2B, 0x7D, 0x71, 0x79, 0xB3, 0x5C, 0xB5, 0x09, 0x5B, 0xF1, 0xDE, 0x5D, 0xCF, 0x57, 0xD7, 0xF3, + 0xB5, 0x31, 0xAE, 0x28, 0x8A, 0xE8, 0x7C, 0xDB, 0xF5, 0xC3, 0x41, 0x55, 0x14, 0x39, 0x42, 0xC0, + 0x19, 0x25, 0x18, 0x96, 0xEB, 0x4E, 0x1B, 0x97, 0xE7, 0x42, 0x2B, 0xBD, 0x5C, 0xF6, 0x55, 0x15, + 0x54, 0x6F, 0xD6, 0x75, 0xBD, 0x5C, 0x2E, 0x76, 0x77, 0xC6, 0x9C, 0x33, 0x6B, 0xD4, 0xC5, 0xE5, + 0x6C, 0xBA, 0x33, 0xC8, 0x05, 0x37, 0x36, 0x54, 0x55, 0x41, 0x18, 0x3D, 0xDC, 0xDF, 0x1B, 0x0E, + 0x4A, 0x67, 0xCD, 0xE9, 0xD9, 0x05, 0xC6, 0x58, 0x70, 0x1E, 0x7C, 0x60, 0x8C, 0xFC, 0xE8, 0x0F, + 0x3F, 0xCA, 0x33, 0x31, 0x18, 0x56, 0x42, 0xF0, 0xBE, 0x6D, 0xAF, 0xAF, 0x6F, 0x9A, 0x65, 0x3D, + 0x9E, 0x0C, 0x1F, 0x1C, 0xED, 0xC7, 0xE0, 0x8D, 0x36, 0x37, 0xF3, 0xD5, 0xF5, 0xF5, 0xA2, 0x28, + 0x8B, 0x87, 0x0F, 0xEE, 0x65, 0x59, 0x46, 0x08, 0x06, 0x08, 0x5F, 0x7C, 0xF5, 0xFC, 0xC9, 0xE3, + 0x87, 0x3B, 0xA3, 0xC1, 0x68, 0x50, 0xF6, 0xBD, 0xAE, 0x3B, 0x35, 0x9D, 0x0C, 0xCF, 0xCE, 0xAF, + 0x18, 0xA5, 0x59, 0x2E, 0x11, 0x40, 0x88, 0x01, 0x21, 0x80, 0x08, 0x4D, 0xD3, 0x0A, 0xCE, 0x39, + 0x67, 0x21, 0x04, 0x07, 0x08, 0x00, 0xBA, 0x5E, 0x79, 0xE7, 0xA4, 0x14, 0x21, 0x84, 0x3C, 0x97, + 0xCE, 0xF9, 0xBE, 0xB7, 0x02, 0x13, 0x08, 0xD1, 0xC5, 0xC4, 0x71, 0xC5, 0xC3, 0xE1, 0x20, 0x15, + 0xBB, 0x10, 0x02, 0xC2, 0x28, 0xB1, 0x52, 0x52, 0xD0, 0xAA, 0xD6, 0x86, 0x10, 0x5C, 0xD7, 0x8D, + 0x94, 0xBC, 0xED, 0x95, 0x14, 0x3C, 0x0D, 0x6B, 0x52, 0x8A, 0xBE, 0x57, 0x42, 0x8A, 0x18, 0x62, + 0xD3, 0xB4, 0xAB, 0x75, 0x33, 0x1E, 0x55, 0x21, 0xB8, 0x8D, 0x40, 0x1C, 0x6F, 0x7C, 0xE2, 0xD1, + 0x36, 0xF1, 0x0B, 0x60, 0x83, 0xF4, 0xCF, 0x66, 0xCB, 0x64, 0x42, 0x67, 0x8C, 0xC7, 0x84, 0x58, + 0xEF, 0x42, 0x08, 0x92, 0x33, 0x67, 0x7D, 0x0A, 0x5C, 0x03, 0x40, 0xDE, 0x5B, 0xE7, 0x29, 0xDA, + 0xF2, 0xC3, 0x09, 0xC6, 0x29, 0xB9, 0x79, 0x77, 0x32, 0x84, 0x18, 0x92, 0x8F, 0x23, 0x00, 0x14, + 0x99, 0x48, 0x35, 0xA5, 0x2C, 0x32, 0xEF, 0x3D, 0xA1, 0x1B, 0xCB, 0x96, 0x04, 0xBF, 0xB8, 0x10, + 0x8C, 0xB5, 0xC9, 0x1F, 0x30, 0x81, 0x6E, 0x18, 0x6E, 0xD7, 0xEE, 0x80, 0x00, 0x69, 0x63, 0x56, + 0x75, 0x63, 0xAC, 0x63, 0x94, 0xBA, 0xE0, 0x82, 0x8F, 0x78, 0xDB, 0xA6, 0x85, 0x08, 0xBD, 0x52, + 0x31, 0xC6, 0xB2, 0x28, 0x92, 0x8E, 0x1D, 0x62, 0x54, 0x4A, 0x4B, 0xC9, 0x9D, 0x77, 0x19, 0xE6, + 0x18, 0x63, 0x80, 0x0D, 0x14, 0x3E, 0x1C, 0x54, 0x75, 0xD3, 0xFD, 0xFD, 0xCF, 0x7F, 0xF3, 0xE5, + 0x97, 0xCF, 0x62, 0x84, 0xAE, 0x57, 0xDF, 0x7F, 0xFC, 0xF0, 0x27, 0x3F, 0xFA, 0xC1, 0x62, 0x59, + 0xAF, 0x1B, 0x35, 0x19, 0x55, 0xE3, 0x51, 0x95, 0xDC, 0x03, 0x8F, 0x0E, 0xF7, 0x8A, 0x3C, 0xA7, + 0x04, 0x2D, 0x57, 0xB5, 0xB5, 0x7E, 0x32, 0x1E, 0xB5, 0x5D, 0xA7, 0x94, 0x4E, 0x13, 0x52, 0x9E, + 0xE7, 0x9C, 0x33, 0x82, 0xD1, 0xD1, 0xE1, 0xBE, 0x14, 0xBC, 0x6D, 0xFB, 0x57, 0xC7, 0x6F, 0xB5, + 0x36, 0x99, 0x14, 0x10, 0x43, 0x26, 0x45, 0x9E, 0x65, 0x28, 0xC6, 0xB6, 0x6D, 0xEB, 0x06, 0x32, + 0x29, 0x17, 0x8B, 0x95, 0xF7, 0x3E, 0xCB, 0x64, 0xDF, 0x27, 0x22, 0x35, 0x74, 0x4A, 0xF7, 0x5D, + 0xA7, 0xBA, 0x0E, 0x63, 0xEC, 0xAC, 0x37, 0xC8, 0x02, 0x42, 0x8C, 0xF1, 0xC5, 0x72, 0xD5, 0x34, + 0xCD, 0xA0, 0xAA, 0x7E, 0xF1, 0xE9, 0x6F, 0xFE, 0xE8, 0x27, 0x9F, 0x54, 0x45, 0x46, 0xEF, 0xDE, + 0x1E, 0x00, 0x31, 0x71, 0x82, 0xC0, 0xBB, 0x18, 0x43, 0x3A, 0x60, 0x21, 0x42, 0x88, 0xC1, 0x19, + 0xBB, 0xC9, 0x7F, 0xA4, 0x24, 0xC4, 0x20, 0x01, 0x08, 0x65, 0xF8, 0x0E, 0x6A, 0xF6, 0x0F, 0x3D, + 0x6E, 0x57, 0x9C, 0x77, 0x1B, 0x8A, 0xBB, 0x9F, 0xFD, 0xEE, 0x5F, 0x13, 0x08, 0x7F, 0x77, 0xBF, + 0x19, 0x63, 0x04, 0x48, 0x37, 0xCF, 0xA6, 0xEC, 0x22, 0x48, 0x4C, 0xF5, 0xE0, 0x03, 0xE0, 0x88, + 0x19, 0x45, 0x5B, 0x0B, 0xFF, 0xE4, 0xF6, 0x15, 0x21, 0x40, 0x84, 0x10, 0x30, 0x21, 0x64, 0xAB, + 0x22, 0xDD, 0x4A, 0x2F, 0x31, 0xBE, 0x25, 0x91, 0x6D, 0x8B, 0xF8, 0x66, 0x21, 0x80, 0x08, 0x03, + 0x48, 0x10, 0xC6, 0xE6, 0xD5, 0x48, 0x9B, 0x69, 0x46, 0x51, 0x99, 0x8B, 0xE4, 0xED, 0xC5, 0x19, + 0xC7, 0xD6, 0x76, 0x9D, 0xA6, 0x8C, 0x8F, 0x26, 0x13, 0x26, 0xE4, 0xBA, 0x31, 0x79, 0x91, 0xF5, + 0x0E, 0x3A, 0x6D, 0x57, 0xD7, 0x8B, 0xE1, 0x68, 0x70, 0xB4, 0x33, 0x4E, 0xE6, 0x49, 0xCB, 0xE5, + 0x6A, 0x5D, 0x77, 0x93, 0x61, 0xBE, 0xBB, 0x37, 0x96, 0x8C, 0x63, 0x82, 0x13, 0x3D, 0x35, 0x04, + 0xA0, 0x8C, 0x75, 0x5D, 0x6F, 0x8C, 0xC9, 0x33, 0x11, 0x00, 0x13, 0xC6, 0xAA, 0xB2, 0x20, 0x1B, + 0xFE, 0xFD, 0xB7, 0xAA, 0x7C, 0xDC, 0x92, 0x4E, 0x12, 0x67, 0x38, 0xB1, 0x55, 0x12, 0x51, 0xA6, + 0xED, 0xFA, 0xE5, 0xB2, 0x59, 0xAE, 0xBB, 0xF9, 0xAA, 0xCD, 0xA4, 0x54, 0xAA, 0x3B, 0xBF, 0x5E, + 0x38, 0x1F, 0x8B, 0x22, 0xE7, 0x3C, 0xAE, 0x56, 0x8D, 0x94, 0xA2, 0x28, 0x0A, 0xEB, 0x42, 0xD3, + 0xF5, 0xCE, 0x79, 0xA3, 0xB5, 0x14, 0x1C, 0x61, 0xCC, 0x18, 0xBD, 0x9A, 0xCD, 0x8B, 0x2C, 0x13, + 0x42, 0xAC, 0xD6, 0xCD, 0xAF, 0x3E, 0xFD, 0xCD, 0x60, 0x58, 0xFC, 0xF3, 0xFF, 0xE4, 0x8F, 0xF3, + 0x4C, 0x40, 0x84, 0x9D, 0x51, 0xE1, 0x9C, 0x5B, 0x2C, 0x57, 0x5D, 0x6F, 0x19, 0xE7, 0xC3, 0x61, + 0x75, 0x78, 0xB8, 0xC7, 0x19, 0x25, 0x14, 0x9F, 0x5F, 0x5C, 0xDF, 0x7F, 0x70, 0x14, 0x43, 0xD4, + 0xBD, 0x7A, 0xEF, 0xC1, 0x61, 0xF0, 0x3E, 0xD9, 0x40, 0x1E, 0x9F, 0x5E, 0xC4, 0x18, 0x05, 0x23, + 0x79, 0x59, 0x64, 0x45, 0x5E, 0x64, 0x02, 0x63, 0xEC, 0x7D, 0x74, 0xD6, 0x7A, 0xE7, 0x8D, 0xB1, + 0xCE, 0xB9, 0x75, 0xDD, 0xF4, 0xC6, 0x9D, 0x9E, 0x5D, 0x02, 0xC2, 0x22, 0xCF, 0xBF, 0xF8, 0xE6, + 0xF5, 0xD1, 0xC1, 0x74, 0x6F, 0x77, 0x92, 0x09, 0x16, 0x21, 0x1A, 0x63, 0x0E, 0xF7, 0x76, 0x32, + 0x29, 0x4F, 0x4E, 0xCF, 0x4F, 0xCF, 0x2E, 0xB3, 0x4C, 0x68, 0x6F, 0x12, 0x95, 0x64, 0xB5, 0x5A, + 0x1D, 0x1E, 0xEE, 0x0F, 0xAA, 0x72, 0xBE, 0xAC, 0x39, 0xA3, 0xC3, 0xAA, 0xEC, 0x95, 0x4A, 0xB2, + 0x5F, 0xAD, 0xB5, 0x31, 0x0E, 0x00, 0x12, 0x2B, 0x95, 0x4B, 0x79, 0x74, 0x6F, 0xDF, 0x1A, 0x6B, + 0x9D, 0x6F, 0x9A, 0x36, 0x55, 0x01, 0x88, 0x31, 0x84, 0x00, 0x10, 0x19, 0xA3, 0x69, 0xBA, 0xD4, + 0xC6, 0x26, 0x9A, 0x8E, 0x51, 0x16, 0x01, 0x50, 0x42, 0xAC, 0xF3, 0x79, 0x2E, 0xBB, 0x2E, 0x70, + 0x4A, 0x43, 0x8C, 0x75, 0xDD, 0x7C, 0xF3, 0xFC, 0xD5, 0x3F, 0xFB, 0x93, 0x3F, 0xB2, 0xD6, 0xC2, + 0xED, 0x7B, 0x91, 0x9C, 0x00, 0xDF, 0xB1, 0x32, 0x00, 0x23, 0xA4, 0x8D, 0x59, 0xAE, 0x6B, 0x63, + 0xAC, 0x0B, 0x91, 0x60, 0xDC, 0xF5, 0x7D, 0x42, 0x2D, 0xAD, 0xF7, 0x55, 0x91, 0x77, 0xBD, 0x4A, + 0xC0, 0x62, 0x4C, 0xF4, 0x5D, 0x96, 0x5C, 0x80, 0x90, 0x77, 0x5E, 0x0A, 0x96, 0x49, 0x9E, 0x4E, + 0x97, 0xBE, 0xD7, 0x09, 0x85, 0x36, 0x46, 0x71, 0x46, 0xAD, 0x0F, 0x37, 0x8B, 0x3A, 0xED, 0x85, + 0xD2, 0x4B, 0x87, 0x10, 0xB2, 0xCE, 0x09, 0xC1, 0x29, 0x42, 0x6D, 0xD7, 0xA7, 0x0A, 0x95, 0x56, + 0x1C, 0x8C, 0xB1, 0xAD, 0x51, 0x17, 0xD4, 0x75, 0xA7, 0x92, 0x5C, 0x9F, 0x31, 0x82, 0x08, 0x22, + 0xD1, 0x79, 0x87, 0x31, 0x4E, 0x42, 0xEB, 0x10, 0x62, 0xF0, 0xA1, 0xED, 0x7A, 0xCE, 0x29, 0x65, + 0x34, 0xB9, 0x9B, 0x75, 0xBD, 0x76, 0xDE, 0xE7, 0x52, 0x00, 0x40, 0x99, 0x67, 0xB9, 0x94, 0x04, + 0xE3, 0xE5, 0xBA, 0x9D, 0xCF, 0x17, 0xCE, 0x9A, 0xD3, 0xB3, 0x65, 0x88, 0x91, 0x33, 0xFE, 0x37, + 0x7F, 0xF7, 0xEB, 0xEB, 0xD9, 0xE2, 0x47, 0x3F, 0xFC, 0x90, 0x31, 0xA2, 0xB4, 0x09, 0x31, 0x16, + 0x99, 0x30, 0xD6, 0xCC, 0xE6, 0xCB, 0xC5, 0xB2, 0x11, 0x32, 0xFB, 0xE4, 0xDE, 0x41, 0x08, 0xE1, + 0xC5, 0xEB, 0xD3, 0x64, 0x09, 0xAB, 0xB4, 0xC1, 0x09, 0xC5, 0xC3, 0xF0, 0xE0, 0xE8, 0xE0, 0xDE, + 0xC1, 0x74, 0xCB, 0xB6, 0x5B, 0x61, 0x4C, 0x94, 0x36, 0x8C, 0x51, 0xCA, 0x28, 0xA7, 0x24, 0x2F, + 0x72, 0x67, 0xFD, 0xAA, 0x69, 0x62, 0x84, 0xE5, 0xAA, 0x16, 0x9C, 0x75, 0x9D, 0x83, 0x04, 0x6E, + 0x46, 0x6F, 0x95, 0x25, 0x18, 0xA7, 0xEC, 0xD4, 0x08, 0x4E, 0x69, 0x43, 0x08, 0x71, 0xEB, 0x7A, + 0x32, 0x1E, 0x29, 0x4A, 0xFB, 0x5E, 0x49, 0x5E, 0xAE, 0xD7, 0x35, 0x82, 0x48, 0x7E, 0xF6, 0xB3, + 0x9F, 0x41, 0x0C, 0x11, 0x42, 0x9A, 0xA7, 0xC2, 0xD6, 0xB4, 0x6C, 0x83, 0x1E, 0x7B, 0x1F, 0x82, + 0xB7, 0xC6, 0x5A, 0x67, 0x83, 0x0B, 0x01, 0x22, 0xA5, 0x34, 0x89, 0x84, 0x92, 0xFA, 0xF1, 0x3B, + 0xED, 0xC3, 0xBF, 0xBF, 0x4E, 0xDD, 0xDE, 0xA5, 0xFF, 0x9E, 0x99, 0x74, 0xE3, 0x0B, 0xB9, 0x7D, + 0xC4, 0x10, 0xA2, 0x0F, 0xB7, 0x1B, 0xD0, 0xCD, 0x3F, 0x84, 0x22, 0x42, 0x9B, 0x73, 0x31, 0xBD, + 0xA1, 0xA9, 0x8A, 0x71, 0xC1, 0x18, 0xA7, 0x08, 0x01, 0x21, 0x14, 0x6F, 0xA3, 0x98, 0xD2, 0xAF, + 0x72, 0xDB, 0xC2, 0x7C, 0x87, 0xDF, 0x7B, 0xFB, 0x63, 0xC4, 0x18, 0x21, 0x6E, 0x62, 0x0D, 0x53, + 0x19, 0xC2, 0x84, 0x38, 0x6B, 0xCE, 0xDF, 0x9E, 0x4B, 0x4E, 0x4B, 0x49, 0xF3, 0x22, 0x93, 0x52, + 0xF0, 0x4D, 0xA1, 0x04, 0xC6, 0xF9, 0x60, 0x58, 0x7D, 0xF9, 0xF4, 0xF8, 0xC5, 0xEB, 0x8B, 0xB3, + 0xCB, 0x79, 0xDB, 0x76, 0x65, 0x59, 0x62, 0x4A, 0xEF, 0xED, 0x8D, 0xEF, 0x1D, 0xEC, 0x8C, 0x06, + 0x05, 0xC1, 0x70, 0x3D, 0x5B, 0xEE, 0xED, 0x4E, 0xEE, 0x1F, 0xED, 0x55, 0x65, 0x99, 0xB8, 0xB9, + 0x18, 0xA3, 0x44, 0xF7, 0x25, 0x18, 0xAF, 0x57, 0xB5, 0x10, 0x82, 0x30, 0xB9, 0x5E, 0xD5, 0xF7, + 0x0F, 0x77, 0x8E, 0xEE, 0xED, 0x12, 0x4A, 0xBF, 0xF3, 0xCA, 0x7C, 0xC7, 0x01, 0x29, 0x84, 0xE0, + 0x9D, 0x73, 0x2E, 0x3A, 0xE7, 0x4F, 0xCF, 0xAE, 0xDE, 0x9C, 0x5C, 0x5D, 0xDD, 0xAC, 0xAE, 0x6F, + 0xD6, 0x08, 0x21, 0x1F, 0x62, 0xAB, 0x4C, 0x4A, 0x51, 0x33, 0xDA, 0x58, 0x6B, 0x23, 0x44, 0x4C, + 0x70, 0xDB, 0x75, 0x84, 0x12, 0x63, 0x6D, 0x9E, 0xC9, 0xA4, 0x5F, 0xC8, 0x32, 0xD9, 0xF5, 0xBD, + 0xD2, 0x26, 0x13, 0x5C, 0x4A, 0xE9, 0xAC, 0x2B, 0x4B, 0xF9, 0xFE, 0xC3, 0x7B, 0x93, 0xD1, 0x20, + 0x97, 0x42, 0x4A, 0x4A, 0x30, 0xCE, 0xA4, 0x50, 0xCA, 0x52, 0x46, 0x66, 0x37, 0x4B, 0xE7, 0xBC, + 0x73, 0xEE, 0xF9, 0xAB, 0x93, 0x61, 0x55, 0x55, 0x65, 0x3E, 0x1E, 0x0D, 0x28, 0xC1, 0x8C, 0x12, + 0x29, 0xC5, 0xE1, 0xFE, 0x4E, 0x62, 0xAE, 0x27, 0x4E, 0x3F, 0xC6, 0x38, 0x05, 0x67, 0x1C, 0x1D, + 0xEC, 0x32, 0xCE, 0x00, 0x81, 0xEA, 0x75, 0xDB, 0x2B, 0x99, 0x49, 0x4A, 0x69, 0xD7, 0x76, 0xBF, + 0xFA, 0xEC, 0xAB, 0x37, 0x6F, 0xCE, 0x2E, 0xAF, 0x6F, 0x9C, 0x73, 0x82, 0x8B, 0xA7, 0xCF, 0x5F, + 0xBF, 0x7C, 0x75, 0xE2, 0x63, 0x7C, 0x70, 0x6F, 0x8F, 0x11, 0xEA, 0x9C, 0xAF, 0xBB, 0x3E, 0xCF, + 0xB2, 0xB3, 0xF3, 0x4B, 0xB3, 0xB1, 0x0C, 0x73, 0x18, 0x61, 0x6D, 0x4C, 0xBA, 0x24, 0xB4, 0xB2, + 0x71, 0xF3, 0x1E, 0x6D, 0x7C, 0x2F, 0x9C, 0x73, 0x00, 0x88, 0x0B, 0x1E, 0x82, 0x17, 0x5C, 0x58, + 0xE7, 0x1F, 0xDE, 0x3F, 0xCC, 0x32, 0x79, 0x35, 0x9B, 0xF7, 0xBD, 0x22, 0x84, 0x22, 0x8C, 0x13, + 0x33, 0x03, 0x20, 0xDE, 0xA2, 0xAB, 0xE9, 0x15, 0x56, 0xCA, 0x84, 0x08, 0x9D, 0x52, 0x99, 0x10, + 0x08, 0xA1, 0x3C, 0x93, 0x4A, 0x1B, 0xA5, 0x4D, 0x91, 0x67, 0x18, 0xC1, 0x72, 0xB9, 0xBE, 0x77, + 0xB8, 0x3B, 0xA8, 0x8A, 0x94, 0x78, 0x82, 0xD3, 0x85, 0x89, 0x10, 0x4A, 0x19, 0x17, 0x80, 0x00, + 0x22, 0x21, 0xA4, 0xEB, 0xFB, 0xCF, 0x7E, 0xF3, 0x4C, 0x19, 0x97, 0xB4, 0xC0, 0xCE, 0x79, 0xCE, + 0x79, 0x08, 0x41, 0x70, 0x36, 0xAC, 0x4A, 0xE7, 0x5D, 0x62, 0x63, 0x45, 0x04, 0x84, 0x20, 0xC1, + 0x99, 0xF7, 0x1E, 0x23, 0x74, 0xB0, 0x3B, 0x1D, 0x56, 0x39, 0x46, 0x80, 0x31, 0x72, 0x3E, 0x32, + 0x4A, 0x10, 0xE0, 0xAE, 0x57, 0x18, 0xE3, 0x4E, 0x19, 0x6D, 0x7C, 0xDB, 0xAB, 0xE4, 0x20, 0xB6, + 0x58, 0xD7, 0x9C, 0xD3, 0x54, 0xA9, 0x01, 0x01, 0x63, 0x4C, 0x30, 0x9E, 0xA2, 0x6A, 0xD2, 0x7E, + 0x0C, 0x21, 0x94, 0x8C, 0xF3, 0x43, 0xF0, 0xF3, 0x55, 0xA3, 0x8D, 0xE3, 0x9C, 0x02, 0xA0, 0x18, + 0x21, 0x19, 0xFE, 0x58, 0xE7, 0x28, 0x65, 0x4A, 0xEB, 0x44, 0xB3, 0x48, 0xF6, 0xC5, 0xB0, 0x31, + 0x5F, 0x25, 0x5D, 0xAF, 0x28, 0x25, 0x89, 0xD1, 0x56, 0x96, 0xC5, 0xB0, 0x2A, 0x5F, 0xBC, 0x3E, + 0x39, 0x3D, 0x3B, 0xA7, 0x84, 0x68, 0xEB, 0xB2, 0x2C, 0xAB, 0xD7, 0xCD, 0x62, 0x55, 0x03, 0x44, + 0x63, 0xAD, 0x71, 0x9E, 0x31, 0x26, 0x38, 0xCB, 0x24, 0xEF, 0x94, 0xFE, 0xC5, 0xAF, 0xBE, 0x22, + 0x04, 0x8F, 0x86, 0x55, 0x55, 0xE5, 0x00, 0xF1, 0xFE, 0xBD, 0xFD, 0x61, 0x55, 0x36, 0x6D, 0xC7, + 0x18, 0x77, 0xDE, 0xA7, 0x0B, 0x20, 0x93, 0x62, 0x77, 0x67, 0xB4, 0x5A, 0xD7, 0xF7, 0x0E, 0x76, + 0xDF, 0x1C, 0xBF, 0x75, 0x2E, 0x08, 0xC1, 0x9C, 0x73, 0xCE, 0x39, 0x84, 0x31, 0xE7, 0x4C, 0x4A, + 0xC1, 0xE8, 0x46, 0x9E, 0x91, 0x76, 0xC7, 0x7D, 0xDF, 0x03, 0x82, 0x22, 0x97, 0x89, 0x00, 0x98, + 0x42, 0x18, 0x12, 0x4B, 0x2E, 0x89, 0x3D, 0x39, 0xA5, 0x75, 0xB3, 0x8E, 0x10, 0x8B, 0x4C, 0x52, + 0x42, 0x26, 0xC3, 0x8A, 0x51, 0x42, 0xFE, 0xF2, 0x67, 0x3F, 0x8B, 0x77, 0xEA, 0xD7, 0x96, 0xDC, + 0x90, 0x40, 0x70, 0x8A, 0x08, 0x86, 0x18, 0x9D, 0x75, 0xDE, 0x79, 0x9B, 0x6C, 0x95, 0x10, 0x20, + 0x8C, 0xA5, 0xCC, 0x28, 0xE3, 0x70, 0x67, 0xC6, 0x81, 0x7F, 0xB8, 0x9C, 0xDD, 0xED, 0x32, 0xEE, + 0x16, 0x8E, 0xBB, 0x15, 0xF0, 0x2E, 0xE8, 0x86, 0xBE, 0xFD, 0x6D, 0x9B, 0xFF, 0x92, 0xED, 0xB0, + 0x19, 0x37, 0x3E, 0x17, 0xE9, 0x48, 0x24, 0x34, 0x39, 0xA3, 0x6D, 0xBC, 0x9F, 0x30, 0xA6, 0x18, + 0x6D, 0xB9, 0x14, 0x77, 0x60, 0xBE, 0x5B, 0xEF, 0xD9, 0xDB, 0x5E, 0x2F, 0xDE, 0xF1, 0xE1, 0xB8, + 0xDB, 0xA0, 0xBD, 0xFB, 0x11, 0x10, 0x0E, 0xCE, 0x34, 0xCB, 0x45, 0xE2, 0x2B, 0x67, 0x92, 0x27, + 0xE7, 0xA2, 0xB2, 0xCC, 0x9D, 0x8F, 0x22, 0xCB, 0x3B, 0x1B, 0x5F, 0x9F, 0x5C, 0xAD, 0x9B, 0xAE, + 0xEF, 0xD5, 0xEE, 0xEE, 0xCE, 0x68, 0x50, 0x3E, 0x3C, 0xDA, 0x1D, 0x0F, 0x2B, 0x4A, 0xF1, 0xA0, + 0x2A, 0x00, 0x60, 0x30, 0x28, 0xDF, 0x7F, 0x74, 0xAF, 0xC8, 0x33, 0x8C, 0x49, 0xE2, 0xAC, 0xAD, + 0x96, 0xF5, 0xF9, 0xC5, 0xAC, 0xA9, 0x1B, 0x6B, 0x2D, 0x13, 0x1C, 0x10, 0x5E, 0x2C, 0x97, 0xBA, + 0x6F, 0x1F, 0x3D, 0x38, 0xA8, 0x86, 0x83, 0xBB, 0x2F, 0xC0, 0xDD, 0x59, 0xF2, 0xB6, 0x17, 0x4B, + 0xDA, 0xE6, 0x64, 0x88, 0x78, 0x79, 0xBD, 0xF2, 0x21, 0xCE, 0x97, 0x4D, 0xDB, 0xF6, 0x79, 0x2E, + 0x95, 0xF1, 0x21, 0x24, 0xB0, 0x19, 0xA5, 0x50, 0x5B, 0xC1, 0xF9, 0x68, 0x38, 0x98, 0x4C, 0x46, + 0x52, 0xB0, 0xF1, 0x70, 0x90, 0xA6, 0x95, 0x3C, 0xCF, 0xAC, 0xF5, 0x29, 0x8E, 0xB0, 0xEB, 0x7A, + 0x4A, 0x49, 0x5E, 0xE4, 0xBB, 0x3B, 0xC3, 0x94, 0x37, 0xE1, 0x37, 0x37, 0x7C, 0xCC, 0x33, 0xC1, + 0x19, 0x89, 0x00, 0x3E, 0x80, 0x73, 0xCE, 0x18, 0x67, 0x8C, 0x4D, 0xF2, 0x32, 0x4A, 0xC8, 0xC1, + 0xFE, 0x74, 0x6F, 0x2F, 0x8D, 0xC9, 0x31, 0x93, 0xA2, 0x6D, 0x3B, 0x8C, 0xC0, 0x58, 0xE3, 0xFD, + 0xE6, 0x38, 0x4C, 0x2C, 0x4D, 0xCE, 0xB9, 0xCC, 0x78, 0xF0, 0x1E, 0x10, 0x72, 0x3E, 0x9C, 0x5F, + 0xCC, 0xDE, 0x5E, 0x5C, 0xE7, 0x59, 0x86, 0x30, 0x9E, 0x2F, 0x16, 0x6F, 0x8E, 0xCF, 0xE6, 0xF3, + 0x55, 0x88, 0xE1, 0xE2, 0xE2, 0xEA, 0xFC, 0xFC, 0x3A, 0xD1, 0x53, 0x8C, 0x75, 0x97, 0x57, 0x37, + 0x21, 0xC2, 0x7A, 0x5D, 0x63, 0x8C, 0x92, 0x28, 0x95, 0x10, 0x6A, 0x8C, 0x51, 0x4A, 0xA5, 0x25, + 0xAF, 0xD2, 0x46, 0xF5, 0x3A, 0xDD, 0xC3, 0xE9, 0xB5, 0x4A, 0x6F, 0xB7, 0x75, 0x76, 0xBA, 0x33, + 0x7E, 0x7B, 0x7E, 0x7D, 0x76, 0x71, 0x25, 0x85, 0x20, 0x98, 0x84, 0x18, 0xB3, 0x2C, 0xA3, 0x94, + 0xA4, 0xFD, 0x63, 0x96, 0x89, 0x22, 0xCF, 0x19, 0xA3, 0x4A, 0x29, 0x6B, 0x5D, 0xA2, 0x3B, 0x50, + 0x46, 0x9D, 0xF3, 0xDB, 0x20, 0x0C, 0xD4, 0x29, 0x55, 0x16, 0x39, 0x21, 0xB8, 0xEB, 0xFA, 0xF5, + 0xBA, 0x7E, 0xFC, 0xE8, 0x41, 0x22, 0x25, 0xA4, 0xCF, 0x6F, 0xAE, 0x97, 0x88, 0x92, 0x6E, 0x89, + 0x53, 0x7A, 0x75, 0x3D, 0xFF, 0xEC, 0xCB, 0xE7, 0x82, 0x73, 0x00, 0x40, 0x98, 0x60, 0x8C, 0xF3, + 0x5C, 0x02, 0x20, 0x8A, 0x11, 0xA5, 0x04, 0x23, 0xA4, 0x94, 0x02, 0x04, 0x80, 0xB1, 0x60, 0x8C, + 0x11, 0x1C, 0x22, 0x38, 0xEF, 0x29, 0xC1, 0x04, 0xE3, 0x5E, 0xA9, 0x22, 0x97, 0x75, 0xDB, 0xED, + 0xEE, 0x0C, 0x31, 0x46, 0x4A, 0x9B, 0x18, 0x40, 0x69, 0x0B, 0x08, 0x22, 0x40, 0x0A, 0x94, 0x5A, + 0xAE, 0x5B, 0xEB, 0x7D, 0x59, 0xE4, 0x69, 0x28, 0x4E, 0x9B, 0x50, 0x4A, 0x09, 0x22, 0x98, 0x52, + 0xEA, 0xBC, 0xB7, 0xCE, 0x59, 0x1F, 0x20, 0x42, 0xDD, 0x74, 0x6D, 0xAF, 0x63, 0x8C, 0x99, 0x94, + 0x6D, 0xAB, 0x08, 0x21, 0x29, 0xF2, 0x02, 0x23, 0xEC, 0x83, 0x4F, 0x37, 0x0B, 0xDE, 0x44, 0x9E, + 0xA1, 0xE0, 0x3D, 0x26, 0x24, 0xC6, 0xD0, 0xF5, 0x4A, 0x4A, 0x19, 0x7C, 0x70, 0xDE, 0x37, 0x6D, + 0xD7, 0x34, 0xDD, 0xD9, 0xC5, 0xB5, 0xB3, 0x4E, 0x6B, 0x9B, 0x72, 0x91, 0x11, 0xC6, 0xC9, 0x5F, + 0xFE, 0xF1, 0xA3, 0x87, 0x1F, 0x7D, 0xF8, 0xC1, 0xFD, 0x7B, 0xBB, 0x07, 0xBB, 0x93, 0x75, 0xDD, + 0x7E, 0xF6, 0xC5, 0xB3, 0xB3, 0xF3, 0x1B, 0x82, 0xE1, 0xCF, 0xFE, 0xC9, 0x4F, 0x76, 0x27, 0x43, + 0x29, 0xA5, 0xD6, 0x26, 0xCF, 0xB3, 0xB6, 0xEB, 0xAC, 0xF3, 0x07, 0x7B, 0xD3, 0xD1, 0xB0, 0xCC, + 0x33, 0xB1, 0x3F, 0x9D, 0x1C, 0xEC, 0xEF, 0x54, 0x65, 0x71, 0x71, 0x35, 0x3B, 0x7B, 0x7B, 0x35, + 0x9D, 0x0C, 0x43, 0x08, 0xC6, 0x58, 0x8C, 0xB1, 0x31, 0x96, 0x73, 0xB6, 0x33, 0x1A, 0x16, 0x99, + 0xA4, 0x94, 0x24, 0x1A, 0x7C, 0xDB, 0x76, 0x08, 0xC1, 0x70, 0x50, 0x4E, 0xC7, 0xC3, 0x9D, 0xF1, + 0x30, 0xB1, 0xA0, 0xDB, 0xB6, 0x83, 0x18, 0x31, 0x02, 0x63, 0x8C, 0x73, 0x8E, 0x50, 0xF2, 0xFD, + 0xC7, 0x8F, 0x86, 0x83, 0x32, 0x93, 0xBC, 0xC8, 0xE4, 0x70, 0x50, 0x70, 0xC6, 0xE8, 0xD6, 0x01, + 0x3F, 0x6E, 0x5D, 0xBF, 0x02, 0x4E, 0x31, 0x96, 0x08, 0xC5, 0xE0, 0x82, 0x73, 0xC1, 0xDB, 0x18, + 0x37, 0xD9, 0xEE, 0xCE, 0x78, 0xAD, 0x6D, 0x55, 0xE5, 0xE9, 0x37, 0xB4, 0xC6, 0x38, 0xEF, 0xF0, + 0xD6, 0xEF, 0x90, 0xDC, 0x9A, 0x7B, 0xFD, 0xBE, 0x25, 0xE0, 0x77, 0xC0, 0xB8, 0x54, 0x92, 0xFE, + 0xA1, 0xD6, 0xEC, 0x5B, 0x5F, 0x76, 0x7B, 0x67, 0x6F, 0x6A, 0xDF, 0xB7, 0xCA, 0x0D, 0xC1, 0x14, + 0x10, 0x22, 0x94, 0x6E, 0x73, 0x53, 0xEE, 0x3E, 0x35, 0xA1, 0x18, 0x00, 0x90, 0x4F, 0xAE, 0xC3, + 0x18, 0x01, 0x40, 0x72, 0x8E, 0xBC, 0xE5, 0xD6, 0xC2, 0x3B, 0x62, 0x5A, 0x8A, 0x01, 0xC6, 0x9B, + 0xA9, 0x01, 0x13, 0x82, 0x31, 0xC4, 0x98, 0x71, 0xE6, 0x43, 0xA4, 0x94, 0x62, 0x4C, 0xB2, 0x2C, + 0x33, 0xC6, 0xFA, 0x00, 0x65, 0x59, 0x1A, 0x60, 0xD7, 0xB3, 0x15, 0x65, 0xB4, 0xC8, 0xE5, 0xDE, + 0xEE, 0xCE, 0x64, 0x5C, 0x0D, 0x2A, 0x39, 0x28, 0xB3, 0x94, 0x68, 0x67, 0x8C, 0x13, 0x42, 0x16, + 0x65, 0xC1, 0x18, 0x4D, 0x9C, 0x4C, 0xA3, 0x8D, 0xB1, 0x66, 0xBE, 0x58, 0x7B, 0xEF, 0x39, 0x17, + 0x3E, 0xC4, 0xA2, 0x28, 0xCE, 0xCE, 0x2F, 0x9C, 0xF3, 0xFB, 0x07, 0xFB, 0x59, 0x91, 0xA3, 0x3B, + 0x65, 0xF7, 0xEE, 0x9F, 0xA9, 0x27, 0x8D, 0xC1, 0x6B, 0x63, 0xB5, 0xD2, 0x4A, 0x9B, 0xF3, 0xCB, + 0x9B, 0xF9, 0xB2, 0x73, 0x21, 0x6A, 0x6D, 0x97, 0xAB, 0x1A, 0x10, 0x6A, 0x3B, 0xD3, 0x2B, 0x8D, + 0x08, 0x1E, 0x0D, 0x87, 0x08, 0x41, 0xD7, 0x6B, 0x67, 0xB9, 0x90, 0xF2, 0xFA, 0x66, 0x01, 0x10, + 0x87, 0x83, 0x41, 0x08, 0x71, 0x3E, 0x5F, 0x29, 0xAD, 0x23, 0x20, 0x1F, 0x62, 0xD7, 0xF5, 0x55, + 0x59, 0x88, 0x2C, 0xD3, 0xC6, 0x45, 0x40, 0x48, 0x50, 0x99, 0x49, 0x4E, 0x49, 0x48, 0x51, 0xDB, + 0x08, 0x49, 0x21, 0x38, 0xE7, 0x01, 0xD0, 0x6A, 0xDD, 0xD5, 0xDA, 0x3C, 0x7F, 0xFE, 0xFA, 0xE8, + 0xE8, 0x30, 0x86, 0xE8, 0xBD, 0xB7, 0x08, 0xFA, 0x5E, 0x55, 0x55, 0x3E, 0xA8, 0xAA, 0xBE, 0xEF, + 0x01, 0x90, 0xCC, 0xB3, 0xF5, 0x72, 0x15, 0x9C, 0x6D, 0xD7, 0x75, 0x55, 0xE6, 0x7B, 0xD3, 0x51, + 0xDF, 0xAB, 0xCB, 0xAB, 0x39, 0xA3, 0x6C, 0xD5, 0xB4, 0xC9, 0xAB, 0x52, 0x69, 0xA3, 0x8D, 0x1D, + 0x0C, 0x4A, 0xA3, 0x4D, 0x49, 0x98, 0x77, 0x3C, 0x78, 0x8D, 0x29, 0x61, 0x94, 0x08, 0x46, 0xBF, + 0x7E, 0xFA, 0x0A, 0x61, 0xFC, 0xD3, 0x1F, 0x7F, 0x5C, 0x14, 0xD9, 0x47, 0x1F, 0x3E, 0x2A, 0xCA, + 0x7C, 0xB5, 0xAA, 0x57, 0xAB, 0x55, 0x59, 0x16, 0xCB, 0x65, 0xF2, 0xF9, 0xF1, 0x99, 0xE0, 0x80, + 0xB1, 0x73, 0x8E, 0x52, 0xEA, 0x63, 0x72, 0x61, 0x09, 0x8C, 0x26, 0x07, 0x37, 0x4F, 0x30, 0x31, + 0xD6, 0xB5, 0x5D, 0x0F, 0x08, 0x92, 0xDC, 0x67, 0x30, 0xAC, 0x7A, 0xA5, 0xA7, 0x93, 0x61, 0x5D, + 0xD7, 0x5A, 0x6B, 0x84, 0x90, 0x0F, 0x81, 0x32, 0x42, 0x09, 0x59, 0xA6, 0xFC, 0x2D, 0x42, 0x8C, + 0xB5, 0x29, 0x07, 0xC4, 0xF9, 0xE0, 0x43, 0xF0, 0xDE, 0xA3, 0x18, 0x9B, 0xA6, 0xF3, 0x3E, 0x30, + 0x4A, 0xDF, 0x9C, 0x5E, 0xFE, 0xE2, 0xD7, 0x5F, 0xFE, 0xB3, 0x3F, 0xF9, 0x71, 0xDF, 0xEB, 0xBB, + 0xE7, 0xDF, 0x16, 0x86, 0x41, 0x84, 0xE2, 0xD9, 0x7C, 0x95, 0x4C, 0xD0, 0x12, 0x7C, 0x3C, 0x1A, + 0x0E, 0x22, 0x02, 0xC6, 0x59, 0xF0, 0xCE, 0x59, 0x9B, 0xB0, 0x73, 0x82, 0x01, 0x6D, 0x2F, 0xBF, + 0x24, 0xEA, 0x3C, 0xBF, 0x9A, 0x5F, 0xCD, 0x16, 0x65, 0x99, 0x0F, 0xAB, 0x72, 0xB5, 0xEE, 0x31, + 0x26, 0x83, 0x32, 0x2B, 0x32, 0x39, 0x5F, 0x36, 0x21, 0x04, 0xE7, 0x62, 0x8C, 0x71, 0x19, 0x5A, + 0xE7, 0xD7, 0x4A, 0x1B, 0x4C, 0x70, 0x04, 0x94, 0x4B, 0x4E, 0x08, 0x49, 0x46, 0xA9, 0x08, 0x23, + 0xDD, 0x1B, 0x4F, 0x43, 0x32, 0xEF, 0x88, 0x21, 0xBA, 0xE8, 0xBA, 0x5E, 0x13, 0x82, 0x69, 0x20, + 0x69, 0xBA, 0x44, 0x18, 0x9C, 0xF5, 0x08, 0xA1, 0xB0, 0xC9, 0x24, 0x43, 0x31, 0xC6, 0x10, 0x03, + 0xA3, 0x22, 0x42, 0xF4, 0x3E, 0x24, 0x51, 0x5B, 0x99, 0xE7, 0x99, 0x14, 0xD6, 0x58, 0x8C, 0xB1, + 0x14, 0xE2, 0xFC, 0x62, 0xB6, 0x5C, 0xAD, 0x31, 0xC6, 0x3B, 0x93, 0xC9, 0x8F, 0x7F, 0xF4, 0x71, + 0x8C, 0xB1, 0x2A, 0x0B, 0x21, 0xD8, 0xAB, 0xD7, 0xA7, 0xFF, 0xF6, 0x6F, 0x7F, 0xB1, 0xAE, 0xEB, + 0xEF, 0x3D, 0x79, 0x1F, 0x62, 0x78, 0x7B, 0x71, 0xBD, 0x5A, 0x37, 0xD7, 0x37, 0x8B, 0xB6, 0xEB, + 0x8E, 0xDF, 0xCE, 0xBA, 0x5E, 0x7D, 0xFA, 0xEB, 0x2F, 0xDF, 0x7B, 0x70, 0xF8, 0xD1, 0x87, 0x1F, + 0x08, 0x29, 0xD6, 0xEB, 0xB7, 0x99, 0xE4, 0x65, 0x91, 0xBD, 0xF7, 0xE0, 0xE0, 0x93, 0x0F, 0xDF, + 0xBF, 0xBC, 0x9E, 0xFF, 0xFA, 0xB7, 0x4F, 0xDB, 0xAE, 0xB7, 0xCE, 0x85, 0x10, 0xA5, 0x90, 0x89, + 0x3B, 0xD2, 0x75, 0xEA, 0x6A, 0xB6, 0xD8, 0x19, 0x0D, 0xF2, 0x14, 0x37, 0x91, 0x89, 0xB2, 0xC8, + 0x29, 0xC1, 0x49, 0x00, 0xC0, 0x39, 0x4B, 0xB7, 0x92, 0xD6, 0x9A, 0x12, 0xA4, 0xB5, 0x49, 0x22, + 0x50, 0x40, 0xF0, 0xA3, 0x4F, 0x3E, 0xFC, 0xDE, 0xE3, 0x47, 0x57, 0xD7, 0xD7, 0x28, 0x42, 0x9E, + 0xCB, 0x41, 0x95, 0x8B, 0xB4, 0xE8, 0x0D, 0x21, 0x06, 0xEF, 0xA2, 0xF7, 0x1B, 0x90, 0x9B, 0xB0, + 0xE0, 0x21, 0x46, 0xEF, 0x8C, 0x31, 0x1B, 0x68, 0x0C, 0x45, 0x88, 0x31, 0x44, 0xEF, 0x3C, 0x25, + 0x44, 0x70, 0x81, 0xF1, 0x06, 0xCD, 0xB1, 0xC6, 0x01, 0x80, 0x0F, 0x1E, 0x01, 0x12, 0x9C, 0x23, + 0x8C, 0x30, 0x20, 0xCA, 0x58, 0x5A, 0x38, 0xC2, 0xB7, 0xC7, 0xB7, 0xEF, 0xD4, 0x2A, 0x00, 0xF8, + 0x5D, 0x4F, 0x81, 0x2D, 0xDC, 0x9F, 0xBA, 0xBC, 0xC4, 0xDE, 0x89, 0x21, 0xFA, 0x18, 0x42, 0x0C, + 0x11, 0x6D, 0x83, 0x97, 0x30, 0x4E, 0x3E, 0x99, 0x18, 0x21, 0x9C, 0x8C, 0xF7, 0xB7, 0x42, 0xDE, + 0x08, 0xDB, 0x3C, 0x11, 0x00, 0x88, 0x90, 0x3C, 0xCE, 0x29, 0x49, 0x76, 0x8C, 0x11, 0x41, 0x0A, + 0xBD, 0xC7, 0x9B, 0x79, 0x0D, 0x6D, 0xD2, 0xBC, 0x13, 0xCA, 0x8E, 0x01, 0x61, 0x88, 0x31, 0x35, + 0xF2, 0x80, 0xC0, 0x6A, 0x85, 0x10, 0x62, 0x9C, 0x0A, 0xC1, 0x85, 0x10, 0x45, 0x55, 0x31, 0x63, + 0x97, 0x8D, 0x51, 0x3E, 0x1A, 0xEB, 0x29, 0x21, 0x45, 0x9E, 0x97, 0x45, 0xCE, 0x28, 0xD9, 0x19, + 0x0F, 0xA5, 0xE4, 0x69, 0xF5, 0x9E, 0x36, 0x4A, 0x08, 0x21, 0x88, 0x60, 0xB4, 0x75, 0xD6, 0xF6, + 0x21, 0x74, 0x9D, 0x32, 0xDA, 0x60, 0x8C, 0xAB, 0x41, 0x85, 0x31, 0xD1, 0xC6, 0x36, 0x75, 0xC3, + 0x29, 0xDD, 0x9D, 0x8C, 0x3E, 0x78, 0x74, 0xAF, 0x28, 0x8B, 0x77, 0x95, 0xEB, 0xDD, 0xBD, 0x92, + 0x74, 0xC9, 0xC1, 0x18, 0x7D, 0x35, 0x5B, 0xF4, 0xCA, 0x00, 0x42, 0x5D, 0x6F, 0x2E, 0x66, 0xEB, + 0x75, 0xDD, 0x69, 0xE3, 0x9C, 0x0F, 0x84, 0xD0, 0xE9, 0xEE, 0x64, 0x3E, 0x5F, 0xCD, 0x6E, 0x16, + 0x8C, 0x71, 0x04, 0xF8, 0xDE, 0xBD, 0x7D, 0x84, 0xC9, 0xE9, 0xD9, 0xC5, 0xBA, 0xED, 0xFA, 0xBE, + 0x37, 0xDA, 0x6A, 0x65, 0xBA, 0xAE, 0xEF, 0xBA, 0xF6, 0xDE, 0xBD, 0xC3, 0x17, 0x6F, 0x4E, 0x43, + 0x88, 0xDE, 0x7B, 0x4E, 0xE9, 0x64, 0x3C, 0xC0, 0x08, 0x4D, 0xC6, 0x43, 0x3A, 0x9D, 0x5C, 0x5D, + 0x2F, 0x01, 0x22, 0xA5, 0x64, 0x32, 0xAE, 0xAC, 0x75, 0xEB, 0x65, 0xED, 0xBC, 0x57, 0xC6, 0x8D, + 0x47, 0x83, 0xCB, 0xEB, 0x79, 0x88, 0x31, 0x2F, 0x72, 0x4A, 0xE9, 0xCD, 0xCD, 0x02, 0x10, 0xCC, + 0x30, 0x16, 0x82, 0x3F, 0x7A, 0xEF, 0x68, 0x34, 0x1C, 0x28, 0xAD, 0xC7, 0xC3, 0x41, 0x55, 0xE4, + 0xD7, 0x97, 0xD7, 0xAB, 0xC5, 0x6A, 0x32, 0x2C, 0xA4, 0xE4, 0x11, 0x13, 0x21, 0xF8, 0xAB, 0xD3, + 0x8B, 0xE3, 0xD3, 0xAB, 0xA3, 0xC3, 0xBD, 0x44, 0x4C, 0x89, 0x08, 0x4D, 0x26, 0xE3, 0xF5, 0xBA, + 0xD6, 0x7D, 0xC7, 0x18, 0x3B, 0xD8, 0x2B, 0x01, 0x00, 0x62, 0xE8, 0xBB, 0x7E, 0x77, 0x32, 0x34, + 0xBD, 0xFA, 0xEC, 0xF3, 0x2F, 0x0F, 0x0F, 0xF6, 0x22, 0xC2, 0x5C, 0x8A, 0xF7, 0x1E, 0x1E, 0xFD, + 0xFC, 0x17, 0x33, 0x29, 0xBC, 0xE0, 0xCC, 0x58, 0x97, 0xAE, 0x08, 0xB2, 0x65, 0x62, 0xCB, 0x4C, + 0x58, 0xEB, 0xAC, 0x35, 0x04, 0x23, 0x44, 0x48, 0x70, 0xB6, 0x2C, 0xB2, 0xC9, 0x78, 0x50, 0x37, + 0x6D, 0x9E, 0xC9, 0x36, 0x86, 0xB6, 0xEB, 0x10, 0x86, 0x7F, 0xF4, 0xE3, 0x3F, 0xC8, 0xA5, 0xF8, + 0xDB, 0xBF, 0xFF, 0xD5, 0xC1, 0xDE, 0x74, 0x36, 0x5F, 0xF6, 0x5D, 0x1F, 0x43, 0x18, 0x54, 0x85, + 0x94, 0x32, 0x49, 0x32, 0x63, 0x0C, 0xD6, 0xDA, 0x24, 0xC5, 0x4D, 0x61, 0xDD, 0xC6, 0xBA, 0x1C, + 0xA0, 0x28, 0x64, 0xDB, 0x29, 0x42, 0xE8, 0xD7, 0xCF, 0x8E, 0x7F, 0xF0, 0xE4, 0xE1, 0xC1, 0xFE, + 0x4E, 0xAF, 0x0C, 0xC1, 0x28, 0xC6, 0x98, 0x0E, 0xCB, 0xB0, 0xF1, 0xC2, 0x86, 0xF9, 0x72, 0x05, + 0x08, 0x73, 0xCE, 0xDB, 0xAE, 0x8B, 0x00, 0x6D, 0xD7, 0x13, 0x8C, 0x11, 0xC6, 0x10, 0x83, 0x52, + 0xE9, 0xFE, 0x71, 0x9C, 0xC9, 0xE0, 0x43, 0xC2, 0xBF, 0x63, 0x88, 0xCE, 0xA7, 0x68, 0xFA, 0xB0, + 0x6E, 0x3A, 0x8C, 0x49, 0x88, 0xD1, 0xFB, 0x90, 0xB4, 0x19, 0x98, 0x10, 0x8E, 0x90, 0x71, 0xCE, + 0x1B, 0xAB, 0xB5, 0x49, 0x2E, 0xDE, 0x9C, 0xB0, 0x9B, 0xF9, 0x2A, 0x8E, 0x07, 0xB9, 0xE4, 0x8C, + 0x91, 0x10, 0x63, 0x70, 0xC1, 0x24, 0xE8, 0x00, 0xB3, 0x00, 0x21, 0xC4, 0xD8, 0x34, 0xFD, 0xBA, + 0x69, 0x19, 0xE3, 0x8C, 0x12, 0xEB, 0x3D, 0xE3, 0x29, 0x3E, 0x12, 0xE1, 0x80, 0x22, 0xA0, 0x2D, + 0xFD, 0x08, 0x18, 0xA3, 0x04, 0xA3, 0xA6, 0xED, 0x19, 0x63, 0x92, 0xF3, 0x10, 0x43, 0x55, 0x16, + 0x5A, 0x99, 0x08, 0x51, 0x72, 0xC6, 0x19, 0x9D, 0xAF, 0x56, 0x5A, 0x9B, 0x22, 0x93, 0x9C, 0xD3, + 0xCF, 0x3E, 0xFF, 0xD2, 0x3A, 0xF7, 0xE8, 0xE1, 0xFD, 0xBD, 0xBD, 0x9D, 0xF1, 0x68, 0x60, 0x8C, + 0x99, 0x2F, 0x96, 0x37, 0xF3, 0xE5, 0xC3, 0xA3, 0xBD, 0x47, 0x0F, 0x0E, 0xFF, 0xF7, 0xFF, 0xF3, + 0xDF, 0x18, 0xE3, 0xFA, 0x5E, 0x7D, 0xFE, 0xC5, 0xB3, 0x47, 0x0F, 0xEF, 0xBD, 0x7E, 0x73, 0xFA, + 0xE0, 0xC1, 0x21, 0x06, 0xF8, 0xDE, 0x07, 0x0F, 0x87, 0x83, 0x8A, 0x53, 0xEC, 0x9C, 0xE7, 0x8C, + 0x9E, 0x9C, 0x5D, 0x9C, 0xBC, 0xBD, 0x3E, 0x7D, 0x7B, 0x95, 0x66, 0x05, 0x6D, 0x6C, 0x08, 0x8A, + 0x10, 0x9C, 0x49, 0x99, 0x42, 0x66, 0xA4, 0x14, 0x94, 0x92, 0xBE, 0x8F, 0x52, 0x30, 0x8C, 0x09, + 0x63, 0xAC, 0x2A, 0x0B, 0x9D, 0xB0, 0x30, 0xEF, 0x8B, 0x5C, 0x66, 0x99, 0x18, 0x56, 0x45, 0xAF, + 0x4D, 0x99, 0xE7, 0xCE, 0x59, 0x4A, 0x69, 0x55, 0x64, 0xE7, 0x17, 0x97, 0xA9, 0x17, 0x1B, 0x94, + 0x39, 0x20, 0xA0, 0x18, 0x91, 0xBF, 0xF8, 0x8B, 0x3F, 0x4F, 0xB0, 0x53, 0x82, 0x30, 0x51, 0xBA, + 0xC5, 0x13, 0x7B, 0x2B, 0x04, 0x1F, 0x12, 0xA7, 0x3A, 0xC4, 0x10, 0x9C, 0x0F, 0xC9, 0xA7, 0x2C, + 0x2B, 0x72, 0x2E, 0x44, 0x82, 0x9C, 0x93, 0x63, 0x54, 0x4A, 0x7E, 0x86, 0x44, 0x2E, 0xC5, 0x89, + 0xF0, 0xF0, 0x0E, 0xA2, 0xFA, 0xFD, 0x85, 0xEC, 0x16, 0x05, 0xFB, 0x3D, 0x78, 0x7F, 0x8C, 0x31, + 0xDC, 0x42, 0xAC, 0x11, 0xA2, 0xF7, 0xCE, 0xB9, 0xE0, 0x7D, 0x4C, 0xCB, 0x2C, 0x92, 0x12, 0x75, + 0xF0, 0xA6, 0xDD, 0xDF, 0x4C, 0x88, 0xDB, 0xDC, 0xB7, 0xB8, 0xD1, 0xC6, 0x25, 0x0D, 0x12, 0x6C, + 0xF6, 0x8F, 0x9B, 0xA3, 0x74, 0x43, 0xB5, 0xBC, 0xFD, 0xA6, 0xDB, 0x9F, 0x25, 0xED, 0x40, 0x37, + 0xAB, 0xF6, 0x8D, 0x7F, 0x1E, 0xD2, 0x4D, 0xDD, 0x35, 0x35, 0xA5, 0x2C, 0xCB, 0x32, 0x4A, 0x31, + 0xA1, 0x74, 0xB6, 0xEC, 0x5B, 0xED, 0x8D, 0xF3, 0x4A, 0x9B, 0x18, 0xC1, 0x3A, 0x27, 0x39, 0x3F, + 0xD8, 0xDF, 0x29, 0x8A, 0x5C, 0x48, 0x81, 0x11, 0x4A, 0x66, 0x41, 0x31, 0x46, 0xE7, 0xBC, 0x0F, + 0x5E, 0x5B, 0x1B, 0x01, 0x8C, 0xB1, 0x3A, 0xF9, 0xFF, 0x08, 0x56, 0x96, 0x39, 0xE7, 0xCC, 0x28, + 0xDD, 0x6B, 0x35, 0x1A, 0x94, 0x87, 0xFB, 0xE3, 0xC1, 0xA0, 0x44, 0x77, 0x4C, 0x41, 0x62, 0x22, + 0xC1, 0xF8, 0x80, 0x62, 0xB0, 0x46, 0x9D, 0x9E, 0x5D, 0x7D, 0xF6, 0xE5, 0xCB, 0x17, 0xAF, 0xCF, + 0x7D, 0x80, 0xA6, 0xD3, 0x6F, 0xDE, 0x5E, 0xF7, 0xCA, 0x7A, 0x1F, 0xCB, 0xB2, 0xC8, 0xA4, 0x20, + 0x84, 0x0C, 0x87, 0x03, 0x63, 0xDD, 0x72, 0xDD, 0x58, 0xEB, 0x11, 0x26, 0x5D, 0xDF, 0x3B, 0x1F, + 0xDE, 0xBE, 0xBD, 0xCA, 0x32, 0xD1, 0xB7, 0xDD, 0xC5, 0xC5, 0xEC, 0xF4, 0xEC, 0xBC, 0xC8, 0x05, + 0xA7, 0x78, 0x3E, 0x5F, 0xDE, 0xDC, 0xAC, 0xCF, 0x2F, 0xAE, 0x5E, 0xBF, 0x39, 0x59, 0x2E, 0x57, + 0x14, 0x83, 0xEA, 0xFB, 0xC5, 0x62, 0xD5, 0xB6, 0xDD, 0x7A, 0xBD, 0x5E, 0x2E, 0x57, 0x27, 0x27, + 0xE7, 0xAB, 0x75, 0xDB, 0x36, 0x9D, 0x56, 0x3A, 0x2B, 0x0A, 0xC6, 0xC4, 0x7C, 0xDD, 0xD4, 0x75, + 0xAB, 0x8C, 0x3B, 0x39, 0xBB, 0xF8, 0xC5, 0xA7, 0x9F, 0xBF, 0x3E, 0x7E, 0xDB, 0x76, 0xE6, 0xF8, + 0xF4, 0xA2, 0x6E, 0xD5, 0x17, 0x5F, 0x3E, 0x2B, 0x72, 0x39, 0x1C, 0x56, 0x75, 0xDD, 0x70, 0xC6, + 0x26, 0x3B, 0xA3, 0xA3, 0xA3, 0x7D, 0xCE, 0xE8, 0x9B, 0xE3, 0xB7, 0x2E, 0xC0, 0xEE, 0xEE, 0xAE, + 0xF5, 0x81, 0x32, 0x36, 0x1C, 0x56, 0x08, 0xE1, 0xA6, 0xEB, 0xD3, 0x80, 0x3F, 0x9B, 0x2D, 0x3A, + 0x65, 0x86, 0x83, 0xC2, 0x18, 0x5B, 0xE4, 0x19, 0x67, 0x84, 0x50, 0xB2, 0x33, 0x1E, 0x49, 0xC1, + 0x11, 0xC0, 0xC5, 0xC5, 0xAC, 0xAA, 0x4A, 0x21, 0xF8, 0xCD, 0x62, 0xE5, 0xAC, 0x5D, 0xAE, 0xD6, + 0x5B, 0x53, 0x72, 0x00, 0x14, 0x05, 0xE7, 0xC9, 0xDC, 0x06, 0x21, 0x9C, 0xC2, 0x09, 0x37, 0x38, + 0x1A, 0xC6, 0x00, 0x68, 0x34, 0x1C, 0x24, 0xC3, 0x99, 0xBE, 0xD7, 0x21, 0xC6, 0xE9, 0x64, 0xBC, + 0xB7, 0x3B, 0xB9, 0xB8, 0x9C, 0x11, 0x4A, 0x9B, 0xA6, 0x09, 0x31, 0x24, 0xB7, 0x19, 0x9C, 0x58, + 0x63, 0x21, 0x14, 0x79, 0x46, 0x09, 0xE9, 0x94, 0xD2, 0xC6, 0x0D, 0x87, 0x15, 0x41, 0xD8, 0x79, + 0x6F, 0xAC, 0xCB, 0xA4, 0x28, 0x8A, 0xBC, 0x6E, 0x3A, 0xC1, 0x58, 0xD7, 0x2B, 0xA5, 0xF5, 0x74, + 0x32, 0xCC, 0x33, 0x11, 0x63, 0xC4, 0x5B, 0x5E, 0x7F, 0xBA, 0x82, 0x30, 0x42, 0x9F, 0x7E, 0xFE, + 0x74, 0xBE, 0xAC, 0x11, 0x8A, 0x31, 0x44, 0x2E, 0x78, 0x5A, 0x88, 0x27, 0xBF, 0x79, 0x46, 0x49, + 0x62, 0xE4, 0x4B, 0xC9, 0x93, 0x45, 0x9E, 0x60, 0x04, 0x22, 0xB8, 0xB0, 0xC9, 0x8A, 0x8E, 0x01, + 0x36, 0x22, 0x6D, 0x88, 0x21, 0x82, 0xD2, 0xB6, 0x69, 0xFB, 0xE4, 0xC0, 0x0E, 0x00, 0xD6, 0x59, + 0x8C, 0x49, 0xF0, 0xDE, 0x79, 0x8F, 0x11, 0x9E, 0x4E, 0x86, 0x52, 0x70, 0x6B, 0xDD, 0x96, 0x42, + 0x14, 0x43, 0x08, 0xDE, 0x85, 0x10, 0x42, 0xAF, 0x8C, 0xD2, 0xD6, 0x58, 0xEF, 0xB6, 0x14, 0x5E, + 0xBB, 0x21, 0x91, 0x6D, 0x6E, 0x64, 0xEF, 0x1D, 0xA7, 0x2C, 0x21, 0xCE, 0xC6, 0x5A, 0x00, 0x44, + 0x08, 0x49, 0xAC, 0x7D, 0x80, 0x98, 0x9C, 0x2C, 0x31, 0x02, 0xAD, 0x4D, 0xD3, 0x76, 0x94, 0xD2, + 0x22, 0x17, 0x07, 0x07, 0xFB, 0xD6, 0xB9, 0xAA, 0xCC, 0x23, 0x80, 0xCC, 0x44, 0x26, 0x05, 0x63, + 0xF4, 0x7A, 0xB6, 0x18, 0x0F, 0x87, 0x52, 0xB0, 0x7F, 0xFC, 0x93, 0x8F, 0x57, 0x4D, 0xBF, 0x98, + 0xAF, 0xDB, 0xB6, 0x7B, 0x73, 0x7A, 0x2E, 0x84, 0xDC, 0x9D, 0xEE, 0x7C, 0xF8, 0xF8, 0x61, 0x26, + 0x79, 0x02, 0x80, 0xFE, 0xF6, 0xEF, 0x3F, 0xFF, 0xF2, 0x9B, 0xE7, 0x93, 0xD1, 0xE0, 0xB3, 0x2F, + 0x9E, 0x09, 0x21, 0xD6, 0x75, 0x27, 0x04, 0x13, 0x9C, 0x33, 0x4A, 0xC6, 0xA3, 0x01, 0x63, 0xCC, + 0x18, 0x93, 0x09, 0x3E, 0x1D, 0x0F, 0xF7, 0x76, 0xC7, 0x45, 0x2E, 0xF2, 0x4C, 0x60, 0x8C, 0x11, + 0x02, 0x1F, 0x42, 0x96, 0xC9, 0x3C, 0x97, 0x21, 0x04, 0x82, 0xC9, 0x83, 0xFB, 0xFB, 0x0F, 0xEF, + 0xEF, 0x4F, 0x27, 0xA3, 0x87, 0xF7, 0x0F, 0xF7, 0xA6, 0xE3, 0x22, 0x93, 0xE3, 0xD1, 0x20, 0x97, + 0xDC, 0x1A, 0x27, 0x04, 0xCB, 0x33, 0x91, 0x67, 0x22, 0xA4, 0xB4, 0x8D, 0x9F, 0xFD, 0xEC, 0x2F, + 0x92, 0x5F, 0x02, 0x20, 0x84, 0x30, 0xA1, 0x8C, 0x11, 0x4A, 0x31, 0xA1, 0x08, 0x23, 0x4C, 0x28, + 0x46, 0x38, 0x01, 0x68, 0x08, 0x01, 0xC1, 0x1B, 0xDB, 0x9C, 0x2C, 0xCB, 0x31, 0x41, 0xE9, 0xE5, + 0x10, 0x42, 0x48, 0x29, 0x38, 0xE7, 0xE9, 0x2D, 0xA1, 0x8C, 0x11, 0xF6, 0x0E, 0x4F, 0xFD, 0xFF, + 0xF8, 0xF8, 0xCE, 0xBC, 0x99, 0x2E, 0x14, 0x78, 0xE7, 0xED, 0xBA, 0xAD, 0x2C, 0xDB, 0xF5, 0x70, + 0x22, 0x5B, 0xA5, 0x8F, 0x44, 0x84, 0xB7, 0xFA, 0x91, 0xF4, 0xD5, 0x1B, 0xDE, 0x33, 0xA0, 0x98, + 0xB8, 0x3E, 0x77, 0xDB, 0x9C, 0x77, 0x83, 0x2C, 0x22, 0xDB, 0xDA, 0xBD, 0xD9, 0x8C, 0xA2, 0xCD, + 0x73, 0x6E, 0x63, 0xA4, 0x01, 0x61, 0x42, 0x55, 0xBD, 0xD0, 0xAA, 0x8F, 0x01, 0xB2, 0x5C, 0x58, + 0x1F, 0xDF, 0xBC, 0x5D, 0x36, 0xCA, 0xA7, 0x3D, 0x51, 0xAF, 0x94, 0xF7, 0x31, 0x02, 0x12, 0x82, + 0xE7, 0x99, 0x48, 0x32, 0xE0, 0x34, 0xBF, 0xC4, 0x08, 0xD6, 0x79, 0x6D, 0x4C, 0xFA, 0xFF, 0x10, + 0xA2, 0x77, 0x01, 0x21, 0xC4, 0x18, 0xE5, 0x82, 0x73, 0x46, 0x19, 0x21, 0x21, 0x86, 0xAA, 0xCC, + 0xF7, 0xF7, 0x26, 0xD5, 0xB0, 0xA2, 0x84, 0xC4, 0xED, 0x00, 0x9D, 0xC8, 0x32, 0x8C, 0x10, 0x6B, + 0xF5, 0xC5, 0xE5, 0xEC, 0xD3, 0xCF, 0x5F, 0xFC, 0xF2, 0xF3, 0x17, 0x57, 0x37, 0x2B, 0x4A, 0xD9, + 0xF5, 0x62, 0x7D, 0x7E, 0xB5, 0xC0, 0x08, 0x65, 0x59, 0xCE, 0x18, 0x4D, 0xAF, 0x9A, 0xB1, 0x6E, + 0xBE, 0xA8, 0x4F, 0xCF, 0x2E, 0x7E, 0xFE, 0xE9, 0xE7, 0x4A, 0x69, 0xCE, 0x59, 0xDD, 0x76, 0x6F, + 0x8E, 0xDF, 0x5E, 0x5E, 0xCD, 0x54, 0xD7, 0xFF, 0xF6, 0x8B, 0x6F, 0x56, 0x75, 0x53, 0xE4, 0x39, + 0x25, 0xF0, 0xE8, 0xFE, 0xC1, 0x7C, 0xB9, 0x3E, 0x7B, 0x7B, 0x49, 0x08, 0x79, 0x70, 0xFF, 0xB0, + 0x2A, 0x8B, 0xE1, 0xA0, 0x8C, 0x11, 0x08, 0x25, 0xB9, 0x60, 0x28, 0xC6, 0x24, 0xA4, 0x48, 0x5A, + 0xC5, 0xD1, 0x68, 0xE8, 0x9C, 0xF7, 0x11, 0x96, 0xEB, 0xF6, 0xF9, 0x8B, 0x63, 0x6B, 0x7D, 0x26, + 0x84, 0x73, 0x61, 0xBA, 0xBB, 0xB3, 0xB7, 0x3B, 0xB9, 0x59, 0xAC, 0xDE, 0xBC, 0x39, 0xB9, 0xBC, + 0xBC, 0x7E, 0xF5, 0xE6, 0xF4, 0xC9, 0x07, 0x0F, 0x19, 0x25, 0x5D, 0xD7, 0x59, 0x63, 0x38, 0xA3, + 0x32, 0x2F, 0x44, 0x96, 0x2B, 0xA5, 0xAF, 0x67, 0x0B, 0x6B, 0xED, 0xA0, 0x2A, 0xEB, 0xA6, 0xBD, + 0x9E, 0xCD, 0x93, 0xF1, 0x61, 0xDB, 0xA9, 0xB6, 0xEB, 0x38, 0xA3, 0x9C, 0x33, 0x8C, 0x50, 0x8C, + 0xA1, 0x1A, 0x54, 0x55, 0x59, 0x3A, 0xE7, 0xBB, 0xAE, 0xC7, 0x84, 0x24, 0x76, 0xF8, 0x87, 0x8F, + 0xDF, 0x13, 0x52, 0x5C, 0xCF, 0x96, 0x4A, 0x29, 0x8C, 0xB1, 0xDB, 0xA4, 0x07, 0x21, 0x84, 0x21, + 0xA5, 0xC7, 0x27, 0x51, 0x9A, 0x10, 0x2C, 0x2F, 0x72, 0xC1, 0x59, 0xDD, 0x34, 0x79, 0x96, 0x85, + 0x10, 0x84, 0xE0, 0xBB, 0x3B, 0xE3, 0xF9, 0x62, 0x95, 0x32, 0xC4, 0x9C, 0x0B, 0xDF, 0x3C, 0x7B, + 0xD9, 0x34, 0xAD, 0x94, 0x82, 0x52, 0x6A, 0xB4, 0x49, 0x96, 0xAA, 0x29, 0x20, 0x46, 0x69, 0x4D, + 0x29, 0xAD, 0xAA, 0xC2, 0xFB, 0x60, 0x8D, 0xBD, 0xD5, 0x93, 0xA7, 0xE4, 0x51, 0x6D, 0xAC, 0xE0, + 0xCC, 0x58, 0x7B, 0x7A, 0x7E, 0xDD, 0x2B, 0xFD, 0x87, 0x1F, 0x3F, 0xB6, 0xD6, 0xA5, 0x41, 0x24, + 0x5D, 0x45, 0x08, 0x21, 0x88, 0xE1, 0x17, 0x9F, 0x7F, 0x53, 0x37, 0x7D, 0x3A, 0x22, 0x13, 0x17, + 0xC4, 0x5A, 0xBB, 0xBD, 0xD8, 0x20, 0x86, 0x90, 0x3C, 0xD3, 0x01, 0x80, 0x60, 0x44, 0x09, 0x62, + 0x94, 0x60, 0x4C, 0x30, 0x21, 0xC9, 0x54, 0x7D, 0xE3, 0x14, 0x16, 0xA3, 0xF3, 0xA1, 0x6D, 0xBB, + 0xE4, 0x8C, 0xEA, 0x7D, 0xF0, 0xDE, 0xDF, 0xD6, 0x3B, 0xAD, 0x0D, 0x26, 0x78, 0x58, 0x15, 0x49, + 0x16, 0x90, 0x64, 0x4C, 0xD6, 0x38, 0x6D, 0x5C, 0xA7, 0x0D, 0xC1, 0x38, 0xC6, 0x60, 0x7D, 0x68, + 0x7B, 0xE5, 0xBD, 0x4F, 0x61, 0x3D, 0x21, 0x80, 0x31, 0x36, 0x19, 0x43, 0x85, 0xE0, 0x11, 0xC2, + 0x21, 0x06, 0xCE, 0x68, 0x51, 0x66, 0xD6, 0x58, 0xCE, 0x39, 0x63, 0x84, 0x31, 0x8A, 0x30, 0xA4, + 0xEE, 0x52, 0x6B, 0xA3, 0x8D, 0x6D, 0x9A, 0x16, 0x10, 0x2E, 0x8B, 0x7C, 0xBE, 0x58, 0x95, 0x65, + 0x59, 0x96, 0x25, 0xC2, 0xF8, 0x7B, 0x1F, 0x3C, 0x7C, 0xFC, 0xDE, 0x51, 0x9E, 0x8B, 0xC9, 0x64, + 0x7C, 0x7E, 0x71, 0x4D, 0x09, 0xBD, 0xBE, 0x59, 0x44, 0x04, 0xC6, 0xFA, 0x37, 0x27, 0x6F, 0xCB, + 0x3C, 0x3B, 0xD8, 0xDF, 0x3B, 0x38, 0x3C, 0x58, 0xAD, 0xEB, 0x07, 0x47, 0xFB, 0x84, 0xE0, 0xA6, + 0x53, 0x17, 0x97, 0xF3, 0xB3, 0xF3, 0xAB, 0x1F, 0x7E, 0xF4, 0x64, 0x3A, 0x1D, 0x5F, 0x5D, 0xCD, + 0xA5, 0x94, 0x29, 0x61, 0x7A, 0x50, 0x16, 0xCE, 0x6F, 0xC2, 0xB3, 0x29, 0x25, 0xA3, 0x61, 0x35, + 0x1A, 0x96, 0x83, 0x2A, 0x1B, 0x94, 0x05, 0x67, 0x14, 0xA5, 0x13, 0x2B, 0x02, 0x17, 0xAC, 0x69, + 0x7B, 0xA3, 0x37, 0x59, 0xD7, 0x79, 0x9E, 0x31, 0x46, 0x29, 0x41, 0x21, 0x06, 0xC6, 0x18, 0xA5, + 0xC4, 0x18, 0x5B, 0x94, 0x59, 0x55, 0x66, 0x99, 0x14, 0x89, 0xFF, 0xCC, 0x28, 0x25, 0x7F, 0xF9, + 0xB3, 0xBF, 0xD8, 0x84, 0xF6, 0xA1, 0x84, 0xF1, 0x13, 0x42, 0xEF, 0x46, 0x7F, 0x63, 0x82, 0x92, + 0x2F, 0x18, 0xE2, 0x9C, 0x61, 0x82, 0x29, 0xA1, 0x42, 0x4A, 0x92, 0x60, 0x75, 0x42, 0xEF, 0xF2, + 0x24, 0x36, 0x0B, 0x41, 0xF8, 0x56, 0x93, 0xF5, 0x0E, 0xE3, 0xFF, 0x7F, 0xDB, 0x03, 0xC0, 0xB6, + 0x1B, 0x01, 0x94, 0x78, 0x35, 0x11, 0x50, 0x04, 0x14, 0xD3, 0xD1, 0x17, 0x51, 0xA4, 0x94, 0x30, + 0xCA, 0x31, 0xC2, 0x11, 0x60, 0x0B, 0x86, 0xC5, 0xAD, 0x3B, 0x6C, 0xDA, 0x8B, 0x6F, 0xB7, 0x07, + 0x1B, 0xEA, 0xD5, 0xB7, 0xB8, 0x57, 0xDB, 0x7F, 0x0B, 0x27, 0xFB, 0xE2, 0x2D, 0x74, 0x9B, 0xAE, + 0x39, 0x8C, 0x31, 0x4E, 0xEE, 0x3D, 0x10, 0x23, 0x40, 0x24, 0x04, 0x39, 0x67, 0x66, 0x97, 0x57, + 0xCB, 0x5A, 0xF9, 0x88, 0x22, 0x62, 0xD7, 0x2B, 0xED, 0x81, 0x94, 0x45, 0x16, 0x82, 0xDF, 0x54, + 0x3A, 0x8C, 0x38, 0xA5, 0x59, 0x2E, 0x72, 0x29, 0x93, 0x11, 0x6D, 0x9A, 0x80, 0xFC, 0x66, 0x77, + 0xB2, 0x69, 0x02, 0xD3, 0x31, 0x89, 0x30, 0x22, 0x14, 0x33, 0x4A, 0x29, 0xC1, 0x94, 0xD2, 0x4C, + 0x8A, 0xAA, 0x2A, 0x64, 0x26, 0x10, 0xDA, 0x58, 0x8D, 0xC7, 0x10, 0x31, 0x44, 0x82, 0xD1, 0x7A, + 0x5D, 0xBF, 0x7C, 0x7D, 0xF6, 0xD5, 0xD3, 0x93, 0x4F, 0x3F, 0x7F, 0x71, 0xB3, 0xEA, 0x12, 0x02, + 0xAD, 0xB5, 0xE3, 0x8C, 0x15, 0x79, 0x66, 0x8D, 0x5D, 0xAE, 0x9A, 0xE0, 0xCC, 0x62, 0xB9, 0x0E, + 0x80, 0xBF, 0xFC, 0xE6, 0xC5, 0xC9, 0xE9, 0xE5, 0xC9, 0xD9, 0xF9, 0x74, 0x3A, 0x8E, 0x31, 0x5E, + 0x5E, 0xDD, 0x34, 0x6D, 0xAF, 0x94, 0xE6, 0x8C, 0xBD, 0x7D, 0x7B, 0x19, 0x63, 0xCC, 0xB3, 0x2C, + 0xCF, 0xB2, 0xE0, 0xBD, 0xF7, 0xE1, 0x7A, 0xB6, 0xE8, 0x3A, 0x35, 0x1A, 0x0D, 0x26, 0x93, 0x51, + 0x9E, 0xE7, 0xD6, 0xB9, 0xE9, 0x78, 0xB8, 0xBF, 0x3B, 0xB9, 0x7F, 0x6F, 0xEF, 0x60, 0x7F, 0x37, + 0xC6, 0xC8, 0xA5, 0xE0, 0x82, 0xE7, 0x59, 0xEE, 0xBC, 0x7F, 0x7B, 0x39, 0x6B, 0xDA, 0xBE, 0x69, + 0xBB, 0xE1, 0x60, 0xB0, 0xBB, 0x3B, 0xE5, 0x9C, 0x9D, 0x5F, 0x5C, 0x2F, 0x57, 0xEB, 0x97, 0xAF, + 0x4E, 0xD6, 0xAB, 0x15, 0x42, 0x68, 0x50, 0xE6, 0x9C, 0xD2, 0xB3, 0xF3, 0xCB, 0x4F, 0x3E, 0x7A, + 0x32, 0x1C, 0x94, 0xAB, 0xBA, 0xED, 0x3A, 0x85, 0x10, 0xA6, 0x94, 0x51, 0xC6, 0xDA, 0x4E, 0xB5, + 0x9D, 0x5A, 0x2D, 0xD7, 0x6D, 0xDD, 0x2A, 0xAD, 0x11, 0xC6, 0x83, 0x41, 0xE5, 0xBD, 0xEF, 0xBB, + 0x9E, 0x73, 0x96, 0x17, 0x39, 0x63, 0x34, 0xCB, 0x32, 0xC6, 0x58, 0x8C, 0xB1, 0xEB, 0xFB, 0xBE, + 0xD7, 0xC1, 0x07, 0x21, 0xB8, 0xB1, 0xF6, 0xCB, 0xAF, 0x9E, 0xED, 0x4D, 0x77, 0x76, 0x77, 0x77, + 0x6E, 0x6E, 0x96, 0x00, 0x60, 0x8C, 0x21, 0x1B, 0x6D, 0x56, 0xA4, 0x94, 0xA6, 0xE8, 0x46, 0x8C, + 0x91, 0xD6, 0x36, 0x7A, 0x9F, 0x4B, 0x41, 0x30, 0x56, 0x5A, 0x03, 0x20, 0x29, 0x45, 0xE2, 0x31, + 0x21, 0x84, 0xBA, 0xBE, 0xFF, 0xE9, 0x4F, 0xFE, 0x60, 0x3C, 0xAC, 0xBE, 0x7E, 0xFA, 0x72, 0x50, + 0x55, 0x18, 0x63, 0x6D, 0x4C, 0xB2, 0x1A, 0x47, 0xC9, 0xDD, 0x04, 0xE3, 0x5E, 0xA9, 0xAA, 0x2C, + 0x11, 0x46, 0xD7, 0x37, 0x0B, 0x29, 0xA4, 0x77, 0x5E, 0x69, 0x9B, 0x0C, 0x94, 0x93, 0x47, 0xA0, + 0xB1, 0x0E, 0x01, 0x9C, 0x5F, 0xDE, 0xF8, 0xE0, 0xFF, 0xE0, 0xC3, 0x47, 0xC9, 0x63, 0x0E, 0x20, + 0x4A, 0xCE, 0x87, 0x55, 0xD6, 0x74, 0xDD, 0xDF, 0xFC, 0xFC, 0xCB, 0x34, 0x34, 0x61, 0x8C, 0x09, + 0xC6, 0xC6, 0xDA, 0x10, 0x02, 0xE7, 0x3C, 0xC4, 0x68, 0xB4, 0xA1, 0x04, 0x27, 0xA0, 0x07, 0x20, + 0x32, 0x46, 0x04, 0x67, 0x45, 0x91, 0x13, 0x42, 0x28, 0x46, 0x99, 0xE0, 0x22, 0x13, 0x9C, 0x51, + 0x46, 0x49, 0x08, 0xD1, 0x79, 0xDF, 0x76, 0x3D, 0x42, 0x28, 0xCB, 0x64, 0xAA, 0xD1, 0xC9, 0xD7, + 0xD3, 0x85, 0x40, 0x09, 0x21, 0x04, 0x17, 0x85, 0x10, 0x8C, 0x39, 0xEF, 0x29, 0x26, 0x5A, 0xDB, + 0xBA, 0xED, 0x51, 0x8A, 0xB6, 0x45, 0x40, 0x08, 0xA9, 0xDB, 0xCE, 0x59, 0x07, 0x08, 0xE5, 0x99, + 0x8C, 0x21, 0x12, 0x8C, 0xCA, 0x22, 0xDB, 0x9B, 0x8E, 0x19, 0xA5, 0x75, 0xD3, 0xE6, 0x79, 0x46, + 0x30, 0x26, 0x94, 0xA4, 0xB2, 0x15, 0x63, 0x64, 0x9C, 0x15, 0x99, 0x44, 0x31, 0xD6, 0x6D, 0x6F, + 0xAD, 0xED, 0xB5, 0x6E, 0x9B, 0x0E, 0x23, 0xF4, 0xF8, 0x83, 0x47, 0x93, 0x9D, 0x91, 0x31, 0xEE, + 0xFC, 0xFC, 0xBA, 0x2C, 0xCB, 0xA4, 0x61, 0xBA, 0xBA, 0x59, 0xC4, 0x00, 0x55, 0x21, 0x6F, 0x6E, + 0x56, 0xC7, 0xA7, 0xE7, 0x27, 0x67, 0xE7, 0xBF, 0xFC, 0xF5, 0x57, 0x97, 0x57, 0x37, 0x31, 0xC6, + 0x22, 0xCF, 0x92, 0x4D, 0x96, 0x0F, 0x41, 0x6B, 0xFB, 0xCD, 0xF3, 0x37, 0xFF, 0xF6, 0xDF, 0xFD, + 0xEA, 0xF3, 0x2F, 0xBE, 0x39, 0xD8, 0x1D, 0xFF, 0xA7, 0xFF, 0xEC, 0xA7, 0xFF, 0xEE, 0x17, 0xBF, + 0x61, 0x9C, 0xAF, 0x56, 0x75, 0xF0, 0x1E, 0x00, 0x06, 0x65, 0x4E, 0x09, 0xE9, 0x95, 0xAA, 0x9B, + 0x96, 0x51, 0xF6, 0xF0, 0xFE, 0xFE, 0xCE, 0x64, 0xC0, 0x19, 0x4D, 0xF2, 0xC7, 0x64, 0xD0, 0x16, + 0x62, 0xB4, 0xD6, 0x49, 0xC1, 0xCB, 0x22, 0xD3, 0xC6, 0x22, 0x80, 0x4C, 0xF2, 0x18, 0xA3, 0xE4, + 0x9C, 0x31, 0xAA, 0xB4, 0x01, 0x00, 0x42, 0x88, 0xE0, 0x4C, 0x6E, 0x0A, 0x18, 0xF1, 0x21, 0x86, + 0xE0, 0xC9, 0x5F, 0xFE, 0xE5, 0xCF, 0x36, 0x88, 0xD1, 0x26, 0x7E, 0x3C, 0xF9, 0xF7, 0x6F, 0xAA, + 0x40, 0x04, 0x00, 0x4C, 0x92, 0x41, 0x42, 0x62, 0xE5, 0x31, 0x21, 0x98, 0x10, 0x38, 0x41, 0x97, + 0x1B, 0x8E, 0x57, 0x8C, 0x31, 0x04, 0xEF, 0x21, 0x42, 0xF4, 0xEE, 0xB6, 0x30, 0xC5, 0x10, 0x62, + 0xF0, 0x46, 0xF7, 0x56, 0x2B, 0xBC, 0x89, 0x29, 0x8E, 0x5B, 0x0F, 0xFD, 0x6F, 0xD7, 0xAF, 0xDB, + 0x7A, 0x07, 0x00, 0x9B, 0xC3, 0xEE, 0x16, 0x3D, 0x4B, 0x75, 0x27, 0x26, 0x18, 0x0B, 0xB6, 0x5F, + 0x16, 0x20, 0x6C, 0xA3, 0xA0, 0xB7, 0xD4, 0x9E, 0x6D, 0x10, 0x4B, 0x1A, 0x72, 0xEF, 0x3E, 0x7F, + 0xDC, 0xF6, 0xE2, 0x08, 0xE3, 0x4D, 0x0D, 0xBB, 0xD3, 0xBB, 0xA5, 0x4E, 0x74, 0xDB, 0x00, 0x42, + 0x04, 0x20, 0x84, 0x5E, 0x5E, 0x5E, 0x7E, 0xF6, 0xD9, 0xD7, 0xBD, 0x89, 0xC6, 0x43, 0xA7, 0xBD, + 0x76, 0x91, 0x32, 0x56, 0xE4, 0x79, 0x8C, 0xE0, 0x7C, 0xF0, 0x31, 0xA4, 0x7D, 0xAA, 0x94, 0x3C, + 0xA5, 0x8D, 0xDE, 0xFE, 0x22, 0xA9, 0x78, 0xA5, 0x95, 0xFF, 0x2D, 0x32, 0x92, 0xBA, 0x3D, 0x8C, + 0x71, 0x88, 0x11, 0x21, 0x9C, 0x38, 0x04, 0x18, 0x93, 0x34, 0xEF, 0x78, 0xEB, 0x19, 0x21, 0x14, + 0xC3, 0xAA, 0x6E, 0x7E, 0xF3, 0xF5, 0xAB, 0x7F, 0xF3, 0x77, 0xBF, 0xF9, 0xFA, 0xD9, 0xE9, 0x8B, + 0xE3, 0x0B, 0x21, 0x65, 0x32, 0x0E, 0xCA, 0xA4, 0xA4, 0x14, 0x4B, 0x29, 0x9A, 0xB6, 0x7B, 0x73, + 0xF2, 0x76, 0x36, 0x9B, 0xDD, 0xDC, 0xAC, 0x1C, 0xA0, 0x8B, 0xEB, 0x45, 0xD3, 0x74, 0x4D, 0xD7, + 0x5B, 0x63, 0x38, 0x63, 0xEF, 0xBF, 0xFF, 0x70, 0x6F, 0x7F, 0xCF, 0x38, 0x77, 0x73, 0x33, 0xBF, + 0xB9, 0x99, 0x03, 0xC4, 0xF1, 0xA0, 0xE2, 0x9C, 0xAF, 0xD6, 0x75, 0xF0, 0x61, 0xB9, 0xAA, 0x63, + 0x84, 0xBD, 0xE9, 0x38, 0x06, 0x7F, 0x73, 0xB3, 0x38, 0x3D, 0x7D, 0xBB, 0x58, 0x2C, 0xF7, 0xA6, + 0x93, 0xF1, 0xA0, 0x1C, 0x0F, 0x0B, 0x82, 0xB1, 0x0F, 0x00, 0x08, 0x9F, 0xBD, 0xBD, 0xB4, 0x2E, + 0xAC, 0xEB, 0xCE, 0xFA, 0xF8, 0xF5, 0xD3, 0x57, 0x31, 0x80, 0x36, 0xF6, 0x57, 0xBF, 0xFE, 0xE2, + 0x97, 0x9F, 0x7D, 0xD1, 0x2B, 0xBD, 0xAE, 0x6B, 0x4E, 0xF0, 0x74, 0x32, 0x2C, 0xF2, 0xCC, 0x79, + 0x2F, 0x04, 0x6F, 0xDA, 0xFE, 0xF8, 0xE4, 0x3C, 0x44, 0x78, 0xF1, 0xF2, 0x98, 0x31, 0xD6, 0x34, + 0xAD, 0x75, 0x9E, 0x32, 0x7A, 0x78, 0xB8, 0xB7, 0xBF, 0xB7, 0xB3, 0xB3, 0x33, 0x4E, 0xA6, 0x43, + 0x42, 0x8A, 0x2C, 0xCB, 0x8E, 0x8E, 0x0E, 0x8B, 0x42, 0x16, 0xB9, 0x18, 0x8F, 0x06, 0x3E, 0x84, + 0xB8, 0x09, 0x67, 0x40, 0xCE, 0x79, 0x63, 0xED, 0xB2, 0x6E, 0xDA, 0x4E, 0x75, 0x5D, 0x1F, 0x9C, + 0xFB, 0xED, 0x57, 0xCF, 0x31, 0xA1, 0x1F, 0x7C, 0xF0, 0x60, 0xB5, 0xAA, 0xDB, 0xAE, 0xBF, 0x7D, + 0x79, 0xB3, 0x4C, 0xA6, 0x04, 0x49, 0x8C, 0x09, 0xE7, 0x4C, 0x8A, 0xE4, 0x95, 0xE9, 0x19, 0xA5, + 0x8C, 0x52, 0xEB, 0x9D, 0xB5, 0x1E, 0x63, 0x64, 0x8C, 0xDD, 0xD9, 0x19, 0xFF, 0xF4, 0x8F, 0x3E, + 0x16, 0x52, 0x28, 0x65, 0xB4, 0xD6, 0x79, 0x26, 0x31, 0x46, 0x89, 0x67, 0x2F, 0x04, 0xE7, 0x9C, + 0xDD, 0x3B, 0xD8, 0x6B, 0xBB, 0xBE, 0x69, 0x3B, 0x6B, 0x5C, 0x8A, 0x59, 0xA0, 0x8C, 0x02, 0x02, + 0xE7, 0x3D, 0xE7, 0x2C, 0xCB, 0x84, 0xD6, 0xC6, 0x5A, 0x0B, 0x31, 0x22, 0x84, 0xDF, 0x9C, 0x5C, + 0x4C, 0x46, 0xE5, 0xE3, 0xF7, 0x0E, 0xBD, 0xF7, 0x65, 0x2E, 0x4F, 0xCF, 0xAF, 0x9E, 0xBE, 0x3C, + 0xFD, 0x9B, 0x9F, 0x7F, 0x71, 0x71, 0xBD, 0x48, 0x55, 0xAC, 0xEB, 0xFA, 0x10, 0x63, 0xD8, 0x5A, + 0x7A, 0x59, 0x6B, 0xB5, 0x56, 0x00, 0x50, 0x96, 0xC5, 0x76, 0xCB, 0x84, 0xA4, 0xE0, 0x5C, 0xF0, + 0x4D, 0xDB, 0x0E, 0xD1, 0x6D, 0xDD, 0xA9, 0xAD, 0x73, 0xA9, 0x8D, 0x12, 0x82, 0x3B, 0xBF, 0x09, + 0xD3, 0xF5, 0xDE, 0xA7, 0x02, 0xC1, 0x28, 0xE1, 0x8C, 0xA5, 0xA3, 0x98, 0x71, 0x06, 0x00, 0xBD, + 0xD2, 0x4D, 0xA7, 0xEA, 0xA6, 0xCB, 0x32, 0x89, 0x23, 0x38, 0xEF, 0x93, 0xFF, 0x84, 0x0F, 0x01, + 0x01, 0x2A, 0x72, 0x29, 0x04, 0xAD, 0x8A, 0x8C, 0x53, 0xD2, 0xB4, 0x3D, 0x42, 0xB8, 0x2C, 0x8A, + 0x00, 0x31, 0xBD, 0xC8, 0x14, 0x13, 0x4C, 0x08, 0x00, 0x08, 0xC6, 0xDA, 0xAE, 0x77, 0xD6, 0xF7, + 0xDA, 0xE4, 0x99, 0xE8, 0x7A, 0xB5, 0x5A, 0xD5, 0xD6, 0xC7, 0xB7, 0x17, 0xB3, 0x3C, 0xCB, 0xCA, + 0x22, 0xFF, 0xE8, 0x07, 0x8F, 0x8D, 0x31, 0x82, 0xF3, 0x67, 0x2F, 0x8E, 0x2F, 0xAE, 0x66, 0x52, + 0x88, 0x9B, 0xC5, 0xF2, 0xD9, 0xF3, 0x37, 0x42, 0x08, 0x2E, 0xB8, 0x52, 0x0A, 0x21, 0xB4, 0xAE, + 0x1B, 0x04, 0x68, 0x38, 0x1A, 0x32, 0x42, 0x96, 0xEB, 0xFA, 0x57, 0xBF, 0xFE, 0xA2, 0xAE, 0x1B, + 0xA5, 0x0D, 0x25, 0xE4, 0xE8, 0x68, 0xEF, 0xCD, 0xC9, 0xF9, 0x7A, 0x55, 0xAF, 0x9B, 0x76, 0xB1, + 0x5A, 0x0B, 0xC1, 0x27, 0xA3, 0x72, 0x34, 0x2C, 0x47, 0xC3, 0x6A, 0x34, 0xA8, 0xA6, 0x93, 0xE1, + 0xDE, 0x74, 0x54, 0x16, 0x92, 0x92, 0x8D, 0x61, 0x43, 0x9A, 0x25, 0x09, 0x46, 0x6D, 0xA7, 0x39, + 0x63, 0xC3, 0x41, 0x8E, 0x10, 0x26, 0x04, 0x53, 0x8A, 0x29, 0x21, 0xDE, 0xF9, 0xB6, 0x53, 0x5D, + 0xAF, 0x19, 0xA5, 0x65, 0x91, 0x71, 0x46, 0x53, 0xA1, 0xEF, 0xB5, 0x56, 0xC6, 0x3A, 0xEF, 0xC9, + 0x5F, 0xFC, 0xF9, 0x9F, 0xA7, 0x46, 0x08, 0xBE, 0xC5, 0xA9, 0x7A, 0x17, 0x81, 0x99, 0x1A, 0x2D, + 0x94, 0x2C, 0x70, 0x28, 0x23, 0x94, 0xDE, 0x72, 0x67, 0x9D, 0xB5, 0xCE, 0x98, 0xE0, 0x1D, 0x42, + 0x10, 0x82, 0x37, 0xAA, 0x77, 0x56, 0x13, 0x42, 0x10, 0xC6, 0xDE, 0x19, 0x67, 0x75, 0xDF, 0x34, + 0x6D, 0xD3, 0x76, 0x6D, 0xA7, 0xBA, 0x4E, 0x29, 0x65, 0xAD, 0xC5, 0x04, 0x41, 0x08, 0x28, 0xA5, + 0x21, 0xDD, 0x65, 0x6C, 0xC4, 0x88, 0xB6, 0xF0, 0x7F, 0xDA, 0x51, 0xA6, 0xB5, 0xE3, 0x6D, 0xE4, + 0xE7, 0x06, 0x96, 0x00, 0x84, 0xE0, 0xDD, 0x1A, 0x61, 0x53, 0xAE, 0xD0, 0xED, 0xF8, 0xB9, 0x7D, + 0x82, 0xDB, 0xE6, 0x7F, 0xFB, 0xA3, 0xC2, 0x36, 0x67, 0x00, 0x10, 0x24, 0x56, 0xD0, 0xB6, 0x80, + 0x92, 0xAD, 0x3B, 0xCB, 0x76, 0x0D, 0x4A, 0x48, 0x5B, 0xD7, 0x5F, 0x7E, 0xF9, 0x2C, 0x04, 0xA0, + 0x8C, 0x30, 0xC6, 0x9D, 0x0B, 0xD6, 0x05, 0x46, 0xE9, 0x3B, 0xE5, 0x23, 0xC1, 0x98, 0x60, 0x4A, + 0x89, 0x10, 0x7C, 0xB3, 0x8E, 0xDA, 0x3E, 0xC2, 0x36, 0x4F, 0x3C, 0xD1, 0x20, 0x7D, 0xCA, 0x43, + 0x44, 0x18, 0x21, 0xE4, 0xAC, 0x4F, 0x37, 0x0C, 0xC6, 0x18, 0x22, 0x38, 0xEF, 0x9D, 0x75, 0x31, + 0x46, 0xC6, 0xC8, 0x7C, 0xB1, 0xFA, 0xC5, 0x67, 0x4F, 0x3F, 0xFD, 0xCD, 0xCB, 0x57, 0x6F, 0xAE, + 0xA4, 0xCC, 0x76, 0x76, 0x76, 0xA4, 0xE0, 0x45, 0x9E, 0x23, 0x88, 0x59, 0x26, 0x19, 0xA5, 0xF3, + 0xE5, 0xFA, 0x57, 0xBF, 0xF9, 0x06, 0x10, 0xFE, 0xE7, 0x7F, 0xFA, 0x1F, 0xFD, 0xE1, 0x27, 0x1F, + 0xBE, 0xBD, 0x98, 0xBD, 0x3E, 0x3D, 0x97, 0x52, 0xBC, 0xF7, 0xF0, 0x88, 0x10, 0xE6, 0x43, 0x58, + 0xAE, 0xD6, 0xEB, 0xBA, 0x7D, 0xF1, 0xFA, 0x98, 0x20, 0x18, 0x95, 0xD9, 0x64, 0x58, 0x1E, 0xEE, + 0x4E, 0x08, 0xC2, 0x17, 0xD7, 0x37, 0xDA, 0x18, 0x63, 0x9C, 0xB1, 0x06, 0x01, 0x68, 0x63, 0x32, + 0xC1, 0x9F, 0x3C, 0xBA, 0x2F, 0x05, 0xDF, 0x9D, 0x8C, 0x26, 0xA3, 0x2A, 0x84, 0xE8, 0x7D, 0xB8, + 0x9A, 0xCD, 0x9F, 0x3E, 0x7B, 0x53, 0xB7, 0xCA, 0x39, 0xBF, 0xAC, 0x9B, 0xCB, 0xEB, 0x45, 0xDB, + 0x29, 0xCE, 0xF9, 0x62, 0xB5, 0xFE, 0xE2, 0xAB, 0xA7, 0x8B, 0xC5, 0x4A, 0x4A, 0xE9, 0xBD, 0x47, + 0x10, 0x87, 0x83, 0xA2, 0xED, 0x35, 0x42, 0x90, 0xCB, 0xAC, 0xED, 0x15, 0x00, 0xBA, 0x59, 0xD4, + 0xBF, 0xFE, 0xED, 0xD3, 0xD7, 0xC7, 0x6F, 0xCF, 0x2F, 0xAE, 0xEB, 0xBA, 0xDD, 0xDD, 0x9D, 0x24, + 0x12, 0x40, 0x52, 0x8C, 0xED, 0xEC, 0x8C, 0x76, 0xA7, 0x93, 0xE9, 0xCE, 0x78, 0x34, 0xAC, 0x8A, + 0x22, 0xAB, 0xCA, 0xB2, 0xEB, 0x3A, 0xEF, 0x42, 0x6A, 0x46, 0x18, 0x21, 0xC1, 0x87, 0xC5, 0x72, + 0x35, 0x5F, 0x2C, 0x75, 0xDF, 0x37, 0xEB, 0xA6, 0x69, 0x1A, 0x42, 0xB0, 0x76, 0xE1, 0xF2, 0x6A, + 0xD6, 0xB4, 0x2D, 0x21, 0xA4, 0x6D, 0x3B, 0x4E, 0x29, 0x40, 0x4C, 0x29, 0x88, 0xCE, 0x79, 0xB6, + 0xB9, 0xB1, 0x63, 0x8C, 0x91, 0x12, 0xE2, 0x9C, 0xCB, 0xF3, 0x9C, 0x72, 0xBE, 0x5E, 0x37, 0xBB, + 0xD3, 0x49, 0x12, 0x78, 0x78, 0xEF, 0x17, 0xCB, 0xFA, 0x9B, 0xA7, 0x2F, 0x9E, 0x3C, 0x7E, 0x94, + 0x4B, 0x61, 0x8C, 0x1D, 0x0E, 0x06, 0x75, 0xD3, 0xA4, 0x51, 0x2E, 0x93, 0x62, 0x77, 0x3A, 0xB1, + 0xD6, 0x61, 0x84, 0x93, 0x6D, 0xA9, 0xB1, 0x36, 0x02, 0xC4, 0x18, 0x18, 0x49, 0x74, 0x8D, 0x28, + 0x18, 0xEB, 0x95, 0x06, 0x84, 0xAA, 0x32, 0x6F, 0xDA, 0xEE, 0xD9, 0xCB, 0xB3, 0x41, 0x99, 0x4D, + 0x77, 0x46, 0xFF, 0xC7, 0xFF, 0xFD, 0xF7, 0xFF, 0xEB, 0xBF, 0xFA, 0xD7, 0x4F, 0x5F, 0x9E, 0x8D, + 0x86, 0x83, 0xD9, 0xCD, 0x32, 0xA1, 0x1C, 0xC6, 0x98, 0x14, 0xDB, 0x9A, 0x30, 0x32, 0xCA, 0x48, + 0x0C, 0x41, 0x72, 0x9E, 0x3C, 0x8A, 0x09, 0x42, 0x9C, 0x33, 0x4E, 0xC8, 0x76, 0xE6, 0xF5, 0xEB, + 0xB6, 0x77, 0x3E, 0x19, 0xF0, 0x19, 0x88, 0xD1, 0xF9, 0x60, 0x9D, 0x4F, 0x59, 0xEB, 0x49, 0x29, + 0x99, 0x20, 0x3C, 0xA5, 0x0D, 0x67, 0x54, 0x0A, 0x59, 0xB7, 0x5D, 0x91, 0x67, 0x8C, 0x92, 0xE4, + 0x8E, 0x2D, 0x38, 0x0B, 0x71, 0x43, 0xE6, 0x36, 0xD6, 0xA7, 0x26, 0x2B, 0xFA, 0x90, 0xAE, 0xCC, + 0xB6, 0xE9, 0xD2, 0x42, 0x36, 0xCB, 0x57, 0x37, 0xC4, 0xC7, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x33, 0x29, 0xE4, 0x7A, 0xBD, 0x2E, 0xF2, 0xEC, 0xE1, 0x83, 0xC3, 0xF1, 0x78, 0xD4, + 0x75, 0xBD, 0xF3, 0x1E, 0x23, 0x44, 0x30, 0x49, 0x08, 0xE0, 0x9F, 0xFC, 0xA3, 0x4F, 0x3E, 0x78, + 0xF4, 0x60, 0xB9, 0x58, 0x9D, 0xBC, 0xBD, 0x64, 0x8C, 0x3E, 0x38, 0xBA, 0x57, 0xE4, 0x79, 0xAF, + 0xFA, 0x3C, 0xCF, 0xDE, 0x1C, 0x9F, 0xAD, 0xEB, 0x8E, 0x12, 0xF4, 0xE6, 0xF8, 0xEC, 0xF5, 0xF1, + 0xD9, 0xF1, 0xE9, 0x79, 0x3A, 0xE9, 0xD3, 0xE0, 0x95, 0xF4, 0x4F, 0x18, 0xA1, 0xAE, 0xEF, 0x27, + 0x93, 0x31, 0x21, 0xA4, 0xEB, 0xDA, 0xFD, 0xBD, 0x69, 0x91, 0xE7, 0xC6, 0xDA, 0xAA, 0x2C, 0xE6, + 0x8B, 0x95, 0x31, 0xCE, 0x5A, 0x5B, 0xE4, 0xD9, 0xC1, 0xEE, 0x78, 0x32, 0x1E, 0xEE, 0xED, 0x4E, + 0x86, 0x83, 0x62, 0x3C, 0xAA, 0x46, 0x83, 0x52, 0x0A, 0xB6, 0x9D, 0xE2, 0xDE, 0xA9, 0x59, 0x8C, + 0x75, 0x37, 0x8B, 0x15, 0x42, 0x48, 0x0A, 0x9E, 0xAC, 0xD9, 0x04, 0x67, 0x09, 0xD3, 0x4C, 0xFE, + 0x57, 0xE9, 0x2E, 0x73, 0xDE, 0x2B, 0x6D, 0x3B, 0xA5, 0x17, 0xCB, 0x26, 0x69, 0xB3, 0xA8, 0x33, + 0x3A, 0xC6, 0xB8, 0x91, 0x4F, 0x53, 0x96, 0x66, 0x2B, 0x74, 0x67, 0x1C, 0xDB, 0x74, 0x49, 0x00, + 0x90, 0xFA, 0x8E, 0x18, 0xBD, 0x73, 0x40, 0x29, 0x42, 0xC8, 0x69, 0xA3, 0xB5, 0x46, 0x08, 0x52, + 0x82, 0x90, 0xD1, 0x1A, 0x10, 0xB2, 0xD6, 0x31, 0xCE, 0x9C, 0xB1, 0xEB, 0xA6, 0xD5, 0xDA, 0x6E, + 0x12, 0xD8, 0x52, 0x5E, 0x24, 0x67, 0xA5, 0x52, 0x55, 0x59, 0xF0, 0x2C, 0xA7, 0x18, 0x36, 0x39, + 0x2E, 0xDB, 0x8A, 0x02, 0x00, 0x10, 0xC3, 0x36, 0xFC, 0xF4, 0xAE, 0x63, 0x0A, 0x7A, 0xA7, 0x1D, + 0x47, 0x90, 0x56, 0x8A, 0xA9, 0xCE, 0x6E, 0x5B, 0x21, 0x04, 0x77, 0xB8, 0xA3, 0x89, 0xEA, 0x06, + 0x9B, 0x6A, 0xE8, 0x11, 0x20, 0x0C, 0xD8, 0xDF, 0xC2, 0xB4, 0x5B, 0x20, 0x6C, 0x53, 0x10, 0xB7, + 0x93, 0x6F, 0xAA, 0xDB, 0x08, 0x21, 0xA3, 0xF5, 0xD3, 0x6F, 0x9E, 0x5B, 0xE3, 0xA4, 0x10, 0x31, + 0x84, 0x80, 0x93, 0x02, 0x04, 0x6E, 0xF7, 0x9B, 0xDB, 0x5A, 0x09, 0x89, 0x5D, 0x1D, 0x42, 0x40, + 0x09, 0xA7, 0xDB, 0x56, 0xCF, 0x5B, 0xBC, 0x16, 0x00, 0x42, 0x88, 0x1E, 0x3C, 0xC6, 0x18, 0x02, + 0x68, 0x63, 0xD3, 0x8F, 0x90, 0x1C, 0x3E, 0x31, 0xC6, 0x84, 0xE0, 0xB6, 0x53, 0x9F, 0x7E, 0xFE, + 0xCD, 0xAB, 0xE3, 0x2B, 0x00, 0x5C, 0x94, 0x79, 0x59, 0xE6, 0x83, 0xB2, 0x68, 0xBA, 0xCE, 0x7B, + 0x7F, 0x7D, 0x35, 0xDB, 0xDD, 0x9B, 0xF6, 0x4A, 0x7F, 0xF5, 0xCD, 0xF3, 0xBE, 0xD7, 0x7F, 0xFA, + 0x4F, 0xFF, 0xF1, 0x64, 0x3C, 0xA8, 0x9B, 0xEE, 0xE2, 0x5A, 0xF3, 0x2C, 0x1B, 0x0E, 0x87, 0x83, + 0xAA, 0xBA, 0xB9, 0x59, 0xCC, 0x6E, 0x16, 0xC9, 0x78, 0xC3, 0xFB, 0xF8, 0x83, 0xEF, 0x3F, 0xA9, + 0xD7, 0xF5, 0xE3, 0x07, 0x7B, 0xCE, 0x98, 0xAF, 0x9E, 0xBF, 0xD9, 0x19, 0x8F, 0x8E, 0xF6, 0xA7, + 0x97, 0xB3, 0x65, 0x80, 0x98, 0x89, 0x94, 0x1C, 0x8C, 0x01, 0xA1, 0xF1, 0xB0, 0x98, 0x8E, 0xAB, + 0xAE, 0x37, 0x4D, 0xA7, 0x2E, 0xAE, 0xE6, 0x52, 0xC8, 0xA6, 0xEF, 0x97, 0xEB, 0xC6, 0x5D, 0xDE, + 0x60, 0x42, 0x64, 0x96, 0x3D, 0x7C, 0x70, 0xF4, 0xF6, 0xFC, 0xE2, 0xFA, 0xFA, 0x26, 0xC4, 0x18, + 0x23, 0x8C, 0xC7, 0xA3, 0xBA, 0x69, 0x42, 0x08, 0xA3, 0x41, 0xA5, 0x8C, 0x4B, 0x7C, 0x17, 0x6D, + 0xAD, 0x77, 0xBE, 0x55, 0x5D, 0xD2, 0x28, 0x97, 0x45, 0x7E, 0x35, 0x5B, 0xBE, 0x39, 0xBD, 0x54, + 0xD6, 0xFF, 0x97, 0xFF, 0xF9, 0x9F, 0x19, 0x63, 0x62, 0x8C, 0x65, 0x91, 0x05, 0x1B, 0x01, 0x62, + 0x62, 0x33, 0x11, 0x4C, 0xA4, 0xE4, 0x4F, 0x9E, 0xBC, 0x7F, 0x72, 0x72, 0x7E, 0x71, 0x7E, 0x95, + 0x98, 0x68, 0xBA, 0xEF, 0xA3, 0xB3, 0xA3, 0xB2, 0xC8, 0x32, 0x99, 0x2C, 0x76, 0x7B, 0xA5, 0xA8, + 0xF3, 0x40, 0xD9, 0x7C, 0xBE, 0x96, 0x82, 0xE7, 0x99, 0xB0, 0xDA, 0x00, 0x4A, 0x11, 0x4D, 0xD4, + 0x87, 0x8D, 0x99, 0x0F, 0x66, 0xCC, 0xF9, 0x50, 0x77, 0x1D, 0x21, 0xA4, 0xD7, 0xE6, 0x83, 0xA3, + 0x83, 0xFB, 0x47, 0xFB, 0xBF, 0xFD, 0xF2, 0x59, 0x72, 0x19, 0xCC, 0xB2, 0xEC, 0xF4, 0xEC, 0x62, + 0xBE, 0x58, 0x74, 0xBD, 0x7A, 0x70, 0x74, 0x48, 0x08, 0x36, 0x46, 0xC7, 0x10, 0x03, 0x04, 0x00, + 0x58, 0x2C, 0x57, 0x75, 0xD3, 0x51, 0x42, 0xAA, 0x22, 0xF7, 0xDE, 0x2B, 0x6D, 0xA8, 0xF7, 0xCA, + 0xD8, 0x18, 0xA1, 0x2A, 0x8B, 0x4E, 0xA9, 0xBE, 0xD7, 0xC9, 0xF6, 0xAB, 0x53, 0x2A, 0x93, 0xE2, + 0xD1, 0x83, 0xC3, 0xF9, 0x7C, 0xF9, 0xAF, 0xFE, 0xB7, 0xBF, 0x1E, 0xFE, 0xF5, 0xAF, 0x9A, 0xA6, + 0xBF, 0x7F, 0xB8, 0xBF, 0x37, 0x1D, 0xCD, 0x97, 0xEB, 0x24, 0xBD, 0xB6, 0x89, 0x14, 0xB2, 0xE5, + 0x2A, 0x1A, 0x63, 0x32, 0x2A, 0x93, 0xB9, 0x7E, 0x8C, 0x01, 0x63, 0xE4, 0x22, 0x50, 0x8C, 0x00, + 0x81, 0x31, 0x76, 0x63, 0x3D, 0x16, 0x02, 0x42, 0x29, 0x39, 0xD0, 0x86, 0x24, 0x9E, 0x71, 0x4E, + 0x6B, 0x13, 0x62, 0x00, 0x84, 0x18, 0xA5, 0x4D, 0xD3, 0x86, 0x18, 0x09, 0xC6, 0x99, 0x94, 0xCA, + 0xE8, 0x44, 0x00, 0x16, 0x82, 0xAF, 0xEB, 0xA6, 0xED, 0x34, 0xA5, 0x04, 0x22, 0x68, 0x6D, 0x93, + 0x77, 0x50, 0x08, 0xD1, 0x5A, 0xDD, 0x29, 0xC5, 0x19, 0xEB, 0x3B, 0x85, 0x09, 0x76, 0x3E, 0x7E, + 0xEF, 0xF1, 0x4E, 0xAF, 0xD4, 0x72, 0x35, 0xF3, 0x5B, 0xF3, 0xCE, 0xD5, 0xBA, 0xD9, 0x99, 0x8C, + 0x7A, 0xA5, 0xEB, 0xA6, 0xD5, 0xC6, 0x08, 0xCE, 0xBD, 0x73, 0xB9, 0x64, 0x52, 0xB0, 0x34, 0x4D, + 0xAB, 0xBE, 0xFF, 0xD5, 0xE7, 0x5F, 0x4C, 0xC6, 0xC3, 0xE9, 0xCE, 0xB8, 0x5E, 0xB7, 0x9F, 0x7C, + 0xF4, 0x3D, 0x4A, 0xB1, 0x14, 0xFC, 0xBD, 0xFB, 0x87, 0x7F, 0xF7, 0xF3, 0xCF, 0xB4, 0x36, 0x8C, + 0x52, 0xEF, 0x5D, 0xAF, 0x54, 0x9E, 0x49, 0x84, 0x68, 0x82, 0x1A, 0xCB, 0xAA, 0x7A, 0x73, 0x7C, + 0xBA, 0x5A, 0x2E, 0xC7, 0x93, 0xF1, 0xBD, 0xA3, 0x83, 0xDD, 0x9D, 0xF1, 0xBA, 0x6E, 0x5E, 0xBE, + 0x3E, 0xCB, 0x04, 0x2D, 0x27, 0x43, 0x8C, 0xD0, 0xC3, 0xA3, 0x7D, 0xC1, 0x59, 0x12, 0xC6, 0xA7, + 0x69, 0x91, 0x26, 0xA3, 0xAD, 0x3B, 0x0F, 0x84, 0x90, 0x75, 0xBE, 0xEB, 0x35, 0xC1, 0x48, 0x30, + 0x1A, 0x63, 0xF0, 0x3E, 0x10, 0x8C, 0x39, 0xA3, 0xA9, 0x27, 0xC0, 0x18, 0x27, 0x17, 0xE8, 0x10, + 0xA3, 0x52, 0xC6, 0x18, 0xEB, 0x9C, 0xCF, 0x32, 0x91, 0xC2, 0xCC, 0xA9, 0x33, 0x3A, 0x0D, 0x87, + 0x84, 0xD2, 0x5B, 0x55, 0x23, 0x24, 0x2E, 0xC2, 0xF6, 0x8E, 0xDD, 0x8C, 0x66, 0x31, 0x26, 0x1F, + 0xD4, 0xE0, 0x6C, 0xF4, 0xCE, 0xB9, 0xD0, 0x2B, 0x65, 0x9D, 0x33, 0xD6, 0xA5, 0x24, 0x85, 0x94, + 0xA0, 0x19, 0x62, 0xC0, 0x08, 0xA5, 0x30, 0x2E, 0x04, 0x88, 0x52, 0xE2, 0xBC, 0xB7, 0xD6, 0x23, + 0x84, 0xAC, 0xF5, 0x18, 0xA1, 0xB2, 0xC8, 0x09, 0xC6, 0xC9, 0xCC, 0xE4, 0x5B, 0x1B, 0x4B, 0x84, + 0x20, 0x99, 0xE5, 0xC7, 0xF8, 0x2D, 0x5E, 0xC6, 0xA6, 0x94, 0xE2, 0xA4, 0x89, 0x83, 0xC4, 0xC7, + 0xD8, 0x92, 0x15, 0xD0, 0x1D, 0x69, 0xC1, 0xB7, 0x96, 0x06, 0x1B, 0xEE, 0x22, 0x06, 0x14, 0x92, + 0x00, 0x60, 0xFB, 0x59, 0xB4, 0x9D, 0xA4, 0xBF, 0xB5, 0x51, 0x8D, 0xC1, 0x02, 0x60, 0x4C, 0xD9, + 0xF9, 0xD9, 0x99, 0xB5, 0x36, 0xCB, 0xA5, 0x35, 0x0E, 0x45, 0xDC, 0xA9, 0x9E, 0x10, 0x5A, 0xE6, + 0x2C, 0x6E, 0xA3, 0x33, 0x63, 0x84, 0x64, 0x27, 0x0B, 0x18, 0x52, 0x49, 0xF2, 0xC8, 0xC7, 0x08, + 0x04, 0x13, 0x42, 0xD0, 0x46, 0xDF, 0x77, 0xFB, 0x53, 0x01, 0x84, 0x2D, 0x1D, 0x37, 0x19, 0x10, + 0x45, 0x80, 0x0C, 0x0B, 0xEF, 0xFD, 0x72, 0xBD, 0x7A, 0x7B, 0x31, 0x7F, 0xFE, 0xF2, 0x24, 0x44, + 0xC4, 0x05, 0xF5, 0xDE, 0xC6, 0x16, 0x38, 0xA5, 0x2F, 0x5E, 0x1D, 0x97, 0x83, 0x8A, 0x51, 0xFA, + 0xEA, 0xE4, 0xFC, 0xCD, 0xF9, 0xF5, 0xE5, 0xE5, 0xAC, 0x5E, 0xAD, 0x47, 0xE3, 0xE1, 0x8B, 0xD7, + 0xA7, 0x2F, 0x5E, 0xC5, 0x93, 0xD3, 0x73, 0xA5, 0xCC, 0xAA, 0x6E, 0xD2, 0x88, 0xD4, 0xD4, 0xAD, + 0x90, 0x72, 0x32, 0x19, 0x0D, 0xAA, 0xAA, 0x6E, 0xDA, 0xB7, 0xE7, 0x17, 0xCE, 0xBA, 0x17, 0xDE, + 0xEE, 0xED, 0x0C, 0x93, 0x39, 0xA7, 0xE0, 0x9C, 0x73, 0x8A, 0x10, 0x1A, 0x0D, 0xCA, 0x64, 0x1A, + 0x65, 0x8D, 0x3F, 0xBF, 0x5C, 0x4C, 0x77, 0x86, 0xF3, 0x75, 0x73, 0x7E, 0x35, 0x4F, 0x71, 0x4D, + 0x8B, 0x75, 0xEB, 0x7C, 0x88, 0x31, 0xEA, 0x5E, 0xDD, 0x2C, 0x56, 0x75, 0xD3, 0x4E, 0xC6, 0xA3, + 0x3C, 0xCF, 0x39, 0xA3, 0x8B, 0xE5, 0x6A, 0xB9, 0x5A, 0x3B, 0x6B, 0xF7, 0xF6, 0x76, 0xF2, 0x22, + 0x9B, 0x5D, 0xCF, 0x09, 0xC1, 0x5A, 0xDB, 0xF4, 0x96, 0xA5, 0xD2, 0x23, 0x84, 0x28, 0x8A, 0xBC, + 0xEF, 0x54, 0x91, 0x67, 0xBF, 0xFD, 0xF2, 0x39, 0x25, 0xE4, 0xBF, 0xF8, 0xCF, 0xFE, 0x34, 0xB1, + 0x82, 0x53, 0x4D, 0xF7, 0xC1, 0x1B, 0x63, 0x43, 0x30, 0x08, 0x81, 0x10, 0xFC, 0xC9, 0x93, 0x47, + 0x0F, 0xDF, 0x3B, 0x5A, 0xCC, 0x57, 0x75, 0xDD, 0xAC, 0x96, 0xEB, 0x62, 0x58, 0x09, 0x21, 0x06, + 0xC3, 0xC1, 0xFD, 0xA3, 0xFD, 0x57, 0xAF, 0x8F, 0xDB, 0xB6, 0x57, 0xCA, 0x5C, 0xDE, 0xAC, 0xE6, + 0xF3, 0xE5, 0xD5, 0xD5, 0xAC, 0x28, 0xB2, 0x5C, 0xF0, 0xB4, 0x3B, 0xC7, 0x18, 0x41, 0x0C, 0xC9, + 0xE7, 0x2B, 0xC6, 0xC8, 0x39, 0x87, 0x18, 0xB9, 0x10, 0xFB, 0x7B, 0x93, 0xC7, 0xEF, 0x1D, 0xDD, + 0xBF, 0xB7, 0x67, 0x8C, 0x7E, 0x7D, 0x7C, 0xCE, 0x28, 0xBD, 0xBA, 0xBE, 0x19, 0x0C, 0xAA, 0x4C, + 0xCA, 0xAE, 0x53, 0xAB, 0x75, 0x93, 0x4B, 0x31, 0x9B, 0x2F, 0x92, 0x65, 0x23, 0x65, 0xAC, 0xAE, + 0xDB, 0x18, 0xA3, 0x0F, 0xFE, 0x72, 0x76, 0x23, 0xA5, 0xB8, 0x77, 0x30, 0xBD, 0xBE, 0x59, 0x30, + 0xC6, 0xBC, 0x0F, 0x8B, 0xE5, 0xFA, 0xDE, 0xE1, 0x6E, 0x0A, 0x6D, 0x9C, 0x4E, 0x46, 0x5D, 0xDF, + 0xB7, 0x6D, 0xFB, 0x83, 0xEF, 0xBF, 0xFF, 0xE4, 0xD1, 0xFD, 0x67, 0x2F, 0x8F, 0x2F, 0x2E, 0x67, + 0x8F, 0xDF, 0xBF, 0xFF, 0x67, 0x7F, 0xF2, 0xE3, 0x2F, 0x9F, 0xBD, 0xFE, 0xE5, 0xE7, 0xDF, 0x64, + 0x79, 0xE6, 0xC3, 0x56, 0xBA, 0x8B, 0x51, 0x70, 0xA9, 0xF1, 0x47, 0x08, 0x22, 0xA7, 0x0C, 0x6D, + 0x7D, 0xA2, 0xC4, 0x86, 0x5D, 0x68, 0x23, 0x80, 0xF5, 0x01, 0x63, 0xB2, 0xB7, 0x33, 0x7E, 0x7B, + 0x79, 0xA3, 0xB4, 0x36, 0xDA, 0x6A, 0xE7, 0x92, 0xD9, 0x01, 0xC2, 0xC8, 0x9B, 0x80, 0x10, 0x0A, + 0xC8, 0x13, 0x42, 0x92, 0xE2, 0xBA, 0xEB, 0xFA, 0x08, 0x90, 0x65, 0x92, 0x12, 0x1C, 0x7C, 0xD0, + 0xDA, 0x36, 0x4D, 0xC7, 0x18, 0x8D, 0x80, 0xD2, 0x84, 0xC5, 0x28, 0x8D, 0x14, 0xBC, 0x27, 0x9D, + 0x52, 0x07, 0x7B, 0xBB, 0xC6, 0xD9, 0xD1, 0xA0, 0xDA, 0x9D, 0x8E, 0xBF, 0x79, 0xFA, 0xAA, 0xED, + 0x54, 0xAF, 0x15, 0x02, 0xD4, 0x84, 0xAE, 0x69, 0xBB, 0xB4, 0x4B, 0x2D, 0xF3, 0x3C, 0xF9, 0xF1, + 0xC5, 0xE0, 0x7F, 0xF2, 0xC3, 0x0F, 0x5F, 0xBC, 0x3A, 0xFE, 0xE3, 0x9F, 0xFE, 0x78, 0xB1, 0x5C, + 0x21, 0x84, 0x8C, 0xB1, 0x5D, 0xD7, 0x69, 0xAD, 0xD7, 0xAB, 0xFA, 0xF5, 0x9B, 0xB3, 0x9F, 0xFC, + 0xE1, 0xC7, 0x0F, 0x1F, 0xEC, 0x1B, 0x6B, 0xB3, 0x5C, 0xC6, 0x18, 0x18, 0x25, 0x9C, 0x13, 0x42, + 0x88, 0x36, 0xD6, 0x07, 0x4F, 0x30, 0x65, 0x8C, 0x87, 0x18, 0xCA, 0x22, 0x9F, 0xCF, 0x17, 0x5D, + 0xA7, 0x76, 0x77, 0xC9, 0xFE, 0xDE, 0xD4, 0x7B, 0x1F, 0x43, 0x14, 0x9C, 0x1D, 0x1E, 0x4C, 0x87, + 0xC3, 0x2A, 0xE3, 0x8C, 0x60, 0x8C, 0x31, 0x2A, 0x8B, 0x4C, 0x0A, 0x46, 0x08, 0x11, 0x82, 0x23, + 0x04, 0x3E, 0x85, 0xB9, 0xC5, 0xCD, 0x9D, 0xEB, 0xBD, 0x8F, 0x10, 0x19, 0x23, 0xA3, 0x61, 0x55, + 0x95, 0x39, 0xA3, 0x84, 0x18, 0x6B, 0x7D, 0x30, 0xD6, 0x25, 0x1E, 0x38, 0xC2, 0x38, 0x39, 0xDA, + 0x3B, 0xEF, 0x41, 0x6E, 0xE6, 0xAD, 0xE4, 0xBE, 0x8D, 0x31, 0x26, 0xFF, 0xC3, 0xBF, 0xF8, 0xEF, + 0xD2, 0x8D, 0x47, 0x29, 0xC5, 0x08, 0xC5, 0x10, 0x52, 0x5B, 0x94, 0xA0, 0xFE, 0x54, 0xC5, 0x6E, + 0x81, 0x7C, 0x88, 0x21, 0x86, 0xD8, 0xF7, 0x7D, 0xDB, 0xAA, 0xC5, 0xAA, 0x5E, 0xD5, 0x6D, 0xD7, + 0xAA, 0xAE, 0xD7, 0x5D, 0xA7, 0x00, 0x01, 0xC1, 0xA8, 0x57, 0xA6, 0xEB, 0x75, 0xDB, 0xE9, 0xB6, + 0x57, 0xCE, 0x85, 0x44, 0x16, 0xF7, 0xCE, 0xFB, 0x10, 0x30, 0x20, 0xC6, 0x49, 0x26, 0x79, 0x9E, + 0x49, 0x2E, 0x64, 0x2A, 0x62, 0x68, 0xFB, 0xAB, 0x6C, 0x90, 0xAE, 0x0D, 0xA5, 0xFE, 0x4E, 0x66, + 0xCD, 0xDD, 0x82, 0xF6, 0x6D, 0xCA, 0xFB, 0xBB, 0x35, 0x42, 0xC2, 0xDE, 0xB7, 0x2B, 0xC9, 0x34, + 0x26, 0xFE, 0x1E, 0x8A, 0xDA, 0xE6, 0xBB, 0xF0, 0x2D, 0x09, 0x0E, 0xB6, 0xE3, 0x74, 0x8C, 0xD1, + 0x3B, 0x47, 0x30, 0x9A, 0x5D, 0x5F, 0x5D, 0x5C, 0xCC, 0x30, 0x26, 0x31, 0x42, 0x44, 0xD8, 0xBA, + 0x80, 0x31, 0x61, 0x2C, 0x4D, 0xB8, 0xA9, 0xA6, 0xC3, 0x36, 0xB7, 0x35, 0xC6, 0x08, 0x18, 0x43, + 0x80, 0xB8, 0x89, 0x23, 0x40, 0x9B, 0xDF, 0x26, 0xDE, 0x91, 0x97, 0x46, 0x80, 0x94, 0x4F, 0x67, + 0x9C, 0x73, 0x36, 0x60, 0x8C, 0x28, 0x21, 0xAF, 0x4F, 0xDE, 0x3E, 0x7B, 0x79, 0xF6, 0xEA, 0xE4, + 0xEA, 0x66, 0x51, 0x8B, 0x4C, 0x46, 0x88, 0x5F, 0x3F, 0x7D, 0xCE, 0x18, 0x97, 0x52, 0x1E, 0x9F, + 0x5E, 0x3C, 0x7C, 0xF8, 0xA0, 0x28, 0xF2, 0x5F, 0xFF, 0xF6, 0x1B, 0xE7, 0x83, 0x77, 0xCE, 0x19, + 0x23, 0x84, 0xD8, 0x9D, 0x4E, 0x52, 0x2C, 0xE6, 0xC7, 0x1F, 0x7F, 0x2F, 0xF8, 0xD8, 0xB6, 0x3D, + 0xC6, 0xD8, 0x58, 0x93, 0x16, 0xC6, 0x5A, 0xE9, 0xAE, 0x57, 0x21, 0x44, 0x82, 0xF1, 0x7A, 0x5D, + 0x63, 0x04, 0x04, 0x61, 0xE3, 0x5C, 0xD7, 0x2B, 0x63, 0x5D, 0x84, 0xF8, 0xF0, 0x70, 0xB7, 0xC8, + 0xC4, 0xF5, 0x7C, 0xB5, 0x89, 0xAE, 0xE9, 0xD4, 0x7C, 0xD5, 0x2C, 0xD7, 0xED, 0xD5, 0x7C, 0xD9, + 0x74, 0xEA, 0x66, 0xB9, 0x6E, 0x3B, 0xA5, 0xB4, 0xAE, 0xDB, 0xAE, 0xED, 0xD4, 0xE3, 0xC7, 0xEF, + 0x1D, 0xEC, 0xEF, 0x36, 0x4D, 0xD7, 0xF7, 0xFD, 0xD5, 0xD5, 0xAC, 0xAE, 0x6B, 0x04, 0x71, 0x38, + 0xAC, 0x28, 0xA5, 0xD6, 0xFB, 0xB6, 0xED, 0x24, 0x63, 0x4A, 0xA9, 0x10, 0xA2, 0x36, 0x96, 0x52, + 0xC2, 0x28, 0x03, 0x04, 0xCE, 0x39, 0x42, 0x10, 0x25, 0x14, 0x10, 0x5C, 0xCE, 0x16, 0xAF, 0x8E, + 0xDF, 0x16, 0x45, 0xCE, 0x29, 0x4D, 0xB7, 0x07, 0x26, 0xA4, 0xC8, 0x33, 0xC6, 0x28, 0xE7, 0x34, + 0x04, 0xB0, 0xC6, 0x22, 0x84, 0x06, 0x83, 0x32, 0xCB, 0xB3, 0xBD, 0xFD, 0xE9, 0x74, 0xBA, 0x53, + 0x55, 0xFF, 0x0F, 0x5D, 0x6F, 0xD6, 0x64, 0x59, 0x76, 0x9D, 0x87, 0xAD, 0x3D, 0x9F, 0xF1, 0x0E, + 0x79, 0x73, 0xA8, 0xA9, 0xBB, 0x7A, 0x02, 0x1A, 0x53, 0x83, 0x20, 0x01, 0x89, 0x83, 0x28, 0x4B, + 0x96, 0x6C, 0x87, 0x1F, 0xF4, 0xA0, 0xF0, 0x83, 0x5F, 0x1D, 0x0C, 0xE9, 0xD9, 0xA4, 0xC9, 0xF0, + 0xDF, 0x72, 0x84, 0xC2, 0xA1, 0x10, 0x4D, 0xD9, 0x0E, 0x93, 0x04, 0x69, 0x8A, 0x20, 0x48, 0x0C, + 0x0D, 0x34, 0xD0, 0x8D, 0x9E, 0xAA, 0x2A, 0x2B, 0x2B, 0xA7, 0x3B, 0x9E, 0x69, 0x4F, 0x6B, 0xFB, + 0x61, 0x9D, 0x7B, 0x33, 0xBB, 0x41, 0xDF, 0x87, 0xEC, 0xAC, 0xEC, 0x3B, 0x9C, 0x73, 0xEE, 0xD9, + 0x6B, 0xAF, 0xF5, 0xAD, 0x6F, 0x7D, 0x5F, 0x59, 0xE4, 0x59, 0xD3, 0xB4, 0xD3, 0xC9, 0x84, 0x03, + 0xBE, 0x7C, 0x79, 0xA9, 0x94, 0x7E, 0xF9, 0xEA, 0x72, 0xB7, 0xDB, 0x1D, 0x1D, 0xCD, 0x9D, 0xF7, + 0x0C, 0x40, 0x2B, 0x65, 0xB4, 0x8A, 0x98, 0x7C, 0xF0, 0x4A, 0xC9, 0xE3, 0xC5, 0x11, 0x46, 0x4C, + 0x88, 0x45, 0x9E, 0xFD, 0xE6, 0x6F, 0x7C, 0xFD, 0xED, 0x37, 0x9E, 0x7C, 0xFF, 0x6F, 0xFE, 0x7E, + 0xB5, 0xDE, 0xBD, 0xFE, 0xDA, 0x23, 0xA5, 0xE4, 0x7A, 0xD3, 0x40, 0x62, 0x65, 0x99, 0x03, 0x80, + 0xF3, 0xBE, 0x6D, 0x1A, 0x63, 0x8C, 0x54, 0x4A, 0x4A, 0x71, 0xBC, 0x98, 0x23, 0xE2, 0x7A, 0xB3, + 0x2B, 0x8A, 0x8C, 0x33, 0xBE, 0xDB, 0xB5, 0x93, 0x49, 0x55, 0x64, 0x59, 0xD3, 0x76, 0xCE, 0x7B, + 0xC6, 0xA0, 0x2A, 0x8B, 0xB6, 0xED, 0x9C, 0x73, 0x29, 0x61, 0x5D, 0x95, 0x9C, 0xF3, 0xE9, 0xA4, + 0x3C, 0x3D, 0x3E, 0x3A, 0x5E, 0xCC, 0x1E, 0x9D, 0x9D, 0x2C, 0x8E, 0xA6, 0x37, 0xAB, 0xCD, 0x3F, + 0xFC, 0xE4, 0x43, 0xAD, 0xF5, 0x30, 0x58, 0xA3, 0x14, 0x00, 0xC6, 0x10, 0x8E, 0x17, 0xF3, 0x88, + 0xA9, 0xEF, 0x7B, 0x21, 0x45, 0x6E, 0x4C, 0x5D, 0x65, 0x74, 0x83, 0x95, 0x79, 0x16, 0x23, 0xB6, + 0xFD, 0x80, 0x23, 0x5C, 0xC3, 0x30, 0xA5, 0x22, 0x37, 0x5D, 0x37, 0x14, 0x45, 0x7E, 0xBC, 0x98, + 0x35, 0x6D, 0xEF, 0x9C, 0x57, 0x4A, 0x32, 0x60, 0x83, 0xB5, 0x5C, 0x70, 0x25, 0xA4, 0xD6, 0x3A, + 0xCB, 0x74, 0x08, 0x91, 0x24, 0x8C, 0x48, 0xE2, 0x58, 0x29, 0xE1, 0x7D, 0x58, 0xAD, 0x1B, 0xC4, + 0x94, 0x65, 0xDA, 0x39, 0x2F, 0x38, 0xB7, 0xD6, 0xB6, 0x7D, 0x9F, 0x67, 0x59, 0x4A, 0x69, 0x36, + 0xAB, 0x7E, 0xE7, 0xBB, 0xDF, 0xCE, 0x32, 0xF3, 0xC9, 0x67, 0xCF, 0x09, 0x9D, 0x20, 0x8F, 0x15, + 0xCE, 0x58, 0x02, 0xD2, 0xAF, 0x49, 0x5A, 0xC9, 0x2C, 0xD3, 0x82, 0xB3, 0x7F, 0xFD, 0x2F, 0x7E, + 0xFB, 0x64, 0x31, 0x7B, 0x71, 0xFE, 0xAA, 0x69, 0xFB, 0x8F, 0x3E, 0xFA, 0xDC, 0x85, 0xC0, 0x39, + 0x0F, 0x31, 0x66, 0xC6, 0x58, 0xE7, 0xDA, 0xAE, 0xBB, 0xBC, 0x5E, 0x2E, 0x57, 0x9B, 0x93, 0xC5, + 0xFC, 0xE6, 0x76, 0x75, 0x73, 0xBB, 0xCC, 0xB2, 0x2C, 0x25, 0x20, 0x6E, 0x36, 0x21, 0x2D, 0x31, + 0xA2, 0x54, 0x02, 0x23, 0x9E, 0x9D, 0x1E, 0x6F, 0x76, 0xDB, 0xAF, 0x7E, 0xE5, 0xED, 0xE0, 0xF1, + 0x83, 0x0F, 0x3E, 0x5C, 0xAF, 0xD6, 0x83, 0xB5, 0xC7, 0xF3, 0x29, 0x83, 0x64, 0x94, 0x72, 0xCE, + 0x97, 0x65, 0x56, 0x15, 0x99, 0x31, 0x9A, 0x74, 0x25, 0xC5, 0x81, 0xC9, 0xB2, 0x5F, 0xE4, 0x31, + 0x46, 0x06, 0xAC, 0xCC, 0xB3, 0x49, 0x55, 0x1A, 0x23, 0x85, 0x90, 0x4A, 0x29, 0x4E, 0xD4, 0xB3, + 0x04, 0x79, 0xA6, 0xB5, 0x24, 0xB9, 0x2C, 0x26, 0x84, 0x50, 0x52, 0x2A, 0x29, 0x8C, 0x56, 0x46, + 0x6B, 0x2E, 0x58, 0x66, 0xB4, 0xF8, 0x93, 0xFF, 0xE5, 0x0F, 0x69, 0x67, 0xE3, 0x9C, 0x8F, 0x33, + 0x5B, 0x98, 0x18, 0x2D, 0x4B, 0x6A, 0xA7, 0xF1, 0x51, 0xA4, 0x3F, 0x21, 0xDA, 0x61, 0x08, 0xDE, + 0x5D, 0x5E, 0xAF, 0x6F, 0x56, 0xBB, 0xAE, 0x1F, 0xBA, 0xC1, 0x3A, 0x17, 0x30, 0xE2, 0x83, 0xB3, + 0xA3, 0xB7, 0xDE, 0x78, 0xB2, 0x38, 0x9A, 0xE6, 0x99, 0x64, 0x0C, 0x9C, 0xF5, 0x3E, 0x04, 0xB2, + 0x29, 0x2E, 0x72, 0xAD, 0x95, 0x28, 0x8B, 0x8C, 0x73, 0xA8, 0x8A, 0xAC, 0x2C, 0x8C, 0x10, 0x5C, + 0x67, 0xD9, 0x58, 0xC8, 0x31, 0x96, 0x12, 0xDE, 0x49, 0xA2, 0xEF, 0x39, 0x5F, 0x00, 0x09, 0x48, + 0x3B, 0x6C, 0xC4, 0xBE, 0xD2, 0x81, 0x60, 0x06, 0xF7, 0x12, 0x39, 0xBE, 0xE7, 0xC7, 0x32, 0xCE, + 0xF7, 0x39, 0xD8, 0x1D, 0xD1, 0x07, 0x60, 0x0F, 0xEB, 0xEF, 0x03, 0x1F, 0x23, 0xE1, 0xB3, 0xF1, + 0x39, 0x44, 0x16, 0xA3, 0x22, 0x14, 0x39, 0x67, 0xCF, 0x9E, 0xBF, 0x78, 0xF1, 0xEC, 0x42, 0x29, + 0x1D, 0x11, 0x23, 0x26, 0x4C, 0x80, 0x23, 0xA7, 0x9F, 0x8D, 0x69, 0x62, 0xBA, 0x4B, 0xFA, 0x52, + 0x4A, 0x90, 0x18, 0xE3, 0x6C, 0x9C, 0x95, 0xE2, 0x74, 0x8C, 0x5F, 0x18, 0x2D, 0x4A, 0xFB, 0xE3, + 0x8F, 0x71, 0xE4, 0x61, 0xAC, 0x36, 0xBB, 0x8F, 0x3E, 0x7E, 0xF1, 0xD3, 0x5F, 0x7C, 0x6A, 0xB2, + 0xE2, 0xC5, 0xF9, 0xCB, 0xEB, 0xDB, 0xDB, 0xC9, 0xB4, 0x9E, 0x4E, 0x27, 0x6F, 0xBC, 0xFE, 0xE4, + 0xAD, 0x37, 0x5E, 0x07, 0x06, 0xC7, 0xC7, 0x47, 0xDF, 0x78, 0xF7, 0xAD, 0xDB, 0xD5, 0xC6, 0x98, + 0xEC, 0xEB, 0xEF, 0xBE, 0xB5, 0x5E, 0x6D, 0xEC, 0x30, 0xF8, 0x10, 0x43, 0xC4, 0x7A, 0x52, 0x21, + 0xA6, 0xBA, 0xAE, 0x6F, 0x96, 0xAB, 0x17, 0x2F, 0x2E, 0x52, 0x4A, 0x98, 0x90, 0x68, 0x1F, 0xDE, + 0x87, 0x69, 0x5D, 0x55, 0x45, 0x16, 0x7C, 0xB0, 0xCE, 0x65, 0xC6, 0x58, 0xEB, 0x6F, 0xD6, 0xDB, + 0xC5, 0x7C, 0x3A, 0xA9, 0x8B, 0xF5, 0xAE, 0x35, 0x4A, 0xD6, 0x65, 0x7E, 0xBD, 0xDC, 0x70, 0xCE, + 0x8C, 0xD6, 0x9D, 0xB5, 0xCB, 0xF5, 0xAE, 0xED, 0xAD, 0x75, 0x81, 0x9C, 0x13, 0x18, 0x8C, 0x8C, + 0x53, 0x25, 0x65, 0x02, 0xF6, 0xEA, 0xD5, 0xD5, 0xED, 0x72, 0xD9, 0x76, 0x2D, 0x22, 0xD6, 0x75, + 0x39, 0x9D, 0xD6, 0x3E, 0x84, 0x6D, 0xD3, 0x5D, 0x5F, 0x2F, 0x8B, 0xBD, 0xC1, 0x75, 0x62, 0x6C, + 0x18, 0xAC, 0xD6, 0x9A, 0x6A, 0x8D, 0xCC, 0x98, 0x3C, 0x33, 0x9C, 0x31, 0xEB, 0x42, 0xC4, 0xB8, + 0xDA, 0xEC, 0x7E, 0xFC, 0xFE, 0x87, 0xE4, 0x14, 0x47, 0xCA, 0x3F, 0x5C, 0x8C, 0x23, 0xB1, 0x6D, + 0xDB, 0x93, 0x38, 0x5A, 0x08, 0x21, 0x22, 0x52, 0x13, 0x7D, 0xBD, 0xDD, 0xCD, 0x66, 0x93, 0x87, + 0x67, 0x27, 0xEB, 0xED, 0xEE, 0xF9, 0xF3, 0xF3, 0xAE, 0xEB, 0xBF, 0xF6, 0xB5, 0xAF, 0x00, 0x40, + 0x9E, 0x19, 0xC6, 0x58, 0x3F, 0xB8, 0x6D, 0xD3, 0x4C, 0xCA, 0x82, 0x71, 0x26, 0xA4, 0xB0, 0xCE, + 0xD1, 0x24, 0x06, 0x11, 0x0E, 0xA4, 0x94, 0x4F, 0x1E, 0x9D, 0x85, 0x10, 0x3F, 0xF8, 0xF0, 0xD3, + 0xA6, 0x69, 0x33, 0xA3, 0x5F, 0x7B, 0x7C, 0x46, 0x7A, 0x0F, 0xC1, 0xC7, 0x3C, 0xCF, 0xA5, 0x94, + 0xCE, 0x5A, 0x22, 0xF4, 0x75, 0xFD, 0xD0, 0x34, 0xDD, 0xB4, 0xAE, 0xBE, 0xF3, 0xED, 0xAF, 0xA5, + 0x94, 0xB6, 0x9B, 0xAD, 0xD2, 0xAA, 0x2E, 0x0B, 0x82, 0xA8, 0xDA, 0xB6, 0xA3, 0xE6, 0x83, 0x0F, + 0x51, 0x0A, 0xDE, 0xB6, 0xED, 0x6C, 0x36, 0x91, 0x42, 0x90, 0xA9, 0xC2, 0xD9, 0xE9, 0x51, 0x59, + 0xE4, 0x8C, 0xC1, 0x8F, 0x7E, 0xFA, 0xCB, 0xE5, 0x7A, 0x97, 0x65, 0xBA, 0xE9, 0xBA, 0xB2, 0xC8, + 0x18, 0x40, 0xD7, 0x5B, 0xEB, 0x7C, 0x4A, 0x00, 0x2C, 0x69, 0x4D, 0xAD, 0x31, 0xAE, 0x94, 0xCA, + 0xB5, 0x0E, 0x31, 0x36, 0xFD, 0x40, 0xCD, 0x59, 0x29, 0x25, 0xB9, 0xCA, 0x23, 0x62, 0x8C, 0x49, + 0x4A, 0xF1, 0xF8, 0xD1, 0x03, 0xEA, 0x26, 0x1B, 0xA3, 0x23, 0x06, 0xE7, 0xBC, 0x96, 0x52, 0x4A, + 0x81, 0x98, 0x38, 0xE7, 0x88, 0x51, 0x6B, 0xAD, 0xB5, 0xF2, 0x3E, 0x8C, 0x74, 0x8A, 0x98, 0xAC, + 0xF3, 0x8C, 0x81, 0x10, 0xBC, 0xED, 0xFB, 0x18, 0x51, 0x48, 0xA9, 0x95, 0x0E, 0x21, 0xE4, 0x99, + 0x59, 0xAD, 0x36, 0x2F, 0x2E, 0x2E, 0xB5, 0x52, 0xBF, 0xF3, 0xDD, 0xF7, 0x9E, 0x3C, 0x3E, 0x7B, + 0xF9, 0xEA, 0xA6, 0xEB, 0x87, 0xC1, 0x0E, 0x42, 0x08, 0x06, 0x6C, 0x36, 0xAD, 0x8F, 0xE6, 0xB3, + 0xD5, 0x76, 0x97, 0xE7, 0xE6, 0xBF, 0xFB, 0x57, 0xBF, 0xFB, 0xDA, 0xE3, 0xB3, 0xF7, 0x7F, 0xFE, + 0xD1, 0x6C, 0x32, 0x79, 0xFF, 0xE7, 0x1F, 0xF5, 0x7D, 0xEF, 0x7C, 0xE0, 0x9C, 0x4F, 0xEA, 0x7A, + 0x3E, 0x9B, 0xFA, 0xE0, 0x23, 0x62, 0xDB, 0x76, 0xA7, 0xC7, 0x47, 0xFF, 0xEC, 0xB7, 0x7F, 0xE3, + 0xE2, 0xE2, 0xEA, 0xF9, 0xF9, 0xA5, 0xB5, 0x4E, 0x6B, 0xAD, 0x94, 0xB6, 0xDE, 0x13, 0x0A, 0x0C, + 0x8C, 0x0D, 0x76, 0x08, 0x3E, 0x6E, 0x36, 0x5B, 0x6B, 0xDD, 0x62, 0xB1, 0xD8, 0x6E, 0xB7, 0xDE, + 0x07, 0xA3, 0xD5, 0xED, 0xED, 0xEA, 0x78, 0x31, 0x3B, 0x3E, 0x9A, 0x17, 0xB9, 0x49, 0x09, 0x05, + 0xE7, 0x59, 0xA6, 0x29, 0xEE, 0x8C, 0x94, 0x88, 0x3D, 0xB2, 0x4D, 0x0B, 0x86, 0xCC, 0xE8, 0xB2, + 0x4C, 0x2B, 0x29, 0xF8, 0x98, 0x42, 0xC1, 0x1E, 0xB1, 0xA1, 0x11, 0x31, 0xC2, 0xFE, 0xE5, 0xE8, + 0x57, 0xC6, 0x85, 0x52, 0x72, 0xB4, 0xB0, 0x93, 0x42, 0xFC, 0xF1, 0x1F, 0xFD, 0xCF, 0xF4, 0x54, + 0x12, 0xE7, 0x0B, 0x21, 0x50, 0x42, 0xC1, 0xC6, 0x7A, 0x53, 0xC5, 0x10, 0xBA, 0xA6, 0x05, 0x8C, + 0x09, 0xC3, 0xAB, 0xCB, 0xDB, 0xEB, 0x9B, 0xF5, 0xAE, 0xE9, 0xAD, 0x73, 0x21, 0xC6, 0x4C, 0xEB, + 0x93, 0xA3, 0xC9, 0xD9, 0xC9, 0xFC, 0xC1, 0xD9, 0xC2, 0x59, 0xDB, 0xF7, 0x43, 0xDB, 0x0E, 0xDB, + 0xA6, 0x1F, 0x9C, 0x27, 0x2C, 0xF0, 0xF4, 0x78, 0xFA, 0xF0, 0x74, 0x5E, 0x57, 0x45, 0x66, 0xB4, + 0x14, 0x2C, 0x33, 0xAA, 0xAE, 0x6B, 0xD2, 0x3F, 0x65, 0xC4, 0x41, 0xDD, 0x8F, 0x1C, 0xD1, 0x40, + 0x21, 0x91, 0xAD, 0x53, 0xC2, 0x84, 0x31, 0x91, 0xE2, 0x1F, 0x00, 0x63, 0xE4, 0x74, 0x40, 0x79, + 0xDB, 0x08, 0x44, 0xF1, 0xFD, 0x0C, 0xEF, 0x3E, 0x48, 0x01, 0xC0, 0x5D, 0xEB, 0x10, 0x88, 0x0D, + 0x01, 0x2C, 0xB1, 0x3B, 0xB8, 0x8A, 0x01, 0xE3, 0x5C, 0xDE, 0x1B, 0x9F, 0xDA, 0xA3, 0x81, 0xC0, + 0xB8, 0xE0, 0x97, 0x17, 0xAF, 0x2E, 0x5E, 0x5E, 0x6A, 0x63, 0x00, 0x18, 0x22, 0x20, 0x42, 0x44, + 0xE4, 0xFB, 0x31, 0x75, 0xC6, 0x58, 0xC2, 0xF4, 0x25, 0x4A, 0x07, 0x1F, 0xCD, 0x99, 0xEE, 0xA7, + 0x7B, 0x77, 0xE2, 0xA1, 0x88, 0x29, 0x26, 0x8C, 0x01, 0x23, 0xA2, 0xF5, 0x61, 0xB3, 0x6D, 0xFF, + 0xE1, 0xA7, 0xBF, 0x7C, 0x75, 0xBD, 0xB9, 0xBE, 0x5D, 0xCF, 0xA6, 0xD3, 0x8B, 0x57, 0x97, 0xC0, + 0xD8, 0x93, 0xC7, 0x8F, 0x16, 0x8B, 0x39, 0xC6, 0x38, 0xA9, 0xEB, 0x3C, 0xCF, 0xE7, 0xB3, 0xC9, + 0xF1, 0x62, 0xF6, 0xFE, 0x2F, 0x3E, 0xCE, 0xF3, 0x6C, 0x52, 0x15, 0x7F, 0xF6, 0x7F, 0x7E, 0xFF, + 0xF3, 0x67, 0x2F, 0x63, 0x44, 0xE7, 0xDD, 0x30, 0xF8, 0x17, 0x2F, 0xAF, 0x5E, 0x5E, 0x5C, 0x7F, + 0xF6, 0xEC, 0xFC, 0xFC, 0xFC, 0x55, 0xF0, 0x21, 0x25, 0x9C, 0xD5, 0xB5, 0x56, 0x72, 0xD7, 0xB6, + 0xB9, 0xC9, 0x68, 0x18, 0x30, 0x62, 0x8C, 0x98, 0x38, 0xF0, 0xDE, 0xB9, 0xDE, 0xB9, 0x10, 0xE3, + 0xB4, 0x2A, 0xAE, 0x97, 0x9B, 0xB3, 0x93, 0xB9, 0x0F, 0xA1, 0xC8, 0xB3, 0xA2, 0xC8, 0x56, 0xBB, + 0x96, 0x1C, 0x6B, 0xC8, 0xB7, 0x34, 0x8D, 0x32, 0x32, 0x3C, 0x61, 0x22, 0x4E, 0x65, 0x3F, 0x0C, + 0xCE, 0xB9, 0x18, 0xB1, 0x2C, 0xF2, 0x27, 0x4F, 0x1E, 0x52, 0x2B, 0xAD, 0x6D, 0xBA, 0x6E, 0x18, + 0xAC, 0x75, 0xB9, 0x51, 0x82, 0x13, 0x71, 0x9C, 0x33, 0xC6, 0x9A, 0xB6, 0xC3, 0x84, 0x5A, 0x09, + 0x06, 0x0C, 0x31, 0x96, 0x45, 0x9E, 0x20, 0xB9, 0x10, 0xB5, 0x94, 0x4A, 0xCA, 0xA6, 0xE9, 0x3E, + 0xFC, 0xD5, 0xB3, 0x37, 0x9E, 0x3E, 0x3A, 0x9A, 0x4D, 0xBC, 0xF3, 0x42, 0x8A, 0xBE, 0xEB, 0xAD, + 0x73, 0x59, 0x66, 0x48, 0x1B, 0x93, 0x04, 0xFF, 0x9A, 0xB6, 0xA7, 0x7C, 0xCD, 0xF9, 0xF0, 0x93, + 0x9F, 0x7E, 0x20, 0x04, 0xAF, 0xEB, 0xF2, 0xEA, 0xFA, 0xB6, 0x1B, 0xDC, 0x64, 0x52, 0xD7, 0x55, + 0x99, 0xE7, 0xC4, 0xC5, 0x4F, 0x99, 0xD1, 0x29, 0x25, 0x06, 0x2C, 0xC4, 0xE8, 0xBD, 0x8F, 0x18, + 0x8F, 0x66, 0xD3, 0x22, 0x37, 0xF3, 0xD9, 0xC4, 0x7B, 0xFF, 0xEC, 0xF9, 0x45, 0x9E, 0x67, 0xCE, + 0x07, 0x21, 0xC5, 0x6C, 0x52, 0xF7, 0xBD, 0x5D, 0xEF, 0x9A, 0x94, 0x12, 0x19, 0x5E, 0x48, 0x21, + 0xBA, 0xC1, 0x4E, 0xAA, 0x0A, 0x20, 0x09, 0x21, 0x26, 0x55, 0x75, 0x75, 0x75, 0x53, 0xE4, 0x39, + 0xE7, 0xFC, 0x78, 0x31, 0xBF, 0xBC, 0xBA, 0xC5, 0x84, 0x54, 0xEF, 0xF4, 0xC3, 0xA0, 0xA4, 0x20, + 0x07, 0xDC, 0xF5, 0x7A, 0xEB, 0x83, 0x97, 0x52, 0x92, 0x63, 0x5B, 0x55, 0xE6, 0x3F, 0xFE, 0xD9, + 0x47, 0xCE, 0x79, 0xEB, 0x3C, 0x79, 0x1D, 0x91, 0xD9, 0x20, 0x19, 0x35, 0xA5, 0x94, 0x8C, 0x56, + 0x7C, 0x6C, 0x1C, 0x31, 0x21, 0xA5, 0x14, 0xDC, 0x07, 0x44, 0x4C, 0xE4, 0xCD, 0x2C, 0x85, 0x28, + 0x8B, 0xCC, 0x87, 0x30, 0x58, 0xCF, 0x19, 0x5F, 0x6F, 0x36, 0xCB, 0xD5, 0xC6, 0x3A, 0xDF, 0xF5, + 0xBD, 0x52, 0xCA, 0xFB, 0x20, 0x38, 0xAF, 0x8A, 0xC2, 0xF9, 0xC0, 0x38, 0x97, 0x52, 0x42, 0x4A, + 0x42, 0x08, 0xEB, 0x1C, 0x22, 0x8E, 0xD6, 0x90, 0x88, 0xD7, 0x37, 0xCB, 0xA2, 0x28, 0x08, 0x24, + 0x62, 0x9C, 0xE5, 0x59, 0x86, 0x09, 0x6F, 0x97, 0x2B, 0x25, 0x04, 0x02, 0x5C, 0x5E, 0xDF, 0xD0, + 0x94, 0xD5, 0xFB, 0x1F, 0xFC, 0xEA, 0xFA, 0x76, 0xE5, 0x7D, 0xC8, 0x8D, 0x39, 0x3B, 0x39, 0xEA, + 0xDA, 0x9E, 0x71, 0xEE, 0x9C, 0x3B, 0x3D, 0x9E, 0xFD, 0xCB, 0x7F, 0xF6, 0xDD, 0xB3, 0x93, 0x79, + 0xDB, 0xF5, 0x1F, 0x7F, 0xF2, 0xFC, 0x97, 0xBF, 0xFA, 0x3C, 0xCF, 0x33, 0xEF, 0x1C, 0xCD, 0x2A, + 0x1A, 0xA3, 0x49, 0xC1, 0xAB, 0xEF, 0x07, 0x21, 0x44, 0x3F, 0x0C, 0xCB, 0xD5, 0x16, 0x11, 0x9F, + 0x9F, 0x5F, 0x20, 0x22, 0x59, 0xC9, 0x35, 0x5D, 0x4F, 0xE8, 0x15, 0xAD, 0x45, 0x02, 0x25, 0x63, + 0x8C, 0xD3, 0x69, 0xDD, 0xB5, 0xED, 0xD0, 0x0F, 0x5D, 0xDF, 0x49, 0x21, 0x1F, 0x3C, 0x38, 0x91, + 0x52, 0xCC, 0x67, 0x13, 0xC6, 0x98, 0x90, 0xBC, 0x2C, 0x32, 0xAD, 0xA5, 0x14, 0x7C, 0xCF, 0x2A, + 0x20, 0xCE, 0x16, 0x13, 0xA3, 0xAA, 0x9A, 0x10, 0x92, 0x13, 0x2F, 0xFD, 0x8E, 0xBF, 0x4E, 0xD0, + 0x98, 0x92, 0x9C, 0x0B, 0xF2, 0xA8, 0x3D, 0x4C, 0xFD, 0xB3, 0xBD, 0xB8, 0x04, 0xE7, 0x8C, 0x71, + 0x26, 0xFE, 0xF8, 0x8F, 0xFE, 0x90, 0x72, 0xB1, 0x18, 0x02, 0x26, 0x42, 0xD7, 0x14, 0xF1, 0xF3, + 0xB9, 0x90, 0x42, 0xCA, 0xD5, 0x72, 0xB5, 0x5C, 0xAE, 0x04, 0x67, 0xAB, 0x4D, 0x7B, 0xBB, 0xDC, + 0x59, 0xEB, 0x23, 0x46, 0xCE, 0x59, 0x99, 0x67, 0x47, 0xB3, 0xB2, 0x2C, 0xB2, 0xC1, 0xFA, 0xDB, + 0xD5, 0xF6, 0x66, 0xB9, 0xB9, 0xB9, 0xD9, 0x5C, 0x5E, 0x6F, 0xBA, 0x7E, 0x08, 0x21, 0x5A, 0x1B, + 0xEA, 0x22, 0xFB, 0xCA, 0x3B, 0x4F, 0x75, 0x9E, 0xF3, 0x51, 0x11, 0x9B, 0x31, 0xC6, 0xB4, 0x31, + 0xCA, 0x64, 0xE3, 0xF7, 0xCC, 0x58, 0x1A, 0xC7, 0x1E, 0x29, 0x2B, 0x42, 0x96, 0x30, 0x7A, 0x8F, + 0x21, 0x1C, 0x9A, 0x98, 0x04, 0x42, 0x01, 0xE7, 0xD4, 0x05, 0xA7, 0xB9, 0x57, 0x8A, 0x47, 0x8C, + 0x73, 0x48, 0x0C, 0x00, 0x19, 0x03, 0xC6, 0x04, 0x90, 0x0B, 0xC9, 0x7E, 0x12, 0x33, 0x41, 0x62, + 0x09, 0x28, 0xEC, 0x8F, 0x3F, 0xC5, 0x3F, 0xAE, 0x04, 0xCB, 0x39, 0xEF, 0x9A, 0xDD, 0xF3, 0x67, + 0x2F, 0x04, 0x57, 0x09, 0x00, 0x23, 0x84, 0x88, 0x89, 0x68, 0x27, 0x34, 0x30, 0x2C, 0xC6, 0xF4, + 0x74, 0xAC, 0x0B, 0xEE, 0x61, 0x94, 0x87, 0x48, 0x0A, 0x00, 0xC0, 0x12, 0x3F, 0x88, 0x6D, 0xA4, + 0x84, 0x29, 0xC5, 0x90, 0x42, 0xC4, 0xDD, 0xAE, 0x3B, 0x7F, 0x79, 0xFD, 0xE2, 0xD5, 0xED, 0xAB, + 0xAB, 0xDB, 0xAA, 0xAC, 0xBA, 0xBE, 0x97, 0x4A, 0x02, 0x63, 0xCE, 0xF9, 0x2C, 0xCF, 0xA7, 0xD3, + 0x7A, 0x36, 0x9D, 0x0C, 0xD6, 0x39, 0xEF, 0xD6, 0x9B, 0xAD, 0x92, 0xF2, 0xEC, 0xF4, 0xA8, 0x2E, + 0x8B, 0x3F, 0xFF, 0xFE, 0xDF, 0x5E, 0x5D, 0x2F, 0x81, 0xB1, 0x61, 0xB0, 0xB4, 0x86, 0x53, 0x4A, + 0xBD, 0xB5, 0xAB, 0xCD, 0x46, 0x29, 0x05, 0x09, 0x26, 0x75, 0x79, 0x34, 0x9D, 0x6E, 0xDB, 0x96, + 0xD2, 0x9C, 0xCE, 0x5A, 0x29, 0xE4, 0x83, 0xE3, 0xA3, 0xAA, 0xC8, 0xB7, 0x4D, 0x13, 0x10, 0xEB, + 0xA2, 0x88, 0x18, 0x5F, 0xDD, 0xAC, 0x10, 0xD3, 0x6C, 0x52, 0x7B, 0x1F, 0x63, 0x4A, 0x57, 0xCB, + 0xCD, 0x66, 0xD7, 0x7A, 0x92, 0x03, 0x02, 0x20, 0x69, 0x07, 0x9A, 0xAF, 0xA6, 0xB6, 0x5D, 0x8C, + 0x48, 0xF0, 0xE5, 0xF1, 0x62, 0x56, 0x16, 0x79, 0x5D, 0x57, 0x5D, 0xD7, 0xF5, 0xFD, 0xD0, 0x0F, + 0x6E, 0xB0, 0x4E, 0x1B, 0x33, 0xA9, 0x6B, 0x44, 0x84, 0x94, 0xB4, 0xD6, 0x44, 0xA4, 0x84, 0x94, + 0x8C, 0x56, 0x18, 0x31, 0x2F, 0x32, 0x21, 0x39, 0x24, 0x20, 0x6D, 0xB8, 0xBA, 0x2C, 0x10, 0x71, + 0xB9, 0xDA, 0x70, 0xCE, 0xDE, 0xFB, 0xE6, 0x57, 0x62, 0x0C, 0x52, 0x70, 0x44, 0xB4, 0xCE, 0xB7, + 0x6D, 0xB7, 0x6B, 0x3B, 0xCE, 0x59, 0x59, 0x96, 0xE4, 0xBD, 0xA0, 0x94, 0x68, 0xDB, 0x5E, 0x0A, + 0xF1, 0xF4, 0xB5, 0x47, 0x8F, 0x1F, 0x3F, 0x98, 0x4E, 0x27, 0xDB, 0xED, 0xEE, 0xFA, 0x76, 0xBD, + 0xDA, 0x6C, 0x87, 0xC1, 0x9E, 0x9D, 0x1E, 0x03, 0xA2, 0x77, 0x8E, 0x84, 0xC9, 0x94, 0x92, 0xF4, + 0x25, 0xD0, 0xDE, 0x5D, 0x55, 0xE5, 0xC3, 0xB3, 0x93, 0x94, 0xD2, 0xF5, 0xCD, 0x92, 0xCA, 0xF1, + 0xCC, 0x64, 0x34, 0x56, 0x29, 0xA5, 0x5C, 0x2C, 0x66, 0x97, 0x97, 0x37, 0x11, 0xD3, 0xD1, 0x6C, + 0x32, 0x99, 0x54, 0x5A, 0xAB, 0xA6, 0xED, 0x48, 0x4B, 0x64, 0xBB, 0x6B, 0xBF, 0xF2, 0xCE, 0xD3, + 0xED, 0xAE, 0x7D, 0xFE, 0xE2, 0xC2, 0x18, 0x95, 0x19, 0x3D, 0x9B, 0xD6, 0xBB, 0xA6, 0x9B, 0x4D, + 0xAB, 0x69, 0x5D, 0x31, 0x00, 0x29, 0x84, 0x92, 0x82, 0x26, 0x9F, 0x20, 0x81, 0x0B, 0x21, 0xCB, + 0xCC, 0x66, 0xB3, 0x7B, 0xF6, 0xE2, 0xA2, 0xAE, 0xCA, 0xD5, 0x7A, 0xCB, 0x19, 0x53, 0x4A, 0x79, + 0xEF, 0xAD, 0xF3, 0x90, 0x80, 0x0B, 0x26, 0x38, 0x23, 0xC2, 0xF6, 0x60, 0x1D, 0xE7, 0x3C, 0x37, + 0x6A, 0x70, 0x9E, 0x16, 0x9E, 0x16, 0x5C, 0x4A, 0xA1, 0xA5, 0xEC, 0xAD, 0xDB, 0x35, 0x5D, 0x8C, + 0x11, 0x23, 0xF6, 0xFD, 0x50, 0x96, 0xE5, 0x76, 0xBB, 0xDB, 0x93, 0xD4, 0xC0, 0x5A, 0x9F, 0x20, + 0x29, 0x29, 0x9D, 0x73, 0x8C, 0x71, 0x6B, 0x1D, 0x63, 0xEC, 0xEC, 0x74, 0x51, 0x16, 0x26, 0xCF, + 0xCC, 0xB3, 0xF3, 0x57, 0xCE, 0x79, 0x12, 0xC9, 0xA1, 0xB6, 0x78, 0xD3, 0xB6, 0x79, 0x66, 0x4E, + 0x8F, 0x17, 0x5D, 0xDF, 0x0F, 0xD6, 0x9E, 0x2C, 0x16, 0x18, 0x71, 0xBD, 0xDD, 0x19, 0xAD, 0x8F, + 0x17, 0x47, 0xD6, 0xDA, 0xC1, 0xDA, 0xE9, 0xA4, 0x24, 0x9F, 0xBD, 0x6F, 0x7E, 0xED, 0xCD, 0xFF, + 0xFA, 0xF7, 0xBF, 0x57, 0x64, 0xC6, 0xFB, 0xF0, 0xD3, 0x9F, 0x7D, 0xB4, 0x5C, 0x6D, 0x7F, 0xE7, + 0x7B, 0xDF, 0x36, 0x46, 0x7D, 0xF4, 0xF1, 0xE7, 0x75, 0x59, 0x38, 0xE7, 0xFB, 0xC1, 0x4A, 0x29, + 0xBB, 0x6E, 0xF0, 0x21, 0xBC, 0xF6, 0xE8, 0x8C, 0x31, 0x76, 0x73, 0x73, 0x3B, 0x9B, 0x54, 0x5A, + 0xC9, 0xB2, 0x2A, 0x1F, 0x3D, 0x38, 0x15, 0x9C, 0xC5, 0x18, 0xA7, 0x75, 0x59, 0x97, 0x45, 0x6E, + 0x54, 0xAE, 0xE5, 0xB4, 0xCC, 0x43, 0x0C, 0x2E, 0x44, 0x3B, 0xB8, 0xC1, 0x5A, 0xEF, 0x5D, 0x99, + 0xE7, 0x55, 0x55, 0x2A, 0x29, 0xE7, 0xB3, 0x2A, 0x33, 0x5A, 0x2B, 0x31, 0xA9, 0x0B, 0xAD, 0x88, + 0x34, 0x3E, 0x4E, 0x17, 0xD2, 0xFA, 0xE1, 0x87, 0xC7, 0x5E, 0xBC, 0xEB, 0xC0, 0x97, 0x18, 0x53, + 0x12, 0x4E, 0x89, 0x98, 0x20, 0x63, 0x8D, 0x2F, 0x20, 0x48, 0xF7, 0xAA, 0x53, 0xCA, 0xD3, 0x46, + 0xCC, 0x88, 0x9C, 0x78, 0xA4, 0x52, 0xC0, 0x85, 0x10, 0x82, 0x52, 0x9E, 0xE3, 0x93, 0xE3, 0x3C, + 0xCB, 0xCE, 0x5F, 0x5E, 0xD2, 0x6C, 0x7D, 0xDA, 0x93, 0xD3, 0x10, 0xD3, 0xCD, 0x6A, 0xD7, 0xBF, + 0xBC, 0xA5, 0xE3, 0x0B, 0x21, 0x0E, 0xCE, 0x7B, 0x1F, 0x89, 0xEC, 0x50, 0x64, 0xEA, 0xF5, 0xD7, + 0x1F, 0x64, 0x65, 0x11, 0x22, 0x2A, 0x00, 0xA5, 0x54, 0x42, 0x6C, 0x9A, 0x56, 0x6B, 0x27, 0xA4, + 0x44, 0x87, 0x42, 0x4A, 0x3E, 0xB6, 0xAB, 0x01, 0x80, 0x01, 0x46, 0xC0, 0x48, 0x51, 0x2B, 0x21, + 0x8E, 0x93, 0x6C, 0x63, 0xCC, 0x48, 0xFB, 0xAE, 0x62, 0x22, 0xB5, 0x58, 0xC6, 0x18, 0xE3, 0xF7, + 0xA5, 0xBB, 0xD8, 0xC8, 0x0B, 0x3B, 0x54, 0xA8, 0xD4, 0x49, 0xD8, 0x67, 0xA6, 0x90, 0x04, 0xB0, + 0x2F, 0x36, 0x10, 0xC6, 0xD7, 0x92, 0xA5, 0xB9, 0x7D, 0xF1, 0xFC, 0x1C, 0x11, 0x18, 0x67, 0x64, + 0xB1, 0x37, 0xAA, 0x3A, 0x26, 0x48, 0x7B, 0xD5, 0xE9, 0xC3, 0x85, 0x0D, 0x98, 0x18, 0xD1, 0xD8, + 0x12, 0x2A, 0x10, 0x42, 0x8C, 0xD7, 0x9D, 0xB8, 0x62, 0xA4, 0xB4, 0xB3, 0x4F, 0x32, 0x59, 0x8C, + 0xB8, 0x6B, 0xFB, 0xF3, 0x8B, 0xAB, 0x8B, 0x8B, 0x2B, 0xC6, 0xC5, 0xD9, 0xC9, 0x71, 0x08, 0xE1, + 0xD1, 0xA3, 0xB3, 0xA3, 0xA3, 0xF9, 0x76, 0xDB, 0x74, 0xDD, 0xF0, 0xE0, 0xEC, 0x98, 0x2C, 0xC8, + 0x6E, 0x97, 0x6B, 0x6B, 0x2D, 0xA4, 0xF4, 0xE0, 0xF4, 0xA4, 0xEB, 0x86, 0xFF, 0xE3, 0xCF, 0xFE, + 0xE2, 0xD5, 0xE5, 0xB2, 0xB7, 0x03, 0x8D, 0x43, 0x73, 0x00, 0xEB, 0x5C, 0xC4, 0x14, 0x13, 0x4E, + 0xAA, 0xBA, 0x2C, 0xF2, 0xCD, 0x76, 0xCB, 0x38, 0xBF, 0xDD, 0x6C, 0xBA, 0x6E, 0x40, 0x44, 0xD0, + 0x0C, 0x13, 0xB4, 0x83, 0xBD, 0xBA, 0x5D, 0x53, 0x2F, 0xDF, 0x79, 0x2F, 0x84, 0x50, 0x42, 0x4A, + 0x81, 0x8C, 0xB1, 0x57, 0xD7, 0xEB, 0x98, 0x90, 0x01, 0x74, 0xDD, 0x40, 0x26, 0xC1, 0x04, 0x5F, + 0x22, 0x26, 0xEB, 0x03, 0xA2, 0x27, 0x00, 0x02, 0x12, 0x70, 0xCE, 0x42, 0x88, 0xA7, 0x27, 0xF3, + 0x49, 0x5D, 0xED, 0x76, 0x4D, 0xB3, 0xDB, 0xD9, 0xC1, 0x6E, 0x9B, 0xB6, 0x1F, 0x6C, 0x55, 0x95, + 0xA7, 0xC7, 0x0B, 0x06, 0x69, 0xB7, 0xDD, 0x1D, 0x7A, 0xB8, 0x42, 0x08, 0x92, 0x09, 0xA8, 0xCB, + 0x8C, 0x01, 0x5B, 0xAF, 0x76, 0x64, 0x33, 0xBA, 0x6D, 0xDA, 0xF9, 0xA4, 0x2E, 0x0B, 0x33, 0xA9, + 0x8A, 0xA3, 0xD9, 0xC4, 0x39, 0x17, 0x63, 0x0C, 0xCE, 0x93, 0x34, 0xD8, 0x7C, 0x3E, 0xDD, 0xEC, + 0x9A, 0x04, 0x20, 0x84, 0x08, 0xC1, 0xD7, 0x65, 0x41, 0xF3, 0x77, 0x9B, 0x6D, 0x43, 0x86, 0x98, + 0xC6, 0xE8, 0xDF, 0xFC, 0xCE, 0x37, 0xB3, 0xCC, 0x5C, 0x5E, 0xAF, 0xBC, 0x8F, 0x31, 0x46, 0x21, + 0x44, 0x88, 0xD4, 0xED, 0x65, 0x4A, 0xC9, 0x10, 0x31, 0x84, 0xE8, 0x06, 0xDB, 0x42, 0x32, 0x8D, + 0xBE, 0xBE, 0x59, 0x5D, 0xDF, 0xDC, 0x4A, 0x25, 0x38, 0xD7, 0x37, 0x37, 0xCB, 0xAB, 0xEB, 0x9B, + 0x53, 0xB6, 0xF8, 0xFA, 0xBB, 0x6F, 0x26, 0x32, 0x34, 0xB1, 0x7E, 0xB3, 0xDD, 0x59, 0xE7, 0x95, + 0xE0, 0x9B, 0x5D, 0xFB, 0xE6, 0xD3, 0xC7, 0x55, 0x91, 0x3F, 0x7B, 0x71, 0x71, 0x34, 0x9F, 0x3E, + 0x3F, 0xBF, 0x50, 0x52, 0x4C, 0x27, 0x55, 0x59, 0xE4, 0x09, 0x93, 0x10, 0xFC, 0xEC, 0x78, 0xC6, + 0x69, 0x7E, 0xA8, 0x2A, 0x94, 0x12, 0x29, 0x41, 0x66, 0xF4, 0x7A, 0xDB, 0x4C, 0xA7, 0xF5, 0xEB, + 0x4F, 0xCE, 0x72, 0xA3, 0xBD, 0xF7, 0x5F, 0xFB, 0xCA, 0x1B, 0x09, 0x52, 0x3B, 0x0C, 0xC1, 0x07, + 0x92, 0x84, 0x15, 0x9C, 0x31, 0x21, 0x85, 0x00, 0xE2, 0x73, 0x38, 0xEF, 0x39, 0x17, 0x00, 0x29, + 0x44, 0xA4, 0xD2, 0xDD, 0xF5, 0xCE, 0x5A, 0x5B, 0x95, 0xA5, 0x94, 0x4A, 0x08, 0xF1, 0xF0, 0xC1, + 0xC9, 0xAB, 0xCB, 0xEB, 0xD5, 0x66, 0xCB, 0xB8, 0x28, 0xAB, 0x54, 0x55, 0x65, 0xD7, 0xF5, 0x4A, + 0xA9, 0x61, 0xB0, 0x4A, 0xC9, 0x22, 0xCF, 0xB9, 0x10, 0xD6, 0x5A, 0xF2, 0x58, 0x2B, 0x4B, 0x35, + 0x0C, 0x16, 0x18, 0x10, 0x5B, 0x93, 0x01, 0x84, 0xE0, 0x19, 0xE3, 0x09, 0x13, 0x40, 0xCA, 0x8C, + 0xC9, 0xB3, 0xCC, 0x79, 0x7F, 0x7C, 0x7C, 0x44, 0x64, 0x14, 0xAD, 0x44, 0x3F, 0x0C, 0xC6, 0xE8, + 0xAA, 0xCA, 0x5F, 0x5E, 0x8C, 0x02, 0xB3, 0xDF, 0xF9, 0xD6, 0x57, 0x9F, 0x3C, 0x3A, 0x79, 0xFC, + 0xF0, 0x94, 0x50, 0xFF, 0x9F, 0xFE, 0xEC, 0xA3, 0x4F, 0x9F, 0x9D, 0x1F, 0xCD, 0xEA, 0xAE, 0xEF, + 0x7F, 0xF0, 0xC3, 0x9F, 0x90, 0x16, 0xD3, 0xA9, 0x56, 0xAF, 0x2E, 0xAF, 0xBD, 0xB3, 0x00, 0x38, + 0xAD, 0x0A, 0xCE, 0x40, 0x70, 0xA8, 0xAB, 0x22, 0x37, 0xB2, 0x7A, 0x78, 0x32, 0x2A, 0xD3, 0x42, + 0x29, 0x18, 0x54, 0x55, 0x89, 0x11, 0xDB, 0xBE, 0x57, 0x4A, 0x69, 0xA5, 0xA4, 0x52, 0x42, 0xEE, + 0x52, 0x82, 0x93, 0xC5, 0x11, 0xE3, 0x00, 0x29, 0x09, 0x00, 0x2D, 0xF8, 0xD1, 0x6C, 0xCA, 0x19, + 0xD3, 0x5A, 0x2A, 0x29, 0x49, 0x01, 0x8C, 0x74, 0x76, 0x38, 0x67, 0xA3, 0xE6, 0xE4, 0x3E, 0x30, + 0x7D, 0x31, 0x7E, 0xDD, 0x25, 0x0A, 0xEC, 0x8B, 0x1A, 0x14, 0x69, 0x24, 0xAE, 0xB2, 0x7B, 0x7D, + 0x3E, 0x20, 0xA6, 0x34, 0x81, 0x76, 0x11, 0x00, 0x48, 0x71, 0x90, 0xED, 0x29, 0x73, 0x30, 0xEA, + 0x4D, 0x0B, 0xCE, 0x89, 0x12, 0x0C, 0x94, 0x43, 0x06, 0x8E, 0x55, 0x25, 0xBB, 0xDE, 0x21, 0x26, + 0x63, 0xA4, 0x96, 0x32, 0x22, 0x7A, 0x1F, 0xAC, 0x0D, 0x88, 0x58, 0x15, 0x46, 0x08, 0xFE, 0xD5, + 0xB7, 0x1F, 0x9F, 0x9C, 0x2C, 0x10, 0x81, 0x01, 0x24, 0xC6, 0x6C, 0xD7, 0x2E, 0x97, 0xEB, 0xB6, + 0xEB, 0x19, 0x03, 0xAD, 0x95, 0x73, 0xDE, 0xF0, 0x9C, 0x01, 0x19, 0x67, 0x40, 0x42, 0xDC, 0x77, + 0x24, 0xC7, 0x7C, 0x8A, 0x01, 0xE0, 0xDE, 0x6E, 0x52, 0x48, 0xC9, 0x01, 0x80, 0x8B, 0x04, 0x00, + 0x88, 0xD1, 0xFB, 0xFD, 0xA8, 0x1B, 0xE7, 0x42, 0x8E, 0x80, 0x17, 0xDB, 0xE7, 0x6E, 0x5F, 0xCA, + 0x92, 0x20, 0x41, 0x62, 0x69, 0x6F, 0xF5, 0x78, 0xEF, 0x72, 0x8C, 0xA4, 0x4A, 0x8C, 0xFE, 0x57, + 0x1F, 0x7D, 0xDC, 0xB6, 0x83, 0x94, 0x32, 0xC6, 0x14, 0x31, 0x61, 0x4A, 0xA3, 0x82, 0xDE, 0x3E, + 0xEC, 0x8F, 0x12, 0x47, 0x08, 0x94, 0x67, 0x51, 0xBA, 0x45, 0x8D, 0x98, 0x7D, 0x14, 0x63, 0xD4, + 0x9F, 0xC0, 0x71, 0x06, 0x6E, 0x04, 0x2F, 0x77, 0x4D, 0x77, 0x7E, 0x71, 0x75, 0x79, 0xBD, 0xEC, + 0xFA, 0x61, 0x32, 0x9D, 0x64, 0x59, 0x56, 0x95, 0x85, 0xC9, 0xCD, 0xE5, 0xD5, 0xED, 0x6C, 0x5A, + 0x57, 0x55, 0xA9, 0x8D, 0xBE, 0xBC, 0xBA, 0xBD, 0xBA, 0x5D, 0xDD, 0xDC, 0xAE, 0x16, 0xF3, 0xD9, + 0x37, 0xBF, 0xF6, 0xD6, 0xB3, 0xE7, 0x2F, 0x3F, 0xFC, 0xF0, 0xD3, 0xE5, 0x72, 0x3B, 0x99, 0x54, + 0xD0, 0x30, 0xE7, 0x3C, 0xA9, 0x17, 0x24, 0x00, 0xA3, 0x75, 0x82, 0x11, 0xCE, 0xF7, 0x21, 0x6C, + 0x77, 0x8D, 0x94, 0x52, 0x4A, 0xC1, 0xB9, 0x4A, 0x90, 0xFA, 0xC1, 0xB5, 0x5D, 0xDF, 0xF5, 0xBD, + 0x96, 0x8A, 0x08, 0x3E, 0xD6, 0x3A, 0x94, 0xD2, 0xF9, 0x40, 0x96, 0x42, 0x98, 0x30, 0x21, 0x2A, + 0x21, 0x07, 0x6F, 0x49, 0x0E, 0x84, 0xB8, 0x6E, 0x31, 0xA2, 0x1C, 0xE5, 0x27, 0x29, 0xF0, 0x83, + 0x10, 0x3C, 0xD3, 0x7A, 0xE8, 0x07, 0x96, 0x20, 0x21, 0xB6, 0xDD, 0x80, 0x88, 0xB3, 0xAA, 0x5C, + 0x2C, 0xE6, 0xF3, 0xA3, 0xE9, 0x66, 0xBD, 0xC5, 0x18, 0xA9, 0x7D, 0x2E, 0xA4, 0x64, 0x31, 0x7A, + 0x1F, 0x74, 0x5D, 0x14, 0x45, 0xD6, 0x36, 0x7D, 0x88, 0x31, 0xC6, 0xE4, 0xBC, 0x53, 0x4A, 0x09, + 0xC1, 0x04, 0x63, 0x47, 0xB3, 0x9A, 0xA5, 0x34, 0x8A, 0xE8, 0x8B, 0xA4, 0x94, 0x9A, 0x1B, 0xC3, + 0x85, 0x78, 0xF2, 0xE8, 0x6C, 0xB5, 0xDE, 0x6E, 0x77, 0x3B, 0xA3, 0x95, 0xB5, 0x3E, 0xCF, 0x4D, + 0x9E, 0x19, 0x6B, 0xF4, 0xAE, 0x69, 0x31, 0xE2, 0x8B, 0x97, 0x17, 0x75, 0x55, 0xCE, 0xA6, 0x93, + 0x3C, 0xCF, 0xCF, 0x2F, 0xAE, 0x57, 0xEB, 0x2D, 0x91, 0xBF, 0xBB, 0xAE, 0xAF, 0xEB, 0x32, 0xA5, + 0x24, 0x38, 0x07, 0x01, 0x82, 0xF3, 0xD3, 0xD3, 0x93, 0x2C, 0x33, 0xAB, 0xF5, 0xD6, 0xF9, 0xF0, + 0xC6, 0xEB, 0x8F, 0x27, 0x93, 0xEA, 0x79, 0x99, 0xDF, 0xDC, 0xAE, 0x2F, 0x2F, 0x6F, 0x94, 0x10, + 0xDF, 0xFE, 0xD6, 0x57, 0xDF, 0xFF, 0xF9, 0xAF, 0x9A, 0xB6, 0xAD, 0xEA, 0x92, 0x33, 0x1E, 0xBC, + 0x23, 0xA4, 0xD9, 0x79, 0xFF, 0xE6, 0xD3, 0xC7, 0xB7, 0xCB, 0x35, 0x46, 0x94, 0x42, 0x4C, 0xEB, + 0xAA, 0xAE, 0xCB, 0xDC, 0xE8, 0x14, 0x71, 0x36, 0xA9, 0xC8, 0x3B, 0xA3, 0x2C, 0xF2, 0x3C, 0x37, + 0x55, 0x59, 0x9E, 0x1C, 0xCF, 0x77, 0x6D, 0xF7, 0xDE, 0xD7, 0xDF, 0x21, 0x41, 0xB1, 0xDF, 0xFE, + 0xEE, 0x37, 0x67, 0x93, 0xF2, 0x7F, 0xFB, 0x8F, 0x7F, 0x4E, 0x1B, 0x67, 0x8C, 0xD1, 0x39, 0x87, + 0x48, 0x77, 0x07, 0x57, 0x52, 0x02, 0x00, 0x67, 0x2C, 0xCF, 0x34, 0x62, 0xB2, 0xDE, 0x73, 0xC1, + 0x87, 0xC1, 0xB6, 0x6D, 0xDF, 0xB6, 0x7D, 0x88, 0x89, 0x0B, 0xBE, 0x5C, 0x6D, 0x7E, 0xEB, 0x37, + 0xBE, 0xE5, 0xAC, 0xBF, 0xBC, 0xBA, 0x15, 0x12, 0xAE, 0xAE, 0x6F, 0x01, 0xA0, 0xAE, 0x4B, 0x8A, + 0x56, 0x42, 0x70, 0x1F, 0xC2, 0xD3, 0x47, 0xA7, 0xB7, 0x4A, 0xDC, 0xDC, 0xAC, 0x84, 0xE0, 0x7D, + 0xDF, 0x93, 0xB6, 0xC3, 0x6A, 0x9D, 0xD4, 0xF8, 0xA5, 0xF3, 0x94, 0x12, 0xD5, 0x0A, 0x93, 0xAA, + 0x3C, 0xBF, 0x78, 0xF5, 0xDA, 0xE3, 0x07, 0xEF, 0xBC, 0xF9, 0x78, 0xBB, 0x6D, 0xCA, 0xB2, 0x1C, + 0x86, 0xE1, 0xF2, 0xEA, 0xF6, 0xAD, 0xA7, 0x8F, 0x1F, 0x3E, 0x58, 0x9C, 0x9F, 0xBF, 0x3A, 0x2D, + 0x8F, 0x9E, 0x3E, 0x39, 0xFB, 0xBD, 0x7F, 0xFA, 0x1E, 0x22, 0x6E, 0xB6, 0x0D, 0x00, 0x34, 0x6D, + 0xF7, 0xB3, 0x0F, 0x3E, 0x7A, 0xF2, 0xE4, 0x61, 0xDB, 0xF4, 0xFF, 0xE9, 0x3F, 0x7F, 0x1F, 0x83, + 0x9F, 0xD4, 0x15, 0x17, 0xD2, 0xF7, 0x7D, 0x5D, 0x16, 0xF3, 0xF9, 0x9C, 0xEC, 0xB8, 0x8A, 0x3C, + 0xCB, 0xB3, 0x45, 0x55, 0x64, 0x79, 0x6E, 0x48, 0xDC, 0x78, 0xB0, 0xB6, 0xEB, 0x87, 0xC9, 0x64, + 0xF2, 0xF4, 0xB5, 0x07, 0x0C, 0xA0, 0x1F, 0x2C, 0x62, 0x6A, 0xBA, 0xCE, 0x18, 0x7D, 0x74, 0x34, + 0xE3, 0x5C, 0xD4, 0x55, 0xD1, 0xB6, 0x9D, 0xF7, 0x9E, 0x33, 0xA8, 0xCA, 0xCC, 0x3B, 0x37, 0x5D, + 0x4C, 0xB5, 0x92, 0x52, 0x72, 0x21, 0xF6, 0x6E, 0x06, 0x30, 0xC2, 0xE0, 0x8C, 0xDF, 0x51, 0x0E, + 0xEE, 0xB7, 0xF2, 0x18, 0x00, 0xC2, 0x1E, 0x76, 0x1A, 0x75, 0x79, 0x69, 0xF8, 0x1B, 0xF7, 0x21, + 0x8F, 0x56, 0xF1, 0x1D, 0x24, 0x2D, 0x71, 0xD4, 0x11, 0x97, 0xCA, 0x18, 0xA9, 0x34, 0x83, 0x3B, + 0x85, 0x89, 0x94, 0x12, 0x4B, 0x80, 0xD1, 0x3B, 0x6B, 0xF9, 0xDE, 0xE7, 0x02, 0x20, 0x71, 0xC6, + 0x10, 0x71, 0x36, 0xC9, 0x9D, 0x8F, 0x5D, 0x6F, 0x31, 0xE2, 0x76, 0xD7, 0x5B, 0x17, 0x8C, 0x96, + 0x52, 0xA8, 0xAA, 0xCA, 0x8D, 0x14, 0xB3, 0xF9, 0x8C, 0x49, 0x45, 0x4D, 0xA5, 0x14, 0xB1, 0x69, + 0x5A, 0xA5, 0xC4, 0xC3, 0x87, 0x67, 0x7B, 0xD3, 0x84, 0x71, 0x54, 0x2D, 0x21, 0x1D, 0x0B, 0x42, + 0x02, 0xCE, 0x05, 0xF9, 0xE5, 0x1C, 0xE2, 0x2E, 0x4B, 0x80, 0x18, 0x63, 0x00, 0x46, 0xC3, 0x93, + 0x29, 0xB1, 0x84, 0xDE, 0x3B, 0x44, 0xA4, 0xB8, 0x95, 0xE5, 0x39, 0x62, 0x12, 0x42, 0x70, 0x21, + 0x81, 0x8B, 0x3D, 0xDC, 0x76, 0x47, 0xAA, 0x18, 0x8B, 0xE9, 0x2F, 0xA7, 0x62, 0x89, 0x38, 0xE5, + 0xB6, 0x6F, 0x3F, 0xFA, 0xF0, 0x63, 0x12, 0x03, 0x88, 0x81, 0xF4, 0x35, 0x00, 0x71, 0xC4, 0x19, + 0x19, 0x63, 0x87, 0x37, 0x24, 0xD6, 0x28, 0x7D, 0xEA, 0x28, 0xD0, 0xAA, 0x7F, 0x6D, 0x9E, 0x74, + 0x9C, 0x4F, 0x62, 0x0C, 0x20, 0xC6, 0x78, 0x73, 0xBB, 0x59, 0xAD, 0xB7, 0xAB, 0xD5, 0xB6, 0x2A, + 0x8A, 0xB7, 0xDE, 0x7C, 0x1D, 0x81, 0x69, 0xA3, 0x13, 0xA6, 0xD5, 0x6A, 0x3B, 0x9B, 0xD6, 0x5A, + 0xEB, 0x67, 0xCF, 0x5F, 0x5A, 0xE7, 0xCF, 0x2F, 0x2E, 0x3F, 0xF9, 0xE4, 0xF9, 0x72, 0xB5, 0xF9, + 0xEF, 0xFF, 0xDB, 0x7F, 0xDE, 0x34, 0xDD, 0x7F, 0xFA, 0xD3, 0x3F, 0xE7, 0x8C, 0x4F, 0xA6, 0x35, + 0x97, 0x12, 0x31, 0x31, 0xCE, 0xD0, 0xD3, 0x62, 0x10, 0x5A, 0xAB, 0x4D, 0xD3, 0xE0, 0xE8, 0x5D, + 0xC6, 0xB4, 0xD6, 0x52, 0x0A, 0x2A, 0x4F, 0x9A, 0xBE, 0x0F, 0x31, 0xD1, 0x0C, 0x53, 0x0C, 0x41, + 0x70, 0x1E, 0x3D, 0x1A, 0xAD, 0x87, 0xC1, 0xC6, 0x18, 0x75, 0x91, 0x63, 0xC4, 0x10, 0x82, 0x0B, + 0x5E, 0x70, 0xC1, 0x18, 0x17, 0x02, 0x68, 0xEB, 0x62, 0x0C, 0xB4, 0x96, 0x18, 0x91, 0x31, 0x36, + 0x1A, 0xA3, 0x71, 0xCE, 0x38, 0x1B, 0xAC, 0x55, 0x42, 0x84, 0x88, 0xDB, 0xA6, 0xED, 0x06, 0x5B, + 0xE5, 0xC6, 0x48, 0x15, 0x43, 0xE0, 0x0C, 0xB4, 0x96, 0x34, 0xF4, 0x4B, 0x83, 0xAC, 0x09, 0x51, + 0x70, 0xF0, 0x3E, 0xAC, 0x57, 0x3B, 0x22, 0xAA, 0xB7, 0xC3, 0xE0, 0xBD, 0x3F, 0x3B, 0x5E, 0x30, + 0x80, 0xED, 0x6E, 0x17, 0xD6, 0x71, 0xD7, 0xB4, 0x67, 0x67, 0x8B, 0xD3, 0x93, 0xA3, 0x18, 0x35, + 0x1D, 0x36, 0x8F, 0x91, 0xB0, 0x8E, 0x61, 0xB0, 0x74, 0x8D, 0xFB, 0x01, 0x68, 0xE5, 0xDC, 0x2E, + 0xD7, 0x3E, 0x84, 0xE3, 0xC5, 0xC2, 0x3A, 0x1F, 0xA3, 0x37, 0x59, 0xF6, 0xFA, 0x93, 0x87, 0x93, + 0xAA, 0xBC, 0xB8, 0xBC, 0x79, 0xF8, 0xE0, 0x94, 0xE8, 0xA3, 0x6D, 0xD7, 0xED, 0x0D, 0xB7, 0xA0, + 0xAA, 0xCA, 0xDB, 0xD5, 0x26, 0xC6, 0xAD, 0xD6, 0xEA, 0xB3, 0x67, 0x2F, 0xF3, 0x4C, 0x3F, 0x7E, + 0x74, 0xB6, 0x58, 0xCC, 0x3E, 0xF9, 0xF4, 0x85, 0x52, 0x22, 0x33, 0xEA, 0xEB, 0xEF, 0xBE, 0xD9, + 0x5B, 0xF7, 0xFC, 0xC5, 0xAB, 0xA6, 0xEB, 0x8E, 0x66, 0x93, 0xBA, 0xAE, 0x2E, 0xAF, 0x6E, 0xEA, + 0xA2, 0x10, 0x9C, 0xCF, 0x67, 0x93, 0xD5, 0x7A, 0x1B, 0x63, 0x9C, 0x4F, 0xAB, 0x3C, 0x33, 0x31, + 0x46, 0x1F, 0xA3, 0x60, 0xAC, 0xAA, 0x72, 0xA5, 0x84, 0x56, 0xCA, 0x68, 0xCD, 0x12, 0xBE, 0xFE, + 0xE8, 0x74, 0x32, 0x29, 0x13, 0xB0, 0x18, 0x22, 0x67, 0xEC, 0x74, 0x31, 0xBD, 0xBE, 0x5D, 0x5F, + 0xDD, 0x2C, 0xA5, 0xD4, 0x84, 0x8E, 0x01, 0xB0, 0xCC, 0x28, 0xEB, 0x02, 0xE5, 0x9B, 0x04, 0xD5, + 0x2B, 0x25, 0xFB, 0xAE, 0xD7, 0xAA, 0x54, 0x4A, 0x3A, 0xE7, 0xE9, 0x68, 0x63, 0x8C, 0x0F, 0xCE, + 0x4E, 0x18, 0x17, 0x2F, 0x2E, 0x2E, 0x97, 0xAB, 0x4D, 0x02, 0xF0, 0xDE, 0xD3, 0x58, 0x42, 0xDF, + 0x5B, 0x82, 0x85, 0x42, 0x88, 0x88, 0xFE, 0x67, 0x1F, 0x7C, 0x38, 0x9F, 0xCD, 0x4D, 0x66, 0x82, + 0xF7, 0x52, 0x4A, 0xAD, 0x64, 0xDB, 0xF5, 0xCE, 0x7B, 0xD0, 0x63, 0x25, 0x11, 0x63, 0x34, 0xC6, + 0x70, 0xCE, 0xAF, 0xAE, 0x6F, 0xDF, 0x7E, 0xF3, 0xB5, 0xEF, 0x7E, 0xE7, 0xEB, 0x00, 0xE9, 0xC9, + 0xC3, 0x13, 0x6D, 0x74, 0x6E, 0x8C, 0xD1, 0x8A, 0x9A, 0x03, 0xFF, 0xE3, 0xBF, 0xFD, 0x6F, 0xB4, + 0x92, 0x4A, 0xAB, 0xBE, 0x1F, 0xDA, 0xB6, 0x07, 0x80, 0x3C, 0xCF, 0x2E, 0x5E, 0x5D, 0xC5, 0x88, + 0x57, 0xD7, 0xCB, 0x97, 0x2F, 0xAF, 0x62, 0x0C, 0xB9, 0x56, 0xD3, 0x69, 0xDD, 0xF6, 0x76, 0xB7, + 0xDB, 0x29, 0xA9, 0x62, 0x0C, 0xCE, 0xF9, 0xAA, 0x2C, 0x1E, 0x9E, 0x2E, 0x94, 0x92, 0x93, 0xBA, + 0xD4, 0x5A, 0xDF, 0xDC, 0xAE, 0xBA, 0x6E, 0x60, 0x00, 0xC7, 0xF3, 0x49, 0x96, 0x99, 0x3C, 0xCB, + 0xAA, 0x32, 0x57, 0x4A, 0x22, 0xE2, 0xED, 0x72, 0xBD, 0x5A, 0xEF, 0x4C, 0x66, 0xC8, 0x37, 0x1A, + 0x8F, 0xA6, 0x9B, 0xED, 0x4E, 0x4A, 0x71, 0x34, 0x9B, 0x4C, 0xEA, 0xA2, 0xCC, 0xB3, 0x2C, 0x53, + 0xEA, 0x9E, 0xDD, 0x17, 0xE3, 0x8C, 0x33, 0xBE, 0x47, 0xF9, 0xBF, 0x34, 0x6A, 0x7D, 0x87, 0x31, + 0xEF, 0xC9, 0xF1, 0x90, 0x52, 0x82, 0x3B, 0x91, 0xAB, 0xBB, 0x97, 0xDC, 0x4F, 0xE2, 0xC4, 0xFF, + 0xFA, 0x27, 0x7F, 0x4C, 0x52, 0x93, 0xDA, 0x64, 0x00, 0x00, 0x38, 0xCA, 0x4E, 0x8C, 0x1C, 0x8F, + 0x18, 0x86, 0xBE, 0x5B, 0x6F, 0x76, 0x5D, 0xEF, 0x62, 0x8C, 0x81, 0xC0, 0xE4, 0xBB, 0x88, 0x98, + 0x88, 0xD8, 0xE2, 0x7C, 0x80, 0x44, 0xF2, 0xBB, 0xAC, 0xEB, 0x6D, 0x55, 0x66, 0x47, 0xF3, 0x49, + 0x0C, 0x91, 0x01, 0x46, 0x67, 0x09, 0xB6, 0xAC, 0x27, 0x93, 0xA2, 0x28, 0x12, 0xA2, 0x73, 0x96, + 0x4B, 0x21, 0xB8, 0xF0, 0x43, 0x8F, 0x31, 0x46, 0x0C, 0xC4, 0xC0, 0x20, 0x80, 0x09, 0x63, 0xD8, + 0x47, 0x22, 0x8A, 0xC6, 0x49, 0x2A, 0xC5, 0xF8, 0xBE, 0x29, 0xC8, 0x98, 0xB3, 0x43, 0x08, 0xA3, + 0x4D, 0x4C, 0xF0, 0xDE, 0x39, 0xEB, 0x9D, 0x03, 0x40, 0xCE, 0xF6, 0x13, 0x4B, 0x69, 0xBC, 0x22, + 0x63, 0xA4, 0xBF, 0x23, 0x5B, 0xD0, 0xA9, 0x8F, 0x93, 0x31, 0xCB, 0xDB, 0x9B, 0x8F, 0x7E, 0xF1, + 0xE1, 0xAE, 0x19, 0xC8, 0x92, 0x1E, 0xC7, 0x9E, 0x23, 0x60, 0x4A, 0x71, 0x0F, 0x83, 0x51, 0x94, + 0xA7, 0xB3, 0x0E, 0x09, 0x91, 0xC4, 0x84, 0x30, 0x71, 0xCE, 0x8C, 0x91, 0x52, 0x8E, 0x23, 0xC4, + 0x89, 0xC4, 0x94, 0xC7, 0x89, 0xF1, 0x84, 0x11, 0xDB, 0xDE, 0x6E, 0xB6, 0xCD, 0xD5, 0xF5, 0x52, + 0x48, 0xF9, 0xF4, 0xF5, 0x47, 0x8B, 0xC5, 0x9C, 0xBC, 0xD7, 0x76, 0x4D, 0xB7, 0x5C, 0xAE, 0xAF, + 0xAF, 0x6F, 0x7F, 0xF8, 0xA3, 0x9F, 0x7D, 0xFC, 0xE9, 0xF3, 0x8B, 0x8B, 0xCB, 0xF3, 0xF3, 0xCB, + 0xB6, 0xED, 0xBE, 0xFD, 0xAD, 0x77, 0xEB, 0xAA, 0xFC, 0x7F, 0xFF, 0xCB, 0x8F, 0x94, 0x90, 0x98, + 0x52, 0xD3, 0x75, 0xD6, 0x39, 0xDA, 0xA6, 0x30, 0x21, 0x03, 0xAE, 0xA4, 0x22, 0xDD, 0x2B, 0xC1, + 0x45, 0x9E, 0x1B, 0x25, 0xC9, 0x93, 0x80, 0xC7, 0x88, 0xDD, 0x30, 0x00, 0xE3, 0xB9, 0x31, 0xB9, + 0x56, 0x64, 0x40, 0x0B, 0x00, 0x4A, 0x08, 0xAD, 0xA5, 0x10, 0x42, 0x2B, 0x05, 0x64, 0xC0, 0x0E, + 0xE3, 0x45, 0x8E, 0x11, 0x19, 0x27, 0x8D, 0x36, 0x48, 0xC0, 0x48, 0xDA, 0x3E, 0xC6, 0x98, 0x19, + 0x4D, 0x0E, 0xDB, 0xE3, 0x9B, 0x0B, 0xBE, 0x6D, 0xBB, 0xC1, 0x7A, 0x44, 0xD4, 0x52, 0xD0, 0xF0, + 0xB3, 0x54, 0x6A, 0xBD, 0xDA, 0x38, 0xE7, 0x00, 0x40, 0x70, 0x11, 0x31, 0x86, 0x88, 0x9C, 0xF3, + 0x3C, 0xCB, 0x72, 0x92, 0xCF, 0x1F, 0x2C, 0xC6, 0x18, 0x53, 0xCA, 0xB4, 0x62, 0x29, 0xF9, 0x10, + 0xB4, 0xD6, 0x44, 0xE6, 0xCA, 0x0B, 0x03, 0x7B, 0xF8, 0x96, 0xB8, 0x02, 0x75, 0x55, 0x68, 0xA5, + 0xD6, 0x9B, 0x1D, 0x62, 0x2A, 0x8B, 0x7C, 0xBD, 0xDD, 0x11, 0x33, 0xA0, 0xEF, 0xED, 0xED, 0x72, + 0xB5, 0x5C, 0xAE, 0xBC, 0x0F, 0x7B, 0x50, 0x1F, 0xB5, 0x94, 0xF5, 0xA4, 0xAC, 0xCA, 0x62, 0x18, + 0xAC, 0x0F, 0xDE, 0x18, 0x43, 0x24, 0xB2, 0x5D, 0xD3, 0x84, 0x10, 0x8F, 0x8E, 0x66, 0xBB, 0xA6, + 0x59, 0xAF, 0x37, 0x59, 0x96, 0x6D, 0xB7, 0xBB, 0x27, 0x8F, 0x4E, 0xAD, 0x73, 0x44, 0x25, 0xD7, + 0x52, 0x3E, 0x3C, 0x5B, 0x3C, 0x7A, 0x78, 0x42, 0xAF, 0x7D, 0xED, 0xF1, 0x03, 0x96, 0x80, 0x0B, + 0xCE, 0x19, 0x23, 0x79, 0x52, 0x8C, 0xA9, 0x2C, 0x33, 0xE7, 0x3C, 0x8C, 0x32, 0x3B, 0x61, 0x36, + 0xAD, 0xCB, 0x22, 0xA7, 0x5B, 0x5A, 0x48, 0x7E, 0xBC, 0x98, 0xD3, 0x4C, 0x1E, 0x69, 0x3D, 0x2A, + 0x25, 0x7F, 0xFA, 0xC1, 0xC7, 0x9F, 0x3F, 0xBF, 0x32, 0x46, 0xC7, 0x18, 0xCF, 0x4E, 0x8F, 0x7E, + 0xEF, 0xB7, 0x7F, 0xB3, 0x6D, 0xFB, 0xAB, 0xDB, 0xA5, 0xE0, 0x22, 0xCF, 0x8C, 0x0F, 0x81, 0xDC, + 0xC2, 0xA9, 0x5F, 0x14, 0x7C, 0xBC, 0xB8, 0xBA, 0xCD, 0x8D, 0x8A, 0x21, 0x3E, 0x7D, 0xFD, 0xF1, + 0xEF, 0xFE, 0x93, 0xEF, 0xA4, 0x94, 0x96, 0xCB, 0xED, 0x72, 0xB5, 0xA6, 0xF2, 0x50, 0x69, 0x29, + 0x38, 0xA7, 0x56, 0xAC, 0x14, 0x64, 0x37, 0x19, 0xB5, 0x56, 0x21, 0xC4, 0x84, 0x18, 0x63, 0x30, + 0x46, 0x87, 0x88, 0x00, 0x40, 0x49, 0x0D, 0x35, 0xDF, 0xA9, 0x2F, 0x17, 0x42, 0xFC, 0x8D, 0xF7, + 0xDE, 0x7D, 0xEB, 0x8D, 0x27, 0x7F, 0xFE, 0xFD, 0x1F, 0xFC, 0xF2, 0xA3, 0xCF, 0xDA, 0xAE, 0x9F, + 0x4E, 0xAA, 0xD9, 0xB4, 0x26, 0xD7, 0x67, 0x4C, 0x78, 0x7E, 0x71, 0xCD, 0x39, 0x83, 0x94, 0xAE, + 0x6E, 0xD6, 0x34, 0xA9, 0xEE, 0x9C, 0xFB, 0x8B, 0xBF, 0xFE, 0x61, 0x4A, 0x69, 0x18, 0x06, 0x02, + 0x46, 0xAB, 0x22, 0x1B, 0x06, 0x7B, 0x79, 0xB3, 0x64, 0x8C, 0x67, 0x46, 0xE7, 0x79, 0xA1, 0xA4, + 0x78, 0x74, 0x76, 0x9C, 0x19, 0x65, 0xB4, 0x2E, 0x8B, 0x42, 0x4A, 0x61, 0xB4, 0x52, 0x5A, 0x55, + 0x65, 0x3E, 0x9F, 0x4E, 0xA4, 0xE4, 0x09, 0xD2, 0xA4, 0x2E, 0xAB, 0xDC, 0x4C, 0xAA, 0x62, 0x52, + 0x97, 0x65, 0x59, 0x2C, 0xE6, 0xD3, 0x49, 0x5D, 0xE6, 0x99, 0x01, 0x60, 0x46, 0xAB, 0xA3, 0xF9, + 0x74, 0x3A, 0xA9, 0x66, 0x93, 0x2A, 0xCF, 0x0C, 0x69, 0x4C, 0x72, 0x31, 0x3E, 0xF6, 0x20, 0xD7, + 0x7D, 0x9A, 0xC1, 0xAF, 0xA5, 0x04, 0xE9, 0x7E, 0xB2, 0x76, 0x58, 0xBE, 0xF7, 0x7F, 0xA6, 0xFB, + 0x41, 0x50, 0x6A, 0xA5, 0x94, 0xD6, 0x9C, 0x73, 0x8C, 0x01, 0x12, 0x22, 0x26, 0x86, 0x28, 0xA4, + 0x60, 0xC0, 0x13, 0x62, 0xF0, 0xBE, 0xEF, 0xFA, 0x94, 0x50, 0x29, 0xD1, 0x0F, 0x2E, 0xC4, 0x18, + 0x28, 0xCB, 0x42, 0xEC, 0x7A, 0xAB, 0x95, 0x90, 0x52, 0x90, 0x66, 0x08, 0x00, 0x20, 0x26, 0xE7, + 0x2C, 0x15, 0x82, 0xAF, 0x5E, 0x5D, 0x51, 0x33, 0x1E, 0x18, 0x54, 0x75, 0x0D, 0x00, 0x18, 0x63, + 0x67, 0xED, 0x30, 0xF4, 0xDE, 0x07, 0x36, 0x58, 0xA5, 0x2C, 0x21, 0x58, 0x42, 0xCA, 0xCC, 0x64, + 0x77, 0xF9, 0x22, 0x63, 0x18, 0x43, 0x4A, 0xA8, 0xB4, 0x66, 0x5C, 0x28, 0xB6, 0xD7, 0xA1, 0x05, + 0x48, 0x88, 0x11, 0xA3, 0x90, 0x12, 0x00, 0xD6, 0xEB, 0x2D, 0xCD, 0xD0, 0xFB, 0xE0, 0x13, 0x26, + 0xE7, 0x5D, 0x96, 0x79, 0x3D, 0x5A, 0xA2, 0x24, 0x0A, 0xE1, 0x52, 0x2A, 0x90, 0x8A, 0xED, 0xA5, + 0x25, 0x18, 0x63, 0x31, 0x84, 0x84, 0xA8, 0x94, 0x3C, 0x7F, 0xFE, 0xFC, 0xD9, 0x67, 0xCF, 0x38, + 0x57, 0x82, 0x31, 0x67, 0x9D, 0xD4, 0x19, 0x63, 0x40, 0x9E, 0x97, 0x87, 0xC0, 0x9F, 0xC6, 0x3E, + 0x25, 0x44, 0xC4, 0x80, 0x98, 0x30, 0xF1, 0xD1, 0x93, 0x25, 0x31, 0xC6, 0xE5, 0x88, 0x21, 0xC2, + 0x88, 0x8B, 0x25, 0x42, 0xF6, 0x40, 0x0A, 0x91, 0x38, 0x20, 0x26, 0xA5, 0xD5, 0xD1, 0xE2, 0x28, + 0xCB, 0xB2, 0x80, 0xE9, 0xD9, 0xF9, 0x95, 0xF7, 0x61, 0xB0, 0xEE, 0x93, 0x4F, 0x9F, 0x7F, 0xF8, + 0xD1, 0xA7, 0xCE, 0xB9, 0xBC, 0xC8, 0x5F, 0x7F, 0xF2, 0xD8, 0x5A, 0xB7, 0x5C, 0x6D, 0xDE, 0x7D, + 0xF7, 0xED, 0xC9, 0xA4, 0xFE, 0xE1, 0xDF, 0xFF, 0x4C, 0x08, 0x6E, 0x8A, 0xBC, 0x77, 0xCE, 0x3A, + 0x1F, 0xFA, 0x61, 0x3A, 0x99, 0x08, 0xCE, 0x15, 0x68, 0x60, 0x9E, 0xF4, 0xAA, 0xCA, 0x22, 0xCF, + 0x33, 0xC3, 0x00, 0xBA, 0xBE, 0x27, 0xCB, 0x48, 0x25, 0xE5, 0xA4, 0xAA, 0x22, 0xC6, 0x94, 0xC0, + 0xFB, 0x30, 0x58, 0x2B, 0x84, 0x90, 0x52, 0x90, 0xB0, 0x92, 0x10, 0x40, 0x53, 0xEB, 0x8C, 0x70, + 0x55, 0x96, 0x22, 0x26, 0x60, 0x40, 0x01, 0x97, 0xE4, 0xBD, 0xA4, 0xE4, 0x5A, 0xE9, 0x94, 0x52, + 0x0C, 0x91, 0xB8, 0xCA, 0x54, 0xC9, 0xAE, 0xB6, 0xBB, 0x88, 0x68, 0xB4, 0x11, 0x9C, 0x51, 0x8B, + 0x8D, 0x09, 0xBE, 0xDB, 0x36, 0x43, 0x6F, 0x09, 0xA6, 0x19, 0x35, 0x8B, 0xC0, 0x4B, 0x29, 0xCB, + 0x32, 0x77, 0xCE, 0x0F, 0xD6, 0x69, 0xA9, 0x22, 0x46, 0x06, 0xB0, 0xDD, 0x36, 0xE5, 0xE9, 0xF1, + 0xC9, 0xC9, 0xB1, 0x14, 0xBC, 0xEB, 0x86, 0xF3, 0x8B, 0xCB, 0xC5, 0x62, 0x3A, 0xAD, 0x2B, 0xCE, + 0xD9, 0x30, 0x38, 0x6B, 0xDD, 0xD1, 0xD1, 0xCC, 0xFB, 0xE0, 0x9C, 0x27, 0x54, 0x7B, 0xB7, 0x6B, + 0x32, 0xA3, 0x9B, 0xA6, 0xCB, 0x32, 0x7D, 0x7A, 0x72, 0x94, 0x67, 0xE6, 0x57, 0xBF, 0xFA, 0x4C, + 0x70, 0x4E, 0x72, 0x48, 0x92, 0xB3, 0xFA, 0x68, 0xBA, 0xD9, 0x35, 0x83, 0x73, 0xD3, 0xBA, 0xF4, + 0xDE, 0x87, 0xE0, 0xA7, 0x93, 0x89, 0xD1, 0xFA, 0xE5, 0xE5, 0xF5, 0xE2, 0x68, 0xD6, 0xEC, 0x9A, + 0xE0, 0xC3, 0x66, 0xDB, 0xBC, 0xF7, 0xCD, 0x77, 0x9D, 0xB5, 0xCF, 0x9E, 0x5F, 0x94, 0x65, 0xD9, + 0x76, 0xFD, 0x7A, 0xD3, 0x00, 0x00, 0xE7, 0xEC, 0x68, 0x36, 0xA9, 0xCB, 0xE2, 0xDB, 0xDF, 0x78, + 0x87, 0x01, 0xBB, 0x5D, 0x6D, 0x7E, 0xF5, 0xC9, 0xB3, 0x94, 0x60, 0x3E, 0x9F, 0xD0, 0x40, 0xE5, + 0x66, 0xDB, 0x14, 0x53, 0xF2, 0x09, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x2A, 0x25, + 0x73, 0x29, 0xCA, 0x32, 0xEB, 0xBA, 0x84, 0x88, 0x52, 0x8A, 0xCC, 0x18, 0x2E, 0x98, 0x10, 0xE2, + 0x20, 0xBD, 0x4E, 0x85, 0x82, 0xB5, 0xFE, 0xF3, 0xE7, 0xAF, 0x10, 0xC3, 0x76, 0xB7, 0x9B, 0xD4, + 0xE5, 0x3F, 0xFD, 0xAD, 0x6F, 0x65, 0xC6, 0x38, 0x1F, 0x48, 0x03, 0xDD, 0xEF, 0xFB, 0xFE, 0x24, + 0x4B, 0xDE, 0xF7, 0x56, 0x08, 0x9E, 0x67, 0x86, 0x84, 0x03, 0x4E, 0x8F, 0x17, 0x1F, 0x7D, 0xF2, + 0xEC, 0xC3, 0x8F, 0x3F, 0x9F, 0xD4, 0xE5, 0x7F, 0xF5, 0xBB, 0xDF, 0xFD, 0x87, 0x9F, 0xFC, 0xFC, + 0xE2, 0xD5, 0xB5, 0xE0, 0x1A, 0x31, 0x4A, 0xC1, 0x09, 0xAB, 0xC1, 0x94, 0x42, 0x60, 0x21, 0xC4, + 0x88, 0xBE, 0x2C, 0x72, 0xCE, 0x4D, 0x0C, 0x18, 0x62, 0xA0, 0x79, 0x72, 0xE7, 0xBC, 0xC9, 0x4C, + 0x0C, 0x91, 0xD2, 0x9F, 0xEF, 0xFD, 0xD6, 0xB7, 0x16, 0x47, 0xB3, 0x1F, 0xFD, 0xE4, 0x03, 0xE7, + 0x9C, 0x31, 0x66, 0xBD, 0xDE, 0x7D, 0xF0, 0xC1, 0xC7, 0x7D, 0x6F, 0x6F, 0x96, 0x9B, 0x07, 0xA7, + 0x47, 0x0F, 0x4E, 0x8F, 0xDB, 0xAE, 0x3F, 0x59, 0xCC, 0x6E, 0x57, 0x9B, 0xED, 0xAE, 0x39, 0x59, + 0xCC, 0x58, 0x4A, 0xEB, 0xCD, 0xAE, 0xEF, 0x06, 0xAD, 0x55, 0xDB, 0x05, 0x21, 0x78, 0x95, 0x19, + 0x06, 0x68, 0xAD, 0x07, 0x04, 0xA9, 0x39, 0x00, 0x28, 0xC9, 0x8B, 0xBC, 0x64, 0x00, 0x75, 0x5D, + 0xD6, 0x55, 0x49, 0x73, 0xEF, 0x98, 0xD2, 0x22, 0x37, 0x5A, 0x8F, 0x16, 0x01, 0x21, 0xA2, 0xD1, + 0xD2, 0x64, 0x5A, 0x48, 0x51, 0x28, 0x91, 0xE7, 0x86, 0x00, 0x0D, 0x92, 0x2D, 0x4A, 0x29, 0x19, + 0x2D, 0x95, 0x14, 0x99, 0x31, 0x52, 0x0A, 0xC6, 0x0E, 0x74, 0x83, 0x31, 0x72, 0x21, 0x7E, 0x81, + 0xBE, 0xFE, 0x6B, 0xE8, 0x18, 0xDB, 0x13, 0x2F, 0x12, 0x63, 0x77, 0x4F, 0x20, 0x8F, 0xD1, 0x2F, + 0xA1, 0x69, 0xF4, 0x4F, 0xA9, 0x0E, 0xB6, 0xB8, 0x00, 0x34, 0xE7, 0xC2, 0x38, 0x4F, 0x09, 0x52, + 0xF2, 0xDE, 0xB9, 0x10, 0x02, 0x75, 0x79, 0x89, 0x58, 0x25, 0x18, 0x93, 0x5A, 0xD1, 0x8A, 0xA5, + 0xB9, 0xE8, 0xB4, 0xB7, 0x5C, 0x2C, 0x0B, 0x53, 0x15, 0xD9, 0xAE, 0xED, 0x95, 0x52, 0xCE, 0x85, + 0x61, 0x70, 0xD6, 0x7A, 0xEB, 0xBC, 0x92, 0xA2, 0x6B, 0x07, 0x12, 0xA4, 0x26, 0x0F, 0x54, 0x9A, + 0x3F, 0x27, 0xCE, 0x1A, 0x63, 0x4C, 0x4A, 0xC5, 0x18, 0x4F, 0x88, 0x31, 0xA5, 0x18, 0x82, 0xF7, + 0x0E, 0x23, 0x72, 0xC1, 0x85, 0x94, 0x29, 0x10, 0xC0, 0x9D, 0x94, 0x52, 0x29, 0x81, 0xB7, 0x43, + 0x08, 0x51, 0x08, 0x61, 0xBD, 0xEB, 0xBB, 0x81, 0x73, 0x2E, 0x24, 0x27, 0x32, 0x2A, 0x46, 0x0C, + 0x01, 0x8B, 0x62, 0x2F, 0xD8, 0x1D, 0x23, 0x30, 0xA6, 0x84, 0x54, 0x4A, 0x49, 0xAD, 0x52, 0x4A, + 0x5C, 0x08, 0xA0, 0x41, 0xA7, 0x94, 0x3E, 0xFE, 0xEC, 0xD9, 0xC5, 0xC5, 0x95, 0xD6, 0x8A, 0x31, + 0x31, 0x0A, 0x61, 0x24, 0x00, 0xBE, 0x57, 0x33, 0xDB, 0xC7, 0x7E, 0xAA, 0xC0, 0xA9, 0x25, 0x4F, + 0x81, 0x94, 0x1C, 0xA5, 0xA4, 0x92, 0x44, 0x75, 0x19, 0xBB, 0xBD, 0x91, 0xE2, 0x1D, 0xA3, 0x1E, + 0xFF, 0x72, 0xDD, 0x7C, 0xF6, 0xE2, 0x42, 0x48, 0x95, 0x19, 0x93, 0x18, 0xFB, 0xFC, 0xC5, 0x4B, + 0x63, 0xCC, 0x6A, 0xB3, 0xB3, 0xCE, 0xDF, 0x2E, 0x57, 0x9B, 0x75, 0xA3, 0xB5, 0x56, 0x4A, 0x9E, + 0x9D, 0x9E, 0x04, 0xE7, 0x6E, 0x6F, 0x57, 0x5F, 0x7B, 0xF7, 0x1D, 0xE7, 0xC3, 0x5F, 0xFD, 0xCD, + 0x0F, 0x67, 0xD3, 0x3A, 0xC5, 0xB4, 0x21, 0x55, 0x5F, 0xCE, 0xD1, 0xFB, 0xB6, 0xEF, 0x24, 0xE7, + 0x00, 0x64, 0xAA, 0x9A, 0xC8, 0x31, 0x8C, 0xF3, 0x11, 0x31, 0xB1, 0xCE, 0x2A, 0xA9, 0xB8, 0x10, + 0xC1, 0x39, 0xEF, 0xBD, 0x14, 0x02, 0x53, 0xD2, 0x4A, 0x79, 0x52, 0xB0, 0xE2, 0x01, 0x5D, 0x4A, + 0x90, 0xAC, 0xF7, 0xB0, 0x6F, 0x73, 0x90, 0x9B, 0x16, 0xD5, 0x2F, 0x24, 0x85, 0x4E, 0x6C, 0x2C, + 0x3A, 0xCD, 0xB2, 0xC8, 0xA6, 0x93, 0x9A, 0x71, 0x71, 0xBB, 0x5A, 0x87, 0x18, 0x7B, 0x6B, 0x21, + 0x25, 0x0C, 0x28, 0x04, 0x47, 0xC4, 0x6E, 0xB0, 0x8C, 0x81, 0x92, 0x3C, 0x37, 0xBA, 0xE9, 0xFB, + 0x22, 0x33, 0x29, 0x41, 0x8A, 0x90, 0x67, 0x46, 0x2B, 0xED, 0x7D, 0xD8, 0x35, 0x5D, 0x42, 0x1C, + 0xA5, 0x94, 0x19, 0x1C, 0x4D, 0x27, 0xC7, 0x8B, 0xB9, 0xD6, 0xBA, 0xEB, 0xBA, 0xED, 0x6E, 0x07, + 0x00, 0xCF, 0xCF, 0x2F, 0x2F, 0x2F, 0x6F, 0xBF, 0xFE, 0xB5, 0x37, 0xDF, 0x7A, 0xF3, 0xB5, 0xCD, + 0x66, 0x97, 0x65, 0xC6, 0x68, 0x15, 0x11, 0xCB, 0x32, 0x37, 0x46, 0x0F, 0xD6, 0xC6, 0xC1, 0x31, + 0x06, 0x0C, 0xB4, 0xF7, 0x61, 0x32, 0xA9, 0xDE, 0x7B, 0xEF, 0xDD, 0xF5, 0x6A, 0x73, 0xFE, 0xF2, + 0x92, 0x01, 0x64, 0x5A, 0x75, 0x6D, 0xC7, 0x18, 0xCB, 0x8C, 0xEE, 0xBA, 0x9E, 0x33, 0xE0, 0x9C, + 0xAF, 0xD6, 0x1B, 0xC6, 0xF9, 0xD1, 0x7C, 0xCA, 0x00, 0xDA, 0xB6, 0x9D, 0x4C, 0x26, 0xFD, 0x60, + 0x3F, 0xFD, 0xF4, 0xF9, 0xD7, 0xBF, 0xFA, 0x66, 0xD3, 0x76, 0xD6, 0xDA, 0x37, 0x5E, 0x7F, 0xDC, + 0x0F, 0xC3, 0xCD, 0xED, 0x66, 0x36, 0xA9, 0x27, 0x75, 0x41, 0x7E, 0xE9, 0x0F, 0xCF, 0x8E, 0x1F, + 0x3D, 0x58, 0x30, 0x48, 0x1F, 0x7E, 0xFC, 0xAC, 0xEB, 0x86, 0xC7, 0x8F, 0x4E, 0xAD, 0x75, 0x9F, + 0x7E, 0x7E, 0x5E, 0x95, 0x05, 0x00, 0x94, 0x45, 0x5E, 0x96, 0x39, 0x07, 0xA6, 0xB5, 0xAE, 0x4A, + 0xE1, 0x1D, 0xE9, 0x8B, 0xA1, 0x52, 0x12, 0x88, 0xF9, 0x0C, 0xEC, 0xE2, 0xFA, 0xB6, 0x1F, 0x06, + 0xD2, 0x05, 0xFC, 0xFD, 0xDF, 0xFE, 0xCD, 0xE9, 0xA4, 0xFA, 0xD9, 0x2F, 0x3E, 0x7D, 0xF1, 0xF2, + 0x92, 0x33, 0x06, 0x09, 0x7D, 0xF0, 0x52, 0x48, 0xC4, 0xD8, 0xF7, 0xB6, 0x69, 0x7A, 0x21, 0xB9, + 0xD6, 0xD9, 0xA4, 0x2A, 0xB7, 0xBB, 0xB6, 0x2C, 0x8A, 0x8B, 0xCB, 0x6B, 0x4C, 0xF8, 0xD6, 0xD3, + 0x27, 0x29, 0xA5, 0xCD, 0x76, 0x47, 0xF2, 0x12, 0x88, 0x51, 0x4A, 0x59, 0xE7, 0xA6, 0xEB, 0x3D, + 0xAD, 0x4C, 0x06, 0xF0, 0xE8, 0xEC, 0x18, 0x53, 0x52, 0x52, 0x76, 0x83, 0x45, 0x44, 0x00, 0xCD, + 0x38, 0xAF, 0xAB, 0xA2, 0xEB, 0x06, 0xE7, 0x43, 0x59, 0x18, 0x25, 0xE5, 0xEB, 0x4F, 0x1E, 0x7A, + 0x6B, 0x7F, 0xFE, 0xC1, 0x87, 0xCE, 0x5A, 0xEA, 0xA7, 0x85, 0x10, 0xA4, 0x52, 0xCE, 0xC7, 0x5F, + 0x7C, 0xF8, 0x89, 0xF7, 0x4E, 0x08, 0xDE, 0xB6, 0x1D, 0x40, 0x8A, 0x31, 0xBE, 0xF5, 0xDA, 0xC3, + 0x18, 0x42, 0x4A, 0xE9, 0x76, 0xB9, 0xA6, 0x91, 0x75, 0x06, 0xCC, 0x28, 0xCD, 0x39, 0xC3, 0x18, + 0x12, 0x24, 0x00, 0x64, 0x20, 0x62, 0xC4, 0x5D, 0xD3, 0x56, 0x45, 0x5E, 0xE4, 0xD9, 0x64, 0x52, + 0xE7, 0x5A, 0x09, 0xC1, 0x49, 0x90, 0xAA, 0x2A, 0x8C, 0x54, 0x12, 0x23, 0x86, 0x88, 0x52, 0x88, + 0x3C, 0xD7, 0x52, 0x4A, 0xCE, 0x38, 0xDC, 0x85, 0xA7, 0x04, 0x90, 0x8A, 0x94, 0x52, 0x4A, 0x82, + 0x0B, 0x35, 0xB6, 0xFD, 0x89, 0x2A, 0xC1, 0xD9, 0x28, 0x91, 0x35, 0xD6, 0x4C, 0xEC, 0x7E, 0xAE, + 0xF5, 0x6B, 0x19, 0x16, 0x85, 0xB0, 0x43, 0xF2, 0x75, 0x2F, 0x72, 0xDD, 0xB3, 0xA9, 0x4C, 0x04, + 0x9B, 0x23, 0x00, 0x48, 0x9A, 0x74, 0xDD, 0xAF, 0xFF, 0x80, 0x98, 0x58, 0x82, 0xE0, 0x7D, 0x08, + 0x81, 0xC6, 0xE5, 0x7C, 0x88, 0x3E, 0x26, 0x1F, 0x22, 0xE7, 0x8C, 0xFC, 0xEC, 0x30, 0x25, 0xE2, + 0xA7, 0xE5, 0xB9, 0x76, 0xCE, 0x3B, 0xC6, 0x04, 0xE7, 0x55, 0x99, 0x0D, 0xD6, 0x21, 0xA6, 0xE0, + 0x03, 0x03, 0xD8, 0xEC, 0x7A, 0x32, 0x79, 0xEF, 0xC1, 0x37, 0xDD, 0x60, 0x94, 0xA4, 0xC2, 0x38, + 0x33, 0x4A, 0x8A, 0x14, 0x88, 0x43, 0x1C, 0x02, 0xCD, 0x0B, 0x20, 0x86, 0x18, 0x62, 0x88, 0x81, + 0x2C, 0x03, 0xA2, 0x0F, 0xBE, 0x0F, 0x4D, 0xD3, 0x8E, 0x0E, 0x02, 0x98, 0x8C, 0xD1, 0xB4, 0x93, + 0x87, 0xBD, 0x0F, 0x18, 0x17, 0x1C, 0x12, 0xF1, 0x04, 0x58, 0x0C, 0xA4, 0x15, 0xEF, 0x18, 0x4B, + 0x9C, 0x8B, 0x18, 0xE3, 0xA8, 0x6F, 0x27, 0x82, 0xF7, 0x5E, 0x78, 0xC9, 0x81, 0x71, 0x21, 0x8A, + 0x32, 0x6F, 0x9A, 0xEE, 0x17, 0x1F, 0x7E, 0x36, 0xF4, 0x76, 0x3A, 0xA9, 0x22, 0xA6, 0x98, 0x80, + 0x01, 0x87, 0x94, 0xD2, 0x58, 0xB9, 0x8E, 0x17, 0x87, 0x94, 0xFC, 0x28, 0xD5, 0x8A, 0x89, 0x08, + 0x6D, 0x29, 0xA5, 0x14, 0x42, 0x90, 0x92, 0xD7, 0x45, 0x76, 0x58, 0xFF, 0x31, 0xC6, 0x18, 0xC9, + 0x81, 0x89, 0x7D, 0x7E, 0x7E, 0xB1, 0xDE, 0x75, 0x3F, 0xFA, 0xE9, 0x2F, 0x8F, 0xE6, 0xF3, 0x69, + 0x5D, 0xF8, 0xDC, 0x87, 0x88, 0xD6, 0x85, 0xEB, 0xDB, 0xF5, 0xCD, 0x72, 0x8D, 0x98, 0x18, 0xB0, + 0xE3, 0xE3, 0x79, 0xDF, 0xDB, 0xB6, 0xED, 0x76, 0x9B, 0x1D, 0xE7, 0x7C, 0x70, 0xEE, 0xFC, 0xE2, + 0xD2, 0x0E, 0x6E, 0x36, 0x9D, 0xF8, 0x10, 0xAC, 0xEB, 0x05, 0x17, 0x45, 0x9E, 0x31, 0x80, 0xCC, + 0x68, 0xEB, 0x7D, 0x1C, 0xCD, 0x2E, 0x20, 0x26, 0x04, 0x04, 0xAD, 0xD4, 0x7A, 0xBB, 0x8D, 0x11, + 0x05, 0x67, 0x42, 0xC8, 0xDE, 0x5A, 0x1F, 0x22, 0x8D, 0xC4, 0x63, 0x4A, 0x90, 0x20, 0x62, 0x1A, + 0xCB, 0x43, 0x21, 0x43, 0x8C, 0x2E, 0xF8, 0x44, 0x16, 0xCB, 0x00, 0x88, 0x28, 0x05, 0x4F, 0x18, + 0xA9, 0x78, 0x74, 0xDE, 0x93, 0x1E, 0x43, 0xD7, 0x0F, 0x21, 0xC6, 0x3C, 0x33, 0x93, 0xBA, 0x9A, + 0x4E, 0xEB, 0xAB, 0x9B, 0x95, 0xB5, 0xCE, 0x7B, 0xA7, 0xA5, 0x02, 0x80, 0x10, 0x82, 0xE2, 0xA2, + 0xC8, 0xF3, 0xAE, 0xEB, 0x21, 0x25, 0x0E, 0xE0, 0x21, 0x96, 0x65, 0x7E, 0x7C, 0x34, 0x0F, 0x3E, + 0x34, 0x5D, 0x6F, 0x22, 0x0E, 0xD6, 0xB6, 0x5D, 0x37, 0x92, 0x30, 0x30, 0x09, 0x26, 0x1E, 0x9D, + 0x9D, 0xCE, 0x26, 0x15, 0x83, 0x74, 0xBB, 0xBC, 0xED, 0x7A, 0xCB, 0x39, 0x37, 0x46, 0x0F, 0x83, + 0xBD, 0xDE, 0xDD, 0x3E, 0x3F, 0xBF, 0xF8, 0xB7, 0xFF, 0xE6, 0x5F, 0xBF, 0xF1, 0xF4, 0x11, 0x30, + 0x36, 0x0A, 0x8D, 0xA5, 0x54, 0x16, 0x99, 0xF7, 0x7E, 0x18, 0x2C, 0xE7, 0xBC, 0xEB, 0x06, 0xAD, + 0x65, 0xD3, 0xB4, 0xC1, 0x07, 0xAD, 0xF5, 0xE3, 0x47, 0x0F, 0x48, 0xA8, 0xBA, 0x69, 0x3B, 0x63, + 0x8C, 0x56, 0xF2, 0xE5, 0xAB, 0xAB, 0xE5, 0x72, 0x6D, 0x32, 0x5D, 0x96, 0x25, 0x63, 0xEC, 0x9D, + 0x77, 0xDE, 0x24, 0x6B, 0xBB, 0x27, 0x4F, 0x1E, 0xFE, 0xED, 0xDF, 0xBD, 0xBF, 0x5E, 0xAD, 0x37, + 0xDB, 0xA6, 0xAE, 0xCB, 0xED, 0xAE, 0x71, 0xCE, 0x4D, 0x26, 0xD5, 0xC7, 0x9F, 0x3E, 0x7F, 0xFC, + 0xF0, 0x14, 0xD3, 0x51, 0x9E, 0x99, 0xBE, 0x1F, 0x6E, 0x6E, 0xD6, 0x5C, 0xB0, 0xAA, 0x2C, 0xDE, + 0xFD, 0xCA, 0x1B, 0x3F, 0xFF, 0xC5, 0x27, 0x42, 0x88, 0xD3, 0xD3, 0x85, 0x10, 0x62, 0xB9, 0x5C, + 0x93, 0xD6, 0xD5, 0xAC, 0x2E, 0xBD, 0xF7, 0x44, 0x59, 0x24, 0xB5, 0x7B, 0xC4, 0x34, 0x38, 0xCF, + 0x39, 0x73, 0x3E, 0x38, 0x1F, 0xB2, 0xCC, 0x9C, 0x1E, 0xCF, 0x07, 0x6B, 0xDF, 0xFB, 0xC6, 0xBB, + 0xD3, 0x69, 0xBD, 0xDE, 0x34, 0xCF, 0xCF, 0x5F, 0x39, 0xE7, 0xA5, 0xE4, 0x52, 0x72, 0x8C, 0x18, + 0x53, 0x30, 0x3A, 0xC3, 0x94, 0x98, 0x60, 0x5A, 0x29, 0x6A, 0xF1, 0x4F, 0xEA, 0xE2, 0xB5, 0xC7, + 0x0F, 0xE6, 0xD3, 0x49, 0x51, 0xE4, 0x93, 0xBA, 0x8C, 0x11, 0x5F, 0xBC, 0xBC, 0x78, 0xFA, 0xF8, + 0xEC, 0xE9, 0x93, 0x07, 0x21, 0x04, 0xA5, 0x54, 0x5D, 0x15, 0x42, 0xCA, 0xDB, 0xE5, 0xE6, 0xD5, + 0xE5, 0x0D, 0xE3, 0xFC, 0xBD, 0x77, 0xDF, 0x3C, 0x9A, 0x4D, 0xBB, 0xC1, 0x3E, 0xBF, 0xB8, 0x5A, + 0xAD, 0x77, 0x11, 0x51, 0x6B, 0x85, 0x29, 0xB5, 0x4D, 0x97, 0x30, 0xE6, 0xA6, 0x2A, 0xF2, 0x6C, + 0xBD, 0xDA, 0x20, 0xE2, 0x7C, 0x56, 0xCF, 0x27, 0xD5, 0xC5, 0xE5, 0x8D, 0x90, 0x82, 0xA6, 0x35, + 0x4F, 0x16, 0xB3, 0xFF, 0xE1, 0xDF, 0xFC, 0xAB, 0x07, 0xA7, 0x47, 0x4D, 0xDB, 0x3F, 0x79, 0x78, + 0x5A, 0x15, 0x79, 0x6E, 0x14, 0x4B, 0xB0, 0x6B, 0x7B, 0x1F, 0xFC, 0xF3, 0xE7, 0x17, 0xB4, 0x46, + 0xCA, 0x22, 0xDB, 0xEE, 0x5A, 0x96, 0x20, 0x84, 0xC0, 0x98, 0x28, 0x8B, 0x9C, 0xE4, 0x0C, 0xBC, + 0x0F, 0x88, 0x58, 0x55, 0x85, 0xE0, 0x4C, 0x0A, 0xAE, 0x47, 0x1B, 0x11, 0x2D, 0xA5, 0x14, 0x52, + 0x50, 0xAB, 0x54, 0x0A, 0x49, 0x0D, 0x6B, 0xC1, 0xF6, 0x92, 0x58, 0x89, 0x25, 0x4E, 0xAC, 0xCF, + 0x84, 0x29, 0x29, 0xC1, 0xF9, 0xE8, 0x84, 0x00, 0xA3, 0xBE, 0x17, 0xA4, 0x34, 0x76, 0xD2, 0x46, + 0x0A, 0xC1, 0x21, 0x3C, 0xA5, 0x7B, 0xC1, 0x09, 0xEF, 0xC5, 0xAC, 0x2F, 0x86, 0xB6, 0xFB, 0x30, + 0xFF, 0xDD, 0x2B, 0xE8, 0xA7, 0x8C, 0x31, 0x20, 0x22, 0x67, 0xDC, 0x7B, 0x1F, 0x23, 0xD9, 0x8B, + 0x30, 0x8A, 0x62, 0xD6, 0x91, 0x33, 0x20, 0x84, 0x10, 0x63, 0x1C, 0xD9, 0xA1, 0x31, 0x26, 0x25, + 0x38, 0x89, 0xE1, 0xD3, 0xA8, 0xB9, 0x14, 0x3C, 0xCF, 0x75, 0xDB, 0x0E, 0xD6, 0x79, 0x3A, 0x8E, + 0x10, 0x63, 0x4A, 0x20, 0x05, 0xA7, 0x4F, 0xE3, 0x8C, 0xC5, 0xE8, 0x88, 0xD8, 0x96, 0x69, 0x45, + 0xF4, 0xC2, 0x10, 0x82, 0x10, 0xA2, 0xAA, 0x4A, 0xC6, 0xB8, 0xF7, 0x9E, 0x7C, 0x35, 0xA8, 0x48, + 0x8B, 0x88, 0xD6, 0xF9, 0xE0, 0x03, 0x35, 0x4A, 0x00, 0xC0, 0x79, 0x0F, 0x00, 0x21, 0x20, 0x03, + 0x70, 0x3E, 0x32, 0x00, 0x1A, 0xBB, 0x4F, 0xB0, 0xAF, 0x92, 0x18, 0x8B, 0x81, 0x59, 0xF0, 0x00, + 0x2E, 0x25, 0x48, 0x08, 0x42, 0x70, 0x60, 0x80, 0x00, 0x08, 0xA0, 0x94, 0x64, 0x80, 0xBF, 0xF8, + 0xC5, 0xA7, 0xE7, 0xAF, 0x96, 0x29, 0xE1, 0xF1, 0xD1, 0x34, 0x91, 0x2B, 0x01, 0x40, 0xC2, 0x71, + 0x4C, 0x69, 0x2F, 0x22, 0x36, 0xE2, 0xFA, 0xFB, 0x13, 0x49, 0x31, 0x8E, 0x34, 0xB7, 0x10, 0x82, + 0x31, 0xA6, 0x2E, 0x33, 0xAD, 0x24, 0x30, 0x86, 0x18, 0xBD, 0x8F, 0xD4, 0xF2, 0xF3, 0x21, 0xFE, + 0xD5, 0x5F, 0xFF, 0x3D, 0x17, 0xDA, 0x85, 0x00, 0x09, 0xF2, 0x4C, 0xB7, 0x6D, 0x17, 0x42, 0xB8, + 0xBA, 0x5E, 0xAD, 0xB6, 0xBB, 0xF5, 0x7A, 0xD7, 0x74, 0xBD, 0xD2, 0x4A, 0x2B, 0x65, 0x9D, 0x1F, + 0xFA, 0x01, 0x18, 0xD3, 0x79, 0xE6, 0x42, 0x0C, 0x88, 0x9B, 0xD5, 0x3A, 0x37, 0x06, 0x40, 0x84, + 0x18, 0x85, 0x10, 0x82, 0xF1, 0x9E, 0xCA, 0x46, 0x48, 0x46, 0x69, 0xE7, 0x7D, 0xC0, 0x98, 0x00, + 0x48, 0xAB, 0x7B, 0xDB, 0x74, 0xB7, 0xEB, 0xED, 0xA4, 0x2A, 0x69, 0xDE, 0x2D, 0x41, 0x0A, 0x18, + 0x89, 0x33, 0x39, 0x22, 0x97, 0x08, 0x9C, 0x73, 0xAD, 0x94, 0x0F, 0xB1, 0x1D, 0x06, 0xCE, 0x98, + 0x52, 0x92, 0xC2, 0x3A, 0x27, 0x4A, 0x8E, 0x14, 0x10, 0x46, 0xA3, 0x3F, 0xF2, 0x52, 0x01, 0x80, + 0x14, 0xB1, 0x2E, 0x8B, 0xA3, 0xF9, 0xB4, 0x1B, 0xEC, 0xE5, 0xD5, 0x35, 0x11, 0x0E, 0x9C, 0xF3, + 0x92, 0x1E, 0x42, 0xA4, 0x94, 0xAA, 0xB2, 0x60, 0x09, 0x38, 0xE7, 0xD3, 0xC9, 0x84, 0x33, 0x66, + 0x8C, 0x66, 0xC0, 0x32, 0x13, 0x9B, 0x6E, 0x20, 0xC1, 0xF4, 0xA2, 0xCA, 0xEA, 0xAA, 0x6C, 0xBA, + 0x4E, 0x4B, 0x75, 0x7A, 0x32, 0x6F, 0x76, 0x4D, 0x8C, 0x48, 0x7B, 0x55, 0x4A, 0x58, 0xE4, 0x59, + 0x9E, 0x67, 0x09, 0x63, 0xDB, 0x0D, 0xFF, 0xE1, 0x3F, 0xFE, 0xDF, 0xFF, 0xE2, 0x9F, 0xFF, 0x93, + 0xEF, 0xBC, 0xF7, 0xB5, 0xED, 0xAE, 0xB1, 0xD6, 0x09, 0xCE, 0xCE, 0xCE, 0x8E, 0x21, 0x81, 0x52, + 0x32, 0x25, 0x70, 0xCE, 0xF5, 0x83, 0x65, 0x2C, 0xE5, 0x59, 0x06, 0x90, 0x84, 0xD0, 0x75, 0x95, + 0xF9, 0x10, 0x8D, 0x79, 0xD2, 0x0F, 0xF6, 0xE2, 0xD5, 0x4D, 0xD7, 0xF7, 0x45, 0x55, 0x1C, 0x4D, + 0x27, 0x88, 0xA9, 0x9E, 0x54, 0xCB, 0xE5, 0xEA, 0x9D, 0xB7, 0xDE, 0x7B, 0xF8, 0xF0, 0x04, 0x63, + 0x64, 0xDF, 0xFB, 0xE6, 0x8F, 0xDF, 0xFF, 0x68, 0xDB, 0xB4, 0x93, 0x69, 0x05, 0x00, 0x9F, 0x3F, + 0x7B, 0xF9, 0xCF, 0x7F, 0xEF, 0xBB, 0xDF, 0xFB, 0xCE, 0x37, 0x3E, 0xFE, 0xEC, 0x05, 0xED, 0x3A, + 0x65, 0x59, 0x2C, 0x37, 0x1B, 0xC1, 0xC5, 0xCD, 0x72, 0x73, 0x7A, 0x3C, 0x3F, 0x3B, 0x5D, 0xBC, + 0xBA, 0xBC, 0xE1, 0x9C, 0x9D, 0x1E, 0xCF, 0xDB, 0xB6, 0x43, 0xC4, 0x10, 0xE3, 0x30, 0xAA, 0x15, + 0xA6, 0x84, 0x40, 0x73, 0x7B, 0x59, 0xA6, 0x43, 0x8C, 0x3E, 0x22, 0x63, 0xAC, 0x2A, 0xB2, 0x94, + 0xE9, 0x22, 0xCF, 0xBF, 0xFD, 0x8D, 0xAF, 0x96, 0x65, 0xB1, 0x5E, 0x6F, 0x9D, 0x0F, 0x97, 0x57, + 0x37, 0x46, 0xCB, 0xAA, 0xCC, 0x8B, 0x22, 0x6B, 0xDA, 0x3E, 0x46, 0x54, 0x4A, 0x85, 0x10, 0x8D, + 0xD2, 0x5A, 0xC9, 0xB7, 0x9F, 0x3E, 0xD9, 0x35, 0xAD, 0x92, 0xF2, 0xE1, 0xE9, 0xC2, 0x18, 0x0D, + 0x8C, 0x6D, 0xB6, 0xBB, 0x3C, 0xD3, 0x6F, 0xBD, 0xFE, 0x90, 0x33, 0x16, 0x22, 0xD2, 0x18, 0x0C, + 0x62, 0xCA, 0x32, 0xF3, 0xE0, 0x78, 0xF6, 0xDA, 0xC3, 0x13, 0x4C, 0x89, 0x01, 0x08, 0xC1, 0x8E, + 0x17, 0x93, 0xA2, 0xD0, 0xEB, 0x6D, 0x13, 0x23, 0xB6, 0x9D, 0xBD, 0xBA, 0x59, 0x69, 0x25, 0x8F, + 0x66, 0xF5, 0x5B, 0x4F, 0x1F, 0x21, 0xA6, 0xF5, 0x7A, 0xFB, 0xF0, 0xC1, 0x09, 0x4D, 0xCB, 0x4A, + 0xC1, 0x13, 0x30, 0xA9, 0xE4, 0x9B, 0xAF, 0x3F, 0x7E, 0xFA, 0xE4, 0x0C, 0x18, 0x0C, 0xD6, 0x71, + 0xC6, 0xAA, 0x32, 0xEF, 0xFA, 0x01, 0x23, 0xE6, 0x99, 0xF9, 0xEC, 0xD9, 0x8B, 0x61, 0x70, 0x46, + 0xAB, 0x77, 0xDE, 0x78, 0xED, 0x66, 0xB9, 0x69, 0xBB, 0x41, 0x09, 0x91, 0xD0, 0x0B, 0xA1, 0x74, + 0x66, 0x38, 0xE3, 0xC0, 0x92, 0xF7, 0x31, 0xD3, 0x7A, 0x3A, 0x29, 0x69, 0x69, 0x73, 0xC1, 0x19, + 0x87, 0x31, 0x26, 0x71, 0x26, 0x49, 0x4D, 0x6D, 0x0F, 0x6F, 0x31, 0x0E, 0x9C, 0x03, 0xDB, 0x3B, + 0xBF, 0x51, 0x17, 0x82, 0xF3, 0x11, 0xDB, 0x3A, 0x64, 0x61, 0x87, 0xBE, 0xD9, 0x3E, 0x06, 0x7D, + 0xB9, 0x9C, 0x4C, 0xF7, 0x1F, 0xE3, 0x5F, 0xC6, 0xEA, 0xF2, 0xF0, 0x86, 0x87, 0x22, 0xE9, 0x4B, + 0x21, 0x8C, 0x7E, 0x91, 0x43, 0xDF, 0x53, 0xB4, 0xDC, 0x6B, 0x33, 0x80, 0x1D, 0x2C, 0xA9, 0x29, + 0x84, 0x80, 0xE4, 0xAB, 0x40, 0x84, 0xCC, 0x83, 0xEA, 0x16, 0x29, 0x08, 0x91, 0x83, 0xB9, 0x8B, + 0x5E, 0x6B, 0x49, 0x63, 0x77, 0x77, 0xB9, 0x62, 0x4A, 0x5C, 0xEC, 0xE9, 0xAB, 0x70, 0x68, 0x1E, + 0xB0, 0x94, 0x52, 0x44, 0xB2, 0x6F, 0x49, 0x44, 0x34, 0x0D, 0xDE, 0xDB, 0xC1, 0x72, 0x46, 0x33, + 0xE7, 0x63, 0x23, 0x21, 0x84, 0x68, 0x07, 0xB7, 0x0F, 0x2C, 0xC0, 0x38, 0x4B, 0x9E, 0x08, 0x9C, + 0x8C, 0xE2, 0x3D, 0xA9, 0x4D, 0x20, 0x03, 0xBE, 0xD7, 0x14, 0x43, 0x20, 0x6B, 0xC3, 0xFB, 0xCE, + 0xBB, 0x0C, 0x90, 0x01, 0x07, 0xCE, 0x79, 0x08, 0xF1, 0x07, 0x7F, 0xF7, 0xB3, 0x97, 0xAF, 0x96, + 0xC7, 0xC7, 0x8B, 0xAA, 0xCC, 0x86, 0xC1, 0x1A, 0x93, 0x01, 0xD9, 0xC3, 0xE0, 0x78, 0xD1, 0x71, + 0x94, 0x2C, 0x1B, 0x5D, 0xD7, 0x10, 0x53, 0xC0, 0x44, 0x3D, 0x41, 0x60, 0x40, 0xE5, 0xB0, 0xD1, + 0x72, 0xCC, 0x6E, 0x62, 0x0C, 0x21, 0x32, 0xC6, 0xA5, 0x14, 0xE7, 0x97, 0xB7, 0x7F, 0xFB, 0xC3, + 0x9F, 0x36, 0x6D, 0x6F, 0x8C, 0xB9, 0xB9, 0x59, 0x9E, 0x9E, 0x2C, 0xBA, 0xB6, 0xBB, 0xBE, 0x5D, + 0x4A, 0x21, 0x07, 0x17, 0xDA, 0xB6, 0x0F, 0x31, 0x1A, 0x63, 0x12, 0xE2, 0x30, 0x0C, 0xC1, 0x07, + 0xEB, 0x9D, 0xE4, 0x7C, 0x87, 0x18, 0x30, 0x52, 0xA1, 0x6D, 0x8C, 0x4E, 0x09, 0x72, 0x6E, 0x22, + 0xC6, 0x18, 0xA8, 0x8D, 0x8F, 0x3E, 0x44, 0xCE, 0x85, 0x92, 0x2A, 0x45, 0x4F, 0x07, 0x19, 0x11, + 0x7D, 0x08, 0x65, 0x6E, 0x8A, 0xDC, 0xB4, 0xFD, 0x20, 0x84, 0x50, 0x52, 0xF1, 0x40, 0x0E, 0xB2, + 0x89, 0x33, 0x4E, 0x02, 0xE3, 0x2E, 0x44, 0x00, 0xE8, 0x86, 0x01, 0x31, 0x91, 0x76, 0x3B, 0x29, + 0x34, 0x08, 0xCE, 0x9C, 0x73, 0x87, 0x5B, 0x2A, 0xD3, 0xBA, 0xED, 0x07, 0x96, 0x92, 0x14, 0xA2, + 0x98, 0x98, 0x94, 0xF0, 0xE6, 0x76, 0x1D, 0x42, 0x48, 0x98, 0xB4, 0xD6, 0x9C, 0x31, 0xF2, 0xF5, + 0x20, 0x12, 0x9D, 0xE6, 0x22, 0x01, 0x70, 0x01, 0xC0, 0x18, 0xE9, 0x6B, 0x13, 0x63, 0x9A, 0x33, + 0x16, 0x63, 0x90, 0x52, 0xD6, 0xD5, 0x7C, 0x36, 0xA9, 0x18, 0x83, 0xA3, 0xF9, 0xA4, 0xAA, 0x4A, + 0x2D, 0xE5, 0x62, 0x3E, 0xA9, 0xEB, 0x72, 0xB5, 0xDE, 0x76, 0x5D, 0xDF, 0x77, 0xC3, 0x64, 0x52, + 0xE7, 0xB9, 0x59, 0xAE, 0xB7, 0xF5, 0x60, 0x5F, 0xBE, 0xBC, 0xFC, 0xCB, 0xEF, 0xFF, 0xA0, 0xAE, + 0x8A, 0x07, 0x67, 0xC7, 0x3E, 0x84, 0xE5, 0xA6, 0xD9, 0x6C, 0x1B, 0x21, 0x44, 0xDF, 0x0F, 0x8B, + 0xC5, 0x3C, 0x33, 0xCA, 0x7B, 0xA7, 0x35, 0x5D, 0x16, 0x8C, 0x21, 0x12, 0x3F, 0x5B, 0x4B, 0x91, + 0x19, 0xDD, 0xB5, 0x7D, 0x66, 0x8C, 0xD6, 0x0A, 0x18, 0xF3, 0xC1, 0x7B, 0xEF, 0xCA, 0xB2, 0x78, + 0x79, 0x71, 0x55, 0x96, 0x39, 0xE7, 0xEC, 0xF8, 0x68, 0xF6, 0x2F, 0x7F, 0xFF, 0x7B, 0xEB, 0xCD, + 0xEE, 0x27, 0xEF, 0xFF, 0x72, 0xB3, 0xD9, 0x0A, 0x21, 0x7F, 0xFA, 0xF3, 0x0F, 0xBF, 0xFA, 0xCE, + 0x1B, 0x88, 0x8F, 0xB6, 0xBB, 0xA6, 0x3C, 0x5D, 0x08, 0xCE, 0x83, 0x0F, 0xD6, 0x3A, 0xA3, 0xD5, + 0xC5, 0xE5, 0xCD, 0xE9, 0xF1, 0xD1, 0x76, 0xD7, 0x5C, 0xDF, 0xAC, 0xA4, 0xE0, 0x4F, 0x1E, 0x9F, + 0x9D, 0xBF, 0xBC, 0xCC, 0x33, 0x43, 0x7E, 0x5D, 0xB6, 0xB7, 0x6D, 0xDF, 0x1B, 0xAD, 0xB3, 0x4C, + 0x03, 0x80, 0x56, 0x4A, 0xAB, 0x94, 0x52, 0x62, 0x8C, 0x77, 0xDD, 0xF0, 0xE6, 0xD3, 0x47, 0xD6, + 0xFA, 0x4F, 0x3F, 0x3F, 0x5F, 0x1C, 0x1F, 0x11, 0x60, 0x52, 0xD7, 0x25, 0x63, 0x40, 0x53, 0x3E, + 0xCE, 0x39, 0xEB, 0xDC, 0x30, 0xB8, 0x94, 0x92, 0x10, 0x2C, 0xCB, 0xCC, 0xCD, 0xED, 0x0A, 0x23, + 0x6E, 0x77, 0xED, 0x8C, 0xF3, 0xAA, 0xCC, 0x63, 0x88, 0xC3, 0xE0, 0x82, 0x0F, 0x24, 0x42, 0x2B, + 0xB9, 0x60, 0xC0, 0x12, 0x20, 0xE7, 0xAC, 0x2C, 0xCA, 0x2C, 0xD3, 0x90, 0xD8, 0x76, 0xD7, 0x12, + 0x0F, 0x70, 0x3E, 0xA9, 0x4F, 0x16, 0x73, 0xCE, 0xD9, 0xE5, 0xD5, 0xF2, 0x68, 0x56, 0x15, 0x79, + 0x26, 0x38, 0xCF, 0x33, 0x1D, 0x22, 0x3E, 0x7D, 0xED, 0x8C, 0x31, 0xC6, 0x19, 0x0B, 0x3E, 0x28, + 0x25, 0x38, 0x17, 0xEF, 0xBC, 0xF3, 0x54, 0x4B, 0x39, 0x58, 0xCB, 0x18, 0x5B, 0x2E, 0xD7, 0x4A, + 0x2B, 0xC4, 0xE8, 0x9C, 0xCF, 0x33, 0xB3, 0x5A, 0x6F, 0xAF, 0xAE, 0x96, 0xF3, 0xF9, 0x94, 0x44, + 0x3D, 0x69, 0x1B, 0xBB, 0xBD, 0x5D, 0x2D, 0x57, 0x6B, 0x32, 0x95, 0x3A, 0x9A, 0x4D, 0x69, 0xE2, + 0xC7, 0x68, 0x5D, 0xE4, 0xB9, 0x51, 0x52, 0x4B, 0x21, 0x24, 0x1F, 0x69, 0x9D, 0x82, 0x53, 0x7F, + 0x69, 0x1F, 0xBF, 0x0E, 0x41, 0xEA, 0x6E, 0xFA, 0xE5, 0x3E, 0x23, 0x8C, 0xED, 0x41, 0x31, 0xD8, + 0xB3, 0x9D, 0xE0, 0x1E, 0xB4, 0xFF, 0xC5, 0x6A, 0xF1, 0xCB, 0x8F, 0xC3, 0xFF, 0x21, 0xF4, 0x69, + 0x3F, 0xDD, 0xFC, 0x85, 0x90, 0xF7, 0xA5, 0xDF, 0x25, 0x6D, 0x9B, 0x88, 0xD8, 0xB6, 0x3D, 0x1D, + 0x8A, 0x75, 0xA1, 0xED, 0x2D, 0x00, 0x18, 0xAD, 0xB4, 0x96, 0xD6, 0xFA, 0x03, 0xF7, 0x82, 0xF2, + 0x35, 0x00, 0xF0, 0x3E, 0x14, 0x59, 0x4E, 0x1D, 0x52, 0x21, 0x85, 0xB7, 0xCE, 0x68, 0x45, 0x70, + 0x15, 0x51, 0x10, 0x49, 0x52, 0x9F, 0x8E, 0x86, 0x88, 0x6F, 0x9C, 0x31, 0x9A, 0x4E, 0x20, 0xD3, + 0x17, 0x00, 0x88, 0x31, 0xD2, 0x18, 0x04, 0x31, 0xB0, 0x68, 0x74, 0x31, 0xC6, 0xE8, 0xAC, 0xDF, + 0x07, 0x35, 0x00, 0x00, 0x88, 0x29, 0x71, 0x8E, 0x08, 0x98, 0x22, 0x5D, 0x18, 0xC1, 0xD2, 0x01, + 0x80, 0xBD, 0x3B, 0x79, 0x00, 0x04, 0xE0, 0x6C, 0x9C, 0xB3, 0x24, 0x78, 0x5B, 0x08, 0x39, 0x0C, + 0xF6, 0x87, 0x3F, 0xFA, 0xE5, 0x72, 0xB9, 0x3B, 0x3A, 0x9A, 0x53, 0x23, 0x5C, 0xC9, 0x8C, 0x4B, + 0x11, 0x31, 0x25, 0x60, 0x04, 0x7B, 0x50, 0x5D, 0x49, 0xAE, 0x1C, 0x21, 0x92, 0x5B, 0x79, 0x22, + 0xE4, 0x92, 0xE4, 0xAB, 0xB4, 0x22, 0x46, 0x1F, 0xA7, 0x0E, 0x3A, 0x62, 0xCA, 0x8C, 0xB9, 0x59, + 0xAE, 0xFF, 0xF7, 0x3F, 0xFB, 0xCB, 0xA6, 0x1D, 0x8C, 0xD6, 0x31, 0x46, 0x6B, 0xFD, 0xD1, 0x6C, + 0x96, 0x19, 0x73, 0xB3, 0xDC, 0x2C, 0x37, 0xAD, 0x14, 0x22, 0x44, 0xEC, 0x07, 0xDB, 0x5B, 0xCB, + 0x80, 0x61, 0x44, 0x29, 0x78, 0xEF, 0x7A, 0x60, 0x20, 0x94, 0xC6, 0x84, 0x21, 0x44, 0x25, 0x15, + 0xCD, 0x4B, 0x7A, 0x1F, 0x7C, 0x8C, 0x80, 0x04, 0x33, 0x4B, 0xB2, 0xF3, 0xE3, 0x42, 0x60, 0x44, + 0xEF, 0x23, 0x63, 0xA0, 0x95, 0x22, 0x57, 0x27, 0xAE, 0x24, 0x00, 0x18, 0xAD, 0x09, 0x99, 0xA3, + 0xAB, 0x20, 0x84, 0x18, 0xAC, 0x8B, 0x91, 0xBA, 0xAE, 0x18, 0xA8, 0xDD, 0x89, 0x91, 0x4A, 0x4E, + 0xCE, 0xB9, 0xE0, 0x2C, 0x25, 0x14, 0x42, 0x90, 0x44, 0xA7, 0x10, 0x82, 0x33, 0xC8, 0x8D, 0x9E, + 0x54, 0x65, 0x6F, 0x07, 0xAD, 0x54, 0xD3, 0x0F, 0x11, 0x93, 0x14, 0x3C, 0x37, 0x9A, 0xC6, 0x08, + 0x32, 0x25, 0x50, 0x1C, 0xF2, 0x6E, 0x72, 0xDE, 0x93, 0x29, 0x25, 0xEF, 0x7D, 0x9E, 0x67, 0x24, + 0xD8, 0x6D, 0x8C, 0x36, 0x46, 0x57, 0x55, 0x61, 0xB4, 0x5E, 0x6F, 0x77, 0x90, 0xE0, 0xE1, 0x83, + 0x13, 0x6B, 0x5D, 0x82, 0x54, 0x95, 0xC5, 0xB4, 0x2A, 0x95, 0xE4, 0x09, 0xA7, 0x21, 0x44, 0xA9, + 0x84, 0xD6, 0x7A, 0x3A, 0xA9, 0x76, 0xBB, 0x86, 0x73, 0x56, 0x64, 0x46, 0x30, 0xA6, 0xA4, 0x34, + 0x5A, 0xD9, 0xDE, 0x26, 0x4C, 0xC7, 0xA7, 0xB3, 0x5D, 0xD3, 0x1A, 0xAD, 0x04, 0xE7, 0x5A, 0x4B, + 0xC6, 0xC0, 0x39, 0xAB, 0x85, 0x34, 0x52, 0x25, 0x48, 0x82, 0x31, 0x48, 0x49, 0x49, 0x38, 0x5E, + 0xCC, 0xBE, 0xF5, 0x8D, 0xAF, 0xDC, 0xAE, 0xD6, 0x6D, 0xDB, 0x67, 0xD9, 0x44, 0x2A, 0xF1, 0xE4, + 0xF1, 0x83, 0xB7, 0xDF, 0x7C, 0x0D, 0x49, 0xFD, 0x9A, 0xA5, 0xAB, 0xDB, 0xD5, 0x67, 0x9F, 0xBD, + 0xDC, 0xAC, 0x77, 0x52, 0xB0, 0x94, 0xF0, 0xEA, 0xEA, 0x26, 0x33, 0x66, 0x3A, 0xAD, 0x8E, 0x8F, + 0x66, 0x7D, 0x3F, 0x18, 0xAD, 0xF3, 0xCC, 0x34, 0x6D, 0x4B, 0xCC, 0xEA, 0x7E, 0x18, 0x5E, 0x7F, + 0xF2, 0xE0, 0xE6, 0x66, 0xDD, 0x0D, 0x56, 0x69, 0x5D, 0x57, 0x65, 0xDF, 0x0F, 0x67, 0xA7, 0xC7, + 0x3E, 0xF8, 0x75, 0xD3, 0x1A, 0xA5, 0x84, 0x88, 0xD6, 0xF9, 0x8A, 0xC8, 0x40, 0xA3, 0x46, 0x13, + 0x66, 0x99, 0x7A, 0xEB, 0x8D, 0xC7, 0x7D, 0x6F, 0xAD, 0x73, 0x52, 0xCA, 0xAB, 0x9B, 0x55, 0x4A, + 0xC9, 0x5A, 0xC2, 0x3D, 0xB4, 0x10, 0x42, 0x29, 0xED, 0x7D, 0x24, 0xD3, 0xA0, 0x87, 0x93, 0xC9, + 0x0F, 0xFE, 0xE1, 0x7D, 0xE7, 0xC3, 0xF1, 0x7C, 0xBA, 0xDD, 0x35, 0x6F, 0xBC, 0xFE, 0x48, 0x4A, + 0x01, 0x90, 0x8A, 0xDC, 0x38, 0x1F, 0x06, 0xE7, 0x00, 0x98, 0xD2, 0x2A, 0x84, 0x80, 0x31, 0x0D, + 0xD6, 0x31, 0xCE, 0x13, 0x22, 0xED, 0x04, 0xC0, 0x98, 0x60, 0x5C, 0x29, 0xA2, 0xD0, 0x8A, 0x07, + 0x67, 0x47, 0x74, 0x7B, 0xD0, 0xDA, 0xE1, 0x8C, 0x4B, 0xA5, 0x62, 0x0C, 0xDE, 0x47, 0x63, 0xF4, + 0xD1, 0xD1, 0x54, 0x08, 0x21, 0x59, 0x8A, 0x21, 0x50, 0x5F, 0x6B, 0x52, 0xE5, 0x42, 0x0A, 0xEF, + 0x63, 0x66, 0xB4, 0xE0, 0xFC, 0x66, 0xB9, 0x7E, 0xFD, 0xC9, 0x03, 0x00, 0x10, 0x1C, 0x52, 0xC2, + 0xF9, 0xB4, 0xAE, 0xCA, 0x62, 0xB3, 0xD9, 0x1C, 0xCD, 0xA7, 0xCE, 0x85, 0x80, 0x51, 0x2B, 0x59, + 0xE4, 0xB9, 0x52, 0x52, 0x70, 0x6E, 0x8C, 0x56, 0x4A, 0x70, 0x21, 0x20, 0xDD, 0x39, 0x28, 0x1E, + 0x86, 0x94, 0xD9, 0x38, 0xEE, 0x72, 0x08, 0x4D, 0xE3, 0xCF, 0xFB, 0xB9, 0xD2, 0xBD, 0xAC, 0x06, + 0x0E, 0xCB, 0x74, 0xFF, 0x04, 0xF8, 0x47, 0x93, 0xB2, 0x2F, 0x84, 0xB2, 0x7B, 0x16, 0x6B, 0x7B, + 0xF5, 0xAC, 0x2F, 0x24, 0x62, 0x30, 0x92, 0x0A, 0xC6, 0x67, 0x8B, 0x3F, 0xF9, 0xA3, 0x3F, 0xEC, + 0xBA, 0xA1, 0xEB, 0x6D, 0x37, 0x38, 0xEB, 0xC3, 0x60, 0x83, 0xF3, 0x31, 0x04, 0xA4, 0xD5, 0x6C, + 0x8C, 0x1A, 0xAC, 0x0F, 0x61, 0x94, 0xAF, 0x21, 0xA9, 0x0D, 0xC6, 0x46, 0xB1, 0x1A, 0xEB, 0xC2, + 0x98, 0xA9, 0xA5, 0x91, 0x72, 0x4D, 0x08, 0x28, 0xCD, 0x11, 0x11, 0x5B, 0x4F, 0x08, 0xCE, 0xB9, + 0x90, 0x92, 0x4B, 0x41, 0x7D, 0x1F, 0xC4, 0x3B, 0xBB, 0xDC, 0xD1, 0x75, 0x76, 0xB4, 0xD3, 0x42, + 0x8C, 0x31, 0x06, 0x1F, 0x7D, 0x40, 0x1A, 0xD8, 0x8E, 0x98, 0x22, 0x26, 0x8A, 0x87, 0x31, 0x01, + 0x30, 0x26, 0xD8, 0x48, 0x08, 0xE6, 0x5F, 0xB4, 0x05, 0xD8, 0xEF, 0x07, 0xFC, 0x20, 0xD2, 0x2D, + 0xA4, 0x14, 0x52, 0x5C, 0x5F, 0xDD, 0xFC, 0xEC, 0x17, 0xCF, 0x84, 0xCA, 0x66, 0xF3, 0x69, 0x55, + 0x95, 0x5A, 0x49, 0xAD, 0x64, 0x56, 0x64, 0x04, 0x39, 0x8E, 0x4C, 0xA8, 0xF1, 0xA2, 0x8C, 0x47, + 0x15, 0x63, 0xDA, 0x27, 0x8C, 0x42, 0x2B, 0x99, 0x65, 0x4A, 0x29, 0xA9, 0xA5, 0x8C, 0x31, 0x1A, + 0xA3, 0x0F, 0xDD, 0xAB, 0x8F, 0x3F, 0x3B, 0xFF, 0x0F, 0x7F, 0xFA, 0x17, 0xBF, 0xFA, 0xF4, 0x45, + 0x9E, 0x67, 0x59, 0x66, 0xB6, 0x4D, 0xC7, 0x18, 0x1F, 0xAC, 0x6B, 0xDA, 0xBE, 0xED, 0x87, 0xC1, + 0xBA, 0x7E, 0xB0, 0x21, 0x44, 0x2E, 0xF8, 0x58, 0x71, 0xC7, 0x48, 0x85, 0x9A, 0x52, 0xD2, 0x39, + 0xCB, 0xB9, 0x70, 0x21, 0xC6, 0x84, 0x5A, 0x29, 0xE7, 0x3C, 0x79, 0xF0, 0x70, 0xC6, 0xA4, 0x92, + 0x5A, 0x29, 0x93, 0x11, 0x1C, 0x24, 0xAD, 0xF7, 0xD6, 0x7B, 0x63, 0x34, 0x9D, 0x78, 0x8C, 0x81, + 0x3A, 0x33, 0x2E, 0x84, 0x18, 0xA3, 0xF7, 0x9E, 0x2A, 0x74, 0xCA, 0x59, 0x48, 0x58, 0xD9, 0x3A, + 0xA7, 0x15, 0x6D, 0x2A, 0x4C, 0x4A, 0x4E, 0x13, 0x60, 0x87, 0xE6, 0x37, 0x67, 0xCC, 0x87, 0xA0, + 0x95, 0x2A, 0xCB, 0x42, 0x0A, 0xE1, 0xBD, 0x67, 0x0C, 0x26, 0xD3, 0x8A, 0x04, 0x0F, 0xBC, 0xF5, + 0x55, 0x91, 0x49, 0xC1, 0x63, 0x8C, 0x82, 0xB1, 0xB2, 0xC8, 0xA4, 0xE0, 0x82, 0x71, 0xC6, 0x41, + 0x1B, 0x9D, 0x52, 0x8A, 0x88, 0xB9, 0x31, 0x11, 0x91, 0x33, 0x6E, 0x32, 0x93, 0x19, 0xAD, 0x94, + 0x2C, 0xCA, 0x62, 0xD7, 0xB4, 0xC3, 0x60, 0xE7, 0xB3, 0x89, 0xF7, 0x61, 0xB3, 0xDD, 0x70, 0xC6, + 0xF2, 0xCC, 0x50, 0x8E, 0x0B, 0x09, 0x48, 0x70, 0xB5, 0x2E, 0xCB, 0x49, 0x5D, 0x4C, 0x26, 0x55, + 0x5D, 0x16, 0x0F, 0xCF, 0x8E, 0x17, 0x8B, 0x99, 0xE0, 0x8C, 0x33, 0x26, 0xA5, 0xD0, 0x5A, 0x68, + 0x29, 0x33, 0xAD, 0xC8, 0x05, 0x9D, 0x76, 0x0E, 0xC1, 0xF8, 0x41, 0x23, 0x21, 0xED, 0x79, 0xDC, + 0x0C, 0x40, 0x6B, 0xF5, 0xF9, 0xF3, 0x0B, 0xC2, 0xF2, 0x26, 0x55, 0xD1, 0x34, 0x4D, 0x08, 0x51, + 0x2A, 0xA9, 0x94, 0x6C, 0xDB, 0xFE, 0xEA, 0x7A, 0x79, 0x79, 0x79, 0x43, 0x70, 0x47, 0xDF, 0xDB, + 0x2C, 0xCB, 0xBC, 0x0F, 0xD7, 0xB7, 0x2B, 0xA5, 0xA4, 0xD1, 0x3A, 0xC6, 0x90, 0x52, 0xCA, 0x8C, + 0xBE, 0x5D, 0x6E, 0x48, 0x82, 0xD5, 0x68, 0x35, 0xA9, 0xCB, 0x61, 0xB0, 0xD3, 0xBA, 0x8C, 0x29, + 0xA5, 0x84, 0xE4, 0x07, 0x36, 0x58, 0x5B, 0xE4, 0xD9, 0xC9, 0x62, 0x4E, 0x44, 0x0D, 0x0A, 0x1F, + 0x84, 0xE1, 0xD0, 0x8A, 0xD5, 0x5A, 0x1F, 0xCD, 0xA7, 0x98, 0xF0, 0xE3, 0x4F, 0x9E, 0x5B, 0xE7, + 0xDB, 0xAE, 0xCF, 0x32, 0x4D, 0xC3, 0x3D, 0x55, 0x59, 0x38, 0xEF, 0x76, 0x4D, 0xF7, 0xD5, 0xB7, + 0x9F, 0xCE, 0x26, 0x35, 0xED, 0x95, 0x5D, 0xD7, 0xEF, 0xDA, 0x2E, 0x61, 0x42, 0xC4, 0xC5, 0xD1, + 0x34, 0xCF, 0x33, 0x80, 0x34, 0x9B, 0x4D, 0x4E, 0x16, 0xF3, 0xC9, 0xB4, 0xD2, 0x5A, 0xF9, 0x10, + 0xA4, 0x90, 0x4D, 0xDB, 0x59, 0xE7, 0xA5, 0xE4, 0x44, 0x00, 0xE6, 0x8C, 0x0B, 0x35, 0x7A, 0x4D, + 0x2B, 0xB2, 0x23, 0x17, 0x5C, 0x0A, 0xAE, 0xA5, 0xD4, 0x4A, 0x4B, 0xC1, 0x85, 0x10, 0x99, 0xD1, + 0x46, 0x89, 0x3C, 0x33, 0x4A, 0x4A, 0xE2, 0xD3, 0x52, 0x6E, 0x2E, 0xA5, 0xE0, 0x8C, 0x93, 0x65, + 0xA7, 0x75, 0xBE, 0x2E, 0xF3, 0xF9, 0x6C, 0x22, 0x38, 0x23, 0x52, 0xCB, 0xE2, 0x68, 0x76, 0x79, + 0x7D, 0x2B, 0x85, 0xAC, 0xEB, 0x42, 0x6B, 0x19, 0x42, 0x28, 0xF2, 0x4C, 0x29, 0x41, 0x3A, 0xBA, + 0x75, 0x55, 0xD4, 0x75, 0xA1, 0x0D, 0x59, 0x2B, 0x00, 0x8C, 0xD3, 0x60, 0x9C, 0x3C, 0x17, 0xEF, + 0xE6, 0x8A, 0x38, 0xC9, 0x92, 0x1E, 0xDA, 0x8B, 0xEC, 0xDE, 0x62, 0x1C, 0x51, 0xAD, 0x7B, 0x89, + 0x58, 0x4A, 0x89, 0x1F, 0x06, 0x6C, 0xBE, 0x1C, 0xC5, 0xD2, 0x48, 0x80, 0xBD, 0xF7, 0x8A, 0x2F, + 0x1B, 0x24, 0x1E, 0x5E, 0xF2, 0xEB, 0x65, 0xA9, 0xB4, 0xD6, 0xED, 0xDA, 0x61, 0xB0, 0x7E, 0x5C, + 0xD2, 0xFB, 0x60, 0x89, 0x88, 0xA0, 0x65, 0xDF, 0x3B, 0xF2, 0x7C, 0xC6, 0xFD, 0x9B, 0xB0, 0x94, + 0x30, 0x26, 0x00, 0x08, 0x11, 0x05, 0xE7, 0x42, 0xB0, 0x18, 0x11, 0x80, 0x91, 0xF4, 0x25, 0x1B, + 0x73, 0x01, 0xE2, 0x28, 0x8C, 0xF3, 0x95, 0x90, 0xF0, 0x70, 0x39, 0x22, 0x12, 0x2E, 0x05, 0x8C, + 0x33, 0x64, 0x54, 0x2A, 0x22, 0xE9, 0x12, 0x92, 0xF8, 0xD9, 0x3E, 0xC2, 0xA5, 0x94, 0x00, 0x90, + 0xE4, 0x47, 0x18, 0x26, 0xE0, 0x0C, 0xF6, 0xCE, 0xBB, 0x5F, 0xA0, 0x9F, 0x1C, 0x76, 0x84, 0xFD, + 0x1C, 0x16, 0x00, 0xE3, 0x46, 0xAB, 0x18, 0xFD, 0xCF, 0x7E, 0xFE, 0xE9, 0x72, 0xDD, 0x1F, 0x2D, + 0x16, 0x4A, 0x89, 0x10, 0x02, 0x83, 0xA4, 0x94, 0x14, 0x42, 0x24, 0x84, 0xC4, 0x88, 0xFB, 0x4A, + 0x19, 0x2F, 0x0B, 0x01, 0x0F, 0xFB, 0x4C, 0x88, 0x09, 0x68, 0x21, 0x71, 0x2E, 0x04, 0xE3, 0x9C, + 0x13, 0x4C, 0xA6, 0x35, 0xC9, 0x60, 0xC0, 0xC5, 0xE5, 0xCD, 0x5F, 0xFE, 0xCD, 0x8F, 0x7F, 0xF6, + 0xCB, 0x4F, 0xA7, 0x93, 0xC9, 0x9B, 0x4F, 0x5F, 0xDF, 0xB5, 0x6D, 0xD3, 0x0E, 0xDB, 0xA6, 0x2B, + 0x32, 0xD3, 0x59, 0x9B, 0x69, 0xC3, 0x39, 0xB3, 0xD6, 0xF9, 0x10, 0x18, 0x63, 0x55, 0x51, 0x30, + 0xC6, 0x20, 0xA5, 0xB2, 0xC8, 0xB9, 0xE0, 0xDE, 0x05, 0x17, 0xBC, 0x14, 0x22, 0xC4, 0x80, 0x18, + 0x81, 0xB1, 0x18, 0xE2, 0xE0, 0x9D, 0x92, 0xB2, 0x20, 0xD6, 0xA0, 0x94, 0xD6, 0xBA, 0x7D, 0x90, + 0x8A, 0x21, 0x62, 0x55, 0xE4, 0x14, 0xFA, 0xC3, 0xFE, 0x06, 0x72, 0x34, 0x85, 0x9C, 0x92, 0xE0, + 0x34, 0x3D, 0x9A, 0x38, 0xE7, 0x11, 0x43, 0x99, 0x1B, 0xE7, 0x03, 0xE1, 0xAE, 0x09, 0x10, 0x00, + 0x19, 0xC8, 0x4C, 0x2B, 0xDA, 0xA2, 0x21, 0x41, 0x8C, 0x31, 0xA4, 0xC4, 0x39, 0xA7, 0xA0, 0xB9, + 0xDD, 0xED, 0xCA, 0x22, 0x9F, 0x4C, 0xAA, 0xF9, 0x6C, 0x12, 0x62, 0x04, 0x8C, 0x4D, 0xD3, 0x85, + 0x10, 0x72, 0xA3, 0x89, 0xF9, 0xE9, 0x43, 0x40, 0x44, 0x48, 0x50, 0x15, 0x15, 0x0D, 0x09, 0x91, + 0xAC, 0x93, 0x10, 0x82, 0x2C, 0x66, 0xA8, 0x6F, 0xBB, 0x5A, 0x6D, 0xFA, 0x61, 0x58, 0x1C, 0x4D, + 0x8D, 0xD6, 0x4D, 0xDB, 0x32, 0xC6, 0x04, 0x17, 0x4D, 0xDB, 0xB5, 0x5D, 0xE7, 0xBD, 0x57, 0x42, + 0x4E, 0x67, 0x35, 0xB0, 0xC4, 0x81, 0xD7, 0x93, 0x72, 0x56, 0x54, 0xF3, 0x49, 0x05, 0x00, 0x5A, + 0x2B, 0x12, 0x23, 0x94, 0x99, 0xA6, 0xF1, 0x7B, 0xB2, 0xC8, 0x42, 0xF2, 0xCB, 0xE2, 0x8C, 0x4B, + 0x89, 0x7B, 0x65, 0x37, 0x62, 0xBA, 0x70, 0xC1, 0x95, 0x12, 0x29, 0xC9, 0xC5, 0x7C, 0xE2, 0x5D, + 0x98, 0xD4, 0xE5, 0x83, 0xE3, 0xB9, 0xD6, 0xBA, 0xDD, 0xB5, 0xBB, 0x6D, 0x73, 0xF6, 0xE0, 0xB8, + 0x2C, 0x0B, 0xAD, 0xE4, 0x3B, 0x6F, 0x3E, 0xE9, 0xBB, 0xA1, 0xB7, 0x43, 0x88, 0x68, 0xAD, 0x9D, + 0xD4, 0xA5, 0xF7, 0xFE, 0xE3, 0x4F, 0x9E, 0x4F, 0x26, 0x55, 0x55, 0xE6, 0x94, 0x3F, 0x16, 0x79, + 0xB6, 0xDE, 0x6C, 0x0A, 0xCC, 0x2E, 0xAF, 0x6E, 0xEB, 0xAA, 0xA8, 0xCB, 0xDC, 0x3B, 0xB7, 0x98, + 0x4F, 0xFA, 0xCC, 0xEC, 0x9A, 0x56, 0x4A, 0xF1, 0xF8, 0xE1, 0x69, 0x8C, 0xD1, 0x64, 0xCA, 0x64, + 0xCA, 0x5A, 0x8F, 0x38, 0x5A, 0x43, 0xC2, 0x5E, 0x08, 0x3E, 0x84, 0xA4, 0xB5, 0x2A, 0x72, 0xF3, + 0xE0, 0xF4, 0xC8, 0x68, 0xB5, 0xD9, 0x36, 0x3E, 0xF8, 0xCD, 0xB6, 0x31, 0x5A, 0x2A, 0x25, 0xB0, + 0xC5, 0xB2, 0xC8, 0xDE, 0xFB, 0xC6, 0x57, 0xC8, 0x3F, 0x7C, 0xFD, 0xC9, 0xE7, 0xDE, 0x87, 0x7E, + 0x18, 0x6E, 0xD7, 0xDB, 0xF9, 0x7C, 0x7A, 0xB3, 0xDC, 0x28, 0xD9, 0xC4, 0x18, 0x37, 0xDB, 0x06, + 0x11, 0x67, 0xD3, 0xFA, 0xD1, 0xC3, 0x33, 0x62, 0xAE, 0x19, 0x2D, 0x31, 0xA5, 0x82, 0xDC, 0xD2, + 0x18, 0xCD, 0xFB, 0x1E, 0x7A, 0x82, 0x64, 0xC6, 0xCA, 0x18, 0x10, 0x75, 0x06, 0x18, 0x03, 0xB9, + 0x5F, 0x0F, 0x29, 0x25, 0xD2, 0x7D, 0x1D, 0x53, 0x17, 0x92, 0x0E, 0xA4, 0xD0, 0xCB, 0xA9, 0x2A, + 0x82, 0x18, 0x62, 0x5D, 0x17, 0x84, 0x41, 0x7B, 0xEF, 0x8B, 0xDC, 0xE4, 0x66, 0x94, 0xA6, 0xE0, + 0x5C, 0x90, 0x32, 0x4F, 0x4A, 0x29, 0xCB, 0x74, 0x6E, 0xB4, 0x52, 0x42, 0xDC, 0x15, 0x3D, 0x8C, + 0x01, 0x70, 0x0E, 0x7C, 0xBF, 0x08, 0x01, 0x80, 0x41, 0x22, 0x4F, 0x5B, 0x0A, 0x0C, 0x74, 0x14, + 0xFB, 0x15, 0x79, 0x3F, 0x00, 0xC1, 0x01, 0x20, 0xDB, 0x87, 0x9E, 0x7F, 0x24, 0x17, 0x4B, 0x40, + 0x7E, 0x02, 0xF7, 0x05, 0x66, 0xF0, 0xFE, 0xD3, 0xEE, 0xC7, 0xAF, 0x5F, 0xFF, 0x3B, 0xFB, 0xF1, + 0x8F, 0x7E, 0x64, 0xAD, 0xC7, 0x98, 0x12, 0xDC, 0x4D, 0xF9, 0x00, 0x80, 0x52, 0x02, 0xC6, 0xF9, + 0x55, 0x82, 0xA5, 0xE0, 0xD0, 0x44, 0x60, 0xC0, 0x38, 0x63, 0x62, 0x9C, 0xE1, 0x4C, 0xFB, 0x69, + 0xC4, 0x43, 0x3E, 0xC9, 0xEE, 0x7F, 0x20, 0x03, 0xE0, 0x0C, 0x0E, 0x40, 0x20, 0xFD, 0x6F, 0x7A, + 0xAF, 0x43, 0x30, 0xA2, 0x91, 0xF0, 0xC3, 0xCB, 0x49, 0x54, 0x36, 0x84, 0x18, 0xC7, 0xF6, 0xE8, + 0xFE, 0x4B, 0x12, 0x64, 0xF4, 0x73, 0x37, 0xE8, 0x40, 0xE9, 0x49, 0x1A, 0x5D, 0x29, 0x19, 0xE7, + 0x20, 0x84, 0x12, 0x9C, 0x6D, 0xD6, 0xEB, 0x5F, 0x7D, 0x7A, 0xBE, 0x69, 0xDC, 0xD9, 0xD9, 0x89, + 0xD6, 0x9A, 0x01, 0x6A, 0x25, 0x13, 0xB5, 0x69, 0x95, 0x4C, 0x04, 0xAB, 0x21, 0x60, 0x42, 0x80, + 0x44, 0xE9, 0xE7, 0xE1, 0xAD, 0x10, 0x11, 0x11, 0x8C, 0x51, 0x63, 0x14, 0x06, 0x96, 0x12, 0x92, + 0xF3, 0x18, 0xE7, 0xFC, 0x83, 0x8F, 0x3E, 0xFF, 0xD3, 0xFF, 0xEB, 0xAF, 0x97, 0xEB, 0x46, 0x08, + 0x9E, 0x19, 0x13, 0x70, 0x2C, 0xA7, 0x07, 0x6B, 0xE9, 0x1E, 0x2F, 0x8B, 0xDC, 0x87, 0x40, 0x12, + 0x92, 0x4A, 0xCA, 0x04, 0xD0, 0x0D, 0xBD, 0xE0, 0x7C, 0x52, 0x55, 0x21, 0x86, 0xA1, 0xB7, 0x00, + 0x49, 0x6B, 0x35, 0x0C, 0xCE, 0xE4, 0x06, 0x43, 0xB4, 0xCE, 0x2B, 0xAD, 0xCA, 0x2C, 0xA3, 0x04, + 0xB6, 0xED, 0x7A, 0xEB, 0x2C, 0x49, 0xFA, 0x0E, 0xCE, 0x03, 0x80, 0x92, 0x2A, 0x86, 0x20, 0x25, + 0x67, 0x8C, 0x13, 0x4B, 0x96, 0xF8, 0xBA, 0x31, 0x46, 0x52, 0x41, 0x29, 0xF3, 0xDC, 0x68, 0xD5, + 0x5B, 0x2B, 0x38, 0xDF, 0x75, 0x5D, 0x91, 0x65, 0x1C, 0xA0, 0x19, 0x06, 0x1F, 0x82, 0x91, 0x2A, + 0x33, 0x26, 0xEE, 0x39, 0xC6, 0x07, 0xD6, 0x4B, 0x96, 0x91, 0x11, 0x37, 0xCE, 0x67, 0xB5, 0x31, + 0x3A, 0xCF, 0xB3, 0x9B, 0x9B, 0x55, 0xF4, 0x1E, 0x23, 0x29, 0x7A, 0xF3, 0xC1, 0x5A, 0xE7, 0xA3, + 0x0F, 0x41, 0x2B, 0x21, 0x38, 0x07, 0x80, 0x2C, 0x23, 0xD3, 0x5E, 0x25, 0xF7, 0x02, 0x9C, 0x79, + 0x9E, 0x0F, 0xC3, 0xB0, 0xD9, 0xEC, 0xA4, 0x94, 0x99, 0x51, 0xB3, 0xD9, 0x04, 0x80, 0x8A, 0x74, + 0x34, 0x5A, 0xFB, 0x10, 0x88, 0xA9, 0xAF, 0x94, 0x98, 0x54, 0x65, 0x51, 0x66, 0x45, 0x9E, 0x17, + 0xB9, 0xA9, 0xAB, 0xA2, 0xC8, 0x8C, 0x90, 0x52, 0x08, 0x01, 0x90, 0x48, 0x00, 0x85, 0x76, 0x50, + 0x2E, 0x78, 0xC2, 0x91, 0xE9, 0xC2, 0xF7, 0xD2, 0x9E, 0x87, 0xDD, 0x98, 0xFE, 0x80, 0x31, 0x61, + 0x8A, 0xD6, 0xFA, 0xAE, 0x1B, 0xB4, 0x52, 0xC4, 0x1A, 0x0D, 0x31, 0x32, 0x80, 0xAE, 0xB7, 0xB4, + 0xF3, 0x20, 0xC6, 0x18, 0xA2, 0xB5, 0x0E, 0x11, 0xB7, 0x4D, 0xE3, 0x43, 0x9C, 0x4E, 0x27, 0x4D, + 0xDB, 0x3B, 0xE7, 0xE6, 0xB3, 0xE9, 0x7C, 0x3E, 0x1D, 0xAC, 0x3D, 0x59, 0xCC, 0x2F, 0x2F, 0x6F, + 0x9A, 0x6E, 0x28, 0xCB, 0xBC, 0xD9, 0xB5, 0xAF, 0x3F, 0x79, 0xE0, 0xBC, 0x97, 0x52, 0x69, 0xAD, + 0xF3, 0xDC, 0x90, 0x6C, 0x1C, 0x85, 0x2C, 0xE2, 0x48, 0xEE, 0xEF, 0x8D, 0xC4, 0x58, 0x22, 0xCE, + 0x04, 0xD5, 0x25, 0x8C, 0xB1, 0xDB, 0xE5, 0x7A, 0xBB, 0x6D, 0xD6, 0x9B, 0xC6, 0x0E, 0xCE, 0x79, + 0xEF, 0x7C, 0xB8, 0x5D, 0x6F, 0xD7, 0x9B, 0xDD, 0x57, 0xDF, 0x79, 0x73, 0x52, 0x57, 0x98, 0xF0, + 0xFC, 0xE5, 0x65, 0x88, 0xB1, 0xEB, 0xFA, 0xD5, 0x7A, 0xF3, 0xF5, 0x77, 0xDF, 0x8E, 0x21, 0x36, + 0x4D, 0x97, 0xE7, 0xA6, 0x2A, 0x73, 0x5A, 0x71, 0x45, 0x91, 0x55, 0x55, 0x51, 0x57, 0x45, 0x0C, + 0x48, 0x5A, 0x37, 0x98, 0xB0, 0xC8, 0x33, 0xAA, 0x00, 0x52, 0x22, 0x3D, 0x84, 0x71, 0xB1, 0x60, + 0x4A, 0x52, 0x70, 0xB9, 0x9F, 0xCC, 0x1B, 0x43, 0x1B, 0x03, 0x6A, 0xB3, 0xC2, 0x18, 0xE8, 0xD2, + 0x9E, 0xE4, 0x00, 0x00, 0x10, 0x61, 0xEC, 0xBC, 0x53, 0xD1, 0x03, 0x00, 0x31, 0xE0, 0x72, 0xB5, + 0x19, 0x06, 0x77, 0xD0, 0x23, 0xA0, 0xE8, 0x86, 0x09, 0x39, 0xE7, 0x75, 0x51, 0xE4, 0x85, 0x21, + 0xF7, 0x36, 0x62, 0x35, 0xD0, 0x5A, 0x53, 0x5A, 0x4A, 0xC9, 0x29, 0x6D, 0x10, 0x82, 0x09, 0x12, + 0x71, 0x66, 0x2C, 0x01, 0x19, 0xC6, 0x52, 0x38, 0x62, 0x23, 0x7F, 0x64, 0xFC, 0xDE, 0xD8, 0xBE, + 0x48, 0xBC, 0xCF, 0x9F, 0xF8, 0x72, 0x48, 0xA2, 0x63, 0x40, 0x24, 0x43, 0xD9, 0x2F, 0x53, 0x31, + 0x0E, 0xBF, 0x1C, 0x08, 0x19, 0xF4, 0x26, 0xFB, 0x3E, 0x66, 0x0A, 0x88, 0xE2, 0x0F, 0xFE, 0xA7, + 0x7F, 0x47, 0x29, 0x55, 0x1A, 0xCB, 0x43, 0x3E, 0xAA, 0xE4, 0x70, 0xE2, 0x7C, 0x1F, 0x32, 0xBA, + 0x71, 0xBC, 0x60, 0x54, 0x10, 0x04, 0x36, 0x86, 0x8E, 0x2F, 0xC9, 0x49, 0x8C, 0x3E, 0x6E, 0x63, + 0x04, 0x60, 0x0C, 0x12, 0x30, 0xBE, 0xD7, 0x03, 0x18, 0x4F, 0x87, 0xF1, 0xFB, 0xE1, 0x94, 0x73, + 0x4E, 0x6F, 0x3E, 0x16, 0x87, 0x82, 0x23, 0x1E, 0x7C, 0x19, 0x80, 0xCA, 0xC5, 0x7B, 0x09, 0x17, + 0xDB, 0xE7, 0xF7, 0x89, 0x74, 0x7C, 0xEE, 0x27, 0x63, 0x52, 0x0A, 0xEF, 0xFD, 0x67, 0x9F, 0x9F, + 0x5F, 0x5C, 0xEF, 0x12, 0x53, 0x79, 0x6E, 0xCA, 0xB2, 0x60, 0x80, 0x8C, 0xB1, 0x57, 0xAF, 0x6E, + 0x9B, 0x76, 0x98, 0xD4, 0xC5, 0x3E, 0x8B, 0xA1, 0x2F, 0x1E, 0x02, 0x41, 0x65, 0xFB, 0x9D, 0x87, + 0xE6, 0xEC, 0xB5, 0x56, 0x4A, 0x09, 0x7A, 0x5F, 0xA5, 0x24, 0x29, 0x2E, 0x38, 0x1F, 0x7F, 0xF5, + 0xD9, 0xF9, 0x7F, 0xFE, 0x7F, 0xFE, 0xCB, 0x6A, 0xD3, 0x92, 0xD6, 0xEB, 0x60, 0x6D, 0x37, 0x58, + 0xCE, 0xB9, 0x75, 0x8E, 0x68, 0xFD, 0x5A, 0xCA, 0x93, 0xC5, 0x3C, 0x01, 0xE4, 0x99, 0x01, 0x80, + 0x10, 0x42, 0x4C, 0x98, 0x00, 0x7C, 0xF0, 0x0C, 0xC6, 0xD9, 0x26, 0x9A, 0x5F, 0x61, 0x8C, 0x21, + 0xC6, 0x04, 0xA9, 0x2A, 0x0A, 0xB5, 0x8F, 0x2F, 0xBD, 0x1D, 0xE8, 0x76, 0xED, 0x07, 0xCB, 0x38, + 0xA7, 0x76, 0x07, 0x63, 0x4C, 0x4B, 0xA9, 0x8D, 0xB6, 0xCE, 0xF9, 0x18, 0x0F, 0x83, 0xB1, 0x74, + 0xDE, 0x01, 0x63, 0x99, 0x67, 0x9C, 0x31, 0xE7, 0xBD, 0x0F, 0x11, 0x60, 0x74, 0xB1, 0x75, 0xDE, + 0x0B, 0xCE, 0x95, 0x52, 0xE4, 0x4A, 0x47, 0xA5, 0x34, 0xED, 0xB7, 0x09, 0x80, 0x6A, 0xF9, 0xAA, + 0xC8, 0x31, 0x84, 0xBE, 0xED, 0xEC, 0xE0, 0x76, 0x0D, 0xF1, 0x27, 0x24, 0x63, 0xDC, 0x79, 0x4F, + 0xD7, 0x39, 0x33, 0x9A, 0xA6, 0x3E, 0x84, 0x10, 0xC6, 0x18, 0xAD, 0xA5, 0xD6, 0xA6, 0x28, 0x72, + 0xEF, 0xBD, 0xD6, 0xDA, 0x79, 0x7F, 0x79, 0x73, 0x1B, 0x63, 0x34, 0x5A, 0xD5, 0x65, 0x49, 0x22, + 0x65, 0x00, 0x69, 0x18, 0x6C, 0xD7, 0x0F, 0xB3, 0xE9, 0xA4, 0xAE, 0x8A, 0x2C, 0xD7, 0x55, 0x55, + 0x54, 0x65, 0x2E, 0x04, 0x57, 0x4A, 0x52, 0x46, 0x4C, 0x14, 0x53, 0x18, 0x69, 0xCA, 0xC0, 0xF6, + 0xE2, 0xE4, 0x87, 0x7F, 0x0A, 0x29, 0x18, 0x67, 0x64, 0x4F, 0x7A, 0xB8, 0xEB, 0x68, 0xB1, 0xD2, + 0x3E, 0xAA, 0xB5, 0xA4, 0xE9, 0x1C, 0x36, 0x56, 0xA6, 0x2A, 0xA5, 0xD4, 0x0D, 0xB6, 0x6D, 0xFB, + 0xE0, 0x7D, 0xD7, 0x0D, 0xCE, 0xF9, 0xF1, 0xC9, 0x63, 0x0A, 0x03, 0x0C, 0x20, 0x45, 0x1C, 0x06, + 0x6B, 0xAD, 0x23, 0x09, 0xA3, 0xE3, 0xC5, 0x7C, 0xB5, 0xDA, 0x26, 0x48, 0xD3, 0x49, 0x45, 0xB8, + 0xE1, 0xE5, 0xD5, 0x6D, 0xD3, 0x77, 0xD3, 0x49, 0x8D, 0x88, 0x64, 0xC6, 0x21, 0x47, 0xDD, 0x05, + 0xB9, 0xBF, 0x57, 0xD9, 0x1E, 0xDF, 0xA1, 0x9E, 0x1A, 0x00, 0x40, 0x91, 0x67, 0xD3, 0x49, 0x3D, + 0xA9, 0x8B, 0xB2, 0xC8, 0x1E, 0x9E, 0x1D, 0x57, 0x55, 0x99, 0x19, 0xFD, 0xE4, 0xF1, 0xD9, 0x57, + 0xDF, 0x7E, 0xFA, 0xE9, 0xB3, 0xF3, 0x67, 0x2F, 0x2E, 0x84, 0x10, 0x6F, 0x3D, 0x7D, 0xF2, 0xC1, + 0x87, 0x1F, 0xCF, 0xA6, 0x93, 0x27, 0x8F, 0x1E, 0x5C, 0x5E, 0xDD, 0x08, 0x21, 0x86, 0xC1, 0x16, + 0x79, 0x0E, 0x29, 0x49, 0x21, 0x62, 0xC4, 0x10, 0xE3, 0xB4, 0xAE, 0xA5, 0x14, 0xCE, 0x7A, 0x60, + 0x69, 0x3A, 0xA9, 0x29, 0x93, 0x08, 0x21, 0xB2, 0x51, 0xAD, 0x13, 0xD9, 0x3E, 0x9B, 0x60, 0x9C, + 0xC2, 0x07, 0x4B, 0x00, 0x98, 0x18, 0x12, 0x07, 0x2C, 0xD1, 0x7C, 0xE2, 0x28, 0x7F, 0x45, 0x92, + 0x58, 0x71, 0x0C, 0x10, 0x87, 0x4B, 0x31, 0x62, 0x32, 0x5C, 0xF0, 0x2C, 0x33, 0x4A, 0x09, 0x25, + 0x25, 0xB9, 0x39, 0x8E, 0x18, 0x77, 0x82, 0x3C, 0x33, 0x26, 0x53, 0x34, 0x42, 0x40, 0xE0, 0x38, + 0xC1, 0x44, 0x42, 0x12, 0x32, 0xC1, 0xE9, 0x2B, 0x90, 0xFB, 0x52, 0x08, 0xC6, 0xB9, 0xC8, 0xC4, + 0x90, 0x6A, 0xC3, 0xB4, 0x2F, 0x1E, 0xD3, 0x9D, 0x0F, 0xC7, 0xBE, 0xB4, 0x84, 0x7B, 0x40, 0xFE, + 0xFD, 0x10, 0xF6, 0x85, 0x08, 0xF3, 0xFF, 0x5B, 0x45, 0xDE, 0x69, 0x37, 0xDC, 0x7F, 0xD0, 0xE7, + 0x49, 0xDA, 0xD5, 0x31, 0x21, 0x85, 0x0C, 0x3A, 0x14, 0xC1, 0x18, 0x75, 0x84, 0xE9, 0x2A, 0xC0, + 0x3D, 0x45, 0xFC, 0x83, 0xB5, 0x07, 0x5D, 0xA2, 0xFB, 0xF6, 0xBB, 0x6C, 0x7F, 0xCC, 0xE4, 0x95, + 0x9B, 0x46, 0xE9, 0xB4, 0xC4, 0xD9, 0x58, 0x0F, 0xEE, 0x2B, 0x46, 0xB2, 0xA1, 0x4C, 0x69, 0x3F, + 0xDF, 0x73, 0xFF, 0x88, 0x49, 0xD6, 0x96, 0x76, 0xE0, 0xC3, 0xDF, 0x0F, 0x51, 0xEC, 0x70, 0x7E, + 0x87, 0xFC, 0x95, 0xED, 0x3F, 0x57, 0x2B, 0x19, 0x83, 0xFB, 0xFB, 0x1F, 0xFF, 0x72, 0xF0, 0x60, + 0x8C, 0x86, 0x68, 0x8F, 0xE6, 0xB3, 0xF5, 0x7A, 0x7B, 0x79, 0xB3, 0x0C, 0x01, 0x11, 0xF1, 0xB5, + 0x47, 0xA7, 0x84, 0xD5, 0xD1, 0x65, 0x62, 0x9C, 0x90, 0x3E, 0xD8, 0xCF, 0xB2, 0x02, 0xE7, 0x9C, + 0xB0, 0x09, 0x80, 0xB1, 0x83, 0x49, 0x5C, 0x50, 0xEB, 0x7D, 0xF0, 0xF1, 0xC7, 0xEF, 0x7F, 0xF4, + 0x83, 0x7F, 0xF8, 0xF9, 0xB6, 0xED, 0x69, 0xD7, 0x02, 0x06, 0x52, 0xA9, 0x80, 0x96, 0xD6, 0x80, + 0x1C, 0x69, 0xA5, 0xC9, 0x59, 0x37, 0x0C, 0x43, 0x88, 0x68, 0xB4, 0x62, 0x9C, 0x0B, 0x06, 0x44, + 0x46, 0xE9, 0xAC, 0xCB, 0xB5, 0xA2, 0x01, 0x14, 0x48, 0x29, 0x20, 0x6A, 0x25, 0xB4, 0x54, 0x5A, + 0x49, 0xEB, 0x5C, 0x4A, 0x29, 0x62, 0x4C, 0x29, 0xD1, 0xEC, 0x55, 0xA6, 0x75, 0xD8, 0x47, 0x31, + 0x44, 0x44, 0xCE, 0x31, 0xC6, 0xC1, 0x39, 0x06, 0x2C, 0x37, 0x3A, 0x37, 0xAA, 0x1F, 0x1C, 0x63, + 0x90, 0x67, 0x66, 0xBD, 0x8B, 0x82, 0x5A, 0x87, 0x42, 0xF8, 0x60, 0xBD, 0xF7, 0x4A, 0x88, 0xD1, + 0x8E, 0x41, 0x48, 0x9A, 0x9C, 0x4D, 0x88, 0xB4, 0xB5, 0xB2, 0x71, 0x5E, 0x75, 0x6F, 0x8C, 0x12, + 0x23, 0x6D, 0x04, 0x7D, 0xD7, 0x0B, 0xFA, 0xEA, 0x13, 0xB3, 0x6E, 0x60, 0x8C, 0x49, 0x29, 0x33, + 0x23, 0x46, 0xEB, 0x56, 0xCE, 0x95, 0x14, 0x11, 0xB1, 0xEB, 0x06, 0x29, 0x95, 0x56, 0x52, 0xD4, + 0x95, 0xF7, 0xC1, 0x59, 0x97, 0x69, 0x6D, 0xB4, 0x9E, 0x4D, 0x6B, 0x25, 0xA5, 0xD6, 0x6A, 0xBB, + 0x6D, 0xDA, 0xB6, 0xCF, 0x32, 0xBD, 0x38, 0x9A, 0x3F, 0x7A, 0x70, 0x52, 0x96, 0x99, 0xB3, 0x8E, + 0xBE, 0x68, 0x25, 0xA5, 0x56, 0x8A, 0x0B, 0x9E, 0x48, 0x0B, 0x94, 0x8D, 0x9B, 0xC7, 0x1D, 0x6F, + 0x7E, 0xCF, 0x33, 0xA2, 0x9B, 0x8D, 0xED, 0xF7, 0xED, 0xFD, 0xFE, 0x0A, 0x00, 0x18, 0x23, 0x26, + 0x84, 0x10, 0x62, 0xDA, 0x9B, 0x9C, 0xD2, 0x59, 0x84, 0x10, 0xD7, 0x9B, 0x9D, 0x0F, 0x91, 0x98, + 0x8F, 0x4D, 0xDB, 0x37, 0x6D, 0x9F, 0x17, 0x46, 0x70, 0x5E, 0x55, 0x05, 0x62, 0x8C, 0x91, 0x29, + 0xAD, 0xDB, 0xA6, 0x9B, 0x4C, 0xEB, 0xED, 0xAE, 0x81, 0x9E, 0x97, 0x45, 0x5E, 0x21, 0xBE, 0xF9, + 0xC6, 0xE3, 0x4F, 0x3F, 0x7B, 0x71, 0x75, 0xBD, 0x44, 0x8C, 0x4F, 0x1E, 0x3F, 0x14, 0x52, 0x3C, + 0x7B, 0xF6, 0xB2, 0x69, 0xBA, 0x37, 0x9F, 0x3E, 0xAE, 0xAB, 0x2A, 0x86, 0xF8, 0xEA, 0xEA, 0xB6, + 0x2C, 0xF2, 0x49, 0x5D, 0xE6, 0x79, 0xC6, 0xF6, 0xF0, 0xC8, 0xFD, 0x03, 0x3B, 0x04, 0xB8, 0xBA, + 0x2E, 0xC8, 0x56, 0x56, 0x69, 0x35, 0x9F, 0xD5, 0x42, 0x88, 0xF3, 0x97, 0x57, 0xB7, 0xCB, 0xD5, + 0xC3, 0xB3, 0xE3, 0x6F, 0x7D, 0xFD, 0xED, 0x4F, 0x3E, 0x3B, 0x9F, 0xD6, 0xD5, 0xC9, 0x62, 0x4E, + 0x8A, 0xD2, 0x04, 0x4D, 0xAE, 0x36, 0x9B, 0x69, 0x55, 0x35, 0x9D, 0xCB, 0x33, 0x53, 0xCA, 0x6C, + 0xDB, 0x34, 0x47, 0xB3, 0x09, 0x30, 0xCA, 0xC1, 0x23, 0xE7, 0x0C, 0xC7, 0x79, 0x12, 0x86, 0x91, + 0x98, 0xE7, 0x89, 0x30, 0xE8, 0x84, 0x29, 0x7E, 0xA1, 0x58, 0xBB, 0x5B, 0x83, 0x77, 0x2B, 0x7B, + 0x5C, 0xA2, 0xB0, 0x9F, 0x45, 0x61, 0x87, 0xDD, 0x7A, 0x9F, 0x61, 0xF1, 0xB2, 0xCC, 0xB3, 0x4C, + 0x7B, 0x47, 0x2A, 0x8F, 0x91, 0x3E, 0x4B, 0x4A, 0xB1, 0xD7, 0x2E, 0xE4, 0x84, 0xA6, 0x2B, 0x25, + 0x95, 0x96, 0x87, 0x92, 0x25, 0x8D, 0xE8, 0x76, 0x4A, 0x7C, 0x1F, 0x9B, 0x00, 0x00, 0x00, 0x81, + 0xD3, 0x6F, 0x14, 0xCB, 0x0E, 0x2C, 0xFC, 0x7B, 0x87, 0x95, 0x0E, 0x09, 0xD3, 0x61, 0x69, 0x8F, + 0x8F, 0x7D, 0x5F, 0xF2, 0x1F, 0x0D, 0x61, 0x87, 0xFF, 0x8E, 0x09, 0xDF, 0x1E, 0x33, 0xA5, 0x3B, + 0x66, 0x14, 0x74, 0xFA, 0x77, 0x7F, 0xF0, 0xEF, 0x0F, 0xB9, 0x18, 0x00, 0x8C, 0x48, 0x3C, 0xD5, + 0xAB, 0xFB, 0x1B, 0xEB, 0xFE, 0x85, 0xB8, 0x1F, 0xCB, 0xF6, 0x57, 0xE6, 0xEE, 0x5A, 0xDE, 0x5D, + 0x2E, 0x36, 0x86, 0x98, 0x03, 0x74, 0x35, 0xD6, 0x98, 0xFB, 0x38, 0xCE, 0xBE, 0xF8, 0x38, 0x7C, + 0x44, 0xFA, 0x02, 0xE0, 0xF5, 0xC5, 0x8F, 0xBD, 0x8F, 0x88, 0xD1, 0xCD, 0xCF, 0x39, 0x00, 0x68, + 0xAD, 0x33, 0xA3, 0x3E, 0xFC, 0xF0, 0x93, 0xBF, 0x7F, 0xFF, 0xE3, 0x5D, 0xE3, 0xEA, 0xAA, 0xAC, + 0xAA, 0x0A, 0x80, 0x7D, 0xFE, 0xE2, 0xE2, 0xE7, 0x1F, 0x7D, 0x1E, 0x31, 0x19, 0xAD, 0x1F, 0x9E, + 0x2E, 0xCE, 0x4E, 0xE6, 0xDA, 0x68, 0xCE, 0x79, 0x22, 0x29, 0x0F, 0x18, 0x6B, 0xB4, 0x7D, 0xFC, + 0xA2, 0x68, 0x4B, 0x52, 0x3C, 0x90, 0x12, 0x30, 0xCE, 0x03, 0x46, 0xEB, 0x63, 0xDF, 0xD9, 0xBF, + 0xFA, 0xDB, 0x1F, 0xFF, 0xDD, 0x8F, 0x7E, 0xD1, 0x74, 0x03, 0x9D, 0xBA, 0x94, 0x52, 0x49, 0xC9, + 0x39, 0xC7, 0x7D, 0x1C, 0xCF, 0x8D, 0x41, 0x44, 0xC9, 0x05, 0x67, 0x40, 0xB8, 0x15, 0x5D, 0x6E, + 0x2E, 0xC4, 0x30, 0x58, 0xEF, 0x03, 0x90, 0x31, 0x0C, 0x1F, 0xBF, 0x7C, 0xEF, 0xBD, 0x56, 0x4A, + 0x30, 0xE6, 0x83, 0x4F, 0x69, 0x24, 0xDF, 0xE6, 0x46, 0x33, 0x00, 0x25, 0x04, 0x11, 0x56, 0x09, + 0xE0, 0xE0, 0x7C, 0xEC, 0x78, 0x77, 0xC3, 0x30, 0x1A, 0xF9, 0xC5, 0x48, 0x43, 0x14, 0xD6, 0xB9, + 0x22, 0x33, 0x14, 0x31, 0xAD, 0xF7, 0x9C, 0x3A, 0x21, 0x6C, 0xD4, 0x3D, 0xB1, 0xCE, 0x29, 0x29, + 0x29, 0x71, 0x20, 0xBA, 0x3D, 0x65, 0xA2, 0x54, 0x93, 0x52, 0xAB, 0x94, 0x86, 0xAE, 0xB8, 0x14, + 0x45, 0x9E, 0x65, 0x46, 0x0B, 0xC1, 0x89, 0x74, 0x06, 0x9C, 0xC5, 0x84, 0x24, 0x52, 0x4A, 0xC1, + 0x94, 0xFE, 0x9E, 0x65, 0xA6, 0x2A, 0x73, 0xCE, 0x59, 0x3F, 0xD8, 0x10, 0x3C, 0x03, 0x98, 0xCF, + 0xA6, 0x84, 0x3A, 0x69, 0xA5, 0xAC, 0xB3, 0x98, 0xB0, 0x2A, 0xCB, 0x87, 0x0F, 0x8E, 0xE7, 0xB3, + 0x5A, 0x0A, 0x21, 0x85, 0x18, 0xED, 0x1A, 0x8D, 0x51, 0x52, 0x71, 0x4E, 0x3A, 0x71, 0x89, 0xB6, + 0x8A, 0xF1, 0x4E, 0x4D, 0x94, 0x5C, 0x8C, 0xDB, 0x79, 0x42, 0x86, 0xA3, 0x86, 0x25, 0x30, 0x06, + 0x94, 0xAF, 0x1F, 0xFA, 0xE6, 0x98, 0x92, 0xB5, 0xCE, 0x59, 0x4F, 0x8D, 0x22, 0xEF, 0x43, 0x08, + 0x71, 0xDB, 0xB4, 0x4D, 0xD3, 0x0D, 0x83, 0x23, 0x0E, 0xE3, 0xB6, 0xE9, 0x9A, 0xB6, 0x5F, 0xAE, + 0xB6, 0xE4, 0x6C, 0x40, 0x6C, 0x5B, 0xC1, 0x09, 0x39, 0x8D, 0x5C, 0x88, 0xA6, 0x69, 0x79, 0x4A, + 0x65, 0x59, 0x1C, 0x1D, 0xCD, 0x72, 0x63, 0x9A, 0xA6, 0xED, 0xBA, 0xE1, 0xE5, 0xAB, 0xEB, 0x49, + 0x5D, 0xAD, 0xD7, 0xDB, 0x61, 0x18, 0x8A, 0x3C, 0xAB, 0xCB, 0x62, 0x52, 0x17, 0x42, 0x88, 0x7E, + 0xB0, 0x9B, 0x4D, 0xC3, 0x38, 0xCB, 0xF3, 0x7C, 0x8F, 0x36, 0xDC, 0xAD, 0x97, 0xC3, 0x22, 0x3D, + 0x6C, 0xB7, 0x5A, 0x2B, 0x63, 0x14, 0x3D, 0xE1, 0xE4, 0x78, 0x5E, 0x15, 0xF9, 0xE5, 0xD5, 0x8D, + 0x1D, 0xDC, 0x7C, 0x3E, 0x99, 0x4E, 0xEB, 0xBA, 0x2A, 0x8E, 0xE6, 0xD3, 0xA3, 0xF9, 0xB4, 0x1F, + 0xAC, 0x1D, 0xAC, 0x52, 0xB2, 0xAE, 0x4A, 0xA5, 0x55, 0x8C, 0x71, 0x52, 0x95, 0x55, 0x55, 0x1C, + 0xF0, 0xE5, 0x84, 0xD4, 0xFC, 0x19, 0xF7, 0xDD, 0xB1, 0x78, 0x1B, 0xA5, 0xE7, 0xC7, 0x1B, 0xE6, + 0x7E, 0x2C, 0x38, 0x5C, 0xD2, 0x3B, 0x3E, 0xE4, 0xF8, 0xAF, 0xFD, 0xB8, 0xCB, 0x98, 0x97, 0xE0, + 0x3D, 0x08, 0x9B, 0x8F, 0xC6, 0xD2, 0x1C, 0x84, 0x10, 0x59, 0xA6, 0x8D, 0xD1, 0x5A, 0x6B, 0xC1, + 0x19, 0x99, 0x46, 0x32, 0xC6, 0xB4, 0x51, 0xA4, 0x4F, 0x7D, 0x3F, 0xB2, 0x88, 0x11, 0xDE, 0x01, + 0xAA, 0x9A, 0x28, 0xF7, 0xDD, 0xC7, 0x0A, 0xF8, 0x12, 0x48, 0xFF, 0xC5, 0x98, 0xF5, 0x6B, 0x21, + 0x6C, 0x8C, 0xB6, 0x80, 0x29, 0x01, 0xBB, 0x0B, 0x64, 0x29, 0xDD, 0xCF, 0xEC, 0xBE, 0x10, 0xA5, + 0xD3, 0xBD, 0x5F, 0xD2, 0x21, 0x2E, 0xFF, 0xC1, 0x1F, 0xFC, 0x7B, 0x00, 0x92, 0xA0, 0xD9, 0x9F, + 0xFB, 0xDE, 0x59, 0xF6, 0xFE, 0x27, 0x7F, 0x21, 0x9C, 0xA4, 0xBB, 0x48, 0x04, 0xC0, 0xEE, 0xA3, + 0xEF, 0x8C, 0x8D, 0x68, 0x18, 0xDB, 0x07, 0x9A, 0xB1, 0x89, 0x39, 0xBE, 0x42, 0x70, 0xC6, 0x19, + 0x67, 0xC4, 0x61, 0x39, 0x3C, 0x81, 0x0B, 0xC6, 0x00, 0x84, 0x10, 0x52, 0x09, 0xE2, 0x70, 0x32, + 0x80, 0x34, 0x36, 0xBC, 0xEF, 0xB1, 0xEF, 0xEE, 0xE5, 0xC6, 0x87, 0x3B, 0x49, 0x6B, 0x73, 0x73, + 0xBB, 0xBC, 0xBA, 0xBC, 0xFC, 0xF0, 0xD3, 0xEB, 0xC4, 0x55, 0x51, 0x64, 0xD6, 0xDA, 0x66, 0xD7, + 0x0C, 0x2E, 0xBC, 0xB8, 0xB8, 0xAE, 0xCA, 0xF2, 0xC9, 0xC3, 0x93, 0x22, 0x37, 0x67, 0x27, 0x47, + 0x45, 0x99, 0x0B, 0xC1, 0x52, 0x4A, 0xDE, 0xC7, 0x88, 0x29, 0x84, 0x08, 0x00, 0xC4, 0xA8, 0xA0, + 0xA3, 0x40, 0x24, 0x17, 0xEB, 0x84, 0x29, 0x05, 0x44, 0x4C, 0x18, 0x7C, 0x74, 0x3E, 0x7C, 0xF0, + 0xE1, 0xA7, 0x7F, 0xF7, 0xE3, 0x0F, 0xB6, 0x4D, 0x97, 0x18, 0x4B, 0x71, 0x64, 0x1E, 0x73, 0xCE, + 0x7D, 0xC4, 0xB6, 0x1B, 0x28, 0x2E, 0x53, 0x62, 0x41, 0xC5, 0xAC, 0x0F, 0x51, 0x69, 0x45, 0x6A, + 0x4D, 0xD6, 0x79, 0x7A, 0x73, 0x22, 0x16, 0x30, 0x60, 0x04, 0xD3, 0x42, 0xA2, 0x21, 0x6E, 0xC6, + 0x39, 0x0B, 0x31, 0xC4, 0x84, 0x52, 0xC8, 0xE0, 0x63, 0xD7, 0x0F, 0x5C, 0x70, 0x4C, 0x40, 0xBD, + 0x02, 0x17, 0x02, 0x1B, 0x0B, 0xD5, 0xD4, 0x0F, 0x56, 0x49, 0x05, 0x90, 0xA4, 0x94, 0x8C, 0xB1, + 0xC1, 0x3A, 0x1F, 0xA3, 0x92, 0xE2, 0x78, 0x3E, 0xEB, 0x07, 0xBB, 0xD9, 0xB5, 0x34, 0x22, 0x9E, + 0x00, 0x9C, 0xF3, 0x31, 0x22, 0x05, 0x17, 0xC6, 0x98, 0xE0, 0x3C, 0x33, 0xBA, 0x28, 0xB2, 0x18, + 0x91, 0x84, 0xAD, 0xE9, 0x64, 0x69, 0x2A, 0x10, 0x21, 0xF1, 0xBD, 0x47, 0x15, 0xC9, 0xF5, 0xD1, + 0x17, 0x1E, 0x11, 0x23, 0x22, 0x5D, 0xF6, 0x18, 0x51, 0x29, 0x41, 0x96, 0x6E, 0x54, 0x05, 0x73, + 0xCE, 0x31, 0xA5, 0xB2, 0x28, 0xA6, 0xD3, 0xBA, 0xC8, 0x32, 0xAD, 0xA5, 0x75, 0xAE, 0x69, 0xBB, + 0xE9, 0xA4, 0x7E, 0xF4, 0xE0, 0x78, 0x36, 0xAD, 0xF2, 0x2C, 0x4B, 0x98, 0x7A, 0x6B, 0x81, 0x81, + 0x14, 0x82, 0x73, 0x1E, 0x31, 0xF6, 0xBD, 0xBD, 0xC3, 0x31, 0xD2, 0x21, 0xAD, 0x4E, 0x29, 0x21, + 0x01, 0xBB, 0xFB, 0x3B, 0x70, 0xCF, 0xFF, 0xDE, 0xCF, 0xA9, 0x24, 0xEA, 0x03, 0x20, 0x38, 0xE7, + 0xBB, 0x6E, 0x68, 0x49, 0xE1, 0x56, 0x70, 0xC4, 0xD4, 0xF5, 0x03, 0xA9, 0xEE, 0x6C, 0xB6, 0xBB, + 0xC1, 0x3A, 0x00, 0xB6, 0x6B, 0xDA, 0x2C, 0x33, 0x93, 0xAA, 0xF0, 0x21, 0x5E, 0x5F, 0x2F, 0x8F, + 0x17, 0xB3, 0xBA, 0x2A, 0x9D, 0xF3, 0x93, 0xE9, 0x84, 0x52, 0x57, 0x48, 0x18, 0x62, 0xB8, 0xBA, + 0xBA, 0x5D, 0xAD, 0x77, 0x14, 0x5C, 0xAE, 0x6F, 0x56, 0xE7, 0x2F, 0xAF, 0x5E, 0x5D, 0x5D, 0x7F, + 0xED, 0xDD, 0xB7, 0x2F, 0x5E, 0x5D, 0x39, 0xEF, 0xDB, 0xAE, 0x2F, 0xF2, 0x2C, 0x33, 0xA6, 0xEF, + 0x87, 0x4D, 0xD3, 0x22, 0x22, 0x89, 0x3D, 0x1C, 0x6E, 0xF5, 0xBB, 0x7C, 0x01, 0x31, 0xED, 0x69, + 0x92, 0x87, 0x8D, 0x5D, 0x4A, 0x51, 0x55, 0xF9, 0xE2, 0x68, 0x3A, 0x4E, 0x0B, 0xCC, 0xEA, 0x22, + 0x37, 0x65, 0x91, 0x7D, 0xFD, 0xDD, 0x37, 0x19, 0x83, 0xEB, 0xDB, 0x65, 0x66, 0x34, 0x39, 0xC3, + 0x1B, 0xA3, 0x39, 0x87, 0xB2, 0xC8, 0x4F, 0x8E, 0xE7, 0xFD, 0x30, 0x44, 0xF2, 0x6A, 0x13, 0x42, + 0x48, 0xAE, 0x8D, 0x1A, 0xDF, 0x30, 0xDD, 0xC1, 0x61, 0x00, 0x10, 0x43, 0x74, 0x36, 0x50, 0x32, + 0x7B, 0x08, 0x1F, 0x89, 0x04, 0x95, 0x0F, 0x12, 0xC5, 0xA4, 0x3B, 0x13, 0xEE, 0x34, 0xE2, 0x69, + 0x4D, 0xEF, 0xBB, 0x79, 0xFB, 0x75, 0x0D, 0x77, 0x20, 0x11, 0xE3, 0x4C, 0x2A, 0xC1, 0xEF, 0x39, + 0xCF, 0x4A, 0x75, 0xA7, 0x8C, 0x70, 0xA8, 0xA2, 0x00, 0x40, 0xDC, 0xAB, 0x87, 0xC6, 0xA2, 0xE8, + 0x7E, 0x4A, 0x08, 0x77, 0x03, 0xC8, 0xF7, 0xA3, 0xD5, 0xFD, 0xA0, 0x36, 0xC6, 0x32, 0x48, 0x90, + 0x00, 0x71, 0x8C, 0x47, 0xFF, 0xE8, 0xB3, 0xBF, 0xF0, 0xFB, 0xAF, 0xC1, 0xFC, 0x87, 0x98, 0x38, + 0x16, 0xFF, 0x78, 0x17, 0x29, 0xEF, 0xBF, 0x3E, 0xED, 0xB1, 0x80, 0x2F, 0xC4, 0x31, 0x18, 0xA1, + 0xB0, 0x43, 0x8D, 0xFC, 0x85, 0x74, 0x0C, 0xF6, 0x32, 0xF9, 0x87, 0x97, 0x70, 0x6A, 0xFF, 0x8F, + 0x98, 0xD6, 0x5D, 0x81, 0x9A, 0xF6, 0xD8, 0x47, 0x4A, 0x69, 0xBC, 0xD9, 0x85, 0x18, 0xBF, 0xB3, + 0xF1, 0x72, 0x44, 0xBA, 0xE1, 0xF7, 0xB1, 0xF2, 0x4E, 0xA5, 0x9A, 0xA2, 0x4F, 0x9E, 0x67, 0x6D, + 0xD3, 0x9C, 0xBF, 0x7C, 0xE5, 0x43, 0x52, 0x26, 0xE3, 0x52, 0x5C, 0x5E, 0xDF, 0x38, 0x49, 0xF1, + 0xFE, 0x7F, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xEB, 0xA9, 0x6D, 0x9D, 0x17, 0xF9, + 0x83, 0xD3, 0xE3, 0xF9, 0x6C, 0x62, 0xB4, 0x9C, 0xD4, 0x25, 0x63, 0x10, 0x02, 0x3A, 0x1F, 0x86, + 0xC1, 0xB1, 0xBD, 0x07, 0x0F, 0xD5, 0x8F, 0x00, 0x60, 0xAD, 0x1B, 0x17, 0x18, 0x1F, 0xC5, 0x60, + 0x11, 0x21, 0x46, 0x5C, 0xAD, 0x36, 0xEB, 0xCD, 0x8E, 0x92, 0x6D, 0x29, 0x25, 0xDD, 0x7C, 0x74, + 0x26, 0xDE, 0xFB, 0x83, 0xE0, 0x5F, 0xD7, 0xDB, 0x22, 0x33, 0x59, 0x96, 0x61, 0x4A, 0xDD, 0x30, + 0xA4, 0xBD, 0x1E, 0x06, 0x83, 0xC4, 0x39, 0x23, 0x12, 0x89, 0x60, 0x0C, 0x53, 0x52, 0x52, 0x0D, + 0xB6, 0x53, 0x4A, 0x0A, 0xC6, 0x63, 0x8C, 0x42, 0x48, 0x29, 0xA5, 0x75, 0xCE, 0x79, 0x97, 0x00, + 0xA8, 0xF8, 0x1A, 0xAC, 0x4D, 0x90, 0x38, 0xB0, 0x22, 0xCB, 0x18, 0x63, 0x11, 0x31, 0xC6, 0xA8, + 0x94, 0x24, 0x3D, 0x83, 0x10, 0xD1, 0x3A, 0x5F, 0x64, 0x59, 0xEF, 0x5C, 0x44, 0x8C, 0x09, 0xBB, + 0x61, 0x50, 0x52, 0x5A, 0xE7, 0xA8, 0x63, 0xC0, 0x39, 0xE3, 0x5C, 0x72, 0xC6, 0x85, 0xE0, 0x9E, + 0x00, 0x2F, 0x80, 0xBE, 0xB7, 0xE4, 0x1E, 0x26, 0x84, 0x20, 0x3A, 0x52, 0x4A, 0x49, 0x08, 0xA1, + 0xB5, 0x8C, 0x21, 0x48, 0x86, 0x84, 0x69, 0x47, 0x8C, 0x90, 0x80, 0xBA, 0xEA, 0x09, 0x58, 0x88, + 0xE8, 0xFC, 0xA0, 0xA4, 0x34, 0x4C, 0x65, 0x99, 0x01, 0x80, 0xB6, 0x6D, 0x85, 0x94, 0xDE, 0xFB, + 0x2C, 0x33, 0xB3, 0xE9, 0x64, 0x52, 0x17, 0x5A, 0xC8, 0x10, 0x42, 0x9E, 0x4D, 0x67, 0xD3, 0x8A, + 0x25, 0xA0, 0x5E, 0x98, 0x54, 0x42, 0x1B, 0x99, 0x58, 0xE2, 0x3C, 0x97, 0x52, 0x38, 0xEB, 0xFA, + 0xDE, 0x5A, 0xEF, 0x74, 0x50, 0xC1, 0x7B, 0xAD, 0x55, 0xA6, 0x15, 0x22, 0x61, 0x91, 0x4C, 0x70, + 0xC1, 0xC5, 0x21, 0x86, 0xDE, 0x01, 0x0E, 0x1C, 0x00, 0x81, 0xC5, 0x98, 0x12, 0x26, 0xC6, 0x20, + 0xC4, 0x68, 0x07, 0xD7, 0xB4, 0x3D, 0x09, 0x43, 0x5B, 0xE7, 0x11, 0xB1, 0xEF, 0xAD, 0xB5, 0x6E, + 0xBD, 0xDE, 0x0E, 0xD6, 0x01, 0xE7, 0x5D, 0x37, 0x18, 0x25, 0x81, 0xB3, 0x18, 0x62, 0x99, 0x9B, + 0xDC, 0xA8, 0xF6, 0xFF, 0x63, 0xEB, 0xCD, 0x9A, 0x24, 0xBB, 0x92, 0xF4, 0xB0, 0xE3, 0x7E, 0xD6, + 0xBB, 0xC4, 0x92, 0x6B, 0x2D, 0x68, 0xA0, 0xD1, 0x1B, 0xBA, 0x87, 0x33, 0x3D, 0x9C, 0x19, 0x6E, + 0x46, 0x72, 0x86, 0xA4, 0xC4, 0x07, 0xD2, 0x28, 0x93, 0xDE, 0xF4, 0x07, 0x24, 0xD3, 0x33, 0x4D, + 0x7F, 0x4B, 0x4F, 0x92, 0xCC, 0x64, 0x32, 0xA3, 0x89, 0x12, 0xCD, 0x38, 0x22, 0xC7, 0xA6, 0xD5, + 0xEC, 0xE9, 0x1D, 0xDD, 0x0D, 0x34, 0x80, 0xAA, 0x42, 0x56, 0xE5, 0x1A, 0xEB, 0x5D, 0xCE, 0xEA, + 0x7A, 0xF0, 0x1B, 0x91, 0x09, 0x90, 0xF9, 0x50, 0x56, 0x28, 0x64, 0x46, 0x64, 0x44, 0xDC, 0xEB, + 0xC7, 0xFD, 0xF3, 0x6F, 0xD9, 0xF7, 0x4C, 0xEF, 0x02, 0x41, 0xCF, 0x9F, 0x9D, 0x3F, 0xDC, 0x6F, + 0xCE, 0x4F, 0x4F, 0x36, 0xDB, 0x6D, 0xC9, 0xF1, 0xE1, 0x61, 0x1D, 0x62, 0xBC, 0xBC, 0x3C, 0x3B, + 0x3D, 0x5D, 0xF6, 0xA3, 0xBF, 0xBA, 0xBA, 0x7E, 0x73, 0x75, 0xFD, 0xC1, 0xFB, 0x2F, 0x5F, 0xBD, + 0xBA, 0x2A, 0x99, 0x4A, 0x29, 0x7F, 0xFC, 0x87, 0x1F, 0x35, 0x75, 0xD5, 0xF5, 0xC3, 0xCD, 0xED, + 0xBD, 0x35, 0xFA, 0xF2, 0xE2, 0x94, 0x9B, 0x32, 0xDE, 0xB7, 0xF2, 0xED, 0xCA, 0xC3, 0x7B, 0x39, + 0x8C, 0xE1, 0xC7, 0x32, 0x57, 0x8A, 0x00, 0x28, 0xCB, 0x45, 0x7B, 0x7E, 0xB6, 0x00, 0x80, 0x18, + 0xD2, 0x66, 0xBB, 0xFF, 0xEC, 0xF3, 0xD7, 0x3E, 0x44, 0x89, 0x20, 0x48, 0x9C, 0x9E, 0x2C, 0xAA, + 0xCA, 0x0D, 0xE3, 0x68, 0xB4, 0x6B, 0xEB, 0x4A, 0x29, 0xA9, 0x92, 0xD4, 0x52, 0x4A, 0x29, 0x99, + 0x68, 0x91, 0xD2, 0x94, 0x61, 0x5E, 0x68, 0x1A, 0x2A, 0x85, 0x10, 0x39, 0xE7, 0x71, 0x0C, 0xDC, + 0x46, 0xE5, 0x4C, 0x87, 0x98, 0xC4, 0xC7, 0x1A, 0x07, 0x20, 0x72, 0x39, 0x2C, 0x2C, 0xBF, 0x3A, + 0x54, 0x0A, 0xA0, 0x03, 0xE8, 0x7E, 0xA8, 0xC5, 0x04, 0x80, 0x42, 0x02, 0x0A, 0x41, 0x91, 0x8A, + 0x10, 0x42, 0x49, 0x48, 0x49, 0xF0, 0x90, 0x6E, 0xC9, 0xA6, 0x08, 0x88, 0x60, 0x8C, 0x9E, 0x7C, + 0x5D, 0xF9, 0x60, 0xE3, 0x90, 0x07, 0xCE, 0x44, 0x64, 0xFE, 0x3D, 0x09, 0xFA, 0x6A, 0x3F, 0xF5, + 0xB4, 0xE2, 0x1C, 0x07, 0x2A, 0x71, 0x70, 0x94, 0x79, 0xAC, 0x41, 0x45, 0x14, 0x9A, 0x2C, 0x6B, + 0x9E, 0xFC, 0xF8, 0xB1, 0x70, 0x4D, 0xE3, 0x68, 0x79, 0xD2, 0x88, 0x89, 0x69, 0x7B, 0xFB, 0x95, + 0x6D, 0xC0, 0x64, 0x6D, 0x78, 0x78, 0x4D, 0x00, 0x4F, 0xF6, 0x8F, 0xFC, 0x98, 0xC7, 0x77, 0xE1, + 0xB1, 0x8A, 0x3D, 0xBE, 0x24, 0xFC, 0xDA, 0x37, 0x4C, 0x95, 0x0C, 0x0E, 0x15, 0x8E, 0xFF, 0x11, + 0x05, 0x02, 0x4A, 0xC5, 0x9D, 0xD7, 0x93, 0x29, 0xF2, 0xF0, 0x17, 0xC1, 0x9C, 0x80, 0x83, 0x93, + 0x8F, 0x10, 0x42, 0x1B, 0x85, 0x12, 0x52, 0x02, 0x2E, 0x65, 0x78, 0x58, 0xDB, 0xF0, 0x6B, 0x46, + 0x44, 0x63, 0x34, 0x0A, 0xF1, 0xD9, 0xEF, 0xBF, 0xF8, 0xED, 0x17, 0xD7, 0x31, 0x89, 0x58, 0xC4, + 0x7A, 0xB3, 0xEB, 0xFA, 0x61, 0x1C, 0x87, 0xE5, 0x7C, 0x81, 0x44, 0x4E, 0xCB, 0x79, 0x5B, 0x97, + 0x94, 0xAC, 0x92, 0x27, 0xCB, 0x56, 0x00, 0x84, 0x94, 0xFA, 0x7E, 0xF4, 0x31, 0x2B, 0x84, 0xA3, + 0x6D, 0x2E, 0x11, 0xC5, 0x94, 0xC7, 0xC1, 0x33, 0x0E, 0xCD, 0xD7, 0x68, 0x2A, 0x25, 0xA5, 0x42, + 0x85, 0x52, 0xCE, 0xFD, 0xE8, 0x53, 0xCA, 0xB3, 0xA6, 0x11, 0x02, 0x43, 0x8C, 0x59, 0x2B, 0x1E, + 0x73, 0x24, 0x4E, 0xC2, 0xF1, 0xC3, 0x67, 0x25, 0xC6, 0x18, 0xFA, 0xD1, 0x57, 0xCE, 0x31, 0x29, + 0x81, 0xED, 0x76, 0x05, 0x95, 0x29, 0x05, 0x8E, 0x88, 0xC3, 0x25, 0x0B, 0x11, 0xE7, 0x63, 0xE7, + 0x54, 0x94, 0x52, 0x29, 0xE7, 0x98, 0x32, 0x22, 0x32, 0x3C, 0x2F, 0x40, 0x14, 0x22, 0xA9, 0x54, + 0x08, 0xA1, 0xAA, 0x8D, 0x35, 0x3A, 0xC4, 0x04, 0x42, 0xC4, 0x9C, 0x89, 0x04, 0x22, 0x94, 0x42, + 0x08, 0x22, 0x11, 0x19, 0x23, 0x43, 0x02, 0x00, 0xE8, 0xFB, 0x71, 0x1C, 0xFD, 0xBC, 0x6D, 0x52, + 0x56, 0x4C, 0x09, 0xB6, 0x5A, 0xEF, 0xFB, 0x81, 0x94, 0x4A, 0x19, 0xD9, 0x60, 0x6B, 0x18, 0x3D, + 0x00, 0xA4, 0x92, 0x35, 0x4E, 0x4B, 0xA8, 0x72, 0x18, 0xAB, 0x59, 0x0E, 0x9D, 0xA9, 0x68, 0x90, + 0xBC, 0x16, 0x98, 0xEE, 0x55, 0x29, 0x49, 0x88, 0x61, 0xF4, 0x42, 0x40, 0xED, 0xF4, 0xAC, 0x6D, + 0xA4, 0xC4, 0xBE, 0xEB, 0xFB, 0x7E, 0x98, 0x2F, 0x66, 0x27, 0xCB, 0x85, 0xB5, 0x66, 0xDE, 0x36, + 0x8B, 0x79, 0x6D, 0xAD, 0x65, 0x53, 0x2D, 0x00, 0x0C, 0x21, 0x54, 0x95, 0x6B, 0x1A, 0x87, 0x52, + 0x2A, 0x84, 0xB6, 0xAE, 0xB8, 0xA5, 0xEA, 0xFB, 0x31, 0xC6, 0x04, 0x60, 0x0E, 0xE6, 0x9D, 0x2C, + 0xF3, 0x28, 0x90, 0x40, 0x29, 0x2C, 0x54, 0x28, 0x4F, 0xBF, 0x15, 0x02, 0x0B, 0xCF, 0x11, 0x00, + 0x0A, 0x81, 0xC8, 0x85, 0xB3, 0x7F, 0xD8, 0x49, 0x62, 0xBD, 0xD9, 0x1D, 0xBC, 0xD4, 0xE3, 0xBE, + 0x1B, 0xBC, 0xF7, 0x85, 0xA8, 0xE4, 0x52, 0x48, 0xB0, 0xE1, 0x60, 0x88, 0xA9, 0x1F, 0x7C, 0x5D, + 0x39, 0x1F, 0x02, 0x08, 0x51, 0x55, 0x96, 0x88, 0xEE, 0x6E, 0x57, 0x2F, 0x9E, 0x5F, 0xC6, 0x98, + 0x62, 0x88, 0x4D, 0x53, 0x0D, 0x83, 0xAF, 0x9C, 0x13, 0x42, 0x28, 0xAD, 0xEE, 0xEF, 0x56, 0xBB, + 0x5D, 0x67, 0xAC, 0x79, 0xFE, 0xEC, 0x7C, 0xBB, 0xDD, 0xAF, 0x56, 0x1B, 0x67, 0xCC, 0x7C, 0xDE, + 0xDE, 0xDD, 0x3D, 0x28, 0xAD, 0x1F, 0xD6, 0x9B, 0xB3, 0x93, 0x93, 0x8B, 0xB3, 0x13, 0xAD, 0x65, + 0x4C, 0xF9, 0xEE, 0x6E, 0x35, 0x9F, 0x37, 0x55, 0xE5, 0x10, 0x05, 0x80, 0xCC, 0x79, 0xBA, 0xF2, + 0x79, 0x03, 0x73, 0xEC, 0x74, 0x8E, 0x77, 0xCA, 0xD4, 0x25, 0x14, 0x22, 0x2A, 0x28, 0xD1, 0x39, + 0xF3, 0xC1, 0xFB, 0x2F, 0x11, 0x41, 0x2A, 0xF5, 0xEA, 0xD5, 0xD5, 0xC3, 0x6A, 0x8B, 0x9C, 0x7A, + 0xD5, 0x36, 0x00, 0x90, 0x53, 0xB6, 0xC6, 0x84, 0x10, 0xA4, 0x92, 0x8F, 0xBD, 0x18, 0xBF, 0x27, + 0x38, 0xF5, 0xC5, 0x42, 0x50, 0x8C, 0xB9, 0x94, 0xA2, 0xB5, 0x12, 0x05, 0x98, 0x82, 0x0E, 0x87, + 0x80, 0x56, 0xEF, 0xC3, 0x84, 0xA0, 0x4D, 0x12, 0xD1, 0x69, 0x84, 0x94, 0xC7, 0x60, 0x69, 0x44, + 0xDE, 0xC2, 0x19, 0xAD, 0x27, 0xBE, 0x0B, 0x0A, 0x39, 0x7D, 0x16, 0xC4, 0x03, 0x63, 0x16, 0x99, + 0x5D, 0x82, 0xD9, 0x7D, 0x13, 0x25, 0x68, 0xA5, 0x53, 0xCE, 0x28, 0x26, 0x9B, 0x79, 0x22, 0x2A, + 0x4C, 0x2B, 0xE3, 0xFC, 0xDB, 0x63, 0xD7, 0x73, 0x60, 0x2B, 0x1C, 0x9F, 0xB7, 0x1C, 0x52, 0x2F, + 0x0E, 0xE5, 0xE8, 0xB1, 0x26, 0x1C, 0x6B, 0x10, 0x5B, 0x2E, 0x88, 0xC7, 0x07, 0xFA, 0x7A, 0xCB, + 0xC5, 0x30, 0x97, 0x38, 0x16, 0xB2, 0xAF, 0x0F, 0xAD, 0xD3, 0xCF, 0xAA, 0xC7, 0xC6, 0x4B, 0x7C, + 0xFD, 0x69, 0x9E, 0xD6, 0xF2, 0xAF, 0xB5, 0xB8, 0x08, 0x02, 0x0F, 0x50, 0x17, 0xFF, 0x14, 0xAF, + 0x32, 0x1F, 0x6B, 0x30, 0x27, 0x0B, 0xA1, 0x80, 0x29, 0x68, 0x17, 0x40, 0x70, 0x62, 0xC8, 0x23, + 0x84, 0xCF, 0x99, 0x02, 0x00, 0x42, 0xA3, 0x2C, 0x82, 0x62, 0xCE, 0x20, 0x84, 0x02, 0x49, 0x00, + 0xF1, 0xA0, 0x6E, 0x22, 0x24, 0x9C, 0x58, 0x91, 0x20, 0x04, 0xE5, 0xC4, 0x3B, 0x14, 0x79, 0xBF, + 0x5A, 0x5F, 0xDF, 0xAE, 0xAE, 0xEE, 0xF6, 0xBB, 0xA1, 0xDC, 0x3F, 0xAC, 0xBA, 0x6E, 0x98, 0xCF, + 0xE7, 0x75, 0x5D, 0x3F, 0x7F, 0x76, 0x69, 0x8C, 0x42, 0x21, 0xC6, 0x71, 0xA8, 0xAD, 0x7E, 0x71, + 0x79, 0xB6, 0x3C, 0x99, 0x23, 0x42, 0x2E, 0x65, 0xF0, 0x71, 0xBD, 0x1B, 0x4A, 0x29, 0x46, 0x2B, + 0x2B, 0x44, 0x65, 0x0D, 0x00, 0xC4, 0x18, 0xF7, 0xDD, 0xA0, 0x94, 0xAC, 0xB5, 0xE2, 0x93, 0xA2, + 0x30, 0xD2, 0x9F, 0x4B, 0xCC, 0xC9, 0x87, 0x20, 0xA5, 0x34, 0xCE, 0x38, 0x67, 0x41, 0xCA, 0xFB, + 0xD5, 0x7A, 0xDE, 0x36, 0xA5, 0x50, 0x8C, 0x51, 0xE2, 0x74, 0xB4, 0xD5, 0x95, 0x1D, 0xBD, 0x6F, + 0xAA, 0x4A, 0x6B, 0x1D, 0x62, 0x2C, 0xB9, 0xA8, 0x83, 0x87, 0x9C, 0x44, 0x04, 0xC0, 0x61, 0xF4, + 0x56, 0x2B, 0x67, 0x8C, 0x35, 0x5A, 0x21, 0x72, 0xD9, 0x22, 0x22, 0x90, 0x8C, 0xC8, 0x62, 0x2E, + 0x91, 0x55, 0x44, 0xD6, 0x98, 0xF5, 0x6E, 0x8F, 0x24, 0xAC, 0x35, 0x7C, 0xB8, 0xF4, 0xFD, 0xC0, + 0x74, 0x07, 0x89, 0x98, 0x45, 0x16, 0x42, 0x18, 0xA3, 0x01, 0xA0, 0x50, 0x61, 0x91, 0xD0, 0xD4, + 0x45, 0x4E, 0x6F, 0x57, 0x41, 0x00, 0x3F, 0x7A, 0x9E, 0xD8, 0x89, 0x68, 0xF4, 0x01, 0x00, 0x0F, + 0xBA, 0x52, 0xC1, 0x84, 0x49, 0x3A, 0xEC, 0xB0, 0x94, 0x92, 0xD6, 0x72, 0x59, 0x41, 0x91, 0x27, + 0x4A, 0x07, 0x9F, 0xFF, 0xC0, 0xE2, 0x53, 0x8E, 0x6D, 0x46, 0x14, 0x40, 0xCC, 0x53, 0x8D, 0x31, + 0x6A, 0x6D, 0x96, 0x8B, 0xF9, 0x8B, 0xCB, 0x73, 0x01, 0x62, 0xB9, 0x68, 0xD9, 0x1C, 0x2D, 0xA7, + 0x22, 0x11, 0x52, 0xCE, 0xD8, 0x56, 0x95, 0xB3, 0x5C, 0x94, 0x8C, 0x94, 0x4A, 0x2B, 0x94, 0x90, + 0x62, 0xA9, 0x9C, 0xF1, 0xB5, 0x0B, 0x21, 0x29, 0x25, 0x95, 0x96, 0xCC, 0x82, 0x8E, 0x21, 0x5B, + 0xA5, 0x89, 0x94, 0x10, 0x07, 0x66, 0xB5, 0x10, 0x00, 0x42, 0xD1, 0xB4, 0xDC, 0xE4, 0x3D, 0xDA, + 0xC4, 0xDA, 0xCF, 0x79, 0xDF, 0xF5, 0xEB, 0xCD, 0x2E, 0x84, 0x94, 0x4B, 0x09, 0x21, 0x16, 0x22, + 0x4E, 0xD5, 0x74, 0xCE, 0x08, 0x80, 0x31, 0x84, 0x14, 0x73, 0x4C, 0x29, 0xC6, 0xB8, 0xD9, 0xEE, + 0x72, 0x2E, 0x28, 0xB1, 0xF1, 0x55, 0xE5, 0x6C, 0xA1, 0x32, 0x8C, 0xE3, 0xD9, 0xC9, 0xB2, 0xEB, + 0x46, 0x57, 0x19, 0xA5, 0x65, 0x4A, 0xA8, 0xA4, 0x1C, 0x86, 0x7E, 0x31, 0x6F, 0x1F, 0x36, 0xBB, + 0x10, 0x53, 0xF0, 0xF1, 0xF2, 0xE2, 0xE4, 0xE6, 0x76, 0xB5, 0xEF, 0x87, 0x1F, 0x7C, 0xEF, 0xC3, + 0xC5, 0xAC, 0xD9, 0xEE, 0xFB, 0xEB, 0x9B, 0x7B, 0xAD, 0x54, 0x4E, 0xA9, 0xA9, 0x9C, 0x73, 0x96, + 0x97, 0x9E, 0x88, 0xB2, 0xAE, 0x2D, 0xA2, 0x40, 0x94, 0x44, 0x32, 0x04, 0x51, 0x26, 0xBE, 0x6E, + 0x39, 0x9E, 0x8E, 0x8F, 0xF7, 0xC5, 0x13, 0x09, 0x4A, 0x53, 0x57, 0xC7, 0xE1, 0xE8, 0x7B, 0xDF, + 0xFD, 0xE6, 0x27, 0x9F, 0xBE, 0x7A, 0x73, 0x75, 0x6D, 0x9D, 0x6D, 0xDB, 0xBA, 0x9D, 0xD5, 0xDA, + 0x68, 0xA5, 0xA4, 0x75, 0x86, 0x3B, 0xDF, 0x23, 0x2E, 0x29, 0xA5, 0x24, 0x41, 0x2C, 0xDA, 0x53, + 0x5A, 0x71, 0x3A, 0x3D, 0x5F, 0xD2, 0xEC, 0xCD, 0x4D, 0x45, 0x10, 0xD1, 0x38, 0x8E, 0x88, 0xC0, + 0x4D, 0x1C, 0x97, 0x92, 0x98, 0x92, 0x20, 0xC1, 0x52, 0x33, 0x22, 0xC1, 0x00, 0xE8, 0x91, 0x61, + 0xAB, 0x25, 0x00, 0x30, 0xC2, 0x23, 0xD2, 0x21, 0x8E, 0x93, 0x48, 0xA4, 0x9C, 0x33, 0x07, 0xD0, + 0x95, 0x52, 0x4A, 0x61, 0x55, 0x01, 0x80, 0xA0, 0x4C, 0xE5, 0xC0, 0xF2, 0x04, 0x40, 0x41, 0x54, + 0x10, 0xA5, 0x40, 0x12, 0xC4, 0x8B, 0xFF, 0xA7, 0xF9, 0x6E, 0x5C, 0xC2, 0xF0, 0x70, 0x1D, 0x1E, + 0xCA, 0x53, 0xF9, 0x5A, 0x8D, 0x2F, 0x87, 0x9A, 0xFB, 0xD5, 0x59, 0xF2, 0x91, 0xBB, 0xC1, 0xB5, + 0xE4, 0xD1, 0xC3, 0xFE, 0xBF, 0x3C, 0x5A, 0x0A, 0x21, 0x84, 0xFC, 0x1F, 0xFE, 0xC7, 0xFF, 0xE9, + 0x58, 0x7A, 0xE0, 0x49, 0x1B, 0x25, 0x9E, 0x80, 0xEE, 0xD3, 0x9F, 0x00, 0x47, 0x66, 0x06, 0xFF, + 0xB7, 0x10, 0x13, 0x7E, 0xCC, 0x9D, 0x09, 0x1C, 0xC2, 0x8B, 0xC4, 0x01, 0x8C, 0x07, 0x00, 0x79, + 0xC8, 0x3B, 0x61, 0xDE, 0xBF, 0x94, 0x92, 0x3D, 0x42, 0xAD, 0xB5, 0x7E, 0x0C, 0xBB, 0x7D, 0x57, + 0x72, 0x46, 0x9C, 0x0E, 0x61, 0x89, 0x28, 0x51, 0x1E, 0x18, 0x44, 0x02, 0x01, 0x39, 0xCC, 0x86, + 0xF5, 0x10, 0x88, 0xA8, 0x8D, 0xD2, 0x1A, 0x3F, 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xFB, 0xBA, 0xF3, + 0xE5, 0xED, 0xCD, 0xEA, 0xDD, 0xCD, 0xFD, 0xBE, 0xEB, 0x17, 0xCB, 0x65, 0xD3, 0x34, 0x6F, 0xAF, + 0x6F, 0xD7, 0xEB, 0x6D, 0x49, 0x79, 0xDE, 0x56, 0x56, 0xCB, 0xC5, 0x62, 0xF6, 0xEC, 0xF2, 0x0C, + 0x51, 0xEE, 0xF6, 0xC3, 0x7A, 0xDB, 0xDF, 0xDE, 0x6D, 0x56, 0x9B, 0x7D, 0x88, 0x49, 0x6B, 0xC9, + 0xBD, 0x6C, 0xD7, 0xF5, 0x31, 0x3E, 0x4A, 0xB2, 0x63, 0xCA, 0x24, 0x80, 0x8A, 0x48, 0x31, 0x87, + 0x18, 0x47, 0x1F, 0x46, 0x1F, 0x73, 0x21, 0xF6, 0x60, 0x92, 0x92, 0x7B, 0x05, 0x99, 0x73, 0x6A, + 0x5A, 0x97, 0x4B, 0xD9, 0xEE, 0x7A, 0x29, 0x71, 0xD6, 0xD4, 0x4D, 0x5D, 0x49, 0x29, 0x07, 0x1F, + 0xD8, 0xF9, 0x83, 0xA8, 0x28, 0x25, 0x63, 0xCC, 0x1C, 0x1F, 0x1D, 0x62, 0x6C, 0x2A, 0x57, 0x59, + 0x03, 0xAC, 0x1F, 0x2A, 0x39, 0x67, 0x02, 0xC4, 0x9C, 0x73, 0xCA, 0x49, 0x6B, 0xA5, 0xD5, 0x94, + 0xAF, 0x93, 0x72, 0x1E, 0x43, 0xAC, 0x9D, 0x65, 0x5B, 0x7D, 0xB6, 0xAB, 0x56, 0x0A, 0x8D, 0xD1, + 0xFC, 0x11, 0x66, 0xA2, 0xB6, 0x76, 0xFC, 0x29, 0x9D, 0xCC, 0x1A, 0x63, 0x54, 0x37, 0x8C, 0xD3, + 0x59, 0x07, 0x22, 0xA6, 0x1C, 0x63, 0x02, 0x80, 0xDA, 0xB9, 0x5C, 0x32, 0x15, 0xE6, 0xE6, 0x09, + 0x22, 0x62, 0x43, 0x15, 0xA5, 0x50, 0x2B, 0xC9, 0x50, 0xB1, 0x35, 0x06, 0x04, 0x39, 0x6B, 0xFA, + 0xBE, 0xCF, 0x39, 0x57, 0xD6, 0xA6, 0x94, 0x38, 0x5A, 0xD6, 0x28, 0x85, 0x52, 0x92, 0x20, 0x25, + 0xA5, 0x96, 0xD2, 0x1A, 0x6D, 0x94, 0x74, 0xD6, 0x96, 0x92, 0x11, 0xE1, 0xF2, 0xE2, 0xEC, 0xEC, + 0x64, 0x7E, 0xB2, 0x9C, 0x9F, 0x9D, 0x2E, 0x97, 0x8B, 0xB6, 0xAD, 0x2A, 0xAB, 0x75, 0x5D, 0x39, + 0x6B, 0x94, 0x44, 0xE4, 0x89, 0x75, 0x4A, 0x6F, 0x41, 0xC1, 0x47, 0x19, 0xDF, 0xDB, 0x29, 0x25, + 0x86, 0xF0, 0x58, 0x75, 0x10, 0x62, 0xF4, 0x63, 0xF0, 0x3E, 0x70, 0xF6, 0x1A, 0x95, 0x29, 0x7A, + 0x90, 0x2F, 0xCE, 0x69, 0x76, 0x28, 0x13, 0xF5, 0x29, 0xA5, 0xEC, 0x7D, 0xD8, 0xEC, 0x3A, 0x1F, + 0xE2, 0x6A, 0xBB, 0xBF, 0x7B, 0x58, 0x6F, 0x76, 0xFB, 0xD1, 0x87, 0x9C, 0x0B, 0xE3, 0xAD, 0x6D, + 0x5B, 0x2F, 0x16, 0xF3, 0x61, 0xF0, 0xEB, 0xED, 0x4E, 0x08, 0xA1, 0x94, 0xEC, 0xC7, 0x91, 0x48, + 0x74, 0x5D, 0x1F, 0x53, 0xCA, 0xB9, 0xAC, 0x36, 0x5B, 0x21, 0x88, 0x4D, 0x38, 0xB8, 0xBB, 0x31, + 0x46, 0x87, 0x18, 0xEB, 0xBA, 0xCA, 0xA5, 0xD4, 0x75, 0x75, 0x77, 0xBF, 0x9A, 0xCF, 0xDB, 0xC5, + 0x62, 0xF6, 0xE9, 0x67, 0xAF, 0x66, 0x6D, 0xF3, 0x67, 0x7F, 0xF2, 0xB7, 0xEA, 0xCA, 0x2A, 0xA5, + 0x38, 0x90, 0x8D, 0x84, 0x40, 0x04, 0x6B, 0xED, 0x76, 0xD7, 0x69, 0x25, 0xAB, 0xCA, 0x4D, 0x10, + 0x89, 0x10, 0x4A, 0x49, 0x14, 0x82, 0x19, 0xFF, 0x5F, 0xBB, 0x83, 0xF8, 0x53, 0x7B, 0xAC, 0x65, + 0x87, 0x81, 0x88, 0x0F, 0xB9, 0x10, 0x53, 0x4A, 0xF9, 0xF9, 0xE5, 0xF9, 0x72, 0x31, 0x3B, 0x3F, + 0x5B, 0xD6, 0x95, 0x63, 0x2F, 0x39, 0xFE, 0x06, 0xEE, 0xA1, 0xA4, 0x94, 0x39, 0xE5, 0xE0, 0x03, + 0xCB, 0xBC, 0x84, 0x20, 0x46, 0x4E, 0xB4, 0xD1, 0x6C, 0xAE, 0x85, 0x80, 0x85, 0x88, 0x4F, 0xA0, + 0x18, 0x63, 0xCE, 0x85, 0xCB, 0x59, 0x88, 0x31, 0xA6, 0x04, 0x20, 0x4A, 0x21, 0x1F, 0xA3, 0x20, + 0x06, 0x6A, 0x48, 0x69, 0xD9, 0x54, 0xD6, 0x68, 0x75, 0xBC, 0xAF, 0x59, 0xD3, 0xC2, 0x15, 0x21, + 0xA5, 0x34, 0xFA, 0x49, 0xDB, 0x3B, 0x19, 0x06, 0xC8, 0x29, 0xD7, 0x95, 0x6D, 0x23, 0x00, 0x20, + 0x67, 0xF6, 0x07, 0xA4, 0x47, 0x68, 0x88, 0xFB, 0x98, 0xC7, 0x60, 0x0D, 0xE2, 0xDF, 0xFC, 0xF0, + 0x85, 0x52, 0x4A, 0x25, 0x51, 0x1F, 0x4D, 0x0A, 0x0E, 0xF0, 0x68, 0x4E, 0x25, 0x4F, 0xD9, 0x69, + 0xD3, 0xCF, 0x1D, 0xA7, 0xC0, 0x63, 0xD1, 0x62, 0xEA, 0xD8, 0x63, 0x03, 0xF6, 0x58, 0xC8, 0xE0, + 0x48, 0xC8, 0x20, 0x22, 0x05, 0x07, 0x44, 0x0A, 0xE0, 0xF1, 0x09, 0xC4, 0x57, 0xDB, 0xB1, 0xE9, + 0xDA, 0x12, 0xC7, 0x42, 0xF5, 0x08, 0x87, 0x01, 0xD0, 0x93, 0x6F, 0x9B, 0x8A, 0xE1, 0xD3, 0xA5, + 0x24, 0x01, 0x4B, 0x97, 0xA4, 0x94, 0x53, 0x21, 0xCB, 0x39, 0x4B, 0x04, 0x41, 0x74, 0xF5, 0xF6, + 0xEE, 0xE1, 0x61, 0x8B, 0x08, 0x4D, 0x6D, 0xCF, 0xCF, 0x16, 0xA7, 0xA7, 0x4B, 0xEB, 0x2C, 0x1C, + 0x5C, 0xAD, 0xB5, 0x06, 0x7D, 0xF8, 0x4D, 0x72, 0x2E, 0x56, 0x83, 0xD2, 0xEA, 0xEA, 0xDD, 0xED, + 0xE7, 0x5F, 0x5C, 0x5D, 0xDD, 0xED, 0x3F, 0x79, 0x75, 0x33, 0xF8, 0x90, 0x49, 0x34, 0x75, 0x3D, + 0x84, 0xB8, 0xD9, 0xED, 0x86, 0x71, 0xAC, 0x9C, 0x5D, 0xAD, 0xD6, 0xBD, 0x96, 0x20, 0xCE, 0x96, + 0x8B, 0xC5, 0xC9, 0x72, 0xD1, 0x0F, 0xBE, 0xEB, 0x86, 0xCF, 0xBF, 0xBC, 0xF9, 0xFC, 0xD5, 0x55, + 0x5D, 0x55, 0x8B, 0xF9, 0x6C, 0xB5, 0x5E, 0xAD, 0xDB, 0x5A, 0x02, 0x48, 0x84, 0x93, 0xD3, 0x05, + 0xBB, 0xF0, 0x16, 0x22, 0xC6, 0x89, 0x15, 0x41, 0x16, 0x25, 0x97, 0xCC, 0x81, 0x5D, 0x63, 0x08, + 0x39, 0xE6, 0x9C, 0x4B, 0x5D, 0x39, 0x00, 0x0C, 0x31, 0xDF, 0xEE, 0xEF, 0x53, 0x4A, 0x61, 0x1F, + 0x73, 0xE2, 0xD4, 0x4E, 0x77, 0x7E, 0xBA, 0x8C, 0x29, 0xAF, 0x37, 0xDB, 0xDA, 0x59, 0xAB, 0x5B, + 0xBE, 0x56, 0x42, 0x88, 0xDE, 0x87, 0xDA, 0xB9, 0x92, 0xF3, 0xAC, 0xA9, 0x25, 0x42, 0x8C, 0x91, + 0x3F, 0xC5, 0x98, 0xB2, 0x44, 0x29, 0x88, 0x4A, 0x2E, 0x7C, 0x38, 0x20, 0xA0, 0x35, 0x96, 0x25, + 0xEA, 0x56, 0x6B, 0x25, 0x55, 0xCE, 0x89, 0x49, 0x06, 0x52, 0xA2, 0x44, 0x74, 0x86, 0xED, 0x61, + 0x33, 0x22, 0x6E, 0x76, 0x1D, 0xE7, 0x2D, 0xC7, 0x94, 0x78, 0x33, 0x3C, 0xFA, 0x60, 0x8C, 0xE1, + 0x6B, 0x8B, 0x4F, 0xDD, 0x89, 0xF7, 0x2F, 0x91, 0x59, 0x9D, 0x65, 0x72, 0x2E, 0x21, 0x04, 0xA8, + 0x2B, 0x27, 0x04, 0x79, 0xEF, 0x2B, 0xEB, 0xAE, 0xEF, 0x1F, 0x10, 0xA1, 0xA9, 0xA7, 0xA4, 0xB5, + 0xFD, 0x30, 0x02, 0x40, 0x53, 0x59, 0xA1, 0x00, 0x11, 0x72, 0xC8, 0xC4, 0x2D, 0x12, 0xD1, 0xAC, + 0x69, 0x51, 0x4A, 0x89, 0xB8, 0x98, 0xCF, 0xBE, 0xF1, 0xE2, 0xD2, 0x55, 0x66, 0x3E, 0xAF, 0x67, + 0x4D, 0x25, 0x51, 0x2A, 0x25, 0x51, 0x42, 0x4E, 0x44, 0x24, 0x8C, 0x31, 0xA5, 0xE4, 0x7E, 0x08, + 0x29, 0x27, 0x29, 0x65, 0x26, 0x12, 0x25, 0xC9, 0x88, 0x52, 0x4A, 0xA5, 0x55, 0xED, 0x5C, 0x3F, + 0xFA, 0xE0, 0x23, 0x37, 0x2C, 0x39, 0x95, 0x14, 0xD3, 0xFD, 0x6A, 0x5B, 0x39, 0xDB, 0xCE, 0x1A, + 0xA3, 0x54, 0x29, 0x45, 0x00, 0x2F, 0xC8, 0x80, 0x8B, 0x17, 0x08, 0xC1, 0x91, 0x05, 0xEC, 0x6D, + 0x97, 0x73, 0xD9, 0xEF, 0xFB, 0xDD, 0xBE, 0x1F, 0x46, 0xEF, 0x9C, 0xE3, 0x51, 0x28, 0xC4, 0x20, + 0x04, 0x2D, 0x97, 0x73, 0x00, 0xD1, 0x2F, 0x5A, 0x57, 0xBB, 0xD7, 0xAF, 0xAF, 0x76, 0xFB, 0x2E, + 0x97, 0xE9, 0x7D, 0xE8, 0xFA, 0x21, 0x9A, 0x04, 0x20, 0x3E, 0xFD, 0xE2, 0x8D, 0x94, 0xB8, 0x98, + 0xB5, 0x31, 0x24, 0xE3, 0x0C, 0x02, 0xCC, 0xDA, 0xE6, 0xED, 0xBB, 0x9B, 0x6F, 0x7F, 0xE7, 0x43, + 0x96, 0x91, 0xED, 0xF6, 0xFB, 0x6F, 0xBE, 0xFF, 0xF2, 0x4F, 0xFF, 0xE8, 0x07, 0xFB, 0xFD, 0xFE, + 0x77, 0xBF, 0xFB, 0xEC, 0x7B, 0xDF, 0xFB, 0xD6, 0xCD, 0xCD, 0xFD, 0x38, 0x8E, 0x31, 0xC4, 0xE5, + 0x72, 0x5E, 0x4A, 0x71, 0xD6, 0x2C, 0x66, 0x0D, 0x77, 0x43, 0x4C, 0xB8, 0x61, 0x20, 0x1D, 0x10, + 0xAC, 0xD5, 0xA5, 0x1C, 0x97, 0x89, 0xC0, 0xDB, 0x92, 0x52, 0x26, 0xA2, 0x35, 0x93, 0xF2, 0x8F, + 0x15, 0x8D, 0x1B, 0x52, 0x63, 0xF4, 0xB7, 0x3F, 0xFC, 0x46, 0x55, 0x59, 0x5E, 0xB5, 0xA5, 0x9C, + 0x01, 0x80, 0x68, 0x62, 0x6F, 0xF1, 0x77, 0xA6, 0x98, 0x42, 0x0C, 0x39, 0x4D, 0x0B, 0x99, 0x71, + 0xF4, 0x8C, 0x6F, 0x96, 0x44, 0x39, 0x65, 0x29, 0x11, 0x15, 0x08, 0x02, 0xAD, 0x15, 0x63, 0x85, + 0x88, 0xE8, 0xBD, 0x17, 0x42, 0xA4, 0x9C, 0x52, 0xCE, 0x54, 0x38, 0x9E, 0x1D, 0x53, 0x21, 0x40, + 0x74, 0x6C, 0x07, 0x8A, 0x70, 0xEC, 0x98, 0x0E, 0x45, 0x93, 0x4A, 0xA1, 0x94, 0x52, 0x4E, 0x45, + 0x94, 0xC2, 0x5D, 0x03, 0x11, 0x01, 0xA2, 0x94, 0x68, 0x94, 0x94, 0x12, 0x33, 0xB3, 0xC8, 0x00, + 0x8B, 0xA4, 0x42, 0x65, 0x1A, 0x09, 0xA7, 0x82, 0x0B, 0x84, 0x53, 0x23, 0xF6, 0xB5, 0x61, 0x0E, + 0x0E, 0xD3, 0x80, 0xE4, 0x7F, 0x43, 0x40, 0xC4, 0x94, 0x4A, 0x29, 0x59, 0xB0, 0xE1, 0x2D, 0x28, + 0x1F, 0xC2, 0xA1, 0xBA, 0x89, 0x23, 0x94, 0xC6, 0xE5, 0xF0, 0x38, 0x68, 0xFE, 0x67, 0x85, 0x8C, + 0xBF, 0xE7, 0x71, 0x6F, 0xAB, 0x10, 0x8E, 0xEB, 0xA3, 0x47, 0x5C, 0xEB, 0x50, 0x93, 0x04, 0x08, + 0xA0, 0x63, 0x0A, 0xDD, 0x93, 0xD5, 0xE1, 0xB1, 0x76, 0x3D, 0x3D, 0x6A, 0x0E, 0x3C, 0xD8, 0xAF, + 0xB4, 0x8F, 0x88, 0x72, 0xB7, 0xEF, 0x73, 0xCA, 0xC6, 0xEA, 0xD9, 0xAC, 0x2E, 0x39, 0xDC, 0xDC, + 0xDC, 0x2B, 0xA5, 0xC7, 0x61, 0xF4, 0x31, 0xF3, 0xC7, 0x9C, 0x8B, 0x58, 0x6D, 0xFA, 0x5C, 0x68, + 0x36, 0xAB, 0xB5, 0xD6, 0xCE, 0x18, 0x6D, 0x4C, 0x29, 0x19, 0xC4, 0x04, 0x2B, 0x56, 0xCE, 0x3E, + 0xAC, 0xB7, 0x9F, 0x7C, 0xFC, 0xE9, 0x2F, 0x7F, 0xF3, 0xFA, 0x66, 0x33, 0xEC, 0xBA, 0x51, 0x49, + 0x79, 0x79, 0xF9, 0x6C, 0xF4, 0x81, 0xA8, 0xD4, 0x75, 0x7D, 0xB2, 0x98, 0xBD, 0x7D, 0x7B, 0x1D, + 0xC6, 0xB1, 0xAD, 0xAA, 0x59, 0xDB, 0x66, 0xC2, 0x87, 0xCD, 0x3E, 0xA4, 0x3C, 0x0C, 0xE3, 0xA7, + 0x9F, 0xBD, 0x7E, 0x7D, 0x75, 0xB3, 0xEF, 0xFA, 0xC5, 0xAC, 0xCD, 0x39, 0xB5, 0x6D, 0xBD, 0xDF, + 0x75, 0x29, 0xC5, 0x3F, 0xFC, 0xC1, 0x77, 0x88, 0xC8, 0x7B, 0xAF, 0xB5, 0x66, 0xB9, 0xB8, 0x56, + 0x2A, 0xC6, 0x44, 0x82, 0x52, 0x4E, 0xC3, 0x18, 0xB6, 0xBB, 0xCE, 0xFB, 0xA8, 0x94, 0x2A, 0xB9, + 0xC4, 0x94, 0x36, 0xDB, 0xDD, 0xDD, 0xDD, 0x6A, 0xD7, 0xF5, 0x29, 0xE5, 0x93, 0xE5, 0xFC, 0x83, + 0xEF, 0xBC, 0xAC, 0x2A, 0x57, 0x57, 0x6E, 0x3E, 0x6F, 0xFA, 0x7E, 0xD8, 0xED, 0x7B, 0x3E, 0x0C, + 0x47, 0x1F, 0x46, 0x1F, 0xBC, 0x0F, 0xDF, 0xFD, 0xF6, 0x37, 0xC7, 0x61, 0x58, 0xAD, 0x36, 0xFB, + 0xAE, 0x0F, 0x31, 0x21, 0x1C, 0x50, 0x21, 0x10, 0x3E, 0x78, 0xE7, 0x2C, 0x9F, 0x0A, 0x13, 0x07, + 0x42, 0x10, 0xEF, 0x19, 0x23, 0x07, 0xF0, 0xC8, 0x69, 0x8B, 0x4A, 0x00, 0x80, 0xC0, 0xFA, 0x3B, + 0x44, 0xE4, 0x66, 0x8D, 0x04, 0xF5, 0xA3, 0x3F, 0xD4, 0x44, 0xE4, 0x19, 0x93, 0x90, 0xDD, 0xEF, + 0xA8, 0xB2, 0x16, 0x00, 0xB4, 0x52, 0x7C, 0x20, 0x83, 0x10, 0x45, 0x10, 0x77, 0x93, 0x39, 0x67, + 0xEF, 0x43, 0x11, 0xA4, 0x50, 0x32, 0x3A, 0x3D, 0x6B, 0xEB, 0x94, 0x92, 0xB3, 0xA6, 0xF7, 0x41, + 0x69, 0xD5, 0x38, 0x6B, 0x8D, 0x61, 0xD0, 0x42, 0x6B, 0xCD, 0xB7, 0x53, 0x53, 0x39, 0x02, 0x31, + 0xFA, 0xF1, 0xEC, 0x64, 0xF9, 0xEC, 0xD9, 0xD9, 0xF9, 0xF9, 0x72, 0xB1, 0x68, 0x8C, 0x54, 0x88, + 0x02, 0x25, 0x32, 0xD5, 0x0E, 0x90, 0x10, 0x10, 0x89, 0xFC, 0x98, 0x00, 0x68, 0xBA, 0x7B, 0x89, + 0x63, 0xD9, 0x89, 0x6F, 0x9B, 0x94, 0xF3, 0x76, 0xBB, 0x0F, 0x29, 0xC9, 0x03, 0x68, 0xED, 0x43, + 0xDC, 0x77, 0x3D, 0x11, 0x19, 0x33, 0xD1, 0x44, 0x00, 0x40, 0x40, 0xCC, 0xB9, 0x10, 0x95, 0x9C, + 0x0B, 0xE7, 0x46, 0xE3, 0x21, 0x3E, 0x34, 0x97, 0x5C, 0xA6, 0x2D, 0x27, 0x29, 0xA5, 0x72, 0x4E, + 0x1C, 0xA1, 0x06, 0x00, 0x9F, 0x7F, 0xF1, 0xE5, 0x62, 0x31, 0xAB, 0x2A, 0x3B, 0x9B, 0x35, 0xE3, + 0x38, 0xBE, 0x7D, 0x77, 0xC3, 0xCC, 0x7E, 0xAD, 0x95, 0x0F, 0x7D, 0x37, 0x8C, 0x4D, 0xDD, 0xB4, + 0x4D, 0xF5, 0xEB, 0xDF, 0x7E, 0xFE, 0x9D, 0x0F, 0xDF, 0x3B, 0x3F, 0x3B, 0x01, 0x00, 0x57, 0x39, + 0xA5, 0x25, 0xCA, 0x67, 0xFB, 0xFD, 0x7E, 0x36, 0x6B, 0xAD, 0x96, 0x7A, 0x31, 0x5B, 0xAF, 0x36, + 0xDF, 0xFE, 0xF6, 0x07, 0x9B, 0xF5, 0xF6, 0xE1, 0x61, 0x7D, 0x7D, 0x7D, 0xBB, 0x5C, 0xCE, 0xF9, + 0x59, 0x52, 0x8C, 0xC6, 0x9A, 0xCD, 0x76, 0x7B, 0x7E, 0x7E, 0x2A, 0x01, 0xB2, 0x10, 0xC0, 0x46, + 0x95, 0x40, 0x39, 0x97, 0x31, 0x44, 0x8E, 0xDD, 0x62, 0x4E, 0xB2, 0x10, 0x13, 0xFB, 0x1F, 0x11, + 0x63, 0x4C, 0x30, 0xE9, 0xBA, 0x94, 0xD6, 0x00, 0x13, 0xBF, 0xA7, 0x20, 0xE2, 0x72, 0x39, 0x03, + 0x01, 0x6C, 0xFA, 0xCA, 0x66, 0xA2, 0x21, 0x44, 0xC6, 0x10, 0xF9, 0x45, 0xA5, 0x94, 0x48, 0x90, + 0xD6, 0x3A, 0xF8, 0x41, 0x4A, 0xCD, 0x5C, 0x93, 0xA9, 0x07, 0x94, 0xC2, 0x4A, 0xA3, 0xF4, 0x94, + 0x65, 0xEB, 0xC7, 0xB0, 0xDD, 0x6E, 0x05, 0x73, 0xB0, 0x4B, 0xCE, 0xA5, 0xE4, 0x54, 0x48, 0x88, + 0xE0, 0x47, 0x29, 0x51, 0x2A, 0x94, 0x28, 0x6B, 0x6B, 0x58, 0x3D, 0x9E, 0x73, 0x66, 0xE9, 0xED, + 0xB1, 0x34, 0xF0, 0xF5, 0x1F, 0x53, 0x3E, 0x12, 0x6E, 0x78, 0x79, 0x80, 0x70, 0x8C, 0x62, 0x93, + 0x0E, 0x39, 0xD9, 0x9A, 0x72, 0x2E, 0xBC, 0x64, 0xCE, 0x47, 0xBA, 0x3C, 0x30, 0xAB, 0xEC, 0x31, + 0xEB, 0xE3, 0x58, 0x22, 0x73, 0x3E, 0x02, 0x50, 0xC4, 0xD2, 0x1E, 0x21, 0x48, 0x4A, 0x00, 0x90, + 0x44, 0x84, 0x48, 0x14, 0x59, 0x69, 0xF7, 0x18, 0xCA, 0x45, 0x93, 0x82, 0xE2, 0xB1, 0xA5, 0x3D, + 0xCA, 0x16, 0x9F, 0xF4, 0x62, 0xE2, 0xE8, 0xA8, 0x31, 0x15, 0x32, 0xF6, 0xA5, 0x79, 0xBA, 0x92, + 0x9D, 0xCA, 0x16, 0x4C, 0x0B, 0x72, 0xF8, 0x2F, 0xD5, 0xAF, 0xAF, 0x61, 0xFC, 0x38, 0xB5, 0x66, + 0xD3, 0xCF, 0x73, 0xE9, 0xE3, 0xB6, 0x72, 0x1C, 0xFD, 0xCD, 0xDD, 0x46, 0x29, 0xA5, 0x7D, 0xBA, + 0x5F, 0xED, 0xAD, 0x56, 0x25, 0xC3, 0x30, 0x0E, 0x39, 0x97, 0x7D, 0x3F, 0xA6, 0x94, 0x51, 0x88, + 0xC1, 0xC7, 0xA6, 0x76, 0xC6, 0x68, 0x01, 0x03, 0x95, 0x0E, 0x88, 0x9E, 0xBF, 0xB8, 0x68, 0x67, + 0xB3, 0x18, 0xA2, 0xD3, 0x2A, 0xC6, 0xF8, 0x37, 0xBF, 0xFC, 0xE4, 0xE3, 0x4F, 0xDE, 0xAC, 0xB6, + 0xE3, 0xF5, 0xC3, 0x46, 0x1B, 0x5B, 0xD5, 0xD5, 0x72, 0x31, 0xCF, 0xB9, 0x84, 0x18, 0x2B, 0xE7, + 0x4E, 0xE6, 0x7A, 0xF5, 0xB0, 0xA6, 0x52, 0x9A, 0xBA, 0x46, 0xC4, 0xA6, 0x69, 0x56, 0x9B, 0xED, + 0xEB, 0x37, 0x5F, 0x4A, 0x94, 0x39, 0x97, 0x9B, 0xBB, 0x15, 0x5B, 0xA7, 0x8F, 0xE3, 0xC8, 0xB6, + 0x70, 0x5F, 0xBC, 0x7E, 0x73, 0xB2, 0x98, 0x1F, 0x48, 0x7F, 0x88, 0x87, 0x76, 0x29, 0xA4, 0x54, + 0x88, 0x72, 0x2A, 0x21, 0xA6, 0x74, 0x90, 0xB9, 0x0C, 0xA3, 0xE7, 0x17, 0xAC, 0xB5, 0x56, 0x5A, + 0x9D, 0x9D, 0x2E, 0x97, 0xB3, 0xF6, 0xD9, 0xB3, 0xF3, 0xDD, 0xBE, 0x7B, 0x78, 0x58, 0xDD, 0xE4, + 0xCC, 0x26, 0xBA, 0x5D, 0x3F, 0xF4, 0xE3, 0x08, 0x02, 0x9C, 0xB3, 0x8C, 0xCA, 0xEF, 0xF7, 0x5D, + 0xB7, 0xDF, 0x4B, 0x29, 0x59, 0xB1, 0xC8, 0xCA, 0x41, 0x25, 0x65, 0x88, 0xF1, 0x58, 0x3A, 0x61, + 0x02, 0x44, 0x33, 0x5B, 0xA7, 0x1F, 0x97, 0xD0, 0x25, 0x53, 0x8C, 0x11, 0x10, 0x73, 0x4C, 0x23, + 0x00, 0x07, 0x61, 0xE4, 0x9C, 0x8D, 0xD6, 0x46, 0x6B, 0x1F, 0x83, 0xB3, 0x06, 0xA5, 0xC4, 0x42, + 0x5A, 0x21, 0x5F, 0x04, 0xA5, 0x14, 0x2D, 0xE5, 0xE0, 0xBD, 0x91, 0x52, 0x08, 0x42, 0x10, 0x5A, + 0x4A, 0x6E, 0xFE, 0x9D, 0x35, 0x4C, 0x02, 0xD0, 0x4A, 0x8D, 0x3E, 0xF8, 0x18, 0x1B, 0xE7, 0x86, + 0xE2, 0xAD, 0xD1, 0x31, 0xA5, 0x61, 0x0C, 0xE0, 0x44, 0x4A, 0x49, 0x21, 0x38, 0x6B, 0x38, 0xE0, + 0x56, 0x49, 0x99, 0x92, 0x2E, 0x54, 0x8C, 0x92, 0x85, 0x28, 0x84, 0x50, 0x39, 0x7B, 0x71, 0x7E, + 0x72, 0x71, 0xB6, 0xA8, 0x2A, 0xA3, 0x18, 0x5A, 0x98, 0x6C, 0xA0, 0x1F, 0x31, 0xA0, 0x9C, 0x13, + 0x4A, 0xE4, 0x05, 0x45, 0x26, 0x86, 0x44, 0x28, 0x13, 0x89, 0x89, 0x7E, 0xCC, 0x0B, 0x3E, 0x8E, + 0xA3, 0xA2, 0x18, 0xD3, 0x30, 0x7A, 0x89, 0x28, 0x15, 0xE6, 0x5C, 0x62, 0x88, 0x39, 0xE5, 0x10, + 0x13, 0x11, 0x6D, 0xB6, 0xBB, 0xAE, 0x1F, 0x53, 0xCA, 0x8B, 0x45, 0x5B, 0x57, 0x4E, 0x49, 0xA9, + 0x94, 0xEC, 0xFB, 0xF1, 0xFE, 0x61, 0x73, 0x73, 0xBB, 0x1A, 0xBD, 0x4F, 0x39, 0xDD, 0xDF, 0x3F, + 0x30, 0x54, 0xA4, 0x94, 0xF2, 0x21, 0xFA, 0x10, 0xB7, 0xBB, 0xFD, 0x7C, 0xD6, 0x02, 0x40, 0x5D, + 0x57, 0x3F, 0xFC, 0xA3, 0x1F, 0xBC, 0x7E, 0xFD, 0xF6, 0xFE, 0xFE, 0xA1, 0xEB, 0x87, 0x42, 0xE4, + 0x43, 0xF4, 0x61, 0x0D, 0x42, 0xC4, 0x10, 0x7F, 0xF5, 0xDB, 0xCF, 0x5E, 0x3C, 0xDB, 0xFD, 0xED, + 0x1F, 0x7E, 0x64, 0xAD, 0x36, 0x46, 0xCF, 0x67, 0xED, 0x30, 0x8E, 0x4A, 0x29, 0xAD, 0xE4, 0x38, + 0xC6, 0x61, 0x1C, 0xC7, 0x7E, 0x38, 0x3D, 0x99, 0x2B, 0x89, 0xDD, 0xBE, 0x73, 0x5A, 0xCD, 0x9A, + 0x5A, 0x49, 0xB9, 0xEF, 0xFA, 0x13, 0xA3, 0x79, 0x6D, 0x3D, 0x6F, 0x6B, 0x09, 0x53, 0x94, 0x19, + 0x0A, 0x21, 0x10, 0x2A, 0x6B, 0x4A, 0x61, 0x17, 0x99, 0x3C, 0xFA, 0x30, 0xA1, 0x7B, 0x82, 0xA4, + 0x54, 0x3C, 0x2A, 0x32, 0xEA, 0x24, 0x11, 0x98, 0xEC, 0x6D, 0x0C, 0xC7, 0x0C, 0x8B, 0x5C, 0x4A, + 0x8A, 0x69, 0xBF, 0xEB, 0x8C, 0xD5, 0x06, 0x55, 0x4A, 0x49, 0x29, 0xC9, 0x5E, 0x66, 0x47, 0x07, + 0xC0, 0x83, 0xC5, 0x6B, 0x1A, 0x06, 0x0F, 0x00, 0xCE, 0x59, 0xCB, 0xEA, 0x54, 0x60, 0x21, 0x70, + 0x8E, 0x21, 0x5F, 0x5D, 0x5D, 0xA7, 0x9C, 0x6B, 0xE7, 0x0A, 0x95, 0x18, 0x53, 0xDF, 0x8F, 0xC7, + 0x4E, 0x50, 0x29, 0x9B, 0x52, 0x46, 0x05, 0x5A, 0xA2, 0xB3, 0x9A, 0x3D, 0x9A, 0x52, 0x2E, 0xCC, + 0x22, 0xA0, 0x3C, 0x35, 0x95, 0x39, 0x67, 0x10, 0x42, 0x4A, 0x40, 0x40, 0x63, 0x94, 0x31, 0x8F, + 0x36, 0xCE, 0x52, 0x4A, 0x00, 0x7C, 0x42, 0xB6, 0x98, 0x96, 0x8C, 0x78, 0x40, 0xAF, 0x78, 0xDF, + 0x40, 0x07, 0x2E, 0x9B, 0xE0, 0xD2, 0x76, 0x58, 0x2F, 0xF0, 0xED, 0xC3, 0xF9, 0x8C, 0xF0, 0x28, + 0x30, 0x10, 0x44, 0xC0, 0x4F, 0x6A, 0xB4, 0xE6, 0x47, 0xCD, 0xB9, 0x14, 0x0E, 0x18, 0x04, 0x36, + 0xAD, 0x98, 0xF0, 0x7A, 0x64, 0x0C, 0xF5, 0x91, 0x59, 0xF6, 0x95, 0x2A, 0xC6, 0x7F, 0x4E, 0x32, + 0xD1, 0xA7, 0xFF, 0xFA, 0xB4, 0xA1, 0x3A, 0xF4, 0x5B, 0x5F, 0xEF, 0xC2, 0xC4, 0x13, 0x12, 0x05, + 0x08, 0xE2, 0xB6, 0xED, 0xE9, 0x28, 0x0A, 0x00, 0xDE, 0x47, 0xA2, 0x78, 0xF5, 0xEE, 0xFE, 0xDD, + 0xCD, 0xC3, 0x62, 0xDE, 0x7A, 0x1F, 0x72, 0xCA, 0x52, 0xE1, 0x37, 0xDE, 0xBB, 0xCC, 0x5E, 0x0C, + 0x3E, 0x22, 0xCA, 0x7E, 0xE8, 0x11, 0xB1, 0x02, 0x8C, 0xA9, 0xEC, 0xF7, 0x03, 0x08, 0xD0, 0x46, + 0x75, 0xFD, 0xF0, 0xD9, 0x67, 0x5F, 0x9E, 0x9E, 0xCE, 0x3F, 0xF8, 0xE0, 0xBD, 0xAB, 0x77, 0x77, + 0xFF, 0xE1, 0xFF, 0xFB, 0xF5, 0xEB, 0xB7, 0xF7, 0x21, 0x96, 0xBB, 0xF5, 0xB6, 0xA9, 0x6B, 0x76, + 0x94, 0x16, 0x02, 0x4A, 0x2E, 0xEB, 0xF5, 0xE6, 0x36, 0xDE, 0x0E, 0xDD, 0x60, 0x8C, 0xF6, 0x21, + 0xE6, 0x94, 0x2E, 0xCE, 0x4F, 0xFF, 0xFA, 0x3F, 0xFD, 0x6C, 0xB3, 0xD9, 0x4A, 0x29, 0x9D, 0xB5, + 0xAC, 0x31, 0xCA, 0xE3, 0x18, 0x43, 0xA9, 0xE7, 0x6D, 0xDB, 0x36, 0x54, 0xCA, 0xF3, 0xCB, 0x8B, + 0xCB, 0xCB, 0xD3, 0x98, 0x92, 0xCE, 0xBA, 0xAE, 0x2B, 0x22, 0x4A, 0x31, 0x17, 0x11, 0x51, 0xC9, + 0x92, 0xC5, 0xE8, 0x7D, 0x4C, 0xB9, 0x94, 0x62, 0xAD, 0x01, 0xC4, 0x7D, 0x37, 0x28, 0xA5, 0x86, + 0x71, 0xDC, 0x6E, 0x36, 0x46, 0x4B, 0x00, 0xE8, 0xFA, 0xFE, 0x77, 0xBF, 0xFB, 0x6C, 0xB5, 0xD9, + 0x71, 0xF4, 0x06, 0x11, 0x71, 0xC3, 0x55, 0xD7, 0x95, 0x10, 0x6C, 0x42, 0x99, 0xA5, 0x94, 0x77, + 0xF7, 0x0F, 0x6D, 0x5D, 0x31, 0xD0, 0x90, 0x12, 0xC5, 0x94, 0x46, 0x1F, 0xD8, 0x7A, 0x8C, 0xAB, + 0x95, 0xB3, 0x16, 0x00, 0xD8, 0x65, 0x21, 0xE5, 0x1C, 0x73, 0x66, 0xEE, 0x98, 0x96, 0x32, 0x17, + 0x92, 0x12, 0x8D, 0xD6, 0x60, 0x35, 0x8F, 0x30, 0x31, 0x26, 0x29, 0x91, 0xA8, 0x8C, 0xDE, 0x17, + 0x22, 0xAD, 0x75, 0x3F, 0x8C, 0x31, 0x46, 0x21, 0x84, 0x35, 0x1A, 0x04, 0x94, 0x92, 0x25, 0xF2, + 0xF9, 0xCC, 0x4B, 0x06, 0x29, 0x04, 0x85, 0x90, 0x99, 0xB5, 0x20, 0xA5, 0x34, 0x46, 0x1B, 0xAD, + 0x52, 0x2E, 0x08, 0x18, 0x52, 0x72, 0x56, 0x6B, 0x85, 0x5D, 0x3F, 0xFA, 0x90, 0x4A, 0x2E, 0x00, + 0xA2, 0xAD, 0xAB, 0x52, 0x4A, 0x4C, 0xD9, 0x68, 0x4D, 0xEC, 0xE5, 0x6F, 0xAC, 0x52, 0x12, 0x84, + 0x28, 0x85, 0xE6, 0xB3, 0x66, 0x39, 0x6F, 0x95, 0x62, 0x7E, 0x00, 0xA0, 0x9C, 0xC8, 0x77, 0xD3, + 0xC0, 0x00, 0x4C, 0xF5, 0x42, 0x63, 0x74, 0x10, 0x02, 0x62, 0x52, 0x20, 0x32, 0x11, 0xA7, 0xFD, + 0x92, 0x28, 0x25, 0x11, 0x11, 0x69, 0xA3, 0x42, 0x08, 0x2C, 0xDD, 0x4D, 0x69, 0xF2, 0x05, 0xD3, + 0x5A, 0xC5, 0x94, 0xBC, 0x0F, 0x5C, 0x16, 0xBB, 0x7E, 0x78, 0x58, 0x6D, 0x87, 0xD1, 0x4B, 0x89, + 0x02, 0x05, 0x8F, 0x93, 0x29, 0x27, 0x22, 0xEA, 0x3B, 0xDF, 0x0F, 0x03, 0x8F, 0x69, 0xB9, 0x64, + 0x0E, 0x91, 0xCE, 0xB9, 0x74, 0x5D, 0x77, 0x1C, 0xC4, 0xAC, 0x35, 0xDE, 0x87, 0x71, 0xF4, 0x17, + 0xE7, 0x27, 0x55, 0x65, 0xA5, 0xC2, 0xEB, 0x9B, 0x7B, 0x63, 0xCC, 0x6A, 0xBD, 0xED, 0xBA, 0x9E, + 0x6A, 0x5B, 0x55, 0xF6, 0xF7, 0x9F, 0xBF, 0x19, 0x7C, 0xF8, 0x6F, 0xFE, 0xC5, 0x5F, 0x54, 0xD6, + 0xAE, 0xD6, 0xDB, 0xD3, 0xE5, 0x22, 0xE5, 0xEC, 0x7D, 0xC8, 0x39, 0x39, 0xA3, 0x4B, 0xC9, 0x80, + 0xC2, 0x58, 0x5D, 0x72, 0xEE, 0xF6, 0xFD, 0xF2, 0x64, 0x51, 0x3B, 0x8B, 0x00, 0xC3, 0x30, 0x2E, + 0x96, 0x0B, 0x2E, 0x31, 0x3C, 0xA1, 0x4D, 0x37, 0x0E, 0x00, 0xF2, 0xAE, 0x57, 0x29, 0x89, 0x58, + 0x59, 0xC3, 0xC6, 0xD0, 0x0C, 0x81, 0xE5, 0x2C, 0xB4, 0x52, 0xA6, 0x72, 0x4A, 0x49, 0x00, 0x61, + 0xB4, 0x14, 0x02, 0x19, 0x14, 0x8A, 0x29, 0x0D, 0xA3, 0x4F, 0x89, 0x2D, 0xAD, 0x8A, 0xA7, 0x38, + 0x9F, 0x35, 0x52, 0xCA, 0x5C, 0x0A, 0xC3, 0xF3, 0x44, 0x14, 0x63, 0x8C, 0x31, 0xD6, 0x4D, 0x1D, + 0x7D, 0x98, 0xCF, 0x5B, 0x76, 0xEC, 0x41, 0xC4, 0xA1, 0x1F, 0x8D, 0x35, 0x39, 0x07, 0xAD, 0xD4, + 0xBB, 0x77, 0x37, 0xBB, 0x5D, 0x67, 0xAD, 0xF5, 0x21, 0xE6, 0x92, 0xBB, 0x6E, 0x30, 0x4A, 0xA7, + 0x94, 0xD8, 0x19, 0x25, 0xC6, 0x4C, 0xA5, 0xA8, 0x89, 0x74, 0xA9, 0x9D, 0x55, 0x1C, 0xE1, 0x8A, + 0x12, 0x0E, 0xDD, 0xED, 0x11, 0xA2, 0x2A, 0x12, 0xA4, 0x31, 0x4A, 0xA9, 0x49, 0x50, 0xC8, 0x9F, + 0xC8, 0xF1, 0x96, 0xA7, 0x23, 0xDB, 0x96, 0x44, 0x4A, 0x85, 0x55, 0x53, 0xC4, 0x5E, 0x52, 0x02, + 0x50, 0x88, 0xC8, 0xA3, 0x25, 0x3D, 0x99, 0xD5, 0x9E, 0x16, 0x16, 0x5E, 0x41, 0x3E, 0x0D, 0xB8, + 0x16, 0x93, 0xFD, 0x3C, 0x00, 0x4C, 0x5C, 0xFD, 0xC3, 0x9A, 0x95, 0xDF, 0x13, 0x3A, 0x36, 0x58, + 0x24, 0x58, 0xF0, 0x4D, 0x07, 0xC4, 0x8C, 0x9E, 0x04, 0x5B, 0x12, 0x11, 0xFC, 0xF4, 0x27, 0x3F, + 0x7F, 0xF2, 0xFF, 0xA6, 0x49, 0x55, 0x1C, 0x46, 0xD6, 0x23, 0xD9, 0x55, 0x4A, 0x2C, 0xB9, 0x30, + 0xFF, 0x5D, 0x10, 0x1D, 0x86, 0x62, 0x51, 0x26, 0xBD, 0xD1, 0x57, 0xBA, 0x36, 0x22, 0xD2, 0x5A, + 0xDE, 0xDC, 0xAC, 0x7F, 0xF7, 0xD9, 0xDB, 0xB6, 0xA9, 0xAC, 0x31, 0xC3, 0xE8, 0x79, 0xC2, 0x12, + 0x44, 0x1F, 0x7D, 0xF7, 0xFD, 0x93, 0xC5, 0xEC, 0xD5, 0x9B, 0x6B, 0x00, 0x48, 0x29, 0x73, 0xE3, + 0x3A, 0x0C, 0x5E, 0x90, 0x60, 0x3B, 0x91, 0xB6, 0xAD, 0x6A, 0xE7, 0xD6, 0xDB, 0x5D, 0x28, 0xE5, + 0x8B, 0x37, 0xB7, 0xB7, 0xF7, 0xBB, 0x31, 0xF8, 0x94, 0x4A, 0x11, 0xC2, 0x39, 0xA7, 0x24, 0x0A, + 0x21, 0x86, 0x31, 0xF8, 0x61, 0xF0, 0xE3, 0x48, 0x42, 0xD4, 0x4D, 0xE3, 0xC7, 0xB1, 0xEB, 0xFB, + 0x10, 0x22, 0x15, 0xF2, 0x21, 0x5A, 0x37, 0x25, 0x62, 0x71, 0x32, 0xD0, 0xDB, 0xB7, 0x37, 0x29, + 0x65, 0x57, 0x59, 0xAD, 0xE4, 0xF3, 0xCB, 0xF3, 0x3F, 0xF8, 0xE8, 0x5B, 0x75, 0x6D, 0xB5, 0xD6, + 0xF3, 0xB6, 0x96, 0x5A, 0x75, 0xDD, 0xC0, 0x71, 0x1B, 0x24, 0xC8, 0x0F, 0x61, 0x08, 0x61, 0x1C, + 0x03, 0xCF, 0xB9, 0x39, 0x97, 0x92, 0x69, 0xB3, 0xDD, 0xFD, 0xFA, 0x37, 0x9F, 0x8C, 0xA3, 0xCF, + 0x24, 0x62, 0xCA, 0x78, 0x50, 0x14, 0xE4, 0x52, 0x62, 0xCA, 0x21, 0xA5, 0x52, 0xC8, 0x6A, 0xDD, + 0xD4, 0x15, 0x89, 0x89, 0x67, 0x9B, 0x4B, 0x19, 0x87, 0xA1, 0xA9, 0x1C, 0x37, 0x7A, 0x56, 0x6B, + 0x36, 0xDE, 0x91, 0x52, 0xB1, 0x71, 0x33, 0x22, 0x56, 0xCE, 0x86, 0xC8, 0x6B, 0xB7, 0xE9, 0xEC, + 0xE2, 0x1E, 0x8D, 0x2B, 0x35, 0x4C, 0x15, 0x42, 0x00, 0x40, 0x2E, 0xC5, 0xFB, 0xD8, 0xD4, 0xEE, + 0xE2, 0x64, 0xB6, 0xD9, 0xED, 0xA5, 0x54, 0xC3, 0xE8, 0x37, 0xFB, 0x9E, 0x3D, 0x70, 0x84, 0x10, + 0x56, 0x29, 0xBE, 0x26, 0xF6, 0xC3, 0x78, 0x3A, 0x9F, 0x91, 0x28, 0xFD, 0x18, 0x80, 0x45, 0xCF, + 0x07, 0x0E, 0xB7, 0x56, 0x32, 0xC4, 0x24, 0xC4, 0xB4, 0xA4, 0x6F, 0x1B, 0x6B, 0xB5, 0xDC, 0xEC, + 0x06, 0x76, 0xC4, 0x6C, 0x6A, 0x77, 0xBE, 0x5C, 0xE4, 0x92, 0x8D, 0x36, 0xCB, 0xE5, 0x3C, 0xE7, + 0xAC, 0x94, 0x6A, 0x9B, 0xAA, 0xEB, 0x06, 0xAD, 0xE5, 0x72, 0x31, 0xAB, 0x2B, 0x7B, 0x71, 0x76, + 0xBA, 0x58, 0x34, 0x4D, 0xED, 0x8C, 0xD5, 0xEC, 0xB2, 0x70, 0x6C, 0xC7, 0xF8, 0xB4, 0xA3, 0x52, + 0x72, 0x2E, 0x3E, 0x44, 0x76, 0xB8, 0x0B, 0x21, 0xC5, 0x9C, 0x40, 0x40, 0xCE, 0x14, 0x53, 0x64, + 0xAE, 0x55, 0xDF, 0x0D, 0xBC, 0x0B, 0x1E, 0x86, 0x61, 0x18, 0x3C, 0xA2, 0x54, 0x5A, 0x8E, 0xA3, + 0x8F, 0x21, 0x19, 0x63, 0x06, 0xEF, 0x3F, 0x7F, 0xF5, 0xA5, 0xD1, 0xBA, 0x6D, 0xEA, 0xB6, 0xAD, + 0xB4, 0xD2, 0xF7, 0xEB, 0x4D, 0xD7, 0x0F, 0xEB, 0xF5, 0x36, 0xA5, 0xDC, 0x54, 0x4E, 0x29, 0x76, + 0x5E, 0x2B, 0x27, 0x27, 0x0B, 0xEF, 0xA3, 0x0F, 0x21, 0x71, 0xD2, 0x44, 0x2E, 0x5A, 0x2B, 0x00, + 0xE1, 0xAC, 0x53, 0x52, 0x56, 0x95, 0x63, 0xC6, 0x1C, 0x51, 0x89, 0x31, 0x11, 0x51, 0xD7, 0x0D, + 0x5D, 0x3F, 0x38, 0xE7, 0xEA, 0xDA, 0x52, 0xA1, 0x94, 0x8B, 0xB5, 0xEA, 0xBF, 0xFB, 0x97, 0xFF, + 0x54, 0x4A, 0x19, 0x42, 0x38, 0x3D, 0x5D, 0x8C, 0x3E, 0x08, 0x12, 0xDB, 0xCD, 0xB6, 0xAE, 0x9C, + 0x98, 0x90, 0xD9, 0x1C, 0x42, 0x54, 0x4A, 0x5A, 0xE7, 0x38, 0x28, 0x0F, 0xA5, 0x34, 0x5A, 0x1B, + 0xA3, 0x9C, 0xB3, 0x28, 0x25, 0x53, 0xC5, 0xB8, 0xC9, 0x52, 0x4F, 0x42, 0x4E, 0x85, 0x10, 0xEC, + 0xC7, 0xC9, 0x07, 0xDD, 0xE4, 0x6E, 0x25, 0x41, 0xE0, 0x14, 0x52, 0x16, 0x42, 0xF4, 0x21, 0xEC, + 0xBB, 0x0E, 0x04, 0x18, 0x63, 0xFB, 0x7D, 0xB7, 0x58, 0xCE, 0x85, 0x10, 0x6D, 0x5D, 0x91, 0x10, + 0x9B, 0xDD, 0x1E, 0x11, 0xB8, 0x6D, 0x5F, 0xAD, 0xD6, 0x31, 0xA4, 0xAA, 0x76, 0x2C, 0x1F, 0x54, + 0x52, 0xCD, 0xE6, 0xED, 0x38, 0x8E, 0x21, 0xC4, 0xA1, 0xF7, 0x55, 0x6D, 0x57, 0xAB, 0xCD, 0xCD, + 0xCD, 0x3D, 0x22, 0xFA, 0x31, 0xA0, 0xC4, 0xDE, 0xFB, 0x8B, 0xF3, 0x53, 0x09, 0xC8, 0xE9, 0x3C, + 0x85, 0x0A, 0x02, 0xB4, 0x6D, 0x75, 0x76, 0xB2, 0x5C, 0xCC, 0x9B, 0xA6, 0xAE, 0xF8, 0x28, 0x15, + 0xC8, 0xE2, 0x81, 0x49, 0xB3, 0x41, 0x44, 0x39, 0x4F, 0x4B, 0x52, 0xDE, 0x2C, 0xE1, 0x31, 0xCC, + 0xA1, 0x3C, 0xAE, 0x62, 0x0F, 0xDF, 0x3C, 0x79, 0x5E, 0x3D, 0xBD, 0xE5, 0xF9, 0xCF, 0x03, 0x43, + 0x8C, 0xE8, 0xAB, 0x46, 0x5B, 0x87, 0xB9, 0x6E, 0x2A, 0x5E, 0xA5, 0x3C, 0x76, 0x5B, 0x44, 0x07, + 0x1C, 0x8C, 0xA0, 0x7C, 0x45, 0xF3, 0x48, 0xAC, 0x2C, 0xE4, 0xD2, 0x99, 0x26, 0x21, 0xC3, 0xD7, + 0xD5, 0x02, 0xE2, 0x38, 0x5A, 0x3A, 0xAB, 0xCA, 0x81, 0x91, 0x56, 0x0E, 0x0F, 0x7A, 0x74, 0x20, + 0x10, 0x42, 0xB0, 0xB7, 0xC1, 0xC7, 0xBF, 0x7B, 0xF5, 0xE5, 0xDB, 0xFB, 0xEF, 0x7C, 0xF8, 0xB2, + 0xA9, 0xDD, 0x72, 0x5E, 0xB3, 0x2B, 0xF1, 0xB1, 0x28, 0x96, 0x03, 0x45, 0xED, 0xF0, 0x4B, 0x53, + 0x08, 0xE9, 0xF5, 0xD5, 0xDD, 0x6A, 0xB3, 0xEB, 0x47, 0xAF, 0x94, 0x54, 0x88, 0x4C, 0x29, 0xD8, + 0xEE, 0xBA, 0x5F, 0x7D, 0xFC, 0xF9, 0xC9, 0xA2, 0xB9, 0xBC, 0x38, 0xAB, 0x6B, 0x37, 0x9B, 0x35, + 0xDB, 0x5D, 0xF7, 0xEE, 0xFA, 0x7E, 0xBB, 0xEF, 0x97, 0xF3, 0x96, 0x04, 0xA6, 0x22, 0x7A, 0x9F, + 0x6E, 0xEE, 0x6F, 0x5F, 0xBF, 0xBB, 0xBF, 0x7B, 0x58, 0x87, 0x98, 0x16, 0xF3, 0x59, 0xE5, 0xDC, + 0xE8, 0x03, 0x80, 0x44, 0x01, 0x37, 0x77, 0xF7, 0x77, 0x77, 0x0F, 0x28, 0xA0, 0xA9, 0x6A, 0x96, + 0xA9, 0x5E, 0xDF, 0x7C, 0x11, 0x63, 0x7C, 0xFF, 0x1B, 0x2F, 0x25, 0xCA, 0x52, 0xCA, 0x87, 0x1F, + 0xBE, 0xDF, 0xB6, 0x6D, 0x4E, 0xD1, 0x8F, 0xE3, 0x6A, 0xB5, 0xEE, 0xFA, 0x41, 0x08, 0xE1, 0x63, + 0xD4, 0x56, 0x7F, 0xE3, 0xE2, 0xB2, 0x72, 0x36, 0xA7, 0x94, 0x92, 0xB4, 0xD6, 0xCC, 0xE7, 0xCD, + 0x30, 0x04, 0x63, 0x0C, 0x6B, 0x6E, 0x86, 0x31, 0xAC, 0x77, 0xFB, 0x98, 0x98, 0xB1, 0x25, 0xCB, + 0x81, 0x25, 0x1C, 0x63, 0x52, 0x4A, 0x65, 0xF2, 0x63, 0x88, 0x29, 0x67, 0xCB, 0x24, 0x34, 0x29, + 0x79, 0x14, 0x2D, 0x24, 0x98, 0x63, 0xCD, 0xD5, 0x27, 0x95, 0x8C, 0x02, 0x72, 0x4A, 0x4D, 0xED, + 0x66, 0x4D, 0xBD, 0xEB, 0x06, 0x9A, 0x70, 0x5C, 0xA1, 0x95, 0xEE, 0xFA, 0x21, 0xA6, 0x78, 0x7E, + 0x7A, 0xC2, 0x05, 0x28, 0x17, 0x9E, 0x7A, 0xE1, 0x70, 0xCE, 0x89, 0xC3, 0x5A, 0x87, 0xB8, 0xAE, + 0x65, 0x21, 0xB4, 0x92, 0xBC, 0x06, 0xDE, 0x75, 0xBD, 0x20, 0x06, 0x7A, 0x33, 0x5F, 0x67, 0x42, + 0x08, 0xA3, 0x35, 0xBB, 0x7A, 0xB0, 0x86, 0xC5, 0x28, 0xD5, 0x8F, 0xA3, 0xD5, 0x9A, 0x05, 0xEA, + 0x88, 0xC0, 0x26, 0x30, 0x4A, 0xC9, 0x10, 0xB9, 0x92, 0x4A, 0x44, 0x90, 0x12, 0xF8, 0x7A, 0x02, + 0x14, 0x95, 0xB3, 0xF3, 0x83, 0x32, 0xC6, 0x5A, 0x53, 0x57, 0xEE, 0xF9, 0xE5, 0xA9, 0x44, 0x59, + 0x4A, 0x66, 0x12, 0x69, 0xDF, 0x8F, 0xD6, 0xE8, 0xB3, 0xD3, 0x45, 0x3B, 0xAB, 0x2A, 0x67, 0x8D, + 0xD1, 0xDC, 0xFA, 0x3D, 0xBD, 0xCA, 0xA7, 0xB2, 0x8B, 0x12, 0x04, 0x80, 0x83, 0x18, 0x91, 0xB5, + 0x7B, 0x29, 0x67, 0xE2, 0x89, 0x42, 0x50, 0x8A, 0x99, 0x6B, 0x8A, 0x10, 0x22, 0xE5, 0x2C, 0x00, + 0x94, 0x91, 0x25, 0x89, 0x14, 0x79, 0xF5, 0x26, 0xAE, 0xEF, 0x56, 0xF7, 0x0F, 0x0F, 0xFD, 0x30, + 0xA8, 0xD9, 0x4C, 0x1B, 0x15, 0x53, 0x7E, 0x7B, 0x7D, 0xBF, 0xDB, 0xEF, 0x43, 0x48, 0x29, 0xA5, + 0x98, 0xF3, 0xBE, 0xEB, 0x9E, 0x9F, 0x9F, 0xD5, 0xCE, 0x9D, 0x9C, 0x2E, 0xD6, 0x9B, 0xDD, 0xFD, + 0x6A, 0x95, 0x73, 0xD1, 0x4A, 0x02, 0xC8, 0x22, 0xC4, 0xAE, 0x1F, 0x40, 0x88, 0xD1, 0x47, 0x04, + 0x28, 0x0F, 0x0F, 0x5A, 0x6B, 0x25, 0xA5, 0xD6, 0xAA, 0xAE, 0xAB, 0xB3, 0x93, 0x13, 0x10, 0x42, + 0x4A, 0xEC, 0x86, 0xF1, 0xED, 0xF5, 0xAE, 0xAA, 0xDC, 0xE9, 0xC9, 0xF2, 0xF6, 0x6E, 0xF5, 0xBF, + 0xFC, 0x6F, 0xFF, 0xF6, 0xBF, 0xFD, 0x97, 0x7F, 0x61, 0xB4, 0xDA, 0xED, 0xFB, 0xAE, 0xEB, 0x96, + 0xF3, 0xF9, 0x7C, 0xD6, 0x0E, 0xC3, 0x40, 0x44, 0x5A, 0xEB, 0xAA, 0x72, 0xD6, 0xD9, 0x71, 0x18, + 0xF9, 0x36, 0x15, 0x44, 0x25, 0xC6, 0x82, 0x28, 0x48, 0x96, 0xCC, 0x58, 0xB5, 0x14, 0x42, 0x00, + 0x51, 0x8C, 0x89, 0xE4, 0xA4, 0x0F, 0x2B, 0xA5, 0x94, 0xCC, 0xE2, 0x65, 0x22, 0x41, 0x53, 0x11, + 0x10, 0x44, 0x04, 0xA2, 0x08, 0x22, 0x12, 0x2C, 0x6B, 0xCD, 0x45, 0x49, 0xC5, 0x79, 0x74, 0x6D, + 0xED, 0x2A, 0x6B, 0x89, 0x28, 0x95, 0x3C, 0x86, 0xC0, 0x39, 0x7E, 0xA5, 0x14, 0xCE, 0x15, 0x6F, + 0x67, 0x4D, 0xE5, 0x6C, 0xDF, 0x0D, 0xC6, 0x68, 0xEB, 0xCC, 0x76, 0xBB, 0x2D, 0x85, 0x62, 0x48, + 0xDE, 0xFB, 0xED, 0x76, 0xF7, 0xF6, 0xDD, 0xAD, 0x00, 0x11, 0x63, 0x26, 0x12, 0x3E, 0x84, 0x98, + 0xD3, 0xCB, 0xE7, 0xCF, 0x5E, 0xBF, 0x79, 0xCB, 0xAD, 0xB4, 0x0F, 0xA1, 0xA9, 0xDD, 0xC9, 0x62, + 0x7E, 0xB2, 0x9C, 0x31, 0xF7, 0x98, 0x1D, 0xAB, 0x44, 0x81, 0x23, 0x80, 0xCE, 0x97, 0x1C, 0x33, + 0x0A, 0x79, 0x60, 0x9D, 0xDA, 0xB3, 0xA3, 0x58, 0xEA, 0xB1, 0x11, 0x2B, 0xBC, 0x16, 0x78, 0x5A, + 0x4D, 0x8E, 0x05, 0x05, 0x11, 0x15, 0xF2, 0x26, 0x91, 0x8D, 0xBA, 0xBE, 0x2A, 0xAB, 0x14, 0x05, + 0x0E, 0x6D, 0x19, 0x3D, 0x79, 0x00, 0x16, 0x24, 0x30, 0x8C, 0x58, 0xBE, 0x4A, 0x8B, 0x65, 0xA2, + 0x82, 0x10, 0x8F, 0x19, 0xAC, 0x5C, 0x60, 0x8E, 0xF5, 0xEB, 0x49, 0x35, 0x14, 0x4A, 0x49, 0x29, + 0x70, 0xEA, 0xDF, 0x0A, 0x89, 0x42, 0x7C, 0x92, 0x70, 0x97, 0x25, 0xB4, 0x52, 0x6F, 0xAE, 0x6E, + 0x4B, 0xA1, 0x4F, 0x3F, 0xBF, 0xBE, 0x7B, 0xD8, 0xAC, 0xB7, 0xDD, 0xF7, 0xBE, 0xF5, 0x32, 0xA4, + 0xE4, 0x8C, 0x9A, 0xB5, 0xB5, 0x56, 0x92, 0x61, 0x0E, 0xE7, 0xCC, 0x71, 0x0F, 0x4A, 0x44, 0x52, + 0x62, 0xD7, 0x8F, 0xEB, 0x5D, 0xBF, 0x58, 0xCC, 0x2A, 0x67, 0x2F, 0xCE, 0x16, 0xA7, 0x27, 0x73, + 0x40, 0xB4, 0xD6, 0xEC, 0x76, 0xDD, 0xEF, 0x3F, 0xFB, 0xB2, 0x1F, 0xC6, 0xBA, 0xA9, 0xAC, 0x33, + 0x85, 0x4A, 0x55, 0xBB, 0x97, 0x2F, 0x2E, 0xBE, 0xE5, 0x4C, 0x53, 0x3B, 0x6B, 0xCD, 0x6F, 0x3E, + 0x79, 0xFD, 0x93, 0x5F, 0x7C, 0xB2, 0xDB, 0xF5, 0x9C, 0xAE, 0x38, 0x6F, 0xDB, 0x92, 0xF3, 0x6E, + 0xDF, 0x57, 0x95, 0x93, 0x5A, 0x6F, 0xD6, 0x9B, 0xCD, 0xC3, 0x26, 0xF9, 0xC8, 0x73, 0x59, 0xCE, + 0xE9, 0xEE, 0x61, 0xD5, 0xED, 0xF6, 0xF3, 0xB6, 0xD9, 0x6D, 0xF7, 0xDA, 0x18, 0x00, 0xD8, 0x6E, + 0x77, 0xAB, 0xD5, 0x7A, 0x75, 0xB8, 0x94, 0x67, 0x6D, 0x0B, 0x00, 0x95, 0xB3, 0x2F, 0x5E, 0x5C, + 0x9C, 0xB4, 0xEE, 0x1B, 0x1F, 0xBC, 0xFF, 0xC9, 0x6F, 0x7E, 0x45, 0xA5, 0xFC, 0xE3, 0x7F, 0xFA, + 0x4F, 0x86, 0xC1, 0x0B, 0x00, 0xA9, 0x64, 0x4A, 0x29, 0xC6, 0xFC, 0xB0, 0xDA, 0x6C, 0x77, 0x9D, + 0x73, 0x8E, 0xBD, 0xC8, 0x38, 0xC1, 0x60, 0xB3, 0xDE, 0xDD, 0x3D, 0xAC, 0x56, 0xDB, 0xFD, 0xE8, + 0x43, 0x21, 0x91, 0x72, 0x76, 0xC6, 0x20, 0x80, 0xF7, 0x61, 0xF0, 0x81, 0x49, 0x28, 0x29, 0xC5, + 0xDA, 0xD9, 0x94, 0x59, 0xF5, 0x9D, 0x8D, 0x92, 0xA3, 0x0F, 0xCE, 0x36, 0x6C, 0x83, 0x63, 0xB4, + 0x7A, 0xF1, 0xFC, 0xA2, 0xAE, 0xAA, 0x77, 0x37, 0x77, 0x3F, 0xF8, 0xE8, 0xC3, 0x67, 0x17, 0x67, + 0x44, 0x24, 0xA5, 0x0A, 0x21, 0xA6, 0x92, 0xBF, 0x78, 0xF5, 0xE5, 0xCD, 0xDD, 0xC3, 0x30, 0xF8, + 0x03, 0x17, 0x89, 0xD8, 0x5E, 0x5C, 0x6B, 0xE5, 0x43, 0x36, 0x4A, 0x93, 0x10, 0x29, 0xA5, 0x18, + 0x23, 0x4A, 0xDC, 0x0D, 0x5E, 0xCB, 0x1C, 0x53, 0x9C, 0x35, 0x95, 0x92, 0xE8, 0x43, 0x1C, 0x7D, + 0xA8, 0xAC, 0x66, 0x96, 0x90, 0xD6, 0x2A, 0x95, 0x52, 0x59, 0x23, 0x51, 0x76, 0xFD, 0x20, 0xB8, + 0xB2, 0x00, 0x18, 0x2D, 0xA5, 0xC4, 0x61, 0xCC, 0x56, 0x6B, 0x44, 0xC8, 0x53, 0x64, 0x74, 0x40, + 0xAB, 0x2A, 0x6B, 0x06, 0x9F, 0x4A, 0x21, 0x66, 0x96, 0xE7, 0x52, 0x4E, 0x16, 0xF3, 0x59, 0x53, + 0x1B, 0xA3, 0x25, 0x42, 0x4C, 0xA9, 0x72, 0x26, 0xC6, 0x34, 0x9B, 0x35, 0xEC, 0xEC, 0x62, 0x8D, + 0xE6, 0xB9, 0x63, 0x42, 0x55, 0x1E, 0xF9, 0x04, 0xD3, 0xD5, 0x0A, 0x00, 0x50, 0xA6, 0xBD, 0x9B, + 0x36, 0x8A, 0x23, 0x9D, 0xA4, 0x04, 0x4C, 0x98, 0x4B, 0xE2, 0x84, 0x4A, 0x3A, 0xAC, 0xB7, 0x10, + 0x10, 0x14, 0x11, 0x89, 0x10, 0xF3, 0x6A, 0xB3, 0x59, 0x6F, 0xF6, 0x44, 0xC4, 0xA8, 0xE2, 0x6E, + 0xDF, 0xA5, 0x98, 0x86, 0x61, 0xA8, 0x9C, 0x65, 0x4D, 0xD4, 0x69, 0xDB, 0xEC, 0xF6, 0xDD, 0xC9, + 0xC9, 0xFC, 0x87, 0x7F, 0xF8, 0xFD, 0x61, 0x18, 0xFB, 0x7E, 0xB0, 0xD6, 0x18, 0xAD, 0xB7, 0xFB, + 0x2E, 0xA7, 0x88, 0x92, 0x13, 0xAD, 0xF2, 0x18, 0x82, 0xD3, 0x7A, 0xD6, 0x54, 0xCE, 0xB9, 0xAE, + 0x1F, 0x42, 0xCE, 0x0F, 0x9B, 0xED, 0xAB, 0x2F, 0xDF, 0x21, 0xC0, 0x1F, 0xFF, 0xD1, 0xF7, 0x2F, + 0x2F, 0xCF, 0xFE, 0xDD, 0x5F, 0xFE, 0x68, 0xB3, 0xDD, 0x8D, 0x63, 0xB0, 0xCE, 0xDC, 0xDC, 0x3D, + 0xFC, 0xE5, 0x5F, 0xFD, 0xCD, 0x3F, 0xFD, 0x47, 0x7F, 0x2A, 0x88, 0x4E, 0x96, 0x8B, 0xFB, 0x87, + 0xD5, 0xCB, 0xE7, 0x97, 0x23, 0x0B, 0x33, 0x72, 0xC9, 0xA5, 0xD4, 0xB5, 0x93, 0x12, 0x05, 0x09, + 0xA9, 0xB0, 0xEF, 0x26, 0xC1, 0x06, 0x6F, 0x25, 0xE4, 0xC4, 0x14, 0x11, 0x46, 0x2B, 0xDE, 0x03, + 0x3E, 0xC1, 0x64, 0x48, 0x10, 0x1B, 0xAB, 0x10, 0x6F, 0x75, 0x41, 0x4C, 0xB4, 0x55, 0x85, 0x00, + 0x00, 0xD2, 0xEA, 0xCA, 0x6A, 0xE6, 0x55, 0x12, 0x51, 0x8A, 0x25, 0xA4, 0xC4, 0xEC, 0x04, 0x89, + 0xC8, 0x86, 0x9A, 0x39, 0xE5, 0x94, 0xD2, 0xF9, 0xF9, 0x89, 0xB1, 0xBA, 0xE4, 0x62, 0x34, 0xF3, + 0xB4, 0x19, 0x54, 0xC9, 0xEC, 0xFC, 0xF3, 0xEB, 0x8F, 0x3F, 0x8D, 0x31, 0xA6, 0xC2, 0xA2, 0x72, + 0x31, 0x8C, 0xBE, 0xAE, 0xDD, 0xEB, 0x2F, 0xDF, 0xEE, 0xBB, 0xBE, 0xAE, 0x5D, 0x65, 0xED, 0xD9, + 0xC9, 0xA2, 0xA9, 0x9D, 0x35, 0xFA, 0xE8, 0x40, 0x73, 0xDC, 0xF4, 0x89, 0x47, 0x83, 0xB3, 0xC7, + 0x71, 0xEA, 0x38, 0x90, 0x1D, 0xFB, 0xA6, 0xA7, 0x44, 0xFC, 0xC3, 0xD7, 0x53, 0xF0, 0x89, 0x51, + 0xB1, 0xE9, 0x13, 0xE7, 0x4C, 0x6D, 0x22, 0x2A, 0x70, 0xE0, 0x77, 0x1D, 0x1E, 0x8A, 0x41, 0x2D, + 0x38, 0x08, 0x11, 0x88, 0x0E, 0x4A, 0x6E, 0x6E, 0xA2, 0x00, 0x8E, 0x3A, 0xAA, 0xA7, 0x4F, 0x44, + 0x47, 0x1A, 0x0A, 0x62, 0x39, 0xC4, 0x33, 0x72, 0x7F, 0x87, 0xF8, 0x94, 0x68, 0x91, 0x79, 0x76, + 0x9E, 0x6C, 0x1B, 0xA5, 0x10, 0x85, 0x30, 0xE5, 0x2C, 0xE5, 0x54, 0xA1, 0x57, 0xEB, 0xDD, 0x2F, + 0x7F, 0xFB, 0x4A, 0xA1, 0x64, 0xFD, 0xE0, 0xE0, 0xE3, 0xD5, 0xF5, 0xCA, 0x18, 0xA3, 0x4F, 0x66, + 0x77, 0x0F, 0x3B, 0x63, 0x14, 0xDB, 0x2B, 0x02, 0x4A, 0x22, 0xDE, 0x31, 0x01, 0x09, 0xB2, 0x46, + 0x6D, 0xB6, 0x7D, 0x3F, 0x78, 0x6B, 0x8D, 0x44, 0xBC, 0xBF, 0x5F, 0x3B, 0x6B, 0xAC, 0x35, 0x7E, + 0x1C, 0xAB, 0xCA, 0xFD, 0xE9, 0x1F, 0x7F, 0x34, 0xFA, 0x50, 0xA8, 0xEC, 0x76, 0xBD, 0x10, 0xA2, + 0x6D, 0xEA, 0x17, 0xCF, 0xCF, 0x53, 0x4E, 0xEF, 0x6E, 0x1E, 0x3E, 0x7B, 0x75, 0xFD, 0xEB, 0x4F, + 0x5E, 0xAD, 0x37, 0x5D, 0xF0, 0xFE, 0xE5, 0xB3, 0x0B, 0x3E, 0x97, 0x88, 0xA8, 0xAE, 0x5C, 0x88, + 0xE9, 0xE1, 0x7E, 0xCD, 0xE7, 0x7C, 0x5D, 0x39, 0xA5, 0x54, 0x5D, 0xDB, 0xFB, 0x2F, 0xEF, 0xFD, + 0x38, 0x5E, 0x9C, 0x9F, 0x56, 0x95, 0xAB, 0xAB, 0xAA, 0xA9, 0x2B, 0x1F, 0xC2, 0x30, 0x0C, 0xBB, + 0xED, 0xAE, 0x6D, 0xEA, 0x6F, 0xBE, 0xFF, 0x72, 0xD6, 0x36, 0xCB, 0xE5, 0x4C, 0x08, 0x31, 0x9F, + 0x55, 0x6D, 0xD3, 0x7C, 0xF1, 0xC5, 0x17, 0xBF, 0xFD, 0xF9, 0x4F, 0xAA, 0xB6, 0xFE, 0xF1, 0x8F, + 0x7E, 0xF2, 0x0F, 0xFF, 0xFC, 0x2F, 0xB6, 0x63, 0x8F, 0x88, 0xDE, 0x07, 0x1F, 0xE2, 0xFD, 0xC3, + 0xA6, 0xEB, 0xC7, 0xD9, 0xAC, 0xA9, 0x9B, 0xBA, 0xEF, 0x06, 0x36, 0x08, 0xCC, 0x39, 0xDF, 0xAF, + 0x36, 0xD7, 0xB7, 0x0F, 0x25, 0x97, 0x61, 0x0C, 0x8B, 0x79, 0x6B, 0x75, 0xE3, 0x43, 0x00, 0x9C, + 0xDA, 0x28, 0x44, 0x92, 0x08, 0xB5, 0xAB, 0x49, 0x88, 0x98, 0x92, 0x96, 0x32, 0xA5, 0x68, 0x94, + 0x14, 0x40, 0x21, 0x44, 0x67, 0x74, 0xD3, 0x34, 0x82, 0xE8, 0xF9, 0xC5, 0xA9, 0x20, 0x11, 0x17, + 0xB3, 0x45, 0x5B, 0xBF, 0x7B, 0x77, 0xF3, 0xEA, 0xF5, 0xD5, 0xD9, 0xD9, 0xA9, 0x73, 0x56, 0x2A, + 0x35, 0x9B, 0xB5, 0x75, 0x5D, 0x33, 0xE0, 0xC5, 0x44, 0x9E, 0x61, 0x1C, 0x53, 0x9E, 0x3E, 0x18, + 0x51, 0x88, 0xDD, 0x7E, 0x78, 0xA9, 0x6A, 0x8C, 0x61, 0xBB, 0x47, 0xA3, 0xD5, 0xBE, 0xEB, 0x11, + 0xD1, 0x68, 0x1D, 0x62, 0xAA, 0x9C, 0x61, 0x04, 0x23, 0xA5, 0x3C, 0x8A, 0x64, 0xB5, 0xD0, 0x46, + 0x39, 0x63, 0xA4, 0x52, 0x31, 0xA5, 0x83, 0xE3, 0x2B, 0x0A, 0x41, 0x2C, 0x7F, 0x01, 0x00, 0x2A, + 0x59, 0x49, 0x95, 0xA9, 0x78, 0x1F, 0xF8, 0xB0, 0x3D, 0x88, 0xC6, 0x4B, 0x08, 0xC1, 0x39, 0xD3, + 0xB4, 0x35, 0x51, 0x19, 0x87, 0x00, 0x08, 0xCB, 0xC5, 0xAC, 0x76, 0x56, 0x1B, 0xC5, 0xA1, 0x33, + 0xC7, 0x7B, 0xE0, 0x38, 0x05, 0x3C, 0xAE, 0x99, 0x88, 0xB2, 0x98, 0xF2, 0x3D, 0x01, 0x84, 0x0E, + 0x29, 0xE7, 0xCC, 0x69, 0x0B, 0xC6, 0x18, 0x22, 0xD1, 0x75, 0x43, 0x3E, 0x24, 0x01, 0x4A, 0x29, + 0x73, 0x4E, 0x82, 0x28, 0xC5, 0x94, 0x0B, 0x21, 0x42, 0xCE, 0x64, 0xAD, 0x45, 0x80, 0xD5, 0x6A, + 0x53, 0xD7, 0x55, 0xD3, 0xD4, 0xC3, 0x30, 0xCE, 0xDA, 0x06, 0x25, 0x32, 0x34, 0xFE, 0xB0, 0xDA, + 0xFE, 0xF8, 0x27, 0xBF, 0x5C, 0x2E, 0x67, 0xB3, 0xB6, 0x8E, 0x29, 0x85, 0x98, 0xA4, 0x52, 0x5D, + 0xBF, 0x13, 0x00, 0x54, 0x0A, 0x9B, 0xD2, 0x54, 0xCE, 0x59, 0x63, 0x88, 0x28, 0xA6, 0xD4, 0x0D, + 0xA3, 0x9A, 0xD0, 0x52, 0xFC, 0xC9, 0xCF, 0x3F, 0x3E, 0x59, 0xCC, 0x25, 0xB2, 0xED, 0x4F, 0xE1, + 0x69, 0xF4, 0xE7, 0xBF, 0xFE, 0xE4, 0xF2, 0xE2, 0xE4, 0x9F, 0xFD, 0xE3, 0x3F, 0x0B, 0x21, 0x29, + 0x94, 0xEB, 0xD5, 0xE6, 0xE4, 0x64, 0xB1, 0xDF, 0xF7, 0x88, 0xC0, 0x9B, 0xA0, 0xA6, 0xA9, 0x69, + 0xE2, 0x82, 0x61, 0xDF, 0x0D, 0x4A, 0xA1, 0xB3, 0x1A, 0x51, 0x72, 0xE7, 0x72, 0x9C, 0x92, 0x8E, + 0x37, 0x37, 0x22, 0xB2, 0xDF, 0x30, 0x63, 0x20, 0x93, 0x1F, 0x11, 0xC0, 0xF1, 0x1D, 0x2B, 0x85, + 0x24, 0x62, 0x37, 0x8C, 0x39, 0x97, 0xB6, 0xA9, 0xEF, 0x1E, 0xD6, 0x8B, 0x59, 0x2B, 0x25, 0x90, + 0x28, 0x29, 0x17, 0x5E, 0x4D, 0x28, 0x89, 0xCA, 0x18, 0x51, 0x48, 0x22, 0xC6, 0x90, 0xBA, 0x7D, + 0x97, 0x4A, 0x71, 0xCE, 0x71, 0x50, 0x2E, 0x08, 0xA1, 0xA5, 0xFC, 0xF4, 0xB3, 0x37, 0x21, 0x04, + 0x6B, 0x4D, 0xEA, 0x7D, 0xCE, 0x87, 0x48, 0x53, 0x94, 0x9B, 0xCD, 0x4E, 0x00, 0x94, 0x22, 0x94, + 0x9C, 0x46, 0x7E, 0x6E, 0x9C, 0x8F, 0xCE, 0x62, 0xC7, 0xE3, 0xE7, 0x29, 0x86, 0x75, 0x6C, 0xBE, + 0x9E, 0xCE, 0x6B, 0x5F, 0xED, 0x8F, 0x8E, 0x2F, 0x90, 0x4B, 0x8C, 0x20, 0x22, 0x1E, 0x35, 0x27, + 0xF0, 0x8B, 0x48, 0x4C, 0xF3, 0xF5, 0x41, 0x9E, 0xC7, 0x3F, 0xF5, 0x24, 0x34, 0xE4, 0x29, 0xAA, + 0x75, 0x68, 0xD9, 0x88, 0xBE, 0x82, 0xC1, 0x3D, 0x3E, 0xDD, 0xD3, 0x21, 0x0F, 0x88, 0x00, 0xF0, + 0x68, 0xA8, 0xC1, 0xA8, 0x97, 0x04, 0x28, 0x24, 0x38, 0xE8, 0xE3, 0xD1, 0x56, 0x88, 0x4B, 0xA1, + 0x96, 0xAC, 0xBC, 0x81, 0x10, 0xD2, 0xC3, 0x6A, 0xF7, 0xE6, 0xEA, 0x5E, 0x4B, 0x35, 0x9F, 0x35, + 0xB8, 0xEF, 0x4F, 0x4F, 0x66, 0x21, 0x24, 0xA2, 0x72, 0xF7, 0xB0, 0x4D, 0xB9, 0x48, 0x04, 0xE7, + 0xCC, 0xBC, 0xAD, 0x7D, 0x88, 0x0F, 0xEB, 0xBD, 0x56, 0x32, 0x6E, 0x7A, 0x67, 0xB5, 0x31, 0x2A, + 0x67, 0x0A, 0xB1, 0xD4, 0x95, 0x5B, 0xAD, 0x77, 0xE3, 0xE0, 0x15, 0xE2, 0x66, 0xF7, 0x39, 0x9F, + 0x5D, 0xEF, 0xBF, 0x77, 0x79, 0x72, 0x32, 0xD7, 0x46, 0xD7, 0xC6, 0x35, 0x75, 0x35, 0x8E, 0xA1, + 0xAA, 0xEC, 0x6A, 0xBD, 0xFD, 0xE5, 0x6F, 0x3F, 0xFF, 0xCD, 0xA7, 0x5F, 0x0E, 0x63, 0xD8, 0xEE, + 0xFA, 0x10, 0x62, 0xCA, 0xE9, 0xED, 0xCD, 0x3D, 0x9B, 0x99, 0xCC, 0x66, 0xCD, 0xD9, 0xE9, 0x62, + 0xFB, 0xF6, 0x96, 0x88, 0x04, 0x08, 0x6B, 0xB5, 0x52, 0xF2, 0x3B, 0xDF, 0xFA, 0x46, 0xF0, 0x51, + 0xC2, 0x94, 0x7E, 0x14, 0x62, 0x5C, 0xCC, 0xEA, 0xF7, 0x5E, 0x5C, 0x74, 0xDD, 0x90, 0x4B, 0x39, + 0x5D, 0x7E, 0x7F, 0x31, 0x6F, 0x49, 0x90, 0xD6, 0xCA, 0x59, 0x5B, 0xA8, 0x04, 0x1F, 0x6F, 0x6F, + 0x57, 0x9B, 0xDB, 0xEB, 0x5F, 0xFF, 0xF4, 0x47, 0x19, 0xB0, 0x0B, 0xF9, 0xED, 0xD5, 0x5B, 0xD7, + 0x34, 0x39, 0xE6, 0x7E, 0x1C, 0xBB, 0x7E, 0x64, 0xFF, 0x75, 0xA9, 0xA4, 0xF7, 0x9E, 0x1F, 0xB0, + 0xEB, 0x06, 0x22, 0x41, 0x02, 0x18, 0xF1, 0x31, 0x5A, 0x3A, 0xAB, 0x73, 0xCC, 0x07, 0x8C, 0x9B, + 0xA9, 0xD2, 0x85, 0x08, 0x74, 0xA1, 0x92, 0xA3, 0x20, 0x62, 0xB4, 0xDE, 0x1A, 0x59, 0xDB, 0x39, + 0x3B, 0x0E, 0xEF, 0xBB, 0xCE, 0x19, 0xF3, 0xCB, 0x5F, 0xFD, 0x2E, 0xA6, 0x5C, 0x39, 0xFB, 0xFA, + 0xCB, 0xB7, 0x00, 0xE0, 0xAC, 0xDB, 0xEF, 0xBB, 0xDD, 0x6E, 0xE7, 0x63, 0xAA, 0x2A, 0x27, 0x95, + 0x1A, 0xC7, 0x91, 0x0A, 0x59, 0x67, 0xEB, 0xDA, 0x5A, 0xA3, 0x52, 0x8A, 0x4A, 0x4A, 0x33, 0xAA, + 0x18, 0x53, 0x8A, 0x19, 0x62, 0x04, 0x67, 0x95, 0x94, 0x42, 0x50, 0x4C, 0x89, 0xD9, 0xAD, 0x12, + 0x91, 0x33, 0x07, 0x72, 0xCE, 0x39, 0x17, 0x63, 0x14, 0x9F, 0x7A, 0x87, 0x6F, 0x90, 0xB3, 0xB6, + 0x7E, 0xEF, 0xC5, 0xE5, 0xFD, 0x6A, 0x73, 0x73, 0xF7, 0x40, 0x44, 0xAC, 0xD3, 0x67, 0xFE, 0x0E, + 0x00, 0x68, 0xDE, 0xC1, 0x0D, 0xDE, 0x18, 0x33, 0x6B, 0x2A, 0x1E, 0x12, 0x99, 0x8F, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x67, 0xCD, 0xAC, 0xAD, 0x9C, 0xB3, 0x6D, 0x5B, 0x3B, 0x67, + 0xEB, 0xCA, 0x09, 0x12, 0x46, 0x6B, 0xA5, 0x34, 0x0A, 0x51, 0x3B, 0x6B, 0x8C, 0x36, 0x66, 0x92, + 0x67, 0xB1, 0x65, 0x2E, 0x4B, 0xFE, 0x85, 0x60, 0xA4, 0xE8, 0x78, 0x3F, 0x08, 0xA2, 0x22, 0x0E, + 0xA8, 0xD9, 0xE4, 0x93, 0x2D, 0x0A, 0x22, 0xB2, 0x5B, 0xE4, 0xD0, 0x7B, 0x29, 0xA7, 0x35, 0x99, + 0x52, 0xAA, 0x14, 0x24, 0x28, 0x4D, 0xEB, 0xB4, 0xD1, 0xBB, 0x7D, 0xBF, 0xDE, 0xEE, 0xBB, 0xBE, + 0x0F, 0x21, 0x34, 0x55, 0x85, 0x80, 0xE3, 0xE8, 0xEB, 0xBA, 0x66, 0x7F, 0xCA, 0xDD, 0xBE, 0x4B, + 0x29, 0x87, 0x1C, 0x77, 0xFB, 0xFE, 0xE6, 0xF6, 0x9E, 0x84, 0x90, 0x88, 0xBB, 0x7E, 0x28, 0x42, + 0x34, 0x75, 0x55, 0xA6, 0xF6, 0x10, 0xAC, 0xD1, 0x39, 0xA5, 0x87, 0xA1, 0x17, 0x02, 0xA4, 0x92, + 0xB3, 0xB6, 0x96, 0x02, 0x73, 0x2E, 0x4C, 0x56, 0xBA, 0x5F, 0xAD, 0x9D, 0xB5, 0x0A, 0x55, 0x4C, + 0x51, 0x02, 0xB0, 0x7F, 0xF7, 0x5F, 0xFE, 0xD5, 0xDF, 0x7C, 0xE3, 0xF9, 0xE5, 0x77, 0xBF, 0xF5, + 0x5E, 0xD3, 0x54, 0x44, 0xB4, 0xDF, 0xF7, 0x80, 0xC2, 0x58, 0xA5, 0xB5, 0x3D, 0xBA, 0x1B, 0x08, + 0x21, 0xDA, 0xB6, 0xE1, 0xD5, 0x10, 0xDB, 0x2B, 0x1E, 0x41, 0x6B, 0xFE, 0xBF, 0x4F, 0x5D, 0x6E, + 0x60, 0x62, 0xC9, 0x13, 0x15, 0x21, 0xCA, 0x94, 0x29, 0xA7, 0x8D, 0x9A, 0xDA, 0x1C, 0xC2, 0x2C, + 0xE8, 0xFE, 0x61, 0x2D, 0x04, 0xE4, 0x5C, 0x6E, 0x6F, 0xEF, 0xE7, 0xB3, 0x1A, 0x40, 0x65, 0x22, + 0x44, 0xE1, 0x8C, 0x01, 0x01, 0x21, 0x46, 0x29, 0x51, 0x00, 0x6C, 0x76, 0x7B, 0x26, 0x36, 0x9F, + 0x2E, 0x17, 0x4A, 0x29, 0x7E, 0x02, 0x25, 0xE5, 0xCD, 0xDD, 0xC3, 0x9B, 0x37, 0x57, 0x31, 0x17, + 0x56, 0x2C, 0x8D, 0xA3, 0x1F, 0x83, 0x3F, 0x3F, 0x3D, 0xC9, 0x25, 0x87, 0x98, 0x10, 0xA1, 0x94, + 0x34, 0x8E, 0x5E, 0x29, 0xD5, 0x54, 0x6E, 0x36, 0xAB, 0x59, 0x0C, 0x87, 0x07, 0x1C, 0x9D, 0xE8, + 0x91, 0x75, 0x70, 0xC4, 0xA1, 0x0E, 0xE6, 0xA6, 0x47, 0xC2, 0xC4, 0x57, 0xBE, 0xB8, 0xBC, 0x1C, + 0x3B, 0x26, 0x3A, 0x18, 0x69, 0xB0, 0xA1, 0x10, 0xC5, 0x22, 0x40, 0x1C, 0x58, 0x17, 0xE2, 0xE8, + 0x28, 0x4D, 0x44, 0xEC, 0x1A, 0x78, 0xA4, 0xFD, 0xE7, 0x72, 0x5C, 0x68, 0x1E, 0x9F, 0x62, 0x2A, + 0x42, 0xF4, 0xE4, 0xEB, 0x88, 0x57, 0x88, 0xAF, 0x7E, 0x13, 0xE2, 0x93, 0xA1, 0x52, 0x08, 0x71, + 0x30, 0x24, 0x54, 0xC7, 0xC2, 0x0C, 0x20, 0x94, 0x52, 0xC3, 0x18, 0xD7, 0x9B, 0xFD, 0xBE, 0x1B, + 0x47, 0x1F, 0xAF, 0xEF, 0xD6, 0xCB, 0x79, 0x7B, 0x7E, 0xBA, 0xE8, 0xFA, 0x71, 0xD6, 0x36, 0x0F, + 0xEB, 0xAD, 0x0F, 0xE1, 0x64, 0x31, 0x3B, 0x5D, 0xCE, 0x99, 0xBB, 0xA4, 0x95, 0xBE, 0x5F, 0xED, + 0x78, 0x94, 0xD5, 0x4A, 0x96, 0x52, 0xA8, 0xD0, 0x6E, 0xDF, 0x6B, 0xA5, 0xCE, 0xCF, 0x16, 0x12, + 0xE5, 0xDB, 0xEB, 0x7B, 0x29, 0x91, 0x31, 0x66, 0x21, 0xE8, 0xF9, 0xB3, 0xF3, 0x31, 0xA4, 0x42, + 0xA4, 0xA4, 0xDC, 0x6C, 0xF6, 0xF3, 0x79, 0x53, 0x57, 0xEE, 0xD3, 0xCF, 0xBF, 0xFC, 0xEB, 0xBF, + 0xF9, 0xCD, 0xCD, 0xFD, 0x26, 0xA5, 0xE4, 0x43, 0xCC, 0x99, 0xFA, 0xBE, 0x97, 0x52, 0x92, 0xC5, + 0xBA, 0xB1, 0x4A, 0xC9, 0xBE, 0xEF, 0xC7, 0x61, 0x4C, 0x29, 0xF9, 0x10, 0x2E, 0xCE, 0x4F, 0xDB, + 0x97, 0x97, 0x8B, 0x59, 0xA3, 0x50, 0xEA, 0x53, 0x7D, 0x72, 0xB2, 0xD8, 0xEE, 0xF6, 0x0F, 0x0F, + 0x9B, 0x8B, 0xD3, 0xC5, 0x87, 0xEF, 0xBF, 0x18, 0xBC, 0x3F, 0x5D, 0xCE, 0x10, 0x31, 0xA6, 0x54, + 0xA8, 0xB0, 0xE5, 0x5E, 0x4C, 0x69, 0xB5, 0xDA, 0xEE, 0x7A, 0xFF, 0xC9, 0x2F, 0x7E, 0xFC, 0x6F, + 0xFF, 0xCD, 0xFF, 0xDE, 0x85, 0x78, 0x7A, 0x76, 0xB1, 0x98, 0x2F, 0x7E, 0xFB, 0xAB, 0x9F, 0x7F, + 0xF8, 0xFD, 0x1F, 0xA6, 0x9C, 0xFB, 0x7E, 0x2C, 0xA5, 0x9C, 0x9E, 0x2C, 0xEA, 0xCA, 0xED, 0xBA, + 0xDE, 0x8F, 0x51, 0x08, 0x31, 0x8E, 0x61, 0xBD, 0xD9, 0x4B, 0x29, 0x7D, 0x8C, 0x21, 0x44, 0x29, + 0x65, 0x6B, 0x26, 0x97, 0x28, 0x14, 0x10, 0x43, 0x64, 0xB2, 0x18, 0xAF, 0x75, 0x4A, 0xC9, 0x3C, + 0x0B, 0xD4, 0x95, 0x9D, 0x37, 0x93, 0xF3, 0x79, 0xCA, 0x79, 0x18, 0xBD, 0x35, 0x06, 0x40, 0xF8, + 0x98, 0xDA, 0xA6, 0x8E, 0x29, 0x4A, 0xA5, 0x98, 0xC1, 0x1F, 0x53, 0x42, 0x04, 0x14, 0x62, 0x1C, + 0x47, 0x01, 0xC0, 0x04, 0xA9, 0xD2, 0xE5, 0xA1, 0x13, 0x88, 0x00, 0x02, 0x12, 0x26, 0x41, 0x84, + 0x12, 0x34, 0x48, 0x29, 0x31, 0x28, 0x99, 0x52, 0x42, 0x04, 0x25, 0x71, 0xD1, 0x36, 0x31, 0x45, + 0x12, 0xDC, 0x99, 0xCA, 0x10, 0xA6, 0x6E, 0xC5, 0x59, 0x33, 0x0C, 0x41, 0x22, 0xD6, 0x75, 0x35, + 0x0C, 0xBE, 0xAE, 0x2B, 0x29, 0x65, 0x53, 0x57, 0xEF, 0x3D, 0xBB, 0xDC, 0xED, 0xF6, 0xFD, 0x38, + 0x0A, 0x00, 0x56, 0x20, 0x02, 0x08, 0x89, 0x32, 0x0B, 0x31, 0x9B, 0x35, 0x39, 0x95, 0x93, 0xC5, + 0x6C, 0x39, 0x6F, 0xAB, 0xCA, 0x9E, 0x9F, 0x2C, 0x66, 0x6D, 0xDD, 0x36, 0x55, 0xE5, 0x0C, 0x07, + 0x3B, 0x18, 0x29, 0x9D, 0x35, 0xDA, 0x48, 0x6D, 0x14, 0x00, 0x1E, 0xC8, 0xB6, 0xC4, 0x3B, 0xB8, + 0xA3, 0x19, 0xF1, 0xA3, 0x9E, 0xFF, 0x00, 0x31, 0x1C, 0x44, 0xB5, 0x42, 0x22, 0x88, 0x0C, 0x12, + 0x84, 0x40, 0x90, 0x52, 0x56, 0xB5, 0xED, 0x87, 0x91, 0x2F, 0x3E, 0x22, 0x2A, 0x25, 0x73, 0x37, + 0x57, 0xD7, 0x96, 0xF7, 0x65, 0x42, 0x88, 0x87, 0xD5, 0x4A, 0x20, 0x8C, 0xDE, 0xF3, 0x65, 0xBA, + 0xD9, 0xED, 0x77, 0xFB, 0xCE, 0x8F, 0xDE, 0x58, 0x63, 0x95, 0x06, 0x21, 0x4A, 0x29, 0x31, 0xC5, + 0x3E, 0x97, 0x54, 0x0A, 0x02, 0x1A, 0xA5, 0xCF, 0x2F, 0xCF, 0x89, 0x88, 0x4D, 0xA8, 0x42, 0x48, + 0xA9, 0x94, 0x90, 0xB2, 0x02, 0xAC, 0xAA, 0x4A, 0x10, 0x6D, 0xF7, 0x7B, 0x26, 0xC1, 0x00, 0x22, + 0x47, 0x16, 0x4C, 0x8B, 0x3F, 0xA3, 0xB4, 0x92, 0xA2, 0xD0, 0x5F, 0xFF, 0xF8, 0xE7, 0x97, 0x67, + 0x8B, 0xE5, 0xC9, 0x02, 0x40, 0x0C, 0xC3, 0x00, 0x00, 0xCC, 0x9F, 0xE0, 0xF1, 0xF9, 0x48, 0xA9, + 0x53, 0x4A, 0x95, 0xC3, 0xD7, 0xD7, 0xEE, 0x73, 0xC4, 0xAF, 0x88, 0xDE, 0x11, 0x91, 0xF7, 0x9B, + 0xFB, 0x7E, 0x9F, 0x4B, 0x69, 0xAA, 0x6A, 0x18, 0x7D, 0x5D, 0x5B, 0xA5, 0x14, 0x47, 0x10, 0x3A, + 0xA6, 0x04, 0x96, 0xFC, 0xDE, 0xCB, 0x67, 0xDC, 0x3F, 0xE6, 0x4C, 0x9C, 0x59, 0x51, 0x57, 0xAE, + 0xAA, 0x0C, 0xDF, 0x95, 0xCE, 0x59, 0xA3, 0xF5, 0xF4, 0xC6, 0xC2, 0xA4, 0x7C, 0x40, 0x29, 0xB7, + 0xBB, 0xDD, 0x6A, 0xB3, 0x8B, 0x29, 0xFB, 0x10, 0x01, 0x71, 0xDE, 0x36, 0xE7, 0x66, 0x31, 0x78, + 0xDF, 0x34, 0x35, 0x22, 0x0E, 0xC3, 0x58, 0x3B, 0xAB, 0x94, 0x6C, 0x9B, 0x4A, 0x2B, 0x95, 0x33, + 0xA5, 0x18, 0x89, 0xAB, 0xED, 0x57, 0xB0, 0xEC, 0xC7, 0x76, 0x2C, 0x67, 0xAE, 0x2F, 0xC4, 0xED, + 0xE7, 0xC1, 0xB0, 0x48, 0x1C, 0x7A, 0x28, 0xE0, 0x8F, 0xFB, 0xF8, 0x7A, 0xF9, 0x4D, 0x48, 0x93, + 0xE3, 0x92, 0x98, 0x22, 0x07, 0x91, 0x84, 0x10, 0x39, 0x65, 0x6E, 0xC9, 0x88, 0x9D, 0x85, 0x04, + 0x1D, 0x1D, 0x19, 0xC5, 0x34, 0x63, 0x4C, 0xDB, 0x2D, 0xFE, 0x7A, 0xC2, 0xFB, 0x9A, 0x06, 0xDE, + 0xE3, 0xA1, 0x28, 0x60, 0x72, 0x9A, 0xA0, 0x03, 0xD3, 0x1E, 0x01, 0x8E, 0xCC, 0x8B, 0x89, 0x3E, + 0x0B, 0x04, 0x00, 0xEA, 0xF8, 0x8F, 0x4A, 0xE1, 0xEB, 0xAB, 0xBB, 0x57, 0x5F, 0xDE, 0x31, 0xAF, + 0xCF, 0x87, 0x88, 0x08, 0x9B, 0x5D, 0x87, 0x80, 0x9B, 0x7D, 0x0F, 0x00, 0xCF, 0x2F, 0x4F, 0x37, + 0xDB, 0xFD, 0x6E, 0xDF, 0x03, 0x88, 0x93, 0xE5, 0x6C, 0x31, 0x6B, 0x0A, 0x91, 0x52, 0xD2, 0xFB, + 0x38, 0x6B, 0xDD, 0x30, 0x7A, 0x21, 0x08, 0x20, 0x22, 0x62, 0x21, 0x0A, 0x21, 0x55, 0xCE, 0x2C, + 0x16, 0xED, 0x76, 0xD7, 0x35, 0x4D, 0xB5, 0x98, 0x35, 0x46, 0x2B, 0x1F, 0xD3, 0xF3, 0x67, 0x67, + 0xDE, 0x87, 0xBE, 0x5B, 0x2F, 0xE6, 0xCD, 0xCD, 0xDD, 0xEA, 0xFF, 0xFA, 0xF7, 0x3F, 0xBE, 0xBA, + 0x5E, 0x4B, 0xA5, 0xDE, 0xBD, 0xBD, 0x16, 0x00, 0x75, 0x55, 0x39, 0xEB, 0xE6, 0x8B, 0x39, 0x08, + 0x10, 0x85, 0xF6, 0x5D, 0x67, 0xAD, 0xF6, 0xDE, 0x5B, 0x63, 0x4A, 0x29, 0x00, 0x78, 0x32, 0x6B, + 0x3F, 0xF8, 0xC6, 0xB3, 0x90, 0xD2, 0x97, 0x6F, 0x6F, 0x53, 0xCA, 0x37, 0x77, 0x0F, 0xFB, 0x7D, + 0x47, 0x44, 0x0C, 0xAE, 0x9F, 0x9C, 0xCC, 0x39, 0x74, 0x92, 0x84, 0xE0, 0xB4, 0x60, 0x00, 0x08, + 0x31, 0x6D, 0xF7, 0xFD, 0xFF, 0xFD, 0x6F, 0xFE, 0x8F, 0x5F, 0xFE, 0xEC, 0x47, 0x84, 0x80, 0x28, + 0xB7, 0xEB, 0x95, 0x73, 0x6E, 0xBB, 0xBA, 0x4D, 0xFD, 0xBE, 0x2B, 0x18, 0x62, 0x7C, 0xEF, 0xF9, + 0xC5, 0x72, 0xD1, 0x8E, 0x63, 0x70, 0xCE, 0x02, 0xE0, 0x7E, 0xD7, 0xA5, 0x9C, 0xAB, 0xDA, 0xE5, + 0x5C, 0xF6, 0xEB, 0x35, 0xE7, 0x92, 0x71, 0x57, 0x2B, 0xD5, 0xA4, 0xFC, 0x54, 0x49, 0x2A, 0x25, + 0x79, 0x56, 0xAF, 0x9C, 0x15, 0x20, 0x54, 0x65, 0x67, 0x4D, 0xCD, 0x06, 0xF9, 0x21, 0xC6, 0x31, + 0x84, 0x59, 0x5D, 0x23, 0x40, 0x48, 0x79, 0x8C, 0x49, 0xF4, 0x63, 0x4C, 0x21, 0xE7, 0x22, 0x51, + 0x69, 0x25, 0x53, 0x4E, 0x2C, 0x78, 0x00, 0xC0, 0x71, 0x0C, 0x56, 0x2B, 0xAB, 0x4D, 0x29, 0xC5, + 0xC7, 0x28, 0x09, 0x59, 0x98, 0x12, 0x73, 0x3A, 0x1E, 0x95, 0x8C, 0x77, 0x3A, 0x6B, 0x38, 0xF3, + 0x7D, 0x31, 0x6B, 0x47, 0x1F, 0xFA, 0x61, 0x9C, 0xCD, 0x1A, 0x29, 0x65, 0x4A, 0xB9, 0xB1, 0x36, + 0xA6, 0x28, 0x84, 0xA8, 0xEB, 0x0A, 0x40, 0x38, 0xA7, 0x11, 0x71, 0xBB, 0xEB, 0x95, 0xC2, 0xE5, + 0x72, 0x86, 0x12, 0xE5, 0x5E, 0x86, 0xC9, 0xC1, 0xB1, 0x68, 0xAD, 0xAD, 0x56, 0xF3, 0x59, 0xF3, + 0xFC, 0xD9, 0xF9, 0xED, 0xDD, 0x43, 0x53, 0x57, 0xCF, 0x2F, 0x4F, 0x4F, 0x96, 0x73, 0x04, 0xB4, + 0x4E, 0xD7, 0x95, 0xD5, 0x5A, 0xB3, 0xF2, 0x0E, 0x40, 0x68, 0x23, 0xB5, 0xD6, 0x48, 0x90, 0x0E, + 0x96, 0xD9, 0xF8, 0x04, 0xC1, 0x3E, 0xDE, 0x0B, 0x42, 0x3C, 0x7A, 0x45, 0x1D, 0xBC, 0x37, 0x05, + 0x6B, 0x40, 0x29, 0x3D, 0xD2, 0xB3, 0xB9, 0x54, 0x95, 0x83, 0x19, 0x3F, 0x4D, 0xAB, 0x12, 0x16, + 0x0E, 0xE0, 0xE9, 0x72, 0x1E, 0x53, 0xDE, 0x77, 0x5D, 0x08, 0x91, 0x84, 0x98, 0xB7, 0xB3, 0x98, + 0xD2, 0xE0, 0xC3, 0x18, 0x02, 0x95, 0x12, 0x7D, 0x80, 0x22, 0x62, 0x8A, 0xC0, 0x94, 0x73, 0x12, + 0x46, 0x4A, 0x2A, 0xA5, 0x6D, 0x6B, 0x21, 0x70, 0xB3, 0xDB, 0xB2, 0x8B, 0x4B, 0x21, 0x92, 0x88, + 0x46, 0x52, 0x0A, 0x71, 0x1B, 0x93, 0x36, 0x0A, 0x51, 0xB6, 0xAD, 0x96, 0x28, 0xC7, 0x71, 0x04, + 0x00, 0x25, 0x41, 0x6A, 0x23, 0x6B, 0xDC, 0x6D, 0xBB, 0x93, 0xE5, 0x7C, 0x7E, 0x7E, 0xBA, 0xDD, + 0x75, 0xFF, 0xF1, 0x47, 0x3F, 0xFB, 0x67, 0x7F, 0xF1, 0x77, 0xB5, 0x56, 0xCE, 0x39, 0xBE, 0x4B, + 0x63, 0x4C, 0x13, 0x2D, 0xF9, 0xF1, 0xB0, 0x9F, 0xFC, 0xD6, 0x8F, 0x4D, 0xC1, 0x53, 0xB6, 0x54, + 0x79, 0x14, 0x66, 0x1F, 0x5A, 0x09, 0x10, 0xAB, 0xF5, 0xF6, 0xF4, 0x74, 0x59, 0xA8, 0x80, 0x10, + 0xDE, 0xC7, 0x18, 0xB2, 0xD2, 0x52, 0x2B, 0xA5, 0x95, 0xAC, 0x2B, 0x57, 0x57, 0x2E, 0x97, 0x42, + 0xA5, 0xA4, 0x5C, 0x36, 0x9B, 0x9D, 0x20, 0xD1, 0xF5, 0x43, 0x55, 0x39, 0x44, 0x2C, 0x85, 0x9C, + 0x35, 0xA5, 0x08, 0xDE, 0x2A, 0x1E, 0x66, 0xC3, 0x92, 0x4B, 0xB9, 0xBB, 0xBD, 0x7F, 0xFB, 0xF6, + 0x96, 0x39, 0xB7, 0xB5, 0xB3, 0x24, 0xC4, 0x62, 0xD1, 0xEE, 0x76, 0x5D, 0x53, 0x57, 0xFF, 0xF5, + 0x3F, 0xF9, 0xFB, 0x0F, 0x0F, 0x9B, 0xBF, 0xFA, 0xEB, 0x9F, 0x1A, 0xA5, 0xA4, 0x92, 0xE3, 0x18, + 0xF6, 0xBA, 0x17, 0x00, 0x52, 0xB6, 0xDC, 0x6A, 0xB0, 0x1B, 0xCA, 0xB1, 0xCD, 0x3C, 0x36, 0x40, + 0xC7, 0x1E, 0x8B, 0x3B, 0x6E, 0x46, 0x00, 0x8F, 0xAF, 0xFA, 0x89, 0x06, 0xA0, 0x3C, 0xE9, 0xE3, + 0x26, 0x3C, 0x97, 0x2B, 0x22, 0x03, 0x41, 0x29, 0x25, 0xD6, 0x9C, 0x20, 0x62, 0x7E, 0x7C, 0xC0, + 0xA3, 0x8A, 0x40, 0x30, 0x09, 0xAC, 0x10, 0x81, 0x28, 0x04, 0x64, 0xB4, 0x3A, 0xBE, 0x63, 0x93, + 0xAB, 0x0F, 0x9B, 0xB9, 0x02, 0xDB, 0xD2, 0x89, 0x63, 0x51, 0x05, 0x10, 0x88, 0xA2, 0x1C, 0x94, + 0xE1, 0x5F, 0xC5, 0xED, 0x88, 0xB3, 0x61, 0x40, 0x29, 0xB9, 0xDD, 0xF5, 0xBF, 0xFA, 0xED, 0x6B, + 0xE7, 0x2C, 0x1B, 0x1C, 0xB3, 0xB6, 0xD9, 0x59, 0xB3, 0xEB, 0xFA, 0x59, 0x53, 0x9D, 0x9E, 0x2C, + 0xD6, 0x9B, 0x9D, 0xD1, 0xE6, 0x5D, 0xF7, 0xF0, 0xB0, 0xDE, 0x6D, 0x77, 0xC3, 0xB3, 0x8B, 0xE5, + 0xC5, 0xD9, 0x72, 0xD6, 0x36, 0xC6, 0xC4, 0x7E, 0x18, 0x10, 0x90, 0x7B, 0x01, 0x8E, 0x0B, 0x02, + 0x21, 0x50, 0xAB, 0xA6, 0x76, 0x21, 0x44, 0x1F, 0x53, 0x3F, 0xF8, 0x5C, 0xCA, 0xE8, 0xC3, 0x9B, + 0xAB, 0x70, 0x71, 0xB6, 0x20, 0x41, 0x3F, 0xFA, 0xE9, 0x6F, 0xFE, 0xDD, 0x7F, 0xFC, 0xE9, 0x6A, + 0xBD, 0xBD, 0xBC, 0x38, 0xEB, 0xBA, 0xA1, 0xAE, 0x6A, 0x94, 0xDC, 0x35, 0x92, 0x02, 0xF9, 0x70, + 0x77, 0xEF, 0xBD, 0x77, 0xCE, 0x4A, 0x39, 0xBF, 0x5F, 0x6D, 0x24, 0xC2, 0x7C, 0xD6, 0x1A, 0xAD, + 0x4E, 0x4E, 0x5A, 0x21, 0xC4, 0xAB, 0x2F, 0xAF, 0xC7, 0xD1, 0xEF, 0xBB, 0x81, 0xD3, 0xA1, 0x01, + 0xE0, 0xEA, 0xFA, 0x16, 0x11, 0x58, 0x1E, 0x3C, 0x6B, 0x1A, 0x86, 0x00, 0xBB, 0x7E, 0x1C, 0x7D, + 0x18, 0x7D, 0xFA, 0xF5, 0xAF, 0x7E, 0xF1, 0x37, 0x3F, 0xF9, 0xEB, 0x67, 0xCF, 0x5F, 0xE6, 0x18, + 0x52, 0x8A, 0x31, 0x85, 0xD3, 0xD3, 0x8B, 0x9C, 0x13, 0xC4, 0xEE, 0xBD, 0x6F, 0x7C, 0x47, 0x22, + 0xCD, 0x9A, 0x26, 0xE5, 0x1C, 0x73, 0x12, 0x24, 0x94, 0x92, 0x4A, 0xAB, 0x8B, 0xF3, 0xD3, 0x71, + 0xF4, 0x5F, 0xBC, 0xFA, 0x32, 0xE7, 0x89, 0x86, 0x93, 0x79, 0x89, 0x59, 0x48, 0x48, 0x64, 0xAB, + 0xE8, 0xD3, 0xF9, 0x2C, 0xC4, 0x88, 0x88, 0x0A, 0x71, 0xDE, 0xD4, 0x12, 0x85, 0x95, 0x32, 0x1C, + 0x3A, 0x14, 0x6B, 0x4C, 0x2E, 0x25, 0x11, 0xF5, 0x3E, 0xA4, 0x94, 0xD0, 0xD9, 0x94, 0x0B, 0x95, + 0x22, 0x25, 0x29, 0x25, 0x01, 0x05, 0x5F, 0x67, 0xA9, 0xC4, 0x7E, 0xF0, 0xD9, 0x6A, 0x09, 0x50, + 0x40, 0x74, 0x83, 0x57, 0x12, 0xA5, 0xC4, 0x18, 0x12, 0xF3, 0xE6, 0x01, 0x90, 0xC3, 0xC3, 0xF9, + 0xB6, 0xE1, 0x55, 0xD4, 0x62, 0xD6, 0x9C, 0x2C, 0x66, 0x1C, 0xC2, 0x69, 0x8C, 0x46, 0x80, 0x54, + 0xB2, 0x0F, 0xD1, 0x59, 0xCD, 0xAA, 0x72, 0x00, 0x08, 0x21, 0x0A, 0x2D, 0x00, 0x54, 0x8C, 0x49, + 0x6B, 0xD5, 0xB6, 0x4D, 0x4A, 0xB6, 0x4E, 0x29, 0xA6, 0xC4, 0x9E, 0x53, 0x4D, 0xE5, 0x9C, 0x51, + 0x1F, 0x7D, 0xFB, 0x7D, 0x25, 0x55, 0x5D, 0xBB, 0xE5, 0xBC, 0x05, 0x04, 0xF6, 0x7A, 0xD5, 0x46, + 0x4D, 0x94, 0x7D, 0x98, 0x4A, 0x52, 0x11, 0xD3, 0x9E, 0xFE, 0xB8, 0x95, 0xE7, 0x03, 0xF4, 0x78, + 0x3F, 0x1C, 0xBA, 0xB1, 0x69, 0xDF, 0x24, 0x84, 0x90, 0x12, 0x65, 0xC1, 0xC9, 0x27, 0x3A, 0x0A, + 0x16, 0x75, 0x29, 0x25, 0x8D, 0xD6, 0x82, 0x44, 0x08, 0x01, 0x40, 0x68, 0xAD, 0xB8, 0xDF, 0x11, + 0x30, 0x89, 0x4F, 0x8D, 0xD1, 0x75, 0xE5, 0x26, 0x0E, 0x11, 0x1B, 0x2A, 0x10, 0x19, 0xA5, 0xB3, + 0x80, 0x18, 0x63, 0x2E, 0x23, 0x22, 0x0A, 0xCA, 0x28, 0x10, 0x04, 0x31, 0xAB, 0x66, 0xB7, 0xDB, + 0x77, 0xD0, 0x97, 0x52, 0x0E, 0x9C, 0x74, 0xF6, 0xA8, 0x17, 0x5A, 0x49, 0x22, 0x4E, 0xFE, 0x11, + 0x54, 0x08, 0x51, 0xB4, 0x4D, 0xAD, 0x95, 0x24, 0x22, 0x67, 0x6D, 0xCE, 0xB9, 0x76, 0xF6, 0xF2, + 0xFC, 0xF4, 0xE5, 0xF3, 0x33, 0xEF, 0xE3, 0x6E, 0xDF, 0xB3, 0x10, 0xD8, 0x7B, 0x4F, 0x85, 0xA4, + 0x92, 0x4C, 0x0A, 0xE5, 0xFB, 0x13, 0x00, 0xD4, 0x24, 0x53, 0x7D, 0xC4, 0x7A, 0x9E, 0xC0, 0x5E, + 0x07, 0xC6, 0xD3, 0xA1, 0xC0, 0x1D, 0x09, 0xAB, 0xDF, 0xFD, 0xF6, 0xFB, 0x5C, 0x0D, 0x85, 0x10, + 0x31, 0xC6, 0xE0, 0x63, 0x4E, 0x74, 0xC0, 0x79, 0x31, 0xE5, 0x9C, 0x52, 0x2E, 0x99, 0x10, 0xE1, + 0x64, 0x3E, 0x2B, 0xB9, 0xB4, 0x6D, 0xBD, 0xD9, 0xED, 0x72, 0xCC, 0xA7, 0x27, 0xCB, 0x31, 0xA6, + 0x52, 0x4A, 0x55, 0x39, 0x00, 0x01, 0x88, 0x3E, 0x84, 0xA6, 0x72, 0xFD, 0xAE, 0xBB, 0x7A, 0x7B, + 0x7B, 0x7B, 0xB7, 0x92, 0x38, 0x25, 0x24, 0x75, 0xFD, 0x70, 0x75, 0x75, 0x0D, 0x02, 0xBE, 0xF5, + 0xE1, 0x37, 0x16, 0xF3, 0xD9, 0xF5, 0xF5, 0x9D, 0xB5, 0xBA, 0x69, 0x6B, 0x46, 0x45, 0x11, 0x38, + 0x98, 0x4A, 0x4C, 0x15, 0x87, 0x4B, 0xC6, 0xA1, 0x9B, 0x11, 0x07, 0x64, 0xEA, 0xD8, 0x63, 0x1E, + 0xF7, 0xE6, 0xE5, 0x20, 0x63, 0x7A, 0x3A, 0x81, 0x4E, 0xF4, 0x0B, 0x9A, 0x1C, 0xE4, 0x98, 0x7A, + 0x72, 0xF0, 0x58, 0xA6, 0x9C, 0x4B, 0xDF, 0x8F, 0x29, 0x27, 0xD6, 0x4E, 0xB3, 0x3D, 0xAD, 0x94, + 0x12, 0x51, 0x00, 0x16, 0x44, 0x28, 0x99, 0xB1, 0xA0, 0x49, 0xE1, 0x04, 0x6C, 0x6C, 0xC5, 0x4C, + 0xFF, 0xC9, 0xFA, 0x45, 0xF0, 0xE3, 0xE7, 0x9C, 0xF8, 0x8A, 0xE2, 0xF3, 0x1E, 0xA7, 0x7D, 0x28, + 0x32, 0x63, 0x0D, 0x9F, 0xFC, 0xF2, 0xFC, 0xFB, 0xCB, 0xFF, 0xF9, 0x5F, 0xFF, 0x6B, 0xFE, 0xF4, + 0xFF, 0x9F, 0xFF, 0xF0, 0x8B, 0xAE, 0xF7, 0xB3, 0xA6, 0x8E, 0xA9, 0x84, 0x98, 0xBA, 0x6E, 0x38, + 0x59, 0xCE, 0x18, 0xA4, 0x6C, 0xDB, 0x1A, 0x40, 0x48, 0xA9, 0xF6, 0xDD, 0x30, 0x8E, 0xC1, 0x39, + 0x27, 0x00, 0x42, 0x4C, 0x31, 0x66, 0x40, 0x31, 0x6F, 0xEB, 0x9C, 0xCB, 0xBE, 0x1B, 0xB5, 0x56, + 0xD6, 0x6A, 0xE7, 0x6C, 0x53, 0x57, 0x28, 0xA5, 0x73, 0xB6, 0xAA, 0x2B, 0x22, 0xA1, 0x94, 0x0A, + 0x21, 0x19, 0xAD, 0xAB, 0xBA, 0xEA, 0xFB, 0xF1, 0xEA, 0xDD, 0xDD, 0x2F, 0x3E, 0xFE, 0xEC, 0x27, + 0xBF, 0xF8, 0x24, 0xC4, 0xAC, 0x94, 0xDC, 0xED, 0x7A, 0x22, 0xAA, 0x2A, 0xE7, 0x7D, 0xE8, 0x87, + 0x01, 0x41, 0xE4, 0x18, 0xEA, 0xDA, 0xC5, 0x14, 0x87, 0xD1, 0x33, 0xF5, 0xA1, 0x94, 0xEC, 0x8C, + 0xF9, 0xFE, 0x77, 0xBE, 0x79, 0x7A, 0xBA, 0xB8, 0xB9, 0x5B, 0x5F, 0xBD, 0xBB, 0x15, 0x08, 0x31, + 0x04, 0x44, 0xE9, 0x9C, 0xD5, 0x5A, 0xB7, 0x4D, 0xF5, 0xC1, 0xFB, 0x2F, 0x4E, 0x4E, 0xE6, 0xC3, + 0x10, 0x86, 0x61, 0x0C, 0x31, 0x75, 0xFD, 0xE0, 0x7D, 0xD8, 0x77, 0x23, 0x4A, 0x19, 0xC7, 0xDD, + 0xF5, 0xF5, 0xF5, 0xC5, 0xC5, 0xB3, 0x93, 0x93, 0x65, 0x55, 0xB9, 0xBA, 0x69, 0x5E, 0x3C, 0x7F, + 0x96, 0x87, 0xDD, 0xC2, 0xE8, 0xE6, 0xFC, 0x65, 0x55, 0xD9, 0x61, 0xF4, 0xD7, 0xB7, 0x2B, 0xA5, + 0x14, 0xFB, 0x5F, 0x0B, 0x21, 0x46, 0x1F, 0x3E, 0xFF, 0xE2, 0xCD, 0xF5, 0xED, 0x3D, 0x02, 0x56, + 0xCE, 0xA6, 0x54, 0x68, 0xB2, 0xDF, 0x11, 0x4C, 0x95, 0x12, 0x4C, 0xCB, 0xCE, 0xD9, 0x4C, 0xD6, + 0x54, 0xD9, 0x19, 0x2B, 0x11, 0x0B, 0x51, 0x37, 0x8C, 0x85, 0x0A, 0x09, 0x18, 0x43, 0x14, 0x08, + 0xA3, 0x0F, 0xB3, 0xB6, 0xD1, 0x0A, 0x95, 0x92, 0xCE, 0x5A, 0x89, 0x18, 0x52, 0x1A, 0x43, 0xCC, + 0xB9, 0x84, 0x94, 0x0F, 0x90, 0x13, 0x68, 0x2D, 0x63, 0x8C, 0xFD, 0x30, 0x1A, 0xA3, 0x94, 0xC4, + 0x52, 0x88, 0xD1, 0x59, 0x00, 0x28, 0x82, 0x98, 0x59, 0x32, 0xFA, 0xC0, 0x40, 0xF5, 0x18, 0x22, + 0x23, 0x47, 0x25, 0xE7, 0x94, 0x92, 0x44, 0x3C, 0x5D, 0xCE, 0x3E, 0x78, 0xF9, 0x62, 0x3E, 0x6B, + 0x4A, 0x29, 0xD6, 0x18, 0x29, 0xD1, 0x28, 0x05, 0x62, 0x4A, 0xE1, 0x04, 0x10, 0x9C, 0x0B, 0x55, + 0xD7, 0x55, 0xE5, 0x6C, 0x29, 0xD9, 0x39, 0x7B, 0x76, 0xB2, 0xA8, 0xAC, 0x6D, 0x6A, 0xD7, 0xD4, + 0x95, 0xD1, 0xBA, 0x72, 0xC6, 0x59, 0x63, 0x8C, 0x92, 0x6A, 0x52, 0xA5, 0xE0, 0x94, 0xB1, 0x0C, + 0xE2, 0xE0, 0x3E, 0x3A, 0x9D, 0x9C, 0x4F, 0x66, 0x28, 0x98, 0xEC, 0x9E, 0xE0, 0x28, 0x62, 0x43, + 0x96, 0x14, 0x1D, 0x28, 0xD3, 0xC8, 0x76, 0x63, 0xD3, 0x86, 0xAE, 0x30, 0xD5, 0x52, 0x2A, 0x94, + 0x52, 0xE2, 0xC1, 0x6B, 0x57, 0x49, 0xA5, 0x95, 0x44, 0x40, 0x56, 0xE1, 0x30, 0x39, 0x5C, 0x6B, + 0x15, 0x53, 0x4E, 0x29, 0xC5, 0x98, 0x04, 0xD1, 0xC4, 0x2E, 0x9D, 0xEE, 0x34, 0x92, 0x52, 0x09, + 0x21, 0xB4, 0x52, 0xFC, 0xCE, 0x30, 0x57, 0xB2, 0x94, 0x62, 0x8C, 0xAA, 0x6A, 0x27, 0x88, 0x72, + 0xCE, 0x3C, 0x31, 0x38, 0xE7, 0x9A, 0xCA, 0x6A, 0xA9, 0x08, 0xE0, 0xE0, 0xFC, 0xC1, 0xFD, 0x21, + 0x55, 0xCE, 0x5D, 0x9E, 0x9F, 0x28, 0x25, 0xDF, 0x7B, 0x7E, 0x51, 0x4A, 0x79, 0xF5, 0xE6, 0xFA, + 0xF2, 0xFC, 0x84, 0xEF, 0x28, 0x7E, 0x69, 0x13, 0xC1, 0xE2, 0xC9, 0xDF, 0x8F, 0xB8, 0xF5, 0x93, + 0xF2, 0xFD, 0x08, 0x1B, 0x3D, 0xC5, 0x9E, 0x98, 0xCB, 0x2A, 0x04, 0xC4, 0x34, 0x65, 0x57, 0x23, + 0xE2, 0xC1, 0x6A, 0x01, 0xA5, 0x7C, 0x7C, 0xC7, 0xF8, 0x92, 0xE3, 0x08, 0xD4, 0x59, 0x53, 0x0F, + 0xC3, 0x18, 0x52, 0xAA, 0xAC, 0xDD, 0xED, 0xBB, 0x31, 0x04, 0x21, 0x84, 0x54, 0x72, 0xB5, 0xDE, + 0x0A, 0x01, 0xFD, 0x30, 0x7E, 0xF1, 0xFA, 0x6A, 0xB5, 0xDA, 0xAE, 0x56, 0x9B, 0xA6, 0xA9, 0xA5, + 0xC4, 0x97, 0x2F, 0x2F, 0xE7, 0xB3, 0x76, 0x18, 0xBD, 0xB5, 0xA6, 0xEF, 0xC7, 0xBB, 0xBB, 0x07, + 0xEF, 0xBD, 0xAB, 0xEC, 0x72, 0x3E, 0x33, 0x5A, 0x39, 0x6B, 0x9A, 0xA6, 0x52, 0x5A, 0x31, 0xAB, + 0x99, 0x04, 0x70, 0x01, 0xE1, 0x52, 0x5F, 0x0E, 0x66, 0x96, 0x4F, 0x60, 0xB2, 0xE3, 0xAB, 0x11, + 0x4F, 0x2B, 0x32, 0x11, 0x31, 0x52, 0x3C, 0xFA, 0xC8, 0xE9, 0xDD, 0x31, 0x71, 0x86, 0x77, 0xE2, + 0x7E, 0x29, 0xA5, 0x12, 0x42, 0x8A, 0x31, 0x8E, 0x3E, 0x6C, 0x77, 0x5D, 0x3F, 0xFA, 0x18, 0xD3, + 0x6E, 0xDF, 0xE7, 0x42, 0xB9, 0x94, 0x54, 0x32, 0x91, 0x60, 0x0D, 0x53, 0xC8, 0xC9, 0xC7, 0x14, + 0xC2, 0x94, 0x7B, 0x92, 0x52, 0x49, 0x39, 0x33, 0xE6, 0x4F, 0x45, 0xE4, 0x5C, 0x52, 0x2E, 0x39, + 0xE7, 0x10, 0xF8, 0x03, 0x3F, 0x9E, 0x10, 0x8F, 0x8D, 0xBF, 0x98, 0x04, 0x02, 0x30, 0x55, 0x3D, + 0x4E, 0x83, 0x2D, 0x85, 0x66, 0x8D, 0xFB, 0xF8, 0xD3, 0xAB, 0xCF, 0x5E, 0xDF, 0xBE, 0x7C, 0x76, + 0x76, 0xF5, 0xF6, 0x5E, 0x1B, 0xAD, 0xB5, 0x0C, 0x39, 0x0F, 0x63, 0x38, 0x3F, 0x5B, 0x08, 0x21, + 0x62, 0xCA, 0xEB, 0xCD, 0x7E, 0xD6, 0xD6, 0xC6, 0x68, 0xE6, 0xE8, 0x97, 0x03, 0x83, 0x4E, 0x08, + 0x08, 0x21, 0x29, 0xA9, 0x4E, 0x16, 0xB3, 0x10, 0xE3, 0x7A, 0xB3, 0x37, 0x5A, 0xCD, 0xDA, 0x3C, + 0x9B, 0x35, 0x29, 0xE5, 0xD1, 0x07, 0x40, 0x88, 0x31, 0x2D, 0x17, 0x2D, 0x22, 0xFE, 0xFE, 0xF3, + 0x2F, 0x7F, 0xF7, 0xD9, 0x9B, 0xF5, 0x66, 0xA7, 0x95, 0x9A, 0xB7, 0x4D, 0x7F, 0xFB, 0xC0, 0xDC, + 0x2B, 0x25, 0xD5, 0x7E, 0xBF, 0xDF, 0x6C, 0xF7, 0x08, 0xA0, 0x50, 0xBC, 0xF7, 0xFC, 0x72, 0xBD, + 0xDD, 0xD5, 0x95, 0x33, 0xDA, 0x74, 0x5D, 0xEF, 0x9C, 0xFD, 0xE3, 0x3F, 0xF8, 0xDE, 0xE5, 0xF9, + 0xC9, 0xD9, 0xE9, 0xD2, 0x39, 0x73, 0xFF, 0xB0, 0x71, 0xD6, 0x94, 0x92, 0x4F, 0x4F, 0x96, 0xEF, + 0xBD, 0xB8, 0xFC, 0xD9, 0xAF, 0x7E, 0x2B, 0x01, 0xFE, 0xFE, 0xDF, 0xFD, 0x21, 0x77, 0xE9, 0xD6, + 0x9A, 0x9C, 0xCB, 0xED, 0xFD, 0xBA, 0x14, 0x5A, 0xCC, 0x5B, 0xA5, 0x94, 0xD6, 0xFA, 0xF9, 0xE5, + 0xDF, 0x9B, 0xCD, 0x17, 0x45, 0xC8, 0x90, 0x8A, 0xC5, 0xF2, 0x70, 0xF5, 0xDB, 0xFB, 0xF5, 0xAE, + 0xF8, 0xFE, 0xF6, 0xED, 0x6B, 0xFB, 0xE2, 0xA3, 0x5D, 0x5F, 0x83, 0x60, 0xE5, 0xB6, 0x16, 0x00, + 0xFD, 0x30, 0xF6, 0xC3, 0xF8, 0xC5, 0xAB, 0x37, 0xF7, 0xF7, 0xAB, 0xCA, 0x5A, 0xE4, 0xEC, 0xDB, + 0x54, 0xB4, 0x96, 0xB9, 0xE4, 0x10, 0x32, 0x5B, 0xA7, 0x12, 0x09, 0xAD, 0x65, 0x89, 0xB1, 0x1B, + 0x06, 0x67, 0xCC, 0xAC, 0xA9, 0x84, 0xA0, 0x10, 0xA3, 0x0F, 0x41, 0x08, 0x52, 0x52, 0xFB, 0x18, + 0x53, 0xCA, 0x80, 0xA0, 0x8D, 0x0E, 0x21, 0x00, 0x68, 0xDE, 0xE2, 0x03, 0x88, 0x74, 0x50, 0x71, + 0x3B, 0xAB, 0x63, 0x2A, 0x39, 0x8F, 0x46, 0x6B, 0x29, 0x25, 0x20, 0x2A, 0xE5, 0xB5, 0x56, 0xE7, + 0xCB, 0x79, 0x37, 0x8C, 0xDB, 0x5D, 0x07, 0x12, 0x11, 0xC1, 0x80, 0x8A, 0x71, 0x4A, 0xB4, 0xE4, + 0xBF, 0xF4, 0x43, 0x30, 0xDA, 0xB4, 0x75, 0x15, 0x82, 0x4A, 0xA5, 0x84, 0x10, 0x2A, 0x57, 0x19, + 0xAD, 0x63, 0x4A, 0x95, 0xB3, 0xC3, 0x30, 0xB2, 0x64, 0x8F, 0x2D, 0x59, 0x10, 0xB1, 0xA9, 0x1D, + 0x22, 0x4A, 0xE9, 0x2A, 0x67, 0x7C, 0x88, 0x4A, 0x49, 0x67, 0x8D, 0x33, 0x46, 0x4A, 0xA4, 0xC3, + 0xF5, 0x8A, 0x88, 0x4A, 0x4B, 0xD6, 0xE5, 0xE1, 0x63, 0xB0, 0xD5, 0x63, 0xB0, 0xCD, 0xD3, 0x6B, + 0xFC, 0x38, 0x6D, 0x3D, 0xFD, 0xF7, 0xE3, 0x21, 0x7F, 0x2C, 0x76, 0xEC, 0x00, 0x23, 0x84, 0x00, + 0x50, 0x5A, 0x49, 0xAD, 0x25, 0xE7, 0x72, 0x01, 0xA2, 0xD1, 0x3A, 0x1F, 0xAD, 0xE2, 0xA5, 0x64, + 0x0D, 0x06, 0x11, 0x0D, 0x3E, 0x30, 0xEA, 0x7A, 0x58, 0x6E, 0x22, 0x00, 0xF4, 0xE3, 0x20, 0x68, + 0x02, 0xD4, 0xEB, 0xDA, 0xB6, 0x4D, 0x93, 0x72, 0xD9, 0xEF, 0x7B, 0x67, 0x0D, 0x08, 0x31, 0x7A, + 0x41, 0xA5, 0x48, 0x85, 0x75, 0x55, 0xB5, 0x4D, 0xAD, 0x94, 0x4A, 0x75, 0xBD, 0xDB, 0xEF, 0xF7, + 0xDD, 0x40, 0x44, 0xDE, 0x7B, 0x89, 0xCE, 0x3A, 0xAD, 0x8B, 0x18, 0x47, 0x8F, 0x38, 0x0D, 0x41, + 0xF3, 0x59, 0x9B, 0x73, 0x7E, 0x73, 0x75, 0x23, 0x25, 0x5A, 0x6B, 0xA4, 0x52, 0xC3, 0x6E, 0xFF, + 0xF9, 0x17, 0x5F, 0x3E, 0xBB, 0x38, 0x5D, 0x2C, 0xE7, 0xC6, 0x9A, 0x18, 0x53, 0x08, 0x81, 0x4D, + 0x99, 0xC4, 0x21, 0x07, 0x44, 0x7C, 0xD5, 0x1D, 0xF0, 0xD8, 0x6D, 0x1D, 0x4B, 0x15, 0x1D, 0x82, + 0x97, 0x88, 0xFB, 0x1A, 0x2A, 0xA5, 0x94, 0x31, 0x66, 0xDE, 0x81, 0xF2, 0xD0, 0x44, 0xA5, 0x8C, + 0x23, 0x07, 0xEC, 0x14, 0xAE, 0x9A, 0x12, 0x51, 0x2B, 0x49, 0x54, 0xAE, 0xDE, 0xDE, 0x18, 0x6B, + 0xDA, 0xA6, 0xD9, 0x77, 0x3D, 0x02, 0x08, 0x94, 0xC3, 0xE8, 0x99, 0x12, 0xD8, 0x54, 0xEE, 0xEA, + 0xFA, 0x96, 0x2B, 0xCB, 0x3F, 0xFF, 0xAF, 0xFE, 0xE1, 0xAC, 0x6D, 0xBA, 0x7E, 0xF8, 0xF2, 0xED, + 0x8D, 0x00, 0x3C, 0x3B, 0x5D, 0x72, 0xE4, 0xCA, 0xF5, 0xCD, 0xDD, 0xF7, 0x3F, 0xFA, 0x56, 0xD7, + 0x0D, 0xC4, 0xDC, 0x49, 0xAD, 0x00, 0xA5, 0xF7, 0x71, 0x24, 0x6F, 0x8D, 0xD6, 0x5A, 0x23, 0x40, + 0x06, 0xE2, 0x56, 0x52, 0x1C, 0xB6, 0x7C, 0xF4, 0x95, 0x1A, 0x46, 0x44, 0x8F, 0x2F, 0x47, 0x1C, + 0x46, 0x66, 0xA5, 0x54, 0x8C, 0x31, 0xC6, 0xD4, 0x8F, 0xA3, 0x35, 0x5A, 0x29, 0xC5, 0xF6, 0xBC, + 0xBC, 0xFC, 0xE5, 0xC5, 0x85, 0x10, 0x94, 0x53, 0x29, 0x45, 0x74, 0xFD, 0xC0, 0x03, 0x62, 0x95, + 0x32, 0x4A, 0x34, 0x46, 0xB7, 0x75, 0x05, 0x62, 0xC2, 0x7F, 0xF9, 0xF9, 0xF8, 0xAD, 0x1B, 0xC7, + 0x51, 0x29, 0x05, 0x50, 0xE5, 0x29, 0x06, 0x48, 0xF0, 0xEE, 0x3E, 0xE5, 0x5C, 0x0A, 0xA7, 0xCF, + 0x81, 0x25, 0xA3, 0x94, 0x3A, 0x6E, 0x59, 0x0F, 0xA0, 0x04, 0x4E, 0xEC, 0xB3, 0x52, 0x4A, 0x21, + 0xF9, 0xC3, 0xBF, 0xF3, 0xCF, 0xF7, 0xFD, 0xB8, 0xDA, 0x0E, 0xAB, 0x4D, 0xF7, 0x8D, 0xF7, 0x2E, + 0x9A, 0xDA, 0xED, 0xBA, 0xF1, 0xE2, 0x6C, 0xF9, 0xFC, 0xE2, 0xF4, 0x37, 0xBF, 0x7F, 0xB3, 0x5A, + 0xEF, 0xAA, 0xCA, 0xED, 0xF6, 0x03, 0xFB, 0x26, 0x87, 0x18, 0x95, 0x92, 0x24, 0x68, 0xDF, 0x0D, + 0x39, 0xE5, 0x18, 0x53, 0x29, 0xB4, 0xDE, 0xED, 0xDF, 0xDD, 0xAE, 0x4A, 0x29, 0x42, 0xC0, 0x18, + 0x62, 0x8A, 0x39, 0x17, 0xF2, 0xDE, 0xF7, 0x83, 0xF7, 0x21, 0x6A, 0xAD, 0x94, 0x94, 0x77, 0x0F, + 0x9B, 0xFF, 0xF4, 0xB3, 0x8F, 0x7F, 0xFA, 0x8B, 0xDF, 0x0D, 0x63, 0x48, 0x29, 0x87, 0x98, 0x96, + 0xF3, 0x79, 0xED, 0xEC, 0x6A, 0xB3, 0x33, 0x5A, 0x0F, 0x7E, 0x14, 0x42, 0x20, 0x42, 0xCE, 0x09, + 0x05, 0xC4, 0x98, 0xC6, 0x71, 0x9C, 0xCF, 0x66, 0x28, 0x71, 0xBF, 0xEF, 0x2E, 0x2F, 0x4E, 0x3E, + 0xFA, 0xCE, 0x37, 0x67, 0x6D, 0xD5, 0xD4, 0xD5, 0xE8, 0xC3, 0xAB, 0xD7, 0xEF, 0xAE, 0x6F, 0xEE, + 0x4F, 0x4F, 0x16, 0x1F, 0x7D, 0xE7, 0x83, 0x8B, 0xF3, 0xA5, 0x52, 0x6A, 0x3E, 0x6B, 0x9B, 0xA6, + 0xEA, 0x87, 0x91, 0x0F, 0x07, 0x29, 0x25, 0x1B, 0xDA, 0x58, 0x6B, 0x72, 0xCE, 0xD6, 0x9A, 0x94, + 0x4B, 0xDD, 0x2E, 0x8D, 0xAB, 0x62, 0x22, 0x92, 0xF6, 0xF9, 0xD2, 0xDE, 0xDD, 0x5C, 0xE5, 0xB1, + 0x93, 0x94, 0x3F, 0xF8, 0xC1, 0xDF, 0x2E, 0x52, 0xF5, 0xFD, 0xB0, 0x5C, 0xCC, 0x2A, 0x67, 0x7D, + 0x88, 0xDB, 0x5D, 0xFF, 0xF6, 0xDD, 0xED, 0xFD, 0xFD, 0x4A, 0x29, 0x49, 0x02, 0xBA, 0x61, 0x2C, + 0x65, 0xDA, 0xBC, 0x48, 0x89, 0x85, 0x84, 0x8F, 0x01, 0x01, 0x99, 0x0C, 0xE5, 0xAC, 0x71, 0xC6, + 0x4A, 0x39, 0xF9, 0x19, 0xA4, 0xC9, 0x13, 0x00, 0x38, 0xEA, 0x95, 0x7D, 0xF1, 0xFD, 0x18, 0xA4, + 0x44, 0x12, 0x30, 0x0C, 0x9E, 0xD1, 0xA0, 0x61, 0x0C, 0x0C, 0x4B, 0xF0, 0x2E, 0x29, 0x97, 0x52, + 0xD7, 0x56, 0x1E, 0xD0, 0x62, 0x22, 0xF0, 0x31, 0x72, 0xB0, 0x20, 0x90, 0x68, 0xEA, 0x8A, 0x85, + 0x01, 0xE5, 0x00, 0x00, 0xE5, 0x52, 0x88, 0x0A, 0x20, 0xD6, 0x95, 0x6B, 0x6B, 0xC7, 0x8D, 0x89, + 0x9A, 0xC2, 0xC6, 0x49, 0x6B, 0xD9, 0x0D, 0x43, 0xD7, 0x0F, 0x4C, 0x59, 0xB2, 0xD6, 0x2C, 0xE6, + 0x8D, 0xB3, 0xB6, 0x72, 0xC6, 0x1A, 0xAD, 0x95, 0xAA, 0x2B, 0x5B, 0x57, 0xD6, 0x5A, 0x6D, 0xAD, + 0xD6, 0x46, 0x69, 0xA5, 0xB4, 0x56, 0xD6, 0x69, 0xAB, 0x95, 0x54, 0x72, 0x92, 0xA0, 0x1E, 0xC4, + 0x22, 0xB9, 0xE4, 0x94, 0x12, 0xDF, 0x9C, 0x24, 0x1E, 0x17, 0xF6, 0xC7, 0xB2, 0xF5, 0xB4, 0x8A, + 0x3D, 0x8E, 0x99, 0x4F, 0xBF, 0x4F, 0x1C, 0x9A, 0x11, 0x98, 0x62, 0x9B, 0x8F, 0xA8, 0x8C, 0x92, + 0x88, 0x28, 0xC5, 0xC4, 0xC3, 0x28, 0xC4, 0x5B, 0xA0, 0xED, 0x6E, 0xB3, 0xED, 0xC5, 0xC1, 0x56, + 0x81, 0x61, 0x1D, 0x4E, 0x30, 0x50, 0x52, 0x1A, 0xA3, 0x96, 0x8B, 0x45, 0x88, 0x71, 0xB3, 0xD9, + 0x49, 0x29, 0xAD, 0xD1, 0x4D, 0x5D, 0x3D, 0xBF, 0x38, 0x59, 0xCC, 0x6B, 0x86, 0xFC, 0x4A, 0xA1, + 0xAE, 0x1F, 0x01, 0x84, 0xD6, 0x5A, 0x29, 0xE9, 0x9C, 0x45, 0x84, 0xB6, 0xAE, 0x9D, 0xB5, 0x4C, + 0xEC, 0x08, 0x31, 0x30, 0x4E, 0xA4, 0xB5, 0x32, 0xC6, 0x18, 0xA3, 0x2B, 0x6B, 0x87, 0x61, 0x5C, + 0x6D, 0x77, 0xC3, 0x18, 0x6E, 0xEE, 0x36, 0xEB, 0xED, 0x6E, 0xBD, 0xD9, 0xED, 0x77, 0x9D, 0xB3, + 0xDA, 0x1A, 0x7D, 0x8C, 0x05, 0x62, 0xD1, 0xCF, 0xD7, 0xAA, 0x39, 0xCF, 0xDA, 0x4F, 0xFB, 0xD3, + 0x23, 0xEA, 0xAF, 0xB5, 0x36, 0xC6, 0x70, 0xCB, 0x49, 0x44, 0x89, 0xAD, 0x77, 0xD9, 0xC4, 0xC2, + 0x7B, 0x2A, 0x64, 0xB4, 0x9E, 0x7C, 0x0A, 0xA6, 0x9D, 0x09, 0xAC, 0x1E, 0x36, 0x9F, 0x7D, 0xF1, + 0xE6, 0xED, 0xBB, 0x9B, 0x9C, 0xF3, 0x7A, 0xBD, 0xAD, 0x2A, 0x87, 0x08, 0x31, 0xE5, 0xFB, 0xBB, + 0x87, 0xB3, 0xD3, 0x13, 0x00, 0x68, 0xEB, 0xCA, 0x39, 0xFB, 0xAD, 0x6F, 0xBE, 0x77, 0x73, 0xBF, + 0x7A, 0xF5, 0xE6, 0xDD, 0x7E, 0xDF, 0xFF, 0xF2, 0xD7, 0x9F, 0xC6, 0x10, 0x86, 0xDE, 0x6F, 0x36, + 0x3B, 0x94, 0xF8, 0xE7, 0xFF, 0xE8, 0xCF, 0xBE, 0xFD, 0xE1, 0xFB, 0x52, 0xCA, 0xDD, 0xAE, 0x9B, + 0xCF, 0x5B, 0x44, 0xF4, 0x21, 0x70, 0xE7, 0x11, 0x63, 0x46, 0x01, 0xE9, 0x20, 0x9F, 0xA4, 0x89, + 0xA9, 0xCF, 0x1C, 0xD7, 0x09, 0xB3, 0x3F, 0x94, 0x36, 0x12, 0x6C, 0x3A, 0x26, 0x00, 0xE0, 0x2B, + 0x44, 0xFC, 0x10, 0x13, 0xAF, 0xF5, 0x01, 0x60, 0x1C, 0x7D, 0xD7, 0x8D, 0x5D, 0xD7, 0xF7, 0xDC, + 0x80, 0xA5, 0x4C, 0x44, 0x3E, 0x84, 0x5D, 0xD7, 0x97, 0x3C, 0x0D, 0x8F, 0x39, 0xE7, 0x47, 0x54, + 0xEE, 0x10, 0x0C, 0x56, 0x88, 0x38, 0x97, 0x68, 0xDA, 0x9B, 0xE4, 0x92, 0x52, 0xE1, 0xFA, 0xC6, + 0xC3, 0x4D, 0xC9, 0xC5, 0x47, 0xF6, 0xEF, 0x28, 0x62, 0x02, 0x5B, 0xA7, 0xFE, 0xF1, 0x49, 0xFD, + 0x7D, 0x7A, 0xBE, 0x82, 0xFC, 0x07, 0x7F, 0xFE, 0xAF, 0xAE, 0xEF, 0x36, 0xEB, 0x6D, 0x27, 0x25, + 0x10, 0x89, 0xE7, 0x17, 0xA7, 0xCB, 0x45, 0xCB, 0xB5, 0xFC, 0xE5, 0xF3, 0xB3, 0xAE, 0xF7, 0x5D, + 0xEF, 0x97, 0xF3, 0x26, 0xB2, 0x7C, 0x41, 0xEB, 0x87, 0xF5, 0x0E, 0x01, 0xDE, 0x7F, 0xEF, 0x72, + 0xB9, 0x98, 0x35, 0x6D, 0x9D, 0x4B, 0x9E, 0xB7, 0xCD, 0xAC, 0xAD, 0xF7, 0xFB, 0x01, 0x04, 0x1A, + 0xAD, 0x72, 0xA1, 0xF5, 0x7A, 0xBF, 0xEF, 0xC6, 0xAA, 0x72, 0x27, 0x8B, 0x99, 0xB1, 0xE6, 0x6F, + 0x7E, 0xF1, 0xBB, 0x57, 0xAF, 0xDE, 0x3E, 0xAC, 0x76, 0x3C, 0xCF, 0xB3, 0xA5, 0x44, 0x37, 0x0C, + 0xE7, 0x67, 0x8B, 0xF7, 0x5F, 0x3E, 0xEF, 0xFA, 0xDE, 0x68, 0x45, 0xB9, 0x94, 0x94, 0xA5, 0x44, + 0x10, 0x02, 0x01, 0x6E, 0x57, 0xEB, 0x5D, 0xD7, 0xBF, 0xB8, 0x3C, 0x3F, 0x59, 0x2E, 0x9E, 0x5D, + 0x9C, 0x55, 0x95, 0xAD, 0x9C, 0x9D, 0xB5, 0xCD, 0x76, 0xD7, 0x5D, 0x5D, 0xDF, 0xBE, 0x7C, 0x7E, + 0xF1, 0x83, 0xEF, 0x7D, 0x78, 0x76, 0x32, 0x57, 0x4A, 0x5D, 0x9E, 0x9F, 0x2E, 0x97, 0x73, 0x06, + 0x4A, 0x39, 0x16, 0x4C, 0x4A, 0x6C, 0x9B, 0xDA, 0x39, 0x47, 0x44, 0x21, 0xA5, 0x9C, 0x4B, 0x4C, + 0xB9, 0xEB, 0xFB, 0xD5, 0x7A, 0x6B, 0x8C, 0x7A, 0xF9, 0xEC, 0x7C, 0xEE, 0xF0, 0xE1, 0xEE, 0xDA, + 0x77, 0x3D, 0x66, 0xFF, 0xAD, 0xEF, 0xFF, 0xD0, 0xB6, 0x0B, 0xA2, 0xC2, 0xFB, 0x84, 0xFD, 0xBE, + 0x7F, 0xFB, 0xF6, 0xFA, 0xF6, 0xEE, 0x21, 0xA5, 0x84, 0x00, 0x43, 0x88, 0x4A, 0xCA, 0x79, 0x5B, + 0x03, 0xE0, 0x18, 0x02, 0x91, 0xF0, 0x21, 0xF0, 0x98, 0x24, 0x11, 0xB5, 0xD1, 0x46, 0x29, 0xB6, + 0xA8, 0xE6, 0x74, 0x74, 0x00, 0x88, 0x29, 0x73, 0xAD, 0x51, 0x4A, 0xF1, 0xFC, 0x28, 0xA5, 0xAC, + 0x9C, 0x65, 0x2D, 0xB1, 0x75, 0x9A, 0x4B, 0x9E, 0xD1, 0x86, 0xD7, 0xD5, 0xFD, 0xE8, 0xAD, 0xD1, + 0x25, 0xD3, 0xE8, 0x63, 0x3F, 0xF8, 0x18, 0x33, 0x80, 0x88, 0x31, 0xF5, 0x3E, 0x5C, 0x9C, 0x9E, + 0xB4, 0x4D, 0xBD, 0x98, 0xB7, 0x3C, 0x77, 0xB0, 0x7D, 0x05, 0xD3, 0x3E, 0xA4, 0x54, 0x39, 0x25, + 0xA5, 0x25, 0x53, 0x54, 0x7B, 0xEF, 0x83, 0x8F, 0x4C, 0x64, 0x4F, 0x29, 0x73, 0x6B, 0x16, 0x63, + 0x74, 0xD6, 0x31, 0x6B, 0xB4, 0xAE, 0xDC, 0x62, 0xD6, 0x54, 0x95, 0x35, 0x46, 0x59, 0xA3, 0x2B, + 0x67, 0x2B, 0x6B, 0x50, 0xA2, 0x00, 0xE0, 0x90, 0x04, 0x2E, 0x73, 0x88, 0x28, 0xF1, 0xC0, 0x4D, + 0x64, 0x5F, 0xA1, 0x3C, 0x5D, 0x61, 0x54, 0xE8, 0xB0, 0x63, 0x7A, 0xAC, 0x4F, 0xF4, 0x48, 0xA4, + 0x7A, 0x94, 0xA4, 0x4C, 0xE3, 0xD5, 0xD1, 0x7C, 0xE0, 0x78, 0xCA, 0xF3, 0x4F, 0x89, 0x29, 0xBF, + 0x0A, 0x01, 0x14, 0xA2, 0x20, 0x0A, 0x29, 0x31, 0xAB, 0x2B, 0xA7, 0x22, 0x04, 0xE4, 0x94, 0xD8, + 0x0C, 0x2E, 0x84, 0xD8, 0x0F, 0x03, 0xD7, 0x0E, 0xAB, 0xCD, 0xAC, 0xAD, 0x2E, 0x2F, 0xCE, 0xB4, + 0xD6, 0x7C, 0x59, 0x37, 0x75, 0x55, 0x3B, 0x57, 0x3B, 0x67, 0x8C, 0xAE, 0x9D, 0x5D, 0xCC, 0x6A, + 0xA3, 0x14, 0x0A, 0xE1, 0xAC, 0x96, 0x52, 0xF6, 0xC3, 0x18, 0x62, 0xE4, 0x8E, 0xC9, 0x1A, 0x63, + 0xAD, 0xE1, 0x7A, 0xC4, 0xC1, 0x9C, 0xC4, 0x49, 0x4E, 0x08, 0x55, 0xE5, 0x9C, 0xB5, 0x21, 0xA6, + 0xD1, 0x87, 0x94, 0x8A, 0x52, 0x8A, 0x0A, 0x6D, 0x77, 0xDD, 0xFD, 0xC3, 0xE6, 0x93, 0xDF, 0xBF, + 0xF9, 0xDD, 0xEF, 0x5F, 0x6F, 0xF7, 0xFD, 0xE5, 0xF9, 0xA9, 0x56, 0x32, 0xC4, 0xF8, 0xB5, 0x11, + 0x32, 0xA6, 0x94, 0x62, 0x9C, 0xA4, 0x4B, 0x88, 0x47, 0xF3, 0x2D, 0x00, 0x90, 0x07, 0x4B, 0xBD, + 0xE3, 0x97, 0x94, 0x32, 0xC4, 0xB8, 0xEB, 0x7A, 0xA5, 0x25, 0x00, 0x8C, 0xDE, 0xF3, 0xA6, 0xB2, + 0x4C, 0xAD, 0xBD, 0xEA, 0xFB, 0xA1, 0xEF, 0x87, 0xD1, 0x87, 0x94, 0xD2, 0x72, 0x3E, 0x23, 0x21, + 0x9C, 0xB3, 0x24, 0x40, 0x69, 0xE9, 0x47, 0x7F, 0x7E, 0x76, 0xD2, 0xD4, 0x15, 0xCF, 0xAC, 0x28, + 0xE5, 0x4F, 0x7E, 0xFA, 0xF1, 0xCF, 0x7E, 0xF1, 0xBB, 0xFD, 0xBE, 0xBF, 0xBF, 0xDF, 0xB4, 0x6D, + 0xDD, 0xD4, 0x15, 0x08, 0x78, 0xF1, 0xFC, 0xFC, 0xF2, 0xD9, 0xF9, 0x1F, 0xFD, 0xAD, 0xEF, 0x79, + 0x1F, 0x7C, 0x08, 0x27, 0xCB, 0x45, 0xED, 0xEC, 0x76, 0xB7, 0x5F, 0xAD, 0xB6, 0xCC, 0x3A, 0x4C, + 0x29, 0xA5, 0x5C, 0x62, 0xCA, 0xD6, 0x68, 0x2E, 0x64, 0xEC, 0xA6, 0x83, 0x00, 0xB9, 0x90, 0x98, + 0x02, 0x5A, 0xC5, 0x91, 0x23, 0xC6, 0xB7, 0xD2, 0x11, 0x20, 0xCB, 0xA5, 0xE4, 0x5C, 0xF0, 0xD8, + 0x14, 0x09, 0x31, 0x8C, 0xA1, 0x70, 0xDE, 0x28, 0x20, 0x6F, 0x30, 0x73, 0x29, 0x29, 0x15, 0x00, + 0xA1, 0x24, 0x5A, 0x63, 0xB8, 0xB4, 0x6B, 0xAD, 0x39, 0xAA, 0x83, 0x4D, 0x0A, 0x52, 0x4A, 0x25, + 0xA7, 0x9C, 0xA8, 0x64, 0x62, 0xA7, 0xA5, 0x98, 0xCB, 0xBE, 0xEB, 0x52, 0xCA, 0x5A, 0xB1, 0xC6, + 0x9E, 0x65, 0xAA, 0x29, 0xC6, 0x49, 0xAD, 0x0A, 0x07, 0xE0, 0x9F, 0xAF, 0xA3, 0x72, 0xE0, 0xD6, + 0x1E, 0x64, 0x06, 0x42, 0x08, 0x21, 0xFF, 0xC5, 0xBF, 0xFA, 0xEF, 0x77, 0xDD, 0xB8, 0xDA, 0x74, + 0xF3, 0xB6, 0x66, 0xAA, 0xA4, 0x75, 0x46, 0x29, 0xA9, 0xB5, 0xAA, 0x2B, 0xFB, 0xFD, 0xEF, 0xBE, + 0x6F, 0xB4, 0x8A, 0x29, 0xEF, 0xBB, 0xA1, 0x1F, 0x3C, 0x7B, 0x12, 0x9C, 0x9D, 0x2E, 0xDE, 0x7B, + 0x71, 0x3E, 0x9B, 0xD5, 0xF3, 0xB6, 0xAE, 0x6B, 0x17, 0x63, 0x72, 0xC6, 0xF0, 0x2C, 0xB9, 0xDB, + 0x75, 0x29, 0xE7, 0xB6, 0xAD, 0xDF, 0x7F, 0xEF, 0xA2, 0x94, 0xF2, 0xF1, 0xA7, 0xAF, 0xFE, 0xD7, + 0xFF, 0xF3, 0xDF, 0xFF, 0xF2, 0x37, 0x9F, 0x5D, 0x5E, 0x9C, 0x36, 0xB5, 0x8B, 0x29, 0x6D, 0xB6, + 0x1D, 0x09, 0xF0, 0xC1, 0xBF, 0xB8, 0x3C, 0x3B, 0x3F, 0x3B, 0xE1, 0xCB, 0xB4, 0xAA, 0x1C, 0x13, + 0x05, 0x94, 0x52, 0x7F, 0xF4, 0x83, 0x6F, 0xC7, 0x9C, 0x6F, 0xEF, 0xD7, 0xD6, 0x9A, 0xCA, 0x1A, + 0x44, 0x51, 0x0A, 0x59, 0x6B, 0x2B, 0x67, 0x94, 0x56, 0x95, 0x35, 0xE7, 0x67, 0xCB, 0xE7, 0x97, + 0xE7, 0x6D, 0x53, 0x21, 0x22, 0x23, 0xFD, 0x46, 0x6B, 0x6B, 0x0D, 0x4C, 0x42, 0x1F, 0xA1, 0x94, + 0xD2, 0x5A, 0x21, 0x62, 0xCE, 0xC5, 0x68, 0x2D, 0x11, 0xC7, 0x10, 0x76, 0xBB, 0xBE, 0x94, 0xB2, + 0x9C, 0xB7, 0x55, 0xE5, 0x94, 0x88, 0xEB, 0xFB, 0xEB, 0xDD, 0x7A, 0x95, 0xFA, 0xED, 0xCB, 0x6F, + 0x7E, 0xB4, 0x7C, 0xF6, 0x9E, 0x92, 0x40, 0x82, 0xEE, 0xD7, 0xBB, 0xDF, 0x7F, 0x7E, 0x75, 0x7B, + 0xB7, 0xE2, 0xE8, 0x43, 0x76, 0x50, 0x11, 0x42, 0x74, 0xC3, 0x38, 0x7A, 0x6F, 0xAD, 0x71, 0xCE, + 0xA6, 0x98, 0x84, 0x00, 0xAD, 0x95, 0x94, 0x2A, 0x1D, 0x42, 0x31, 0x2B, 0x63, 0x53, 0xC9, 0x5A, + 0x2A, 0x6B, 0xF5, 0x18, 0x42, 0xCA, 0x59, 0x6B, 0x3D, 0x8C, 0xBE, 0xEB, 0x87, 0xC5, 0xAC, 0x71, + 0xCE, 0x4A, 0x89, 0x39, 0x65, 0x21, 0x84, 0xD1, 0xBA, 0x1B, 0x46, 0xBE, 0x76, 0x79, 0x97, 0xD2, + 0x0F, 0x9E, 0xD1, 0xEE, 0xC8, 0x58, 0x3A, 0x89, 0x10, 0x43, 0xDB, 0x34, 0x70, 0x0C, 0xFA, 0x16, + 0x30, 0xFA, 0x10, 0xD3, 0x24, 0x50, 0x67, 0xB2, 0x3E, 0xAF, 0x87, 0x2A, 0x06, 0xC5, 0xCB, 0x14, + 0x98, 0xA2, 0x95, 0x02, 0x21, 0xBC, 0x0F, 0x7D, 0xDF, 0xC7, 0x94, 0x10, 0xA5, 0x44, 0x54, 0x52, + 0x5A, 0x67, 0xDB, 0xA6, 0xB2, 0x46, 0x29, 0x2D, 0x11, 0x59, 0x95, 0xC9, 0x1E, 0x96, 0x28, 0x11, + 0x95, 0x54, 0xD6, 0x1A, 0x0E, 0x4F, 0x61, 0xEF, 0x02, 0x7E, 0x44, 0x1E, 0x4B, 0x27, 0xFF, 0x4F, + 0x26, 0x76, 0x1E, 0x8A, 0x17, 0x1C, 0xBE, 0xF8, 0x38, 0x84, 0xAF, 0xF9, 0x05, 0x4C, 0x86, 0x4E, + 0x53, 0x21, 0x3B, 0x36, 0x6D, 0xC7, 0xF1, 0x05, 0x18, 0x18, 0x3A, 0xD4, 0x85, 0x34, 0xF9, 0xD8, + 0x4C, 0xE7, 0x6D, 0xE5, 0x2C, 0xA0, 0xF0, 0x3E, 0x8E, 0x3E, 0x70, 0xDD, 0x94, 0x52, 0xD6, 0x75, + 0xA5, 0x95, 0x12, 0x42, 0xF4, 0x5D, 0xEF, 0xBD, 0x37, 0xC6, 0x18, 0xAD, 0x8D, 0x36, 0x82, 0x28, + 0xE7, 0x32, 0xF8, 0xE0, 0x43, 0xFA, 0xEE, 0xB7, 0x5E, 0x90, 0x10, 0xEF, 0x6E, 0x1E, 0x4A, 0x29, + 0x56, 0x6B, 0x3C, 0x38, 0x6A, 0xF1, 0x88, 0x1D, 0x42, 0x64, 0xCE, 0x9D, 0x10, 0x64, 0xB4, 0xB1, + 0xC6, 0xB0, 0x98, 0xD1, 0x87, 0xD0, 0x0F, 0x43, 0x29, 0x13, 0x55, 0x38, 0xA6, 0xC4, 0x4C, 0x1A, + 0xAD, 0x75, 0xCC, 0xF9, 0xEA, 0xDD, 0xDD, 0xC3, 0xC3, 0xE6, 0x64, 0xDE, 0x3A, 0x67, 0x00, 0x21, + 0x86, 0xC8, 0x23, 0x63, 0x8C, 0x31, 0x8E, 0x3E, 0xA7, 0xC4, 0xDD, 0x22, 0x4D, 0x9E, 0x0D, 0x13, + 0x13, 0x2A, 0xE7, 0xC4, 0xD3, 0x16, 0x3D, 0x71, 0xF1, 0xE7, 0x23, 0x85, 0xA9, 0x09, 0x29, 0x66, + 0x6B, 0x0D, 0x11, 0x31, 0xFD, 0x8D, 0x07, 0xA9, 0x61, 0xF4, 0x4A, 0x2B, 0x67, 0x4D, 0x08, 0x51, + 0x4A, 0x7C, 0xB8, 0x5F, 0xAF, 0x56, 0xAB, 0x94, 0x72, 0x8C, 0x71, 0xB9, 0x98, 0x2B, 0xAD, 0xEE, + 0xEE, 0x57, 0x9F, 0x7D, 0x71, 0xF5, 0xEE, 0xDD, 0xDD, 0xE7, 0x5F, 0x5C, 0xA5, 0x9C, 0x7D, 0x88, + 0x97, 0xCF, 0xCE, 0xFE, 0xDE, 0xDF, 0xF9, 0xC3, 0xEF, 0x7E, 0xFB, 0xFD, 0xEF, 0x7E, 0xEF, 0x9B, + 0x21, 0x25, 0x67, 0x4C, 0xD7, 0x0F, 0xBB, 0x7D, 0xF7, 0xF2, 0xC5, 0x65, 0x4E, 0xF9, 0xEE, 0x7E, + 0xBD, 0xD9, 0xEE, 0xF7, 0x5D, 0xF7, 0xEE, 0xE6, 0x21, 0xE7, 0x92, 0x73, 0x11, 0x20, 0xDA, 0xA6, + 0xE1, 0xE4, 0x24, 0xC1, 0x50, 0x3A, 0x00, 0x20, 0x16, 0xA2, 0xE3, 0x86, 0x71, 0xB2, 0x01, 0xE0, + 0x0C, 0xC7, 0x27, 0x52, 0x05, 0x66, 0x5B, 0x70, 0xE3, 0x0C, 0x00, 0x39, 0x97, 0x94, 0x12, 0x4A, + 0x34, 0xC6, 0xB0, 0xF1, 0xA9, 0x94, 0xB2, 0x10, 0xA1, 0x44, 0xAD, 0xB5, 0x35, 0xAE, 0x4C, 0xE2, + 0x08, 0xE2, 0xF6, 0xA2, 0x94, 0xA2, 0xB5, 0xCA, 0x39, 0xB3, 0xC9, 0x33, 0xEB, 0x55, 0x52, 0xC9, + 0x2C, 0x9B, 0x8F, 0x31, 0xE5, 0x5C, 0x80, 0x83, 0x07, 0x73, 0xE9, 0x87, 0x61, 0xB3, 0xDD, 0x87, + 0x10, 0x43, 0x88, 0x87, 0xEB, 0x6A, 0x3A, 0x1A, 0x99, 0x63, 0x73, 0x28, 0xAF, 0x4C, 0xD7, 0x20, + 0x22, 0x52, 0x21, 0x66, 0x67, 0x0C, 0x00, 0x2C, 0x17, 0xED, 0x7C, 0x56, 0xB3, 0xF8, 0x86, 0xD7, + 0x1C, 0x0F, 0xAB, 0x7D, 0xCE, 0xD4, 0xD6, 0x15, 0x77, 0x67, 0x77, 0xF7, 0x9B, 0xAE, 0x1F, 0x3F, + 0x78, 0xEF, 0xD2, 0x5A, 0x1D, 0x53, 0x9A, 0x35, 0x95, 0xF7, 0xD1, 0x68, 0xE5, 0xAC, 0x1E, 0xC7, + 0x60, 0x8D, 0xAE, 0x2F, 0xAC, 0x7C, 0x7E, 0x66, 0xAD, 0xDE, 0xED, 0xFB, 0x1F, 0xFD, 0xF4, 0xE3, + 0x9F, 0xFE, 0xF2, 0x93, 0x9B, 0xFB, 0x8D, 0x44, 0xA9, 0x24, 0x0C, 0x63, 0x98, 0xB7, 0xCD, 0xAC, + 0x6D, 0x66, 0xB3, 0x41, 0x10, 0x10, 0x10, 0x00, 0xFE, 0xE6, 0x93, 0xCF, 0xFA, 0x7E, 0x64, 0x73, + 0xA8, 0x6E, 0xE8, 0x9D, 0x73, 0x6D, 0x53, 0x01, 0x80, 0x44, 0xF8, 0xC3, 0xEF, 0x7F, 0x5B, 0x2A, + 0x95, 0x53, 0x92, 0x07, 0xFF, 0x7B, 0xC1, 0xEA, 0xDC, 0x5C, 0x8C, 0x9E, 0xD4, 0xF9, 0x5A, 0xAB, + 0xC7, 0x76, 0x80, 0x63, 0x7D, 0x53, 0xE6, 0x60, 0xCA, 0x94, 0xF2, 0x38, 0x7A, 0x6E, 0x3A, 0x95, + 0x52, 0xCE, 0x18, 0xAD, 0x15, 0x6F, 0x63, 0x73, 0x2E, 0x98, 0xC1, 0x59, 0xC7, 0x63, 0xDA, 0xEA, + 0xEA, 0x8B, 0xF6, 0xFD, 0xEF, 0xED, 0xF7, 0x7D, 0x1F, 0xE8, 0xFE, 0xEA, 0x9D, 0xDB, 0xBF, 0xBB, + 0x30, 0xEA, 0x0E, 0xDC, 0x76, 0x18, 0x53, 0xCC, 0x65, 0x1C, 0x43, 0x0C, 0x5A, 0x22, 0x00, 0x96, + 0x42, 0x31, 0x26, 0x94, 0xB2, 0x1B, 0x47, 0xA9, 0x54, 0x4E, 0xD1, 0xFB, 0x88, 0x12, 0x2A, 0x6B, + 0x00, 0x48, 0xA1, 0xD4, 0x12, 0xA9, 0x50, 0xE5, 0x1C, 0x33, 0xD4, 0xFB, 0xC1, 0x73, 0xFE, 0x1B, + 0x5F, 0xA9, 0x3E, 0x04, 0x63, 0x4C, 0xCA, 0x65, 0xF0, 0xC1, 0x1A, 0xC3, 0x37, 0xF3, 0xCD, 0xC3, + 0x3A, 0xE7, 0xD2, 0x6A, 0xA9, 0x24, 0xF8, 0x10, 0x81, 0x6D, 0x02, 0xF9, 0x30, 0x44, 0x60, 0xFE, + 0x9D, 0xD6, 0x8A, 0x9F, 0x5D, 0x22, 0x94, 0x02, 0x4A, 0x61, 0x8C, 0x29, 0xC6, 0xA8, 0x94, 0x1A, + 0xC7, 0x11, 0x27, 0x89, 0x9C, 0x44, 0x94, 0x31, 0x65, 0x1E, 0x0C, 0xAD, 0x35, 0x0E, 0xAD, 0x92, + 0x0A, 0x11, 0x2D, 0x33, 0x5D, 0xA7, 0x45, 0x7E, 0x41, 0x14, 0xA5, 0x94, 0x43, 0x5A, 0x32, 0x1B, + 0x5E, 0x4A, 0x12, 0x22, 0x44, 0x96, 0xBE, 0xAB, 0x63, 0x09, 0xA2, 0xC2, 0x51, 0x6C, 0x53, 0x43, + 0xF1, 0x9F, 0x4F, 0x52, 0xFC, 0x75, 0xA4, 0x35, 0x4E, 0x03, 0xE3, 0xA1, 0xA2, 0xD1, 0x61, 0x05, + 0x30, 0xAD, 0x01, 0xE8, 0x71, 0xC0, 0x14, 0x07, 0x59, 0xCF, 0xE8, 0x43, 0x08, 0x59, 0x49, 0x4C, + 0x4A, 0xE6, 0x58, 0xD8, 0x8B, 0x01, 0x01, 0x9C, 0xB5, 0x75, 0xE3, 0x46, 0x1F, 0x86, 0x61, 0x04, + 0xA9, 0x52, 0x4E, 0xFD, 0x30, 0xB0, 0x89, 0x2E, 0x6F, 0xDD, 0x95, 0x94, 0x95, 0x75, 0x28, 0xA5, + 0xA0, 0xB2, 0xDB, 0x77, 0x42, 0x08, 0x1F, 0xC4, 0x5F, 0xFD, 0xF8, 0x63, 0x29, 0x55, 0x8C, 0x91, + 0xA8, 0x70, 0x07, 0x04, 0x80, 0xDA, 0xE8, 0x43, 0xFD, 0x2D, 0x21, 0xE4, 0x94, 0x8B, 0x94, 0xC8, + 0x8C, 0x35, 0x21, 0xC4, 0x38, 0xFA, 0x42, 0x24, 0xA8, 0x14, 0x28, 0x29, 0xE7, 0xDD, 0xBE, 0xE3, + 0xDD, 0xF4, 0xA1, 0x00, 0x09, 0xAD, 0xD5, 0xEB, 0xAB, 0x9B, 0xBB, 0x87, 0xF5, 0x3F, 0xF8, 0xD3, + 0x3F, 0xF8, 0xE0, 0x83, 0x17, 0x39, 0x97, 0x14, 0x91, 0x89, 0x29, 0x82, 0x4A, 0x66, 0x2F, 0xA6, + 0x0C, 0x42, 0x08, 0xA5, 0x9E, 0x26, 0x3F, 0x0A, 0x56, 0x95, 0x12, 0x51, 0x29, 0x93, 0x4B, 0x38, + 0xD7, 0x32, 0x89, 0x90, 0x62, 0x56, 0x52, 0x95, 0x52, 0xBC, 0x0F, 0x85, 0x4A, 0x9C, 0x60, 0xEF, + 0xD2, 0xF7, 0x3D, 0x00, 0xDE, 0xDC, 0xDE, 0x9D, 0x9D, 0x9E, 0xEE, 0xB6, 0xBB, 0x87, 0x87, 0xB5, + 0xB6, 0xBA, 0x4D, 0xF9, 0xE5, 0xFB, 0xCF, 0xD6, 0xDB, 0xFD, 0x2F, 0x3E, 0xFE, 0xF4, 0xFE, 0x7E, + 0xCD, 0x89, 0xCF, 0xDD, 0x30, 0x22, 0xE2, 0x9F, 0xFC, 0xF1, 0x47, 0x7F, 0xF6, 0x27, 0x7F, 0xC0, + 0x4B, 0x83, 0x9F, 0xFD, 0xFC, 0xB7, 0x5F, 0x5E, 0xDD, 0xBC, 0x78, 0x7E, 0x79, 0x73, 0xF3, 0x30, + 0x9F, 0xB7, 0xB7, 0xB7, 0xAB, 0xCF, 0x5F, 0x5D, 0x29, 0x2D, 0x67, 0xB3, 0xE6, 0xED, 0xF5, 0x9D, + 0x10, 0x14, 0x42, 0xB4, 0x56, 0x37, 0x4D, 0x9D, 0x4B, 0x29, 0xE2, 0xE8, 0x2A, 0x5E, 0xCA, 0x94, + 0xC3, 0x36, 0x69, 0x0F, 0x88, 0x0A, 0x4D, 0xB6, 0xF5, 0x82, 0xFD, 0xC8, 0x58, 0xC1, 0xC2, 0x6B, + 0xCA, 0x10, 0xE2, 0xE8, 0x7D, 0x9E, 0xCC, 0x4B, 0x26, 0x13, 0x2A, 0xDE, 0x89, 0x3B, 0x65, 0x4B, + 0x2E, 0x79, 0x2C, 0x1C, 0xCA, 0xA7, 0x95, 0x1A, 0x86, 0xF1, 0xF8, 0x53, 0xDC, 0x1A, 0x0F, 0xBD, + 0x67, 0x1E, 0x35, 0x3F, 0x8F, 0x0F, 0x81, 0x59, 0xCA, 0xCE, 0x5A, 0x46, 0x81, 0x78, 0x2F, 0x95, + 0x72, 0x09, 0x21, 0x86, 0x10, 0xD8, 0x7D, 0x23, 0xA5, 0xAC, 0x35, 0x81, 0x60, 0xFC, 0x81, 0x18, + 0xE1, 0xCD, 0x85, 0x84, 0x00, 0x25, 0x81, 0x2B, 0x03, 0x11, 0x29, 0x6B, 0x75, 0x4E, 0x45, 0x08, + 0x71, 0x71, 0xB6, 0xAC, 0x2B, 0x23, 0xA5, 0x6C, 0x6A, 0x6B, 0xB5, 0x56, 0x5A, 0xBE, 0xFE, 0xF2, + 0x76, 0xBD, 0xDD, 0x33, 0xB0, 0x57, 0x39, 0x33, 0x6B, 0xEB, 0xB3, 0xD3, 0x39, 0x00, 0xDC, 0x3D, + 0x6C, 0x52, 0x2A, 0xEF, 0xAE, 0x1F, 0x8C, 0xD1, 0x46, 0x29, 0xAD, 0xA5, 0x94, 0x72, 0xD7, 0x0D, + 0xCE, 0xEA, 0xB6, 0xAE, 0x7E, 0xF9, 0x9B, 0xCF, 0xFE, 0xDF, 0x1F, 0xFD, 0xFC, 0xDD, 0xF5, 0x83, + 0x52, 0xBA, 0x72, 0x95, 0x96, 0x32, 0xE5, 0xE4, 0x63, 0xE4, 0x24, 0x7A, 0x3F, 0xFA, 0x22, 0x68, + 0xD6, 0x34, 0x5D, 0x37, 0x0C, 0x63, 0x60, 0x4B, 0x30, 0x63, 0xB5, 0x73, 0x96, 0x0A, 0xBD, 0xF7, + 0xFC, 0xFC, 0xFF, 0xE7, 0xEA, 0xCD, 0x7E, 0x2D, 0x3B, 0xB3, 0x3C, 0xA1, 0xF5, 0xCD, 0x7B, 0x3A, + 0xC3, 0x1D, 0xE2, 0xC6, 0xE0, 0x08, 0xDB, 0x69, 0x3B, 0xD3, 0x95, 0x43, 0x65, 0x0D, 0x74, 0x4B, + 0x8D, 0xD4, 0xA8, 0xA5, 0x16, 0x4F, 0x88, 0x46, 0xA8, 0x79, 0x42, 0xC0, 0x13, 0xAF, 0xFC, 0x47, + 0xFC, 0x07, 0x3C, 0x80, 0x90, 0x90, 0x90, 0x0A, 0x10, 0x54, 0x95, 0xD4, 0x54, 0xD6, 0x9C, 0xE5, + 0x1C, 0x9C, 0x4E, 0xCF, 0x8E, 0xE9, 0xCE, 0x67, 0xD8, 0x7B, 0x7F, 0xF3, 0x5A, 0x3C, 0xAC, 0x73, + 0x6E, 0x66, 0x11, 0x4F, 0x96, 0xC3, 0x11, 0xBE, 0xF7, 0x9E, 0xBD, 0xBF, 0x6F, 0xAD, 0xDF, 0xF8, + 0xEC, 0xC9, 0xB9, 0x92, 0x2A, 0xE5, 0x7C, 0xB7, 0xDD, 0xB9, 0xC6, 0xAD, 0x56, 0x8B, 0xFB, 0xCD, + 0xAE, 0xE4, 0xE2, 0x7D, 0xDA, 0xEF, 0xE7, 0xFB, 0xED, 0xEE, 0x7B, 0xEF, 0x3E, 0x6D, 0x9C, 0xE3, + 0xEB, 0xFC, 0x20, 0xE0, 0x43, 0x42, 0xA4, 0xB6, 0x75, 0x5C, 0x0A, 0x6D, 0x8C, 0x4E, 0x29, 0x03, + 0x88, 0x94, 0xB2, 0x10, 0x52, 0x18, 0x29, 0x85, 0x38, 0x5B, 0x2F, 0xA4, 0x94, 0x5D, 0xDB, 0xC4, + 0x5C, 0x4B, 0x40, 0xFE, 0xA6, 0x84, 0x71, 0x97, 0xDF, 0x7C, 0x7A, 0xF1, 0x07, 0xFF, 0x22, 0x91, + 0x49, 0xDF, 0xFD, 0x72, 0x75, 0xF3, 0xB9, 0x08, 0x77, 0xC2, 0x74, 0xDF, 0x7B, 0xFC, 0x7E, 0x32, + 0x5D, 0xBB, 0x5C, 0x5F, 0xEF, 0xE3, 0xDB, 0xBB, 0xE9, 0xE5, 0xED, 0x4C, 0x80, 0x5A, 0x49, 0xAC, + 0x07, 0x6F, 0xF7, 0x38, 0x7B, 0xAD, 0x54, 0x48, 0x51, 0x2A, 0x45, 0x48, 0xD6, 0x58, 0x00, 0x28, + 0x48, 0x39, 0x67, 0x6D, 0x14, 0x10, 0xCC, 0x21, 0x2C, 0x17, 0xBD, 0xE1, 0x52, 0x71, 0xA8, 0xD3, + 0x1C, 0x22, 0x6B, 0x20, 0x3A, 0xC7, 0x32, 0x94, 0x5A, 0xAB, 0xB1, 0x87, 0x0C, 0x6F, 0x42, 0xE4, + 0x14, 0x90, 0x9C, 0xB3, 0x73, 0x8E, 0xE1, 0x4B, 0xD7, 0xD8, 0xB6, 0x71, 0xA5, 0x54, 0x20, 0x42, + 0x24, 0xAD, 0x55, 0xCA, 0x75, 0xB5, 0xE8, 0xFB, 0xB6, 0x99, 0x42, 0xF4, 0x3E, 0xA6, 0x9C, 0xE8, + 0xE0, 0x2D, 0xC7, 0x18, 0x53, 0xD3, 0x34, 0x48, 0x18, 0xD3, 0x31, 0xB2, 0xCA, 0x5A, 0x21, 0x44, + 0xDB, 0x36, 0x43, 0xDF, 0x5A, 0xAB, 0x73, 0xAD, 0x4A, 0xC8, 0x12, 0x51, 0xB1, 0xC6, 0x85, 0x48, + 0x6A, 0xAD, 0x0E, 0x95, 0x19, 0x04, 0x00, 0xA4, 0x80, 0x29, 0x6E, 0xA6, 0xD5, 0xE1, 0x61, 0x68, + 0x22, 0xE0, 0xB1, 0xF4, 0x81, 0x31, 0xFC, 0xFD, 0x73, 0xEA, 0x77, 0xF7, 0xF5, 0x11, 0xE3, 0x87, + 0x63, 0x7F, 0xEA, 0x3F, 0xFB, 0xDD, 0x63, 0x0A, 0x3B, 0x1F, 0x73, 0x07, 0xF0, 0x98, 0x87, 0x40, + 0x38, 0xFC, 0x19, 0x22, 0x92, 0xC7, 0x23, 0xD2, 0x19, 0xB3, 0xE8, 0xBA, 0x1C, 0x4B, 0x29, 0xBC, + 0xF4, 0x15, 0xB6, 0x1F, 0x29, 0xA5, 0x32, 0x65, 0x67, 0x1C, 0xC7, 0x46, 0x96, 0x18, 0x01, 0x80, + 0x0E, 0xEF, 0x9B, 0x6C, 0x9A, 0xA6, 0x71, 0xB6, 0x54, 0xE4, 0xAD, 0x44, 0x11, 0x71, 0x1D, 0x72, + 0x29, 0xC5, 0x18, 0xF3, 0xC0, 0x1E, 0x10, 0xA2, 0xB3, 0xB6, 0xD4, 0x92, 0x52, 0xCE, 0xF9, 0x10, + 0xC7, 0x85, 0x88, 0xCC, 0x59, 0xC7, 0x90, 0x58, 0xEE, 0x1F, 0x53, 0x2A, 0xB5, 0x3A, 0x63, 0x01, + 0xE8, 0xFA, 0xE6, 0x0E, 0x88, 0x80, 0xC0, 0x59, 0xB3, 0x5C, 0xF6, 0x5D, 0xD7, 0x1C, 0xE0, 0x7C, + 0x04, 0x44, 0xA4, 0x4A, 0x52, 0x48, 0x3F, 0x7B, 0x22, 0x72, 0xCE, 0x29, 0xA5, 0x38, 0x99, 0xE7, + 0xB8, 0x86, 0xE3, 0x66, 0xBB, 0xDF, 0x4F, 0x33, 0x21, 0x9D, 0x9E, 0xAC, 0x8C, 0x56, 0xDA, 0x18, + 0x6D, 0x20, 0x86, 0xA4, 0x94, 0x8A, 0x3E, 0xDD, 0x6F, 0x76, 0x58, 0x51, 0x69, 0xB5, 0x58, 0x2C, + 0x62, 0xCC, 0xFD, 0x30, 0x90, 0x10, 0x4A, 0x9B, 0x1F, 0xFF, 0xE4, 0x63, 0x6D, 0xF4, 0xF3, 0x67, + 0x17, 0x9F, 0x7F, 0xF9, 0xDD, 0xCF, 0xFE, 0xF6, 0x17, 0xE7, 0x67, 0x27, 0xEB, 0xF5, 0x72, 0xB7, + 0x9B, 0xBE, 0xF8, 0xEA, 0xBB, 0x77, 0x9E, 0x5D, 0xFC, 0xEB, 0x7F, 0xF5, 0xC7, 0xEF, 0xBD, 0xF7, + 0x14, 0x2B, 0x0A, 0x10, 0x57, 0xD7, 0xF7, 0x9F, 0xFC, 0xF2, 0xB7, 0x9B, 0xED, 0xBE, 0x22, 0x3E, + 0x7B, 0xF2, 0x68, 0x9E, 0xFD, 0xD5, 0xD5, 0x8D, 0x0F, 0x71, 0xBD, 0x5E, 0x7D, 0xFB, 0xF6, 0x75, + 0x2D, 0x55, 0x4A, 0x79, 0x7E, 0xB6, 0x5E, 0xAD, 0x16, 0x9C, 0x49, 0xC7, 0x80, 0x9D, 0x16, 0x92, + 0x40, 0x54, 0x24, 0x96, 0xB9, 0x0A, 0x80, 0xC3, 0xBE, 0x59, 0x0A, 0xD3, 0xE8, 0x42, 0x80, 0x52, + 0x4A, 0x2B, 0x25, 0x80, 0x52, 0xAE, 0xA5, 0xD6, 0x5A, 0x6A, 0x2E, 0x78, 0x30, 0x2A, 0x1C, 0x32, + 0xCD, 0x0F, 0x46, 0x11, 0xAD, 0x75, 0x81, 0x2A, 0x84, 0xC8, 0xB9, 0xA4, 0x9C, 0xB7, 0x39, 0xB5, + 0x6D, 0x6B, 0xAD, 0x8D, 0x21, 0xCD, 0x73, 0x30, 0x46, 0x39, 0xE7, 0x90, 0x10, 0x10, 0x98, 0x07, + 0x46, 0x44, 0xE7, 0x6C, 0xA9, 0x25, 0xE7, 0x42, 0x00, 0xC6, 0x18, 0x63, 0x0C, 0x00, 0xB7, 0xFF, + 0x11, 0xCF, 0xE0, 0x6D, 0xD3, 0x20, 0x52, 0xF0, 0x91, 0x17, 0x0B, 0x01, 0x54, 0x6B, 0xE1, 0x27, + 0x36, 0xE7, 0xE2, 0x9C, 0x23, 0xA5, 0x98, 0x31, 0x21, 0x02, 0x9D, 0x72, 0x55, 0x52, 0x71, 0x40, + 0xCD, 0xB3, 0x27, 0x67, 0x2C, 0x28, 0x03, 0x01, 0xD6, 0xE8, 0x1F, 0x7D, 0xFC, 0xFE, 0x97, 0xDF, + 0xBC, 0xBE, 0xBC, 0xDA, 0xCC, 0x3E, 0x5E, 0x5E, 0xC9, 0xA1, 0x6F, 0x99, 0x4E, 0x8F, 0x29, 0x6B, + 0xA5, 0x42, 0x48, 0x52, 0x29, 0x80, 0xEA, 0x43, 0xDA, 0x6C, 0xC7, 0xB6, 0xB1, 0xE3, 0x38, 0xFF, + 0xD9, 0x9F, 0xFF, 0xCD, 0xD7, 0xDF, 0x5D, 0x82, 0x94, 0xCB, 0xE5, 0x82, 0x37, 0x5B, 0x29, 0xC5, + 0xC9, 0x62, 0xB1, 0x1C, 0x06, 0x25, 0x65, 0x8C, 0xF9, 0x9D, 0xA7, 0x8F, 0xEF, 0xB7, 0x3B, 0x00, + 0x98, 0x3D, 0xD7, 0xA0, 0xF6, 0x37, 0x77, 0x9B, 0xB6, 0x6B, 0x72, 0xAE, 0xC1, 0x07, 0xDE, 0xA7, + 0xD6, 0xAB, 0x85, 0x31, 0xBA, 0x22, 0x0E, 0x43, 0xEF, 0xAC, 0x09, 0x31, 0x4D, 0x3E, 0x5C, 0xDF, + 0xDE, 0x97, 0x9C, 0x67, 0x1F, 0x4E, 0xD6, 0x8B, 0xE5, 0x62, 0xB0, 0xD6, 0x08, 0x25, 0xB5, 0x14, + 0x4A, 0x2A, 0x24, 0x72, 0x00, 0xFC, 0x28, 0x0B, 0x29, 0xF8, 0x93, 0x13, 0x42, 0xB0, 0x0E, 0x88, + 0x10, 0x62, 0x4A, 0x5A, 0x2B, 0xA5, 0x75, 0x25, 0xCA, 0xA5, 0x3A, 0xE7, 0xFA, 0xBE, 0x17, 0x52, + 0x48, 0xAD, 0xEF, 0x37, 0x37, 0x6F, 0xFE, 0xEE, 0xCF, 0x5E, 0x3C, 0x7F, 0x71, 0xFF, 0xE5, 0x5F, + 0xDD, 0xCF, 0x71, 0x58, 0xAD, 0x3B, 0xC0, 0xB3, 0x7A, 0xBB, 0x12, 0xDB, 0x15, 0x84, 0x17, 0xE7, + 0x6D, 0x3D, 0xD3, 0x9F, 0x2C, 0x97, 0x7F, 0xF7, 0xCD, 0x1E, 0x11, 0xB0, 0x56, 0x21, 0xA5, 0x20, + 0x28, 0xB5, 0x1E, 0xFB, 0xE1, 0x14, 0x83, 0x17, 0x4A, 0x29, 0x1F, 0x23, 0x11, 0x36, 0xDA, 0xC5, + 0x98, 0x8C, 0xD6, 0x0F, 0x49, 0x5D, 0x0F, 0xB4, 0xA0, 0x73, 0x6E, 0x0E, 0x39, 0xE7, 0xDA, 0x77, + 0x5D, 0x29, 0x79, 0xB3, 0x9B, 0xAC, 0x31, 0x48, 0x90, 0x73, 0x75, 0xCE, 0x68, 0xAD, 0x77, 0x39, + 0xA7, 0x94, 0x38, 0x3D, 0x91, 0x88, 0xAC, 0x31, 0xAB, 0xA1, 0xDB, 0xEE, 0x46, 0x63, 0x8C, 0xB1, + 0x83, 0x0F, 0x51, 0x6B, 0x95, 0x6B, 0x6D, 0x9C, 0x23, 0xA0, 0x90, 0x78, 0x9A, 0x20, 0xA5, 0x35, + 0x2F, 0x77, 0x29, 0xA6, 0xAA, 0x44, 0xDF, 0x34, 0x52, 0x08, 0x86, 0x99, 0xDB, 0xC6, 0x4A, 0x21, + 0x6A, 0xA5, 0x9C, 0x53, 0x45, 0x54, 0x52, 0x28, 0x29, 0x6B, 0xC5, 0xAE, 0x71, 0xD6, 0xE8, 0x87, + 0x03, 0xE8, 0x30, 0x4B, 0x01, 0x3C, 0x74, 0x59, 0x1E, 0xE8, 0xAA, 0x82, 0x0F, 0x11, 0xF2, 0xF4, + 0xCF, 0xB5, 0x17, 0xC7, 0xB7, 0xF4, 0xF0, 0xEF, 0xFF, 0xD9, 0x99, 0x46, 0x0F, 0x75, 0x39, 0x87, + 0x8D, 0xE0, 0x88, 0xC8, 0x1E, 0x36, 0x53, 0x79, 0x88, 0xA8, 0xCE, 0xB5, 0x60, 0xCC, 0xB9, 0x56, + 0x4C, 0x91, 0x85, 0x72, 0xF4, 0x70, 0x02, 0x76, 0xAD, 0x2B, 0xB5, 0x23, 0xA0, 0xED, 0x6E, 0xAC, + 0xB5, 0x96, 0x9C, 0x8F, 0x03, 0x0E, 0x0A, 0x21, 0x52, 0xCE, 0xCE, 0xDA, 0xD9, 0x7B, 0xA6, 0x14, + 0x8D, 0x55, 0x4A, 0x69, 0x6B, 0xB4, 0x10, 0x44, 0x80, 0x42, 0x88, 0xB6, 0x6D, 0x17, 0x4A, 0x11, + 0x00, 0x01, 0x95, 0x5C, 0x52, 0x29, 0x5A, 0xEB, 0x94, 0x92, 0xAA, 0x85, 0x08, 0x72, 0xCE, 0x40, + 0x90, 0x4B, 0xE1, 0x78, 0x4B, 0x1E, 0xF9, 0x2B, 0x56, 0x40, 0xC1, 0xC5, 0x28, 0x88, 0x75, 0x0E, + 0x51, 0x08, 0x30, 0x4A, 0x09, 0x29, 0x87, 0xBE, 0xF7, 0x31, 0xFF, 0xC5, 0x5F, 0xFF, 0xD3, 0xE9, + 0x72, 0xF8, 0xE9, 0x8F, 0x3E, 0x1C, 0xFA, 0xB6, 0x02, 0xE4, 0x5C, 0x0A, 0x22, 0xF7, 0x2D, 0xC4, + 0x90, 0xF0, 0x30, 0xDA, 0x21, 0x03, 0x05, 0xF4, 0x70, 0x38, 0x0A, 0xD1, 0x75, 0x6D, 0xAD, 0xF5, + 0xE6, 0x6E, 0xF3, 0x9B, 0xCF, 0x37, 0x5D, 0xDB, 0x18, 0x63, 0x80, 0xA8, 0x6D, 0xDD, 0xD0, 0x75, + 0x75, 0xF2, 0x5D, 0xD7, 0xF7, 0x5D, 0x63, 0x8C, 0xA9, 0xB5, 0x2E, 0x17, 0xC3, 0xD9, 0xF9, 0xC9, + 0x6E, 0x3F, 0x12, 0x80, 0x73, 0xEE, 0xC9, 0xC5, 0x59, 0xD7, 0xB5, 0xEF, 0xBC, 0x73, 0xF1, 0x5F, + 0x3E, 0xFD, 0xB7, 0x27, 0xAB, 0x85, 0x35, 0xDA, 0x87, 0xF8, 0xFA, 0xCD, 0x55, 0x29, 0xF5, 0xE6, + 0x6E, 0xCB, 0xFF, 0xA3, 0x5F, 0xFD, 0xE6, 0xCB, 0x71, 0x9C, 0x9E, 0xBF, 0xF3, 0xE4, 0x9D, 0xA7, + 0x17, 0x25, 0xA7, 0xEB, 0x9B, 0x5B, 0x56, 0x2C, 0x19, 0xAD, 0xEF, 0xEE, 0xEE, 0x85, 0x94, 0x7D, + 0xDF, 0xAE, 0x56, 0x0B, 0x02, 0x78, 0xF9, 0xEA, 0xED, 0xFA, 0x64, 0xD9, 0xC9, 0x96, 0xD5, 0xE6, + 0x45, 0x1E, 0x2A, 0x11, 0x8E, 0xBE, 0xEF, 0x07, 0x0F, 0x90, 0x7C, 0xF8, 0xA4, 0x78, 0x4A, 0x62, + 0xE0, 0x9F, 0x6F, 0x29, 0xE6, 0x81, 0xB4, 0xD6, 0x3C, 0x09, 0x92, 0x10, 0x31, 0x24, 0x22, 0x62, + 0x13, 0xD8, 0x61, 0x4C, 0xAB, 0xC8, 0x28, 0x46, 0xF0, 0x11, 0x00, 0x4A, 0x2E, 0xDC, 0xBC, 0x71, + 0x4C, 0x64, 0xE1, 0x24, 0x6D, 0x51, 0x91, 0xAC, 0xB5, 0xD3, 0x1C, 0x72, 0x19, 0xF9, 0xD2, 0xE5, + 0x88, 0xA1, 0x94, 0x32, 0xB3, 0x10, 0xB9, 0x94, 0xD3, 0x93, 0x75, 0xC9, 0x15, 0x91, 0x2A, 0x61, + 0x8D, 0x87, 0x43, 0x8B, 0xBF, 0x30, 0x22, 0x92, 0xB2, 0x93, 0x52, 0xE6, 0x9C, 0x63, 0x8C, 0xEA, + 0x3F, 0xFE, 0x37, 0xFF, 0x05, 0x10, 0x49, 0xA9, 0x2E, 0x6F, 0x36, 0x5D, 0xEB, 0xBA, 0xAE, 0x49, + 0xB9, 0xE4, 0x8C, 0xEC, 0x24, 0x70, 0x8D, 0xE1, 0x6E, 0x08, 0xE7, 0x4C, 0xE3, 0xEC, 0xD7, 0x2F, + 0x2F, 0xA7, 0x29, 0x9C, 0xAC, 0x16, 0x27, 0xAB, 0xC5, 0x30, 0x74, 0xF7, 0xDB, 0x91, 0xEB, 0xC2, + 0x94, 0x14, 0xDF, 0xBE, 0xBE, 0xFC, 0xF9, 0xAF, 0xBF, 0xBC, 0xDF, 0x8E, 0xD6, 0x3A, 0xA6, 0x99, + 0x09, 0xA8, 0x14, 0x14, 0x40, 0xCF, 0x2F, 0xCE, 0x5B, 0x67, 0x8C, 0xD1, 0xEF, 0x3C, 0x7B, 0x84, + 0x48, 0x31, 0x95, 0x71, 0x9E, 0xA7, 0x79, 0x8E, 0x29, 0x23, 0x41, 0x4A, 0x79, 0x1C, 0xE7, 0xED, + 0x66, 0x9B, 0x72, 0xE9, 0x9A, 0xA6, 0xB1, 0x01, 0x15, 0x09, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xEF, 0xDA, 0x93, 0xD3, 0xE5, 0xC9, 0xC9, 0xA2, 0xEF, 0x5A, 0x6B, 0xF4, 0xED, 0xFD, + 0xF6, 0xEA, 0xFA, 0xEE, 0xFA, 0xE6, 0xEE, 0xEA, 0xE6, 0xB6, 0x6D, 0x9A, 0xF3, 0xB3, 0x93, 0xF3, + 0xB3, 0x93, 0xE5, 0xB2, 0x67, 0x16, 0xD5, 0x71, 0x81, 0xA8, 0x10, 0x42, 0x81, 0x10, 0x52, 0x29, + 0x29, 0x95, 0x22, 0xE4, 0x0C, 0x0F, 0x41, 0x04, 0xB3, 0x0F, 0xE3, 0xE4, 0xF7, 0xE3, 0x3C, 0xCE, + 0xDE, 0x58, 0xC3, 0xDD, 0x68, 0xFD, 0xD0, 0x53, 0x09, 0xB7, 0x9B, 0xAD, 0x94, 0xD2, 0x58, 0x7B, + 0xF7, 0xE6, 0xEB, 0xDB, 0xCB, 0x6F, 0xAF, 0x27, 0x1F, 0x51, 0x54, 0x82, 0x39, 0x15, 0x61, 0xDC, + 0xFD, 0xE8, 0xBF, 0xBB, 0xBC, 0x7D, 0x73, 0x79, 0xB3, 0xDB, 0xEF, 0x9E, 0x2F, 0xE5, 0xB3, 0xC1, + 0x8C, 0xC5, 0x14, 0xA9, 0x4B, 0xAD, 0x5A, 0x33, 0x90, 0x51, 0xDA, 0xAE, 0x6D, 0xAC, 0xE9, 0x5A, + 0x87, 0x88, 0x52, 0x82, 0xD6, 0x6A, 0xE8, 0x3B, 0x2C, 0x95, 0x00, 0xA4, 0x92, 0x15, 0x8F, 0x1A, + 0x31, 0x29, 0x62, 0x2A, 0xCE, 0xDA, 0xA6, 0x71, 0xA5, 0xA2, 0x10, 0x42, 0x2B, 0x99, 0x6B, 0xF5, + 0x21, 0xF1, 0x4B, 0xCB, 0xC7, 0x56, 0x45, 0x8C, 0xA9, 0x70, 0x9B, 0x89, 0xB5, 0x5A, 0x6B, 0x3D, + 0xCF, 0x33, 0x56, 0x4A, 0x39, 0x37, 0xCE, 0x71, 0x1C, 0x2E, 0xD3, 0xD2, 0xC4, 0x05, 0x54, 0x42, + 0xB6, 0xAD, 0x6B, 0xDB, 0x86, 0x9B, 0xED, 0x94, 0x80, 0xC6, 0x9A, 0xAE, 0x6D, 0x86, 0xBE, 0x73, + 0xAE, 0xB1, 0xD6, 0x34, 0x8D, 0x95, 0x12, 0x72, 0xA9, 0xB5, 0x20, 0x63, 0x6A, 0x3C, 0x58, 0xB1, + 0xA6, 0x8C, 0x00, 0x58, 0xC3, 0xAC, 0xB5, 0x96, 0x4A, 0x28, 0x25, 0x8D, 0x56, 0x52, 0x88, 0x7A, + 0xAC, 0x6B, 0x64, 0x2E, 0xEB, 0x98, 0xEA, 0xF5, 0x3B, 0x79, 0x24, 0x1C, 0xE1, 0xFC, 0x87, 0xA5, + 0xF2, 0x61, 0x46, 0x7B, 0xD0, 0x5C, 0xE3, 0x51, 0xE4, 0xFF, 0x70, 0x84, 0xFD, 0xFE, 0xD6, 0xC9, + 0xBF, 0x6A, 0x29, 0xB9, 0x54, 0x06, 0xDA, 0x19, 0x66, 0x3A, 0x80, 0x20, 0x48, 0xB9, 0xE6, 0x94, + 0x72, 0x88, 0xB9, 0x1C, 0x91, 0xC1, 0x18, 0x23, 0x01, 0xA4, 0x52, 0xD8, 0x2E, 0x86, 0x88, 0x7C, + 0x3D, 0x94, 0x5A, 0x39, 0x8F, 0x64, 0xD1, 0x37, 0xAD, 0xD3, 0x43, 0xD7, 0x0C, 0x7D, 0xAB, 0x94, + 0xAC, 0x44, 0xA5, 0x54, 0x44, 0xE4, 0xC8, 0x07, 0x36, 0xB9, 0xF0, 0x6B, 0x50, 0x72, 0x49, 0xA9, + 0x64, 0x8E, 0x60, 0x42, 0x4C, 0x29, 0xF1, 0xDB, 0x1B, 0x53, 0xE6, 0xEF, 0x81, 0x53, 0x6A, 0x2B, + 0x91, 0x56, 0x1A, 0x09, 0x4A, 0x2D, 0x7D, 0xD7, 0x78, 0x1F, 0x2F, 0x6F, 0xEF, 0x2F, 0x6F, 0xEE, + 0x5E, 0xBD, 0xBE, 0x26, 0xA2, 0xF3, 0xD3, 0x15, 0x21, 0x85, 0x39, 0xC6, 0x94, 0x4B, 0x41, 0x8E, + 0xA2, 0x07, 0x80, 0x87, 0x9A, 0x30, 0x3A, 0xC6, 0x3D, 0x23, 0x62, 0xD7, 0x36, 0x7C, 0xBC, 0xEF, + 0x76, 0xD3, 0x3C, 0xFB, 0xED, 0x6E, 0x3F, 0x4E, 0x9E, 0x39, 0x3E, 0xAD, 0x75, 0xD3, 0xB8, 0x71, + 0x0E, 0x21, 0x44, 0xBE, 0x18, 0x63, 0x4A, 0x6D, 0xEB, 0x4E, 0xD6, 0xAB, 0x93, 0xF5, 0xB2, 0x6D, + 0x5D, 0xAD, 0xB5, 0xEF, 0x9A, 0xD5, 0x62, 0x40, 0xA2, 0x6F, 0x5F, 0xBE, 0xBD, 0xBC, 0xBA, 0x4D, + 0x29, 0xEF, 0xF7, 0xB3, 0xB5, 0x36, 0xA5, 0xBC, 0xD9, 0xED, 0x39, 0x8D, 0xFA, 0x64, 0xBD, 0xB8, + 0xBE, 0xBE, 0xB9, 0xBA, 0xD9, 0xEC, 0xA7, 0x20, 0x40, 0x74, 0x5D, 0xA3, 0x94, 0xAA, 0x48, 0x52, + 0xC9, 0x77, 0x9E, 0x3D, 0xDE, 0x6C, 0xF6, 0x97, 0x57, 0xB7, 0xC3, 0xD0, 0xAF, 0x16, 0x0B, 0xAD, + 0x15, 0x07, 0xF7, 0x23, 0x1D, 0xB8, 0x1A, 0x3E, 0x1C, 0x1E, 0x24, 0xBD, 0x47, 0xE1, 0x21, 0x83, + 0x1F, 0xA2, 0x1E, 0x57, 0x3E, 0x2E, 0xDC, 0xE0, 0x90, 0x15, 0xAD, 0x8F, 0xCC, 0x06, 0x08, 0xCE, + 0x8F, 0x4C, 0x29, 0xFB, 0x90, 0xC6, 0xE9, 0x10, 0x81, 0x29, 0xA4, 0xC8, 0xA9, 0xE4, 0x52, 0xB8, + 0x6B, 0x8E, 0xAB, 0x13, 0x8D, 0xD6, 0x47, 0x4B, 0xA7, 0x90, 0x52, 0xA6, 0xE3, 0xF6, 0x2D, 0x95, + 0x5C, 0x0C, 0xC3, 0x41, 0x9B, 0x72, 0x78, 0x90, 0x04, 0x67, 0x37, 0x01, 0x08, 0x1E, 0x4D, 0xDA, + 0xCE, 0x11, 0xB0, 0x85, 0x13, 0x52, 0xCA, 0x5C, 0x28, 0xC3, 0xD7, 0x26, 0xCF, 0xD9, 0x9A, 0x29, + 0xD6, 0x4A, 0x18, 0x53, 0xF9, 0xD9, 0x3F, 0xFE, 0xF6, 0xF2, 0x66, 0xEB, 0x9C, 0x79, 0xFB, 0xF6, + 0x0E, 0x80, 0x2E, 0xCE, 0xD7, 0xD6, 0xE8, 0xE5, 0xB2, 0x7B, 0xF1, 0xCE, 0x23, 0x29, 0x44, 0x4A, + 0xE5, 0x8F, 0x7E, 0xFC, 0xA1, 0x0F, 0xE9, 0x64, 0x35, 0x28, 0x25, 0xEE, 0xEE, 0xF7, 0x9C, 0x18, + 0xE1, 0x63, 0xBC, 0xBA, 0xBE, 0xDB, 0x4F, 0x9E, 0x5D, 0x84, 0x44, 0x85, 0x21, 0x83, 0x79, 0xF6, + 0x5D, 0xE3, 0x9E, 0x9C, 0x9F, 0xA6, 0x9C, 0x17, 0x43, 0x7B, 0x7E, 0xB6, 0xF6, 0x3E, 0x8C, 0xF3, + 0x7C, 0xBF, 0xD9, 0xBE, 0xBD, 0xBE, 0xED, 0xDB, 0x46, 0x09, 0x79, 0x7B, 0x7B, 0xA7, 0x95, 0xAA, + 0xB5, 0x56, 0xA2, 0x5A, 0xEA, 0xEB, 0xCB, 0x1B, 0xE7, 0xEC, 0xC5, 0xC5, 0xD9, 0x6A, 0x31, 0x48, + 0x29, 0x37, 0xDB, 0x11, 0x11, 0x9F, 0x3F, 0x7D, 0xAC, 0xB5, 0xCA, 0xA5, 0x9C, 0xAC, 0x96, 0x4D, + 0x6B, 0x4F, 0x4F, 0x96, 0xC6, 0x1A, 0xEE, 0x31, 0x53, 0x5A, 0x09, 0x21, 0x2A, 0x91, 0x40, 0xA1, + 0xA4, 0x44, 0xA4, 0x9A, 0x0B, 0x1E, 0x4C, 0xCB, 0x62, 0xF2, 0xFE, 0xF2, 0xFA, 0x4E, 0x29, 0xE5, + 0x43, 0x88, 0x29, 0x77, 0x7D, 0x77, 0xB6, 0x5E, 0x5A, 0xA3, 0x49, 0x8A, 0xF5, 0xF9, 0xC5, 0xEA, + 0xF4, 0x7C, 0xDF, 0xF4, 0xE0, 0x77, 0x79, 0xDA, 0xDD, 0xFB, 0x9C, 0x62, 0x50, 0x5A, 0xF7, 0xFD, + 0x20, 0xA5, 0x7A, 0xF5, 0xF6, 0x6A, 0x31, 0x74, 0xC6, 0x98, 0x90, 0x52, 0x49, 0x09, 0x94, 0x6B, + 0x14, 0x7D, 0xD4, 0xF6, 0x9F, 0xEA, 0x47, 0xA3, 0x0F, 0x46, 0x49, 0x29, 0x85, 0x52, 0x52, 0x00, + 0xAD, 0x86, 0x1E, 0x09, 0x41, 0x90, 0x14, 0x72, 0xD1, 0x77, 0x07, 0x89, 0x20, 0x70, 0x35, 0xB7, + 0xE6, 0xD6, 0x8C, 0x5C, 0x6A, 0x41, 0x6C, 0xB4, 0xD2, 0x4A, 0x12, 0x62, 0xA9, 0x34, 0xCE, 0xA1, + 0x94, 0xC2, 0xD0, 0x09, 0x11, 0xE9, 0x43, 0x4F, 0x17, 0xB4, 0x8D, 0xB3, 0x56, 0xDB, 0xA3, 0x51, + 0x19, 0x89, 0x50, 0x90, 0x36, 0x76, 0xB3, 0x1F, 0xC5, 0x31, 0x3E, 0x61, 0x39, 0xF4, 0x20, 0xA0, + 0x54, 0xEC, 0xBA, 0xC6, 0x6A, 0xD5, 0xB7, 0x6D, 0x2E, 0x05, 0x88, 0x58, 0xC2, 0xCA, 0x8F, 0x1A, + 0x6B, 0x7C, 0x4A, 0xA9, 0x4A, 0x89, 0x5C, 0x0A, 0x21, 0xD9, 0x03, 0xF6, 0xCC, 0x69, 0x3F, 0xE6, + 0xE1, 0xC5, 0x63, 0x98, 0x44, 0x48, 0x90, 0x52, 0xB2, 0x7A, 0xB6, 0x20, 0xE7, 0x3C, 0x02, 0x07, + 0x5D, 0xC8, 0xCA, 0xC5, 0x39, 0x15, 0x8E, 0x03, 0xD8, 0xC3, 0x75, 0x8D, 0xBF, 0xF3, 0xEE, 0x1C, + 0x07, 0x29, 0x22, 0xE4, 0xD2, 0x72, 0x02, 0x01, 0x02, 0x7E, 0xCF, 0x9A, 0xF7, 0x70, 0xD8, 0x3D, + 0x9C, 0x65, 0x5A, 0x6B, 0x29, 0x92, 0x20, 0x90, 0x42, 0x60, 0x45, 0x21, 0x65, 0x15, 0x07, 0x93, + 0x5D, 0xA9, 0xC8, 0xCD, 0x23, 0x5C, 0x4A, 0x06, 0x40, 0xA5, 0x22, 0x15, 0xAC, 0x58, 0x95, 0x94, + 0x39, 0xE7, 0x0C, 0x82, 0xC7, 0x28, 0x01, 0xD0, 0x1A, 0x33, 0xB4, 0xEE, 0x74, 0xD9, 0x85, 0x94, + 0xAE, 0xEF, 0xB6, 0xA5, 0xA0, 0x54, 0x42, 0x2B, 0x4D, 0x44, 0x58, 0x2B, 0x11, 0x31, 0x6B, 0x39, + 0xCF, 0x5E, 0x2B, 0x45, 0x88, 0xC6, 0x1A, 0x21, 0x44, 0xCE, 0x35, 0xE5, 0x2C, 0x85, 0xC8, 0x15, + 0x79, 0xAB, 0x92, 0x42, 0xB2, 0xDB, 0x11, 0x00, 0x48, 0x4A, 0x29, 0x24, 0xDF, 0x19, 0x25, 0x17, + 0x2C, 0xC8, 0xA1, 0x1A, 0xA5, 0xD6, 0x31, 0xC4, 0xFF, 0xF7, 0x6F, 0x7F, 0x19, 0x53, 0xFE, 0x93, + 0x1F, 0x7F, 0x5F, 0x6B, 0x75, 0x73, 0xB7, 0x2D, 0x88, 0x4F, 0x9E, 0x5C, 0x74, 0x43, 0x57, 0x2B, + 0xC6, 0x90, 0x4B, 0xA9, 0xC6, 0x28, 0x4E, 0xD2, 0x15, 0x42, 0x5A, 0x6B, 0x73, 0x29, 0x46, 0xEB, + 0x45, 0xDF, 0xAD, 0x96, 0x03, 0x03, 0xF9, 0xBC, 0x6C, 0x22, 0x91, 0xB5, 0xE6, 0x64, 0xB5, 0x54, + 0x52, 0x12, 0xD0, 0x7E, 0x9A, 0x41, 0xC0, 0xC5, 0xF9, 0x69, 0xD3, 0x58, 0x29, 0x25, 0xA7, 0x0A, + 0x4A, 0x29, 0x85, 0x90, 0x9F, 0x7E, 0xF6, 0xD5, 0x57, 0x5F, 0xBF, 0xDA, 0xED, 0xE7, 0xB6, 0x6D, + 0xDE, 0xBC, 0xB9, 0x52, 0x5A, 0xF6, 0x5D, 0x7B, 0xB2, 0x5E, 0x22, 0x62, 0xCA, 0xA5, 0xEF, 0x1A, + 0x1F, 0xE2, 0xB3, 0x67, 0x8F, 0x87, 0xC5, 0xC2, 0xCF, 0xA1, 0x20, 0xEE, 0x47, 0x8F, 0x84, 0xCE, + 0x9A, 0xA7, 0x8F, 0x1F, 0xBD, 0x7E, 0x73, 0x1D, 0x43, 0x32, 0x5A, 0x87, 0x90, 0x76, 0xE3, 0x64, + 0x82, 0xEE, 0xBB, 0xA6, 0x69, 0xDC, 0x03, 0x3B, 0xC1, 0x37, 0xD7, 0xC3, 0xC7, 0x44, 0x74, 0x50, + 0x45, 0xB0, 0xAA, 0x9F, 0xE5, 0xE8, 0x29, 0x15, 0x0E, 0x26, 0xD0, 0x5A, 0xB3, 0xC8, 0x9E, 0xFF, + 0x88, 0x31, 0xCA, 0x5A, 0xB3, 0xDB, 0x4F, 0xB9, 0x54, 0x56, 0x99, 0xB1, 0x2C, 0x56, 0x2A, 0x55, + 0x72, 0xE1, 0x93, 0x4E, 0x69, 0xD5, 0x36, 0xCE, 0x1C, 0x2A, 0x5C, 0x8B, 0x10, 0x50, 0x11, 0x9D, + 0xB5, 0x87, 0x9E, 0x0A, 0xE7, 0x34, 0x7F, 0x25, 0x48, 0x24, 0xA8, 0x56, 0x94, 0x52, 0x75, 0xAD, + 0xF6, 0x73, 0xE0, 0x93, 0x91, 0x88, 0x8C, 0x56, 0xDC, 0x8B, 0x28, 0xA5, 0x2A, 0xC7, 0x53, 0x0C, + 0x35, 0x98, 0x43, 0x74, 0xA0, 0xB0, 0xD6, 0x6A, 0x21, 0xE4, 0x30, 0x74, 0x9B, 0xFD, 0x44, 0x00, + 0x42, 0xC8, 0xE5, 0xA2, 0x97, 0x52, 0x74, 0x9D, 0xBB, 0xB9, 0xDD, 0xFD, 0xF6, 0xCB, 0xD7, 0xEF, + 0xBF, 0xFB, 0xF8, 0xE4, 0x64, 0xD1, 0xB6, 0x4E, 0x09, 0xB9, 0x5A, 0xAA, 0xD5, 0x72, 0x48, 0x29, + 0xBD, 0xB9, 0xBC, 0xFD, 0xF4, 0xF3, 0xD7, 0xDF, 0xBD, 0xBE, 0xDE, 0x6C, 0x76, 0xDB, 0xDD, 0x18, + 0x73, 0x26, 0xF8, 0x9D, 0x9F, 0x16, 0xE8, 0x10, 0x5F, 0xFB, 0xE4, 0xD1, 0xE9, 0x6A, 0xE8, 0x1E, + 0x9D, 0xAE, 0x4E, 0xD7, 0xAB, 0x4A, 0xF5, 0x9B, 0x97, 0x6F, 0xEF, 0xEE, 0xB6, 0xAF, 0xAF, 0x6E, + 0xEF, 0x37, 0x3B, 0x6B, 0xCD, 0xD9, 0xE9, 0x89, 0x56, 0xEA, 0xA5, 0x0F, 0xBB, 0x71, 0x3A, 0x59, + 0x2D, 0xCE, 0xCE, 0x4E, 0x90, 0xC8, 0xFB, 0xB0, 0x9F, 0x7C, 0x88, 0x91, 0xDF, 0x58, 0xAD, 0xF4, + 0x34, 0x7B, 0xAD, 0x54, 0x63, 0xAD, 0x0F, 0xF1, 0xFC, 0x6C, 0xAD, 0xB4, 0x8A, 0x29, 0xD7, 0x5A, + 0x59, 0x29, 0xC7, 0x0F, 0x3D, 0x1D, 0xC9, 0x8B, 0x5A, 0x2B, 0x87, 0xD0, 0xB3, 0xA8, 0xD5, 0x87, + 0x68, 0xB4, 0x46, 0xA4, 0xC5, 0x30, 0xE8, 0x18, 0xF5, 0x31, 0xB7, 0x57, 0x49, 0xB5, 0x5C, 0x9F, + 0xAD, 0x96, 0xC3, 0xE8, 0xA3, 0xEC, 0xD7, 0x76, 0x75, 0x0E, 0xDB, 0x1B, 0x42, 0x8A, 0x25, 0xED, + 0xC7, 0xE9, 0xEC, 0xF4, 0x44, 0x62, 0x8D, 0x29, 0x97, 0xCA, 0x3A, 0x40, 0xB9, 0x78, 0xFA, 0xDE, + 0xAB, 0xAF, 0xBF, 0x94, 0xFB, 0xAF, 0xCE, 0x9F, 0x9C, 0xBD, 0x2C, 0xE8, 0x8C, 0x6E, 0x9D, 0x33, + 0xDA, 0xB4, 0xCE, 0x38, 0x6B, 0x46, 0x1F, 0x2C, 0x63, 0x3A, 0xB5, 0xE6, 0x52, 0x9B, 0xC6, 0xED, + 0xA7, 0x59, 0x6B, 0xCE, 0x5F, 0xD7, 0x4A, 0x69, 0x96, 0xBF, 0x32, 0x2A, 0xCF, 0x34, 0xBF, 0xE1, + 0xF3, 0x17, 0xB1, 0x94, 0xC2, 0xAA, 0x77, 0x6B, 0x5D, 0xAD, 0x88, 0x94, 0xF8, 0x99, 0xE6, 0x9F, + 0x64, 0x4C, 0x45, 0xE9, 0x6C, 0xB4, 0xE1, 0x28, 0x6D, 0xAE, 0x10, 0x2E, 0xB5, 0x36, 0xAD, 0x03, + 0x51, 0x6B, 0xA9, 0xCE, 0x1A, 0x21, 0x45, 0x2E, 0xA5, 0xB1, 0xA6, 0xEB, 0x1A, 0x36, 0x48, 0x72, + 0x95, 0x5C, 0xCE, 0x95, 0x9B, 0xDF, 0x84, 0xD0, 0x0C, 0x90, 0x5B, 0xA7, 0xAD, 0xD6, 0x46, 0x69, + 0x63, 0x94, 0xD2, 0x8A, 0x19, 0x71, 0x21, 0x04, 0x00, 0xB2, 0x56, 0xA0, 0x14, 0xAC, 0x5C, 0xE9, + 0xC9, 0xF4, 0x68, 0x95, 0x04, 0xA0, 0x0F, 0xF1, 0xF3, 0xC7, 0x35, 0x92, 0xE8, 0xF7, 0x4E, 0xA5, + 0x07, 0xBD, 0x35, 0xFC, 0x4E, 0xA9, 0x88, 0xF4, 0x80, 0x82, 0x01, 0xC0, 0x43, 0xD7, 0x21, 0x1D, + 0xF9, 0xBB, 0x87, 0xBF, 0x44, 0x4A, 0xA1, 0x8D, 0x16, 0x52, 0x10, 0x81, 0x14, 0x92, 0x04, 0x70, + 0x6B, 0xC6, 0xC3, 0xBE, 0x23, 0x38, 0x67, 0x95, 0x08, 0x11, 0xDB, 0xC6, 0xA5, 0x94, 0x1B, 0x67, + 0x80, 0x7B, 0x3D, 0xA4, 0x44, 0xC4, 0x92, 0xCB, 0xC9, 0x62, 0x78, 0xFA, 0xF8, 0xB4, 0x6D, 0xDD, + 0xD7, 0xAF, 0xAE, 0x36, 0xBB, 0xF1, 0x80, 0x4F, 0x2B, 0x69, 0x94, 0x92, 0x52, 0x21, 0x56, 0x04, + 0x9A, 0x43, 0x80, 0xDF, 0x0B, 0x90, 0x61, 0x48, 0xDE, 0x18, 0x20, 0x80, 0x10, 0x03, 0x3B, 0xB1, + 0xEA, 0x41, 0x7E, 0xC9, 0x9A, 0x55, 0x2C, 0xB5, 0x6A, 0xA3, 0x01, 0xD4, 0x7E, 0x9C, 0x38, 0x10, + 0x38, 0x97, 0xAA, 0x94, 0x02, 0x29, 0x8D, 0xD6, 0x43, 0xDB, 0xFC, 0xFC, 0x57, 0x5F, 0xDC, 0xDE, + 0xEF, 0xFF, 0xF8, 0xC7, 0x1F, 0x6A, 0xAD, 0xC7, 0xFD, 0xF4, 0xF2, 0xD5, 0xDB, 0xA6, 0x69, 0x14, + 0x97, 0x27, 0x24, 0xC4, 0x8A, 0x81, 0x92, 0x89, 0x09, 0x09, 0xB8, 0x5C, 0xB2, 0xEF, 0x1B, 0x6B, + 0x8D, 0xB3, 0xA6, 0xD4, 0xCA, 0xC4, 0x87, 0xD1, 0xAA, 0xE4, 0x12, 0x42, 0x48, 0x31, 0x3D, 0x7F, + 0xF6, 0x18, 0x00, 0xC6, 0xC9, 0xF7, 0x5D, 0x37, 0xF9, 0xB0, 0x9B, 0x66, 0x76, 0xF5, 0x9F, 0x9F, + 0xAE, 0x6B, 0xAD, 0x6F, 0xDE, 0xDE, 0x5C, 0xDF, 0xDC, 0x8F, 0xE3, 0xD4, 0x38, 0xFB, 0xE6, 0xCD, + 0xDB, 0xFB, 0xED, 0xEE, 0xD9, 0xE3, 0x8B, 0xC6, 0x9A, 0x52, 0xF2, 0x34, 0x87, 0xE5, 0x30, 0x0C, + 0x7D, 0xCF, 0x3F, 0xFC, 0x18, 0xF3, 0x7E, 0x9A, 0x63, 0x2E, 0x52, 0xC8, 0xA1, 0x6F, 0x97, 0x43, + 0xFF, 0xE6, 0xF2, 0xE6, 0xE6, 0x6E, 0x1B, 0x62, 0x9C, 0xE7, 0x28, 0x04, 0x58, 0x6B, 0x1E, 0x3F, + 0x3A, 0x7D, 0xF6, 0xE4, 0x1C, 0x04, 0x58, 0x63, 0x1F, 0xAC, 0x45, 0x70, 0xF4, 0x4E, 0x1E, 0xFD, + 0xBF, 0x82, 0xC5, 0x9E, 0x3C, 0xEE, 0x1D, 0x15, 0x82, 0x22, 0xE7, 0x5A, 0x0B, 0xAA, 0xA3, 0x5B, + 0x16, 0x00, 0x22, 0xB7, 0xCE, 0x95, 0x32, 0x4E, 0x73, 0xCE, 0x25, 0xA5, 0x5C, 0x0A, 0x02, 0x88, + 0x52, 0xEA, 0x31, 0x1C, 0x05, 0x08, 0xA1, 0x94, 0x6A, 0xB4, 0x29, 0x95, 0x85, 0x78, 0x20, 0x65, + 0x25, 0x00, 0x63, 0x74, 0xD3, 0x68, 0xA3, 0xF8, 0x70, 0x94, 0x44, 0x94, 0x6B, 0x79, 0xB8, 0xF0, + 0x1E, 0x3D, 0x3A, 0x7B, 0xF5, 0xFA, 0xED, 0x6E, 0x3F, 0x12, 0xD1, 0xF9, 0xE9, 0x1A, 0x11, 0x53, + 0xCA, 0x31, 0xCE, 0xC3, 0xA2, 0x1F, 0xC7, 0x02, 0x00, 0xD6, 0x1A, 0xDE, 0x1D, 0x84, 0x94, 0x15, + 0x49, 0xFF, 0xCB, 0x3F, 0xFD, 0x41, 0x2E, 0xF5, 0x97, 0xBF, 0xF9, 0x16, 0x11, 0x8C, 0xD1, 0x9F, + 0x7F, 0xF5, 0x76, 0xBD, 0xEC, 0x5E, 0xBC, 0x73, 0xF1, 0xC3, 0x1F, 0xBC, 0xFB, 0xF2, 0xF5, 0x8D, + 0x94, 0xA2, 0x56, 0xFC, 0xE6, 0xBB, 0xAB, 0x17, 0xCF, 0xCE, 0x95, 0x91, 0x9F, 0xFC, 0xFA, 0x8B, + 0x7F, 0xFC, 0xC5, 0x17, 0x93, 0x8F, 0x4D, 0xE3, 0x5E, 0xBE, 0xB9, 0x9E, 0xC6, 0xC9, 0x59, 0xDD, + 0x38, 0x17, 0x62, 0x9A, 0xE6, 0x59, 0x80, 0xD0, 0x4A, 0x55, 0x44, 0x09, 0xA2, 0x12, 0x68, 0x29, + 0x19, 0xEA, 0xB2, 0x56, 0x6F, 0xF7, 0xF1, 0xBB, 0x57, 0x57, 0xFB, 0x71, 0xF6, 0x31, 0x2F, 0x97, + 0x4B, 0x29, 0x61, 0xB7, 0xDF, 0x9F, 0xAC, 0x96, 0xEB, 0xD5, 0x42, 0x4A, 0xF1, 0xBD, 0xF7, 0x9F, + 0x3F, 0x79, 0x74, 0x26, 0x95, 0x9C, 0x66, 0x6F, 0x8C, 0x5E, 0x2F, 0x17, 0x29, 0x15, 0xA5, 0xA5, + 0xB1, 0xA6, 0xEF, 0xDA, 0xCD, 0xFD, 0x5E, 0x4A, 0xB9, 0x5A, 0x0D, 0xAE, 0x71, 0x6D, 0xD7, 0x2C, + 0x08, 0x9D, 0x31, 0xC6, 0x18, 0x66, 0x94, 0x63, 0xC9, 0x8C, 0x4D, 0x02, 0x50, 0x4C, 0xF9, 0x7E, + 0xB3, 0xBB, 0xDF, 0xEC, 0x7D, 0x4C, 0x40, 0xD4, 0x75, 0xEE, 0xF4, 0x64, 0xC9, 0x13, 0x7B, 0x4A, + 0xB9, 0xED, 0x9A, 0x52, 0x2B, 0x12, 0x18, 0xAB, 0x87, 0xD5, 0xF2, 0xE3, 0x1F, 0xFC, 0xE0, 0x7E, + 0xF7, 0x0F, 0x85, 0xC4, 0xFA, 0xDD, 0x8F, 0xF7, 0xAF, 0x54, 0xB9, 0x79, 0x0B, 0xB5, 0xC6, 0x14, + 0x77, 0xE3, 0xA8, 0x04, 0x74, 0x8B, 0xB3, 0x5C, 0x6B, 0x0A, 0x21, 0xFA, 0xF4, 0x0E, 0x10, 0x82, + 0xBC, 0xBA, 0xBA, 0x3C, 0x5D, 0x5D, 0x37, 0xCD, 0xD0, 0x36, 0x06, 0x88, 0x9C, 0xD3, 0xC6, 0x9A, + 0xFD, 0xEC, 0xB1, 0x22, 0x4A, 0x41, 0x02, 0xA4, 0x52, 0xC3, 0x62, 0x88, 0x21, 0xB6, 0x4D, 0x23, + 0x04, 0x88, 0xD6, 0x49, 0x21, 0x43, 0x4C, 0x29, 0x07, 0x02, 0xA8, 0xA5, 0x70, 0xB7, 0x2B, 0x41, + 0xE6, 0x57, 0xFB, 0x70, 0xDF, 0x4A, 0x51, 0x10, 0x15, 0xA9, 0x74, 0x4C, 0xF6, 0xAD, 0x95, 0x78, + 0xF5, 0xCB, 0xA5, 0x60, 0x35, 0xA1, 0xC4, 0x52, 0xAA, 0x94, 0xB2, 0x62, 0x76, 0xF6, 0xC0, 0x97, + 0x4B, 0x29, 0x58, 0x0B, 0x5A, 0x4A, 0x35, 0xFA, 0x50, 0x8F, 0x24, 0xA5, 0x54, 0xD2, 0x48, 0x29, + 0x6B, 0x41, 0x00, 0x72, 0xCE, 0x32, 0xC2, 0xC5, 0xCF, 0xA8, 0xD6, 0xCA, 0x28, 0x69, 0xAD, 0x31, + 0x6C, 0x58, 0x21, 0x62, 0xE1, 0xAB, 0x50, 0x82, 0x61, 0x23, 0x02, 0xC2, 0x4A, 0x07, 0x7E, 0xBB, + 0xA2, 0x94, 0xC2, 0x3A, 0xC3, 0x85, 0x52, 0x52, 0x02, 0x5F, 0x1B, 0xF8, 0x7B, 0xEE, 0xC2, 0x87, + 0xE3, 0xEC, 0xFF, 0x27, 0x7E, 0x7D, 0xD8, 0x25, 0x01, 0x0E, 0xCD, 0xB5, 0x0F, 0x53, 0x18, 0x1D, + 0x75, 0x67, 0xFC, 0x07, 0x95, 0x92, 0xD6, 0xEA, 0x69, 0x06, 0x29, 0x45, 0xAE, 0x05, 0x91, 0x78, + 0x9B, 0xE0, 0x69, 0x2F, 0xE6, 0x1C, 0x63, 0xE6, 0x93, 0xB1, 0x69, 0x1A, 0x06, 0xD1, 0xB5, 0xD6, + 0x5A, 0x69, 0xEE, 0x2D, 0x3F, 0x59, 0x2D, 0xCE, 0xCF, 0xD7, 0xF7, 0xA3, 0xFF, 0xF6, 0xF2, 0x8E, + 0x63, 0x5D, 0x85, 0x10, 0x08, 0x58, 0x62, 0xE5, 0xB1, 0x34, 0xA5, 0x54, 0x11, 0x8F, 0xC1, 0x62, + 0x42, 0xB0, 0x60, 0x0A, 0xC8, 0x68, 0xCD, 0x84, 0xA3, 0x35, 0x56, 0x2B, 0xC5, 0x71, 0x8F, 0x87, + 0x9D, 0x86, 0x20, 0x95, 0x6C, 0x94, 0x16, 0x20, 0x0A, 0x56, 0x6B, 0x0D, 0x17, 0x1A, 0x18, 0xA3, + 0x4B, 0x45, 0x86, 0xFB, 0x62, 0x4C, 0x42, 0xC8, 0x2F, 0xBE, 0x79, 0xBD, 0x9F, 0xFC, 0x07, 0xEF, + 0x3E, 0x7D, 0xFE, 0xEC, 0x62, 0xB7, 0x1F, 0xDF, 0x5E, 0x5E, 0x9D, 0x9E, 0xAC, 0xD9, 0xC4, 0x66, + 0xD9, 0xCA, 0x56, 0xB0, 0x62, 0xDD, 0xEE, 0x47, 0x96, 0xF5, 0x31, 0x62, 0x2A, 0x85, 0xC8, 0xB9, + 0x8C, 0xD3, 0xA8, 0xB5, 0x31, 0x5A, 0x0B, 0x21, 0xBC, 0x8F, 0xBF, 0xFD, 0xE2, 0x1B, 0x00, 0xB1, + 0x5A, 0x2F, 0xCC, 0xA4, 0x39, 0x96, 0x2A, 0x84, 0x78, 0x7E, 0xB6, 0xF6, 0x21, 0xBE, 0x79, 0x7B, + 0x13, 0x63, 0x2A, 0xA5, 0x70, 0x54, 0xD1, 0x6A, 0xB9, 0x78, 0xF1, 0xFC, 0xE9, 0x38, 0xCE, 0x4A, + 0x6B, 0x24, 0x91, 0x2B, 0x7D, 0xFD, 0xF2, 0x8D, 0xBB, 0xBA, 0x6D, 0x5B, 0xB7, 0xDD, 0xEE, 0xF9, + 0xEA, 0xED, 0xDA, 0x86, 0x08, 0xFB, 0xBE, 0xFD, 0xEA, 0xDB, 0x37, 0x57, 0x37, 0x9B, 0xDD, 0x3C, + 0x59, 0x7D, 0xA8, 0xE6, 0x70, 0xCE, 0x01, 0x88, 0x9C, 0x6A, 0xD2, 0x1C, 0x41, 0x2E, 0x95, 0x3C, + 0xA6, 0xAA, 0x12, 0x4B, 0xEA, 0x91, 0x5B, 0x1D, 0x88, 0x8F, 0xAD, 0x1A, 0x85, 0x10, 0x4A, 0xE9, + 0xE3, 0x27, 0x48, 0x52, 0x4A, 0x55, 0x2B, 0x22, 0x56, 0xA4, 0x9C, 0x4B, 0x08, 0x71, 0xF2, 0x71, + 0x3F, 0x4E, 0x21, 0x26, 0x10, 0x30, 0x8E, 0x33, 0x00, 0x34, 0x6D, 0x23, 0x08, 0xDA, 0xD6, 0xB1, + 0xF2, 0x09, 0x80, 0x85, 0x44, 0x64, 0x8C, 0x22, 0x02, 0xAC, 0x3C, 0x2B, 0x17, 0xCD, 0x50, 0x06, + 0xA2, 0x38, 0x3E, 0x54, 0x02, 0x44, 0x2E, 0x45, 0x29, 0xC9, 0xF5, 0x86, 0xD6, 0xDA, 0xED, 0x38, + 0x75, 0x4D, 0xE3, 0x43, 0x42, 0x02, 0xA6, 0x4A, 0x9B, 0xA6, 0x71, 0x2E, 0xB0, 0x0D, 0x00, 0x00, + 0x4A, 0x45, 0xCC, 0xD5, 0x18, 0x52, 0xFF, 0xF5, 0x7F, 0xF3, 0xDF, 0x7F, 0xF7, 0xF6, 0x76, 0xF6, + 0xC9, 0x59, 0xC3, 0xF1, 0x81, 0xF3, 0x1C, 0x6F, 0xEE, 0xC6, 0xC9, 0x87, 0x93, 0xD5, 0x82, 0xE9, + 0xB6, 0x47, 0x67, 0x2B, 0x1F, 0xC2, 0xCF, 0xFE, 0xFE, 0xD3, 0xBF, 0xFF, 0xE4, 0x8B, 0xC9, 0xC7, + 0xD9, 0x87, 0xCB, 0xAB, 0xDB, 0x9C, 0xB3, 0x92, 0x0A, 0x40, 0x20, 0x51, 0xCA, 0x65, 0xB7, 0x1B, + 0xAD, 0x35, 0x5C, 0x0F, 0x6E, 0xB5, 0xEE, 0x1B, 0x17, 0x53, 0x9E, 0x7D, 0x78, 0x74, 0xB6, 0xB6, + 0xC6, 0x5C, 0xDF, 0x6E, 0xBE, 0x7B, 0x7D, 0xC9, 0xE2, 0xCF, 0xAE, 0x69, 0xC6, 0x69, 0x46, 0xA4, + 0x8B, 0x47, 0xA7, 0x17, 0xE7, 0x27, 0x27, 0x27, 0xAB, 0x67, 0x4F, 0x1E, 0x59, 0xA3, 0xAD, 0x36, + 0x43, 0xDF, 0xAD, 0x57, 0x0B, 0x29, 0xE5, 0xEC, 0x43, 0x29, 0x95, 0xED, 0x63, 0x5F, 0x7E, 0xFD, + 0xAA, 0x69, 0x9B, 0xF5, 0x6A, 0xC1, 0x5B, 0x7A, 0xDF, 0x3A, 0xAD, 0x15, 0x02, 0xC5, 0x94, 0x73, + 0xAD, 0x2C, 0xA4, 0x44, 0xA4, 0x52, 0x71, 0x3F, 0x4D, 0xAC, 0x11, 0x29, 0xB5, 0xB4, 0xCE, 0x3D, + 0xBE, 0x38, 0xED, 0xFB, 0xA6, 0x6D, 0xDD, 0x6A, 0x35, 0x70, 0x11, 0x96, 0xD5, 0x46, 0x2A, 0xE1, + 0xAC, 0xD6, 0xD6, 0x0C, 0x9D, 0xDB, 0x6C, 0xEE, 0xA7, 0x90, 0x6C, 0xDB, 0x4B, 0x29, 0xD2, 0xBC, + 0x1F, 0xF7, 0x7B, 0xFE, 0x69, 0x12, 0xE1, 0xD9, 0x93, 0xE7, 0xCE, 0x59, 0x2D, 0x85, 0xD2, 0xFA, + 0xDD, 0x1F, 0xFD, 0xD1, 0xF5, 0xE5, 0xDB, 0xEB, 0x6F, 0xBF, 0x6A, 0x17, 0xA7, 0xA5, 0xBF, 0xD0, + 0x52, 0xD0, 0xD1, 0xEB, 0x9F, 0x52, 0x21, 0x80, 0xB6, 0x69, 0xC6, 0xD9, 0xF3, 0x4D, 0x5B, 0x91, + 0x9C, 0xB5, 0xAC, 0xB0, 0x6D, 0x1A, 0xDB, 0x75, 0x6D, 0x8C, 0x1C, 0x7A, 0x21, 0x6B, 0x45, 0x66, + 0xEE, 0x0F, 0x7E, 0x42, 0x00, 0x00, 0xEA, 0x9A, 0x46, 0x48, 0xC9, 0x17, 0xA0, 0x10, 0x02, 0x10, + 0x10, 0xA8, 0x6D, 0x1C, 0x10, 0xB0, 0xB8, 0x29, 0x97, 0x92, 0x73, 0xE1, 0x21, 0xEA, 0xE0, 0x8F, + 0x61, 0x6C, 0xC5, 0xB9, 0xAE, 0x75, 0x8D, 0xB3, 0xBC, 0x26, 0x38, 0x6B, 0xD8, 0x5D, 0xAC, 0xB5, + 0xD4, 0x4A, 0x02, 0x09, 0x63, 0x7E, 0x77, 0x73, 0x2A, 0x25, 0x78, 0x0A, 0x38, 0xEA, 0xCE, 0x19, + 0xBA, 0xE5, 0x10, 0x02, 0xC1, 0xFB, 0x24, 0x96, 0xC3, 0x4F, 0x12, 0x2B, 0x32, 0xB4, 0xE7, 0x9C, + 0x91, 0x52, 0xE0, 0x61, 0x4F, 0x7C, 0x28, 0x63, 0x3D, 0x1C, 0x4C, 0x5C, 0x0A, 0x06, 0xBF, 0x1B, + 0xD7, 0xE0, 0x01, 0xFB, 0xFF, 0xBD, 0x03, 0x4B, 0x3C, 0xFC, 0x7A, 0x98, 0xE9, 0xE8, 0x08, 0x86, + 0x57, 0xC4, 0x5A, 0xAA, 0x10, 0xC2, 0xC7, 0x74, 0x14, 0x13, 0x55, 0xA6, 0x17, 0x6B, 0xA9, 0x3E, + 0xC4, 0x18, 0x33, 0x22, 0xE6, 0x94, 0xE6, 0x69, 0x0E, 0x21, 0x54, 0xAC, 0xAD, 0x73, 0x15, 0xB1, + 0x20, 0x1A, 0xA3, 0xFE, 0xE0, 0xA3, 0x17, 0x9B, 0xFD, 0x7C, 0x75, 0xBB, 0xA9, 0x47, 0x1B, 0xA6, + 0x10, 0x82, 0xF5, 0x04, 0x7C, 0x82, 0x2B, 0xA5, 0x94, 0xD2, 0x47, 0x29, 0x19, 0xF2, 0xCD, 0x27, + 0x84, 0xA8, 0x07, 0xF6, 0x99, 0xB4, 0xD6, 0xB9, 0x94, 0x98, 0xB2, 0x96, 0xCA, 0x5A, 0xCD, 0xC5, + 0x31, 0xAC, 0xF3, 0x20, 0x80, 0x9C, 0x93, 0xB5, 0x96, 0xBF, 0xEC, 0xC5, 0x62, 0x60, 0x34, 0x8D, + 0x8E, 0x7C, 0x2E, 0x73, 0xAC, 0x57, 0x37, 0x77, 0x7F, 0xF5, 0xF7, 0xBF, 0x54, 0x4A, 0x3F, 0x3A, + 0x5F, 0x6F, 0x36, 0x5B, 0x21, 0xE5, 0x93, 0x27, 0xE7, 0xD6, 0x6A, 0x3F, 0x87, 0x52, 0x6A, 0xCC, + 0x99, 0xD9, 0x80, 0xD9, 0x87, 0xC9, 0x87, 0xBB, 0xBB, 0x0D, 0x00, 0xA4, 0x9C, 0x57, 0x8B, 0x05, + 0x1D, 0x12, 0xE2, 0xD4, 0x6E, 0x9C, 0xE7, 0x39, 0xD4, 0x8A, 0x3E, 0x86, 0xED, 0x6E, 0x04, 0x22, + 0xCD, 0xEC, 0x0D, 0x88, 0xBB, 0xFB, 0xED, 0xCB, 0xD7, 0x97, 0xBB, 0xFD, 0xC4, 0x2D, 0xD1, 0x5D, + 0xD7, 0x36, 0x8D, 0xC5, 0x4A, 0x42, 0xC8, 0xEB, 0xDB, 0xFB, 0xCF, 0xBE, 0xFC, 0xE6, 0xDB, 0x97, + 0x6F, 0x2F, 0xAF, 0xEF, 0x27, 0x1F, 0xA6, 0x69, 0xE6, 0x84, 0x9F, 0x8A, 0x78, 0x7D, 0xB3, 0xD9, + 0x4D, 0xF3, 0x76, 0x37, 0x7D, 0xFE, 0xF5, 0xCB, 0x39, 0x44, 0x25, 0x35, 0x1F, 0xDC, 0xA5, 0x20, + 0x2B, 0x2E, 0x41, 0xF0, 0x21, 0x85, 0x52, 0xC8, 0x5C, 0x6B, 0xCE, 0x35, 0xA5, 0x92, 0x2B, 0x0A, + 0x01, 0x0C, 0xC5, 0x1E, 0x04, 0x8C, 0x44, 0x39, 0xD7, 0x18, 0x33, 0x1D, 0x8D, 0xAE, 0x5C, 0x2D, + 0x4A, 0x04, 0x05, 0x31, 0x97, 0xB2, 0x1B, 0xA7, 0xD9, 0xC7, 0xD9, 0x87, 0x10, 0x12, 0xBF, 0x89, + 0xC4, 0xA9, 0xBF, 0x42, 0x5A, 0x6B, 0xB8, 0x81, 0xD8, 0x87, 0xC4, 0x18, 0x1B, 0x03, 0xFF, 0x4A, + 0x6A, 0x36, 0xA5, 0x39, 0xE7, 0xA4, 0x14, 0x74, 0xBC, 0xDB, 0x90, 0x28, 0xA6, 0x14, 0x63, 0x3C, + 0x0A, 0x8F, 0x29, 0xA5, 0xBC, 0x58, 0x2E, 0x80, 0x80, 0x01, 0x38, 0x56, 0x1D, 0x6D, 0xB7, 0xD3, + 0xED, 0xCD, 0x7D, 0x29, 0x75, 0x18, 0x3A, 0x66, 0x45, 0x39, 0x71, 0x13, 0x40, 0xA8, 0x7F, 0xF9, + 0x9F, 0xFC, 0xBB, 0xED, 0x6E, 0x86, 0xA3, 0x32, 0x3B, 0xA6, 0x3C, 0xF4, 0xED, 0xF9, 0xE9, 0xAA, + 0x94, 0x3A, 0xF9, 0x78, 0xB2, 0xEE, 0x67, 0xEF, 0x7F, 0xF3, 0xF9, 0x77, 0xFF, 0xF0, 0x8B, 0x2F, + 0x6E, 0x37, 0xA3, 0x35, 0x6A, 0xBB, 0xDB, 0x85, 0x94, 0x8C, 0x52, 0x5D, 0xDB, 0x00, 0x88, 0x9C, + 0x33, 0xBF, 0x48, 0x6D, 0xD7, 0x48, 0x21, 0xB9, 0x2C, 0x03, 0x4B, 0xE9, 0xBB, 0x76, 0xBD, 0x5A, + 0xAC, 0x97, 0x8B, 0x8F, 0x3F, 0x7A, 0x77, 0xF2, 0xFE, 0x6E, 0xB3, 0x6F, 0x1B, 0x6B, 0xAD, 0x56, + 0x52, 0x9E, 0xAC, 0x17, 0x43, 0xDF, 0x9E, 0xAC, 0x96, 0x5D, 0xDB, 0x9C, 0x9D, 0x2C, 0xD7, 0xAB, + 0x05, 0x6B, 0xCA, 0x9B, 0xE6, 0x90, 0xCA, 0x94, 0x72, 0x9E, 0xA6, 0x59, 0x0A, 0xD9, 0x75, 0x6D, + 0xD7, 0x36, 0x04, 0xA4, 0x94, 0x5A, 0x2E, 0x07, 0xA3, 0xB5, 0x31, 0x0A, 0x24, 0x43, 0xBC, 0x98, + 0x33, 0xE6, 0xC4, 0xBD, 0x2D, 0xC4, 0x23, 0xC9, 0x7E, 0xF2, 0x04, 0xA4, 0xA4, 0x34, 0xC6, 0x3A, + 0xA3, 0xCF, 0x4E, 0x57, 0xEB, 0xD5, 0x82, 0x21, 0x5B, 0x6B, 0x4D, 0xDB, 0x38, 0xE7, 0x0C, 0x2B, + 0x51, 0x41, 0x48, 0x4D, 0xD9, 0x48, 0x9A, 0x52, 0xAD, 0xB9, 0x4A, 0xEB, 0xA8, 0x96, 0x38, 0x6E, + 0x4B, 0xCE, 0x02, 0xC0, 0x6A, 0xD3, 0xAF, 0xD6, 0x5D, 0xD7, 0xD5, 0x30, 0x3D, 0x79, 0xFF, 0xA3, + 0xE1, 0xD9, 0x87, 0x5F, 0xFD, 0xEA, 0x93, 0xE9, 0xEE, 0xED, 0xF0, 0xE8, 0x5D, 0xAF, 0x4F, 0x08, + 0x4B, 0xD7, 0x75, 0xC6, 0x9A, 0x43, 0xD4, 0xCC, 0xA2, 0x67, 0xCC, 0x85, 0xAD, 0x3D, 0x48, 0x22, + 0xA5, 0x2C, 0x79, 0x43, 0xAC, 0xE8, 0x9C, 0xEB, 0xDB, 0xA6, 0x69, 0x9C, 0xB5, 0xA6, 0x69, 0x5C, + 0xAD, 0x58, 0x4B, 0x65, 0xE9, 0x16, 0x00, 0x58, 0x63, 0xDA, 0xD6, 0x09, 0x21, 0x0E, 0x0D, 0xF5, + 0xB5, 0x1A, 0xA3, 0xBB, 0xB6, 0xB1, 0xD6, 0xF2, 0x13, 0xF3, 0x60, 0xF4, 0xEB, 0xDA, 0xA6, 0x69, + 0x1B, 0xAD, 0x65, 0x66, 0x97, 0xB8, 0xD6, 0x42, 0x4A, 0xAC, 0xB8, 0x5C, 0x74, 0x5A, 0xA9, 0xC6, + 0xD9, 0xB6, 0x75, 0x1C, 0x12, 0x77, 0x08, 0x1E, 0x20, 0x2C, 0xA5, 0x7A, 0xCF, 0x7D, 0xAE, 0x07, + 0x34, 0x84, 0xA5, 0x1E, 0x15, 0x2B, 0x63, 0x1F, 0x4C, 0x75, 0x1F, 0x3A, 0xC9, 0x49, 0x70, 0x25, + 0x22, 0x17, 0x2F, 0x0A, 0x21, 0x8C, 0x35, 0x4A, 0xB1, 0x42, 0x4D, 0x1C, 0x36, 0xC4, 0x63, 0x31, + 0x21, 0x1C, 0x3D, 0x6E, 0x6C, 0x80, 0x3E, 0xAE, 0x99, 0xF8, 0xE0, 0x3B, 0x7E, 0x38, 0xD8, 0xE0, + 0x9F, 0x47, 0xF4, 0xB1, 0xB4, 0x8C, 0x41, 0x7D, 0xD6, 0xDC, 0xA6, 0x98, 0x2A, 0x51, 0x4C, 0x39, + 0xA5, 0xC2, 0x24, 0x86, 0x51, 0x06, 0x0F, 0x90, 0x7C, 0x4E, 0xA5, 0x28, 0x2D, 0x79, 0x24, 0x61, + 0x7F, 0xA8, 0x10, 0x22, 0xE6, 0x74, 0x73, 0xBB, 0x79, 0xF7, 0x9D, 0x0B, 0xAB, 0xCD, 0xEB, 0xAB, + 0xDB, 0x10, 0x23, 0x11, 0xF1, 0xD0, 0xC5, 0xC2, 0x5B, 0xAE, 0xD1, 0x06, 0x00, 0xA5, 0x24, 0xD1, + 0xA1, 0x28, 0xB7, 0xD4, 0xC2, 0x94, 0xA2, 0x31, 0x86, 0x43, 0xD5, 0xB4, 0x52, 0x87, 0xBC, 0xE4, + 0xE3, 0xEB, 0xC4, 0x5F, 0xA9, 0xD1, 0x5A, 0x08, 0x2A, 0x15, 0x73, 0x2D, 0x2C, 0xD9, 0x47, 0xA2, + 0x10, 0x52, 0xDF, 0xBB, 0xC5, 0xA2, 0x9B, 0xE6, 0xC0, 0xC3, 0x32, 0x13, 0x9D, 0x43, 0xDB, 0xE6, + 0x52, 0x7E, 0xFD, 0xDB, 0xAF, 0x77, 0xBB, 0xF9, 0xFC, 0x6C, 0x3D, 0x74, 0xED, 0x38, 0xCD, 0x31, + 0xA4, 0xED, 0x6E, 0x3A, 0x3D, 0x5B, 0x2F, 0x86, 0x5E, 0x1C, 0xBC, 0x4A, 0x86, 0x49, 0x46, 0x6E, + 0xCF, 0x7D, 0xF6, 0xE4, 0xA2, 0xED, 0x5A, 0xA3, 0x8D, 0xD2, 0xEA, 0xEC, 0x74, 0xB5, 0x5E, 0x2F, + 0x27, 0xEF, 0x9D, 0xB5, 0x5A, 0x69, 0x24, 0xE4, 0x86, 0x6F, 0x56, 0xAE, 0xDF, 0x6F, 0xF7, 0x57, + 0x57, 0xB7, 0x4A, 0xF2, 0x07, 0x77, 0xD8, 0xFE, 0x62, 0x2A, 0x5F, 0x7F, 0xF7, 0x7A, 0x9C, 0x3D, + 0xFF, 0x18, 0x87, 0xBE, 0x5D, 0x2E, 0x7A, 0x25, 0xD5, 0xE5, 0xCD, 0xBD, 0xF7, 0x29, 0xA6, 0xCC, + 0x95, 0xEC, 0x00, 0x10, 0x52, 0x8E, 0x29, 0x31, 0x5E, 0xC0, 0xD1, 0x47, 0xA5, 0xD4, 0x94, 0xF3, + 0xEC, 0x03, 0x00, 0xD4, 0x8A, 0x5C, 0xAC, 0xE9, 0x43, 0xF4, 0x3E, 0xB2, 0x21, 0x3C, 0xC4, 0xB8, + 0x1F, 0x67, 0x1F, 0x92, 0x0F, 0x31, 0xE7, 0x5A, 0x10, 0x73, 0x2E, 0x0C, 0xEA, 0x8F, 0x5C, 0xBA, + 0x55, 0x2B, 0x08, 0x8E, 0xDB, 0x0B, 0xFB, 0xFD, 0x54, 0x8E, 0x56, 0x16, 0x71, 0xCC, 0x6B, 0xE3, + 0xC0, 0xD1, 0x5C, 0x6A, 0x88, 0x89, 0xE9, 0x66, 0xA9, 0xA4, 0xD2, 0x2C, 0x20, 0xC7, 0x07, 0x50, + 0x85, 0x85, 0x99, 0x31, 0xA5, 0x8A, 0x35, 0x84, 0xB8, 0xD9, 0x8D, 0xD7, 0xB7, 0x1B, 0xD6, 0xF7, + 0xB1, 0xA8, 0xA2, 0x96, 0xF2, 0xED, 0x77, 0x6F, 0x6E, 0x6F, 0x37, 0x84, 0x87, 0xBC, 0xB3, 0x8B, + 0x8B, 0xF3, 0x6E, 0x68, 0x95, 0x92, 0x42, 0xCA, 0x69, 0xF2, 0x44, 0x04, 0x48, 0x15, 0x49, 0x80, + 0xD0, 0x15, 0x69, 0xBD, 0x1A, 0xE6, 0x39, 0x0A, 0x09, 0xA1, 0x64, 0x6B, 0xCD, 0x1C, 0xD2, 0xF8, + 0xE6, 0x2A, 0xA5, 0x98, 0x52, 0xFA, 0xE5, 0x6F, 0x8A, 0x52, 0xD2, 0x6A, 0x53, 0x4A, 0x8D, 0x29, + 0xD6, 0x2C, 0x1B, 0x6B, 0xA4, 0x52, 0x8D, 0xB3, 0x39, 0x97, 0xED, 0x76, 0x8F, 0x88, 0x8D, 0xB3, + 0x55, 0xD7, 0xCD, 0x76, 0x24, 0xAC, 0x5A, 0x9B, 0x39, 0x84, 0xC6, 0x18, 0x29, 0xE4, 0x6A, 0xD1, + 0xFF, 0xE8, 0x07, 0xEF, 0x0D, 0x43, 0x77, 0x7D, 0xB3, 0xE9, 0xDA, 0x86, 0x3D, 0x46, 0x39, 0x97, + 0xE7, 0xCF, 0x2E, 0x38, 0x31, 0xAA, 0x6D, 0x5C, 0xD7, 0xB9, 0x71, 0xF2, 0xAC, 0xE7, 0x00, 0x10, + 0xB5, 0xE0, 0x6E, 0x9C, 0x42, 0x8C, 0x4A, 0xCA, 0xAE, 0x6D, 0x52, 0xCA, 0x6D, 0xEB, 0xDE, 0x7F, + 0xF7, 0x69, 0xCE, 0xA5, 0x22, 0x95, 0x52, 0x41, 0x30, 0xF7, 0xC4, 0xBD, 0x9B, 0x50, 0x89, 0x0E, + 0x9E, 0x87, 0x8A, 0xD3, 0xEC, 0x95, 0x90, 0xAC, 0x36, 0xF2, 0x3E, 0x59, 0x67, 0x59, 0xBA, 0xDE, + 0xBB, 0x36, 0x84, 0x2C, 0xA5, 0xD0, 0x5A, 0xD6, 0x82, 0x42, 0x8A, 0x8A, 0x68, 0xAC, 0xC6, 0x29, + 0x5B, 0x81, 0xEB, 0xD5, 0x52, 0x0A, 0x19, 0x53, 0x76, 0xEF, 0xFF, 0x50, 0x2A, 0x7D, 0xF7, 0xEA, + 0xAB, 0x71, 0x7B, 0x5F, 0xAB, 0x56, 0xB6, 0x3D, 0x79, 0xF1, 0xBD, 0xE5, 0xF9, 0xF9, 0x70, 0xF1, + 0xC2, 0x87, 0xB4, 0xB9, 0xBB, 0x2B, 0xA5, 0x4E, 0xB1, 0x56, 0x83, 0x8F, 0xCE, 0xD6, 0x20, 0x84, + 0xF7, 0xA1, 0x56, 0x6C, 0x1B, 0xD7, 0x34, 0x2E, 0xE7, 0x32, 0x0C, 0x1D, 0x11, 0x29, 0xAD, 0x9C, + 0x52, 0xB9, 0x68, 0x22, 0x1A, 0xBA, 0xA6, 0x22, 0x35, 0xD6, 0x38, 0xDB, 0xCD, 0x5C, 0x10, 0x2D, + 0xE5, 0x1C, 0x52, 0x88, 0x51, 0x4A, 0xB1, 0x1F, 0xFD, 0x6E, 0x9C, 0x91, 0x78, 0x62, 0xE2, 0x83, + 0x8C, 0x8C, 0xD1, 0x4A, 0x4A, 0x26, 0x31, 0x85, 0x14, 0x7C, 0xF8, 0x2A, 0xA5, 0x52, 0x4A, 0x6C, + 0x02, 0x67, 0xBC, 0x26, 0xA5, 0x24, 0x85, 0x40, 0x22, 0x21, 0x45, 0x88, 0xC9, 0x18, 0x0D, 0x44, + 0x88, 0xA2, 0x69, 0x1C, 0xEF, 0x53, 0x4C, 0x96, 0x13, 0x1D, 0x72, 0x05, 0x4A, 0xAE, 0x20, 0x0E, + 0xF6, 0x34, 0x56, 0x13, 0x3F, 0xC8, 0xBC, 0xF2, 0xC1, 0x55, 0x2E, 0xB4, 0x52, 0x24, 0x80, 0x08, + 0x2A, 0x47, 0x7E, 0x1E, 0xA5, 0xDB, 0x87, 0xE3, 0x40, 0x82, 0x10, 0xA0, 0x04, 0x48, 0x90, 0x4A, + 0x02, 0x16, 0xAE, 0x14, 0x11, 0x5A, 0x4A, 0x62, 0x74, 0xFC, 0xD8, 0x4B, 0xC1, 0x6B, 0x2F, 0xA3, + 0x6F, 0x42, 0x82, 0x14, 0x12, 0x25, 0x7B, 0x34, 0x05, 0x48, 0xF1, 0x3B, 0x50, 0x8D, 0xA0, 0x22, + 0xA6, 0x58, 0x4A, 0x45, 0x1F, 0x02, 0xAB, 0xD5, 0x8C, 0x56, 0x4A, 0xAA, 0x98, 0x12, 0xD6, 0xCA, + 0xA1, 0x98, 0xC6, 0x98, 0xDD, 0x38, 0x12, 0x80, 0xB6, 0xA6, 0xD6, 0x5A, 0x6A, 0xE5, 0xFE, 0xE3, + 0x17, 0xCF, 0x2E, 0xDE, 0xB9, 0x38, 0xFB, 0xE5, 0x6F, 0xBF, 0x8E, 0xC7, 0xF2, 0x3A, 0x42, 0x3A, + 0x54, 0x5F, 0x48, 0x89, 0x88, 0x6C, 0xB5, 0xAA, 0x1C, 0x1A, 0x43, 0x58, 0x2B, 0x2A, 0x21, 0x39, + 0xFC, 0x38, 0xA5, 0xE4, 0x53, 0x56, 0x42, 0x94, 0x52, 0x1A, 0xE7, 0x80, 0xFB, 0xF4, 0xC4, 0x01, + 0x0D, 0xC4, 0x43, 0x58, 0x20, 0x69, 0x7D, 0xE8, 0xE2, 0x54, 0x4A, 0x19, 0x63, 0x66, 0xEF, 0xC7, + 0x09, 0x4E, 0x4F, 0x56, 0x8D, 0xF3, 0xA9, 0x20, 0x07, 0x75, 0x08, 0x29, 0x7C, 0xCC, 0x2F, 0x9E, + 0x3D, 0xCE, 0xA5, 0x7E, 0xF3, 0xF2, 0xCD, 0xE5, 0xCD, 0xED, 0x9F, 0xFE, 0xE4, 0xE3, 0x9F, 0xFE, + 0xE8, 0xA3, 0xFB, 0xFB, 0x5D, 0xD3, 0xB8, 0xA1, 0xEF, 0x57, 0xAB, 0x21, 0x84, 0x28, 0x84, 0x98, + 0x26, 0x7F, 0x73, 0x7B, 0xFF, 0xEC, 0xC9, 0x23, 0x76, 0xD7, 0x5E, 0xDF, 0xDC, 0x31, 0xC9, 0x8E, + 0x88, 0x4F, 0x2E, 0xCE, 0xE7, 0xD9, 0x0F, 0x43, 0x77, 0x7B, 0xB7, 0xFD, 0xF4, 0xB7, 0x5F, 0x7D, + 0xFC, 0xE1, 0x7B, 0x52, 0x88, 0xDB, 0xBB, 0xCD, 0xF9, 0xD9, 0xDA, 0x18, 0xFD, 0x83, 0x8F, 0xDE, + 0x7B, 0xF1, 0xEC, 0xF1, 0xE5, 0xD5, 0xED, 0x7E, 0x9C, 0x52, 0xA9, 0x0C, 0x5A, 0x95, 0x52, 0x3E, + 0xFE, 0xE8, 0x83, 0xCF, 0xBF, 0xFE, 0xF6, 0xF2, 0xFA, 0x6E, 0xD1, 0xB7, 0xAB, 0x45, 0x0F, 0x24, + 0x5E, 0xBE, 0xB9, 0x1E, 0x67, 0xCF, 0xE1, 0x51, 0x52, 0x48, 0x1F, 0x63, 0xAD, 0x14, 0x62, 0x44, + 0x24, 0x76, 0x41, 0x18, 0xAD, 0xD9, 0xD3, 0xD1, 0x75, 0x1D, 0xEB, 0x1B, 0x58, 0xFF, 0x8A, 0x88, + 0xB9, 0x62, 0x8C, 0x39, 0xE5, 0xC4, 0x38, 0x17, 0x9F, 0x71, 0x0C, 0x3F, 0x59, 0x63, 0xAC, 0x35, + 0x6D, 0xEB, 0x10, 0x71, 0x9A, 0x3D, 0x22, 0xA9, 0xC9, 0x73, 0x61, 0x58, 0x88, 0x2C, 0xA3, 0x7E, + 0x10, 0x55, 0x88, 0x87, 0xA2, 0x7B, 0x21, 0x44, 0xF0, 0x41, 0x1B, 0x2D, 0x95, 0x4C, 0xA9, 0xCC, + 0x21, 0x1A, 0x63, 0x40, 0x88, 0x5A, 0x8B, 0x14, 0xA2, 0x69, 0x9A, 0x14, 0x53, 0xD3, 0x98, 0xAE, + 0x6D, 0x7D, 0x88, 0x4A, 0x6B, 0x00, 0xC8, 0xB9, 0xDC, 0x6D, 0x76, 0xB3, 0x8F, 0x7D, 0xDF, 0xF6, + 0x7D, 0x7B, 0xB2, 0x5A, 0xCD, 0x3E, 0x2C, 0x97, 0xC3, 0xB7, 0x2F, 0xDF, 0xA4, 0x52, 0x97, 0xD0, + 0xB3, 0x50, 0xB4, 0x54, 0x02, 0x80, 0x6F, 0x5F, 0xBE, 0x41, 0x44, 0xE7, 0xDC, 0xD9, 0xC9, 0xCA, + 0x1A, 0x5D, 0x6A, 0xD5, 0xE5, 0x58, 0x2F, 0xAC, 0xB4, 0x52, 0x19, 0xB1, 0x62, 0xCE, 0x69, 0xBF, + 0xDF, 0x13, 0x90, 0x73, 0x76, 0x31, 0x74, 0x02, 0x60, 0xB3, 0xDD, 0x69, 0x25, 0x4F, 0x96, 0x03, + 0x22, 0x2E, 0x86, 0xAE, 0xE4, 0x62, 0xAD, 0x56, 0x52, 0x79, 0x1F, 0x84, 0x10, 0x8B, 0xAE, 0x6D, + 0x5B, 0x27, 0x41, 0xEC, 0xA7, 0xB9, 0x94, 0x62, 0xB5, 0x06, 0x21, 0xF6, 0xE3, 0xF4, 0x9E, 0x79, + 0xDC, 0x77, 0x2D, 0x12, 0x2D, 0x16, 0x1D, 0xD7, 0x64, 0x20, 0x51, 0xD7, 0x35, 0x6C, 0x52, 0xD1, + 0x5A, 0x29, 0x2D, 0xBB, 0xAE, 0x61, 0xC3, 0x54, 0xCE, 0x39, 0xC4, 0xE8, 0x43, 0x34, 0x5A, 0x39, + 0x37, 0x20, 0xA2, 0x8F, 0x29, 0xE7, 0x8C, 0x88, 0xFC, 0x40, 0x63, 0x4A, 0x52, 0x4A, 0x20, 0x91, + 0x13, 0xC3, 0x0D, 0x12, 0x09, 0x8F, 0x58, 0x63, 0x4D, 0xB9, 0xC4, 0x9C, 0x97, 0x43, 0x9F, 0x4B, + 0x29, 0xB9, 0xF4, 0x5D, 0xB3, 0x5A, 0x76, 0x3C, 0x86, 0x28, 0x25, 0x9D, 0xD5, 0x88, 0x98, 0x73, + 0xE5, 0xAB, 0x40, 0x08, 0x81, 0x95, 0x94, 0xD4, 0x25, 0xC7, 0x9C, 0xB3, 0x36, 0x7A, 0x9E, 0xBD, + 0xEB, 0xDA, 0xF6, 0xD1, 0xD3, 0xC7, 0x5D, 0x17, 0x7E, 0xFE, 0x33, 0xA9, 0x94, 0x70, 0x5D, 0x31, + 0x43, 0xBF, 0xBE, 0x40, 0x82, 0x52, 0x72, 0x4E, 0x29, 0xC6, 0xB0, 0x3E, 0x39, 0x11, 0xED, 0xD0, + 0x3A, 0xB7, 0x9F, 0x66, 0xEF, 0xE3, 0xA3, 0xB3, 0x75, 0xDB, 0x34, 0xBB, 0x69, 0x56, 0x4A, 0xAD, + 0x16, 0x3D, 0x27, 0x79, 0x49, 0x29, 0x7D, 0x88, 0x1C, 0xB1, 0x1D, 0x63, 0x0C, 0x81, 0xA1, 0x2B, + 0x99, 0x4B, 0xA9, 0x48, 0xEC, 0x76, 0x64, 0x33, 0x73, 0x45, 0x64, 0x60, 0xAB, 0x94, 0x62, 0xB4, + 0x33, 0x5A, 0x19, 0xA3, 0x89, 0x30, 0xA4, 0xC8, 0xC6, 0x03, 0x63, 0x14, 0x22, 0x1A, 0xA3, 0xFB, + 0xBE, 0x3D, 0x0C, 0x2C, 0xCE, 0xB2, 0xAF, 0xDB, 0x5A, 0xCB, 0xFE, 0xC4, 0xD9, 0x47, 0x9C, 0x66, + 0x96, 0x01, 0x1B, 0xA3, 0xF1, 0x08, 0x1E, 0x68, 0xAD, 0x38, 0xD9, 0x82, 0x6F, 0x60, 0x63, 0x74, + 0xAD, 0x74, 0x0C, 0x45, 0x31, 0x6C, 0x97, 0x00, 0x20, 0xFE, 0x69, 0xD4, 0x5A, 0xF9, 0xCC, 0x02, + 0x00, 0xA6, 0xDE, 0xE5, 0xA1, 0xB7, 0x9C, 0x79, 0x49, 0x0B, 0x47, 0x39, 0x05, 0xB3, 0x59, 0xFC, + 0x5F, 0xB2, 0x81, 0x41, 0x1E, 0x8A, 0x9C, 0x95, 0xD4, 0x56, 0x4A, 0xE0, 0xB6, 0x44, 0x66, 0x04, + 0x40, 0xC8, 0x4A, 0x28, 0xB8, 0x88, 0xA2, 0x16, 0x26, 0xE0, 0x8E, 0x7C, 0x39, 0x32, 0x39, 0x13, + 0x52, 0x46, 0xA4, 0x5C, 0x8A, 0x94, 0x52, 0x09, 0x23, 0xA5, 0xAC, 0x58, 0xC7, 0xA9, 0x74, 0x6D, + 0xDB, 0x38, 0x77, 0xB7, 0xD9, 0x01, 0x41, 0xAD, 0x18, 0x42, 0xE4, 0x63, 0x45, 0x4A, 0x39, 0xF4, + 0xDD, 0xD9, 0xC9, 0xF2, 0xE5, 0xE5, 0x2D, 0x09, 0x69, 0x8D, 0x14, 0x42, 0xE4, 0x9C, 0xD9, 0xEC, + 0x2E, 0x85, 0xCC, 0xB5, 0x00, 0x1C, 0x2A, 0xDA, 0x78, 0x79, 0xAC, 0x48, 0x42, 0x08, 0x6B, 0x4C, + 0xA9, 0x95, 0xC3, 0xF2, 0x7A, 0x29, 0xB5, 0x56, 0x7C, 0x32, 0x2A, 0x21, 0x39, 0x92, 0x04, 0x0F, + 0x23, 0xCF, 0x41, 0x17, 0xCA, 0x08, 0x5A, 0xC1, 0xC3, 0xDF, 0xA3, 0xA4, 0xCC, 0xB9, 0xDC, 0x6F, + 0xF6, 0xE7, 0xA7, 0x8B, 0xB7, 0xD7, 0x3B, 0xA1, 0x15, 0xD4, 0x9A, 0x4B, 0x19, 0xBD, 0x07, 0x21, + 0x9E, 0x5E, 0x9C, 0x0F, 0x7D, 0x3B, 0x79, 0xFF, 0x4F, 0xBF, 0xFE, 0xE2, 0xFA, 0x76, 0xF3, 0xD3, + 0x1F, 0x7D, 0x64, 0xAD, 0xFD, 0xC5, 0xAF, 0x3E, 0x5B, 0x2D, 0x87, 0xF3, 0xF3, 0xD3, 0xC6, 0x39, + 0x63, 0xF4, 0x07, 0xEF, 0x3F, 0xDF, 0x6E, 0xF7, 0x08, 0xE0, 0x00, 0x7C, 0xDF, 0x6F, 0xB6, 0xFB, + 0xB3, 0x93, 0xF3, 0xE0, 0xD2, 0x67, 0x9F, 0x7F, 0xFD, 0xDD, 0xAB, 0xB7, 0xC3, 0xD0, 0x9D, 0x9F, + 0x9E, 0x7E, 0xF0, 0xDE, 0xF3, 0x71, 0xF6, 0x6D, 0xD3, 0x86, 0x94, 0x37, 0xBB, 0x91, 0xA7, 0x5B, + 0x2D, 0xE5, 0xB7, 0xAF, 0xDE, 0xB4, 0x8D, 0x53, 0x4A, 0xEF, 0xF7, 0x53, 0x48, 0xB1, 0x6D, 0x5A, + 0xAD, 0xD5, 0xD3, 0x8B, 0xB3, 0x9C, 0x72, 0x2A, 0x65, 0xBB, 0xDD, 0xD7, 0x8A, 0xBB, 0x71, 0x26, + 0x80, 0xFD, 0x34, 0x57, 0x44, 0xEE, 0x73, 0x62, 0x18, 0x8B, 0xD5, 0x94, 0xB9, 0x54, 0xAD, 0x4D, + 0x29, 0x75, 0x9A, 0x3D, 0x21, 0x36, 0xAD, 0x23, 0xA2, 0x5C, 0xEA, 0xEC, 0x63, 0xDB, 0x3A, 0x29, + 0x94, 0x52, 0x4A, 0xA3, 0xAE, 0x15, 0x39, 0xC7, 0x62, 0x9C, 0x7C, 0x2A, 0x45, 0x0A, 0xBE, 0x15, + 0xC4, 0x30, 0xB4, 0x6D, 0xD3, 0x30, 0x0B, 0x5F, 0x11, 0xE7, 0x10, 0xB5, 0x92, 0x0C, 0x69, 0x31, + 0x7D, 0x2C, 0x15, 0xA7, 0x36, 0x96, 0xA3, 0x64, 0x9A, 0xB4, 0xD1, 0x9C, 0xF9, 0x9C, 0x4B, 0x05, + 0x10, 0xE3, 0x1C, 0xA4, 0x92, 0xA5, 0x14, 0x09, 0x60, 0xE6, 0xA0, 0xB5, 0x04, 0x40, 0xD7, 0x34, + 0x42, 0xAA, 0xBB, 0xFB, 0x5D, 0x29, 0x85, 0x58, 0x5A, 0x58, 0x2B, 0x2F, 0x34, 0x52, 0x8E, 0xF3, + 0x34, 0x5F, 0x5D, 0xDF, 0x35, 0x8D, 0xCD, 0x39, 0x95, 0xEA, 0x72, 0xC1, 0x2F, 0xBF, 0x7E, 0x39, + 0xFB, 0x60, 0xAD, 0x99, 0xBD, 0x27, 0x82, 0x94, 0xB3, 0x56, 0x6A, 0xE8, 0xBB, 0x10, 0xA3, 0x7E, + 0xF6, 0xF4, 0x6C, 0xB3, 0x9D, 0xA7, 0xC9, 0xFB, 0x29, 0xCC, 0xDE, 0x4F, 0xD3, 0xE4, 0x7D, 0xB0, + 0xC6, 0x70, 0xEF, 0xC3, 0x66, 0xBB, 0x4F, 0x31, 0x29, 0x25, 0x9E, 0x3D, 0x3E, 0xB7, 0x5A, 0x03, + 0xD0, 0x72, 0x68, 0x6F, 0xEE, 0xB6, 0x5D, 0xDB, 0x6A, 0x25, 0xDF, 0x79, 0x72, 0x6E, 0x8C, 0x6E, + 0x1B, 0xD7, 0xB5, 0xCD, 0xA2, 0xEB, 0xBE, 0x7E, 0xF9, 0xE6, 0x7E, 0xB3, 0x2B, 0x54, 0x95, 0x10, + 0x27, 0xEB, 0xE5, 0x7A, 0x35, 0x70, 0x1B, 0x90, 0xD6, 0xBA, 0x12, 0x71, 0xA9, 0xA5, 0x94, 0xB2, + 0x20, 0x59, 0xA3, 0x88, 0x68, 0xF6, 0x51, 0x08, 0x91, 0x52, 0xDE, 0x8F, 0x23, 0x22, 0xDD, 0xDE, + 0x6D, 0xDB, 0xC6, 0xBD, 0xFB, 0xD1, 0x8B, 0xA1, 0x6B, 0x63, 0x3E, 0x34, 0xB6, 0x2A, 0x25, 0x8D, + 0xD5, 0x00, 0xC2, 0x39, 0x2B, 0x95, 0xC4, 0xCA, 0x78, 0x30, 0x70, 0x3A, 0x4A, 0x45, 0x9C, 0x7C, + 0xCC, 0x0C, 0x4B, 0xC6, 0xDC, 0x35, 0x8E, 0x88, 0x52, 0x4A, 0x67, 0x27, 0xCB, 0xA1, 0x6F, 0x19, + 0x09, 0x0A, 0x3E, 0x71, 0xA1, 0x6F, 0xC5, 0xCA, 0x17, 0x91, 0x94, 0x22, 0xE5, 0xDC, 0xDA, 0x3E, + 0xE6, 0xFA, 0xFA, 0x9B, 0x2F, 0x90, 0xC4, 0x38, 0xCF, 0xB6, 0x69, 0x01, 0x6A, 0xD8, 0xED, 0x53, + 0x0C, 0x4D, 0xD3, 0x08, 0xD7, 0x4F, 0xD3, 0x6C, 0xAD, 0xB3, 0xCE, 0x6E, 0x6F, 0x6E, 0x73, 0xC9, + 0xCA, 0xB8, 0x0F, 0x3E, 0xF8, 0xE0, 0x4D, 0xE9, 0xE7, 0x71, 0x6C, 0x9B, 0xA6, 0xEB, 0xDA, 0xE5, + 0xD0, 0xDE, 0xDD, 0xEF, 0xA7, 0xC9, 0x33, 0xB4, 0xB7, 0x5E, 0x2D, 0x88, 0x28, 0xC6, 0xBC, 0x5A, + 0x2D, 0xB0, 0x62, 0x88, 0xD1, 0x5A, 0x5B, 0x4A, 0x09, 0x21, 0xFA, 0x10, 0xB5, 0xD6, 0x5C, 0xC1, + 0xE8, 0xAC, 0x2D, 0x58, 0x63, 0x2A, 0x58, 0x0F, 0x0A, 0x03, 0x73, 0xB4, 0xE6, 0x6A, 0xA5, 0x94, + 0x62, 0xDF, 0xBB, 0x92, 0xA5, 0x96, 0x5C, 0x85, 0x40, 0x3E, 0x92, 0x52, 0xCA, 0x52, 0x0A, 0x44, + 0x7B, 0x0C, 0x1E, 0x08, 0xFC, 0x9D, 0x3A, 0x67, 0x04, 0x88, 0xA1, 0x53, 0xFC, 0x90, 0x09, 0xC1, + 0xC0, 0x10, 0xA3, 0x63, 0x07, 0x4D, 0x06, 0x1E, 0xDB, 0xB4, 0xE8, 0x98, 0x2A, 0x25, 0x84, 0x13, + 0xA2, 0x94, 0x52, 0x52, 0xCE, 0xBC, 0xFC, 0xD5, 0x63, 0xB6, 0x00, 0x10, 0x29, 0x29, 0x19, 0x8E, + 0x04, 0x00, 0x02, 0xA1, 0xA4, 0x96, 0x56, 0x12, 0x41, 0xCE, 0xDC, 0xB6, 0x89, 0x47, 0xE5, 0x86, + 0x00, 0x22, 0x65, 0xAC, 0x32, 0x96, 0x52, 0xD8, 0x7C, 0xF1, 0x0B, 0xEF, 0x83, 0x8F, 0xB1, 0x1F, + 0x86, 0xA6, 0x6B, 0x05, 0x80, 0x6D, 0x1A, 0xB7, 0x58, 0x75, 0xFD, 0x20, 0x95, 0x06, 0xD3, 0x10, + 0x40, 0xC9, 0x51, 0x3C, 0x48, 0xAD, 0x80, 0x40, 0x40, 0x0C, 0x09, 0x0E, 0x37, 0x39, 0x5A, 0x6B, + 0xD8, 0x01, 0xC0, 0x40, 0x9E, 0xB6, 0x06, 0x09, 0x95, 0x52, 0xDA, 0x28, 0xF4, 0x20, 0x89, 0xAC, + 0x31, 0x15, 0xA1, 0x56, 0xFA, 0xE6, 0xD5, 0x15, 0x97, 0xC4, 0xF3, 0x27, 0x2B, 0x25, 0x8B, 0xD4, + 0xD1, 0xE7, 0xC4, 0xEF, 0x5E, 0x2E, 0x85, 0x31, 0xAC, 0xE4, 0x03, 0x09, 0x58, 0x74, 0x1D, 0x01, + 0x69, 0xA9, 0x99, 0xD6, 0x60, 0x9A, 0x8C, 0xD5, 0x00, 0x24, 0x15, 0x86, 0x90, 0x52, 0x96, 0x4A, + 0x5A, 0xAB, 0x1F, 0xDC, 0x05, 0x09, 0x09, 0xB1, 0xC2, 0x51, 0xBE, 0x6B, 0x8C, 0x29, 0xA5, 0xEC, + 0xC7, 0xB9, 0xB1, 0x9A, 0xA7, 0x4F, 0xC6, 0x07, 0x4A, 0x29, 0x21, 0xC6, 0x5A, 0xEB, 0x62, 0x18, + 0x94, 0x52, 0x80, 0x78, 0xBF, 0xDD, 0xFF, 0x2F, 0xFF, 0xFB, 0x5F, 0xBC, 0xFF, 0xE2, 0xE9, 0xBF, + 0xFA, 0x8F, 0x7E, 0xBC, 0xDD, 0xEE, 0xFF, 0xEE, 0x1F, 0x7F, 0xA5, 0x95, 0x22, 0x21, 0xDE, 0x79, + 0x7A, 0x21, 0x85, 0xB4, 0xD6, 0x38, 0xE7, 0xAE, 0x6E, 0x6E, 0x17, 0x8B, 0xDE, 0x87, 0x20, 0x95, + 0x4C, 0xB9, 0xB4, 0x4D, 0x93, 0x73, 0xB9, 0xDF, 0xEE, 0xAC, 0x31, 0x9B, 0xCD, 0x6E, 0xB7, 0x1B, + 0x8D, 0xB1, 0xDF, 0xBD, 0xBA, 0x7C, 0xFE, 0xF4, 0xC2, 0x87, 0xE0, 0x7D, 0x90, 0x42, 0x6E, 0x76, + 0xA3, 0x56, 0x2A, 0xE7, 0x32, 0xCF, 0x5E, 0x0A, 0xB9, 0x5E, 0x9D, 0x5B, 0x6B, 0x57, 0xCB, 0xC5, + 0xED, 0xDD, 0xE6, 0xFA, 0xF6, 0x7E, 0x9A, 0x03, 0x03, 0x61, 0x31, 0x25, 0xDE, 0xB7, 0x8C, 0xD6, + 0xDC, 0x1F, 0xAA, 0xA4, 0xDA, 0x4F, 0x53, 0xD7, 0x34, 0xE3, 0xEC, 0x85, 0x10, 0x7D, 0xEB, 0x5A, + 0x67, 0xA7, 0xC9, 0x8F, 0xE3, 0x6C, 0xAD, 0x25, 0x00, 0x6B, 0xD4, 0x6A, 0x31, 0xE8, 0x43, 0x0E, + 0x07, 0x10, 0xC0, 0x38, 0xCD, 0xDB, 0x71, 0xAA, 0x88, 0x47, 0x2D, 0x9E, 0xF0, 0x31, 0x35, 0xCE, + 0x23, 0xA2, 0x90, 0x0A, 0x2B, 0xB6, 0xD5, 0x4A, 0x29, 0x1A, 0x6B, 0x18, 0xD7, 0xE4, 0x69, 0x40, + 0x4A, 0x09, 0x74, 0xB0, 0x6A, 0x19, 0xAD, 0x6B, 0x9D, 0x84, 0x00, 0x6B, 0x4C, 0x4C, 0x55, 0x08, + 0xA8, 0x58, 0xA7, 0x79, 0x56, 0x4A, 0x72, 0xFA, 0x40, 0xDF, 0x35, 0xDC, 0x9D, 0xF9, 0xE4, 0x64, + 0xBD, 0xDB, 0xEF, 0x6F, 0x6E, 0xEF, 0x40, 0x88, 0xB6, 0x69, 0x7C, 0xC9, 0x97, 0x97, 0xD7, 0x6F, + 0xAF, 0x6E, 0xDE, 0x7D, 0xE7, 0x29, 0x11, 0xDD, 0xDC, 0xDC, 0x6B, 0xAD, 0x17, 0x8B, 0xFE, 0xF1, + 0xC5, 0xF9, 0xCD, 0xED, 0x66, 0xB3, 0xDD, 0x29, 0xAD, 0xA6, 0x79, 0x3E, 0xA0, 0xAE, 0x44, 0x3C, + 0xC7, 0x29, 0x29, 0xF4, 0xD5, 0xCD, 0x36, 0xC5, 0x74, 0x73, 0x77, 0x97, 0x52, 0xF6, 0x21, 0xAC, + 0x57, 0x0B, 0xA9, 0x54, 0x08, 0x31, 0xC6, 0x34, 0x8E, 0x13, 0x1C, 0x9F, 0x2A, 0x21, 0xC4, 0xF9, + 0xE9, 0xAA, 0x6B, 0x9B, 0xDD, 0x38, 0x3E, 0x7B, 0xF2, 0xA8, 0xEF, 0xDA, 0xFB, 0xFB, 0xAD, 0x35, + 0x7A, 0xB5, 0x5E, 0xA6, 0x54, 0xDE, 0x5E, 0xDD, 0xD5, 0x5A, 0xAD, 0x31, 0x5D, 0xD3, 0x34, 0x8D, + 0xEB, 0xBB, 0xC6, 0x18, 0x3D, 0x87, 0x34, 0xCE, 0xA1, 0x56, 0xBC, 0xBB, 0xDF, 0xE5, 0x52, 0xE7, + 0x39, 0x72, 0x7E, 0x29, 0x83, 0x7C, 0xBB, 0xC9, 0x07, 0x1F, 0xAE, 0x88, 0xD6, 0xEB, 0x05, 0x01, + 0x5C, 0xDF, 0x6E, 0xAD, 0x35, 0xEF, 0x3C, 0xBB, 0x58, 0xF4, 0xBD, 0x75, 0xDA, 0x38, 0xAB, 0x0F, + 0xEA, 0x3B, 0xA3, 0x95, 0x42, 0xE0, 0x4E, 0x1A, 0x41, 0x48, 0x5A, 0x6B, 0x8E, 0xA9, 0xA4, 0x83, + 0x04, 0xA9, 0x7A, 0x1F, 0x43, 0x4C, 0xDE, 0xFB, 0xAE, 0xB5, 0xAD, 0x73, 0x15, 0x79, 0x31, 0xB1, + 0x4A, 0x48, 0x42, 0x0A, 0x29, 0x97, 0x52, 0xE4, 0xEF, 0x07, 0x45, 0x91, 0x00, 0x2A, 0xE8, 0x7A, + 0xD4, 0xED, 0xEB, 0x2F, 0x7E, 0x3D, 0x9C, 0x3D, 0xDE, 0xEF, 0x77, 0xFB, 0xDD, 0xFD, 0xB0, 0x3A, + 0x7F, 0xFA, 0xEC, 0xC5, 0x9B, 0x5A, 0x56, 0xEF, 0x7C, 0x78, 0xB7, 0xB9, 0x5B, 0x10, 0x9C, 0x9C, + 0x3D, 0x52, 0xC6, 0xF9, 0x79, 0xCA, 0x39, 0xAD, 0x56, 0x27, 0xCB, 0xD3, 0xB3, 0x71, 0x96, 0xCE, + 0xA8, 0xAE, 0x6D, 0xD8, 0x0A, 0x3B, 0xCD, 0xF1, 0xEC, 0x64, 0xD5, 0x36, 0xAE, 0x6B, 0xDB, 0xAE, + 0x6D, 0x63, 0x4A, 0x5A, 0x1B, 0x67, 0x4D, 0x4C, 0xA9, 0xD4, 0xB2, 0xDF, 0x4F, 0x5A, 0xEB, 0x94, + 0xE3, 0x38, 0xFB, 0xB6, 0x71, 0xAC, 0x4E, 0x98, 0x43, 0xD8, 0xEF, 0xE7, 0xC9, 0x7B, 0x00, 0x32, + 0x46, 0x61, 0x25, 0x29, 0x0F, 0xD6, 0x3C, 0x21, 0x04, 0x2B, 0xBC, 0xD9, 0x8A, 0x5C, 0x0A, 0x5A, + 0xAB, 0xE7, 0xD9, 0x23, 0x12, 0xFB, 0x2E, 0x95, 0x4E, 0x07, 0x8C, 0xBC, 0x56, 0x00, 0xD0, 0xA0, + 0x10, 0xC1, 0x59, 0x7D, 0xA0, 0x0B, 0x4A, 0x71, 0x46, 0xB3, 0x86, 0x80, 0x65, 0x8C, 0x4A, 0x29, + 0x63, 0x14, 0x80, 0xC1, 0x07, 0x7C, 0x9B, 0x48, 0x08, 0xC1, 0x4A, 0x54, 0xEE, 0x12, 0x86, 0x43, + 0xFC, 0xB4, 0xC0, 0x83, 0x20, 0x5F, 0x54, 0x02, 0xAA, 0x28, 0x84, 0x40, 0xA4, 0x5A, 0xB1, 0xD4, + 0x0A, 0xE5, 0xE0, 0xF4, 0xAE, 0x87, 0x3E, 0x47, 0x09, 0x20, 0x80, 0x50, 0xB9, 0x36, 0xDF, 0x5D, + 0x4E, 0x6F, 0xBE, 0x0E, 0xB7, 0xAF, 0xAE, 0xBE, 0xFB, 0xB2, 0x48, 0x55, 0x10, 0x04, 0x80, 0x31, + 0x3A, 0xE7, 0x8A, 0x20, 0x96, 0xA7, 0xA7, 0xAB, 0xF5, 0xAA, 0x94, 0x22, 0x9B, 0xE1, 0xD9, 0x47, + 0x3F, 0x39, 0x7B, 0xF1, 0xFD, 0x52, 0x92, 0x20, 0x3C, 0xCA, 0x47, 0x65, 0xAE, 0xBC, 0xCB, 0x08, + 0xC9, 0xD6, 0xE5, 0x5A, 0xA7, 0xC9, 0xE7, 0x82, 0x15, 0x23, 0x08, 0xD1, 0xB5, 0x6D, 0xA9, 0x34, + 0x0C, 0x3D, 0x0B, 0x02, 0x78, 0xCA, 0x20, 0x44, 0x6B, 0x54, 0xA9, 0x35, 0xE6, 0xC2, 0x16, 0xD4, + 0x94, 0x0A, 0x3B, 0x9F, 0x0B, 0x56, 0xCD, 0xAB, 0xAD, 0xD2, 0xBC, 0xC5, 0x6A, 0x46, 0x67, 0x6A, + 0x9D, 0x43, 0x64, 0xEE, 0x32, 0xE5, 0xA2, 0x4A, 0x15, 0x00, 0x21, 0x46, 0x25, 0x84, 0xED, 0xB4, + 0x35, 0x7A, 0xE8, 0x5B, 0x22, 0x6A, 0x1A, 0x27, 0x85, 0x08, 0x29, 0x0B, 0x01, 0x8D, 0xB3, 0x73, + 0x88, 0x8C, 0x62, 0xD3, 0x31, 0x69, 0x1A, 0x09, 0xEF, 0x36, 0x63, 0x2E, 0x85, 0x38, 0xA1, 0xFB, + 0x68, 0x81, 0x48, 0x39, 0xEF, 0xC6, 0xD1, 0x5A, 0x5B, 0x10, 0x87, 0xA1, 0x8B, 0xA9, 0x7C, 0xF1, + 0xF5, 0xAB, 0xCD, 0x6E, 0xFC, 0x93, 0x9F, 0xFC, 0xE0, 0xC9, 0xC5, 0xF9, 0x76, 0xBB, 0x7F, 0x7B, + 0x7D, 0x77, 0x7B, 0xBB, 0xE5, 0x7B, 0x65, 0xB9, 0x5C, 0x58, 0x6B, 0xFE, 0xE4, 0xA7, 0x3F, 0x7C, + 0x74, 0xB6, 0x46, 0xA4, 0x1F, 0x7D, 0xFC, 0xC1, 0xDB, 0xCB, 0xDB, 0x2F, 0xBF, 0x7A, 0x49, 0x00, + 0x52, 0x8A, 0xBB, 0xBB, 0x7B, 0x9F, 0xD2, 0x34, 0x79, 0x44, 0x7C, 0x73, 0x79, 0xC3, 0xAF, 0x24, + 0x12, 0x4D, 0x93, 0x1F, 0x86, 0x6E, 0xF6, 0xC1, 0x39, 0xBB, 0xE8, 0xBB, 0xFB, 0xCD, 0x6E, 0x31, + 0xF4, 0x67, 0xEB, 0x65, 0xE8, 0xDA, 0xCD, 0x76, 0x94, 0x32, 0x57, 0x44, 0x1F, 0x53, 0xA9, 0xA8, + 0x95, 0xE6, 0x3B, 0x9B, 0xBF, 0xC0, 0x52, 0x51, 0x08, 0xAE, 0x31, 0x54, 0xE7, 0x27, 0xAB, 0xC6, + 0xD9, 0x39, 0x84, 0x9C, 0xF3, 0x72, 0x18, 0x42, 0x0C, 0x73, 0x48, 0x8B, 0xBE, 0x65, 0x9F, 0x03, + 0xD7, 0x89, 0x01, 0xC8, 0xFD, 0x34, 0x85, 0x10, 0x95, 0xE6, 0xF6, 0x29, 0x2E, 0xAC, 0xCB, 0x53, + 0xC5, 0x8A, 0x68, 0x8D, 0x31, 0x46, 0x03, 0x40, 0xDB, 0x3A, 0x09, 0xC0, 0x81, 0xE3, 0x88, 0x35, + 0x85, 0x22, 0x04, 0xB8, 0xC6, 0x02, 0x40, 0x08, 0xC1, 0x13, 0xD4, 0x5A, 0xD8, 0x09, 0xED, 0x9C, + 0x49, 0x6C, 0x05, 0x03, 0x3A, 0x66, 0x64, 0xD6, 0x69, 0x0E, 0xAE, 0xB1, 0xB7, 0x77, 0x9B, 0x71, + 0x9C, 0x9D, 0x73, 0x8F, 0x2F, 0xCE, 0x5F, 0xBF, 0xB9, 0xBA, 0xBC, 0xBC, 0x11, 0x42, 0x20, 0xD0, + 0xE8, 0xC3, 0xFD, 0x66, 0xAB, 0x15, 0x6B, 0xD6, 0x60, 0x37, 0x8E, 0x5F, 0x7F, 0xFB, 0xEA, 0xFC, + 0xFC, 0x44, 0x6B, 0x19, 0x53, 0x94, 0x52, 0x86, 0x10, 0x16, 0xC3, 0x50, 0x73, 0xF9, 0xE5, 0xAF, + 0x3F, 0x5B, 0x2E, 0x16, 0x5A, 0x2B, 0xF5, 0xA3, 0x3F, 0xFE, 0x37, 0x77, 0x9B, 0x4D, 0xCA, 0xF9, + 0x64, 0xBD, 0xEA, 0xBB, 0xD6, 0x87, 0x94, 0x73, 0x0A, 0x21, 0xFA, 0x18, 0x09, 0x88, 0x5B, 0x3C, + 0x80, 0xA0, 0x6F, 0x9B, 0x8B, 0xF3, 0x35, 0x37, 0xD4, 0xC7, 0x94, 0x6F, 0xEE, 0xB6, 0xB3, 0x4F, + 0x31, 0xD7, 0xCD, 0x6E, 0xFC, 0xE6, 0xE5, 0x9B, 0xD7, 0x6F, 0xAF, 0xAD, 0x35, 0x43, 0xDF, 0x2D, + 0x97, 0xFD, 0xD0, 0x77, 0x29, 0xE7, 0xFD, 0x7E, 0xF2, 0x21, 0x4A, 0x29, 0xA7, 0xD9, 0xCF, 0x3E, + 0xB0, 0xA4, 0xA0, 0xEB, 0x9A, 0xB6, 0x6D, 0x94, 0x92, 0xDB, 0xDD, 0x78, 0x7B, 0xB7, 0xD9, 0x8F, + 0x93, 0xB3, 0xF6, 0xEC, 0x64, 0x25, 0x40, 0xDC, 0x6E, 0x76, 0xDF, 0xFF, 0xF0, 0xF9, 0xD3, 0x27, + 0xE7, 0xD6, 0x99, 0xC6, 0x19, 0xA3, 0x15, 0x48, 0x29, 0x95, 0x04, 0x10, 0x52, 0x31, 0x35, 0x21, + 0x98, 0x53, 0x63, 0xD4, 0xE3, 0xC1, 0x5B, 0xE3, 0x63, 0xDE, 0xEE, 0xC6, 0x79, 0x9A, 0x17, 0x8B, + 0xEE, 0xEC, 0x74, 0xE5, 0xAC, 0xE1, 0x04, 0x5E, 0xAD, 0x64, 0x2E, 0x25, 0x1F, 0x22, 0x62, 0x2A, + 0xBF, 0xC0, 0xE9, 0x68, 0xCD, 0x22, 0x80, 0x9C, 0x8B, 0x6B, 0x86, 0xE9, 0xE6, 0xF5, 0xCD, 0xFD, + 0xED, 0xFD, 0xED, 0x35, 0x46, 0xFF, 0xC1, 0x0F, 0x7F, 0x9A, 0x36, 0xD7, 0xFB, 0xFB, 0x9B, 0xD5, + 0x8B, 0xEF, 0xDF, 0xDF, 0x5C, 0xAF, 0xCF, 0xCE, 0xCF, 0x1F, 0x3F, 0xD3, 0x52, 0x7F, 0xFA, 0xF3, + 0xBF, 0xFE, 0xF2, 0xD3, 0x5F, 0x9C, 0x9F, 0x9C, 0x3C, 0xFD, 0xFE, 0x9F, 0x04, 0x52, 0x6D, 0x63, + 0x9D, 0x63, 0xFC, 0xDE, 0x9E, 0x9E, 0xAC, 0xDA, 0xC6, 0x0D, 0x43, 0xB7, 0xE8, 0x3B, 0x38, 0xA8, + 0xA5, 0x8E, 0x5E, 0x42, 0xAD, 0x84, 0x90, 0xDA, 0x98, 0xA6, 0xB1, 0x42, 0x08, 0x4E, 0x6D, 0x65, + 0xDB, 0x6D, 0xCE, 0xC5, 0x19, 0xC3, 0x91, 0x32, 0x00, 0xE0, 0x43, 0xEC, 0xBB, 0xB6, 0x6D, 0xD9, + 0xA7, 0x52, 0x10, 0xB9, 0xF2, 0x47, 0x38, 0xB6, 0x2F, 0x18, 0x56, 0xD9, 0x60, 0x8C, 0xA9, 0x14, + 0xEE, 0xB8, 0x05, 0x56, 0x24, 0x6A, 0xA5, 0x9C, 0xD5, 0x42, 0x08, 0x29, 0x40, 0x49, 0x69, 0x8D, + 0xB6, 0xF6, 0x90, 0x81, 0x25, 0x25, 0x2B, 0x9D, 0x05, 0x2F, 0x71, 0xB9, 0x1E, 0x5A, 0x43, 0x84, + 0x90, 0x0C, 0x81, 0xE5, 0x9C, 0xB9, 0x12, 0xFC, 0xC0, 0x84, 0x62, 0x7D, 0xA0, 0x23, 0xC5, 0xD1, + 0x01, 0xC9, 0x12, 0x22, 0xFE, 0x53, 0x3C, 0x49, 0x21, 0x21, 0x12, 0x20, 0x92, 0x00, 0x12, 0xB6, + 0xAD, 0xAF, 0x3F, 0xFB, 0xEE, 0x3F, 0xFC, 0x6F, 0x9F, 0x7D, 0xFA, 0x8B, 0xCB, 0x9B, 0xBB, 0x04, + 0x4A, 0x6A, 0x33, 0x2C, 0x57, 0x15, 0x20, 0xE5, 0xBA, 0x8F, 0x79, 0x0C, 0x71, 0x9E, 0xFD, 0xDE, + 0xC7, 0x5C, 0xCA, 0xF6, 0xE6, 0xED, 0xAB, 0xCF, 0x7F, 0x25, 0x52, 0xEC, 0xD7, 0x8F, 0x84, 0xB1, + 0x84, 0x15, 0x00, 0x72, 0xAE, 0xE3, 0x34, 0x4F, 0x53, 0x20, 0xA2, 0x9C, 0x4A, 0xCC, 0x99, 0xDB, + 0x42, 0x4B, 0x41, 0xEF, 0x63, 0xCA, 0x19, 0x84, 0xE0, 0x6C, 0x1F, 0x10, 0x72, 0xF6, 0xBE, 0x6D, + 0x9A, 0xB6, 0x71, 0x21, 0x46, 0x1F, 0x52, 0xCC, 0x25, 0xE6, 0x02, 0x02, 0x24, 0x40, 0x2C, 0x55, + 0x2A, 0x59, 0x91, 0xA4, 0x90, 0x20, 0x84, 0xD2, 0x3A, 0xE7, 0x82, 0x88, 0x52, 0x49, 0xAD, 0x35, + 0x10, 0x4C, 0x3E, 0x10, 0x40, 0xDF, 0xB5, 0x7D, 0xE3, 0x8E, 0x1A, 0x76, 0x6A, 0x9D, 0x3D, 0x59, + 0x2F, 0x1B, 0x67, 0x39, 0xC1, 0x89, 0x9D, 0x3D, 0x5A, 0x2B, 0xD6, 0x9D, 0x6B, 0xA5, 0x8C, 0xD2, + 0xD6, 0x68, 0xA3, 0x35, 0x67, 0x96, 0xF2, 0x5F, 0xC5, 0x8A, 0xCD, 0x07, 0x12, 0x56, 0x08, 0x41, + 0x04, 0xB9, 0x30, 0x10, 0x4F, 0x1C, 0x40, 0x94, 0x4B, 0x95, 0x52, 0x94, 0x52, 0xBE, 0x7D, 0xF9, + 0xF6, 0xE2, 0xD1, 0xE9, 0xBB, 0xCF, 0x9F, 0xC4, 0x94, 0xAF, 0x6F, 0x36, 0xDB, 0xED, 0x9E, 0xE1, + 0x8E, 0x57, 0xAF, 0x2F, 0xBF, 0xF8, 0xFA, 0x25, 0x01, 0x6C, 0xF6, 0x13, 0x0F, 0xCE, 0x6F, 0x2F, + 0x6F, 0x63, 0x8C, 0x3F, 0xF8, 0xF0, 0xDD, 0xCF, 0xBE, 0xF8, 0xE6, 0xE6, 0x76, 0xA3, 0xA4, 0xEC, + 0xDA, 0x96, 0xFD, 0xF0, 0x52, 0x48, 0xEB, 0x6C, 0x0C, 0xC1, 0xFB, 0xA0, 0x8D, 0xE6, 0xE4, 0x55, + 0x1F, 0xC2, 0x34, 0x7B, 0x9E, 0x0F, 0xF6, 0xE3, 0xB4, 0x1D, 0xA7, 0x10, 0x73, 0x2A, 0x15, 0x8E, + 0x94, 0x8B, 0xB3, 0x26, 0xE7, 0x5A, 0xB1, 0x76, 0x8D, 0x5B, 0x74, 0xCD, 0xA2, 0x6F, 0xD6, 0x43, + 0x0F, 0x70, 0x40, 0x24, 0x95, 0x94, 0xB9, 0xD6, 0x10, 0xE3, 0xD0, 0xB6, 0x52, 0xCA, 0x71, 0x9C, + 0x53, 0xCE, 0x4A, 0xAA, 0xBB, 0xED, 0x6E, 0xB7, 0x9F, 0xB4, 0xD6, 0xF6, 0xE8, 0xAB, 0x4F, 0x29, + 0x1B, 0x63, 0x9C, 0x73, 0xA3, 0xF7, 0x9C, 0xEE, 0x07, 0x88, 0xBB, 0xFD, 0x28, 0x85, 0xF0, 0x21, + 0xF2, 0x4D, 0x59, 0x0A, 0xA7, 0x8F, 0x1D, 0xF2, 0x5A, 0x4B, 0xAE, 0x31, 0xA6, 0x54, 0x4A, 0x2E, + 0x95, 0x43, 0x05, 0x72, 0x2E, 0xB9, 0x64, 0xAC, 0x15, 0x2B, 0xC3, 0x29, 0x62, 0xBD, 0x5E, 0x4A, + 0x21, 0x89, 0x28, 0x97, 0x12, 0x52, 0x2C, 0xA5, 0x2C, 0x86, 0x5E, 0x48, 0xB1, 0xDB, 0x8F, 0x95, + 0x50, 0x4A, 0x85, 0x87, 0x00, 0x6E, 0x02, 0x20, 0x4E, 0xA3, 0xAD, 0xB9, 0x3C, 0x3A, 0x3F, 0x63, + 0x56, 0x61, 0x1C, 0xE7, 0x52, 0x2A, 0x10, 0x6C, 0x77, 0xFB, 0x9B, 0xDB, 0xFB, 0xC9, 0x07, 0x6D, + 0x8C, 0x1A, 0x16, 0xA7, 0xA5, 0xD6, 0xCD, 0x76, 0x37, 0x8E, 0xE3, 0x83, 0x07, 0xA5, 0x16, 0xCE, + 0xCC, 0x26, 0x05, 0x82, 0x88, 0x62, 0xCA, 0x31, 0x65, 0x70, 0x62, 0x9C, 0xFC, 0xED, 0x66, 0xEF, + 0x7D, 0xB8, 0xB9, 0xDF, 0xD4, 0x72, 0x10, 0xDA, 0xD4, 0x5A, 0x81, 0x44, 0x2E, 0x35, 0x97, 0xC2, + 0x81, 0x62, 0xCB, 0x45, 0x5F, 0x11, 0xDF, 0x5C, 0xDD, 0x6A, 0xA5, 0x38, 0x3A, 0x7D, 0xBD, 0x5A, + 0x18, 0x63, 0x72, 0xC9, 0xB7, 0xF7, 0xE3, 0x34, 0x86, 0x10, 0x62, 0xC1, 0x0A, 0x00, 0xB5, 0x56, + 0x6B, 0xCD, 0x62, 0xE8, 0xB4, 0xD6, 0x3E, 0xC4, 0x5A, 0xB1, 0x71, 0x46, 0x49, 0x35, 0xF4, 0x3A, + 0xA6, 0x0C, 0x40, 0x0F, 0x8B, 0x12, 0x1E, 0x9B, 0xAB, 0xD9, 0x3E, 0x53, 0x11, 0x63, 0x2E, 0x44, + 0x14, 0x53, 0xCA, 0xA5, 0xAE, 0x16, 0x03, 0xCB, 0x5F, 0x89, 0x44, 0xCA, 0xF9, 0xFA, 0x6E, 0x2B, + 0xA5, 0xB0, 0x47, 0x3F, 0x85, 0x56, 0x07, 0xEE, 0xAC, 0x22, 0x15, 0x42, 0xC8, 0x05, 0x11, 0xB5, + 0x36, 0xA7, 0xE7, 0x8F, 0x6B, 0xBB, 0x6C, 0x97, 0x67, 0x17, 0xA7, 0x27, 0xEF, 0xBE, 0xFF, 0xC1, + 0xFF, 0xFC, 0x3F, 0xFE, 0xAF, 0xCF, 0x3F, 0xFA, 0xF1, 0xD0, 0xBA, 0xF5, 0x87, 0x1F, 0xAE, 0xCF, + 0x1F, 0x81, 0xD0, 0x95, 0xA4, 0x52, 0x4A, 0x68, 0xD3, 0x74, 0xCB, 0x29, 0x0B, 0xEB, 0xB4, 0x3A, + 0xDA, 0xD0, 0x18, 0x13, 0x35, 0xC6, 0x38, 0xA7, 0x59, 0x05, 0x6E, 0xAD, 0x96, 0x52, 0xCD, 0xB3, + 0x97, 0x52, 0x19, 0x63, 0x4E, 0x4E, 0x2C, 0x0F, 0x47, 0x5A, 0xE9, 0x39, 0x04, 0xA5, 0x54, 0xEE, + 0x32, 0x10, 0xCD, 0x21, 0xA5, 0x5C, 0x94, 0x52, 0x31, 0xC6, 0xDD, 0x7E, 0x34, 0xC6, 0xF0, 0xD9, + 0x67, 0xAD, 0x22, 0xE2, 0x76, 0x22, 0x28, 0xA5, 0xAC, 0x57, 0xC3, 0xB2, 0xEF, 0x79, 0x8C, 0xDA, + 0x89, 0x71, 0x9A, 0xBD, 0xF7, 0x5E, 0x69, 0x6D, 0x8E, 0x58, 0x7D, 0x2E, 0x25, 0x17, 0xA5, 0xB5, + 0x46, 0x82, 0xAE, 0x6B, 0xC4, 0x31, 0xE8, 0x95, 0xD1, 0x74, 0xFE, 0xD4, 0x58, 0x5C, 0x9A, 0x12, + 0x47, 0x12, 0x03, 0xBB, 0xF4, 0x31, 0x97, 0xD9, 0x87, 0x52, 0x8B, 0x92, 0xCA, 0x54, 0xCC, 0x99, + 0x83, 0x23, 0x85, 0x3E, 0xCC, 0x73, 0x92, 0x89, 0x5D, 0x24, 0xCA, 0x25, 0xB3, 0x3A, 0x14, 0x85, + 0x40, 0x14, 0x48, 0x24, 0x85, 0x40, 0x20, 0x10, 0x86, 0x5E, 0xFD, 0xFA, 0xF2, 0x1F, 0xFE, 0xAF, + 0xEF, 0xAE, 0xB7, 0xF7, 0x53, 0x12, 0x10, 0xC5, 0x3C, 0x4B, 0xA3, 0xDF, 0xDE, 0xDE, 0x03, 0x01, + 0x73, 0x73, 0x48, 0xD8, 0x34, 0x0D, 0x02, 0x3C, 0x7A, 0xFA, 0xD8, 0xEA, 0xB3, 0xEF, 0xBE, 0xFC, + 0xF2, 0xAF, 0x34, 0x25, 0x98, 0x90, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xFF, 0xF2, + 0xFF, 0x78, 0xFE, 0xD5, 0x67, 0x7F, 0xFC, 0x9F, 0xFE, 0x7B, 0xBB, 0x3C, 0xA1, 0x52, 0x40, 0xC0, + 0x72, 0x31, 0xCC, 0x93, 0xAF, 0x88, 0xA5, 0xA2, 0xF7, 0x9E, 0xBB, 0x27, 0x6A, 0xA9, 0x04, 0x14, + 0x53, 0x51, 0x4A, 0xB9, 0xC6, 0xEE, 0xA7, 0x89, 0x4B, 0x43, 0x66, 0xCF, 0xCE, 0x1E, 0x48, 0xA5, + 0x1E, 0x14, 0xAA, 0x00, 0x05, 0x2B, 0xA7, 0x72, 0x17, 0xCC, 0x20, 0x25, 0x22, 0x09, 0x81, 0x42, + 0x08, 0xAB, 0x75, 0xAE, 0xD5, 0x97, 0xE4, 0xAC, 0xD3, 0x4A, 0x13, 0x10, 0x61, 0x4D, 0x89, 0x1A, + 0xE7, 0x94, 0x3A, 0x84, 0xD9, 0xF3, 0x3E, 0xCE, 0xE8, 0x9A, 0x31, 0xA6, 0xD4, 0xEA, 0x77, 0x91, + 0x88, 0x94, 0xD6, 0xB5, 0x22, 0x03, 0x67, 0x5A, 0xE9, 0xD6, 0x39, 0x4F, 0x07, 0x4D, 0x6F, 0xCE, + 0x59, 0x4A, 0x69, 0x94, 0x06, 0x80, 0x4A, 0x08, 0x20, 0x0E, 0x32, 0x62, 0xEE, 0x1D, 0xAE, 0x55, + 0x2A, 0x59, 0x6A, 0x55, 0x5A, 0x9D, 0x9F, 0xAD, 0x25, 0x88, 0xBF, 0xFA, 0xFB, 0x5F, 0x6D, 0xF7, + 0xE3, 0x7B, 0xCF, 0x9F, 0x54, 0xC2, 0x14, 0x33, 0x56, 0x24, 0x80, 0xC5, 0xD0, 0x85, 0x90, 0xFE, + 0x9F, 0xBF, 0xFC, 0x5B, 0x63, 0xF4, 0xC5, 0xA3, 0xD3, 0xC7, 0xE7, 0xA7, 0x3E, 0x44, 0x22, 0xF8, + 0xE6, 0xBB, 0xB7, 0x3F, 0xF8, 0xE8, 0x7B, 0xDB, 0xED, 0x27, 0x97, 0x57, 0xB7, 0xF7, 0x76, 0xC7, + 0xF7, 0x50, 0x08, 0xBD, 0xB3, 0xC6, 0x35, 0x0D, 0xC7, 0x31, 0xA6, 0x5C, 0xA4, 0x94, 0x8D, 0xB5, + 0x44, 0xB4, 0xD9, 0xEC, 0x26, 0x1F, 0xC6, 0x39, 0xD4, 0x5A, 0x1B, 0x67, 0x73, 0x29, 0xCE, 0x35, + 0xCB, 0xA1, 0x65, 0xA2, 0x29, 0xE7, 0xC2, 0x67, 0x16, 0xA7, 0xEF, 0x4E, 0x7E, 0xE2, 0x92, 0x91, + 0xBE, 0xEF, 0x88, 0x60, 0x9A, 0x03, 0xEB, 0x04, 0xBC, 0x0F, 0x5C, 0x3E, 0xDD, 0xB6, 0xB0, 0xE8, + 0xFB, 0xC6, 0xD5, 0xF2, 0x40, 0xE0, 0x54, 0x0C, 0x31, 0x4A, 0xA5, 0x22, 0x73, 0x93, 0x84, 0x9B, + 0xED, 0xEE, 0xFE, 0x7E, 0xDB, 0x38, 0x9B, 0x72, 0x6D, 0xDB, 0xA6, 0x20, 0x18, 0xAD, 0x6B, 0xC5, + 0x4A, 0x58, 0x0B, 0x72, 0xFE, 0xA5, 0x00, 0x91, 0x72, 0xAA, 0x48, 0x15, 0xC9, 0x9A, 0xDA, 0x36, + 0x2E, 0xA6, 0x54, 0x4A, 0x49, 0xB9, 0x8E, 0xD3, 0x7C, 0x7E, 0xBA, 0xFA, 0xDE, 0x7B, 0xCF, 0x9D, + 0x35, 0x2C, 0xA4, 0xAF, 0xB5, 0x8E, 0x63, 0x91, 0x52, 0x12, 0xD2, 0xD0, 0xB7, 0x53, 0xDF, 0x4E, + 0x3E, 0xE6, 0x54, 0x85, 0x3C, 0xF4, 0x2D, 0x29, 0x25, 0xBB, 0xAE, 0x19, 0xBA, 0x56, 0x08, 0xE0, + 0x0E, 0xB0, 0x18, 0xD3, 0x38, 0xCE, 0x31, 0x25, 0x25, 0xE4, 0x72, 0x39, 0x48, 0xA5, 0x72, 0x2D, + 0xEA, 0x3F, 0xFF, 0xAF, 0xFE, 0xBB, 0x94, 0xF3, 0xCD, 0xCD, 0xED, 0x34, 0x4D, 0xEA, 0x98, 0x13, + 0x54, 0x8F, 0x35, 0x2A, 0x92, 0x40, 0x4A, 0x79, 0x7E, 0xB6, 0xFA, 0xC3, 0x8F, 0x3F, 0x38, 0x59, + 0x2D, 0x36, 0xBB, 0xF1, 0xF2, 0x66, 0xF3, 0xE5, 0xB7, 0xAF, 0x6E, 0xEF, 0x36, 0xCC, 0x41, 0xCD, + 0xB3, 0x6F, 0xDB, 0x66, 0xB1, 0xE8, 0x8D, 0xD6, 0x42, 0x8A, 0xC6, 0xD9, 0xB3, 0xD3, 0xD5, 0x62, + 0xE8, 0x84, 0x14, 0x88, 0x6C, 0x5B, 0x83, 0x94, 0x32, 0x08, 0x68, 0x1A, 0x1B, 0x53, 0x7A, 0x7B, + 0x75, 0xB7, 0xDD, 0x4E, 0x3E, 0x84, 0xDD, 0x38, 0x97, 0x52, 0x8C, 0xD5, 0x67, 0x27, 0xCB, 0x61, + 0xE8, 0x52, 0x2A, 0x39, 0x65, 0x00, 0xA1, 0x8D, 0xB2, 0xD6, 0x54, 0x42, 0xAB, 0x8D, 0x38, 0x96, + 0x39, 0x03, 0x40, 0xC9, 0x95, 0xBD, 0x33, 0x5C, 0x34, 0xC9, 0x3D, 0x4F, 0x4C, 0x36, 0x8F, 0xD3, + 0x9C, 0x52, 0x1E, 0xFA, 0xAE, 0x6B, 0x5C, 0x48, 0x69, 0xF6, 0xA1, 0xE4, 0x92, 0x62, 0xAE, 0x15, + 0xE7, 0x90, 0x4A, 0x45, 0x21, 0x24, 0x01, 0xB0, 0x92, 0xA8, 0xD4, 0x1A, 0x42, 0x64, 0xF2, 0x21, + 0xA3, 0xC8, 0xFB, 0xCD, 0xDB, 0x6F, 0xBF, 0x58, 0x3C, 0x7E, 0xF7, 0xF9, 0x07, 0x3F, 0xD8, 0xBC, + 0xFA, 0xE2, 0x1F, 0xFE, 0xC3, 0x9F, 0xFF, 0x67, 0xFF, 0xED, 0xFF, 0xB0, 0x6C, 0xF5, 0xE5, 0xE5, + 0xDB, 0x47, 0x8F, 0x9F, 0x35, 0x8B, 0x33, 0x22, 0x11, 0xC7, 0xFB, 0x79, 0xBF, 0xFB, 0xE8, 0xA3, + 0x3F, 0x18, 0x9E, 0x7D, 0x08, 0x00, 0x42, 0xF1, 0xAE, 0x2D, 0x89, 0x20, 0xC6, 0xEC, 0xDC, 0xC1, + 0x24, 0x6C, 0x8C, 0x6E, 0x1A, 0x6B, 0x79, 0x7F, 0xD0, 0x92, 0x87, 0x26, 0x22, 0xAA, 0x15, 0xAD, + 0xB5, 0x6D, 0xD3, 0x74, 0x6D, 0xA3, 0x8D, 0xD2, 0x4A, 0x35, 0x8D, 0x35, 0x47, 0x3B, 0x11, 0xCB, + 0x26, 0x59, 0x5F, 0x16, 0x42, 0x44, 0x44, 0xF6, 0xB4, 0x61, 0xAD, 0x4A, 0x29, 0xA5, 0x15, 0x67, + 0x47, 0x18, 0x6D, 0x26, 0xEF, 0xF7, 0xB3, 0xA7, 0xDF, 0x29, 0x51, 0x0F, 0x86, 0x38, 0x26, 0x89, + 0xAC, 0xD1, 0xC6, 0x18, 0x6B, 0xEC, 0xEF, 0x25, 0xB0, 0x33, 0x8A, 0x5F, 0x89, 0x80, 0x37, 0xCD, + 0xC3, 0x1E, 0x94, 0x72, 0x29, 0x35, 0xA5, 0x74, 0x20, 0xE9, 0x2A, 0xB2, 0xCF, 0x03, 0x11, 0x73, + 0xA9, 0x88, 0x24, 0x40, 0x80, 0x10, 0xBC, 0xDA, 0x33, 0xBF, 0xCC, 0x73, 0x47, 0xA9, 0x87, 0xB6, + 0x5D, 0x50, 0x76, 0xB9, 0xFB, 0xE6, 0x93, 0xFF, 0xF3, 0x7F, 0xFA, 0xF4, 0xF5, 0x5D, 0x01, 0xC9, + 0x0E, 0xCD, 0x98, 0xA2, 0x00, 0xC8, 0xB5, 0xE6, 0xC2, 0x89, 0xEC, 0x85, 0xF5, 0x56, 0xCB, 0x93, + 0xD3, 0xA7, 0xDF, 0xFB, 0xA8, 0x59, 0x2C, 0xEF, 0xDE, 0xBC, 0xBA, 0xDB, 0x6C, 0x77, 0x9B, 0xFB, + 0xBE, 0x6D, 0xCF, 0xDE, 0xFD, 0xA8, 0xD6, 0xC2, 0x77, 0x78, 0xCE, 0x95, 0x73, 0x4A, 0x58, 0x35, + 0x0A, 0x48, 0x8C, 0x48, 0xE4, 0x5C, 0x7C, 0x88, 0x4D, 0xE3, 0x9A, 0xC6, 0x4D, 0xB3, 0x47, 0xC4, + 0x94, 0x0B, 0xEB, 0x63, 0x41, 0x08, 0xB6, 0xEF, 0x01, 0x1D, 0xF4, 0x1F, 0xCC, 0x18, 0x3C, 0x64, + 0x6F, 0x34, 0xD6, 0x18, 0xCD, 0x17, 0xA1, 0xD0, 0x02, 0xB4, 0x3A, 0x84, 0x38, 0x72, 0x61, 0xC2, + 0x6E, 0xF6, 0x70, 0x38, 0xEB, 0xA1, 0xD4, 0x52, 0x09, 0x4B, 0x2E, 0xA9, 0xE4, 0x8A, 0xC8, 0x9E, + 0x2D, 0xBE, 0x23, 0x85, 0x94, 0x02, 0x64, 0x48, 0xA9, 0x12, 0x59, 0x6B, 0xA7, 0x69, 0x66, 0x62, + 0x8E, 0xAF, 0x6A, 0x00, 0x90, 0x20, 0x38, 0x04, 0x55, 0x49, 0xC5, 0xAA, 0x3A, 0x24, 0xD0, 0x4A, + 0xF1, 0x16, 0xEF, 0xAC, 0xE5, 0x7D, 0xFE, 0xE6, 0x76, 0x73, 0x79, 0x7D, 0x27, 0x84, 0xE4, 0xCE, + 0xBD, 0xBE, 0x73, 0x20, 0x44, 0x88, 0x89, 0xF5, 0x10, 0x39, 0xE7, 0x6F, 0x5E, 0xBE, 0xC5, 0x8A, + 0xE7, 0x67, 0x27, 0xBF, 0xFD, 0xE2, 0x9B, 0x37, 0x97, 0x57, 0xBB, 0xFD, 0x24, 0xE5, 0x21, 0xA6, + 0xDC, 0x18, 0xD3, 0xB6, 0xCD, 0x34, 0xFB, 0x9C, 0xB3, 0x38, 0xFA, 0x52, 0xCC, 0xC1, 0xB9, 0x05, + 0x1C, 0x04, 0xA4, 0x94, 0x5C, 0x2F, 0x06, 0x67, 0xD4, 0x7A, 0xD1, 0x3D, 0x3A, 0x5D, 0xAE, 0x87, + 0x5E, 0x4A, 0x31, 0xF4, 0x1D, 0x10, 0xF4, 0x5D, 0x63, 0xAD, 0x96, 0x52, 0xC4, 0x94, 0x85, 0x50, + 0xCE, 0x59, 0x63, 0x8D, 0x52, 0x32, 0xE7, 0xA2, 0xB5, 0x6A, 0x9B, 0xA6, 0x94, 0x3A, 0xCE, 0x21, + 0x95, 0x22, 0xB5, 0xE2, 0x61, 0x25, 0xE5, 0x12, 0x73, 0x62, 0x62, 0xA7, 0xD6, 0xA2, 0xB4, 0x66, + 0x9D, 0x2D, 0x13, 0xD3, 0xD3, 0x34, 0x57, 0xC4, 0xE5, 0xA2, 0x67, 0x14, 0x92, 0x10, 0x7D, 0x8C, + 0x29, 0x67, 0x16, 0xD3, 0xE4, 0x52, 0xE6, 0x10, 0x59, 0x86, 0x16, 0x53, 0xC9, 0xA5, 0x84, 0x94, + 0x7C, 0x88, 0x40, 0x34, 0xCD, 0x7E, 0xF6, 0xF1, 0xC9, 0xE3, 0x47, 0xEF, 0x3C, 0x7D, 0x4C, 0x40, + 0x48, 0xBF, 0x8B, 0x0E, 0x97, 0x20, 0x99, 0x60, 0x61, 0x95, 0xFB, 0x6E, 0x1C, 0xA5, 0x14, 0x4F, + 0x1F, 0x9F, 0x3D, 0x7E, 0x74, 0xEA, 0xAC, 0x26, 0x80, 0x18, 0x33, 0xAF, 0xBD, 0xDB, 0xDD, 0x7E, + 0xB7, 0x9F, 0xE6, 0xD9, 0x0B, 0x10, 0xC6, 0xE8, 0xD3, 0xB3, 0xF5, 0x7A, 0xBD, 0x10, 0x42, 0x74, + 0x8D, 0xD3, 0x9F, 0x7F, 0xF1, 0xED, 0x34, 0x4D, 0x00, 0xD4, 0x77, 0x1D, 0xE3, 0x76, 0x02, 0x84, + 0x56, 0xD2, 0xFB, 0xA0, 0x95, 0x34, 0xDA, 0xF4, 0x7D, 0x77, 0xB6, 0x5E, 0xEE, 0xA7, 0xF9, 0x6F, + 0xFE, 0xE9, 0xD3, 0xFD, 0x38, 0x7B, 0x1F, 0xE7, 0xE0, 0x87, 0xAE, 0x23, 0x22, 0x1F, 0x23, 0x2F, + 0x47, 0x46, 0x69, 0x29, 0x65, 0xD7, 0x38, 0x0E, 0x14, 0x0B, 0x31, 0xB5, 0x4D, 0x73, 0x9C, 0xB0, + 0x68, 0x3F, 0x8E, 0xA5, 0x54, 0x1F, 0x92, 0x14, 0x62, 0xBB, 0x9B, 0xE6, 0x10, 0x52, 0xCE, 0x21, + 0x84, 0x45, 0xDF, 0x39, 0x7B, 0x08, 0x6E, 0xEF, 0xDB, 0x46, 0x29, 0xB9, 0x18, 0xDA, 0xAE, 0x6B, + 0x08, 0x48, 0x0A, 0xC9, 0xE3, 0x2A, 0xBF, 0xA5, 0xB5, 0x60, 0xCE, 0xA5, 0x3E, 0x78, 0x29, 0x2A, + 0x85, 0x98, 0x43, 0x48, 0x29, 0x97, 0x9C, 0x4B, 0xDF, 0xB5, 0xCE, 0x5A, 0x10, 0xC0, 0x89, 0x80, + 0x39, 0xD7, 0x18, 0x93, 0xD6, 0x5A, 0x6A, 0x4D, 0x88, 0x39, 0x97, 0x89, 0x02, 0x57, 0xE0, 0x70, + 0x6C, 0x4B, 0x29, 0x25, 0xA5, 0x5C, 0x6B, 0x05, 0x11, 0xBA, 0xF3, 0xF7, 0xD4, 0x2F, 0xFF, 0x4E, + 0x52, 0xCD, 0x61, 0xFE, 0xEB, 0x3F, 0xFF, 0xB3, 0xD5, 0xC5, 0x3B, 0xCD, 0xE9, 0x3B, 0xB0, 0x2F, + 0x88, 0xD8, 0x34, 0x6D, 0x4A, 0x15, 0x11, 0x4F, 0x1E, 0x3D, 0x79, 0xF1, 0xF1, 0x1F, 0x9E, 0xBE, + 0xF8, 0x40, 0x48, 0x45, 0x58, 0x53, 0x2E, 0x02, 0x0E, 0xA6, 0xC5, 0xB6, 0x1D, 0x98, 0xAF, 0xA8, + 0x88, 0x42, 0x48, 0xAC, 0x54, 0xA9, 0x72, 0x7C, 0x53, 0xCE, 0x25, 0x1D, 0x4B, 0x16, 0x58, 0xB7, + 0xA5, 0x95, 0x42, 0xC4, 0x63, 0xA2, 0xC0, 0x81, 0x22, 0x34, 0x46, 0xB7, 0xD0, 0xF0, 0x29, 0x16, + 0x53, 0x36, 0x5A, 0x95, 0x52, 0xDB, 0xB6, 0x51, 0x5A, 0xE5, 0x5C, 0xF8, 0x81, 0x63, 0x5E, 0xAD, + 0xEF, 0xDA, 0x39, 0x44, 0x09, 0x87, 0x54, 0x2F, 0x21, 0x84, 0xD1, 0xBA, 0x6D, 0x9C, 0xB3, 0xE6, + 0xA0, 0xCF, 0x06, 0x28, 0xC7, 0x25, 0xFA, 0x41, 0xCF, 0xC5, 0x8C, 0x24, 0x3B, 0x6C, 0x79, 0x8C, + 0x25, 0x24, 0x56, 0x7B, 0x70, 0x39, 0x93, 0xD1, 0x9A, 0x48, 0xF2, 0xC2, 0x48, 0x04, 0x39, 0xA7, + 0x28, 0x72, 0xD7, 0x39, 0x7E, 0x76, 0xAD, 0x35, 0x95, 0x28, 0xE5, 0x2C, 0x4A, 0x61, 0x25, 0x1A, + 0x62, 0x5E, 0xBF, 0xFD, 0xD5, 0x27, 0x3F, 0xFF, 0xCB, 0xDF, 0x5C, 0x6E, 0x48, 0x28, 0x55, 0x3D, + 0x48, 0x51, 0x4A, 0x09, 0xDE, 0x5B, 0xE7, 0x9E, 0x5E, 0x5C, 0xDC, 0xDE, 0xDE, 0x02, 0x55, 0x42, + 0x92, 0x52, 0x74, 0x6D, 0x73, 0x7A, 0x7E, 0xDA, 0xF4, 0x03, 0x81, 0x08, 0xF3, 0x1C, 0xC3, 0x9C, + 0x84, 0xFA, 0xE6, 0xB3, 0x4F, 0x9E, 0xFE, 0xC1, 0x9F, 0xB8, 0xD5, 0x09, 0x54, 0x02, 0x21, 0xBA, + 0x8E, 0x7B, 0x67, 0x22, 0x2F, 0xE6, 0x43, 0xD7, 0x0A, 0x21, 0x6E, 0xEF, 0xB7, 0x0C, 0xC9, 0x79, + 0x1F, 0xAC, 0xB3, 0xC3, 0x62, 0x28, 0xB5, 0x8A, 0x94, 0x39, 0x5F, 0x4C, 0x2A, 0x19, 0x73, 0x49, + 0x29, 0x13, 0x11, 0x96, 0xC3, 0x01, 0xCD, 0x2F, 0x83, 0x90, 0x42, 0x6B, 0xAD, 0xA4, 0xF4, 0x29, + 0x69, 0xA5, 0xD8, 0xC9, 0x5B, 0x4A, 0xD1, 0x4A, 0xF3, 0xD3, 0x93, 0x4B, 0xB5, 0xC6, 0x48, 0xA9, + 0x72, 0x45, 0x00, 0x62, 0x20, 0x6C, 0xBD, 0x58, 0xE4, 0x5A, 0x35, 0x81, 0x92, 0x54, 0x91, 0x32, + 0x16, 0x20, 0xC8, 0xB9, 0x38, 0x6B, 0x8C, 0x35, 0x07, 0x6B, 0x7A, 0xD3, 0x04, 0x1F, 0x95, 0x16, + 0x44, 0x54, 0x25, 0x69, 0xAD, 0x6A, 0xA9, 0x4A, 0x4A, 0xC4, 0x9A, 0x52, 0xE4, 0x62, 0x1F, 0xD6, + 0x91, 0x12, 0xA2, 0x10, 0xE0, 0x7D, 0x20, 0x80, 0xE0, 0xA3, 0xB3, 0x7A, 0x3B, 0xCE, 0xE3, 0x1C, + 0x76, 0xBB, 0xA9, 0x6B, 0xDD, 0xA3, 0xB3, 0x35, 0x5B, 0xCA, 0xB8, 0x5F, 0x23, 0xA6, 0x62, 0x8C, + 0x21, 0x80, 0xBE, 0xEF, 0xC6, 0x71, 0xDE, 0xEE, 0xF7, 0x7D, 0xDF, 0xE5, 0x94, 0x19, 0xED, 0x34, + 0xC6, 0x48, 0x21, 0xCF, 0x4E, 0x4F, 0xA6, 0x69, 0x1E, 0xBD, 0x67, 0x63, 0x53, 0x29, 0x45, 0x0A, + 0x99, 0x72, 0x12, 0x52, 0x34, 0xD6, 0x08, 0x21, 0x00, 0xA4, 0x52, 0x07, 0x1A, 0x45, 0x48, 0x49, + 0x85, 0x7C, 0x08, 0x6D, 0xE7, 0x88, 0xA8, 0xE4, 0x0A, 0xC0, 0xF3, 0x26, 0x32, 0xC5, 0x52, 0x4A, + 0x25, 0x01, 0x42, 0x8A, 0x94, 0xB3, 0xF7, 0x29, 0xA5, 0xB2, 0x58, 0x74, 0x95, 0x20, 0x25, 0x5F, + 0x6B, 0x4D, 0xA5, 0x3A, 0x67, 0x95, 0x94, 0xDE, 0x07, 0x56, 0x14, 0xB1, 0x5C, 0xB4, 0x96, 0xB2, + 0xDD, 0x8D, 0x44, 0xF4, 0xF4, 0xE2, 0xDC, 0xC7, 0x08, 0x44, 0x31, 0x05, 0x22, 0x97, 0x6A, 0x01, + 0x10, 0xDC, 0x37, 0x35, 0x7B, 0x0F, 0x42, 0x5A, 0xA3, 0x89, 0xA8, 0x62, 0x6D, 0x9C, 0xCB, 0xA5, + 0x20, 0xD6, 0x69, 0x8E, 0x3E, 0x84, 0x27, 0x8F, 0xCE, 0x3A, 0xE7, 0x66, 0xEF, 0xF9, 0xFB, 0x52, + 0x5A, 0x12, 0x41, 0x8A, 0x5C, 0x20, 0x57, 0x58, 0x7B, 0xBC, 0x5A, 0x2E, 0x40, 0x40, 0xEB, 0x1C, + 0x33, 0x3F, 0xF6, 0x64, 0xC5, 0x4F, 0x5D, 0xA9, 0x95, 0x45, 0xC2, 0xCE, 0x5A, 0x29, 0xA4, 0xF7, + 0xA1, 0x10, 0xA5, 0x5C, 0x72, 0x2A, 0xBC, 0x75, 0xE9, 0x79, 0x9E, 0x9D, 0xB3, 0x00, 0x10, 0x62, + 0x12, 0x40, 0x56, 0x69, 0x8E, 0xC7, 0x02, 0x82, 0x52, 0xD0, 0x68, 0x98, 0x26, 0xFF, 0x9B, 0x2F, + 0xBF, 0xDB, 0xEE, 0x47, 0x64, 0x43, 0x3F, 0x22, 0x87, 0x99, 0x31, 0xE2, 0x9E, 0x4B, 0x8E, 0x31, + 0x46, 0xE7, 0xAC, 0x35, 0xA5, 0xD6, 0x94, 0x8A, 0x14, 0x62, 0xF6, 0x71, 0x9C, 0x03, 0x11, 0xCE, + 0x3E, 0x28, 0xA5, 0x53, 0x2A, 0x93, 0x0F, 0x04, 0x42, 0x4A, 0xB9, 0xD9, 0xED, 0xBC, 0x0F, 0x00, + 0x60, 0xAD, 0x7E, 0x74, 0x76, 0xD2, 0xF7, 0x2D, 0x1C, 0x33, 0x69, 0x01, 0xA0, 0xEF, 0x1B, 0x67, + 0x8D, 0xE5, 0x94, 0x35, 0xC4, 0x92, 0x0B, 0x53, 0x69, 0x25, 0xD7, 0x5C, 0x0B, 0x11, 0xEF, 0xBC, + 0x2C, 0xD1, 0xAE, 0xA5, 0x94, 0x07, 0x07, 0x0C, 0x63, 0x4C, 0xAC, 0x5A, 0xDE, 0x6C, 0x47, 0x02, + 0x92, 0x4A, 0x22, 0x62, 0xD7, 0x35, 0xA5, 0x62, 0x4A, 0x29, 0x04, 0xE4, 0x9D, 0x5F, 0x08, 0xC1, + 0xD0, 0x26, 0xE7, 0x40, 0x44, 0xE3, 0x4E, 0xDE, 0xFB, 0xE1, 0xD5, 0xCB, 0xDF, 0xAE, 0x16, 0xFD, + 0x57, 0xBF, 0xFD, 0xF4, 0x5F, 0xFC, 0xDB, 0x7F, 0x3F, 0xC6, 0xBA, 0x76, 0xDD, 0xE9, 0xD9, 0x39, + 0x08, 0x35, 0xCD, 0x5E, 0x48, 0x29, 0xA4, 0x39, 0x39, 0x7D, 0x64, 0x17, 0x67, 0x13, 0x6F, 0x4C, + 0x88, 0xCE, 0x1A, 0x6B, 0x6D, 0xDB, 0x36, 0xB5, 0x94, 0x10, 0x13, 0xEB, 0x09, 0xAA, 0x44, 0x3A, + 0xFA, 0x81, 0xF8, 0x2B, 0x64, 0xFD, 0x42, 0x39, 0x34, 0x5D, 0xF2, 0x35, 0x95, 0x89, 0x68, 0xF6, + 0x81, 0xBD, 0xCD, 0x7C, 0x20, 0xCA, 0x22, 0x7D, 0x8C, 0xFC, 0x59, 0x3E, 0x9C, 0x3E, 0x4A, 0x29, + 0x22, 0xE1, 0x7D, 0x6A, 0x1A, 0x63, 0xB4, 0xC6, 0x5A, 0x8D, 0xD6, 0xAB, 0xC5, 0x90, 0x52, 0x39, + 0x84, 0x7B, 0x01, 0x49, 0x25, 0xB4, 0x52, 0xD6, 0x98, 0x7F, 0xDE, 0x8E, 0x05, 0x52, 0x8A, 0x94, + 0x52, 0x88, 0x09, 0xB9, 0x9E, 0x86, 0x28, 0xA5, 0xC4, 0x71, 0x9D, 0x4C, 0x37, 0x36, 0x60, 0x7D, + 0x38, 0x7C, 0x6E, 0xE6, 0xA8, 0xE2, 0x11, 0x87, 0xB0, 0xD6, 0xC4, 0x1F, 0xAE, 0x75, 0xD6, 0x1A, + 0x3D, 0x00, 0x28, 0xA5, 0x42, 0xC9, 0xC6, 0x68, 0x25, 0x45, 0x91, 0xBA, 0xBD, 0xFC, 0xF5, 0xE7, + 0x9F, 0xFC, 0xC5, 0x3F, 0x7C, 0x7B, 0x69, 0x5D, 0x2B, 0x84, 0x08, 0x39, 0x82, 0x90, 0x00, 0xC2, + 0x58, 0xA7, 0x8C, 0x7D, 0xFF, 0x87, 0x3F, 0x91, 0xBF, 0xFE, 0xC5, 0x3C, 0x8D, 0xB3, 0x0F, 0xAE, + 0x6D, 0xDE, 0xFF, 0xF0, 0xC3, 0xD5, 0xC5, 0x13, 0xD7, 0x0F, 0xFB, 0xBB, 0xDB, 0x69, 0xB7, 0x6D, + 0x8C, 0xF1, 0x31, 0x97, 0xE8, 0x77, 0x57, 0x2F, 0x4F, 0x97, 0xA7, 0x84, 0x68, 0x8C, 0x1A, 0x86, + 0x4E, 0x0A, 0x29, 0xB7, 0x3B, 0x31, 0x41, 0x41, 0x4C, 0xA5, 0x2C, 0x87, 0x1E, 0x09, 0xBD, 0x4F, + 0xFD, 0x30, 0x08, 0x01, 0x25, 0x45, 0xAA, 0x45, 0x48, 0x5D, 0x10, 0xA5, 0x44, 0x00, 0x76, 0x02, + 0x1C, 0x12, 0x77, 0x2B, 0xA2, 0x94, 0x0A, 0x80, 0x72, 0xCE, 0x1C, 0x9D, 0x96, 0x73, 0xE6, 0x48, + 0x77, 0x2D, 0x25, 0x72, 0xF4, 0x6E, 0x45, 0xCE, 0x32, 0x38, 0x3C, 0x30, 0x00, 0x21, 0xA5, 0xC3, + 0xA5, 0x82, 0xD8, 0x38, 0xCB, 0x15, 0x9D, 0x95, 0x88, 0x83, 0xCF, 0x72, 0xE4, 0x86, 0x04, 0x91, + 0x32, 0x8B, 0x76, 0x50, 0x08, 0xD1, 0xB5, 0x6D, 0x08, 0x11, 0x40, 0x18, 0xA3, 0x72, 0xC2, 0x0C, + 0xD5, 0x68, 0x29, 0x41, 0x1A, 0x6B, 0xAC, 0xB5, 0xF7, 0xDB, 0x1D, 0xCF, 0xE9, 0x11, 0x93, 0xD2, + 0x8A, 0xC5, 0x89, 0x52, 0xCA, 0xB6, 0x75, 0xC6, 0xE8, 0x14, 0x53, 0x4C, 0xF9, 0x66, 0xB3, 0x35, + 0x7B, 0x7D, 0x7D, 0xB7, 0xED, 0x5B, 0xC7, 0xBD, 0x8B, 0x6D, 0xDB, 0x84, 0x10, 0x2A, 0x52, 0x08, + 0xF1, 0x67, 0x7F, 0xFB, 0x4F, 0x5A, 0xA9, 0xAE, 0x6D, 0xD9, 0xED, 0xC0, 0x9E, 0x47, 0xD6, 0x88, + 0x50, 0x8C, 0x93, 0xF7, 0x87, 0x7C, 0x5B, 0x44, 0x44, 0x04, 0xF9, 0xD0, 0xDB, 0x06, 0x9C, 0xB6, + 0xC6, 0x23, 0xB6, 0x54, 0x8A, 0xD1, 0x18, 0x8E, 0x44, 0x92, 0x42, 0x12, 0x55, 0x56, 0xF0, 0x02, + 0x08, 0x24, 0x64, 0xC1, 0x33, 0xCB, 0x92, 0x67, 0x1F, 0x72, 0xAE, 0xB9, 0x24, 0xA0, 0x76, 0x9E, + 0x3D, 0x11, 0xA5, 0x94, 0xA5, 0x56, 0x46, 0xEB, 0x94, 0x52, 0xCC, 0x19, 0x11, 0x65, 0x91, 0xCE, + 0x39, 0x29, 0xE5, 0xE4, 0x83, 0x00, 0x38, 0x3D, 0x5D, 0xEF, 0xA6, 0x29, 0xE7, 0xB2, 0x5A, 0x2D, + 0x94, 0xD4, 0xB9, 0x14, 0x12, 0xA0, 0x95, 0x02, 0x25, 0x59, 0xEE, 0xDF, 0xF7, 0xBD, 0x94, 0xB2, + 0xD4, 0x62, 0xAC, 0xD1, 0xC6, 0xC4, 0xA3, 0xB0, 0xD9, 0x18, 0x6D, 0x8D, 0x26, 0x38, 0x58, 0x6E, + 0x8D, 0x56, 0xCE, 0x9A, 0x5C, 0x39, 0xC0, 0x4A, 0x4E, 0x53, 0x65, 0xBD, 0xA4, 0x10, 0xB0, 0x1C, + 0xBA, 0x72, 0xEC, 0x52, 0xE2, 0xEB, 0x64, 0x0E, 0xC1, 0x28, 0x75, 0x38, 0x87, 0x31, 0x2B, 0x2D, + 0xA5, 0x51, 0x10, 0x8B, 0xF7, 0xC9, 0x1A, 0x7B, 0x76, 0xBA, 0x26, 0x02, 0x2D, 0xA4, 0x9C, 0x27, + 0xAF, 0xB4, 0x56, 0x4A, 0x1A, 0xA5, 0x32, 0x17, 0xA9, 0xE5, 0x2C, 0x84, 0x70, 0xCE, 0xA5, 0x52, + 0x62, 0xCC, 0x3E, 0x04, 0x86, 0x57, 0x18, 0x28, 0x6D, 0x9B, 0x86, 0x08, 0x26, 0xEF, 0x41, 0x88, + 0xCE, 0x39, 0x21, 0xA5, 0x0F, 0xA1, 0xEB, 0x0E, 0xC2, 0xA8, 0xFD, 0xE4, 0x6F, 0xEE, 0xB6, 0x02, + 0x0E, 0xA9, 0x92, 0x02, 0xA0, 0x6B, 0x9B, 0xD3, 0xF5, 0x32, 0x57, 0x7A, 0x7D, 0x79, 0x35, 0x8E, + 0x93, 0x90, 0xD2, 0x1A, 0x7D, 0x7A, 0xB2, 0x7A, 0xFE, 0xCE, 0xE3, 0x8B, 0xF3, 0xF5, 0x62, 0xE8, + 0x78, 0x3B, 0xB3, 0xC6, 0x34, 0xAD, 0x95, 0x9C, 0xE6, 0x41, 0x40, 0x40, 0x29, 0x1F, 0xF8, 0xEF, + 0x43, 0xE1, 0x4C, 0xC5, 0x94, 0x4A, 0xCC, 0xA5, 0x22, 0x0A, 0x01, 0x52, 0x29, 0xCC, 0x31, 0xC6, + 0xC8, 0xC2, 0x13, 0x6B, 0x74, 0xCA, 0x65, 0xF6, 0x41, 0x4A, 0xD5, 0x36, 0xBA, 0xD4, 0xD2, 0xB5, + 0xAD, 0xF7, 0x7E, 0x1C, 0xE7, 0x8A, 0xB5, 0xEB, 0xFA, 0xA6, 0xD1, 0x00, 0xC4, 0xBE, 0x4B, 0x7D, + 0xC8, 0x14, 0x14, 0xF3, 0xB8, 0xB7, 0xE7, 0xEF, 0x5D, 0xFE, 0xD5, 0xFF, 0x5D, 0x72, 0x02, 0x69, + 0xCE, 0x5F, 0x7C, 0xFF, 0xF6, 0x6E, 0x2B, 0xDB, 0x4C, 0x44, 0x25, 0x85, 0x94, 0x28, 0x55, 0xA2, + 0x18, 0xA3, 0x9F, 0xB7, 0x9B, 0xCD, 0x88, 0xCD, 0xA2, 0x73, 0x87, 0x94, 0x09, 0xA9, 0x42, 0x88, + 0x87, 0x51, 0x11, 0xB1, 0x94, 0xC2, 0xE1, 0x88, 0x6C, 0x62, 0xE1, 0xB0, 0x71, 0xC9, 0x42, 0x36, + 0x29, 0x0B, 0xA2, 0x0F, 0x91, 0xBF, 0x0B, 0x4E, 0x61, 0x16, 0x02, 0x95, 0x94, 0x52, 0x48, 0x56, + 0x36, 0x33, 0x5F, 0x89, 0x88, 0x39, 0x27, 0x6B, 0xD8, 0xBD, 0x21, 0x38, 0x98, 0x89, 0x7D, 0x8E, + 0x8C, 0xD5, 0x4B, 0x21, 0x94, 0x56, 0x84, 0x24, 0x80, 0xB4, 0xD6, 0x46, 0x1B, 0x02, 0xF0, 0x31, + 0xF5, 0x6D, 0xC3, 0x5C, 0x70, 0x29, 0x87, 0xC9, 0xCB, 0x7B, 0x56, 0x66, 0x17, 0xE7, 0x34, 0x4B, + 0xA8, 0x62, 0x4A, 0x7D, 0xD7, 0x71, 0x98, 0x22, 0x83, 0x8C, 0x52, 0x2A, 0xAD, 0x35, 0x1D, 0xE2, + 0x61, 0x91, 0xC3, 0xFA, 0xF9, 0x9F, 0x19, 0xE0, 0x10, 0x04, 0x23, 0x78, 0x63, 0x0C, 0x21, 0x12, + 0x55, 0x65, 0xDB, 0x61, 0xBA, 0xBC, 0xFD, 0xF2, 0x1F, 0x3F, 0x79, 0x79, 0x0D, 0x20, 0xDA, 0xB6, + 0x91, 0xDA, 0xE4, 0xED, 0x36, 0xE7, 0x82, 0xB5, 0x34, 0xAE, 0x99, 0xC7, 0x3D, 0xE9, 0xE6, 0x7B, + 0x7F, 0xF4, 0xA7, 0xB7, 0xDF, 0x7D, 0xE5, 0x9A, 0xD6, 0xB6, 0xDD, 0xFA, 0xF1, 0x13, 0xDB, 0xF5, + 0xCA, 0x35, 0xF3, 0xB8, 0x8B, 0x31, 0x28, 0x6D, 0x18, 0x6F, 0x8E, 0x31, 0xD6, 0x52, 0xB0, 0xB0, + 0x04, 0x49, 0x76, 0x7D, 0x8B, 0x84, 0x25, 0xD7, 0x1A, 0x62, 0xA5, 0x9A, 0x6B, 0x91, 0x52, 0x39, + 0x4D, 0x6F, 0xBF, 0xF9, 0xCC, 0x6A, 0xD1, 0x6A, 0xF1, 0xD5, 0x6F, 0x3F, 0x9B, 0xAB, 0x5E, 0x3C, + 0xFE, 0x5E, 0x46, 0x2A, 0x29, 0x69, 0x6D, 0xA4, 0x54, 0x5A, 0x49, 0x25, 0x44, 0xC8, 0x07, 0x1C, + 0x50, 0x29, 0xC5, 0x88, 0x24, 0x11, 0xA5, 0x52, 0x9D, 0xD6, 0x08, 0x1C, 0x01, 0x22, 0x85, 0x80, + 0x43, 0x54, 0x3F, 0x1E, 0x3C, 0x34, 0x5A, 0x0B, 0x38, 0x74, 0xE5, 0x21, 0x8B, 0xE6, 0x10, 0xAB, + 0x10, 0x0A, 0xA4, 0x8C, 0x39, 0xE7, 0x72, 0x08, 0xB5, 0xD1, 0x42, 0x19, 0xFE, 0xDD, 0x5A, 0x19, + 0xCC, 0x1D, 0xA7, 0xD9, 0x5A, 0xA3, 0xA4, 0x8A, 0x31, 0x01, 0x19, 0x21, 0x0E, 0xD6, 0xA8, 0x93, + 0xF5, 0x6A, 0x9A, 0xE7, 0x10, 0x32, 0x49, 0x80, 0x8A, 0xEC, 0x18, 0xCD, 0xB9, 0x60, 0x55, 0xAC, + 0xAD, 0xE7, 0xB6, 0x01, 0xA5, 0x64, 0x88, 0x71, 0x9C, 0x3C, 0xDF, 0x3A, 0x7D, 0xDF, 0x2E, 0xFA, + 0xEE, 0x64, 0x35, 0x68, 0xA5, 0x78, 0xA5, 0x65, 0x49, 0xB3, 0x73, 0x0E, 0xB1, 0xF2, 0xAA, 0x95, + 0x52, 0x92, 0x52, 0xF6, 0x5D, 0xC7, 0x31, 0xB9, 0x7C, 0xC6, 0x71, 0xE4, 0x7F, 0x4C, 0x89, 0xCF, + 0x85, 0x5A, 0x2B, 0xD5, 0x43, 0xFC, 0x19, 0x81, 0x30, 0xD6, 0x12, 0x51, 0xA9, 0x28, 0x95, 0x92, + 0x1A, 0xFD, 0x94, 0xB4, 0x36, 0x93, 0x0F, 0x4A, 0x2B, 0xA7, 0x35, 0x09, 0x10, 0x42, 0xB1, 0xF1, + 0xE3, 0x7E, 0xB3, 0xEB, 0xBB, 0xF6, 0x7E, 0xBB, 0xD7, 0x5A, 0xB3, 0x2E, 0xBF, 0x69, 0xDB, 0x5C, + 0x78, 0xFF, 0x21, 0x66, 0x8D, 0x9C, 0x73, 0x31, 0x04, 0x63, 0xD4, 0x7A, 0xB5, 0xAC, 0x44, 0xB3, + 0x8F, 0x8B, 0xA1, 0x07, 0x10, 0x24, 0x65, 0x2D, 0x05, 0x08, 0x50, 0x62, 0x2D, 0xD8, 0x18, 0xC7, + 0x81, 0x80, 0x05, 0xAB, 0xD1, 0xC6, 0xC7, 0x38, 0xFB, 0x98, 0x53, 0x8E, 0x31, 0x1B, 0x25, 0xB9, + 0x19, 0x56, 0x0B, 0x81, 0x48, 0x4A, 0x09, 0xD6, 0x5A, 0x1E, 0x7D, 0x78, 0x7A, 0xE8, 0x7B, 0x44, + 0x44, 0xC2, 0x94, 0x33, 0x13, 0x79, 0x77, 0xB7, 0xF7, 0x29, 0xE5, 0xE5, 0xA2, 0x37, 0x4A, 0x3B, + 0x63, 0x72, 0xA9, 0x58, 0xC9, 0x5A, 0xF3, 0x10, 0xAC, 0x6E, 0x1B, 0x63, 0x8D, 0xB1, 0x46, 0x7B, + 0x1F, 0xAC, 0x35, 0x7A, 0x1A, 0xE7, 0xA6, 0x71, 0x00, 0x80, 0xA5, 0xEC, 0x7D, 0xD9, 0x8D, 0x53, + 0x45, 0x6A, 0x9C, 0x35, 0xD6, 0x94, 0x92, 0xF7, 0xE3, 0x44, 0x48, 0x52, 0x49, 0x8E, 0xDA, 0x60, + 0x61, 0xD4, 0x34, 0xCF, 0x39, 0x67, 0xA5, 0xF4, 0x6A, 0xD1, 0x5B, 0x63, 0x42, 0x08, 0x5C, 0xD0, + 0x1D, 0x42, 0xDE, 0x17, 0x7F, 0xBF, 0xD9, 0xA5, 0x92, 0x95, 0x54, 0x40, 0x50, 0x6A, 0xE9, 0xDA, + 0xE6, 0xD4, 0x39, 0x21, 0xC5, 0xCB, 0x97, 0xAF, 0xE6, 0xD9, 0x2B, 0xAD, 0xCE, 0x4F, 0x4F, 0x9E, + 0x5C, 0x9C, 0x19, 0xA3, 0x16, 0x7D, 0xB7, 0xE8, 0xBB, 0xAE, 0x6D, 0x58, 0xE2, 0x4C, 0x40, 0x25, + 0x57, 0xA5, 0x81, 0xB0, 0xE6, 0x52, 0x81, 0xE8, 0x70, 0xB7, 0x08, 0x21, 0xA4, 0x50, 0xA0, 0x72, + 0x2E, 0x21, 0xE5, 0x10, 0xB9, 0x03, 0x97, 0x38, 0x39, 0x64, 0xF6, 0xA9, 0xD6, 0x62, 0xAD, 0xE1, + 0x27, 0xB8, 0x56, 0x34, 0x5A, 0x4B, 0x25, 0x0D, 0x18, 0xEF, 0xFD, 0xED, 0xCD, 0xAD, 0x6D, 0x3B, + 0xA9, 0x4C, 0xA9, 0xD5, 0xFB, 0xC0, 0x65, 0x71, 0x44, 0x54, 0x6A, 0x69, 0x9B, 0xA6, 0x22, 0xEE, + 0xF7, 0x93, 0x6B, 0xDA, 0x2A, 0xCD, 0x17, 0xBF, 0xFC, 0xC7, 0x61, 0xFD, 0xC8, 0x74, 0x4B, 0xC2, + 0x7A, 0xBB, 0xCF, 0x29, 0x95, 0x71, 0xDC, 0xFA, 0xDA, 0xEF, 0x23, 0xC8, 0x52, 0xFC, 0xE6, 0xD6, + 0x08, 0x3D, 0x37, 0x8F, 0x05, 0x10, 0x87, 0xED, 0xF8, 0x10, 0x72, 0x2E, 0x52, 0x0A, 0x86, 0x84, + 0x58, 0x58, 0x24, 0x33, 0xCB, 0xC7, 0x05, 0xE7, 0xF9, 0xB1, 0x6C, 0xED, 0x00, 0x66, 0x1D, 0x90, + 0x78, 0x92, 0x52, 0x3C, 0x38, 0xA5, 0x04, 0xB0, 0x15, 0x96, 0x15, 0xF8, 0xAC, 0x84, 0x30, 0x04, + 0x94, 0x52, 0xA9, 0x48, 0x5A, 0x6B, 0x6B, 0xB4, 0xD6, 0xD2, 0x68, 0xED, 0x40, 0xC8, 0x46, 0x4C, + 0x4A, 0xFB, 0x18, 0x4B, 0xAD, 0x86, 0xD7, 0x28, 0x21, 0xD8, 0x3C, 0x38, 0x87, 0xC0, 0x21, 0x3C, + 0x52, 0x49, 0xAC, 0x58, 0x72, 0x19, 0xE7, 0xC0, 0x5C, 0x8F, 0xD6, 0x12, 0x0C, 0x95, 0x52, 0x09, + 0xA1, 0x6D, 0x1A, 0x00, 0xA8, 0xEA, 0x77, 0x5D, 0xDF, 0x0F, 0xE5, 0x0E, 0xA5, 0x54, 0x38, 0xDA, + 0x26, 0x95, 0x52, 0x40, 0x14, 0x63, 0xE4, 0x80, 0x8A, 0xC2, 0xA9, 0x60, 0x42, 0x9C, 0x88, 0x79, + 0xFE, 0xFC, 0x67, 0x7F, 0xF5, 0xC9, 0xAF, 0xA7, 0x54, 0x9E, 0x3E, 0x79, 0xFA, 0xFC, 0x7B, 0xDF, + 0x1F, 0x96, 0x8B, 0xCB, 0x37, 0xAF, 0xC7, 0xDD, 0xCE, 0x4F, 0xE3, 0xB4, 0xDF, 0x87, 0x94, 0x36, + 0x37, 0x37, 0xCF, 0x3E, 0xFA, 0xFE, 0x8B, 0x9F, 0xAC, 0xAD, 0xD6, 0xE3, 0x7E, 0x5B, 0x08, 0xBA, + 0x76, 0x48, 0x55, 0x5C, 0xBF, 0x79, 0x3B, 0x8E, 0x7B, 0x90, 0xDA, 0x3A, 0x27, 0xA5, 0x12, 0xBA, + 0x49, 0xA9, 0xD4, 0x52, 0xB4, 0x24, 0x21, 0x01, 0x91, 0xA4, 0x50, 0xDA, 0x68, 0x15, 0x13, 0x49, + 0x89, 0x44, 0x6D, 0xD7, 0xEC, 0x93, 0x0F, 0xE3, 0xE6, 0xCD, 0xCB, 0xCF, 0x52, 0xAD, 0xA6, 0x5B, + 0xFC, 0xFC, 0x6F, 0x7E, 0xD6, 0xAE, 0x1E, 0x7F, 0xFF, 0xA7, 0xFF, 0x7A, 0xB9, 0x3E, 0x55, 0x4A, + 0x69, 0x2D, 0x15, 0x88, 0x5A, 0xB9, 0x1E, 0xE5, 0x90, 0x50, 0x54, 0xCA, 0xA1, 0xC0, 0x4D, 0x0A, + 0x40, 0x42, 0x00, 0x50, 0x52, 0x28, 0x21, 0x94, 0x73, 0x3E, 0x26, 0x3E, 0xB9, 0x40, 0x6B, 0x10, + 0x87, 0xFA, 0x6E, 0x00, 0x90, 0x42, 0x58, 0xAD, 0xB5, 0x92, 0xD5, 0x98, 0x78, 0x38, 0x13, 0x0F, + 0xB6, 0xAA, 0x52, 0x6B, 0x89, 0x55, 0x49, 0xD9, 0x3A, 0x97, 0x52, 0xE2, 0x78, 0x52, 0x21, 0x04, + 0xC3, 0x79, 0x0C, 0x29, 0x6A, 0xA9, 0x94, 0x16, 0xB5, 0x52, 0xAD, 0xC5, 0xB9, 0xA6, 0x56, 0x0A, + 0x21, 0xA1, 0xA4, 0x8A, 0x1C, 0x7E, 0x0F, 0x31, 0x67, 0xCE, 0xDE, 0x68, 0xAC, 0x63, 0x88, 0x5D, + 0xD0, 0x41, 0x2B, 0xE7, 0xAC, 0xDA, 0xEE, 0xC6, 0xBB, 0xCD, 0xEE, 0xFA, 0xD6, 0x9D, 0x9F, 0xAE, + 0xD7, 0xCB, 0x81, 0x51, 0xF9, 0x3F, 0xFA, 0xC3, 0x8F, 0xB7, 0xBB, 0xA9, 0x6B, 0xDD, 0x7E, 0x3F, + 0xBF, 0x7E, 0x7B, 0x55, 0x11, 0x9D, 0x73, 0x6D, 0xEB, 0x72, 0xCE, 0x4A, 0x1E, 0xE0, 0x24, 0x01, + 0x04, 0x20, 0xF8, 0xF4, 0xE1, 0x85, 0xD1, 0x18, 0xC3, 0xB6, 0x01, 0x24, 0x94, 0xDC, 0xCF, 0x5D, + 0x0F, 0x9F, 0xA9, 0xD1, 0x7A, 0x9C, 0xC3, 0x6E, 0x9C, 0x4E, 0xD7, 0x4B, 0xA1, 0x24, 0x0B, 0x20, + 0xEE, 0xEF, 0x77, 0xBC, 0x2A, 0x12, 0x40, 0xD7, 0x36, 0xEC, 0x67, 0xB0, 0xD6, 0x72, 0xD6, 0x16, + 0x57, 0x40, 0xB1, 0xF5, 0x35, 0xE7, 0x9C, 0x52, 0x32, 0xC6, 0x22, 0xC0, 0xEC, 0x7D, 0xDF, 0x35, + 0xBF, 0x17, 0x19, 0x82, 0x3C, 0xF8, 0x61, 0x05, 0x5F, 0x83, 0xD6, 0x6A, 0x9E, 0x83, 0x10, 0x42, + 0x38, 0x51, 0x0B, 0x62, 0xAD, 0x21, 0x84, 0x9C, 0xB3, 0x6E, 0x9C, 0x73, 0x76, 0x1C, 0x27, 0x29, + 0x85, 0x51, 0x8A, 0xA3, 0x19, 0xF7, 0xE3, 0x4C, 0x44, 0x48, 0xC8, 0x67, 0x85, 0x4F, 0xB1, 0x96, + 0x42, 0x00, 0x58, 0xC9, 0x68, 0xB5, 0x5E, 0x2D, 0xC7, 0x71, 0xDE, 0x8F, 0x1E, 0x00, 0xAC, 0xB1, + 0x5D, 0xA7, 0xAC, 0x31, 0xCE, 0x39, 0x6B, 0xB5, 0x52, 0x2A, 0xA7, 0x12, 0x42, 0x70, 0xD6, 0x1A, + 0x6B, 0x08, 0x28, 0xA7, 0xAC, 0x53, 0x4E, 0x5A, 0xC9, 0xC6, 0xDA, 0x39, 0xC4, 0xC9, 0x47, 0xA5, + 0x75, 0xA3, 0x15, 0x22, 0xD6, 0x52, 0x42, 0x8C, 0x02, 0x84, 0x6B, 0x9A, 0x5A, 0xD8, 0x07, 0x67, + 0xBC, 0xF7, 0x3C, 0xA6, 0xB7, 0x4D, 0xD3, 0x77, 0x2D, 0x3B, 0x3C, 0xBA, 0xAE, 0xB3, 0xC6, 0x6E, + 0xB6, 0xFB, 0x90, 0x52, 0x39, 0xE0, 0x7C, 0x79, 0xE8, 0x5A, 0x63, 0x8C, 0x16, 0xFA, 0x74, 0xBD, + 0x0A, 0x39, 0x4F, 0xDB, 0x59, 0x0A, 0x69, 0x8D, 0x01, 0xA2, 0xD5, 0x62, 0xB0, 0xD6, 0x74, 0xAD, + 0x63, 0x44, 0x33, 0xE7, 0x82, 0x28, 0x6B, 0xAD, 0x08, 0x54, 0x2B, 0x89, 0x94, 0x85, 0x14, 0xA5, + 0x54, 0x25, 0xA4, 0x54, 0x92, 0x4B, 0x40, 0xA4, 0x10, 0xB9, 0x96, 0x94, 0x2A, 0x0F, 0x35, 0xE2, + 0xD0, 0xD2, 0x56, 0x89, 0x40, 0x2B, 0x29, 0x85, 0x6E, 0x1D, 0x77, 0x9D, 0x1D, 0x6A, 0x84, 0x4A, + 0xC5, 0xD9, 0x87, 0xAB, 0xCB, 0xB7, 0xC3, 0xF2, 0x24, 0x15, 0x0A, 0x61, 0xB2, 0xD6, 0x12, 0xD6, + 0x71, 0xDC, 0x10, 0x28, 0x22, 0x79, 0x4C, 0x74, 0x16, 0xD6, 0x1A, 0x90, 0xEA, 0xE4, 0xE9, 0x8B, + 0x8B, 0xA1, 0xCC, 0xC5, 0x2E, 0xD6, 0xA7, 0xB6, 0x69, 0x43, 0x10, 0xD5, 0x3A, 0x41, 0x55, 0x0B, + 0x14, 0x20, 0x97, 0xCB, 0x45, 0x7C, 0x39, 0x4E, 0x63, 0x8B, 0xCD, 0xE3, 0x10, 0x83, 0x75, 0x36, + 0x84, 0x5C, 0x8A, 0x7F, 0x30, 0x11, 0x12, 0xFD, 0x7F, 0x4C, 0xBD, 0xC9, 0xAF, 0x5D, 0x59, 0x7A, + 0xE5, 0xB7, 0xFB, 0xBD, 0x4F, 0x77, 0xFB, 0xFB, 0x3A, 0x3E, 0x76, 0x41, 0x46, 0x1F, 0xD9, 0x29, + 0x25, 0x57, 0x95, 0xAA, 0xA4, 0x92, 0xA1, 0x42, 0x01, 0x06, 0x8C, 0xAA, 0x91, 0x01, 0x4F, 0x8C, + 0x02, 0x0C, 0xDB, 0x63, 0x0F, 0x6A, 0xE2, 0xB9, 0xFF, 0x28, 0xBB, 0x60, 0xA0, 0x20, 0x97, 0x2C, + 0x59, 0xA9, 0xCC, 0x94, 0x32, 0x32, 0xA3, 0x25, 0x19, 0xEC, 0x5E, 0x7F, 0xDB, 0xD3, 0xEE, 0x7E, + 0x6F, 0x0F, 0xF6, 0x7D, 0x61, 0x05, 0x81, 0x18, 0x90, 0x04, 0x41, 0xDE, 0xF7, 0xCE, 0x77, 0xBE, + 0x66, 0xAD, 0xDF, 0x8A, 0x9C, 0x33, 0x00, 0x81, 0x56, 0xD6, 0x7B, 0xCF, 0x39, 0xF5, 0x3E, 0x22, + 0x04, 0xAD, 0x4D, 0xC3, 0x26, 0x88, 0x30, 0x40, 0x00, 0xD2, 0x8C, 0x09, 0x61, 0x48, 0x3B, 0x32, + 0x7F, 0xF0, 0xF4, 0xC0, 0x94, 0xB7, 0xE4, 0x9C, 0x13, 0x82, 0x7B, 0x8F, 0x62, 0x08, 0x88, 0xE2, + 0x90, 0xF2, 0x44, 0x12, 0xE5, 0x84, 0x10, 0x8A, 0x31, 0x44, 0x50, 0x3B, 0x9F, 0x01, 0xA8, 0xAD, + 0x49, 0xCF, 0x1B, 0xBA, 0x0F, 0x55, 0x8C, 0x31, 0x4A, 0xA8, 0x89, 0xC3, 0x08, 0xC2, 0x10, 0xFC, + 0xA0, 0x4C, 0x2F, 0x15, 0x46, 0x88, 0xD0, 0x44, 0x34, 0x07, 0x09, 0x52, 0xFA, 0xE3, 0x74, 0x99, + 0x26, 0xD0, 0xF4, 0x6E, 0x0B, 0x21, 0xC4, 0x18, 0x0E, 0xB2, 0xD2, 0x7B, 0x85, 0x57, 0x08, 0xC1, + 0x39, 0x8F, 0x30, 0xA6, 0xD4, 0x22, 0x08, 0x23, 0x80, 0x50, 0xCA, 0xF6, 0xDB, 0xBF, 0xFB, 0xCD, + 0xEF, 0xFE, 0x5E, 0x3B, 0x2F, 0x18, 0x3D, 0x7B, 0xF2, 0xEC, 0xE1, 0x27, 0x9F, 0x67, 0x45, 0x39, + 0x39, 0x39, 0x45, 0x08, 0xB5, 0xFB, 0xE6, 0xCB, 0xBF, 0xF9, 0xAB, 0xF7, 0x6F, 0x5F, 0x4B, 0x25, + 0x23, 0x22, 0x11, 0xE1, 0x80, 0xD0, 0x30, 0xA8, 0x08, 0xF5, 0xF8, 0xF8, 0xE1, 0xF6, 0xEE, 0xAE, + 0xD9, 0x6D, 0x01, 0x80, 0x83, 0x52, 0x2E, 0xC6, 0x62, 0x32, 0x67, 0xA3, 0xB9, 0xD6, 0x3A, 0x7A, + 0xE7, 0xF1, 0x81, 0xC2, 0x94, 0xDC, 0x94, 0x59, 0x26, 0xFA, 0x43, 0x54, 0x22, 0xAD, 0x26, 0xD3, + 0x3F, 0xFA, 0xD3, 0xBF, 0x7C, 0xF1, 0x57, 0xFB, 0x6F, 0x5F, 0x7C, 0x7B, 0x7C, 0x7A, 0xF6, 0xA7, + 0xFF, 0xF2, 0x2F, 0x7E, 0xFD, 0xEB, 0xBF, 0xDB, 0xDD, 0xFC, 0x70, 0x74, 0x7A, 0x26, 0x07, 0x89, + 0x31, 0x8A, 0x31, 0xF8, 0x10, 0xE1, 0x41, 0x34, 0xE7, 0x93, 0x29, 0x9E, 0xE6, 0x19, 0x00, 0x40, + 0x1B, 0x0B, 0x63, 0x8A, 0x7A, 0x40, 0x10, 0x21, 0xEB, 0x42, 0xC2, 0x33, 0x10, 0x8C, 0x7F, 0x14, + 0xD3, 0xC1, 0xFB, 0xE8, 0x36, 0x08, 0xE0, 0x90, 0xD8, 0x21, 0x04, 0x27, 0xAF, 0xC5, 0xE1, 0x83, + 0xBD, 0xFF, 0x6D, 0xCE, 0xBB, 0xD1, 0xA8, 0x68, 0x3B, 0x19, 0xFE, 0xC9, 0x25, 0x85, 0x10, 0x1C, + 0x82, 0x77, 0x00, 0xC0, 0x40, 0x10, 0x42, 0xD6, 0xB9, 0x94, 0x56, 0xE3, 0x7D, 0x20, 0x04, 0x1B, + 0x63, 0x5D, 0x04, 0x94, 0x20, 0x9C, 0x78, 0x79, 0xE9, 0x73, 0x06, 0xD1, 0x1E, 0xB6, 0x75, 0xD1, + 0x07, 0xAF, 0x6D, 0xA0, 0x84, 0xA0, 0x10, 0xB4, 0x71, 0x6F, 0x2E, 0xAE, 0x8F, 0xE6, 0x93, 0xC7, + 0xE7, 0xA7, 0x00, 0x40, 0x6B, 0x5D, 0xDD, 0x34, 0xAB, 0x95, 0xED, 0xA5, 0xD4, 0xDA, 0xC4, 0x18, + 0x95, 0x56, 0xDA, 0x64, 0xC6, 0x5A, 0x08, 0x00, 0x25, 0x38, 0xE5, 0x3A, 0xC3, 0x43, 0xBC, 0x1E, + 0x06, 0x00, 0x70, 0x46, 0xD3, 0xF5, 0x82, 0xA0, 0x03, 0xA9, 0xCD, 0x39, 0x07, 0xEF, 0x5D, 0xFE, + 0x84, 0x12, 0x42, 0x50, 0x26, 0x38, 0x26, 0x38, 0x19, 0x5D, 0x37, 0xDB, 0xBA, 0x6E, 0x3B, 0x98, + 0x38, 0xE9, 0x87, 0x1A, 0x1D, 0x22, 0x00, 0x7D, 0x2F, 0xA5, 0x36, 0x21, 0x44, 0xEF, 0x3C, 0xE7, + 0x2C, 0x15, 0x74, 0xAD, 0x35, 0x63, 0x94, 0xA0, 0xC4, 0x40, 0x06, 0x18, 0xA3, 0xBE, 0x1F, 0xF2, + 0xA2, 0xE0, 0xF7, 0xE9, 0xC5, 0x11, 0x80, 0x08, 0x3C, 0x42, 0x44, 0x69, 0x15, 0x01, 0x72, 0xD6, + 0x79, 0xEF, 0xB5, 0xD2, 0xC9, 0x99, 0x93, 0xFC, 0xAD, 0x83, 0xD4, 0x21, 0x46, 0xB5, 0xDE, 0x8D, + 0x46, 0xF6, 0x68, 0x3E, 0x4D, 0x5F, 0xB2, 0x24, 0x22, 0x41, 0x08, 0x31, 0xCA, 0x56, 0x9B, 0x1D, + 0x3C, 0xE4, 0x99, 0x86, 0xA2, 0xC8, 0x8F, 0x16, 0xB3, 0xB6, 0x1F, 0x94, 0xB1, 0x8C, 0x12, 0xC1, + 0x58, 0xF2, 0x90, 0x39, 0x6B, 0x41, 0x8C, 0x79, 0x41, 0x19, 0xA3, 0x3E, 0xAD, 0xD6, 0x9C, 0x4F, + 0x76, 0x38, 0x92, 0xCE, 0x37, 0xBD, 0x52, 0x10, 0x22, 0x21, 0x58, 0x72, 0xFC, 0xA4, 0x2F, 0x76, + 0x72, 0xB1, 0xB9, 0xFB, 0x9C, 0x64, 0x63, 0x8C, 0x73, 0x16, 0x63, 0x92, 0xE2, 0x10, 0x41, 0x84, + 0x6D, 0x3F, 0x68, 0x63, 0x32, 0x21, 0xB4, 0x31, 0xD6, 0x3A, 0x65, 0x4C, 0xB2, 0x7F, 0x43, 0x84, + 0xA4, 0x31, 0x11, 0x80, 0xE9, 0x78, 0xE4, 0x43, 0x68, 0xFB, 0x21, 0xED, 0xC5, 0x12, 0x96, 0xBB, + 0x57, 0x9A, 0x52, 0x32, 0x2A, 0x0B, 0x88, 0x90, 0x75, 0xDE, 0x0F, 0x12, 0x02, 0x90, 0x84, 0xFB, + 0xCE, 0x27, 0xE4, 0x31, 0x44, 0x10, 0x45, 0x10, 0x53, 0x7C, 0x6F, 0xAA, 0x15, 0x09, 0x73, 0x8A, + 0x31, 0xCE, 0xB3, 0xF4, 0x15, 0x0C, 0xC1, 0x7B, 0x69, 0x7C, 0x2E, 0xA8, 0xA0, 0x28, 0xCB, 0xF3, + 0x3C, 0xCF, 0xBC, 0x73, 0x5E, 0x2B, 0xC1, 0xB3, 0xDB, 0xBB, 0x55, 0x3F, 0x0C, 0xCE, 0xD9, 0xA0, + 0x77, 0x14, 0x21, 0x63, 0x06, 0x1B, 0xC4, 0xD0, 0xF4, 0xC6, 0xBA, 0x6A, 0xB2, 0xBC, 0xBE, 0x78, + 0x31, 0x9D, 0x1E, 0x19, 0x96, 0x73, 0x91, 0x63, 0x8C, 0x57, 0xB7, 0x97, 0xB3, 0xA3, 0x49, 0x51, + 0xCE, 0x42, 0x76, 0x86, 0x19, 0xD7, 0x5A, 0x61, 0xC2, 0x28, 0xF2, 0x8C, 0x62, 0x8F, 0xB2, 0x2C, + 0x78, 0x10, 0x8D, 0x0B, 0x9D, 0x0D, 0x47, 0x25, 0x8C, 0x45, 0xC6, 0xFB, 0xBE, 0x1B, 0xA2, 0xCF, + 0xB2, 0x92, 0x52, 0x0A, 0x21, 0x48, 0x53, 0x39, 0xC1, 0x38, 0x78, 0x8F, 0x30, 0x84, 0x00, 0x1A, + 0xE3, 0xEE, 0x9F, 0x4C, 0x14, 0xBC, 0x77, 0xCE, 0x23, 0x8C, 0x5C, 0x62, 0xE6, 0xC6, 0x80, 0x11, + 0xB4, 0x36, 0xA4, 0xD7, 0x75, 0x6A, 0xE0, 0x13, 0x45, 0x2B, 0x09, 0x45, 0xF2, 0x4C, 0x38, 0xE7, + 0x40, 0x8C, 0x10, 0xC1, 0xB6, 0xED, 0xD3, 0x93, 0xA3, 0x8D, 0x71, 0x18, 0x63, 0x84, 0xD3, 0x9F, + 0x91, 0x16, 0xCC, 0xE8, 0xDE, 0x49, 0x93, 0x9E, 0x3A, 0x6D, 0xAC, 0x8A, 0x06, 0x21, 0x18, 0x7C, + 0x70, 0xDE, 0xC7, 0x10, 0x20, 0xC6, 0x94, 0x10, 0xC1, 0x79, 0xC6, 0x59, 0x55, 0x95, 0xDE, 0xFB, + 0x41, 0xEA, 0x24, 0x4D, 0xD0, 0x5A, 0xDF, 0x73, 0xC4, 0x50, 0x08, 0x21, 0xC6, 0xF4, 0x48, 0x03, + 0xE7, 0x0E, 0x40, 0xA4, 0x24, 0x55, 0x33, 0xDA, 0xF6, 0x60, 0xC0, 0x08, 0x21, 0xCA, 0x8A, 0xDB, + 0xDF, 0xFD, 0xEA, 0x57, 0xFF, 0xF7, 0xDE, 0x84, 0xF1, 0xA8, 0x5C, 0x2E, 0x8F, 0x67, 0xC7, 0x4B, + 0xC2, 0x18, 0xE5, 0x7C, 0xC4, 0x8F, 0xBF, 0xFD, 0xC7, 0xDF, 0x0C, 0x7D, 0x8F, 0x19, 0x2F, 0xB3, + 0x4C, 0xB6, 0xF5, 0x6E, 0x75, 0xB7, 0x38, 0x3E, 0x71, 0x11, 0xD4, 0xED, 0x70, 0x74, 0x76, 0x06, + 0x11, 0xFE, 0x87, 0xBF, 0xF9, 0xCF, 0x41, 0x4B, 0x87, 0x88, 0x0D, 0xBA, 0xA4, 0xFC, 0xD1, 0xE7, + 0xBF, 0x8C, 0x54, 0x68, 0xA5, 0x00, 0x88, 0xD1, 0xDA, 0xF0, 0xA3, 0xF8, 0xF6, 0x3E, 0x95, 0x2A, + 0xC5, 0xCA, 0x84, 0x08, 0xFB, 0xF5, 0xF5, 0xE5, 0xAB, 0xAF, 0x82, 0xF5, 0x67, 0x67, 0x0F, 0x96, + 0xD9, 0x31, 0x1B, 0x1D, 0x73, 0x51, 0x58, 0xE7, 0x62, 0x3C, 0x20, 0x4D, 0x8D, 0xF3, 0xFE, 0x60, + 0x08, 0x3D, 0x84, 0x0A, 0x27, 0x5C, 0x5D, 0x6A, 0x66, 0x53, 0x2A, 0x95, 0x8F, 0x11, 0x40, 0x90, + 0x3E, 0xD8, 0x24, 0x3A, 0x07, 0xF7, 0x50, 0x6F, 0x6F, 0x6D, 0x08, 0x21, 0x90, 0xA8, 0x8D, 0xCD, + 0x04, 0xCB, 0x18, 0xBF, 0xBF, 0xF3, 0x42, 0x08, 0x21, 0x21, 0x24, 0x26, 0x3B, 0xFC, 0xA1, 0xAD, + 0x06, 0x59, 0xC6, 0x11, 0x42, 0x52, 0xA9, 0x43, 0x37, 0x87, 0x0E, 0x91, 0xC9, 0x28, 0xD9, 0x0C, + 0x9C, 0xB3, 0xD6, 0x02, 0x10, 0x11, 0x22, 0x79, 0x2E, 0x86, 0x41, 0x69, 0x63, 0x11, 0x82, 0x8C, + 0xD1, 0xA4, 0xF3, 0x4C, 0xCF, 0x51, 0x2A, 0x86, 0x18, 0xE3, 0xF4, 0xA0, 0xA5, 0x77, 0x21, 0x25, + 0x64, 0xB5, 0xD9, 0x9F, 0x1C, 0x2D, 0xC6, 0x65, 0xF1, 0x87, 0xAF, 0x5F, 0x28, 0xAD, 0x83, 0xF7, + 0x98, 0x90, 0x34, 0x48, 0xC6, 0x10, 0xA4, 0x94, 0x21, 0x1C, 0xAA, 0x58, 0x0A, 0xC1, 0x82, 0x10, + 0x06, 0x1F, 0xD2, 0xC8, 0x82, 0x10, 0x74, 0xCE, 0x23, 0x84, 0x21, 0x8C, 0xA9, 0xD1, 0x76, 0xD6, + 0x32, 0xCE, 0x13, 0xD9, 0xD5, 0xC5, 0x10, 0x01, 0x28, 0x8B, 0x1C, 0x41, 0x28, 0xB5, 0xD9, 0xED, + 0x9A, 0xBA, 0xED, 0x22, 0x00, 0xC1, 0xFB, 0x74, 0x90, 0x69, 0xBB, 0x01, 0x00, 0xA0, 0x93, 0x12, + 0xED, 0x7E, 0xD7, 0x9A, 0xD4, 0x64, 0xDE, 0x7B, 0x4E, 0x29, 0xC6, 0x48, 0x69, 0xD3, 0x0F, 0x2A, + 0x5D, 0xBD, 0x11, 0xC6, 0xE9, 0x80, 0x90, 0xCE, 0x4A, 0x84, 0x10, 0x68, 0x0C, 0x04, 0x90, 0x60, + 0x02, 0x10, 0xC2, 0x10, 0x49, 0x29, 0x95, 0x3C, 0x74, 0xF4, 0xE1, 0xB0, 0x14, 0x76, 0x08, 0xA1, + 0xA4, 0x9D, 0xB4, 0xC6, 0xFA, 0xE0, 0xA5, 0x36, 0x5D, 0x3F, 0xA4, 0xBE, 0x2C, 0xA9, 0x58, 0xD2, + 0xB5, 0x02, 0x21, 0x28, 0x95, 0xBE, 0x5B, 0x6F, 0x28, 0x25, 0xF3, 0xD9, 0x38, 0x2D, 0x3D, 0x92, + 0xC4, 0xAF, 0x6D, 0xBB, 0x10, 0x02, 0x86, 0xC8, 0xDA, 0xC4, 0x5C, 0x04, 0xF8, 0xDE, 0x93, 0x4B, + 0xA6, 0xE3, 0xB1, 0x54, 0xCA, 0x5A, 0x1B, 0x62, 0x54, 0xDA, 0x40, 0x88, 0x52, 0x2B, 0x04, 0x00, + 0x0C, 0x11, 0x80, 0x08, 0x84, 0xE0, 0xDE, 0x7B, 0xAD, 0x52, 0x10, 0x16, 0x4C, 0x98, 0xB4, 0x10, + 0x22, 0x84, 0x40, 0x4A, 0x19, 0xEE, 0x99, 0x9F, 0xA9, 0xF4, 0x62, 0x4C, 0x94, 0x52, 0x00, 0xC2, + 0x08, 0xA0, 0xF3, 0x01, 0x22, 0x38, 0x28, 0xDD, 0x0F, 0x52, 0x19, 0xC3, 0x28, 0x2D, 0xB2, 0xEC, + 0x10, 0xC5, 0xC8, 0x68, 0x8C, 0x51, 0x69, 0x93, 0x96, 0x7F, 0x04, 0x23, 0x42, 0x09, 0x44, 0x00, + 0x42, 0xC4, 0x08, 0x71, 0xDE, 0x3B, 0x67, 0x13, 0x27, 0x21, 0xBD, 0x79, 0xB4, 0x4E, 0xCF, 0x32, + 0xA1, 0x28, 0x22, 0x8C, 0x21, 0x80, 0x88, 0x53, 0x6D, 0x20, 0x23, 0x20, 0x58, 0x49, 0x49, 0xA6, + 0x86, 0x06, 0x23, 0xD0, 0x36, 0x9B, 0xBE, 0xDB, 0x78, 0x07, 0xD6, 0xAB, 0xCB, 0xD9, 0xA8, 0x82, + 0xBA, 0xFF, 0xFD, 0x8B, 0x77, 0x0F, 0xCE, 0x16, 0xC6, 0xC7, 0xED, 0xEA, 0x9D, 0x0F, 0x2E, 0x42, + 0x36, 0xDE, 0xCF, 0x20, 0x00, 0xFB, 0xBB, 0xFA, 0xE1, 0xE3, 0x4F, 0x70, 0x70, 0x6D, 0xDD, 0xA8, + 0xED, 0xC5, 0xB8, 0xC0, 0xAD, 0xD6, 0x3C, 0x8B, 0x58, 0x5F, 0x59, 0x0B, 0x78, 0x31, 0x9E, 0x2E, + 0x79, 0xD3, 0xED, 0x06, 0xAB, 0x7D, 0x88, 0xAD, 0xDE, 0x11, 0x21, 0x1C, 0x42, 0xBB, 0xD5, 0xBB, + 0x3D, 0xB4, 0x7D, 0xB3, 0x9D, 0x2E, 0x1F, 0x60, 0x7C, 0x4A, 0x49, 0x15, 0x63, 0x54, 0x7D, 0xCF, + 0x38, 0x77, 0x10, 0x60, 0xC2, 0x95, 0xEC, 0xAA, 0x6A, 0x4C, 0x31, 0x4C, 0x59, 0x70, 0x99, 0xA0, + 0x5A, 0xAB, 0xE5, 0xB8, 0xE8, 0x75, 0x8C, 0x80, 0x02, 0x1F, 0x38, 0x23, 0x8C, 0x12, 0xEF, 0x03, + 0xE7, 0x24, 0xF8, 0x00, 0x00, 0xB4, 0xC6, 0x42, 0x10, 0x33, 0x41, 0x23, 0x60, 0x18, 0x41, 0x21, + 0x18, 0x25, 0xB9, 0xD2, 0x26, 0x35, 0x4D, 0x69, 0x00, 0x4C, 0x9F, 0x83, 0xF3, 0x4E, 0x2A, 0x15, + 0x42, 0xE0, 0x94, 0x11, 0x4C, 0x20, 0x84, 0xD6, 0x5A, 0x00, 0x61, 0x12, 0xD7, 0x10, 0x92, 0x02, + 0x84, 0x0E, 0xDF, 0xC7, 0x3E, 0x84, 0xAA, 0x2A, 0xAB, 0x22, 0x13, 0x9C, 0x51, 0xC6, 0x52, 0xCC, + 0x47, 0x26, 0xD2, 0x4D, 0xDD, 0x03, 0xC0, 0x13, 0xAC, 0xC5, 0xB9, 0xE4, 0x66, 0x65, 0xF7, 0xFA, + 0x75, 0x1C, 0x23, 0x80, 0x30, 0x42, 0x08, 0x92, 0x74, 0x40, 0x0E, 0x12, 0x50, 0x7E, 0xDC, 0x5E, + 0xBE, 0xFC, 0xC3, 0xDF, 0x6E, 0x94, 0x1D, 0x57, 0xA3, 0xB2, 0xA8, 0x96, 0x0F, 0x1E, 0x4D, 0x16, + 0x47, 0x04, 0x43, 0x42, 0xE9, 0xD0, 0x77, 0xFB, 0xBB, 0xAB, 0xF5, 0x7A, 0x13, 0x9C, 0x87, 0x10, + 0xE6, 0x45, 0xFE, 0xE2, 0xAB, 0x7F, 0xAC, 0x66, 0xFF, 0x66, 0x3C, 0x1E, 0x8F, 0xA7, 0xD3, 0xAC, + 0x28, 0xB6, 0x77, 0x37, 0x97, 0x2F, 0xBF, 0xD9, 0xF7, 0x32, 0x46, 0x30, 0x62, 0xEC, 0xF1, 0xF3, + 0x4F, 0xA7, 0xE7, 0xCF, 0xD7, 0xFB, 0xA4, 0x58, 0x8C, 0xC9, 0x76, 0x89, 0x21, 0x82, 0x49, 0x2A, + 0x18, 0x23, 0x63, 0xD4, 0x39, 0x6F, 0xB4, 0xD5, 0x1E, 0x82, 0xBB, 0x8B, 0x9B, 0x9B, 0x0B, 0x92, + 0x8F, 0x10, 0x2D, 0xA4, 0x23, 0xE3, 0xE5, 0x79, 0x0C, 0xC0, 0xB4, 0x2D, 0x23, 0x08, 0x02, 0xE8, + 0x23, 0x00, 0xD1, 0xC5, 0x10, 0x92, 0x71, 0xD5, 0x18, 0x93, 0x82, 0x79, 0x72, 0x21, 0x08, 0x26, + 0x10, 0x22, 0x04, 0xE2, 0x01, 0xA3, 0x16, 0x13, 0xA1, 0x8C, 0x43, 0x08, 0xE1, 0x3D, 0xDD, 0x34, + 0x75, 0xF4, 0x10, 0xA2, 0x41, 0x6A, 0x88, 0x60, 0x55, 0xE4, 0x18, 0x23, 0xEB, 0x28, 0xA3, 0xA4, + 0x1F, 0x74, 0xAA, 0x2F, 0xDE, 0x7B, 0x10, 0xEF, 0x13, 0x8F, 0x7C, 0x48, 0xBC, 0x8A, 0x84, 0xA0, + 0x51, 0xDA, 0x68, 0xE3, 0x38, 0xA4, 0x10, 0x44, 0x04, 0x10, 0x82, 0x30, 0x15, 0x4A, 0x6B, 0xED, + 0x30, 0xC8, 0x3C, 0xCF, 0x38, 0xA7, 0x52, 0x7A, 0xEF, 0x63, 0x0C, 0x11, 0x62, 0xE8, 0xBD, 0x47, + 0x07, 0x72, 0x74, 0x88, 0x31, 0x52, 0x0A, 0xEE, 0x07, 0x79, 0x98, 0xF6, 0x21, 0x20, 0x82, 0x37, + 0xEF, 0xAF, 0x3F, 0x7A, 0xFA, 0x30, 0xE5, 0x07, 0xA6, 0x9B, 0xEC, 0x01, 0x52, 0x82, 0x50, 0xDA, + 0xA8, 0x58, 0xE7, 0x71, 0x1A, 0x99, 0x31, 0xA6, 0x94, 0x86, 0x18, 0xD3, 0x3E, 0x8F, 0x92, 0x43, + 0x6E, 0x08, 0x42, 0x28, 0xA9, 0x47, 0x93, 0xA4, 0x4E, 0x1B, 0xCB, 0x39, 0x6F, 0xDA, 0x46, 0x19, + 0xCB, 0x19, 0xA0, 0x08, 0x0F, 0x83, 0x6C, 0x9A, 0x0E, 0x1C, 0x82, 0xAD, 0x62, 0x99, 0x65, 0x4A, + 0x25, 0xD4, 0x38, 0x38, 0x28, 0xF1, 0x41, 0x2A, 0xE2, 0x58, 0x08, 0x1E, 0xC2, 0x81, 0x72, 0xD9, + 0x76, 0x83, 0x3E, 0x44, 0xE1, 0x81, 0x43, 0x6D, 0x8D, 0x51, 0x2A, 0x4D, 0x09, 0xD2, 0xDA, 0x58, + 0xE7, 0xD3, 0xA5, 0x12, 0x63, 0x32, 0x48, 0xA5, 0x95, 0x52, 0x4A, 0x43, 0x00, 0x21, 0x82, 0x07, + 0xCB, 0xCA, 0xFD, 0xBB, 0x11, 0x21, 0xD4, 0xF5, 0x83, 0x49, 0x0A, 0x20, 0x1F, 0x52, 0xD8, 0x6B, + 0x1A, 0x51, 0xC1, 0x21, 0xF0, 0x2D, 0x26, 0x9A, 0x0B, 0x67, 0xAC, 0xC8, 0xB3, 0x08, 0x00, 0x84, + 0x00, 0x01, 0x94, 0x8C, 0x89, 0xA3, 0xAA, 0x32, 0xE6, 0x00, 0x46, 0x47, 0x18, 0x41, 0x88, 0x0E, + 0xE9, 0xF4, 0x4A, 0x92, 0xA6, 0xEB, 0x07, 0xA9, 0x00, 0x8C, 0xDE, 0xD9, 0x3C, 0x2B, 0x0E, 0x2C, + 0x74, 0x00, 0x52, 0x21, 0x84, 0x08, 0xB5, 0x5D, 0x1F, 0x13, 0x3C, 0x13, 0x23, 0x0C, 0xB1, 0xB1, + 0xD6, 0x69, 0x23, 0x38, 0x95, 0x52, 0x22, 0x8C, 0xF2, 0x2C, 0x8B, 0x31, 0x5A, 0xEB, 0x21, 0x82, + 0xD0, 0x07, 0x6B, 0x65, 0xEA, 0x11, 0x08, 0x84, 0x08, 0x23, 0xA5, 0x0D, 0xC6, 0x28, 0x13, 0x42, + 0x08, 0x9E, 0xCE, 0x3D, 0xE8, 0xDE, 0x4F, 0x8F, 0x30, 0xD4, 0xC6, 0xC4, 0x10, 0x8C, 0x75, 0x9C, + 0xD3, 0xAA, 0xC8, 0x62, 0x04, 0x72, 0x18, 0x1C, 0x65, 0xF1, 0x1E, 0x28, 0x1A, 0x41, 0xB4, 0x5A, + 0xCB, 0x41, 0x61, 0x42, 0xD6, 0x57, 0x17, 0x67, 0x8F, 0x1F, 0xAB, 0xBE, 0xF6, 0xDE, 0xCA, 0x7E, + 0xB7, 0xDD, 0x6E, 0x09, 0xA1, 0xD4, 0xEF, 0x47, 0x25, 0x45, 0x45, 0xD5, 0xB5, 0xDD, 0xE6, 0x8D, + 0x24, 0x98, 0xDC, 0xED, 0x74, 0xD7, 0xB6, 0x01, 0x62, 0xB9, 0xBD, 0xF5, 0x28, 0x1B, 0x06, 0xF5, + 0xF5, 0xD7, 0xDF, 0xCA, 0xF6, 0x12, 0x22, 0x1F, 0x11, 0x17, 0x59, 0xB5, 0x5B, 0x5D, 0x60, 0x14, + 0x1E, 0x3C, 0xFE, 0xC5, 0x37, 0x5F, 0xFF, 0x0E, 0x45, 0x39, 0x1D, 0x71, 0x81, 0x2D, 0x86, 0xE5, + 0xE9, 0x83, 0x63, 0x29, 0xF7, 0x6E, 0xFF, 0x5D, 0x3B, 0xA8, 0xFA, 0xC6, 0x3E, 0x38, 0x9A, 0xD7, + 0xBB, 0x3D, 0x22, 0xB4, 0x6F, 0x1B, 0x29, 0x25, 0x06, 0xB4, 0xCA, 0xB7, 0xBD, 0xD4, 0xDF, 0x7D, + 0xFB, 0x87, 0xF1, 0x78, 0x1C, 0xAA, 0xDC, 0xE9, 0xDC, 0xFA, 0xD5, 0xD0, 0xB7, 0x5C, 0x54, 0x02, + 0x4D, 0x95, 0x31, 0x75, 0xB3, 0x23, 0x84, 0xBB, 0xE6, 0xDA, 0x78, 0xEF, 0x43, 0xA8, 0x26, 0xC7, + 0xAA, 0x6F, 0xBC, 0x07, 0x31, 0x64, 0x9C, 0xC2, 0xA6, 0xED, 0x19, 0xC1, 0x19, 0x03, 0x3E, 0x86, + 0x82, 0x23, 0x17, 0x1C, 0x46, 0x84, 0xE1, 0x40, 0x05, 0x43, 0x90, 0x0E, 0xDA, 0x61, 0x8C, 0x19, + 0xC1, 0x3E, 0xC4, 0x9C, 0x53, 0xC1, 0x69, 0xD7, 0xCB, 0xC0, 0x48, 0x32, 0xFD, 0x92, 0x7B, 0x47, + 0xAE, 0xF7, 0x0E, 0x41, 0x14, 0xE2, 0xA1, 0x0B, 0x8B, 0x31, 0x08, 0x46, 0xBD, 0x4B, 0x26, 0x08, + 0x68, 0x01, 0x00, 0x20, 0x42, 0x88, 0xDC, 0x7D, 0x9B, 0x26, 0x95, 0x46, 0xF7, 0xA4, 0xC3, 0x83, + 0x5C, 0x16, 0x42, 0x48, 0x70, 0x04, 0x89, 0x9F, 0x18, 0xAD, 0xFD, 0xFF, 0x51, 0x88, 0xDA, 0x1A, + 0x10, 0x0F, 0xE9, 0x38, 0x11, 0x44, 0x17, 0x02, 0x27, 0x44, 0x05, 0x74, 0x16, 0xDA, 0xFE, 0xF5, + 0xDF, 0xBF, 0x58, 0x6D, 0xCA, 0x72, 0x54, 0x8D, 0x46, 0x93, 0xC5, 0xD1, 0xC3, 0x8F, 0x3F, 0x17, + 0xC5, 0x8C, 0x40, 0x9F, 0x51, 0xDA, 0x2A, 0x09, 0x63, 0x98, 0x8E, 0x47, 0x17, 0x17, 0x17, 0x75, + 0x53, 0x23, 0x84, 0x6C, 0x5F, 0xF7, 0xDB, 0x95, 0xA0, 0x48, 0x88, 0x0C, 0x01, 0xF0, 0xEA, 0xCB, + 0x5F, 0x2F, 0xE6, 0xF3, 0x46, 0xDD, 0x0E, 0x52, 0xB3, 0x82, 0x9E, 0x3C, 0xFA, 0xA0, 0x95, 0x4E, + 0x2A, 0x85, 0x10, 0xC6, 0x08, 0x7A, 0xEF, 0x23, 0x88, 0x0E, 0x26, 0xE0, 0xEF, 0xC1, 0x42, 0xDB, + 0xB4, 0x83, 0x35, 0x06, 0x13, 0xDE, 0x5E, 0xFD, 0x20, 0x8D, 0x3F, 0x3F, 0xAA, 0x3A, 0x03, 0x35, + 0xD0, 0xDE, 0x1A, 0xE7, 0x1C, 0x04, 0x11, 0x23, 0xD4, 0xB4, 0xBD, 0xF1, 0xDE, 0x7B, 0x3F, 0x2E, + 0x0B, 0x1F, 0x83, 0x52, 0xDA, 0x3A, 0xA7, 0xB5, 0x16, 0xFC, 0xB0, 0x72, 0xF6, 0x31, 0xA6, 0xDB, + 0x65, 0x08, 0x01, 0x22, 0x84, 0x71, 0x02, 0x02, 0x86, 0xB4, 0xDE, 0x4A, 0xE8, 0xB1, 0x44, 0xA0, + 0xCA, 0x31, 0x66, 0x9C, 0x12, 0x82, 0x07, 0x29, 0x21, 0x8C, 0x9C, 0x33, 0xEB, 0x3C, 0x25, 0xB4, + 0x1B, 0x24, 0x8A, 0x88, 0x71, 0x0A, 0x01, 0x3D, 0x80, 0x6E, 0x94, 0x21, 0x94, 0x10, 0x4C, 0x28, + 0xA3, 0x9C, 0xF3, 0xDD, 0xBE, 0xB5, 0xCE, 0x53, 0x8C, 0xB5, 0xB6, 0x94, 0x92, 0x74, 0xAE, 0xA1, + 0x94, 0x11, 0x12, 0x93, 0x6E, 0x96, 0x31, 0xAA, 0xB5, 0x75, 0xCE, 0x21, 0x0F, 0x13, 0x14, 0x28, + 0x84, 0x88, 0x50, 0x52, 0xE1, 0xE8, 0x14, 0x8F, 0xE7, 0x3D, 0x0C, 0x69, 0xB7, 0x4B, 0x69, 0xD7, + 0xAB, 0xF7, 0xD7, 0xAB, 0xA7, 0x0F, 0x8F, 0xFD, 0xFD, 0xCC, 0x98, 0x68, 0x82, 0x09, 0x61, 0x24, + 0x95, 0x4E, 0xEA, 0x4E, 0x00, 0x93, 0xC7, 0xD3, 0x30, 0x4A, 0x93, 0x77, 0x58, 0x1B, 0x4F, 0xEF, + 0xE9, 0x89, 0x31, 0x46, 0x84, 0x71, 0x8C, 0x30, 0x05, 0x44, 0x28, 0xA5, 0x8D, 0x31, 0x19, 0x63, + 0x4A, 0x6B, 0xEF, 0xC8, 0x7E, 0xDF, 0x26, 0x6A, 0x43, 0x04, 0x20, 0x31, 0xF2, 0xD2, 0x93, 0x6E, + 0x0F, 0xBD, 0xD8, 0xE1, 0x3F, 0xE7, 0xFD, 0xD0, 0x0F, 0x08, 0x40, 0xAD, 0x8D, 0x4E, 0x32, 0xD7, + 0x7B, 0x7E, 0x53, 0xFA, 0x4E, 0x3A, 0x1C, 0xE8, 0x23, 0x0C, 0x00, 0xA8, 0x41, 0xC1, 0x5C, 0x60, + 0x84, 0xA4, 0x52, 0x7D, 0xD7, 0xFB, 0xE8, 0x21, 0x04, 0x84, 0x60, 0x74, 0x30, 0xE7, 0x07, 0x6B, + 0x6D, 0x9E, 0x89, 0xE9, 0x64, 0xDC, 0xF5, 0x43, 0x3F, 0x48, 0x89, 0x10, 0x88, 0x31, 0x1D, 0xFD, + 0xA4, 0xD2, 0xDE, 0x7B, 0xC6, 0x18, 0x84, 0xD0, 0x1A, 0xE7, 0x9C, 0x9B, 0x4E, 0x46, 0xB3, 0xD9, + 0x64, 0xBD, 0xDE, 0x78, 0xEF, 0xF3, 0x3C, 0xFB, 0xF1, 0x45, 0xAE, 0x94, 0x22, 0x04, 0x67, 0x19, + 0xB7, 0xCE, 0x33, 0x9E, 0x8D, 0x26, 0x23, 0x63, 0x4C, 0xD2, 0xA5, 0x87, 0x10, 0x88, 0x54, 0x3A, + 0x75, 0xD1, 0x9C, 0x52, 0x00, 0x61, 0x0C, 0x21, 0xA5, 0xE9, 0x18, 0x63, 0x8D, 0x01, 0x31, 0x04, + 0x42, 0x29, 0xE7, 0x38, 0x55, 0xCC, 0x14, 0x0B, 0xC8, 0x28, 0x31, 0x46, 0x53, 0x82, 0x19, 0xE7, + 0x49, 0x86, 0x0E, 0x20, 0x44, 0x08, 0x3B, 0x1F, 0x9C, 0xB3, 0x31, 0xC6, 0x2A, 0xCB, 0x38, 0xA3, + 0xB9, 0xE0, 0x31, 0x02, 0x6B, 0x1C, 0xC6, 0xB8, 0x2C, 0xCB, 0xE4, 0x8C, 0x26, 0x18, 0x0B, 0x46, + 0x8D, 0xB1, 0x4D, 0x1B, 0x33, 0x4E, 0x41, 0x88, 0x10, 0x63, 0xC1, 0x18, 0x00, 0x70, 0xBF, 0xDD, + 0x06, 0xE7, 0xA7, 0xF3, 0x05, 0xC6, 0x24, 0xC6, 0x60, 0x8D, 0x1E, 0xFA, 0xAE, 0x69, 0x36, 0x7D, + 0xD7, 0x44, 0x20, 0xD7, 0x97, 0xAF, 0x5F, 0xBF, 0xFE, 0xDB, 0x7A, 0xD7, 0x14, 0x82, 0xF9, 0x60, + 0x40, 0xF4, 0x93, 0x51, 0xA1, 0xFB, 0x7D, 0x59, 0xE4, 0x79, 0x9E, 0xED, 0x6A, 0x49, 0x00, 0xC2, + 0x64, 0xF4, 0xFB, 0x17, 0x77, 0x37, 0x77, 0x77, 0xF3, 0xE5, 0xB1, 0xD4, 0x6E, 0x32, 0x2A, 0x67, + 0xF3, 0xA3, 0xEB, 0x37, 0x77, 0xCF, 0x3F, 0xF9, 0x67, 0xFB, 0xD5, 0x45, 0xDF, 0xED, 0xD6, 0xB7, + 0x77, 0x47, 0x0F, 0x9E, 0xF2, 0xAC, 0xBC, 0xB9, 0xB9, 0x6D, 0x9B, 0x0B, 0x6B, 0xEA, 0x93, 0x93, + 0x07, 0x79, 0x56, 0x2A, 0xB5, 0x2D, 0x04, 0xA6, 0x30, 0xEE, 0xEA, 0xDA, 0x3A, 0x35, 0xAE, 0xCA, + 0x7A, 0xBF, 0x59, 0x4C, 0xC6, 0x4D, 0xB7, 0xDF, 0xED, 0xF6, 0xBB, 0xA6, 0xE1, 0x4C, 0x30, 0x68, + 0xBB, 0xBA, 0x99, 0x8F, 0x73, 0x21, 0x30, 0xF6, 0xDB, 0xF5, 0x9B, 0x77, 0x05, 0x0B, 0x83, 0x05, + 0x4F, 0x9E, 0x7E, 0xB8, 0xBD, 0x7A, 0x75, 0x71, 0x75, 0x13, 0x63, 0x9C, 0x8D, 0xAA, 0xA3, 0xD3, + 0x67, 0xF5, 0x7E, 0x17, 0xBC, 0x9A, 0x88, 0xA1, 0xED, 0xDA, 0xD9, 0x28, 0x9B, 0x65, 0xF8, 0xC5, + 0x9B, 0x37, 0x56, 0xCA, 0xD1, 0x74, 0xD6, 0xEF, 0x72, 0x2C, 0xE6, 0xC1, 0x49, 0xC1, 0x70, 0x3D, + 0x48, 0x88, 0x45, 0x96, 0x8D, 0x42, 0x84, 0x8C, 0xD2, 0xE4, 0x06, 0xAF, 0x72, 0x16, 0x21, 0xA4, + 0x10, 0x78, 0x46, 0x40, 0x08, 0x08, 0x41, 0x10, 0x01, 0x86, 0x88, 0x50, 0xEC, 0x42, 0x4C, 0x91, + 0x02, 0x94, 0x20, 0x10, 0x81, 0xD2, 0x86, 0x60, 0xEC, 0x7C, 0x04, 0x90, 0x24, 0x51, 0x0E, 0x42, + 0x10, 0x21, 0x96, 0x6E, 0x8E, 0x49, 0xB4, 0x6D, 0x8C, 0x21, 0xF7, 0x6F, 0x8E, 0xB4, 0xAB, 0x0E, + 0x21, 0x24, 0x9A, 0x5B, 0x0A, 0x15, 0xC9, 0x04, 0x03, 0x00, 0x18, 0x6B, 0xB5, 0xB5, 0xD6, 0x3B, + 0x04, 0x11, 0xF0, 0x09, 0x1A, 0x05, 0x18, 0xA1, 0x75, 0xAF, 0x4E, 0x73, 0x68, 0x2F, 0x7E, 0xF3, + 0xE5, 0x9B, 0xB7, 0x59, 0x56, 0x64, 0x22, 0x1B, 0x4F, 0xA7, 0xCF, 0x7F, 0xF1, 0xCF, 0x71, 0x75, + 0x72, 0xB1, 0x55, 0x31, 0x82, 0xA7, 0x22, 0xD2, 0xE0, 0x38, 0xE3, 0x84, 0xC6, 0xA3, 0xC5, 0xF2, + 0xE2, 0xC5, 0x77, 0xD1, 0xC7, 0x2F, 0x7E, 0xF2, 0x0B, 0xE4, 0x35, 0x70, 0x8E, 0xE5, 0x63, 0xAF, + 0x65, 0x90, 0xED, 0xF1, 0xC9, 0xA9, 0x28, 0x27, 0x75, 0x27, 0xA7, 0x34, 0xD2, 0x6A, 0xD1, 0x28, + 0x1F, 0x11, 0xF3, 0x20, 0x42, 0x88, 0x00, 0x21, 0x18, 0x02, 0xA7, 0x65, 0x18, 0x06, 0x80, 0x59, + 0x20, 0xD4, 0x1A, 0xD7, 0x75, 0x43, 0x2B, 0x75, 0x09, 0xF6, 0x97, 0xAF, 0xBF, 0x0E, 0x10, 0x55, + 0xA3, 0x49, 0x59, 0x4D, 0x4C, 0xAF, 0xEA, 0xB6, 0xB7, 0x49, 0x8F, 0x10, 0x82, 0x71, 0x2E, 0xE9, + 0xE9, 0x77, 0x4D, 0x9B, 0x3A, 0x2C, 0xEB, 0x1C, 0x4F, 0x55, 0x0C, 0xC2, 0xD4, 0x78, 0xA6, 0x20, + 0xB8, 0xC4, 0xCE, 0xEF, 0x07, 0x95, 0xBA, 0x95, 0x24, 0xEB, 0x83, 0xF7, 0xD9, 0x28, 0x65, 0x71, + 0x90, 0x4F, 0xF6, 0x83, 0x44, 0x08, 0x32, 0x42, 0xD3, 0xDD, 0x46, 0x6B, 0x8D, 0x11, 0x64, 0x94, + 0xA7, 0xFB, 0x20, 0x21, 0x94, 0x31, 0xAE, 0x94, 0x01, 0x00, 0x68, 0x63, 0xBA, 0xAE, 0x1F, 0x8D, + 0x47, 0x79, 0xC6, 0x9B, 0xAE, 0xB7, 0x1E, 0x12, 0x8C, 0xAC, 0xF3, 0x10, 0x44, 0x42, 0xB0, 0x73, + 0xDE, 0x7B, 0x07, 0x00, 0x34, 0xC6, 0xA5, 0x41, 0x29, 0xC6, 0x00, 0x11, 0x4E, 0x86, 0xD6, 0x94, + 0x4C, 0x04, 0x0F, 0x88, 0xDD, 0x88, 0x20, 0x71, 0x3E, 0x80, 0x10, 0x7D, 0x08, 0xDE, 0x07, 0x42, + 0xC8, 0xCD, 0xDD, 0x06, 0xC4, 0x70, 0x7A, 0x3C, 0xA7, 0x04, 0xFF, 0x38, 0xEE, 0xA4, 0x7B, 0x22, + 0x67, 0x34, 0x84, 0xF0, 0xA3, 0xE3, 0x3D, 0x82, 0x44, 0x58, 0x23, 0x00, 0x00, 0x4A, 0x28, 0xF8, + 0x27, 0x5D, 0x8F, 0x3B, 0x50, 0x12, 0x3D, 0x88, 0x51, 0x1B, 0x13, 0x41, 0x50, 0x5A, 0x49, 0x65, + 0x9C, 0x1D, 0xB4, 0xB1, 0x11, 0xC0, 0x84, 0x53, 0x27, 0x08, 0xFF, 0x78, 0x22, 0x83, 0x10, 0x22, + 0x08, 0x52, 0x0E, 0x09, 0x00, 0x10, 0x45, 0xA0, 0xA4, 0xC2, 0x10, 0x19, 0xE7, 0x7D, 0x8C, 0xF0, + 0x90, 0x83, 0x1B, 0x20, 0x44, 0x07, 0x52, 0x7A, 0x1A, 0x66, 0x53, 0xD8, 0x0C, 0x88, 0x52, 0xE9, + 0xE0, 0xBD, 0xD6, 0x3A, 0xED, 0x1C, 0x11, 0x46, 0x84, 0xE0, 0xA4, 0xB2, 0xAE, 0x0A, 0xE1, 0x1C, + 0x43, 0x08, 0x8D, 0x47, 0x95, 0xF5, 0x4E, 0x1B, 0x83, 0x20, 0x2C, 0xB2, 0xDC, 0x79, 0x8F, 0x11, + 0x62, 0x84, 0x48, 0xA5, 0xC2, 0xC1, 0x6D, 0x8E, 0x30, 0x14, 0xD6, 0xDA, 0xDB, 0xBB, 0x15, 0xA3, + 0xCC, 0x5A, 0x2B, 0x07, 0x80, 0x10, 0xE4, 0x9C, 0xC7, 0x10, 0x53, 0x11, 0x37, 0xC6, 0x72, 0x21, + 0xBC, 0xF7, 0x29, 0xD4, 0x35, 0xFD, 0x93, 0x9D, 0x73, 0x84, 0x51, 0xCA, 0x05, 0x1F, 0x06, 0x69, + 0x7D, 0xF0, 0xDE, 0x32, 0x4A, 0x31, 0xC6, 0x29, 0x37, 0xA4, 0x2A, 0x33, 0x84, 0x90, 0x60, 0x78, + 0x5B, 0xB7, 0x08, 0x42, 0xA5, 0xAD, 0xE0, 0x34, 0x51, 0x62, 0xCA, 0x3C, 0x43, 0x08, 0x6B, 0xE7, + 0x18, 0xE3, 0x98, 0x50, 0xEB, 0xAC, 0x1C, 0x64, 0xBA, 0xE8, 0xE7, 0x19, 0xCF, 0x33, 0x31, 0x1B, + 0x95, 0x31, 0x46, 0xE3, 0x02, 0x88, 0x11, 0x22, 0x50, 0x72, 0x04, 0x11, 0xC2, 0x10, 0xE6, 0x45, + 0x41, 0x08, 0xEE, 0x7A, 0xA9, 0x95, 0x46, 0x5E, 0x7B, 0x8C, 0x8C, 0x51, 0xBA, 0xA5, 0x7D, 0x57, + 0x46, 0x67, 0xAB, 0xF1, 0xE4, 0xB7, 0xBF, 0xF9, 0xFB, 0xCD, 0x66, 0x5B, 0xE6, 0xF4, 0xFD, 0xBB, + 0x97, 0x18, 0x85, 0xB6, 0xDD, 0x38, 0x2F, 0x11, 0xF2, 0xD1, 0x7A, 0x65, 0xCC, 0xD1, 0xEC, 0xEC, + 0xBA, 0x76, 0xEF, 0xAF, 0xEF, 0x3E, 0xF9, 0x70, 0xB9, 0xAD, 0x2F, 0x39, 0x02, 0x57, 0xAB, 0x5D, + 0x08, 0xF4, 0x64, 0xF9, 0xB0, 0xA0, 0x78, 0xBD, 0xEF, 0x06, 0xA5, 0xF3, 0x3C, 0x77, 0xCE, 0x0C, + 0x43, 0x7F, 0x77, 0x7B, 0xB1, 0xA8, 0x8F, 0x1F, 0x9D, 0x3F, 0x5B, 0xAF, 0x56, 0xE3, 0xC9, 0xD2, + 0x7B, 0xFD, 0xD9, 0xA3, 0x9F, 0x41, 0x08, 0xDE, 0xBE, 0xFC, 0x6D, 0x88, 0xB8, 0x6E, 0xF7, 0x18, + 0xFA, 0x1F, 0x5E, 0xBE, 0x76, 0xCE, 0x9D, 0x2C, 0xE7, 0x3A, 0xCF, 0xDA, 0xAE, 0xEF, 0x87, 0x61, + 0x39, 0x1D, 0xB7, 0x9D, 0xE9, 0xFB, 0x0D, 0x09, 0xB1, 0x57, 0xAA, 0xEB, 0x0D, 0xC5, 0xCC, 0x1A, + 0xDB, 0xEE, 0x6B, 0x8E, 0xB1, 0xC7, 0xA8, 0x93, 0xFD, 0x76, 0xFF, 0x0D, 0x0E, 0xE1, 0x3A, 0x04, + 0xC2, 0x29, 0x26, 0x40, 0x77, 0x2D, 0x88, 0x30, 0x46, 0x3F, 0xC8, 0xB8, 0x5D, 0xBD, 0xA8, 0x77, + 0x35, 0x86, 0xE8, 0xD6, 0xED, 0x6D, 0x70, 0x23, 0x3A, 0xFF, 0xC3, 0x97, 0xEF, 0x7B, 0xAD, 0x30, + 0x00, 0x7B, 0xBF, 0x3D, 0x7F, 0xF0, 0xE9, 0xC5, 0xD5, 0x6F, 0x39, 0xA5, 0x03, 0x42, 0x31, 0x40, + 0x2E, 0xA6, 0x63, 0x31, 0x1A, 0x4C, 0x30, 0x5A, 0xE7, 0x59, 0x31, 0x29, 0xC8, 0xAE, 0x33, 0x83, + 0x94, 0x8C, 0xE7, 0x52, 0x69, 0x82, 0x51, 0x41, 0xB9, 0xB1, 0x36, 0x46, 0xAF, 0xA5, 0x66, 0xD0, + 0x31, 0xEA, 0x50, 0xA8, 0x05, 0xF6, 0x04, 0x61, 0x80, 0xBD, 0x05, 0xA2, 0xB3, 0xF9, 0x68, 0x59, + 0x56, 0x19, 0xDF, 0xF6, 0x3E, 0xD3, 0x5E, 0x70, 0xBA, 0xAD, 0x3B, 0x82, 0x62, 0x29, 0x28, 0x67, + 0x08, 0x13, 0x0E, 0x29, 0xCB, 0x18, 0x8E, 0x08, 0x22, 0x9C, 0xD2, 0x61, 0x95, 0xE9, 0x1D, 0x0C, + 0x96, 0x53, 0xD8, 0x3B, 0xE0, 0x01, 0x46, 0xD1, 0x01, 0x00, 0xD3, 0xA2, 0x1A, 0xC2, 0x24, 0x6E, + 0x23, 0x20, 0x18, 0x64, 0xEA, 0x27, 0x8B, 0xF9, 0x4C, 0xBF, 0xFF, 0xAB, 0xF7, 0x97, 0x34, 0x2B, + 0x38, 0xA5, 0xB3, 0xC5, 0xF2, 0xF9, 0xCF, 0xFF, 0x14, 0x56, 0xE7, 0x57, 0x6B, 0x69, 0x9D, 0x47, + 0x08, 0xBF, 0xBA, 0x51, 0x59, 0x3B, 0xCC, 0x97, 0x27, 0x74, 0x34, 0x2D, 0xAF, 0xDE, 0xFD, 0xAD, + 0x52, 0xDA, 0xC5, 0xE2, 0xC1, 0x4F, 0xDA, 0xB6, 0xB5, 0x91, 0xB7, 0x5D, 0x98, 0xE4, 0xF9, 0xE3, + 0xC7, 0x0F, 0xB7, 0x9D, 0xFB, 0xE8, 0x8B, 0x93, 0xCB, 0xDB, 0x0D, 0x55, 0xDD, 0x44, 0x70, 0x14, + 0x6A, 0xE7, 0x06, 0x8A, 0x90, 0xAE, 0xF7, 0xBB, 0x4E, 0x0E, 0xCD, 0xD6, 0x6C, 0x6F, 0xB4, 0x92, + 0x24, 0xAB, 0xE8, 0xC9, 0xC7, 0x48, 0x4C, 0x82, 0xB1, 0x99, 0x1D, 0x9A, 0x77, 0xBF, 0xBB, 0x5A, + 0xAF, 0x33, 0xCE, 0x27, 0xCB, 0x33, 0xCA, 0x45, 0x7B, 0xB3, 0x96, 0x5A, 0xDB, 0x83, 0x62, 0x03, + 0xA3, 0xA4, 0x0D, 0x73, 0x1E, 0x22, 0x50, 0xE4, 0x59, 0x12, 0x5E, 0xC0, 0xFB, 0xB8, 0x80, 0x18, + 0x23, 0x25, 0x98, 0x31, 0xAA, 0xB5, 0x41, 0x10, 0x1A, 0x1F, 0xFC, 0xFD, 0x3A, 0x09, 0x4B, 0x12, + 0xE2, 0xA8, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x22, 0xC8, 0x19, 0xA9, 0x0A, 0xBE, + 0x6F, 0xFB, 0x3C, 0xCB, 0x28, 0xC5, 0x5D, 0xDF, 0x13, 0x8C, 0x8F, 0x97, 0x73, 0x63, 0x8C, 0xB1, + 0x4E, 0x1B, 0xDB, 0xD6, 0xED, 0xA0, 0x34, 0x84, 0x90, 0x51, 0x1A, 0x7C, 0x48, 0x2B, 0x30, 0x1F, + 0x3C, 0x63, 0x24, 0x46, 0x68, 0xAD, 0x65, 0x9C, 0x0D, 0xC3, 0x40, 0x08, 0x11, 0x8C, 0x3A, 0x1F, + 0x7E, 0x54, 0x0B, 0x02, 0x00, 0x10, 0x02, 0xC6, 0xF8, 0x34, 0x38, 0x87, 0x90, 0xF2, 0x53, 0x80, + 0xF3, 0x91, 0x1C, 0xA0, 0x4C, 0x34, 0x61, 0x6F, 0x53, 0x1D, 0x75, 0xDE, 0x41, 0x08, 0x31, 0x44, + 0x11, 0x22, 0x6B, 0xAD, 0x73, 0x16, 0x42, 0xF4, 0xF6, 0xF2, 0xB6, 0x69, 0xE5, 0xF9, 0xE9, 0x62, + 0x34, 0xCA, 0x0F, 0x57, 0x41, 0x84, 0x52, 0x27, 0x94, 0xC6, 0xBA, 0xE0, 0x3D, 0x88, 0x09, 0x44, + 0x7C, 0x38, 0xBC, 0x26, 0x3B, 0x81, 0x31, 0x16, 0x40, 0x18, 0x7C, 0x48, 0x01, 0xDB, 0x49, 0x68, + 0xD9, 0xF5, 0x12, 0x22, 0xD4, 0x76, 0xC3, 0x30, 0x68, 0x00, 0x40, 0x12, 0x63, 0x39, 0xE7, 0x28, + 0x21, 0x10, 0x22, 0xE7, 0x0E, 0x20, 0xDF, 0x24, 0xB2, 0x3B, 0xAC, 0x02, 0x39, 0x0D, 0x3E, 0x80, + 0x08, 0xB4, 0xB3, 0x69, 0x5F, 0x1E, 0x40, 0x4C, 0x86, 0x13, 0xCA, 0x08, 0x67, 0x8C, 0x52, 0x92, + 0xC6, 0xA6, 0x24, 0xFB, 0x80, 0x10, 0x6A, 0xA5, 0xD2, 0xB4, 0x0E, 0x23, 0x24, 0x18, 0x8B, 0x8C, + 0x3B, 0xE7, 0xBD, 0x75, 0x08, 0x42, 0x04, 0x51, 0x70, 0x56, 0x79, 0x73, 0x79, 0x79, 0x83, 0x09, + 0x62, 0x98, 0x00, 0x08, 0x08, 0xC1, 0x52, 0x6B, 0x07, 0x21, 0x23, 0xB8, 0x2A, 0x4B, 0xE7, 0x5C, + 0x91, 0xE7, 0x52, 0xA9, 0x61, 0x50, 0x65, 0x99, 0x59, 0x6B, 0xA3, 0xB7, 0x18, 0x93, 0x18, 0x23, + 0xC1, 0x14, 0xC4, 0x98, 0xB0, 0x2E, 0x10, 0x41, 0x67, 0x6C, 0xD7, 0x77, 0x5A, 0x1B, 0x00, 0x40, + 0x96, 0x09, 0xEF, 0x7D, 0x62, 0x9A, 0x12, 0x84, 0xF1, 0x30, 0x0C, 0x4A, 0x69, 0x9E, 0x3C, 0xCA, + 0x84, 0x78, 0xEF, 0xCB, 0x5C, 0x2C, 0xA7, 0xE5, 0xB8, 0x14, 0x17, 0x77, 0xFB, 0xBE, 0xB7, 0x11, + 0xA0, 0xA6, 0xEB, 0xCB, 0x8C, 0x57, 0xB9, 0xD0, 0xCE, 0x07, 0x1F, 0xF2, 0x4C, 0x18, 0x1F, 0x2A, + 0x46, 0x43, 0x84, 0x11, 0x00, 0x82, 0xC0, 0xA4, 0xCA, 0xAC, 0x0B, 0x94, 0x52, 0x46, 0x70, 0xDA, + 0xC2, 0x3A, 0x1F, 0x72, 0xC1, 0x18, 0xA3, 0x20, 0x06, 0x4E, 0xB1, 0x33, 0xC6, 0x06, 0xA0, 0x31, + 0x26, 0x0C, 0x54, 0x68, 0xE8, 0xF6, 0xEB, 0xD7, 0x17, 0x6F, 0xA5, 0xD6, 0x08, 0x21, 0xCA, 0x59, + 0x31, 0xAE, 0xC6, 0x93, 0xE5, 0xFF, 0xF9, 0x9F, 0xFE, 0xD3, 0xF7, 0x2F, 0xBE, 0xA9, 0x77, 0x2B, + 0xC1, 0xE9, 0xD1, 0x72, 0x8C, 0x30, 0x85, 0xC0, 0xE5, 0x39, 0xE8, 0x07, 0xC5, 0x30, 0x3F, 0x3B, + 0x3E, 0xA5, 0xA4, 0xFC, 0xEE, 0x87, 0x1F, 0xDA, 0x5E, 0xFD, 0xEE, 0xAB, 0xE1, 0xEC, 0xB4, 0x52, + 0xB2, 0xC6, 0x90, 0x8E, 0x47, 0xF3, 0xAF, 0x5E, 0x5C, 0x5C, 0xBE, 0x7F, 0xF3, 0xF9, 0xE7, 0x3F, + 0xDB, 0x6C, 0xD7, 0xE3, 0xF1, 0xA4, 0xEB, 0x87, 0x7D, 0xBD, 0x93, 0x43, 0x1F, 0x40, 0x5C, 0x1E, + 0x3D, 0xD8, 0x6C, 0x36, 0x4F, 0x3E, 0xFA, 0xB9, 0x09, 0x62, 0x7B, 0xFB, 0x3A, 0xEA, 0x7D, 0x26, + 0x44, 0x08, 0xA8, 0xA4, 0x33, 0xE0, 0x9D, 0xD2, 0x3A, 0x42, 0x58, 0xEF, 0xDB, 0xDD, 0xA6, 0x79, + 0x78, 0xFE, 0xA8, 0xCC, 0x46, 0xCA, 0x28, 0xA9, 0xFB, 0xA7, 0xA7, 0x8B, 0x7A, 0xDF, 0x5C, 0xAD, + 0xD7, 0x90, 0x71, 0x67, 0xBD, 0x73, 0x2E, 0x48, 0x43, 0x31, 0x21, 0x02, 0xDF, 0xDC, 0xAE, 0xAB, + 0x3C, 0x17, 0x45, 0x2E, 0x07, 0x45, 0x21, 0xBE, 0xBB, 0xBE, 0x99, 0x94, 0x93, 0x5C, 0xF0, 0xA6, + 0x93, 0x72, 0x70, 0x52, 0xAE, 0xBD, 0x8F, 0xCA, 0xA8, 0x71, 0x91, 0x41, 0x44, 0x9B, 0xBD, 0xB2, + 0xDE, 0x3B, 0x1B, 0x21, 0x25, 0x46, 0xDA, 0x97, 0xDF, 0xFF, 0x03, 0xF4, 0x5E, 0xC3, 0x30, 0x38, + 0x0F, 0x20, 0xAA, 0x8A, 0x51, 0x94, 0xD7, 0x75, 0xD3, 0xB2, 0x7C, 0x5A, 0xD2, 0xE3, 0xEB, 0xD7, + 0xDB, 0x10, 0x28, 0x81, 0xE0, 0x68, 0xF2, 0x8C, 0x4F, 0x0A, 0xA0, 0x9B, 0xBB, 0x5D, 0x9F, 0x8B, + 0xB1, 0x56, 0x7D, 0xDC, 0xBF, 0xA0, 0x24, 0x0C, 0x7D, 0x3D, 0xA8, 0xDE, 0x7A, 0x8F, 0x30, 0xF6, + 0x36, 0x2C, 0x96, 0x53, 0x0A, 0xB0, 0xAA, 0xB1, 0xE7, 0x1C, 0x53, 0x71, 0x3A, 0x5A, 0xC0, 0x18, + 0x9D, 0x7C, 0x7F, 0x34, 0x11, 0x00, 0x58, 0x00, 0x02, 0x8A, 0x62, 0x2C, 0x46, 0x2A, 0x60, 0xC7, + 0x1E, 0x38, 0x27, 0xA9, 0xBE, 0xD6, 0xB2, 0x99, 0x06, 0xE8, 0x6D, 0x40, 0xC1, 0x46, 0x4B, 0x03, + 0x3B, 0x8B, 0x90, 0x33, 0xC2, 0x43, 0x84, 0x21, 0x78, 0xE7, 0x5D, 0xC1, 0xB1, 0xF5, 0xD0, 0x03, + 0xDC, 0xAE, 0xDE, 0x7E, 0x3C, 0x43, 0xAF, 0x57, 0x77, 0x40, 0x8C, 0x38, 0x0C, 0x8B, 0xC5, 0xFC, + 0xB3, 0x9F, 0xFD, 0xD2, 0x20, 0xF1, 0xEA, 0xFB, 0xAF, 0x69, 0x36, 0x1D, 0x8D, 0x67, 0x18, 0xE3, + 0xE0, 0x41, 0x1B, 0xAB, 0xE1, 0xE6, 0xAB, 0x67, 0x0F, 0x9F, 0x05, 0xA5, 0x20, 0xC6, 0x46, 0xEB, + 0xED, 0x60, 0x9B, 0xCE, 0x0F, 0xCE, 0x19, 0xE7, 0x95, 0x63, 0x4F, 0x8E, 0xCF, 0x03, 0xAB, 0xCB, + 0xC9, 0x6C, 0x12, 0x38, 0x6E, 0x56, 0x17, 0xBF, 0xF9, 0xBF, 0x6E, 0x6E, 0x6E, 0x01, 0x04, 0x54, + 0x70, 0xCE, 0x05, 0x80, 0x70, 0xBB, 0xDD, 0x1A, 0xA3, 0x99, 0xC8, 0x91, 0xEE, 0xFD, 0xED, 0x5B, + 0x80, 0xF9, 0xF2, 0xE8, 0xC1, 0x50, 0xAF, 0x7E, 0xF8, 0xE6, 0x0F, 0x26, 0xC4, 0x69, 0x21, 0xCA, + 0xE5, 0xF9, 0xA6, 0xEE, 0x28, 0x25, 0xD3, 0xC9, 0xC8, 0x18, 0x9B, 0x5A, 0xD7, 0x5C, 0x70, 0xE3, + 0x5C, 0xD7, 0x0F, 0xDE, 0x7B, 0x63, 0xCC, 0x41, 0x07, 0x00, 0x00, 0xE7, 0xFC, 0x7E, 0x38, 0x0A, + 0xDE, 0x7A, 0x6B, 0x3D, 0x26, 0xD4, 0x3B, 0x97, 0xEE, 0x89, 0x00, 0xC0, 0xE4, 0xA5, 0x4B, 0x91, + 0xDD, 0x79, 0xC6, 0x87, 0x41, 0x61, 0x4C, 0x38, 0x67, 0x9D, 0x94, 0xD6, 0xBA, 0xBA, 0x6E, 0x8C, + 0x32, 0x31, 0xC6, 0xA2, 0xC8, 0xD3, 0xA1, 0x39, 0x9D, 0xD5, 0x30, 0xC6, 0x29, 0x3A, 0xEB, 0xBE, + 0xC5, 0x83, 0x08, 0x21, 0x29, 0xE5, 0x61, 0x12, 0x83, 0x08, 0x22, 0xE4, 0x9D, 0x43, 0x10, 0x62, + 0x8C, 0x13, 0x72, 0x3E, 0x91, 0xA3, 0x93, 0x11, 0xC7, 0x07, 0x1F, 0xED, 0x7D, 0x85, 0x3D, 0x04, + 0x48, 0x83, 0x10, 0x23, 0x3A, 0xD0, 0xC1, 0x63, 0x8C, 0x11, 0xE3, 0x14, 0xA9, 0x19, 0x30, 0x42, + 0x75, 0xDB, 0xF5, 0xFD, 0xB0, 0x9C, 0x8D, 0xCF, 0xCE, 0x96, 0x69, 0xEF, 0x46, 0x29, 0xD5, 0x3A, + 0x24, 0xFF, 0x9B, 0x09, 0xDE, 0x7B, 0x6F, 0x9C, 0xA3, 0x04, 0x6B, 0x6D, 0x19, 0xA3, 0x8C, 0x52, + 0xEF, 0x5C, 0x22, 0xD0, 0x31, 0xC6, 0x21, 0x00, 0xC9, 0x92, 0xA9, 0x8D, 0xD1, 0xC6, 0x55, 0x65, + 0x11, 0xEF, 0xEF, 0xF4, 0xA9, 0xD0, 0x53, 0x42, 0x08, 0x42, 0x21, 0x51, 0x64, 0xC0, 0x3D, 0xF2, + 0x37, 0xC6, 0x18, 0xA3, 0x60, 0x2C, 0xF8, 0x90, 0x32, 0x44, 0x12, 0x34, 0x31, 0xC6, 0x58, 0x95, + 0x45, 0x9E, 0x89, 0x43, 0x32, 0x61, 0x08, 0x10, 0x41, 0x0C, 0x0F, 0xDD, 0x50, 0x08, 0xCE, 0x19, + 0x1D, 0x5D, 0xF0, 0x29, 0xBD, 0x0C, 0x23, 0xC6, 0x29, 0xBA, 0xCF, 0x3C, 0x84, 0x00, 0x4A, 0xA5, + 0x95, 0xD2, 0x00, 0x41, 0x29, 0x87, 0x51, 0x55, 0xE6, 0xB9, 0x20, 0x94, 0x38, 0xE7, 0x27, 0xE3, + 0x4A, 0x6B, 0xE3, 0x9D, 0x2F, 0x72, 0x61, 0x9D, 0xEB, 0x87, 0x21, 0xC4, 0x58, 0x96, 0x59, 0x26, + 0xF8, 0xA8, 0xCC, 0xB5, 0xD6, 0x11, 0xA6, 0xD5, 0x2E, 0x90, 0x5A, 0x03, 0x10, 0x95, 0xD4, 0xD6, + 0x58, 0x42, 0x30, 0x65, 0x0C, 0x82, 0x03, 0xCC, 0x4A, 0x2B, 0x63, 0x8D, 0x4B, 0x39, 0x0E, 0x03, + 0x00, 0x20, 0x05, 0xB1, 0x78, 0x1F, 0x20, 0x88, 0x94, 0x60, 0xC1, 0x18, 0xC5, 0xF0, 0x6E, 0xDB, + 0x3A, 0x6B, 0x96, 0x23, 0xAA, 0x8C, 0x11, 0x04, 0x2F, 0xC6, 0x8C, 0x31, 0x14, 0x01, 0xD5, 0x9E, + 0x04, 0x80, 0x90, 0xD2, 0x08, 0x45, 0x17, 0x61, 0x37, 0xA8, 0x52, 0x70, 0x82, 0x31, 0x21, 0xA1, + 0x10, 0xD4, 0x5A, 0xE7, 0x02, 0xB4, 0xD6, 0x0A, 0xCE, 0x30, 0x08, 0x5E, 0xB5, 0xD1, 0xC9, 0xBA, + 0xF3, 0x5E, 0xD5, 0xD6, 0xE8, 0x38, 0x5D, 0x00, 0xD8, 0xE8, 0x6E, 0xF5, 0xED, 0x8B, 0xF7, 0x83, + 0x0B, 0x1F, 0x7F, 0xF4, 0x91, 0xC8, 0xAA, 0x37, 0x17, 0xD7, 0x5F, 0x7E, 0xFD, 0x9D, 0xC8, 0xAB, + 0xED, 0xAE, 0x7E, 0xFC, 0xF0, 0xBC, 0x1E, 0x71, 0x4A, 0x62, 0x5E, 0xCD, 0xEE, 0x56, 0xEB, 0xA7, + 0x8F, 0x9F, 0x21, 0x02, 0xD5, 0xF5, 0x9B, 0x4C, 0x54, 0x9B, 0x6D, 0x77, 0x67, 0x6A, 0x35, 0xF4, + 0x4A, 0xAA, 0x7A, 0xAF, 0xF6, 0xBB, 0xAD, 0xD2, 0xDD, 0xD1, 0xFC, 0xF8, 0xF2, 0xF2, 0xE5, 0xED, + 0xFA, 0xAE, 0xC8, 0xF3, 0xD7, 0xEF, 0xDE, 0xBD, 0x7C, 0xFD, 0x6A, 0xB1, 0x38, 0x16, 0x22, 0x13, + 0x3C, 0x43, 0x10, 0x1B, 0x25, 0xB5, 0x1C, 0x8E, 0x1E, 0x7C, 0xF4, 0xEB, 0xBF, 0xFD, 0x2F, 0x39, + 0xF7, 0xB2, 0xBE, 0x78, 0xFC, 0xD1, 0x7F, 0xD5, 0xB5, 0x35, 0xB1, 0xDD, 0x72, 0x7E, 0xD6, 0x6C, + 0xB7, 0x8D, 0xF5, 0xE5, 0x78, 0x72, 0x34, 0x3D, 0x1A, 0x8C, 0x9B, 0x8F, 0x67, 0x94, 0xA1, 0xCD, + 0xEE, 0xA6, 0x2C, 0xA7, 0xD3, 0xD1, 0xF4, 0xEE, 0xF6, 0x36, 0x42, 0x6C, 0x94, 0x8C, 0x11, 0x6D, + 0xB7, 0x1D, 0x9A, 0xC0, 0xB3, 0x93, 0x0A, 0xE3, 0xF8, 0xE4, 0xF4, 0x94, 0x53, 0x72, 0xBB, 0xA9, + 0x27, 0x65, 0x31, 0xAE, 0xC6, 0x55, 0x9E, 0xAF, 0x76, 0x35, 0x0D, 0x01, 0x78, 0xFA, 0xFC, 0xD9, + 0xD3, 0xCB, 0xDB, 0xB7, 0x82, 0x61, 0x6F, 0x0D, 0x70, 0xC1, 0x3B, 0x5C, 0x1B, 0x95, 0xE7, 0x62, + 0x54, 0x8C, 0x42, 0x74, 0x5A, 0x75, 0x08, 0xC6, 0xDD, 0x7E, 0x7F, 0x3C, 0x9F, 0x69, 0xEF, 0x00, + 0x00, 0x46, 0x9A, 0xAE, 0x7E, 0x27, 0x10, 0xBA, 0x59, 0x5F, 0xFE, 0xF6, 0x37, 0xFF, 0x79, 0x3E, + 0x1E, 0x3D, 0x3B, 0x7F, 0xB8, 0x3C, 0x7E, 0xF0, 0x6C, 0x3E, 0xBC, 0xBD, 0x78, 0x05, 0x3D, 0x9C, + 0x23, 0x50, 0x64, 0x9A, 0x16, 0xE0, 0x1F, 0xAF, 0x87, 0x5F, 0xFD, 0xE3, 0x0B, 0x8C, 0x60, 0x55, + 0xE6, 0x1E, 0x38, 0xCA, 0x99, 0xB5, 0x7E, 0x90, 0x9B, 0x4C, 0x88, 0xBE, 0x1F, 0x8C, 0x36, 0x20, + 0xC6, 0x93, 0xC5, 0xF4, 0x64, 0x59, 0x8C, 0x28, 0x30, 0x5A, 0xAF, 0xB6, 0xDB, 0x10, 0x91, 0xE0, + 0xF4, 0xF6, 0xEA, 0xED, 0xD1, 0x72, 0x32, 0x9D, 0xAD, 0x2F, 0xAE, 0x6E, 0x2F, 0xAF, 0x6E, 0xBB, + 0xCE, 0x40, 0x08, 0x19, 0xA7, 0x11, 0x12, 0x88, 0xA1, 0x10, 0x6F, 0x62, 0x40, 0xD5, 0x78, 0x59, + 0x94, 0x8F, 0xBB, 0x38, 0x82, 0x00, 0xBB, 0x00, 0x23, 0x88, 0x84, 0x65, 0x1F, 0x7F, 0xF8, 0xEC, + 0xFF, 0xF9, 0xD5, 0xDF, 0x70, 0x9E, 0x4D, 0x67, 0xF3, 0xA7, 0xCF, 0x1E, 0x2D, 0x4E, 0x9E, 0xB4, + 0x83, 0x7B, 0xF5, 0x0F, 0xFF, 0x47, 0x14, 0x53, 0xC0, 0x33, 0x4B, 0xBF, 0x50, 0x56, 0x06, 0xA3, + 0xAB, 0x2C, 0xBE, 0x7C, 0xF1, 0xBD, 0x58, 0x9E, 0x2F, 0x4F, 0x9F, 0x06, 0x52, 0xEC, 0xB7, 0x9B, + 0x89, 0xD4, 0x52, 0x69, 0x00, 0x01, 0x44, 0x70, 0xDF, 0x6A, 0x57, 0x66, 0x93, 0x71, 0x04, 0xDE, + 0x01, 0x67, 0x76, 0x9B, 0xD5, 0x0F, 0x17, 0x97, 0xD7, 0xB7, 0x6B, 0xCE, 0x18, 0x21, 0x78, 0x32, + 0x9F, 0x23, 0x84, 0x95, 0x8B, 0xFB, 0x4E, 0xE5, 0x1E, 0x8A, 0x2C, 0x83, 0x88, 0xA8, 0xAE, 0xBE, + 0x5D, 0xDF, 0x84, 0x00, 0x10, 0xE5, 0x05, 0x00, 0xCF, 0x3F, 0xFE, 0x9C, 0xCD, 0x1E, 0xBC, 0xBB, + 0xDC, 0x80, 0x18, 0xBC, 0x3F, 0xE8, 0x78, 0x63, 0x04, 0x08, 0x01, 0x8A, 0x31, 0x21, 0x44, 0x29, + 0x35, 0x2A, 0x4B, 0xEF, 0x1D, 0x80, 0x28, 0x61, 0x48, 0x13, 0x71, 0x2C, 0xDD, 0xC2, 0x62, 0x8C, + 0x29, 0xBA, 0x25, 0x41, 0x50, 0x7E, 0x1C, 0xD3, 0xDA, 0x4E, 0x07, 0xE7, 0x76, 0xFB, 0x1A, 0x00, + 0x04, 0x62, 0xA8, 0xB5, 0xDE, 0x6C, 0x7D, 0x42, 0x5F, 0x90, 0x74, 0x79, 0x87, 0x10, 0x42, 0x98, + 0x65, 0xE2, 0x90, 0xCA, 0x0C, 0x91, 0xF3, 0x1E, 0xC4, 0x48, 0x31, 0x46, 0x79, 0x96, 0xB2, 0xE2, + 0x39, 0x67, 0x5A, 0x5B, 0x08, 0x41, 0x88, 0x20, 0x1D, 0x4F, 0xAD, 0xF7, 0x08, 0x42, 0x8C, 0x51, + 0x08, 0x91, 0x10, 0x04, 0x40, 0x44, 0x08, 0x3B, 0xE7, 0x04, 0x67, 0xC9, 0x85, 0x9E, 0x67, 0x5C, + 0x5B, 0x97, 0x89, 0x62, 0x18, 0xB4, 0xF3, 0x49, 0x85, 0x9B, 0x08, 0x25, 0x21, 0x1D, 0x76, 0x28, + 0x4E, 0x00, 0x82, 0xE0, 0x41, 0xBC, 0xB9, 0xDB, 0xF6, 0x83, 0x5A, 0xCC, 0x27, 0xB3, 0xD9, 0xE8, + 0x9E, 0x4E, 0x0E, 0x09, 0xC1, 0x31, 0x52, 0x63, 0x6C, 0x0C, 0x01, 0x00, 0x9C, 0x20, 0xE9, 0x49, + 0xCA, 0x90, 0xE7, 0xF9, 0xE1, 0x66, 0x12, 0x42, 0xEA, 0xC8, 0xBA, 0x6E, 0xA0, 0x84, 0x68, 0xAD, + 0x62, 0xF0, 0x99, 0x60, 0x9D, 0xD4, 0x10, 0x21, 0x04, 0x81, 0xA0, 0x54, 0x6B, 0x03, 0x61, 0x12, + 0xDF, 0x05, 0x7F, 0x6F, 0x6B, 0xA3, 0x84, 0x22, 0x00, 0xAC, 0x75, 0x21, 0x02, 0x00, 0x81, 0xF3, + 0x1E, 0x61, 0x5C, 0xE4, 0x59, 0xDA, 0xBB, 0x23, 0x84, 0xA4, 0x32, 0xCE, 0xBB, 0x34, 0xE4, 0x16, + 0x45, 0xD1, 0xF7, 0x83, 0xEC, 0x65, 0x4A, 0xF2, 0x44, 0xE0, 0x7E, 0x3C, 0x44, 0x30, 0x35, 0x7D, + 0xA9, 0x69, 0x53, 0x83, 0x45, 0x08, 0xE7, 0x82, 0x31, 0x4E, 0xF3, 0x4C, 0x20, 0x84, 0x7D, 0x08, + 0x04, 0x41, 0x04, 0xA2, 0xE0, 0x94, 0x16, 0x59, 0x08, 0x81, 0x60, 0x9C, 0x67, 0x8C, 0x31, 0x96, + 0x36, 0x71, 0x75, 0xD3, 0x10, 0x42, 0x84, 0x38, 0xB0, 0x98, 0x62, 0xF0, 0x10, 0x21, 0x21, 0xB8, + 0xD1, 0xDA, 0xDA, 0x68, 0x8C, 0x85, 0x30, 0x96, 0x65, 0x6E, 0xAC, 0xE7, 0x82, 0x95, 0x79, 0xA6, + 0x95, 0xC6, 0x9F, 0xFE, 0xFC, 0x5F, 0xA7, 0x2F, 0x36, 0x21, 0x98, 0x51, 0x12, 0x62, 0xA4, 0x18, + 0x70, 0x0C, 0x32, 0x86, 0x9D, 0x19, 0xE6, 0xA2, 0x39, 0x9D, 0x6A, 0x0A, 0xF7, 0x47, 0xE3, 0x60, + 0xE4, 0x76, 0x75, 0x73, 0xA9, 0xFA, 0x8D, 0xEC, 0xEE, 0xA0, 0x6B, 0xC6, 0xD5, 0xC4, 0xD8, 0x80, + 0x09, 0x86, 0x10, 0x31, 0x8A, 0x49, 0x22, 0x94, 0x3A, 0xDB, 0x2B, 0x13, 0x23, 0xA0, 0x18, 0xC8, + 0x7A, 0xAD, 0xD7, 0x5F, 0x09, 0x77, 0xD5, 0xAC, 0x5F, 0x62, 0x7B, 0x53, 0x71, 0x95, 0x61, 0xC5, + 0x90, 0xDA, 0xEE, 0x6E, 0xDB, 0xAE, 0xE1, 0x59, 0xFE, 0xD9, 0xA7, 0x9F, 0x8D, 0xAA, 0x49, 0x51, + 0x81, 0xD9, 0xD8, 0x06, 0xEF, 0x8C, 0xEC, 0x9E, 0x3F, 0x3A, 0x3A, 0x3B, 0x1E, 0x03, 0x04, 0x1F, + 0x3D, 0xFA, 0xF0, 0xA3, 0xE7, 0x9F, 0x7E, 0xF2, 0xEC, 0xF1, 0x7A, 0x73, 0xF3, 0xEA, 0x87, 0x57, + 0x08, 0x81, 0xEB, 0x9B, 0x6B, 0x8C, 0x39, 0x20, 0xDC, 0x18, 0x6D, 0x9D, 0x1B, 0xCF, 0x16, 0xDE, + 0x7B, 0x1C, 0xD1, 0x20, 0x35, 0x46, 0x68, 0x54, 0x8D, 0x97, 0xCB, 0x93, 0xBC, 0x1A, 0x53, 0x26, + 0x56, 0x77, 0xD7, 0x9C, 0xF3, 0x5D, 0xBD, 0x6D, 0x9B, 0xFA, 0x8B, 0x9F, 0xFE, 0xE2, 0xE9, 0xC7, + 0x9F, 0xBF, 0x7F, 0xFD, 0xFD, 0xE5, 0xBB, 0x57, 0x5C, 0x94, 0x0F, 0x1F, 0x3D, 0x59, 0x1C, 0x2D, + 0x96, 0x63, 0xF2, 0xC1, 0xE3, 0x79, 0x55, 0x89, 0x47, 0x0F, 0x8F, 0x26, 0xF3, 0xA3, 0xF9, 0xF2, + 0x8C, 0x52, 0x5C, 0x94, 0x65, 0xC6, 0x98, 0xF7, 0xDA, 0xB9, 0x6E, 0x3E, 0x99, 0xEE, 0xF7, 0xE9, + 0x00, 0x12, 0x18, 0x86, 0x65, 0x91, 0x01, 0x84, 0x05, 0x81, 0x1C, 0xA3, 0x3C, 0xCF, 0x8A, 0xB2, + 0x94, 0xCA, 0x4C, 0x46, 0x23, 0x82, 0xF0, 0x6C, 0x34, 0xED, 0x54, 0x33, 0x9E, 0x64, 0x4A, 0x76, + 0x45, 0x96, 0xC9, 0x7E, 0x8B, 0xA0, 0xCF, 0x99, 0xE0, 0x10, 0x0F, 0x52, 0x8F, 0xC7, 0x93, 0x18, + 0x9D, 0x8F, 0xF6, 0xE2, 0x6E, 0x95, 0x14, 0x00, 0xAB, 0xF5, 0xAE, 0x95, 0xBD, 0x31, 0xE1, 0xED, + 0xD5, 0x06, 0x45, 0xC0, 0x29, 0xFD, 0xE8, 0xE9, 0x43, 0xAD, 0xF4, 0x76, 0x57, 0x7F, 0xF0, 0xE8, + 0xC1, 0xE3, 0x07, 0x0F, 0x3A, 0xA9, 0xBC, 0xB5, 0x97, 0xD7, 0x97, 0xDF, 0xBF, 0x7E, 0x35, 0xCA, + 0xB3, 0xD3, 0xA3, 0x99, 0xF7, 0xF6, 0xEA, 0x76, 0xFF, 0xEA, 0xFD, 0x9D, 0x94, 0xFD, 0x6C, 0x5A, + 0x41, 0x18, 0xE7, 0xF3, 0x31, 0x22, 0xD8, 0xFA, 0x68, 0xB4, 0xB5, 0xCE, 0x55, 0xA3, 0xD2, 0xF9, + 0x64, 0x67, 0x33, 0x57, 0x77, 0x3B, 0xA9, 0x0D, 0x80, 0x91, 0x51, 0x4A, 0x30, 0x99, 0x4D, 0xC7, + 0x57, 0xAB, 0xC6, 0x1B, 0x3F, 0xF4, 0xDD, 0xDB, 0x8B, 0x3B, 0xCA, 0x04, 0xA5, 0x94, 0x71, 0xCE, + 0x85, 0xA0, 0x94, 0x30, 0x42, 0x41, 0xC4, 0xD6, 0xF8, 0xB6, 0xD9, 0x75, 0xFB, 0xAB, 0x71, 0x8E, + 0x3E, 0x7D, 0x3C, 0xFD, 0xF8, 0xBC, 0xD8, 0xB4, 0x6E, 0xCC, 0x09, 0xE8, 0x6E, 0x42, 0x8C, 0x55, + 0x99, 0x3F, 0xF9, 0xE0, 0xF1, 0x67, 0x9F, 0x7D, 0x42, 0x31, 0x58, 0x5D, 0xBE, 0x08, 0xAA, 0x1E, + 0x65, 0x21, 0x9A, 0x86, 0x87, 0x56, 0x6B, 0x97, 0x53, 0x80, 0x29, 0xF2, 0xC8, 0x4D, 0xA6, 0x74, + 0xB6, 0x98, 0x19, 0xD3, 0x4E, 0xE6, 0x53, 0xC7, 0x8E, 0xDB, 0x5E, 0xFB, 0xE0, 0x31, 0x04, 0x00, + 0xA0, 0x32, 0xE3, 0x25, 0x0B, 0x6D, 0xD7, 0xF7, 0x5D, 0x77, 0xFD, 0xF2, 0x9B, 0xCD, 0x66, 0xB3, + 0xAD, 0x77, 0x31, 0x06, 0x10, 0xE3, 0xD1, 0xF1, 0xE9, 0x83, 0xCF, 0x7E, 0xA6, 0xE4, 0x60, 0x87, + 0xA1, 0x1D, 0xBA, 0x7E, 0xE8, 0x39, 0x63, 0x65, 0x91, 0xF7, 0xBD, 0xCA, 0xF3, 0x6C, 0x3A, 0x1A, + 0x9D, 0x3C, 0x78, 0xFC, 0xC5, 0x5F, 0xFC, 0xBB, 0x5F, 0x7F, 0x77, 0xB3, 0xAD, 0x7B, 0x67, 0x5D, + 0x9A, 0x2F, 0x22, 0x80, 0x11, 0xC0, 0x84, 0xB4, 0xF7, 0xCE, 0xE5, 0x99, 0x10, 0x42, 0x40, 0xAF, + 0x04, 0xF1, 0x08, 0x61, 0x1F, 0x61, 0xD2, 0x22, 0x39, 0x1F, 0xA5, 0xD6, 0x20, 0x05, 0x09, 0xC7, + 0xC3, 0x49, 0x34, 0xC6, 0x90, 0xE7, 0xC2, 0x59, 0x97, 0xFC, 0xE1, 0x8C, 0x73, 0x74, 0x0F, 0x9E, + 0x4D, 0x61, 0x29, 0xD6, 0x3A, 0x0C, 0xF1, 0x8F, 0x45, 0x30, 0xFD, 0x6A, 0x8A, 0x24, 0x27, 0x08, + 0xC7, 0x10, 0xAD, 0x77, 0x99, 0x10, 0xC6, 0xDA, 0x94, 0xE2, 0x9E, 0x38, 0x71, 0xA9, 0xF9, 0x4A, + 0x9A, 0xE7, 0xB4, 0x9A, 0x06, 0xC9, 0x4C, 0x8E, 0x51, 0xD2, 0x6D, 0x69, 0x63, 0x10, 0xC2, 0xA5, + 0x20, 0x0F, 0xE7, 0x45, 0xF4, 0x8E, 0x31, 0x11, 0x21, 0x0A, 0xF7, 0xB5, 0x35, 0xFE, 0x53, 0x7B, + 0x6C, 0x8C, 0x09, 0xB9, 0x0B, 0x22, 0xC0, 0x18, 0x4B, 0xAD, 0x37, 0x75, 0xD3, 0xF7, 0x92, 0xA5, + 0xC0, 0x0A, 0x00, 0x92, 0x05, 0x0D, 0x02, 0xE4, 0x83, 0x4F, 0xE4, 0x02, 0x08, 0x0E, 0x7E, 0x26, + 0xCE, 0x58, 0x84, 0x30, 0x39, 0xF0, 0x21, 0x04, 0xD6, 0xDA, 0x6D, 0xDD, 0x50, 0x4A, 0x9D, 0xB7, + 0x89, 0x31, 0x6D, 0x5D, 0x08, 0x21, 0x30, 0x42, 0xDC, 0x41, 0x26, 0x82, 0x62, 0x04, 0xF1, 0x5E, + 0x75, 0x90, 0xD2, 0xC3, 0x43, 0x08, 0x11, 0xC0, 0x90, 0xAE, 0x3D, 0x8C, 0x8D, 0x47, 0x55, 0x26, + 0x38, 0x00, 0x80, 0x61, 0x12, 0x63, 0x74, 0xDE, 0x4B, 0x29, 0x11, 0x44, 0x9C, 0xB1, 0xAE, 0x1F, + 0x94, 0xD2, 0xE9, 0x12, 0x45, 0x09, 0x1E, 0x8D, 0x4B, 0x8C, 0x61, 0xB2, 0x00, 0x01, 0x10, 0x09, + 0x82, 0x18, 0xA2, 0xE0, 0x23, 0x00, 0x80, 0x71, 0x92, 0x67, 0x8C, 0x12, 0x82, 0x09, 0x89, 0x31, + 0xC0, 0x08, 0x9C, 0x77, 0x84, 0x90, 0x3C, 0xCB, 0xA4, 0x52, 0x49, 0x95, 0x9D, 0x64, 0xB7, 0xCE, + 0x39, 0xAD, 0x75, 0x8C, 0x21, 0xC1, 0x26, 0xDA, 0xB6, 0xF7, 0xCE, 0x31, 0x46, 0x9D, 0x75, 0x04, + 0x23, 0xC6, 0x68, 0x8C, 0x87, 0x3B, 0x6F, 0x42, 0x8D, 0x62, 0x08, 0x85, 0xC8, 0x20, 0x46, 0xF8, + 0xF3, 0x5F, 0xFC, 0x39, 0x48, 0xFC, 0x2C, 0x4A, 0x40, 0xF4, 0x63, 0x1E, 0x60, 0xF0, 0x1C, 0x03, + 0xEF, 0x41, 0x94, 0x57, 0x37, 0xEF, 0xBE, 0xFF, 0x87, 0x2F, 0x5F, 0xAD, 0xD7, 0xFB, 0xD5, 0xB6, + 0xFF, 0xE1, 0xED, 0x6A, 0x5F, 0x4B, 0xCE, 0xD9, 0xED, 0xED, 0xF5, 0xED, 0xF5, 0xE5, 0xB4, 0x82, + 0xD3, 0x8A, 0x7B, 0x0F, 0x67, 0x25, 0x1B, 0x94, 0x8B, 0x11, 0xE6, 0xA0, 0xE7, 0xC8, 0xC7, 0x10, + 0x73, 0x1A, 0xA2, 0xDC, 0xBB, 0xFA, 0xF5, 0x72, 0x84, 0x79, 0x56, 0x8C, 0x47, 0x65, 0x84, 0x44, + 0x64, 0xC5, 0x72, 0x36, 0x82, 0x18, 0x0C, 0xBA, 0x7F, 0x7C, 0xBA, 0x78, 0xF6, 0xF8, 0x7C, 0x5C, + 0xF2, 0x42, 0x0C, 0x37, 0x37, 0xDF, 0xDD, 0xAC, 0x56, 0x9F, 0x7C, 0xF8, 0xE0, 0xCF, 0xFF, 0xC5, + 0x2F, 0x30, 0xF4, 0xDF, 0xFF, 0xF0, 0xBD, 0x37, 0xE1, 0xDF, 0xFF, 0x9B, 0x7F, 0x5B, 0x15, 0xA2, + 0x9A, 0x9D, 0x7D, 0xF2, 0x93, 0x3F, 0xFE, 0xE1, 0xFB, 0x6F, 0x7E, 0xF8, 0xE1, 0x9D, 0x73, 0xF1, + 0xD1, 0xC3, 0xC5, 0x74, 0x36, 0xA9, 0xDB, 0x96, 0x50, 0xF6, 0xEC, 0xA3, 0xCF, 0x3E, 0x7A, 0xF6, + 0xC1, 0x17, 0xCF, 0x1F, 0x23, 0xCA, 0x03, 0xA4, 0x85, 0x60, 0x14, 0x86, 0x7A, 0xB7, 0xFA, 0xF4, + 0xF3, 0x9F, 0xCF, 0x8F, 0xCE, 0xE4, 0xD0, 0x41, 0x84, 0x97, 0xCB, 0x93, 0x4F, 0x3E, 0xFB, 0x29, + 0xA5, 0xF8, 0x76, 0xB5, 0x9D, 0xCC, 0x16, 0xF3, 0x51, 0x7E, 0x7C, 0xF6, 0x10, 0x42, 0xE9, 0x20, + 0xAF, 0xEB, 0x6D, 0x27, 0x3B, 0x0F, 0x62, 0x5E, 0x09, 0xEF, 0x74, 0x39, 0x12, 0x22, 0x03, 0x21, + 0x28, 0x69, 0xCC, 0x6C, 0x3A, 0xEE, 0x3A, 0x3B, 0xCA, 0xF3, 0xD3, 0xA3, 0x0A, 0xC1, 0x38, 0xAA, + 0x38, 0xC2, 0xE0, 0xFC, 0x7C, 0xF9, 0xFC, 0xE9, 0xF9, 0xA3, 0x07, 0x67, 0x05, 0x13, 0x31, 0x06, + 0x08, 0xF1, 0xC9, 0x7C, 0x0C, 0xA3, 0x69, 0xD5, 0xD0, 0xEB, 0x61, 0xBD, 0xDB, 0x32, 0x80, 0xDE, + 0xBD, 0xBB, 0xEC, 0xB5, 0x3E, 0x5B, 0x1E, 0x45, 0xEF, 0x33, 0x91, 0x3B, 0x6B, 0xEB, 0x7D, 0x37, + 0x19, 0x57, 0x94, 0x51, 0x46, 0xF1, 0x2F, 0x3E, 0xFF, 0xC4, 0x2A, 0xF7, 0x0F, 0xBF, 0xFF, 0x1E, + 0x53, 0xDC, 0xF5, 0x32, 0x42, 0x30, 0x58, 0xC3, 0x39, 0x16, 0x4C, 0xAC, 0xB7, 0x35, 0x25, 0xF8, + 0xD1, 0xD9, 0x59, 0xF0, 0x7E, 0x36, 0x9A, 0x22, 0x00, 0xB5, 0xB5, 0xE3, 0x6A, 0xC2, 0x28, 0xBD, + 0x5B, 0xD7, 0xDF, 0xBF, 0xBE, 0xFD, 0xEA, 0xD5, 0x6D, 0x0C, 0x6A, 0x31, 0x15, 0xD6, 0xC7, 0x10, + 0x41, 0xD3, 0x34, 0x83, 0xEC, 0x87, 0x5E, 0x23, 0x84, 0x57, 0x77, 0xDB, 0xCD, 0xAE, 0x01, 0x20, + 0x42, 0x14, 0xEB, 0x7D, 0x9D, 0x16, 0x40, 0x5D, 0xDB, 0x31, 0xC1, 0x32, 0x46, 0x61, 0x84, 0xCB, + 0xD9, 0x78, 0x54, 0x16, 0x5A, 0x59, 0x88, 0xE0, 0x64, 0x32, 0xAA, 0x8A, 0x22, 0x02, 0x80, 0x31, + 0xE6, 0x99, 0x88, 0x10, 0x65, 0x99, 0xE0, 0x94, 0xCE, 0x67, 0x13, 0x69, 0xF4, 0xE5, 0xE5, 0xAB, + 0xB3, 0x09, 0xC2, 0xA0, 0xD3, 0xFD, 0x96, 0x45, 0xED, 0xD4, 0x96, 0x32, 0x38, 0x9F, 0x8F, 0xCE, + 0x1F, 0x1E, 0x03, 0xBB, 0x1F, 0xA1, 0x9A, 0x13, 0xFD, 0xF8, 0xD1, 0xF1, 0xF3, 0xC7, 0x47, 0xA7, + 0xC7, 0x27, 0xC0, 0x4B, 0xC2, 0xAA, 0x9C, 0xC3, 0x9B, 0xF7, 0xDF, 0x3F, 0x7F, 0x7E, 0x7A, 0x7D, + 0x7B, 0xBD, 0x5F, 0x5D, 0x2E, 0xE6, 0xE3, 0x3C, 0x17, 0x8B, 0x22, 0x32, 0x8A, 0x04, 0xA5, 0x0C, + 0x43, 0x69, 0x83, 0x32, 0x7E, 0xCA, 0x2D, 0x26, 0xF8, 0xC5, 0x8B, 0x57, 0xD6, 0x1A, 0x0C, 0xC2, + 0x6C, 0x32, 0x4E, 0xC8, 0x9B, 0xFD, 0x66, 0x7D, 0xFE, 0xC9, 0xCF, 0x1F, 0x7F, 0xF4, 0x09, 0x41, + 0x91, 0x80, 0x00, 0x01, 0x28, 0xCB, 0x1C, 0x21, 0x98, 0x65, 0x94, 0x10, 0x58, 0x56, 0xF9, 0x9F, + 0xFD, 0x37, 0xFF, 0x76, 0xD5, 0xEE, 0x9A, 0x4E, 0x9E, 0x4C, 0x42, 0x8E, 0xEA, 0x08, 0x08, 0x61, + 0x45, 0x21, 0xD0, 0xA4, 0x40, 0xD1, 0x5B, 0xDD, 0xBC, 0x29, 0x38, 0x01, 0x31, 0x00, 0xD3, 0xF6, + 0xF5, 0x55, 0x34, 0x3B, 0x44, 0xCA, 0x80, 0x18, 0xC1, 0xE8, 0xE0, 0xC6, 0xF5, 0xC1, 0xFB, 0x18, + 0xBC, 0x47, 0x20, 0xC6, 0xA0, 0x61, 0x70, 0x98, 0x90, 0x18, 0x23, 0x46, 0xC8, 0x7B, 0x9F, 0xE7, + 0xF9, 0xBD, 0x1E, 0x38, 0xA6, 0xB4, 0xB1, 0x04, 0x5F, 0x4B, 0x9C, 0x28, 0x8C, 0x0E, 0x26, 0xEC, + 0x14, 0xCB, 0x94, 0x00, 0xD0, 0x8C, 0x62, 0x6B, 0xBD, 0xB1, 0x4E, 0x0E, 0x92, 0x33, 0x96, 0xDC, + 0xD4, 0xCE, 0xB9, 0x10, 0x3C, 0x82, 0x30, 0x86, 0x98, 0xF0, 0xFF, 0x00, 0x46, 0x4A, 0x69, 0x08, + 0x00, 0x63, 0xA2, 0xB4, 0x41, 0x10, 0x2D, 0x66, 0xA3, 0x41, 0x9A, 0xA3, 0xB1, 0x58, 0x66, 0xF6, + 0x66, 0x75, 0xD7, 0x77, 0x1D, 0x62, 0x39, 0x80, 0x28, 0xFA, 0x03, 0x42, 0x19, 0xDC, 0x6B, 0x1A, + 0x0E, 0x13, 0xF2, 0xE1, 0x7F, 0x31, 0xA1, 0xE1, 0xA4, 0xD2, 0xEB, 0x4D, 0x1D, 0x42, 0x28, 0xCB, + 0x9C, 0x60, 0xE4, 0x9C, 0x77, 0xDE, 0x1D, 0x12, 0xB9, 0x7C, 0x60, 0x34, 0xA1, 0x46, 0x63, 0xF2, + 0xEA, 0x6A, 0xEB, 0x52, 0x3D, 0xEA, 0x07, 0xA9, 0x8D, 0x21, 0x98, 0x68, 0xAD, 0x10, 0x44, 0xC6, + 0x46, 0x6D, 0x34, 0x86, 0x08, 0xA7, 0xC0, 0x07, 0x08, 0x41, 0x04, 0x89, 0xE7, 0x99, 0xF4, 0xBD, + 0x04, 0x23, 0xE7, 0x43, 0x48, 0xD2, 0xB9, 0x18, 0xB3, 0x4C, 0x54, 0x45, 0x86, 0x0F, 0x4B, 0x37, + 0x9C, 0x5C, 0x77, 0xE9, 0x64, 0x01, 0x41, 0x0C, 0xDE, 0x5B, 0x6B, 0x10, 0xC6, 0x31, 0x02, 0x04, + 0x01, 0xE7, 0x34, 0x29, 0x1C, 0x21, 0x80, 0x21, 0x78, 0x10, 0x42, 0x08, 0x51, 0x2B, 0x6B, 0x9D, + 0xC3, 0x04, 0xE7, 0x59, 0x0A, 0x5D, 0x45, 0x3F, 0x6E, 0x00, 0x92, 0x48, 0xC8, 0x18, 0xA3, 0xB5, + 0x4E, 0x3F, 0x99, 0xE2, 0x48, 0x52, 0x53, 0x85, 0x31, 0xEE, 0x7B, 0x39, 0x0C, 0xCA, 0x1A, 0xC7, + 0x39, 0x15, 0x82, 0x13, 0x4C, 0x86, 0x41, 0xA6, 0x1D, 0x02, 0xC6, 0x48, 0x19, 0x2B, 0xB5, 0x65, + 0x94, 0xA4, 0x40, 0x35, 0xCE, 0x05, 0xFE, 0xE9, 0x1F, 0xFD, 0x85, 0x0F, 0x41, 0x2A, 0xA9, 0xB5, + 0x3C, 0x1E, 0xF3, 0xE8, 0x4C, 0x70, 0xC3, 0xD9, 0x04, 0x05, 0xD7, 0xA2, 0x20, 0x37, 0xF5, 0xFE, + 0xC5, 0xEB, 0xF7, 0x19, 0x2F, 0xAE, 0x6E, 0x36, 0xFB, 0xBA, 0xAF, 0xEB, 0x3D, 0x86, 0xF8, 0xFC, + 0xE4, 0x78, 0x54, 0xE5, 0x1C, 0x99, 0x69, 0x66, 0x8F, 0x46, 0x6C, 0xC4, 0x10, 0x74, 0x52, 0xC4, + 0xE6, 0xF1, 0xCC, 0x97, 0x44, 0xCE, 0xC4, 0x30, 0xA1, 0xBA, 0xD9, 0xBC, 0x2B, 0xCB, 0x92, 0x64, + 0x33, 0xE5, 0x50, 0xF0, 0x7E, 0x3F, 0xE8, 0xAA, 0xCC, 0x8D, 0x81, 0x9D, 0x36, 0x48, 0xB0, 0xC1, + 0x03, 0x19, 0x7C, 0xA3, 0xA5, 0x34, 0xDD, 0xEB, 0xB7, 0xEF, 0x9B, 0xDE, 0x03, 0x58, 0xBE, 0x78, + 0xB3, 0xAF, 0xFB, 0xA1, 0x2C, 0xCA, 0xE7, 0x0F, 0x1F, 0x5A, 0xBD, 0xFE, 0x7F, 0xBF, 0xFC, 0xFE, + 0xED, 0x6D, 0x7B, 0xF9, 0xFE, 0xDD, 0xF5, 0xC5, 0xC5, 0xE9, 0xD1, 0xFC, 0xE1, 0xD9, 0xBC, 0xE4, + 0xF0, 0xFA, 0x7A, 0xAB, 0x94, 0x5D, 0xCE, 0x96, 0x8B, 0x1C, 0x2C, 0x17, 0x47, 0xBD, 0x45, 0x56, + 0xF6, 0xCF, 0x3F, 0x38, 0x17, 0x82, 0xA2, 0x08, 0xA7, 0xD3, 0x89, 0x28, 0xAA, 0x0F, 0xBF, 0xF8, + 0x13, 0x26, 0x8A, 0x7F, 0xF9, 0x67, 0xFF, 0xF5, 0xD1, 0xF1, 0xC9, 0x0F, 0x2F, 0x5F, 0xA8, 0x76, + 0xD7, 0x6C, 0xDE, 0x7E, 0xF1, 0x6C, 0x79, 0xFE, 0xEC, 0xF3, 0xAB, 0xEB, 0xDB, 0x4D, 0xE3, 0x5E, + 0xBE, 0x7A, 0x3F, 0x28, 0x6D, 0x8C, 0x6F, 0x5B, 0xB9, 0xDD, 0x36, 0xD6, 0xE9, 0xEB, 0xBB, 0x75, + 0xF0, 0xA6, 0xEB, 0xBB, 0xBC, 0xCC, 0x8D, 0xD1, 0x10, 0xC0, 0x4F, 0x3F, 0x3C, 0xF9, 0xFE, 0xCD, + 0x9B, 0xE5, 0x72, 0xB6, 0xD9, 0xEF, 0xF6, 0x4D, 0xFF, 0xE4, 0xF1, 0xD9, 0xF9, 0xF9, 0x71, 0x80, + 0xF1, 0xEA, 0xE6, 0xF6, 0xCD, 0xDB, 0x77, 0x47, 0x8B, 0x19, 0x80, 0x71, 0x5D, 0xD7, 0x3E, 0x42, + 0xA9, 0x06, 0xA9, 0x2D, 0xD0, 0x8E, 0x71, 0x4C, 0x98, 0x18, 0x15, 0xE5, 0x93, 0xF3, 0xF3, 0xF9, + 0x74, 0xDC, 0xB6, 0x03, 0x80, 0xE8, 0xF1, 0xC3, 0xF3, 0x5D, 0x2D, 0x21, 0xA4, 0x6F, 0xDE, 0x6D, + 0xB4, 0x89, 0x8F, 0x1F, 0x1C, 0xED, 0xF7, 0xB5, 0x92, 0x1A, 0xA2, 0xC8, 0x28, 0x7B, 0xB8, 0x38, + 0xFA, 0xFE, 0xF5, 0x3B, 0x8C, 0x00, 0xCF, 0xC4, 0xDB, 0xEB, 0x5B, 0x82, 0xA8, 0x31, 0xB6, 0xEB, + 0x5B, 0x08, 0x28, 0x04, 0xD1, 0x3A, 0xEB, 0x42, 0x74, 0x3E, 0x5A, 0xA3, 0xA6, 0x23, 0x26, 0x65, + 0xD7, 0x69, 0xE7, 0xAD, 0x02, 0x50, 0x61, 0x8C, 0x38, 0xE3, 0xD7, 0xB7, 0xEB, 0xD9, 0x64, 0x3C, + 0x9B, 0x14, 0xF5, 0xBE, 0x56, 0x6A, 0x60, 0x84, 0x3E, 0x7E, 0x70, 0x7C, 0x36, 0x9F, 0x1E, 0xCD, + 0xE7, 0x20, 0x02, 0x67, 0xE3, 0x6E, 0x3F, 0xAC, 0x37, 0xCD, 0xBB, 0xAB, 0x95, 0xF7, 0x60, 0x5C, + 0x95, 0xEF, 0x2E, 0xB6, 0xDF, 0xBE, 0xB8, 0xBE, 0xBA, 0x5D, 0x67, 0x9C, 0x69, 0x63, 0x01, 0xC2, + 0x83, 0xD4, 0x4A, 0x9A, 0x57, 0x3F, 0xDC, 0x02, 0x82, 0x9E, 0x3E, 0x3C, 0xEE, 0xA5, 0x1D, 0x94, + 0xC2, 0xC0, 0x20, 0xA0, 0xF2, 0x8A, 0x48, 0x3B, 0x44, 0xA0, 0xA3, 0x57, 0x47, 0xF3, 0x1C, 0x41, + 0xD7, 0x0D, 0x8D, 0x31, 0x43, 0x2B, 0x9B, 0x22, 0x17, 0x54, 0x64, 0xA7, 0xCB, 0xA2, 0xEF, 0xF7, + 0xB9, 0x60, 0x85, 0xC8, 0x6F, 0xAF, 0xB7, 0x93, 0x6A, 0xBA, 0x5B, 0x77, 0x28, 0x44, 0x12, 0x9D, + 0x6D, 0x57, 0x23, 0xD2, 0x96, 0x78, 0xC8, 0x89, 0xE5, 0x50, 0x93, 0x28, 0x8F, 0x8E, 0x4E, 0xB6, + 0x75, 0xF7, 0xE0, 0xEC, 0xF8, 0xE3, 0x0F, 0x8E, 0x01, 0x88, 0x42, 0xE0, 0x07, 0x67, 0xCB, 0x10, + 0xED, 0xE9, 0x71, 0x7E, 0xFE, 0x70, 0x94, 0x8F, 0xF0, 0x78, 0x91, 0x3D, 0xFA, 0xF0, 0x38, 0xAB, + 0xC4, 0xD1, 0xA3, 0xD9, 0x7C, 0x59, 0x4C, 0x4F, 0xAA, 0xA3, 0x27, 0x8B, 0x41, 0x6D, 0x82, 0x5E, + 0xCD, 0x2A, 0x49, 0x63, 0x6D, 0xD5, 0xBE, 0xC8, 0x60, 0xC5, 0xC3, 0xA3, 0x59, 0xC8, 0x90, 0x56, + 0x7D, 0xCD, 0x43, 0x4D, 0x5C, 0xED, 0xE5, 0x6D, 0x46, 0x71, 0xC1, 0xE8, 0x64, 0xF9, 0xD4, 0x93, + 0x52, 0x2B, 0xE3, 0x01, 0xEC, 0x95, 0x0D, 0x11, 0x02, 0x00, 0x04, 0xC3, 0x10, 0x21, 0xEC, 0x9B, + 0xA8, 0x1B, 0x48, 0xF3, 0xD4, 0x31, 0xA5, 0xCD, 0x3D, 0x88, 0xC0, 0xFB, 0x34, 0x4E, 0x82, 0x10, + 0x42, 0x29, 0x78, 0x0A, 0xA6, 0x41, 0x10, 0x08, 0x4E, 0x09, 0x81, 0x11, 0x00, 0x63, 0x9C, 0xBF, + 0xBF, 0x1E, 0x24, 0x66, 0xA7, 0x71, 0x2E, 0x91, 0x94, 0xB4, 0x31, 0x00, 0xC2, 0x74, 0x05, 0x0E, + 0x2E, 0xA4, 0xF8, 0x2A, 0x88, 0x60, 0xAA, 0x26, 0x31, 0x46, 0x6D, 0xDC, 0xA3, 0x93, 0xC5, 0x67, + 0xCF, 0x1F, 0x52, 0xE8, 0xCB, 0x22, 0xDF, 0x36, 0xC3, 0x59, 0x6E, 0x5F, 0xBF, 0xFA, 0xC6, 0x21, + 0xF6, 0x87, 0xDF, 0xFD, 0xDD, 0xED, 0xF5, 0xFB, 0x6A, 0x72, 0x04, 0x11, 0x8E, 0xDE, 0x23, 0x08, + 0x29, 0x23, 0x00, 0x46, 0x10, 0x0F, 0x71, 0x27, 0x87, 0xB0, 0x2A, 0x08, 0xD3, 0x11, 0x30, 0xFD, + 0x68, 0x9A, 0xBE, 0x69, 0x7A, 0xC6, 0x68, 0x9E, 0x09, 0x70, 0x20, 0x38, 0xC5, 0x54, 0x65, 0x82, + 0x0F, 0xA9, 0x1A, 0x3A, 0xE7, 0xAD, 0x0F, 0x10, 0x22, 0x6B, 0x9D, 0xD2, 0xDA, 0x5A, 0x4F, 0x08, + 0x85, 0x10, 0xF9, 0x10, 0xA5, 0xD4, 0x07, 0x9C, 0x7E, 0x08, 0xE1, 0x3E, 0x5D, 0x14, 0x80, 0x14, + 0xF0, 0x07, 0x78, 0xC2, 0xF5, 0xDC, 0x23, 0xED, 0x84, 0xE0, 0xA3, 0x32, 0x4F, 0x62, 0x31, 0x17, + 0x3C, 0x46, 0xD8, 0x3A, 0x1B, 0x23, 0x50, 0xCA, 0x44, 0x1F, 0x20, 0x8C, 0x5A, 0x5B, 0x78, 0xAF, + 0x59, 0x4B, 0xD8, 0xE7, 0x64, 0x98, 0xF3, 0xCE, 0xD9, 0x14, 0x49, 0x12, 0x40, 0x32, 0x39, 0x94, + 0x45, 0x46, 0x08, 0x02, 0x07, 0x42, 0x67, 0x52, 0xD2, 0xF9, 0xC4, 0x79, 0x56, 0x4A, 0x31, 0xC6, + 0x52, 0xD1, 0x56, 0xDA, 0x40, 0x08, 0x31, 0x4A, 0x6B, 0xC3, 0x40, 0x08, 0xD1, 0xDA, 0x30, 0x4E, + 0x27, 0xD3, 0x31, 0x84, 0x10, 0x61, 0xE2, 0x63, 0x00, 0x31, 0xD1, 0xB7, 0x01, 0xC2, 0x18, 0x13, + 0x9C, 0x12, 0x3F, 0x7C, 0x08, 0x18, 0x63, 0xF8, 0xDF, 0xFD, 0x87, 0xFF, 0xAD, 0xE9, 0x86, 0xE0, + 0x3D, 0x02, 0xBE, 0xC2, 0xFA, 0x93, 0x27, 0x13, 0x0A, 0xBA, 0xBE, 0xAD, 0x09, 0x25, 0xCB, 0xE5, + 0xE2, 0xAF, 0x7F, 0xFB, 0xED, 0xD7, 0xDF, 0xBD, 0x41, 0x80, 0xEC, 0xEB, 0x2D, 0x42, 0x30, 0x46, + 0xFC, 0xB3, 0xCF, 0x3E, 0x81, 0x30, 0x7C, 0xF8, 0xF4, 0xEC, 0xEC, 0x68, 0x9C, 0x51, 0xE4, 0xBD, + 0xBF, 0xDD, 0xEE, 0x20, 0x34, 0x43, 0xDF, 0x44, 0x08, 0x08, 0x81, 0xDA, 0x81, 0xAA, 0x98, 0x18, + 0x07, 0xEB, 0xBA, 0xDF, 0xD7, 0xC3, 0xE9, 0xD9, 0x42, 0xAB, 0x5A, 0x2B, 0x1F, 0x02, 0xD7, 0x16, + 0x4F, 0xE7, 0xA2, 0xED, 0xFB, 0xC1, 0x58, 0x88, 0xB0, 0x10, 0x9C, 0x32, 0x3C, 0x2A, 0x29, 0x03, + 0x26, 0x5A, 0x70, 0xB7, 0x51, 0x18, 0xC5, 0x6E, 0xD0, 0x1F, 0x7F, 0xB8, 0xDC, 0x6C, 0x6E, 0x7D, + 0xCC, 0xFB, 0x81, 0x70, 0xCA, 0xD5, 0xB0, 0x1B, 0x8D, 0x88, 0xB3, 0xE1, 0xC5, 0x9B, 0x8D, 0x1C, + 0xD4, 0xB3, 0xC7, 0x67, 0xFF, 0xE2, 0x8F, 0x3E, 0x0F, 0x01, 0xFD, 0xE6, 0xAB, 0xD7, 0x5D, 0x2C, + 0x9E, 0x3E, 0x79, 0xBC, 0xAF, 0xF7, 0x4D, 0xBB, 0xDF, 0xAE, 0xEF, 0x00, 0xA2, 0x5A, 0xF6, 0xA3, + 0x6A, 0xFC, 0xF8, 0xD9, 0xA7, 0x94, 0xA2, 0xEB, 0x9B, 0xBB, 0x10, 0xDC, 0xDD, 0xDD, 0xFA, 0xF9, + 0x07, 0x4F, 0x9A, 0x7A, 0x73, 0x77, 0x7B, 0x97, 0xD3, 0x81, 0x50, 0xD2, 0xD4, 0xFD, 0x64, 0x2C, + 0xCA, 0x9C, 0x05, 0xE7, 0x39, 0xC3, 0x08, 0xC3, 0x9C, 0x33, 0x86, 0xE3, 0x7A, 0xD7, 0x00, 0x84, + 0x01, 0x88, 0x19, 0xA3, 0x14, 0xFA, 0x46, 0x69, 0x84, 0xB1, 0x33, 0x32, 0xAF, 0x26, 0x45, 0xC1, + 0x87, 0xAE, 0x57, 0x16, 0xB8, 0x60, 0x62, 0xF0, 0x56, 0x7B, 0x08, 0x02, 0xA1, 0x39, 0x42, 0x78, + 0xD0, 0xED, 0xC3, 0x07, 0xC7, 0xD1, 0x85, 0xAB, 0xDB, 0xF5, 0xB4, 0x18, 0xFD, 0xEC, 0xD3, 0xCF, + 0x21, 0x74, 0x5D, 0xDF, 0x0F, 0xDA, 0x79, 0x84, 0x7C, 0x44, 0xCE, 0x05, 0x00, 0x01, 0x85, 0x44, + 0x30, 0xCA, 0x48, 0xD8, 0x6F, 0xEB, 0xFD, 0x7E, 0x37, 0x1A, 0xE7, 0x1F, 0x3E, 0x7F, 0x5E, 0xEF, + 0xF6, 0xB7, 0xBB, 0xF5, 0xF1, 0x72, 0x8E, 0x08, 0x1E, 0x5C, 0x78, 0xF3, 0xFA, 0xE2, 0x78, 0x36, + 0xB5, 0x4A, 0x55, 0xE5, 0xD8, 0xE9, 0x61, 0x36, 0x9D, 0x16, 0xC5, 0xE8, 0xED, 0xD5, 0x7B, 0xAD, + 0x7B, 0x46, 0x19, 0x88, 0xC8, 0x43, 0x68, 0xE5, 0x1E, 0x12, 0x96, 0x8B, 0xF1, 0xF1, 0x72, 0x31, + 0x0C, 0xB6, 0x2C, 0x29, 0x82, 0xA4, 0xEB, 0xFB, 0x76, 0x50, 0x94, 0xE2, 0x51, 0x21, 0x86, 0xC1, + 0x34, 0xDD, 0x70, 0x73, 0xB3, 0xEB, 0xA5, 0x1E, 0xA4, 0xD4, 0xCE, 0x5A, 0xE7, 0x3E, 0x7D, 0xFE, + 0x81, 0x56, 0xFA, 0xFD, 0xED, 0x06, 0x63, 0x7C, 0xB2, 0x9C, 0x64, 0x14, 0x4C, 0x26, 0x73, 0x40, + 0x88, 0xE0, 0xAC, 0x2A, 0xC4, 0xC5, 0xD5, 0xCE, 0x7A, 0xFD, 0xE9, 0x07, 0x4B, 0xC6, 0xF9, 0xAE, + 0x6B, 0x8A, 0x4C, 0x08, 0x92, 0xBF, 0x7C, 0x7F, 0xE5, 0x9D, 0x39, 0x5D, 0x4E, 0x18, 0x23, 0xD1, + 0x75, 0x5D, 0xD7, 0x78, 0x17, 0x30, 0x21, 0x84, 0x33, 0x88, 0x58, 0x59, 0x16, 0x10, 0xE1, 0x2C, + 0xCB, 0xB4, 0x71, 0x7D, 0xA7, 0x66, 0x55, 0x65, 0x6C, 0x70, 0xD6, 0x52, 0x2C, 0xAE, 0x56, 0xFB, + 0xBF, 0xFB, 0xDD, 0x8B, 0x61, 0xE8, 0x7F, 0xFA, 0xE9, 0x93, 0x8C, 0x45, 0xC1, 0xE2, 0x78, 0x3A, + 0x2D, 0xF2, 0xDC, 0x47, 0x5C, 0x66, 0x7C, 0x36, 0xCA, 0x99, 0xC8, 0x9B, 0xED, 0x46, 0x1B, 0x73, + 0x79, 0xF5, 0x6E, 0xBC, 0xAC, 0x10, 0xA7, 0xF5, 0x60, 0x77, 0xDB, 0x66, 0x5B, 0x0F, 0xD2, 0x58, + 0xE8, 0x23, 0x05, 0x71, 0x3A, 0x2B, 0x37, 0x9B, 0x36, 0x02, 0x14, 0x22, 0xE8, 0x07, 0x83, 0x28, + 0x43, 0x08, 0x5B, 0xEB, 0xF2, 0x8C, 0x65, 0x4C, 0x30, 0x96, 0x95, 0x39, 0xBD, 0xBA, 0x7C, 0xB7, + 0x59, 0xAF, 0x04, 0x67, 0x0C, 0xE1, 0xF9, 0x6C, 0xB6, 0x3C, 0x3A, 0xB7, 0x50, 0xC0, 0xE0, 0x1C, + 0xC8, 0x7B, 0x13, 0x43, 0x24, 0xB7, 0x8D, 0x5B, 0xF5, 0x9E, 0x46, 0x19, 0x74, 0x33, 0x80, 0x09, + 0x65, 0x9C, 0x12, 0x48, 0x31, 0x74, 0x3E, 0x26, 0x5B, 0x3E, 0x84, 0x48, 0x70, 0x9A, 0x42, 0xB6, + 0x32, 0x4E, 0xB5, 0xB1, 0xD6, 0xDA, 0x42, 0x30, 0x17, 0x82, 0x0F, 0x81, 0x33, 0x2A, 0xB5, 0x8D, + 0x11, 0x10, 0x0C, 0x29, 0xC1, 0x52, 0x59, 0x1F, 0x62, 0x84, 0x20, 0xE7, 0x34, 0x19, 0xFE, 0x9B, + 0x5E, 0x4A, 0xA5, 0x38, 0x63, 0x4A, 0x4A, 0x80, 0x70, 0xE2, 0x32, 0xDF, 0x1B, 0xBC, 0xD5, 0xB4, + 0xE0, 0x7F, 0xFC, 0xD9, 0x23, 0x0A, 0xD4, 0x97, 0xDF, 0xBF, 0x95, 0x8E, 0x00, 0xC4, 0x97, 0xE1, + 0xF6, 0x76, 0x73, 0x37, 0x3E, 0x7B, 0xF6, 0xE2, 0xE5, 0xAB, 0xF7, 0xEF, 0x5E, 0x62, 0x3E, 0x7A, + 0xF6, 0x93, 0x3F, 0x43, 0x30, 0x6A, 0x6D, 0x9D, 0xF7, 0x49, 0x74, 0x66, 0x8C, 0x4D, 0xD7, 0xCF, + 0x18, 0xE2, 0x81, 0x7A, 0x96, 0xD8, 0x26, 0x87, 0x34, 0x78, 0x87, 0x20, 0x7C, 0xF8, 0xE0, 0xF8, + 0xF4, 0x74, 0x19, 0x62, 0x70, 0xCE, 0x0F, 0x83, 0x22, 0x24, 0x89, 0xDB, 0x08, 0x21, 0x89, 0x00, + 0xEE, 0x63, 0x8C, 0x5A, 0xEB, 0xF5, 0x7A, 0x8B, 0x31, 0x61, 0x82, 0x1B, 0x6D, 0x9B, 0xA6, 0x91, + 0x52, 0x1F, 0xCE, 0x93, 0xA9, 0x78, 0x01, 0x90, 0xBC, 0x69, 0x00, 0x00, 0x8A, 0x11, 0x00, 0x20, + 0x44, 0x18, 0xEE, 0xD5, 0xB6, 0xA3, 0xB2, 0x08, 0x49, 0x63, 0x06, 0x22, 0xC2, 0xD8, 0x1F, 0x62, + 0x1F, 0x12, 0xD2, 0x03, 0x52, 0x82, 0x53, 0x3A, 0x2F, 0x42, 0x08, 0x23, 0xC4, 0x29, 0x46, 0x08, + 0xA6, 0xBF, 0xA8, 0xD1, 0x86, 0x60, 0x6C, 0xAC, 0x8D, 0xF7, 0x59, 0x9C, 0xC9, 0x62, 0x98, 0xD6, + 0x8E, 0x69, 0x15, 0x98, 0x92, 0xF1, 0xE2, 0xFD, 0xA9, 0x37, 0x55, 0xB7, 0xF4, 0x8E, 0x71, 0xCE, + 0x82, 0xC3, 0xB6, 0x8E, 0x48, 0x6D, 0x04, 0xE7, 0x55, 0x55, 0xFA, 0x10, 0x8C, 0xB3, 0xCE, 0xDA, + 0xE0, 0xBC, 0x73, 0x0E, 0x63, 0x2A, 0x84, 0x20, 0x34, 0x21, 0x4F, 0xBC, 0xB1, 0x16, 0x63, 0x0C, + 0xFF, 0xFB, 0xFF, 0xF0, 0x1F, 0x21, 0x00, 0x5E, 0x37, 0x19, 0x27, 0x30, 0xB8, 0x9F, 0x3C, 0x11, + 0xC1, 0x0D, 0x4D, 0xDD, 0xF8, 0x00, 0x29, 0x2F, 0x5F, 0xBE, 0xBD, 0xD9, 0x77, 0x9D, 0x52, 0xEA, + 0x6C, 0x59, 0x2E, 0x17, 0x39, 0x25, 0xA5, 0x73, 0x9E, 0xB3, 0x50, 0x15, 0x23, 0xEB, 0xC3, 0x6A, + 0xB3, 0xDB, 0xD7, 0x3B, 0x69, 0x35, 0x63, 0xC4, 0x19, 0xCD, 0x68, 0xAC, 0x3B, 0x05, 0x10, 0x7F, + 0x78, 0x3A, 0x57, 0x26, 0x5C, 0xDF, 0xDC, 0xCD, 0xC6, 0xA3, 0xF9, 0x38, 0x77, 0x11, 0xB4, 0xAD, + 0x1F, 0x4C, 0x56, 0x15, 0x65, 0xAF, 0xD6, 0x97, 0x77, 0x35, 0x80, 0x18, 0x61, 0x0C, 0x22, 0x60, + 0x8C, 0x64, 0x45, 0xB6, 0x9C, 0xE6, 0x28, 0x28, 0x14, 0xB5, 0xF5, 0xB0, 0xAE, 0x9B, 0x47, 0xE7, + 0x79, 0xDD, 0x74, 0x93, 0xE9, 0x98, 0xC1, 0x7C, 0x54, 0xCD, 0x94, 0x96, 0x77, 0xAB, 0xD5, 0x7E, + 0xEF, 0x01, 0x10, 0x9C, 0xE0, 0x3F, 0xFF, 0x67, 0x5F, 0xD8, 0xA0, 0x3A, 0xE9, 0xDF, 0xDD, 0xAA, + 0x17, 0xAF, 0xDF, 0xCF, 0x66, 0x33, 0x02, 0xFA, 0x93, 0x69, 0xD6, 0xA9, 0x7E, 0xBD, 0x33, 0xD7, + 0xDB, 0x20, 0xB5, 0xF9, 0xE8, 0xE3, 0x9F, 0x6C, 0x36, 0xEB, 0x8B, 0xF7, 0xAF, 0xBF, 0xF9, 0xFA, + 0xB7, 0xA7, 0x47, 0x8B, 0x3F, 0xF9, 0xA3, 0x5F, 0xD2, 0x72, 0xBE, 0xBD, 0x7B, 0x05, 0x5C, 0xB3, + 0x58, 0xCC, 0x4F, 0xE6, 0x0B, 0xE7, 0x6D, 0x91, 0x53, 0x10, 0x83, 0x77, 0x7E, 0x54, 0x8D, 0x87, + 0x7E, 0xB8, 0x7C, 0x7F, 0x29, 0x32, 0xBE, 0x6D, 0x6A, 0x13, 0x70, 0x74, 0x06, 0x44, 0x2F, 0x5D, + 0xFC, 0xEC, 0xF3, 0xA7, 0xCD, 0xBA, 0x61, 0xBC, 0xC8, 0x73, 0x3E, 0x9F, 0xE6, 0x90, 0xE2, 0x77, + 0x97, 0x57, 0x9B, 0x5D, 0xBB, 0xDD, 0xB4, 0x79, 0xC6, 0x95, 0x76, 0x4A, 0xC9, 0xE5, 0x72, 0x32, + 0x9D, 0x8C, 0xBC, 0x73, 0x1F, 0x3C, 0x3C, 0xCB, 0x59, 0xDE, 0xF4, 0xFA, 0xC5, 0xDB, 0x77, 0x5D, + 0x67, 0x84, 0xC8, 0x11, 0x41, 0x11, 0x40, 0x4E, 0xF1, 0x74, 0x5C, 0xCC, 0xAA, 0x8A, 0x20, 0x04, + 0x40, 0x84, 0x00, 0x1C, 0xCD, 0x4B, 0x46, 0x40, 0xA7, 0x2D, 0xA2, 0xA8, 0xEE, 0x87, 0xBA, 0x19, + 0x30, 0xA6, 0xC9, 0x34, 0x33, 0xCA, 0x33, 0x1A, 0x03, 0x88, 0xB0, 0xEF, 0xDA, 0xD1, 0x68, 0x0C, + 0x22, 0xFC, 0xFE, 0xE2, 0x1D, 0x27, 0x80, 0x20, 0x42, 0x09, 0x05, 0xD0, 0x29, 0x35, 0x4C, 0x46, + 0x33, 0x17, 0xA0, 0x94, 0xCA, 0x3B, 0x44, 0x39, 0xDB, 0xED, 0x5A, 0x1F, 0x70, 0x84, 0x04, 0x02, + 0xB0, 0x9C, 0x95, 0xE3, 0x32, 0xCB, 0x04, 0x45, 0x30, 0xBA, 0x68, 0xA5, 0x52, 0x7F, 0xF8, 0xEA, + 0xED, 0x5F, 0xFF, 0xE6, 0xDB, 0x7F, 0xFF, 0x97, 0xFF, 0xAA, 0xC8, 0xB3, 0xBA, 0xEF, 0xBB, 0x5E, + 0x8E, 0xCA, 0xF2, 0xE1, 0xF1, 0x52, 0x3A, 0xF8, 0x9B, 0xAF, 0x7E, 0xC8, 0x8B, 0xC3, 0xF7, 0xD9, + 0xE7, 0xCF, 0xCF, 0xAC, 0xE9, 0x8B, 0x92, 0x9F, 0x1C, 0x97, 0x31, 0x44, 0x6B, 0x71, 0xF4, 0xA0, + 0xCA, 0x98, 0x10, 0xB8, 0x6E, 0x37, 0x83, 0x6C, 0x3D, 0x00, 0x9C, 0x31, 0xC1, 0x73, 0xC2, 0x33, + 0x6B, 0x02, 0xF4, 0xF6, 0xEA, 0x76, 0xB7, 0x6F, 0xFA, 0x56, 0x6A, 0x00, 0x60, 0x2E, 0x44, 0x55, + 0xE6, 0xD6, 0xD8, 0x71, 0x55, 0x0A, 0x91, 0xDD, 0x6D, 0x76, 0x38, 0x7A, 0xE7, 0x83, 0x77, 0x7E, + 0x3E, 0xCB, 0x03, 0x70, 0x4A, 0x69, 0xC6, 0x08, 0x21, 0x74, 0x54, 0x54, 0x10, 0xA3, 0x4E, 0xEA, + 0x10, 0xD0, 0x30, 0xB4, 0x10, 0x63, 0x44, 0xC9, 0xAE, 0xE9, 0x69, 0x04, 0x55, 0x95, 0xDB, 0xE8, + 0x05, 0xA5, 0x08, 0xC2, 0xB6, 0xEB, 0x36, 0xBB, 0x9E, 0x09, 0x6E, 0xAC, 0xD9, 0x6D, 0x9B, 0xAE, + 0xB7, 0x83, 0xD4, 0x79, 0x91, 0x53, 0xCE, 0xAD, 0x71, 0xCB, 0xC5, 0xC4, 0x68, 0x2B, 0x04, 0x2D, + 0x4B, 0xEA, 0xAD, 0xE2, 0x98, 0x5E, 0x5D, 0xDF, 0x4A, 0x27, 0x09, 0xF4, 0x93, 0x7C, 0x7A, 0x32, + 0x9B, 0x4B, 0xA7, 0x38, 0x2D, 0x42, 0xE4, 0xB4, 0x1A, 0xC9, 0x61, 0xB5, 0x97, 0xB1, 0x1C, 0x9D, + 0x44, 0x52, 0x60, 0x9C, 0x2B, 0x69, 0xB4, 0xD1, 0x63, 0xD2, 0xE7, 0x45, 0x71, 0xB5, 0x55, 0x00, + 0x31, 0xCE, 0xF1, 0x38, 0x83, 0x39, 0xF7, 0xCE, 0x29, 0x91, 0x55, 0xAD, 0xE2, 0xB9, 0xE0, 0x75, + 0xEF, 0x36, 0xAD, 0xAD, 0x0A, 0x92, 0x31, 0xBA, 0x6B, 0x55, 0x3F, 0x98, 0x9C, 0x22, 0xE3, 0x03, + 0x67, 0xDC, 0x7B, 0x1F, 0x01, 0x88, 0x00, 0x6D, 0x9A, 0x5E, 0xC9, 0xE1, 0xB3, 0x27, 0x27, 0xB7, + 0xBB, 0x6E, 0xB5, 0xEF, 0x26, 0x39, 0x8F, 0x00, 0x0E, 0xC6, 0x13, 0x82, 0x73, 0x4E, 0x04, 0x25, + 0x9F, 0x2E, 0xF1, 0xFB, 0xBB, 0xBB, 0xA3, 0xE3, 0x65, 0xB7, 0xDF, 0xAD, 0x76, 0x9D, 0x37, 0x9A, + 0x31, 0x72, 0xF4, 0xE8, 0x69, 0x96, 0x91, 0x77, 0xEF, 0xAF, 0xEF, 0x36, 0xC3, 0x74, 0x71, 0xD6, + 0x4A, 0x9B, 0x12, 0x73, 0xDD, 0x61, 0xC2, 0x4A, 0x99, 0x8F, 0x87, 0x36, 0x10, 0x02, 0x98, 0x76, + 0xE7, 0x10, 0x22, 0x4A, 0xA9, 0xB1, 0x16, 0x46, 0x08, 0x43, 0x1C, 0x4D, 0xAA, 0xC5, 0x72, 0x5A, + 0x95, 0x79, 0xD7, 0xF5, 0x29, 0x10, 0x37, 0x19, 0x80, 0x7C, 0x08, 0xDA, 0xF9, 0xE0, 0x7D, 0xDB, + 0xB6, 0x77, 0xAB, 0xCD, 0x64, 0x32, 0xD1, 0xCA, 0xF6, 0xFD, 0xD0, 0x4B, 0x99, 0xA6, 0x67, 0x04, + 0x81, 0xBF, 0x17, 0x6D, 0x24, 0x0D, 0x98, 0xBF, 0x0F, 0x24, 0x06, 0xF7, 0x42, 0xF4, 0x22, 0x13, + 0x94, 0x33, 0xEF, 0x5C, 0x92, 0x89, 0xC4, 0x7B, 0xCF, 0x69, 0x6A, 0x33, 0x05, 0xA7, 0xC9, 0xEA, + 0x60, 0x6D, 0x92, 0xE9, 0xA1, 0x8C, 0xD1, 0x10, 0x93, 0xDB, 0x07, 0xC2, 0x08, 0x7C, 0x08, 0xD6, + 0x58, 0x21, 0x38, 0x26, 0xD8, 0xFB, 0x80, 0x11, 0x1E, 0x8D, 0x4A, 0x6B, 0x8C, 0xF5, 0x2E, 0x85, + 0x07, 0xA6, 0xF8, 0xD5, 0x54, 0x97, 0x95, 0x32, 0x18, 0xE3, 0x2C, 0xE3, 0x29, 0xDE, 0x25, 0x69, + 0xE1, 0xEE, 0xCD, 0x5E, 0x50, 0x08, 0x9E, 0xE7, 0x79, 0xB2, 0x6D, 0xA4, 0x56, 0x8E, 0x12, 0x9A, + 0x54, 0x26, 0x79, 0x96, 0x61, 0x0C, 0x5D, 0x08, 0xA9, 0x9E, 0xC2, 0xFF, 0xF1, 0x7F, 0xFA, 0x5F, + 0x7D, 0x80, 0x24, 0x0E, 0xFB, 0xDD, 0x5D, 0x96, 0x4F, 0x4A, 0xB8, 0x7E, 0xF9, 0xFA, 0x65, 0xB0, + 0x11, 0x63, 0xBA, 0x38, 0x3E, 0x2F, 0x8B, 0x5C, 0x9B, 0x1A, 0x12, 0xCC, 0x29, 0x1D, 0xE4, 0x3E, + 0x78, 0x00, 0x22, 0xC0, 0x10, 0xFA, 0xE0, 0x28, 0x23, 0xB7, 0xAB, 0x3A, 0x13, 0x8C, 0x32, 0xB6, + 0xAF, 0x9B, 0xE5, 0x6C, 0x66, 0x9C, 0xDD, 0x37, 0xAD, 0x10, 0xF0, 0x64, 0x39, 0x33, 0xC6, 0x82, + 0x18, 0x18, 0x65, 0x75, 0xAB, 0xB4, 0x85, 0xBB, 0x5D, 0x0F, 0x62, 0x2E, 0x72, 0xEA, 0x81, 0x69, + 0xFB, 0x20, 0x44, 0xE6, 0x43, 0x94, 0x6A, 0x10, 0x5C, 0x10, 0x4C, 0x18, 0xC3, 0x45, 0xC1, 0xFB, + 0x6E, 0xDB, 0x76, 0xE6, 0xE3, 0xA7, 0x0B, 0x6B, 0x6B, 0xAD, 0x95, 0xB1, 0x78, 0x94, 0x67, 0x45, + 0xC9, 0x08, 0x23, 0xD3, 0x62, 0x42, 0x71, 0x56, 0x14, 0xA3, 0xEB, 0xDB, 0x7A, 0x54, 0x08, 0xC2, + 0x00, 0x0C, 0x7E, 0xDB, 0xCA, 0x49, 0x95, 0xED, 0xB7, 0x2D, 0xE6, 0x78, 0x94, 0xF3, 0x5E, 0xE9, + 0xDE, 0x98, 0xD5, 0xBA, 0xDF, 0xD5, 0x52, 0x88, 0x62, 0x3F, 0xC0, 0x5F, 0xFD, 0xEA, 0xAF, 0x27, + 0x55, 0xF6, 0xDF, 0xFE, 0xE5, 0x2F, 0x21, 0x34, 0x10, 0x16, 0x93, 0xE5, 0x83, 0xFD, 0xE6, 0x7D, + 0x59, 0x10, 0x74, 0x88, 0x66, 0xC0, 0x55, 0x31, 0x61, 0x9C, 0x3A, 0x17, 0xDE, 0xBE, 0xB9, 0x42, + 0x30, 0x5C, 0xAE, 0x37, 0xED, 0x20, 0x19, 0xC9, 0x1E, 0x3F, 0x9C, 0x7B, 0x08, 0x76, 0xB5, 0xE4, + 0x94, 0xBF, 0xF8, 0xFE, 0xA6, 0xCC, 0xD9, 0x93, 0xF3, 0xA3, 0x10, 0x83, 0x87, 0xFE, 0xDD, 0xD5, + 0x45, 0x55, 0x8D, 0x41, 0x0C, 0x10, 0x86, 0x5E, 0xAA, 0xE8, 0xBD, 0xC8, 0x04, 0x44, 0xE4, 0xC1, + 0xD1, 0x94, 0x11, 0x62, 0x02, 0xB8, 0x5A, 0x6D, 0x82, 0x45, 0x8C, 0x8A, 0x2C, 0xA3, 0x79, 0xC6, + 0x40, 0x04, 0x08, 0x46, 0x0C, 0x91, 0x94, 0x4E, 0x6A, 0x53, 0x55, 0x85, 0x96, 0x32, 0xCF, 0x19, + 0x27, 0xF8, 0xEE, 0x6E, 0xCF, 0x0B, 0xB1, 0xDE, 0xB6, 0x01, 0x00, 0xCA, 0x30, 0x63, 0x84, 0x31, + 0x8A, 0x11, 0x2C, 0x05, 0x3F, 0x59, 0x4E, 0x8B, 0x8C, 0x0D, 0x83, 0x7C, 0x73, 0x71, 0xF1, 0xC3, + 0xE5, 0x75, 0x2E, 0xC8, 0x6C, 0x34, 0x51, 0x46, 0xFA, 0x60, 0x9C, 0x77, 0x39, 0x2F, 0x9C, 0xF5, + 0x18, 0xC3, 0x18, 0x90, 0x75, 0xF0, 0xF1, 0x83, 0x93, 0xA3, 0xC5, 0xC9, 0xAF, 0xBF, 0x7C, 0x71, + 0x7B, 0xB7, 0x79, 0x78, 0x76, 0xCA, 0x28, 0x8D, 0x31, 0x8C, 0xCA, 0xEC, 0xE4, 0x78, 0x22, 0x07, + 0x15, 0x82, 0x07, 0x04, 0x30, 0x44, 0x87, 0xC1, 0xDD, 0xAE, 0x37, 0x4A, 0x99, 0xC5, 0x6C, 0x7E, + 0x7E, 0xBE, 0xE8, 0x8D, 0x6E, 0x7A, 0xD9, 0xB6, 0xF6, 0xCB, 0xAF, 0x7F, 0x28, 0x8A, 0xD1, 0xD1, + 0x7C, 0x1E, 0x5C, 0x33, 0x99, 0x89, 0xC5, 0xAC, 0x58, 0x4E, 0xF2, 0xD1, 0x48, 0xB8, 0x00, 0x9D, + 0x03, 0x7D, 0xE3, 0xCA, 0x02, 0xF1, 0x0C, 0xDD, 0xDD, 0xED, 0x94, 0xB3, 0x20, 0x84, 0xD9, 0x74, + 0x64, 0xA4, 0xDB, 0xAE, 0x3B, 0x6D, 0x02, 0xC2, 0xB0, 0x9A, 0x64, 0x59, 0xCE, 0x04, 0xE3, 0xFD, + 0x60, 0xA5, 0xF3, 0xAB, 0xDB, 0x5D, 0x37, 0xD8, 0xE7, 0x8F, 0x4F, 0x8E, 0xC7, 0xE5, 0x6F, 0x7F, + 0xF7, 0xCD, 0x72, 0x36, 0x45, 0x34, 0xBE, 0xBF, 0xBE, 0xA1, 0x84, 0x3F, 0x7B, 0x7A, 0xAA, 0x8C, + 0xBD, 0x5E, 0xED, 0x3C, 0x44, 0x6D, 0x67, 0x12, 0xF0, 0xA3, 0x64, 0xF4, 0xE3, 0x8F, 0x4F, 0xB4, + 0xF7, 0x08, 0xC3, 0x00, 0x22, 0xC5, 0xF8, 0xEA, 0xFD, 0x6A, 0xB7, 0xEB, 0x21, 0xC2, 0x08, 0x63, + 0x1F, 0x41, 0xBD, 0x6F, 0x27, 0x93, 0xEA, 0xDD, 0xC5, 0x4A, 0x19, 0x57, 0x96, 0x39, 0x88, 0x20, + 0xE9, 0xB7, 0xF7, 0xFB, 0x8E, 0x52, 0x3A, 0x9B, 0x54, 0xA3, 0x8A, 0x0B, 0x8E, 0x36, 0xDB, 0xCD, + 0xCD, 0x7A, 0x45, 0x08, 0xA4, 0x84, 0x53, 0x44, 0xCB, 0x9C, 0x16, 0x59, 0xB5, 0xDB, 0x75, 0xB9, + 0xA0, 0xD6, 0x6B, 0x1F, 0x81, 0x10, 0xEC, 0xC1, 0xE9, 0xD1, 0x6C, 0xB1, 0x10, 0x2C, 0xE3, 0x04, + 0x4C, 0x73, 0xDC, 0xD4, 0x5D, 0x00, 0x58, 0xDB, 0x00, 0x10, 0xF0, 0x56, 0x46, 0xE8, 0x45, 0xC1, + 0xA5, 0x72, 0x22, 0x2F, 0x30, 0x80, 0xBD, 0xCD, 0x78, 0x7E, 0xF2, 0xF0, 0xC1, 0x91, 0xB6, 0x6E, + 0xB5, 0x6E, 0x56, 0x5B, 0x3D, 0xAF, 0xC4, 0x6A, 0x2F, 0x09, 0x81, 0xB3, 0x92, 0xEC, 0x5A, 0x0D, + 0x20, 0x72, 0x01, 0x30, 0x0C, 0x07, 0xE3, 0xDF, 0xAF, 0x3B, 0x8E, 0xE1, 0xB4, 0xA0, 0xDE, 0xC7, + 0xEB, 0x5D, 0x97, 0x0B, 0x72, 0x34, 0x1D, 0x0D, 0x52, 0x3D, 0xCE, 0x6A, 0x20, 0xE8, 0xA8, 0x9C, + 0x7C, 0xFD, 0xED, 0x9B, 0xB7, 0xD7, 0x77, 0xB3, 0xD9, 0x1C, 0x61, 0xCA, 0x39, 0x3A, 0x3A, 0xCE, + 0x37, 0x7B, 0x19, 0x62, 0x91, 0x89, 0xF2, 0xF5, 0x4A, 0x5B, 0x63, 0x63, 0x8C, 0x11, 0x00, 0x6D, + 0x1D, 0x67, 0xC4, 0x47, 0xE0, 0xAD, 0x83, 0xE8, 0xE0, 0xCB, 0x61, 0x94, 0xA6, 0x10, 0xCA, 0xD4, + 0xAA, 0xA0, 0x84, 0x01, 0x80, 0x10, 0x12, 0x3C, 0x9D, 0x54, 0x8B, 0xD9, 0x24, 0xCF, 0xB9, 0x36, + 0x8E, 0x11, 0x02, 0x10, 0xB2, 0xDE, 0xC5, 0x08, 0xFB, 0xBE, 0xDF, 0xEF, 0xEB, 0x10, 0x22, 0xC2, + 0x74, 0xB7, 0xAB, 0xBD, 0x73, 0x01, 0x80, 0x10, 0x01, 0x02, 0x00, 0x43, 0xE8, 0x41, 0xDA, 0xFA, + 0x25, 0x87, 0x76, 0x8A, 0xA1, 0x82, 0x00, 0x44, 0x84, 0x20, 0xC2, 0x58, 0x30, 0xC6, 0x29, 0xD5, + 0xCE, 0xFD, 0x98, 0xA6, 0x7A, 0x70, 0x0B, 0x20, 0x04, 0x21, 0x92, 0x2A, 0x49, 0x5E, 0x41, 0xBA, + 0xB7, 0xA6, 0x23, 0x03, 0x46, 0x80, 0x53, 0xD6, 0x0F, 0x03, 0x88, 0x31, 0xC1, 0x72, 0x31, 0x4E, + 0xB8, 0x1C, 0x94, 0xA4, 0xB6, 0xA3, 0x51, 0x89, 0x20, 0xB0, 0xD6, 0x28, 0xA9, 0x7D, 0x08, 0x8C, + 0x51, 0x42, 0x48, 0x72, 0x74, 0x25, 0x59, 0x3F, 0xE7, 0x3C, 0xD5, 0x29, 0x74, 0xEF, 0x19, 0x00, + 0x00, 0x58, 0x6B, 0x19, 0xA5, 0x94, 0x0B, 0x84, 0xF1, 0xD0, 0x77, 0xC3, 0x20, 0x01, 0x88, 0x20, + 0x02, 0x17, 0x22, 0x88, 0x20, 0xCF, 0x33, 0x6D, 0x0C, 0x63, 0x34, 0x86, 0xE0, 0xBC, 0x27, 0xBE, + 0xDF, 0x60, 0x5A, 0x58, 0xDB, 0x76, 0xF5, 0xF6, 0xEA, 0xFD, 0x65, 0x56, 0x90, 0xAC, 0x9A, 0x2E, + 0xA7, 0x05, 0x23, 0x78, 0xDD, 0xF8, 0x6F, 0x7E, 0xFF, 0x1D, 0xA7, 0xBE, 0xEF, 0xE4, 0x64, 0x36, + 0x67, 0x0C, 0x7E, 0xFF, 0xFD, 0xDB, 0x4F, 0x3F, 0x7C, 0x04, 0x20, 0xF2, 0x20, 0x56, 0x79, 0x78, + 0x78, 0x7E, 0x54, 0x56, 0x13, 0x39, 0xB4, 0x65, 0xC9, 0xA4, 0x85, 0xDA, 0x84, 0xA2, 0xAC, 0x9C, + 0x1B, 0x76, 0x8D, 0x72, 0xCE, 0x5A, 0x17, 0x33, 0x0E, 0x06, 0x0D, 0x0B, 0x4E, 0x9C, 0xF7, 0xC3, + 0xD0, 0x60, 0xCE, 0xA5, 0x45, 0xDB, 0x6D, 0x9F, 0x65, 0x46, 0x1B, 0x23, 0x32, 0x01, 0x33, 0xEC, + 0x23, 0x68, 0x9A, 0x8E, 0x10, 0x64, 0x3C, 0xB9, 0xBC, 0xBA, 0xA6, 0x20, 0xB4, 0x43, 0x7B, 0x7C, + 0x54, 0x9C, 0x2C, 0xC7, 0xBB, 0x5D, 0xED, 0x11, 0x1A, 0x47, 0xCA, 0x47, 0x59, 0x8C, 0xD4, 0xA8, + 0xD8, 0x75, 0x9A, 0x51, 0xB6, 0xBB, 0xDD, 0x6F, 0x76, 0xED, 0xC3, 0xF3, 0x69, 0x2F, 0x25, 0x84, + 0x78, 0xE8, 0xD5, 0xCB, 0x37, 0xEF, 0x95, 0xF1, 0xFD, 0xA0, 0x4A, 0xC1, 0x3F, 0x7D, 0xF2, 0x40, + 0x07, 0xFA, 0xFB, 0xFF, 0xF2, 0x65, 0x95, 0x8B, 0xC7, 0xA7, 0xD3, 0xB7, 0x57, 0x97, 0x11, 0x01, + 0x60, 0x6F, 0xA6, 0xF5, 0x40, 0xB2, 0xFC, 0x76, 0x75, 0x25, 0x18, 0x3E, 0x5B, 0x4C, 0x17, 0x8B, + 0xA3, 0xCD, 0xB6, 0xEB, 0x6E, 0x9A, 0x88, 0xA0, 0xB2, 0xA0, 0x28, 0xB2, 0x62, 0x32, 0xF3, 0xA8, + 0x1D, 0x89, 0xD2, 0x39, 0xAA, 0xBD, 0xC1, 0x18, 0xD7, 0xED, 0xD0, 0x19, 0x1D, 0x60, 0xD8, 0x34, + 0x8D, 0x8F, 0x21, 0xCB, 0xC5, 0x78, 0x3C, 0xD9, 0xEF, 0xFA, 0x18, 0x7D, 0x96, 0x73, 0x63, 0x3C, + 0x22, 0x08, 0x33, 0xE1, 0x9C, 0x7F, 0x77, 0xBD, 0xB5, 0xC6, 0x97, 0x65, 0x56, 0xEF, 0x9B, 0xB2, + 0x9C, 0xE4, 0x23, 0x6E, 0x7A, 0xB9, 0x53, 0xCA, 0x68, 0x4F, 0x29, 0xB6, 0x2E, 0x80, 0x88, 0xB2, + 0x9C, 0xD5, 0x7D, 0xBF, 0xBA, 0xDB, 0x5A, 0x6D, 0xAB, 0xAA, 0x04, 0x11, 0xF8, 0x56, 0x39, 0x00, + 0x9B, 0xAE, 0x2D, 0x8B, 0x8C, 0x52, 0x0C, 0x62, 0x14, 0x99, 0xE8, 0x7B, 0x7B, 0x71, 0xB5, 0x9A, + 0x4D, 0xCA, 0x27, 0x67, 0x27, 0x4F, 0x1E, 0x3C, 0x85, 0x40, 0xEC, 0xEB, 0xF5, 0x76, 0xD3, 0x52, + 0x46, 0xA4, 0x76, 0x08, 0x41, 0x5E, 0xE4, 0x0C, 0x19, 0x8C, 0x50, 0x3B, 0x58, 0xE3, 0x1D, 0xA1, + 0xEC, 0x76, 0xB5, 0x7D, 0x70, 0x94, 0x7F, 0xF4, 0x64, 0xBE, 0x98, 0xCD, 0x8B, 0xBC, 0xF0, 0x3E, + 0x58, 0xEB, 0x01, 0x08, 0xCE, 0x1A, 0x1F, 0xF1, 0xC9, 0xD1, 0x24, 0x13, 0x6C, 0xBB, 0xA9, 0x1F, + 0x3F, 0x9A, 0x32, 0xC1, 0xDB, 0x6E, 0x00, 0xD8, 0x3B, 0xEA, 0xE6, 0x02, 0x3F, 0x7F, 0xB6, 0x7C, + 0xFA, 0xE8, 0x58, 0x05, 0x98, 0xE7, 0x86, 0xF3, 0x05, 0xA2, 0x04, 0x82, 0x38, 0x29, 0x38, 0x02, + 0x51, 0xB6, 0x3D, 0xA0, 0xF8, 0xD5, 0xBB, 0x0B, 0xE7, 0xC1, 0x6C, 0x52, 0x46, 0xE7, 0x8C, 0xD7, + 0x93, 0x71, 0xF6, 0xFA, 0xC5, 0xED, 0x68, 0x5C, 0x1D, 0x9F, 0xCE, 0xB5, 0xB6, 0x79, 0x29, 0x94, + 0x54, 0xC6, 0x58, 0x6F, 0x43, 0xDD, 0x69, 0x69, 0xF4, 0x47, 0x1F, 0x9E, 0xDC, 0x6C, 0xFB, 0x77, + 0x37, 0xEB, 0xDD, 0x76, 0xFF, 0xD3, 0x2F, 0x9E, 0x1A, 0x65, 0x2E, 0x57, 0x77, 0x67, 0x67, 0x73, + 0x4E, 0x32, 0x63, 0xC2, 0x9B, 0x8B, 0xD5, 0xA6, 0xED, 0xA4, 0x32, 0x6D, 0xDB, 0x67, 0x5C, 0x60, + 0x4C, 0xFF, 0xF8, 0x4F, 0xFF, 0x24, 0x27, 0x61, 0xBD, 0xBA, 0x33, 0x31, 0x50, 0x86, 0x17, 0xB3, + 0xF2, 0x17, 0x3F, 0x7D, 0x1C, 0x3D, 0xDC, 0x6D, 0x07, 0xE3, 0x1C, 0x02, 0x18, 0x00, 0xD4, 0x4B, + 0xF3, 0xF8, 0x64, 0xF9, 0xD5, 0x77, 0xEF, 0x56, 0x75, 0x4F, 0x29, 0x35, 0xCE, 0xDA, 0xA6, 0x65, + 0x8C, 0x15, 0x19, 0xE5, 0x38, 0x8E, 0x32, 0x54, 0x95, 0xE2, 0xB3, 0x67, 0x5F, 0x40, 0x10, 0x6C, + 0x08, 0x83, 0x72, 0x46, 0xF9, 0x94, 0xFC, 0x52, 0xE6, 0xDB, 0x7F, 0xFC, 0xEA, 0xA5, 0xF3, 0x41, + 0x49, 0x6B, 0xBD, 0x6F, 0x3B, 0xFF, 0x29, 0xA4, 0x77, 0xAB, 0x6F, 0x21, 0xF0, 0x8F, 0x4E, 0x4F, + 0x8F, 0x97, 0xCB, 0x8C, 0xE7, 0x46, 0x35, 0x30, 0xD2, 0x41, 0x21, 0x42, 0x31, 0x8E, 0x99, 0xB7, + 0xED, 0xD0, 0x75, 0x52, 0x6B, 0x00, 0xC1, 0x3C, 0xB3, 0xB1, 0x0F, 0x7A, 0xD0, 0x58, 0x77, 0x67, + 0x93, 0x62, 0x31, 0xCE, 0xA7, 0x65, 0xCE, 0xC3, 0xBE, 0xAE, 0xAF, 0x66, 0x34, 0x32, 0x8A, 0xAB, + 0xBC, 0xF2, 0x20, 0xFB, 0xFE, 0x5A, 0x3D, 0x5E, 0x66, 0x67, 0x53, 0x81, 0x60, 0x90, 0xC6, 0xCC, + 0xC6, 0x82, 0x11, 0x02, 0x00, 0x5A, 0x16, 0xFE, 0xC3, 0xD3, 0x23, 0x91, 0x97, 0x3F, 0xBC, 0x5D, + 0x4D, 0xC6, 0x19, 0x21, 0x73, 0x6B, 0x62, 0x9E, 0x7B, 0x8A, 0xED, 0xFE, 0x76, 0x0B, 0x11, 0xFC, + 0xC9, 0x47, 0xCB, 0xBE, 0x87, 0xD0, 0xF9, 0x00, 0x62, 0x5E, 0x8E, 0xD7, 0x7B, 0xAF, 0x8C, 0x5B, + 0xEF, 0x7A, 0x41, 0x50, 0x60, 0xB8, 0x95, 0x16, 0x02, 0x90, 0x30, 0x73, 0x18, 0x63, 0xE7, 0x0C, + 0x22, 0xD8, 0x07, 0x1F, 0x03, 0x60, 0x98, 0x20, 0x8C, 0x22, 0x08, 0xF5, 0x76, 0x6F, 0x07, 0x79, + 0x7A, 0xBA, 0xAC, 0x26, 0x63, 0xE7, 0x7C, 0x0C, 0x01, 0x42, 0xA4, 0xB5, 0x36, 0xDA, 0x0C, 0x83, + 0x14, 0x3C, 0xDB, 0xED, 0x6A, 0xE3, 0xEC, 0xC1, 0x85, 0x16, 0x0F, 0x53, 0x2A, 0x48, 0xF1, 0x63, + 0x21, 0x26, 0x41, 0x49, 0xE2, 0x33, 0xA6, 0xC9, 0x31, 0x79, 0x9E, 0x1A, 0xD3, 0x87, 0x18, 0x18, + 0x65, 0xF0, 0x90, 0x9B, 0x95, 0x02, 0x56, 0x1C, 0x25, 0x24, 0x04, 0xEF, 0x03, 0x38, 0x80, 0xDA, + 0x11, 0x02, 0x30, 0x42, 0x08, 0x8D, 0x75, 0xCE, 0x0E, 0x82, 0x12, 0xA9, 0x8C, 0x0D, 0x16, 0x61, + 0x8C, 0x30, 0xF2, 0xDE, 0x11, 0x02, 0xF3, 0x3C, 0x53, 0x4A, 0x87, 0x54, 0x44, 0x21, 0xA2, 0x8C, + 0x02, 0x6B, 0x05, 0x17, 0x08, 0x23, 0x6B, 0x2D, 0x00, 0x20, 0xCB, 0x33, 0x8C, 0x50, 0x0A, 0x79, + 0xC8, 0xF3, 0x5C, 0x4A, 0x75, 0x7F, 0xF0, 0xC5, 0x08, 0x21, 0x17, 0x02, 0x0A, 0xEE, 0xFE, 0x8C, + 0x10, 0x11, 0x22, 0x8C, 0x73, 0xA5, 0x15, 0x88, 0x51, 0x0F, 0x03, 0x26, 0xC4, 0x6B, 0x03, 0x11, + 0x0A, 0xD6, 0xC3, 0xFF, 0xFD, 0x3F, 0xFE, 0xCF, 0xAB, 0xED, 0xB0, 0xAB, 0xF7, 0xCE, 0x9B, 0x22, + 0xCF, 0x10, 0x02, 0x0F, 0x1E, 0x9E, 0xDC, 0xDD, 0xDC, 0x6C, 0x36, 0xFB, 0xBA, 0xF5, 0x08, 0x44, + 0xE9, 0xA1, 0xE0, 0xB9, 0x8F, 0x10, 0x00, 0x85, 0x40, 0x3B, 0x5F, 0xCC, 0x82, 0x8B, 0x9D, 0x54, + 0xDA, 0xA8, 0xE5, 0xAC, 0xDC, 0xD6, 0x3D, 0x08, 0x00, 0x00, 0xDF, 0x0D, 0x76, 0xBD, 0x56, 0x93, + 0x49, 0xD9, 0xB6, 0xDD, 0xA8, 0x12, 0x3E, 0x18, 0xAD, 0xFD, 0xB8, 0xE4, 0xCA, 0x04, 0x4A, 0x10, + 0x44, 0xA8, 0x69, 0x34, 0x00, 0x60, 0x5B, 0x0F, 0xBB, 0x7A, 0x60, 0x04, 0x87, 0x08, 0x27, 0xD3, + 0xE9, 0xA8, 0x2A, 0x43, 0x08, 0x20, 0x82, 0x5C, 0xE0, 0x07, 0x67, 0xCB, 0xB6, 0x69, 0x67, 0x55, + 0xC9, 0xB3, 0x7C, 0x3E, 0xCB, 0xCA, 0x9C, 0xE6, 0x5C, 0x78, 0xEF, 0xDB, 0xB6, 0x43, 0x20, 0x16, + 0x79, 0xB9, 0xDA, 0x76, 0x5A, 0xBB, 0xB2, 0x2C, 0xDB, 0xA6, 0x63, 0x04, 0x07, 0x68, 0xEB, 0xAE, + 0x9B, 0x16, 0x23, 0xAD, 0xE5, 0xDB, 0x9B, 0x5B, 0xE7, 0xE3, 0xF1, 0x62, 0xFA, 0x60, 0xB9, 0x68, + 0x3B, 0xF9, 0xEE, 0x66, 0x7F, 0xD7, 0xF9, 0xED, 0xF6, 0xAE, 0xDD, 0xDE, 0x7E, 0xF0, 0xF4, 0x98, + 0x30, 0x94, 0x51, 0x3E, 0x9D, 0x2C, 0xDA, 0x41, 0x5D, 0xDF, 0xDC, 0x6A, 0xA3, 0x7E, 0xF9, 0xF9, + 0xC7, 0x82, 0xE7, 0x5A, 0x69, 0x2E, 0x8A, 0xF5, 0xBE, 0x1D, 0x64, 0x17, 0x82, 0x56, 0x2E, 0x00, + 0x80, 0x96, 0xE3, 0x79, 0xD7, 0x75, 0xBB, 0xB6, 0xC9, 0x32, 0x82, 0x31, 0x0A, 0x10, 0x6E, 0xB7, + 0x6D, 0x74, 0xE1, 0x27, 0x3F, 0x7D, 0xE6, 0xBD, 0xB7, 0xC6, 0x3A, 0x17, 0xBA, 0x41, 0x2A, 0x2D, + 0xEB, 0xBA, 0xC1, 0x18, 0x16, 0x55, 0x51, 0xE4, 0xB9, 0xEC, 0x8D, 0x96, 0x66, 0x3C, 0x2A, 0x10, + 0x0E, 0x10, 0x52, 0xA3, 0xDD, 0x6E, 0xDF, 0x12, 0xCA, 0x22, 0x80, 0xD6, 0xDA, 0x6A, 0x54, 0xE5, + 0xB9, 0xD8, 0x6F, 0x77, 0x22, 0xE3, 0x52, 0x19, 0x04, 0xE0, 0x64, 0x54, 0x44, 0x00, 0xDB, 0xB6, + 0xA7, 0x9C, 0xBD, 0x7A, 0x73, 0x21, 0x38, 0x3F, 0x3D, 0x5D, 0x58, 0x63, 0x36, 0xBB, 0xE6, 0xF4, + 0x68, 0x91, 0x31, 0x94, 0x09, 0x56, 0x66, 0x6C, 0x3E, 0x9D, 0xEF, 0xF6, 0xF2, 0x68, 0x96, 0xAD, + 0x37, 0xBB, 0x76, 0x18, 0xDA, 0x7E, 0x38, 0x3F, 0x3A, 0x1E, 0x55, 0xC5, 0xA8, 0x22, 0xA3, 0x51, + 0x7E, 0xB7, 0x6F, 0xBE, 0x7B, 0x75, 0x39, 0x1E, 0xE5, 0x1F, 0x3C, 0x3A, 0xA7, 0x84, 0x12, 0x4A, + 0xAB, 0xB2, 0x28, 0x84, 0x40, 0x11, 0xBD, 0x7E, 0x7B, 0xCD, 0xA8, 0x8F, 0xC8, 0x01, 0xC4, 0x05, + 0x63, 0x82, 0xD2, 0x7D, 0xDD, 0x8E, 0xC7, 0x79, 0x04, 0xE1, 0x2D, 0x31, 0xC6, 0xEF, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xCD, 0xDB, 0xF7, 0xC6, 0xFA, 0x72, 0x3C, 0x76, 0xD6, 0x4D, + 0x67, 0xC7, 0x4A, 0xEB, 0xC5, 0x14, 0xB5, 0xBA, 0xDF, 0xB5, 0xDA, 0x06, 0x30, 0x48, 0x83, 0x30, + 0xC9, 0x32, 0x4E, 0x09, 0xCE, 0x04, 0x75, 0xC6, 0x09, 0x00, 0x90, 0x8F, 0x2F, 0x7F, 0xB8, 0x59, + 0x6F, 0x5A, 0x91, 0x11, 0xE0, 0xC1, 0x67, 0x9F, 0x3F, 0xAE, 0x1B, 0xD9, 0x4B, 0x35, 0x9F, 0x97, + 0xED, 0x5E, 0x5E, 0x5C, 0xAD, 0x01, 0x44, 0x83, 0x34, 0xC1, 0xF9, 0xF3, 0xB3, 0x85, 0x8C, 0xFE, + 0xFC, 0x78, 0x81, 0x42, 0x98, 0x8D, 0xF3, 0x51, 0x29, 0x10, 0x46, 0x52, 0x45, 0x08, 0x71, 0x08, + 0x5E, 0x5B, 0xCB, 0x38, 0x5A, 0xED, 0xF6, 0x77, 0xB7, 0x3B, 0x10, 0xF1, 0x6C, 0x76, 0x34, 0xF4, + 0xF2, 0xE5, 0xAB, 0xD7, 0x08, 0xBA, 0xB2, 0xAA, 0x26, 0xA3, 0xEC, 0x5F, 0xFD, 0xC9, 0x87, 0xBD, + 0x34, 0x9B, 0xFD, 0x20, 0xA5, 0x25, 0x94, 0xC6, 0x10, 0xAD, 0xF5, 0x93, 0x69, 0x45, 0x31, 0x06, + 0x00, 0xB6, 0x52, 0xF7, 0xDA, 0x5C, 0x5F, 0xDF, 0x8D, 0x73, 0x0C, 0x20, 0x9A, 0x4F, 0xC7, 0x3E, + 0x58, 0xC6, 0x88, 0xE0, 0xD4, 0xB8, 0x78, 0xB7, 0x6E, 0x94, 0xF1, 0x00, 0xA1, 0x61, 0xD0, 0x14, + 0x33, 0xCE, 0x49, 0x55, 0x08, 0x2D, 0xCD, 0xDD, 0x66, 0xFB, 0x9B, 0x2F, 0xBF, 0x93, 0xDA, 0xFC, + 0xF3, 0x5F, 0x7E, 0xCE, 0x09, 0xA2, 0x04, 0xCD, 0x16, 0x55, 0x80, 0xAE, 0xEF, 0xBA, 0x49, 0x35, + 0x2D, 0x45, 0x21, 0x08, 0x8F, 0x31, 0x84, 0x88, 0x9C, 0x0D, 0x0E, 0x18, 0x82, 0x21, 0x40, 0x60, + 0x3C, 0x29, 0x18, 0x45, 0x75, 0x2D, 0x37, 0xAB, 0xC6, 0x33, 0x1C, 0x51, 0xA4, 0x84, 0x3E, 0x3E, + 0x5D, 0x76, 0xFB, 0x66, 0xD7, 0xF4, 0xC7, 0x27, 0x8B, 0xCD, 0x66, 0x3B, 0xAB, 0xCA, 0xC9, 0xAC, + 0x40, 0x98, 0x43, 0xC2, 0x80, 0x83, 0x4A, 0xB9, 0xF1, 0x78, 0xDC, 0x0F, 0x92, 0x22, 0x34, 0x19, + 0x95, 0x57, 0x37, 0x97, 0x10, 0x84, 0xBE, 0x1F, 0xB6, 0xBB, 0xBD, 0x0F, 0xC0, 0x7B, 0x38, 0x19, + 0x4F, 0xFB, 0xA1, 0x0F, 0xCE, 0xAC, 0xEB, 0xDD, 0xD3, 0xA7, 0x4F, 0x8A, 0x2C, 0xEF, 0xBB, 0x1E, + 0x47, 0x47, 0x28, 0x1B, 0xCF, 0x47, 0xDB, 0x0E, 0x78, 0x1D, 0x37, 0xB5, 0x15, 0x04, 0xAD, 0x15, + 0xE8, 0x0D, 0x68, 0x1A, 0xD5, 0x69, 0x77, 0x50, 0x9C, 0xC4, 0xE0, 0x43, 0x74, 0x3E, 0x44, 0x1F, + 0x29, 0xC2, 0x88, 0x00, 0x84, 0x10, 0x88, 0x30, 0x78, 0xCF, 0x28, 0x3D, 0x3E, 0x3B, 0x9A, 0x4D, + 0xC7, 0x21, 0x46, 0xEB, 0x43, 0x3F, 0xC8, 0xAE, 0xEB, 0xD7, 0xEB, 0x5D, 0xCA, 0x73, 0xF0, 0x20, + 0x02, 0x00, 0x7C, 0x08, 0x14, 0xA2, 0xE4, 0xB0, 0xF5, 0x07, 0x93, 0x00, 0x70, 0xDE, 0x13, 0x8C, + 0x12, 0x10, 0x18, 0xC4, 0x98, 0x65, 0x59, 0xDA, 0x79, 0x25, 0x32, 0x7A, 0x72, 0x0E, 0xA4, 0x7B, + 0x28, 0x44, 0x49, 0x79, 0x4B, 0xB4, 0xF1, 0xDD, 0xA0, 0x30, 0x46, 0x93, 0x82, 0x15, 0x9C, 0x00, + 0x94, 0x2C, 0x04, 0x16, 0x04, 0xCF, 0x09, 0xDE, 0x77, 0xCA, 0xC7, 0x43, 0x80, 0x58, 0x4A, 0xF0, + 0x4D, 0x37, 0xD3, 0x2C, 0x13, 0x65, 0x99, 0x19, 0x6D, 0xAC, 0x35, 0x29, 0xFD, 0xAF, 0x28, 0xB2, + 0x24, 0xF4, 0xE5, 0x9C, 0xA7, 0xBD, 0xBE, 0x77, 0x16, 0x53, 0x4A, 0x09, 0x55, 0x5A, 0x32, 0xC6, + 0xAA, 0xD1, 0xB8, 0x6D, 0x3B, 0x63, 0x4C, 0xF0, 0x0E, 0xC4, 0x10, 0x23, 0x48, 0x18, 0x32, 0x91, + 0xE7, 0xCE, 0x59, 0xEF, 0x1C, 0x3A, 0x10, 0x95, 0x00, 0x02, 0x28, 0xC4, 0x08, 0xFF, 0x97, 0xFF, + 0xE1, 0xDF, 0x15, 0x22, 0xEB, 0xDA, 0xDA, 0x5A, 0xF7, 0xD3, 0x8F, 0x1F, 0x42, 0x18, 0xAC, 0x07, + 0xEB, 0x4D, 0xED, 0xBC, 0xAD, 0x78, 0x55, 0xEF, 0x07, 0x8B, 0x8B, 0xD5, 0x00, 0x37, 0xAB, 0xCB, + 0x87, 0xE7, 0xB3, 0xAE, 0xAB, 0x31, 0x05, 0x30, 0xBA, 0x5E, 0x76, 0x9D, 0xF2, 0xDE, 0xF9, 0x57, + 0xAF, 0xEF, 0x3E, 0xFD, 0xF8, 0xA4, 0x6F, 0xBB, 0xAE, 0x73, 0x22, 0xCF, 0xD3, 0xB8, 0x1A, 0xEC, + 0x90, 0xE5, 0x24, 0x13, 0x0C, 0xC3, 0x58, 0x8E, 0x46, 0x4D, 0xD7, 0x01, 0xE0, 0x33, 0x91, 0xBD, + 0x7D, 0xBF, 0x5E, 0xAD, 0xDA, 0xF9, 0x62, 0xDE, 0xB7, 0xCA, 0x59, 0x53, 0xE6, 0x85, 0x72, 0xA1, + 0x28, 0xB2, 0xD3, 0xE5, 0xF8, 0x8F, 0x3E, 0x7D, 0x6A, 0x3D, 0x12, 0x39, 0x93, 0xCA, 0xD7, 0x8D, + 0x0E, 0x21, 0x18, 0x63, 0xB2, 0x9C, 0x5B, 0xA3, 0x19, 0x41, 0xD3, 0x11, 0x27, 0x8C, 0x18, 0x6B, + 0x28, 0x82, 0x39, 0xCB, 0x2F, 0x6F, 0x76, 0xAB, 0x6D, 0x2D, 0x72, 0xDC, 0x0D, 0x83, 0x37, 0xE1, + 0xFC, 0x64, 0x06, 0x00, 0xDC, 0x37, 0xDD, 0xF1, 0x7C, 0xEA, 0x83, 0x7B, 0xFB, 0x7E, 0x23, 0xF2, + 0x5C, 0x46, 0xFA, 0xFB, 0x3F, 0xFC, 0x3E, 0xA3, 0xF0, 0xD9, 0xA3, 0x85, 0x32, 0x6A, 0x36, 0x9D, + 0xAE, 0xB7, 0x7B, 0xA3, 0x1D, 0x46, 0xF4, 0xE8, 0x68, 0x36, 0x1F, 0x8F, 0xDF, 0xBD, 0xBF, 0x69, + 0x9A, 0x6E, 0x32, 0x1D, 0x53, 0x21, 0x9C, 0xD7, 0x82, 0xD3, 0x37, 0xEF, 0x57, 0x9B, 0x7D, 0x37, + 0x1D, 0x4D, 0x31, 0xF2, 0x01, 0x84, 0xD9, 0x78, 0x64, 0x9D, 0xF6, 0xC1, 0x51, 0x46, 0x07, 0x69, + 0x05, 0xE1, 0x22, 0x23, 0xD2, 0xF4, 0x31, 0x22, 0x63, 0x4C, 0x35, 0x2E, 0xB7, 0xBB, 0xFD, 0x68, + 0x54, 0xED, 0xB6, 0xB5, 0x92, 0xBA, 0x2A, 0x0B, 0x8A, 0x71, 0x55, 0x16, 0x56, 0x9B, 0xA6, 0xED, + 0x9B, 0x5E, 0x36, 0xBD, 0x12, 0x5C, 0x50, 0xC6, 0xAD, 0xD1, 0xB3, 0xD9, 0x58, 0x70, 0x96, 0xE7, + 0x99, 0x56, 0x3A, 0x99, 0x75, 0x65, 0x3F, 0x64, 0x99, 0x88, 0x10, 0x69, 0xAD, 0xEA, 0x56, 0x3A, + 0xE7, 0x8A, 0x9C, 0xC5, 0x18, 0x07, 0x29, 0xC7, 0xD5, 0x68, 0x36, 0xAB, 0x50, 0xF0, 0x8C, 0x60, + 0xC6, 0xD9, 0x20, 0xED, 0xB4, 0x1C, 0xCF, 0xA6, 0xD5, 0x7A, 0xBF, 0x26, 0x31, 0x0A, 0x26, 0x08, + 0x45, 0x8B, 0x45, 0xB6, 0xDF, 0x77, 0xD5, 0xB8, 0x02, 0x11, 0x84, 0x80, 0x8B, 0xA2, 0xF0, 0x11, + 0x48, 0xE5, 0xAF, 0xEF, 0xB6, 0x01, 0xC4, 0xA3, 0xC9, 0x64, 0x9C, 0x13, 0xE7, 0xD5, 0xFB, 0xEB, + 0xCD, 0x78, 0x54, 0x94, 0x05, 0x13, 0x9C, 0x31, 0x4A, 0xA7, 0x55, 0x51, 0xD7, 0x1D, 0x20, 0x31, + 0xCB, 0x59, 0xD7, 0x6B, 0x69, 0xA2, 0x76, 0xDC, 0xCB, 0xBB, 0xA1, 0x53, 0xBB, 0xBA, 0x0F, 0x38, + 0x9E, 0x3E, 0x39, 0xDD, 0xEE, 0xDA, 0xB6, 0x93, 0x2C, 0xCB, 0x11, 0x26, 0x55, 0xC1, 0x26, 0x15, + 0xAF, 0x72, 0x3E, 0xCE, 0xB2, 0xEB, 0x77, 0xB7, 0x4D, 0xD3, 0x2F, 0x8F, 0xA6, 0xC7, 0x27, 0xF3, + 0xAB, 0xAB, 0xF5, 0xA0, 0xAC, 0xB6, 0xEE, 0xEE, 0x7A, 0x43, 0x10, 0xA9, 0x07, 0xF5, 0xEC, 0xC9, + 0x93, 0x46, 0x1A, 0xAB, 0x2D, 0x8C, 0x91, 0x50, 0xFC, 0x8B, 0xCF, 0x3E, 0xB8, 0x5B, 0x6F, 0x09, + 0x8C, 0x59, 0x96, 0xFF, 0xF0, 0xF6, 0xBA, 0x28, 0x44, 0x96, 0xD1, 0xE3, 0xA3, 0xE9, 0x76, 0xDF, + 0x7A, 0xFF, 0xFF, 0xF1, 0xF4, 0x26, 0x4B, 0x97, 0x65, 0xE7, 0x79, 0xDE, 0xEA, 0xD7, 0xDA, 0xFD, + 0x3E, 0xFD, 0xDF, 0x66, 0xF3, 0x57, 0x56, 0x5F, 0x60, 0x15, 0x08, 0x90, 0x94, 0x44, 0x5B, 0x94, + 0xC2, 0x52, 0xC8, 0x23, 0x47, 0x28, 0x3C, 0xD3, 0xC0, 0xE1, 0x91, 0x07, 0x1E, 0x38, 0x7C, 0x05, + 0xBE, 0x28, 0x0F, 0x1C, 0xF6, 0xC8, 0xA6, 0x1D, 0xA2, 0x25, 0x8B, 0x00, 0x01, 0x02, 0x20, 0x50, + 0xC8, 0xCA, 0xCA, 0xFC, 0xFB, 0xD3, 0x9F, 0xDD, 0xAE, 0xBD, 0x57, 0xEF, 0x41, 0x32, 0x74, 0x0B, + 0xDF, 0xF4, 0x7B, 0x9E, 0xF7, 0xF9, 0xC7, 0x4F, 0xFF, 0x87, 0xBB, 0xED, 0x30, 0xBA, 0xA7, 0xCD, + 0xC1, 0x07, 0x7B, 0x36, 0x13, 0x21, 0xB0, 0x3F, 0xFF, 0xC9, 0x8D, 0x0B, 0xFA, 0x97, 0x7F, 0xF8, + 0x50, 0xB7, 0x43, 0xD3, 0x8C, 0x8C, 0xF2, 0x49, 0x11, 0x47, 0x42, 0x04, 0x04, 0x07, 0xA5, 0x93, + 0x38, 0x5E, 0xAD, 0xE6, 0x46, 0xEB, 0xD5, 0x54, 0x78, 0xEF, 0x1E, 0xD7, 0x6B, 0x11, 0x25, 0xDE, + 0x81, 0xB6, 0xEB, 0x02, 0x84, 0x5D, 0x3F, 0x36, 0xED, 0x40, 0x08, 0x0D, 0x3E, 0x10, 0x4A, 0x83, + 0x07, 0x21, 0x00, 0xC6, 0xF0, 0xA4, 0xC8, 0x63, 0x4E, 0xF7, 0x87, 0x9D, 0x07, 0x7A, 0x36, 0x9B, + 0x28, 0x63, 0xBD, 0x81, 0x3C, 0x66, 0x49, 0x19, 0x7B, 0xE3, 0x59, 0x00, 0x00, 0x40, 0xA3, 0x4C, + 0x2C, 0x18, 0xA1, 0x88, 0x61, 0xD4, 0x76, 0xB2, 0xAA, 0x07, 0x42, 0x05, 0xA1, 0xD8, 0x38, 0x75, + 0x3C, 0x1D, 0xD2, 0x38, 0xEB, 0x8C, 0x66, 0x9C, 0x21, 0x02, 0xCB, 0x2C, 0x5E, 0x95, 0xF9, 0xE5, + 0xD9, 0x52, 0x6A, 0xF5, 0xF8, 0xB4, 0x4F, 0xB2, 0x58, 0x2B, 0x35, 0x6A, 0x95, 0x16, 0x59, 0x70, + 0x2E, 0x63, 0x7C, 0x56, 0x2E, 0xD5, 0xA0, 0xAD, 0xB3, 0xBD, 0x1C, 0x4E, 0x4D, 0x9B, 0x08, 0xA6, + 0xF5, 0x78, 0xA8, 0xAA, 0xB2, 0x9C, 0x8D, 0xE3, 0xB8, 0xD9, 0xEC, 0xE3, 0x38, 0x8D, 0x39, 0x3B, + 0xB4, 0xC7, 0x00, 0xF8, 0xA1, 0x0E, 0xA3, 0xB6, 0xAB, 0x59, 0x96, 0x27, 0xE2, 0xC3, 0xED, 0x13, + 0x40, 0x20, 0x89, 0x05, 0x46, 0x78, 0x3E, 0x2F, 0xB3, 0x2C, 0xD1, 0x1A, 0x38, 0x07, 0x46, 0x0B, + 0xD7, 0x95, 0xC7, 0x98, 0x29, 0x07, 0x94, 0xB1, 0x10, 0x40, 0xEB, 0x5C, 0x16, 0x73, 0x08, 0xB1, + 0xF5, 0xC1, 0xAA, 0xCE, 0x38, 0x60, 0x02, 0x29, 0x33, 0x11, 0x27, 0x49, 0x92, 0x17, 0x84, 0x92, + 0xC3, 0xE1, 0x78, 0x38, 0xD4, 0xC6, 0x98, 0x44, 0xD0, 0x76, 0xD0, 0xE6, 0x63, 0x87, 0xE6, 0x63, + 0x2A, 0xE5, 0x23, 0xA0, 0x06, 0x01, 0x25, 0x84, 0x10, 0xA4, 0x94, 0x71, 0xE1, 0x1F, 0xFB, 0x71, + 0x94, 0x52, 0xC1, 0x79, 0x00, 0x80, 0x60, 0xFC, 0x9F, 0x47, 0x07, 0xFE, 0xF3, 0xA6, 0x53, 0x00, + 0x00, 0x05, 0x47, 0x08, 0x2E, 0xB9, 0x22, 0x24, 0x00, 0x0F, 0x32, 0xE6, 0x03, 0x50, 0xAD, 0x16, + 0xBD, 0x89, 0x61, 0x40, 0xBD, 0xD4, 0x1E, 0x00, 0xED, 0x5C, 0xC4, 0xC0, 0x34, 0xFD, 0x38, 0xCF, + 0x0B, 0x01, 0x80, 0xBD, 0x02, 0xCD, 0x80, 0x31, 0x26, 0x79, 0x9E, 0x20, 0x08, 0x3E, 0x4A, 0x44, + 0xD6, 0x58, 0xC6, 0x89, 0x10, 0x02, 0x42, 0xE4, 0x9D, 0xA3, 0x8C, 0x5A, 0x6B, 0x3F, 0xA2, 0xC8, + 0xDE, 0x79, 0x88, 0x90, 0xB1, 0x1F, 0xB7, 0x91, 0xB1, 0x77, 0xDE, 0xBB, 0x8F, 0x56, 0x86, 0x73, + 0xCE, 0x0D, 0x83, 0x56, 0xA3, 0x4E, 0x12, 0x11, 0xC7, 0x0C, 0x06, 0xAB, 0x6D, 0x80, 0x88, 0x76, + 0x9D, 0xC4, 0x08, 0xE1, 0x3F, 0xF9, 0xE6, 0xF3, 0x80, 0x80, 0xF5, 0xE6, 0x62, 0x31, 0xA9, 0x4E, + 0x87, 0xA6, 0x6B, 0xDA, 0xBA, 0x15, 0x49, 0xDC, 0xFB, 0xA0, 0x8D, 0x31, 0xD0, 0x31, 0xCE, 0x66, + 0x65, 0xF1, 0x72, 0x95, 0x08, 0x4A, 0x56, 0xCB, 0x45, 0x1C, 0x89, 0xBC, 0x48, 0x85, 0x10, 0xC1, + 0xFB, 0xC3, 0xFE, 0x44, 0x39, 0x27, 0x14, 0x22, 0x8C, 0x8B, 0x9C, 0x67, 0x99, 0xA8, 0x9B, 0x81, + 0x61, 0x20, 0x04, 0xC9, 0xF2, 0x54, 0x30, 0x64, 0x9C, 0x1B, 0x94, 0x21, 0x88, 0xAC, 0x37, 0xC7, + 0xCD, 0xBE, 0x09, 0x00, 0x24, 0x49, 0x34, 0xC8, 0x71, 0x39, 0xCB, 0x2E, 0xCE, 0x16, 0x67, 0xB3, + 0x72, 0x5A, 0xA4, 0x9F, 0xBE, 0xB8, 0x7C, 0x71, 0xB6, 0x6C, 0xDA, 0xE1, 0x79, 0x7B, 0xEC, 0x7A, + 0x69, 0xAD, 0xC9, 0x53, 0x1A, 0x80, 0xA9, 0xDB, 0x36, 0x8A, 0x99, 0xB1, 0xEE, 0xDD, 0xFB, 0x67, + 0x1F, 0xA0, 0x0D, 0xA1, 0x1F, 0x14, 0x22, 0x68, 0x73, 0xD8, 0x54, 0x5D, 0x73, 0x7E, 0x36, 0x7D, + 0xF3, 0xFA, 0x22, 0xCF, 0xD9, 0x34, 0x8F, 0x39, 0xA7, 0x51, 0xCC, 0x38, 0xA3, 0x5A, 0xE9, 0xE0, + 0x5D, 0x96, 0x45, 0x79, 0x16, 0x29, 0x35, 0x08, 0xCE, 0x3E, 0xBF, 0xB9, 0x2A, 0xB3, 0x24, 0x00, + 0xD0, 0xC9, 0xEE, 0x50, 0x57, 0x01, 0xC1, 0xD7, 0x57, 0x0B, 0xCE, 0x89, 0x52, 0x4E, 0x69, 0xAD, + 0x9D, 0xC3, 0x04, 0x63, 0x82, 0xEA, 0xB6, 0x8A, 0x22, 0x11, 0x20, 0x7D, 0xF7, 0xE1, 0x01, 0xA0, + 0x40, 0x31, 0x44, 0x04, 0x6D, 0xB6, 0x07, 0x29, 0xA5, 0x31, 0x16, 0x20, 0xB4, 0xDF, 0xD7, 0x87, + 0x63, 0x0B, 0x60, 0x38, 0x35, 0xAD, 0x1C, 0xF4, 0xA9, 0x6A, 0x21, 0x04, 0x8B, 0xE5, 0xDC, 0x07, + 0x28, 0xA5, 0xE9, 0x87, 0x91, 0x12, 0xC8, 0x30, 0x56, 0x83, 0x12, 0x9C, 0x3D, 0xEF, 0xAB, 0xE7, + 0x7D, 0x15, 0x31, 0x0E, 0x01, 0x50, 0xDA, 0xC8, 0x61, 0xD4, 0xDA, 0xAD, 0xD7, 0xC7, 0x88, 0xF3, + 0xAE, 0x97, 0xC3, 0xA8, 0xD4, 0xA8, 0xD7, 0xDB, 0x83, 0x31, 0x96, 0x32, 0xB6, 0xDD, 0x1F, 0xA7, + 0x65, 0x3C, 0x9D, 0x24, 0x75, 0xDD, 0x6D, 0xF6, 0x55, 0x00, 0xA1, 0xAE, 0xDB, 0xD3, 0xA9, 0x19, + 0x47, 0x43, 0x19, 0xC9, 0xF3, 0x98, 0x52, 0xE2, 0xAD, 0x1B, 0xC6, 0x31, 0x89, 0x39, 0xE7, 0x10, + 0x61, 0x40, 0x31, 0xC0, 0x18, 0xB6, 0x8D, 0x9C, 0xE4, 0xE9, 0xD9, 0x6C, 0x8A, 0x00, 0xD9, 0x1E, + 0x3A, 0x1E, 0x47, 0x83, 0x32, 0x71, 0xC4, 0x66, 0x65, 0xBC, 0xDB, 0xAD, 0x27, 0x79, 0x92, 0xA4, + 0x45, 0x1C, 0xA5, 0x69, 0x1E, 0x07, 0x04, 0x86, 0x71, 0x44, 0x14, 0x42, 0x02, 0x03, 0x85, 0xD6, + 0x1B, 0x08, 0x5C, 0x26, 0xF0, 0x74, 0xBE, 0xEA, 0x5B, 0xD0, 0x1C, 0x76, 0xBB, 0x43, 0x63, 0x3C, + 0x28, 0xF3, 0xC2, 0x07, 0xDF, 0x0F, 0xA3, 0xF7, 0xC0, 0x59, 0xA3, 0xB5, 0xD1, 0x72, 0x7C, 0x73, + 0xB1, 0x88, 0x63, 0x71, 0x6C, 0x46, 0x11, 0x45, 0xE7, 0xCB, 0x22, 0x2F, 0xA2, 0xEA, 0xD4, 0x34, + 0xA7, 0x2E, 0x8E, 0xC4, 0xDD, 0x87, 0xCD, 0xC7, 0x12, 0x0C, 0x23, 0x70, 0xB5, 0x98, 0xFC, 0xFE, + 0x87, 0xDB, 0xF3, 0x45, 0x5E, 0xA4, 0xA1, 0x48, 0xA9, 0xD2, 0xEA, 0xED, 0xFB, 0xC7, 0x2F, 0xDE, + 0xBC, 0xEA, 0x07, 0xFB, 0xE1, 0x61, 0x33, 0xCD, 0xA3, 0xAE, 0x97, 0xA7, 0xB6, 0xAF, 0x5A, 0x59, + 0x77, 0x83, 0xF5, 0xF0, 0xD4, 0x0C, 0x93, 0x32, 0x7B, 0xF7, 0xE3, 0x8F, 0xC7, 0xAA, 0xC9, 0x92, + 0x08, 0x23, 0xBF, 0xD9, 0xB7, 0x45, 0x11, 0x3F, 0xAE, 0xF7, 0xFD, 0xA8, 0x6C, 0xF0, 0x1F, 0xEE, + 0xD6, 0xC7, 0xBA, 0x9D, 0x4E, 0xA6, 0x52, 0x8E, 0x55, 0xDD, 0x61, 0x4C, 0x20, 0xC0, 0x75, 0xD3, + 0x8D, 0xC3, 0x70, 0xAC, 0xBA, 0xDF, 0xBE, 0xBD, 0x3F, 0xB6, 0xA3, 0x76, 0x00, 0x01, 0xA8, 0x8C, + 0x97, 0xA3, 0x1E, 0x95, 0x81, 0x18, 0x13, 0x4C, 0x3E, 0x36, 0x99, 0xE2, 0x28, 0xC2, 0x84, 0xF8, + 0x10, 0xBA, 0xAE, 0xC3, 0x84, 0xA6, 0x91, 0xB8, 0x79, 0x75, 0x9E, 0xA4, 0x3C, 0x8D, 0x85, 0xB1, + 0xC1, 0x5A, 0x57, 0x57, 0x7D, 0xDD, 0x0C, 0xDB, 0x5D, 0x3D, 0x2A, 0x03, 0x21, 0xD1, 0x06, 0xC4, + 0x51, 0xC4, 0x38, 0x9B, 0x94, 0x79, 0xC4, 0x45, 0x92, 0x88, 0x8F, 0x32, 0x50, 0x22, 0xA8, 0x56, + 0xC3, 0xA8, 0xC6, 0x32, 0xCD, 0xE6, 0x79, 0x66, 0x47, 0x07, 0x01, 0x7D, 0x78, 0xDA, 0xDF, 0xDE, + 0x6D, 0xDF, 0xBE, 0x7D, 0x7C, 0x5A, 0x57, 0x9B, 0x6D, 0xF3, 0xBC, 0x3E, 0xC8, 0x41, 0x13, 0x4C, + 0xE3, 0x34, 0xD2, 0x4E, 0x3F, 0x6D, 0xF7, 0x4F, 0x87, 0xE3, 0xC3, 0xF3, 0x4E, 0x2B, 0xCF, 0x45, + 0x3C, 0x2A, 0xA0, 0x34, 0xAC, 0x9B, 0x31, 0x80, 0xD0, 0x74, 0xB2, 0xC8, 0xA2, 0xE5, 0x7C, 0xBA, + 0x9A, 0xCD, 0x1E, 0x37, 0xFB, 0x34, 0x4B, 0x8E, 0x55, 0xDD, 0x76, 0xB2, 0xE9, 0x3B, 0xA9, 0x07, + 0x00, 0xBD, 0x1A, 0xAD, 0x36, 0x6E, 0xBD, 0x3D, 0x3E, 0xAF, 0xB7, 0x75, 0x5D, 0x6D, 0x77, 0xBB, + 0x3C, 0x86, 0xAF, 0x57, 0xE2, 0x7A, 0x9E, 0xCC, 0x8A, 0x28, 0x8B, 0xA0, 0x20, 0x36, 0x63, 0x7D, + 0x91, 0x38, 0x4A, 0x8C, 0x20, 0x88, 0x04, 0x5D, 0xA4, 0x29, 0xC2, 0x54, 0x10, 0x20, 0xE5, 0xD0, + 0xB4, 0x7D, 0x70, 0xD6, 0x2A, 0xAD, 0x95, 0xF6, 0x21, 0x20, 0x04, 0xEB, 0x41, 0x79, 0xEF, 0x39, + 0xA5, 0x18, 0x42, 0x4A, 0x08, 0xC5, 0x88, 0x52, 0x22, 0x28, 0xA5, 0x04, 0x07, 0x1F, 0xDC, 0x3F, + 0x36, 0xB4, 0x7C, 0x00, 0x30, 0x12, 0x82, 0x62, 0xFC, 0x31, 0xD3, 0xFB, 0xD1, 0x1B, 0x67, 0x94, + 0x7E, 0x44, 0x85, 0x29, 0x26, 0x11, 0x0E, 0xDA, 0xFA, 0x65, 0x6C, 0x63, 0xFB, 0xDC, 0xD5, 0x1B, + 0xE2, 0xE5, 0xA9, 0x3E, 0xAC, 0xB7, 0x3B, 0x37, 0x36, 0x45, 0x0A, 0x38, 0x26, 0x00, 0x50, 0x88, + 0x91, 0x73, 0x6E, 0xC9, 0x5B, 0xB9, 0x7B, 0x7F, 0xDC, 0x3F, 0x3B, 0x53, 0xC9, 0xFE, 0x40, 0x42, + 0x1F, 0x0B, 0x06, 0x49, 0xDC, 0xF5, 0xC3, 0xC7, 0xD0, 0x17, 0x0C, 0x9A, 0xA0, 0x10, 0x02, 0x34, + 0x46, 0x07, 0x48, 0x30, 0x21, 0x3E, 0x00, 0x8C, 0xA0, 0x36, 0xCE, 0x18, 0xF3, 0x91, 0xEC, 0x1F, + 0x95, 0x82, 0xFF, 0xB8, 0x85, 0x62, 0xAD, 0x36, 0x10, 0x04, 0x84, 0x21, 0x67, 0x1C, 0x13, 0x98, + 0xA6, 0x09, 0x41, 0x3E, 0x78, 0x03, 0x20, 0x87, 0x08, 0x7F, 0xE4, 0x53, 0x84, 0xE0, 0xF0, 0x7F, + 0xF8, 0xEF, 0xFE, 0x5B, 0xE5, 0x8D, 0x52, 0xC3, 0x24, 0x8B, 0x47, 0x25, 0x47, 0x63, 0x01, 0xC0, + 0xBD, 0xF6, 0xEB, 0xFD, 0x71, 0x31, 0x9B, 0x86, 0xE0, 0x09, 0xC6, 0x99, 0x38, 0x63, 0xAE, 0xE5, + 0x04, 0xDA, 0xE0, 0x21, 0x05, 0x52, 0x39, 0x6D, 0x6D, 0xC4, 0x99, 0x1E, 0xC7, 0xFB, 0xA7, 0xDD, + 0x6C, 0x9A, 0x47, 0x82, 0x61, 0xE8, 0x29, 0xA3, 0x20, 0x20, 0x35, 0x1A, 0x44, 0x10, 0x44, 0x50, + 0xCA, 0x0E, 0x42, 0x22, 0x84, 0x30, 0xD6, 0x57, 0x75, 0x0B, 0x20, 0x40, 0xD0, 0x77, 0xFD, 0x98, + 0x25, 0x62, 0x3E, 0x9B, 0xCC, 0xF2, 0x92, 0x40, 0xE2, 0xAC, 0x33, 0xC6, 0x37, 0xED, 0x50, 0x77, + 0x7D, 0x08, 0xFE, 0x6C, 0x35, 0x59, 0x2E, 0x52, 0x1F, 0x3C, 0x20, 0x1F, 0x61, 0x44, 0x68, 0x6D, + 0xF0, 0x21, 0xEC, 0x76, 0xDD, 0xFE, 0xD8, 0x45, 0x31, 0x8F, 0x22, 0xDF, 0xB5, 0x1B, 0x84, 0xD8, + 0xCB, 0x8B, 0xCB, 0x24, 0x4E, 0x76, 0xFB, 0xE3, 0x20, 0xA5, 0x31, 0x76, 0x3A, 0x9F, 0xF4, 0xBD, + 0x9C, 0x97, 0xF9, 0x72, 0x31, 0x35, 0xDA, 0x20, 0x4C, 0xBC, 0x07, 0x83, 0x1C, 0xD5, 0xA8, 0x37, + 0xBB, 0x63, 0xD3, 0xB4, 0xBB, 0xBA, 0xE1, 0x22, 0x9D, 0xCF, 0x26, 0x7D, 0xDF, 0x63, 0x84, 0x05, + 0xE7, 0x00, 0x06, 0x6B, 0x83, 0xB5, 0xCA, 0xD8, 0x71, 0x34, 0xA3, 0x1C, 0x4C, 0x2B, 0xFD, 0xF3, + 0xE6, 0xD4, 0xB6, 0xCD, 0x24, 0x4F, 0x30, 0x82, 0x93, 0x32, 0xD9, 0x9F, 0xBA, 0x38, 0x12, 0x4A, + 0x6B, 0x6D, 0xA0, 0x52, 0x2A, 0x89, 0x28, 0x8F, 0x84, 0x73, 0xBE, 0xEB, 0xDB, 0x24, 0x89, 0xB2, + 0x38, 0x36, 0xD6, 0x31, 0x4E, 0x5E, 0x5D, 0xCD, 0xBE, 0xBA, 0xB9, 0x2C, 0xB3, 0x54, 0x8E, 0x36, + 0xCB, 0xB2, 0xBF, 0xFD, 0xD5, 0xF7, 0xFF, 0xEF, 0x2F, 0xFF, 0x58, 0xE6, 0x99, 0xEC, 0x3A, 0xCE, + 0x71, 0x59, 0x64, 0x67, 0xCB, 0xD2, 0x07, 0x03, 0x3C, 0x22, 0x94, 0x6C, 0xF6, 0xD5, 0xFB, 0xDB, + 0xCD, 0xAC, 0x2C, 0x8B, 0x32, 0xFE, 0xE6, 0xEB, 0xEB, 0xFD, 0xFE, 0xF4, 0xC9, 0xEB, 0x15, 0x46, + 0x64, 0x7B, 0xE8, 0x5C, 0xF0, 0x83, 0x1C, 0x9D, 0xF1, 0x08, 0xC1, 0xE3, 0xB1, 0x93, 0xFD, 0x38, + 0x9D, 0xA4, 0x2C, 0xE2, 0x4D, 0xDB, 0x51, 0xCC, 0xCE, 0x57, 0xB3, 0x58, 0x90, 0xAE, 0x6B, 0x04, + 0xA3, 0xAF, 0x5F, 0x5E, 0xE7, 0x91, 0x18, 0x07, 0xA9, 0x94, 0x69, 0x3B, 0x87, 0x18, 0x6F, 0x47, + 0x23, 0x47, 0x17, 0xC7, 0x8C, 0x11, 0xD3, 0xF7, 0x43, 0x99, 0xAF, 0xAA, 0xBA, 0x7B, 0x77, 0x7B, + 0xCF, 0x39, 0x2C, 0x4A, 0x36, 0x9B, 0xA7, 0x08, 0x84, 0xFB, 0xDB, 0x0D, 0x0E, 0xE0, 0x9B, 0x2F, + 0x5F, 0x72, 0x46, 0xA1, 0x83, 0x12, 0x2D, 0x7E, 0xFB, 0xF7, 0xFF, 0x00, 0xBD, 0xD2, 0x7A, 0xA8, + 0x3B, 0xD9, 0x49, 0x95, 0xC4, 0xBC, 0x57, 0x03, 0x22, 0x98, 0x73, 0xE6, 0x82, 0xFF, 0xF4, 0xD5, + 0xD5, 0x3C, 0x9B, 0xFC, 0x70, 0xBB, 0xA6, 0x11, 0x9E, 0xCE, 0xB2, 0x69, 0xCE, 0x13, 0x41, 0xAA, + 0xC3, 0xDE, 0xE8, 0x90, 0xC4, 0xF9, 0x20, 0xC7, 0x38, 0xE1, 0xDE, 0xD9, 0x3C, 0x8F, 0x9D, 0x0E, + 0x52, 0x5B, 0xA5, 0xDA, 0x61, 0xEC, 0x23, 0x11, 0xBB, 0x00, 0xD3, 0x74, 0xB9, 0xDD, 0x56, 0xFD, + 0xA0, 0x39, 0x23, 0x89, 0x20, 0x84, 0xF1, 0xA7, 0x43, 0xD5, 0xCB, 0xE1, 0xF5, 0xD5, 0x4A, 0xD9, + 0xF0, 0xB8, 0x3E, 0x4E, 0xF2, 0x38, 0x4D, 0xE8, 0x87, 0x0F, 0x4F, 0x7D, 0x2B, 0xCF, 0x96, 0xD9, + 0xF9, 0xE5, 0xA2, 0xCC, 0xE3, 0xCD, 0xB6, 0x56, 0x4A, 0xBF, 0xBD, 0x7B, 0xFE, 0xE3, 0xED, 0x61, + 0x90, 0xB2, 0xCC, 0xF3, 0x4F, 0x5E, 0x5E, 0xFC, 0xE1, 0xED, 0x8F, 0x82, 0x8B, 0x57, 0xD7, 0x97, + 0x6D, 0xDB, 0xBC, 0xBA, 0xBE, 0xE8, 0x07, 0x59, 0xF5, 0x5D, 0x9A, 0x24, 0x04, 0xC1, 0x51, 0x0E, + 0x69, 0x96, 0x9F, 0xAA, 0x7A, 0x18, 0xC7, 0x28, 0x89, 0xBC, 0x0F, 0x82, 0x73, 0x08, 0xA0, 0x35, + 0x56, 0x44, 0x62, 0x18, 0x47, 0x4A, 0x70, 0x99, 0x67, 0xC0, 0xFB, 0x2C, 0x15, 0x01, 0xFA, 0x3F, + 0xBC, 0xBD, 0x3F, 0x5B, 0x4D, 0xE7, 0x93, 0xAC, 0x28, 0xF3, 0xB6, 0x92, 0xC1, 0x78, 0x67, 0xB5, + 0xB6, 0x61, 0x32, 0x99, 0xDD, 0x3E, 0x6E, 0x11, 0x41, 0x8C, 0xA1, 0x58, 0x50, 0xA5, 0xF4, 0xEE, + 0x70, 0xFA, 0xEC, 0xF3, 0xAB, 0x2C, 0x13, 0xCE, 0x58, 0x0A, 0xB1, 0x56, 0x76, 0xB3, 0x3E, 0xF5, + 0xA3, 0x25, 0x94, 0xE9, 0x41, 0x21, 0x14, 0xEE, 0x9E, 0x9E, 0x3D, 0x46, 0x84, 0xA0, 0x9F, 0xFD, + 0xEC, 0x53, 0xCE, 0xB9, 0xA0, 0xCC, 0x58, 0xD7, 0xF7, 0x63, 0x91, 0x27, 0x84, 0x11, 0x6B, 0x1D, + 0x08, 0x10, 0x23, 0xE4, 0x03, 0x50, 0x83, 0x3A, 0x9D, 0xDA, 0xAA, 0x92, 0x9C, 0xB1, 0xCF, 0x3E, + 0x39, 0x4F, 0xD3, 0x28, 0x78, 0x2F, 0xC7, 0x51, 0x19, 0x1D, 0x02, 0xDA, 0x1E, 0xAA, 0xA6, 0xED, + 0x8A, 0x49, 0xEE, 0x3C, 0x90, 0xF5, 0xF0, 0xFA, 0xFA, 0xBC, 0x69, 0xDA, 0xAE, 0x6B, 0xE3, 0x58, + 0xB4, 0xED, 0x48, 0x48, 0x38, 0x5B, 0x64, 0x2F, 0xAF, 0xAE, 0x3A, 0x39, 0x4A, 0xE5, 0xB4, 0x0D, + 0xBF, 0xFE, 0xDD, 0xF7, 0xC3, 0x68, 0xFA, 0xB1, 0xBF, 0xBA, 0xBC, 0x7C, 0xF5, 0xE2, 0x6B, 0xC1, + 0xE2, 0x3C, 0x21, 0x52, 0x8E, 0x00, 0xD1, 0x38, 0xCB, 0x29, 0x41, 0xBD, 0xD4, 0x0F, 0xBB, 0xAE, + 0x6D, 0xBB, 0x56, 0x0E, 0x0A, 0x30, 0x8C, 0x49, 0x44, 0x7C, 0x16, 0xC7, 0xDA, 0x58, 0x8A, 0xA0, + 0x10, 0x54, 0x1B, 0x0B, 0x11, 0x62, 0x8C, 0x1D, 0x1A, 0xB9, 0xAD, 0x3A, 0x6D, 0x5D, 0x1E, 0x8B, + 0x00, 0xE0, 0xC7, 0xA9, 0x45, 0xEF, 0x1C, 0xC4, 0x84, 0x52, 0xE2, 0x3D, 0x30, 0x6A, 0x5C, 0x4C, + 0x32, 0x4E, 0xD0, 0x38, 0x0E, 0x08, 0xB9, 0x05, 0xEF, 0x7F, 0xF3, 0xBB, 0x5F, 0x2B, 0xE3, 0xF3, + 0x2C, 0x01, 0x08, 0x0C, 0xDA, 0x12, 0x4C, 0x21, 0x08, 0xD6, 0xD9, 0xE5, 0xF9, 0x37, 0x1E, 0xA5, + 0x2C, 0x48, 0x33, 0x1C, 0x1F, 0x1E, 0xEE, 0x94, 0x73, 0x8B, 0xB3, 0xF2, 0x70, 0xAC, 0x19, 0x25, + 0xD3, 0x32, 0x8B, 0xF2, 0xAB, 0x6C, 0xF2, 0x7A, 0xD4, 0x1A, 0x43, 0xDF, 0x1C, 0x1F, 0x09, 0xCF, + 0x18, 0xF6, 0x45, 0x12, 0x46, 0x1B, 0x9C, 0x77, 0x30, 0x00, 0x4A, 0x79, 0x3D, 0xD0, 0x46, 0x9A, + 0x58, 0xB0, 0x51, 0x1B, 0xE7, 0x3D, 0x25, 0x14, 0xF8, 0x40, 0x31, 0x54, 0xDA, 0xE6, 0x69, 0x64, + 0x8C, 0x8E, 0x38, 0x81, 0x98, 0x6A, 0x07, 0xED, 0x50, 0x19, 0x3B, 0x7A, 0x94, 0x32, 0x4A, 0x80, + 0x0F, 0x52, 0x9B, 0x28, 0x8A, 0xE0, 0xBF, 0xFD, 0xB7, 0xFF, 0xA6, 0xED, 0x07, 0x04, 0xBD, 0x35, + 0x23, 0x61, 0xF4, 0xC3, 0xFD, 0x73, 0x08, 0x80, 0x31, 0xDE, 0x77, 0x5D, 0x14, 0xC7, 0x09, 0x67, + 0x11, 0x67, 0x71, 0x7A, 0x2E, 0x90, 0x62, 0x0C, 0x41, 0x10, 0x10, 0x25, 0x9D, 0xD4, 0x1E, 0xF8, + 0x2C, 0x89, 0xCE, 0xE7, 0x65, 0xC4, 0x89, 0x37, 0x61, 0x1C, 0x0D, 0xA5, 0x08, 0x04, 0xF7, 0xE1, + 0x6E, 0xC7, 0x38, 0x17, 0x82, 0x64, 0x69, 0x2C, 0x07, 0x67, 0x9D, 0xC5, 0x08, 0x6A, 0xE7, 0x06, + 0xA9, 0x8C, 0xB7, 0xCE, 0x99, 0xA2, 0xC8, 0x9A, 0xAE, 0x4D, 0x85, 0xD8, 0xEC, 0x8E, 0x45, 0x9C, + 0x2E, 0xCA, 0x12, 0x11, 0x1A, 0x09, 0xF1, 0xC3, 0xFB, 0x87, 0xB2, 0x48, 0x16, 0xF3, 0x6C, 0x90, + 0xA3, 0x76, 0x76, 0x18, 0x75, 0x2F, 0x47, 0x00, 0x91, 0x75, 0x7E, 0xB5, 0x28, 0x39, 0xA7, 0x5A, + 0xF9, 0x0F, 0xF7, 0x7B, 0xA5, 0x0D, 0x02, 0xA3, 0x1A, 0x87, 0x2C, 0xCF, 0x39, 0x67, 0x59, 0x12, + 0x89, 0x88, 0x00, 0x08, 0xE7, 0xAB, 0xB9, 0x51, 0x9A, 0x53, 0x0C, 0x03, 0x30, 0xCE, 0x0F, 0x83, + 0x72, 0xC6, 0x23, 0x8C, 0x38, 0x44, 0x93, 0x22, 0x35, 0x56, 0x0F, 0x63, 0xD8, 0x9F, 0x7A, 0x08, + 0x11, 0x8F, 0xC8, 0x74, 0x99, 0x69, 0xA3, 0xA8, 0xA0, 0x9C, 0xF1, 0xF5, 0xE3, 0x6E, 0x50, 0xF2, + 0xF9, 0x79, 0x57, 0xD7, 0xBD, 0xB6, 0x76, 0x77, 0x18, 0x4E, 0xA7, 0x7E, 0x39, 0x2F, 0xCE, 0x26, + 0x31, 0xC2, 0xFE, 0x0F, 0x3F, 0x3E, 0x43, 0x84, 0x94, 0x32, 0x94, 0x90, 0x34, 0x89, 0xB6, 0xFB, + 0x26, 0xCB, 0x13, 0x35, 0x2A, 0x84, 0x01, 0x65, 0x84, 0x22, 0xCA, 0x44, 0xF4, 0xF3, 0x9F, 0xBC, + 0xFE, 0xF6, 0xD3, 0x2B, 0x6D, 0x5D, 0xD3, 0x0F, 0xA3, 0xF1, 0x18, 0x63, 0x04, 0x11, 0xA6, 0x28, + 0x4F, 0x44, 0x77, 0x38, 0x06, 0x67, 0xA3, 0x38, 0x3E, 0x36, 0x15, 0xC2, 0x10, 0x04, 0xC8, 0x04, + 0x77, 0xDE, 0xEF, 0xD6, 0xD5, 0x72, 0x39, 0x3D, 0x3F, 0x9F, 0x75, 0xAD, 0xD4, 0xCE, 0x4A, 0xA9, + 0xBB, 0x6E, 0x0C, 0x00, 0x88, 0x48, 0x20, 0x08, 0x97, 0x8B, 0x3C, 0x4B, 0xC5, 0xA8, 0x4C, 0x55, + 0xC9, 0xDD, 0xB1, 0x76, 0x2E, 0x18, 0xE7, 0x0F, 0x4D, 0xB7, 0x9C, 0xCD, 0x31, 0x70, 0x0C, 0x81, + 0x44, 0xF0, 0x17, 0x97, 0x67, 0x79, 0xC4, 0x87, 0x41, 0x05, 0x1F, 0x08, 0x66, 0x84, 0xB1, 0x5E, + 0x8E, 0xB5, 0x54, 0x00, 0x82, 0xB3, 0x55, 0x01, 0x10, 0x7B, 0xDE, 0x54, 0xEB, 0xCD, 0xF3, 0xDD, + 0xDD, 0xE3, 0xE7, 0x6F, 0xCE, 0x31, 0x42, 0xDB, 0xFD, 0xE9, 0x69, 0xB3, 0x07, 0x16, 0xBE, 0x7E, + 0x71, 0x7E, 0xBE, 0x9A, 0x55, 0x95, 0x44, 0x54, 0xC0, 0xE2, 0xEA, 0x6F, 0xFE, 0xFA, 0xFF, 0x18, + 0xC6, 0x61, 0x18, 0x95, 0x1C, 0x86, 0x7E, 0x18, 0x63, 0xCE, 0x13, 0xC1, 0x85, 0x60, 0x75, 0xDB, + 0xBD, 0x7A, 0xB9, 0xFA, 0xC9, 0x97, 0x5F, 0x10, 0x2C, 0x3E, 0x3C, 0x6C, 0x10, 0x06, 0x10, 0xF8, + 0xBC, 0x4C, 0xE6, 0x93, 0x48, 0x10, 0x40, 0x39, 0x62, 0x3C, 0xEE, 0x8E, 0xBD, 0xB1, 0x0A, 0x01, + 0x47, 0x18, 0x6D, 0x6B, 0x19, 0x67, 0x02, 0x78, 0x9F, 0xA4, 0x59, 0x1A, 0x73, 0x00, 0xE9, 0xED, + 0xDD, 0xEE, 0xFE, 0xEE, 0x99, 0x47, 0x11, 0xA3, 0x78, 0x31, 0x2B, 0xA7, 0xCB, 0xE5, 0xFF, 0xF3, + 0x9F, 0x7E, 0xF3, 0x93, 0xCF, 0x6F, 0xF4, 0xA8, 0x4E, 0xBD, 0xC6, 0x18, 0x9D, 0x4E, 0xD5, 0xA4, + 0xCC, 0x38, 0x85, 0x20, 0xD8, 0xBC, 0xC8, 0x7A, 0x39, 0xA6, 0x89, 0x40, 0x00, 0x1C, 0xF7, 0xB5, + 0x23, 0xEC, 0x3F, 0xFC, 0xDD, 0xEF, 0x8D, 0x75, 0xB2, 0x1F, 0x97, 0xB3, 0x62, 0xB3, 0x3F, 0x71, + 0x4A, 0x62, 0x21, 0xBC, 0xB3, 0xDF, 0x7C, 0xF1, 0x29, 0xC2, 0x68, 0xBD, 0x3F, 0xCA, 0x61, 0xC8, + 0xB3, 0x58, 0x76, 0x12, 0x20, 0x32, 0x8C, 0x43, 0x1C, 0x89, 0x71, 0x1C, 0x99, 0x10, 0x9C, 0x52, + 0x3D, 0xEA, 0x61, 0x1C, 0x93, 0x24, 0x06, 0x10, 0x02, 0x10, 0x9C, 0xB5, 0x91, 0xE0, 0x45, 0x96, + 0x44, 0x82, 0x57, 0x4D, 0xFF, 0xC7, 0xF7, 0xF7, 0xE7, 0x67, 0xB3, 0xC5, 0x24, 0xCF, 0x04, 0xDB, + 0x6D, 0x4E, 0x49, 0x12, 0x5D, 0x5E, 0xAC, 0x10, 0x66, 0xC6, 0x5A, 0x2E, 0x68, 0x08, 0xD0, 0x78, + 0x87, 0x60, 0xB8, 0xBB, 0x7F, 0x2E, 0xCB, 0x2C, 0x89, 0x88, 0xD2, 0xCE, 0x59, 0x7B, 0xB1, 0x9A, + 0xB4, 0x9D, 0xEC, 0xA4, 0x8E, 0x05, 0x1B, 0x46, 0x73, 0xB1, 0x98, 0x3C, 0x3C, 0x6F, 0x44, 0xC4, + 0x10, 0x41, 0xD3, 0xD5, 0x44, 0x8F, 0xE6, 0x69, 0x7D, 0x34, 0xD6, 0xF7, 0x83, 0x72, 0xD6, 0x15, + 0x45, 0xE6, 0x21, 0xC8, 0xD3, 0x88, 0x53, 0x0A, 0x21, 0x98, 0x4D, 0x53, 0xAD, 0xB5, 0xE9, 0xF4, + 0xD0, 0x29, 0xA9, 0xBC, 0xB6, 0xEA, 0x69, 0xBD, 0xA3, 0x14, 0x5F, 0x5F, 0x2E, 0xC6, 0xD1, 0x6C, + 0x0E, 0x95, 0x32, 0x16, 0x00, 0xAC, 0x4D, 0xC8, 0x12, 0x11, 0x45, 0xAC, 0xA9, 0xFB, 0xF9, 0x24, + 0x27, 0x18, 0x25, 0x11, 0xF7, 0xCE, 0x4C, 0xCA, 0x14, 0x43, 0xD0, 0x0D, 0x46, 0xEB, 0xA1, 0x69, + 0x1A, 0xE9, 0xE0, 0x74, 0xB2, 0x18, 0x4C, 0x88, 0x23, 0xF2, 0xE2, 0x6C, 0x99, 0xC7, 0xC9, 0xB4, + 0xCC, 0x31, 0x62, 0x59, 0x9E, 0x01, 0x08, 0x46, 0xED, 0xAD, 0xB1, 0x45, 0x91, 0xEF, 0x8E, 0xF5, + 0xED, 0x87, 0x5B, 0x63, 0x41, 0xDD, 0x75, 0x08, 0xE0, 0x97, 0xD7, 0x17, 0x45, 0xCA, 0x41, 0xF0, + 0x79, 0x9E, 0xDC, 0x3F, 0x1F, 0x31, 0x65, 0x87, 0xD6, 0x3E, 0x6E, 0x0E, 0xBB, 0x46, 0x05, 0xC4, + 0xCE, 0xA6, 0xF9, 0xB1, 0xE9, 0x3E, 0xE6, 0x54, 0x4F, 0xED, 0x18, 0x30, 0x59, 0x4D, 0x53, 0x67, + 0x6D, 0x44, 0xC2, 0x3C, 0x81, 0x8C, 0xD1, 0x34, 0x42, 0x11, 0xB5, 0x3F, 0xFC, 0xF8, 0xE1, 0xFD, + 0xC3, 0x6D, 0x91, 0x72, 0xE7, 0x81, 0x09, 0xF8, 0xF9, 0xD0, 0xF8, 0x00, 0x9F, 0x37, 0x07, 0xAB, + 0xC7, 0x2F, 0x3E, 0xFB, 0xA2, 0x2C, 0xA6, 0xCF, 0xEB, 0x8D, 0xD6, 0x6E, 0x18, 0x7A, 0x84, 0x01, + 0xC6, 0x68, 0x34, 0x3A, 0x8A, 0x04, 0x84, 0x28, 0xCB, 0xE2, 0xE5, 0xE2, 0x02, 0x89, 0x95, 0x53, + 0x0D, 0x27, 0x8C, 0x53, 0x63, 0xD5, 0x7A, 0xD4, 0xAA, 0x6E, 0x65, 0xDD, 0x0E, 0x08, 0x11, 0x00, + 0xA1, 0x88, 0x52, 0x11, 0x4D, 0x07, 0x30, 0x95, 0xCA, 0x25, 0x82, 0xC2, 0x10, 0x38, 0x76, 0x49, + 0x24, 0x66, 0x93, 0xE4, 0xE5, 0x12, 0x29, 0x47, 0xA5, 0x94, 0x7F, 0xF8, 0xE1, 0x51, 0x6A, 0x5A, + 0xC4, 0x16, 0xD2, 0x44, 0x24, 0xF3, 0x5E, 0x0E, 0x75, 0x3B, 0x44, 0x51, 0x94, 0x46, 0x18, 0xFE, + 0xFC, 0xCF, 0xBF, 0x0B, 0x08, 0x75, 0x4D, 0x13, 0x51, 0x2A, 0x65, 0x27, 0xE5, 0xB8, 0x9C, 0xCF, + 0x23, 0xC1, 0x11, 0xC6, 0x56, 0x99, 0xB3, 0xC5, 0x12, 0x63, 0x38, 0x5A, 0xBC, 0x9C, 0x26, 0x71, + 0x44, 0x95, 0xD3, 0x7F, 0xFC, 0x70, 0x8F, 0x09, 0xD5, 0x5A, 0x7E, 0x72, 0x7D, 0x99, 0xF2, 0x58, + 0x49, 0xA3, 0xAD, 0x3F, 0xD6, 0xBD, 0x10, 0xFC, 0x6C, 0x9E, 0xA7, 0x82, 0x6A, 0x67, 0x05, 0xA7, + 0xC6, 0xB8, 0xAA, 0x91, 0x75, 0xD3, 0xED, 0x4F, 0xAD, 0xB5, 0xDE, 0x68, 0x7B, 0xAC, 0x4F, 0x3C, + 0x22, 0xDA, 0x29, 0x84, 0xE1, 0x2C, 0x4F, 0xA6, 0x93, 0xC9, 0x17, 0xAF, 0x5E, 0x7B, 0xFF, 0x51, + 0xE2, 0xB5, 0x00, 0x05, 0x11, 0x63, 0x6B, 0x7D, 0x7D, 0xEA, 0x8A, 0x22, 0xB2, 0xC6, 0x40, 0x80, + 0x9C, 0x0F, 0x75, 0x3D, 0x54, 0xD5, 0xE9, 0xEA, 0x72, 0x9E, 0xE5, 0x93, 0x87, 0x75, 0xF5, 0xBC, + 0x3E, 0x8E, 0xCA, 0x6E, 0x77, 0xFB, 0xB3, 0x59, 0xF1, 0xF5, 0xD7, 0xAF, 0xE3, 0x9C, 0x4B, 0xA5, + 0xFB, 0xD1, 0x38, 0xEB, 0x77, 0x9B, 0x0A, 0x41, 0xA0, 0xB4, 0xF5, 0xCE, 0xD6, 0x4D, 0xAB, 0x46, + 0x53, 0x94, 0x79, 0x19, 0x47, 0xCB, 0x79, 0x91, 0xA5, 0x11, 0x40, 0x60, 0x5E, 0x66, 0xD3, 0x49, + 0xDA, 0xF6, 0x32, 0x4E, 0xB9, 0xD4, 0xBA, 0xEE, 0x47, 0x17, 0x42, 0x00, 0xC8, 0x18, 0x57, 0xD5, + 0x75, 0xCA, 0x10, 0xF4, 0xAE, 0xEB, 0x47, 0x88, 0x70, 0x59, 0x64, 0x59, 0xC4, 0x21, 0x44, 0x4D, + 0x3B, 0xF4, 0xDD, 0x58, 0xD7, 0x1D, 0x61, 0xE8, 0xFD, 0xFB, 0x35, 0xC1, 0x34, 0xCF, 0xA3, 0x5F, + 0xFF, 0xFE, 0xC7, 0x6E, 0x50, 0x6D, 0x37, 0x2C, 0x17, 0x53, 0x41, 0xE9, 0xBF, 0xF8, 0x8B, 0x3F, + 0x01, 0x1E, 0xF4, 0x5A, 0x59, 0x08, 0x9A, 0xA6, 0x1F, 0x07, 0xB9, 0x9C, 0x15, 0x79, 0x1E, 0x41, + 0xEB, 0x4F, 0xFB, 0x06, 0x11, 0xB4, 0x3B, 0xD6, 0x88, 0xC0, 0x8F, 0xAE, 0x06, 0x40, 0x70, 0x1C, + 0x4C, 0x91, 0x46, 0x8C, 0x33, 0xA3, 0x20, 0x21, 0x42, 0x8E, 0x63, 0x24, 0x20, 0x82, 0x20, 0x00, + 0xD8, 0x4B, 0x13, 0x00, 0x8A, 0x04, 0xB3, 0xD6, 0x2D, 0x96, 0xF9, 0x64, 0x92, 0xF4, 0xBD, 0xDC, + 0x3C, 0xEF, 0x43, 0x40, 0x1E, 0xC0, 0xAB, 0xC5, 0xA2, 0x48, 0x53, 0x6B, 0xEC, 0xD9, 0xBC, 0x48, + 0x23, 0xB1, 0x3E, 0x54, 0xAD, 0x54, 0x21, 0xF8, 0x4E, 0x0E, 0x49, 0x92, 0x5A, 0xEF, 0x86, 0xC1, + 0x18, 0xEF, 0xAE, 0x2F, 0x66, 0x45, 0xC6, 0x29, 0x05, 0xCF, 0xEB, 0xED, 0xDB, 0xB7, 0x77, 0x10, + 0x82, 0xB6, 0x55, 0xCA, 0x04, 0x00, 0xDD, 0x77, 0x5F, 0x7E, 0x29, 0x47, 0x93, 0xE7, 0xB9, 0xD1, + 0x83, 0x34, 0xCE, 0x8B, 0xE9, 0xFF, 0xFE, 0xBF, 0xFD, 0xAF, 0x55, 0x2B, 0xBF, 0xFC, 0xE4, 0x05, + 0x41, 0x3E, 0x8D, 0x23, 0x63, 0xDD, 0x38, 0x8E, 0x1E, 0x00, 0xCA, 0xC9, 0x67, 0x37, 0xAF, 0x8C, + 0x01, 0x94, 0x26, 0x8D, 0x6C, 0x29, 0xA7, 0x5A, 0x83, 0x32, 0xA7, 0x67, 0x8B, 0xD4, 0x6A, 0xED, + 0xAD, 0x09, 0xD8, 0x1F, 0xAB, 0x8A, 0x00, 0x7F, 0xB6, 0x98, 0xFE, 0xF0, 0xE1, 0xF6, 0xEA, 0xEC, + 0x62, 0x94, 0x6A, 0x75, 0x3E, 0xDF, 0x1D, 0x76, 0xF3, 0xE5, 0x59, 0x92, 0x65, 0x77, 0x3F, 0x3E, + 0x8E, 0xBD, 0x3D, 0x54, 0x83, 0x20, 0xFE, 0xE5, 0xE5, 0xE5, 0xDB, 0xA7, 0x6D, 0x37, 0xA8, 0x7F, + 0xF7, 0xDF, 0xFC, 0xCB, 0x7F, 0x78, 0xFB, 0x50, 0x4B, 0xFD, 0xB4, 0x5E, 0x73, 0x4E, 0x31, 0x46, + 0x22, 0xA2, 0x51, 0x44, 0x8C, 0xF6, 0x3F, 0xBE, 0xDF, 0xBC, 0x38, 0x9F, 0xA5, 0x82, 0x22, 0x42, + 0xF7, 0x8D, 0xB4, 0xDE, 0x88, 0x48, 0x74, 0xED, 0x30, 0xC9, 0x62, 0x42, 0xC9, 0xEF, 0xFE, 0xF0, + 0x63, 0xDD, 0x4A, 0x35, 0xA8, 0xD5, 0x7C, 0x3A, 0x6A, 0x9D, 0x97, 0x19, 0x40, 0xC8, 0x1A, 0x35, + 0xB6, 0xF2, 0xD4, 0x74, 0x88, 0xE0, 0x8F, 0x5E, 0xD7, 0xD9, 0xE5, 0x2A, 0x68, 0xCB, 0x29, 0x0F, + 0x20, 0x08, 0x46, 0xE5, 0x30, 0x0E, 0x6A, 0x0C, 0xC1, 0x73, 0xC6, 0x28, 0xC6, 0x93, 0x3C, 0x4B, + 0xD3, 0xE4, 0x97, 0xBF, 0x7B, 0xDB, 0x0F, 0xC3, 0x6A, 0x96, 0xBF, 0xB9, 0xBA, 0x2A, 0xF3, 0x82, + 0x09, 0x5A, 0xB7, 0xD2, 0x03, 0x50, 0xB7, 0x52, 0x1B, 0x97, 0xA5, 0x09, 0x41, 0x60, 0x92, 0x27, + 0x93, 0x3C, 0xF1, 0x2E, 0x68, 0x2D, 0xBB, 0x5E, 0x11, 0x0C, 0xD3, 0x94, 0x6B, 0xE7, 0x42, 0x08, + 0xC6, 0x2A, 0xC6, 0x85, 0x1A, 0xEC, 0xD9, 0xA2, 0x70, 0xC1, 0x41, 0x8A, 0xBA, 0x76, 0x30, 0xC6, + 0x1A, 0x00, 0x1E, 0x9E, 0x77, 0xDA, 0x85, 0xBE, 0x57, 0xCF, 0x0F, 0xDB, 0x72, 0x9A, 0x62, 0x8C, + 0x27, 0x65, 0xDE, 0x37, 0xFD, 0x7C, 0x5E, 0x9E, 0xAF, 0x26, 0xC1, 0x5A, 0x02, 0xE0, 0xD5, 0xF9, + 0xEA, 0xFD, 0xE3, 0xA6, 0xEB, 0xCD, 0x38, 0x0C, 0x94, 0x40, 0x42, 0x48, 0x39, 0xCD, 0x95, 0x55, + 0xE3, 0x68, 0xB4, 0xF6, 0x6D, 0x37, 0xEC, 0x76, 0x95, 0xD2, 0xA6, 0x97, 0xEA, 0x93, 0x97, 0x57, + 0xCE, 0x99, 0xAB, 0xB3, 0xF2, 0xE5, 0xF9, 0x2C, 0x8E, 0xE2, 0x63, 0xAD, 0x8C, 0x1E, 0x00, 0xC2, + 0x71, 0x1C, 0xE5, 0xF9, 0xE4, 0x69, 0xB7, 0xF5, 0xCE, 0x7A, 0x67, 0xC7, 0x71, 0xE4, 0x9C, 0x97, + 0x65, 0xAE, 0x75, 0xA8, 0xAA, 0xFE, 0x6E, 0x53, 0x03, 0x80, 0x6E, 0xCE, 0x8B, 0xCD, 0xF1, 0x04, + 0x00, 0xB8, 0x5F, 0x1F, 0x3E, 0xDC, 0xDF, 0x7E, 0xFB, 0xC5, 0xAB, 0xFF, 0xF2, 0xBB, 0x2F, 0x18, + 0x65, 0xCA, 0xFB, 0xE5, 0x7C, 0x7E, 0xAC, 0xE5, 0xBF, 0xFF, 0xD5, 0xAF, 0xD3, 0x28, 0xCA, 0xCA, + 0x73, 0x07, 0x85, 0x96, 0x4D, 0x96, 0xE5, 0xB5, 0xB4, 0x5A, 0xF6, 0x7E, 0xD8, 0x13, 0x3E, 0x29, + 0x17, 0xD7, 0x2C, 0xF4, 0x18, 0x0E, 0x84, 0x38, 0x63, 0xB4, 0xE0, 0x68, 0x51, 0xE4, 0xC7, 0xBA, + 0x73, 0xC1, 0x6F, 0x0F, 0xDB, 0xBE, 0xEB, 0x76, 0xA7, 0xAE, 0x53, 0x5E, 0x3B, 0xF8, 0x31, 0x74, + 0xCD, 0x29, 0x9D, 0x4E, 0xCB, 0x32, 0xCF, 0xEE, 0xEF, 0x77, 0xFD, 0x30, 0xA4, 0x49, 0x32, 0xC9, + 0xF3, 0xE7, 0xF5, 0xC6, 0x03, 0x5F, 0x4C, 0x8A, 0xC3, 0xA1, 0xC9, 0x52, 0x8A, 0x80, 0xFE, 0x67, + 0xFF, 0xE4, 0xAF, 0xBC, 0xB1, 0x69, 0x12, 0x3F, 0x3D, 0xBD, 0xFF, 0xF0, 0xF0, 0xB0, 0x3B, 0xF6, + 0x10, 0xA1, 0x00, 0x61, 0xDF, 0x8F, 0x59, 0x9E, 0x83, 0xE0, 0x03, 0x08, 0x6F, 0x3E, 0xFD, 0xFA, + 0xEA, 0xE2, 0xE6, 0xD0, 0x18, 0x02, 0xF5, 0x79, 0xA1, 0xDE, 0x5C, 0x4F, 0x04, 0xB1, 0xCF, 0xBB, + 0xE7, 0xBA, 0xF7, 0x88, 0x24, 0xA3, 0xFA, 0x98, 0x92, 0xF0, 0x67, 0x17, 0x6F, 0xA4, 0x54, 0x3F, + 0xDC, 0x77, 0x82, 0xF3, 0x17, 0xAB, 0xB2, 0xEF, 0x3B, 0xF8, 0xAF, 0xFF, 0xD5, 0x3F, 0xDF, 0x57, + 0x35, 0x84, 0x62, 0x35, 0xC9, 0xEB, 0xC3, 0x36, 0x8D, 0x93, 0x3C, 0x2F, 0x10, 0x0C, 0x08, 0x41, + 0xEF, 0x82, 0x94, 0xE3, 0x74, 0xB9, 0xC2, 0xF1, 0x74, 0x38, 0xBC, 0x2F, 0xF2, 0x5C, 0x3B, 0xB3, + 0x3D, 0xEC, 0x57, 0xCB, 0x99, 0x77, 0xC8, 0x68, 0xD5, 0x36, 0x03, 0xC5, 0xEC, 0xD4, 0xF4, 0x65, + 0x91, 0x41, 0x84, 0x47, 0x35, 0x2A, 0x35, 0x00, 0xE0, 0x05, 0xA7, 0x59, 0x1C, 0x61, 0x04, 0xCE, + 0x57, 0xB3, 0xE7, 0x6D, 0x75, 0xF7, 0xB8, 0xF5, 0x0E, 0x3C, 0x6D, 0xD7, 0x69, 0x1A, 0x13, 0xC6, + 0xB2, 0x84, 0x7C, 0xF6, 0xE2, 0x7C, 0x3E, 0x5B, 0x1A, 0x1B, 0x92, 0x18, 0x3A, 0xD5, 0x31, 0x2E, + 0x06, 0xD5, 0xEF, 0x8E, 0x2D, 0x04, 0x64, 0x3E, 0xCB, 0xD3, 0x88, 0x8F, 0x63, 0x17, 0x8B, 0xD8, + 0x7A, 0xD4, 0xF7, 0x6D, 0xD7, 0x55, 0xCB, 0xD5, 0x42, 0x69, 0x56, 0xB7, 0x3D, 0x40, 0xE4, 0x57, + 0xBF, 0x7B, 0x9C, 0x96, 0xF1, 0xA7, 0xAF, 0xA7, 0x88, 0x60, 0xA9, 0x74, 0xD5, 0xEB, 0xCD, 0xB6, + 0xF2, 0xC1, 0xCB, 0x5E, 0x39, 0xEB, 0x02, 0x08, 0x38, 0x84, 0xBB, 0xFB, 0x35, 0xA6, 0x2C, 0x89, + 0xC5, 0xC5, 0x62, 0x4A, 0x30, 0xF6, 0xC1, 0x71, 0x4E, 0x08, 0xC2, 0x1E, 0x02, 0x67, 0xFC, 0x72, + 0x91, 0x8B, 0x48, 0x4C, 0xCB, 0xD4, 0x79, 0x3F, 0x2A, 0x87, 0x00, 0x98, 0xCD, 0x12, 0xCE, 0x91, + 0x1A, 0x95, 0xD1, 0xD6, 0x58, 0xB3, 0xDE, 0xD6, 0x75, 0x33, 0x14, 0x79, 0xEC, 0x8C, 0x67, 0x94, + 0x26, 0x82, 0xBB, 0xE0, 0xD2, 0x88, 0x71, 0xC2, 0xE3, 0x98, 0x01, 0xE8, 0xD6, 0xFB, 0xA3, 0x86, + 0x50, 0xDB, 0x81, 0x63, 0x42, 0x80, 0x30, 0x2E, 0x78, 0x08, 0x7A, 0xA9, 0xFA, 0x6E, 0xE0, 0x14, + 0x9F, 0xAD, 0xCA, 0xAA, 0x3A, 0xC4, 0x54, 0x9C, 0x2A, 0xE9, 0x82, 0xEB, 0x86, 0x91, 0x30, 0xB4, + 0xDB, 0x57, 0x8C, 0xB3, 0xAE, 0x1B, 0xBC, 0x87, 0x00, 0x02, 0x3D, 0x9A, 0x53, 0xAD, 0x56, 0xAB, + 0xE5, 0x97, 0x9F, 0x9E, 0x71, 0x0E, 0x08, 0x42, 0x94, 0xD2, 0xB7, 0x3F, 0xEE, 0x7E, 0x78, 0xFF, + 0x94, 0x25, 0xF1, 0x7C, 0x5A, 0x50, 0x4A, 0x29, 0x85, 0xDF, 0x7D, 0xF3, 0xFA, 0x74, 0xAC, 0x31, + 0xC4, 0xB3, 0xB2, 0x04, 0x1E, 0xBC, 0xFD, 0xF0, 0x94, 0x46, 0x7C, 0x3E, 0x2D, 0x0E, 0x75, 0xD7, + 0xC9, 0xB1, 0x69, 0x65, 0x40, 0xC8, 0x79, 0x87, 0x10, 0xE9, 0xE4, 0xB8, 0x39, 0xD4, 0x65, 0x1E, + 0xE7, 0x31, 0x8D, 0x18, 0x7A, 0xF3, 0xFA, 0xE2, 0x70, 0x38, 0xFD, 0xDD, 0x6F, 0xBE, 0xE7, 0x04, + 0x7F, 0x76, 0xF3, 0xE2, 0xD8, 0x0C, 0x87, 0x53, 0xF5, 0x27, 0x5F, 0x7D, 0x3D, 0x9B, 0x09, 0x44, + 0xF0, 0xED, 0x87, 0x47, 0x91, 0x4E, 0x0C, 0x2D, 0x86, 0xEA, 0x07, 0xAD, 0x34, 0xF6, 0x70, 0x3E, + 0x2F, 0x39, 0x27, 0xCE, 0x7B, 0x63, 0x8C, 0x54, 0xF6, 0xE1, 0xF9, 0x84, 0x00, 0x79, 0x71, 0x75, + 0xF1, 0xF8, 0xB4, 0x8B, 0x12, 0x06, 0xA9, 0x30, 0x46, 0x5D, 0x9C, 0xE7, 0x0C, 0xB3, 0x51, 0xE9, + 0xE0, 0x40, 0x12, 0xF3, 0x77, 0xEF, 0x7F, 0x18, 0x86, 0x66, 0x39, 0x9F, 0x18, 0xA3, 0xE7, 0xF9, + 0x0C, 0x7B, 0x18, 0xA0, 0xA9, 0x95, 0xE3, 0x31, 0x4F, 0xA2, 0x08, 0x04, 0x30, 0x99, 0x2D, 0xF7, + 0xBB, 0xAD, 0x6E, 0x87, 0x71, 0xF4, 0x3F, 0xDC, 0x6F, 0x7E, 0xF6, 0xED, 0x57, 0x65, 0x9E, 0x9E, + 0xBA, 0xF1, 0x87, 0xBB, 0xC7, 0xC3, 0xE1, 0xB4, 0x9C, 0x97, 0x91, 0x40, 0xCE, 0x39, 0x84, 0x09, + 0x67, 0x7C, 0x1C, 0xE5, 0xBC, 0xC8, 0x28, 0x66, 0xCD, 0xA0, 0x87, 0x71, 0x7C, 0xFF, 0xB0, 0xC9, + 0x92, 0xF4, 0xE7, 0xDF, 0x7E, 0x4A, 0x08, 0xEE, 0x65, 0x1F, 0x20, 0x54, 0xC6, 0x7D, 0x78, 0xFF, + 0x78, 0x38, 0x55, 0x87, 0xAA, 0xBD, 0xBA, 0x98, 0x23, 0x84, 0xB5, 0x36, 0xC0, 0xBA, 0x43, 0xD5, + 0x5A, 0xEF, 0x28, 0xA7, 0xD3, 0xF9, 0x04, 0x04, 0x40, 0x00, 0xEC, 0x5A, 0x99, 0xC6, 0x11, 0x44, + 0xB0, 0x69, 0xFA, 0x32, 0x4F, 0x95, 0xB5, 0x1E, 0x06, 0x8A, 0xB0, 0x77, 0xBE, 0xC8, 0xD3, 0x41, + 0xE9, 0x87, 0xE7, 0xFD, 0x27, 0xD7, 0x97, 0xCB, 0xE9, 0x74, 0x7B, 0x3C, 0x26, 0x59, 0xFC, 0xB4, + 0x39, 0x3D, 0xAE, 0xF7, 0x08, 0x63, 0xA5, 0xB5, 0xE0, 0x3C, 0x13, 0xEC, 0xAB, 0x37, 0xAF, 0xBD, + 0xD3, 0x6D, 0xD7, 0x0D, 0xE3, 0x18, 0x3C, 0x40, 0x18, 0x9D, 0x9F, 0xCD, 0x9A, 0x56, 0x17, 0x45, + 0x01, 0x83, 0xF4, 0xC1, 0x37, 0x9D, 0x86, 0x88, 0x58, 0xAB, 0xCE, 0x2F, 0xA7, 0xA7, 0x7D, 0x17, + 0x82, 0xCF, 0xCA, 0xB8, 0x6E, 0x7A, 0x00, 0xF1, 0xB1, 0x6E, 0xAB, 0x53, 0x33, 0x99, 0xE6, 0xD6, + 0x39, 0x6F, 0x0C, 0x67, 0x2C, 0x12, 0x22, 0x89, 0x19, 0x82, 0x70, 0x90, 0xEA, 0xFC, 0x6C, 0x56, + 0xE6, 0xC9, 0x72, 0x36, 0x7B, 0x7F, 0xF7, 0x8C, 0x02, 0x78, 0x71, 0x7D, 0xEE, 0x80, 0xD5, 0x5A, + 0xF5, 0xD2, 0x3A, 0xEB, 0xDF, 0xBE, 0xBB, 0xD7, 0xD6, 0x0E, 0xC3, 0xF8, 0xE5, 0xA7, 0xAF, 0xE2, + 0x34, 0x92, 0x43, 0x6D, 0x95, 0xEE, 0x3A, 0x35, 0x2B, 0x8A, 0x34, 0x11, 0x71, 0x92, 0x9F, 0x9D, + 0x9D, 0x99, 0x51, 0xFE, 0xF1, 0xDD, 0xED, 0xDB, 0x0F, 0xCF, 0x75, 0x3B, 0x70, 0x8E, 0x09, 0x46, + 0x21, 0xF8, 0x2C, 0x8F, 0x04, 0xE3, 0x82, 0xC7, 0x98, 0xD0, 0xF9, 0x2C, 0x97, 0x7D, 0xF7, 0xE3, + 0xED, 0xD3, 0x30, 0xBA, 0xCD, 0xA1, 0x69, 0x46, 0xF5, 0xE9, 0x8B, 0xE9, 0xD7, 0x37, 0x17, 0x4F, + 0xEB, 0x43, 0x51, 0x14, 0x9D, 0xC6, 0xFB, 0xAA, 0x6D, 0xBA, 0xF5, 0x72, 0x96, 0x46, 0xF9, 0x05, + 0x01, 0x08, 0x3B, 0x9B, 0x67, 0x09, 0xA6, 0xCC, 0x5B, 0xD3, 0xB5, 0xBD, 0xB1, 0x76, 0x77, 0x38, + 0x5A, 0x63, 0x8B, 0x34, 0x72, 0xD8, 0x2C, 0xA7, 0xD9, 0x17, 0x37, 0x57, 0xF7, 0x8F, 0x07, 0x6D, + 0x00, 0x67, 0xA4, 0xEB, 0xFB, 0x6E, 0x30, 0x87, 0xA6, 0xB3, 0xC6, 0x49, 0xA5, 0xFB, 0x61, 0x4C, + 0x22, 0x5E, 0xD5, 0xF5, 0xD9, 0xF9, 0x82, 0x50, 0x7C, 0x7F, 0xB7, 0x57, 0xC6, 0x10, 0x88, 0x20, + 0x80, 0xC6, 0x3A, 0xCE, 0x99, 0x73, 0x0E, 0x53, 0x86, 0x91, 0x4F, 0x13, 0xF1, 0xE6, 0x93, 0x4F, + 0x57, 0x93, 0x62, 0x94, 0xF5, 0x8F, 0xB7, 0xB7, 0x77, 0xCF, 0xA7, 0xBA, 0x1B, 0xFA, 0x5E, 0x2E, + 0x66, 0xE5, 0xC5, 0x72, 0xF1, 0xE3, 0xC3, 0x96, 0x32, 0xE2, 0x43, 0xF8, 0xE4, 0xD5, 0xD5, 0x5F, + 0xFE, 0xFC, 0x2F, 0x18, 0xA5, 0xCB, 0x69, 0xC6, 0x51, 0x7D, 0x7B, 0xFB, 0xF6, 0xC7, 0x0F, 0xDB, + 0xE7, 0xE3, 0x09, 0x11, 0x5A, 0xE6, 0x2B, 0x88, 0x08, 0x00, 0x56, 0xC4, 0xB1, 0x1C, 0xD5, 0x72, + 0x36, 0xE7, 0xAC, 0xB0, 0x66, 0x64, 0x04, 0x17, 0x69, 0x0E, 0xFF, 0xEC, 0xBB, 0x6F, 0xF6, 0x75, + 0xFB, 0xC5, 0x17, 0xDF, 0xCA, 0xE3, 0x63, 0x96, 0xA4, 0xC1, 0xFB, 0x24, 0x4B, 0x9F, 0x9E, 0x37, + 0x54, 0x90, 0xA7, 0xA7, 0xCD, 0xAB, 0xEB, 0x97, 0x17, 0xAF, 0xBF, 0x7A, 0xF7, 0xF6, 0x1F, 0xBC, + 0x96, 0x9C, 0xD2, 0x49, 0x11, 0x71, 0x8A, 0x3C, 0x20, 0xCA, 0x20, 0xE7, 0xF5, 0xE5, 0x2A, 0x47, + 0x18, 0xED, 0x0E, 0x9D, 0x32, 0x6E, 0x7F, 0xEC, 0x5C, 0xD0, 0x71, 0x4C, 0x26, 0x93, 0x7C, 0xBB, + 0x6F, 0x82, 0x0B, 0x4D, 0xDD, 0x08, 0xCE, 0xBE, 0x78, 0xFD, 0x8A, 0x53, 0xF2, 0x9B, 0x3F, 0xDE, + 0x3E, 0x6E, 0xF7, 0xFF, 0xF4, 0x4F, 0xBF, 0xBD, 0xBA, 0x58, 0x4C, 0x33, 0x66, 0xCD, 0xB0, 0x3F, + 0x9E, 0x1C, 0x40, 0x65, 0x59, 0x3A, 0x6B, 0x39, 0x47, 0x4A, 0x8F, 0x01, 0x20, 0x18, 0x2C, 0x0C, + 0xEE, 0x74, 0xAC, 0x43, 0x50, 0x45, 0x9E, 0xD9, 0x80, 0xDA, 0xEE, 0x84, 0x11, 0x9C, 0xCF, 0x2F, + 0x7B, 0xA9, 0x95, 0xF6, 0x71, 0x1A, 0x65, 0x19, 0x2F, 0x52, 0x61, 0x1C, 0xF8, 0xFE, 0xED, 0x43, + 0xDF, 0xEB, 0x40, 0xC9, 0xD3, 0xFA, 0xB8, 0xDB, 0x1E, 0x03, 0xC0, 0x22, 0x8A, 0x40, 0x70, 0x6A, + 0x1C, 0x9E, 0xD6, 0x07, 0x8C, 0xA8, 0x52, 0xF2, 0xE5, 0xC5, 0xD9, 0xD5, 0xD5, 0xC2, 0x5A, 0x2B, + 0x38, 0x1D, 0xB5, 0xED, 0xFA, 0x11, 0x00, 0xE0, 0xAC, 0x7B, 0x79, 0x79, 0xB1, 0x98, 0x4D, 0x0F, + 0xC7, 0x26, 0xCB, 0x73, 0x82, 0x3C, 0x46, 0xA0, 0xEA, 0x46, 0x65, 0xCC, 0xD9, 0x22, 0x67, 0x18, + 0x40, 0x6F, 0x76, 0xFB, 0x2A, 0xC9, 0x84, 0xD3, 0x8E, 0x11, 0x9A, 0xA6, 0xD1, 0x30, 0x8C, 0x8B, + 0x45, 0x5E, 0x35, 0xBD, 0x1C, 0x4D, 0x92, 0x44, 0x65, 0x11, 0x11, 0x81, 0xAB, 0xAE, 0x0F, 0x01, + 0x74, 0x8D, 0x7C, 0x7C, 0xD8, 0x2B, 0xE3, 0xF2, 0x2C, 0x61, 0x18, 0xCD, 0xCA, 0x5C, 0x59, 0xD7, + 0x75, 0xBD, 0xEC, 0x7A, 0x29, 0xC7, 0xBA, 0xED, 0xE2, 0x38, 0x3A, 0xD5, 0x6D, 0xD5, 0xF6, 0x1F, + 0x43, 0xA7, 0x04, 0x23, 0xCE, 0xC9, 0xC5, 0x22, 0xFF, 0xE4, 0xF5, 0x3C, 0x4E, 0xE2, 0xF9, 0x62, + 0xB1, 0x3B, 0xD5, 0x4F, 0x9B, 0x13, 0x04, 0x70, 0x31, 0x9D, 0xFD, 0xF2, 0x57, 0xEF, 0x8C, 0x72, + 0x93, 0x2C, 0x0D, 0x00, 0xDC, 0x5C, 0x2F, 0xCF, 0x17, 0x93, 0xC3, 0xA9, 0xAD, 0x3B, 0x29, 0xB8, + 0x90, 0x83, 0xF5, 0x21, 0x24, 0x82, 0x75, 0x52, 0x1E, 0x4E, 0xAD, 0x07, 0x21, 0x00, 0xF8, 0x51, + 0x24, 0xAE, 0xEA, 0xEE, 0xF6, 0x71, 0xF3, 0xE6, 0xE6, 0x7A, 0x5E, 0xC6, 0x4D, 0xDD, 0x31, 0x42, + 0x26, 0x79, 0x64, 0x8C, 0x9D, 0x96, 0xD9, 0xBC, 0x4C, 0x36, 0xC7, 0xBA, 0x95, 0x03, 0xE3, 0x62, + 0x39, 0x9B, 0x18, 0xDF, 0x5A, 0x6F, 0xBB, 0x7E, 0x70, 0x28, 0x7B, 0xDC, 0x8C, 0x67, 0xE5, 0x38, + 0xCB, 0x92, 0xC5, 0x74, 0xB2, 0x3F, 0x35, 0xA3, 0x52, 0x72, 0xD0, 0x01, 0x80, 0xD3, 0xB1, 0xD9, + 0x6C, 0xDB, 0xC9, 0x6C, 0x36, 0x99, 0x66, 0xBB, 0xDD, 0x41, 0x7B, 0xDC, 0xF5, 0x0E, 0x83, 0x21, + 0x2B, 0x72, 0xA5, 0x54, 0x5E, 0xA4, 0x01, 0x62, 0x02, 0xE1, 0xAC, 0x48, 0xFA, 0xA1, 0x7E, 0xFF, + 0xFE, 0xDD, 0x27, 0x2F, 0x5F, 0xAE, 0x26, 0x33, 0x33, 0x68, 0xE3, 0xFD, 0xA0, 0xE5, 0xC7, 0xE6, + 0xF6, 0xE8, 0xB5, 0xE0, 0x2C, 0xE1, 0x7C, 0x12, 0xCF, 0x7E, 0xF7, 0xFD, 0xAD, 0x0D, 0xE0, 0xA7, + 0x3F, 0xFD, 0xEC, 0x69, 0x5D, 0x1D, 0xAA, 0xF6, 0xF1, 0x69, 0xF3, 0x17, 0x3F, 0x7D, 0xFD, 0xE6, + 0x66, 0x36, 0x0C, 0x63, 0xDF, 0xF6, 0xCE, 0x3B, 0x00, 0xC9, 0x7A, 0x7D, 0x3A, 0x9D, 0x1C, 0x00, + 0x98, 0x30, 0x3A, 0x8C, 0xEA, 0xC3, 0xD3, 0xF6, 0x93, 0x97, 0x97, 0x9C, 0xD2, 0x00, 0x03, 0xA1, + 0x04, 0x84, 0xB0, 0x98, 0x4F, 0x9E, 0x9E, 0x37, 0xFF, 0xE7, 0xBF, 0xFF, 0xC5, 0xF5, 0xF5, 0x0A, + 0x06, 0xEF, 0x4D, 0xB8, 0xB9, 0x3A, 0x13, 0x82, 0xA5, 0x19, 0xDF, 0x9D, 0x6A, 0x63, 0x7C, 0x96, + 0xE7, 0xD9, 0x2C, 0x8F, 0x63, 0xF1, 0xFD, 0x1F, 0xEE, 0x18, 0x65, 0x87, 0xDD, 0x3E, 0x62, 0x22, + 0x04, 0x7F, 0xEA, 0xC7, 0xA6, 0xED, 0x10, 0x00, 0x08, 0x42, 0x8A, 0x21, 0xC4, 0x28, 0x4F, 0x0B, + 0x10, 0xA0, 0x1C, 0x07, 0x4C, 0x69, 0x3F, 0xA8, 0xFD, 0xB1, 0xAD, 0xDB, 0x66, 0x36, 0x9D, 0x70, + 0x46, 0x31, 0x89, 0x38, 0x46, 0xD7, 0xAB, 0xE9, 0x76, 0xB7, 0x39, 0x9C, 0xAA, 0x51, 0x6B, 0xC1, + 0x79, 0x00, 0xF0, 0xC5, 0xD5, 0x25, 0x46, 0x38, 0xCD, 0xCA, 0x79, 0x49, 0x1E, 0xD6, 0xFB, 0x71, + 0xD4, 0xBB, 0xC3, 0x89, 0x73, 0xFA, 0xE2, 0x7A, 0xF1, 0xF0, 0xB8, 0x25, 0x84, 0x20, 0x08, 0x45, + 0x14, 0x25, 0x49, 0x72, 0xFF, 0xF8, 0x14, 0x27, 0x91, 0x73, 0xBE, 0xAE, 0x1B, 0x84, 0x30, 0xA1, + 0x18, 0x06, 0x3F, 0x2D, 0xB3, 0x34, 0x89, 0xCB, 0x34, 0x2D, 0x8A, 0x0C, 0x22, 0x8F, 0x31, 0x41, + 0x08, 0x66, 0x89, 0xA8, 0xAB, 0x9E, 0x47, 0x02, 0x23, 0xB0, 0xD9, 0x35, 0x08, 0x60, 0x6B, 0x2C, + 0xC6, 0x20, 0xE2, 0x98, 0x51, 0xAC, 0x9C, 0x81, 0x00, 0xB6, 0x9D, 0x1C, 0x06, 0x95, 0xA5, 0x05, + 0xE3, 0x91, 0xB6, 0x8E, 0x51, 0x9A, 0x08, 0x56, 0xD5, 0x4D, 0xD3, 0xAB, 0xF5, 0x66, 0x1F, 0x9C, + 0x71, 0xDE, 0x3B, 0xE7, 0x18, 0x27, 0x71, 0xC4, 0xCF, 0xE6, 0xB3, 0xEF, 0xBE, 0x7D, 0xF3, 0xFA, + 0x66, 0xD9, 0xF7, 0x6A, 0xB7, 0xDE, 0xBF, 0x7B, 0xFF, 0xDC, 0x4B, 0x1B, 0x90, 0x80, 0x98, 0x0B, + 0xA2, 0x9D, 0xF3, 0xCE, 0x43, 0x65, 0xDD, 0xFA, 0x78, 0x7C, 0x78, 0x7A, 0x3F, 0x8C, 0x43, 0x91, + 0xC5, 0x01, 0xE0, 0xB3, 0xC5, 0xC5, 0xCD, 0x8B, 0xD5, 0xFE, 0xD0, 0x2D, 0x26, 0x53, 0x82, 0x91, + 0x35, 0x12, 0x04, 0xDB, 0x76, 0x9A, 0x51, 0xFC, 0xF5, 0x17, 0xE7, 0x67, 0xF3, 0x22, 0x12, 0xE2, + 0x7E, 0xD3, 0x34, 0xED, 0x30, 0x0C, 0x6A, 0x7B, 0xA8, 0x9F, 0x36, 0x95, 0xF7, 0x30, 0x58, 0x53, + 0x4E, 0xA6, 0x16, 0x80, 0xE3, 0xE9, 0xB8, 0xD9, 0x6C, 0xAD, 0x1F, 0x03, 0x04, 0xAF, 0xAE, 0x5F, + 0xCB, 0x61, 0x7C, 0x7C, 0x5A, 0x5F, 0x9D, 0x5F, 0xC4, 0x22, 0x9A, 0x4F, 0xD2, 0x0F, 0xF7, 0x4F, + 0xF7, 0xDB, 0x7D, 0x91, 0xC5, 0x71, 0x1C, 0x4F, 0xA7, 0x53, 0x81, 0xA1, 0xD1, 0x2A, 0x8E, 0xE3, + 0x87, 0xED, 0x7E, 0xD0, 0xAE, 0x6D, 0xDA, 0x97, 0x57, 0x8B, 0x48, 0xC4, 0x3F, 0xDC, 0x3E, 0x43, + 0x48, 0x37, 0xDB, 0xED, 0xF9, 0x6A, 0x31, 0x9F, 0x94, 0x67, 0xF3, 0x29, 0xA3, 0x18, 0x21, 0x60, + 0x94, 0xAA, 0x8E, 0xA7, 0xC9, 0x6C, 0x8A, 0x09, 0xD1, 0xCA, 0x42, 0x48, 0xB4, 0xD1, 0x72, 0x94, + 0xA3, 0x72, 0xD3, 0xB2, 0xC8, 0xB3, 0xCC, 0x68, 0x15, 0x73, 0xCA, 0x28, 0x86, 0x3F, 0xFB, 0xC9, + 0xD7, 0x5C, 0xC4, 0x67, 0x2F, 0x3E, 0x37, 0xA3, 0x54, 0x7D, 0x1D, 0x9C, 0xC5, 0x18, 0x76, 0xB2, + 0x75, 0xDE, 0x55, 0xA7, 0xFA, 0xE5, 0x27, 0x5F, 0xEF, 0xF6, 0xFB, 0x9C, 0x0E, 0x84, 0x52, 0xC6, + 0xA2, 0xD5, 0x2C, 0x1B, 0xE4, 0xC0, 0x98, 0xE0, 0x9C, 0x23, 0xE4, 0x31, 0x45, 0xEB, 0x6D, 0x95, + 0x16, 0xB1, 0xB1, 0xB6, 0xE9, 0xC7, 0x38, 0x11, 0x08, 0x38, 0xEB, 0xFD, 0xF6, 0xD0, 0x61, 0x1A, + 0x1D, 0x9E, 0x36, 0x6A, 0xD4, 0x59, 0x9A, 0x2F, 0xCA, 0x2C, 0x8E, 0xE3, 0x4A, 0xDA, 0x9B, 0x8B, + 0x42, 0x30, 0xD8, 0x34, 0xFD, 0xE6, 0xB0, 0xAD, 0x1B, 0x8D, 0x30, 0x0F, 0x90, 0x8A, 0x88, 0x22, + 0x1C, 0x8C, 0x35, 0x9C, 0xD1, 0xCB, 0xF3, 0x09, 0x0A, 0xBA, 0x6F, 0xEA, 0x00, 0x82, 0x73, 0x46, + 0x8D, 0x75, 0x12, 0x33, 0x4C, 0xB8, 0xB1, 0x7A, 0xB5, 0xBA, 0x84, 0x48, 0x50, 0x86, 0xD2, 0x34, + 0x23, 0x98, 0x62, 0x2A, 0xEA, 0x46, 0x0E, 0x52, 0x52, 0x81, 0xD7, 0xFB, 0xAE, 0x1F, 0xD4, 0xDB, + 0xB7, 0x0F, 0xC7, 0x63, 0xBF, 0x5A, 0xCD, 0xD4, 0x28, 0x09, 0x81, 0x18, 0x23, 0x42, 0x09, 0x08, + 0x48, 0x50, 0x12, 0x0B, 0xA2, 0xB5, 0x6F, 0x3A, 0xD9, 0x4B, 0xD5, 0xC9, 0x71, 0x31, 0x9B, 0x7F, + 0xF9, 0xE6, 0x55, 0x5D, 0x35, 0x45, 0x39, 0xE9, 0x47, 0xBD, 0x3F, 0x9E, 0xEA, 0xA6, 0xE1, 0x14, + 0x1B, 0x17, 0x12, 0x41, 0x23, 0x8A, 0x6F, 0xAE, 0x67, 0x79, 0x16, 0x05, 0x60, 0x29, 0x44, 0x71, + 0xC4, 0x20, 0x0C, 0x36, 0x58, 0xEB, 0xDD, 0xE3, 0xFA, 0xD4, 0x4A, 0x13, 0x27, 0xE9, 0xE3, 0xE3, + 0x46, 0x3B, 0x33, 0x99, 0x15, 0x49, 0xC4, 0x63, 0x41, 0x01, 0x80, 0x4D, 0x37, 0x76, 0x5D, 0x27, + 0x18, 0xB9, 0x5C, 0xCE, 0xB8, 0x60, 0xB7, 0xF7, 0xDB, 0xBE, 0x1B, 0xF2, 0x34, 0xDE, 0x6E, 0x4F, + 0xD6, 0x3A, 0x63, 0xCD, 0xE6, 0xD4, 0x40, 0x08, 0xFF, 0xE5, 0x5F, 0x7D, 0xE3, 0xB4, 0x79, 0xF9, + 0x72, 0x91, 0xA5, 0xD1, 0xC3, 0x87, 0xA7, 0xFB, 0xA7, 0x9D, 0xF2, 0x61, 0xBB, 0x6E, 0x11, 0xC6, + 0xCB, 0x79, 0x39, 0xCD, 0xF3, 0x80, 0xF0, 0xC5, 0x72, 0x12, 0xB4, 0xA7, 0x44, 0x9C, 0x9A, 0xE1, + 0x79, 0x77, 0x74, 0xCE, 0xC7, 0x91, 0x18, 0xB4, 0xDD, 0xEE, 0x4F, 0xCB, 0xF9, 0xB4, 0x69, 0xDB, + 0x10, 0x40, 0xF0, 0x8E, 0x31, 0xDA, 0xF6, 0xC3, 0xA0, 0xD4, 0xC7, 0xC6, 0xC4, 0xC5, 0x6A, 0xF6, + 0x6F, 0xFE, 0xF9, 0xCF, 0xFF, 0xAF, 0xBF, 0xF9, 0x65, 0x2F, 0x35, 0xC2, 0x38, 0x12, 0xDC, 0x3B, + 0x27, 0x44, 0x24, 0x95, 0x12, 0x11, 0x1A, 0xB4, 0x89, 0x84, 0x30, 0xA3, 0x6D, 0xFB, 0x2A, 0x38, + 0x53, 0x96, 0xE9, 0x64, 0xF9, 0xBA, 0x69, 0x36, 0x93, 0xD8, 0x67, 0x2C, 0x26, 0x98, 0x1C, 0x9B, + 0x56, 0x6B, 0x1B, 0x09, 0x61, 0x8C, 0xC5, 0x18, 0x61, 0x4C, 0x5A, 0xA9, 0x4F, 0x4D, 0x5B, 0x4B, + 0x30, 0x9D, 0xAF, 0x64, 0xB3, 0xBD, 0xBB, 0x7F, 0x4A, 0xD3, 0xA4, 0x2C, 0xF3, 0xAB, 0x57, 0x97, + 0x52, 0x4A, 0x88, 0x88, 0x53, 0x6A, 0x9A, 0x27, 0xC0, 0xD9, 0xE3, 0x71, 0x73, 0xBE, 0x5C, 0x08, + 0xC6, 0x38, 0x67, 0xCE, 0x8C, 0xA3, 0xB2, 0x72, 0xEC, 0x4D, 0x70, 0x69, 0xC4, 0x3F, 0x7F, 0xFD, + 0x89, 0x77, 0xE1, 0x71, 0x77, 0x88, 0xD3, 0xE8, 0xE2, 0xAC, 0x1C, 0x47, 0x65, 0x8D, 0x01, 0x01, + 0xE8, 0x31, 0x40, 0x0A, 0xFE, 0xF0, 0xFD, 0xC3, 0xEA, 0x2C, 0xB9, 0xBA, 0x9C, 0x06, 0x0F, 0xFA, + 0x46, 0xDD, 0x3F, 0xB4, 0x6D, 0xA7, 0x27, 0xD3, 0xC9, 0x60, 0xAC, 0xF3, 0x2E, 0x4D, 0x22, 0x6B, + 0x4C, 0x08, 0xBE, 0x1D, 0xB4, 0x94, 0x43, 0x08, 0x30, 0x49, 0xE2, 0x0F, 0xF7, 0xF7, 0xAF, 0x2F, + 0x16, 0x82, 0x92, 0x24, 0x8A, 0x83, 0x0F, 0x98, 0x82, 0x28, 0x65, 0xB2, 0x1F, 0x05, 0x13, 0x08, + 0x11, 0x0F, 0x03, 0xE2, 0xCC, 0x07, 0x14, 0x30, 0x7A, 0xFF, 0xEE, 0x6E, 0x59, 0x96, 0xB7, 0xF7, + 0xEB, 0x63, 0xA3, 0x9C, 0xD5, 0x18, 0x05, 0x39, 0x8E, 0xCE, 0xDA, 0x69, 0x91, 0xB7, 0x52, 0x79, + 0x00, 0xDB, 0xAE, 0x2F, 0x8A, 0xF2, 0x79, 0xBB, 0xFB, 0x58, 0x4E, 0xCA, 0xF3, 0x32, 0x8E, 0x62, + 0x42, 0x69, 0x9E, 0xC4, 0xDE, 0xC8, 0xFD, 0xE1, 0xA0, 0x8C, 0x1D, 0xD5, 0x38, 0x9D, 0xCE, 0xA2, + 0x28, 0xB9, 0x5C, 0x2E, 0x7D, 0x00, 0x91, 0x88, 0x28, 0x72, 0x87, 0xBA, 0x36, 0xD6, 0x20, 0x1C, + 0x28, 0xC6, 0xFB, 0x63, 0x95, 0x66, 0xB1, 0x33, 0xA6, 0x6D, 0x07, 0x07, 0x50, 0x96, 0xA6, 0x7D, + 0xDF, 0x52, 0xCE, 0x62, 0x1E, 0xD5, 0x75, 0x73, 0xAC, 0xAA, 0xEB, 0x57, 0x97, 0x9C, 0x93, 0xA1, + 0x6E, 0xF3, 0x24, 0x16, 0x9C, 0xE5, 0x79, 0x5E, 0x37, 0xDD, 0x38, 0xAA, 0xB2, 0xCC, 0x38, 0xC7, + 0xF3, 0x69, 0x99, 0x26, 0xE9, 0xC3, 0x7A, 0x83, 0x08, 0x16, 0x8C, 0x39, 0xEB, 0x87, 0x4E, 0xA5, + 0x51, 0x22, 0x65, 0xA3, 0x3D, 0x42, 0x84, 0xE4, 0x19, 0x47, 0x20, 0x18, 0x8F, 0x4F, 0xB5, 0x1E, + 0x46, 0x9B, 0xA6, 0xB1, 0xB3, 0xA6, 0xEF, 0xDB, 0xC9, 0x74, 0xEA, 0xB4, 0xF4, 0x56, 0x1F, 0xAB, + 0xE6, 0x54, 0x55, 0x51, 0xCC, 0xD4, 0xA8, 0x92, 0x28, 0x7A, 0x71, 0xB5, 0xFA, 0xF2, 0xD3, 0xCB, + 0xC5, 0xBC, 0xA8, 0x1B, 0xA9, 0x95, 0xC5, 0x58, 0x38, 0x13, 0xEA, 0x5E, 0x87, 0xE0, 0xDB, 0x7E, + 0x50, 0xC6, 0x4D, 0x8A, 0xC4, 0x7A, 0xDF, 0x74, 0x5D, 0xDB, 0x9C, 0x42, 0xC0, 0x5D, 0xDF, 0x30, + 0x0A, 0x9B, 0xAE, 0xBB, 0x3C, 0x3F, 0xBF, 0x98, 0xA6, 0x18, 0xFB, 0x38, 0x49, 0x1C, 0xC0, 0xC6, + 0xDB, 0x59, 0x0A, 0xB1, 0xE9, 0x0F, 0xA7, 0xCE, 0x41, 0x12, 0xC5, 0xF1, 0xD9, 0xE5, 0xD5, 0xA1, + 0x71, 0xBF, 0xFE, 0xED, 0x7B, 0x4E, 0x19, 0x0E, 0x1E, 0x40, 0x40, 0xB9, 0x78, 0xDA, 0x35, 0x55, + 0xD3, 0x2D, 0x67, 0xD3, 0xE3, 0x61, 0x9D, 0x97, 0xE9, 0x67, 0xAF, 0xAF, 0xB9, 0xA0, 0xCA, 0xFA, + 0x61, 0x0C, 0xD7, 0xB3, 0x58, 0x60, 0x74, 0x68, 0xC6, 0xF5, 0xF6, 0x88, 0x19, 0x3E, 0xD4, 0x55, + 0x9E, 0x15, 0x4D, 0x37, 0x26, 0x71, 0x02, 0x00, 0xD8, 0x56, 0xAD, 0xF5, 0x80, 0x21, 0x38, 0x2F, + 0x63, 0xED, 0x40, 0x92, 0x14, 0x94, 0x45, 0x4A, 0xAB, 0xAE, 0x6E, 0xAC, 0x19, 0x30, 0x46, 0x6A, + 0xD4, 0x18, 0x51, 0x67, 0xC7, 0x3C, 0x4B, 0xAC, 0xB5, 0xBB, 0xC3, 0x91, 0xB2, 0x08, 0x41, 0xD4, + 0x76, 0x6D, 0xD3, 0xB6, 0x65, 0x39, 0xEB, 0x65, 0x1F, 0x31, 0x92, 0x44, 0xD1, 0xF6, 0x78, 0xA8, + 0xDB, 0x16, 0xFF, 0xFC, 0xBB, 0xAF, 0xB2, 0x98, 0xBB, 0xA1, 0xD6, 0x6A, 0x54, 0xDA, 0x88, 0x24, + 0x4A, 0xF2, 0x34, 0x4B, 0x29, 0x67, 0xFE, 0xE6, 0xE6, 0x05, 0xE6, 0x42, 0xB6, 0xFB, 0x44, 0xA0, + 0xAB, 0xF3, 0x89, 0x56, 0xAE, 0x48, 0x92, 0x38, 0x62, 0x55, 0x2D, 0xD7, 0xBB, 0x0A, 0x23, 0xDC, + 0x74, 0xE3, 0xFD, 0xFD, 0x56, 0x2B, 0x27, 0x18, 0x4B, 0x22, 0xE4, 0x83, 0x1D, 0x8D, 0xAF, 0xAA, + 0xC6, 0xFB, 0x00, 0x41, 0x38, 0x5B, 0xCD, 0xA9, 0x07, 0xF3, 0x69, 0x31, 0x2B, 0xB3, 0x8B, 0xE5, + 0x64, 0x56, 0xE6, 0x0C, 0xFB, 0x71, 0xB4, 0x4F, 0xDB, 0xD3, 0x2F, 0x7F, 0xFB, 0x16, 0x23, 0xF2, + 0xF5, 0x97, 0x6F, 0xA2, 0x88, 0xC5, 0x82, 0x47, 0x9C, 0x4F, 0xB2, 0x4C, 0x50, 0x8A, 0x20, 0xB2, + 0x56, 0x7B, 0x3F, 0x54, 0xED, 0x30, 0x0C, 0xE1, 0xCB, 0xAB, 0x09, 0x23, 0xE0, 0xD4, 0x39, 0x11, + 0xA5, 0x69, 0x59, 0x58, 0x2D, 0xD5, 0x60, 0x07, 0xE9, 0x8B, 0x24, 0xFD, 0x70, 0xFF, 0xFC, 0xB4, + 0x3E, 0xDC, 0xDE, 0xAD, 0x1F, 0x9F, 0x4E, 0x84, 0x92, 0x28, 0x16, 0x71, 0xCC, 0x36, 0xCF, 0x9B, + 0x3C, 0x8B, 0xA7, 0xD3, 0xEC, 0x27, 0x5F, 0xDF, 0x5C, 0x5D, 0x2F, 0x19, 0x67, 0x8C, 0x0B, 0xEB, + 0x5C, 0x70, 0x4E, 0xCA, 0xF1, 0x71, 0xB3, 0x0F, 0x10, 0x6F, 0xF7, 0xC7, 0x32, 0xCF, 0x07, 0xE5, + 0x1E, 0xB7, 0x87, 0x00, 0xC0, 0xDD, 0xE3, 0xD3, 0xEE, 0xB0, 0xE7, 0x9C, 0x69, 0xA3, 0x7B, 0x29, + 0x2F, 0x57, 0xD3, 0x2C, 0x61, 0xDE, 0xA1, 0xF5, 0xB6, 0xB5, 0xC6, 0x24, 0x11, 0xD2, 0xC6, 0x6C, + 0x0E, 0xF5, 0xDB, 0xF7, 0xEB, 0x61, 0x30, 0x8C, 0xF1, 0xF3, 0xB3, 0x79, 0xF0, 0x7E, 0xB7, 0xAF, + 0x82, 0xF7, 0x87, 0x63, 0xDD, 0x74, 0xE3, 0x38, 0x2A, 0x0F, 0x40, 0x14, 0xF1, 0x45, 0x99, 0x4E, + 0x27, 0x69, 0x39, 0xCB, 0x29, 0xA3, 0xB3, 0x59, 0x51, 0xCE, 0xCA, 0x8B, 0x8B, 0xE5, 0xE5, 0xC5, + 0xE5, 0x72, 0x35, 0x7B, 0x71, 0xBD, 0xBC, 0xB9, 0xB9, 0xFA, 0xFA, 0x9B, 0x4F, 0x16, 0x8B, 0x32, + 0x8D, 0x93, 0xBE, 0xED, 0xDA, 0xBE, 0xFF, 0xCD, 0xEF, 0x1E, 0xF4, 0x68, 0x29, 0xA7, 0x0F, 0xCF, + 0x8D, 0x55, 0x5A, 0xF7, 0xE3, 0xE1, 0xD0, 0x6E, 0x36, 0xC7, 0xAF, 0xDE, 0xBC, 0xB0, 0xC6, 0xFD, + 0xDD, 0xEF, 0x3F, 0xFC, 0x70, 0xF7, 0x6C, 0x6C, 0xC0, 0x18, 0xE4, 0x59, 0x74, 0xFF, 0xB4, 0x01, + 0x10, 0x3A, 0xEF, 0xDB, 0xAE, 0x57, 0x46, 0xA7, 0x69, 0x3C, 0x2A, 0xCD, 0xA3, 0x14, 0x52, 0xE1, + 0x31, 0xD7, 0x4A, 0x7D, 0xF9, 0xFA, 0xF2, 0xD7, 0x7F, 0x78, 0xB7, 0xDE, 0x9E, 0x8A, 0xA2, 0x00, + 0x21, 0xAC, 0x16, 0xD3, 0x24, 0x4E, 0x9E, 0xF6, 0x6D, 0x33, 0x58, 0xCE, 0x69, 0x51, 0xE6, 0xA7, + 0xAA, 0xA3, 0x8C, 0x42, 0x84, 0x7E, 0x80, 0xAC, 0x12, 0x22, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xF7, 0xFB, 0x77, 0x3F, 0xFB, 0xCB, 0xFF, 0x7A, 0x90, 0x32, 0x47, 0x5B, 0x46, 0xF8, + 0x7A, 0xD3, 0x54, 0x4D, 0xBF, 0xDE, 0x37, 0xFD, 0xA0, 0xF2, 0x49, 0x52, 0xD7, 0xDD, 0x38, 0x9A, + 0x41, 0x1B, 0x29, 0x25, 0x89, 0x0A, 0x80, 0x58, 0x4E, 0x87, 0x00, 0xBC, 0xB2, 0x1E, 0x41, 0x90, + 0x94, 0x17, 0x34, 0xCA, 0xEB, 0xD3, 0x3E, 0x38, 0x9B, 0x24, 0xE2, 0x54, 0xB5, 0x00, 0x40, 0x04, + 0xC2, 0xA9, 0x3A, 0x79, 0x60, 0x11, 0x41, 0x9C, 0x47, 0xC3, 0xA0, 0x42, 0x00, 0x2F, 0xAF, 0x5F, + 0x50, 0x22, 0x0E, 0x55, 0xD3, 0x8F, 0x3A, 0x4E, 0x12, 0x65, 0xFD, 0xE9, 0xA4, 0x8E, 0x27, 0xE5, + 0x3C, 0xA0, 0x98, 0x58, 0x1B, 0xD6, 0xBB, 0xEE, 0xDD, 0xED, 0x13, 0x15, 0xAC, 0x93, 0xEE, 0xC3, + 0x87, 0xAD, 0xB5, 0x61, 0x31, 0xCF, 0x29, 0x21, 0xDB, 0x63, 0x1B, 0x40, 0x68, 0xDA, 0x6E, 0xBF, + 0xAF, 0x20, 0x42, 0x79, 0x96, 0x54, 0x75, 0xC7, 0x39, 0xD7, 0xDA, 0x10, 0x82, 0x30, 0x42, 0xF7, + 0x4F, 0x87, 0xB6, 0xD3, 0xDA, 0xD8, 0x5F, 0xFF, 0xE1, 0x7D, 0x37, 0xEA, 0xE7, 0xCD, 0xE9, 0xC3, + 0xDD, 0xB6, 0x1B, 0xB4, 0x75, 0x16, 0x01, 0x3C, 0x0C, 0xD6, 0xFB, 0x00, 0xAC, 0x5B, 0x4C, 0xCB, + 0x49, 0x99, 0xDD, 0xDD, 0x6D, 0x28, 0xA6, 0x20, 0xF8, 0xAE, 0x97, 0xC3, 0xA8, 0xB9, 0xE0, 0x8C, + 0xB2, 0xBB, 0xC7, 0xCD, 0x7A, 0x77, 0x18, 0x95, 0x31, 0xD6, 0x22, 0x44, 0xE4, 0x20, 0x01, 0x80, + 0x94, 0x12, 0x35, 0xF6, 0x04, 0x63, 0x82, 0xD0, 0x7E, 0xBF, 0x31, 0x2E, 0xB8, 0x00, 0xF2, 0x34, + 0x66, 0x94, 0x77, 0x5D, 0x57, 0x4C, 0xE6, 0x65, 0x39, 0x69, 0x9B, 0xD3, 0xDD, 0xC3, 0xFD, 0x76, + 0xB7, 0x07, 0x10, 0x47, 0xB1, 0xD8, 0xED, 0xAB, 0x56, 0x6A, 0xCC, 0x30, 0x44, 0x81, 0x32, 0xC2, + 0x62, 0xDA, 0xF6, 0x43, 0x00, 0x01, 0x13, 0x6C, 0x3D, 0xE0, 0x9C, 0xF7, 0xBD, 0x0C, 0xCE, 0x2E, + 0x56, 0x73, 0x29, 0x65, 0x5B, 0x77, 0x3E, 0x84, 0x58, 0xF0, 0xD9, 0x34, 0xB9, 0xBE, 0x9C, 0x17, + 0x85, 0x48, 0xD3, 0x48, 0x30, 0xC6, 0x08, 0x2A, 0x8B, 0x54, 0x10, 0x36, 0x8E, 0x8A, 0x46, 0x78, + 0xB1, 0x48, 0xF3, 0x49, 0x44, 0x05, 0x0E, 0x30, 0x64, 0x93, 0x08, 0x51, 0xC8, 0x63, 0x7E, 0xB1, + 0x9C, 0x40, 0x68, 0x0F, 0x87, 0xE3, 0x66, 0xB3, 0x89, 0x05, 0x86, 0x08, 0x59, 0x63, 0x39, 0x45, + 0x04, 0xE3, 0xC7, 0xE7, 0xCD, 0xA0, 0xD4, 0xB4, 0x88, 0x13, 0xC1, 0x3F, 0xBB, 0xB9, 0xCA, 0x52, + 0x56, 0xD7, 0xED, 0x7E, 0xDF, 0x3C, 0x6D, 0xF7, 0x4A, 0x2B, 0xA5, 0x1D, 0xA5, 0xC4, 0x39, 0x87, + 0x10, 0xEC, 0xBA, 0xBE, 0x6B, 0x3B, 0x86, 0x41, 0xDB, 0x75, 0x21, 0x80, 0x37, 0x2F, 0x57, 0xE7, + 0x8B, 0xF2, 0x93, 0x97, 0x97, 0x69, 0x14, 0xBF, 0x3C, 0xBF, 0x3A, 0x9F, 0x16, 0xC0, 0x39, 0x39, + 0xDA, 0xBA, 0x19, 0x86, 0x71, 0x5C, 0x4C, 0x72, 0xAD, 0xC6, 0x87, 0xC7, 0x83, 0x32, 0xD8, 0x07, + 0x2C, 0x47, 0x23, 0x07, 0x63, 0x1D, 0xE6, 0x34, 0x13, 0x34, 0x32, 0xD6, 0x7B, 0x80, 0xAC, 0xD1, + 0xC1, 0xD9, 0x24, 0x8A, 0x3E, 0xC2, 0x66, 0x59, 0x9C, 0x67, 0x29, 0x9D, 0x4E, 0x12, 0xEF, 0xE0, + 0xE1, 0xB0, 0xF7, 0x4E, 0x6B, 0x3D, 0x2E, 0x17, 0xCB, 0x97, 0x97, 0xE7, 0x8B, 0x69, 0x19, 0x82, + 0x7F, 0x7C, 0x5A, 0x1F, 0x8F, 0x4D, 0x12, 0x45, 0x10, 0x62, 0x39, 0x28, 0x63, 0x83, 0x1A, 0x87, + 0xDB, 0xBB, 0x7B, 0x4E, 0xE8, 0xCD, 0xCB, 0xEB, 0x34, 0x61, 0x82, 0xE2, 0x32, 0x15, 0x45, 0x9A, + 0x21, 0x88, 0xE2, 0x24, 0x6B, 0xFB, 0xDE, 0x7B, 0xA3, 0x8D, 0x7B, 0xDE, 0x1D, 0x62, 0x11, 0x2D, + 0x26, 0x39, 0x82, 0x3E, 0x89, 0x44, 0x24, 0xA2, 0xFD, 0xA9, 0x6E, 0xFB, 0xEE, 0x69, 0xBB, 0xDD, + 0x57, 0xA7, 0xF5, 0xFE, 0x00, 0x10, 0x86, 0xFF, 0xF3, 0xFF, 0xF8, 0xEF, 0xCE, 0x57, 0xA5, 0x32, + 0x76, 0xBD, 0xDD, 0x73, 0x42, 0x86, 0x61, 0x80, 0x18, 0x2A, 0xE5, 0x10, 0x84, 0xDA, 0x38, 0x84, + 0x08, 0x0A, 0x90, 0x40, 0xC8, 0x90, 0x4D, 0x58, 0x98, 0x4D, 0x57, 0x00, 0x80, 0xE7, 0x5D, 0xE5, + 0x3C, 0x2E, 0xCB, 0x92, 0x12, 0x6C, 0xF4, 0x80, 0x08, 0xEB, 0xFB, 0xFE, 0x54, 0x3D, 0xFE, 0xFD, + 0x1F, 0xD7, 0x3A, 0x40, 0x80, 0x51, 0xB0, 0xE6, 0x6C, 0x36, 0xFD, 0xF4, 0xE6, 0xE5, 0xD0, 0x28, + 0xCE, 0x59, 0xC4, 0xE9, 0x66, 0x77, 0x20, 0x14, 0x97, 0x65, 0x7A, 0xFF, 0x7C, 0x7C, 0x5A, 0x1F, + 0x5E, 0x5D, 0xA4, 0xD7, 0x17, 0x33, 0xED, 0x08, 0xA1, 0xA2, 0xED, 0xBD, 0x87, 0x74, 0x7B, 0x38, + 0x31, 0x04, 0x66, 0xB9, 0xE0, 0x1C, 0x19, 0x7D, 0xA2, 0x34, 0x75, 0x3E, 0xC0, 0x30, 0x76, 0x5D, + 0x2D, 0x15, 0x1E, 0xF4, 0xD8, 0xC9, 0x1E, 0x7A, 0xC4, 0x68, 0x74, 0x76, 0x31, 0xEF, 0xA5, 0xED, + 0xFB, 0xA1, 0x28, 0x52, 0xAB, 0xFD, 0x62, 0x9A, 0x9C, 0x86, 0x61, 0x57, 0xD5, 0x5A, 0xEB, 0xE3, + 0xBE, 0x92, 0xFD, 0x88, 0x30, 0xBF, 0x38, 0x5B, 0x60, 0x04, 0x8D, 0x33, 0xDE, 0xFB, 0xBA, 0x69, + 0xCA, 0x24, 0x05, 0x10, 0xAE, 0x0F, 0xD5, 0xE1, 0xD4, 0x4D, 0x8B, 0xFC, 0xCB, 0x37, 0x37, 0xC7, + 0xBA, 0xE3, 0x82, 0x1F, 0xAA, 0xF6, 0x78, 0x3C, 0xCE, 0x67, 0x93, 0x61, 0x18, 0x29, 0xC1, 0xA3, + 0xD2, 0x59, 0xC4, 0xCA, 0x24, 0x7A, 0xD8, 0x1E, 0xCA, 0x2C, 0xF9, 0xE2, 0xE5, 0x62, 0x34, 0xAA, + 0x1B, 0xAD, 0x1C, 0x24, 0x44, 0x28, 0xCF, 0x72, 0xAD, 0x54, 0x96, 0x47, 0xFB, 0xFD, 0x09, 0x40, + 0x64, 0x9D, 0x3D, 0x54, 0x15, 0x44, 0x14, 0x43, 0x18, 0x20, 0x78, 0xF5, 0xEA, 0xEC, 0x7A, 0x31, + 0x0D, 0x20, 0xB4, 0x72, 0xE8, 0x3A, 0xED, 0x03, 0xF2, 0xDE, 0x1B, 0xE7, 0xA2, 0x28, 0x26, 0x18, + 0x1B, 0xE3, 0xBA, 0xBA, 0xE5, 0x02, 0x83, 0x10, 0xB8, 0xA0, 0x45, 0x2E, 0xAC, 0xE9, 0x1F, 0x1F, + 0x0F, 0x0C, 0xD3, 0x43, 0xDB, 0x1D, 0x9B, 0x6E, 0x9E, 0x89, 0x2F, 0x5E, 0x5D, 0xB4, 0xD2, 0x27, + 0x22, 0x3E, 0x5B, 0xAC, 0xEE, 0xD7, 0xEB, 0x53, 0x23, 0x47, 0xE3, 0x9D, 0x73, 0xCE, 0x59, 0xAD, + 0x8D, 0xF5, 0x80, 0x51, 0xBA, 0xDE, 0x1D, 0x2E, 0xCF, 0x96, 0x14, 0x03, 0xC6, 0xA3, 0xF3, 0x8B, + 0xCB, 0x5E, 0x0E, 0x8F, 0xDB, 0xD3, 0xC3, 0xF3, 0xFA, 0xB3, 0xAB, 0xE5, 0xA2, 0x4C, 0xFF, 0xEF, + 0xBF, 0xFD, 0xF5, 0xB4, 0x28, 0x00, 0x80, 0x9F, 0xBF, 0x79, 0xBD, 0x9A, 0x17, 0x9D, 0x1A, 0xFE, + 0xE3, 0xDF, 0xBD, 0x5B, 0x2E, 0x8A, 0x38, 0x25, 0x01, 0x50, 0xD9, 0x8D, 0x8B, 0x92, 0x7F, 0xB8, + 0x7D, 0xE0, 0xD9, 0x62, 0xBE, 0xB8, 0xBC, 0xFD, 0xFD, 0x5F, 0xFF, 0xEB, 0xBF, 0xFA, 0xE2, 0xF6, + 0x41, 0x6A, 0xEF, 0x4F, 0xC7, 0xFE, 0xE2, 0xC5, 0x65, 0x9E, 0x85, 0xBE, 0xE9, 0x07, 0xE9, 0xEB, + 0x5A, 0xFB, 0xE0, 0xA2, 0xA4, 0xD0, 0x16, 0x0E, 0xF5, 0x26, 0x49, 0xE3, 0xC7, 0x4D, 0x75, 0xAA, + 0x9A, 0xC5, 0x6C, 0x1E, 0x15, 0xB3, 0xB6, 0xDE, 0x31, 0x8A, 0x2F, 0xCE, 0x17, 0x79, 0x9E, 0xEC, + 0xAA, 0x36, 0xA6, 0x28, 0x66, 0x81, 0xA0, 0x00, 0x11, 0xC4, 0x98, 0x95, 0x69, 0x3E, 0x2A, 0xD5, + 0xF7, 0xC3, 0x74, 0x3A, 0xF3, 0x0E, 0x9C, 0xAA, 0x46, 0x29, 0x1D, 0x20, 0xEC, 0xA4, 0xA6, 0x84, + 0x3B, 0xE7, 0xA8, 0xC0, 0x59, 0xC2, 0xA6, 0x45, 0xEA, 0x9C, 0xDF, 0x6D, 0x77, 0x8F, 0x9B, 0xC3, + 0xA0, 0xD4, 0x8B, 0xB3, 0x19, 0x40, 0x30, 0x66, 0x78, 0x56, 0x4E, 0xAA, 0x4A, 0x8D, 0x56, 0x3F, + 0x6D, 0xF6, 0x93, 0x22, 0x87, 0x10, 0xCC, 0xCB, 0xDC, 0x05, 0x68, 0xAD, 0x2D, 0xCA, 0xD2, 0x9A, + 0xD1, 0x6A, 0xC5, 0x19, 0xEB, 0x95, 0xFD, 0xF1, 0xF6, 0x69, 0xB5, 0x9A, 0xC6, 0xB1, 0xC8, 0x62, + 0x91, 0x66, 0x6C, 0xD0, 0xF6, 0xB0, 0xAB, 0x17, 0xB3, 0xC9, 0xF3, 0xBE, 0x62, 0x51, 0x6A, 0xE5, + 0xF0, 0xA7, 0xDF, 0xDC, 0x8C, 0xCE, 0xFE, 0xDD, 0xAF, 0xDE, 0x0D, 0x83, 0x52, 0xD6, 0x29, 0x35, + 0x4E, 0xA7, 0xB9, 0xE0, 0x94, 0x10, 0xFA, 0xB8, 0xDD, 0x37, 0x4D, 0xE7, 0x5D, 0x88, 0x45, 0x74, + 0xB7, 0xDE, 0xC9, 0x61, 0x9C, 0x4F, 0xA7, 0x10, 0x41, 0x0C, 0x81, 0x20, 0xB8, 0xED, 0xDA, 0x7D, + 0xD3, 0xCE, 0xA7, 0x93, 0xB2, 0xC8, 0x39, 0x13, 0x71, 0x3A, 0xF9, 0xF0, 0xFE, 0xDD, 0x6C, 0x3A, + 0x3B, 0x5B, 0xCC, 0xB7, 0xDB, 0xED, 0x47, 0x4E, 0x68, 0xD4, 0xDA, 0xFB, 0x90, 0xA5, 0x1C, 0x62, + 0xD4, 0xC9, 0x61, 0x3E, 0xCB, 0x61, 0x70, 0x5C, 0x70, 0x07, 0x90, 0xF3, 0x60, 0xEC, 0x07, 0x1F, + 0x10, 0xE7, 0x74, 0xEC, 0x3B, 0xE8, 0x5C, 0x39, 0xCF, 0xF5, 0x30, 0xD6, 0x75, 0xFF, 0xCF, 0xFE, + 0xFC, 0xAB, 0x59, 0x96, 0x4A, 0x39, 0x1C, 0x9A, 0xC1, 0x79, 0x4B, 0x09, 0xD4, 0xCA, 0x00, 0x48, + 0x8C, 0xC5, 0x3E, 0x20, 0xCA, 0x41, 0x14, 0x11, 0x08, 0x3C, 0x12, 0xEC, 0x78, 0x68, 0xFB, 0x7E, + 0x28, 0x26, 0x85, 0x1A, 0x35, 0x40, 0x30, 0x66, 0x74, 0x39, 0x9B, 0x04, 0xEF, 0xBD, 0xF3, 0x8B, + 0x45, 0x99, 0xC4, 0x82, 0x13, 0xD1, 0x34, 0xED, 0x30, 0x8C, 0x7D, 0xD7, 0x10, 0x4C, 0x63, 0xCE, + 0xBA, 0xBE, 0xAB, 0xFB, 0xE6, 0x58, 0xB7, 0x11, 0x17, 0x75, 0xDD, 0x9F, 0x9D, 0x2F, 0xD2, 0x34, + 0x46, 0x18, 0x72, 0xC6, 0x3E, 0xEE, 0x17, 0x20, 0x8C, 0x30, 0xC1, 0x46, 0xAB, 0x5E, 0xAA, 0xFA, + 0x20, 0x8D, 0x0A, 0xC6, 0x2B, 0xEB, 0x6C, 0x96, 0x44, 0x5F, 0x7C, 0xF6, 0x5A, 0x20, 0xCC, 0x10, + 0xEF, 0xA4, 0x62, 0x8C, 0x0C, 0xAA, 0x5F, 0xEF, 0x8E, 0x1E, 0x84, 0xB6, 0x1B, 0xB2, 0x24, 0x22, + 0x94, 0x34, 0x9D, 0x8C, 0x38, 0x27, 0x84, 0x51, 0x22, 0x7C, 0xF0, 0xA3, 0x32, 0xDE, 0xDB, 0x22, + 0x67, 0x69, 0x9E, 0x58, 0x17, 0xA4, 0xB4, 0xBB, 0xFD, 0xC9, 0x6A, 0x47, 0x88, 0x35, 0x76, 0xDC, + 0x1F, 0x95, 0x36, 0x3E, 0x4F, 0xE9, 0xCD, 0xF5, 0x72, 0x39, 0x9B, 0x36, 0xED, 0x30, 0x18, 0x8F, + 0x31, 0xC3, 0x04, 0x1C, 0x0E, 0x07, 0xAF, 0x8D, 0x32, 0xE6, 0x77, 0xEF, 0x1E, 0x10, 0x66, 0xD6, + 0xD9, 0xF7, 0xF7, 0x4F, 0x93, 0x3C, 0xFB, 0xFC, 0xE6, 0xE5, 0xFE, 0x74, 0x48, 0xE2, 0x68, 0xBE, + 0x58, 0x4C, 0xCB, 0x49, 0x2C, 0x92, 0x57, 0x2F, 0x5F, 0x5B, 0x67, 0x0F, 0xA7, 0x1D, 0x42, 0x4C, + 0x0E, 0x63, 0x7D, 0xB8, 0xED, 0xDB, 0x26, 0x00, 0x96, 0xA5, 0x05, 0xA5, 0xFC, 0xEE, 0x79, 0x53, + 0x96, 0x85, 0xD1, 0x5A, 0x99, 0x51, 0x2B, 0xB3, 0x98, 0x9F, 0x93, 0x1F, 0x7E, 0x7C, 0xD8, 0xEF, + 0x4F, 0xB3, 0x79, 0x6C, 0x94, 0x6B, 0x1B, 0xBD, 0xD9, 0x1E, 0xAD, 0x77, 0xC3, 0x68, 0x9A, 0x5A, + 0x41, 0x04, 0x09, 0x42, 0x11, 0x27, 0x08, 0xFA, 0xCF, 0x6F, 0x32, 0x42, 0x48, 0x33, 0x1C, 0x29, + 0x61, 0x59, 0x42, 0x93, 0x24, 0x21, 0x8C, 0xC4, 0x1C, 0x3B, 0x97, 0x36, 0x7D, 0x7B, 0x52, 0xCF, + 0x08, 0xF5, 0x9F, 0x7F, 0x7E, 0x65, 0x90, 0xB0, 0x2E, 0x18, 0xA5, 0x5E, 0x2E, 0x16, 0xB2, 0x95, + 0x2E, 0xF8, 0x6E, 0x90, 0x6F, 0x3F, 0xEC, 0xA5, 0xD2, 0x11, 0x87, 0xBB, 0x8A, 0xF5, 0x83, 0x89, + 0x63, 0x3A, 0x2D, 0xCB, 0xC7, 0x67, 0xA9, 0x6D, 0x60, 0x91, 0xF9, 0xFB, 0xB7, 0x0F, 0x5D, 0xD7, + 0x5E, 0x9E, 0x9F, 0x67, 0x11, 0x47, 0x10, 0xC0, 0x1E, 0x45, 0x2C, 0x43, 0x88, 0x1A, 0x2B, 0xA5, + 0x54, 0x51, 0x54, 0xAE, 0xF2, 0xB4, 0xD5, 0x68, 0x81, 0xD1, 0x0F, 0x6F, 0xFF, 0xB0, 0x5F, 0x1F, + 0xAF, 0xAF, 0x2F, 0x3C, 0x02, 0x01, 0x85, 0xA6, 0xAD, 0xCC, 0x18, 0x30, 0x0A, 0xDD, 0x38, 0xBE, + 0x58, 0x14, 0x5C, 0x70, 0xF0, 0xEA, 0xA2, 0x6B, 0xC7, 0x63, 0x63, 0x22, 0x4E, 0xB3, 0x8C, 0x74, + 0xCA, 0x3E, 0x3D, 0x1F, 0xE6, 0x59, 0x91, 0xC6, 0x51, 0xD3, 0x36, 0xA3, 0x94, 0x82, 0xE0, 0xCF, + 0x5E, 0x5E, 0xA6, 0x69, 0x1A, 0x82, 0x1D, 0xC7, 0xD1, 0x59, 0x3B, 0x9F, 0x4E, 0xBA, 0xB6, 0x61, + 0x04, 0x71, 0x04, 0x10, 0xC7, 0x45, 0x84, 0xB5, 0xEA, 0x9D, 0x51, 0xC3, 0x10, 0xFA, 0x21, 0xDF, + 0x1E, 0x2B, 0x26, 0x18, 0xE5, 0x6C, 0x52, 0xE6, 0xB2, 0x1F, 0xF3, 0x32, 0x39, 0x1D, 0xEB, 0x61, + 0xD4, 0x1F, 0x27, 0x6B, 0x40, 0x80, 0xC6, 0x98, 0xC1, 0x38, 0x82, 0xB1, 0x55, 0x1A, 0x05, 0x72, + 0xFF, 0xBC, 0x7B, 0xDA, 0x6C, 0xE3, 0x2C, 0xF1, 0x1E, 0x30, 0x4A, 0xE5, 0xA8, 0x8D, 0xF3, 0xC3, + 0xE0, 0x37, 0xBB, 0x6E, 0x91, 0xE3, 0x9B, 0x17, 0x17, 0x51, 0x8C, 0xA3, 0x38, 0xA2, 0x44, 0x28, + 0x95, 0x5E, 0x2C, 0xE7, 0x10, 0x82, 0xBF, 0xFE, 0x9B, 0xDF, 0xD4, 0xC7, 0xFA, 0xDB, 0xCF, 0x2F, + 0x49, 0x84, 0x0B, 0x4C, 0x12, 0x2E, 0x6E, 0x1F, 0x1F, 0xEF, 0x9E, 0x36, 0x84, 0x8A, 0x28, 0x8A, + 0x4E, 0x7D, 0x6F, 0xAC, 0x3D, 0xB6, 0x72, 0x31, 0x99, 0x18, 0xEB, 0x3E, 0xA2, 0x83, 0xC6, 0xC3, + 0xD5, 0x74, 0xFE, 0x8B, 0xBF, 0xFB, 0xD5, 0x30, 0x2A, 0xE7, 0xEC, 0x2C, 0x4D, 0xFE, 0xF4, 0xAB, + 0x4F, 0xFE, 0xC3, 0xAF, 0x7E, 0x5B, 0x4E, 0xE6, 0x84, 0x90, 0x57, 0xAF, 0x2E, 0x38, 0x63, 0x6D, + 0xD7, 0xBC, 0xF9, 0x3C, 0xFE, 0xFE, 0x47, 0x4A, 0x29, 0x0A, 0xC0, 0x12, 0x86, 0x96, 0x0B, 0x66, + 0x7D, 0xB4, 0xBA, 0xBA, 0xF9, 0xEE, 0x4F, 0x96, 0xBF, 0xF8, 0xDB, 0x5F, 0x7D, 0xFB, 0xDD, 0x8D, + 0xA1, 0x8C, 0x24, 0x32, 0x66, 0xEC, 0xEA, 0xF5, 0x32, 0xE5, 0x18, 0xD8, 0x26, 0x66, 0xE4, 0xE1, + 0x59, 0x75, 0xDD, 0x78, 0x7E, 0x79, 0x56, 0xCC, 0xCF, 0x7E, 0xF3, 0x8B, 0xFF, 0xB8, 0x9C, 0x97, + 0xA7, 0xB6, 0x2F, 0x0B, 0x61, 0x9D, 0x4B, 0xCA, 0x89, 0x1C, 0x0E, 0x10, 0xF8, 0xD9, 0x62, 0x85, + 0xA8, 0xD8, 0x1E, 0xAB, 0xE0, 0x1D, 0x20, 0x2C, 0xCB, 0x33, 0x82, 0x21, 0xE3, 0x42, 0x8F, 0x1A, + 0x53, 0xC4, 0xB0, 0x68, 0xFA, 0xE1, 0xFE, 0x61, 0x93, 0xC4, 0x29, 0x42, 0xF8, 0x67, 0xDF, 0x7D, + 0xF9, 0xE1, 0x7E, 0x7B, 0xF7, 0xF0, 0x3D, 0xE3, 0xBC, 0x2C, 0xB3, 0xBA, 0x6D, 0x9D, 0x8F, 0xFB, + 0x41, 0xEB, 0x51, 0x5F, 0x9F, 0x2F, 0x0F, 0xCD, 0xC8, 0x38, 0x1A, 0x94, 0xDE, 0x1F, 0xDB, 0xB2, + 0x14, 0x8B, 0xD5, 0x02, 0x41, 0xD5, 0xB5, 0xDD, 0xB4, 0x48, 0xF3, 0x2C, 0x8F, 0x04, 0x7B, 0x7E, + 0x7C, 0x5A, 0x2E, 0x17, 0xDA, 0x3A, 0x8A, 0x70, 0x00, 0x24, 0xCF, 0x59, 0x14, 0xF1, 0x68, 0x30, + 0xE5, 0x37, 0xAF, 0x27, 0x93, 0xCC, 0x68, 0xD0, 0x77, 0x92, 0x00, 0x94, 0x0A, 0x3A, 0x7D, 0x73, + 0xD6, 0xF6, 0x43, 0x92, 0xF2, 0x41, 0x19, 0x63, 0x6D, 0xD3, 0xB5, 0x79, 0x96, 0x7D, 0xF6, 0xC9, + 0xCB, 0x76, 0x1C, 0xEB, 0xAA, 0xCE, 0x93, 0x94, 0x52, 0x88, 0x09, 0xA4, 0x0C, 0x9F, 0x9D, 0x65, + 0x5C, 0xD0, 0xC3, 0xA1, 0x1D, 0x3A, 0x35, 0x5A, 0x1D, 0x40, 0xB9, 0x98, 0x4C, 0x9F, 0x9E, 0x37, + 0xD6, 0xE8, 0x46, 0x1A, 0x82, 0xD1, 0x6A, 0x3A, 0xBD, 0xBE, 0x5C, 0x05, 0x8F, 0xB4, 0x0D, 0x4D, + 0x5D, 0x7D, 0x7A, 0x73, 0xFE, 0xE9, 0xCD, 0xBC, 0xEF, 0x54, 0xCC, 0x0A, 0x4A, 0x67, 0xD6, 0xC1, + 0x1F, 0x1F, 0x36, 0x75, 0x33, 0x20, 0x00, 0x18, 0xC1, 0x1A, 0xE2, 0x49, 0x92, 0xDF, 0x3D, 0xAE, + 0xD5, 0xAE, 0xC9, 0x53, 0xE6, 0x02, 0x00, 0x84, 0xF5, 0x6D, 0xD7, 0x9C, 0x5C, 0x1E, 0xF3, 0x2C, + 0xE5, 0xA6, 0xEF, 0x5F, 0x5E, 0x9F, 0x2F, 0x7F, 0x3A, 0xCD, 0x12, 0x21, 0x7B, 0x0D, 0x29, 0x5F, + 0x2D, 0x23, 0x42, 0x89, 0x33, 0xEE, 0xF1, 0x79, 0xED, 0x4C, 0x30, 0xDA, 0xBE, 0xBD, 0xDF, 0x58, + 0xAB, 0x5F, 0x5D, 0xCF, 0xEB, 0xBA, 0x8D, 0xB3, 0x58, 0x8D, 0x3A, 0x00, 0x38, 0x8E, 0x2E, 0x4A, + 0xE3, 0xE6, 0xD4, 0xCC, 0x27, 0xF9, 0x3E, 0xD4, 0x84, 0xE0, 0xCB, 0xB3, 0xB9, 0x0F, 0x60, 0xB9, + 0x98, 0xCB, 0xAA, 0x05, 0x41, 0xC7, 0x71, 0x98, 0x16, 0x45, 0x2F, 0x43, 0xDB, 0x5B, 0x15, 0x60, + 0x40, 0xEC, 0xEA, 0xE2, 0x2A, 0x8E, 0x44, 0x51, 0xB4, 0x5C, 0x08, 0x6D, 0x8C, 0x57, 0xC1, 0x28, + 0xE8, 0xA1, 0x6E, 0xEB, 0x1E, 0x53, 0x26, 0x62, 0x01, 0x02, 0xF4, 0x84, 0x4C, 0xCE, 0x4B, 0x6C, + 0x7D, 0xD3, 0x0D, 0x8C, 0x11, 0xC1, 0xD9, 0xDD, 0xD3, 0x16, 0x04, 0xC0, 0x19, 0x8F, 0x38, 0x4F, + 0xA0, 0x90, 0x52, 0x3F, 0x6E, 0xAA, 0xBB, 0xC7, 0x0D, 0x63, 0x2C, 0xCB, 0x12, 0x1F, 0x82, 0x33, + 0x96, 0x0B, 0x26, 0x78, 0x84, 0x61, 0xE0, 0x9C, 0xE4, 0x79, 0x16, 0x73, 0x7A, 0x38, 0xD6, 0xBF, + 0x7B, 0xFB, 0x60, 0x5C, 0x10, 0x82, 0x66, 0x79, 0x7C, 0x76, 0x5E, 0x7A, 0x63, 0x3C, 0xCC, 0x47, + 0x75, 0x7C, 0x78, 0xDE, 0x6F, 0x0F, 0xD5, 0xFE, 0xD8, 0x72, 0xFA, 0xBD, 0xD1, 0x1A, 0xD3, 0xE8, + 0xFC, 0xFC, 0x65, 0x1C, 0x51, 0x4E, 0xA9, 0xF1, 0x26, 0x2F, 0xCA, 0x6F, 0x10, 0xE2, 0x51, 0xF6, + 0xC3, 0xDD, 0x73, 0x51, 0xCE, 0x30, 0x66, 0x49, 0x42, 0x9F, 0xB6, 0xFB, 0xFE, 0x78, 0xE8, 0xB4, + 0xB9, 0x7F, 0x3E, 0xE4, 0xA9, 0xF8, 0xE5, 0xEF, 0x7E, 0x3D, 0x9F, 0xCE, 0xE6, 0xB3, 0x65, 0x00, + 0x38, 0x11, 0x71, 0xDD, 0xE9, 0x7F, 0xF8, 0xFE, 0xBD, 0x32, 0xF6, 0xF3, 0x37, 0x5F, 0x7D, 0xFA, + 0xFA, 0xCD, 0xEB, 0x17, 0x04, 0x22, 0xA8, 0x95, 0x32, 0x1A, 0x11, 0x12, 0x19, 0xAB, 0xF1, 0x4F, + 0x7F, 0x72, 0x03, 0x20, 0xBC, 0x7F, 0xD8, 0x7F, 0xB8, 0xDD, 0xB5, 0x9D, 0x3A, 0x56, 0xF5, 0xE1, + 0x58, 0xC7, 0x31, 0x3F, 0x9C, 0xDA, 0xBE, 0x37, 0x4A, 0x1B, 0x46, 0x7D, 0x00, 0x63, 0x37, 0xC8, + 0xAA, 0x1D, 0x02, 0xD0, 0x6D, 0x2B, 0x23, 0x11, 0x85, 0xE0, 0x94, 0x91, 0xB5, 0xEC, 0xDE, 0xDE, + 0xEE, 0xFF, 0xBF, 0x5F, 0x7E, 0xFF, 0xB0, 0x3E, 0x68, 0x1D, 0x30, 0x25, 0x71, 0x9C, 0xB6, 0x4D, + 0xE7, 0xAC, 0x69, 0xA5, 0x14, 0x09, 0x9D, 0xCD, 0x93, 0xA2, 0xE0, 0x69, 0x26, 0x48, 0xCC, 0x09, + 0x06, 0xC7, 0xA6, 0xF3, 0x1E, 0x16, 0x69, 0x62, 0x74, 0xB0, 0x1E, 0x5B, 0x80, 0x1F, 0xB6, 0x95, + 0xF5, 0x21, 0x89, 0x45, 0xC2, 0xE9, 0xA0, 0xC6, 0xED, 0xA9, 0xDD, 0xD7, 0xFD, 0xF3, 0xA1, 0x5A, + 0x1F, 0xFB, 0x63, 0xA3, 0x06, 0xE5, 0xBD, 0x85, 0xBB, 0x93, 0x6C, 0xA5, 0xC3, 0xD0, 0x5F, 0x2C, + 0x27, 0x45, 0x16, 0x9D, 0x1A, 0x89, 0xBD, 0x32, 0xAA, 0xA9, 0x1A, 0x29, 0xD5, 0xD0, 0x76, 0xE3, + 0xA7, 0xAF, 0x5E, 0x30, 0x4C, 0x4F, 0xA7, 0x91, 0xB2, 0x28, 0x00, 0x72, 0x75, 0x3E, 0x85, 0x10, + 0x07, 0x88, 0xB5, 0x76, 0x08, 0xE2, 0xEB, 0xB3, 0x95, 0x1A, 0xD5, 0x1F, 0x7F, 0xBC, 0x9B, 0x4D, + 0x8A, 0x6F, 0x3F, 0x7B, 0x45, 0x69, 0xE2, 0x00, 0x6A, 0x8E, 0x7B, 0x0A, 0xCC, 0x7C, 0x56, 0x9C, + 0x9A, 0x56, 0x0D, 0x27, 0x86, 0x21, 0x70, 0x3E, 0x89, 0x84, 0x60, 0x10, 0x38, 0x17, 0x47, 0xAC, + 0xCC, 0x45, 0xDB, 0xC8, 0xDD, 0xB1, 0x3E, 0x56, 0xED, 0x24, 0xCF, 0x81, 0x0B, 0x7D, 0x3F, 0x60, + 0x08, 0x8D, 0x52, 0x49, 0x9C, 0x1E, 0x9B, 0xB1, 0x9C, 0xA4, 0xCB, 0x59, 0xD9, 0x34, 0x9D, 0xD1, + 0x5A, 0x08, 0xFC, 0xE6, 0xC5, 0x95, 0x60, 0xC9, 0x87, 0x87, 0xE7, 0x2C, 0x4E, 0x08, 0xC5, 0x4D, + 0xD3, 0xAA, 0x61, 0x3C, 0x1E, 0x9B, 0x69, 0x1A, 0x57, 0x75, 0x47, 0x09, 0xFD, 0x27, 0x3F, 0x7D, + 0xE9, 0x80, 0xFD, 0x70, 0xBF, 0xBF, 0xBF, 0x3F, 0x9C, 0xEA, 0xF6, 0xF6, 0x76, 0xBB, 0xDB, 0x77, + 0x08, 0xC3, 0xB3, 0xD5, 0xF4, 0xEA, 0x72, 0x19, 0x82, 0x3F, 0x9D, 0x3A, 0xAB, 0xD4, 0x30, 0x8E, + 0x9B, 0x7D, 0x15, 0x30, 0xC5, 0x88, 0xDC, 0x3F, 0x3E, 0xB5, 0x9D, 0xF4, 0x20, 0x1C, 0xAB, 0x06, + 0x42, 0xB0, 0x39, 0xD4, 0x04, 0xA1, 0xFD, 0xA9, 0x3A, 0xBF, 0x7A, 0x79, 0xD8, 0x3E, 0x57, 0x75, + 0x13, 0xC5, 0xC9, 0x97, 0x9F, 0xBC, 0xF8, 0x57, 0xFF, 0xC5, 0xCF, 0x7E, 0xFF, 0xEE, 0xEE, 0x3F, + 0xFD, 0xE6, 0xFB, 0xC5, 0x62, 0xF5, 0x93, 0xEF, 0xFE, 0x6C, 0x92, 0xD3, 0xBA, 0xD9, 0xDA, 0xB1, + 0x0A, 0xC6, 0xF4, 0xCA, 0x42, 0x84, 0x2E, 0xAF, 0xA6, 0xCE, 0x48, 0x04, 0xE9, 0x62, 0x9E, 0xE6, + 0xDC, 0x0C, 0xF5, 0xDD, 0xC5, 0x45, 0xCA, 0x08, 0xB0, 0x66, 0x78, 0x75, 0x9E, 0x7B, 0x67, 0x09, + 0x04, 0xCE, 0xA8, 0xA6, 0xE9, 0x1D, 0xC4, 0xC7, 0xD3, 0x68, 0x8C, 0x0E, 0x48, 0x38, 0x5B, 0x4D, + 0x67, 0xC2, 0x38, 0x3F, 0x9D, 0xA5, 0x8B, 0xCB, 0x15, 0x8F, 0xE6, 0xDB, 0xDD, 0xCE, 0x7B, 0x54, + 0x94, 0xD3, 0x80, 0x28, 0x26, 0xAC, 0xDA, 0x6F, 0x9F, 0x1F, 0x36, 0x14, 0x53, 0x00, 0xE0, 0xDD, + 0xFD, 0xAE, 0xEB, 0x06, 0x6D, 0xFD, 0xFB, 0xF7, 0x5B, 0x00, 0x21, 0x63, 0x14, 0x22, 0x54, 0xD7, + 0xDD, 0xF1, 0xD8, 0xD6, 0xDD, 0xA0, 0x8C, 0xF5, 0x21, 0x6C, 0xF6, 0xC7, 0x51, 0xE9, 0xE0, 0xBD, + 0xF3, 0xBE, 0xE9, 0x86, 0x61, 0xB4, 0x9D, 0xD4, 0x8B, 0x69, 0x39, 0x9B, 0x24, 0x88, 0x12, 0x88, + 0x08, 0x15, 0xD8, 0xF9, 0x60, 0x47, 0x4F, 0x30, 0xE6, 0x2C, 0x2C, 0x66, 0x49, 0x99, 0xA5, 0x7A, + 0xD4, 0xD7, 0xE7, 0xAB, 0xD5, 0xA2, 0xC0, 0x84, 0x6D, 0x76, 0xA7, 0xBC, 0xE0, 0x16, 0x90, 0xED, + 0xAE, 0x99, 0x16, 0x29, 0x86, 0xE8, 0x58, 0x75, 0x51, 0xC4, 0x41, 0x08, 0x94, 0x62, 0xEF, 0x82, + 0x0F, 0x80, 0x32, 0x02, 0x43, 0x58, 0xCD, 0xCB, 0x2C, 0x62, 0x9C, 0x90, 0xED, 0xA1, 0x81, 0x18, + 0xAE, 0x96, 0x79, 0xD3, 0x48, 0x29, 0xC7, 0xC3, 0xA9, 0xDD, 0x57, 0x7D, 0x5D, 0x0F, 0xBB, 0x6D, + 0x9D, 0xE7, 0x59, 0x31, 0xCD, 0xA6, 0xD3, 0x82, 0x22, 0x54, 0x66, 0xEC, 0xCB, 0xCF, 0xAE, 0xA7, + 0x45, 0x51, 0x64, 0xD9, 0x3F, 0xFD, 0xF9, 0x57, 0xF3, 0x69, 0x52, 0xE4, 0x49, 0xCC, 0xA9, 0xB6, + 0x36, 0xA2, 0x60, 0x39, 0x89, 0x77, 0x87, 0x4A, 0x8D, 0xF6, 0x7C, 0x5E, 0xCE, 0xA7, 0x45, 0x9E, + 0xB2, 0x17, 0x97, 0x93, 0x32, 0x8D, 0x2E, 0x17, 0xE5, 0xF5, 0x59, 0x9E, 0x70, 0x76, 0xFF, 0xB4, + 0x33, 0xD6, 0xBE, 0xB8, 0x9A, 0x9D, 0xAF, 0xA6, 0x57, 0x67, 0x8B, 0xC5, 0xB4, 0x7C, 0x7A, 0xDA, + 0x49, 0xD9, 0x5F, 0xAC, 0x32, 0x65, 0xED, 0x64, 0x52, 0x9C, 0x2D, 0x56, 0xCF, 0xEB, 0x36, 0x00, + 0x34, 0x68, 0xD3, 0x49, 0xD5, 0x76, 0xC3, 0xC3, 0xC3, 0x3E, 0x40, 0x7C, 0x71, 0xB9, 0x58, 0xCD, + 0x27, 0x4D, 0xDF, 0xDD, 0x3E, 0xAC, 0x47, 0xA5, 0x16, 0xD3, 0xC9, 0x76, 0x7F, 0x94, 0xBD, 0x2A, + 0x26, 0xD9, 0xFD, 0xFD, 0x66, 0x1C, 0xF5, 0x20, 0x07, 0xEF, 0xFC, 0x7C, 0x3A, 0x35, 0x4A, 0xC3, + 0x00, 0x8B, 0x24, 0x59, 0x4C, 0x0A, 0xA3, 0xEC, 0xF3, 0xF3, 0x5E, 0x29, 0xED, 0x02, 0x7A, 0x5E, + 0x1F, 0x76, 0xA7, 0x4A, 0x79, 0x6B, 0x83, 0x03, 0x88, 0x1A, 0x1B, 0x20, 0x20, 0x4A, 0x99, 0x0F, + 0x1F, 0x9E, 0xC7, 0x41, 0x77, 0xED, 0x78, 0x7B, 0xF7, 0x7C, 0xFF, 0xB8, 0x11, 0x82, 0x03, 0x88, + 0xFA, 0x56, 0x9E, 0x6A, 0x79, 0xDA, 0x57, 0xDA, 0x58, 0x40, 0x10, 0xE3, 0x22, 0x38, 0xFF, 0xB1, + 0xFB, 0xDB, 0xF6, 0xE3, 0x7A, 0x7F, 0xDA, 0xD7, 0xCD, 0xA1, 0xEE, 0x06, 0xE3, 0xF3, 0x49, 0x02, + 0x29, 0xFA, 0x68, 0x65, 0x3E, 0x6F, 0x0E, 0x84, 0x92, 0x43, 0xDD, 0x00, 0x08, 0x3B, 0x39, 0x48, + 0x39, 0x36, 0x9D, 0x74, 0xCE, 0x2B, 0x65, 0x5B, 0x69, 0x46, 0xEB, 0xAC, 0x73, 0xA3, 0x36, 0xC7, + 0xBA, 0x9D, 0x96, 0x65, 0x56, 0x4C, 0xA2, 0xA8, 0x0C, 0x01, 0x12, 0x82, 0x9B, 0xAE, 0x2F, 0xB2, + 0xDC, 0xFB, 0xA0, 0xB4, 0xA7, 0x98, 0x6E, 0xF7, 0x55, 0x27, 0xD5, 0xD3, 0xF6, 0x74, 0xF7, 0xB4, + 0x3B, 0x54, 0xB2, 0x1F, 0x95, 0x36, 0xC3, 0xF9, 0x62, 0xCE, 0x44, 0x4C, 0x18, 0xAD, 0xBB, 0xBE, + 0xAA, 0x07, 0xCE, 0xA2, 0x38, 0x9B, 0xB6, 0x83, 0xF3, 0x80, 0x50, 0x22, 0xCA, 0x24, 0xAF, 0xAB, + 0xB6, 0xED, 0xBA, 0x63, 0xD5, 0xD6, 0x9D, 0x62, 0x4C, 0x7C, 0xF1, 0xE9, 0x97, 0x6D, 0xD3, 0x0C, + 0x4A, 0x87, 0x78, 0x01, 0x30, 0xE6, 0xA1, 0x02, 0xC0, 0x30, 0xEC, 0xE0, 0xFF, 0xF2, 0x3F, 0xFD, + 0xF7, 0xBB, 0x43, 0xFD, 0xFD, 0x8F, 0x0F, 0xFB, 0xAA, 0xA9, 0xDA, 0x61, 0x54, 0x9A, 0x52, 0x7E, + 0xB6, 0x8A, 0xE5, 0xA0, 0xBE, 0x7F, 0xBB, 0x4E, 0x12, 0xFA, 0xC5, 0x27, 0xD3, 0x61, 0x18, 0xA5, + 0x52, 0x6F, 0x5E, 0x5C, 0xDD, 0xBC, 0xB8, 0x4A, 0x78, 0x2C, 0x04, 0x33, 0xCE, 0x76, 0xA3, 0x46, + 0x04, 0x3B, 0x6B, 0x21, 0xC4, 0xC6, 0x04, 0xA3, 0x64, 0xD3, 0x8D, 0x7D, 0x6F, 0xFB, 0xBE, 0x9B, + 0x2F, 0x0A, 0xCC, 0x88, 0xB1, 0x7E, 0x3E, 0xCD, 0x0B, 0xCE, 0x20, 0xF0, 0x49, 0xC6, 0xB3, 0x3C, + 0x1D, 0x8C, 0xFA, 0xFE, 0xF7, 0x1F, 0xB0, 0xE7, 0x8C, 0xF2, 0x7D, 0x35, 0x54, 0xBD, 0x36, 0x01, + 0x01, 0x60, 0xEB, 0x6A, 0xDB, 0xF4, 0x26, 0x49, 0x32, 0x67, 0xAD, 0x73, 0xDE, 0xF9, 0x70, 0xBE, + 0x2C, 0xF3, 0x4C, 0x5C, 0x9D, 0x17, 0x31, 0x47, 0xC6, 0x04, 0x17, 0x50, 0x73, 0xA8, 0xAD, 0x1C, + 0xE6, 0xCB, 0xB9, 0x0A, 0xA0, 0x6F, 0xF7, 0x80, 0xB0, 0xB6, 0xEF, 0x10, 0xF4, 0xD3, 0xC9, 0xF2, + 0x78, 0x90, 0x49, 0x46, 0x26, 0xF9, 0xC4, 0x06, 0x98, 0x26, 0x74, 0x3A, 0x15, 0x2E, 0x60, 0xA5, + 0x3D, 0xA5, 0x28, 0x62, 0xA4, 0xDE, 0xF7, 0xFB, 0xAA, 0xD5, 0x1E, 0x5D, 0x9C, 0x15, 0xFD, 0xF1, + 0xD4, 0x0E, 0x84, 0x32, 0x4A, 0x5C, 0x43, 0x78, 0x78, 0xDA, 0xD6, 0xDB, 0x43, 0x73, 0xBD, 0x2A, + 0xEC, 0xE8, 0x08, 0x61, 0x80, 0x50, 0x67, 0x87, 0x2C, 0x8B, 0x94, 0x03, 0xC1, 0x03, 0x6B, 0x1C, + 0x08, 0xFE, 0xE1, 0x71, 0xF7, 0xFA, 0xF5, 0x45, 0x44, 0x99, 0x0D, 0xFE, 0xF6, 0xFE, 0xFE, 0x72, + 0xB5, 0xDA, 0x1D, 0xAB, 0x63, 0xD7, 0x2F, 0x56, 0x93, 0xEA, 0xD8, 0x56, 0x55, 0xBB, 0x98, 0x67, + 0x45, 0x19, 0x2F, 0x67, 0xF3, 0xE0, 0xC9, 0xDD, 0xDD, 0x23, 0xC6, 0xB8, 0x1F, 0x54, 0x31, 0x89, + 0x8D, 0x52, 0x4D, 0x3D, 0xCE, 0x67, 0xF9, 0xDD, 0xE3, 0xEE, 0x4F, 0xBF, 0xBD, 0x81, 0xC0, 0xEF, + 0x4E, 0x95, 0x31, 0x7E, 0xBD, 0xA9, 0x29, 0xC5, 0x59, 0x9A, 0x74, 0xFD, 0x00, 0x81, 0xBF, 0xB8, + 0x98, 0x8F, 0x83, 0x1B, 0x86, 0x76, 0xB9, 0x2C, 0x82, 0x37, 0x75, 0x3B, 0x68, 0xED, 0x9D, 0xC5, + 0xD5, 0x51, 0x2A, 0xAD, 0x29, 0x25, 0x10, 0xC1, 0x62, 0x22, 0x70, 0x60, 0x88, 0xB0, 0x9B, 0xAB, + 0xD9, 0xB4, 0x2C, 0x02, 0xE4, 0x66, 0x6C, 0xAD, 0x83, 0x6A, 0x54, 0x88, 0xD0, 0xC5, 0x2C, 0xDF, + 0x57, 0x8D, 0xB5, 0x36, 0x2B, 0x4A, 0x1C, 0x2F, 0xFA, 0xF6, 0x3D, 0x85, 0x92, 0x04, 0x6E, 0x0D, + 0xD4, 0x44, 0x9B, 0x20, 0x60, 0x38, 0xF5, 0x6D, 0x83, 0x20, 0x03, 0x40, 0xBB, 0x7E, 0x30, 0xDA, + 0x27, 0xF3, 0x8C, 0x20, 0x88, 0xBC, 0xF1, 0xDE, 0x69, 0x63, 0xAD, 0x85, 0xCB, 0x79, 0x71, 0x6C, + 0x3A, 0x69, 0xB1, 0xEC, 0xD4, 0xAB, 0x17, 0xD7, 0x6F, 0xDF, 0x57, 0x17, 0x67, 0x98, 0xB2, 0xE8, + 0xFE, 0x51, 0x96, 0x25, 0xE9, 0xA5, 0xAD, 0xEA, 0x5E, 0x8D, 0xED, 0xE5, 0x6A, 0xA1, 0x03, 0xDE, + 0x1F, 0xEA, 0xFD, 0xB6, 0xAA, 0x4F, 0x2D, 0x65, 0xEC, 0x8B, 0x2F, 0x3E, 0x49, 0x53, 0x32, 0x48, + 0x29, 0xDB, 0x91, 0x32, 0x9A, 0x67, 0x99, 0xB3, 0x9E, 0x12, 0x58, 0x94, 0x31, 0x0C, 0xE8, 0xF1, + 0xE1, 0x74, 0xB7, 0xDE, 0x4E, 0xCA, 0x02, 0x23, 0xB4, 0xDB, 0x1F, 0x44, 0x92, 0x96, 0x59, 0x9C, + 0xA5, 0xA2, 0x69, 0xFA, 0xDD, 0xA9, 0xBD, 0x3C, 0x3F, 0xB3, 0x5A, 0x47, 0x82, 0xCC, 0xE6, 0x13, + 0xC1, 0xE8, 0x38, 0x0E, 0xF3, 0x49, 0x66, 0x46, 0xF5, 0xF8, 0xF4, 0x14, 0x47, 0xE4, 0xEC, 0xAC, + 0x84, 0xCE, 0xCF, 0xCA, 0x05, 0xC5, 0x34, 0x4B, 0x89, 0x54, 0x76, 0x7F, 0xA8, 0x08, 0x8B, 0x1B, + 0xE9, 0x81, 0x77, 0x89, 0x60, 0xC6, 0xFA, 0xDD, 0xA9, 0x3E, 0x1C, 0x6A, 0x1E, 0xD1, 0xA2, 0x88, + 0xBB, 0x61, 0xBC, 0xBA, 0x98, 0x05, 0x1B, 0xAC, 0x35, 0x49, 0x12, 0xA5, 0x9C, 0xAE, 0xB7, 0xBB, + 0x61, 0xF0, 0xD3, 0xF9, 0xDC, 0x01, 0x7B, 0x3C, 0xB5, 0x55, 0x33, 0xEC, 0x8F, 0x95, 0xF3, 0x20, + 0x12, 0x3C, 0x8D, 0xA3, 0x38, 0xE2, 0x2E, 0xF8, 0xD9, 0x3C, 0xC7, 0x1E, 0x46, 0x0C, 0x11, 0x4A, + 0xAC, 0xF3, 0xF3, 0xB3, 0xD4, 0x18, 0x1D, 0x20, 0xB0, 0x2E, 0x0C, 0xA3, 0x62, 0x9C, 0x9B, 0xD1, + 0xBE, 0xFD, 0xFE, 0x69, 0xBB, 0x3D, 0x5C, 0x5F, 0x5C, 0x20, 0x08, 0x4F, 0x4D, 0x8F, 0x31, 0x0A, + 0xC1, 0xCD, 0xA7, 0x25, 0xC1, 0x70, 0x31, 0x4B, 0xD4, 0xA8, 0xF7, 0x75, 0x37, 0x29, 0xD3, 0xE5, + 0xBC, 0xEC, 0x07, 0x83, 0x10, 0x1D, 0xA4, 0x7A, 0xDA, 0x57, 0x55, 0x7D, 0xEA, 0xFA, 0x46, 0x6A, + 0xF0, 0xF2, 0xEC, 0x0C, 0x05, 0x64, 0xBD, 0x8F, 0x62, 0xDE, 0xF6, 0x6D, 0x2F, 0xD5, 0xF6, 0x50, + 0x3F, 0x6F, 0x8E, 0x37, 0x2F, 0x2E, 0x5E, 0x9C, 0x4F, 0x17, 0x8B, 0xCC, 0x21, 0x5F, 0x1D, 0xA5, + 0x36, 0x5E, 0x8D, 0xEA, 0xEE, 0xE1, 0x99, 0x70, 0x92, 0x24, 0xA2, 0x3E, 0xF4, 0x18, 0xE3, 0x2F, + 0xDE, 0x5C, 0xCF, 0xE7, 0xA5, 0x33, 0x5E, 0x4A, 0xFD, 0xE2, 0xF2, 0x4C, 0xF6, 0xFD, 0x72, 0x3E, + 0x31, 0xCE, 0xAF, 0x37, 0x87, 0xCD, 0xEE, 0x38, 0x9B, 0x95, 0x10, 0x85, 0xAA, 0x3B, 0x58, 0x6B, + 0x16, 0xCB, 0x49, 0x00, 0xE8, 0xEE, 0xF1, 0x04, 0x2C, 0x49, 0x63, 0x5E, 0xE4, 0x3C, 0x8D, 0x12, + 0x0C, 0xF1, 0x2F, 0x7E, 0xF5, 0xF7, 0x83, 0xD2, 0xD7, 0x2F, 0xCE, 0x79, 0xC4, 0x9B, 0xB6, 0x27, + 0x91, 0xE8, 0x4E, 0xED, 0x30, 0xA8, 0xE5, 0xD5, 0x19, 0x81, 0xE8, 0xB8, 0x3B, 0xA6, 0x79, 0xB4, + 0x58, 0x4C, 0x02, 0x80, 0x5D, 0x3D, 0x08, 0x42, 0x29, 0xA7, 0x3F, 0x7C, 0x78, 0x36, 0xC6, 0x2E, + 0x16, 0x25, 0xC1, 0x28, 0x8E, 0xF8, 0xF3, 0xE3, 0xDE, 0x5A, 0x77, 0xEA, 0x3A, 0xC1, 0x99, 0x1A, + 0x4D, 0x96, 0x25, 0xCE, 0xB8, 0x8F, 0x37, 0x04, 0x00, 0x7C, 0x78, 0xDA, 0x12, 0x2E, 0x8C, 0x31, + 0x93, 0x22, 0x61, 0x18, 0x9E, 0x9F, 0x5D, 0x30, 0x9E, 0x0F, 0xC3, 0x10, 0x11, 0x5B, 0x64, 0x0C, + 0x23, 0x7C, 0x38, 0x9D, 0x16, 0xB3, 0x02, 0x04, 0xB4, 0xD9, 0x57, 0x00, 0x80, 0x53, 0xD3, 0x2E, + 0x26, 0x05, 0xC6, 0xB0, 0xEB, 0x86, 0x51, 0xAB, 0x7E, 0x1C, 0x77, 0x87, 0x8A, 0x33, 0x31, 0x5F, + 0x5D, 0x11, 0x16, 0xA9, 0xBE, 0x82, 0x98, 0xA4, 0xE5, 0xB2, 0x5C, 0x5C, 0x04, 0xEF, 0x37, 0xEF, + 0x7E, 0x7B, 0xFB, 0xFE, 0x6D, 0x9A, 0x17, 0xFB, 0xEA, 0x04, 0x20, 0x9D, 0x4C, 0x4A, 0xC1, 0x58, + 0x2B, 0x47, 0x4E, 0x09, 0x80, 0x30, 0x16, 0x9E, 0x21, 0x29, 0x47, 0xBD, 0xD9, 0x9E, 0xC8, 0xED, + 0xC3, 0x2E, 0x8B, 0xE3, 0x6F, 0x3F, 0x7F, 0x33, 0x8C, 0xFA, 0x77, 0xEF, 0xEE, 0x1F, 0xF7, 0xB5, + 0x32, 0xBA, 0x97, 0x87, 0x51, 0xF9, 0xB3, 0x39, 0xA1, 0x14, 0x5A, 0x0F, 0x94, 0xF2, 0x5F, 0xDD, + 0x7C, 0x76, 0xBE, 0xBA, 0x94, 0xD2, 0x34, 0x7D, 0x67, 0x8C, 0xEE, 0x07, 0x75, 0xAA, 0x25, 0xA6, + 0x74, 0x94, 0xC3, 0xA4, 0xCC, 0x84, 0x10, 0x79, 0x22, 0xCA, 0x69, 0xBE, 0x38, 0xC3, 0x8F, 0x0F, + 0x78, 0x96, 0x97, 0x79, 0x96, 0x29, 0x6B, 0x93, 0x58, 0x4C, 0x52, 0x4C, 0x31, 0x82, 0x38, 0x3C, + 0x3E, 0xEE, 0xE2, 0x88, 0x7E, 0xF6, 0xFA, 0x42, 0xF0, 0xD8, 0x6A, 0x10, 0xA7, 0x7D, 0xD6, 0xF5, + 0x93, 0x49, 0x16, 0xBC, 0x6D, 0xFA, 0x3C, 0x04, 0xF4, 0xF0, 0x78, 0x6C, 0x7B, 0xE9, 0x3C, 0xFC, + 0xEE, 0xCB, 0xCB, 0x4F, 0x6F, 0x16, 0xBD, 0x1A, 0xEB, 0x7A, 0x0C, 0x01, 0x76, 0x43, 0xBF, 0x5C, + 0x94, 0xD3, 0x62, 0xD5, 0x54, 0x5D, 0xC4, 0xE8, 0xCB, 0x49, 0xF6, 0xB0, 0x03, 0xEF, 0x9F, 0x76, + 0xE7, 0x67, 0xC5, 0xB4, 0x28, 0x84, 0x48, 0x62, 0xDE, 0x4C, 0xE7, 0x91, 0x77, 0x28, 0xCF, 0x12, + 0x11, 0x61, 0xED, 0xD4, 0x60, 0x34, 0x22, 0xD6, 0xDA, 0x10, 0x78, 0x9A, 0x4C, 0x48, 0x3C, 0x9F, + 0x21, 0x84, 0xA7, 0x45, 0xEA, 0xCE, 0x22, 0xA3, 0x5C, 0x96, 0x64, 0x9B, 0x0D, 0x56, 0xBD, 0x5C, + 0x7E, 0x96, 0x13, 0x8A, 0xBC, 0x71, 0x10, 0x33, 0xA9, 0xAD, 0xD6, 0x56, 0xE9, 0x2C, 0x2D, 0x33, + 0xEB, 0x3C, 0x80, 0x80, 0x0B, 0xDE, 0x77, 0x8D, 0x48, 0x18, 0xA6, 0x78, 0x31, 0x2B, 0x8E, 0x55, + 0x7B, 0x7D, 0x7D, 0x15, 0xBC, 0xB7, 0x50, 0x33, 0x06, 0x41, 0x00, 0x4C, 0xD0, 0xD7, 0xAF, 0x57, + 0x79, 0x1A, 0x53, 0xC6, 0x10, 0x26, 0x55, 0x55, 0xA9, 0x71, 0x28, 0xA7, 0x05, 0xC2, 0xBC, 0x3A, + 0xEE, 0x05, 0x86, 0x57, 0xAB, 0xC9, 0xED, 0xFA, 0x10, 0x73, 0xE2, 0x94, 0xBE, 0x7F, 0xDA, 0x62, + 0x46, 0x9C, 0x35, 0xAF, 0xAF, 0x26, 0x0E, 0xD0, 0x77, 0x77, 0xCF, 0x52, 0x8E, 0xB2, 0xD7, 0x3E, + 0x40, 0x88, 0x00, 0xA3, 0xBE, 0x95, 0xD2, 0x5B, 0xAF, 0x54, 0x38, 0xB5, 0x3D, 0x45, 0x70, 0x3A, + 0xCB, 0xD4, 0x80, 0xDB, 0x76, 0x78, 0x79, 0x75, 0xF1, 0xE2, 0x7A, 0x42, 0x11, 0xBF, 0xBC, 0x9C, + 0x61, 0x84, 0x36, 0x07, 0x43, 0x59, 0x34, 0x4D, 0x11, 0xA3, 0x64, 0x7B, 0x94, 0x98, 0x90, 0x9B, + 0xEB, 0xD5, 0xBC, 0x8C, 0x4F, 0x8D, 0x14, 0x71, 0xE2, 0xE1, 0xB6, 0xAF, 0x4F, 0xC0, 0x49, 0xC8, + 0xB3, 0x3F, 0xBE, 0x7B, 0x12, 0xA5, 0xA0, 0x08, 0x5A, 0xDD, 0x3C, 0x6D, 0xBB, 0x2C, 0x8F, 0x29, + 0x23, 0x09, 0xC6, 0x26, 0xB8, 0x61, 0x34, 0xC6, 0x98, 0xE3, 0x6E, 0x87, 0x30, 0xCE, 0xF3, 0xD8, + 0x28, 0x0D, 0x9D, 0x8A, 0xB2, 0x98, 0x70, 0x58, 0xA4, 0x69, 0x33, 0xF0, 0x88, 0xAB, 0x32, 0x9D, + 0x0C, 0x8A, 0x26, 0xC2, 0xF4, 0x6D, 0x6D, 0x2C, 0xAC, 0xAB, 0xF6, 0x27, 0xDF, 0xDC, 0x24, 0x71, + 0xF4, 0xFD, 0x0F, 0xB7, 0xF3, 0x59, 0x0A, 0x11, 0xF0, 0xC0, 0x53, 0x26, 0x36, 0xBB, 0xD3, 0xE6, + 0xD9, 0x85, 0xE0, 0xF3, 0x3C, 0xDE, 0x3D, 0x1E, 0xF1, 0x0B, 0xDA, 0x4B, 0x75, 0xAA, 0x9A, 0xB3, + 0xC5, 0x24, 0xCF, 0x92, 0x24, 0x13, 0xE4, 0x40, 0x6F, 0x1F, 0xB7, 0x97, 0xAB, 0x85, 0x71, 0x5E, + 0x37, 0x6D, 0x12, 0x47, 0x6D, 0x3F, 0x1A, 0xEB, 0xB5, 0x71, 0xF7, 0x8F, 0xEB, 0x34, 0x16, 0xA3, + 0xA6, 0x00, 0x09, 0x6F, 0xDB, 0xB2, 0x8C, 0xB7, 0xFB, 0x3E, 0x89, 0xC8, 0xD5, 0xCB, 0xEB, 0x5E, + 0x8E, 0x90, 0x24, 0x2F, 0x5F, 0x9F, 0xB5, 0x55, 0x85, 0x38, 0xDD, 0x4B, 0x3D, 0x8C, 0x63, 0x3A, + 0x2D, 0x08, 0xE4, 0x4C, 0x04, 0x4A, 0x51, 0xD3, 0xF4, 0x20, 0x40, 0x82, 0xC0, 0xE5, 0xCB, 0x65, + 0x39, 0xCB, 0xA0, 0xF7, 0x78, 0x5F, 0x01, 0x0F, 0xA3, 0x48, 0x78, 0x18, 0x75, 0x5D, 0xAF, 0x95, + 0x13, 0x71, 0x5E, 0x94, 0x91, 0x1C, 0xEC, 0xC3, 0xE3, 0x76, 0xBD, 0xDD, 0xCC, 0x97, 0xF3, 0xAF, + 0xBF, 0xBA, 0xD9, 0x6C, 0x8E, 0x18, 0x22, 0xA3, 0xED, 0xBB, 0xF7, 0x8F, 0x93, 0x49, 0x31, 0x0E, + 0x6A, 0x35, 0x2F, 0xA1, 0x67, 0xAA, 0x69, 0xA8, 0xC0, 0xBF, 0xFF, 0xED, 0x7E, 0x50, 0xDA, 0x84, + 0xD0, 0x0F, 0x23, 0x8B, 0x85, 0x1A, 0xD5, 0x62, 0x35, 0x9B, 0x9E, 0x4F, 0xF2, 0x49, 0x0A, 0x35, + 0x7E, 0x5A, 0x1F, 0xB4, 0x55, 0xC7, 0xBA, 0x4B, 0x93, 0x28, 0x4B, 0x92, 0x83, 0x54, 0xBB, 0x43, + 0x13, 0x20, 0xC8, 0xB3, 0x74, 0xBD, 0x93, 0x55, 0xA3, 0x38, 0xA3, 0x55, 0xD5, 0x2B, 0x33, 0x5E, + 0x5E, 0xCD, 0x31, 0x8A, 0xAD, 0x35, 0x69, 0xCC, 0xCB, 0x34, 0x95, 0x83, 0x74, 0xD6, 0x1F, 0xAB, + 0x53, 0x37, 0x0C, 0xCE, 0x81, 0xE3, 0xF1, 0x24, 0x87, 0x3E, 0x00, 0x8F, 0x11, 0x92, 0x72, 0x74, + 0x30, 0x80, 0x00, 0xB2, 0x2C, 0x62, 0x0C, 0xDD, 0xDC, 0x9C, 0x4D, 0xA7, 0x29, 0xB4, 0xEE, 0xEA, + 0xCF, 0xBE, 0x01, 0x08, 0x20, 0x4C, 0xE2, 0x98, 0x53, 0x04, 0x84, 0x88, 0xF4, 0x60, 0x41, 0xCE, + 0x18, 0xE3, 0xDF, 0xBF, 0x7F, 0xDE, 0x9F, 0x2A, 0x00, 0x01, 0x66, 0xE4, 0xFE, 0xE9, 0x51, 0xBB, + 0xB1, 0xC8, 0xE3, 0xFB, 0x87, 0x35, 0xE3, 0x5C, 0x8F, 0x6E, 0x54, 0x8A, 0x44, 0x38, 0x45, 0x1C, + 0x32, 0xF0, 0xF4, 0xB4, 0x16, 0x09, 0x79, 0x79, 0xB3, 0x9C, 0x4E, 0xE7, 0x3F, 0xFE, 0x70, 0xD7, + 0xB6, 0x92, 0x69, 0xD3, 0x76, 0x03, 0xA1, 0x38, 0x04, 0xBF, 0xD9, 0x1D, 0xB9, 0x60, 0xC6, 0xDA, + 0xD3, 0xA9, 0xB5, 0xD6, 0xE6, 0x65, 0x0E, 0x03, 0x81, 0x00, 0xBD, 0x7A, 0xB9, 0xEA, 0x86, 0x41, + 0x08, 0x7A, 0x7F, 0xBB, 0x2F, 0xB3, 0xF4, 0x6C, 0x35, 0x3D, 0xD5, 0xED, 0xB1, 0x6E, 0x9D, 0xB1, + 0x10, 0x86, 0xAE, 0x97, 0xCE, 0x07, 0x63, 0xAC, 0xB3, 0x6E, 0x3A, 0xC9, 0x92, 0x88, 0xFF, 0xF8, + 0xB0, 0xC9, 0xB3, 0x14, 0x95, 0xE9, 0xF9, 0x6A, 0x2A, 0x88, 0x93, 0xF2, 0xD0, 0xF5, 0x43, 0x32, + 0xCF, 0x01, 0xF6, 0xCA, 0x38, 0xE7, 0xDD, 0xE9, 0x54, 0x97, 0x45, 0x31, 0x29, 0xD2, 0xBA, 0x6D, + 0x16, 0xB3, 0x1C, 0x43, 0x74, 0x3C, 0xB5, 0x71, 0x92, 0x44, 0x84, 0xC5, 0x59, 0x32, 0x9D, 0xCC, + 0x64, 0xD7, 0x9F, 0xCF, 0x92, 0xF9, 0xC5, 0xEB, 0xBA, 0x3A, 0x9C, 0x76, 0xDB, 0xD9, 0x34, 0x75, + 0x41, 0x3D, 0x1F, 0xEB, 0x87, 0xCD, 0x7A, 0x7D, 0x3C, 0x5C, 0x52, 0x9C, 0x45, 0xD1, 0xE5, 0xD9, + 0x6A, 0x3E, 0xCD, 0x4E, 0xB5, 0x3C, 0x5F, 0x4E, 0x7D, 0x70, 0x4D, 0xD7, 0xE5, 0x09, 0xF6, 0x1E, + 0xC7, 0x09, 0xA4, 0x94, 0xC3, 0xFF, 0xEA, 0x2F, 0xFF, 0x9C, 0x12, 0x42, 0x09, 0xC3, 0x10, 0x4E, + 0xF2, 0x74, 0x73, 0xAC, 0x7E, 0xF1, 0xDB, 0x5F, 0x27, 0x09, 0xD2, 0x06, 0x10, 0x02, 0x9C, 0x85, + 0x37, 0xAF, 0x5F, 0xCD, 0x27, 0xB3, 0x51, 0xFA, 0x53, 0x55, 0x9D, 0x9D, 0x4F, 0x77, 0xC7, 0x7A, + 0x7B, 0x68, 0xFB, 0xAE, 0xB7, 0xCE, 0x1B, 0xA3, 0x7D, 0x00, 0x10, 0x92, 0xE0, 0x5D, 0x96, 0x65, + 0x22, 0x82, 0x3F, 0xFB, 0xE6, 0xC5, 0x62, 0x32, 0xB1, 0x1A, 0x3A, 0xFF, 0xFF, 0xB3, 0xF4, 0x1E, + 0x3B, 0xB7, 0x65, 0x59, 0x76, 0xDE, 0xF2, 0x6B, 0x6D, 0xBF, 0x8F, 0xFD, 0xED, 0x75, 0x61, 0x33, + 0x23, 0x2D, 0xAA, 0x2A, 0x59, 0x44, 0xA9, 0x23, 0x02, 0xEC, 0x48, 0x20, 0x28, 0x40, 0xCF, 0xAB, + 0x9E, 0x20, 0x40, 0x82, 0x24, 0x8A, 0x60, 0x95, 0x32, 0x23, 0x33, 0x32, 0xE2, 0xC6, 0x35, 0xBF, + 0x3B, 0x6E, 0xFB, 0xE5, 0x8D, 0x1A, 0xA1, 0x87, 0x98, 0x8D, 0x39, 0xC7, 0xFC, 0xC6, 0x87, 0x7D, + 0xB4, 0x00, 0x40, 0x4A, 0x70, 0x5B, 0x65, 0x84, 0x40, 0xAD, 0x34, 0x00, 0xD0, 0x25, 0x9F, 0xE5, + 0x4C, 0x4A, 0x6B, 0x6D, 0xF4, 0x31, 0x28, 0x63, 0xA4, 0x34, 0x52, 0x9A, 0xA6, 0x29, 0xDB, 0xBA, + 0x62, 0x9C, 0xC5, 0xE8, 0x5F, 0x5F, 0xB5, 0xC7, 0xCB, 0xD8, 0x0D, 0x72, 0x1A, 0xCD, 0x30, 0x2C, + 0x9F, 0x9E, 0x8E, 0x6D, 0x5D, 0x08, 0x02, 0x1C, 0x48, 0xEF, 0x5E, 0xED, 0xF7, 0xAB, 0x82, 0xF3, + 0x0C, 0x11, 0x68, 0x9C, 0x9E, 0x95, 0x75, 0xC6, 0x35, 0x75, 0xA1, 0x6D, 0x78, 0x7A, 0x3C, 0x12, + 0x8C, 0xCA, 0x3C, 0x9B, 0x95, 0x26, 0x8C, 0x44, 0x08, 0x5E, 0x4E, 0x7D, 0xDF, 0xCD, 0xAB, 0x55, + 0x2E, 0x72, 0x8E, 0x09, 0xC9, 0x05, 0x5F, 0xD5, 0xC5, 0x76, 0x53, 0x50, 0x4C, 0xBC, 0x75, 0x34, + 0xC1, 0x60, 0x82, 0xD6, 0x32, 0xE3, 0xCC, 0xF8, 0x88, 0x79, 0x7E, 0x3A, 0xCC, 0x11, 0x80, 0x4E, + 0x2E, 0x59, 0x96, 0x63, 0x9A, 0xB2, 0x02, 0x0F, 0xD3, 0x34, 0x0C, 0x06, 0x41, 0x78, 0xB3, 0x6D, + 0x21, 0x48, 0xED, 0x7A, 0x35, 0x2F, 0x73, 0xCE, 0x79, 0x99, 0xE7, 0xC6, 0x99, 0x08, 0x62, 0x95, + 0x0B, 0xEB, 0xBC, 0x31, 0x76, 0xEE, 0xEC, 0x5F, 0xBE, 0xFF, 0xE1, 0xE6, 0xFE, 0x2A, 0xC6, 0xF8, + 0xF1, 0xE3, 0x03, 0xE5, 0xB8, 0xE0, 0xB4, 0xCA, 0x8B, 0xF5, 0xEE, 0x76, 0x9A, 0xE6, 0xC7, 0xA7, + 0xCF, 0x7F, 0x7F, 0xFF, 0x58, 0x94, 0xD9, 0xDB, 0x57, 0x1B, 0xCE, 0xD8, 0x0F, 0x3F, 0x1F, 0x06, + 0x69, 0x20, 0x84, 0x5A, 0xB9, 0x5C, 0x90, 0xD7, 0xF7, 0x1B, 0x42, 0xC9, 0x38, 0x4E, 0x99, 0x60, + 0x21, 0xB8, 0x63, 0xA7, 0x62, 0x08, 0x37, 0xBB, 0x46, 0x8E, 0x96, 0x53, 0xF1, 0x87, 0xDF, 0xBE, + 0xAB, 0x32, 0x96, 0x22, 0x04, 0x3C, 0xC4, 0x20, 0x46, 0x2D, 0xAE, 0xEF, 0xDE, 0xF6, 0x2F, 0x3F, + 0x6B, 0x63, 0x08, 0x87, 0x55, 0x96, 0x1D, 0x4F, 0x5D, 0x9D, 0x31, 0x4E, 0xE9, 0xF5, 0x8E, 0x7D, + 0x7C, 0xF9, 0xFE, 0xFB, 0x1F, 0x9F, 0x2A, 0x41, 0x68, 0xBD, 0x19, 0xB5, 0x43, 0x66, 0x4E, 0xDE, + 0x74, 0x83, 0x3B, 0x0D, 0x26, 0x02, 0xF0, 0xD5, 0xBB, 0xA6, 0xEF, 0xF4, 0xE9, 0x2C, 0x31, 0x25, + 0x9C, 0xA5, 0x2A, 0xA7, 0x09, 0x61, 0xA9, 0xA3, 0x9C, 0xE5, 0xCD, 0xAE, 0xA6, 0x59, 0xAE, 0x54, + 0xBF, 0xBF, 0x7E, 0x7B, 0x3C, 0xE9, 0x9B, 0x35, 0xA6, 0x90, 0x5D, 0x06, 0x09, 0xB0, 0x36, 0xD2, + 0xFF, 0xEB, 0x0F, 0xC3, 0x6F, 0x7E, 0xFF, 0x0D, 0x23, 0xE1, 0x70, 0xEC, 0x20, 0x88, 0x55, 0x2D, + 0xBE, 0xFF, 0xDB, 0x71, 0xB3, 0x59, 0x1F, 0x5F, 0x3A, 0x98, 0xB0, 0xB1, 0x76, 0xBF, 0x5D, 0x2B, + 0xA5, 0xC6, 0x69, 0xFE, 0xE6, 0xAB, 0x57, 0x21, 0xC6, 0x97, 0x43, 0xC7, 0x38, 0xBD, 0xBD, 0x5A, + 0x69, 0xA9, 0x16, 0xE5, 0x5E, 0x4E, 0x13, 0x25, 0x04, 0x80, 0x88, 0x10, 0xBC, 0xBF, 0xBE, 0x86, + 0x30, 0x6A, 0x1B, 0x67, 0x65, 0xAF, 0xB7, 0x6D, 0x7F, 0x39, 0x57, 0x65, 0x29, 0xB5, 0x5D, 0x94, + 0xA9, 0xCA, 0x6C, 0xBF, 0x59, 0x29, 0xA5, 0xD7, 0xEB, 0xD5, 0xAF, 0xBE, 0xBE, 0x09, 0x4E, 0x9F, + 0xCF, 0x43, 0xD7, 0x8F, 0x3E, 0xC4, 0x84, 0x30, 0xE3, 0x84, 0xE7, 0xDC, 0x68, 0x8B, 0x21, 0xDE, + 0x6E, 0x6B, 0x82, 0x10, 0xC1, 0xA1, 0xCA, 0xD8, 0x24, 0x2D, 0x13, 0x94, 0x11, 0x9C, 0x53, 0xA1, + 0xA5, 0xEB, 0x47, 0x65, 0x12, 0xF0, 0x31, 0x90, 0x08, 0x00, 0xA4, 0xDD, 0x28, 0x61, 0x8C, 0xD3, + 0x74, 0x61, 0x82, 0x71, 0x91, 0x11, 0x8E, 0xF2, 0xAC, 0xA4, 0x58, 0xFC, 0xDB, 0x9F, 0xFF, 0xEA, + 0x43, 0x2A, 0xCA, 0x02, 0xA7, 0x28, 0x28, 0x2E, 0xAB, 0xA2, 0xAC, 0x50, 0x08, 0x61, 0xE8, 0xD4, + 0x65, 0x9C, 0xB4, 0x77, 0xC7, 0x63, 0xDF, 0x6C, 0x5B, 0x4A, 0x31, 0x42, 0x10, 0x81, 0xB4, 0x6E, + 0xEA, 0x3A, 0x2F, 0x9F, 0x9F, 0x3B, 0x67, 0x0C, 0xC6, 0x68, 0x56, 0x4E, 0x69, 0x57, 0xE6, 0x1C, + 0xA1, 0x84, 0x28, 0x3D, 0x5D, 0xE6, 0x18, 0xE2, 0xA6, 0x2D, 0xAA, 0xB2, 0xC8, 0x38, 0xBF, 0xB9, + 0xA9, 0xBB, 0xE1, 0xDC, 0xD6, 0x95, 0xB7, 0xBF, 0x54, 0xB0, 0xA6, 0x79, 0x94, 0x80, 0xE0, 0x63, + 0x37, 0x8E, 0xB3, 0x74, 0xD6, 0x3D, 0x1F, 0xCF, 0x08, 0xA2, 0x57, 0xB7, 0x57, 0xD7, 0xDB, 0x76, + 0x5C, 0x46, 0x51, 0x65, 0x08, 0x12, 0xAD, 0x55, 0x59, 0xF1, 0xD7, 0xFB, 0x2D, 0x8E, 0xC0, 0xDA, + 0x38, 0x2B, 0xF9, 0x72, 0xEC, 0x94, 0x0E, 0xD7, 0x57, 0xAB, 0x69, 0x9C, 0xCA, 0x9A, 0x73, 0x41, + 0xDB, 0xB2, 0xD8, 0xAD, 0xD6, 0xDA, 0x44, 0x69, 0x6C, 0x37, 0xCC, 0x9F, 0x9E, 0x8E, 0x88, 0xC2, + 0x2C, 0x17, 0xC6, 0x99, 0x69, 0x18, 0xD6, 0x6D, 0x1B, 0x01, 0x4A, 0x20, 0x05, 0x90, 0x8C, 0xF4, + 0x77, 0x37, 0x9B, 0x18, 0x43, 0x7F, 0x39, 0xDE, 0xDE, 0xDE, 0xC8, 0xC5, 0x76, 0xA7, 0x0E, 0x33, + 0x74, 0xEE, 0x16, 0x44, 0xA8, 0xC8, 0x08, 0xC6, 0x28, 0x44, 0x44, 0x39, 0x57, 0xD3, 0x12, 0x5C, + 0x58, 0xB5, 0x15, 0x27, 0x34, 0x02, 0xE4, 0x23, 0x6C, 0xDB, 0x8C, 0xD2, 0x18, 0x53, 0x82, 0x08, + 0xA7, 0x98, 0x18, 0x42, 0xD6, 0x58, 0x1F, 0xD2, 0xE5, 0x3C, 0x8E, 0xA3, 0x5D, 0xB4, 0x3B, 0x0F, + 0x63, 0xF1, 0x0B, 0xF5, 0xC5, 0x69, 0x08, 0xF1, 0x5F, 0x7F, 0x78, 0x4F, 0x08, 0xFD, 0x1F, 0xFE, + 0xE3, 0x9F, 0x7E, 0xF3, 0xEB, 0xFB, 0x69, 0x92, 0x08, 0xE2, 0xB1, 0x1F, 0x30, 0x86, 0x45, 0x59, + 0xA4, 0x04, 0x96, 0x49, 0x79, 0x1F, 0x12, 0x40, 0x98, 0xE0, 0x45, 0xD9, 0x65, 0xD1, 0x55, 0x91, + 0x31, 0xC2, 0x9E, 0x5F, 0x06, 0x9B, 0xAC, 0xD3, 0x3E, 0x25, 0x48, 0x30, 0xBE, 0xD9, 0x35, 0xAF, + 0x6E, 0x76, 0xEB, 0xA6, 0xB6, 0xCE, 0x2D, 0x5A, 0x8F, 0xE3, 0xBC, 0x98, 0xF8, 0xFE, 0xE7, 0x8F, + 0x84, 0xD2, 0xDB, 0x6D, 0x63, 0x9C, 0xCF, 0xF2, 0x4C, 0x2E, 0x8B, 0xD4, 0x16, 0x20, 0xD8, 0x8F, + 0xDD, 0xB8, 0x98, 0x3C, 0x47, 0xFB, 0xED, 0x3A, 0x46, 0x20, 0x18, 0xC3, 0x77, 0xD7, 0x57, 0x00, + 0x00, 0x25, 0x15, 0xC2, 0xB8, 0x1B, 0xC7, 0x55, 0x53, 0xBC, 0xDA, 0xEF, 0x86, 0x45, 0xBF, 0x9C, + 0xC7, 0x65, 0x31, 0x75, 0x2D, 0xBA, 0x5E, 0x0F, 0x53, 0xEC, 0xE7, 0xF9, 0xE7, 0x4F, 0x1F, 0x8D, + 0x8B, 0x0F, 0xCF, 0x7D, 0x48, 0x48, 0x2A, 0xED, 0xAC, 0x29, 0xCA, 0xCA, 0x87, 0x60, 0x8C, 0x0A, + 0x31, 0x42, 0x48, 0x7E, 0xFF, 0xAB, 0x6F, 0xEA, 0x22, 0x9B, 0xA5, 0xD3, 0x1E, 0xFC, 0xEB, 0xF7, + 0xEF, 0x83, 0x0F, 0x75, 0x99, 0x75, 0xFD, 0x32, 0x4C, 0x7A, 0x98, 0x8C, 0x34, 0xAE, 0xEF, 0x66, + 0xA9, 0xFD, 0xA7, 0xA7, 0xF3, 0xCB, 0xA9, 0x7F, 0x3A, 0x74, 0x8F, 0x2F, 0xFD, 0x34, 0xEB, 0x45, + 0x59, 0xEB, 0xBD, 0xB6, 0xE1, 0xF3, 0xD3, 0xE9, 0x74, 0x1E, 0xB4, 0x0B, 0xA3, 0xB4, 0x08, 0x51, + 0x08, 0x60, 0x9E, 0x15, 0x10, 0x12, 0xC6, 0x58, 0x5B, 0xF0, 0xC3, 0xB9, 0x2B, 0xCB, 0x2C, 0xCF, + 0xB2, 0x18, 0x03, 0xC6, 0xF8, 0xC3, 0xC7, 0x8B, 0x54, 0xEE, 0xEF, 0xEF, 0x1F, 0x2F, 0xFD, 0x0C, + 0x00, 0xBC, 0x74, 0x73, 0x04, 0x50, 0x1B, 0xDB, 0x4F, 0xFA, 0xF3, 0xC3, 0xD9, 0xBA, 0xB4, 0x48, + 0xEB, 0x9C, 0x4F, 0x08, 0x56, 0x55, 0x89, 0x19, 0x09, 0x09, 0x8C, 0xA3, 0x54, 0x36, 0x3C, 0x7E, + 0x3A, 0xA6, 0x18, 0x41, 0x00, 0x01, 0x24, 0x2E, 0x68, 0x9E, 0x65, 0x11, 0x02, 0x17, 0x02, 0x13, + 0xB8, 0xAE, 0xD8, 0x76, 0x9D, 0x11, 0x02, 0x8B, 0x82, 0x41, 0x1C, 0x38, 0x4E, 0xDF, 0x7E, 0xF1, + 0x6A, 0xD5, 0xE6, 0xEB, 0xA6, 0x6C, 0xCB, 0x22, 0xCF, 0x98, 0x60, 0x88, 0x61, 0x46, 0x00, 0x1D, + 0x47, 0x33, 0x2F, 0x66, 0x9C, 0x16, 0xE7, 0xC3, 0xBC, 0xA8, 0xB6, 0xC9, 0xAB, 0x3C, 0x5B, 0xAD, + 0x2A, 0x40, 0x82, 0x75, 0x66, 0xB7, 0xDF, 0xAC, 0x56, 0x75, 0x2E, 0x44, 0x02, 0x78, 0x5A, 0x66, + 0xC6, 0x81, 0x89, 0x76, 0x7B, 0xD5, 0xFE, 0xC3, 0x1F, 0xBF, 0x1C, 0x26, 0xF5, 0xE9, 0xB1, 0xAF, + 0x9A, 0x02, 0xE2, 0x18, 0x93, 0x0F, 0xDE, 0xE6, 0x19, 0xE3, 0x9C, 0x9F, 0xFB, 0x59, 0x19, 0x17, + 0xBC, 0x1F, 0xA7, 0xB9, 0xAA, 0xCA, 0xEB, 0x9B, 0x9A, 0x51, 0xB0, 0x6E, 0xAB, 0x2F, 0xBF, 0xBC, + 0xBB, 0xBD, 0xAD, 0x61, 0x0A, 0xCE, 0xAA, 0x84, 0x91, 0xC8, 0xF8, 0xAC, 0xFC, 0xE3, 0x61, 0x38, + 0x1C, 0x3F, 0x12, 0x62, 0x94, 0xC1, 0x1F, 0x3E, 0x7D, 0xD6, 0xA6, 0x07, 0x31, 0x96, 0xDC, 0xBC, + 0xFF, 0xF0, 0xF4, 0xFE, 0xF9, 0xA2, 0x8D, 0x3B, 0x9D, 0x54, 0x53, 0x30, 0xCC, 0xAC, 0x55, 0xF6, + 0xC3, 0xA7, 0x11, 0x0B, 0x16, 0x83, 0x4F, 0x29, 0x60, 0x0C, 0x7F, 0xFA, 0x30, 0xCC, 0x32, 0xE6, + 0x02, 0xEE, 0xF6, 0xF5, 0xE7, 0x17, 0x39, 0xCF, 0x96, 0x73, 0x4A, 0x30, 0x81, 0x00, 0xC7, 0x94, + 0x94, 0x01, 0x4F, 0x0F, 0x03, 0x8A, 0x0E, 0xA1, 0xEC, 0xE5, 0xF9, 0x10, 0x62, 0xA0, 0x94, 0x7F, + 0x7A, 0x18, 0x23, 0xCC, 0x5E, 0xBD, 0xDA, 0x41, 0xA0, 0x63, 0x8C, 0x8C, 0xF2, 0x71, 0x9A, 0xF2, + 0x62, 0xAD, 0x16, 0xA5, 0x26, 0xE9, 0xBC, 0xF3, 0xDE, 0xEF, 0x77, 0x6B, 0x6D, 0xAC, 0x10, 0xAC, + 0xAE, 0x72, 0x6B, 0x03, 0xA6, 0xB4, 0xC8, 0x78, 0x59, 0xF0, 0x73, 0x3F, 0x66, 0x8C, 0x49, 0x65, + 0x42, 0x88, 0x4D, 0x5B, 0x7E, 0xF7, 0xED, 0xAB, 0xFB, 0xEB, 0x75, 0x4A, 0xF0, 0x78, 0x1E, 0xCA, + 0x3C, 0xBB, 0xD9, 0xB6, 0x21, 0x84, 0xB6, 0xAD, 0xCF, 0xDD, 0x90, 0x40, 0x2A, 0x84, 0xA8, 0xCA, + 0x22, 0x45, 0xB0, 0xAA, 0xCB, 0x52, 0xF0, 0xFF, 0xEB, 0xFF, 0xFE, 0x7F, 0x3F, 0x3D, 0x9C, 0x12, + 0x40, 0xB3, 0xB6, 0xE3, 0xB0, 0x38, 0xEF, 0xE7, 0x69, 0x59, 0x16, 0xED, 0x23, 0xE8, 0xFA, 0xB9, + 0x1F, 0x97, 0xC3, 0xA9, 0x53, 0x5A, 0x5B, 0xEB, 0xFA, 0x7E, 0x90, 0x52, 0x9D, 0xCE, 0xA3, 0x92, + 0x12, 0x63, 0x38, 0xCD, 0x76, 0x1C, 0x24, 0xE1, 0xC4, 0x79, 0x3F, 0x0C, 0x43, 0x37, 0x1D, 0x27, + 0x6B, 0xBA, 0x41, 0xFF, 0xFC, 0xF1, 0xF3, 0xB9, 0xEB, 0x53, 0x82, 0xE3, 0xA4, 0x01, 0xC0, 0x98, + 0x32, 0xEB, 0x7C, 0x5B, 0xE7, 0x9B, 0x55, 0xCD, 0x38, 0x90, 0x52, 0x41, 0x4C, 0x7C, 0x8A, 0x52, + 0x19, 0xE7, 0x7D, 0x82, 0x20, 0xA6, 0x88, 0x20, 0x64, 0x8C, 0xA6, 0x10, 0x21, 0x22, 0x08, 0xD8, + 0xED, 0xBE, 0xC1, 0x84, 0x7E, 0x7A, 0x38, 0x4A, 0xA5, 0x5F, 0xCE, 0x97, 0xDD, 0xAA, 0x4D, 0x30, + 0x76, 0x43, 0x97, 0x92, 0xBB, 0xB9, 0x2A, 0x31, 0x02, 0x18, 0x21, 0x4C, 0x93, 0x51, 0x36, 0x06, + 0x64, 0x6C, 0x0C, 0x31, 0x20, 0x8A, 0x37, 0x9B, 0xE6, 0xCD, 0xED, 0x5E, 0x1B, 0xF3, 0xD7, 0x1F, + 0x3E, 0x6E, 0x9A, 0xBA, 0xCA, 0xB8, 0xD6, 0x46, 0x70, 0x9A, 0x71, 0x2E, 0x72, 0xB1, 0x18, 0xCD, + 0x73, 0x02, 0x31, 0xF4, 0x29, 0x70, 0x8E, 0xA1, 0xC5, 0x4A, 0xD9, 0x84, 0x41, 0x84, 0x29, 0x41, + 0xE8, 0x42, 0xCC, 0x73, 0xAE, 0xB4, 0xB3, 0x1E, 0x4C, 0x8B, 0x1C, 0x95, 0x3C, 0x5D, 0x86, 0x45, + 0x1B, 0xEF, 0x7D, 0x5D, 0x97, 0x08, 0x42, 0x4C, 0xF9, 0x6A, 0xBD, 0x79, 0x39, 0x9E, 0xCB, 0xAA, + 0x28, 0xCA, 0x0C, 0xC2, 0x10, 0xA3, 0x23, 0x04, 0xD5, 0x55, 0x01, 0x09, 0x74, 0xCE, 0x10, 0x8C, + 0x10, 0xC2, 0x31, 0x01, 0x44, 0xB1, 0x28, 0xE8, 0x66, 0xDD, 0xDE, 0xBF, 0xBA, 0x66, 0x02, 0x13, + 0x84, 0x31, 0x41, 0xDE, 0x3A, 0x10, 0x80, 0x9E, 0x15, 0x27, 0x28, 0x67, 0xC2, 0x6A, 0x4F, 0x10, + 0x24, 0x08, 0x53, 0x48, 0x8E, 0x4F, 0x27, 0x35, 0x2B, 0x46, 0x08, 0x26, 0x04, 0xF8, 0x84, 0x10, + 0xDA, 0x6F, 0xD7, 0x6D, 0x9B, 0x27, 0x80, 0xCB, 0x5C, 0x48, 0xA9, 0x9A, 0x36, 0x27, 0x18, 0x6E, + 0x57, 0xD5, 0xCD, 0x76, 0x7D, 0xBB, 0x6F, 0xFF, 0xF4, 0x87, 0x3B, 0x1F, 0x5D, 0xF4, 0xB6, 0xCA, + 0xC4, 0xD4, 0x0F, 0x20, 0x85, 0xC7, 0x97, 0xD3, 0xE9, 0x3C, 0x58, 0xE7, 0xFB, 0x71, 0x51, 0xC6, + 0x3E, 0x1D, 0x2E, 0x52, 0xDB, 0xBC, 0x28, 0x29, 0x23, 0x88, 0x40, 0x42, 0x52, 0x96, 0xA1, 0x3C, + 0x67, 0x29, 0x81, 0x79, 0xD1, 0x00, 0xA4, 0x2A, 0xE7, 0x30, 0x86, 0xB2, 0xC8, 0xAD, 0x94, 0x20, + 0x85, 0x82, 0xA2, 0xAB, 0xCD, 0xEA, 0xF7, 0xDF, 0xBE, 0x2E, 0x38, 0x2B, 0x72, 0x7E, 0xB5, 0xDB, + 0xD4, 0x45, 0x96, 0xE7, 0x82, 0x60, 0x0C, 0x12, 0x44, 0x08, 0x3B, 0xEB, 0x8B, 0x8C, 0xAF, 0xDA, + 0x0A, 0x45, 0x04, 0xFF, 0xF4, 0xC7, 0x3F, 0xA6, 0x18, 0x52, 0xF0, 0x55, 0x55, 0x86, 0x10, 0x18, + 0x45, 0xDB, 0x55, 0xAD, 0x6D, 0xFC, 0x7F, 0xFE, 0xFC, 0x67, 0xCE, 0x2C, 0xE7, 0xE2, 0x32, 0xBA, + 0xFD, 0xAA, 0xB9, 0xB9, 0xD9, 0xFD, 0xDB, 0xF7, 0x0F, 0x5A, 0xD9, 0xFB, 0x9B, 0x9B, 0xC4, 0x8A, + 0x9F, 0xDF, 0xFF, 0x74, 0x77, 0xB3, 0xF7, 0x31, 0xBD, 0xFF, 0xF9, 0x23, 0x82, 0xA0, 0x2A, 0xCB, + 0xED, 0x66, 0xF5, 0xCD, 0x9B, 0xBB, 0x61, 0x9A, 0x1F, 0x0F, 0x47, 0xCE, 0x73, 0xAD, 0x96, 0xEF, + 0xBE, 0x7C, 0xEB, 0x9C, 0x4B, 0x29, 0x51, 0xCE, 0xBA, 0x7E, 0x70, 0xD6, 0x46, 0xEF, 0x31, 0xE3, + 0x3E, 0x05, 0x91, 0x0B, 0x6B, 0x43, 0xD7, 0x0F, 0x5A, 0x9B, 0x37, 0xAF, 0x6F, 0xAC, 0xB3, 0x98, + 0xE0, 0xFE, 0xD2, 0xD7, 0x75, 0x5D, 0xD7, 0x45, 0x4A, 0x10, 0x26, 0xD0, 0xD4, 0xD9, 0xA6, 0x6D, + 0x20, 0xA0, 0xF3, 0x30, 0x79, 0x6B, 0x52, 0xF2, 0x77, 0xB7, 0x2B, 0xEF, 0xBC, 0x32, 0xEE, 0xE1, + 0xB1, 0xEB, 0x46, 0xB9, 0xDB, 0xE5, 0xD2, 0x6A, 0xE3, 0xE2, 0xF1, 0xB9, 0xA3, 0x94, 0x96, 0x55, + 0x16, 0x42, 0x9A, 0x26, 0x89, 0x31, 0x74, 0x3E, 0x68, 0x6B, 0x39, 0x23, 0x2C, 0x17, 0x08, 0xA6, + 0xBB, 0x57, 0x7B, 0x8C, 0xA0, 0x73, 0x91, 0x67, 0xE2, 0xE9, 0xC3, 0x23, 0xC1, 0xE9, 0xF7, 0xDF, + 0x7D, 0xE1, 0xBC, 0xDD, 0x6D, 0x4A, 0xA3, 0xFD, 0xF1, 0x3C, 0x77, 0xFD, 0x64, 0xAC, 0xAF, 0xF2, + 0xAC, 0xBF, 0x8C, 0xFF, 0xE1, 0xDF, 0xFF, 0xFE, 0x87, 0x8F, 0x07, 0xE3, 0xEC, 0xAF, 0xBF, 0xB8, + 0x29, 0xDA, 0xFA, 0x2F, 0x3F, 0xFD, 0x5C, 0xE7, 0x95, 0x56, 0xAE, 0xEB, 0x94, 0x73, 0xC0, 0xC7, + 0x64, 0x9C, 0xE7, 0x1C, 0x29, 0xAD, 0x53, 0x08, 0xAF, 0x6E, 0x37, 0xC1, 0x7B, 0xCA, 0x30, 0x82, + 0x38, 0xCB, 0x58, 0xD1, 0xB0, 0xCD, 0x6A, 0x6D, 0xAC, 0xB6, 0xDA, 0x45, 0xEB, 0xBB, 0x69, 0x2C, + 0x57, 0x85, 0x77, 0x16, 0x63, 0xD4, 0xD4, 0x05, 0x82, 0xF8, 0xF1, 0xE1, 0x1C, 0x02, 0x30, 0xD6, + 0x61, 0x04, 0x67, 0xB9, 0x28, 0xE5, 0xC7, 0x59, 0x4E, 0xF3, 0x72, 0xEA, 0x16, 0xE3, 0xE2, 0xAE, + 0xC9, 0xBE, 0xFD, 0x7A, 0x5D, 0x56, 0xC8, 0x39, 0x8D, 0x12, 0x5E, 0x57, 0x6B, 0xC1, 0xB2, 0x10, + 0xE6, 0x71, 0xD0, 0x98, 0x52, 0x17, 0xAC, 0xE0, 0xB4, 0x9B, 0x74, 0xDF, 0xAB, 0xAB, 0x75, 0x96, + 0x17, 0xD7, 0x4F, 0x2F, 0xF3, 0xDB, 0x1B, 0x06, 0xA1, 0x20, 0xC4, 0x4B, 0x3B, 0x9D, 0xBA, 0xB8, + 0xDE, 0x97, 0xFF, 0xFB, 0xFF, 0xF9, 0x3D, 0xB0, 0xCB, 0xEF, 0xBE, 0xBD, 0x2A, 0x5B, 0xF4, 0xBF, + 0xFC, 0xAF, 0x3F, 0x8F, 0x33, 0xDC, 0xEE, 0xF2, 0xF3, 0x79, 0x29, 0x0A, 0x4C, 0x30, 0x1A, 0x97, + 0xF0, 0x74, 0x58, 0x6E, 0xF6, 0xC5, 0x1F, 0x7F, 0x77, 0xF5, 0xBF, 0xFD, 0x1F, 0xCF, 0xD6, 0xD8, + 0x4D, 0x4B, 0xF7, 0x9B, 0x7C, 0x9E, 0x81, 0x09, 0x69, 0xB5, 0x12, 0xC1, 0x38, 0x04, 0xD0, 0x34, + 0xBB, 0xBC, 0x10, 0x2C, 0x17, 0xCF, 0x87, 0x71, 0x9C, 0xE5, 0xDD, 0xFD, 0xA6, 0x2C, 0xF0, 0x66, + 0x5D, 0x3A, 0x8F, 0x16, 0x9D, 0xDA, 0x32, 0xEB, 0x2F, 0xE7, 0xA1, 0x57, 0x4A, 0x86, 0x53, 0xBF, + 0xAC, 0xAA, 0xAA, 0x2A, 0x8B, 0x6E, 0x9C, 0x09, 0x41, 0xDE, 0xBB, 0xA2, 0xCC, 0xB5, 0x76, 0x0C, + 0x13, 0xE3, 0x74, 0x95, 0x0B, 0xC6, 0x98, 0x8B, 0x00, 0x40, 0x7C, 0x73, 0xB5, 0xAD, 0x0B, 0xE8, + 0x5D, 0xE8, 0x47, 0x8D, 0x90, 0xC8, 0x04, 0xE5, 0x8C, 0x58, 0x67, 0x21, 0x24, 0x7F, 0xFF, 0xF1, + 0xC3, 0xF5, 0xF5, 0x9E, 0xC2, 0x58, 0x96, 0xA4, 0x2C, 0x9B, 0x55, 0xDB, 0x3C, 0x3F, 0xBC, 0x3C, + 0x3C, 0x1F, 0xE7, 0x59, 0x19, 0xEF, 0xAF, 0x6E, 0xB6, 0x2F, 0x2F, 0x27, 0xE7, 0x2D, 0xC6, 0x98, + 0x50, 0x4E, 0x19, 0xA5, 0x94, 0xC4, 0xE0, 0x18, 0x45, 0x94, 0xA6, 0x57, 0x77, 0xB7, 0x30, 0x86, + 0x2C, 0xE3, 0xCE, 0xC6, 0x14, 0x03, 0x23, 0x04, 0x63, 0x8A, 0x11, 0xCA, 0xCA, 0x7C, 0x91, 0xF6, + 0x6F, 0x3F, 0xFC, 0xF4, 0x97, 0x1F, 0xDF, 0x87, 0x84, 0xA3, 0x8F, 0xAB, 0x55, 0x91, 0x89, 0xBC, + 0x2E, 0x0A, 0x8C, 0xB1, 0xF5, 0xC0, 0x7A, 0x08, 0x61, 0xF8, 0xE6, 0xDD, 0xDE, 0x69, 0xA3, 0x94, + 0xC5, 0x08, 0x25, 0x08, 0xB4, 0x33, 0xE7, 0x73, 0xDF, 0x8F, 0x73, 0x56, 0x08, 0xE3, 0x3C, 0x21, + 0xE4, 0x8B, 0xB7, 0xB7, 0x72, 0x51, 0xD6, 0xC5, 0x9A, 0x07, 0x0F, 0x01, 0x2F, 0x1A, 0x27, 0xCD, + 0xD3, 0xE3, 0x11, 0x02, 0xD2, 0xD6, 0xE5, 0x20, 0xD5, 0xF5, 0x55, 0xEE, 0xBD, 0xB4, 0xCE, 0x17, + 0x59, 0x31, 0xCF, 0xDE, 0x85, 0x58, 0xE5, 0x55, 0x51, 0x14, 0x52, 0x8F, 0x59, 0x91, 0x79, 0x97, + 0xD6, 0x75, 0xB9, 0x59, 0x95, 0xA7, 0x7E, 0x50, 0x0A, 0x66, 0x98, 0x0D, 0xE3, 0xF0, 0x7C, 0x3A, + 0x7D, 0xFD, 0xD5, 0x2B, 0x9E, 0xF1, 0x8F, 0x0F, 0x2F, 0xDD, 0xA2, 0x29, 0x4D, 0x8B, 0x9C, 0x6E, + 0xAF, 0x76, 0xB7, 0x57, 0xEB, 0x55, 0x59, 0x42, 0x84, 0x16, 0x69, 0x53, 0x04, 0xD6, 0x7A, 0x4C, + 0x90, 0xD2, 0x6E, 0x9A, 0x95, 0xD4, 0x76, 0x9E, 0x66, 0x08, 0x80, 0x77, 0x96, 0x31, 0x06, 0x00, + 0x6A, 0xAA, 0xFC, 0x7A, 0xBB, 0x71, 0x09, 0xB9, 0x94, 0x10, 0xB2, 0x9C, 0x21, 0x0C, 0xA1, 0x52, + 0x9A, 0x51, 0x0A, 0x29, 0x09, 0x31, 0x28, 0xAD, 0x2F, 0xC7, 0x8E, 0xE7, 0x9C, 0x30, 0x81, 0x11, + 0x89, 0x29, 0x38, 0x67, 0x28, 0xE5, 0xBF, 0x18, 0xD9, 0x52, 0x48, 0xD6, 0x98, 0x2C, 0x2B, 0x57, + 0x75, 0xC3, 0x08, 0x20, 0x18, 0x21, 0x80, 0x0F, 0xCF, 0xE3, 0x7E, 0xBB, 0xC1, 0x18, 0x6A, 0xB5, + 0x58, 0x6F, 0x8D, 0x0D, 0x55, 0x59, 0x16, 0x45, 0xC6, 0x39, 0x9F, 0xE5, 0x84, 0x29, 0xD3, 0xCE, + 0x40, 0x8C, 0x9D, 0xB1, 0x0F, 0x9F, 0xCF, 0x79, 0xC6, 0x36, 0xAB, 0xD6, 0x99, 0x50, 0x55, 0x05, + 0x17, 0x51, 0x2E, 0x2F, 0x10, 0x40, 0xBD, 0x44, 0xAD, 0x03, 0xA6, 0xF0, 0xE5, 0xD8, 0x85, 0x94, + 0x10, 0x21, 0xD6, 0xC4, 0x22, 0xCF, 0x7F, 0x31, 0x57, 0x41, 0x88, 0x8B, 0xB2, 0x32, 0xDA, 0xD5, + 0x55, 0x56, 0x57, 0xFC, 0xE9, 0xE9, 0x80, 0x08, 0xC9, 0xCA, 0x0C, 0x42, 0xE4, 0x4C, 0xCC, 0x19, + 0xDE, 0xD4, 0xAB, 0xCD, 0x6A, 0x1D, 0x63, 0x8A, 0xDE, 0x0A, 0x4A, 0xF2, 0x9C, 0x2F, 0xCB, 0xA2, + 0x94, 0xE1, 0x59, 0x41, 0x18, 0x81, 0x29, 0x09, 0xC1, 0x62, 0x8A, 0x87, 0x73, 0xFF, 0xE1, 0xE3, + 0x03, 0x84, 0x60, 0xB3, 0x6E, 0x30, 0x86, 0xFD, 0x20, 0xE1, 0xAF, 0xBF, 0xFE, 0xC6, 0x39, 0x97, + 0x67, 0x82, 0x31, 0x1C, 0x62, 0xE0, 0x94, 0xC2, 0xE8, 0xAF, 0xF6, 0x3B, 0x63, 0x74, 0x8A, 0x0A, + 0xB3, 0xF4, 0xF9, 0xE5, 0xB4, 0x5E, 0x5D, 0xB9, 0x58, 0xD9, 0xC8, 0x5B, 0x91, 0x9E, 0x0F, 0x87, + 0xC3, 0x79, 0xB8, 0x5C, 0x4E, 0x59, 0xC6, 0x63, 0x8C, 0x9C, 0xB2, 0xAB, 0xDD, 0xA6, 0x29, 0xC5, + 0xEB, 0xFB, 0x9B, 0xBF, 0xFE, 0xFD, 0xE1, 0xD0, 0x0D, 0x94, 0x60, 0x1F, 0xFC, 0xFD, 0x7E, 0x7D, + 0x77, 0x75, 0xAD, 0x8C, 0xED, 0xA7, 0xD9, 0x38, 0x2F, 0xE5, 0xA2, 0xA5, 0x34, 0xD6, 0xB4, 0xEB, + 0x6D, 0x53, 0x17, 0xD3, 0x22, 0x13, 0x80, 0x4F, 0xCF, 0xCF, 0x10, 0x80, 0xD7, 0xF7, 0xF7, 0x00, + 0x46, 0x63, 0x0D, 0xC6, 0xB8, 0xAA, 0xCA, 0xCB, 0x79, 0x90, 0x52, 0x5F, 0xDF, 0x6C, 0x05, 0xA7, + 0x55, 0xC1, 0x37, 0x6D, 0xAD, 0xBB, 0x0B, 0x04, 0x98, 0x66, 0x99, 0xB3, 0x6E, 0x99, 0xE5, 0xAC, + 0xCC, 0x28, 0xF5, 0x7E, 0xDF, 0x70, 0x8A, 0x3F, 0x3F, 0x9F, 0x16, 0x69, 0x7F, 0x01, 0xBB, 0x94, + 0xB6, 0xDA, 0xE8, 0x37, 0xAF, 0x6E, 0x63, 0x0C, 0xFD, 0x38, 0x23, 0x8C, 0x10, 0x82, 0xCE, 0xDA, + 0xF5, 0xA6, 0xD9, 0x6D, 0xDA, 0xEE, 0xD2, 0x8B, 0x8C, 0xE5, 0x4D, 0x31, 0x0D, 0x23, 0x4A, 0x69, + 0x1A, 0x25, 0x23, 0x18, 0x63, 0x34, 0x8C, 0x66, 0x5A, 0x54, 0x99, 0x31, 0x4A, 0xE9, 0x30, 0x6B, + 0x6F, 0xC3, 0x7F, 0xFA, 0x0F, 0xFF, 0x7C, 0x1A, 0x96, 0x8C, 0xB3, 0xCD, 0xBA, 0xFC, 0xEB, 0x87, + 0xCF, 0x9F, 0x3F, 0xBF, 0xAC, 0xDB, 0xC6, 0x87, 0xF8, 0xEB, 0x2F, 0x5E, 0x77, 0xA3, 0xFC, 0xFB, + 0xC7, 0xC3, 0xCD, 0xF5, 0xF6, 0x78, 0x3E, 0x49, 0xAD, 0x36, 0x75, 0xF9, 0xF6, 0x76, 0x17, 0x9C, + 0xB7, 0x3E, 0x30, 0x41, 0x21, 0x84, 0xEB, 0x55, 0x75, 0x7B, 0xBD, 0x39, 0x9E, 0x0F, 0x6D, 0x53, + 0x2F, 0x8B, 0xE1, 0x0C, 0x1C, 0x86, 0x29, 0x81, 0xA0, 0x94, 0x49, 0x91, 0x28, 0xE5, 0xA4, 0xB6, + 0xC6, 0xD8, 0xE4, 0x7D, 0x5D, 0x55, 0x8C, 0x31, 0x0C, 0x43, 0xC6, 0x89, 0x54, 0x6A, 0x8E, 0x8A, + 0x00, 0xD4, 0x06, 0x6F, 0x0A, 0xCC, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x70, 0xBA, + 0x6A, 0x51, 0x4A, 0xDE, 0x07, 0x53, 0x72, 0xCA, 0x30, 0x1F, 0xA5, 0x43, 0x28, 0x9E, 0x8E, 0x33, + 0x80, 0x40, 0x07, 0x17, 0x21, 0xC1, 0x48, 0xBF, 0xBA, 0xDE, 0x3B, 0x8B, 0xCF, 0x83, 0xCA, 0x98, + 0xDC, 0xB6, 0x3B, 0x80, 0x79, 0xB7, 0xCC, 0xA7, 0x8B, 0xBE, 0xBF, 0xDF, 0x15, 0x19, 0x78, 0x78, + 0x59, 0xAE, 0x76, 0x59, 0x4D, 0xFC, 0x7F, 0xFB, 0xE1, 0xF0, 0x78, 0x56, 0xF7, 0x77, 0x37, 0x8B, + 0x74, 0x09, 0xC5, 0xE8, 0x16, 0x29, 0xE5, 0xD3, 0xD1, 0xB4, 0x8D, 0x78, 0x75, 0x53, 0x9E, 0xCE, + 0xFD, 0x5F, 0xFE, 0x36, 0x31, 0x82, 0x9A, 0x92, 0x59, 0x1D, 0xBB, 0xD1, 0x15, 0x15, 0xA5, 0x04, + 0x06, 0x9F, 0x56, 0xEB, 0x86, 0x10, 0xBA, 0x4C, 0x3A, 0x84, 0xE4, 0x63, 0x2C, 0x6B, 0xF2, 0xE6, + 0xF5, 0x0A, 0x41, 0xC0, 0x45, 0xF5, 0xF1, 0xE1, 0x58, 0x95, 0x02, 0x04, 0x15, 0x22, 0x20, 0x28, + 0x7B, 0x7C, 0x1E, 0x62, 0x00, 0x39, 0x63, 0x2F, 0xA7, 0x71, 0x98, 0x15, 0x22, 0x28, 0xF9, 0xB8, + 0xDF, 0xAE, 0x16, 0x69, 0x86, 0x49, 0x72, 0x8A, 0xBE, 0x7D, 0xFB, 0xFA, 0x3C, 0x4A, 0x80, 0x61, + 0x51, 0xE4, 0x75, 0xC9, 0x93, 0x93, 0x31, 0x40, 0x2E, 0x2A, 0x96, 0x09, 0x4A, 0x41, 0xB0, 0x06, + 0x21, 0xB4, 0x6A, 0x57, 0x4A, 0xDB, 0xAA, 0xAC, 0xCF, 0xA7, 0xC7, 0xAC, 0xC2, 0xB7, 0x57, 0x57, + 0x20, 0x82, 0xCF, 0x9F, 0x9E, 0xBC, 0x8D, 0x8B, 0x54, 0xEF, 0x1F, 0xCE, 0xDB, 0xED, 0x76, 0x1C, + 0xFB, 0x59, 0x29, 0x1F, 0x82, 0x31, 0xA1, 0xA8, 0x0A, 0x0A, 0xD3, 0xAF, 0xBE, 0xBA, 0xDF, 0x6E, + 0xEA, 0x90, 0x1C, 0x67, 0xE5, 0xD0, 0x2B, 0x42, 0x40, 0x59, 0x88, 0x71, 0xD2, 0x84, 0xA2, 0x18, + 0x22, 0x42, 0x88, 0x10, 0x9C, 0x12, 0x92, 0xCB, 0xFC, 0xE1, 0xD3, 0xE3, 0xF3, 0x61, 0x68, 0xAA, + 0xAC, 0xAE, 0x0B, 0x8C, 0xB9, 0xF3, 0x1E, 0x93, 0xB4, 0xDD, 0xAD, 0x13, 0x80, 0x08, 0x43, 0x60, + 0xEC, 0xE5, 0x32, 0xD4, 0x75, 0xDD, 0xB4, 0x65, 0xDF, 0x8D, 0xEB, 0xA6, 0x9C, 0x94, 0xB4, 0x20, + 0x61, 0x04, 0x43, 0xF4, 0xFB, 0xF5, 0x1A, 0x02, 0xFC, 0xAF, 0xDF, 0xFF, 0x8D, 0x42, 0x2C, 0xB0, + 0xBB, 0xA8, 0x20, 0x8A, 0xFA, 0xCD, 0x6D, 0xDD, 0x5F, 0xE4, 0xF3, 0xD3, 0x78, 0x7B, 0xBB, 0xF1, + 0x00, 0xC5, 0x30, 0x3B, 0x3B, 0x63, 0x8C, 0x28, 0x11, 0xD6, 0x25, 0x84, 0x0B, 0xA3, 0x1C, 0x63, + 0xB1, 0x28, 0x79, 0x4C, 0x68, 0x9E, 0x64, 0x88, 0x71, 0x31, 0x2A, 0x46, 0xB0, 0x5D, 0x6F, 0x9B, + 0xA2, 0xE6, 0x14, 0x84, 0x08, 0x9C, 0x0B, 0x52, 0x4E, 0x36, 0x3A, 0x44, 0xA0, 0xE0, 0xA4, 0xCE, + 0xF9, 0xA6, 0xAE, 0xB5, 0xF6, 0xE3, 0xA2, 0xAC, 0x8B, 0xCB, 0x62, 0xA4, 0x32, 0x45, 0x99, 0x59, + 0xEF, 0x9C, 0x0F, 0x10, 0xC2, 0xA6, 0xAE, 0x11, 0xC2, 0x3E, 0x04, 0xCE, 0xE8, 0xD3, 0xE3, 0x61, + 0x9E, 0x97, 0xB6, 0x29, 0xF3, 0x8C, 0x8A, 0xAC, 0x84, 0x10, 0x16, 0x39, 0x7C, 0x7E, 0x1A, 0x9A, + 0xAA, 0x28, 0xCB, 0xCC, 0xFA, 0xE8, 0x5C, 0x60, 0x9C, 0x20, 0x04, 0xAC, 0xD1, 0x2E, 0x06, 0xED, + 0x55, 0x96, 0x67, 0xB3, 0x5C, 0x9C, 0xF7, 0x21, 0x41, 0x04, 0x21, 0xA5, 0x1C, 0x84, 0x98, 0xE7, + 0x59, 0x51, 0x94, 0x20, 0x25, 0xCE, 0x58, 0x8A, 0xB1, 0xC8, 0x8B, 0x5F, 0x2C, 0x9C, 0x04, 0x42, + 0x6F, 0x9D, 0x75, 0x5E, 0x2F, 0x7E, 0xDD, 0x36, 0xF3, 0x3C, 0x6B, 0x6B, 0x98, 0xA0, 0x84, 0xA2, + 0x10, 0xC1, 0x38, 0x2B, 0x17, 0xC0, 0xAE, 0x69, 0x63, 0x80, 0x4A, 0x7B, 0xCA, 0x48, 0x88, 0xC1, + 0x7A, 0x73, 0x77, 0x55, 0x46, 0xBD, 0x1C, 0x0E, 0x97, 0xAB, 0xAB, 0xAB, 0x87, 0x97, 0xA7, 0xCB, + 0xA0, 0xDA, 0x32, 0x5B, 0xAF, 0xEA, 0x3C, 0xCB, 0x39, 0xA1, 0x79, 0x91, 0x11, 0x46, 0x95, 0x72, + 0xCA, 0x78, 0xED, 0x1C, 0x82, 0x70, 0x1C, 0x27, 0xEF, 0xDD, 0xDB, 0x57, 0x5B, 0x88, 0xD1, 0x2C, + 0xCD, 0x34, 0x59, 0x44, 0x20, 0x85, 0x88, 0x53, 0x0E, 0x02, 0xE0, 0x04, 0x12, 0x14, 0x08, 0xE5, + 0x31, 0xC2, 0xFD, 0x6E, 0x53, 0xD6, 0x55, 0xF0, 0xEE, 0x97, 0x3A, 0x7F, 0x6D, 0x6D, 0x51, 0x54, + 0x87, 0xC3, 0x81, 0x12, 0xBC, 0xDD, 0x6C, 0xA6, 0x79, 0x16, 0x42, 0xC0, 0x77, 0xAF, 0x5F, 0x1B, + 0x6D, 0x29, 0x25, 0x9C, 0xD3, 0xA2, 0xC8, 0x82, 0x0F, 0xD6, 0xC8, 0xCD, 0xBA, 0x2A, 0x45, 0x41, + 0x29, 0x7B, 0xFF, 0x7C, 0x09, 0x11, 0x6D, 0x77, 0xAF, 0x10, 0x02, 0xD3, 0xD8, 0x37, 0x05, 0xF9, + 0xEB, 0xFB, 0x8F, 0x4E, 0x2F, 0x22, 0xE3, 0x84, 0xD0, 0xE7, 0xC3, 0xE9, 0x5F, 0xFE, 0xE1, 0x8F, + 0xAB, 0x4A, 0xCC, 0x6A, 0x0A, 0x11, 0xFF, 0xF9, 0x87, 0x8F, 0xB3, 0x54, 0xD6, 0x98, 0x77, 0xF7, + 0xFB, 0xBB, 0xAB, 0x5D, 0x4C, 0xCC, 0x38, 0xAB, 0x8C, 0x1E, 0xE7, 0xC5, 0x87, 0xF8, 0x72, 0x38, + 0x64, 0x9C, 0xBF, 0x7B, 0xF7, 0x0E, 0xC1, 0xE4, 0x83, 0x8B, 0x10, 0x9E, 0xCF, 0x1D, 0x4C, 0x90, + 0x10, 0x5C, 0x56, 0xB9, 0x73, 0x0E, 0x23, 0x04, 0x31, 0xF2, 0x3E, 0x69, 0xA5, 0xAD, 0xD1, 0x57, + 0xD7, 0x5B, 0x08, 0x61, 0x46, 0x71, 0x23, 0x22, 0x04, 0x90, 0xF2, 0xF2, 0x7C, 0x5E, 0x46, 0x69, + 0x10, 0x4C, 0xD3, 0x3C, 0xBF, 0x7E, 0x75, 0x65, 0xAC, 0x7D, 0x39, 0x8D, 0x21, 0x24, 0x46, 0x90, + 0x0B, 0xE9, 0xF9, 0x74, 0xAA, 0x0A, 0xD1, 0xD6, 0xCD, 0xF1, 0x72, 0x71, 0xCE, 0x6F, 0x56, 0x0D, + 0xA3, 0xF8, 0x74, 0xEA, 0xAA, 0xAA, 0xFC, 0xE2, 0xED, 0xDD, 0x4F, 0x1F, 0x3E, 0x67, 0x82, 0x15, + 0x25, 0xDF, 0x6D, 0xEA, 0xA1, 0x9F, 0xC7, 0x69, 0xA1, 0x94, 0xFD, 0xFD, 0xC7, 0xC7, 0x3C, 0x13, + 0xFF, 0xF8, 0xFB, 0x6F, 0x9E, 0x4F, 0xE7, 0xAE, 0x9B, 0x10, 0x64, 0x6F, 0xEE, 0xF7, 0xC1, 0x9B, + 0xAA, 0x6C, 0xD6, 0x4D, 0xF3, 0xE3, 0xE7, 0xE7, 0x9F, 0x3E, 0x7C, 0xDE, 0xB4, 0xE5, 0xFE, 0x6A, + 0x7B, 0x3A, 0x76, 0x84, 0x90, 0x80, 0xD8, 0xA5, 0xEB, 0xAB, 0x42, 0xA4, 0xE8, 0x9F, 0x8F, 0x97, + 0x6F, 0xDE, 0x5C, 0xBF, 0xBE, 0xDE, 0x8E, 0xF3, 0x62, 0x43, 0x80, 0x08, 0xCA, 0xC5, 0xEC, 0xB6, + 0xEB, 0xA6, 0xCE, 0x10, 0x0C, 0x08, 0xA1, 0x0F, 0x0F, 0xC7, 0x7F, 0xF8, 0xFD, 0xBB, 0x51, 0xEA, + 0x84, 0x7C, 0x91, 0x89, 0xB1, 0x73, 0x20, 0x81, 0x2C, 0xC7, 0x30, 0x05, 0xE3, 0x89, 0x36, 0x20, + 0x9A, 0x0E, 0x13, 0x74, 0xB5, 0xDF, 0x56, 0x79, 0x3A, 0xCF, 0x87, 0x9C, 0x63, 0x37, 0x2F, 0x88, + 0xE7, 0x8B, 0x1A, 0x09, 0x02, 0xDE, 0xD3, 0xCF, 0xCF, 0xC3, 0xB0, 0x8C, 0xC3, 0xE4, 0xFB, 0xDE, + 0x57, 0x39, 0xDA, 0x6C, 0x73, 0x1D, 0x82, 0xA0, 0xE0, 0x7E, 0x5B, 0xFA, 0x08, 0x32, 0x81, 0x97, + 0x45, 0xA3, 0x10, 0x02, 0xE6, 0x4C, 0x08, 0x63, 0x3D, 0xA3, 0x84, 0x30, 0x5C, 0x94, 0xB5, 0xD5, + 0xFA, 0xE9, 0xA9, 0xDF, 0xBE, 0xFA, 0xA6, 0x2E, 0x05, 0x42, 0x49, 0x4A, 0xED, 0x23, 0x20, 0x48, + 0xFD, 0xF5, 0xCF, 0x7F, 0x9E, 0x16, 0xF0, 0x87, 0xEF, 0xAE, 0x8E, 0xA7, 0xF9, 0xE3, 0xC3, 0xD0, + 0xF5, 0xD6, 0x2A, 0x50, 0x15, 0x18, 0x02, 0x38, 0xCE, 0x9E, 0x32, 0xC4, 0x19, 0xC1, 0x04, 0x31, + 0x46, 0x9F, 0x9F, 0x87, 0x32, 0x67, 0x99, 0x40, 0x4D, 0x5B, 0x32, 0xC1, 0x09, 0x72, 0xF7, 0xD7, + 0xAD, 0x8B, 0x69, 0x98, 0x2D, 0x67, 0x60, 0x92, 0x4B, 0x5D, 0xAD, 0xE7, 0xC9, 0x9C, 0xCF, 0xD2, + 0xBA, 0x00, 0x21, 0xD4, 0x2E, 0x30, 0x4E, 0x17, 0x69, 0x08, 0x66, 0xD3, 0xB0, 0x68, 0xE5, 0x00, + 0x22, 0x5F, 0x5E, 0x6F, 0x00, 0x80, 0x11, 0xD1, 0xCD, 0xBA, 0x7E, 0x3C, 0x9E, 0x29, 0x81, 0x29, + 0x25, 0x67, 0x74, 0xD3, 0x6E, 0x46, 0x69, 0xB6, 0xAB, 0x6A, 0xDD, 0x56, 0x09, 0x24, 0x82, 0xA1, + 0xF3, 0xD1, 0x19, 0x63, 0xDC, 0xBC, 0xDF, 0x97, 0x14, 0x50, 0x82, 0xD8, 0xC3, 0xC3, 0x67, 0xE7, + 0xED, 0xB4, 0x78, 0xA9, 0xDD, 0x7E, 0xB7, 0xB7, 0xC1, 0x1D, 0x4E, 0x47, 0xAD, 0xBC, 0x0D, 0x10, + 0x20, 0x78, 0xB5, 0xAE, 0xFE, 0xF4, 0xDB, 0x6F, 0x2E, 0xFD, 0x1C, 0x93, 0x0B, 0x3E, 0xF9, 0x08, + 0x19, 0xA3, 0xC3, 0x2C, 0x09, 0x25, 0xDE, 0xF9, 0x5F, 0x70, 0x9C, 0x3C, 0xCF, 0xE7, 0x59, 0xFD, + 0xEA, 0xCB, 0xDB, 0x75, 0x5D, 0x8C, 0x93, 0xBD, 0xBB, 0x5E, 0x9F, 0x7B, 0x75, 0xBE, 0x0C, 0x94, + 0x93, 0xF5, 0x9A, 0x53, 0x4A, 0x09, 0x42, 0x11, 0x84, 0x79, 0x58, 0xF6, 0xBB, 0x15, 0x40, 0x00, + 0x41, 0x2C, 0x17, 0x49, 0x08, 0x9E, 0x97, 0x65, 0x56, 0xD6, 0x45, 0x78, 0x3E, 0x1E, 0xBF, 0x7C, + 0x75, 0x23, 0x6D, 0xD4, 0xDE, 0x62, 0x8C, 0x86, 0xE3, 0x53, 0x6F, 0x42, 0x5E, 0xD4, 0x95, 0x80, + 0x39, 0x2F, 0x94, 0x8C, 0xCA, 0x48, 0xCC, 0x90, 0xD6, 0xDA, 0x3B, 0x09, 0x23, 0xE6, 0x59, 0x56, + 0x94, 0x3C, 0xE3, 0xED, 0xF3, 0xF3, 0x85, 0x92, 0x40, 0x05, 0xA1, 0x84, 0x1B, 0xAB, 0x19, 0xA5, + 0xC7, 0xD3, 0xA5, 0x2E, 0x37, 0xF3, 0x32, 0x6A, 0x6B, 0xEA, 0x52, 0xAC, 0xEA, 0xD5, 0xA5, 0x5B, + 0xCA, 0x92, 0x63, 0x1C, 0xBF, 0x7C, 0xBB, 0xC3, 0x90, 0xEB, 0x65, 0x94, 0xF3, 0xF2, 0xE3, 0xE7, + 0x91, 0x32, 0xEC, 0x62, 0xEC, 0x87, 0x39, 0xC6, 0x58, 0x55, 0xA5, 0x73, 0x1E, 0x60, 0x48, 0x29, + 0xC9, 0xF2, 0x1C, 0x21, 0x8C, 0x08, 0xB1, 0xDA, 0x64, 0x9C, 0xC4, 0x60, 0x18, 0x67, 0x55, 0x25, + 0x32, 0xC1, 0x53, 0xC2, 0xC7, 0x73, 0xAF, 0xA4, 0xE3, 0x94, 0x10, 0x0C, 0xFB, 0x41, 0x4E, 0x93, + 0xD6, 0xD6, 0x15, 0x39, 0x2F, 0x0B, 0xC1, 0xB3, 0x1C, 0xE3, 0x00, 0x90, 0x05, 0x20, 0x50, 0xC6, + 0x6C, 0x70, 0xFD, 0x20, 0x9F, 0x9E, 0x2E, 0xFB, 0xAB, 0x35, 0x65, 0x34, 0x13, 0x19, 0x42, 0x10, + 0x04, 0xC4, 0x09, 0x05, 0x28, 0xFA, 0xE0, 0x87, 0x41, 0x73, 0x91, 0x6D, 0x9A, 0x7A, 0x19, 0x14, + 0x08, 0x10, 0x40, 0xF4, 0x74, 0x38, 0x87, 0xE0, 0x04, 0xC7, 0xDE, 0x87, 0xA6, 0xA9, 0xBC, 0x8F, + 0xF3, 0x62, 0xEB, 0xAA, 0x01, 0x09, 0x06, 0x00, 0x00, 0x8C, 0x52, 0x1B, 0x29, 0xF5, 0xBB, 0xD7, + 0xD7, 0x9B, 0x36, 0xCF, 0x32, 0x16, 0xAC, 0xF9, 0xF9, 0xE7, 0x9F, 0xCB, 0x22, 0xFF, 0xE6, 0x8B, + 0xD7, 0x4A, 0xEB, 0x08, 0x40, 0x02, 0x28, 0xC4, 0x64, 0x43, 0x34, 0xD6, 0x69, 0xE7, 0x84, 0x60, + 0x56, 0x87, 0xD3, 0x79, 0x00, 0x29, 0x06, 0x67, 0x43, 0x8C, 0xBF, 0xF9, 0xEE, 0x1D, 0xC1, 0x84, + 0x40, 0xB4, 0x2C, 0xF3, 0x7A, 0xB5, 0xC5, 0x00, 0x81, 0xE0, 0xA6, 0x65, 0x50, 0xD6, 0x31, 0x8C, + 0x57, 0x4D, 0x85, 0x30, 0x75, 0x1E, 0x30, 0x46, 0x4F, 0xC3, 0x84, 0x21, 0x20, 0x18, 0x65, 0x22, + 0xA3, 0x08, 0xDE, 0xDF, 0x5F, 0x51, 0xCA, 0x83, 0xF3, 0xF0, 0x3F, 0xFF, 0xA7, 0xFF, 0x68, 0x8C, + 0x7D, 0x7E, 0x3C, 0x9D, 0x2F, 0x5D, 0x9E, 0xF1, 0xE8, 0x03, 0xC2, 0x20, 0x85, 0xD8, 0x54, 0x05, + 0xCF, 0xEA, 0x88, 0x73, 0xB3, 0x4C, 0xC9, 0x0F, 0x84, 0x67, 0x31, 0xE2, 0x9F, 0x3E, 0x3D, 0x02, + 0x08, 0xF7, 0x6D, 0x35, 0x6A, 0xE7, 0xBC, 0x17, 0x8C, 0xDF, 0x5D, 0x5F, 0xF7, 0x97, 0x97, 0xED, + 0xA6, 0x98, 0x95, 0xEF, 0x27, 0xC3, 0x28, 0xDC, 0xD6, 0x59, 0x55, 0x94, 0x00, 0x62, 0xE7, 0x51, + 0xD7, 0x5F, 0x8C, 0xD3, 0xB3, 0x34, 0xFD, 0x38, 0x69, 0xAD, 0xCA, 0xB2, 0xA0, 0x84, 0x51, 0xCA, + 0x20, 0x48, 0x08, 0x63, 0x80, 0x92, 0x35, 0x9A, 0x31, 0xD1, 0x34, 0xCD, 0xB2, 0x2C, 0x87, 0x97, + 0x97, 0xCD, 0x76, 0x03, 0x00, 0x24, 0x84, 0xCC, 0xD3, 0x4C, 0x19, 0xC9, 0xF3, 0x6C, 0xEA, 0xFA, + 0x9B, 0x7D, 0x93, 0x0B, 0x21, 0xB5, 0x97, 0x26, 0xF8, 0x44, 0x18, 0x8E, 0x7D, 0x7F, 0xB9, 0xBB, + 0xB9, 0x06, 0x08, 0x8C, 0xB3, 0x46, 0x10, 0xF9, 0x10, 0x1E, 0x1E, 0x5F, 0xDA, 0xB6, 0x62, 0x8C, + 0xCA, 0x45, 0xCF, 0x6A, 0x69, 0x9B, 0xA6, 0xEB, 0x06, 0x08, 0x22, 0x48, 0xE0, 0xFE, 0xE6, 0xA6, + 0x2A, 0xF2, 0x53, 0xDF, 0x5B, 0x6B, 0x76, 0xDB, 0xFA, 0x8B, 0x57, 0xD7, 0x04, 0xA5, 0x6F, 0x7E, + 0x75, 0xE7, 0x42, 0xB8, 0x5C, 0xA6, 0x4C, 0xF0, 0xA6, 0xAC, 0x86, 0xD9, 0x98, 0x45, 0x1B, 0xE9, + 0x5F, 0xCE, 0x87, 0xFD, 0x6E, 0xED, 0x0D, 0x4A, 0x09, 0x2E, 0xDA, 0x28, 0x63, 0x08, 0x27, 0xE7, + 0xF3, 0xA0, 0xA4, 0x7A, 0xE9, 0xC6, 0xB2, 0x6A, 0xA3, 0x57, 0x55, 0x21, 0xBC, 0x75, 0x94, 0xF3, + 0x7F, 0xFC, 0xED, 0x57, 0xEF, 0x3F, 0x3C, 0x28, 0x65, 0x00, 0x84, 0x84, 0x92, 0x18, 0x63, 0x5E, + 0xAD, 0x8E, 0xE7, 0xC3, 0xAA, 0x66, 0x94, 0x30, 0xA9, 0xF4, 0x6F, 0x7F, 0xFD, 0xAA, 0x1F, 0x96, + 0xF5, 0x36, 0xDB, 0x34, 0x15, 0xC5, 0xCC, 0x7B, 0x0B, 0x41, 0x8C, 0x21, 0x14, 0x75, 0x73, 0x1E, + 0xA4, 0x99, 0xBB, 0x4C, 0x70, 0x4E, 0xD9, 0x7C, 0x79, 0x38, 0x4F, 0x63, 0xD5, 0xAC, 0x9D, 0x99, + 0x07, 0x39, 0x07, 0xEF, 0x11, 0xE4, 0x0F, 0x27, 0xF5, 0x74, 0x18, 0x9B, 0x8A, 0xD9, 0x10, 0x95, + 0x46, 0x97, 0x5E, 0x55, 0x15, 0x25, 0x38, 0x5E, 0xAD, 0x0B, 0xEF, 0xD3, 0x6C, 0x4C, 0x2E, 0xE8, + 0x38, 0x78, 0xC6, 0xE0, 0xFD, 0x55, 0x0E, 0x93, 0x97, 0x96, 0x42, 0x9C, 0x9A, 0x2A, 0x4B, 0x09, + 0x1F, 0xCF, 0x4B, 0x40, 0xEC, 0xCD, 0xEB, 0x7B, 0x80, 0x30, 0x46, 0x70, 0x38, 0x1D, 0xB2, 0xA2, + 0xBA, 0xB9, 0xDB, 0x0B, 0x30, 0x4C, 0xA7, 0x97, 0x8F, 0x9F, 0xFA, 0x0F, 0x4F, 0xCB, 0x65, 0x94, + 0xD7, 0xBB, 0x0D, 0xA7, 0xEC, 0x78, 0xEA, 0x8B, 0x22, 0x93, 0x8B, 0x87, 0x30, 0xB6, 0x15, 0x57, + 0xD6, 0xA7, 0x18, 0x09, 0xA5, 0x59, 0x93, 0x45, 0x6D, 0xAF, 0x37, 0x1B, 0x07, 0x82, 0xB3, 0x8A, + 0x42, 0x5F, 0x16, 0xB9, 0x4D, 0x31, 0x24, 0xCB, 0xB3, 0xCC, 0x39, 0xE0, 0x23, 0xD0, 0x36, 0x55, + 0x65, 0xF5, 0xF1, 0xE1, 0x28, 0xA5, 0x47, 0x09, 0x4E, 0x52, 0x13, 0x42, 0xEA, 0x22, 0x8F, 0x06, + 0x58, 0xE7, 0x5F, 0xED, 0x73, 0xE7, 0xCD, 0xBA, 0x59, 0x75, 0xB3, 0x99, 0x74, 0xBC, 0x74, 0x5D, + 0x55, 0x35, 0xCF, 0x2F, 0x4F, 0x45, 0x59, 0xE5, 0x59, 0xB6, 0x69, 0x6A, 0xA5, 0xCD, 0x38, 0x4F, + 0x09, 0xA4, 0x69, 0x1A, 0x9D, 0xF3, 0xB7, 0xD7, 0xDB, 0xFB, 0x9B, 0x2D, 0x86, 0x70, 0xD3, 0x34, + 0xC7, 0x73, 0x37, 0xC9, 0x29, 0x86, 0xB0, 0xD9, 0x54, 0xAC, 0xA8, 0xDE, 0x7F, 0xF8, 0x6C, 0xAD, + 0x2D, 0xF2, 0xA2, 0x1F, 0x55, 0x9E, 0xF3, 0xDF, 0x7C, 0x75, 0xE7, 0x8D, 0xFD, 0xF0, 0x78, 0xC9, + 0xB3, 0x5C, 0x4A, 0x87, 0x19, 0x2E, 0x8A, 0xFC, 0xC3, 0xA7, 0x93, 0x0B, 0x2E, 0x84, 0xF0, 0x9B, + 0x6F, 0xDF, 0x3C, 0x3D, 0x9F, 0x87, 0x51, 0x52, 0xC6, 0xF6, 0xEB, 0x7A, 0xDB, 0x96, 0x84, 0xD2, + 0xAF, 0xDF, 0xEC, 0x10, 0x66, 0x38, 0x79, 0x4A, 0x90, 0x0D, 0x0E, 0x21, 0xA2, 0xB4, 0x03, 0x18, + 0x30, 0xCC, 0x7C, 0x70, 0x8B, 0x31, 0xBB, 0x4D, 0xD5, 0x8F, 0xF3, 0x38, 0x2A, 0x46, 0xA9, 0x56, + 0xFE, 0x32, 0xC8, 0xCB, 0xF9, 0x70, 0xBD, 0xDD, 0x40, 0x46, 0x13, 0x08, 0x3E, 0x38, 0x2F, 0x65, + 0xE2, 0x34, 0x2F, 0x18, 0x41, 0xDC, 0x48, 0x4B, 0x10, 0x49, 0x29, 0xC5, 0x04, 0x07, 0xD9, 0x43, + 0x08, 0x11, 0x00, 0x28, 0xC5, 0xB2, 0x2C, 0x7C, 0x88, 0xCE, 0x24, 0xC1, 0x19, 0xA1, 0xF0, 0xD4, + 0x8D, 0xDB, 0xDD, 0x56, 0x60, 0x3C, 0x8E, 0x63, 0x82, 0x99, 0x33, 0x26, 0x26, 0x7F, 0x73, 0xD5, + 0x16, 0x39, 0xF3, 0x11, 0x40, 0x88, 0x32, 0x8E, 0x18, 0x63, 0x46, 0x07, 0x46, 0x10, 0x46, 0x48, + 0xE9, 0x80, 0x31, 0xEC, 0x86, 0xF9, 0x32, 0x4C, 0xC6, 0xB9, 0x71, 0x5C, 0x12, 0x48, 0xD6, 0x7B, + 0xEB, 0x42, 0x96, 0x09, 0x48, 0x09, 0x44, 0xB8, 0xAD, 0xB3, 0xFD, 0x2A, 0xA7, 0x18, 0xB8, 0x98, + 0x60, 0x4C, 0xDE, 0x7A, 0xE3, 0x03, 0x13, 0x19, 0x61, 0x34, 0xC6, 0x80, 0x10, 0x98, 0x47, 0xFB, + 0xF7, 0x1F, 0x1E, 0x67, 0xA3, 0x29, 0xC6, 0x82, 0x60, 0x4C, 0x39, 0x17, 0x2C, 0xCF, 0xE9, 0x34, + 0x4D, 0xD6, 0xFA, 0xD5, 0x2A, 0x2B, 0x6B, 0xF1, 0xE9, 0xF9, 0xA4, 0x8C, 0xE6, 0x9C, 0x17, 0x45, + 0xC1, 0x08, 0x4E, 0x21, 0xAE, 0xAA, 0x62, 0x59, 0x06, 0x1F, 0x91, 0xF6, 0x08, 0x27, 0x52, 0x15, + 0xD5, 0xE5, 0x3C, 0x7E, 0x7E, 0x78, 0xBE, 0xBB, 0xBD, 0xA2, 0x98, 0xDC, 0xDE, 0xEC, 0x21, 0x0A, + 0xDF, 0xFF, 0xED, 0xBD, 0xD6, 0x6E, 0xB3, 0x5D, 0x33, 0x46, 0x11, 0xC6, 0x65, 0xC6, 0xEA, 0x26, + 0x27, 0x94, 0x3A, 0xE7, 0xF3, 0x8C, 0x20, 0x80, 0x42, 0xF0, 0x00, 0x62, 0x84, 0x21, 0xA3, 0x88, + 0x11, 0x1C, 0x5C, 0x50, 0xC6, 0xC8, 0x45, 0x41, 0x48, 0xBA, 0xCB, 0x62, 0x83, 0x8F, 0x29, 0x41, + 0x08, 0x10, 0x46, 0x54, 0xB0, 0x14, 0x53, 0x46, 0xF9, 0x38, 0x4B, 0x84, 0x11, 0xA1, 0x58, 0x2A, + 0xD5, 0x54, 0x05, 0x42, 0x89, 0x53, 0xC2, 0x10, 0xE4, 0x98, 0x01, 0x00, 0x7C, 0x70, 0x4A, 0x19, + 0x1F, 0x93, 0x36, 0x8E, 0x50, 0x0E, 0x52, 0x22, 0x84, 0xAC, 0x9A, 0x5A, 0x1B, 0x37, 0x2F, 0x5A, + 0x30, 0x7A, 0x7B, 0xBD, 0x59, 0xD7, 0x79, 0x2E, 0x04, 0xFC, 0x9F, 0xFF, 0xA7, 0xFF, 0x11, 0x21, + 0x18, 0x00, 0x98, 0xA6, 0xC5, 0x1A, 0x9B, 0x82, 0x7F, 0xFC, 0xFC, 0x10, 0x9C, 0xCF, 0x33, 0x21, + 0xB2, 0x12, 0x42, 0x2C, 0xC7, 0x43, 0xD5, 0x08, 0x69, 0x7C, 0x55, 0x57, 0x2E, 0xC2, 0xBA, 0xAA, + 0xE6, 0x49, 0x5F, 0x26, 0xB7, 0xCC, 0x0B, 0xC1, 0x30, 0x05, 0x1B, 0x9C, 0x03, 0x30, 0x2E, 0xDA, + 0x43, 0x48, 0xFF, 0xF8, 0x9B, 0x57, 0xAB, 0x22, 0xEF, 0x27, 0xA7, 0x8D, 0xFA, 0xF9, 0xE3, 0x53, + 0x59, 0x55, 0xFD, 0xD0, 0x53, 0xC1, 0x40, 0x4C, 0x5D, 0xD7, 0x6D, 0xD6, 0x4D, 0x3F, 0x4A, 0x00, + 0x11, 0x80, 0x89, 0x20, 0xC2, 0x28, 0x71, 0xDE, 0x48, 0x65, 0xB7, 0xDB, 0xBD, 0xE0, 0xB4, 0xEF, + 0xFB, 0x3C, 0xCF, 0x94, 0x36, 0x6D, 0xDB, 0x28, 0x29, 0x7D, 0x70, 0x04, 0x22, 0x46, 0x71, 0x5D, + 0xE4, 0xD3, 0x2C, 0xAD, 0x8F, 0xFD, 0xB4, 0x5C, 0x5F, 0x6D, 0x6E, 0x6F, 0x37, 0xF3, 0x2C, 0x97, + 0xF1, 0x97, 0x37, 0x4B, 0xB0, 0x48, 0x4D, 0x08, 0xEE, 0x86, 0x41, 0x70, 0xC1, 0x19, 0xAB, 0xAA, + 0x62, 0x1C, 0x86, 0x6F, 0xBE, 0xBC, 0x67, 0x9C, 0x78, 0xE7, 0xAE, 0x77, 0xEB, 0xD5, 0xBA, 0x5D, + 0xE4, 0x12, 0x62, 0x1A, 0x86, 0x69, 0xB5, 0xAA, 0xAE, 0xDB, 0xB6, 0x2A, 0xC8, 0xF1, 0x32, 0xCC, + 0x52, 0x57, 0x65, 0xB1, 0xDF, 0xD6, 0xC7, 0xD3, 0xC4, 0xA9, 0x28, 0x72, 0x41, 0x09, 0x67, 0x22, + 0x1A, 0x6B, 0xED, 0x02, 0x9B, 0xBA, 0xEA, 0x87, 0xF9, 0xE9, 0xD4, 0x7D, 0x7C, 0x3E, 0x50, 0x24, + 0x7E, 0xF8, 0xF1, 0x87, 0xDD, 0xB6, 0xFE, 0xF5, 0xD7, 0x6F, 0x56, 0x4D, 0x31, 0x9B, 0x18, 0x13, + 0x66, 0x2C, 0x83, 0x30, 0x39, 0x6B, 0xAB, 0x42, 0x2C, 0xCB, 0xD2, 0x75, 0x43, 0x42, 0xB1, 0x9B, + 0xDD, 0xCB, 0xCB, 0xCB, 0x3F, 0xFD, 0xE1, 0x0B, 0x9A, 0x21, 0x6F, 0xC2, 0xAA, 0xCE, 0x9F, 0x4F, + 0xFD, 0xF5, 0xAE, 0x2D, 0x32, 0xAA, 0x94, 0x4E, 0x31, 0x70, 0x21, 0x7C, 0x70, 0x8B, 0x9A, 0x04, + 0x27, 0xD1, 0xE7, 0x56, 0x9B, 0x18, 0xDD, 0x2F, 0x99, 0x2F, 0xC6, 0x62, 0x56, 0xC6, 0x03, 0x8F, + 0x43, 0xF8, 0xF0, 0xF0, 0xF0, 0xF1, 0xF9, 0x54, 0x67, 0x3C, 0x04, 0x65, 0x62, 0x9C, 0x15, 0x98, + 0x54, 0x50, 0xDA, 0x7E, 0xFB, 0xAE, 0xD1, 0xCA, 0x7E, 0xFF, 0xE3, 0x58, 0x16, 0x62, 0xD3, 0x52, + 0x67, 0xDC, 0x6E, 0xC5, 0xB3, 0x8A, 0x1D, 0x9E, 0x07, 0x51, 0x6D, 0x43, 0x72, 0x5E, 0x2F, 0xB7, + 0xB7, 0x5B, 0x97, 0x04, 0x63, 0x9C, 0x10, 0x72, 0x3E, 0x4F, 0x98, 0x0A, 0x8C, 0x11, 0x0C, 0xB1, + 0x5D, 0xB7, 0x6D, 0x5D, 0x46, 0xDD, 0x2F, 0xD3, 0xC5, 0xCA, 0xF1, 0xF1, 0xE8, 0x44, 0x96, 0x8F, + 0xF3, 0x98, 0xB3, 0xAC, 0xCE, 0x6B, 0x1F, 0xE1, 0x38, 0x2D, 0xDF, 0x7D, 0xFD, 0x0A, 0x21, 0x82, + 0x10, 0x74, 0xDE, 0x53, 0x26, 0x10, 0x80, 0x6D, 0x55, 0x94, 0xB9, 0x38, 0x8F, 0xFD, 0xCB, 0xF3, + 0x63, 0x95, 0x97, 0x75, 0x5B, 0x5A, 0xA7, 0x17, 0xA5, 0x0E, 0xDD, 0xC1, 0x04, 0x40, 0x59, 0xA1, + 0x94, 0x05, 0x10, 0x82, 0x04, 0x08, 0xCE, 0x1F, 0x0F, 0x17, 0xC1, 0xF9, 0xF5, 0x6E, 0xB5, 0xCC, + 0x6A, 0x5D, 0x50, 0x65, 0x8E, 0xC7, 0xD3, 0x5C, 0x97, 0x25, 0xCF, 0x57, 0x5A, 0x83, 0x53, 0x37, + 0x94, 0x45, 0xAE, 0xB5, 0xCC, 0x28, 0x4B, 0x88, 0x42, 0x14, 0x39, 0xB5, 0x94, 0x11, 0xE9, 0xC8, + 0xF9, 0x38, 0x01, 0x10, 0x57, 0x4D, 0xBD, 0xDB, 0xAE, 0x93, 0x0F, 0x8C, 0x90, 0x7E, 0x1C, 0x12, + 0x4D, 0x28, 0x19, 0x67, 0x82, 0xF1, 0xFE, 0xE7, 0x4F, 0x87, 0xCD, 0x7A, 0xF5, 0xD5, 0xBB, 0x7B, + 0x88, 0x60, 0x51, 0xF0, 0xB1, 0x3F, 0x8D, 0xD3, 0x72, 0x99, 0x83, 0x60, 0xE5, 0x3C, 0xBB, 0x3C, + 0x67, 0x10, 0xC2, 0x4F, 0x4F, 0xE7, 0x79, 0x99, 0xEB, 0xB2, 0xFA, 0xEE, 0xDB, 0xAF, 0x9E, 0x5E, + 0x9E, 0xAD, 0xB1, 0xDB, 0x6D, 0x9B, 0x71, 0x36, 0x8E, 0xCB, 0xBB, 0xBB, 0xED, 0xB7, 0x6F, 0xB6, + 0xB3, 0xD4, 0x04, 0x93, 0x65, 0xD1, 0x90, 0x80, 0xBC, 0xE0, 0x8B, 0x0C, 0xDD, 0x30, 0x61, 0x84, + 0xAA, 0x2A, 0xF7, 0x21, 0x40, 0xF8, 0x8B, 0x48, 0x16, 0x56, 0x65, 0x61, 0xA4, 0x07, 0x08, 0x2A, + 0x35, 0x69, 0x65, 0x8D, 0x55, 0x2E, 0x78, 0xAD, 0x2C, 0xF4, 0xC9, 0xC2, 0xE4, 0xA3, 0x69, 0xCB, + 0xAA, 0xAD, 0xB6, 0x8C, 0x71, 0x90, 0xA0, 0x75, 0x1A, 0x40, 0x5F, 0x95, 0xC5, 0x3C, 0x0D, 0x18, + 0x44, 0x80, 0x78, 0xD3, 0xB6, 0x14, 0x91, 0xF3, 0xE5, 0xF4, 0xF9, 0xF9, 0x31, 0x2B, 0xAB, 0xA6, + 0x59, 0x4D, 0xFD, 0x50, 0xE6, 0xB9, 0x56, 0x56, 0x70, 0x9E, 0x67, 0x8C, 0x52, 0x31, 0x4D, 0x7D, + 0x51, 0x97, 0xC7, 0xC3, 0x04, 0x40, 0x64, 0x8C, 0x2B, 0x6D, 0xF3, 0x9C, 0x4B, 0x6D, 0x38, 0x63, + 0x08, 0xA2, 0xAA, 0xCE, 0xDB, 0x9C, 0xD9, 0x18, 0xA5, 0xD3, 0xC6, 0x99, 0xE7, 0xA7, 0xB3, 0x60, + 0xC2, 0xB9, 0xD8, 0x8D, 0x33, 0x40, 0xE9, 0xE6, 0x6A, 0x57, 0x66, 0xFC, 0xE5, 0xF1, 0x54, 0xB6, + 0x94, 0xA2, 0x74, 0x38, 0x49, 0x9E, 0x89, 0x79, 0xD2, 0x55, 0x5D, 0x1A, 0xE7, 0x10, 0x42, 0xAB, + 0xA6, 0x81, 0x00, 0x26, 0x04, 0x3F, 0xFE, 0xFC, 0xA4, 0xA5, 0x52, 0x2E, 0x70, 0x21, 0x78, 0x46, + 0x00, 0x08, 0x31, 0x00, 0x29, 0xD5, 0x6A, 0x5D, 0x50, 0x8E, 0x3E, 0x7C, 0x7E, 0x01, 0x00, 0x42, + 0x08, 0xAB, 0x9C, 0x5C, 0x6F, 0x4B, 0xA5, 0xFD, 0xB8, 0x18, 0x42, 0x08, 0x67, 0x82, 0x02, 0x81, + 0x31, 0x89, 0x28, 0x26, 0xEF, 0x39, 0x11, 0xBF, 0xFA, 0xEA, 0x75, 0x96, 0x0B, 0x44, 0xD0, 0xB0, + 0x2C, 0xC6, 0x38, 0x63, 0x6D, 0x88, 0x71, 0xB5, 0xAE, 0x92, 0x0F, 0xDE, 0xF9, 0x69, 0xD6, 0x3C, + 0xE3, 0x42, 0x08, 0xAB, 0x0D, 0x02, 0x30, 0x21, 0xA8, 0x8C, 0x9B, 0x87, 0xC9, 0xBA, 0x88, 0x18, + 0xE6, 0x84, 0x50, 0x02, 0x63, 0x08, 0x14, 0xD3, 0x71, 0x94, 0x52, 0x1A, 0x84, 0xB0, 0xB1, 0xB6, + 0x59, 0x57, 0xC1, 0x87, 0xFE, 0x32, 0xAD, 0x56, 0x15, 0x17, 0xCC, 0xBA, 0x88, 0x11, 0x98, 0xE6, + 0x19, 0x12, 0xEC, 0x9C, 0xB5, 0x56, 0x5B, 0xE3, 0x8D, 0xF4, 0x4D, 0x99, 0x79, 0x1F, 0xC7, 0x45, + 0x97, 0x05, 0xAF, 0x2B, 0x81, 0x10, 0x24, 0x84, 0x10, 0x42, 0x20, 0x22, 0x9C, 0x32, 0xEF, 0xA2, + 0x75, 0xF1, 0x9B, 0x37, 0x37, 0xEB, 0x3A, 0x83, 0xFF, 0xFC, 0x4F, 0xFF, 0x9C, 0x09, 0xCA, 0x05, + 0xC3, 0x8C, 0x41, 0x84, 0x39, 0xC7, 0x4A, 0xC9, 0xFE, 0x74, 0xEE, 0x4E, 0x67, 0x10, 0xE2, 0x66, + 0xB7, 0x25, 0x24, 0x36, 0x6D, 0x09, 0x21, 0xC8, 0x84, 0xA8, 0xAB, 0x42, 0x5A, 0xBB, 0x28, 0xC3, + 0x39, 0x9F, 0x46, 0xF5, 0x7C, 0x18, 0x3E, 0x3F, 0x74, 0x72, 0x19, 0x95, 0xD6, 0x3E, 0x84, 0xDD, + 0xB6, 0xF9, 0xDD, 0xAF, 0x5F, 0x3F, 0x7D, 0x3A, 0x1D, 0x4E, 0xFD, 0x7E, 0xB7, 0xFA, 0xFC, 0x72, + 0xA1, 0x5C, 0x58, 0xA3, 0xDE, 0xBD, 0xBA, 0x39, 0x9C, 0xFB, 0x97, 0xE3, 0xF1, 0xD5, 0xCD, 0x0E, + 0x11, 0x62, 0x5D, 0x34, 0xD6, 0x44, 0x1F, 0x39, 0xA7, 0x5D, 0x3F, 0xC6, 0x94, 0x04, 0xCF, 0xCA, + 0x5C, 0x20, 0x84, 0xBA, 0x61, 0xB4, 0xCE, 0xB5, 0x6D, 0xA3, 0x94, 0xA2, 0x14, 0x5B, 0x6D, 0x9B, + 0x2A, 0x4F, 0x09, 0x18, 0xEB, 0xC6, 0x69, 0xB9, 0xBD, 0xB9, 0xFA, 0xFA, 0x8B, 0x57, 0x52, 0xEB, + 0x45, 0x29, 0x39, 0xA9, 0x45, 0xEA, 0x49, 0xAA, 0x10, 0x43, 0x08, 0xC1, 0x87, 0x70, 0xB5, 0xDD, + 0xC7, 0x98, 0x6E, 0x77, 0xCD, 0x37, 0x6F, 0x5F, 0xED, 0x77, 0x4D, 0xF0, 0x1E, 0x40, 0x30, 0x4C, + 0xB3, 0x07, 0xA0, 0xAC, 0x79, 0x51, 0x08, 0x6D, 0x0D, 0x63, 0xC2, 0x2D, 0xFA, 0xE3, 0xCF, 0x0F, + 0x8C, 0x32, 0xE7, 0x43, 0x53, 0x17, 0xEB, 0x75, 0xF5, 0xF8, 0xD4, 0x6D, 0x56, 0x6D, 0x59, 0x50, + 0x84, 0x30, 0xCF, 0x28, 0x82, 0xF1, 0x7A, 0xBB, 0x4D, 0x01, 0x7F, 0x7A, 0x7C, 0xA1, 0x9C, 0x13, + 0xC6, 0xE4, 0xEC, 0x96, 0x79, 0x12, 0x1C, 0x29, 0x27, 0x3F, 0x3E, 0x8F, 0xF3, 0x1C, 0x7C, 0x08, + 0x08, 0x61, 0xE7, 0xF4, 0xAA, 0xCD, 0x09, 0xC1, 0x00, 0xA0, 0x42, 0x64, 0x45, 0x41, 0x4F, 0xDD, + 0x78, 0x3C, 0x9C, 0xFF, 0xF8, 0xDB, 0xB7, 0x9C, 0x23, 0x84, 0xA0, 0xF3, 0x21, 0xC4, 0x44, 0x31, + 0x0B, 0xC1, 0x4E, 0xF3, 0xCC, 0x39, 0x56, 0xDA, 0xA6, 0xE4, 0xB5, 0x9C, 0x8B, 0x8C, 0xD7, 0xE5, + 0xCD, 0xB2, 0x4C, 0x90, 0x60, 0x8C, 0x69, 0x4A, 0xBF, 0x98, 0x36, 0x31, 0xE3, 0x88, 0x60, 0x08, + 0xA2, 0x1F, 0x26, 0x1D, 0x01, 0x30, 0x6E, 0xB1, 0x4E, 0x2D, 0xCA, 0xBA, 0x10, 0x4E, 0x97, 0xDE, + 0x18, 0xDB, 0x4F, 0xDE, 0xDA, 0xF0, 0xE6, 0xCD, 0xFA, 0xC3, 0x87, 0x7E, 0x5D, 0x21, 0x0A, 0x63, + 0x56, 0x97, 0xEB, 0xED, 0xFA, 0xE3, 0x87, 0xC3, 0xF1, 0xB2, 0xDC, 0xEE, 0xF3, 0x8C, 0xE1, 0x00, + 0x48, 0xD5, 0x94, 0xCE, 0x46, 0xE3, 0x92, 0xF7, 0xA8, 0x5D, 0xAF, 0x51, 0x72, 0x82, 0x61, 0x9E, + 0x55, 0x59, 0x46, 0x8D, 0xBA, 0xBC, 0xDA, 0x5E, 0x19, 0x0D, 0x47, 0xA9, 0x18, 0xC5, 0x08, 0x80, + 0x32, 0x2F, 0x42, 0x00, 0x2E, 0x44, 0x42, 0x30, 0x02, 0x11, 0x13, 0xAC, 0x16, 0x63, 0x6D, 0x80, + 0x10, 0x38, 0x6B, 0xEE, 0xAE, 0x76, 0xF3, 0x62, 0x84, 0xA0, 0x31, 0x45, 0xCE, 0x58, 0x02, 0x50, + 0xCB, 0x61, 0x94, 0xC7, 0x6E, 0x98, 0x08, 0xC9, 0x70, 0x96, 0x8F, 0xE3, 0x4C, 0x31, 0xD5, 0x26, + 0x3A, 0x9F, 0x18, 0x43, 0xCE, 0xBB, 0xB2, 0xA0, 0x0D, 0x4F, 0xC7, 0xF3, 0x24, 0x0D, 0x8A, 0x3E, + 0x48, 0x65, 0x10, 0xE1, 0x09, 0xB3, 0xEB, 0x7D, 0x8D, 0xA2, 0xC6, 0x00, 0x23, 0x2A, 0x16, 0x39, + 0x40, 0xE0, 0x16, 0x65, 0xEA, 0xA6, 0x5C, 0x95, 0x15, 0x40, 0x7C, 0x92, 0x8E, 0x62, 0xF2, 0xE1, + 0xC3, 0x13, 0xE5, 0x62, 0x5A, 0x66, 0x48, 0xD2, 0xF3, 0xF3, 0x31, 0x25, 0x92, 0xA2, 0xA3, 0x04, + 0xBD, 0x7E, 0xFD, 0x66, 0xDD, 0xB4, 0x31, 0xBA, 0xD3, 0x65, 0x80, 0x71, 0x16, 0x82, 0x7E, 0x7E, + 0x9E, 0x08, 0xE5, 0xCE, 0xC7, 0x3C, 0xCF, 0x87, 0x71, 0xB9, 0xF4, 0x1D, 0xC2, 0xB8, 0xAE, 0x5A, + 0x82, 0xB1, 0xB5, 0x3A, 0x04, 0x7F, 0x7F, 0xBB, 0x7B, 0x75, 0xBD, 0xDA, 0xD6, 0x35, 0x02, 0x28, + 0xE3, 0xF0, 0xD3, 0x73, 0x57, 0xE4, 0x79, 0x5B, 0xB3, 0x97, 0x73, 0xE7, 0x63, 0x24, 0x84, 0x5A, + 0x1B, 0x20, 0x88, 0x55, 0x55, 0x3A, 0xEF, 0x83, 0x8B, 0x59, 0x29, 0xFA, 0x61, 0xCA, 0x0A, 0x61, + 0xA4, 0x6D, 0xD6, 0xD7, 0x34, 0x2B, 0x29, 0x9C, 0xB4, 0x96, 0x00, 0xA6, 0xA1, 0xEB, 0xA3, 0x89, + 0x8B, 0x56, 0x2F, 0x97, 0x4B, 0x4C, 0xF4, 0xDD, 0xED, 0xFD, 0xAF, 0xBE, 0xB8, 0xAE, 0x4A, 0x21, + 0x95, 0x61, 0x9C, 0x52, 0x8C, 0x18, 0x26, 0x52, 0x69, 0x84, 0x49, 0x51, 0x95, 0x5A, 0x9B, 0xC5, + 0xC9, 0x7E, 0x99, 0xAD, 0x76, 0xE3, 0x30, 0xF9, 0x90, 0x9A, 0x36, 0xDF, 0xD6, 0x9B, 0x14, 0x81, + 0x0F, 0x88, 0x51, 0xBA, 0xC8, 0x91, 0x10, 0xAA, 0xA4, 0x0D, 0xC1, 0x69, 0xE3, 0x2E, 0xDD, 0xF8, + 0x72, 0xE9, 0x7C, 0x88, 0x77, 0xB7, 0x37, 0xC3, 0xB8, 0x20, 0x8E, 0xBE, 0xB8, 0xD9, 0x55, 0x65, + 0xB9, 0x18, 0xD9, 0xF7, 0x1D, 0xE7, 0xA2, 0xAD, 0x8A, 0xBE, 0x9F, 0xFF, 0xFA, 0xC3, 0x87, 0x90, + 0xE2, 0x97, 0x6F, 0x5F, 0x97, 0x05, 0xFB, 0xEB, 0xDF, 0x3E, 0xDE, 0xDF, 0xD5, 0x4A, 0x4B, 0x9F, + 0x68, 0xB0, 0x28, 0x04, 0x50, 0x14, 0x99, 0x34, 0x1A, 0xA4, 0x48, 0x29, 0x25, 0x4C, 0x64, 0x39, + 0xAB, 0xAB, 0xDC, 0xCE, 0xEA, 0xD8, 0x4D, 0xCF, 0xC7, 0x3E, 0xC4, 0x28, 0x04, 0x46, 0x08, 0x20, + 0x42, 0x38, 0x01, 0x59, 0xCE, 0x00, 0x00, 0xD3, 0xAC, 0x00, 0x80, 0x4D, 0x8E, 0x20, 0xB4, 0xB3, + 0x41, 0xA7, 0x5E, 0xA5, 0xE8, 0xD7, 0xAB, 0x55, 0x59, 0x96, 0x7D, 0x3F, 0x3A, 0x6D, 0xDF, 0xBD, + 0xBA, 0xBF, 0xBB, 0xBA, 0xC6, 0x08, 0x9D, 0xBA, 0xF1, 0x74, 0xBE, 0x00, 0x04, 0x08, 0xC6, 0xF3, + 0x24, 0x95, 0xD4, 0x44, 0xB0, 0x94, 0x62, 0x4A, 0x69, 0xD5, 0x56, 0x31, 0xC4, 0x84, 0x31, 0x42, + 0x90, 0x12, 0xE2, 0x63, 0x42, 0x08, 0x05, 0x17, 0xF2, 0x22, 0x47, 0x08, 0x2D, 0xB3, 0x22, 0x9C, + 0x69, 0x29, 0x83, 0x33, 0xAB, 0x3A, 0xF7, 0xDE, 0xCF, 0xD2, 0x5D, 0xBA, 0x79, 0xBD, 0x59, 0x59, + 0xE3, 0x10, 0x04, 0x4D, 0xC9, 0x61, 0xF2, 0x11, 0x22, 0x41, 0xA9, 0x10, 0x2C, 0x26, 0x30, 0x1B, + 0x77, 0x1E, 0x26, 0x25, 0x95, 0xD3, 0x4E, 0x2A, 0x5D, 0x64, 0x99, 0x32, 0x06, 0x82, 0xD4, 0xD6, + 0xA2, 0x69, 0xCA, 0x65, 0x31, 0x00, 0x41, 0x6B, 0x9D, 0x60, 0xBC, 0x2A, 0xF2, 0xA2, 0x28, 0x51, + 0x82, 0x9C, 0x13, 0xF8, 0xA7, 0x7F, 0xF8, 0x23, 0x42, 0x6C, 0x5E, 0x54, 0x5D, 0x57, 0xE3, 0xB8, + 0x24, 0x10, 0xF7, 0xD7, 0x2D, 0x04, 0x49, 0x4E, 0x63, 0x5D, 0x32, 0x2E, 0x04, 0x82, 0x04, 0x84, + 0xC8, 0x18, 0x09, 0x21, 0x5A, 0xEB, 0x00, 0x46, 0x46, 0x6B, 0x4A, 0x60, 0x5D, 0x97, 0xED, 0x7A, + 0x7D, 0x38, 0xAA, 0xBF, 0xBF, 0x7F, 0x10, 0x9C, 0x97, 0xA5, 0xD0, 0x6A, 0x42, 0x61, 0x3E, 0x0D, + 0xF2, 0xF1, 0xB1, 0x47, 0x18, 0xED, 0xB7, 0x4D, 0x3F, 0xCA, 0x37, 0xAF, 0xF7, 0x97, 0xB3, 0x9C, + 0xA4, 0xEC, 0xFB, 0x61, 0xBB, 0xAA, 0x29, 0xA3, 0x11, 0x82, 0x65, 0x9E, 0xD7, 0x6D, 0x3B, 0x8E, + 0x53, 0x3F, 0x8C, 0x22, 0xCB, 0x10, 0xC0, 0x9C, 0xE3, 0x45, 0x4A, 0x65, 0x1C, 0xC6, 0x28, 0xCF, + 0x85, 0xD6, 0x26, 0x2F, 0xF8, 0xBB, 0xD7, 0xEB, 0xF3, 0x45, 0x7D, 0xFC, 0x74, 0xDA, 0xAC, 0x1B, + 0xCA, 0x98, 0x5A, 0xDC, 0xFD, 0xED, 0x96, 0x60, 0xE4, 0x43, 0x30, 0xCA, 0x60, 0x04, 0x1F, 0x4F, + 0x97, 0x65, 0x51, 0xBF, 0x64, 0x14, 0x6D, 0xD5, 0x5C, 0xC6, 0xF1, 0x9F, 0x7F, 0xFF, 0xDB, 0xDF, + 0xFF, 0xFA, 0x9D, 0x75, 0xFA, 0xC3, 0xA7, 0xE7, 0xBC, 0x16, 0xBF, 0x14, 0x49, 0x57, 0x75, 0x6E, + 0xAC, 0xD6, 0xD6, 0x31, 0x4C, 0x97, 0x69, 0x66, 0x94, 0xE6, 0x9C, 0xA6, 0x98, 0x56, 0xEB, 0x8D, + 0xD6, 0x1A, 0x21, 0xE8, 0xA2, 0xB5, 0x4A, 0x39, 0x17, 0xEA, 0xB2, 0x5A, 0xAD, 0x4A, 0xAD, 0xED, + 0x22, 0x95, 0xB4, 0x1A, 0x02, 0x5C, 0x17, 0x05, 0x08, 0xD8, 0xB8, 0xE8, 0xBD, 0x0D, 0x20, 0x85, + 0x08, 0xA4, 0x8E, 0xE3, 0xAC, 0x63, 0xF4, 0x21, 0xBA, 0xB2, 0xC8, 0x30, 0x82, 0x11, 0x00, 0xA3, + 0x3C, 0x67, 0x04, 0x22, 0x10, 0xBD, 0xDB, 0x6D, 0x9A, 0xE8, 0x92, 0x0F, 0xEE, 0xD4, 0x8D, 0x65, + 0x91, 0x1B, 0x6B, 0xA7, 0x69, 0x1A, 0xA6, 0xE5, 0xEB, 0x2F, 0x76, 0xAF, 0x6F, 0xB6, 0x45, 0xCE, + 0x21, 0x88, 0x59, 0x5E, 0xCC, 0xD2, 0x63, 0x8C, 0x20, 0x80, 0x00, 0x22, 0x17, 0x1D, 0x48, 0x10, + 0x21, 0x08, 0x11, 0xC4, 0x18, 0x07, 0x97, 0xA6, 0xC5, 0xB6, 0xAB, 0x2A, 0x26, 0xE3, 0x9D, 0x56, + 0xD6, 0x3C, 0x3F, 0xBE, 0x70, 0x9E, 0xCD, 0xCA, 0x60, 0x12, 0x1E, 0x9E, 0x3B, 0x2E, 0xC8, 0xF3, + 0x61, 0x49, 0xC1, 0xDD, 0xEE, 0x38, 0xCF, 0xCB, 0xD7, 0x6F, 0x6E, 0xFE, 0xFE, 0xE3, 0xD3, 0x30, + 0xCA, 0x52, 0x20, 0x6B, 0xA2, 0xC8, 0xB9, 0x36, 0xE1, 0xD2, 0xE9, 0xED, 0xBE, 0x5E, 0x46, 0x4B, + 0x21, 0xAD, 0x1B, 0x9E, 0x67, 0x80, 0xB0, 0xBC, 0x5E, 0x55, 0x88, 0xF0, 0xAF, 0xEF, 0xEF, 0x86, + 0x61, 0x41, 0x90, 0x2C, 0xA3, 0xD4, 0x4A, 0x49, 0x25, 0xAD, 0x0F, 0x94, 0x92, 0xCB, 0x65, 0xF4, + 0x31, 0x15, 0x79, 0x26, 0x32, 0xEA, 0x9D, 0x03, 0x31, 0x15, 0x45, 0xD6, 0x14, 0xE5, 0xE1, 0xD4, + 0x65, 0x99, 0xB0, 0xCE, 0xE6, 0x79, 0x56, 0xE6, 0x39, 0x81, 0x29, 0xCB, 0x98, 0xD6, 0x53, 0x2E, + 0x32, 0x0F, 0xA0, 0xF3, 0x91, 0x12, 0xD6, 0xF5, 0x1D, 0xE3, 0xD9, 0xF3, 0xE1, 0x90, 0x30, 0x6E, + 0xB8, 0x80, 0x76, 0x81, 0x84, 0x4B, 0xE3, 0xA5, 0x32, 0xCE, 0xBB, 0xF5, 0xAA, 0xB9, 0xB9, 0xBF, + 0x8A, 0x31, 0x38, 0x2B, 0xAF, 0xAF, 0xD6, 0x84, 0x8A, 0xA7, 0xE7, 0x67, 0x65, 0x4C, 0x88, 0xA8, + 0xEF, 0x86, 0x2A, 0x13, 0xD6, 0xE3, 0xCF, 0x8F, 0x47, 0xEF, 0x9C, 0xF5, 0x31, 0x2B, 0xD9, 0xAA, + 0xAD, 0x21, 0x84, 0x43, 0x3F, 0x2F, 0x06, 0x0B, 0x9E, 0x56, 0xA5, 0x68, 0x8A, 0x76, 0x5C, 0xDC, + 0xF9, 0x72, 0xEE, 0x87, 0xCB, 0xDB, 0xBB, 0xED, 0x22, 0xF5, 0xCF, 0x4F, 0x67, 0x65, 0xC3, 0xAA, + 0xAD, 0x8F, 0x97, 0xBE, 0x2A, 0xCA, 0xD5, 0x7A, 0xD5, 0x75, 0xBD, 0x36, 0x86, 0x53, 0x4A, 0x08, + 0x59, 0xE4, 0xF2, 0xC5, 0xAB, 0xBB, 0xAF, 0xEF, 0x57, 0x04, 0x51, 0x65, 0x62, 0x59, 0x30, 0x80, + 0x62, 0x3F, 0x48, 0x1F, 0x42, 0x04, 0x01, 0x80, 0x34, 0x4C, 0x8A, 0x51, 0x7E, 0xE9, 0x7B, 0xC1, + 0x58, 0xBB, 0xAA, 0xA7, 0x71, 0x66, 0x5C, 0x58, 0xA3, 0x9B, 0xF5, 0x2A, 0x6F, 0xEE, 0xAD, 0xF3, + 0xE3, 0xF9, 0xD3, 0xED, 0xF5, 0x1A, 0x63, 0x48, 0x29, 0xCC, 0x8B, 0x3C, 0xC5, 0x98, 0xA2, 0x5F, + 0x17, 0x42, 0x7B, 0x1F, 0x7C, 0x04, 0x3E, 0x38, 0x1F, 0x4E, 0x97, 0x09, 0x42, 0x90, 0x09, 0x6E, + 0xAD, 0x47, 0x08, 0x61, 0x8C, 0x43, 0x8C, 0x09, 0x24, 0x1F, 0x3C, 0xA2, 0x78, 0xB5, 0x69, 0x08, + 0x44, 0x18, 0xA1, 0x61, 0x1E, 0x28, 0xE5, 0xC1, 0x45, 0x82, 0x09, 0x86, 0x10, 0x42, 0x18, 0x40, + 0x20, 0x10, 0x1F, 0xFB, 0xE1, 0xD3, 0xC3, 0x81, 0x33, 0x3C, 0x2F, 0x16, 0x22, 0x68, 0x8C, 0x97, + 0xDA, 0x6E, 0xB6, 0xB5, 0xB7, 0x09, 0xE0, 0xB4, 0x5B, 0xD5, 0x4D, 0x2E, 0x2E, 0xFD, 0x58, 0x96, + 0xF9, 0x32, 0xA9, 0x53, 0x37, 0xBE, 0x1C, 0xBB, 0x3F, 0x7E, 0xF7, 0x9D, 0xB1, 0x43, 0x4A, 0x20, + 0x86, 0xB0, 0xC8, 0xA9, 0x59, 0x97, 0x9F, 0x3E, 0x4C, 0x18, 0xD3, 0x10, 0x22, 0xA7, 0x70, 0xB3, + 0x2D, 0x2F, 0xDD, 0x42, 0x28, 0x73, 0x21, 0x7E, 0xF9, 0x6E, 0x47, 0x18, 0xA7, 0x9C, 0x9F, 0x0E, + 0x1D, 0xF2, 0x01, 0xA3, 0xF4, 0xD2, 0x8D, 0x84, 0xD1, 0x3D, 0x27, 0x81, 0xD1, 0x59, 0xC9, 0x7A, + 0x55, 0xEF, 0x77, 0xFB, 0xF9, 0xF2, 0x8C, 0x50, 0x3A, 0x0F, 0xF2, 0xB2, 0x38, 0x08, 0x61, 0xD3, + 0x34, 0xD3, 0xBC, 0x08, 0x46, 0xDB, 0xAA, 0xAC, 0xF2, 0xCA, 0x99, 0x64, 0x5D, 0xE8, 0xFA, 0x71, + 0x9A, 0x67, 0xEB, 0xFC, 0x38, 0x2E, 0xD6, 0xD9, 0xA2, 0xC8, 0x56, 0x75, 0x49, 0x48, 0xCA, 0xAA, + 0xA2, 0x2E, 0x73, 0xEF, 0xC2, 0xA9, 0x9B, 0x31, 0x46, 0x00, 0x41, 0xEF, 0x3C, 0xF8, 0x65, 0x6B, + 0x2E, 0x72, 0x8C, 0x90, 0x77, 0x3E, 0xC4, 0x54, 0x97, 0x0C, 0x25, 0x63, 0x55, 0x20, 0x1C, 0x4E, + 0xD2, 0x8F, 0xA3, 0x82, 0x08, 0xBF, 0x3C, 0x9F, 0x57, 0x65, 0xC6, 0x84, 0x50, 0x5A, 0xF1, 0x8C, + 0x03, 0x80, 0xCA, 0x22, 0xAF, 0x4B, 0x51, 0x14, 0xD9, 0x71, 0x18, 0x8D, 0xB5, 0x53, 0x3F, 0x5A, + 0x17, 0x18, 0xE3, 0xC1, 0x5B, 0xEF, 0x42, 0x4C, 0x01, 0x24, 0x98, 0x00, 0xAC, 0xAA, 0x3C, 0x46, + 0x0F, 0x21, 0xCE, 0x33, 0x76, 0xB5, 0x5D, 0x23, 0x48, 0x00, 0x04, 0xF0, 0xBF, 0xFB, 0xF7, 0xFF, + 0xEE, 0xE5, 0xD8, 0x4F, 0xD3, 0x72, 0x7B, 0x7B, 0x25, 0xA5, 0xB6, 0xC6, 0xB4, 0xAB, 0x92, 0x51, + 0x04, 0x53, 0xC0, 0x98, 0x4C, 0xA3, 0x3C, 0x9E, 0x3A, 0x8C, 0xD0, 0xEB, 0xFB, 0x7D, 0x4A, 0x9E, + 0x32, 0xCE, 0x39, 0x2B, 0x32, 0x7A, 0xB5, 0x5D, 0x11, 0x92, 0x21, 0x8C, 0x20, 0x4A, 0x8B, 0x72, + 0x08, 0x81, 0x55, 0x93, 0x4D, 0x8B, 0xC1, 0x24, 0x3A, 0x6F, 0x9F, 0x9F, 0xBA, 0xD3, 0x65, 0xE4, + 0xC8, 0x7D, 0x78, 0x98, 0x22, 0x00, 0x98, 0xD0, 0xF3, 0xB9, 0xC7, 0x28, 0x3A, 0xEF, 0xB5, 0x71, + 0x59, 0xC6, 0x72, 0x91, 0x71, 0x46, 0x0F, 0xE7, 0x6E, 0xB3, 0x69, 0xEF, 0xAE, 0xD7, 0x65, 0x5E, + 0x76, 0xA3, 0x7C, 0x3A, 0x9E, 0x97, 0x79, 0x89, 0xD1, 0x21, 0x04, 0x39, 0x27, 0x9C, 0x55, 0xDE, + 0xCB, 0xB6, 0x11, 0x6F, 0x6F, 0xDF, 0xE4, 0x22, 0x53, 0xCE, 0xFD, 0xDB, 0xF7, 0x3F, 0x2B, 0x65, + 0x72, 0x0E, 0x6F, 0x77, 0x5B, 0x00, 0x52, 0xDB, 0x94, 0xD6, 0xFB, 0x87, 0xA7, 0x97, 0xA6, 0xC9, + 0xAD, 0xF6, 0xC7, 0x61, 0xAA, 0xCA, 0xFA, 0x4F, 0xBF, 0xFB, 0x4D, 0x53, 0x17, 0xC3, 0xD4, 0x8F, + 0x52, 0xB9, 0x94, 0xB4, 0x33, 0x08, 0x23, 0x39, 0xEB, 0x79, 0x5E, 0x30, 0x45, 0x6A, 0xD6, 0x8C, + 0x73, 0xCE, 0xC8, 0x32, 0x0C, 0xF7, 0x57, 0xFB, 0xC7, 0xC3, 0x39, 0x58, 0xDB, 0xAE, 0x0A, 0x0F, + 0x93, 0x35, 0xA1, 0xCC, 0xB3, 0x61, 0x50, 0xEB, 0xB6, 0x39, 0x77, 0x5D, 0x44, 0x20, 0x80, 0x58, + 0x88, 0xBC, 0x14, 0x6C, 0x1C, 0x64, 0x59, 0xD5, 0x4F, 0x87, 0xE3, 0xAB, 0x9B, 0xFD, 0xF1, 0xD4, + 0x61, 0x4C, 0x11, 0xA1, 0xF3, 0x22, 0x11, 0x46, 0x8B, 0x54, 0xDE, 0x79, 0x84, 0x10, 0xC2, 0xC4, + 0x1A, 0x5D, 0x97, 0xF9, 0x6E, 0xDD, 0x8E, 0xB3, 0x9C, 0xA5, 0x8E, 0x21, 0x52, 0x82, 0x04, 0x67, + 0xCF, 0xC7, 0x8B, 0x73, 0x56, 0x30, 0xF2, 0xDF, 0xFF, 0xBB, 0x5F, 0xBF, 0xBE, 0xDB, 0x1D, 0x2E, + 0x3D, 0x24, 0xF8, 0x78, 0xE9, 0x63, 0x82, 0x4E, 0x87, 0xAE, 0x5F, 0xDA, 0x4D, 0x15, 0x7D, 0x0C, + 0x31, 0x02, 0x0C, 0x53, 0x02, 0x46, 0x9A, 0xF5, 0xBA, 0xB5, 0xD6, 0xB1, 0x8C, 0x95, 0x79, 0xE6, + 0x8C, 0xC9, 0xCA, 0xEC, 0x78, 0xB8, 0x2C, 0x52, 0xAE, 0xB6, 0x2B, 0xAB, 0x67, 0xA5, 0x96, 0x97, + 0xF3, 0xF4, 0x74, 0x1C, 0xBF, 0xFD, 0x62, 0x43, 0x09, 0x98, 0x26, 0xC7, 0x38, 0xC6, 0x84, 0x7C, + 0x7E, 0xEC, 0x61, 0x0A, 0x85, 0xC0, 0x4A, 0x27, 0x1F, 0x50, 0x5E, 0x09, 0x84, 0xA0, 0x33, 0xB0, + 0xAC, 0x2A, 0x39, 0xCD, 0x08, 0xB9, 0x3C, 0xA7, 0x94, 0x80, 0xBB, 0x9B, 0x6B, 0xE3, 0x38, 0x66, + 0x9C, 0x41, 0x04, 0x01, 0xF2, 0xCE, 0x5E, 0xCE, 0x97, 0x94, 0x22, 0x00, 0xE8, 0xD4, 0x8D, 0x3C, + 0x13, 0x20, 0xC4, 0x5C, 0x50, 0x2E, 0xF8, 0x2C, 0x95, 0xD2, 0xFA, 0x7E, 0xBF, 0x0D, 0x31, 0x11, + 0x46, 0x19, 0xC3, 0xBF, 0x28, 0x60, 0x39, 0x23, 0x55, 0x59, 0x10, 0x82, 0xEF, 0x76, 0x2D, 0xC1, + 0xC1, 0x1A, 0x17, 0x22, 0x59, 0x94, 0xFE, 0xFB, 0xA7, 0x67, 0xA3, 0xCD, 0xFD, 0xFD, 0x2B, 0x3B, + 0x0E, 0x4E, 0xCB, 0x10, 0x03, 0x20, 0x8C, 0x72, 0x5E, 0x35, 0x65, 0xCE, 0x79, 0x59, 0x62, 0x04, + 0x61, 0x51, 0x67, 0x84, 0xD0, 0xBE, 0x9B, 0x53, 0x8A, 0x80, 0xC2, 0x59, 0xEA, 0xEE, 0x3C, 0x69, + 0x65, 0x10, 0xA4, 0xF3, 0x3C, 0xA4, 0xE0, 0x66, 0x03, 0x8A, 0x22, 0x6F, 0xEB, 0xBA, 0xEF, 0x47, + 0x42, 0xD8, 0x87, 0xCF, 0x0F, 0x18, 0xC7, 0xAF, 0x5E, 0xDF, 0xAF, 0xEA, 0xFA, 0xE7, 0xC7, 0xEE, + 0xE9, 0xE9, 0x20, 0x8D, 0xDC, 0xB6, 0xD5, 0xE3, 0xD3, 0x01, 0x73, 0x6E, 0x7C, 0xD4, 0x0E, 0x78, + 0x67, 0xDA, 0x66, 0xC5, 0x28, 0x7D, 0x3E, 0x3C, 0x53, 0x4A, 0x84, 0xC8, 0x9D, 0xF3, 0x84, 0x92, + 0x7F, 0xFA, 0xEE, 0x8B, 0xB7, 0x57, 0xC5, 0xE7, 0xA7, 0x91, 0x67, 0xA5, 0x10, 0xE4, 0xE5, 0x78, + 0x82, 0x10, 0x74, 0xE3, 0x4C, 0x28, 0x6E, 0xAA, 0xF2, 0x87, 0x9F, 0x1E, 0x78, 0xC6, 0x30, 0x46, + 0x65, 0xBD, 0x55, 0x73, 0xBF, 0x48, 0x59, 0x94, 0xAB, 0xEB, 0xFD, 0x86, 0xE4, 0xCD, 0xA7, 0x8F, + 0xEF, 0x8D, 0x9C, 0xB6, 0x9B, 0x15, 0x86, 0x20, 0xC1, 0x04, 0x52, 0xBC, 0xDA, 0xAF, 0x12, 0x00, + 0xCB, 0x22, 0xEB, 0x82, 0x63, 0x8C, 0x08, 0xC6, 0x45, 0x59, 0x3C, 0x3D, 0x1C, 0x42, 0x70, 0x59, + 0x26, 0x9C, 0x8F, 0x82, 0xB3, 0x42, 0x88, 0x7E, 0x54, 0xDA, 0x1A, 0xA3, 0x2D, 0xC2, 0x08, 0x00, + 0x88, 0x08, 0xCE, 0x0A, 0x86, 0x50, 0x04, 0x09, 0x68, 0x6B, 0xB3, 0x3C, 0x43, 0x30, 0x36, 0x45, + 0x65, 0xAC, 0xEB, 0xA7, 0x71, 0xB7, 0xDD, 0x1D, 0x2F, 0xFD, 0x30, 0x2D, 0x75, 0x59, 0x9C, 0x4F, + 0x5D, 0xBB, 0x2E, 0x87, 0x7E, 0x4A, 0x30, 0xF6, 0x27, 0x59, 0x54, 0x6C, 0xBD, 0x6D, 0x18, 0x2F, + 0x39, 0x4E, 0xCF, 0x4F, 0x87, 0x14, 0x88, 0x36, 0x76, 0x59, 0x64, 0xDB, 0x6C, 0x33, 0x5E, 0x77, + 0xDD, 0x39, 0x24, 0x75, 0x3C, 0xF5, 0x5F, 0xBD, 0xDD, 0x8B, 0x1C, 0x17, 0x65, 0xD3, 0x56, 0x39, + 0x8C, 0x11, 0x51, 0x1C, 0x11, 0x1A, 0x87, 0x65, 0x1A, 0xA4, 0x54, 0x12, 0x63, 0x6A, 0x12, 0x6A, + 0x9A, 0xA2, 0x2D, 0x44, 0x41, 0x82, 0x8A, 0x70, 0x9C, 0x5C, 0x74, 0x0E, 0xCC, 0xCA, 0x0B, 0x4A, + 0xB3, 0x06, 0xC4, 0x70, 0xB5, 0xCE, 0x9D, 0xB3, 0xC1, 0x48, 0x2A, 0xB2, 0xC4, 0xB3, 0x8C, 0x73, + 0xC1, 0xE9, 0xA2, 0x54, 0x4A, 0x00, 0x41, 0xA0, 0xB5, 0x53, 0xD2, 0xC5, 0x04, 0xCF, 0xE7, 0x6E, + 0x98, 0x16, 0x63, 0x75, 0x9E, 0x67, 0x00, 0x21, 0x4A, 0x31, 0x0A, 0xFE, 0x6E, 0x5B, 0x0E, 0x36, + 0xC2, 0x04, 0x8C, 0x8B, 0xE3, 0xAC, 0xDB, 0x4D, 0xBB, 0x4C, 0xD2, 0x19, 0xE3, 0x63, 0xC2, 0x84, + 0x52, 0x82, 0xD7, 0x4D, 0x7D, 0x3C, 0x75, 0x94, 0x52, 0x90, 0xE2, 0xAA, 0x44, 0x45, 0x46, 0xA4, + 0x92, 0x8C, 0x17, 0xD2, 0xF8, 0xEE, 0x2C, 0x71, 0x0A, 0xCA, 0x2D, 0x0E, 0x35, 0x8B, 0x72, 0xC3, + 0x30, 0x20, 0x14, 0x6F, 0xAF, 0xF7, 0xBF, 0x58, 0x13, 0xAB, 0x32, 0x3B, 0x9D, 0x4F, 0xFD, 0xD0, + 0xC7, 0x08, 0x40, 0x02, 0x21, 0x78, 0x00, 0xC0, 0x22, 0x6D, 0x8C, 0xA9, 0xAA, 0x32, 0xA3, 0x1D, + 0xC6, 0x10, 0x42, 0x50, 0xD6, 0x05, 0x8A, 0x70, 0x55, 0x97, 0x10, 0x41, 0x22, 0x4D, 0x9C, 0xC7, + 0xFE, 0x7A, 0xBB, 0x3A, 0x1E, 0xCF, 0x4D, 0x5D, 0xAC, 0xF6, 0x79, 0x02, 0x31, 0x7A, 0x67, 0xB4, + 0x7D, 0xFF, 0xF1, 0xA5, 0x6D, 0x56, 0x84, 0xE7, 0x31, 0xB8, 0xA6, 0xA9, 0x6E, 0x76, 0x9B, 0x76, + 0xD5, 0x5A, 0xEF, 0x30, 0x02, 0x29, 0x82, 0x18, 0x13, 0x42, 0x08, 0x80, 0x14, 0xAC, 0xFB, 0xEB, + 0x4F, 0x4F, 0x59, 0x51, 0x20, 0x9A, 0x8A, 0x8C, 0xE7, 0x39, 0x5F, 0xAF, 0x57, 0xF7, 0xF7, 0xD7, + 0xDD, 0xE1, 0x38, 0x8C, 0x16, 0x60, 0xBA, 0xDD, 0x54, 0xE7, 0xD3, 0xA9, 0xCA, 0xC5, 0x28, 0x81, + 0x57, 0x96, 0x62, 0xB4, 0xAB, 0xB3, 0x9F, 0x1E, 0x0E, 0xD6, 0xC5, 0xBA, 0xAE, 0x19, 0x23, 0x9F, + 0x1F, 0x1F, 0xCF, 0xBD, 0x32, 0xC6, 0x20, 0x08, 0xA3, 0x4F, 0x80, 0x20, 0x6B, 0xE2, 0x3C, 0xF6, + 0xFB, 0x4D, 0xFB, 0xCF, 0xDF, 0xFD, 0x3E, 0x63, 0x1C, 0x11, 0x9C, 0x92, 0xFB, 0xFA, 0xBE, 0xF9, + 0xF0, 0xF0, 0xFC, 0x5F, 0xFE, 0xEB, 0x4F, 0x75, 0x91, 0x6D, 0xB6, 0x6D, 0x8A, 0xC1, 0x5B, 0xB7, + 0xFA, 0xE6, 0x75, 0x44, 0x29, 0x78, 0xF8, 0xFB, 0x3F, 0xFC, 0xE3, 0x6E, 0xBD, 0x19, 0xC7, 0xF3, + 0x0F, 0x3F, 0x3F, 0xC4, 0x14, 0x67, 0xA5, 0xC6, 0x59, 0xFA, 0xE0, 0x19, 0xC3, 0x10, 0x42, 0x29, + 0x0D, 0x80, 0x29, 0xCB, 0x8B, 0x79, 0x96, 0xE3, 0xE8, 0x29, 0x86, 0x1F, 0x1E, 0x0E, 0x29, 0x26, + 0x42, 0xF0, 0xE7, 0xE7, 0x53, 0x5E, 0x8A, 0x2C, 0x2B, 0xA7, 0xC5, 0x00, 0x08, 0xDF, 0x7F, 0x7E, + 0x72, 0x3E, 0x60, 0x4A, 0x94, 0xF1, 0x26, 0x8B, 0x78, 0xDD, 0x7A, 0x1F, 0xAD, 0xB5, 0x77, 0x77, + 0x37, 0xD3, 0x3C, 0xBB, 0x14, 0x28, 0x82, 0x04, 0x42, 0x63, 0x14, 0x42, 0x98, 0x60, 0x7A, 0x3C, + 0x75, 0x57, 0xBB, 0x8D, 0xB5, 0x46, 0x19, 0x4D, 0x30, 0xEE, 0xC6, 0xE5, 0xE9, 0xE5, 0x82, 0x08, + 0x8A, 0x31, 0x41, 0x10, 0x63, 0x8C, 0xBB, 0x56, 0xFC, 0xC3, 0x6F, 0x7E, 0x03, 0x52, 0x2A, 0x72, + 0xF6, 0xFD, 0x8F, 0x0F, 0x2F, 0x97, 0x7E, 0x18, 0x97, 0x10, 0x22, 0xE7, 0x9C, 0x51, 0x46, 0x29, + 0x36, 0xCA, 0x20, 0x82, 0x16, 0x6D, 0x8D, 0x8B, 0xCE, 0xBA, 0xBA, 0xCE, 0x2E, 0xFD, 0xE8, 0x9C, + 0xE7, 0x2E, 0xD3, 0xCA, 0x6B, 0xA5, 0xC4, 0xA2, 0xBD, 0x4F, 0x98, 0xB3, 0x69, 0xEE, 0xBD, 0xF3, + 0x31, 0x41, 0xEB, 0x43, 0x70, 0xC9, 0x27, 0x10, 0x5C, 0x10, 0x19, 0xFA, 0xF8, 0x30, 0x70, 0x86, + 0xA7, 0xD9, 0x21, 0x90, 0xAA, 0x8C, 0x86, 0x18, 0x19, 0x23, 0x9B, 0x6D, 0x11, 0x13, 0xF6, 0x36, + 0x41, 0x80, 0xBC, 0x8F, 0x4A, 0xB9, 0xC7, 0xE7, 0x79, 0xBF, 0x2D, 0x0A, 0xB1, 0x48, 0x2B, 0xB9, + 0xC8, 0x09, 0x42, 0x65, 0x59, 0x41, 0x4C, 0x9C, 0x0F, 0x8C, 0xD0, 0xD9, 0x18, 0xC2, 0xE9, 0x30, + 0x2C, 0x8C, 0x33, 0x80, 0x50, 0x48, 0x96, 0x71, 0xA1, 0x95, 0x46, 0x04, 0x06, 0x17, 0xFB, 0x7E, + 0x74, 0x21, 0x20, 0x8C, 0x16, 0xE9, 0x52, 0x8C, 0x37, 0xFB, 0x35, 0xE7, 0xA4, 0x1F, 0xE7, 0xA6, + 0xA0, 0x82, 0xE3, 0xA6, 0xAC, 0x7D, 0x84, 0x08, 0xD2, 0x4D, 0x5B, 0x6C, 0x9A, 0x92, 0xAC, 0x8A, + 0x90, 0x92, 0x52, 0xBA, 0x2C, 0x73, 0x63, 0xDC, 0x28, 0xF5, 0xE7, 0x97, 0x6E, 0x6B, 0x98, 0x55, + 0xD2, 0xA7, 0x14, 0x31, 0x11, 0x82, 0xA1, 0x04, 0x01, 0x00, 0x84, 0x91, 0xB6, 0x6D, 0x42, 0x15, + 0x84, 0x10, 0x97, 0x23, 0x39, 0xBE, 0x9C, 0xF7, 0xAB, 0x66, 0x9E, 0xA5, 0x55, 0xD1, 0x1B, 0xBF, + 0x2C, 0x6E, 0xD3, 0x96, 0xE3, 0x38, 0x81, 0x18, 0x60, 0x5A, 0xAA, 0x12, 0xF6, 0x99, 0x08, 0xC9, + 0x4F, 0xB3, 0xDA, 0xEF, 0x76, 0x10, 0x93, 0xA7, 0x6E, 0x62, 0xC9, 0x4B, 0xE9, 0x62, 0xF4, 0x31, + 0xC4, 0x2A, 0xE3, 0x6D, 0x55, 0x3C, 0x9D, 0xBB, 0xFD, 0x6E, 0x57, 0x15, 0xA5, 0xD6, 0xD6, 0xDA, + 0xDC, 0x07, 0xC0, 0x21, 0x3A, 0x5D, 0x46, 0xA9, 0xBC, 0x0F, 0x16, 0x61, 0xF4, 0x0B, 0x0F, 0x4B, + 0x28, 0x7E, 0x7A, 0x39, 0x6D, 0xD6, 0xDB, 0x7A, 0x45, 0xA5, 0x76, 0x79, 0x51, 0x7C, 0xF3, 0xBB, + 0x7F, 0x7A, 0x7A, 0x78, 0x3A, 0x7C, 0xFF, 0xDF, 0xAA, 0x32, 0xDB, 0x5F, 0x6F, 0xF7, 0x9B, 0x66, + 0xBF, 0x6D, 0x42, 0x08, 0xDD, 0x30, 0xAD, 0xDB, 0x52, 0x1A, 0x8B, 0x41, 0xEA, 0xFA, 0xF1, 0x7A, + 0xDF, 0x78, 0xEF, 0xFE, 0xF2, 0xB7, 0x0F, 0x9B, 0x75, 0x83, 0x3C, 0xD4, 0xC6, 0x43, 0x8C, 0x20, + 0x46, 0xCA, 0x39, 0x1F, 0xA3, 0xB1, 0x9E, 0x67, 0xC2, 0xBA, 0x10, 0x43, 0x88, 0x3E, 0x8C, 0xE3, + 0x32, 0x4C, 0xF3, 0xF3, 0xE1, 0x92, 0x00, 0xBC, 0xBB, 0xDB, 0x12, 0x1C, 0xC0, 0x0D, 0x5E, 0x94, + 0x12, 0x5C, 0x3C, 0xBE, 0x1C, 0x42, 0x84, 0x84, 0x50, 0x63, 0xDC, 0x7A, 0xD3, 0x2C, 0xCB, 0xD4, + 0x54, 0x39, 0x61, 0x24, 0x17, 0x62, 0xB3, 0xA9, 0x2E, 0xC3, 0x78, 0x38, 0x9F, 0x9B, 0x92, 0xAF, + 0x77, 0xCD, 0xB2, 0x18, 0x40, 0x52, 0x2E, 0x56, 0x18, 0x65, 0x97, 0xBE, 0xEB, 0xC6, 0xC1, 0x19, + 0x95, 0xE7, 0x62, 0xB7, 0xAB, 0x8B, 0x8C, 0x6D, 0x36, 0xFB, 0xA9, 0xEF, 0x59, 0x91, 0x05, 0x00, + 0x8D, 0x71, 0x57, 0xFB, 0x7A, 0xDF, 0xB2, 0x4B, 0x8F, 0x44, 0xD5, 0x3C, 0xBF, 0x4C, 0x04, 0x06, + 0x63, 0x16, 0xE7, 0x09, 0x26, 0x62, 0xB7, 0x2B, 0x29, 0x42, 0xD1, 0xF8, 0xEB, 0x5D, 0xF5, 0xF1, + 0x14, 0xB4, 0xB6, 0x04, 0xFB, 0x42, 0xD4, 0x53, 0x70, 0xCB, 0x6C, 0xA9, 0x27, 0x2C, 0x6B, 0x9E, + 0x1E, 0x5F, 0x00, 0x4A, 0x43, 0x3F, 0xC7, 0x18, 0x33, 0x21, 0x9A, 0xB6, 0x4A, 0x21, 0xAE, 0xDF, + 0xDE, 0x2C, 0x8B, 0xE2, 0x19, 0xAA, 0xAB, 0x72, 0x5C, 0xAC, 0xF5, 0x6E, 0xEC, 0xC6, 0x18, 0x53, + 0x58, 0xA4, 0xB3, 0x16, 0xE4, 0x39, 0xCF, 0xC5, 0xF9, 0x34, 0xA4, 0x90, 0xAA, 0xA6, 0xD0, 0xC6, + 0x6A, 0x65, 0xEF, 0xAF, 0xB6, 0xC7, 0x53, 0x37, 0x2B, 0xB3, 0x16, 0xC2, 0xE8, 0x78, 0x19, 0xD5, + 0xAA, 0xCD, 0x04, 0x4E, 0x01, 0xBA, 0x6E, 0x32, 0xD6, 0xEA, 0x76, 0x25, 0x4A, 0x5E, 0x3F, 0x1D, + 0x21, 0x21, 0x0C, 0x22, 0x84, 0x20, 0x9C, 0x67, 0xAB, 0xB5, 0x39, 0x77, 0xF3, 0xFD, 0xCD, 0xBE, + 0xC8, 0xEB, 0xCB, 0x65, 0xD0, 0xDA, 0x00, 0x08, 0x16, 0xA9, 0xB8, 0x10, 0x84, 0x89, 0x2A, 0xCF, + 0xB6, 0x6D, 0x69, 0xB4, 0x31, 0xD6, 0xBE, 0x7B, 0x7D, 0xAF, 0xAC, 0xEE, 0x07, 0xD5, 0x34, 0x3B, + 0x69, 0x0C, 0x2E, 0x73, 0xF2, 0x7A, 0x5F, 0x3F, 0xBD, 0x74, 0xDA, 0x9A, 0xED, 0x26, 0x1B, 0x87, + 0x5E, 0x29, 0x9B, 0xE7, 0x62, 0x18, 0xE6, 0xBA, 0xC9, 0xB4, 0x8E, 0xC6, 0x68, 0xE7, 0xDD, 0x6F, + 0xBF, 0x7E, 0xCB, 0x68, 0xF6, 0xF3, 0xC7, 0xE3, 0xFB, 0x8F, 0x4F, 0xFF, 0xE5, 0xBF, 0xFE, 0x55, + 0x2A, 0xA3, 0x8C, 0xFE, 0xF8, 0xF9, 0x49, 0x2E, 0x3A, 0x86, 0xB8, 0x6E, 0x6B, 0xC6, 0x88, 0x77, + 0xF1, 0xA7, 0x9F, 0x1F, 0xA5, 0x4D, 0x3F, 0xBE, 0x3F, 0x12, 0x2C, 0x22, 0x40, 0xFB, 0x5D, 0xBB, + 0xDB, 0x14, 0x18, 0x43, 0x02, 0x80, 0x60, 0x3C, 0xA4, 0xB4, 0xAE, 0x6A, 0x41, 0xD0, 0xF5, 0xA6, + 0x3C, 0xF4, 0x8B, 0x71, 0x01, 0x22, 0x30, 0xCF, 0xB2, 0xEF, 0xE6, 0x73, 0x3F, 0xB4, 0x65, 0x09, + 0x11, 0xB1, 0x3E, 0x42, 0x88, 0xA6, 0x59, 0x96, 0x82, 0xFF, 0xE6, 0xEB, 0xAF, 0x7D, 0x84, 0xA7, + 0x7E, 0x34, 0xD6, 0x77, 0xC3, 0xB4, 0x2C, 0x52, 0x08, 0x74, 0xBD, 0x6B, 0x9A, 0xBA, 0xF8, 0xF0, + 0xF1, 0xF4, 0xFC, 0x74, 0x60, 0x8C, 0xB7, 0x6D, 0xCB, 0x38, 0x23, 0x34, 0x0F, 0x9E, 0x5C, 0xCE, + 0xDD, 0x22, 0x97, 0x97, 0x73, 0xFF, 0x72, 0x1E, 0x45, 0xC1, 0x21, 0x22, 0x72, 0xD1, 0x10, 0x21, + 0xC2, 0x28, 0x42, 0x28, 0xCB, 0x32, 0x4A, 0x29, 0x48, 0x00, 0xC4, 0x04, 0x00, 0xE8, 0x86, 0x69, + 0x9C, 0x96, 0x49, 0xAB, 0x98, 0xC2, 0xA6, 0xAE, 0xAF, 0xD6, 0x5B, 0x29, 0xD5, 0x62, 0xAD, 0x89, + 0x09, 0x23, 0x8C, 0x31, 0xC5, 0x24, 0x2B, 0xCA, 0x76, 0xB7, 0xDB, 0xD7, 0x55, 0x96, 0x65, 0x62, + 0x1A, 0xFA, 0xFD, 0xF5, 0x7E, 0x7F, 0xB5, 0x32, 0xDA, 0xF8, 0x90, 0x04, 0xE3, 0x31, 0x42, 0x08, + 0x61, 0x53, 0x97, 0x79, 0x26, 0x52, 0xF4, 0xDE, 0x07, 0x6D, 0xAD, 0xD2, 0x92, 0x33, 0x08, 0x63, + 0xD8, 0x6F, 0x9B, 0xAB, 0x4D, 0xFD, 0xC5, 0xDD, 0xEE, 0x9F, 0xFF, 0xF0, 0x05, 0x42, 0xA8, 0xEB, + 0xE7, 0x7E, 0x5A, 0x3E, 0x3D, 0x5F, 0xEA, 0x5A, 0x30, 0x4A, 0x05, 0xE7, 0xD6, 0xB8, 0xF5, 0xBA, + 0x94, 0xD2, 0x38, 0x1F, 0xE7, 0x45, 0x01, 0x08, 0x21, 0x00, 0x9C, 0x63, 0x4A, 0x89, 0xB3, 0xDE, + 0x18, 0x97, 0x00, 0x48, 0x20, 0x1D, 0x4E, 0x43, 0xDF, 0xCF, 0x98, 0x41, 0xE3, 0x9C, 0xB7, 0x0E, + 0xA6, 0x30, 0x8E, 0xB3, 0x54, 0x1E, 0x61, 0x94, 0x92, 0x43, 0x29, 0x7E, 0xF8, 0xBC, 0x28, 0x1D, + 0x9D, 0x4D, 0x6D, 0x89, 0x53, 0x82, 0x65, 0x21, 0xB6, 0xDB, 0x3A, 0x04, 0xEB, 0x5D, 0x00, 0x00, + 0x06, 0x17, 0xBD, 0x4F, 0x97, 0xCB, 0x40, 0x19, 0x25, 0x04, 0x6E, 0xB6, 0xEB, 0xD5, 0x7A, 0x35, + 0x2B, 0x33, 0x0F, 0x0B, 0x40, 0xF0, 0x74, 0xEA, 0x7F, 0x11, 0x93, 0x8C, 0xD3, 0x6C, 0xBD, 0xCF, + 0xCA, 0xF2, 0xE1, 0xF1, 0x19, 0x13, 0x66, 0xBD, 0x87, 0x08, 0x97, 0x55, 0x91, 0x62, 0xC8, 0xB9, + 0x38, 0x0F, 0x4B, 0x3F, 0x2E, 0x87, 0x73, 0x0F, 0x11, 0x3E, 0x9C, 0xFA, 0x71, 0x5E, 0x9C, 0x07, + 0xFD, 0x28, 0x87, 0x79, 0x59, 0xB4, 0x6A, 0xEB, 0x7C, 0xB5, 0xA9, 0x06, 0x2D, 0x6F, 0x6F, 0x76, + 0xBB, 0x4D, 0x83, 0x11, 0x72, 0x11, 0x58, 0xEF, 0x43, 0x82, 0x31, 0x24, 0x00, 0x60, 0x56, 0x8A, + 0xAA, 0x64, 0xDE, 0xFA, 0xC3, 0x61, 0x9C, 0x16, 0x7D, 0x3C, 0x5E, 0xB4, 0xB5, 0xC3, 0xA2, 0xC7, + 0x45, 0x8F, 0x83, 0x4A, 0x09, 0x33, 0x26, 0xAC, 0xF5, 0x75, 0x59, 0xDF, 0x5E, 0xDD, 0xAC, 0xDA, + 0x6A, 0xBD, 0x6A, 0xDB, 0x66, 0xC5, 0x18, 0x2B, 0xAB, 0x66, 0x7B, 0x75, 0xF7, 0xFA, 0xEE, 0x1A, + 0x27, 0xF5, 0x78, 0x7C, 0xE4, 0x3C, 0xAF, 0x44, 0xA1, 0xB5, 0x11, 0x19, 0x82, 0x00, 0x1A, 0x13, + 0x29, 0x82, 0x29, 0x18, 0x42, 0x50, 0x91, 0xE5, 0x4A, 0xCE, 0xBF, 0xFE, 0xE2, 0xEA, 0x6A, 0xDB, + 0x70, 0x41, 0xDA, 0x2A, 0x63, 0xD0, 0xB7, 0x55, 0x89, 0xB1, 0x48, 0x88, 0x6A, 0xEB, 0x3F, 0x7C, + 0xFA, 0x0C, 0x00, 0xC4, 0x08, 0x58, 0x1F, 0x2F, 0xFD, 0x94, 0x67, 0x05, 0xC6, 0xF0, 0xDC, 0x4D, + 0x98, 0xF0, 0xB2, 0xAC, 0x44, 0xD9, 0x9E, 0x5E, 0x9E, 0x7E, 0xF5, 0x87, 0x7F, 0x91, 0xE7, 0x4F, + 0xFB, 0x0A, 0x7F, 0xF9, 0xF6, 0xCD, 0x97, 0xF7, 0xD7, 0x99, 0x20, 0xBF, 0x9C, 0x81, 0x38, 0x25, + 0x9C, 0x33, 0x4E, 0x59, 0x59, 0x66, 0x77, 0xD7, 0xDB, 0xEB, 0xAB, 0x0D, 0x63, 0xD4, 0x99, 0xB8, + 0xDF, 0x6D, 0x18, 0xE7, 0x4C, 0x70, 0x1F, 0xE2, 0xF3, 0xE3, 0xF1, 0x70, 0xEE, 0x21, 0x86, 0x4A, + 0x5B, 0x6D, 0x9C, 0xB5, 0xC1, 0x39, 0x0F, 0x31, 0x14, 0x22, 0x83, 0x10, 0x22, 0x08, 0xA7, 0x59, + 0x2B, 0xEB, 0x09, 0xC1, 0x0F, 0xCF, 0x97, 0xE0, 0xE3, 0x34, 0x2F, 0xC3, 0x6C, 0x16, 0x69, 0x3F, + 0x7C, 0xFC, 0x1C, 0x7C, 0x2C, 0x72, 0xEA, 0x9D, 0x7B, 0x39, 0x0D, 0x09, 0x02, 0xE7, 0xE3, 0x22, + 0x2D, 0x23, 0xB8, 0xAD, 0xF3, 0x14, 0x63, 0x5E, 0x70, 0x8C, 0x41, 0xD3, 0x54, 0x55, 0x59, 0x1A, + 0x6D, 0xBF, 0x7C, 0xBB, 0xDB, 0x6E, 0xF9, 0x77, 0x5F, 0xBF, 0xFB, 0xD5, 0xD7, 0x77, 0xCE, 0x4A, + 0x6D, 0x8C, 0x33, 0x29, 0x00, 0x68, 0x23, 0x3C, 0x5F, 0xE6, 0x45, 0xD9, 0xCB, 0xF1, 0xA0, 0xC6, + 0xE1, 0x78, 0x99, 0x62, 0x74, 0x4D, 0x5D, 0xC5, 0x60, 0xF3, 0x2C, 0xE7, 0x2C, 0x0B, 0x2E, 0x2E, + 0xE3, 0xD2, 0x5D, 0xA6, 0x18, 0xE3, 0xE1, 0xD8, 0xF5, 0xE3, 0xF8, 0x72, 0x1C, 0xFE, 0xF2, 0xD7, + 0x9F, 0x30, 0x84, 0x97, 0x7E, 0x96, 0x32, 0x50, 0xCA, 0xA4, 0x36, 0x52, 0x49, 0xA5, 0x6D, 0x02, + 0xC0, 0xFB, 0xA8, 0xA5, 0x15, 0x94, 0x82, 0x04, 0x86, 0x69, 0xB1, 0xC6, 0x2B, 0x69, 0x17, 0x6D, + 0x20, 0x82, 0x19, 0xE5, 0x4D, 0x51, 0x34, 0x6D, 0x53, 0xE6, 0x02, 0x13, 0x3A, 0x2F, 0x5A, 0x6B, + 0x27, 0x17, 0x9D, 0x67, 0x8C, 0x40, 0xF8, 0x72, 0x38, 0x57, 0x45, 0x8E, 0x21, 0x3A, 0x74, 0xA3, + 0xD1, 0xD6, 0x3B, 0x1B, 0x42, 0x14, 0x04, 0x6A, 0xD9, 0xCB, 0x90, 0xB4, 0xF7, 0x00, 0x42, 0x04, + 0x63, 0xC4, 0x4E, 0x5A, 0x44, 0x28, 0x9E, 0xC6, 0x81, 0xE3, 0x74, 0x7F, 0x7B, 0xBB, 0x28, 0xD3, + 0xF7, 0xBD, 0x94, 0x6A, 0x9A, 0x25, 0x04, 0x20, 0xC5, 0xE0, 0x9D, 0x45, 0x04, 0x8F, 0x93, 0x34, + 0x26, 0xFC, 0xEE, 0x57, 0xDF, 0x7D, 0xF3, 0xEA, 0xFA, 0xDD, 0xAB, 0xAB, 0xDB, 0xAB, 0xCD, 0x66, + 0xB3, 0xD9, 0xAC, 0x77, 0x59, 0x56, 0x34, 0x75, 0xDD, 0xD4, 0x0D, 0xE3, 0x39, 0xFC, 0x97, 0x7F, + 0xFA, 0x66, 0x1C, 0xD4, 0x30, 0xEB, 0xFB, 0xFB, 0x35, 0xE3, 0xA8, 0xBB, 0xCC, 0x10, 0x53, 0x8A, + 0x11, 0xC6, 0xF0, 0xCD, 0xDB, 0x77, 0xDF, 0xFF, 0xF5, 0xA9, 0xCA, 0xD3, 0xEB, 0x9B, 0x5B, 0x42, + 0x2A, 0x63, 0xFD, 0xE7, 0xE7, 0xD3, 0xD3, 0xCB, 0xCB, 0xF1, 0x7C, 0xB8, 0xBF, 0xDE, 0xB5, 0x4D, + 0xB9, 0x48, 0x35, 0xCF, 0x92, 0x13, 0xF6, 0xED, 0xD7, 0xEF, 0x38, 0x67, 0xE3, 0xAC, 0xBA, 0x71, + 0x76, 0x09, 0x50, 0xCA, 0xB5, 0x36, 0x55, 0x91, 0x55, 0x05, 0xAE, 0x0A, 0xD1, 0x75, 0x27, 0x39, + 0x8D, 0xBB, 0xCD, 0xF6, 0x3C, 0x5C, 0x28, 0x26, 0xC6, 0x9A, 0xC3, 0x49, 0x76, 0x8B, 0x36, 0xC6, + 0x42, 0x98, 0x38, 0x25, 0x04, 0x23, 0xE7, 0x42, 0x5B, 0xD7, 0xE7, 0x61, 0xE2, 0x9C, 0x9F, 0x2F, + 0xFD, 0xD7, 0xAF, 0xF7, 0xFB, 0xED, 0x55, 0x96, 0x37, 0xC3, 0xBC, 0xF4, 0xE3, 0x30, 0xCF, 0x13, + 0x00, 0x31, 0x84, 0x74, 0x7F, 0x53, 0xA7, 0x18, 0x21, 0x24, 0xBB, 0x55, 0x3B, 0x0E, 0x13, 0x44, + 0x6C, 0xB3, 0x5B, 0x69, 0xB3, 0x44, 0x18, 0x87, 0x61, 0x9E, 0x26, 0x17, 0x13, 0xEE, 0xC7, 0xFF, + 0x7F, 0x68, 0x8D, 0x05, 0xFB, 0x9B, 0xDB, 0xAE, 0x7B, 0xB2, 0x5A, 0x95, 0x65, 0x0E, 0x11, 0x92, + 0x8B, 0x66, 0x8C, 0x12, 0x84, 0xB4, 0x54, 0xC3, 0x38, 0x59, 0xE7, 0x42, 0x0A, 0x77, 0xFB, 0x16, + 0x06, 0x68, 0x7C, 0x1C, 0xE6, 0x99, 0x95, 0x39, 0x4C, 0xC8, 0x59, 0x87, 0x10, 0xBA, 0xBA, 0xBA, + 0x65, 0x9C, 0xDF, 0x6D, 0xF2, 0x60, 0x34, 0x13, 0xB4, 0xAA, 0x32, 0x48, 0x60, 0x0C, 0xC1, 0x19, + 0x97, 0x30, 0x52, 0xD2, 0x29, 0x15, 0xBE, 0xFF, 0xE1, 0xC3, 0xBA, 0xA9, 0xEB, 0x4A, 0x0C, 0xE3, + 0xBC, 0x28, 0xB3, 0x6D, 0xAB, 0xBB, 0xFD, 0xEA, 0xF5, 0xF5, 0x1A, 0x00, 0xD4, 0x36, 0x19, 0x84, + 0xD0, 0x18, 0x6F, 0x6C, 0x50, 0xDA, 0xAD, 0x56, 0x15, 0xC1, 0xC0, 0x58, 0x0B, 0x20, 0x32, 0xCE, + 0x3C, 0x1E, 0x3A, 0x80, 0x62, 0x88, 0xA1, 0xEB, 0xF5, 0xDF, 0x7E, 0xF8, 0xBC, 0x5E, 0x97, 0x75, + 0x53, 0xF4, 0xBD, 0x2C, 0xDB, 0x92, 0xC0, 0x94, 0x12, 0x54, 0xD2, 0x20, 0x00, 0x01, 0xC5, 0x98, + 0xD2, 0x69, 0x18, 0x9A, 0x26, 0x5B, 0x94, 0x53, 0x8B, 0x45, 0x20, 0xCC, 0x72, 0x02, 0x08, 0xAC, + 0xB7, 0xD5, 0x32, 0xC9, 0x79, 0xD4, 0x97, 0xC1, 0xDF, 0xBD, 0xDD, 0xF4, 0xA7, 0x29, 0xE7, 0x10, + 0x02, 0x78, 0xE9, 0x4C, 0x5D, 0xA1, 0xAA, 0xE6, 0x10, 0x12, 0xE3, 0xC0, 0x34, 0xBA, 0xB2, 0x10, + 0x7D, 0x3F, 0x32, 0x46, 0x40, 0x4C, 0xBB, 0xCD, 0xBA, 0xA8, 0x0A, 0x65, 0xA3, 0x33, 0xDE, 0x3B, + 0x13, 0x01, 0x8C, 0x09, 0x32, 0x8C, 0x32, 0xCE, 0xA4, 0x36, 0x09, 0xC2, 0x87, 0xC7, 0xA7, 0x2C, + 0x2B, 0xF2, 0x9C, 0x07, 0x1F, 0x04, 0xE7, 0x19, 0x27, 0x85, 0x10, 0xEF, 0x1F, 0x5E, 0x8C, 0x35, + 0x14, 0x13, 0x2E, 0x38, 0xC2, 0x60, 0x9E, 0x15, 0xA5, 0x2C, 0xC6, 0xC8, 0x19, 0xFE, 0xE6, 0xDD, + 0x4D, 0x5B, 0x14, 0x3C, 0x2F, 0x28, 0x49, 0x14, 0x83, 0xBA, 0xCA, 0x52, 0xCA, 0x4E, 0xA7, 0xA9, + 0x2C, 0xD0, 0xB2, 0x38, 0xCE, 0x29, 0x04, 0x40, 0x14, 0x74, 0x59, 0xBA, 0x4F, 0x9F, 0x4E, 0x8B, + 0x8C, 0xED, 0xAA, 0xEC, 0xC7, 0xC9, 0x1A, 0x6F, 0x9C, 0x9F, 0x95, 0xAE, 0xCA, 0x9A, 0x50, 0xEA, + 0x8C, 0x69, 0xEB, 0x55, 0xDB, 0x34, 0x6D, 0xC9, 0x31, 0x8E, 0x4C, 0xD0, 0x22, 0xE3, 0x14, 0x01, + 0xEB, 0xBC, 0xB3, 0x61, 0x99, 0x2E, 0xF3, 0x74, 0x0E, 0x10, 0x62, 0xCC, 0x9A, 0xB2, 0x06, 0x18, + 0xEA, 0x20, 0xBD, 0xC1, 0x6A, 0xF6, 0x3E, 0x18, 0x51, 0xD0, 0xDD, 0xAE, 0x1A, 0x7B, 0xAD, 0xA4, + 0xDA, 0x6C, 0x1A, 0x4A, 0xF0, 0xF9, 0x32, 0x12, 0x42, 0x8A, 0x4C, 0xF8, 0xC0, 0x23, 0x10, 0xE7, + 0xCB, 0xA5, 0xBA, 0x7A, 0xF3, 0xF4, 0xF0, 0x11, 0x98, 0x09, 0xC2, 0xF4, 0x74, 0x38, 0x24, 0xDA, + 0x2D, 0x89, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xD5, 0x6D, 0x5B, 0xB4, 0x57, 0x0F, + 0x1F, 0xFE, 0x76, 0x1E, 0xA6, 0xA2, 0xA8, 0xBE, 0xFE, 0xF5, 0x1F, 0x78, 0x92, 0xFB, 0x75, 0xB9, + 0xC0, 0x5D, 0x03, 0xCE, 0xD7, 0x9B, 0xEC, 0x78, 0x99, 0xC6, 0x49, 0x95, 0x4D, 0xDD, 0x77, 0x87, + 0x22, 0x2F, 0x10, 0x84, 0xD6, 0x39, 0x42, 0x10, 0xC6, 0xA9, 0xAA, 0x2B, 0xEF, 0x1D, 0xC6, 0x38, + 0xC6, 0x64, 0x5D, 0xBC, 0xB9, 0x6E, 0x3F, 0x3D, 0x1F, 0x1F, 0x3E, 0x9F, 0x21, 0x84, 0xCA, 0xBA, + 0xE0, 0x2C, 0x46, 0x44, 0x99, 0xE0, 0x9C, 0x17, 0x82, 0xC5, 0x18, 0xCA, 0x32, 0x8F, 0x21, 0x08, + 0x41, 0x1F, 0x0F, 0xDD, 0x22, 0xED, 0xFD, 0x5D, 0x7B, 0xEC, 0xC6, 0xDD, 0x66, 0xE5, 0x8C, 0x63, + 0x94, 0xAC, 0xDB, 0x22, 0xA6, 0x24, 0x38, 0x05, 0x20, 0x44, 0x17, 0x94, 0x0D, 0xE7, 0x61, 0x5C, + 0x94, 0x4D, 0x29, 0x61, 0x10, 0x53, 0x8C, 0x79, 0x91, 0x5F, 0xEF, 0xAB, 0xB6, 0xCC, 0x86, 0xD9, + 0xB6, 0xED, 0x55, 0x93, 0xE7, 0xD3, 0x70, 0x71, 0xD1, 0x81, 0xC0, 0xBA, 0x7E, 0xEA, 0x47, 0x59, + 0x95, 0xB0, 0xCE, 0xB9, 0x4D, 0xD0, 0x78, 0xD0, 0x0D, 0x0A, 0x62, 0x54, 0x66, 0x28, 0x98, 0x79, + 0x91, 0x8E, 0x67, 0x1B, 0xE7, 0xE6, 0xAB, 0x2D, 0xAD, 0xCB, 0xAD, 0x35, 0xE8, 0xE5, 0xF0, 0xD2, + 0x8F, 0x23, 0x43, 0xD9, 0xD5, 0x7E, 0xFF, 0xF9, 0xF9, 0x45, 0x5B, 0xEB, 0x5C, 0xA8, 0x8A, 0xE2, + 0xFE, 0x6A, 0x63, 0xAD, 0xCB, 0x8A, 0x4C, 0x2A, 0xDB, 0xAE, 0xEA, 0xA7, 0xC3, 0xCB, 0x8F, 0x1F, + 0x1E, 0x31, 0xC6, 0x08, 0xA1, 0xAB, 0x75, 0x5B, 0x16, 0xB9, 0xF7, 0xBE, 0x28, 0x85, 0x73, 0x8E, + 0x60, 0x4C, 0x18, 0xD1, 0xDA, 0x30, 0xC6, 0x00, 0x48, 0x79, 0x2E, 0x04, 0x63, 0x18, 0x13, 0xA5, + 0x4D, 0xD7, 0x8F, 0xC1, 0x87, 0x04, 0x40, 0x51, 0xB2, 0xBF, 0xBF, 0x7F, 0x7E, 0xF7, 0xE6, 0xFE, + 0xF1, 0xA5, 0xF3, 0x09, 0x28, 0xA9, 0x08, 0x8C, 0x5F, 0xBC, 0x6A, 0xB7, 0x8D, 0xF8, 0xE1, 0xE7, + 0xE7, 0xD9, 0xF9, 0x10, 0x5D, 0x91, 0x91, 0xBB, 0xFD, 0xFE, 0x2F, 0x3F, 0x3E, 0x42, 0x9C, 0xD7, + 0x05, 0xA5, 0x38, 0x6A, 0x8D, 0x8C, 0x67, 0x31, 0xE1, 0xBE, 0xBF, 0x00, 0x90, 0xF6, 0xDB, 0xCD, + 0xD3, 0xF3, 0xD3, 0xCD, 0x7E, 0xA3, 0xD4, 0xD2, 0x4F, 0x8B, 0x52, 0xFA, 0x8B, 0xB7, 0x5F, 0x5D, + 0xEF, 0xAE, 0x09, 0xB0, 0x79, 0x4E, 0x43, 0x0C, 0xCF, 0xC7, 0xA9, 0xAC, 0x6A, 0x0C, 0x01, 0xA5, + 0x78, 0x56, 0x26, 0xA5, 0x88, 0x7F, 0xF5, 0xCD, 0x0D, 0x84, 0xE9, 0xF5, 0xFD, 0x2E, 0x2F, 0x09, + 0xC1, 0x50, 0x08, 0xBE, 0xDD, 0xAD, 0x8B, 0x8C, 0x34, 0x55, 0x61, 0x55, 0x7C, 0xF7, 0xEA, 0xFA, + 0xED, 0xED, 0xEE, 0x74, 0x1C, 0xC7, 0xD9, 0x18, 0xE7, 0x0F, 0xE7, 0x33, 0x44, 0x68, 0xB3, 0xD9, + 0x5C, 0xFA, 0x4E, 0x29, 0x6D, 0x5C, 0x38, 0x9D, 0xFB, 0xD7, 0xAF, 0xEE, 0x7C, 0x4C, 0xE3, 0x34, + 0x23, 0x84, 0x66, 0x39, 0x9F, 0x2F, 0x03, 0x42, 0x68, 0x5E, 0x96, 0x75, 0x5B, 0x72, 0xCE, 0xE7, + 0x51, 0x2D, 0xF3, 0xC5, 0x7B, 0x3B, 0xCC, 0x23, 0x25, 0xC4, 0xA7, 0x38, 0x2C, 0x53, 0xC6, 0xD9, + 0xFD, 0xED, 0x55, 0xC5, 0xE9, 0xD5, 0xAA, 0xE1, 0x8C, 0x73, 0x42, 0x6F, 0xF6, 0x1B, 0x00, 0x60, + 0x55, 0x88, 0xB6, 0x2A, 0xEF, 0xAE, 0x76, 0x77, 0x37, 0xD7, 0x88, 0x8A, 0x9F, 0x1F, 0x4F, 0xE3, + 0x22, 0xE7, 0x45, 0x0A, 0x4E, 0xBC, 0xF7, 0x21, 0x81, 0xC7, 0xC3, 0x10, 0x22, 0xE4, 0x94, 0xDC, + 0x5C, 0x6F, 0x56, 0xDB, 0x86, 0x30, 0x02, 0x10, 0xD2, 0xCE, 0xCE, 0x4A, 0x43, 0x42, 0x16, 0x63, + 0x13, 0x06, 0x4C, 0x88, 0xE7, 0xE7, 0x23, 0xA1, 0x54, 0xCA, 0x29, 0xCB, 0xAB, 0xE0, 0xBD, 0x35, + 0x7A, 0x91, 0xCB, 0xE9, 0x74, 0x81, 0x08, 0x10, 0x82, 0xA5, 0x92, 0x4A, 0xE9, 0x22, 0x23, 0xDA, + 0xBA, 0xBB, 0xEB, 0xD5, 0xF5, 0x76, 0xF5, 0xE1, 0xA5, 0x53, 0x3E, 0x66, 0x82, 0xE5, 0x59, 0xAE, + 0xB5, 0x5D, 0x16, 0xC5, 0x18, 0x8B, 0x29, 0x54, 0x65, 0xEE, 0xB5, 0xC7, 0x30, 0xCD, 0x6A, 0xE9, + 0xC7, 0xB1, 0xEF, 0x26, 0x6B, 0x1C, 0x84, 0x40, 0x2E, 0x0A, 0x82, 0x84, 0x18, 0xBC, 0xBE, 0xD9, + 0x13, 0x04, 0x6F, 0xAF, 0x57, 0x5A, 0xEB, 0xA6, 0xCC, 0xBF, 0x7A, 0x75, 0x9B, 0xF1, 0x1C, 0x20, + 0x16, 0x02, 0x18, 0xA7, 0x65, 0x1C, 0x25, 0x48, 0x29, 0x26, 0x68, 0xB4, 0x1F, 0x97, 0xF9, 0x70, + 0xBE, 0x18, 0xE7, 0xA5, 0x75, 0xA7, 0x61, 0xCA, 0x0A, 0x21, 0xF2, 0x0C, 0x00, 0xB0, 0x5A, 0x95, + 0x77, 0xD7, 0xF5, 0xBB, 0x2F, 0xF7, 0x84, 0x20, 0x82, 0x60, 0x5E, 0x65, 0x65, 0x53, 0x54, 0x95, + 0x90, 0x52, 0x07, 0xEF, 0x57, 0xFB, 0xFA, 0xF0, 0x72, 0xD8, 0x6E, 0xCA, 0x22, 0xE3, 0x84, 0x10, + 0x00, 0xE2, 0xB4, 0x18, 0x1F, 0xED, 0xEB, 0xFB, 0x3A, 0x44, 0x78, 0x3C, 0xCC, 0x8B, 0x0A, 0x18, + 0xA3, 0x10, 0x02, 0x26, 0xD0, 0xBA, 0x18, 0x13, 0xA0, 0x14, 0x0A, 0x4E, 0x18, 0x46, 0x2E, 0x00, + 0x65, 0x42, 0x4A, 0x40, 0x64, 0xA4, 0x6D, 0x85, 0x92, 0x56, 0x70, 0x92, 0x0B, 0xFA, 0xF1, 0xF1, + 0x02, 0x12, 0x7A, 0x7E, 0x39, 0x8A, 0x4C, 0x6C, 0x76, 0x2B, 0xC2, 0xA8, 0x31, 0x76, 0x1C, 0x17, + 0xEB, 0xFC, 0xE9, 0x72, 0xF9, 0xA5, 0x93, 0xD6, 0x39, 0xE7, 0x43, 0x70, 0x3E, 0x28, 0x29, 0xA9, + 0xE0, 0x97, 0x7E, 0xE4, 0x9C, 0xAD, 0xD7, 0xF5, 0x76, 0x53, 0x12, 0x0A, 0x01, 0x84, 0x45, 0x91, + 0x19, 0x6D, 0x41, 0x8A, 0xEF, 0xEE, 0xAF, 0x1F, 0x5E, 0xFA, 0x71, 0x32, 0x46, 0x1B, 0x67, 0x2C, + 0x44, 0xFE, 0xE9, 0xF9, 0x72, 0xE9, 0xCE, 0xCE, 0xDA, 0x97, 0xE3, 0x80, 0x11, 0x7A, 0x79, 0x79, + 0x9E, 0xC6, 0xC1, 0x78, 0x33, 0x2E, 0xF2, 0x78, 0x9E, 0xAC, 0x4F, 0x11, 0xA6, 0xE3, 0x65, 0xE2, + 0x22, 0x23, 0x94, 0x0E, 0xA3, 0xF2, 0x3E, 0xAD, 0xD6, 0x5B, 0xC2, 0x78, 0x3F, 0xAB, 0x9F, 0x3E, + 0x7C, 0x9E, 0xFE, 0x3F, 0x9A, 0xEE, 0x6B, 0x57, 0xB3, 0x23, 0x4D, 0x13, 0x73, 0x78, 0xB3, 0xEC, + 0xEF, 0xB7, 0xCB, 0x9D, 0x4C, 0xB2, 0x58, 0xC5, 0x62, 0x57, 0x75, 0xCF, 0x4C, 0x0B, 0x1A, 0x08, + 0x3A, 0xD2, 0xA9, 0xEE, 0x5B, 0x3A, 0x19, 0xA0, 0x31, 0x18, 0xA8, 0xBB, 0x7A, 0xBA, 0x48, 0x26, + 0xD3, 0x6E, 0xF3, 0xBB, 0xE5, 0xC3, 0x1B, 0x1D, 0xA4, 0x74, 0x0F, 0x11, 0x40, 0xBC, 0x9F, 0x79, + 0x62, 0x99, 0x43, 0x0C, 0xA7, 0x4B, 0x77, 0xEA, 0xE6, 0x4B, 0xBF, 0x08, 0x0A, 0xCB, 0x42, 0x60, + 0x42, 0x8C, 0x37, 0x94, 0xE3, 0xA6, 0x2E, 0xB4, 0x9B, 0x9F, 0x8F, 0xE7, 0xB6, 0xAA, 0xEF, 0xF7, + 0xBB, 0xED, 0xA6, 0x06, 0x10, 0xEB, 0x25, 0xC2, 0x0C, 0xAA, 0x4A, 0x32, 0x4E, 0xAC, 0x32, 0x4A, + 0xC5, 0xA2, 0x5C, 0x53, 0xCC, 0x11, 0x62, 0x93, 0x0A, 0xD6, 0xAA, 0xFE, 0x7A, 0x92, 0xED, 0x7E, + 0xB3, 0x3D, 0x4C, 0xC3, 0x70, 0xB9, 0x5E, 0x76, 0xFB, 0xBD, 0x28, 0xEB, 0xEE, 0x72, 0x64, 0x94, + 0xD5, 0x75, 0x85, 0x11, 0x7D, 0x7B, 0xBB, 0x99, 0xA7, 0x65, 0xBD, 0xBB, 0x3D, 0x3E, 0x7F, 0xFD, + 0xF8, 0xE9, 0xCB, 0x38, 0xCF, 0x29, 0x87, 0x45, 0x19, 0x6B, 0xCC, 0x38, 0x2D, 0x0F, 0x77, 0x7B, + 0xE3, 0x96, 0xDD, 0xB6, 0x2D, 0x04, 0x6F, 0x9B, 0x22, 0xE7, 0x94, 0x11, 0x48, 0x30, 0x1B, 0x6F, + 0x87, 0x49, 0x01, 0x00, 0xB7, 0x9B, 0xFA, 0xBB, 0xC7, 0xC3, 0x7E, 0x55, 0x39, 0x63, 0x61, 0x02, + 0xA5, 0x64, 0x4D, 0x5D, 0x6A, 0x63, 0x00, 0xCC, 0xF3, 0x34, 0x97, 0x25, 0x87, 0x28, 0x0D, 0xB3, + 0x82, 0x10, 0x15, 0x25, 0xDE, 0x6C, 0x6A, 0xE7, 0xEC, 0x5F, 0x7F, 0x7A, 0xF8, 0x87, 0xEF, 0xEF, + 0x1F, 0x6F, 0xB6, 0x9B, 0x55, 0x5D, 0x57, 0x42, 0x10, 0xBE, 0xDB, 0xAC, 0x9A, 0xB2, 0x6C, 0xAB, + 0x4A, 0x72, 0xC6, 0x28, 0x32, 0xCA, 0xEC, 0x1B, 0x49, 0x09, 0x64, 0x14, 0x63, 0x8C, 0x52, 0x46, + 0xD7, 0x6B, 0xFF, 0xFE, 0xF3, 0x07, 0x13, 0x80, 0x0F, 0x41, 0x5B, 0x7D, 0x3C, 0x8F, 0x28, 0x87, + 0x4D, 0x2B, 0x28, 0xE1, 0x97, 0x4E, 0x2D, 0xB3, 0xED, 0xBA, 0x41, 0xCD, 0x0B, 0xA3, 0x99, 0x61, + 0x9C, 0x73, 0x06, 0x6C, 0xE5, 0xCD, 0xB8, 0x2C, 0x76, 0x59, 0xD2, 0x3C, 0x0E, 0xBF, 0x7D, 0x7C, + 0x4A, 0x08, 0xBD, 0x7D, 0x78, 0x93, 0x01, 0x52, 0x46, 0x21, 0x00, 0x00, 0x00, 0x9C, 0xF1, 0xC7, + 0xBB, 0x03, 0xC2, 0x30, 0xA4, 0xE8, 0x63, 0x10, 0x82, 0x5F, 0xFB, 0x81, 0x51, 0x2E, 0x04, 0x3F, + 0x1C, 0xD6, 0x30, 0x03, 0xE7, 0x7C, 0xCE, 0xB9, 0x90, 0xCC, 0x5A, 0x6F, 0xAC, 0xFB, 0x56, 0x0D, + 0x18, 0xA7, 0x39, 0x82, 0x64, 0xB4, 0x53, 0xDA, 0x9D, 0x2F, 0x3D, 0xC2, 0x68, 0xB7, 0x59, 0x55, + 0x25, 0x07, 0xD9, 0x58, 0x3B, 0x41, 0x04, 0x6E, 0xB7, 0x4D, 0x3F, 0x4C, 0xCE, 0xC7, 0xA9, 0x1F, + 0xCA, 0xB2, 0xDA, 0xEF, 0x77, 0x1F, 0xBE, 0x7E, 0xB0, 0x31, 0x6D, 0x57, 0x07, 0x82, 0x13, 0x48, + 0x38, 0x03, 0x9A, 0x20, 0x26, 0x84, 0x2A, 0x1D, 0xA7, 0x25, 0x6F, 0xD6, 0x5B, 0xE7, 0xD3, 0xA2, + 0x34, 0xC1, 0x64, 0xBD, 0xDE, 0x2C, 0x6A, 0xF1, 0xDE, 0x05, 0x1F, 0xEE, 0x0F, 0xFB, 0xDD, 0xE6, + 0xB0, 0xDE, 0xDC, 0x0A, 0x21, 0xE7, 0x69, 0x9C, 0xE7, 0x79, 0x54, 0xEE, 0xE9, 0xD8, 0x2B, 0x6D, + 0x16, 0x6D, 0xB4, 0xB5, 0xD3, 0xBC, 0x28, 0xED, 0x42, 0x82, 0x44, 0x08, 0x56, 0xD5, 0xB2, 0x2C, + 0xEA, 0x79, 0x9E, 0xC6, 0xC5, 0x10, 0x2E, 0x62, 0xF0, 0xBB, 0x55, 0x43, 0x09, 0x8B, 0x01, 0x5B, + 0xE3, 0xFE, 0xE3, 0xEB, 0xF1, 0x7C, 0xEE, 0xEE, 0xEE, 0xDF, 0xDA, 0x10, 0x10, 0x42, 0x37, 0xBB, + 0x83, 0xF3, 0x3E, 0xA4, 0xE4, 0xD4, 0x54, 0x57, 0xE5, 0xA2, 0xF4, 0xB5, 0x1F, 0xEE, 0xEE, 0x6E, + 0xBA, 0x61, 0xFC, 0xA6, 0x83, 0x37, 0x15, 0x87, 0xC9, 0xE5, 0xE8, 0x7E, 0xF9, 0xF5, 0xC3, 0x7A, + 0xBD, 0x12, 0x04, 0xE6, 0x8C, 0x5E, 0x8E, 0xD7, 0xD5, 0xAA, 0x46, 0x38, 0x8C, 0xB3, 0xE2, 0x8C, + 0xF9, 0xA0, 0x40, 0x20, 0xDF, 0xDD, 0x6D, 0xB5, 0x8F, 0xCB, 0xEB, 0x78, 0x77, 0xD8, 0x08, 0xCE, + 0xE2, 0xF5, 0x7A, 0xD8, 0xB6, 0x20, 0x03, 0x6D, 0xC3, 0xCB, 0x79, 0x44, 0x54, 0x9C, 0xCE, 0x2F, + 0x29, 0xE5, 0x9C, 0x93, 0x35, 0x20, 0x84, 0xE0, 0x43, 0x68, 0x9B, 0x6A, 0xBB, 0x6A, 0x6F, 0x76, + 0x87, 0x45, 0xE3, 0x8A, 0x50, 0x80, 0x7C, 0x37, 0x8C, 0xE3, 0xB4, 0x00, 0x98, 0x5D, 0x48, 0x19, + 0x00, 0x8C, 0xD0, 0xEB, 0xCB, 0x39, 0xA6, 0x94, 0x12, 0x34, 0xC6, 0x0E, 0xFD, 0xA8, 0xF5, 0x64, + 0xF4, 0x74, 0x38, 0xDC, 0xBF, 0xFB, 0xEE, 0x50, 0x55, 0x45, 0xF0, 0xB6, 0x1F, 0x7A, 0x4A, 0x49, + 0x4E, 0x71, 0xBD, 0x56, 0xFF, 0xF8, 0xC7, 0xC7, 0xE7, 0xCB, 0xB0, 0xDE, 0x6D, 0x25, 0x23, 0x4D, + 0xC3, 0xAD, 0x0B, 0x00, 0x64, 0xCA, 0x68, 0x55, 0xF2, 0x61, 0x9C, 0x9C, 0xAD, 0xEE, 0xEF, 0x6F, + 0xBC, 0x31, 0x3E, 0x92, 0x00, 0xFC, 0xF1, 0xD4, 0x17, 0x52, 0x14, 0x15, 0x9F, 0x86, 0x45, 0xCA, + 0xC2, 0x38, 0x0D, 0x11, 0x24, 0x18, 0xFF, 0xDB, 0x7F, 0x9C, 0x41, 0x84, 0x9C, 0xF2, 0xD7, 0xD3, + 0x20, 0xB8, 0xF4, 0x61, 0xF4, 0xC1, 0x77, 0xFD, 0xD0, 0x14, 0xF4, 0xC7, 0x1F, 0x1E, 0x8E, 0xE7, + 0xA3, 0xB1, 0x0E, 0x13, 0x18, 0x73, 0xB6, 0xC7, 0x1E, 0x53, 0x02, 0x31, 0xB8, 0x76, 0x13, 0xA5, + 0xE8, 0xE6, 0xCD, 0x0D, 0x48, 0xA1, 0x59, 0x15, 0xB2, 0x94, 0x75, 0x55, 0xDE, 0xED, 0xDB, 0x94, + 0x61, 0xD9, 0xB4, 0xE3, 0x30, 0x34, 0x92, 0x03, 0x88, 0x42, 0xF4, 0x24, 0xED, 0xC7, 0x51, 0xBF, + 0x9E, 0x2F, 0x84, 0x51, 0xCA, 0x49, 0x51, 0x60, 0xEC, 0x98, 0x32, 0xF9, 0xE5, 0x75, 0xB4, 0x2E, + 0xAE, 0x56, 0xDC, 0x87, 0x94, 0x73, 0x0E, 0x21, 0xC7, 0x10, 0xAB, 0xB6, 0xA8, 0x4B, 0x9A, 0x1C, + 0xA8, 0x2A, 0x36, 0x99, 0xA0, 0x8C, 0x86, 0x30, 0x8F, 0xC3, 0x52, 0x95, 0x1C, 0x23, 0xC4, 0x28, + 0x59, 0xB4, 0x29, 0x2A, 0xF1, 0xAD, 0xDA, 0x25, 0x04, 0x31, 0xF3, 0x3C, 0xCF, 0x3A, 0x43, 0xA8, + 0x8D, 0xCE, 0x19, 0x40, 0x08, 0x31, 0xC6, 0x94, 0x12, 0xEF, 0x03, 0x21, 0xB8, 0x6E, 0x8A, 0xD3, + 0xEB, 0x69, 0x9E, 0x67, 0x4A, 0x10, 0x04, 0x49, 0x72, 0xD2, 0x94, 0x55, 0xC9, 0xE8, 0xBA, 0x6A, + 0xCA, 0x46, 0xFE, 0x06, 0x9C, 0x37, 0x11, 0xE6, 0x38, 0xCE, 0x53, 0x55, 0x53, 0xDD, 0x79, 0x4E, + 0xA2, 0x72, 0xA1, 0xBF, 0x0C, 0x6D, 0xC3, 0xDE, 0x7F, 0xEC, 0x62, 0x42, 0xC6, 0xFA, 0xE8, 0x95, + 0x2C, 0x88, 0xB9, 0xC4, 0x94, 0x73, 0xCA, 0x79, 0x51, 0x76, 0xB5, 0x2E, 0xB5, 0xB1, 0x31, 0x81, + 0x52, 0x8A, 0x87, 0xBB, 0xDB, 0x0C, 0xC8, 0x38, 0x2F, 0xC3, 0xF0, 0xDC, 0x36, 0xF5, 0x9B, 0xBB, + 0x1B, 0xEB, 0x96, 0x69, 0x36, 0xDE, 0xFB, 0x7E, 0x54, 0x84, 0x30, 0xEF, 0x13, 0xA7, 0x68, 0x55, + 0x17, 0x2E, 0x92, 0xA7, 0xAF, 0xE7, 0xF3, 0x75, 0xB8, 0x76, 0xDD, 0xB6, 0x6D, 0x9D, 0xB5, 0xB9, + 0x4E, 0xE3, 0x14, 0xAE, 0x57, 0x1B, 0x93, 0xB7, 0xD6, 0x72, 0x86, 0x71, 0xB2, 0x75, 0x53, 0x97, + 0x75, 0x63, 0x5D, 0x2A, 0x65, 0x31, 0x0C, 0x03, 0x84, 0xB0, 0xDD, 0x94, 0x54, 0x4D, 0x28, 0xF7, + 0x11, 0x3E, 0x12, 0x26, 0x0A, 0x81, 0xC7, 0xA1, 0x47, 0xBC, 0x99, 0x17, 0xFD, 0xD7, 0x9F, 0xDE, + 0xFC, 0xE5, 0xA7, 0x1F, 0xFE, 0xFB, 0x2F, 0xFD, 0xA7, 0xE7, 0xAE, 0x24, 0x29, 0x65, 0xD8, 0x0D, + 0x33, 0x4A, 0xC1, 0x38, 0x9B, 0x52, 0xDA, 0x6F, 0xAA, 0xC7, 0xFB, 0x4D, 0xD3, 0x36, 0x10, 0x00, + 0xC2, 0xD8, 0xC7, 0xA7, 0x17, 0x4E, 0x49, 0x7A, 0x89, 0x52, 0x16, 0xDA, 0x46, 0xCA, 0xA9, 0x94, + 0x4C, 0x70, 0x9A, 0x52, 0x22, 0x08, 0x06, 0xE3, 0x1B, 0x29, 0xFE, 0xE1, 0xCF, 0x8F, 0x6A, 0x89, + 0x18, 0xE0, 0x98, 0x93, 0x52, 0xAB, 0x04, 0x23, 0x44, 0x68, 0x55, 0x17, 0x94, 0xC2, 0x87, 0xC3, + 0xF4, 0xFE, 0xF3, 0x71, 0xB7, 0x2A, 0xEE, 0xF6, 0x5B, 0x8C, 0x48, 0x5B, 0xC9, 0x18, 0x92, 0xC9, + 0x11, 0x51, 0x4C, 0x30, 0x64, 0x09, 0xA6, 0x04, 0x08, 0x26, 0x6D, 0x55, 0x57, 0x65, 0x81, 0x40, + 0x96, 0x3F, 0x93, 0xF3, 0xCB, 0xEB, 0xF1, 0x7A, 0x79, 0x79, 0xED, 0x5C, 0x08, 0xBB, 0xDD, 0xFA, + 0x7C, 0xBE, 0x6E, 0xF7, 0x87, 0xBA, 0x2C, 0x00, 0x08, 0x31, 0x65, 0x8C, 0x13, 0x82, 0xF9, 0xD2, + 0x69, 0x4C, 0x53, 0x4A, 0x28, 0xB8, 0xE5, 0x61, 0x5F, 0x95, 0x6D, 0xA5, 0x96, 0x05, 0x44, 0x88, + 0x11, 0x6C, 0xAB, 0x18, 0x69, 0xBD, 0x2C, 0xF6, 0x66, 0xDF, 0xCC, 0xCB, 0xFC, 0xFD, 0x0F, 0xF7, + 0xEB, 0xA6, 0xC1, 0x10, 0x65, 0x04, 0xDF, 0x7D, 0x77, 0x4B, 0x10, 0xD0, 0x4A, 0x95, 0x45, 0xDD, + 0x0F, 0x43, 0x37, 0xCC, 0x98, 0x20, 0x65, 0xF5, 0xB9, 0x9F, 0xA4, 0x94, 0xCB, 0xB2, 0x2C, 0xC6, + 0x9D, 0x2E, 0x53, 0x5B, 0xF2, 0xFD, 0xBA, 0xC9, 0x00, 0x3C, 0xBF, 0x5E, 0x33, 0x80, 0x04, 0xC3, + 0xD3, 0xB9, 0x67, 0x9C, 0x62, 0x82, 0xF3, 0x62, 0xCA, 0x42, 0x30, 0x8E, 0x00, 0x42, 0xFD, 0x30, + 0x1B, 0xE3, 0xB8, 0xE4, 0x84, 0xF2, 0xA9, 0xBB, 0x4E, 0x8B, 0xED, 0xE7, 0xCB, 0xBA, 0x81, 0xFE, + 0x1A, 0xB6, 0xFB, 0xFD, 0x61, 0x7F, 0xFF, 0xEB, 0x87, 0x57, 0x02, 0xC9, 0xC3, 0xED, 0x83, 0x60, + 0xD5, 0x94, 0x74, 0xBB, 0xDD, 0xFC, 0xFA, 0xF1, 0xB4, 0xDB, 0x57, 0xC7, 0xCB, 0x25, 0x45, 0x2F, + 0xE5, 0x66, 0x19, 0xA7, 0xBE, 0x1B, 0x04, 0x27, 0x65, 0xD5, 0xFE, 0xFD, 0xF7, 0xDF, 0x36, 0x6D, + 0xF5, 0xF6, 0xFE, 0x56, 0x6B, 0x27, 0x8A, 0xE2, 0xF5, 0xD8, 0xE7, 0x0C, 0x63, 0x06, 0xD1, 0xAB, + 0x75, 0x53, 0x20, 0x18, 0xD7, 0xAD, 0xB8, 0xDD, 0x55, 0x98, 0xE1, 0xF3, 0x79, 0x79, 0x38, 0x6C, + 0xAD, 0x0B, 0x75, 0xDD, 0xE2, 0x77, 0xDF, 0x1D, 0xAE, 0xDD, 0x04, 0x20, 0x1A, 0xA6, 0xD1, 0x87, + 0x94, 0x32, 0x28, 0x28, 0x5D, 0xD7, 0xED, 0xA2, 0x5C, 0x3F, 0xCE, 0xC7, 0xD3, 0x88, 0x10, 0x5D, + 0x94, 0x6A, 0xDA, 0x95, 0xB1, 0x1E, 0x13, 0xE6, 0x83, 0xEF, 0xFA, 0xAB, 0xD1, 0x06, 0x62, 0x72, + 0xB3, 0xDB, 0x55, 0x65, 0x29, 0x05, 0x2B, 0x0B, 0xD1, 0x0F, 0xBD, 0xB3, 0xFE, 0xCF, 0x7F, 0xFE, + 0x73, 0x53, 0x17, 0xE7, 0xF3, 0xC5, 0xDA, 0x40, 0x18, 0xBB, 0x5E, 0xAF, 0xEB, 0xB6, 0x41, 0x84, + 0x21, 0x08, 0x62, 0xF4, 0x31, 0x46, 0x08, 0xE1, 0xDB, 0x87, 0xFB, 0x71, 0x52, 0x20, 0x02, 0x0C, + 0xE9, 0x75, 0x54, 0xEB, 0xBA, 0xFC, 0xE1, 0xF1, 0x16, 0x13, 0xF8, 0xF6, 0xE1, 0x66, 0x9E, 0x17, + 0x08, 0x93, 0x75, 0x69, 0x52, 0xFE, 0xF7, 0xDF, 0xDF, 0x2B, 0xB3, 0xCC, 0xCB, 0x64, 0xAC, 0xB6, + 0xCE, 0xFB, 0x10, 0x19, 0x21, 0xDF, 0xDF, 0xED, 0x10, 0xC4, 0xEB, 0xF5, 0x96, 0xF2, 0x42, 0xEB, + 0xF8, 0xE9, 0xD3, 0x57, 0x6B, 0x5D, 0x02, 0x40, 0x6B, 0x37, 0x8E, 0x4B, 0x8C, 0x71, 0x1C, 0x97, + 0x79, 0x56, 0x39, 0xE7, 0x10, 0xA3, 0x73, 0x0E, 0x41, 0x3C, 0xF4, 0x17, 0x00, 0xD0, 0xCD, 0xCD, + 0x63, 0x8C, 0xB9, 0x28, 0x56, 0xF7, 0xF7, 0xEF, 0x76, 0xBB, 0xDB, 0x94, 0x41, 0xDB, 0x6C, 0xEF, + 0x76, 0x6B, 0x90, 0xB2, 0xCE, 0xB4, 0xEB, 0x2F, 0x88, 0x60, 0xEB, 0x02, 0x42, 0x44, 0x6B, 0xBD, + 0x6E, 0xC4, 0x7F, 0xFD, 0xCF, 0x3F, 0xDC, 0xDF, 0xAC, 0xD6, 0xAB, 0xC2, 0xAA, 0xE5, 0x7C, 0xE9, + 0x8D, 0xF3, 0x5C, 0x30, 0x4C, 0x18, 0x46, 0x28, 0x81, 0x08, 0xA9, 0xF0, 0x09, 0x58, 0xE3, 0xA6, + 0xD9, 0x5A, 0x17, 0x62, 0x02, 0xCF, 0xC7, 0xEE, 0xEB, 0xEB, 0x25, 0x03, 0x28, 0x18, 0x3B, 0x77, + 0x7D, 0x08, 0x51, 0x08, 0x72, 0xD8, 0xB7, 0x4F, 0xAF, 0xD7, 0xFF, 0xF9, 0xFE, 0x6B, 0xCA, 0xB1, + 0x6D, 0x4B, 0xE7, 0xC3, 0xA2, 0xCC, 0xF9, 0xD4, 0xCB, 0x52, 0xCC, 0xCB, 0x32, 0x4D, 0xB3, 0x51, + 0x3A, 0xA7, 0x94, 0x73, 0x5E, 0x66, 0x65, 0x4C, 0xC8, 0x08, 0xA5, 0x98, 0x42, 0x48, 0x4A, 0xBB, + 0x1C, 0x43, 0x74, 0x0E, 0x82, 0x2C, 0x04, 0xDB, 0x6E, 0xB7, 0x82, 0x53, 0xC6, 0xF0, 0xD0, 0x0F, + 0x6A, 0x31, 0x08, 0x02, 0x8C, 0x70, 0xCA, 0x30, 0xC6, 0xB4, 0x2C, 0x3E, 0xA5, 0x5C, 0x57, 0xF4, + 0x7A, 0x31, 0x87, 0x5D, 0x9D, 0x33, 0x1C, 0x07, 0x55, 0x15, 0x6C, 0xBB, 0xDF, 0x9F, 0x2F, 0x93, + 0xD2, 0x3E, 0x67, 0x60, 0xB4, 0x33, 0xC6, 0x53, 0x42, 0x18, 0xE5, 0xC6, 0x45, 0x2E, 0xE9, 0xBC, + 0x68, 0xAD, 0x94, 0x10, 0x08, 0x42, 0x30, 0x5C, 0xE7, 0xAA, 0x12, 0xDE, 0x07, 0x26, 0x48, 0x08, + 0x31, 0xA7, 0xBC, 0x5A, 0x37, 0x10, 0xC1, 0x1C, 0xB2, 0x73, 0x9E, 0x53, 0x54, 0x4B, 0x96, 0x20, + 0x68, 0x9A, 0x2D, 0xC1, 0x48, 0x30, 0xEE, 0x4C, 0xF0, 0x21, 0x5D, 0xAF, 0x7D, 0x0C, 0xFE, 0x9F, + 0xFE, 0xF4, 0xC3, 0x7F, 0xFC, 0xF6, 0x55, 0x48, 0x51, 0xCA, 0x02, 0x62, 0xEA, 0x7C, 0x4C, 0x89, + 0xCC, 0xCB, 0x7C, 0xED, 0xA6, 0x63, 0x37, 0xB9, 0x10, 0xA5, 0x20, 0xDE, 0xC7, 0x10, 0xF3, 0xF1, + 0x32, 0x42, 0x08, 0x76, 0x9B, 0x75, 0xCE, 0x59, 0x19, 0x83, 0xF1, 0x37, 0xDE, 0xBA, 0x8B, 0x09, + 0x1A, 0x67, 0xFB, 0xBE, 0xD3, 0x7A, 0x06, 0x39, 0x73, 0xCE, 0xE6, 0xC5, 0xFC, 0xF2, 0xFB, 0xA7, + 0x45, 0xBB, 0x45, 0x29, 0x84, 0x21, 0xA7, 0x0C, 0x61, 0xA8, 0xB4, 0x45, 0x88, 0xC0, 0x0C, 0x82, + 0x0F, 0x87, 0xCD, 0xEE, 0x66, 0xB7, 0xDB, 0xAC, 0xF7, 0x18, 0xD2, 0x79, 0xB1, 0x19, 0xA4, 0xE0, + 0x0D, 0xA3, 0x70, 0xDD, 0xC8, 0x4D, 0xC3, 0x01, 0x84, 0x9C, 0x33, 0xAB, 0x17, 0x42, 0x32, 0x15, + 0x10, 0xA0, 0x44, 0x08, 0x91, 0x82, 0x97, 0xD5, 0xC6, 0x5B, 0x15, 0x32, 0xAE, 0x9B, 0x4D, 0x48, + 0x64, 0xB5, 0x3D, 0x04, 0xDB, 0x3F, 0x1C, 0xDA, 0x62, 0xFD, 0xE6, 0xE9, 0xB5, 0x5F, 0x15, 0x14, + 0x82, 0x84, 0x8A, 0x75, 0x77, 0x7A, 0x82, 0x20, 0xF7, 0xE3, 0x72, 0xBB, 0x5B, 0xFD, 0xF1, 0xED, + 0x9E, 0x31, 0xFC, 0xF4, 0x72, 0xFE, 0xFB, 0xC7, 0xD7, 0x59, 0x5B, 0x63, 0x9C, 0xF5, 0xD1, 0xFA, + 0x34, 0x2E, 0xFE, 0x78, 0xEA, 0xAD, 0x0F, 0xFD, 0xA8, 0x27, 0x65, 0x16, 0x63, 0x87, 0x7E, 0xCC, + 0x40, 0x0F, 0xCB, 0xF4, 0xEB, 0x2F, 0xC7, 0x61, 0x34, 0xCF, 0xA7, 0xFE, 0xF9, 0xD4, 0xBD, 0x9E, + 0x87, 0xAF, 0x2F, 0xD7, 0x97, 0x53, 0xD7, 0xF5, 0x4B, 0xF0, 0x49, 0x32, 0x7E, 0xB3, 0x5D, 0x1D, + 0xD6, 0x1B, 0x82, 0x28, 0x41, 0x44, 0x2F, 0xFE, 0xDA, 0x2B, 0xE7, 0xD3, 0xF1, 0x38, 0x1E, 0x4F, + 0xF3, 0xEB, 0xEB, 0xEC, 0x42, 0x9E, 0x17, 0xE7, 0x5D, 0x84, 0x08, 0x35, 0x95, 0x54, 0x46, 0x8D, + 0xCA, 0xDC, 0xDF, 0xDF, 0x4A, 0xCA, 0xDB, 0xBA, 0x52, 0xD6, 0x50, 0xCE, 0xF6, 0x9B, 0xED, 0x66, + 0xDD, 0x4E, 0xD3, 0x04, 0x12, 0xF8, 0xEE, 0xF1, 0x6E, 0xB3, 0x5D, 0xE5, 0x04, 0xB9, 0xC4, 0xB2, + 0xE4, 0xAB, 0xF5, 0xCE, 0x85, 0x9C, 0x12, 0x48, 0x99, 0x00, 0x00, 0xBE, 0x7B, 0x7B, 0x0F, 0x61, + 0x6C, 0xEB, 0xAA, 0x6D, 0x6A, 0xC6, 0xA8, 0xAC, 0x8A, 0xEF, 0xBF, 0xBB, 0xC9, 0x20, 0x51, 0x4A, + 0x00, 0x88, 0x39, 0xFB, 0x97, 0xF3, 0xEB, 0xAC, 0xBA, 0x4B, 0x3F, 0x3F, 0x1D, 0x7B, 0xE3, 0xE3, + 0xF3, 0xF9, 0x7A, 0xED, 0x17, 0x6D, 0x22, 0x21, 0x6C, 0x59, 0xA6, 0xAA, 0x60, 0xB7, 0x7B, 0xB6, + 0x5D, 0xA3, 0xAE, 0xD7, 0xB3, 0xF2, 0xE7, 0x6E, 0x99, 0x95, 0xE6, 0x9C, 0xC9, 0x42, 0x5A, 0xE7, + 0xAD, 0x71, 0x98, 0x51, 0x63, 0xAC, 0xD6, 0x0E, 0x42, 0x38, 0xCD, 0x6A, 0x9C, 0x96, 0x04, 0x40, + 0x0C, 0x40, 0xF2, 0x8A, 0x20, 0x74, 0xEE, 0xA6, 0x9C, 0x20, 0x2D, 0xB6, 0x55, 0xB5, 0x01, 0x61, + 0xD9, 0xB6, 0xF2, 0xB0, 0xDE, 0x5B, 0x97, 0xE6, 0x79, 0x6A, 0xAA, 0x86, 0x52, 0x1E, 0x33, 0x92, + 0x42, 0xBC, 0xBE, 0x76, 0x77, 0x2B, 0xF6, 0xE5, 0xF9, 0x7A, 0x58, 0x37, 0xD3, 0xB2, 0x3C, 0x1E, + 0x76, 0xC6, 0x85, 0x73, 0x77, 0x7D, 0xF7, 0x70, 0x2B, 0xB8, 0xB0, 0x3E, 0x11, 0xCC, 0xBB, 0x7E, + 0x28, 0x8B, 0xB2, 0x94, 0xFC, 0x61, 0x5B, 0x7E, 0xFF, 0xB8, 0xBD, 0xBF, 0x6D, 0x82, 0xF7, 0x6A, + 0x59, 0x30, 0x04, 0x9B, 0xBA, 0x44, 0x30, 0x11, 0x06, 0xA2, 0xD7, 0xF8, 0x70, 0xA8, 0x01, 0x00, + 0xD6, 0x98, 0x79, 0x56, 0x6D, 0xDB, 0x6C, 0x57, 0xAB, 0x75, 0x59, 0x7F, 0xF9, 0x7A, 0xFE, 0xFD, + 0xD3, 0xE9, 0xC3, 0xA7, 0x67, 0x08, 0x11, 0xC8, 0xB0, 0x90, 0x05, 0x2B, 0x37, 0x65, 0xDD, 0xCC, + 0x8B, 0xD2, 0xC6, 0xF4, 0x43, 0x37, 0x4D, 0xE3, 0xBB, 0x77, 0xDF, 0x33, 0xC6, 0x16, 0xB5, 0x18, + 0x63, 0x42, 0xF4, 0x7F, 0x7F, 0xFF, 0x7B, 0x37, 0xCD, 0x00, 0x30, 0xA3, 0xB5, 0xB1, 0xDA, 0x18, + 0x5B, 0x55, 0x92, 0x31, 0x62, 0xAD, 0x2B, 0x0B, 0xE9, 0x9D, 0x0D, 0xCE, 0x49, 0x5E, 0x50, 0x4C, + 0xAE, 0x7D, 0xD7, 0x56, 0xC5, 0xB6, 0x5E, 0x2F, 0x8B, 0x29, 0x84, 0xBC, 0xDD, 0xB5, 0xD6, 0x6B, + 0x46, 0x71, 0xDF, 0x8D, 0x3E, 0x47, 0x4C, 0x91, 0xF6, 0xE1, 0x74, 0x3E, 0x83, 0xEC, 0x72, 0xCE, + 0x5C, 0xCA, 0xB6, 0xAD, 0xAA, 0x82, 0xDE, 0xDF, 0xEE, 0x7F, 0x78, 0xFB, 0x6E, 0xBF, 0xBB, 0x79, + 0x73, 0xFF, 0xD0, 0xD4, 0x72, 0xB5, 0xC1, 0x75, 0x4D, 0xEE, 0x6F, 0x37, 0x10, 0x61, 0xAD, 0xDD, + 0xF1, 0xD4, 0x89, 0x42, 0xE4, 0x9C, 0xAE, 0x97, 0x2E, 0x23, 0x4C, 0x09, 0x4B, 0x29, 0x7C, 0x7B, + 0x02, 0x04, 0x67, 0x09, 0xA1, 0x39, 0x27, 0xAD, 0x97, 0xF5, 0x6A, 0x9B, 0x52, 0xFC, 0xF5, 0xD7, + 0xBF, 0x3F, 0x3D, 0x3F, 0xF5, 0x7D, 0x3F, 0x4D, 0xC3, 0xC7, 0xAF, 0x5F, 0x12, 0x70, 0x36, 0x04, + 0x1F, 0x40, 0x0A, 0x11, 0x23, 0xFA, 0xF6, 0x7E, 0xFD, 0x5F, 0xFE, 0xE1, 0x91, 0x52, 0xE2, 0x42, + 0xD6, 0xDA, 0xF5, 0xDD, 0x80, 0x29, 0xB2, 0x31, 0x69, 0xED, 0x60, 0xCE, 0xA7, 0x6B, 0x6F, 0x7D, + 0x9C, 0x16, 0xDD, 0x0D, 0xE3, 0xF9, 0x3A, 0x40, 0xCC, 0xB4, 0x35, 0xD6, 0x79, 0x4E, 0xF1, 0xBA, + 0x91, 0x29, 0x43, 0x1F, 0x61, 0x0C, 0xF6, 0xCD, 0xDD, 0x9E, 0x60, 0x94, 0x40, 0x72, 0x3E, 0x18, + 0x6B, 0x1F, 0x1E, 0xF6, 0xD6, 0x04, 0xEF, 0xA3, 0xF3, 0xB1, 0x5D, 0xD7, 0x29, 0x06, 0xEB, 0xDC, + 0xA2, 0x3C, 0xA5, 0x94, 0x31, 0xD6, 0x75, 0x63, 0x4A, 0xF9, 0x74, 0x1A, 0xAF, 0xA3, 0x1E, 0xC6, + 0xE5, 0xF8, 0x7A, 0x5D, 0xB4, 0xE5, 0x42, 0x6A, 0x1B, 0x8C, 0x09, 0x00, 0x82, 0xEB, 0xE9, 0xCA, + 0x05, 0x5F, 0xAD, 0x2A, 0x42, 0xA9, 0x36, 0x41, 0x1B, 0x7F, 0xED, 0x66, 0x88, 0x30, 0x17, 0x88, + 0x12, 0xE8, 0x5C, 0xD2, 0x3A, 0x00, 0x00, 0x8B, 0x82, 0x5A, 0x6B, 0x43, 0x48, 0x75, 0x53, 0x2C, + 0x8B, 0x3A, 0x5F, 0x67, 0x4C, 0x48, 0x5D, 0xD7, 0xC6, 0x38, 0x08, 0xF2, 0x7A, 0xDD, 0x30, 0x4E, + 0x00, 0x84, 0x10, 0xC2, 0xB2, 0x14, 0x6D, 0x5D, 0x94, 0x95, 0x64, 0x04, 0x57, 0x85, 0x68, 0x9A, + 0x82, 0x09, 0xCC, 0x18, 0xE9, 0x7B, 0xC5, 0x25, 0x33, 0xCA, 0x70, 0x4E, 0xBF, 0x11, 0x09, 0xC1, + 0xC7, 0xAA, 0x10, 0xEB, 0xF5, 0x7A, 0x9A, 0x4D, 0x21, 0x8B, 0x45, 0x29, 0xAD, 0xAD, 0x0B, 0xC1, + 0xB9, 0x30, 0x4D, 0xBE, 0x94, 0xFC, 0xDF, 0xDF, 0x7F, 0xA2, 0x84, 0x5A, 0xA3, 0x97, 0x65, 0x56, + 0x5A, 0x1D, 0xCF, 0x27, 0x29, 0x4B, 0x00, 0x90, 0x2C, 0x2A, 0x84, 0xD0, 0x7E, 0xD3, 0x68, 0x63, + 0xAC, 0x0F, 0x19, 0xE4, 0x6F, 0x9F, 0xB0, 0xCD, 0x8B, 0xFA, 0xE6, 0x53, 0x60, 0x8C, 0x94, 0x31, + 0xCE, 0x39, 0x00, 0x00, 0x84, 0x08, 0x22, 0xB4, 0x59, 0xAF, 0x87, 0x69, 0xB2, 0x3E, 0x42, 0x84, + 0x18, 0x63, 0x3E, 0x84, 0xC3, 0xA6, 0xF9, 0xE7, 0xBF, 0xFC, 0x50, 0x49, 0xBE, 0xAA, 0x9B, 0xBB, + 0xFD, 0x5E, 0xB0, 0xF2, 0xF1, 0xEE, 0xF1, 0xCD, 0xED, 0x5D, 0x5D, 0xB5, 0x85, 0x28, 0x05, 0x25, + 0x87, 0x4D, 0xF5, 0xF6, 0x6E, 0xC5, 0x71, 0xBE, 0xBD, 0x69, 0x21, 0x41, 0xCB, 0x32, 0x63, 0xC6, + 0x09, 0x25, 0xEB, 0x9D, 0xA4, 0x9C, 0xAC, 0x77, 0xAD, 0x2C, 0x59, 0x8E, 0xA1, 0x2C, 0x28, 0x24, + 0x25, 0x65, 0x70, 0x53, 0xE9, 0xD5, 0x5A, 0x12, 0x2A, 0x2F, 0xBD, 0xF9, 0xFE, 0x96, 0x6F, 0xB7, + 0x37, 0x1A, 0xDF, 0x74, 0xA7, 0xE7, 0xE3, 0xD7, 0xDF, 0x23, 0x29, 0x5C, 0xC8, 0xBF, 0xFE, 0xFD, + 0x5F, 0xAB, 0x32, 0xF6, 0xE3, 0xB4, 0x6A, 0x9A, 0xB6, 0x6E, 0x3F, 0x3C, 0x1D, 0x33, 0x4E, 0xDD, + 0x55, 0x4D, 0x8B, 0xB6, 0x36, 0x5A, 0x9B, 0x87, 0x51, 0xA7, 0x9C, 0x43, 0xCC, 0xB3, 0x32, 0x8B, + 0xD6, 0xE3, 0x38, 0xE7, 0x1C, 0x09, 0x05, 0xFB, 0x3D, 0x57, 0x66, 0xB1, 0x0E, 0x68, 0xED, 0x63, + 0x8C, 0x8C, 0x92, 0x98, 0x13, 0x22, 0xE4, 0xDA, 0x4D, 0xA5, 0x28, 0xBE, 0xFF, 0xEE, 0xCD, 0xC7, + 0x2F, 0xAF, 0x31, 0xA2, 0x7E, 0x74, 0xC6, 0xA7, 0x8C, 0xE0, 0xA4, 0x6C, 0x37, 0xAA, 0xE3, 0x65, + 0x5C, 0x66, 0x45, 0x19, 0x19, 0x16, 0xFD, 0x7C, 0xBC, 0x4E, 0xCB, 0xAC, 0xBD, 0x87, 0xD1, 0x76, + 0xC3, 0xF4, 0xF7, 0x0F, 0x5F, 0x5E, 0xCF, 0xD7, 0x94, 0x48, 0x21, 0xCB, 0xC3, 0x7E, 0x4B, 0x08, + 0x46, 0x84, 0x40, 0x88, 0x7D, 0x08, 0xC6, 0x98, 0x55, 0xDB, 0x70, 0x4E, 0xAD, 0x71, 0x20, 0x41, + 0x00, 0xE0, 0xF3, 0xCB, 0xF5, 0xEB, 0x4B, 0xFF, 0x7A, 0xBA, 0x52, 0x4A, 0x2B, 0x29, 0xD7, 0xAB, + 0xCA, 0x1A, 0x35, 0x4F, 0xEA, 0x78, 0x1C, 0xBE, 0xC5, 0x14, 0x90, 0xC1, 0xD8, 0x2F, 0xC3, 0xB0, + 0x9C, 0xCF, 0xC3, 0xE5, 0xDC, 0x7D, 0xF8, 0xFA, 0x12, 0x21, 0xF1, 0x1E, 0x0C, 0x83, 0xE1, 0x52, + 0x40, 0x84, 0x42, 0xCC, 0x42, 0x8A, 0xB6, 0xE1, 0x82, 0xB8, 0xA6, 0xA4, 0xB3, 0xD6, 0x85, 0x08, + 0xD6, 0xD9, 0x0F, 0x4F, 0x33, 0xC2, 0x94, 0x30, 0xF1, 0x72, 0x3A, 0x52, 0x4C, 0x05, 0x67, 0x19, + 0xA1, 0x45, 0x99, 0x6F, 0x19, 0x13, 0x00, 0x88, 0x31, 0x86, 0x18, 0x66, 0x00, 0x63, 0x4C, 0x3E, + 0x04, 0x90, 0x61, 0x55, 0x14, 0x18, 0x4B, 0xE5, 0x0B, 0x8E, 0x81, 0x60, 0x71, 0xDD, 0x56, 0x9C, + 0x42, 0xE7, 0x35, 0x02, 0x46, 0x72, 0xD8, 0x36, 0x35, 0x24, 0xF4, 0xF1, 0xE1, 0xE0, 0xED, 0xB2, + 0x6E, 0x85, 0x10, 0xAD, 0x10, 0x4D, 0x59, 0x8A, 0x7D, 0x5B, 0x65, 0x00, 0x37, 0xEB, 0x46, 0x1B, + 0xB7, 0x6E, 0x1A, 0xE3, 0xD2, 0xBA, 0x2E, 0x2E, 0x5D, 0xBF, 0x68, 0xBD, 0xAA, 0x9B, 0xF5, 0xAA, + 0x39, 0xAC, 0xA5, 0xD1, 0xF3, 0x6F, 0x9F, 0x8E, 0xC3, 0x38, 0xBF, 0x7B, 0xB8, 0xF3, 0x1E, 0x58, + 0x17, 0xCE, 0xD7, 0x7E, 0x98, 0xD4, 0x38, 0xCE, 0xC4, 0x58, 0x07, 0x21, 0x3A, 0x9F, 0x3A, 0x98, + 0xD0, 0x5F, 0x7E, 0xFC, 0x99, 0x22, 0xA2, 0x6D, 0x84, 0x88, 0x16, 0x85, 0x30, 0xDE, 0x60, 0x02, + 0x9B, 0x5A, 0x0A, 0xD9, 0xDC, 0xDE, 0xEF, 0x9C, 0x73, 0xD3, 0xC4, 0x52, 0x4E, 0x45, 0x51, 0x2B, + 0x6D, 0xB2, 0x9F, 0x75, 0x80, 0x19, 0x78, 0xE3, 0xCD, 0xB9, 0xBB, 0x18, 0xEB, 0x24, 0x17, 0xC7, + 0xD3, 0x13, 0x02, 0xB9, 0x6D, 0xEA, 0x75, 0x5B, 0x2F, 0x6A, 0xC1, 0x98, 0x50, 0xCA, 0xBC, 0xB7, + 0x21, 0x04, 0x8C, 0x68, 0x0C, 0xA1, 0x2A, 0x85, 0x36, 0x66, 0x5D, 0x71, 0x4A, 0xB0, 0x04, 0x4D, + 0x21, 0x48, 0x48, 0xEE, 0xDA, 0xF5, 0xE3, 0xA4, 0x43, 0x08, 0x4C, 0xF2, 0xD9, 0xFA, 0x18, 0x52, + 0xDB, 0x14, 0xEB, 0xB6, 0x26, 0xB4, 0x90, 0x55, 0xED, 0xED, 0xFC, 0xE6, 0x6E, 0xAF, 0x6D, 0x7C, + 0x7E, 0xE9, 0x08, 0x21, 0x1F, 0x3F, 0x7F, 0x5A, 0xB4, 0x82, 0x38, 0x6E, 0x37, 0x35, 0x22, 0x28, + 0x46, 0x70, 0xFF, 0xD0, 0x82, 0x1C, 0xC7, 0x49, 0x7F, 0x3C, 0x5E, 0x32, 0x84, 0x20, 0x85, 0x45, + 0x2F, 0x8C, 0x4B, 0x90, 0x13, 0x48, 0x2E, 0x83, 0x0C, 0x00, 0x30, 0xC6, 0xFC, 0xF9, 0xA7, 0xBF, + 0x08, 0xCE, 0xCF, 0xE7, 0xF3, 0x34, 0x2F, 0xCE, 0x79, 0xE7, 0xF4, 0x34, 0x99, 0xBA, 0xE1, 0x2F, + 0xAF, 0x47, 0x59, 0x94, 0xBB, 0xB6, 0xBC, 0x3F, 0x34, 0x4D, 0x2B, 0xCC, 0xA2, 0x8F, 0xE7, 0xBE, + 0x1B, 0x66, 0x48, 0x44, 0x4E, 0x09, 0x31, 0xD6, 0x0D, 0xC3, 0xB5, 0x5B, 0x6C, 0x00, 0x04, 0xC3, + 0xED, 0x6E, 0x93, 0xBC, 0xF3, 0xC1, 0xCD, 0xB3, 0xCA, 0x00, 0x4D, 0x43, 0xCF, 0x09, 0x32, 0x2E, + 0x3C, 0xDC, 0x6E, 0xDE, 0xDC, 0xAC, 0x57, 0xED, 0x16, 0x40, 0x5C, 0x30, 0x08, 0x01, 0xFE, 0xF5, + 0xE3, 0x55, 0x70, 0x4C, 0x09, 0xA6, 0x94, 0xBC, 0xFF, 0xF0, 0x62, 0xAD, 0x2F, 0xA4, 0xB8, 0x39, + 0xAC, 0x8D, 0x35, 0xF3, 0xA2, 0x28, 0xA7, 0x87, 0x87, 0xED, 0x32, 0xEA, 0x97, 0xD7, 0x4E, 0x4A, + 0x82, 0x4C, 0x28, 0x9A, 0xCA, 0x3A, 0x3F, 0xF4, 0x23, 0x41, 0x98, 0x23, 0x3C, 0x4E, 0x9A, 0x73, + 0x52, 0xAD, 0x1B, 0xB3, 0xA8, 0x72, 0xB5, 0xF1, 0xCE, 0x77, 0xBD, 0x76, 0x1E, 0x3C, 0xBE, 0x7D, + 0x30, 0xC6, 0x9C, 0x2F, 0x97, 0x18, 0x3D, 0xC8, 0x19, 0x49, 0x70, 0x77, 0x53, 0xF8, 0x10, 0x9B, + 0xA6, 0x4E, 0x21, 0x30, 0x82, 0xBE, 0x3E, 0x1F, 0x83, 0xB3, 0x08, 0x24, 0x46, 0x80, 0xF1, 0x7E, + 0xE8, 0xC7, 0xB2, 0x64, 0xDB, 0x4D, 0xDD, 0x36, 0xF5, 0x38, 0xCC, 0x9B, 0x8D, 0x74, 0x36, 0x6C, + 0x37, 0x0D, 0x42, 0x28, 0xE5, 0x5C, 0x08, 0xF6, 0x6D, 0x20, 0x9B, 0x20, 0xD2, 0x8F, 0x73, 0x0A, + 0x29, 0x26, 0x60, 0xB5, 0xEF, 0xC6, 0x59, 0x08, 0xC6, 0x29, 0x8D, 0x10, 0x12, 0x42, 0x11, 0xA2, + 0x21, 0x44, 0xEB, 0xF3, 0x34, 0x2A, 0x98, 0x63, 0x55, 0x97, 0x18, 0xD3, 0x87, 0xDB, 0xF6, 0xF5, + 0x32, 0xB4, 0x4D, 0xAD, 0x8D, 0x5D, 0x92, 0x87, 0x10, 0x7A, 0x97, 0x8A, 0xAA, 0x60, 0x82, 0x2F, + 0x4B, 0xCA, 0x00, 0x3A, 0x1F, 0x7E, 0xFD, 0xF4, 0xE2, 0x9C, 0x53, 0xD6, 0x02, 0x00, 0x00, 0x00, + 0xD6, 0xA7, 0x42, 0xF2, 0x65, 0xD1, 0x3E, 0x44, 0xC2, 0x08, 0x25, 0x14, 0x21, 0x4A, 0x08, 0x8D, + 0x31, 0x16, 0x45, 0x99, 0x01, 0x1A, 0xE7, 0xD1, 0x18, 0x53, 0x55, 0x0D, 0x44, 0x98, 0x51, 0x2C, + 0x28, 0x9A, 0xA7, 0x99, 0x31, 0x16, 0x62, 0xEC, 0x86, 0x25, 0x67, 0x30, 0x2E, 0xF6, 0x3A, 0x0C, + 0x8C, 0x42, 0xEF, 0x33, 0x42, 0x40, 0x70, 0xBA, 0x5D, 0xB5, 0xB2, 0xDA, 0xA6, 0x1C, 0x9C, 0x33, + 0x80, 0xC9, 0x7A, 0xD3, 0x82, 0x1C, 0xAD, 0x77, 0x19, 0x82, 0x0F, 0xFF, 0xF3, 0x98, 0x21, 0x0C, + 0x31, 0x54, 0xB5, 0x8C, 0xA1, 0x7F, 0x7A, 0x9E, 0x7F, 0xFC, 0xE1, 0xBB, 0x60, 0xC7, 0x75, 0x23, + 0x5F, 0xCE, 0x9A, 0x49, 0xE2, 0xE8, 0xEE, 0xF8, 0x7A, 0x8C, 0x76, 0x34, 0xCE, 0xD5, 0x72, 0x73, + 0x7A, 0x7D, 0xEA, 0xA7, 0xF9, 0x3F, 0xFD, 0x24, 0x28, 0x29, 0x8A, 0xA2, 0x18, 0x97, 0x29, 0xA6, + 0xB0, 0x4C, 0xB9, 0x9F, 0x4D, 0x08, 0x51, 0x4A, 0x1A, 0x82, 0xAB, 0x1B, 0x1A, 0x63, 0xC4, 0xC0, + 0xDF, 0xDE, 0xAF, 0x5E, 0xCF, 0xB3, 0xF7, 0x2E, 0x85, 0x25, 0x39, 0x76, 0x7D, 0xD1, 0x31, 0x01, + 0x08, 0x19, 0xC6, 0x04, 0x12, 0x80, 0x08, 0xA2, 0x89, 0x79, 0xE3, 0x1F, 0x6E, 0xB6, 0xBB, 0xF5, + 0xE6, 0xFF, 0xFE, 0x6F, 0x7F, 0xEB, 0x86, 0xF1, 0x1F, 0x7F, 0xFA, 0x11, 0x40, 0x70, 0xEE, 0xE7, + 0xF5, 0x6A, 0xE5, 0xA3, 0x8D, 0x39, 0x1B, 0xEB, 0xB7, 0x4D, 0xE1, 0xBC, 0xC1, 0x2C, 0x8B, 0x88, + 0x8C, 0xB1, 0xE6, 0x3C, 0x47, 0x45, 0x7D, 0xE2, 0x31, 0x0B, 0x46, 0xB8, 0xB1, 0xE0, 0x92, 0x74, + 0x37, 0xD9, 0xB2, 0xE4, 0x4D, 0xC3, 0x9C, 0xF1, 0x53, 0x3F, 0xB4, 0xED, 0x0A, 0x41, 0xFC, 0xFC, + 0xE5, 0xEC, 0x8C, 0x8F, 0x08, 0xBF, 0x9C, 0x8E, 0x10, 0x02, 0x6B, 0x83, 0xE4, 0xB8, 0x29, 0xE4, + 0xB6, 0x29, 0x6D, 0xB0, 0x3E, 0xA6, 0xB2, 0x96, 0xAB, 0x5D, 0x93, 0x63, 0x46, 0x00, 0x4E, 0xE3, + 0x72, 0xBE, 0x0E, 0x21, 0x24, 0x1F, 0xBF, 0xAD, 0x3A, 0x41, 0xEA, 0x53, 0xF2, 0x19, 0x63, 0x82, + 0x20, 0xA8, 0xAB, 0x22, 0xE7, 0x24, 0x4B, 0xA2, 0x94, 0xFA, 0x7A, 0xD4, 0x05, 0x67, 0x39, 0xA3, + 0x0F, 0x5F, 0x55, 0x55, 0x60, 0x65, 0x3D, 0x80, 0x8A, 0xD2, 0xD0, 0x54, 0x35, 0xC1, 0x68, 0x98, + 0x16, 0x08, 0x90, 0x10, 0x22, 0xA6, 0xA0, 0xB5, 0x75, 0x2E, 0xE4, 0x04, 0x08, 0xC1, 0xAB, 0x75, + 0x93, 0x62, 0xF4, 0x3E, 0xE8, 0x0C, 0x19, 0xA3, 0x29, 0xA7, 0xDD, 0x8A, 0x57, 0x1C, 0x87, 0x9C, + 0xB4, 0x9E, 0xAB, 0x92, 0x03, 0xE0, 0xDA, 0xA6, 0xDE, 0x54, 0xC5, 0x30, 0x4D, 0xB2, 0xA4, 0xC1, + 0x86, 0xBB, 0x43, 0x35, 0xCE, 0x29, 0x27, 0xD4, 0x34, 0x8D, 0xF5, 0x91, 0xE3, 0x44, 0x31, 0x1D, + 0x66, 0x87, 0x31, 0x29, 0x64, 0x11, 0xA2, 0x2A, 0x18, 0xAE, 0x38, 0xDA, 0xD5, 0xBB, 0x77, 0x6F, + 0x36, 0x2A, 0xC4, 0xF7, 0xAF, 0xE3, 0xFB, 0xDF, 0x7E, 0x81, 0x10, 0xFC, 0xF8, 0xDD, 0xDD, 0xB9, + 0xEB, 0xB5, 0xB3, 0xCB, 0xE2, 0x73, 0x02, 0x94, 0xE1, 0x94, 0x23, 0x31, 0x26, 0x18, 0x6D, 0xEF, + 0xB6, 0xBB, 0x7F, 0xFE, 0x87, 0x9F, 0x33, 0x64, 0x8C, 0x53, 0x1F, 0x01, 0x22, 0x62, 0xB3, 0xDD, + 0xFD, 0x53, 0xF3, 0xC7, 0x69, 0x5A, 0x40, 0x02, 0x52, 0x08, 0x0A, 0x17, 0xE5, 0xF4, 0xC3, 0x6D, + 0x15, 0x63, 0xF1, 0xAF, 0x7A, 0x26, 0x39, 0xD1, 0x6C, 0x9D, 0xF7, 0x7F, 0xFE, 0xD3, 0x63, 0x44, + 0xE8, 0x78, 0xBA, 0xBE, 0xD5, 0x7B, 0xC6, 0xE8, 0x6A, 0x53, 0x9F, 0x5F, 0x7B, 0xA3, 0x7D, 0x21, + 0xB9, 0x3F, 0x5A, 0x63, 0x6C, 0x06, 0xF0, 0x74, 0x9A, 0xFE, 0xF0, 0xDD, 0xE3, 0xEB, 0xE5, 0x92, + 0x40, 0xA8, 0x0B, 0x99, 0x42, 0x7E, 0x7E, 0x59, 0x08, 0xCB, 0x09, 0xC4, 0xE0, 0xA8, 0x8F, 0xC9, + 0x98, 0xD8, 0xCF, 0x81, 0x50, 0x08, 0x12, 0xFC, 0xF2, 0x74, 0xD9, 0xAC, 0xD6, 0x0F, 0x77, 0xF7, + 0x04, 0x22, 0x1B, 0xF3, 0x7A, 0x53, 0x60, 0xDC, 0x5C, 0xCE, 0x73, 0x70, 0xE6, 0xF1, 0x61, 0x55, + 0x14, 0xE9, 0xF7, 0x8F, 0xE3, 0x75, 0x9A, 0x1E, 0xEE, 0xB7, 0xCE, 0x05, 0x10, 0x91, 0xB6, 0x76, + 0x31, 0xA6, 0x69, 0x8A, 0xF5, 0xBA, 0xEE, 0xE7, 0xA1, 0x10, 0xA2, 0x1B, 0x26, 0x4C, 0x78, 0xBD, + 0xDA, 0x78, 0x63, 0x96, 0xE9, 0x82, 0x10, 0x72, 0xDE, 0xEE, 0xF7, 0xB7, 0x29, 0xE5, 0xD3, 0xF9, + 0xA8, 0xAD, 0x0D, 0x39, 0x5A, 0xAB, 0x01, 0xF0, 0x82, 0xE1, 0x65, 0xD6, 0x8F, 0x6F, 0xF6, 0xDB, + 0x75, 0x9B, 0x83, 0x5B, 0xA6, 0x31, 0x46, 0xF3, 0xFA, 0xDC, 0x03, 0x8C, 0xB5, 0xB6, 0xDB, 0x1D, + 0x14, 0x82, 0xFF, 0xF6, 0xFB, 0x69, 0x9C, 0x16, 0x59, 0x0A, 0x41, 0xF1, 0x70, 0x9D, 0xBF, 0x3B, + 0x80, 0x28, 0x48, 0x59, 0x6C, 0x32, 0x20, 0x29, 0x47, 0x8E, 0x93, 0xA0, 0x74, 0xD3, 0xCA, 0xDB, + 0xC3, 0xBA, 0xA9, 0x57, 0x41, 0xC5, 0x71, 0x9C, 0x26, 0x9D, 0x72, 0x46, 0x4D, 0x5D, 0xA4, 0x9C, + 0xB4, 0xD6, 0xD3, 0xB7, 0x7B, 0x8B, 0xD1, 0x38, 0x2B, 0x0C, 0x51, 0x48, 0x31, 0x01, 0xD0, 0x8D, + 0x53, 0xD7, 0x2F, 0x94, 0xB1, 0xE8, 0x63, 0x4C, 0xB2, 0x1F, 0xD4, 0xE1, 0xF6, 0x1B, 0x87, 0x92, + 0x58, 0x29, 0x13, 0x40, 0xAF, 0xAF, 0x1D, 0x25, 0x08, 0x93, 0x1E, 0xE6, 0xCC, 0x28, 0x2D, 0xAA, + 0x02, 0x13, 0x52, 0x71, 0x11, 0x53, 0xC6, 0x98, 0xDC, 0xDD, 0xDD, 0x50, 0x8A, 0x09, 0x44, 0xCB, + 0xE2, 0x21, 0x04, 0x08, 0x82, 0x98, 0x80, 0x28, 0x58, 0x51, 0xF0, 0xA6, 0xA8, 0x65, 0x41, 0x10, + 0x81, 0xBF, 0x7D, 0x7C, 0x09, 0x11, 0x7C, 0xFA, 0xFC, 0x72, 0xD8, 0x35, 0x9B, 0x55, 0x9D, 0x12, + 0xAC, 0xCA, 0x02, 0x13, 0x4C, 0x20, 0x0A, 0x21, 0x7A, 0x67, 0xB9, 0xE0, 0x08, 0x21, 0xC6, 0x28, + 0xC8, 0x20, 0xC6, 0x54, 0x17, 0xC5, 0xFF, 0xF2, 0x4F, 0x3F, 0x2D, 0xB3, 0xFE, 0xF5, 0xFD, 0xF3, + 0xB5, 0x9F, 0x96, 0xC5, 0xCC, 0x39, 0x11, 0x8C, 0xB7, 0x6D, 0xD2, 0x5A, 0x43, 0x08, 0xB5, 0x56, + 0x08, 0x93, 0x94, 0xB0, 0x36, 0x01, 0xA4, 0xD0, 0x56, 0xB5, 0xB1, 0x6E, 0xB3, 0x6E, 0x10, 0x42, + 0x5F, 0xBF, 0xBE, 0x5A, 0xEF, 0x9B, 0xAA, 0x12, 0x9C, 0x3F, 0x3F, 0x3F, 0xC7, 0x94, 0x33, 0x00, + 0x08, 0x22, 0x84, 0x10, 0x61, 0x82, 0xA7, 0xCC, 0x05, 0x93, 0x5C, 0x30, 0x8E, 0x86, 0x71, 0x09, + 0x31, 0xB4, 0x6D, 0x39, 0x4E, 0x06, 0x42, 0x68, 0xAD, 0x06, 0x00, 0x00, 0x90, 0x8D, 0x51, 0xD3, + 0x34, 0xE4, 0x9C, 0x01, 0x00, 0xD6, 0x1A, 0x67, 0xCD, 0xB6, 0xAD, 0x04, 0xE3, 0xD6, 0x3A, 0x90, + 0x01, 0x44, 0xA4, 0xEB, 0x47, 0x8C, 0x09, 0x44, 0x60, 0x5A, 0x94, 0xD6, 0xFA, 0xEE, 0xB0, 0xA6, + 0x94, 0x28, 0xE3, 0xCE, 0xBD, 0x66, 0x8C, 0x34, 0x05, 0xE7, 0x52, 0x7A, 0x95, 0x9F, 0x9F, 0x4F, + 0x21, 0xC5, 0x45, 0xF9, 0x4B, 0x37, 0x13, 0x4E, 0xA6, 0xF9, 0xFF, 0x0B, 0x07, 0x04, 0xE3, 0x98, + 0xC5, 0xCB, 0x79, 0xE6, 0x8C, 0x8E, 0x16, 0x87, 0x18, 0x46, 0x5B, 0x33, 0x8D, 0x74, 0xFF, 0x9E, + 0x20, 0xB3, 0xBD, 0x7D, 0x44, 0x29, 0x1D, 0xDA, 0xEE, 0xE6, 0x7F, 0xDD, 0x30, 0x80, 0x1F, 0x6F, + 0x2A, 0x48, 0x72, 0x4E, 0x66, 0xD5, 0xF2, 0x59, 0xF9, 0xFF, 0xF4, 0x97, 0x07, 0x00, 0xBC, 0x52, + 0xE1, 0xF8, 0xDA, 0xDD, 0xDD, 0x35, 0xC3, 0x10, 0x18, 0x0C, 0x6F, 0x6F, 0xA1, 0xB5, 0x31, 0x45, + 0x52, 0x11, 0xB8, 0x5B, 0x71, 0x97, 0xCB, 0xBE, 0x9B, 0xFE, 0xC7, 0xDF, 0xBE, 0x38, 0x9F, 0xD6, + 0xAB, 0x82, 0x33, 0x52, 0x97, 0xCD, 0x75, 0x98, 0x18, 0x86, 0xD6, 0xC5, 0x73, 0xD7, 0xB5, 0x75, + 0x05, 0x10, 0x84, 0x29, 0x6E, 0x56, 0x72, 0x98, 0xC6, 0xE7, 0xD7, 0x63, 0x51, 0xC8, 0xB7, 0x77, + 0xBB, 0x10, 0xE3, 0xC7, 0xCF, 0xD7, 0x0C, 0xFC, 0x8F, 0x3F, 0x3C, 0x2C, 0x0A, 0xE7, 0x24, 0xBC, + 0x55, 0x90, 0x42, 0x0C, 0xC0, 0x30, 0xE8, 0x59, 0xFB, 0x55, 0x5B, 0x63, 0x0C, 0xB4, 0xF3, 0x85, + 0xA3, 0x04, 0x81, 0xBA, 0xAE, 0x05, 0x15, 0xA7, 0xD7, 0x4B, 0x3F, 0x2C, 0x00, 0xA2, 0x5F, 0x3F, + 0x7F, 0x9A, 0x94, 0xFE, 0xF9, 0x87, 0x7B, 0x2A, 0xC9, 0x62, 0x1D, 0xC0, 0xB1, 0x59, 0x17, 0xB3, + 0x86, 0x12, 0xCA, 0xAA, 0x14, 0x31, 0x04, 0xAB, 0x83, 0x10, 0xBC, 0xAC, 0x2B, 0xE7, 0x03, 0x84, + 0x10, 0x33, 0x5C, 0xD7, 0xB2, 0xAE, 0x0B, 0x46, 0xF1, 0x38, 0xCE, 0x9B, 0xB6, 0x6A, 0xCA, 0x6A, + 0xB5, 0x6E, 0x66, 0x6D, 0xFA, 0x69, 0x2A, 0xB8, 0xF0, 0x11, 0xBC, 0xFF, 0xFD, 0xB3, 0xF5, 0xE1, + 0xE5, 0x38, 0xF4, 0x83, 0x29, 0x4B, 0xF9, 0xE6, 0xB0, 0xE9, 0x27, 0xB5, 0x69, 0xD7, 0x39, 0xE5, + 0x69, 0x51, 0x10, 0x42, 0xE4, 0x73, 0x51, 0x49, 0x4A, 0x89, 0x36, 0x53, 0xCA, 0xD9, 0x5B, 0x97, + 0xAE, 0x63, 0x51, 0x4A, 0x90, 0x52, 0x0E, 0x4E, 0x51, 0xE4, 0x9C, 0x65, 0x02, 0x75, 0x53, 0x4C, + 0x21, 0x12, 0x42, 0xA6, 0x71, 0xE4, 0x38, 0x49, 0x26, 0x4E, 0xDD, 0x98, 0x61, 0xB2, 0x73, 0x00, + 0x29, 0x5F, 0xAF, 0xA3, 0xB6, 0xB6, 0x90, 0x6C, 0x18, 0x35, 0xC1, 0x14, 0x22, 0x74, 0xBB, 0xDF, + 0xF8, 0x98, 0x6F, 0x0F, 0x05, 0xE5, 0xE8, 0xA1, 0x68, 0x63, 0x88, 0xBB, 0x4D, 0xBD, 0xAD, 0x0B, + 0x4E, 0xD3, 0x97, 0xD7, 0xA7, 0xFE, 0x32, 0x21, 0x4A, 0x7F, 0xFE, 0xC3, 0x4D, 0x25, 0x58, 0x4C, + 0xF9, 0x3A, 0x69, 0x2E, 0x98, 0xF3, 0xF1, 0xD4, 0xF5, 0x65, 0x21, 0xE0, 0xFF, 0xF9, 0x7F, 0xFC, + 0x6F, 0xDF, 0xDD, 0xEF, 0x09, 0x26, 0x39, 0x81, 0x51, 0x99, 0x98, 0x53, 0x08, 0x91, 0x60, 0xEC, + 0x43, 0x4E, 0x39, 0xBF, 0x1C, 0xCF, 0x4F, 0xCF, 0xE7, 0x1F, 0x7F, 0xB8, 0x87, 0x19, 0x94, 0x85, + 0xA0, 0x82, 0x13, 0x02, 0x30, 0xA6, 0xAF, 0x4F, 0x2F, 0xA5, 0xE0, 0x00, 0x86, 0x0C, 0x01, 0x16, + 0x4C, 0x7B, 0x07, 0x10, 0xF2, 0x3E, 0x54, 0x85, 0x28, 0xEB, 0x02, 0x03, 0x58, 0x0A, 0x06, 0x21, + 0xE8, 0x7A, 0xFD, 0xE5, 0xEB, 0xD9, 0x2C, 0x76, 0xB7, 0xD9, 0x28, 0x1B, 0x73, 0x76, 0x05, 0x4B, + 0x18, 0xA2, 0xE7, 0x97, 0x11, 0x63, 0x4C, 0x49, 0xC6, 0x18, 0x0B, 0x51, 0x9C, 0xCE, 0xC3, 0x79, + 0xB2, 0x46, 0xAB, 0x90, 0x33, 0x21, 0x6C, 0xB7, 0xD9, 0x1C, 0xB6, 0x4D, 0x74, 0x7A, 0xBD, 0xAB, + 0xB8, 0x80, 0xD3, 0x64, 0x95, 0x72, 0x14, 0x23, 0xA5, 0xCC, 0x76, 0xD7, 0xC6, 0x04, 0x62, 0x8A, + 0x7F, 0xF8, 0xE1, 0x2E, 0x65, 0xB0, 0x68, 0xC3, 0x39, 0xBD, 0x9E, 0xC7, 0x79, 0x52, 0x42, 0xF2, + 0x9C, 0xA1, 0xE0, 0xE8, 0x7F, 0xFC, 0xEB, 0xFB, 0x0F, 0x9F, 0x5E, 0x28, 0x2F, 0x21, 0x04, 0x5A, + 0x4D, 0x94, 0x09, 0xC6, 0xC4, 0xFD, 0xDD, 0x3D, 0x42, 0x40, 0x9B, 0x59, 0x1B, 0x15, 0x73, 0x0E, + 0x21, 0x04, 0xE7, 0x41, 0x0A, 0x31, 0x84, 0x3F, 0xFD, 0x70, 0xBF, 0x6E, 0xAA, 0x45, 0x29, 0xAD, + 0x34, 0xA5, 0xB8, 0xA8, 0x0A, 0xCA, 0x18, 0xC8, 0x40, 0x29, 0xB7, 0xD8, 0x70, 0x68, 0xAB, 0xFF, + 0xF6, 0xFF, 0xFC, 0x92, 0x00, 0x7A, 0xF7, 0xF6, 0xE6, 0xE5, 0xE9, 0xF4, 0xE7, 0x1F, 0xDF, 0x7E, + 0x79, 0x39, 0x95, 0x42, 0xEC, 0xF7, 0xEB, 0xBF, 0xFC, 0x7C, 0xDF, 0x75, 0xD7, 0xDD, 0xBA, 0xAE, + 0x0B, 0x36, 0xCE, 0x06, 0x41, 0x3E, 0x5E, 0xCD, 0xF1, 0xD8, 0x05, 0x1F, 0x20, 0x21, 0x2F, 0xE7, + 0x4E, 0x72, 0x7E, 0xEE, 0x06, 0xC6, 0x48, 0x5D, 0xCA, 0x4B, 0x37, 0xBD, 0x7B, 0x3C, 0xBC, 0x9C, + 0x86, 0x73, 0x3F, 0x33, 0x41, 0x11, 0x84, 0xEB, 0x55, 0xBB, 0xD9, 0xD6, 0x97, 0xEB, 0x80, 0x31, + 0x46, 0x04, 0x52, 0x08, 0x32, 0x04, 0xCE, 0x87, 0x69, 0x54, 0x18, 0x13, 0xCE, 0x28, 0xA2, 0x78, + 0xEC, 0xC7, 0x42, 0xB2, 0xA6, 0xAD, 0xBA, 0xD3, 0xD8, 0xAC, 0x1B, 0x17, 0xE2, 0x32, 0x2F, 0x75, + 0x29, 0x33, 0x04, 0x19, 0x40, 0xBD, 0x58, 0x42, 0xA9, 0x77, 0x69, 0x9E, 0xF5, 0xAC, 0xD4, 0xDD, + 0x61, 0xF3, 0xF8, 0xE6, 0x40, 0x30, 0x76, 0xDE, 0xC9, 0x92, 0x61, 0x88, 0x42, 0x4A, 0x29, 0xC5, + 0x9C, 0x72, 0x0A, 0xF1, 0xD3, 0x97, 0xA7, 0x45, 0x39, 0x59, 0x08, 0xEF, 0xE3, 0x38, 0xA8, 0xAA, + 0x14, 0xB7, 0x87, 0xB5, 0x5A, 0x4C, 0x51, 0x70, 0x00, 0x40, 0xF0, 0x49, 0xCA, 0x42, 0x08, 0x52, + 0x57, 0xA5, 0xD6, 0xF6, 0xFD, 0xE7, 0x97, 0xEB, 0xB0, 0x74, 0xFD, 0xB0, 0xDF, 0xB6, 0x82, 0x92, + 0x90, 0xA1, 0xF5, 0x00, 0x13, 0xE6, 0x9D, 0x2B, 0x8A, 0x32, 0xE5, 0x5C, 0xD2, 0x64, 0xAD, 0x1F, + 0xE6, 0x49, 0x0A, 0xD2, 0xAE, 0x9A, 0xE7, 0x97, 0x1E, 0x60, 0x08, 0xA2, 0xAF, 0xCB, 0x72, 0x9C, + 0x4D, 0x02, 0x30, 0xE7, 0x44, 0x30, 0x09, 0xC1, 0x31, 0xC6, 0xB5, 0xD6, 0x94, 0xA0, 0xA6, 0x2A, + 0xB5, 0xD1, 0x84, 0xE0, 0x14, 0x63, 0xCE, 0xD9, 0xFA, 0x10, 0x33, 0x40, 0x88, 0x33, 0xC6, 0xBD, + 0x37, 0x8C, 0xA2, 0x42, 0xF2, 0x45, 0x19, 0x4A, 0xE5, 0x34, 0x4D, 0x55, 0xC1, 0x1E, 0x0E, 0x37, + 0x8C, 0x52, 0x4A, 0xD0, 0xE9, 0x72, 0x05, 0x10, 0x72, 0x46, 0xAD, 0x73, 0x29, 0x67, 0xC1, 0x58, + 0xCE, 0x69, 0xBB, 0x2E, 0x73, 0xCA, 0x75, 0xDD, 0x68, 0x6D, 0x01, 0x04, 0x82, 0x51, 0x42, 0x80, + 0xF3, 0x7E, 0x56, 0xCB, 0xD3, 0xCB, 0x79, 0x9C, 0x2D, 0x21, 0x68, 0xB3, 0x6B, 0xBB, 0x6E, 0xC2, + 0x18, 0x71, 0x4E, 0x9D, 0xF5, 0xDE, 0x27, 0x88, 0x68, 0x06, 0x89, 0x89, 0xBA, 0x59, 0xDF, 0xDC, + 0xDD, 0x3F, 0x0E, 0xDD, 0xB5, 0x7F, 0xF9, 0xD7, 0xC3, 0xED, 0x1D, 0x65, 0x75, 0x05, 0x9E, 0x4C, + 0xBC, 0xCE, 0x01, 0x8F, 0xD7, 0x28, 0x05, 0x69, 0x1B, 0xD1, 0x56, 0x92, 0x73, 0xC6, 0x68, 0x91, + 0x92, 0x82, 0x28, 0x97, 0xE5, 0x8D, 0x0B, 0x13, 0x00, 0x65, 0x34, 0x21, 0x44, 0x8D, 0x91, 0x3A, + 0x0F, 0xEE, 0x74, 0xD1, 0x8F, 0x37, 0xE2, 0xA7, 0x3F, 0xFC, 0xF0, 0xE5, 0x69, 0xFC, 0xF0, 0xF2, + 0xF5, 0xE3, 0x93, 0x75, 0x36, 0x34, 0xA5, 0x90, 0xB2, 0x2A, 0x04, 0xDD, 0x6D, 0x57, 0xC1, 0x07, + 0x8C, 0xB1, 0xE4, 0xB4, 0xAE, 0xE4, 0xE5, 0xDA, 0x2F, 0x8B, 0x32, 0xCE, 0x85, 0x08, 0x19, 0xE3, + 0x1F, 0x3F, 0x1F, 0xD7, 0xAB, 0xB6, 0x9F, 0x26, 0x21, 0xE5, 0x76, 0x55, 0x34, 0x25, 0x99, 0xB4, + 0xED, 0xC6, 0x9E, 0x61, 0x08, 0x11, 0x49, 0x19, 0x0D, 0x93, 0xA3, 0x54, 0x2C, 0xB3, 0xA9, 0x2A, + 0x71, 0x77, 0xB7, 0x8B, 0xDE, 0x31, 0x8E, 0x2B, 0xC9, 0x09, 0xC0, 0xDD, 0x75, 0x9C, 0xE6, 0x05, + 0x12, 0x7C, 0xBE, 0x5E, 0xD6, 0xAB, 0x42, 0x72, 0xE1, 0x6C, 0xDC, 0x6E, 0x9A, 0xBB, 0x9B, 0xDD, + 0xC7, 0x8F, 0xCF, 0x98, 0xD2, 0xB6, 0x69, 0x97, 0xC5, 0xA4, 0x18, 0xA2, 0x8F, 0x6D, 0x53, 0x63, + 0x02, 0x95, 0xB6, 0x84, 0x82, 0xF5, 0xAA, 0x64, 0x94, 0x2E, 0xDA, 0x64, 0x08, 0x38, 0x47, 0x20, + 0x67, 0x90, 0xD1, 0xA4, 0x6C, 0x5D, 0x96, 0x5A, 0x2D, 0x75, 0x59, 0xC9, 0xAA, 0xD0, 0xD6, 0xCD, + 0x4A, 0x3D, 0x3D, 0x5F, 0xDE, 0x7F, 0x78, 0x65, 0x04, 0x15, 0x42, 0xC4, 0x84, 0x16, 0x13, 0x0E, + 0xFB, 0xCD, 0xE9, 0x7C, 0xEA, 0xC7, 0xA9, 0xAE, 0x2A, 0xCE, 0x49, 0xCE, 0x59, 0xDB, 0x00, 0x20, + 0x04, 0x20, 0x75, 0xD7, 0x81, 0x32, 0xCA, 0x19, 0x2D, 0x38, 0xF7, 0xC1, 0xED, 0x0F, 0x2D, 0x25, + 0x78, 0x99, 0x16, 0xEF, 0xA2, 0x94, 0x45, 0x0C, 0xBE, 0xE4, 0x58, 0x19, 0x8F, 0x09, 0x29, 0x0B, + 0xC1, 0x29, 0xF2, 0xCE, 0x5E, 0x87, 0x21, 0x02, 0x28, 0x05, 0x87, 0x10, 0x46, 0x17, 0x00, 0x04, + 0x9C, 0x53, 0x26, 0xF9, 0x30, 0x2D, 0x45, 0xD1, 0xDE, 0xAE, 0x1B, 0x8C, 0xC9, 0xB8, 0x2C, 0x35, + 0x47, 0xDD, 0x68, 0xBF, 0x9E, 0x15, 0x4E, 0xEA, 0x4F, 0xDF, 0xBF, 0x09, 0x31, 0x74, 0xE3, 0x70, + 0xBC, 0x2C, 0x65, 0x21, 0xA5, 0xE4, 0xDD, 0xB4, 0x7C, 0xF3, 0x87, 0xF1, 0xFF, 0xFE, 0x5F, 0xFE, + 0x3A, 0x4C, 0xF6, 0x3C, 0xCC, 0xBF, 0xBE, 0xFF, 0xE2, 0x42, 0xBA, 0xF4, 0xD3, 0xCB, 0xF1, 0x9C, + 0x40, 0xBE, 0x0E, 0xD3, 0xD0, 0x8F, 0xB3, 0x56, 0xBF, 0x7F, 0xF9, 0x5A, 0xCA, 0xB2, 0x2C, 0x04, + 0xA5, 0x54, 0x2D, 0xF6, 0xDA, 0x4F, 0xDA, 0x99, 0x1C, 0x43, 0xDD, 0x36, 0xA2, 0xA8, 0x28, 0x61, + 0x4D, 0x51, 0x79, 0xED, 0x82, 0x77, 0x7A, 0x54, 0x66, 0xB2, 0x95, 0x10, 0x1C, 0xE3, 0x60, 0xBC, + 0x60, 0x1C, 0x02, 0xB4, 0x5D, 0xD5, 0x0F, 0x0F, 0xBB, 0x76, 0x23, 0xF7, 0xFB, 0x76, 0xBF, 0x6F, + 0x09, 0x23, 0xFB, 0xDB, 0xCD, 0xFE, 0x66, 0x05, 0x41, 0xE4, 0x05, 0x59, 0x94, 0x1A, 0xA6, 0x89, + 0x20, 0xE8, 0x63, 0x26, 0x84, 0xEC, 0xD6, 0xAB, 0xFD, 0x66, 0xF3, 0x78, 0xD7, 0x80, 0x6C, 0x19, + 0x05, 0x45, 0x41, 0xC6, 0x49, 0x9F, 0xCF, 0x3D, 0x86, 0x80, 0x12, 0x1C, 0x02, 0xAA, 0xCA, 0x52, + 0x96, 0x05, 0x25, 0xEC, 0xCB, 0x97, 0xEB, 0xE7, 0x8F, 0x67, 0xCE, 0x48, 0x8E, 0x20, 0xBA, 0x48, + 0x31, 0xE1, 0x82, 0xA5, 0x0C, 0x7E, 0xFD, 0xF5, 0xE9, 0xB0, 0x5D, 0x31, 0x8A, 0xCE, 0xDD, 0x82, + 0x10, 0x8C, 0x21, 0x84, 0x10, 0x76, 0xDB, 0x75, 0x55, 0x17, 0xDD, 0xF8, 0xEA, 0xBD, 0xF3, 0xC1, + 0xC5, 0xE0, 0xEA, 0x52, 0x96, 0x05, 0x8F, 0xD1, 0x97, 0x92, 0xE5, 0x90, 0x53, 0x4C, 0xD3, 0xAC, + 0x9D, 0x0F, 0x00, 0x82, 0xFD, 0x6E, 0x9D, 0x52, 0x76, 0x2E, 0x0C, 0x83, 0x72, 0xD6, 0x4A, 0xC1, + 0x4F, 0xDD, 0xF4, 0xD7, 0x9F, 0xEE, 0xF7, 0xAB, 0xBA, 0x1F, 0x15, 0x13, 0xFC, 0x76, 0x55, 0xAE, + 0xEB, 0xEA, 0x76, 0x5F, 0x23, 0x90, 0x5F, 0x5E, 0xAF, 0x7D, 0xBF, 0xBC, 0xBC, 0xAA, 0x97, 0xAF, + 0xA3, 0xD1, 0xEE, 0xB5, 0xEB, 0x27, 0x35, 0xC6, 0x0C, 0x8B, 0xB2, 0x46, 0x28, 0x07, 0xA7, 0x52, + 0x06, 0xEB, 0xBA, 0x2E, 0x0B, 0x19, 0x42, 0x74, 0x21, 0x76, 0xB3, 0x5E, 0xB4, 0xB1, 0xCE, 0xBF, + 0x7B, 0xBC, 0x1B, 0xC6, 0x65, 0xE8, 0x07, 0xC6, 0xB0, 0xD1, 0x06, 0x13, 0x94, 0x72, 0x86, 0x00, + 0xA4, 0x94, 0x29, 0x67, 0xC3, 0x30, 0x83, 0x9C, 0x01, 0x00, 0x8C, 0x13, 0x4A, 0xB0, 0x37, 0x9E, + 0x50, 0x72, 0xB9, 0xF4, 0xC6, 0x3A, 0x88, 0x00, 0x04, 0x20, 0x43, 0x38, 0x8D, 0x4B, 0xCA, 0x39, + 0xC6, 0xE4, 0xAC, 0xAF, 0xDB, 0xA2, 0x90, 0x64, 0xBD, 0x96, 0x39, 0x03, 0xEF, 0xD3, 0x34, 0x2A, + 0xAD, 0xAC, 0x75, 0xD6, 0xFB, 0xA0, 0x66, 0x6B, 0x8C, 0x23, 0x8C, 0x12, 0x46, 0xB5, 0x32, 0xC3, + 0xA8, 0xAE, 0xDD, 0x42, 0x28, 0x69, 0x9A, 0x0A, 0x02, 0xA8, 0x9D, 0xC3, 0x98, 0x58, 0xEB, 0x01, + 0xC0, 0x31, 0x81, 0x14, 0xF3, 0xEB, 0xF1, 0xEA, 0x43, 0xDC, 0xAC, 0x9A, 0x42, 0xF2, 0x6B, 0x3F, + 0xE5, 0x94, 0x8D, 0x71, 0x8C, 0x49, 0xCA, 0xB8, 0xD6, 0x1A, 0x82, 0x9C, 0x21, 0x40, 0x10, 0x30, + 0x94, 0xBB, 0x61, 0xF4, 0x21, 0x28, 0xA5, 0x43, 0xC8, 0x31, 0xE5, 0x9C, 0x62, 0x51, 0xF0, 0xA2, + 0x28, 0x21, 0x11, 0x4A, 0xCD, 0x10, 0xC2, 0x0C, 0x80, 0x35, 0x06, 0x42, 0x10, 0x53, 0xCC, 0x29, + 0x21, 0x88, 0x9D, 0xB5, 0x19, 0x66, 0x65, 0x9C, 0xD2, 0x8E, 0x52, 0x01, 0x21, 0x01, 0x39, 0x63, + 0x42, 0x11, 0x44, 0x8C, 0x7E, 0x5B, 0xE9, 0xE5, 0x5A, 0x1B, 0x29, 0x58, 0x29, 0x25, 0xA6, 0x42, + 0xC8, 0xEA, 0xF3, 0xD7, 0x2F, 0xB3, 0x52, 0x21, 0xC6, 0x59, 0xDB, 0xEB, 0x30, 0x29, 0x6D, 0x84, + 0x90, 0xC7, 0xEB, 0x60, 0x5C, 0x48, 0x19, 0x0D, 0xE3, 0xA4, 0xB5, 0x45, 0x18, 0x5D, 0xBB, 0x71, + 0x18, 0x97, 0x6F, 0x60, 0xFA, 0xF1, 0x3A, 0x1A, 0x1F, 0x20, 0x84, 0xCE, 0x85, 0x0C, 0xA0, 0x60, + 0x94, 0x52, 0x52, 0xD6, 0x7C, 0x9E, 0x8D, 0xB6, 0x01, 0x42, 0x50, 0xD5, 0x2B, 0xCE, 0xAB, 0xA1, + 0xBF, 0x2E, 0xC3, 0xC7, 0xC7, 0x3B, 0x81, 0x11, 0xC7, 0xF6, 0xC9, 0x86, 0x4E, 0x7B, 0x71, 0xEA, + 0xC1, 0xCB, 0x79, 0x11, 0x1C, 0x08, 0x01, 0xBF, 0xBC, 0x5E, 0xFB, 0x71, 0x99, 0x8C, 0x7D, 0x3A, + 0xBD, 0xC4, 0x9C, 0x5F, 0xCE, 0xC7, 0x4F, 0xCF, 0x27, 0x41, 0xA9, 0x31, 0xC3, 0x38, 0x6B, 0x46, + 0x4B, 0xC1, 0xA1, 0x2C, 0x73, 0x21, 0x57, 0xD1, 0x51, 0x84, 0x5C, 0x51, 0xE2, 0x77, 0x6F, 0x6F, + 0xDF, 0x1C, 0xE4, 0xF7, 0x77, 0xEB, 0xF5, 0xBA, 0x7D, 0x73, 0xBF, 0x95, 0x94, 0xDF, 0xEC, 0x5B, + 0x0C, 0x32, 0xA7, 0x18, 0x81, 0x1C, 0xFC, 0xC2, 0x45, 0x02, 0x30, 0x3E, 0xDE, 0xED, 0x1F, 0x1F, + 0xF6, 0x55, 0x45, 0x0F, 0xAB, 0xFA, 0xC7, 0x77, 0x77, 0xBB, 0x4D, 0xFD, 0x78, 0xB3, 0x8D, 0x01, + 0x71, 0xC1, 0x01, 0x88, 0x6A, 0x54, 0x04, 0xE1, 0x61, 0x74, 0x82, 0xD2, 0x1C, 0x6C, 0x21, 0xF0, + 0x62, 0x82, 0xD1, 0xCE, 0x1A, 0x3B, 0x0C, 0xB3, 0x75, 0x21, 0x23, 0x08, 0x39, 0xE5, 0x05, 0x87, + 0xD9, 0xDF, 0x3D, 0x1C, 0x36, 0xDB, 0x75, 0x55, 0x17, 0x6F, 0xDF, 0xDE, 0x96, 0x52, 0x20, 0x80, + 0x64, 0x59, 0x59, 0x1B, 0x4E, 0xE7, 0x6E, 0x98, 0x26, 0x67, 0x6C, 0xDB, 0x96, 0x31, 0xA5, 0xAE, + 0x9F, 0x3F, 0x3E, 0x1D, 0x5D, 0xF0, 0xFB, 0x4D, 0xF3, 0xE5, 0xE9, 0x05, 0x33, 0xCC, 0x28, 0x3B, + 0x5E, 0xFB, 0x61, 0x52, 0x2F, 0xA7, 0x2B, 0xA7, 0x1C, 0xE6, 0x14, 0x43, 0xB2, 0x2E, 0x12, 0x4A, + 0x8D, 0xB5, 0xB3, 0xD2, 0x45, 0x21, 0xDB, 0xB6, 0x3A, 0x5D, 0x7A, 0x26, 0x59, 0xCA, 0x30, 0x02, + 0xB4, 0xA8, 0x25, 0xE5, 0xB8, 0x6A, 0x6B, 0x00, 0x81, 0xD2, 0x56, 0x1B, 0x97, 0x12, 0x48, 0x31, + 0x95, 0x25, 0x4F, 0x11, 0xC4, 0x18, 0x29, 0xC6, 0x84, 0x90, 0x69, 0x9A, 0x0B, 0xC9, 0x29, 0x46, + 0x3E, 0x64, 0xE3, 0xC2, 0xF9, 0x3A, 0x0D, 0xD3, 0x92, 0x01, 0xF6, 0x21, 0xF8, 0x14, 0xC6, 0x69, + 0xC9, 0x08, 0x26, 0x88, 0x74, 0x88, 0x36, 0x26, 0x00, 0x91, 0x75, 0xCE, 0x3A, 0x8B, 0x28, 0x24, + 0x84, 0x74, 0x93, 0x32, 0x2E, 0x41, 0x04, 0x11, 0x82, 0xF3, 0xA2, 0x39, 0x45, 0xE3, 0x30, 0x7E, + 0xF8, 0x72, 0xAC, 0x0A, 0x7C, 0x77, 0xD8, 0x71, 0x2E, 0xFF, 0xFE, 0xFE, 0x8B, 0xF6, 0x20, 0x67, + 0x1C, 0x62, 0x9C, 0x94, 0xF6, 0x3E, 0x2C, 0xDA, 0x12, 0x8C, 0xF1, 0x61, 0xB7, 0x1E, 0x46, 0xF5, + 0xFE, 0xD3, 0xD3, 0xD7, 0xD7, 0xF3, 0xAC, 0x4C, 0xC8, 0xE8, 0xF3, 0xF3, 0x29, 0x24, 0x00, 0x20, + 0x94, 0x82, 0x33, 0x46, 0x56, 0xEB, 0xA6, 0x28, 0xE5, 0x38, 0x0D, 0xCB, 0xB2, 0x8C, 0x8B, 0x0A, + 0x29, 0x32, 0x86, 0xBE, 0xF1, 0xB0, 0x08, 0x61, 0x1F, 0x00, 0xC8, 0x84, 0x12, 0xD6, 0x54, 0xD5, + 0x76, 0xDB, 0x60, 0x84, 0x19, 0x26, 0x20, 0x26, 0x08, 0xA1, 0xD1, 0x6E, 0x9C, 0xEC, 0x30, 0xDB, + 0x71, 0x5C, 0x7C, 0x06, 0xC6, 0xBA, 0x45, 0xE9, 0xE7, 0xCF, 0xA7, 0xF1, 0xA2, 0xAC, 0xCB, 0x21, + 0x01, 0xED, 0xA3, 0x28, 0x24, 0xA3, 0x08, 0x40, 0xF0, 0xEE, 0xCD, 0xFD, 0x5F, 0x7F, 0xFE, 0xE1, + 0xF6, 0x66, 0xCD, 0x49, 0xAA, 0x6B, 0x9E, 0x73, 0x16, 0x42, 0x20, 0x4C, 0x56, 0x9B, 0xB6, 0x2C, + 0xEA, 0x9C, 0xC1, 0xCD, 0xDD, 0x81, 0x30, 0x36, 0x2D, 0xF6, 0xE5, 0xE5, 0x1A, 0x53, 0x3C, 0x5F, + 0xC6, 0xF5, 0xBA, 0xDE, 0xEE, 0xDA, 0xC5, 0xDA, 0x0C, 0x91, 0xB1, 0x1E, 0x22, 0xE8, 0x9D, 0x0B, + 0x31, 0xBD, 0x9E, 0x3A, 0x40, 0xF0, 0x34, 0x8C, 0x00, 0xC2, 0x0C, 0x61, 0x53, 0x95, 0x84, 0x44, + 0x17, 0xEC, 0x37, 0x6D, 0x26, 0xA5, 0x44, 0x29, 0xFE, 0xF1, 0xDD, 0xDD, 0xD7, 0x97, 0x33, 0x45, + 0x19, 0xE6, 0x8C, 0x29, 0xDA, 0xEF, 0xDB, 0xAA, 0x96, 0xDA, 0x2C, 0x0F, 0x37, 0xBB, 0x10, 0xE2, + 0xE5, 0x7A, 0x19, 0xC7, 0x85, 0x60, 0xB4, 0x69, 0x38, 0x93, 0xEC, 0xC7, 0x1F, 0xEE, 0x9A, 0x92, + 0x0B, 0xC1, 0xD7, 0xEB, 0x6A, 0x9C, 0xFB, 0x6D, 0x53, 0x2B, 0x13, 0x21, 0xE2, 0x7F, 0x7F, 0xFF, + 0xF5, 0xC3, 0xD7, 0xF3, 0x38, 0xA9, 0x98, 0x51, 0x37, 0xCE, 0x1F, 0x9F, 0x9E, 0x3F, 0xBD, 0x74, + 0xA3, 0xB6, 0x75, 0x5D, 0x5B, 0x6F, 0x94, 0xD1, 0xD3, 0x62, 0x18, 0xE7, 0xD6, 0xF9, 0x79, 0x59, + 0x76, 0x9B, 0xD5, 0x64, 0x1C, 0xC2, 0xB8, 0x1F, 0xA6, 0xBB, 0xBB, 0x83, 0xD1, 0xEE, 0xF5, 0x7C, + 0xDE, 0x6C, 0x1B, 0x1F, 0x42, 0xCE, 0x29, 0x65, 0x18, 0x43, 0x36, 0xDA, 0xAC, 0xD6, 0x95, 0xD6, + 0xA6, 0x6C, 0x4A, 0x21, 0x59, 0x59, 0x17, 0x29, 0xA5, 0x14, 0x93, 0xF3, 0x3E, 0x85, 0xE4, 0x63, + 0x0A, 0x21, 0x72, 0x4E, 0x8D, 0xB6, 0x00, 0xE4, 0x65, 0x36, 0xCE, 0x85, 0x71, 0x5C, 0x0A, 0x41, + 0x1F, 0xEE, 0x57, 0x87, 0xDB, 0xF6, 0xB0, 0x6F, 0x28, 0x86, 0x4D, 0x23, 0x8D, 0xB1, 0x21, 0x44, + 0x46, 0xC9, 0xC7, 0x4F, 0xC7, 0x18, 0x13, 0x63, 0xD4, 0x1A, 0x13, 0x42, 0xD8, 0xEE, 0xD7, 0xCE, + 0xC7, 0x94, 0xF2, 0x6E, 0xBB, 0xB6, 0xC6, 0x4D, 0xB3, 0xC2, 0x14, 0x1B, 0xE3, 0x7C, 0x48, 0x00, + 0x43, 0x6B, 0x83, 0x8F, 0x89, 0x10, 0x92, 0x33, 0x50, 0x4A, 0x37, 0x4D, 0x21, 0x05, 0x3F, 0x5D, + 0x07, 0x84, 0x60, 0xCE, 0x49, 0xCA, 0x62, 0x5E, 0x66, 0x6B, 0x15, 0xC6, 0xA8, 0x29, 0x28, 0xC2, + 0x48, 0x19, 0xA3, 0x8D, 0x0D, 0x29, 0x69, 0x6B, 0xBD, 0xF7, 0xD6, 0x39, 0x8A, 0x71, 0x51, 0xD6, + 0xD3, 0x34, 0x3B, 0xAB, 0x39, 0x97, 0x10, 0x02, 0x90, 0x53, 0x88, 0x11, 0x42, 0x48, 0x30, 0xF6, + 0x31, 0xE6, 0x1C, 0x33, 0x00, 0x19, 0xE2, 0xB2, 0x5A, 0xA5, 0x94, 0x21, 0x84, 0x08, 0x61, 0xC6, + 0x05, 0x21, 0xC4, 0x59, 0xEB, 0x43, 0x4A, 0x10, 0x21, 0x04, 0x56, 0xB5, 0x4C, 0x19, 0xAF, 0xB7, + 0xB7, 0xC3, 0x70, 0x2D, 0x04, 0xBB, 0xDD, 0xAD, 0x53, 0x8A, 0x4F, 0xC7, 0x73, 0x4C, 0x29, 0xA4, + 0xD4, 0x34, 0x6B, 0xA5, 0x15, 0x00, 0x80, 0x10, 0x4C, 0x09, 0x1E, 0xA6, 0xE5, 0xDB, 0x59, 0x2D, + 0x8B, 0xC2, 0xD8, 0xE0, 0xBD, 0x5F, 0x8C, 0xCD, 0x00, 0x40, 0x84, 0x18, 0xC1, 0x82, 0xD1, 0x79, + 0x31, 0x14, 0xE3, 0x7E, 0x50, 0x39, 0xE5, 0x14, 0x23, 0x26, 0xB8, 0x2A, 0x1B, 0x6B, 0xBC, 0xA4, + 0x79, 0xE8, 0x5F, 0x21, 0x4A, 0xDE, 0x99, 0x7E, 0x72, 0x2E, 0x96, 0x21, 0xA1, 0x59, 0xEB, 0xE0, + 0x23, 0xC6, 0xF0, 0x3C, 0xD8, 0xD3, 0xC5, 0x2B, 0x03, 0x5E, 0x4F, 0xD3, 0xEB, 0xD9, 0x53, 0x02, + 0x86, 0xC9, 0x5E, 0xBA, 0x70, 0xEE, 0x47, 0xE3, 0xF4, 0xCB, 0x69, 0xD6, 0xDE, 0x09, 0x9A, 0x97, + 0xC5, 0x0A, 0xBE, 0xFA, 0xFA, 0x72, 0x89, 0x04, 0x5B, 0x17, 0xBD, 0x27, 0x97, 0x6E, 0x1E, 0x86, + 0x79, 0x9C, 0x96, 0x53, 0x3F, 0xC7, 0x94, 0xA3, 0xCB, 0xD7, 0xEE, 0xF2, 0xEB, 0xC7, 0x97, 0x98, + 0xE1, 0xA4, 0xD4, 0xEB, 0x75, 0xBA, 0x3D, 0xEC, 0xC6, 0xD1, 0x7C, 0xFC, 0x7C, 0xBC, 0xDB, 0xD7, + 0x21, 0xE5, 0x6B, 0xA7, 0x39, 0x13, 0xDD, 0xE0, 0x16, 0xA5, 0x36, 0xEB, 0x02, 0xE7, 0xFC, 0xFD, + 0x9B, 0xB7, 0x87, 0xC3, 0xCD, 0x66, 0xDD, 0x6C, 0x77, 0xED, 0x30, 0xCC, 0x2E, 0x38, 0x08, 0x53, + 0x21, 0xC4, 0x38, 0x1B, 0x00, 0x21, 0x40, 0xD8, 0x19, 0x4F, 0x39, 0x4D, 0xC1, 0x57, 0x45, 0x25, + 0x45, 0x05, 0x11, 0xE1, 0x82, 0x3B, 0x1F, 0x12, 0xC8, 0x77, 0x37, 0x1B, 0x97, 0x12, 0x13, 0x54, + 0x14, 0x5C, 0x08, 0xCE, 0x38, 0xED, 0xBB, 0xE1, 0xD2, 0x8D, 0xA7, 0x6E, 0x08, 0xD1, 0x3F, 0xDC, + 0x6D, 0xAA, 0x42, 0x9C, 0xAF, 0x03, 0xC4, 0x70, 0x98, 0x96, 0xCB, 0x75, 0xB4, 0xCA, 0x37, 0x65, + 0xB1, 0xAA, 0xEB, 0x9C, 0x41, 0x3F, 0x2D, 0x31, 0xE5, 0xCF, 0x4F, 0xA7, 0x41, 0xE9, 0xD3, 0x79, + 0x9A, 0x95, 0x49, 0x00, 0xD4, 0x75, 0x91, 0x73, 0x56, 0xDA, 0x14, 0xFB, 0x09, 0x8A, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x18, 0x67, 0x66, 0x35, 0x3B, 0xE7, 0x57, 0xAB, 0xAA, 0xAE, + 0x4B, 0xE7, 0xFC, 0xA5, 0x1B, 0x42, 0xF0, 0x00, 0x82, 0xF5, 0xBA, 0xF4, 0x21, 0x21, 0x80, 0xCA, + 0x42, 0xCC, 0x8B, 0xDA, 0x6E, 0xDB, 0x18, 0xC2, 0xF1, 0xD8, 0xC7, 0x0C, 0x28, 0xA3, 0xA7, 0xCB, + 0xB5, 0x28, 0x64, 0x4C, 0xC1, 0x85, 0x20, 0x4A, 0xB6, 0x3B, 0x6C, 0x79, 0x21, 0x98, 0xE0, 0x37, + 0x87, 0x6D, 0x5D, 0x16, 0x65, 0x59, 0x96, 0x65, 0x49, 0x05, 0x3F, 0x5D, 0x06, 0x42, 0xA8, 0xB1, + 0x8E, 0x33, 0xAE, 0xB5, 0x31, 0xDA, 0x50, 0x84, 0x9D, 0x8B, 0xD6, 0x04, 0x2E, 0x84, 0x60, 0x9C, + 0x51, 0x76, 0xBA, 0x4E, 0x2F, 0xA7, 0x73, 0xDB, 0x36, 0x29, 0x84, 0x94, 0x53, 0x5D, 0x0B, 0xE3, + 0x03, 0x21, 0x38, 0xC5, 0x84, 0xDB, 0xB2, 0x9E, 0x95, 0xE9, 0x26, 0x45, 0xB9, 0xC8, 0x10, 0x66, + 0x00, 0xC6, 0x69, 0x68, 0x57, 0x8D, 0x5A, 0xB4, 0xB5, 0xD6, 0x47, 0x4F, 0x09, 0x89, 0x31, 0x5A, + 0x6B, 0x11, 0xC6, 0xC6, 0x7A, 0x98, 0xC1, 0xCD, 0xBE, 0x81, 0x08, 0x38, 0xEB, 0x01, 0xC8, 0xDD, + 0x30, 0x7E, 0xF8, 0xF2, 0xF2, 0x74, 0x7C, 0x55, 0x66, 0xBE, 0x76, 0x83, 0xB5, 0x21, 0xF8, 0x9C, + 0x00, 0x9C, 0x16, 0xF3, 0xF2, 0x32, 0x84, 0x10, 0xA6, 0x59, 0x19, 0xED, 0x7D, 0xCA, 0xDA, 0xB8, + 0x9C, 0xE0, 0x3C, 0xCD, 0x00, 0x00, 0x6D, 0x93, 0x77, 0x81, 0x0B, 0x5A, 0x16, 0xFC, 0xF1, 0xF1, + 0xAE, 0x59, 0x6D, 0x62, 0xC8, 0x39, 0x26, 0x00, 0x72, 0x53, 0x56, 0x98, 0x50, 0x59, 0xC8, 0x69, + 0x32, 0x2E, 0x04, 0xAD, 0x74, 0x55, 0x49, 0x4C, 0xA8, 0xF3, 0xDE, 0x07, 0xA7, 0xB4, 0x02, 0x39, + 0xDD, 0x3F, 0xEC, 0x05, 0xA7, 0x84, 0xC1, 0x6B, 0x37, 0x0C, 0xDD, 0xEC, 0xBD, 0x8F, 0x31, 0x86, + 0x10, 0x01, 0x00, 0x8C, 0x91, 0x7E, 0x9C, 0xC6, 0x41, 0x51, 0x42, 0x94, 0x52, 0x31, 0x86, 0x77, + 0x6F, 0xEE, 0x94, 0x35, 0x93, 0x52, 0x39, 0x67, 0x08, 0x53, 0x25, 0xF1, 0x77, 0x77, 0x6B, 0xA3, + 0x67, 0x4C, 0xD0, 0x5F, 0x7F, 0xFC, 0xEE, 0xDD, 0xE3, 0x2D, 0x40, 0xA0, 0x6E, 0xCA, 0x9B, 0xC3, + 0x7A, 0xBB, 0x2E, 0xDF, 0xBE, 0x3D, 0x20, 0xC2, 0xF6, 0xFB, 0xF5, 0xFE, 0xB0, 0xAD, 0xEB, 0xB2, + 0x28, 0xC4, 0xAA, 0x29, 0xF4, 0x64, 0xE7, 0x29, 0xFA, 0xE0, 0x43, 0xF2, 0x31, 0x44, 0x1F, 0xD3, + 0xA4, 0x86, 0x6E, 0x9A, 0x23, 0x80, 0xCE, 0x85, 0xBB, 0xBB, 0x83, 0x0F, 0xEE, 0xDC, 0xF5, 0xC3, + 0x62, 0x84, 0x14, 0x00, 0xA2, 0x9C, 0xFC, 0x30, 0x8E, 0x2E, 0x84, 0x42, 0x16, 0x00, 0xD3, 0x7E, + 0x18, 0x0F, 0xDB, 0x86, 0x32, 0xF6, 0x7A, 0xBE, 0x96, 0x52, 0x52, 0x82, 0x37, 0xAB, 0xF6, 0xEF, + 0xEF, 0x3F, 0xDD, 0x1E, 0xB6, 0x8C, 0xD1, 0xCB, 0x79, 0xF4, 0x3E, 0x32, 0xC6, 0x32, 0xC8, 0xD6, + 0x38, 0x1F, 0x22, 0x00, 0x80, 0x60, 0x04, 0x31, 0xF4, 0xC6, 0xF8, 0x10, 0x97, 0x59, 0xE7, 0x0C, + 0xB4, 0x71, 0xDE, 0xBB, 0xDD, 0xB6, 0xC6, 0x28, 0x4B, 0x4E, 0x60, 0x4C, 0x95, 0xA4, 0xEB, 0x9A, + 0xDE, 0x6E, 0xDB, 0xBB, 0x7D, 0x43, 0x28, 0x20, 0x14, 0x07, 0x1F, 0x31, 0xC9, 0x8C, 0x41, 0x59, + 0x32, 0x26, 0x28, 0x21, 0x78, 0xBB, 0xAD, 0xB8, 0x60, 0x10, 0xA0, 0xA2, 0x28, 0x28, 0x25, 0x94, + 0x52, 0x21, 0xB8, 0x94, 0xEC, 0xF9, 0xEB, 0x89, 0x10, 0x9C, 0x33, 0x48, 0x29, 0xA7, 0x94, 0x33, + 0x00, 0x29, 0xA7, 0x14, 0x73, 0x08, 0x01, 0x62, 0xB8, 0x2C, 0xAA, 0xAC, 0xAA, 0x10, 0x22, 0x42, + 0x19, 0x82, 0x84, 0x40, 0xCE, 0x31, 0xD6, 0x4D, 0x6D, 0xBC, 0x63, 0x94, 0xD6, 0x55, 0x99, 0x53, + 0x82, 0x18, 0x2D, 0x5A, 0x43, 0x08, 0xDB, 0xB6, 0x11, 0x82, 0x42, 0x04, 0x18, 0xA7, 0x9C, 0xD3, + 0x71, 0x1C, 0x87, 0x71, 0xC4, 0x18, 0x23, 0x08, 0xAC, 0x77, 0x21, 0x86, 0x94, 0x12, 0x04, 0x30, + 0xE6, 0x04, 0x21, 0x74, 0x3E, 0x38, 0x1F, 0x28, 0x15, 0x20, 0x27, 0x6B, 0x14, 0x21, 0x4C, 0x16, + 0xB5, 0x52, 0x33, 0x04, 0x29, 0x04, 0x47, 0x99, 0xD0, 0x5A, 0x97, 0x05, 0xC5, 0x10, 0x51, 0xCA, + 0x31, 0x46, 0xCB, 0x32, 0x2F, 0xCB, 0x2C, 0x19, 0xFF, 0x7A, 0x3C, 0x87, 0x98, 0x38, 0xE3, 0x10, + 0x82, 0x18, 0xA3, 0x0F, 0x5E, 0x0A, 0x56, 0x08, 0xB6, 0x28, 0x1D, 0x62, 0x38, 0x5E, 0x7B, 0x6B, + 0xE3, 0xA2, 0x0D, 0x00, 0x80, 0x12, 0xDC, 0x0F, 0x43, 0xBB, 0xAA, 0x63, 0x8C, 0x82, 0x73, 0x02, + 0x91, 0xF1, 0x61, 0x9C, 0x4D, 0x4C, 0x29, 0xC4, 0x9C, 0x40, 0xB6, 0xD6, 0x57, 0x55, 0xDB, 0x75, + 0x97, 0xF5, 0xF6, 0x9E, 0xD0, 0xE2, 0xF7, 0xDF, 0x3F, 0x4A, 0x2E, 0x57, 0xEB, 0x52, 0x2D, 0x97, + 0xD3, 0xB5, 0x77, 0x21, 0x53, 0x0A, 0x7D, 0xC8, 0xCB, 0x92, 0xBC, 0x07, 0x18, 0x61, 0xEF, 0x01, + 0xC1, 0xA0, 0x92, 0x84, 0x60, 0x7A, 0xBC, 0x68, 0xA3, 0xB3, 0xF7, 0x68, 0x5C, 0x62, 0x51, 0x96, + 0x42, 0x34, 0xDA, 0xE6, 0x6E, 0xB6, 0x9F, 0x5E, 0x2F, 0x4F, 0xAF, 0xCF, 0x31, 0x25, 0x8C, 0x99, + 0x0B, 0x5E, 0x96, 0xE2, 0xDA, 0x2F, 0xB3, 0x0D, 0xDB, 0x6D, 0xB3, 0x5E, 0x8B, 0xD7, 0xEB, 0x79, + 0xB3, 0x6F, 0x17, 0xAD, 0x7F, 0xFD, 0xF0, 0xBC, 0xDF, 0xDF, 0x72, 0x88, 0x97, 0x6F, 0x7D, 0xE1, + 0x94, 0x08, 0x25, 0x55, 0x25, 0x19, 0x95, 0xDD, 0xA4, 0x73, 0x36, 0x97, 0xEB, 0xAB, 0x77, 0x00, + 0xE0, 0xE2, 0xD3, 0xD3, 0x05, 0x64, 0x58, 0x96, 0x42, 0x16, 0xEC, 0xF9, 0xB5, 0x2F, 0x8B, 0x02, + 0xC4, 0xE4, 0x42, 0x30, 0xDA, 0x81, 0x0C, 0xA4, 0x60, 0x14, 0xA1, 0x9C, 0x50, 0x59, 0x54, 0xC6, + 0xDA, 0x65, 0x36, 0x39, 0xC1, 0xE7, 0xAF, 0x57, 0x8C, 0xB0, 0xD1, 0xFE, 0xD3, 0xD7, 0xEB, 0xB2, + 0x18, 0x4C, 0x19, 0x15, 0x54, 0xD6, 0x85, 0xAC, 0x24, 0xC0, 0xF0, 0xD3, 0xE7, 0xD7, 0xD5, 0xAA, + 0x2C, 0x38, 0xED, 0xC7, 0xB9, 0xEB, 0x67, 0xEF, 0xE3, 0x38, 0xEB, 0xF3, 0x75, 0x2A, 0x4A, 0xC1, + 0x28, 0x7E, 0x3E, 0x1E, 0x9F, 0x5E, 0x07, 0x6B, 0xC3, 0xD3, 0xA9, 0x9B, 0xB5, 0x63, 0x8C, 0x85, + 0x98, 0xB5, 0x75, 0x10, 0xC2, 0x18, 0x22, 0xE3, 0xCC, 0x85, 0xA0, 0x16, 0x43, 0x28, 0x89, 0x31, + 0x8D, 0xE3, 0xDC, 0x75, 0x23, 0x80, 0x08, 0xE4, 0x8C, 0x31, 0x8E, 0x31, 0xE5, 0x98, 0x53, 0x4A, + 0x3E, 0xC4, 0x94, 0x01, 0xC8, 0x30, 0x86, 0xF8, 0xAD, 0x25, 0x1D, 0x63, 0x8C, 0x31, 0xA6, 0xF8, + 0xCD, 0x01, 0xCB, 0xED, 0xAA, 0x12, 0x82, 0x05, 0x1F, 0x72, 0x4C, 0x6A, 0x36, 0xDD, 0x75, 0xC8, + 0x20, 0x6F, 0xDB, 0x4D, 0x2D, 0x18, 0x82, 0xA0, 0xAA, 0x8A, 0x18, 0x3C, 0xA7, 0x44, 0x6B, 0x7B, + 0xBC, 0x8C, 0x20, 0x67, 0xCE, 0xD0, 0xA8, 0xB5, 0xF7, 0x11, 0x61, 0x3C, 0x2B, 0xBD, 0x6A, 0x8B, + 0x0C, 0x81, 0xF7, 0x7E, 0xBB, 0xAA, 0x4A, 0xC9, 0xCB, 0x4A, 0x52, 0x46, 0xAA, 0xBA, 0xD8, 0xB4, + 0xAB, 0x10, 0x12, 0xBE, 0xDD, 0xEF, 0x7D, 0x0C, 0xC6, 0x7A, 0x6D, 0x2D, 0x63, 0x0C, 0x02, 0xE0, + 0x9D, 0x33, 0xD6, 0xCE, 0xF3, 0x52, 0x96, 0x22, 0xE6, 0xA4, 0x94, 0xC5, 0x88, 0x86, 0x10, 0xCB, + 0xB2, 0x20, 0x84, 0x38, 0xEF, 0xC6, 0x59, 0x75, 0xDD, 0x64, 0xBD, 0x33, 0xD6, 0x61, 0x0A, 0x79, + 0x81, 0x7D, 0x74, 0xD7, 0x6E, 0x20, 0x88, 0x38, 0x97, 0x4E, 0xD7, 0x69, 0xD1, 0xBE, 0x1B, 0xE6, + 0xCB, 0x30, 0xBE, 0x9E, 0x3B, 0x63, 0x1D, 0x22, 0xC4, 0xDA, 0x40, 0x28, 0x8D, 0x29, 0xCA, 0x82, + 0x07, 0x00, 0x84, 0x94, 0x87, 0x9B, 0x36, 0xC5, 0x2C, 0x6B, 0x39, 0x4D, 0x36, 0x86, 0xA4, 0x8D, + 0x7B, 0x7A, 0x3A, 0x4E, 0x93, 0x02, 0x99, 0x18, 0x1B, 0x2E, 0xFD, 0xF0, 0xCB, 0xFB, 0xAF, 0xFD, + 0x30, 0x6B, 0x1D, 0x3E, 0x7D, 0x3A, 0x2E, 0xDA, 0x34, 0x4D, 0xA9, 0x94, 0xF6, 0x3E, 0x5C, 0xAE, + 0x7D, 0x86, 0x70, 0x98, 0xD5, 0x34, 0x2B, 0xC6, 0xA5, 0x5A, 0x74, 0xCA, 0xD9, 0x68, 0x67, 0x8C, + 0xA3, 0x8C, 0x2C, 0xB3, 0x12, 0x05, 0x4B, 0x31, 0x75, 0xC3, 0xE4, 0xBC, 0x47, 0x08, 0x11, 0x8A, + 0xB5, 0x35, 0x84, 0x62, 0xC9, 0xE0, 0xED, 0x56, 0x3C, 0xDE, 0xD6, 0x08, 0x3A, 0x29, 0xF0, 0x4F, + 0x3F, 0x7E, 0xDF, 0x16, 0xA5, 0x2C, 0x4A, 0x51, 0x15, 0x4C, 0x96, 0x43, 0x37, 0x6E, 0xB7, 0x35, + 0xE7, 0x52, 0x08, 0x59, 0x08, 0x09, 0x32, 0xA2, 0x8C, 0x2E, 0xD6, 0xBC, 0xBE, 0xF6, 0x8C, 0x15, + 0x43, 0xDF, 0x0F, 0x7A, 0x91, 0x3C, 0x69, 0x65, 0x65, 0x19, 0x30, 0xF1, 0x37, 0x87, 0xFB, 0xCD, + 0xA6, 0xDE, 0x6E, 0x57, 0x08, 0x21, 0x46, 0xF1, 0xED, 0x6E, 0xE5, 0x42, 0x0A, 0x29, 0x32, 0x42, + 0x16, 0x6D, 0x7C, 0x4C, 0x9C, 0x12, 0x90, 0x41, 0x82, 0x90, 0x0B, 0x51, 0x70, 0xF6, 0xFC, 0x72, + 0x0A, 0x21, 0xCE, 0xF3, 0xB2, 0x69, 0xDB, 0x8F, 0x5F, 0x5F, 0x5C, 0x08, 0x42, 0xC8, 0x71, 0x9C, + 0x31, 0xC6, 0x6D, 0x53, 0xCD, 0xD3, 0x82, 0x29, 0xC1, 0x14, 0x6B, 0x65, 0x62, 0x88, 0x18, 0x64, + 0x6F, 0x9C, 0xF3, 0xDE, 0xDB, 0xA0, 0x17, 0x83, 0x29, 0xAE, 0x1A, 0xB9, 0x6A, 0x64, 0x21, 0xE8, + 0x66, 0xD5, 0x4A, 0x81, 0xD7, 0x4D, 0xD9, 0x96, 0x94, 0x92, 0xB4, 0xDF, 0xAD, 0x72, 0x4E, 0xE3, + 0xB0, 0x74, 0x97, 0x31, 0x82, 0xD4, 0x5D, 0x26, 0x6D, 0xFC, 0x38, 0x28, 0x1F, 0x02, 0x65, 0x58, + 0x4A, 0x86, 0x29, 0x09, 0x19, 0x8C, 0xC3, 0x3C, 0x8C, 0x4A, 0x29, 0x8F, 0x08, 0x29, 0xEB, 0x02, + 0x63, 0xD4, 0xAE, 0xEB, 0x94, 0xD2, 0x30, 0xCE, 0x94, 0x90, 0xE0, 0xC3, 0x3C, 0x2F, 0x20, 0x03, + 0x84, 0xE1, 0xF5, 0x3A, 0x50, 0x82, 0xAD, 0xF3, 0x5A, 0x29, 0x63, 0x6C, 0x53, 0x17, 0xA7, 0x6E, + 0xE4, 0x52, 0x66, 0x98, 0x01, 0x48, 0x52, 0x4A, 0x4C, 0x28, 0xC2, 0xF0, 0x78, 0x3E, 0x43, 0x04, + 0xA5, 0xE4, 0x8C, 0x32, 0x21, 0x69, 0x51, 0x30, 0x42, 0x60, 0xD3, 0x54, 0x10, 0x61, 0x67, 0x03, + 0xC2, 0xD8, 0x3B, 0x17, 0x42, 0x40, 0x18, 0xA5, 0x9C, 0x30, 0x46, 0x10, 0x81, 0xFC, 0x0D, 0xAD, + 0xC2, 0x28, 0xE7, 0x94, 0x41, 0xCA, 0x20, 0x53, 0xC6, 0x30, 0x46, 0x29, 0x58, 0xE7, 0xDD, 0xDD, + 0xDD, 0x77, 0x00, 0xA4, 0x14, 0xFD, 0xAA, 0xE2, 0xFB, 0x55, 0xB5, 0x5B, 0x55, 0x4A, 0xA9, 0xE3, + 0xE5, 0x1A, 0x53, 0x0C, 0xC1, 0x8F, 0x8B, 0x02, 0x00, 0x62, 0x8C, 0x72, 0xCE, 0x5C, 0x14, 0x08, + 0x21, 0x63, 0x6D, 0xCE, 0x20, 0xE5, 0x84, 0x10, 0xD0, 0xD6, 0x61, 0x42, 0x16, 0x65, 0x18, 0x21, + 0x6D, 0x83, 0x62, 0x0A, 0xDE, 0xE5, 0x10, 0x03, 0xA3, 0x24, 0x84, 0x04, 0x73, 0x0E, 0xD1, 0x59, + 0x9F, 0x00, 0x00, 0xD6, 0xF9, 0x18, 0x53, 0x59, 0xB6, 0x88, 0xF2, 0xED, 0x8A, 0x46, 0xFD, 0x9A, + 0x12, 0x05, 0x19, 0x09, 0x16, 0x63, 0xF4, 0x84, 0xC9, 0x69, 0xF1, 0xD6, 0x26, 0x63, 0x72, 0x8C, + 0x10, 0x61, 0x08, 0x51, 0x06, 0x39, 0xC7, 0x94, 0x01, 0x44, 0x5D, 0x6F, 0xAA, 0x42, 0x70, 0x46, + 0xE7, 0xC9, 0xEC, 0xB7, 0x35, 0x25, 0x04, 0x80, 0xAC, 0xB4, 0x8D, 0x90, 0x32, 0x06, 0x31, 0x8A, + 0x9C, 0x4B, 0x63, 0xB5, 0xF3, 0xC6, 0x79, 0xDF, 0xAE, 0xDA, 0x87, 0x9B, 0xF6, 0x7C, 0x1E, 0xC6, + 0x79, 0xFA, 0xFC, 0xF5, 0x92, 0x23, 0xFA, 0xF2, 0xF5, 0x24, 0x8B, 0x3A, 0x3A, 0x9F, 0x62, 0x82, + 0x18, 0xF6, 0xFD, 0x92, 0x21, 0x0C, 0x01, 0x60, 0x94, 0x27, 0x15, 0xA6, 0x79, 0xA4, 0x94, 0xED, + 0xDB, 0x0A, 0x60, 0x3A, 0x2B, 0xC7, 0x28, 0xA5, 0x84, 0x28, 0xAD, 0x63, 0x8C, 0x7F, 0xFC, 0xC3, + 0x1B, 0xA5, 0xEC, 0xDF, 0x7F, 0xFB, 0x92, 0x01, 0x24, 0x84, 0xDE, 0xEE, 0x37, 0xAB, 0x75, 0x93, + 0x42, 0x8C, 0x11, 0x7E, 0xFE, 0x7A, 0x7C, 0x7A, 0xBD, 0x18, 0x1B, 0x8D, 0xB6, 0xE7, 0x4B, 0xD7, + 0x8F, 0xDA, 0xDA, 0xAC, 0x8C, 0x25, 0x0C, 0x2D, 0x8B, 0x7E, 0x3D, 0xF6, 0x2F, 0x2F, 0x3D, 0x65, + 0x9C, 0x12, 0xA4, 0x94, 0xFD, 0xC3, 0x1F, 0xDF, 0x2D, 0xD3, 0xF2, 0x72, 0xBC, 0x5A, 0x17, 0x62, + 0x4C, 0x21, 0x24, 0x48, 0x10, 0x63, 0xF4, 0xE3, 0xE7, 0xD7, 0x7E, 0x34, 0x92, 0x0B, 0xB5, 0xA8, + 0xC5, 0xB8, 0xB6, 0xAE, 0xBD, 0x73, 0xE7, 0x6E, 0x19, 0x47, 0x43, 0x30, 0x0E, 0x21, 0x70, 0x82, + 0xB9, 0x60, 0xF3, 0xB4, 0xF8, 0x10, 0x21, 0x42, 0xF9, 0xFF, 0x4F, 0x57, 0x29, 0x45, 0xC2, 0x30, + 0xC1, 0xD8, 0xFB, 0xA8, 0xB5, 0xA5, 0x0C, 0xA7, 0x0C, 0x95, 0xB1, 0xDA, 0x1A, 0xC1, 0xB9, 0xB1, + 0xD6, 0x18, 0x67, 0x8D, 0x6D, 0xDB, 0x42, 0x08, 0x2C, 0x39, 0x9B, 0xE6, 0x59, 0x2B, 0x37, 0x8F, + 0x6E, 0x9A, 0xF5, 0x38, 0x2D, 0xE3, 0xBC, 0x40, 0x00, 0x0A, 0x0A, 0x97, 0xA9, 0x8B, 0x31, 0xCF, + 0xB3, 0xAB, 0xAB, 0xDA, 0xB8, 0xA0, 0xAD, 0xC5, 0x04, 0x23, 0x08, 0x27, 0x3D, 0x12, 0x8A, 0x7E, + 0x78, 0xFB, 0xB6, 0xA9, 0xAA, 0x42, 0xB2, 0xB7, 0xF7, 0x07, 0xE7, 0x52, 0x53, 0xD5, 0x65, 0x21, + 0x73, 0x0A, 0x31, 0xA6, 0x69, 0xD6, 0x00, 0xA6, 0x71, 0xD2, 0x4D, 0x53, 0xE2, 0xFB, 0xC3, 0x76, + 0x31, 0x66, 0xB5, 0xAA, 0xB4, 0x71, 0x04, 0x63, 0x84, 0x50, 0x06, 0x79, 0x1A, 0x47, 0xC6, 0x68, + 0x59, 0x14, 0x09, 0x80, 0x71, 0x50, 0xD3, 0xA2, 0x65, 0x51, 0x3B, 0x17, 0x86, 0x61, 0xCC, 0x00, + 0xF8, 0x10, 0xBA, 0xEB, 0x68, 0xAC, 0x93, 0xA5, 0x34, 0xDE, 0x43, 0x9C, 0x53, 0x8C, 0x5C, 0x88, + 0x5A, 0x36, 0xCE, 0xA5, 0xCF, 0xAF, 0xAF, 0x19, 0xE4, 0x94, 0x63, 0x3F, 0xCE, 0x29, 0xE5, 0x9C, + 0xF3, 0xA8, 0x8C, 0x75, 0x5E, 0x29, 0xF3, 0xE1, 0xD3, 0xD3, 0xF3, 0xD3, 0xB9, 0xA8, 0x8A, 0xE0, + 0xBC, 0x52, 0xD6, 0xDA, 0x30, 0x0E, 0x3A, 0xE7, 0x1C, 0xA3, 0xCB, 0x31, 0xAE, 0x76, 0x6D, 0x0C, + 0x99, 0x11, 0x96, 0x01, 0x48, 0x31, 0x7B, 0x1F, 0x8B, 0x82, 0x51, 0x86, 0x5E, 0x5E, 0xCE, 0xF7, + 0x0F, 0x37, 0xCE, 0xF8, 0x9C, 0x53, 0xB3, 0xAE, 0xD7, 0xEB, 0x3A, 0x84, 0xE0, 0x43, 0xB4, 0xCE, + 0x07, 0xEF, 0xEB, 0x55, 0x75, 0x7A, 0xED, 0x9C, 0x0F, 0x39, 0x25, 0xE7, 0x1C, 0x24, 0x38, 0xC3, + 0xCC, 0x39, 0x59, 0x66, 0x57, 0x55, 0x25, 0xCC, 0x71, 0xB5, 0x2A, 0x42, 0x48, 0x9B, 0xA6, 0x09, + 0xDE, 0x11, 0x04, 0xFB, 0x59, 0xF7, 0xA3, 0xC2, 0x98, 0xA1, 0xCC, 0xC7, 0xC1, 0x7C, 0xFC, 0x72, + 0x8E, 0x19, 0xF8, 0x10, 0xFB, 0x61, 0xD2, 0xCA, 0x3F, 0x3D, 0x5F, 0x94, 0xD2, 0x5F, 0x3E, 0x5F, + 0x17, 0x85, 0x8C, 0x57, 0xCA, 0x85, 0x65, 0x36, 0x31, 0xF8, 0x61, 0x9E, 0x3F, 0xBF, 0x5E, 0x5D, + 0x08, 0x4F, 0xC7, 0x59, 0x69, 0x47, 0x41, 0x51, 0x0B, 0xF9, 0xCB, 0x6F, 0x9F, 0x97, 0x45, 0xE5, + 0x94, 0x21, 0x84, 0x4D, 0xC1, 0x09, 0xA5, 0x55, 0x29, 0x61, 0xF6, 0xFD, 0x68, 0x4A, 0x29, 0x30, + 0x40, 0xD7, 0x61, 0x7A, 0xF7, 0xDD, 0x9B, 0x42, 0xD2, 0x10, 0xCC, 0x66, 0xD7, 0x70, 0x41, 0x64, + 0x51, 0xEC, 0x0E, 0xEB, 0x94, 0x7D, 0xDD, 0x14, 0xD3, 0xA4, 0x40, 0xCA, 0xE3, 0xA4, 0x00, 0xC8, + 0x10, 0xC1, 0x6F, 0x9F, 0xA4, 0xD6, 0x95, 0x2C, 0x0A, 0x3E, 0x8D, 0xCA, 0x85, 0xE8, 0x43, 0x1A, + 0xC7, 0xC5, 0x87, 0xE4, 0xAD, 0x77, 0xCE, 0x19, 0xE3, 0x86, 0xC1, 0x62, 0x8C, 0x5F, 0xCF, 0x83, + 0xF3, 0x3E, 0xC5, 0xA8, 0x9D, 0xF7, 0x31, 0xC5, 0x08, 0x42, 0xCA, 0x80, 0x62, 0x6B, 0x5D, 0x77, + 0x5D, 0x5C, 0x48, 0xD6, 0x87, 0x61, 0x58, 0xBA, 0x6E, 0xBA, 0x9E, 0xA7, 0x0C, 0x61, 0x30, 0x2E, + 0xA6, 0x94, 0x00, 0x98, 0x95, 0x41, 0x14, 0x59, 0xEB, 0x6F, 0x1F, 0x6E, 0x11, 0x82, 0xF5, 0xAA, + 0xDE, 0xED, 0x37, 0x9B, 0x6D, 0xDB, 0xB4, 0x35, 0x00, 0x70, 0x1C, 0x67, 0x98, 0x01, 0x17, 0xAC, + 0x92, 0xF2, 0x74, 0xED, 0x25, 0x67, 0x21, 0x44, 0x8C, 0x11, 0x40, 0xC8, 0x27, 0x64, 0x9D, 0xA7, + 0x94, 0x84, 0x10, 0x21, 0xA2, 0xCE, 0x98, 0xA6, 0x6E, 0x73, 0xCE, 0x21, 0x84, 0x94, 0xB2, 0xB3, + 0x8E, 0x52, 0x12, 0x7C, 0x60, 0x5C, 0xF8, 0x90, 0xD5, 0xA2, 0x63, 0x8C, 0x29, 0x65, 0x00, 0x33, + 0xC6, 0x14, 0x42, 0x48, 0x08, 0x26, 0x18, 0x21, 0x04, 0x52, 0xCA, 0x52, 0x72, 0x00, 0x72, 0xDB, + 0x14, 0xA5, 0x64, 0xCB, 0xA2, 0x04, 0x23, 0x31, 0xB8, 0x94, 0x81, 0x14, 0x32, 0xDA, 0xB9, 0x2C, + 0x98, 0xA0, 0x6C, 0xBB, 0xAE, 0x31, 0x04, 0x2F, 0xA7, 0x6E, 0x5A, 0x94, 0xE0, 0x9C, 0x50, 0xDC, + 0x0D, 0x73, 0x59, 0x14, 0x92, 0x51, 0x6D, 0xED, 0xA2, 0x96, 0x14, 0x83, 0x36, 0x1A, 0x63, 0xBC, + 0xAA, 0x2B, 0xEB, 0x9C, 0x94, 0x32, 0xE5, 0x4C, 0x30, 0x72, 0xCE, 0x41, 0x08, 0x05, 0x63, 0xD7, + 0x7E, 0x56, 0xD6, 0x53, 0x80, 0xB4, 0xF5, 0x4D, 0x4B, 0x0F, 0x3B, 0xFE, 0x7A, 0x31, 0x10, 0x00, + 0x08, 0x80, 0x64, 0xF8, 0x87, 0xC7, 0xED, 0x6C, 0x51, 0x81, 0x07, 0x81, 0x5E, 0xDB, 0xAA, 0x22, + 0x88, 0x54, 0x32, 0x17, 0x12, 0xC7, 0xEC, 0x4F, 0x9D, 0x41, 0x18, 0x03, 0x08, 0x11, 0x84, 0xC1, + 0x27, 0x1F, 0xB2, 0x33, 0x89, 0x33, 0x4A, 0x31, 0xF1, 0x11, 0xDF, 0xDF, 0xAD, 0x2A, 0x4E, 0xFE, + 0xF1, 0x2F, 0x7F, 0x7A, 0xB8, 0xBB, 0x79, 0xF7, 0x78, 0x7F, 0xD8, 0x6D, 0xDA, 0xA6, 0x79, 0x7B, + 0xBF, 0x7B, 0x7B, 0x7F, 0x38, 0xB4, 0x1B, 0x2E, 0xA4, 0x36, 0xE1, 0x74, 0x1E, 0xDA, 0xAA, 0x41, + 0x10, 0x7F, 0x7D, 0x7A, 0x7D, 0x3D, 0x4D, 0xC7, 0xEB, 0xB4, 0xDF, 0xDD, 0x8C, 0xC3, 0xB4, 0x5E, + 0x55, 0x9B, 0xCD, 0x9A, 0x11, 0x52, 0x95, 0xD2, 0x87, 0x8C, 0x08, 0x9E, 0x66, 0xDB, 0xF5, 0x0B, + 0x97, 0xEC, 0x32, 0x1B, 0xAF, 0x15, 0x86, 0xFE, 0x3A, 0x4E, 0xE7, 0x73, 0x97, 0x72, 0xF0, 0x21, + 0xC5, 0xE8, 0x8C, 0xB3, 0x18, 0x93, 0xAA, 0x92, 0x54, 0x30, 0x21, 0xC5, 0xE5, 0x3A, 0x60, 0x84, + 0xDA, 0xBA, 0xCC, 0x39, 0x2B, 0xAB, 0x5F, 0x5F, 0xCF, 0x19, 0x64, 0x6D, 0x1C, 0xA3, 0x38, 0xF8, + 0x18, 0x52, 0x2E, 0x8B, 0x72, 0x98, 0xA6, 0xB6, 0xA9, 0xEA, 0xAA, 0x70, 0xD6, 0x0D, 0x93, 0xBA, + 0xF6, 0x8A, 0x12, 0x8A, 0x11, 0xDA, 0x6E, 0xD6, 0xCE, 0xFA, 0xA2, 0x92, 0xC3, 0x38, 0x5B, 0xAB, + 0x19, 0x43, 0xD3, 0x6C, 0xCA, 0x92, 0x53, 0x8C, 0xAD, 0xCD, 0x42, 0xCA, 0x94, 0x82, 0xD6, 0x16, + 0x00, 0xB4, 0x6D, 0x5B, 0xEB, 0xF3, 0xF1, 0xDA, 0x39, 0xE7, 0x01, 0x00, 0x8C, 0x12, 0x82, 0x61, + 0x48, 0xA9, 0x2C, 0x8B, 0x14, 0x23, 0xC1, 0x24, 0xE7, 0x1C, 0x43, 0x62, 0x94, 0x22, 0x0C, 0x25, + 0x25, 0xAB, 0xBA, 0x38, 0xF7, 0x63, 0xCC, 0xA9, 0xA9, 0x1B, 0x63, 0xCD, 0x3C, 0x4F, 0x8C, 0x71, + 0xE7, 0xC2, 0xAC, 0x94, 0x8F, 0x51, 0x4A, 0x2A, 0x24, 0x65, 0x38, 0x48, 0x0A, 0x86, 0x39, 0x58, + 0xE3, 0x87, 0x59, 0xC7, 0x14, 0x09, 0x41, 0x94, 0xC0, 0x55, 0x53, 0x2C, 0x4A, 0x0F, 0x93, 0xCB, + 0x09, 0xC8, 0xB2, 0x7C, 0xBD, 0x2E, 0xCE, 0xE7, 0xF5, 0xA6, 0xD1, 0xDA, 0xCD, 0xCA, 0xDC, 0x6C, + 0x36, 0x3F, 0xFF, 0xF0, 0x27, 0x8C, 0x0A, 0x21, 0x24, 0xA5, 0x0C, 0x23, 0x26, 0x44, 0x55, 0x88, + 0x92, 0x73, 0x9E, 0x32, 0xB8, 0xBD, 0xDD, 0x59, 0x17, 0xC7, 0x71, 0x5A, 0x8C, 0x35, 0x2E, 0xE0, + 0x52, 0x0A, 0xEB, 0x82, 0xF7, 0xBE, 0x2C, 0xE5, 0xA2, 0xCC, 0xA5, 0xEB, 0xA6, 0x69, 0xC8, 0x10, + 0x16, 0xB2, 0x1A, 0xA6, 0xD1, 0x5B, 0x3F, 0xCE, 0x93, 0x90, 0x0C, 0x61, 0x32, 0x4C, 0x43, 0x88, + 0x3E, 0x82, 0x44, 0x29, 0xC9, 0x09, 0xB4, 0x4D, 0x19, 0x63, 0x38, 0x9D, 0x7A, 0x6B, 0x5D, 0x4A, + 0x09, 0x02, 0xBC, 0xA8, 0x48, 0x09, 0x5D, 0xAD, 0x6B, 0xE3, 0xBC, 0xCF, 0xD9, 0x79, 0x3F, 0x4D, + 0x0B, 0x26, 0xDC, 0x58, 0xAD, 0x94, 0x31, 0xDA, 0x2A, 0xA5, 0x43, 0xCA, 0xDE, 0xC5, 0xD3, 0xA9, + 0x5B, 0x94, 0x4D, 0x31, 0x85, 0x10, 0x52, 0x8A, 0xD6, 0x58, 0x63, 0xC3, 0xB2, 0x98, 0xE0, 0x43, + 0x3F, 0xCE, 0x55, 0x5D, 0x61, 0x88, 0xB6, 0x9B, 0x7A, 0xB7, 0xAE, 0xDF, 0xBD, 0xDD, 0x5A, 0xED, + 0x2E, 0xC3, 0x74, 0xB9, 0xF6, 0xD3, 0xAC, 0x10, 0xC2, 0x4A, 0x59, 0x80, 0xA0, 0x56, 0x9A, 0x09, + 0xEE, 0x5D, 0x38, 0x9F, 0xFB, 0x94, 0x93, 0xD1, 0x26, 0x04, 0xB7, 0xDD, 0xDD, 0x10, 0x26, 0x41, + 0x74, 0x37, 0x87, 0xED, 0x3F, 0xFC, 0xE9, 0xFB, 0xA6, 0xAE, 0x0F, 0xB7, 0xEB, 0xB7, 0x6F, 0x6E, + 0xA3, 0x87, 0x10, 0x30, 0xA5, 0xFC, 0x34, 0xDB, 0x61, 0xD2, 0x8B, 0x4A, 0xCF, 0xC7, 0x69, 0x99, + 0xE3, 0x6E, 0xD5, 0xCE, 0xCE, 0x4F, 0xB3, 0xA1, 0x8C, 0xEE, 0x6F, 0x76, 0x9F, 0xBF, 0x5C, 0xFA, + 0x69, 0xC6, 0x14, 0x8E, 0x2A, 0x68, 0x93, 0xAC, 0xD3, 0x00, 0x62, 0x18, 0x53, 0x21, 0xD8, 0x4B, + 0xB7, 0x58, 0x1B, 0x32, 0x20, 0x31, 0x82, 0x0C, 0xE8, 0x6E, 0x55, 0x75, 0x57, 0xF5, 0x7A, 0x1E, + 0x0F, 0x9B, 0x56, 0xCF, 0x33, 0xA3, 0x59, 0x19, 0xEF, 0x9C, 0xCF, 0x29, 0x5A, 0x9F, 0xBD, 0x8F, + 0x29, 0x26, 0x00, 0x41, 0x55, 0x88, 0x87, 0xFB, 0xCD, 0xCD, 0x4D, 0xBD, 0xBF, 0x6B, 0x9B, 0x4D, + 0xF3, 0xE6, 0xBB, 0x87, 0xED, 0x61, 0x2D, 0x4B, 0xF1, 0xF6, 0xF1, 0xE6, 0xE6, 0x66, 0x7B, 0x73, + 0xBB, 0xBA, 0xBB, 0x5B, 0x13, 0x8C, 0xBC, 0x0B, 0x4A, 0x99, 0xED, 0xA6, 0xBC, 0xDF, 0x6F, 0xA6, + 0x79, 0x99, 0x17, 0x37, 0x2D, 0x1A, 0x42, 0xE0, 0x7C, 0x34, 0x26, 0xC4, 0x10, 0x09, 0xC1, 0x31, + 0x26, 0xCE, 0x29, 0x61, 0x14, 0x61, 0x78, 0xBE, 0xF4, 0x97, 0xEB, 0xAC, 0x8D, 0x83, 0x08, 0xCD, + 0xCA, 0x3F, 0x9F, 0xFA, 0x61, 0xD2, 0x5A, 0xB9, 0xF3, 0x79, 0x5E, 0x94, 0x45, 0x18, 0xC5, 0x94, + 0xF4, 0x62, 0x21, 0x44, 0x3E, 0xA4, 0x9C, 0x22, 0x21, 0x38, 0xFA, 0x14, 0x7C, 0xA0, 0x9C, 0x84, + 0x10, 0x43, 0x4C, 0xC3, 0x30, 0x41, 0x88, 0x30, 0x21, 0xFD, 0x30, 0x82, 0x0C, 0x39, 0xA7, 0x87, + 0x9B, 0x1D, 0xA5, 0xB8, 0xEB, 0x47, 0x4E, 0x48, 0xCA, 0xC9, 0x87, 0x88, 0x10, 0x0C, 0x31, 0x02, + 0x00, 0x64, 0xC1, 0xA7, 0x45, 0x87, 0x10, 0x8D, 0xB1, 0x29, 0x01, 0x67, 0xBD, 0x60, 0x5C, 0xF0, + 0xB2, 0x1F, 0xFA, 0x7E, 0x18, 0x63, 0xCC, 0x10, 0x82, 0x94, 0x30, 0xA5, 0x4C, 0xF0, 0xE2, 0xEB, + 0xD7, 0xE7, 0x10, 0x02, 0x67, 0x2C, 0xE5, 0x8C, 0x10, 0x86, 0x10, 0x10, 0x4C, 0xBC, 0xF7, 0x00, + 0x00, 0x42, 0x48, 0x4C, 0x19, 0x21, 0x08, 0x00, 0xD8, 0x6E, 0xEA, 0xBA, 0x12, 0xA5, 0xA0, 0xCE, + 0x85, 0x92, 0x73, 0x82, 0x31, 0x01, 0xC1, 0x7B, 0x13, 0x42, 0xD2, 0x1E, 0x14, 0x52, 0x1A, 0xE7, + 0xFB, 0x49, 0x3D, 0xDC, 0xEE, 0xBD, 0x0F, 0x04, 0xE3, 0xDD, 0x6E, 0xD5, 0x36, 0x55, 0x8A, 0x31, + 0x86, 0x88, 0x11, 0x4A, 0x29, 0x41, 0x08, 0x73, 0x06, 0xF1, 0xDB, 0x26, 0x44, 0x4E, 0xF3, 0xB2, + 0x50, 0x82, 0x62, 0x0C, 0xD6, 0x05, 0x0C, 0xC9, 0x69, 0x98, 0x00, 0x00, 0xAB, 0x5A, 0x50, 0x82, + 0x01, 0x89, 0x55, 0x49, 0xAD, 0xC9, 0x8C, 0x22, 0x63, 0xD3, 0x8F, 0x6F, 0xF7, 0x37, 0x87, 0xFD, + 0x32, 0x5F, 0x09, 0x58, 0xFE, 0xF8, 0xEE, 0x4F, 0x45, 0xB5, 0xDA, 0xAD, 0x2A, 0x4A, 0x79, 0x46, + 0xD8, 0x7A, 0xB4, 0x5B, 0xB7, 0xEB, 0x8A, 0x13, 0x9C, 0xAF, 0x57, 0x03, 0x00, 0xA0, 0x94, 0xB4, + 0x8D, 0x58, 0xD7, 0xAC, 0xAE, 0xE5, 0x6E, 0x53, 0xED, 0xDB, 0xF2, 0xFB, 0xC7, 0x37, 0xEB, 0xF5, + 0x1A, 0x21, 0x60, 0x8D, 0x85, 0x00, 0xE8, 0xD1, 0x30, 0x4A, 0x73, 0x4E, 0x8C, 0xD5, 0xAB, 0x76, + 0xDD, 0xB6, 0x75, 0x59, 0x16, 0xB7, 0xFB, 0xFD, 0x38, 0xF4, 0x82, 0x72, 0x4C, 0x88, 0x94, 0x75, + 0x3F, 0x0C, 0x08, 0x66, 0xC1, 0xD9, 0x64, 0xE6, 0x94, 0x03, 0x63, 0x66, 0x9A, 0x43, 0x0C, 0x71, + 0xDD, 0x96, 0x05, 0x27, 0x11, 0xE4, 0xE0, 0x5C, 0x21, 0x28, 0x23, 0xD9, 0xF8, 0xC4, 0x99, 0x34, + 0xCA, 0xFA, 0x10, 0x10, 0x86, 0x08, 0xE3, 0xF5, 0xAA, 0xFD, 0xF5, 0xFD, 0xF3, 0x38, 0x2D, 0xFB, + 0x7D, 0x5B, 0x48, 0x59, 0x0A, 0xD6, 0x36, 0xC5, 0xF5, 0x72, 0x89, 0xD1, 0xBD, 0x7B, 0x3C, 0xFC, + 0xF4, 0xFD, 0x9B, 0x79, 0x5E, 0xDE, 0xDC, 0xEF, 0x87, 0x71, 0x06, 0x10, 0xFE, 0xF0, 0xDD, 0xE3, + 0x2F, 0xEF, 0x3F, 0xFA, 0x10, 0x52, 0x4A, 0x10, 0x91, 0xA6, 0x5D, 0x2F, 0x6A, 0xF2, 0xD1, 0x95, + 0x75, 0x09, 0x21, 0xBC, 0x5E, 0x87, 0xA2, 0x10, 0x52, 0x92, 0x9B, 0x9B, 0xCD, 0xE1, 0x66, 0xBF, + 0x5A, 0x37, 0x6D, 0x5B, 0x8A, 0x42, 0x18, 0xEB, 0x11, 0xCA, 0xE3, 0x38, 0x75, 0xC3, 0xB2, 0x5D, + 0xD5, 0x9C, 0x93, 0xCB, 0xB8, 0x0C, 0xB3, 0xB2, 0x56, 0x13, 0x4C, 0x39, 0xA5, 0x10, 0x24, 0xC6, + 0x05, 0xCC, 0x89, 0x62, 0x72, 0xB9, 0x8E, 0x8B, 0x36, 0x75, 0x59, 0x16, 0x42, 0x80, 0x14, 0x6F, + 0xD6, 0xD5, 0x75, 0x50, 0x00, 0x42, 0x63, 0x2D, 0xC6, 0xD4, 0x39, 0xFB, 0x6D, 0x9D, 0x9E, 0x60, + 0x08, 0x20, 0x20, 0x08, 0x73, 0x41, 0xC6, 0xC5, 0x2C, 0x8B, 0xF5, 0xDE, 0xC7, 0x04, 0x31, 0x84, + 0x31, 0x65, 0x42, 0x18, 0x41, 0x50, 0x72, 0x5A, 0x95, 0x85, 0xB5, 0x3E, 0x24, 0x34, 0xCE, 0x66, + 0xD1, 0x66, 0x54, 0xC6, 0xDA, 0x28, 0xB9, 0x30, 0x46, 0x79, 0x9F, 0x7F, 0x7A, 0xFB, 0x96, 0x20, + 0x3A, 0x2B, 0x73, 0xE9, 0x26, 0xE7, 0xC3, 0xB9, 0x1B, 0x7E, 0xFB, 0xFC, 0x72, 0x19, 0x96, 0x4B, + 0x3F, 0x64, 0x04, 0x39, 0x17, 0x95, 0xAC, 0x10, 0x46, 0xB3, 0x32, 0x8B, 0x76, 0xB0, 0x2E, 0xEB, + 0xBA, 0x12, 0x8C, 0x91, 0x9C, 0xD1, 0xB4, 0xD8, 0x65, 0x51, 0x45, 0x21, 0xAC, 0x33, 0x00, 0x20, + 0xC6, 0x88, 0xE4, 0xEC, 0xF5, 0x78, 0x6E, 0xDA, 0xBA, 0xA9, 0x2B, 0xC6, 0xD0, 0x38, 0x4E, 0x08, + 0x21, 0x84, 0x71, 0x8A, 0xD0, 0x3B, 0xDF, 0xAE, 0x0A, 0x00, 0x40, 0x4C, 0x81, 0x33, 0xC6, 0x18, + 0x0B, 0x3E, 0xE9, 0x59, 0x11, 0xC1, 0x30, 0x63, 0x29, 0x26, 0xA5, 0xD4, 0xE5, 0xDC, 0xAF, 0x57, + 0xFB, 0x79, 0x9E, 0xAC, 0x33, 0x37, 0xFB, 0xB5, 0x14, 0x12, 0x62, 0x7C, 0x3E, 0x77, 0xD7, 0xEE, + 0x8A, 0x31, 0xB9, 0xBF, 0xD9, 0xE7, 0x94, 0xAA, 0x5A, 0x10, 0x42, 0x40, 0xC4, 0xBB, 0xDD, 0xEA, + 0x7A, 0xBD, 0x3A, 0x17, 0x20, 0xA1, 0x8C, 0x90, 0xA6, 0x16, 0xF0, 0xDB, 0x70, 0x5D, 0xB4, 0xFF, + 0xFD, 0x6F, 0xBF, 0xD4, 0x4D, 0xC5, 0x08, 0xD3, 0xCA, 0x61, 0x82, 0x9A, 0xB6, 0x8C, 0x31, 0xA4, + 0x98, 0xA7, 0x59, 0xF7, 0xC3, 0x74, 0xD8, 0x35, 0x8C, 0x92, 0xAE, 0x9B, 0x6E, 0x1E, 0x7E, 0xF8, + 0xE7, 0x7F, 0xFA, 0xD3, 0xDD, 0x86, 0xFC, 0xCB, 0xBF, 0xFD, 0x7B, 0x21, 0x4B, 0xE7, 0x20, 0xC6, + 0x8E, 0x12, 0x04, 0x32, 0x9E, 0x16, 0xBB, 0xCC, 0x7A, 0x53, 0x4A, 0x88, 0xF1, 0xFF, 0xF5, 0x2F, + 0x7F, 0x53, 0xC6, 0x4A, 0x46, 0x7E, 0xFE, 0xFE, 0xFE, 0xEB, 0x45, 0xAD, 0xDA, 0x8A, 0x92, 0x2C, + 0x0B, 0xA1, 0x94, 0xBE, 0xBF, 0xDF, 0x65, 0x10, 0x52, 0x16, 0xF3, 0x34, 0xFC, 0xFE, 0xFB, 0xE7, + 0x9C, 0xD1, 0xB6, 0x95, 0x29, 0xE7, 0xCF, 0xAF, 0x5D, 0x0C, 0x29, 0xC6, 0x20, 0x38, 0x26, 0x98, + 0xAC, 0x9B, 0x02, 0x03, 0x48, 0x45, 0xD1, 0xD6, 0xF4, 0x72, 0x3E, 0x6D, 0xD6, 0xAD, 0xB6, 0xA9, + 0x1F, 0xA7, 0x3F, 0xFD, 0xF8, 0xF8, 0x70, 0xBF, 0x1B, 0xE7, 0xC5, 0xF9, 0x58, 0xB7, 0x75, 0xD7, + 0xF5, 0x85, 0x2C, 0x10, 0x00, 0x97, 0x7E, 0x98, 0x67, 0x0B, 0x31, 0xCE, 0x00, 0x62, 0x4C, 0xAC, + 0x31, 0x94, 0x90, 0xB2, 0xAE, 0x60, 0xF2, 0x6D, 0x53, 0x5A, 0x1F, 0x57, 0x05, 0xDF, 0xB5, 0xD5, + 0xBF, 0xFD, 0xFB, 0x07, 0xC0, 0xF0, 0x6F, 0x1F, 0x5E, 0x43, 0xF0, 0x43, 0xAF, 0x28, 0x86, 0x5C, + 0xD0, 0x10, 0xD2, 0x6E, 0x57, 0x53, 0xCE, 0xA6, 0x51, 0x7B, 0x17, 0x9C, 0x0B, 0x94, 0x62, 0xC6, + 0x88, 0xD5, 0xB6, 0x90, 0x62, 0x5A, 0x0C, 0x25, 0x48, 0x6B, 0x1B, 0x12, 0x28, 0x0B, 0x91, 0x01, + 0x80, 0x20, 0x8B, 0x82, 0x33, 0x41, 0x01, 0x84, 0x39, 0x65, 0x4A, 0x30, 0x46, 0x18, 0x20, 0x64, + 0xAD, 0xCF, 0x19, 0x58, 0xEB, 0x01, 0xC6, 0xCE, 0xF9, 0xA2, 0x90, 0x18, 0x23, 0xAD, 0x2D, 0x04, + 0x00, 0x21, 0x04, 0x53, 0x6C, 0x9B, 0x22, 0xC4, 0x34, 0xF7, 0x53, 0x37, 0xCC, 0xC6, 0xA5, 0x10, + 0x93, 0x64, 0x64, 0xD3, 0x56, 0xDA, 0xB9, 0x4B, 0x3F, 0x23, 0x8C, 0x41, 0x4E, 0x9C, 0x51, 0x84, + 0xF0, 0x7F, 0xFD, 0xCF, 0x3F, 0x77, 0x43, 0xA7, 0xCC, 0xD2, 0x75, 0x66, 0x5C, 0xDC, 0xA2, 0x74, + 0xCE, 0xB1, 0x2A, 0x4A, 0xC2, 0x58, 0xF0, 0xB6, 0x14, 0xCC, 0x87, 0xE4, 0x63, 0x8A, 0x31, 0x84, + 0x10, 0x01, 0x84, 0x39, 0x03, 0x8C, 0x60, 0xCC, 0x19, 0x64, 0x80, 0x50, 0x86, 0x10, 0x51, 0x82, + 0xF6, 0xFB, 0x66, 0xDF, 0x4A, 0x63, 0x73, 0x5D, 0x54, 0x2E, 0xE4, 0x65, 0xE8, 0x10, 0x46, 0xB3, + 0xC3, 0xB3, 0x0E, 0xFB, 0x4D, 0x9D, 0xA2, 0x4B, 0x21, 0x14, 0x85, 0x78, 0xFF, 0xF9, 0x49, 0x0A, + 0xB9, 0x5B, 0x37, 0xFD, 0x38, 0x0D, 0xC3, 0x88, 0x31, 0x46, 0x08, 0x3A, 0xEF, 0x21, 0x84, 0xC6, + 0x85, 0x4A, 0xCA, 0xBB, 0xC3, 0x5E, 0x0A, 0x81, 0x10, 0x86, 0x00, 0x22, 0x0C, 0x72, 0xB2, 0xCE, + 0x8E, 0x9F, 0x8E, 0xE3, 0x3C, 0xDB, 0x7F, 0xFE, 0xF9, 0x91, 0x60, 0x8B, 0x49, 0xC4, 0xD8, 0x9B, + 0x94, 0x5F, 0x4E, 0x3E, 0x46, 0x7C, 0x7F, 0xD8, 0x56, 0x3C, 0xDF, 0xAC, 0x6F, 0xAC, 0x4B, 0x52, + 0xC8, 0xE3, 0xE5, 0x92, 0x72, 0xE4, 0xA2, 0xC8, 0x08, 0x52, 0x4E, 0x09, 0x81, 0x98, 0x90, 0x14, + 0xD3, 0xE9, 0xDC, 0xA5, 0x9C, 0x29, 0x23, 0x20, 0x01, 0x6F, 0x16, 0xCE, 0x38, 0xCA, 0x01, 0x00, + 0xB0, 0xD9, 0xDD, 0x1E, 0x2F, 0x97, 0x79, 0x9E, 0x63, 0x86, 0x6D, 0x2B, 0x9B, 0xA2, 0xB8, 0x5E, + 0xF4, 0xDD, 0xE3, 0x21, 0x86, 0x18, 0x53, 0x4A, 0x29, 0xD5, 0x75, 0x2D, 0x24, 0x1F, 0x2E, 0x57, + 0x3D, 0x4D, 0x83, 0xC9, 0x19, 0xD2, 0x8F, 0x9F, 0x3F, 0x1F, 0xD6, 0xB2, 0xAA, 0x8B, 0xA7, 0xD3, + 0x85, 0x90, 0xFC, 0xF4, 0x34, 0x3D, 0xDC, 0xDC, 0x10, 0x18, 0x04, 0x83, 0x8C, 0xB3, 0xD9, 0x00, + 0x86, 0x42, 0x4A, 0x61, 0x52, 0xAA, 0x28, 0xDA, 0xA1, 0x37, 0x9C, 0xB3, 0x9B, 0xC3, 0x56, 0x6B, + 0x93, 0x52, 0xD2, 0x2E, 0xBE, 0x9E, 0xE7, 0xC3, 0xAE, 0xE1, 0x04, 0x70, 0xC1, 0x8E, 0xE7, 0x81, + 0x12, 0x52, 0x70, 0xC6, 0x38, 0x66, 0x18, 0xA7, 0x94, 0xF7, 0xFB, 0x03, 0x41, 0x68, 0x9C, 0xB4, + 0x8F, 0x09, 0x24, 0x8F, 0x29, 0xCA, 0x00, 0xFC, 0xF2, 0xFB, 0x57, 0xCE, 0xCB, 0x71, 0x59, 0x2E, + 0xD7, 0xCB, 0x6A, 0x55, 0xBD, 0x7B, 0xF7, 0xC6, 0x6A, 0x3B, 0x4D, 0xEA, 0xCD, 0xDD, 0xAE, 0x2E, + 0x79, 0x55, 0xC9, 0x18, 0x5D, 0x88, 0x5E, 0x94, 0x55, 0xCA, 0x28, 0x38, 0x1F, 0x53, 0xEC, 0xBB, + 0xEB, 0xE5, 0x75, 0xCC, 0x20, 0xF6, 0x93, 0x5A, 0xD5, 0x1B, 0x4C, 0xBE, 0xA1, 0x69, 0x14, 0xE4, + 0xF8, 0xDD, 0xE3, 0x0D, 0x2B, 0x85, 0x1A, 0x4C, 0x37, 0xCE, 0x4F, 0xCF, 0xD7, 0x61, 0x9C, 0x77, + 0xEB, 0x76, 0x98, 0x97, 0xBB, 0xDD, 0x1A, 0xE4, 0x1C, 0x52, 0xDE, 0x6D, 0x56, 0xFF, 0xF2, 0xB7, + 0x5F, 0x72, 0x86, 0xD6, 0x19, 0xC6, 0x78, 0x2D, 0x45, 0x4A, 0x39, 0xA6, 0x98, 0x72, 0x8E, 0xC9, + 0x71, 0x46, 0x2B, 0x21, 0x72, 0x4E, 0xCA, 0x04, 0x00, 0x60, 0x53, 0xD5, 0x85, 0x14, 0x5A, 0xCF, + 0x19, 0x78, 0x0C, 0xB1, 0x52, 0xAE, 0x69, 0x0A, 0x65, 0x9D, 0xB6, 0x51, 0x16, 0xC5, 0xB5, 0x5F, + 0xCA, 0x42, 0x52, 0x9C, 0x09, 0x44, 0x77, 0xDB, 0x4D, 0xCE, 0x59, 0xC8, 0x72, 0x18, 0x27, 0xCA, + 0x88, 0x32, 0xCE, 0xF8, 0x14, 0x62, 0x04, 0x20, 0x72, 0x46, 0x24, 0x17, 0x82, 0xF3, 0xCD, 0xAA, + 0x3A, 0x5D, 0x4E, 0xBF, 0x7D, 0x7A, 0x82, 0x77, 0x37, 0x07, 0xC9, 0x59, 0x8C, 0x61, 0x56, 0xC6, + 0x47, 0xE4, 0x9D, 0x5B, 0xAF, 0xAB, 0x6F, 0xBA, 0x16, 0xA5, 0x74, 0x18, 0x27, 0x63, 0x2C, 0x17, + 0xA2, 0x94, 0x05, 0xA3, 0x40, 0x29, 0x9D, 0x21, 0x52, 0x8B, 0xF9, 0x7F, 0x59, 0x7A, 0x8F, 0x25, + 0xCB, 0xB2, 0xEC, 0x4C, 0x6F, 0xEB, 0xBD, 0x8F, 0x3E, 0xE7, 0x4A, 0x77, 0x0F, 0xE1, 0x21, 0x32, + 0xB3, 0x2A, 0x4B, 0xA0, 0x0A, 0x20, 0x80, 0x26, 0x8D, 0x34, 0xA3, 0xF5, 0x94, 0xC3, 0x1E, 0x70, + 0xC6, 0x07, 0xE0, 0x43, 0xD2, 0x38, 0xE1, 0x80, 0x66, 0xB4, 0x46, 0xA3, 0x40, 0xA0, 0x80, 0x94, + 0x11, 0x19, 0x11, 0x2E, 0xAF, 0x3A, 0x72, 0x6B, 0xC1, 0x41, 0xF2, 0x29, 0xD6, 0xB2, 0x5F, 0x7C, + 0x3F, 0xC2, 0xD8, 0x79, 0x5F, 0xE4, 0x19, 0x82, 0x30, 0xCB, 0x99, 0xB7, 0xAE, 0x2A, 0x73, 0xA3, + 0xED, 0xA2, 0xB4, 0x10, 0x0C, 0x40, 0x88, 0x31, 0x9E, 0xA6, 0x85, 0x51, 0x66, 0x7D, 0x34, 0xC6, + 0x8B, 0x4C, 0x54, 0x85, 0x40, 0x00, 0x03, 0x00, 0x21, 0x00, 0x8C, 0x41, 0xC6, 0xB0, 0xF5, 0x60, + 0x9C, 0x97, 0xA2, 0xE4, 0xFF, 0xE9, 0x0F, 0x5F, 0x43, 0x48, 0x3E, 0xDE, 0x1F, 0x7E, 0xFA, 0xF0, + 0xB9, 0xAA, 0x8B, 0x32, 0xE3, 0x8B, 0xB4, 0xC3, 0x24, 0x73, 0x2E, 0x6E, 0x6E, 0xD6, 0x10, 0x86, + 0x61, 0x9A, 0xA5, 0xD2, 0x10, 0xE2, 0xAC, 0xC8, 0x30, 0x22, 0xE7, 0xC3, 0x89, 0x10, 0x1C, 0x63, + 0x04, 0x00, 0xD4, 0x75, 0x3E, 0x8C, 0xA3, 0xD2, 0x06, 0x44, 0xF0, 0x0F, 0x7F, 0xFA, 0xD3, 0xBB, + 0x3F, 0xFC, 0xC3, 0xBF, 0xFC, 0xD7, 0xFF, 0xE3, 0xDC, 0x1F, 0xB2, 0x62, 0x93, 0x82, 0x11, 0x14, + 0x02, 0x00, 0x10, 0x82, 0x3E, 0xA6, 0x32, 0x2F, 0x1A, 0xC1, 0x2F, 0xCA, 0x3E, 0x9E, 0x96, 0xBE, + 0x9F, 0x9D, 0x1C, 0xAC, 0xB1, 0xDD, 0xF6, 0xC5, 0xEB, 0x17, 0xDB, 0xE0, 0x35, 0xE3, 0x02, 0x82, + 0x84, 0x09, 0x12, 0x82, 0x41, 0x52, 0xC1, 0xD4, 0xFF, 0xFC, 0xE1, 0xDE, 0xF9, 0x18, 0xBC, 0xEB, + 0xFB, 0xE9, 0xD4, 0xCF, 0x31, 0xC2, 0x52, 0x90, 0xF5, 0xA6, 0xF6, 0x1E, 0x58, 0xA5, 0x6F, 0x6F, + 0xD6, 0x65, 0x55, 0x7E, 0xB8, 0x7F, 0x5A, 0x55, 0xA2, 0x2C, 0x0B, 0x6B, 0xDC, 0x7A, 0xD5, 0xBE, + 0x79, 0xB3, 0x9D, 0x67, 0x89, 0x29, 0x8E, 0x00, 0x00, 0x88, 0x01, 0x82, 0x63, 0xBF, 0x40, 0x04, + 0x2F, 0xE3, 0xF2, 0xF9, 0xF3, 0x31, 0x45, 0xF0, 0xEB, 0x36, 0x2A, 0xC2, 0x08, 0x01, 0x90, 0x09, + 0xE1, 0xB4, 0x2C, 0x72, 0x5E, 0x94, 0xD5, 0x6E, 0xDD, 0x22, 0x00, 0x5C, 0xF0, 0x59, 0x2E, 0xC6, + 0x69, 0xC1, 0x20, 0xA5, 0x90, 0x20, 0x4A, 0xC6, 0xD8, 0xB2, 0xCA, 0xEA, 0xAE, 0xBD, 0x5C, 0x86, + 0xA7, 0xA7, 0x8B, 0xF3, 0xDE, 0x3B, 0x0F, 0x21, 0xF6, 0xDE, 0x2A, 0x65, 0xFA, 0x41, 0x4B, 0x65, + 0x32, 0x41, 0x04, 0xE7, 0x00, 0xA0, 0xBA, 0xC9, 0x05, 0x23, 0x31, 0xFA, 0x2C, 0xE3, 0x79, 0x91, + 0x01, 0x90, 0x22, 0x00, 0x97, 0x7E, 0x0E, 0x2E, 0x26, 0x04, 0x8D, 0x73, 0x72, 0xB1, 0x10, 0x00, + 0x4C, 0xA9, 0x75, 0x1E, 0x83, 0xE4, 0x7C, 0x74, 0xCE, 0x13, 0xC6, 0x40, 0x4A, 0x0C, 0xC3, 0xAB, + 0xAB, 0x15, 0xA1, 0x64, 0xD5, 0x35, 0x1F, 0x7E, 0xFA, 0x72, 0xEE, 0x17, 0x08, 0x61, 0xC6, 0x28, + 0x82, 0x89, 0x30, 0xB6, 0x5A, 0x57, 0x18, 0xA3, 0xF5, 0xAA, 0x4A, 0x29, 0x20, 0x98, 0xD6, 0xEB, + 0x26, 0x86, 0x44, 0x09, 0x76, 0xCE, 0x3F, 0x1F, 0xFA, 0x51, 0xFA, 0xFB, 0xFB, 0xD3, 0xAA, 0x6D, + 0xB4, 0x92, 0xD3, 0xAC, 0x0F, 0xA7, 0x1E, 0x61, 0x1C, 0x12, 0xB4, 0xD6, 0x01, 0x10, 0x21, 0xC2, + 0x9C, 0x92, 0x6F, 0xBF, 0xDA, 0x26, 0x04, 0x86, 0x5E, 0x7A, 0xE7, 0x7F, 0xFA, 0x74, 0x84, 0x10, + 0xB6, 0x95, 0xD8, 0xAF, 0xAB, 0x32, 0x2F, 0xE7, 0xC5, 0x04, 0x1F, 0xEB, 0x9C, 0x46, 0x88, 0x74, + 0x60, 0x77, 0x4F, 0xCF, 0xFB, 0x6D, 0x47, 0x31, 0xD2, 0x52, 0x4A, 0xAD, 0x13, 0x44, 0x5A, 0x19, + 0x21, 0x84, 0x71, 0x66, 0x9A, 0x97, 0xFD, 0x7A, 0x85, 0x10, 0x7A, 0x3A, 0x9D, 0x76, 0xAB, 0x2E, + 0xE7, 0x3C, 0xCF, 0x72, 0x08, 0x51, 0x4C, 0x20, 0xCB, 0x72, 0x63, 0x2D, 0x42, 0x11, 0xE2, 0x65, + 0x5E, 0x46, 0xE7, 0x53, 0x57, 0xD4, 0x9B, 0x66, 0xFD, 0x74, 0x78, 0x94, 0x7A, 0xD1, 0xC1, 0x29, + 0x1F, 0x7C, 0x4C, 0x6D, 0x93, 0x21, 0x88, 0xFF, 0xF8, 0xF6, 0x36, 0xA7, 0x75, 0x08, 0xE9, 0xEE, + 0xF1, 0x71, 0x52, 0x2A, 0x01, 0xCC, 0x29, 0xF3, 0xC1, 0xF3, 0x8C, 0x86, 0xE8, 0xBA, 0x75, 0x6B, + 0x75, 0x70, 0xD6, 0x11, 0x02, 0x39, 0x63, 0x45, 0x2E, 0x70, 0x8A, 0x14, 0x23, 0xE3, 0xAD, 0xB5, + 0xE0, 0xFE, 0xE9, 0x74, 0xEC, 0x7B, 0x4C, 0x39, 0x22, 0x61, 0xBD, 0x2A, 0x72, 0x91, 0x3F, 0x3D, + 0xF6, 0xEF, 0x6E, 0xAF, 0xA7, 0x45, 0x36, 0xAB, 0x2E, 0x85, 0x50, 0x55, 0x05, 0xC2, 0x54, 0x4F, + 0x63, 0x9E, 0xE7, 0xF7, 0xC7, 0xE1, 0xF9, 0xE9, 0x29, 0xA5, 0xD0, 0xE4, 0x05, 0xC2, 0xC0, 0x85, + 0x40, 0x29, 0x26, 0x28, 0x51, 0x42, 0x60, 0xC4, 0xCA, 0x78, 0x6D, 0x6D, 0x4A, 0x10, 0x11, 0x47, + 0x19, 0x77, 0x21, 0xC4, 0x10, 0xC6, 0x8B, 0xC2, 0x94, 0x77, 0x95, 0xB8, 0x7F, 0xE8, 0x57, 0x5D, + 0xFB, 0xE5, 0x79, 0x70, 0x21, 0x6D, 0x37, 0xAD, 0xA0, 0xB8, 0xC8, 0xD9, 0xE1, 0xD4, 0x3F, 0x3C, + 0xF5, 0x6D, 0x53, 0x56, 0x79, 0x26, 0xA5, 0x2A, 0x32, 0xBE, 0xDD, 0x6D, 0x31, 0x0C, 0x55, 0x59, + 0x12, 0x82, 0xC7, 0x69, 0xC1, 0x04, 0x30, 0xCE, 0xC7, 0x51, 0x3D, 0x3E, 0x3D, 0x5F, 0xE6, 0x65, + 0xBF, 0x5F, 0x13, 0x0C, 0x09, 0x61, 0x5A, 0x1B, 0xAD, 0xF5, 0x6E, 0x55, 0x33, 0x04, 0x43, 0xF0, + 0xD3, 0xA4, 0xEA, 0xB6, 0xA9, 0x9B, 0x26, 0x25, 0x64, 0x8C, 0x69, 0xBA, 0x96, 0x32, 0x88, 0x92, + 0x1F, 0xA6, 0xE1, 0x78, 0x9C, 0xBA, 0xB2, 0x2B, 0x38, 0x62, 0x1C, 0x41, 0x1C, 0x63, 0x00, 0x00, + 0xE0, 0xA2, 0xE3, 0x00, 0x44, 0xEB, 0x80, 0x5A, 0xB4, 0x55, 0x2E, 0xCF, 0x98, 0x92, 0x7A, 0xB8, + 0xC8, 0xFB, 0xC3, 0xD0, 0xAD, 0x3A, 0xA3, 0xF4, 0xF7, 0xBF, 0x7C, 0xEE, 0xEA, 0x7A, 0x58, 0x24, + 0x21, 0x74, 0x55, 0x88, 0xA7, 0xF3, 0x90, 0x09, 0x16, 0x53, 0x84, 0x18, 0xBE, 0x5A, 0x77, 0xCF, + 0x97, 0x51, 0xF0, 0xCC, 0x28, 0x99, 0x00, 0x58, 0xAF, 0x36, 0x5A, 0x2F, 0x08, 0xC3, 0x59, 0x2A, + 0x00, 0x22, 0xA7, 0xDC, 0x7A, 0x7F, 0x9A, 0x15, 0x21, 0xB4, 0x2E, 0x0B, 0x63, 0xFD, 0xBA, 0x69, + 0x18, 0xC1, 0x45, 0x26, 0x20, 0x4C, 0xC3, 0x30, 0x67, 0x42, 0xB8, 0x10, 0x86, 0x79, 0x5E, 0xA4, + 0x21, 0x3C, 0xF3, 0x31, 0x4D, 0xD3, 0xF0, 0xEE, 0xE5, 0x15, 0x42, 0x40, 0x2A, 0x4B, 0xB9, 0x58, + 0xB7, 0xC5, 0xB2, 0x0C, 0xF0, 0xEB, 0xB7, 0xAF, 0x9E, 0x4F, 0x83, 0x77, 0xBE, 0xA9, 0x33, 0xE3, + 0x20, 0xC2, 0x58, 0xAB, 0x85, 0x62, 0x08, 0x31, 0x98, 0x17, 0xED, 0x5D, 0x88, 0x31, 0x62, 0x42, + 0x29, 0xA5, 0x8C, 0xE2, 0x4C, 0x50, 0xA9, 0xF4, 0xB2, 0x68, 0x21, 0x78, 0x56, 0xE4, 0xC1, 0x7B, + 0x67, 0x5C, 0x55, 0x66, 0x31, 0x44, 0xC1, 0x88, 0xD2, 0x16, 0x62, 0x24, 0x38, 0x33, 0xD6, 0x86, + 0x10, 0x72, 0xC1, 0x11, 0x61, 0x97, 0x49, 0x7B, 0xE7, 0x38, 0x13, 0x29, 0x25, 0x63, 0xCC, 0xCD, + 0xA6, 0xBE, 0xD9, 0x6F, 0x95, 0x0F, 0x20, 0x39, 0x4A, 0xD9, 0xD3, 0x61, 0xFC, 0xF6, 0xAB, 0x57, + 0xB7, 0xFB, 0xEE, 0xFF, 0xFD, 0xEE, 0xD3, 0xF7, 0x9F, 0xEE, 0x1E, 0x0E, 0xC7, 0xAF, 0x6E, 0x5F, + 0xFE, 0xA7, 0x3F, 0x7E, 0xF5, 0x7F, 0xFE, 0xDF, 0xFF, 0x32, 0x2B, 0xDF, 0xD6, 0x55, 0x53, 0x67, + 0x45, 0xC6, 0x33, 0x21, 0x3E, 0x7E, 0xB9, 0x53, 0xC6, 0x65, 0x79, 0xC6, 0x05, 0xC3, 0x00, 0x9C, + 0x8E, 0xFD, 0x2C, 0x15, 0xA3, 0xB8, 0xAD, 0xF3, 0xC5, 0x98, 0x18, 0xFD, 0x9F, 0xDE, 0xBF, 0xDD, + 0xAF, 0x37, 0x1F, 0x4E, 0xF6, 0xCB, 0x97, 0xFF, 0xD8, 0xED, 0x6E, 0x5E, 0xBD, 0x7A, 0x7F, 0xEE, + 0x1F, 0x1F, 0x1F, 0xEE, 0xFB, 0xCB, 0x40, 0x29, 0xE9, 0xBA, 0xAE, 0x16, 0x78, 0xDD, 0x94, 0x9F, + 0x9F, 0x2E, 0x10, 0x91, 0x6F, 0xDE, 0xBC, 0x1C, 0x86, 0xE9, 0xCB, 0xD3, 0xE5, 0xE6, 0x66, 0x6F, + 0xB5, 0xD2, 0xD6, 0x32, 0x46, 0x31, 0x86, 0x10, 0xA1, 0x10, 0x41, 0x56, 0xAD, 0x3E, 0x7F, 0xFC, + 0x81, 0x31, 0x5C, 0x35, 0x55, 0xC6, 0x98, 0xE0, 0xE8, 0xCB, 0xC3, 0xE1, 0x78, 0x1E, 0x71, 0x0C, + 0x8C, 0xF1, 0x71, 0x92, 0xAB, 0xA6, 0x7A, 0xF7, 0xF2, 0xEA, 0x2F, 0xDF, 0xFD, 0x34, 0x29, 0xFB, + 0xED, 0xDB, 0xEB, 0xAC, 0x62, 0x5D, 0x59, 0xC3, 0xC8, 0xE7, 0x65, 0x5A, 0xD4, 0xA2, 0x7D, 0xB0, + 0xC6, 0x8A, 0x9C, 0xF2, 0x9C, 0xFD, 0x0A, 0xDE, 0x5B, 0x16, 0x73, 0x3E, 0x4D, 0x8B, 0x34, 0x21, + 0x24, 0x88, 0x00, 0x42, 0xD8, 0x1A, 0x2B, 0xA7, 0x05, 0x02, 0xF0, 0xEA, 0xC5, 0x8E, 0x10, 0xEA, + 0xB4, 0xE7, 0x19, 0xC7, 0x08, 0xF2, 0x8C, 0x26, 0x08, 0x61, 0x8A, 0x5D, 0x57, 0x19, 0xAD, 0xCB, + 0xB2, 0x80, 0x21, 0x98, 0x10, 0x10, 0x82, 0x10, 0x40, 0x1F, 0xFD, 0xF1, 0xF0, 0xAC, 0x54, 0x1C, + 0xC7, 0xC5, 0xC7, 0x68, 0x5C, 0x34, 0xC6, 0x6F, 0x56, 0x75, 0x08, 0x2E, 0xA5, 0x48, 0x21, 0x7A, + 0x75, 0xBD, 0x2D, 0x0B, 0x9E, 0x10, 0x80, 0x18, 0xCD, 0xC3, 0x94, 0x20, 0xF0, 0x09, 0x10, 0xC2, + 0x9C, 0x0F, 0x80, 0xA0, 0xC3, 0x73, 0x3F, 0x8E, 0xD2, 0x85, 0x88, 0x31, 0x29, 0x04, 0x59, 0xB4, + 0x0B, 0x21, 0x6C, 0xB6, 0xDD, 0x66, 0xD5, 0x14, 0x82, 0x94, 0x45, 0x2E, 0x95, 0xE2, 0x99, 0xF0, + 0xDE, 0x3B, 0xEB, 0x52, 0x4A, 0x84, 0x40, 0x08, 0x92, 0x77, 0x09, 0x42, 0xA4, 0x94, 0x31, 0xDA, + 0x62, 0x0A, 0x63, 0x08, 0xEB, 0x75, 0x8D, 0x30, 0x81, 0x20, 0x11, 0x8A, 0xBC, 0x0B, 0x94, 0x61, + 0x08, 0x50, 0xD7, 0xD6, 0x6A, 0x31, 0xF7, 0x8F, 0xFD, 0x24, 0x8D, 0x36, 0x7E, 0x9A, 0xAC, 0x56, + 0x73, 0x00, 0xC8, 0xB8, 0x94, 0x33, 0xFC, 0xFE, 0x55, 0xCD, 0x38, 0x0C, 0x8E, 0x4C, 0x8A, 0x3D, + 0x9C, 0x2E, 0xCF, 0xCF, 0x0F, 0x4D, 0xCE, 0xCA, 0x9C, 0x39, 0x1F, 0x05, 0xC1, 0x08, 0x42, 0x46, + 0x31, 0xE3, 0xE4, 0xF9, 0x22, 0xCF, 0xA3, 0xDC, 0xAE, 0x3B, 0x6B, 0x2C, 0x06, 0x89, 0x10, 0x92, + 0x52, 0x1C, 0x17, 0xA5, 0x9D, 0x17, 0x9C, 0x5E, 0xC6, 0xB9, 0x29, 0x4B, 0x6D, 0x0C, 0xC1, 0xE8, + 0xFD, 0xED, 0x6B, 0x82, 0xF0, 0xBC, 0xC8, 0x71, 0x5E, 0x20, 0x42, 0xEB, 0xD5, 0xEA, 0x97, 0x2F, + 0x77, 0x79, 0xCE, 0x42, 0x34, 0x00, 0xB9, 0x17, 0x9B, 0xED, 0xED, 0xD5, 0xCB, 0xC7, 0xE7, 0x7E, + 0x98, 0x06, 0x08, 0xD3, 0xF3, 0x65, 0x50, 0xDE, 0x72, 0x0E, 0x37, 0x2B, 0x3A, 0x2F, 0xF1, 0xCF, + 0x5F, 0xFF, 0x21, 0xBA, 0xE4, 0xAC, 0xFB, 0x72, 0x3C, 0x2A, 0xE3, 0xB4, 0xB6, 0x59, 0x26, 0xBA, + 0xBA, 0x0C, 0xC1, 0x1F, 0xCE, 0xFD, 0xD5, 0xBE, 0x93, 0x8B, 0x16, 0x22, 0x27, 0x04, 0x78, 0xE7, + 0x09, 0x45, 0x20, 0x25, 0x82, 0xF0, 0x8B, 0x57, 0x57, 0x5A, 0xD9, 0xE3, 0xF1, 0xFC, 0x7C, 0x19, + 0xCE, 0x97, 0x79, 0xBB, 0xCB, 0xEA, 0x22, 0x8B, 0x20, 0x35, 0x65, 0x1D, 0xB4, 0x43, 0x0C, 0x03, + 0x8A, 0xAC, 0xB1, 0x08, 0xC3, 0xB2, 0xC8, 0xA3, 0xD5, 0x5C, 0x54, 0xE3, 0x34, 0x07, 0xAF, 0xAB, + 0x4C, 0x58, 0xE9, 0x12, 0xC2, 0x4D, 0x5D, 0x6A, 0x2D, 0xB5, 0xF5, 0x65, 0x55, 0x27, 0x6F, 0x53, + 0x84, 0x19, 0xA7, 0xDA, 0x6B, 0xE3, 0x7D, 0x55, 0xB6, 0x18, 0x05, 0x08, 0x08, 0x45, 0xD8, 0x1A, + 0x13, 0x7C, 0x04, 0x09, 0xD5, 0x4D, 0xFB, 0xE3, 0xE7, 0x07, 0xE3, 0x5C, 0x59, 0x64, 0xDA, 0x06, + 0x84, 0x20, 0x42, 0xD0, 0x68, 0x9D, 0xE5, 0x59, 0x53, 0x37, 0xC3, 0xD0, 0x6B, 0x63, 0x8D, 0x09, + 0x10, 0xC6, 0xDD, 0xBA, 0xC5, 0x10, 0x0C, 0xA3, 0x4D, 0x04, 0x7B, 0x67, 0x38, 0x25, 0x09, 0x02, + 0x65, 0x8C, 0xB1, 0x4E, 0x1B, 0x93, 0xE7, 0xCC, 0xBB, 0x20, 0x38, 0x80, 0x11, 0xE6, 0xF9, 0x06, + 0x21, 0xE6, 0xAC, 0xBC, 0xBE, 0xB9, 0x41, 0x29, 0x0D, 0xE3, 0xA4, 0xAD, 0xDB, 0x5D, 0x5F, 0x7B, + 0x23, 0xEB, 0x2A, 0x47, 0x30, 0x09, 0xC1, 0x96, 0x59, 0x0F, 0xA7, 0xB3, 0x52, 0x2A, 0x46, 0x9F, + 0x65, 0x59, 0x82, 0x08, 0x91, 0x84, 0x11, 0x84, 0x18, 0x88, 0x82, 0x16, 0xB9, 0x40, 0x00, 0x20, + 0x80, 0x94, 0xB4, 0x45, 0x59, 0xDE, 0x3F, 0xF4, 0xFF, 0xF6, 0xFD, 0x3D, 0x88, 0xBE, 0x6B, 0x4A, + 0x82, 0x90, 0x5A, 0xE6, 0x04, 0x31, 0x22, 0x28, 0xE3, 0x40, 0x30, 0x02, 0x31, 0x75, 0x4A, 0x2D, + 0x0E, 0x5C, 0xEF, 0x6F, 0xFA, 0xD3, 0x13, 0xE3, 0x39, 0x21, 0x5C, 0xCA, 0x51, 0x9A, 0xA5, 0xAA, + 0x4B, 0xEF, 0x43, 0x99, 0x95, 0x1F, 0x1F, 0x0E, 0xA7, 0x71, 0xC4, 0x10, 0x35, 0x65, 0xD1, 0xB5, + 0x8D, 0x92, 0x7A, 0x9E, 0xA7, 0xDD, 0x76, 0x2F, 0x38, 0xB3, 0x46, 0x87, 0x98, 0x8C, 0xF5, 0x10, + 0x63, 0x6D, 0xEC, 0xF3, 0xF9, 0xBC, 0x48, 0x55, 0x97, 0x85, 0xE0, 0xA2, 0x2C, 0xC4, 0xA2, 0x96, + 0x8C, 0x17, 0x55, 0x55, 0x08, 0x06, 0x30, 0xE7, 0x1C, 0x13, 0x6A, 0xAD, 0xFD, 0x55, 0xB5, 0x55, + 0x4A, 0x59, 0x17, 0xF2, 0x5C, 0x48, 0x65, 0x9C, 0xF5, 0x08, 0x21, 0x00, 0x40, 0x55, 0x66, 0xDB, + 0x6D, 0xE3, 0x9D, 0x17, 0x19, 0x27, 0x94, 0x64, 0xB9, 0x70, 0xCE, 0x61, 0x8C, 0x56, 0xEB, 0x26, + 0xCB, 0x28, 0x86, 0x50, 0x29, 0x45, 0x28, 0x4E, 0x10, 0x78, 0xE7, 0xAD, 0xF3, 0xE3, 0xA2, 0xD7, + 0xAB, 0xB2, 0x2A, 0xEB, 0xF3, 0xB8, 0x20, 0x04, 0x40, 0x02, 0x52, 0x29, 0x6B, 0x4D, 0x2E, 0xB2, + 0xB6, 0xCA, 0xCF, 0xC3, 0x34, 0x4C, 0xF2, 0xC5, 0xA6, 0xD5, 0xCA, 0x22, 0xCC, 0x5E, 0xED, 0xD6, + 0x9F, 0xEF, 0x9F, 0xF6, 0xDB, 0xEE, 0xBB, 0x0F, 0x9F, 0x31, 0x46, 0xDF, 0xBC, 0xBE, 0x7E, 0x3E, + 0x0F, 0x89, 0x90, 0xA2, 0x28, 0x2E, 0xFD, 0xE0, 0xAC, 0xCF, 0x18, 0x05, 0x20, 0x4D, 0xD3, 0x72, + 0x38, 0xF5, 0x10, 0x21, 0xCE, 0x88, 0x5C, 0x14, 0x42, 0x68, 0xD5, 0xD5, 0xD3, 0x32, 0x33, 0x46, + 0x52, 0x82, 0xA5, 0x10, 0x6F, 0xAE, 0xF7, 0xBF, 0x3C, 0x3C, 0xDE, 0xDD, 0x7F, 0x5E, 0x5D, 0xBD, + 0xC5, 0x88, 0x2B, 0x39, 0x2D, 0x3A, 0xDD, 0x7D, 0xFE, 0x64, 0x3D, 0xE8, 0xDA, 0x36, 0x13, 0xEC, + 0xE9, 0xE9, 0xF4, 0xE9, 0xE1, 0x68, 0xAD, 0x63, 0x98, 0x68, 0x6D, 0xCE, 0xC3, 0x52, 0x95, 0xF9, + 0xF3, 0xF3, 0x73, 0x84, 0xB4, 0x28, 0x5B, 0xEF, 0x02, 0x84, 0xC9, 0x18, 0x15, 0x12, 0x0E, 0x11, + 0x49, 0x65, 0x00, 0xC2, 0x53, 0xDF, 0x23, 0x90, 0xD4, 0xA2, 0x12, 0x04, 0x75, 0x95, 0x33, 0x46, + 0xCB, 0xB2, 0x88, 0x31, 0xAE, 0xBB, 0x6E, 0x5A, 0xA6, 0xC7, 0xE3, 0x69, 0xBF, 0x6D, 0x77, 0xBB, + 0xEA, 0x6A, 0xBB, 0x4E, 0x81, 0x3F, 0x3E, 0xCF, 0xD3, 0xA2, 0x17, 0x69, 0xAC, 0xF3, 0xF3, 0xF2, + 0x6B, 0x94, 0x22, 0x69, 0x6D, 0x1F, 0xEF, 0x8F, 0x59, 0x59, 0x94, 0x55, 0x86, 0x30, 0x98, 0xC6, + 0x85, 0x09, 0x1E, 0x13, 0x90, 0x8B, 0x72, 0x31, 0x06, 0xE3, 0x8A, 0xBC, 0xFC, 0xE1, 0xC3, 0x1D, + 0xA2, 0x28, 0x17, 0x3C, 0xF8, 0x10, 0x52, 0x7C, 0x7A, 0x3A, 0x2F, 0x4A, 0xB9, 0x10, 0x8E, 0xC7, + 0x5E, 0x4A, 0x4D, 0xB8, 0x38, 0x9F, 0x86, 0xD3, 0xA5, 0x0F, 0x31, 0x11, 0x8C, 0x09, 0x61, 0x79, + 0x91, 0x4F, 0xD3, 0xE2, 0xAD, 0x17, 0x9C, 0xBF, 0x7F, 0xFB, 0xAA, 0xA9, 0xB8, 0x77, 0x76, 0xD3, + 0x36, 0x6D, 0x55, 0xB6, 0xED, 0x0A, 0x43, 0xEA, 0x8C, 0x39, 0x1D, 0x07, 0x17, 0xC2, 0x30, 0x2C, + 0x00, 0xA0, 0xB9, 0x97, 0xD1, 0x45, 0x18, 0xD2, 0xBA, 0xAB, 0x36, 0xEB, 0x26, 0x78, 0xED, 0x9D, + 0xE6, 0x8C, 0x46, 0x90, 0xB6, 0xEB, 0xF2, 0xDD, 0x8B, 0x0D, 0x0C, 0x61, 0x9A, 0xE4, 0x30, 0x2C, + 0x97, 0xD3, 0xA0, 0x94, 0x3E, 0x9E, 0x86, 0xD3, 0x65, 0x58, 0x16, 0xF9, 0x7C, 0x7F, 0xCE, 0x33, + 0xEE, 0x82, 0xF7, 0x3E, 0x7E, 0xB9, 0x3B, 0x3D, 0x3D, 0x5F, 0xAA, 0x92, 0x65, 0x45, 0x06, 0x12, + 0xF0, 0xC9, 0x3B, 0x6F, 0x13, 0x4A, 0x2C, 0x63, 0x10, 0x02, 0x4A, 0xB1, 0x73, 0x6E, 0x5E, 0x16, + 0x51, 0xF0, 0xB2, 0x2A, 0xCA, 0x82, 0xD7, 0x05, 0xCF, 0x33, 0x7A, 0x1E, 0x34, 0x25, 0xEC, 0xEB, + 0xDB, 0xEB, 0xFE, 0x3C, 0x04, 0x97, 0x0E, 0xC7, 0x71, 0xD2, 0xBE, 0x5B, 0xEF, 0xCA, 0x9C, 0x73, + 0x0A, 0xDA, 0xBA, 0x14, 0x8C, 0x68, 0xA3, 0x52, 0xF4, 0x82, 0xA2, 0x98, 0x22, 0x40, 0x2C, 0x26, + 0x64, 0xAC, 0x7D, 0x77, 0xB3, 0xA7, 0x18, 0x48, 0xA5, 0xDE, 0x5C, 0x77, 0xC7, 0xCB, 0x98, 0x40, + 0x0C, 0x21, 0x64, 0x94, 0x58, 0xE7, 0x04, 0xA3, 0x6F, 0x5E, 0x5C, 0x39, 0xE7, 0x39, 0x67, 0x31, + 0x06, 0x10, 0x23, 0x65, 0xEC, 0xD4, 0x0F, 0xC6, 0x6A, 0x8C, 0x30, 0x86, 0xE8, 0xCD, 0xCD, 0xB6, + 0x64, 0xF9, 0x79, 0x50, 0xD2, 0x5A, 0x1F, 0x54, 0x5B, 0xC5, 0x7E, 0x32, 0x82, 0xC7, 0xED, 0x8A, + 0xF4, 0xBD, 0x8F, 0x11, 0xEE, 0x57, 0xBB, 0xE0, 0x81, 0x0D, 0x71, 0x5C, 0xA4, 0x32, 0xB6, 0x6E, + 0xCA, 0xD5, 0xBA, 0x3B, 0x9E, 0xFA, 0x98, 0x22, 0x26, 0x64, 0x18, 0x65, 0xDB, 0xD4, 0xAF, 0x5E, + 0x5C, 0x2F, 0xD6, 0xF5, 0xD3, 0xAC, 0x9D, 0x8F, 0x00, 0x38, 0x1F, 0x9D, 0x0B, 0x65, 0x25, 0xBA, + 0xAE, 0xA9, 0xCB, 0x5F, 0xDB, 0x1F, 0x74, 0x5E, 0x16, 0xA5, 0x9D, 0xD6, 0x1A, 0xC0, 0xE4, 0x82, + 0x9B, 0x17, 0x75, 0x19, 0x26, 0xB9, 0xA8, 0xF1, 0xD2, 0x6B, 0xE3, 0x8E, 0xFD, 0xF9, 0x74, 0xEC, + 0x31, 0x22, 0x14, 0x93, 0xAC, 0xC8, 0xA4, 0x54, 0xE3, 0x22, 0x9F, 0x4E, 0x52, 0xCA, 0x18, 0xDD, + 0xE8, 0xAC, 0x36, 0xC6, 0x27, 0x08, 0x30, 0x23, 0xC1, 0x06, 0x6F, 0xAC, 0x37, 0x81, 0x42, 0x31, + 0x5C, 0x86, 0x18, 0x3C, 0x21, 0x84, 0x53, 0x9A, 0x67, 0x62, 0xB3, 0xAA, 0xBA, 0x3A, 0xDB, 0xAE, + 0xEA, 0xAB, 0x7D, 0xD3, 0x94, 0x39, 0x48, 0xB1, 0x5B, 0x55, 0x59, 0x21, 0x8A, 0x42, 0xAC, 0x56, + 0xD5, 0x7A, 0x53, 0x97, 0x85, 0xD0, 0xCE, 0x2D, 0xE3, 0x82, 0x31, 0xE5, 0x22, 0x77, 0x56, 0x11, + 0x18, 0x08, 0x21, 0x10, 0xA1, 0x69, 0x96, 0xFD, 0x20, 0x17, 0xA9, 0x83, 0xF3, 0x18, 0x25, 0x0C, + 0x61, 0x53, 0xAC, 0x45, 0xB1, 0x59, 0x94, 0xC3, 0x10, 0x74, 0x6D, 0x0B, 0x83, 0xD3, 0x1E, 0xF0, + 0xA2, 0x0A, 0xDE, 0x51, 0xCE, 0x17, 0xAD, 0xAC, 0xB6, 0x00, 0xF2, 0x8C, 0x33, 0xAB, 0x55, 0x08, + 0x71, 0x9C, 0xA5, 0xF1, 0xE0, 0xD8, 0x2F, 0x77, 0x0F, 0x17, 0x90, 0x90, 0x35, 0xD6, 0x38, 0x7F, + 0xE9, 0xE7, 0xE7, 0x43, 0x9F, 0x70, 0x32, 0xDE, 0x5B, 0xEF, 0x44, 0x8E, 0x9B, 0x75, 0xBD, 0xAA, + 0xAB, 0x42, 0xB0, 0xB6, 0x29, 0xDB, 0xBA, 0x5A, 0x94, 0xBD, 0x7D, 0xF5, 0x62, 0xB7, 0xD9, 0x60, + 0x88, 0xAB, 0xB2, 0xF2, 0x31, 0x95, 0xE5, 0x26, 0xE3, 0x14, 0xA5, 0xB8, 0xEA, 0x36, 0xC6, 0xFB, + 0x45, 0x4A, 0x80, 0x20, 0xE7, 0xC2, 0x58, 0x27, 0x95, 0x62, 0x4C, 0x60, 0x8C, 0xDA, 0xBA, 0xDA, + 0xAC, 0xD6, 0xE7, 0xF3, 0xF0, 0x2B, 0xD8, 0xBA, 0xAA, 0xBA, 0x61, 0xE8, 0x8D, 0x5E, 0x42, 0x8C, + 0x21, 0x24, 0x69, 0x6C, 0xDB, 0x56, 0x10, 0xE2, 0xDD, 0xBA, 0x6D, 0xF3, 0xAC, 0xAB, 0x6B, 0x88, + 0xF9, 0xDD, 0xC3, 0x53, 0x93, 0x67, 0x4A, 0x1B, 0x6D, 0x2C, 0x86, 0x08, 0x03, 0x00, 0xAD, 0x35, + 0x21, 0xC6, 0xB2, 0xCC, 0x30, 0x84, 0x00, 0xC0, 0x32, 0x13, 0xC1, 0x07, 0x88, 0x60, 0x55, 0x66, + 0x05, 0xA3, 0xDA, 0xB8, 0x2A, 0xCF, 0x83, 0xF3, 0xFD, 0x65, 0x42, 0x08, 0x82, 0x98, 0xA4, 0x54, + 0xB9, 0xE0, 0x14, 0x21, 0xE7, 0x9C, 0x71, 0x96, 0x21, 0xB4, 0xDB, 0x76, 0x52, 0xDA, 0xA6, 0xAA, + 0x4E, 0xFD, 0x80, 0x11, 0xDC, 0x75, 0x75, 0xC6, 0xC4, 0xA7, 0xFB, 0x47, 0x04, 0x62, 0x8A, 0x91, + 0x53, 0x5C, 0xE6, 0xB9, 0x31, 0xBA, 0x9F, 0x26, 0xEB, 0x3C, 0x42, 0xF0, 0x3C, 0x2E, 0x9F, 0x1E, + 0xCF, 0xA5, 0x60, 0x04, 0x06, 0x44, 0xD1, 0x5F, 0x7E, 0xFC, 0xC5, 0x79, 0x7F, 0xB5, 0x6D, 0x3F, + 0xDE, 0x1D, 0x8D, 0xF5, 0x6F, 0xDF, 0xBC, 0xFC, 0xF4, 0xE5, 0xBE, 0x1F, 0x47, 0x4C, 0x59, 0x88, + 0x51, 0x70, 0x1C, 0xBC, 0x9F, 0x16, 0xD5, 0xB6, 0xF5, 0xE5, 0x7C, 0x69, 0xCA, 0xAC, 0x6B, 0xEA, + 0xBE, 0x1F, 0x5F, 0xDF, 0x6C, 0x21, 0x44, 0xE3, 0x30, 0xBE, 0xB9, 0xD9, 0x1B, 0xE7, 0x3E, 0xDE, + 0x3D, 0x0A, 0x4E, 0xAE, 0xF6, 0xD7, 0x97, 0xD9, 0x25, 0x2C, 0xE4, 0x74, 0x7A, 0x3E, 0x1C, 0x08, + 0xE1, 0x55, 0x2E, 0xA6, 0x71, 0xF2, 0x3E, 0xFC, 0xFD, 0xDF, 0x7C, 0xB5, 0xD9, 0xD4, 0x98, 0xE2, + 0xFB, 0xFB, 0xE3, 0xF3, 0xE9, 0xE4, 0x8C, 0xB6, 0xDE, 0xAD, 0xAF, 0xDF, 0x14, 0x8C, 0x5C, 0xDD, + 0xDC, 0xFC, 0xFC, 0xE1, 0xCB, 0xA2, 0x42, 0x55, 0x6F, 0x8F, 0xE7, 0x1E, 0x40, 0x60, 0xED, 0xE2, + 0x5C, 0x08, 0xD6, 0xC5, 0x94, 0xE6, 0x59, 0x32, 0x42, 0xEA, 0x32, 0x5F, 0x35, 0xD5, 0x7E, 0xB7, + 0xC9, 0x33, 0x36, 0x4C, 0xF3, 0xD5, 0x8B, 0xF7, 0xAF, 0x6E, 0xBF, 0xE2, 0x2C, 0x37, 0x0A, 0x0E, + 0x93, 0x53, 0x11, 0x9D, 0x2F, 0x97, 0x10, 0x62, 0x8C, 0x81, 0x32, 0x3C, 0x4E, 0x4B, 0x5E, 0x08, + 0x6B, 0x2D, 0x17, 0xCC, 0x1A, 0x13, 0xBC, 0x2B, 0x8B, 0xDC, 0x5A, 0x2B, 0x17, 0xE3, 0x9D, 0xF7, + 0x21, 0xC8, 0x59, 0x6E, 0xDA, 0xFA, 0xE9, 0xD4, 0x4B, 0x6D, 0xDA, 0x3A, 0x2B, 0x32, 0xEE, 0x43, + 0x3C, 0x3C, 0x9F, 0x8F, 0xC7, 0x73, 0x5B, 0x17, 0x29, 0x46, 0x00, 0x61, 0x8A, 0x70, 0xEA, 0x25, + 0xA6, 0x84, 0x72, 0x86, 0x30, 0x19, 0x86, 0x39, 0x17, 0x39, 0x42, 0x08, 0x41, 0x58, 0x64, 0xA2, + 0x5B, 0xD5, 0xCE, 0xAB, 0xE0, 0x42, 0x53, 0x94, 0x82, 0x32, 0xA5, 0x7C, 0x48, 0xA1, 0x1F, 0x86, + 0xE0, 0xC2, 0x22, 0x35, 0xE1, 0x64, 0x77, 0xDD, 0x3C, 0x3E, 0x8E, 0xF3, 0x6C, 0xAA, 0x2A, 0xB7, + 0xCA, 0x4F, 0x93, 0x16, 0x8C, 0xE7, 0x9C, 0xD4, 0x15, 0x07, 0x10, 0x5F, 0xEF, 0xB7, 0xCE, 0x79, + 0x0A, 0xD2, 0x6A, 0xDB, 0xB8, 0x18, 0x29, 0x41, 0x55, 0x5B, 0x61, 0x04, 0xBD, 0x8B, 0x3E, 0xF8, + 0x79, 0x94, 0x20, 0x61, 0x46, 0x08, 0x26, 0x58, 0x69, 0x0B, 0x21, 0xA8, 0xDB, 0x1C, 0xC3, 0xB8, + 0x59, 0x97, 0x94, 0x10, 0x42, 0xA0, 0x9C, 0xA5, 0x5C, 0x64, 0x7F, 0x19, 0xBC, 0x71, 0xC1, 0x04, + 0xB5, 0xE8, 0xB2, 0xCE, 0x09, 0x65, 0x28, 0x41, 0x46, 0x70, 0x59, 0xF1, 0xD5, 0xAA, 0x5E, 0x35, + 0x45, 0x55, 0xF0, 0x10, 0xDC, 0xB9, 0x9F, 0x9D, 0x73, 0xD2, 0xD8, 0x0F, 0x5F, 0xEE, 0x53, 0x30, + 0x82, 0x23, 0x8A, 0x61, 0x46, 0x19, 0x04, 0xF0, 0x74, 0x19, 0x18, 0x61, 0xEB, 0xBA, 0x4C, 0x00, + 0x73, 0xC6, 0x8E, 0xA7, 0xE3, 0xBA, 0xA9, 0xCB, 0x3C, 0xFB, 0xEE, 0xC3, 0x2F, 0xFB, 0x55, 0xF5, + 0x70, 0xEC, 0x63, 0x8C, 0x14, 0xE3, 0x10, 0x13, 0xC5, 0x68, 0x94, 0xFA, 0xD5, 0xBE, 0x03, 0x20, + 0x49, 0xA9, 0x31, 0x8C, 0xD3, 0x3C, 0xA7, 0x14, 0x4F, 0xFD, 0x00, 0x40, 0x2C, 0xF2, 0xCC, 0x3A, + 0x53, 0x64, 0x05, 0xA5, 0xF9, 0xF1, 0x32, 0xDC, 0x1F, 0x07, 0xEB, 0x96, 0xEB, 0x1D, 0xF8, 0xF2, + 0xBC, 0x48, 0xE3, 0x43, 0x4C, 0xC6, 0x23, 0x00, 0xC8, 0xDB, 0x57, 0xBB, 0xA6, 0xDA, 0x32, 0x51, + 0x60, 0x42, 0x43, 0x04, 0x6D, 0x5D, 0x67, 0x82, 0x1D, 0x4E, 0x97, 0xD3, 0xE5, 0xF2, 0xCD, 0x57, + 0x2F, 0x08, 0x86, 0xDA, 0xBA, 0xA2, 0xC8, 0xEF, 0x1E, 0x9F, 0xA4, 0xB5, 0xF3, 0xAC, 0x28, 0xE3, + 0xDE, 0x07, 0x04, 0xC0, 0x7E, 0xB7, 0x22, 0x14, 0x73, 0xCE, 0x31, 0x82, 0x65, 0x99, 0xAF, 0xD7, + 0x5D, 0x3F, 0xCC, 0x77, 0x0F, 0xBD, 0x35, 0x21, 0xC6, 0x70, 0x19, 0x97, 0x69, 0xD1, 0xCE, 0x25, + 0x6D, 0x3C, 0xC1, 0x44, 0x9B, 0x78, 0xEA, 0x55, 0x5D, 0x55, 0x20, 0xA1, 0x61, 0x99, 0x17, 0xE3, + 0x94, 0xF5, 0xE7, 0xB3, 0xC4, 0x08, 0x4B, 0xA5, 0x09, 0x4C, 0xD6, 0x3B, 0xE5, 0x92, 0x31, 0xFE, + 0x74, 0x1E, 0x95, 0xF1, 0xA7, 0xF3, 0x0C, 0x21, 0x38, 0x0E, 0xA3, 0xD4, 0xFA, 0xD0, 0xAB, 0xF3, + 0x6C, 0xCF, 0xA3, 0x1C, 0x67, 0xDD, 0x8F, 0xF3, 0x2C, 0xF5, 0xB2, 0x2C, 0x30, 0x05, 0x4E, 0xA9, + 0xC8, 0x04, 0xC4, 0xC8, 0x79, 0xEF, 0xBD, 0xD7, 0xCA, 0xCC, 0xB3, 0x62, 0x04, 0xBD, 0xBC, 0xD9, + 0x96, 0x75, 0x89, 0x30, 0xBA, 0x0C, 0x83, 0xF3, 0x8A, 0xB1, 0xBC, 0x9F, 0xF5, 0x38, 0x2E, 0xD6, + 0xBA, 0x71, 0x9E, 0xAF, 0x37, 0xCD, 0x7E, 0xBD, 0xA1, 0xAC, 0xB4, 0x1E, 0x39, 0x0F, 0x8D, 0x0B, + 0x5C, 0x64, 0x4D, 0xC9, 0x73, 0x41, 0x82, 0x51, 0x2A, 0xC8, 0x61, 0xBE, 0x18, 0x37, 0xF7, 0x63, + 0x2F, 0xE5, 0x32, 0x4D, 0xE3, 0xBC, 0xC8, 0x79, 0x94, 0x65, 0x59, 0x70, 0x4E, 0x09, 0x11, 0x8B, + 0x76, 0xE7, 0x61, 0xF6, 0x31, 0x65, 0x99, 0x90, 0xCA, 0x30, 0xC1, 0xA5, 0xB2, 0x77, 0x5F, 0xCE, + 0xC1, 0xFB, 0x65, 0xD1, 0xCA, 0x9A, 0xF3, 0xB9, 0xE7, 0x0C, 0x36, 0x95, 0x30, 0x6A, 0x41, 0x30, + 0x54, 0x55, 0x99, 0x09, 0x41, 0x29, 0x9B, 0x67, 0x13, 0x13, 0x9A, 0x17, 0x9D, 0xE7, 0x45, 0x5D, + 0xD7, 0xC9, 0xFB, 0x10, 0xC2, 0xE1, 0x70, 0x20, 0x9C, 0xBC, 0xB8, 0x59, 0x6D, 0xDA, 0x7A, 0xB3, + 0xEE, 0xAC, 0xB3, 0x59, 0x5E, 0xB6, 0x4D, 0x99, 0x33, 0x0C, 0x13, 0xD0, 0xC6, 0x58, 0x17, 0xAD, + 0x73, 0x82, 0x67, 0x72, 0x99, 0xFB, 0xF1, 0x82, 0x31, 0x32, 0xD6, 0x8D, 0x52, 0x85, 0x18, 0xEB, + 0xA6, 0x56, 0x4A, 0x56, 0x82, 0x96, 0x65, 0x96, 0x40, 0x7A, 0xEC, 0xA7, 0x75, 0xD7, 0xF8, 0x90, + 0x06, 0xA9, 0x53, 0xF0, 0xB8, 0xA9, 0x2B, 0x6B, 0x2D, 0x84, 0xA9, 0xCA, 0x85, 0x54, 0x9A, 0x63, + 0xC4, 0x09, 0xA2, 0x8C, 0x60, 0x4A, 0xDA, 0xB2, 0xDC, 0xAE, 0x6A, 0xA9, 0x95, 0x94, 0x06, 0x45, + 0xC0, 0x19, 0x99, 0x95, 0xC9, 0x05, 0x8F, 0x00, 0x44, 0x1F, 0x57, 0x6D, 0x8B, 0x09, 0xD2, 0xDA, + 0xD6, 0x19, 0x6B, 0xCA, 0xDC, 0xF9, 0xA8, 0x8D, 0xAF, 0x9A, 0x1A, 0xA4, 0xF0, 0xE2, 0x7A, 0x95, + 0x10, 0x7F, 0x7C, 0x3A, 0x7A, 0xE7, 0x32, 0x2E, 0xFE, 0xF8, 0xBB, 0x6F, 0xFE, 0xEE, 0xF7, 0x5F, + 0x57, 0x65, 0x09, 0x80, 0x17, 0x1C, 0x73, 0xC6, 0x9B, 0xA6, 0x32, 0xDE, 0x78, 0x6B, 0xBE, 0x7D, + 0xF3, 0x62, 0xBD, 0xAE, 0x46, 0xA7, 0xC7, 0x45, 0x27, 0x1F, 0x42, 0x88, 0x8B, 0xD2, 0x6F, 0x5F, + 0xBF, 0x08, 0xDE, 0x9D, 0xCE, 0x17, 0x21, 0x78, 0x8C, 0x89, 0x11, 0x2A, 0x18, 0xC9, 0x84, 0x58, + 0xB5, 0x8D, 0x96, 0x2A, 0xA7, 0xE8, 0xEB, 0x77, 0xAF, 0x9F, 0x8F, 0x67, 0x82, 0xD0, 0xE1, 0x32, + 0xF6, 0xFD, 0x70, 0xB3, 0x59, 0x17, 0x65, 0xF5, 0x4F, 0xFF, 0xFE, 0x43, 0x55, 0x96, 0xEB, 0xBA, + 0x00, 0x44, 0x88, 0x62, 0x6D, 0xCC, 0x32, 0x5C, 0x9E, 0x9A, 0xBA, 0xF8, 0xED, 0xBB, 0x57, 0x52, + 0x49, 0x00, 0xD2, 0xB7, 0xEF, 0x5F, 0x59, 0x97, 0x86, 0x59, 0xA3, 0xE8, 0xCA, 0xA2, 0xF8, 0xE3, + 0x6F, 0xDE, 0x7F, 0xFB, 0xD5, 0xED, 0xEE, 0xF6, 0x8F, 0xCA, 0xA6, 0xAA, 0xDB, 0x43, 0x56, 0x3C, + 0x9F, 0xFA, 0xDD, 0xEE, 0xAA, 0x60, 0x28, 0xAA, 0xD1, 0xC8, 0x21, 0x06, 0xFF, 0xD5, 0xCB, 0x6D, + 0x8A, 0x7E, 0xB5, 0xAE, 0x5F, 0xED, 0xB6, 0xD7, 0x9B, 0x75, 0x91, 0xE5, 0x79, 0x96, 0xC5, 0x10, + 0x31, 0x21, 0x65, 0xDD, 0xA5, 0x94, 0x8F, 0x8D, 0x68, 0x52, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x1D, 0x8E, 0x63, 0x02, 0xE2, 0xD3, 0xE7, 0xFB, 0x61, 0x9A, 0xA6, 0x79, 0x3A, 0x9E, + 0x8F, 0x59, 0x5E, 0x70, 0x8A, 0x29, 0x23, 0x52, 0x19, 0x67, 0x1D, 0x25, 0x18, 0x42, 0x34, 0xF4, + 0xD3, 0xCD, 0x66, 0xE5, 0x9C, 0x03, 0x08, 0x69, 0x6D, 0xC7, 0x71, 0xA1, 0x9C, 0xB4, 0x05, 0x1F, + 0xC6, 0x79, 0x56, 0xEA, 0xC5, 0xAE, 0x6B, 0xDB, 0xF2, 0x32, 0xC8, 0x61, 0x5E, 0xF6, 0xDB, 0xE6, + 0x66, 0xBF, 0xFA, 0xB5, 0xF6, 0x0C, 0x12, 0x08, 0x3E, 0x12, 0xC6, 0x7C, 0x88, 0x45, 0xDD, 0x68, + 0xE3, 0x87, 0x61, 0x0A, 0x21, 0x06, 0x17, 0x28, 0xA1, 0x18, 0xE3, 0x61, 0x1C, 0x01, 0x88, 0x08, + 0x41, 0xEF, 0x7D, 0x04, 0xE1, 0x70, 0xEC, 0xC7, 0x59, 0x61, 0x82, 0xFA, 0x71, 0xC1, 0x18, 0x63, + 0x44, 0x17, 0x69, 0x2F, 0xFD, 0x8C, 0x30, 0xC6, 0x18, 0x49, 0xE3, 0x22, 0x00, 0x21, 0x00, 0x67, + 0xFC, 0x38, 0x29, 0x00, 0x90, 0xB3, 0x41, 0x64, 0xE4, 0xEA, 0xBA, 0x0B, 0x20, 0x38, 0xE7, 0x29, + 0x46, 0x84, 0x62, 0x9E, 0x33, 0x84, 0x20, 0x80, 0x69, 0xB7, 0x5F, 0x97, 0x15, 0xCF, 0x2B, 0x61, + 0x4C, 0x2C, 0x4A, 0x4E, 0x70, 0x2A, 0x0A, 0xEA, 0xAC, 0x8B, 0x3E, 0x8E, 0xBD, 0xEA, 0xCF, 0x8B, + 0x54, 0xF6, 0xEE, 0xE1, 0xAC, 0xA5, 0xA5, 0x58, 0x18, 0x99, 0x82, 0x4F, 0x97, 0x93, 0x54, 0x4B, + 0x98, 0x67, 0xAD, 0x94, 0x92, 0x4A, 0x5F, 0xFA, 0x19, 0xC0, 0x24, 0x32, 0x9C, 0x17, 0xE2, 0xC5, + 0xCB, 0xAD, 0xB1, 0x5E, 0x69, 0x33, 0x4E, 0x92, 0x51, 0x18, 0x9D, 0xE3, 0x84, 0xF9, 0x10, 0x87, + 0x45, 0x43, 0x80, 0xAA, 0xA2, 0x60, 0x14, 0x4D, 0x4A, 0xF3, 0x0C, 0x12, 0x94, 0xD6, 0x6D, 0x3B, + 0x2C, 0x8A, 0x53, 0x92, 0x62, 0x98, 0x94, 0xAB, 0xAB, 0x82, 0x60, 0x44, 0x31, 0x1E, 0xA5, 0x6A, + 0xAB, 0x32, 0xCF, 0x18, 0x04, 0x89, 0x51, 0xC4, 0x48, 0xD2, 0xD6, 0x0B, 0x86, 0x09, 0x01, 0x14, + 0x13, 0xA3, 0xB5, 0x76, 0x6E, 0xDB, 0xE4, 0x85, 0xA0, 0x9F, 0x9F, 0xCF, 0x04, 0x27, 0x0C, 0xC1, + 0x2F, 0x9F, 0x07, 0x63, 0x82, 0xD4, 0x49, 0xE9, 0xB8, 0x5D, 0x55, 0xFF, 0xF8, 0xFB, 0x37, 0x20, + 0x66, 0x54, 0x74, 0xF3, 0xA2, 0x86, 0xF1, 0x12, 0xBD, 0xB7, 0xCE, 0x9E, 0xFB, 0xE1, 0xF1, 0x70, + 0xEC, 0x9A, 0x4A, 0x50, 0xAE, 0x94, 0x4E, 0x09, 0x4C, 0x8B, 0x9A, 0x66, 0xE9, 0x7D, 0x30, 0xC6, + 0x11, 0x84, 0xEB, 0x22, 0xCF, 0xB2, 0x5C, 0x29, 0x2B, 0xA5, 0x81, 0x00, 0xA6, 0x04, 0xA4, 0x34, + 0x18, 0xE2, 0xA6, 0x6C, 0x04, 0xA3, 0xF3, 0xA2, 0x94, 0xB2, 0x8B, 0xF2, 0x31, 0x25, 0xEB, 0x42, + 0x0C, 0x09, 0x43, 0xA8, 0xB4, 0x87, 0x88, 0x22, 0xCC, 0xC6, 0x71, 0xBE, 0xF4, 0xF3, 0xB9, 0x9F, + 0xC7, 0xC9, 0x40, 0x44, 0xA4, 0xB6, 0xC3, 0xAC, 0x22, 0x04, 0x36, 0xF8, 0xC5, 0x78, 0x80, 0xD0, + 0xAC, 0xCD, 0x71, 0xD0, 0x93, 0xB4, 0x36, 0xB8, 0xC5, 0xE8, 0xCB, 0xAC, 0x67, 0xE5, 0xA4, 0x76, + 0xD6, 0x27, 0xE3, 0x62, 0x02, 0x29, 0x06, 0xAF, 0x8C, 0xD6, 0xC6, 0x1A, 0x6D, 0x83, 0x75, 0xE7, + 0x61, 0x9A, 0x95, 0x81, 0x10, 0x27, 0x00, 0xAD, 0x8E, 0x87, 0xA7, 0xE7, 0x59, 0xCE, 0x88, 0x31, + 0x14, 0x5D, 0x95, 0xA1, 0xCB, 0xA0, 0x3F, 0x7C, 0x3E, 0x86, 0x18, 0x77, 0x9B, 0x2E, 0x58, 0xD3, + 0x16, 0x30, 0xE7, 0xAC, 0x6D, 0x37, 0x87, 0xCB, 0xF2, 0x74, 0x3C, 0x1B, 0xA3, 0xF3, 0x9C, 0x01, + 0x60, 0x19, 0x4D, 0x52, 0x4E, 0xC1, 0xF5, 0xC6, 0x5E, 0xFA, 0x59, 0x6A, 0x6D, 0x29, 0xC6, 0x4A, + 0xEA, 0x0F, 0x1F, 0xEF, 0xBC, 0x4F, 0x8C, 0x88, 0x18, 0xD1, 0xE9, 0x3C, 0x4C, 0xD2, 0x0C, 0x8B, + 0xFE, 0x55, 0x29, 0x5A, 0xB4, 0x75, 0xC1, 0xE7, 0x05, 0x9D, 0x46, 0xC9, 0x72, 0x0E, 0x10, 0x02, + 0x10, 0x1A, 0x1B, 0x08, 0x63, 0xDE, 0x04, 0xEB, 0x5C, 0x04, 0x51, 0x69, 0x5D, 0x70, 0x2E, 0x38, + 0xF2, 0xDE, 0x69, 0x63, 0x9A, 0xBA, 0x00, 0x29, 0x72, 0x26, 0xBC, 0xB5, 0x31, 0x46, 0x9E, 0x17, + 0xA2, 0xC8, 0x43, 0xF4, 0x52, 0x5B, 0xE7, 0x2C, 0x21, 0x38, 0xCF, 0x39, 0x80, 0x11, 0x91, 0x90, + 0x7C, 0x30, 0xCA, 0x68, 0x2B, 0xB5, 0xD6, 0xD6, 0x79, 0xE7, 0x7C, 0x0C, 0xAE, 0xA9, 0x2B, 0x1F, + 0xE2, 0xAC, 0x54, 0x5D, 0x66, 0x37, 0xBB, 0xDD, 0x34, 0xCE, 0x7D, 0xDF, 0xA7, 0x18, 0x8B, 0x2C, + 0x5B, 0x16, 0x89, 0x09, 0x73, 0xDE, 0x8F, 0x52, 0xD7, 0x65, 0x19, 0x9C, 0xC6, 0x45, 0x96, 0x69, + 0x63, 0x19, 0x06, 0x94, 0xE0, 0x59, 0xEA, 0x9B, 0x4D, 0xC3, 0x19, 0x7D, 0xEE, 0xC7, 0xDD, 0x7E, + 0xA7, 0x95, 0x5A, 0x96, 0x05, 0x00, 0xB0, 0x6B, 0x4B, 0x63, 0x3D, 0x48, 0x80, 0x50, 0xC2, 0x19, + 0xBD, 0x0C, 0x73, 0x55, 0x14, 0xAF, 0xAE, 0xD6, 0xD6, 0x3B, 0x63, 0xDC, 0xD5, 0xAA, 0xAE, 0xAB, + 0xC2, 0x07, 0x40, 0x09, 0x2E, 0x73, 0x01, 0x93, 0xF7, 0xC1, 0x5B, 0x1F, 0xBC, 0xD6, 0x19, 0x67, + 0x65, 0x55, 0xBE, 0xBB, 0x7D, 0x6D, 0xAC, 0x4D, 0x29, 0x32, 0x8C, 0x6E, 0xF6, 0x5B, 0x90, 0x60, + 0x56, 0x30, 0x1C, 0xCD, 0xEF, 0xDE, 0xBF, 0xBE, 0xD9, 0x77, 0xB3, 0xB1, 0x29, 0xF9, 0x08, 0xC0, + 0x66, 0xB7, 0x72, 0x31, 0xBD, 0x7D, 0xFF, 0x1A, 0xA6, 0xA4, 0x8C, 0x62, 0x14, 0x5B, 0xE3, 0x05, + 0x25, 0x8C, 0xA2, 0x97, 0xD7, 0xBB, 0x2C, 0x13, 0xA7, 0xCB, 0x25, 0x67, 0xF8, 0xF5, 0x8B, 0xAB, + 0x1F, 0x7E, 0x79, 0x38, 0x0F, 0xD3, 0xAF, 0xAF, 0xDF, 0xAA, 0x2A, 0xFE, 0xF8, 0xED, 0x37, 0x77, + 0x8F, 0x87, 0x18, 0xC1, 0x1F, 0x7E, 0xFB, 0x9E, 0xE5, 0x4D, 0xD6, 0xBE, 0x8C, 0x31, 0x0C, 0xA7, + 0x2F, 0x02, 0x83, 0xD7, 0x37, 0x7B, 0x46, 0x49, 0x2E, 0xF8, 0xCB, 0x5D, 0xF7, 0x78, 0x38, 0x3B, + 0x54, 0x07, 0xE7, 0xDB, 0x8C, 0xFE, 0xE9, 0x77, 0xDF, 0x76, 0x4D, 0xDB, 0xFB, 0xE2, 0xC3, 0xC3, + 0x69, 0xE9, 0x8F, 0x34, 0xE9, 0xF9, 0xF8, 0x85, 0x04, 0x79, 0xBB, 0x29, 0xB6, 0x5D, 0x96, 0x0B, + 0xF1, 0xE2, 0x6A, 0xFF, 0xF6, 0xC5, 0x55, 0x29, 0x48, 0xB7, 0xEA, 0x36, 0x5D, 0x23, 0x08, 0xBC, + 0x7F, 0xEE, 0x9F, 0xCF, 0xE3, 0xE3, 0xF1, 0xFC, 0x70, 0x18, 0x7F, 0xF9, 0x7C, 0x30, 0xC6, 0x4D, + 0xE3, 0x64, 0xB4, 0x3C, 0x1E, 0x9F, 0x2F, 0x97, 0x13, 0x04, 0x61, 0xB7, 0xCA, 0x94, 0x01, 0x5C, + 0xE4, 0x55, 0xC1, 0x42, 0xF2, 0x52, 0x1A, 0x6B, 0xC3, 0x34, 0x49, 0x6F, 0xC3, 0x76, 0xD5, 0xEC, + 0x76, 0xDD, 0x0F, 0x1F, 0xEF, 0xCB, 0xBA, 0x02, 0x08, 0x3E, 0x3F, 0x1C, 0xAB, 0x82, 0x16, 0x05, + 0x5D, 0x96, 0xB9, 0xCC, 0xB3, 0xBA, 0xCA, 0xA5, 0xB6, 0xFD, 0xA4, 0x08, 0x82, 0x28, 0x25, 0x65, + 0xFC, 0x65, 0x94, 0x2E, 0x04, 0x0C, 0xD1, 0x30, 0xCA, 0x79, 0x51, 0x08, 0x13, 0x17, 0xD2, 0xE7, + 0xCF, 0xF7, 0x8C, 0x12, 0x04, 0x91, 0xB3, 0x2E, 0xCF, 0x85, 0x54, 0xF2, 0xBB, 0xEF, 0x3F, 0xCF, + 0x8B, 0x36, 0xC6, 0x0E, 0x93, 0x24, 0x8C, 0xF4, 0x93, 0xEE, 0x07, 0x69, 0x63, 0x78, 0x3C, 0xF6, + 0x82, 0x67, 0x52, 0x59, 0xE7, 0x02, 0x23, 0x98, 0x12, 0x9A, 0x71, 0xF1, 0x7C, 0xEA, 0x8D, 0xF7, + 0x2E, 0xF8, 0x69, 0x91, 0xCA, 0x58, 0x65, 0x34, 0xE1, 0xE0, 0x7A, 0xD7, 0xCE, 0xFD, 0x62, 0x94, + 0x9F, 0x46, 0xF5, 0xE5, 0xD3, 0x51, 0x4B, 0x6B, 0x7D, 0x04, 0x18, 0x08, 0xC1, 0x18, 0x23, 0x5A, + 0x2B, 0x88, 0x40, 0x04, 0xE9, 0xF4, 0x7C, 0x64, 0x0C, 0xC5, 0x18, 0x09, 0x25, 0xD3, 0xB8, 0xCC, + 0x4B, 0x50, 0xD6, 0xF5, 0xFD, 0x7C, 0xE9, 0xD5, 0x38, 0x5B, 0x86, 0xD8, 0x22, 0xFD, 0x38, 0x4B, + 0x84, 0xD0, 0xE3, 0xE3, 0x39, 0x26, 0xD8, 0xF7, 0xFD, 0x24, 0xED, 0x22, 0xED, 0x79, 0x98, 0xAD, + 0xF5, 0xC3, 0xB8, 0x38, 0x6B, 0xDB, 0x75, 0xB3, 0xDD, 0xB5, 0x55, 0x29, 0x72, 0x8E, 0xBD, 0x4D, + 0x94, 0xB2, 0x04, 0xD2, 0xB4, 0x68, 0x84, 0x49, 0xB0, 0x3A, 0x17, 0x62, 0xB2, 0xEE, 0x3C, 0x4D, + 0x4D, 0x9E, 0x95, 0x45, 0x09, 0x11, 0x98, 0xA5, 0x2B, 0x04, 0x45, 0x18, 0x6E, 0xB7, 0xDD, 0xED, + 0xD5, 0x4A, 0x7B, 0xD0, 0xB5, 0x45, 0x55, 0x08, 0x4C, 0x61, 0x9E, 0x27, 0x8C, 0x93, 0xB7, 0x1E, + 0x82, 0x18, 0x93, 0x4B, 0x29, 0x9D, 0x27, 0xD9, 0x95, 0xD9, 0x4D, 0x57, 0x41, 0x00, 0x16, 0xAD, + 0x8C, 0xB3, 0x5D, 0x53, 0xBE, 0x7F, 0xBD, 0xCF, 0x04, 0xDD, 0xAE, 0xAA, 0x17, 0xFB, 0xCA, 0x38, + 0xB7, 0xEB, 0xDA, 0x8C, 0x94, 0xC7, 0x8B, 0xEE, 0xC7, 0xF9, 0xE3, 0x97, 0xCF, 0xF3, 0xB2, 0x68, + 0xAD, 0xFB, 0x71, 0xB4, 0xD6, 0xDB, 0x10, 0xCA, 0x3C, 0xEF, 0x87, 0x59, 0x1B, 0x15, 0x13, 0xD0, + 0xD6, 0xDB, 0x5F, 0x8F, 0x10, 0x42, 0x30, 0x81, 0xAA, 0xA8, 0xCA, 0x22, 0x7F, 0x78, 0x3A, 0x40, + 0xCC, 0xBC, 0x0F, 0x97, 0x7E, 0xC6, 0x18, 0x07, 0xEB, 0x62, 0x08, 0x79, 0x59, 0x14, 0x65, 0x1E, + 0x43, 0x98, 0x66, 0x29, 0x04, 0x9B, 0x16, 0x07, 0x01, 0x30, 0xD6, 0x73, 0x91, 0x43, 0x88, 0x97, + 0x45, 0x2A, 0x6D, 0x21, 0x80, 0x2E, 0x00, 0x1F, 0x13, 0xC2, 0xD8, 0x86, 0xA8, 0xAD, 0x23, 0x18, + 0x86, 0x00, 0x7C, 0x00, 0xB3, 0xB2, 0xF3, 0x6C, 0x43, 0x04, 0x79, 0x96, 0x85, 0x98, 0x8C, 0x09, + 0x3E, 0x04, 0xCE, 0x31, 0x44, 0x58, 0x6A, 0xF7, 0xAB, 0x99, 0x26, 0xB5, 0x8A, 0x20, 0x58, 0x1B, + 0xAD, 0x72, 0x52, 0x1B, 0xEB, 0x63, 0x3F, 0x48, 0x17, 0xD2, 0x3C, 0x6B, 0x1F, 0x22, 0x65, 0x54, + 0x2A, 0xAB, 0x17, 0x59, 0x09, 0x9E, 0x65, 0xE4, 0xD4, 0x0F, 0xD6, 0xB9, 0x97, 0xDB, 0x1A, 0x01, + 0xCF, 0x19, 0xE0, 0x18, 0x52, 0x96, 0x7F, 0x79, 0x7A, 0x32, 0x6E, 0xC1, 0x30, 0x6C, 0x57, 0x19, + 0x22, 0x7E, 0x5C, 0x06, 0xEF, 0x4D, 0x3F, 0x5F, 0x9A, 0x92, 0x1C, 0xCF, 0xF3, 0x69, 0xB4, 0x21, + 0x44, 0x2D, 0xCD, 0xE1, 0x78, 0x01, 0x90, 0xBC, 0x7F, 0xFF, 0xBB, 0xBC, 0xA8, 0x94, 0x52, 0xD3, + 0x34, 0x69, 0xE3, 0x66, 0x65, 0xC6, 0x79, 0xAC, 0xAA, 0xC2, 0x3B, 0xBD, 0x5A, 0x15, 0x6D, 0xC3, + 0x39, 0xC3, 0xCA, 0xD8, 0x14, 0xD3, 0x30, 0x2E, 0x45, 0x21, 0x78, 0x9E, 0xA9, 0x45, 0x2B, 0x65, + 0x28, 0xC7, 0x9C, 0x65, 0x21, 0x60, 0x6D, 0x62, 0x3F, 0x4D, 0x21, 0x86, 0x10, 0xE2, 0x30, 0xCF, + 0xCA, 0x8C, 0x18, 0xA9, 0x8C, 0xC7, 0xD3, 0x68, 0x20, 0x82, 0xE3, 0x38, 0x58, 0x6B, 0x86, 0x79, + 0xFE, 0xF9, 0xD3, 0x43, 0x4A, 0xE9, 0xF1, 0x70, 0x7A, 0x78, 0x38, 0x14, 0x79, 0xB1, 0xDE, 0x6E, + 0x42, 0x70, 0x5D, 0xDB, 0x32, 0x4A, 0x67, 0xA5, 0x2F, 0xC3, 0x98, 0x42, 0xB4, 0xCE, 0x01, 0x08, + 0xEB, 0xAA, 0x14, 0x94, 0x65, 0x02, 0x21, 0xE0, 0x04, 0x25, 0x4D, 0x51, 0x2A, 0x6D, 0xAC, 0xB1, + 0xFD, 0x30, 0x66, 0x42, 0x14, 0x99, 0x98, 0xE7, 0x09, 0xC7, 0x98, 0x10, 0x4C, 0x7F, 0xF8, 0xFA, + 0xED, 0x22, 0xCD, 0xAB, 0xEB, 0xDD, 0x8B, 0xFD, 0x2A, 0x84, 0xB8, 0x6A, 0x2B, 0xA9, 0x35, 0x67, + 0xAC, 0x10, 0xEC, 0xD5, 0x6E, 0xF5, 0x78, 0xEC, 0x21, 0x84, 0x18, 0x23, 0x0C, 0x20, 0xA7, 0x44, + 0x19, 0xFB, 0x9B, 0xB7, 0x2F, 0x85, 0x60, 0xE3, 0xA8, 0xDA, 0x22, 0x23, 0x30, 0x09, 0xC6, 0xE6, + 0x59, 0x5F, 0x5F, 0x5F, 0x33, 0x46, 0x43, 0x0C, 0x52, 0x4B, 0x02, 0x11, 0x67, 0xE4, 0xF1, 0x3C, + 0xDD, 0xBE, 0x7C, 0xD5, 0xB5, 0x45, 0x70, 0xCA, 0xAB, 0x69, 0xB7, 0x2E, 0x0B, 0xC1, 0x5E, 0x5E, + 0xD5, 0x9B, 0x36, 0xFB, 0xF3, 0xEF, 0x5F, 0x7F, 0xF3, 0xD5, 0xCE, 0xF8, 0x90, 0x67, 0x7C, 0x53, + 0x67, 0xB7, 0x2F, 0xBA, 0x22, 0x67, 0x57, 0xFB, 0x8E, 0x12, 0xDA, 0x8F, 0x93, 0xB3, 0x36, 0xB9, + 0x14, 0x13, 0xA2, 0x18, 0xDF, 0xBE, 0xD8, 0x63, 0x04, 0x7F, 0xF9, 0xFC, 0x90, 0x0B, 0xBE, 0x5F, + 0xD5, 0xA3, 0x4D, 0x01, 0x17, 0xA7, 0xD3, 0xE9, 0x7A, 0xD7, 0xFD, 0xE6, 0xDD, 0xAB, 0xDB, 0xDB, + 0xD7, 0x37, 0x37, 0x57, 0xB9, 0x60, 0xEB, 0xF5, 0x26, 0x22, 0x72, 0x75, 0xFB, 0xBB, 0xEF, 0xBF, + 0xFF, 0x1E, 0x27, 0xFD, 0xFA, 0xAA, 0x60, 0x98, 0x9C, 0x4E, 0x17, 0x82, 0x51, 0x5B, 0x95, 0xFB, + 0x6D, 0x33, 0xF4, 0xD3, 0xD5, 0xFE, 0x6A, 0xD3, 0x35, 0xB7, 0x37, 0xDB, 0x2F, 0x0F, 0x87, 0xE7, + 0x09, 0xFC, 0xD3, 0xBF, 0xFE, 0x6B, 0x16, 0xC7, 0x4D, 0x9B, 0x3B, 0x35, 0x55, 0x19, 0xD3, 0xDA, + 0xF8, 0x18, 0x3E, 0x7E, 0xFE, 0xAC, 0xF4, 0xA4, 0xE4, 0x72, 0x3C, 0x1E, 0x87, 0xC5, 0xE1, 0x72, + 0x6F, 0x03, 0xB4, 0xC6, 0x00, 0xE0, 0x18, 0xC3, 0x3E, 0x38, 0xCE, 0x59, 0x4C, 0x69, 0x91, 0xF6, + 0x3C, 0xF4, 0x4A, 0x9B, 0x4B, 0x7F, 0x99, 0xE5, 0x52, 0x66, 0x74, 0xD5, 0x75, 0xDA, 0x03, 0x08, + 0x92, 0x33, 0x6A, 0xE8, 0x67, 0xC2, 0x48, 0x80, 0xE9, 0xCD, 0xCD, 0xCE, 0xB9, 0xF0, 0xFB, 0x6F, + 0xDE, 0x7C, 0xBA, 0x3F, 0x5C, 0xFA, 0x11, 0x81, 0x88, 0x10, 0x14, 0x19, 0xA5, 0x30, 0x39, 0x1F, + 0x01, 0x22, 0x9C, 0x32, 0xA5, 0x7D, 0x4C, 0x70, 0xD5, 0x16, 0x20, 0xC5, 0x0F, 0x5F, 0x8E, 0x21, + 0x22, 0x42, 0xC9, 0xE1, 0xD8, 0x8B, 0x2C, 0x4F, 0x29, 0x26, 0x00, 0x11, 0x45, 0xA7, 0xF3, 0xB1, + 0xCE, 0x05, 0xE7, 0x84, 0x70, 0x56, 0xE5, 0x85, 0x36, 0xE6, 0x32, 0xF5, 0x5D, 0xD7, 0x12, 0x82, + 0x2F, 0xC3, 0x32, 0xCE, 0x66, 0x9A, 0xCD, 0xB8, 0xE8, 0xB2, 0xC8, 0x29, 0x85, 0xE7, 0x49, 0x62, + 0x84, 0x28, 0xC5, 0x5A, 0x69, 0xE7, 0xA2, 0xF1, 0x61, 0xD1, 0xD6, 0x58, 0x27, 0x38, 0x9E, 0x17, + 0x79, 0xBA, 0x4C, 0x94, 0xD3, 0xCD, 0xB6, 0xBA, 0xDA, 0x75, 0x6A, 0x76, 0x9F, 0x3E, 0x5F, 0x04, + 0xE7, 0xB3, 0x54, 0xC7, 0xCB, 0xC2, 0x18, 0xBD, 0x9C, 0x67, 0x6B, 0xB4, 0x71, 0xE1, 0x74, 0x9C, + 0xBE, 0xFC, 0xFC, 0xAC, 0x95, 0x95, 0x8B, 0x3A, 0x9E, 0xE6, 0x94, 0xC0, 0x78, 0x91, 0x6A, 0x36, + 0xCE, 0x79, 0x65, 0x82, 0x76, 0xE1, 0xD2, 0xCF, 0x5C, 0xF0, 0x3C, 0x2F, 0xAF, 0x36, 0x1B, 0x63, + 0x4D, 0x82, 0x78, 0x96, 0x2A, 0x21, 0x46, 0x08, 0x24, 0x04, 0x01, 0x44, 0x7C, 0x4A, 0x5A, 0x6A, + 0xCA, 0x68, 0x82, 0x40, 0x2E, 0xCA, 0x1A, 0xE7, 0x7D, 0x2C, 0xCB, 0x3C, 0x17, 0x99, 0x73, 0x41, + 0x69, 0x29, 0x04, 0xCB, 0x05, 0x79, 0xB1, 0xEB, 0x62, 0x8A, 0x9C, 0x65, 0xC7, 0xCB, 0x50, 0x67, + 0xE2, 0x66, 0xB3, 0x6A, 0x9A, 0x72, 0x9E, 0x66, 0x02, 0xE0, 0x76, 0xD5, 0x0C, 0xB3, 0xBA, 0xD9, + 0xAC, 0x10, 0xC4, 0x3E, 0x31, 0x2E, 0xA8, 0x94, 0xB2, 0x2A, 0xF3, 0x42, 0xA0, 0xF3, 0xA5, 0xE7, + 0x59, 0x9E, 0xF1, 0x44, 0x38, 0x26, 0x8C, 0x73, 0xC6, 0xDF, 0xBC, 0xD8, 0x5C, 0x5D, 0xAD, 0x6E, + 0x6E, 0x6E, 0xAE, 0xAF, 0xF6, 0xD7, 0xBB, 0xD5, 0xBB, 0xD7, 0xAF, 0xDA, 0xA6, 0xBA, 0xDA, 0xAD, + 0x5E, 0xBC, 0xBA, 0xAE, 0xDB, 0xFA, 0xAB, 0xF7, 0x2F, 0xBB, 0xB6, 0x9B, 0xA4, 0xF5, 0xC1, 0x6B, + 0xAB, 0x94, 0xD2, 0x6F, 0x5F, 0xBD, 0x20, 0x18, 0x10, 0x14, 0x67, 0x29, 0x6D, 0x08, 0xDA, 0x58, + 0x65, 0x0C, 0xC5, 0xA0, 0xC8, 0x32, 0x6D, 0x9C, 0xF5, 0x5E, 0x88, 0x7C, 0x59, 0x24, 0xC6, 0x68, + 0x5A, 0xE4, 0xE3, 0xE1, 0x59, 0x1A, 0x57, 0x35, 0x6B, 0xC1, 0x88, 0xB7, 0xF6, 0x7A, 0xB7, 0x2E, + 0x84, 0x68, 0xDB, 0xBC, 0x29, 0xF3, 0x5D, 0xDB, 0x6C, 0xBB, 0x6A, 0xDD, 0xE6, 0x2F, 0xAF, 0xB6, + 0x75, 0xCE, 0x95, 0xB2, 0x79, 0x9E, 0x25, 0x88, 0xCE, 0xE7, 0x01, 0x42, 0x40, 0x08, 0x46, 0x00, + 0x24, 0x08, 0x7D, 0x88, 0x18, 0x21, 0x82, 0x51, 0x59, 0x70, 0x4A, 0x90, 0x92, 0x8E, 0x53, 0x6C, + 0x5C, 0x24, 0x94, 0x95, 0x79, 0xB6, 0x2C, 0xCA, 0x5A, 0x0F, 0x21, 0xF2, 0x21, 0x42, 0x84, 0x9D, + 0x07, 0x09, 0x80, 0x77, 0x37, 0xDD, 0xC3, 0x61, 0x40, 0x98, 0x94, 0x9C, 0x30, 0x0C, 0x46, 0x69, + 0x74, 0x0C, 0x88, 0x20, 0x98, 0x20, 0x15, 0x6C, 0x5A, 0x94, 0x75, 0x8E, 0x72, 0xE6, 0xA4, 0x2E, + 0x38, 0x45, 0x10, 0x1D, 0xCF, 0x3D, 0x13, 0x6C, 0x5D, 0x12, 0xEF, 0xAC, 0x73, 0x9E, 0x13, 0x2C, + 0x18, 0xA5, 0x82, 0x5A, 0xAF, 0x9C, 0x0D, 0x6D, 0x27, 0x8C, 0xF3, 0xDA, 0xB8, 0x3A, 0x17, 0x1C, + 0xA6, 0x4D, 0x93, 0x1F, 0x2F, 0xF3, 0xE3, 0xC5, 0xF8, 0x08, 0xCE, 0x97, 0x45, 0x4A, 0xD3, 0x36, + 0xF5, 0xBB, 0x77, 0xBF, 0xDB, 0xAC, 0xB6, 0xE3, 0x70, 0x19, 0xA7, 0x29, 0x46, 0xB3, 0xDA, 0xD6, + 0x84, 0x20, 0xC1, 0x38, 0xC1, 0x00, 0xA4, 0x50, 0x70, 0x1A, 0x8C, 0xC7, 0x0C, 0x47, 0x90, 0xBC, + 0x8F, 0xAB, 0x55, 0x4B, 0x10, 0x31, 0x52, 0x59, 0xE3, 0xD5, 0xAC, 0x53, 0x48, 0x08, 0x11, 0x6B, + 0x62, 0x3F, 0x19, 0xE7, 0xC3, 0x38, 0x8C, 0x08, 0x13, 0x65, 0x9D, 0x75, 0xE3, 0x65, 0x98, 0x13, + 0x00, 0x8B, 0xD4, 0x87, 0xD3, 0xD9, 0x58, 0x67, 0x7D, 0x78, 0x78, 0x3E, 0x46, 0x88, 0x28, 0xA5, + 0xF3, 0xBC, 0x18, 0xEB, 0x09, 0xA5, 0x88, 0x33, 0x9E, 0x67, 0x6D, 0xC3, 0x23, 0x4A, 0x59, 0x8E, + 0x76, 0x9B, 0x7C, 0xD5, 0x55, 0x94, 0x91, 0x90, 0x20, 0x48, 0x80, 0x42, 0x2F, 0x08, 0x0A, 0xCE, + 0xFA, 0x10, 0xCA, 0x8C, 0x3F, 0x9F, 0x7B, 0x84, 0x50, 0x5B, 0x96, 0x10, 0x41, 0xA5, 0xAD, 0x75, + 0x0E, 0x0B, 0x8E, 0x5E, 0xED, 0xD6, 0xBB, 0x55, 0x8B, 0x41, 0xFA, 0xFB, 0x3F, 0xFE, 0xD6, 0x58, + 0xB7, 0x5A, 0xD5, 0x8B, 0x31, 0x30, 0x86, 0xAE, 0x2A, 0xAA, 0x8C, 0x2C, 0x8B, 0xF2, 0x21, 0x31, + 0xC6, 0x0F, 0xE7, 0x61, 0xB7, 0x5B, 0xED, 0xB6, 0xEB, 0x75, 0x53, 0x57, 0x79, 0x16, 0x62, 0xF4, + 0x3E, 0x54, 0x05, 0x83, 0x88, 0xBC, 0x7F, 0xF7, 0x55, 0xDD, 0x75, 0x55, 0x55, 0xA5, 0x94, 0xA6, + 0x69, 0xA4, 0x84, 0xD6, 0x55, 0x4E, 0x08, 0xDE, 0x74, 0xC5, 0xDF, 0xFC, 0xF6, 0x65, 0x5B, 0xD2, + 0x8C, 0x82, 0xBA, 0xE4, 0xAF, 0xAE, 0x1B, 0x90, 0x82, 0xD4, 0x6E, 0xE8, 0x07, 0x63, 0xE2, 0xB0, + 0xB8, 0xA3, 0x2C, 0x71, 0xB0, 0x94, 0x44, 0x82, 0xD1, 0xA6, 0xCD, 0xBA, 0x4A, 0x34, 0x39, 0xAB, + 0x0B, 0xDE, 0x14, 0xE2, 0x7A, 0xDB, 0x6C, 0x56, 0xC5, 0xDB, 0x57, 0x9B, 0x6D, 0x57, 0x9F, 0x8F, + 0x97, 0x52, 0xF0, 0x57, 0xD7, 0xFB, 0x08, 0xB1, 0xB1, 0xAE, 0xDB, 0xBC, 0xA8, 0x32, 0x7A, 0xBD, + 0xBB, 0xE2, 0x3C, 0xFF, 0xFD, 0x6F, 0xDE, 0x20, 0x94, 0xAA, 0xB2, 0xBC, 0x4C, 0x52, 0xB4, 0xAF, + 0xFE, 0xF2, 0xCF, 0xFF, 0x0D, 0xBA, 0xD3, 0xEF, 0xBE, 0xDA, 0x62, 0x0E, 0x30, 0xC1, 0x5D, 0x5B, + 0x8A, 0x8C, 0x6C, 0xDA, 0xB2, 0xA9, 0x8B, 0xAB, 0xDD, 0x2A, 0x81, 0x98, 0x97, 0x1D, 0x01, 0x7E, + 0xD6, 0xFE, 0xBC, 0xB8, 0x1C, 0xBB, 0x55, 0x5D, 0xCC, 0x72, 0xD1, 0xC6, 0x0E, 0xD3, 0x0C, 0x31, + 0x94, 0x52, 0xBA, 0xE0, 0x2E, 0xE3, 0xBC, 0x68, 0xA5, 0x3C, 0x2A, 0xF7, 0xBF, 0xB9, 0x4C, 0xCB, + 0x77, 0xFF, 0xFE, 0xAF, 0xF3, 0x3C, 0xC4, 0x14, 0xB5, 0x31, 0x94, 0x53, 0x91, 0xB1, 0xCD, 0xBA, + 0xC2, 0x31, 0x0A, 0x46, 0xCF, 0xE3, 0x62, 0xAD, 0xDE, 0x6D, 0x6B, 0xED, 0x3C, 0xC2, 0xE4, 0x70, + 0x38, 0xED, 0xBA, 0x0C, 0x42, 0x8C, 0x20, 0xA8, 0x72, 0x4E, 0x00, 0x68, 0x0B, 0xE1, 0x7C, 0xF8, + 0xED, 0xFB, 0xDB, 0xBF, 0xFC, 0xC7, 0x4F, 0x4D, 0x5B, 0x31, 0x42, 0xA4, 0x52, 0x75, 0xDB, 0x9C, + 0x8E, 0x03, 0x4C, 0x89, 0x60, 0x8A, 0x11, 0xB4, 0x21, 0x3A, 0x6B, 0x9D, 0xF7, 0x52, 0x59, 0x6B, + 0x7D, 0x04, 0x30, 0x46, 0x68, 0x8C, 0xB6, 0x2E, 0x71, 0x46, 0xB3, 0x2C, 0xB3, 0xCE, 0x18, 0xA5, + 0x8A, 0x8C, 0xF2, 0x8C, 0x81, 0x08, 0x33, 0x41, 0x4E, 0x97, 0xCB, 0xB4, 0xA8, 0xDD, 0xA6, 0x95, + 0x4A, 0x2F, 0xDA, 0x66, 0x19, 0x5F, 0x16, 0xFD, 0x87, 0x6F, 0x6E, 0x8B, 0x9C, 0xB7, 0x25, 0x52, + 0xC6, 0x39, 0x17, 0x38, 0xA3, 0xA7, 0xCB, 0x88, 0x30, 0x4A, 0x10, 0x9D, 0x87, 0xB1, 0xA9, 0xC4, + 0x9B, 0xD7, 0x7B, 0x42, 0x71, 0x59, 0xB0, 0x97, 0x37, 0x1D, 0xC3, 0xA8, 0x2A, 0xF2, 0xC7, 0xC7, + 0x49, 0x08, 0xE1, 0xBC, 0xFF, 0xE5, 0xCB, 0x61, 0xBF, 0x6F, 0x7E, 0xFB, 0xCD, 0x2B, 0x6D, 0x9D, + 0x5C, 0x8C, 0x0F, 0x41, 0x4B, 0x87, 0x08, 0x39, 0x9D, 0x67, 0x6B, 0x7D, 0x08, 0x41, 0x2D, 0xCE, + 0xBA, 0xE8, 0x7C, 0x02, 0x10, 0x4D, 0xB3, 0x51, 0xDA, 0x2A, 0xE3, 0x09, 0xE5, 0xB9, 0xC8, 0x96, + 0x65, 0x11, 0x9C, 0x34, 0x55, 0x75, 0xF7, 0xF8, 0xE4, 0xBC, 0xA7, 0x08, 0x3B, 0x0F, 0xA4, 0xD4, + 0x31, 0x06, 0xA3, 0x5D, 0x0C, 0x11, 0x81, 0x84, 0x10, 0x9C, 0x66, 0x5D, 0xE4, 0x42, 0x2D, 0x32, + 0x85, 0x54, 0xE5, 0xE2, 0x66, 0xBF, 0xDE, 0x6F, 0xDA, 0xA6, 0xE0, 0x39, 0xA3, 0x45, 0x91, 0x21, + 0x80, 0x36, 0x75, 0xBE, 0x6E, 0x72, 0x91, 0x57, 0x3E, 0x84, 0xFE, 0x72, 0x21, 0x18, 0x52, 0x4E, + 0xCB, 0x9C, 0x0C, 0x93, 0xB2, 0x2E, 0x06, 0xBB, 0x2C, 0x8B, 0xD9, 0x74, 0x75, 0xF4, 0xCE, 0x28, + 0x05, 0x10, 0x8F, 0x21, 0x25, 0x98, 0x6C, 0x48, 0xEF, 0x5F, 0xBF, 0xB8, 0xD9, 0x75, 0xEB, 0xAE, + 0x6B, 0x9B, 0x2E, 0x02, 0xA6, 0x74, 0x48, 0x09, 0x2A, 0x65, 0x3F, 0x7D, 0x79, 0x7E, 0x7C, 0xEE, + 0xCF, 0x97, 0xC9, 0x85, 0xD0, 0x0F, 0x1A, 0x51, 0x26, 0x72, 0xD1, 0xB5, 0xC5, 0xBA, 0x2D, 0x5E, + 0xBD, 0x58, 0xEF, 0xB7, 0xCD, 0x7E, 0xDB, 0x5E, 0x6D, 0x5B, 0x84, 0x31, 0x48, 0xA9, 0xA9, 0x8A, + 0x4C, 0x08, 0x0C, 0x20, 0x4C, 0xE9, 0x38, 0x4C, 0x00, 0x00, 0xCE, 0xD8, 0x76, 0xDD, 0xF4, 0xFD, + 0xB0, 0xDB, 0x6E, 0x12, 0x44, 0x00, 0x80, 0x14, 0xE3, 0xEB, 0xAB, 0x6D, 0x5B, 0x15, 0x18, 0xC0, + 0x10, 0xA2, 0xD6, 0x4E, 0xA9, 0xE5, 0x3C, 0x0C, 0xC6, 0x5A, 0x04, 0x71, 0x59, 0xE7, 0x37, 0x9B, + 0xD5, 0xCD, 0xBE, 0xDB, 0x6D, 0xCA, 0xBB, 0x87, 0x93, 0xB6, 0xBE, 0x2C, 0xB3, 0x14, 0x03, 0x84, + 0xBF, 0xCE, 0x7C, 0xE0, 0xB2, 0xE4, 0x52, 0xDB, 0xAE, 0xC9, 0x82, 0x8F, 0x29, 0xA6, 0x97, 0xFB, + 0xCD, 0x8B, 0xDD, 0xAA, 0x6B, 0x8A, 0x65, 0x96, 0xC6, 0xD8, 0x32, 0x17, 0xDA, 0xF8, 0x08, 0x00, + 0x44, 0x54, 0x4A, 0x95, 0x09, 0x66, 0xB4, 0x9D, 0xA4, 0xA2, 0x18, 0x76, 0x35, 0xBB, 0xF4, 0x32, + 0x02, 0x50, 0xD5, 0x42, 0x64, 0x59, 0x5E, 0x30, 0x8C, 0x52, 0xB3, 0xAA, 0xAA, 0xB6, 0x32, 0xCE, + 0x95, 0x8C, 0x7A, 0x6B, 0x16, 0xA5, 0x13, 0x44, 0x29, 0xF9, 0xCB, 0x30, 0x65, 0x9C, 0xB5, 0x55, + 0x4E, 0x18, 0x66, 0xA2, 0x8A, 0xC9, 0x39, 0xE7, 0x52, 0x02, 0xCF, 0xBD, 0x26, 0x18, 0x39, 0xA7, + 0xF3, 0x9C, 0x57, 0x25, 0x3F, 0xF7, 0x6A, 0x98, 0x97, 0x75, 0x57, 0x94, 0x9C, 0xB6, 0x55, 0x76, + 0xBD, 0xA9, 0x36, 0xAB, 0x1B, 0x42, 0x8B, 0xC3, 0xD3, 0xC3, 0xE9, 0x74, 0x80, 0x28, 0xEE, 0xF7, + 0x5D, 0x96, 0x21, 0xC1, 0x08, 0x63, 0x2C, 0xC6, 0xB8, 0x48, 0x15, 0x7D, 0x2C, 0xB3, 0xFC, 0x3C, + 0x4C, 0x4A, 0xDB, 0xFD, 0x6E, 0x93, 0x53, 0xF6, 0xE5, 0xEE, 0xC0, 0x19, 0x95, 0x8B, 0xCE, 0x72, + 0x16, 0x22, 0x42, 0x00, 0xA6, 0x14, 0xAC, 0x8B, 0x8C, 0xB3, 0x32, 0xE7, 0x65, 0x91, 0x7B, 0x6F, + 0xBC, 0x4B, 0xFD, 0x1C, 0xAC, 0x4F, 0x82, 0xE1, 0xE3, 0x65, 0x9C, 0x16, 0x67, 0x8C, 0xAD, 0xCA, + 0xF2, 0xFD, 0xED, 0x6B, 0x65, 0xA4, 0x35, 0x36, 0xF8, 0x24, 0x44, 0xF6, 0xF0, 0x74, 0xB0, 0x56, + 0x69, 0xAD, 0x7E, 0xFE, 0xFC, 0x04, 0x49, 0xA4, 0x8C, 0x23, 0xC6, 0x78, 0x86, 0x6F, 0x6E, 0x36, + 0x55, 0x41, 0x2B, 0x81, 0x42, 0xD4, 0x75, 0x9E, 0xDD, 0x5C, 0xBD, 0x8E, 0xC1, 0x4F, 0x8B, 0x7C, + 0xFF, 0xF6, 0x4D, 0x4A, 0x69, 0x59, 0x96, 0xEB, 0xEB, 0xEB, 0xF5, 0x7A, 0x8D, 0xFF, 0xF3, 0xFF, + 0xF4, 0xDF, 0xD5, 0x4D, 0x6B, 0xE5, 0xF2, 0xE7, 0xDF, 0x7F, 0x2D, 0xB5, 0xB7, 0x4A, 0x41, 0x8C, + 0x42, 0x4C, 0xEF, 0xDE, 0xBC, 0xCC, 0x8B, 0xC2, 0x58, 0x67, 0x6C, 0xA8, 0x9A, 0x35, 0xC6, 0x69, + 0xBB, 0x6D, 0xAF, 0xAE, 0x77, 0xEB, 0x75, 0x55, 0x08, 0x86, 0x30, 0x70, 0x3E, 0x36, 0x55, 0xD1, + 0xD4, 0xCD, 0xD5, 0xFE, 0x7A, 0xB7, 0xDF, 0x5B, 0xEB, 0x11, 0x4C, 0xCE, 0x48, 0x6B, 0x34, 0xA6, + 0xF8, 0x9B, 0xDB, 0x9B, 0xD7, 0x57, 0xDD, 0xCB, 0x6D, 0x63, 0x94, 0x1A, 0xC6, 0x45, 0x29, 0x7B, + 0x38, 0x8D, 0x77, 0x8F, 0xE7, 0x2F, 0xCF, 0xFA, 0xC3, 0xA7, 0xC3, 0xC3, 0xD3, 0x30, 0x8C, 0x6A, + 0xD6, 0x54, 0x86, 0xEC, 0x72, 0xB8, 0xAF, 0x72, 0x34, 0xCC, 0xEA, 0xF9, 0x38, 0xDC, 0xDD, 0x1F, + 0x62, 0xF2, 0x59, 0x4E, 0x0A, 0xC1, 0xD6, 0x6D, 0xB1, 0xDD, 0xE4, 0x8C, 0x41, 0xC1, 0xF0, 0x66, + 0xDD, 0xEC, 0x37, 0x55, 0x80, 0xE4, 0xD3, 0xF3, 0x12, 0xCC, 0x42, 0x79, 0x86, 0x28, 0x73, 0xEA, + 0x12, 0x23, 0x5A, 0xB5, 0x19, 0xF4, 0xCA, 0x3A, 0xF0, 0x34, 0xC2, 0xC7, 0xC3, 0x29, 0x03, 0xCB, + 0xFF, 0xFC, 0x3F, 0xFE, 0xED, 0xB1, 0x3F, 0x9F, 0x2F, 0x17, 0x88, 0x00, 0x00, 0xC1, 0x04, 0x47, + 0x19, 0x76, 0xC6, 0xCE, 0x52, 0x51, 0x82, 0x54, 0x10, 0xFF, 0xFE, 0xE3, 0xA7, 0x41, 0xBA, 0x4F, + 0x5F, 0x3E, 0x6F, 0xEA, 0xE2, 0x78, 0x3E, 0x73, 0x46, 0xBD, 0x8F, 0xA7, 0x7E, 0x18, 0xE7, 0x65, + 0x96, 0xEA, 0xE3, 0xDD, 0xA9, 0x6B, 0xBB, 0x5C, 0xD0, 0xC8, 0x57, 0x93, 0x5C, 0x86, 0xD3, 0x5D, + 0x5E, 0x55, 0x56, 0x1B, 0x6B, 0xF5, 0xDD, 0xF3, 0x39, 0x21, 0x78, 0x3E, 0x0F, 0x46, 0x9B, 0x4D, + 0x57, 0x63, 0x08, 0x8D, 0x31, 0xE3, 0xB2, 0x6C, 0x56, 0x15, 0x84, 0xF0, 0x7C, 0x3A, 0x0F, 0xD3, + 0x54, 0x64, 0xD9, 0xC7, 0xBB, 0xA7, 0x17, 0xBB, 0x4E, 0x6B, 0xFB, 0xA7, 0x6F, 0x5E, 0xFF, 0xDB, + 0x0F, 0x9F, 0x6E, 0xF6, 0x3B, 0x4C, 0xF9, 0x7F, 0xFC, 0xF0, 0xB1, 0xCC, 0x45, 0x8C, 0x81, 0x63, + 0x02, 0x40, 0xB2, 0xCE, 0xBD, 0xB9, 0xDA, 0x4D, 0xB3, 0xDC, 0x74, 0x35, 0x04, 0x50, 0x70, 0x11, + 0x00, 0x98, 0x66, 0x45, 0x08, 0x09, 0x31, 0x40, 0x08, 0x08, 0xC5, 0x8B, 0x94, 0x9B, 0xF5, 0x6A, + 0x51, 0xCA, 0x39, 0xDB, 0x36, 0x65, 0x59, 0x08, 0x6D, 0x1C, 0x86, 0x48, 0x1A, 0x93, 0x40, 0xCA, + 0x58, 0xE6, 0xAC, 0x1B, 0x97, 0x45, 0x1B, 0x17, 0x42, 0xEC, 0xAA, 0xEC, 0x72, 0x99, 0x87, 0x69, + 0x68, 0x6B, 0xDE, 0x95, 0x02, 0x03, 0xF4, 0xE5, 0xF1, 0xE4, 0x7C, 0xF0, 0xDE, 0x43, 0x0C, 0x32, + 0xCE, 0xEB, 0x92, 0x15, 0x39, 0x16, 0x9C, 0x32, 0xCC, 0x82, 0x73, 0x4D, 0x99, 0x39, 0x93, 0x0E, + 0xA7, 0xE9, 0xD7, 0xA7, 0xE0, 0x74, 0x19, 0xAF, 0x36, 0x9B, 0xA1, 0x9F, 0xE7, 0x45, 0xD6, 0x55, + 0x5E, 0x66, 0x59, 0x88, 0x7E, 0xD6, 0x56, 0x6B, 0x23, 0x17, 0x9D, 0x12, 0x88, 0x09, 0x68, 0x1B, + 0x44, 0xC6, 0x21, 0x46, 0x4A, 0x79, 0xE7, 0x7C, 0x5D, 0xE7, 0xB9, 0xE0, 0x4D, 0xDD, 0xD4, 0xF5, + 0xEA, 0xF5, 0xCB, 0xFD, 0x8B, 0x5D, 0xFD, 0xFE, 0xF6, 0x6A, 0xB7, 0xED, 0x9A, 0xBA, 0x9C, 0xA6, + 0x99, 0x52, 0xE2, 0xBC, 0x9F, 0x66, 0xE5, 0x7C, 0xC8, 0x19, 0x9E, 0x26, 0xED, 0x43, 0xAA, 0x33, + 0xEE, 0xAC, 0xD5, 0x46, 0x37, 0x55, 0x05, 0x01, 0x18, 0x86, 0x19, 0x04, 0x10, 0x7D, 0x74, 0x2E, + 0xED, 0x76, 0x9B, 0xED, 0xAA, 0x59, 0xAF, 0x3A, 0xCE, 0x05, 0x04, 0x28, 0xC5, 0x50, 0xD7, 0xA5, + 0x4F, 0xD6, 0xFA, 0x88, 0xA9, 0x68, 0x9A, 0x3C, 0x45, 0xDD, 0xAD, 0x3A, 0x9E, 0x97, 0x72, 0x91, + 0x28, 0x21, 0x84, 0x58, 0x5E, 0xE4, 0xDE, 0xA7, 0xD7, 0xD7, 0x37, 0x6D, 0xDE, 0xF5, 0x93, 0x12, + 0x22, 0x3F, 0xF5, 0xE6, 0xEE, 0xE9, 0xF2, 0xE5, 0xE1, 0xF1, 0xD4, 0x0F, 0x00, 0x26, 0x17, 0xA2, + 0xF3, 0xB1, 0xC8, 0x2B, 0x80, 0xD0, 0xE3, 0xF3, 0xC5, 0x79, 0x1F, 0x82, 0x1F, 0x2E, 0xE3, 0x3C, + 0x69, 0x8C, 0xC9, 0xE3, 0xF3, 0xE5, 0xC3, 0xE7, 0x67, 0x88, 0x28, 0x63, 0xEC, 0xF5, 0xD5, 0xE6, + 0xD5, 0xF5, 0xFA, 0xE5, 0xF5, 0x6A, 0xD3, 0x55, 0xCB, 0x2C, 0x27, 0xA9, 0x01, 0x42, 0xEF, 0x5F, + 0x5F, 0xBF, 0x7F, 0xF3, 0x1A, 0x42, 0xD8, 0xB4, 0x75, 0x53, 0x17, 0x82, 0xE1, 0xEB, 0x55, 0xE9, + 0xAC, 0x3F, 0x9E, 0x47, 0xEB, 0xC2, 0xA2, 0xD4, 0xC3, 0xA1, 0xFF, 0xFC, 0x74, 0x3C, 0x9D, 0xA7, + 0x59, 0x1A, 0x65, 0xDC, 0xBC, 0xE8, 0xE3, 0x65, 0xD4, 0xCE, 0x85, 0x98, 0x36, 0x9B, 0xCA, 0x5A, + 0x2F, 0x95, 0xB1, 0xD6, 0x01, 0x04, 0x04, 0xC7, 0xB9, 0xC0, 0x9C, 0x73, 0x63, 0x9C, 0x36, 0x0E, + 0x00, 0xF0, 0xCD, 0x9B, 0x17, 0xDF, 0xBC, 0x7B, 0xBB, 0x6E, 0x4A, 0xC1, 0x88, 0x52, 0x5A, 0x30, + 0x9A, 0x0B, 0xAA, 0x8C, 0xF3, 0x21, 0xC5, 0x10, 0x43, 0x8C, 0x8C, 0xE0, 0x49, 0x3A, 0x82, 0x11, + 0x4C, 0xC1, 0x79, 0x1F, 0x01, 0x12, 0x1C, 0x5F, 0x2E, 0x33, 0x42, 0xD1, 0x5A, 0x6B, 0x8D, 0xB5, + 0x46, 0x39, 0xA7, 0xCB, 0x9C, 0x0B, 0x04, 0xA2, 0x77, 0x01, 0x42, 0x2E, 0x58, 0x5E, 0x8A, 0xAC, + 0x40, 0xC9, 0x25, 0x1F, 0xC3, 0x79, 0x92, 0x31, 0x61, 0x08, 0xA2, 0xD4, 0xDA, 0x27, 0x42, 0x10, + 0xB8, 0x5A, 0x67, 0x84, 0x60, 0x4C, 0xE0, 0xA2, 0xCC, 0x30, 0x2D, 0x8C, 0x72, 0x92, 0x10, 0x80, + 0x69, 0xDD, 0xE5, 0xEB, 0xD5, 0x55, 0x4C, 0xFC, 0x7C, 0x3E, 0x68, 0x3D, 0x09, 0xC1, 0x5E, 0xBF, + 0xEA, 0x60, 0x8C, 0x7A, 0x36, 0x4D, 0x99, 0x7F, 0xBE, 0xBB, 0x77, 0xC1, 0x0E, 0xE3, 0x52, 0xE5, + 0x45, 0x3F, 0x4B, 0x96, 0x61, 0x81, 0x49, 0x95, 0x97, 0x3F, 0xFD, 0x7C, 0xBF, 0xDE, 0xB4, 0x04, + 0x21, 0xA3, 0x35, 0x44, 0x90, 0xD1, 0x0C, 0xA4, 0xB8, 0x28, 0x59, 0x56, 0x85, 0x5C, 0x34, 0x81, + 0x88, 0x10, 0x22, 0x97, 0x79, 0x9C, 0x4D, 0xD7, 0xB6, 0x11, 0x3A, 0xEB, 0x4D, 0x57, 0xE7, 0x29, + 0x81, 0x97, 0x37, 0xAF, 0xF7, 0xDB, 0xCD, 0x34, 0x8C, 0x9C, 0xB2, 0xB2, 0x6C, 0x18, 0x81, 0x10, + 0xC2, 0x65, 0x91, 0x95, 0xE0, 0x87, 0x93, 0xC2, 0x98, 0x5A, 0xE3, 0xAC, 0x31, 0x6D, 0x55, 0x25, + 0xEB, 0xE7, 0x69, 0x06, 0x29, 0x22, 0x00, 0x20, 0x26, 0x9C, 0x65, 0x14, 0x13, 0x8C, 0xE1, 0xFE, + 0xC5, 0x55, 0xF4, 0x5A, 0x08, 0xBA, 0x5A, 0x35, 0xED, 0xBA, 0xCE, 0x0A, 0x86, 0xFF, 0x87, 0x7F, + 0xF8, 0xFB, 0xAA, 0x5A, 0xE5, 0x0C, 0x79, 0x9F, 0x8C, 0xB5, 0x29, 0x85, 0x94, 0x52, 0xD3, 0x14, + 0x65, 0x95, 0xCD, 0x8B, 0x0C, 0x11, 0x54, 0x55, 0xB5, 0xBB, 0xDA, 0x76, 0x8D, 0xD8, 0xED, 0xD6, + 0xD1, 0xDA, 0xCB, 0xE9, 0xB9, 0xAC, 0x45, 0x4C, 0x89, 0x11, 0x9A, 0xA2, 0xDB, 0xAD, 0x5B, 0x46, + 0x71, 0x88, 0x21, 0x7A, 0xCB, 0x08, 0x22, 0x04, 0x2B, 0x39, 0x96, 0x79, 0x5E, 0x66, 0xF9, 0xF1, + 0x70, 0xB9, 0x8C, 0x6E, 0x98, 0x34, 0x44, 0x6C, 0x91, 0x7A, 0x94, 0x6A, 0x94, 0x91, 0x94, 0xD7, + 0x90, 0xD7, 0xD3, 0xD8, 0x9F, 0xFB, 0x91, 0x16, 0x5D, 0xD0, 0x73, 0xF0, 0x8A, 0xE2, 0x70, 0xB8, + 0x4C, 0xD3, 0xA2, 0x52, 0x0A, 0x21, 0x84, 0x4F, 0x9F, 0x9F, 0x87, 0x7E, 0x32, 0xC6, 0xFD, 0xF8, + 0xE1, 0xF1, 0xE9, 0x38, 0x59, 0x17, 0x2F, 0xF3, 0x32, 0x2A, 0xCD, 0xB3, 0x7C, 0x51, 0x21, 0xCB, + 0x00, 0x4A, 0x61, 0x31, 0xA1, 0x62, 0xA1, 0x6E, 0xD6, 0xE3, 0x2C, 0x31, 0xC2, 0xFF, 0xF4, 0xEF, + 0x77, 0x09, 0x91, 0x5F, 0x3E, 0x7C, 0xF7, 0xED, 0xB7, 0x5F, 0x49, 0x29, 0xA7, 0xE1, 0x6C, 0x9C, + 0x8B, 0x09, 0x49, 0x65, 0x97, 0x79, 0x3E, 0x9E, 0x2E, 0x8F, 0xC7, 0xD3, 0x65, 0x1C, 0xBD, 0xF7, + 0xF3, 0xAC, 0x1F, 0x2F, 0xF2, 0xC3, 0x2F, 0x1F, 0xBF, 0xFE, 0xED, 0x1F, 0xA7, 0xCB, 0x73, 0x55, + 0x8A, 0xE3, 0xA5, 0x27, 0x14, 0x33, 0x91, 0xEB, 0x40, 0x59, 0xD1, 0xAD, 0xAF, 0x5E, 0xBF, 0xBD, + 0x69, 0x73, 0x81, 0xBE, 0xFF, 0xF1, 0x67, 0xCA, 0xF3, 0xFD, 0xCD, 0xED, 0xD4, 0x9F, 0xC6, 0xFE, + 0x84, 0x30, 0xFE, 0x75, 0xED, 0x91, 0x33, 0x3A, 0x8E, 0xF2, 0x70, 0x1E, 0xBB, 0xA6, 0x2C, 0x33, + 0x3A, 0x4C, 0x32, 0x01, 0xB0, 0xCC, 0x6A, 0x91, 0xE6, 0xDD, 0x9B, 0x57, 0x4A, 0x5B, 0x41, 0xF1, + 0x9F, 0x7F, 0x73, 0xFB, 0xD5, 0xED, 0xCD, 0x7F, 0xFB, 0xEB, 0x8F, 0x52, 0xB9, 0xAB, 0xCD, 0xEA, + 0xD3, 0xDD, 0x23, 0xC1, 0xE0, 0xF7, 0x5F, 0xBD, 0xB4, 0xD6, 0xE5, 0x42, 0x7C, 0xFF, 0xE3, 0x87, + 0x3F, 0xFF, 0xEE, 0xED, 0x2F, 0x5F, 0x8E, 0xDE, 0x9A, 0x8C, 0x52, 0x6D, 0xFD, 0xF1, 0xD2, 0x1B, + 0x65, 0xB3, 0x3C, 0x07, 0x10, 0x7A, 0xEB, 0x28, 0xC1, 0x18, 0xA5, 0xCD, 0xBA, 0xCB, 0xB3, 0xEC, + 0xE1, 0xE9, 0x39, 0xE3, 0x0C, 0x01, 0xA8, 0x74, 0xE8, 0xEA, 0x4A, 0x1B, 0x35, 0xCF, 0x0B, 0x80, + 0xB4, 0x29, 0x72, 0xA5, 0x6D, 0x08, 0xBE, 0x2C, 0x78, 0x95, 0x65, 0x20, 0x06, 0x00, 0x52, 0x5D, + 0x12, 0x04, 0xD3, 0xBA, 0x2C, 0x8A, 0xBC, 0xBC, 0xDA, 0x76, 0xAF, 0xF7, 0xEB, 0x9B, 0x5D, 0xFB, + 0xF6, 0xE5, 0xAE, 0xCC, 0xC8, 0x8B, 0x6D, 0xB3, 0x6E, 0xCA, 0x75, 0x27, 0x60, 0x02, 0x04, 0xE1, + 0x77, 0xB7, 0xFB, 0x26, 0xCF, 0xB6, 0xEB, 0xB2, 0x2E, 0x05, 0x21, 0x90, 0x31, 0xB0, 0x5D, 0xD5, + 0xC6, 0x69, 0x29, 0x7D, 0xF4, 0x08, 0x44, 0x80, 0x50, 0x32, 0xD6, 0xBC, 0xB8, 0x5A, 0x63, 0x08, + 0x63, 0x82, 0xC6, 0x05, 0x17, 0x02, 0xE3, 0x14, 0x21, 0x0C, 0x31, 0x4C, 0x10, 0xE6, 0x82, 0xFF, + 0xF9, 0xF7, 0xBF, 0xBF, 0xD9, 0xDF, 0xD4, 0x55, 0x0D, 0x01, 0x48, 0x09, 0x46, 0x00, 0xF3, 0x2C, + 0xCB, 0x33, 0xBE, 0x5A, 0x17, 0x45, 0xC1, 0x29, 0x45, 0x4D, 0x9B, 0x21, 0x04, 0xAA, 0x4A, 0x50, + 0xCE, 0x21, 0xC4, 0x9C, 0x80, 0xE0, 0xBD, 0x73, 0x21, 0x7A, 0x47, 0x11, 0x68, 0xEB, 0xA6, 0xEB, + 0x9A, 0xBA, 0x2A, 0x31, 0xCD, 0x01, 0x44, 0xC6, 0x25, 0xA9, 0xBD, 0x31, 0x26, 0x13, 0xD9, 0xCB, + 0x9B, 0x1B, 0x00, 0xE3, 0xE9, 0xD2, 0x1F, 0x4E, 0xC3, 0xA6, 0xED, 0x60, 0x0A, 0x4F, 0x87, 0xA1, + 0x9F, 0xF4, 0xCF, 0x9F, 0x8F, 0xDA, 0x06, 0x4A, 0x60, 0x3F, 0x8D, 0x65, 0x29, 0xAE, 0x77, 0x9B, + 0xE4, 0x93, 0x71, 0x30, 0x44, 0xE8, 0x3C, 0x98, 0x75, 0x78, 0x3C, 0x1E, 0x1F, 0x9E, 0x0F, 0x59, + 0x46, 0xD7, 0xAB, 0x6A, 0x9A, 0x15, 0x67, 0x3C, 0x41, 0xA8, 0xAC, 0x45, 0x18, 0x00, 0x00, 0x8F, + 0x87, 0x13, 0x21, 0x30, 0x01, 0xBC, 0x48, 0x63, 0x8C, 0x33, 0xDE, 0xF7, 0xB3, 0x7C, 0x78, 0xBA, + 0x28, 0x65, 0x8D, 0x75, 0xC3, 0xBC, 0xC4, 0x08, 0xAB, 0x2A, 0x7F, 0x79, 0xB3, 0xDB, 0xAC, 0x9A, + 0xAA, 0xCC, 0x02, 0x88, 0x28, 0xC5, 0x14, 0x4C, 0x08, 0x96, 0xA4, 0x58, 0x72, 0xFA, 0xE5, 0xF1, + 0x38, 0x2E, 0x0B, 0xC1, 0x58, 0x6A, 0x3B, 0x2C, 0xD2, 0x05, 0x90, 0x67, 0x5C, 0x19, 0x67, 0x7D, + 0xF8, 0xB5, 0x3E, 0x0C, 0x11, 0xD2, 0xDA, 0x80, 0x14, 0xDA, 0xAE, 0x5C, 0x37, 0x55, 0xD7, 0xE4, + 0x42, 0xB0, 0x73, 0xBF, 0xAC, 0xDA, 0x92, 0x12, 0x4A, 0x31, 0x8C, 0x31, 0x55, 0x45, 0x51, 0xE7, + 0x99, 0xB7, 0x8A, 0x71, 0xFC, 0x78, 0xB8, 0x18, 0xEB, 0x6D, 0x08, 0x54, 0xE4, 0x39, 0xA7, 0x5A, + 0x6B, 0xEB, 0x43, 0x5B, 0x30, 0x8C, 0xB0, 0x32, 0xAE, 0x2A, 0xC8, 0xBA, 0xE3, 0xDE, 0x5A, 0x2A, + 0xCA, 0xE3, 0x65, 0xC2, 0x14, 0x7A, 0x1F, 0x52, 0x4A, 0xB9, 0x60, 0x8C, 0x20, 0x41, 0x45, 0x74, + 0x20, 0x7A, 0xD7, 0x54, 0x4D, 0x48, 0x91, 0x50, 0x6C, 0x9D, 0xEB, 0x07, 0x85, 0x08, 0xA7, 0x82, + 0x11, 0xC2, 0x73, 0x21, 0x62, 0xB2, 0x31, 0x21, 0x84, 0x00, 0x45, 0xDE, 0xDA, 0x90, 0x02, 0x14, + 0x8C, 0x8C, 0x93, 0x6E, 0xDB, 0x15, 0x26, 0x2C, 0x2F, 0x44, 0xD3, 0x14, 0xC1, 0x47, 0x84, 0x68, + 0x96, 0x45, 0x21, 0xC2, 0x66, 0x9B, 0xEF, 0xF7, 0x75, 0x55, 0x31, 0xC1, 0x49, 0x59, 0x65, 0x31, + 0x79, 0x23, 0x75, 0x0A, 0x31, 0x25, 0xD0, 0x4F, 0xF2, 0x57, 0xCA, 0xF1, 0xB7, 0x5F, 0xBF, 0xEA, + 0x07, 0x05, 0x62, 0xAC, 0x8A, 0x4C, 0x2F, 0x0A, 0xA4, 0x84, 0x31, 0x6D, 0xDB, 0xFA, 0xF9, 0xD4, + 0x4B, 0xA9, 0x09, 0x84, 0x10, 0x42, 0x80, 0x51, 0x51, 0x17, 0x65, 0x55, 0x7D, 0xFF, 0xD3, 0x17, + 0x84, 0x21, 0x4C, 0x49, 0x49, 0xBD, 0xAA, 0x3B, 0xC6, 0x32, 0x8C, 0xF0, 0x65, 0x98, 0x61, 0x0A, + 0x4F, 0xC7, 0x3E, 0x41, 0x52, 0x66, 0x8C, 0x12, 0x58, 0x08, 0xDA, 0x54, 0xA5, 0xB1, 0xBE, 0xA9, + 0x4A, 0x0C, 0x60, 0x5D, 0x88, 0x3A, 0xCF, 0x63, 0xC0, 0x19, 0x2F, 0x38, 0xC2, 0xD6, 0x84, 0xED, + 0xF6, 0x4A, 0x1B, 0x9F, 0xE5, 0x14, 0x13, 0xC8, 0x05, 0xBB, 0xF4, 0x87, 0xA6, 0x2D, 0x42, 0xB0, + 0x7A, 0x99, 0x38, 0x8B, 0xF0, 0x7F, 0xFF, 0xDF, 0xFE, 0x0B, 0x04, 0x78, 0x1C, 0x2E, 0xD3, 0x70, + 0x4C, 0x30, 0x44, 0x90, 0x28, 0xCD, 0x18, 0x25, 0xC3, 0xD4, 0xBB, 0xE0, 0x37, 0xAB, 0x2B, 0xE7, + 0xA0, 0x8F, 0x81, 0x73, 0xCC, 0x05, 0x43, 0x08, 0x4B, 0xB9, 0x60, 0x82, 0x9C, 0xF6, 0xD1, 0xFB, + 0x61, 0xEA, 0xDB, 0x3A, 0x63, 0x3C, 0x8B, 0x11, 0xC6, 0x18, 0x31, 0xA2, 0x2E, 0x84, 0x14, 0x42, + 0x9D, 0x57, 0x18, 0x93, 0xFB, 0xC7, 0x7B, 0x6B, 0x03, 0x40, 0xF8, 0xFE, 0xF1, 0x58, 0xE4, 0x3C, + 0xB1, 0xFA, 0xE9, 0xD8, 0x27, 0xB7, 0x50, 0x96, 0x5D, 0xA6, 0x19, 0x42, 0xF4, 0xF5, 0xD7, 0xBF, + 0xF3, 0x6A, 0x9C, 0xE7, 0x0B, 0x49, 0x8E, 0x50, 0xEC, 0xA3, 0xDB, 0x6D, 0x4B, 0x18, 0x60, 0x88, + 0xA1, 0xCC, 0x39, 0xE1, 0xF8, 0x87, 0x1F, 0x0F, 0x4D, 0x57, 0x71, 0xC1, 0xFB, 0xF3, 0xB8, 0xDA, + 0xAC, 0x77, 0x57, 0xEF, 0x3F, 0xFC, 0xFC, 0x5D, 0x59, 0xA0, 0x4D, 0xD9, 0x8C, 0x2E, 0xCF, 0x33, + 0x9A, 0xE7, 0xC5, 0x77, 0x3F, 0x7D, 0xB2, 0xEA, 0x72, 0xB3, 0xCE, 0x81, 0xD8, 0xFE, 0xCB, 0x5F, + 0xBF, 0x7B, 0xF7, 0xE6, 0xAA, 0xA0, 0x17, 0x4C, 0xB3, 0xD3, 0x71, 0xB1, 0x11, 0xC7, 0xE4, 0xBE, + 0xDA, 0x96, 0x65, 0x8E, 0xBE, 0x3F, 0x9A, 0x9C, 0xB1, 0x55, 0x91, 0x9F, 0xCE, 0xEA, 0x2F, 0xDF, + 0x7F, 0xBE, 0x7D, 0xF3, 0xE6, 0xF5, 0xBB, 0xDF, 0xFD, 0xF0, 0x97, 0xFF, 0xCB, 0x3A, 0xE7, 0xA3, + 0x8D, 0xDE, 0x5D, 0xBD, 0x78, 0x93, 0x48, 0x83, 0x09, 0xA5, 0x94, 0x7D, 0xFE, 0xE1, 0x9F, 0x08, + 0x06, 0x57, 0x2F, 0x6E, 0xA5, 0xC5, 0x21, 0xC5, 0x2F, 0x3F, 0xFD, 0xB3, 0xE0, 0x22, 0x84, 0x88, + 0x00, 0x20, 0x18, 0x33, 0x4E, 0x62, 0x08, 0x00, 0x13, 0x02, 0xD1, 0xBA, 0x2B, 0xB5, 0x73, 0x87, + 0xE3, 0x50, 0x54, 0x19, 0xC5, 0xF4, 0xFD, 0xED, 0xCB, 0xFF, 0xE7, 0x2F, 0x7F, 0xFD, 0xC7, 0x6F, + 0xDF, 0x5D, 0x6D, 0xDA, 0xBF, 0xFE, 0x74, 0x37, 0x4B, 0x1D, 0x13, 0x78, 0x73, 0xFB, 0xF2, 0xDF, + 0xBE, 0xFF, 0xF1, 0xEF, 0xBE, 0x7D, 0xEF, 0x93, 0x7B, 0x7C, 0xBE, 0x7C, 0xFC, 0xF4, 0x28, 0x32, + 0xDA, 0xB6, 0xF9, 0x2F, 0x77, 0xC7, 0x57, 0xBB, 0x6E, 0x5A, 0x5C, 0x44, 0xD8, 0x5A, 0x07, 0x21, + 0xB6, 0x21, 0x9C, 0x4E, 0x97, 0xDB, 0x9B, 0xF5, 0xDB, 0xDB, 0x3D, 0x17, 0xAC, 0x2C, 0x8A, 0xBB, + 0xA7, 0xC3, 0xE3, 0x73, 0x0F, 0x23, 0x48, 0x09, 0x54, 0x55, 0x51, 0xE7, 0x1C, 0xC2, 0x24, 0xA5, + 0x05, 0x90, 0xBC, 0x7E, 0xB5, 0xD1, 0xCA, 0x46, 0xA0, 0xBB, 0x2E, 0x3F, 0x9F, 0x66, 0x63, 0x1C, + 0xA3, 0xF0, 0xFE, 0xF1, 0xB0, 0x68, 0xFB, 0xB7, 0xBF, 0xFD, 0x36, 0x17, 0x19, 0xE7, 0x84, 0x52, + 0xC2, 0x28, 0x00, 0x08, 0x46, 0x1F, 0x83, 0x8F, 0x01, 0xF8, 0x3C, 0xC7, 0x3E, 0x44, 0xA3, 0x81, + 0xF3, 0x01, 0x24, 0x50, 0x35, 0xB9, 0xB3, 0xD6, 0x3A, 0x47, 0x29, 0xCE, 0x32, 0x92, 0xE5, 0xEC, + 0xFE, 0x7E, 0xBA, 0xBF, 0x9F, 0x31, 0x45, 0xC6, 0xD9, 0xE4, 0x42, 0xDB, 0x55, 0xFD, 0x22, 0xC7, + 0xC9, 0x3C, 0x1D, 0xA6, 0x69, 0xD1, 0x10, 0x86, 0x14, 0x22, 0xC2, 0x90, 0x52, 0xF6, 0xB7, 0x7F, + 0xFE, 0x7D, 0x25, 0x8A, 0x71, 0x90, 0xCE, 0x5B, 0x04, 0xC1, 0x65, 0x32, 0xE3, 0xA2, 0x10, 0xF4, + 0x9C, 0xD3, 0xAE, 0xCD, 0x9B, 0x32, 0xA3, 0x04, 0xF8, 0x68, 0xAC, 0x8B, 0x04, 0x63, 0xCE, 0x98, + 0x5C, 0x6C, 0xF2, 0x36, 0x13, 0x22, 0x04, 0x9F, 0xBC, 0x5B, 0x75, 0x9D, 0x71, 0x38, 0x01, 0x3C, + 0x8E, 0x8B, 0xB2, 0x4E, 0x70, 0xAE, 0x8D, 0x4E, 0x20, 0x41, 0xE8, 0x9B, 0x66, 0x45, 0x29, 0xC9, + 0x33, 0x06, 0x53, 0x3C, 0x1C, 0x7B, 0xBD, 0xCC, 0xC3, 0xD0, 0x3F, 0x1C, 0x87, 0xA2, 0x5D, 0x61, + 0xD1, 0x8E, 0xFD, 0xA1, 0xE0, 0x2E, 0x45, 0xFF, 0xCD, 0xED, 0xEB, 0xB2, 0x2C, 0x8F, 0x87, 0x3E, + 0xCB, 0x2B, 0x63, 0xFD, 0xB4, 0xC8, 0xAA, 0x6D, 0x7F, 0xFA, 0xF8, 0x39, 0xCF, 0x79, 0x53, 0x65, + 0x31, 0x85, 0x61, 0x36, 0xD3, 0xA4, 0xBD, 0x57, 0x6D, 0x5B, 0x7B, 0x17, 0x9C, 0xF7, 0x5A, 0xA9, + 0xAE, 0x2D, 0x62, 0x80, 0xD6, 0x7A, 0xC6, 0xE9, 0xC3, 0xE1, 0x64, 0xBD, 0xDF, 0x6F, 0xD6, 0x20, + 0x44, 0x4A, 0x45, 0x08, 0xAE, 0x29, 0x33, 0x00, 0x52, 0xC6, 0xA8, 0x10, 0x54, 0x4A, 0xC9, 0x33, + 0x66, 0x5C, 0x3C, 0x3C, 0x3D, 0xED, 0xB6, 0xAB, 0x92, 0x8B, 0xF3, 0x65, 0xBC, 0x3F, 0x8D, 0xFB, + 0xDD, 0x75, 0x9E, 0x15, 0x4F, 0x87, 0x67, 0xE3, 0x9C, 0x10, 0xC2, 0x7B, 0xBB, 0x28, 0xC5, 0x38, + 0xD5, 0x4A, 0x97, 0x45, 0x06, 0x40, 0xE2, 0x0C, 0x63, 0x0C, 0x44, 0xCE, 0x01, 0x00, 0x04, 0xA2, + 0xD5, 0xAA, 0x3D, 0x9D, 0x67, 0x4A, 0xC8, 0xBA, 0x2B, 0x04, 0xC7, 0x2E, 0xC4, 0x60, 0x3C, 0x23, + 0x78, 0x9A, 0xE4, 0x71, 0x94, 0xA7, 0x5E, 0x7A, 0xE7, 0x98, 0x60, 0x98, 0x72, 0x02, 0xEC, 0x65, + 0x98, 0x8C, 0x0D, 0xAB, 0x92, 0x1F, 0x07, 0x0D, 0x10, 0x6E, 0x0A, 0x22, 0x04, 0x4A, 0xC1, 0x69, + 0x87, 0x18, 0xCF, 0x30, 0xD0, 0x9B, 0xA6, 0x28, 0xCB, 0x9C, 0x72, 0x56, 0x14, 0xB9, 0x52, 0xA0, + 0xEF, 0x15, 0x26, 0xA8, 0xEF, 0x67, 0xA9, 0xA5, 0x0B, 0x21, 0x84, 0x08, 0x12, 0x4A, 0x20, 0xB6, + 0x6D, 0x4E, 0x29, 0x76, 0x36, 0x48, 0x69, 0xAA, 0x5C, 0x40, 0xE0, 0x66, 0xA9, 0x11, 0x00, 0x82, + 0x21, 0x80, 0x29, 0xC6, 0x04, 0x02, 0x62, 0xA3, 0xDD, 0xEF, 0xBB, 0xA9, 0x5F, 0xA6, 0x51, 0x7B, + 0x9F, 0xB4, 0x73, 0x98, 0xA0, 0xB2, 0xE4, 0x94, 0xE0, 0xAA, 0xCA, 0x8A, 0x42, 0x20, 0x84, 0x18, + 0xA5, 0xCE, 0x5A, 0x90, 0x12, 0x41, 0xE8, 0xA7, 0x8F, 0xCF, 0x2E, 0xC0, 0x5A, 0xF0, 0x77, 0xB7, + 0x7B, 0x88, 0x61, 0xB0, 0x0E, 0x01, 0x1C, 0x22, 0x00, 0x09, 0x52, 0x4A, 0x03, 0x80, 0xC7, 0x73, + 0xAF, 0x94, 0xE4, 0x94, 0x02, 0x84, 0xCA, 0xAA, 0xB2, 0xCE, 0x21, 0x84, 0x97, 0x65, 0xA6, 0x14, + 0x3D, 0x3E, 0x9D, 0x36, 0xAB, 0x6D, 0x5D, 0x14, 0xF3, 0x3C, 0x5C, 0x26, 0xD9, 0x56, 0x35, 0x63, + 0xE0, 0xF9, 0x3C, 0xA4, 0x44, 0x28, 0x01, 0x65, 0x4E, 0x95, 0xF6, 0x79, 0x9E, 0x2B, 0xE7, 0xC6, + 0x69, 0x21, 0x28, 0x65, 0x82, 0xA7, 0x04, 0x29, 0x67, 0x04, 0xE1, 0xAB, 0x6D, 0xC3, 0x29, 0x8E, + 0xD1, 0x1B, 0x9F, 0x9A, 0xA6, 0x34, 0x46, 0x79, 0x0F, 0x43, 0x32, 0xDE, 0x2D, 0x52, 0xDA, 0x18, + 0x53, 0x48, 0x00, 0xFE, 0xAF, 0xFF, 0xCB, 0x7F, 0x4E, 0xC9, 0x6B, 0xB5, 0xFC, 0xF0, 0xF1, 0x93, + 0x0D, 0x5E, 0x70, 0x06, 0x02, 0xAE, 0xCA, 0xC2, 0x26, 0xBF, 0xDB, 0xAE, 0x51, 0xC2, 0x87, 0xE7, + 0x11, 0x20, 0x74, 0xEC, 0xC7, 0xDD, 0xA6, 0x76, 0x21, 0x94, 0x25, 0x6B, 0x4A, 0x56, 0x70, 0xAE, + 0xAC, 0xFE, 0xE9, 0xE3, 0x01, 0x02, 0x6C, 0xAC, 0xBA, 0xDA, 0x34, 0xD3, 0x2C, 0x77, 0xEB, 0x15, + 0x23, 0xB4, 0x69, 0xAA, 0x18, 0x82, 0x31, 0x7E, 0x5A, 0x96, 0xF3, 0xE4, 0xDA, 0xDD, 0x9B, 0xFE, + 0xF4, 0x98, 0x97, 0xDD, 0xFD, 0xD3, 0xE3, 0x4F, 0x3F, 0xFE, 0xF5, 0xE5, 0xA6, 0xBD, 0xCC, 0xA6, + 0xDB, 0xBF, 0x6E, 0xDB, 0x6E, 0x38, 0x3D, 0xE7, 0x9C, 0x4D, 0xF3, 0xF9, 0x7A, 0x57, 0x83, 0x94, + 0x10, 0x8A, 0x10, 0x44, 0x39, 0x9B, 0xE0, 0xD3, 0x76, 0x53, 0x24, 0x08, 0x16, 0xED, 0x41, 0x42, + 0x52, 0xD9, 0xA1, 0x9F, 0xBF, 0xFD, 0x9B, 0xBF, 0xFB, 0xF2, 0xF1, 0x63, 0x5D, 0x62, 0x80, 0xD0, + 0xCF, 0x9F, 0x1E, 0xB3, 0x72, 0x75, 0xFB, 0xFA, 0xF6, 0x97, 0xBB, 0xE7, 0x92, 0x9A, 0x3F, 0xBE, + 0xEF, 0x4E, 0xC3, 0x3C, 0xBA, 0x4E, 0x1A, 0xD0, 0xA0, 0xC7, 0x2A, 0x57, 0x8C, 0xE1, 0xC0, 0xBE, + 0xF2, 0x3E, 0xE0, 0xF9, 0xC7, 0x2A, 0xAF, 0xB2, 0xA6, 0xFA, 0xF9, 0xA4, 0x70, 0x48, 0xDB, 0x92, + 0xE5, 0x8C, 0xFF, 0xD7, 0xFF, 0x78, 0x7E, 0xF3, 0xFE, 0x3D, 0x12, 0xED, 0x97, 0x8F, 0x3F, 0x3E, + 0x3D, 0x3F, 0xDE, 0x5C, 0xB7, 0x2E, 0x10, 0x1B, 0xC5, 0x97, 0x5F, 0x7E, 0x8A, 0x5E, 0x96, 0x55, + 0x39, 0x2F, 0xE6, 0xF6, 0xFA, 0xBA, 0xAA, 0xCA, 0x7E, 0x56, 0xE7, 0x69, 0xC9, 0x88, 0xA5, 0x8C, + 0x06, 0xE7, 0x11, 0x48, 0xD6, 0x78, 0x00, 0x40, 0x5E, 0xF2, 0x3C, 0x67, 0xC9, 0x01, 0x90, 0x20, + 0xCF, 0x58, 0x51, 0x96, 0x00, 0xA6, 0xB1, 0xBF, 0xC4, 0x14, 0x6F, 0xB6, 0xDD, 0x38, 0xEA, 0xE0, + 0xD3, 0xC3, 0x79, 0x2C, 0x84, 0xF8, 0xE3, 0x6F, 0xDE, 0x3C, 0x1E, 0xCF, 0xDE, 0xDB, 0x3F, 0x7D, + 0xFB, 0xFE, 0xEE, 0x72, 0x51, 0xCA, 0x9C, 0x8E, 0x67, 0xCE, 0x31, 0x44, 0x10, 0x63, 0x72, 0x3A, + 0x0E, 0xE3, 0xE2, 0x08, 0x63, 0x45, 0xC6, 0x5F, 0xBF, 0xDA, 0xFE, 0xF4, 0xF3, 0xE7, 0xDB, 0xEB, + 0xCD, 0xCD, 0xD5, 0x6A, 0x9C, 0x75, 0x84, 0x00, 0xC1, 0x44, 0x10, 0x28, 0x8A, 0x0C, 0x41, 0x84, + 0x21, 0x82, 0x10, 0x79, 0x1B, 0x6D, 0xF0, 0x10, 0x22, 0x1F, 0xC3, 0x22, 0x25, 0x04, 0x80, 0x09, + 0x34, 0x5D, 0x16, 0x8C, 0x98, 0x49, 0xD1, 0x06, 0xAB, 0xB4, 0x26, 0x88, 0x80, 0x08, 0xB4, 0xB4, + 0x19, 0x81, 0x75, 0xC3, 0xCA, 0x5A, 0x80, 0x84, 0x38, 0x13, 0x84, 0x20, 0xE3, 0xBC, 0x33, 0xA6, + 0xE9, 0x72, 0x6D, 0xDC, 0x34, 0x6B, 0x82, 0x18, 0xA6, 0x48, 0x2D, 0x32, 0x2F, 0x8B, 0xBA, 0xAC, + 0xCE, 0xA7, 0x79, 0x96, 0xAE, 0x6B, 0xF3, 0xB6, 0xCE, 0xB2, 0x8C, 0x04, 0x0F, 0x94, 0x74, 0x90, + 0xC4, 0x7F, 0xFE, 0xEB, 0x47, 0x88, 0x49, 0x04, 0xF4, 0xE7, 0x8F, 0x4F, 0x4A, 0x2E, 0x99, 0xA0, + 0x6D, 0xD7, 0x7C, 0xF5, 0xF6, 0x4D, 0x9E, 0x61, 0xBD, 0x04, 0xAD, 0xF5, 0xE1, 0x7C, 0xC1, 0xB4, + 0x78, 0x3A, 0x9E, 0x10, 0x26, 0xC6, 0x5A, 0x63, 0x54, 0x57, 0x57, 0xBF, 0xFB, 0xEA, 0x05, 0x02, + 0x29, 0xC1, 0x00, 0x60, 0xC2, 0x10, 0x2B, 0xE5, 0x31, 0x04, 0x6D, 0x9D, 0x87, 0x90, 0xAC, 0x56, + 0x9C, 0xE1, 0x10, 0x71, 0x3F, 0x5B, 0xEB, 0x22, 0x65, 0xDC, 0x5A, 0x57, 0x64, 0xDC, 0x79, 0x43, + 0x39, 0x45, 0x18, 0x0D, 0xA3, 0xC4, 0x8C, 0x16, 0x22, 0x0B, 0xDE, 0x64, 0x9C, 0x71, 0x9A, 0xC5, + 0x14, 0xE5, 0x32, 0x98, 0x00, 0x4D, 0xA0, 0xD3, 0xE5, 0x7E, 0xBB, 0xA2, 0x55, 0x55, 0x10, 0x9A, + 0x05, 0x17, 0x19, 0x65, 0xC3, 0x38, 0xF7, 0xBD, 0x1C, 0xA6, 0x25, 0x2F, 0x4B, 0xF8, 0xAB, 0x2E, + 0x1D, 0x7C, 0x82, 0x50, 0xE9, 0x30, 0x4D, 0x4B, 0x5D, 0x52, 0x08, 0xA0, 0xD4, 0x9E, 0x12, 0x0C, + 0x60, 0x4C, 0x31, 0x70, 0xC6, 0x20, 0x44, 0x8F, 0x87, 0x8B, 0x0F, 0x6E, 0xBB, 0x69, 0x28, 0x46, + 0x29, 0xA6, 0xCB, 0xA8, 0x85, 0x60, 0xBB, 0x55, 0xB3, 0xCC, 0xB2, 0xAD, 0x72, 0x4A, 0xD9, 0xBC, + 0x4C, 0x30, 0x79, 0x88, 0xC8, 0xB9, 0x9F, 0x32, 0x8E, 0x33, 0x2E, 0x8E, 0x97, 0x25, 0x21, 0xBC, + 0x5E, 0x6D, 0x2F, 0x97, 0xF3, 0xA2, 0x35, 0x21, 0x74, 0x98, 0xC6, 0xB2, 0x28, 0x7C, 0x08, 0x42, + 0x70, 0x46, 0xB1, 0x0F, 0x3E, 0x06, 0x5F, 0x55, 0x99, 0x36, 0x36, 0xC6, 0xC0, 0x33, 0xE6, 0xAC, + 0x63, 0x54, 0x50, 0xCC, 0xDB, 0xA6, 0x22, 0x28, 0x41, 0x08, 0x05, 0x27, 0x65, 0xC6, 0x30, 0xA6, + 0x9C, 0x67, 0x0F, 0x87, 0xE7, 0xFB, 0x87, 0xA7, 0xF3, 0x65, 0x5A, 0xB4, 0x45, 0x28, 0xD5, 0x25, + 0xBB, 0x4C, 0x36, 0xE3, 0x6C, 0x55, 0xE7, 0x2E, 0x61, 0x0C, 0xC1, 0xF3, 0xB9, 0x8F, 0x09, 0xBE, + 0x7B, 0xB1, 0x3E, 0x9E, 0xFA, 0xAB, 0xFD, 0x7E, 0xD3, 0xE2, 0xAA, 0xCC, 0x09, 0x11, 0x98, 0x11, + 0x25, 0xB5, 0x31, 0x86, 0x72, 0x86, 0x08, 0x39, 0x9F, 0xC7, 0x45, 0x69, 0x08, 0xF1, 0xF9, 0xB8, + 0x04, 0x1F, 0xCB, 0x2A, 0x93, 0x72, 0x11, 0x1C, 0x9F, 0x2F, 0x12, 0x93, 0xAC, 0xA9, 0x45, 0xD7, + 0x94, 0xA7, 0x73, 0xFF, 0x7C, 0xBC, 0xAC, 0x57, 0x35, 0x63, 0xB4, 0x2E, 0xC4, 0x34, 0xCB, 0x10, + 0xBC, 0x28, 0x33, 0x25, 0x8D, 0xB5, 0x00, 0x41, 0x7C, 0x19, 0x86, 0x97, 0xFB, 0x6E, 0x96, 0x7A, + 0x98, 0x15, 0x04, 0x10, 0x23, 0xC8, 0x28, 0x69, 0x6A, 0x51, 0xE4, 0x14, 0x62, 0x44, 0x09, 0x58, + 0xB5, 0x0D, 0x8C, 0x18, 0x46, 0x68, 0x9D, 0x85, 0x28, 0x39, 0x1B, 0x7E, 0x9D, 0x19, 0x8C, 0x11, + 0x02, 0x80, 0xCA, 0x22, 0x67, 0x14, 0x13, 0x42, 0x08, 0xA1, 0x94, 0xD0, 0x18, 0x62, 0x4C, 0xD1, + 0x58, 0x8D, 0x71, 0x62, 0x94, 0xF5, 0xD3, 0x9C, 0x17, 0x0D, 0x01, 0xD0, 0xA8, 0xC9, 0x86, 0x54, + 0x95, 0xF5, 0xBC, 0xCC, 0xDA, 0xDA, 0x7E, 0x9C, 0x9A, 0x8A, 0x53, 0xC2, 0x96, 0x59, 0x13, 0xCE, + 0x86, 0x45, 0x5B, 0xE7, 0xEA, 0xBA, 0xD6, 0xCB, 0xA2, 0x94, 0xA3, 0x8C, 0x58, 0xE7, 0x57, 0x5D, + 0x53, 0x14, 0x58, 0x14, 0x79, 0x08, 0xE4, 0xFE, 0xCB, 0x53, 0x08, 0xBE, 0xAC, 0xB2, 0x9B, 0x57, + 0xE5, 0xE1, 0xF9, 0xA8, 0xA4, 0x17, 0x8C, 0x6A, 0xE7, 0x71, 0x5B, 0xF2, 0x4C, 0xF0, 0x8F, 0x77, + 0xA7, 0xC3, 0x45, 0x5A, 0x0F, 0xFA, 0xD1, 0x68, 0x07, 0xB6, 0xDB, 0x75, 0x00, 0x58, 0x4A, 0xB3, + 0xCC, 0xCE, 0xBA, 0xB4, 0x28, 0x85, 0x11, 0x2C, 0xF3, 0xFC, 0x7C, 0x1A, 0x31, 0x40, 0x05, 0xE7, + 0x31, 0xC4, 0xAE, 0x5E, 0x39, 0x17, 0x73, 0x91, 0xED, 0xD7, 0xAB, 0x3C, 0xCB, 0xBA, 0xB6, 0xDC, + 0x6E, 0xD7, 0x8C, 0x52, 0x8C, 0x51, 0x0C, 0x3E, 0x44, 0x8B, 0x52, 0x74, 0x30, 0x9F, 0x43, 0xB6, + 0xBF, 0xDA, 0x0E, 0xC3, 0x00, 0xCC, 0xF3, 0x3F, 0xFC, 0xCD, 0x0D, 0x44, 0x09, 0x01, 0xD7, 0xD4, + 0x6D, 0x00, 0x64, 0x39, 0x7F, 0x6E, 0x9B, 0x9A, 0x67, 0x59, 0x0A, 0x6A, 0x51, 0x4A, 0x29, 0x13, + 0x43, 0xD4, 0xDA, 0x49, 0xE5, 0x9A, 0x26, 0x7B, 0x7A, 0x1E, 0x95, 0xF1, 0x7D, 0x2F, 0x6D, 0x08, + 0x75, 0xB7, 0xD1, 0x36, 0x9D, 0x0F, 0x5F, 0x52, 0x82, 0x21, 0xA4, 0x10, 0x41, 0x46, 0xB1, 0xD6, + 0xF6, 0xA6, 0xC5, 0xDF, 0xBE, 0x5D, 0xF5, 0xF3, 0xA4, 0xAC, 0xB3, 0xA0, 0xE6, 0x79, 0x87, 0xF5, + 0x2F, 0x57, 0x2B, 0xBA, 0x6F, 0x57, 0xC5, 0xEA, 0x76, 0x3E, 0xFE, 0xB0, 0xAB, 0x21, 0x67, 0xF1, + 0xA7, 0x4F, 0xD3, 0x9A, 0x81, 0x4D, 0x09, 0xBD, 0xB3, 0xD1, 0xA7, 0xE0, 0x5D, 0x89, 0x25, 0xC0, + 0xA5, 0x9C, 0xFB, 0xEB, 0x6D, 0x65, 0x41, 0xFE, 0xE3, 0x87, 0x87, 0x65, 0x1E, 0x9C, 0x33, 0x42, + 0x50, 0x82, 0x71, 0x53, 0xB7, 0xCA, 0xE8, 0xCF, 0x9F, 0x3F, 0xFE, 0xFE, 0xCF, 0xFF, 0xFD, 0xC3, + 0xFD, 0x67, 0x42, 0x40, 0x7F, 0x99, 0x29, 0x45, 0x31, 0x25, 0x8C, 0x60, 0x02, 0x10, 0x63, 0x64, + 0x95, 0xB7, 0xD6, 0x73, 0xCE, 0x21, 0x22, 0x18, 0xA1, 0xE8, 0x83, 0x73, 0xD1, 0x59, 0x6D, 0x4C, + 0x30, 0x0E, 0x14, 0x65, 0x66, 0x43, 0xD8, 0xB4, 0xE5, 0xAB, 0xEB, 0x55, 0x4A, 0x71, 0xBB, 0x5A, + 0xFF, 0xCB, 0xBF, 0xFF, 0x90, 0x97, 0x45, 0xF0, 0x6E, 0xB7, 0x69, 0xDF, 0xBC, 0xBC, 0xBE, 0xD9, + 0xAD, 0xCE, 0x97, 0x25, 0xA6, 0xFF, 0xDF, 0xCF, 0xBA, 0x7D, 0x7D, 0x0D, 0xA3, 0x2F, 0x44, 0xB6, + 0xED, 0xBA, 0xBE, 0x57, 0xFD, 0x20, 0xA7, 0x71, 0x01, 0x20, 0x85, 0x08, 0xA6, 0xC9, 0x7C, 0xFC, + 0xF4, 0x3C, 0x4C, 0xFA, 0xE9, 0x30, 0xDD, 0x3F, 0xF5, 0x8B, 0xF1, 0xE7, 0xCB, 0xDC, 0x0F, 0xF3, + 0xF1, 0x38, 0x5F, 0x2E, 0xCA, 0xC8, 0xF8, 0xF8, 0x3C, 0x06, 0x40, 0x4E, 0x97, 0xC9, 0xD9, 0x50, + 0x55, 0x85, 0xB5, 0x71, 0x9C, 0x55, 0xB3, 0x29, 0x19, 0x47, 0x59, 0x26, 0xEE, 0x1F, 0xFA, 0x2F, + 0xF7, 0xE7, 0x7E, 0xD2, 0x97, 0x51, 0x8D, 0xD2, 0xCD, 0x4A, 0x3F, 0xF7, 0x0B, 0x24, 0x99, 0x73, + 0x4E, 0x6A, 0xE3, 0x5C, 0xD0, 0xC6, 0x42, 0x8C, 0x7C, 0x02, 0xD6, 0xC1, 0x4F, 0x77, 0xA7, 0x63, + 0xAF, 0x3E, 0xDD, 0x5D, 0xA4, 0xB6, 0x87, 0xF3, 0x32, 0x4B, 0xC3, 0x05, 0x2D, 0x73, 0x11, 0xA2, + 0xFF, 0xF1, 0xA7, 0x3B, 0xC1, 0x79, 0xC6, 0xE8, 0x7A, 0xD3, 0xBD, 0xB8, 0xB9, 0xBA, 0x5C, 0x8E, + 0xC1, 0x2E, 0x8B, 0x4E, 0xF7, 0x4F, 0xCF, 0x11, 0x10, 0x69, 0x3C, 0x44, 0xD8, 0x87, 0x80, 0xE0, + 0xAF, 0x34, 0x44, 0xB9, 0x5D, 0x6F, 0x31, 0x4A, 0xC3, 0x30, 0xC9, 0x45, 0x5F, 0xCE, 0x53, 0xF4, + 0xA0, 0xA9, 0x9B, 0x3C, 0x63, 0x00, 0x82, 0x10, 0x23, 0x82, 0x84, 0x73, 0x96, 0x67, 0x4C, 0x70, + 0x5A, 0x57, 0x19, 0xE7, 0xF0, 0x78, 0x3E, 0x01, 0x08, 0x31, 0x06, 0x0F, 0x0F, 0xA7, 0x53, 0x3F, + 0xFB, 0x18, 0xEF, 0x1F, 0x4F, 0xE3, 0xB8, 0x00, 0x10, 0x11, 0xC6, 0x21, 0x44, 0xC1, 0x99, 0x35, + 0x13, 0xC3, 0xFE, 0x6A, 0xDB, 0xAC, 0xBA, 0x9A, 0x50, 0x0A, 0x09, 0x9A, 0x17, 0x23, 0x95, 0x85, + 0x28, 0x69, 0x6B, 0x89, 0xA0, 0xE3, 0x22, 0x33, 0xC1, 0x39, 0xA7, 0xCE, 0xFB, 0xBB, 0xFB, 0x03, + 0x00, 0x28, 0xCB, 0x84, 0xD6, 0x66, 0x98, 0x35, 0x26, 0x8C, 0xE0, 0x14, 0xBC, 0x23, 0x14, 0x11, + 0x8C, 0xDA, 0xBA, 0xE2, 0x9C, 0x10, 0x04, 0x63, 0x0C, 0x84, 0x30, 0x82, 0xE9, 0x38, 0xCB, 0x2C, + 0xA3, 0xD6, 0x3A, 0x82, 0x31, 0x63, 0x58, 0x19, 0xB5, 0x48, 0x13, 0x43, 0x22, 0x04, 0xB7, 0x4D, + 0xC9, 0x79, 0x09, 0x71, 0x9E, 0x30, 0x3D, 0x9E, 0x4E, 0xF3, 0x32, 0x0B, 0x2E, 0xF6, 0xDB, 0x9D, + 0x36, 0x46, 0x5B, 0x9B, 0x52, 0x04, 0x00, 0x84, 0x10, 0x17, 0xA5, 0xB4, 0x75, 0x00, 0x44, 0x42, + 0x10, 0xA5, 0xC4, 0xFB, 0x18, 0x42, 0x0C, 0x21, 0x32, 0x4E, 0x42, 0x88, 0xD3, 0x2C, 0x4F, 0xE7, + 0x51, 0x1A, 0x37, 0x4C, 0xFA, 0xFE, 0x79, 0x1C, 0x27, 0x79, 0x3A, 0x0F, 0x08, 0xA6, 0xCD, 0x3A, + 0xCB, 0x73, 0x7A, 0xEE, 0x17, 0x04, 0xE1, 0x76, 0xDD, 0x22, 0x8C, 0x8A, 0x9C, 0xEF, 0xD7, 0x0D, + 0xA7, 0x2C, 0x78, 0x13, 0xA2, 0x2B, 0x73, 0x41, 0x10, 0x5C, 0x75, 0xC5, 0x8B, 0xAB, 0xCE, 0x49, + 0x2F, 0x97, 0x70, 0x7F, 0x3F, 0xF7, 0x97, 0xF9, 0xCB, 0xE7, 0x27, 0x63, 0xDC, 0x34, 0x2E, 0x29, + 0x85, 0x98, 0xA2, 0xC8, 0x38, 0x17, 0x34, 0xCF, 0xE8, 0xAB, 0x57, 0x9B, 0xCD, 0xA6, 0x02, 0x28, + 0x69, 0xAD, 0x79, 0xCE, 0xAB, 0xAA, 0xA4, 0x18, 0x4D, 0x72, 0x36, 0xD6, 0xEE, 0xB7, 0xAD, 0xD3, + 0xCE, 0x85, 0x74, 0x38, 0x0E, 0x08, 0x41, 0x88, 0xF0, 0xAF, 0xA0, 0xDD, 0x94, 0x92, 0xD4, 0xE6, + 0xDD, 0xDB, 0xFD, 0xB6, 0xAD, 0x9E, 0x2F, 0x03, 0xE1, 0xD4, 0x7B, 0x57, 0xE4, 0x54, 0x70, 0xBA, + 0xEA, 0x0A, 0x46, 0x10, 0xE7, 0x84, 0xE7, 0xC2, 0xB9, 0x20, 0xB5, 0x9D, 0x16, 0x15, 0x22, 0x30, + 0xDA, 0x51, 0x8C, 0xA6, 0x59, 0x3D, 0x1C, 0x2F, 0xCA, 0x99, 0x2F, 0xCF, 0xE7, 0x49, 0x2A, 0x0C, + 0x63, 0x3F, 0xCD, 0xCE, 0x87, 0xE7, 0x73, 0xFF, 0xD3, 0xA7, 0xFB, 0x90, 0xBC, 0x75, 0xEE, 0xEE, + 0xE9, 0x64, 0x5D, 0x4C, 0x00, 0x70, 0xCE, 0x8C, 0xD2, 0x00, 0x42, 0x00, 0x09, 0xA7, 0x4C, 0x70, + 0x51, 0x97, 0xD5, 0xCB, 0xAB, 0x6D, 0x59, 0x64, 0x8C, 0x70, 0xCE, 0x08, 0x23, 0xB4, 0x6B, 0x1A, + 0xA3, 0x0C, 0x88, 0xA9, 0xED, 0x1A, 0x84, 0x20, 0xA7, 0xB8, 0x69, 0x0A, 0x8C, 0x40, 0x84, 0xE8, + 0xD2, 0xCB, 0x71, 0x98, 0xBC, 0x5D, 0xBA, 0xB6, 0xB8, 0xBE, 0xAA, 0x21, 0x00, 0x4C, 0xF0, 0x4D, + 0xB7, 0x2E, 0xB2, 0xB2, 0x69, 0x4B, 0x7C, 0xB5, 0xEE, 0x08, 0x11, 0x2A, 0x60, 0x2A, 0x4A, 0x6B, + 0x6D, 0xDD, 0xB4, 0xDB, 0xF5, 0x2A, 0xE7, 0xF4, 0x87, 0x9F, 0x3F, 0xF6, 0xC3, 0x48, 0x09, 0x6B, + 0xEB, 0x2C, 0xCB, 0xC4, 0x6E, 0xB5, 0xD9, 0x75, 0xAB, 0x97, 0x57, 0xFB, 0x4D, 0xDB, 0x70, 0x8C, + 0xAB, 0xB2, 0x43, 0x11, 0xAC, 0xEB, 0x72, 0xD5, 0x66, 0xEB, 0xAE, 0x04, 0xC0, 0xD4, 0x65, 0x16, + 0x63, 0x08, 0xD1, 0xCF, 0xF3, 0xEC, 0xBD, 0x29, 0x0A, 0xD6, 0xD4, 0x8C, 0x67, 0xC5, 0xDD, 0xD3, + 0x18, 0xA7, 0x2F, 0x94, 0x98, 0xF7, 0xB7, 0xF5, 0xAA, 0x2B, 0x84, 0x48, 0x57, 0xBB, 0x6A, 0x73, + 0xF3, 0xED, 0xC3, 0xC3, 0x49, 0x08, 0x88, 0x68, 0xB6, 0x4C, 0x53, 0x4C, 0x98, 0x67, 0x7C, 0x18, + 0xA7, 0x7E, 0x50, 0x11, 0x02, 0x80, 0x80, 0xB1, 0x78, 0xD6, 0xE1, 0xDC, 0x4F, 0x98, 0x52, 0x08, + 0xE2, 0x6A, 0x7B, 0x83, 0x60, 0xF2, 0xD6, 0x5C, 0x86, 0x05, 0x53, 0x4C, 0x39, 0xFF, 0xC7, 0xB7, + 0x2B, 0x39, 0xCD, 0xDF, 0xEC, 0x79, 0x89, 0x46, 0x88, 0xC8, 0x6F, 0x76, 0x2D, 0x48, 0xA0, 0x00, + 0x0F, 0x7F, 0x7A, 0x49, 0xAE, 0x36, 0xDB, 0x7E, 0xB2, 0xCB, 0xF1, 0x61, 0x9C, 0x1F, 0x5D, 0x0A, + 0xFB, 0x96, 0x77, 0x25, 0xBD, 0xCA, 0xBC, 0xB2, 0x6E, 0x71, 0x08, 0xC4, 0xA0, 0x83, 0x74, 0xCE, + 0x3F, 0xF7, 0xFA, 0xDD, 0x4B, 0xBE, 0x2A, 0x80, 0x91, 0x0B, 0x8B, 0xF2, 0x6F, 0x5F, 0xE7, 0xBF, + 0xB9, 0xDD, 0xBD, 0x7F, 0xB9, 0xDB, 0x74, 0xAB, 0xB2, 0x2C, 0x1F, 0xCF, 0x32, 0x2F, 0x1B, 0x22, + 0xCA, 0xCF, 0x1F, 0xBE, 0x23, 0x10, 0x20, 0x84, 0x94, 0x76, 0x84, 0x20, 0xCA, 0xB0, 0x52, 0x16, + 0xC4, 0x84, 0x09, 0x65, 0x04, 0x03, 0x00, 0x9C, 0xF7, 0xE7, 0xD3, 0x79, 0xD5, 0xD4, 0x79, 0xC6, + 0x86, 0x71, 0x5A, 0x94, 0xEB, 0xEA, 0xE2, 0xE1, 0x78, 0xDE, 0xAE, 0xEA, 0xAE, 0xC8, 0x94, 0xB1, + 0x99, 0xC8, 0x67, 0x65, 0x36, 0xDB, 0xCD, 0x32, 0x2B, 0x82, 0x08, 0x08, 0x48, 0x29, 0xF7, 0x78, + 0x1C, 0xAC, 0x0F, 0xBF, 0x46, 0x0A, 0xEB, 0xBA, 0x6A, 0x4A, 0x71, 0x3A, 0x8C, 0xCE, 0xC5, 0x90, + 0xE0, 0x87, 0x4F, 0x4F, 0x2E, 0x00, 0x4A, 0x71, 0xD7, 0x94, 0xFD, 0x28, 0x9F, 0x4F, 0x63, 0x4C, + 0x60, 0x56, 0xEE, 0xD3, 0xDD, 0xC1, 0x27, 0xC8, 0x28, 0x5F, 0x66, 0xCD, 0x18, 0x0B, 0x29, 0x41, + 0x88, 0xCA, 0xB2, 0xB8, 0x7B, 0x3A, 0x1F, 0xCF, 0x63, 0x4A, 0x20, 0x04, 0x38, 0x8E, 0x0B, 0x45, + 0x28, 0x2F, 0x73, 0x08, 0x01, 0xC7, 0xB4, 0x5B, 0xB5, 0x9F, 0x1F, 0x0E, 0x90, 0x88, 0x08, 0x00, + 0x65, 0x14, 0x22, 0xD4, 0x8F, 0x72, 0x92, 0xE6, 0xE1, 0xF1, 0xAC, 0x94, 0xE9, 0x7B, 0xE5, 0xBC, + 0xEF, 0x47, 0x3D, 0x4E, 0xDA, 0x5A, 0xBF, 0xCC, 0x26, 0x2B, 0xF2, 0xBB, 0xFB, 0x53, 0x55, 0x66, + 0xDA, 0xB8, 0x8F, 0x9F, 0x8F, 0xCE, 0x47, 0x1F, 0x93, 0xB5, 0xA9, 0x2A, 0x8A, 0xB6, 0xC9, 0xD6, + 0x6D, 0x0D, 0x63, 0x58, 0xB5, 0xB5, 0x71, 0x71, 0x9E, 0x5D, 0xD7, 0x6E, 0xA6, 0x69, 0x44, 0x08, + 0x20, 0x84, 0x0F, 0x97, 0xC9, 0x18, 0x6D, 0x8C, 0xF1, 0xCE, 0x59, 0xAB, 0x41, 0x02, 0x31, 0x24, + 0x6B, 0xD5, 0x22, 0x15, 0x23, 0x74, 0xB7, 0xED, 0x36, 0xAB, 0x0E, 0x40, 0x7C, 0x3A, 0xFF, 0x7F, + 0x55, 0xBD, 0xC7, 0xAE, 0x6D, 0xD9, 0x95, 0x5D, 0x3B, 0xBD, 0x59, 0x76, 0xFB, 0x63, 0xAF, 0x8B, + 0x08, 0x06, 0xF5, 0x10, 0xFF, 0x35, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x4D, 0x32, + 0xA5, 0x44, 0x02, 0x0F, 0xD0, 0xDF, 0xAB, 0x2A, 0x15, 0x5E, 0x3E, 0x20, 0xA1, 0x64, 0xF2, 0x31, + 0x48, 0x86, 0xB9, 0x71, 0x8F, 0xDB, 0x6E, 0xB9, 0xE9, 0x9D, 0x0A, 0x97, 0x2A, 0x68, 0x7E, 0xC4, + 0x18, 0x7D, 0x00, 0xB3, 0xB7, 0x36, 0xE5, 0x0C, 0x2E, 0xD7, 0xB9, 0x6D, 0xDB, 0x4A, 0x88, 0xB6, + 0x91, 0xEB, 0x5E, 0x0A, 0x01, 0x7C, 0x72, 0x5D, 0x5F, 0xED, 0x76, 0x3D, 0xE7, 0x98, 0x4B, 0x11, + 0x7C, 0xD6, 0xC6, 0x0A, 0x41, 0xD6, 0xAB, 0x86, 0x60, 0x9C, 0x62, 0x0C, 0xC1, 0x71, 0x46, 0xD7, + 0xAB, 0x66, 0xB7, 0x6E, 0xA5, 0xE4, 0xDA, 0x38, 0xA7, 0x43, 0x0A, 0x69, 0x1C, 0x97, 0xAF, 0x9E, + 0x47, 0x5E, 0xD1, 0x94, 0x8B, 0xA8, 0xAA, 0x9C, 0x63, 0x29, 0x08, 0x23, 0x24, 0x38, 0x3D, 0x5F, + 0x46, 0x88, 0xA0, 0x75, 0x4E, 0x1B, 0x9B, 0x52, 0xC4, 0x20, 0xD5, 0x95, 0xE0, 0x5C, 0x3A, 0xEB, + 0xAC, 0xD5, 0x31, 0x04, 0x63, 0x1C, 0x84, 0x58, 0xC8, 0xEA, 0x7C, 0x9D, 0x9C, 0xF3, 0x04, 0xC1, + 0x65, 0xD1, 0xC6, 0xB9, 0xD7, 0xF3, 0xE0, 0x7C, 0x6C, 0x1B, 0x49, 0x30, 0xD2, 0x26, 0x40, 0x88, + 0x9D, 0xCF, 0xE7, 0x71, 0x5E, 0xD4, 0x8C, 0x08, 0xEF, 0xEA, 0xF6, 0xB0, 0xDB, 0x4D, 0xF3, 0xAC, + 0x8D, 0xA9, 0x9B, 0x16, 0x22, 0x34, 0xCD, 0x13, 0xC6, 0x58, 0x56, 0x8D, 0xB5, 0xC6, 0x07, 0x0F, + 0x0B, 0x34, 0xC6, 0xC5, 0x9C, 0x8D, 0x0D, 0x21, 0xE6, 0x61, 0x52, 0xDA, 0x58, 0xE7, 0x03, 0x21, + 0x38, 0xC4, 0x38, 0x2E, 0xDA, 0x5A, 0x0F, 0x21, 0x1C, 0xC6, 0x69, 0xD1, 0x2E, 0x67, 0x9C, 0x52, + 0xF9, 0xF0, 0xB0, 0x6D, 0x6A, 0xB6, 0x5A, 0xF5, 0xFB, 0x75, 0x57, 0x73, 0x0A, 0x4B, 0xC1, 0x10, + 0x4A, 0x4E, 0xFB, 0x8A, 0xC6, 0x18, 0xDF, 0xCE, 0x53, 0x23, 0x64, 0xF2, 0x65, 0x56, 0xD1, 0x45, + 0x62, 0x9C, 0x3F, 0x9E, 0x47, 0x00, 0x91, 0x10, 0xE2, 0x3A, 0xE8, 0x18, 0xCB, 0x38, 0x9A, 0xE0, + 0x1D, 0x2C, 0x40, 0x4A, 0xC1, 0x19, 0x39, 0x9F, 0xAF, 0xA0, 0x94, 0xF5, 0xAA, 0xFB, 0xF8, 0xE1, + 0xB6, 0x6B, 0x44, 0x2D, 0xF9, 0xBA, 0xAD, 0xFE, 0xF5, 0x5F, 0xBE, 0x6F, 0x6B, 0x21, 0x28, 0x85, + 0x10, 0x5E, 0x86, 0x59, 0x6B, 0x77, 0x38, 0x6C, 0x29, 0xA5, 0xA7, 0xD3, 0x35, 0xA6, 0x88, 0x30, + 0x7E, 0x77, 0xB3, 0xFD, 0x7F, 0xFF, 0xFD, 0x07, 0x04, 0x51, 0x0C, 0x71, 0xDD, 0x37, 0xB5, 0x64, + 0x31, 0x96, 0x69, 0x72, 0xE3, 0x6C, 0xE6, 0xD9, 0x86, 0x58, 0xCE, 0x97, 0x19, 0x22, 0x84, 0x39, + 0xD1, 0xC6, 0xE7, 0x92, 0x4B, 0x06, 0x21, 0xE6, 0x90, 0x73, 0x29, 0x65, 0x52, 0xF6, 0xED, 0x32, + 0x13, 0x8C, 0x2A, 0xC1, 0x11, 0x46, 0x05, 0x96, 0xAF, 0x2C, 0x10, 0x1B, 0x83, 0x76, 0x61, 0xD1, + 0xAE, 0x92, 0xD5, 0xE5, 0x3A, 0x9F, 0xC7, 0xD9, 0xC5, 0x68, 0x8C, 0x19, 0xE7, 0xA5, 0x40, 0x68, + 0xBD, 0x75, 0x3E, 0x22, 0xC4, 0x10, 0xC2, 0x5D, 0x53, 0x4B, 0x29, 0x31, 0x42, 0x7D, 0xDB, 0x3C, + 0xDC, 0xED, 0x56, 0x9D, 0xDC, 0xF4, 0x92, 0x10, 0xB4, 0xE9, 0x6B, 0x4C, 0x49, 0x2C, 0x25, 0xB9, + 0xD0, 0xD6, 0xF4, 0xE1, 0x71, 0xDF, 0xB7, 0xAD, 0x10, 0x22, 0xA6, 0xEC, 0x4C, 0x9C, 0x16, 0x3D, + 0x6B, 0x13, 0x62, 0xC6, 0xDF, 0x7C, 0x78, 0x6F, 0x5C, 0x9C, 0x8D, 0xF1, 0x21, 0x5B, 0xEB, 0x9C, + 0x35, 0xB5, 0xC0, 0xAF, 0x97, 0x61, 0xD1, 0x1E, 0x42, 0xF4, 0xEE, 0x61, 0xDB, 0x55, 0x72, 0xBF, + 0xBF, 0xEF, 0x37, 0xB7, 0x6E, 0x3E, 0x6B, 0x63, 0x8D, 0xF3, 0x99, 0x77, 0xA7, 0x71, 0x1E, 0x86, + 0x61, 0x98, 0xCD, 0xB4, 0xCC, 0xBF, 0x3E, 0xBF, 0xBE, 0x1D, 0x87, 0xE3, 0x79, 0x18, 0xA7, 0x51, + 0x2B, 0x3D, 0x2F, 0x66, 0x9A, 0x97, 0xE7, 0xB7, 0x6B, 0xE2, 0x37, 0xC3, 0xE2, 0xBB, 0x7E, 0x5F, + 0x00, 0x36, 0xCB, 0x17, 0x29, 0xD9, 0xA2, 0xDC, 0x38, 0x6A, 0x9F, 0x59, 0x80, 0x3B, 0x08, 0x91, + 0xB1, 0x51, 0x2D, 0x3A, 0x38, 0x75, 0xFB, 0xEE, 0xBB, 0xE1, 0xFC, 0x64, 0x8D, 0x5D, 0x6F, 0x6A, + 0xC6, 0xC9, 0xE5, 0x32, 0x43, 0xCC, 0x01, 0xA2, 0x29, 0xA5, 0x52, 0xA0, 0x94, 0xB2, 0x6A, 0x36, + 0x76, 0xB9, 0xFC, 0xCB, 0x07, 0x36, 0xCF, 0xDA, 0x26, 0xB8, 0xDB, 0x6E, 0x7E, 0xB7, 0xC7, 0x29, + 0xAA, 0x0C, 0x90, 0x10, 0xB0, 0xE2, 0x25, 0x5A, 0xF3, 0xF2, 0xF6, 0xE5, 0xAA, 0xAE, 0x10, 0xD1, + 0x3F, 0xFD, 0xF0, 0xFA, 0x7A, 0xD1, 0x14, 0x7B, 0x6D, 0xA3, 0x76, 0xD0, 0x99, 0xC8, 0x50, 0x38, + 0xEB, 0xF8, 0x34, 0xC4, 0x5C, 0xF2, 0xCB, 0x65, 0x38, 0xAA, 0xF8, 0xFF, 0x7F, 0x99, 0x6B, 0xAA, + 0x1F, 0x0E, 0x78, 0xD1, 0x0E, 0xA3, 0xD3, 0x6F, 0x3F, 0xCA, 0x4A, 0x50, 0xEF, 0x34, 0x82, 0xE8, + 0xE1, 0xFE, 0xC1, 0x67, 0xE7, 0x12, 0x6A, 0xD6, 0x8F, 0xE3, 0xE9, 0xA9, 0x22, 0x69, 0xBB, 0x96, + 0x10, 0x22, 0xC6, 0x08, 0x63, 0xC4, 0xEA, 0x00, 0x21, 0x28, 0x00, 0x72, 0x8E, 0x85, 0x20, 0x36, + 0x26, 0xA5, 0x74, 0x2D, 0x05, 0x41, 0x04, 0x82, 0xB8, 0x18, 0x7F, 0xB3, 0xDB, 0x68, 0xAF, 0x9B, + 0xAA, 0xFA, 0xE3, 0xEF, 0xBF, 0x75, 0x5A, 0xB7, 0x6D, 0xEF, 0x42, 0xDE, 0x6E, 0x57, 0x10, 0xA4, + 0xA6, 0xAA, 0xB4, 0xB6, 0xCE, 0xC7, 0xE3, 0x75, 0xB8, 0xCE, 0x36, 0xE5, 0x8C, 0x71, 0x59, 0x6F, + 0xBB, 0x5A, 0xA2, 0x79, 0x34, 0xC3, 0x64, 0x4E, 0xD7, 0x85, 0x71, 0xD9, 0x77, 0x4C, 0x08, 0x4A, + 0x28, 0x7C, 0x7E, 0xBE, 0x2A, 0x15, 0x31, 0xA6, 0xEB, 0xD5, 0x8A, 0x60, 0x8C, 0x09, 0xAE, 0x05, + 0x0B, 0xDE, 0xE6, 0x94, 0x53, 0x0A, 0x7D, 0x27, 0x6F, 0x76, 0xFD, 0x7F, 0xFC, 0xF0, 0x19, 0x53, + 0x22, 0x2A, 0xD1, 0x36, 0xCD, 0x30, 0x2D, 0x4A, 0x5B, 0x46, 0x98, 0xB7, 0xFE, 0xF8, 0x36, 0xDE, + 0x1C, 0x0E, 0x6F, 0xD7, 0x01, 0x00, 0x2C, 0xAB, 0x2A, 0x17, 0x60, 0x94, 0x63, 0x8C, 0x7A, 0xEF, + 0x43, 0x4C, 0x29, 0xE5, 0x9C, 0x00, 0x40, 0xA8, 0x40, 0x04, 0x31, 0xA4, 0x8C, 0x0E, 0x83, 0xB6, + 0x3E, 0xC6, 0x18, 0xD7, 0xEB, 0x7A, 0x18, 0x55, 0x06, 0xB9, 0x92, 0x0C, 0x63, 0x8C, 0x31, 0x3E, + 0x1E, 0xE7, 0x79, 0xB6, 0x7D, 0x5F, 0xCB, 0x8A, 0xD5, 0x55, 0x25, 0x44, 0x7D, 0x3C, 0xCD, 0x08, + 0x89, 0x71, 0x9A, 0xB5, 0x31, 0x10, 0xC3, 0xEB, 0xB8, 0xCC, 0x6A, 0x49, 0x29, 0x41, 0x00, 0xAD, + 0xB3, 0x29, 0x85, 0xBE, 0x6F, 0x9B, 0x5A, 0x78, 0xE7, 0xC6, 0x59, 0x0B, 0xCA, 0x41, 0x41, 0x25, + 0x17, 0xC1, 0x19, 0x42, 0x50, 0x34, 0x14, 0x80, 0xD4, 0xB5, 0x6D, 0x01, 0x44, 0x3B, 0x7F, 0x1E, + 0xC6, 0xC9, 0x18, 0xEB, 0xCB, 0x70, 0x5D, 0xDA, 0xAE, 0x8E, 0x29, 0x33, 0x4E, 0xBB, 0x4E, 0x0C, + 0xC3, 0x94, 0x53, 0xE1, 0x94, 0x56, 0x92, 0x3B, 0xE7, 0x4B, 0x49, 0x6D, 0x53, 0x77, 0x6D, 0x6D, + 0x8D, 0x2F, 0x00, 0x48, 0xCE, 0x2E, 0x97, 0x29, 0x95, 0x4C, 0x18, 0x2E, 0x20, 0xBD, 0xBC, 0x5E, + 0xAD, 0x8D, 0x10, 0x23, 0x6B, 0xDD, 0x34, 0x29, 0xEF, 0x33, 0xC6, 0xD0, 0xF9, 0xB8, 0x28, 0x57, + 0x37, 0x55, 0xF0, 0x4E, 0x70, 0xDA, 0x54, 0xB2, 0x12, 0x2C, 0xFA, 0xA8, 0x8D, 0xCB, 0x39, 0x19, + 0x63, 0x40, 0x29, 0x39, 0x17, 0x84, 0xD0, 0xA2, 0x94, 0x76, 0x1E, 0x82, 0x6C, 0xAD, 0xF3, 0x31, + 0xC5, 0x18, 0x20, 0x80, 0xDE, 0x47, 0x46, 0x60, 0x29, 0x60, 0x5C, 0xAC, 0xF2, 0xFE, 0x7C, 0x1D, + 0x08, 0xA3, 0x82, 0x11, 0x88, 0xA8, 0x94, 0xD2, 0x7B, 0xEF, 0xBC, 0xAD, 0xAA, 0xFA, 0xE9, 0xE5, + 0xB9, 0x80, 0xC2, 0x85, 0x2C, 0x00, 0x12, 0x82, 0x21, 0xCC, 0xDE, 0x05, 0x8C, 0x71, 0x86, 0xC0, + 0x18, 0x4B, 0x09, 0xD9, 0x6D, 0xD6, 0x7D, 0x23, 0x2B, 0x41, 0x3F, 0xDE, 0xEF, 0xFF, 0xCB, 0xF7, + 0xDF, 0x76, 0x75, 0x45, 0x09, 0x62, 0x84, 0xBC, 0x9D, 0xAE, 0xDA, 0x7A, 0xCA, 0x58, 0x4C, 0x05, + 0x16, 0x20, 0x04, 0x2B, 0x39, 0xAF, 0x9A, 0x0A, 0x41, 0x88, 0x0A, 0xBC, 0xDB, 0xEF, 0x4E, 0xE7, + 0x63, 0x29, 0x00, 0x41, 0x88, 0x51, 0x21, 0x10, 0x61, 0xC4, 0x43, 0x42, 0xCA, 0x25, 0x17, 0xB3, + 0xB1, 0x6E, 0x58, 0xA6, 0x98, 0x32, 0x63, 0x82, 0x51, 0x4E, 0x29, 0x5C, 0x77, 0x92, 0x62, 0x7A, + 0xD8, 0x1D, 0x52, 0x28, 0x2F, 0x2F, 0x67, 0x8C, 0xE8, 0xAA, 0xED, 0x57, 0x4D, 0x5B, 0x62, 0xAC, + 0x04, 0x0B, 0xCE, 0x11, 0x4C, 0xAC, 0xD5, 0x21, 0xE6, 0xF7, 0x1F, 0xEE, 0x0B, 0x8C, 0xB7, 0x87, + 0xFE, 0x7E, 0xBF, 0x9D, 0x67, 0x73, 0x3E, 0x8F, 0x10, 0x00, 0xA5, 0xDD, 0x66, 0xB5, 0x1E, 0x07, + 0x05, 0x11, 0x46, 0x00, 0xBD, 0x1C, 0x47, 0x17, 0xE0, 0xF1, 0xA2, 0x20, 0x20, 0x05, 0xC2, 0xB7, + 0xF3, 0x8C, 0x30, 0xD5, 0xDA, 0x39, 0x1B, 0xAC, 0xF5, 0xCB, 0x62, 0x0B, 0x28, 0x10, 0xA1, 0xF3, + 0x75, 0x51, 0x2E, 0x6A, 0xE3, 0x86, 0x59, 0x2F, 0xDA, 0xF9, 0x18, 0x05, 0x63, 0x8C, 0xE0, 0x59, + 0xD9, 0x59, 0xEB, 0xE3, 0x75, 0x32, 0xDE, 0x29, 0x6D, 0x84, 0xA0, 0x9C, 0xF2, 0x71, 0xD6, 0xDA, + 0xD8, 0x61, 0x5E, 0x20, 0xCA, 0x82, 0x13, 0x29, 0xEB, 0x98, 0xD3, 0x30, 0xCF, 0xE3, 0xA2, 0x5E, + 0x4F, 0x97, 0xC5, 0xDA, 0xF3, 0xB0, 0x8C, 0xB3, 0xF6, 0x21, 0x62, 0x4C, 0x16, 0xA5, 0xB5, 0xB1, + 0x82, 0x55, 0xAB, 0xAE, 0x82, 0x10, 0x2C, 0xC6, 0x22, 0x02, 0x0F, 0xFB, 0x75, 0xD7, 0x8B, 0x94, + 0x93, 0xB5, 0x41, 0x6B, 0x37, 0x4D, 0xF3, 0x30, 0x2A, 0x6D, 0x5D, 0x4C, 0xF9, 0x72, 0x9D, 0xF1, + 0xBB, 0xDB, 0xC3, 0xBF, 0xFD, 0xFB, 0x7F, 0xD8, 0x10, 0x38, 0xE7, 0xE3, 0x38, 0x50, 0x98, 0x18, + 0x81, 0xCA, 0x78, 0x8A, 0xD9, 0x37, 0x1F, 0x6E, 0x0F, 0xDB, 0x86, 0x00, 0x96, 0x7C, 0xF0, 0x80, + 0xAA, 0x65, 0x9E, 0xB5, 0x4D, 0xAC, 0xBD, 0x1C, 0x9F, 0x9D, 0x1E, 0xB5, 0x75, 0xCA, 0xDA, 0x97, + 0xE3, 0x15, 0x63, 0x14, 0x52, 0x2A, 0xB0, 0x8C, 0x93, 0xBD, 0x0C, 0xDA, 0x85, 0x68, 0x5C, 0x84, + 0x10, 0x5A, 0x63, 0xB4, 0x0E, 0x54, 0xF6, 0x3F, 0xFD, 0xED, 0x4F, 0xDE, 0xEA, 0xE7, 0xE7, 0x71, + 0x99, 0x15, 0x46, 0x88, 0x75, 0xDF, 0x24, 0x48, 0x4F, 0x2F, 0x3F, 0x6E, 0xF7, 0xEF, 0x86, 0xF1, + 0xF2, 0xF0, 0xE1, 0xBB, 0xA6, 0x6D, 0x8E, 0x2F, 0x6F, 0x8C, 0x00, 0x0C, 0xC1, 0x62, 0x9C, 0x0F, + 0xC9, 0xBB, 0xF0, 0xB5, 0x82, 0x90, 0x73, 0xA1, 0x18, 0x6C, 0x6F, 0x3F, 0x61, 0xF5, 0xF9, 0xC0, + 0x15, 0xA7, 0x84, 0xB2, 0xAA, 0xE0, 0x3E, 0x47, 0x73, 0xD3, 0x39, 0x08, 0xC0, 0x7E, 0xDF, 0x3F, + 0x1F, 0x4F, 0x6F, 0xB3, 0xBA, 0xAA, 0x34, 0x7B, 0x36, 0x59, 0xF7, 0x76, 0x99, 0xEF, 0xD7, 0x14, + 0x80, 0x82, 0x11, 0x5E, 0x4C, 0x5C, 0x2C, 0x70, 0x3E, 0x3E, 0x8F, 0x5E, 0x47, 0x84, 0x90, 0xFE, + 0xFC, 0x66, 0x17, 0x9B, 0x7F, 0xF7, 0x48, 0x7E, 0xF3, 0xBE, 0xFA, 0xF3, 0x2F, 0x9A, 0xE2, 0x94, + 0x10, 0xFE, 0x72, 0x36, 0x32, 0xBA, 0x21, 0xD1, 0xD3, 0x58, 0x40, 0xC1, 0xC6, 0xBB, 0xBE, 0x95, + 0x57, 0x8D, 0xD7, 0x2D, 0xF9, 0xA7, 0xEF, 0xDF, 0xAF, 0x56, 0x2B, 0x41, 0x70, 0xD7, 0x56, 0xDE, + 0x05, 0x1F, 0xD2, 0x30, 0xAA, 0xA6, 0xA6, 0x94, 0xE2, 0x59, 0x19, 0x6B, 0x03, 0xA3, 0xAC, 0xAE, + 0xF9, 0xEF, 0xFE, 0xF0, 0x5E, 0x48, 0xB1, 0xEE, 0xAB, 0xDD, 0xA1, 0x5F, 0xF7, 0xD5, 0xC7, 0x77, + 0xF7, 0x5D, 0x57, 0x4B, 0x29, 0x08, 0xC3, 0xDB, 0xC3, 0xEA, 0xF9, 0xF4, 0xF6, 0xE3, 0xAF, 0x5F, + 0xB6, 0xDB, 0xF5, 0xAA, 0x16, 0x21, 0x85, 0xA7, 0xE3, 0xC5, 0xFB, 0x14, 0x63, 0x7A, 0xFF, 0xFE, + 0x36, 0x07, 0xFB, 0xF2, 0x7A, 0x7D, 0x7E, 0x5B, 0xAC, 0xF3, 0x77, 0x87, 0x5D, 0x4E, 0x65, 0x9E, + 0xF4, 0x30, 0xAA, 0x45, 0x59, 0xED, 0x63, 0x53, 0x57, 0x08, 0xA2, 0x18, 0x63, 0x4A, 0x19, 0x40, + 0x40, 0x29, 0x8D, 0x21, 0xBE, 0x7F, 0x77, 0xC8, 0xA0, 0x84, 0x10, 0xAF, 0xD3, 0xB2, 0x68, 0x7B, + 0x77, 0xD8, 0xEC, 0xB7, 0xFD, 0x75, 0x5E, 0x40, 0x29, 0x95, 0x14, 0x10, 0x82, 0xA6, 0xE2, 0xA3, + 0x72, 0x42, 0x4A, 0xEF, 0x22, 0x65, 0xF2, 0xED, 0xED, 0xFA, 0xFC, 0x72, 0xED, 0xFA, 0x7E, 0x9A, + 0x74, 0x4C, 0x65, 0xBB, 0xEB, 0x11, 0x22, 0x39, 0xC3, 0x0C, 0x40, 0x08, 0x01, 0x80, 0x52, 0x72, + 0xA1, 0x9C, 0x14, 0x00, 0x8D, 0x0E, 0xCE, 0x86, 0x5A, 0x52, 0x2E, 0x08, 0x17, 0xF4, 0x7A, 0x55, + 0x21, 0x14, 0xA5, 0x4D, 0x2E, 0xA5, 0xE4, 0x92, 0x52, 0x3E, 0x5E, 0xCC, 0xCB, 0xDB, 0x7C, 0xBA, + 0x9C, 0xCF, 0xD7, 0x93, 0x8F, 0xB9, 0xE4, 0xE8, 0x43, 0x39, 0x0D, 0x53, 0x4A, 0x91, 0x33, 0x6E, + 0x9D, 0x4D, 0x39, 0x48, 0xC1, 0xD7, 0xAB, 0x6E, 0xBF, 0xE9, 0xA6, 0x69, 0x89, 0x39, 0xDC, 0xDD, + 0xB6, 0x9B, 0xB5, 0x5C, 0x6D, 0x2A, 0x82, 0x09, 0xC5, 0x25, 0x65, 0x5B, 0x20, 0x9A, 0x17, 0x9D, + 0x4B, 0x0E, 0x29, 0x9D, 0x86, 0x51, 0x5B, 0xDF, 0x76, 0x2D, 0x28, 0x45, 0x69, 0x43, 0x99, 0xB8, + 0x9C, 0x87, 0x98, 0xC2, 0x6E, 0xD7, 0x31, 0x86, 0x4B, 0x8E, 0x4A, 0x69, 0x08, 0xC2, 0x6E, 0xDB, + 0x0F, 0xB3, 0x1D, 0xC6, 0x85, 0x73, 0x69, 0xAC, 0xFB, 0xF1, 0xE7, 0x2F, 0x10, 0x64, 0x42, 0xC9, + 0x4F, 0x3F, 0xBF, 0x09, 0xCE, 0xAD, 0x8F, 0x8B, 0x72, 0xB9, 0x40, 0xE7, 0xBC, 0xB1, 0xDE, 0x87, + 0xC8, 0x18, 0x1D, 0xA7, 0x79, 0xD1, 0x46, 0x70, 0x46, 0x10, 0x96, 0x14, 0xEF, 0xB7, 0x9D, 0xAC, + 0xC4, 0xF3, 0xCB, 0x11, 0x63, 0x48, 0x08, 0x42, 0x25, 0x63, 0x4C, 0x0A, 0x42, 0xB1, 0xA0, 0x49, + 0x1B, 0x8C, 0x60, 0x4A, 0xF9, 0x2B, 0x49, 0xB1, 0xAB, 0x25, 0xE3, 0x34, 0xC4, 0x88, 0x20, 0x34, + 0x36, 0x16, 0x04, 0x21, 0x82, 0x31, 0x15, 0xAD, 0x55, 0x29, 0x80, 0x33, 0xA1, 0xB5, 0xCA, 0x39, + 0xA7, 0x94, 0x2E, 0xC3, 0x35, 0x95, 0x1C, 0x7C, 0xF0, 0xCE, 0x85, 0xE8, 0xB5, 0x56, 0x3E, 0xF8, + 0xAF, 0x40, 0xED, 0xF7, 0xB7, 0xBB, 0x7F, 0xFD, 0xC3, 0xB7, 0x37, 0xDB, 0xDD, 0x7E, 0xB5, 0x7E, + 0x7F, 0x7B, 0xFB, 0xE1, 0xEE, 0xBE, 0xE6, 0xB5, 0x73, 0x11, 0x63, 0xBC, 0xDF, 0xB4, 0xB7, 0xDB, + 0xD6, 0x68, 0xE7, 0x7C, 0x08, 0x21, 0xCE, 0x8B, 0xDE, 0xAC, 0x6B, 0xC1, 0x89, 0x5A, 0x54, 0x2D, + 0xA5, 0xF3, 0x81, 0x40, 0x54, 0x52, 0x52, 0xDA, 0xC6, 0x54, 0xAC, 0x0B, 0x42, 0xD4, 0x8C, 0x31, + 0x2E, 0x57, 0xA5, 0xA0, 0x5C, 0xCA, 0x69, 0x98, 0xC7, 0x79, 0x36, 0xD6, 0x87, 0x94, 0xDA, 0xBA, + 0xDE, 0x6F, 0xBA, 0x5D, 0xD7, 0x6C, 0x9A, 0x0E, 0xC4, 0xB2, 0xE9, 0x6B, 0x0C, 0x1C, 0x86, 0x68, + 0xD5, 0xAC, 0x50, 0x41, 0x6A, 0xD1, 0xCE, 0x59, 0x3D, 0xAB, 0x1C, 0x13, 0xA1, 0x74, 0x18, 0x67, + 0x59, 0xB1, 0x79, 0x99, 0x39, 0x67, 0xC6, 0x86, 0x9C, 0x81, 0xA0, 0xF4, 0x3C, 0xCC, 0x8C, 0xA3, + 0xFB, 0x9B, 0x5D, 0x57, 0xD7, 0xDE, 0x85, 0xAA, 0xA2, 0x21, 0xD9, 0xAA, 0x22, 0x29, 0x03, 0xC1, + 0x04, 0xA5, 0x18, 0xC2, 0xFC, 0xE9, 0xE3, 0xED, 0x6E, 0xD7, 0x85, 0x18, 0x4F, 0xD7, 0x49, 0x19, + 0x9F, 0x53, 0xD6, 0x8B, 0x75, 0x2E, 0x36, 0xB5, 0x00, 0x00, 0xCE, 0x4A, 0x2F, 0xC6, 0x41, 0x04, + 0x53, 0x2E, 0xFB, 0x4D, 0x4F, 0x09, 0x1E, 0xA7, 0x85, 0x52, 0x42, 0x08, 0xC6, 0x08, 0xCE, 0xB3, + 0xA5, 0x84, 0x9E, 0x87, 0x09, 0x14, 0x80, 0x31, 0x9A, 0x16, 0xC5, 0x28, 0x4A, 0xA9, 0x4C, 0xB3, + 0xD6, 0xD6, 0x18, 0xE7, 0x53, 0xCA, 0xAB, 0xBE, 0x6B, 0xAA, 0x4A, 0x69, 0x5B, 0x00, 0x98, 0x17, + 0x13, 0x62, 0x44, 0x10, 0xF9, 0x98, 0x66, 0x65, 0x6B, 0x29, 0x0B, 0xC0, 0x4D, 0x25, 0x56, 0x7D, + 0xA7, 0xEC, 0x9C, 0xB2, 0x4D, 0x3E, 0x69, 0xEB, 0x03, 0xC8, 0xCA, 0x6A, 0xE3, 0xBC, 0x36, 0x96, + 0x30, 0xEA, 0x42, 0xC4, 0x9B, 0xB6, 0x31, 0x21, 0x3E, 0x3C, 0x7E, 0xBA, 0x3D, 0xAC, 0x36, 0xEB, + 0x1D, 0xCA, 0xF1, 0xFE, 0xF1, 0x3D, 0x82, 0xEC, 0xE1, 0xEE, 0x70, 0xB3, 0xEB, 0xB3, 0x8F, 0x9C, + 0x30, 0x6B, 0x9D, 0xB2, 0x0E, 0x34, 0x7B, 0x40, 0xC5, 0xE9, 0xE9, 0xEF, 0x0C, 0x86, 0x5C, 0xCA, + 0x30, 0xAB, 0x45, 0xDB, 0x97, 0xD3, 0x85, 0x71, 0xA2, 0x8C, 0x1B, 0x46, 0x13, 0x13, 0x38, 0x9E, + 0x67, 0x00, 0x11, 0x25, 0x14, 0x61, 0x32, 0x8E, 0xD7, 0x4A, 0xCA, 0xEB, 0xA8, 0x51, 0x32, 0x9B, + 0x4E, 0x9E, 0xCE, 0x23, 0x26, 0x62, 0x9A, 0x35, 0x13, 0x5D, 0xD3, 0xAD, 0x9E, 0x3F, 0xFF, 0xB9, + 0xA9, 0xD7, 0x08, 0xB3, 0xBB, 0xC7, 0x0F, 0xBF, 0x7E, 0xFE, 0x91, 0x42, 0xD7, 0xD5, 0x08, 0x12, + 0xA4, 0x5C, 0xB4, 0x3E, 0x22, 0x84, 0x9D, 0x77, 0x10, 0xC4, 0x92, 0x52, 0x0A, 0xA1, 0xED, 0x37, + 0xD9, 0x5B, 0xB5, 0x2C, 0x4D, 0x53, 0xE9, 0xC4, 0x18, 0xE7, 0xA7, 0x51, 0x69, 0x17, 0x6B, 0x49, + 0xAE, 0xA3, 0xB9, 0x8C, 0xD7, 0xD3, 0xE2, 0x05, 0x17, 0x87, 0xAA, 0x50, 0x60, 0x4F, 0x53, 0xA9, + 0x39, 0x69, 0x24, 0x41, 0x08, 0x7B, 0x1F, 0x66, 0xE3, 0xCF, 0xCA, 0xD6, 0x92, 0x19, 0x97, 0xBA, + 0x8A, 0x72, 0x86, 0xB9, 0x80, 0xCA, 0xE4, 0x1F, 0x9E, 0x0C, 0x27, 0x84, 0x40, 0x3B, 0x2D, 0x81, + 0x42, 0x58, 0xB1, 0xFA, 0x6A, 0xEA, 0x55, 0xBF, 0xF2, 0x85, 0xBF, 0x0E, 0x0E, 0x92, 0x56, 0x6B, + 0xF3, 0xE5, 0xCB, 0xD3, 0xA0, 0xD2, 0x38, 0xDB, 0xA6, 0xA9, 0xEF, 0xEE, 0x37, 0xD6, 0xFA, 0xEB, + 0x34, 0x0B, 0x4A, 0x08, 0x82, 0x8C, 0x50, 0x4A, 0xD0, 0xA7, 0x87, 0xDD, 0xA7, 0x87, 0xC3, 0xFB, + 0xC7, 0xED, 0x38, 0x2D, 0x25, 0x27, 0x21, 0x49, 0xB0, 0xCE, 0xEB, 0xA0, 0x96, 0x65, 0x1C, 0x47, + 0x88, 0xB2, 0xF5, 0xCE, 0x87, 0x00, 0x61, 0xD9, 0xAD, 0x7B, 0x46, 0x30, 0x40, 0x45, 0x69, 0xB5, + 0xEE, 0xDA, 0xC3, 0xCD, 0x7A, 0x1A, 0x17, 0x49, 0x50, 0x0A, 0xCE, 0x39, 0x50, 0xB7, 0xDD, 0xA6, + 0x6F, 0xDF, 0xDD, 0x6D, 0xBA, 0xB6, 0x0E, 0x3E, 0x0C, 0xD3, 0xB2, 0x68, 0x27, 0x6B, 0xAE, 0xB5, + 0x79, 0xBB, 0x4C, 0x21, 0x46, 0x8C, 0x21, 0xC6, 0xD8, 0x19, 0xBF, 0xEA, 0x1B, 0x1F, 0xC3, 0x75, + 0x9C, 0xAD, 0xF3, 0x25, 0xE7, 0x79, 0x31, 0x08, 0x14, 0xEB, 0xA2, 0x0F, 0xD9, 0x87, 0x38, 0x29, + 0x7D, 0xBB, 0x5B, 0x6B, 0xE3, 0xEA, 0xA6, 0x09, 0x31, 0xE7, 0x02, 0x9D, 0x0F, 0xA9, 0x24, 0x6D, + 0x1C, 0x61, 0x62, 0x9E, 0x95, 0xB5, 0x7E, 0x9E, 0x2D, 0x22, 0x04, 0x21, 0xB4, 0xCC, 0x6A, 0x1C, + 0x16, 0x21, 0x44, 0xDB, 0xD4, 0x84, 0xE0, 0xB7, 0xD7, 0xE1, 0x32, 0x2E, 0xCA, 0x78, 0x8C, 0x91, + 0x10, 0xFC, 0x7C, 0x9E, 0xAD, 0x0B, 0x29, 0xA7, 0xBA, 0xA9, 0x04, 0x67, 0x20, 0x17, 0x42, 0x40, + 0x01, 0xF9, 0xED, 0x3C, 0xC5, 0x94, 0x8D, 0xF5, 0xA8, 0xB8, 0xDF, 0x7D, 0x5A, 0xBF, 0x0D, 0x4E, + 0x69, 0x87, 0x31, 0x32, 0xCE, 0xDE, 0xAC, 0xE9, 0xBF, 0xFC, 0xA6, 0xCD, 0x48, 0x04, 0x57, 0x30, + 0x44, 0x08, 0x94, 0x7F, 0xFA, 0x6E, 0xBF, 0xDB, 0xB6, 0x9C, 0x02, 0xC1, 0xD0, 0x78, 0x1D, 0x7C, + 0x8A, 0xB3, 0xF2, 0xC7, 0xD3, 0x14, 0x73, 0x84, 0x08, 0x4C, 0x7A, 0xD1, 0xCA, 0x8E, 0x93, 0x46, + 0x18, 0xF5, 0x5D, 0xBD, 0x2C, 0xFA, 0x97, 0x5F, 0x9E, 0x52, 0x8A, 0x00, 0xC2, 0x1C, 0xE2, 0x76, + 0xD7, 0x32, 0x86, 0x28, 0x2D, 0x84, 0x62, 0x65, 0xD3, 0xF9, 0x3C, 0x61, 0x8C, 0x30, 0x2E, 0x7F, + 0xFD, 0xF1, 0xE7, 0x69, 0x5E, 0x38, 0x67, 0xD7, 0x41, 0x51, 0x4A, 0xA5, 0x94, 0x8B, 0xB2, 0x3E, + 0xE5, 0x71, 0x52, 0x31, 0x97, 0x9C, 0x4B, 0x4E, 0xA9, 0x16, 0x1C, 0x94, 0x1C, 0x63, 0xB8, 0xDB, + 0xAE, 0x18, 0x01, 0x6F, 0xA7, 0x41, 0x2B, 0xED, 0xBD, 0x37, 0xC6, 0x70, 0xC9, 0x30, 0x86, 0xDE, + 0x07, 0x59, 0x89, 0x58, 0xD0, 0xA8, 0x4C, 0x4A, 0x09, 0x02, 0x54, 0x0A, 0xB8, 0xD9, 0x75, 0x29, + 0xE5, 0x69, 0xD6, 0x10, 0x41, 0x42, 0x89, 0xD1, 0x2E, 0xE5, 0x1C, 0x53, 0xB6, 0xD6, 0xE5, 0x52, + 0x4A, 0x29, 0x52, 0x56, 0xA5, 0x00, 0x67, 0xAD, 0x0F, 0xDE, 0x58, 0xEB, 0x82, 0x4F, 0x29, 0x41, + 0x00, 0x4A, 0xC9, 0x39, 0x67, 0xCE, 0x29, 0xC8, 0x05, 0x40, 0x70, 0xBB, 0x5D, 0xFD, 0xEE, 0xFD, + 0x47, 0x35, 0x59, 0x6D, 0x42, 0xCA, 0x60, 0x9A, 0x4C, 0x4A, 0x59, 0xBB, 0xF0, 0xE5, 0xF9, 0xCD, + 0x87, 0xA0, 0x8D, 0xB7, 0x3E, 0xED, 0x36, 0xFD, 0xE3, 0xCD, 0x86, 0x52, 0xF8, 0xED, 0xC7, 0x1B, + 0x81, 0x31, 0xA7, 0x78, 0xBB, 0xEE, 0x40, 0x86, 0x52, 0xD6, 0x08, 0x02, 0xA5, 0x54, 0xD3, 0x54, + 0x04, 0x23, 0x8C, 0xD9, 0x6A, 0xBD, 0x89, 0x21, 0x1D, 0xCF, 0x63, 0x08, 0xC1, 0x3A, 0x37, 0xCC, + 0x0B, 0xA3, 0xE8, 0x0F, 0xDF, 0xDE, 0x13, 0x4C, 0x5B, 0x29, 0x36, 0x0D, 0xE7, 0x94, 0x5E, 0xC6, + 0xD9, 0x85, 0xE0, 0xBD, 0x0F, 0xD1, 0x13, 0x8A, 0x29, 0xC6, 0x31, 0x84, 0xED, 0xBE, 0x43, 0x04, + 0xC4, 0xE2, 0x79, 0x25, 0x4E, 0xC7, 0xB1, 0x00, 0xC0, 0x28, 0x22, 0x10, 0xC2, 0x08, 0xB5, 0x72, + 0x31, 0x64, 0x63, 0xED, 0x76, 0xDD, 0xFC, 0xE6, 0xFD, 0xED, 0xC3, 0xCD, 0xFE, 0xF1, 0xB0, 0x5B, + 0xF5, 0x62, 0xBF, 0xAD, 0xF7, 0xEB, 0xF6, 0xC3, 0xC3, 0x81, 0x61, 0x96, 0x9D, 0x23, 0xB8, 0xDC, + 0xDE, 0x6D, 0x8D, 0x35, 0xD7, 0xEB, 0x84, 0x09, 0x4A, 0x19, 0x74, 0x9D, 0xAC, 0x1B, 0x11, 0x63, + 0x59, 0x94, 0xE1, 0x8C, 0x39, 0xE7, 0x63, 0x4C, 0xDA, 0xF9, 0x5C, 0x0A, 0x25, 0x98, 0x73, 0xD2, + 0xD4, 0xF2, 0xAB, 0x3A, 0x32, 0xA5, 0x14, 0x42, 0xA4, 0x94, 0x5A, 0x1B, 0x53, 0xCA, 0xCE, 0x39, + 0x84, 0xB2, 0x60, 0x94, 0x62, 0xC2, 0x19, 0xD3, 0xD6, 0x10, 0x02, 0x53, 0x4A, 0x87, 0xDD, 0x8A, + 0x51, 0x74, 0xBE, 0x0E, 0x29, 0xE7, 0x59, 0x2F, 0xB3, 0xD6, 0x84, 0x16, 0xC6, 0xA1, 0x35, 0xC1, + 0x78, 0x3F, 0x19, 0x7B, 0xBC, 0x4E, 0x21, 0x96, 0x92, 0x10, 0x82, 0x88, 0x72, 0x92, 0x13, 0x7C, + 0x7D, 0x1D, 0x6D, 0xF0, 0x00, 0xA2, 0xCB, 0x65, 0x62, 0x82, 0x62, 0x42, 0xA6, 0x49, 0xE1, 0xDF, + 0x7F, 0xFF, 0xCD, 0xCD, 0xDD, 0xA3, 0x56, 0xE6, 0xFE, 0xE6, 0x66, 0xDD, 0xF5, 0xAB, 0x55, 0x4F, + 0x38, 0xE1, 0x04, 0x1B, 0x65, 0xAC, 0xF1, 0x9C, 0x8A, 0x69, 0x31, 0x93, 0x32, 0xDE, 0x5B, 0x9F, + 0xD1, 0xE7, 0x9F, 0xFF, 0x6E, 0xD5, 0xB0, 0x58, 0x37, 0x2E, 0x7A, 0x36, 0x2E, 0x95, 0x84, 0x40, + 0x0E, 0x21, 0x2A, 0x13, 0x0A, 0x80, 0x08, 0x41, 0xCA, 0xD8, 0x30, 0xD9, 0x49, 0xD9, 0x65, 0x36, + 0x94, 0x89, 0x4F, 0xBF, 0xF9, 0xA3, 0xD1, 0x7A, 0xB3, 0xDE, 0xAE, 0x7B, 0x49, 0x45, 0x07, 0x20, + 0xBD, 0x5E, 0x87, 0x55, 0x03, 0xD7, 0x37, 0xBF, 0xE9, 0xE1, 0xB4, 0x16, 0x09, 0xB4, 0x1F, 0xFE, + 0xFA, 0xE7, 0x7F, 0xFB, 0xDB, 0x0F, 0x7F, 0xFA, 0x97, 0x7B, 0xB9, 0x6F, 0xF1, 0x5F, 0x3E, 0x0F, + 0x1C, 0x95, 0xEF, 0xEE, 0xFA, 0x49, 0x85, 0x69, 0xD1, 0x31, 0xFC, 0xE3, 0x02, 0xDF, 0x6F, 0xF6, + 0x35, 0x50, 0xFB, 0x26, 0xF5, 0xD8, 0xFF, 0x38, 0xD1, 0x6F, 0x6F, 0x5B, 0x7D, 0xFD, 0x8C, 0x70, + 0xBE, 0x5F, 0x77, 0x46, 0xEB, 0xDF, 0x3F, 0x88, 0x9A, 0x63, 0x88, 0x50, 0x8B, 0xCD, 0x68, 0x0B, + 0x84, 0x64, 0xBF, 0x2E, 0x08, 0x85, 0x04, 0x22, 0xA2, 0x65, 0xB1, 0xE1, 0x77, 0xB7, 0x7C, 0xD7, + 0xF1, 0xBF, 0xBE, 0xD8, 0xD9, 0xC4, 0x49, 0xC7, 0x97, 0x73, 0xC4, 0x08, 0x3C, 0xEE, 0xB9, 0x89, + 0x99, 0x32, 0xA8, 0x0C, 0xB8, 0x4C, 0x6E, 0x0A, 0xE0, 0xE7, 0xA7, 0x25, 0xA7, 0xFC, 0xEB, 0xCB, + 0xE9, 0xF9, 0xF4, 0xC2, 0x05, 0x57, 0x8B, 0x8F, 0xF6, 0x4A, 0x91, 0x9B, 0xE7, 0xC5, 0x7B, 0x0F, + 0x52, 0xAC, 0x24, 0xDB, 0xAD, 0xEA, 0xFD, 0xBA, 0xFA, 0xE6, 0xE3, 0xCD, 0xFD, 0xFD, 0xFA, 0xC3, + 0xC3, 0x6E, 0xD3, 0x37, 0x39, 0x06, 0x88, 0x0A, 0x22, 0x50, 0x4A, 0x0A, 0x60, 0xC1, 0x04, 0x1B, + 0xED, 0xEB, 0x9A, 0x04, 0xEF, 0x17, 0x65, 0x4F, 0xC7, 0xE5, 0xF5, 0xF9, 0x5A, 0x62, 0x71, 0x36, + 0x68, 0xE5, 0x8C, 0xF6, 0x52, 0x8A, 0xBE, 0x6D, 0x39, 0xC1, 0xEB, 0xB6, 0x69, 0x2B, 0x79, 0xB3, + 0xDF, 0x34, 0x55, 0xBD, 0xEA, 0xAA, 0x75, 0x5F, 0x7D, 0x85, 0xE2, 0x57, 0x95, 0xDC, 0x6F, 0x57, + 0xEB, 0xAE, 0x86, 0xA5, 0x5C, 0xC7, 0x19, 0x42, 0x40, 0x10, 0x14, 0x82, 0xCD, 0xB3, 0x66, 0x8C, + 0x4E, 0x4A, 0xFF, 0xFA, 0x7C, 0xDE, 0x6F, 0xB7, 0x31, 0xC5, 0x02, 0xA0, 0x10, 0x5C, 0x99, 0xE0, + 0x7C, 0x00, 0x10, 0x7D, 0x75, 0x17, 0x0D, 0xB3, 0xEE, 0x9A, 0x6A, 0xB3, 0xEE, 0xCE, 0x83, 0x9A, + 0x16, 0xB5, 0x28, 0x0B, 0x20, 0x48, 0x09, 0x58, 0x1B, 0x76, 0xDB, 0xF5, 0x7A, 0xB3, 0x1A, 0x27, + 0x45, 0x29, 0x13, 0x9C, 0xC5, 0x98, 0x28, 0xC7, 0x31, 0xA6, 0x10, 0x0B, 0x82, 0x90, 0x32, 0x8C, + 0x09, 0xB6, 0x2E, 0xA6, 0x94, 0x9D, 0x4F, 0x21, 0xC6, 0xAE, 0x97, 0xFB, 0xFD, 0x0A, 0x41, 0x74, + 0x3E, 0x0F, 0x18, 0x63, 0x4A, 0x51, 0xB7, 0xC2, 0x9F, 0xBF, 0x1C, 0x73, 0xB6, 0x75, 0x2D, 0x7F, + 0xFB, 0xAE, 0xD2, 0x6A, 0xF1, 0xC1, 0xDF, 0xEC, 0xF0, 0xDB, 0x39, 0xFC, 0xD7, 0xEF, 0xAB, 0xDF, + 0x7D, 0xAA, 0x29, 0xC2, 0x75, 0xB7, 0xE1, 0x0C, 0xDF, 0x1E, 0xAA, 0x4D, 0x4F, 0xA5, 0x20, 0x18, + 0x33, 0x98, 0x32, 0x0C, 0x69, 0x98, 0x97, 0xBF, 0xFD, 0x72, 0x55, 0xC6, 0x63, 0x82, 0xA6, 0x69, + 0xA9, 0x6A, 0x02, 0x11, 0xF0, 0xA1, 0x28, 0x6D, 0x9C, 0x4B, 0x31, 0xC4, 0x71, 0x5C, 0x08, 0x46, + 0x29, 0x84, 0xCB, 0x65, 0xF4, 0x21, 0x4C, 0x83, 0x2E, 0x39, 0x0A, 0x86, 0x84, 0xE4, 0x29, 0x03, + 0x42, 0x11, 0xA1, 0xE8, 0xF5, 0x78, 0x24, 0x18, 0xF5, 0x2B, 0xB1, 0x68, 0xF7, 0x76, 0x9A, 0x41, + 0x01, 0x10, 0x82, 0x54, 0x8A, 0xB1, 0x5E, 0x72, 0x52, 0x09, 0xCE, 0x39, 0xDD, 0x74, 0xD5, 0xFD, + 0xCD, 0xED, 0xC7, 0xC7, 0xDB, 0x86, 0xB3, 0xF7, 0x0F, 0x7B, 0x00, 0x8B, 0xF3, 0x0E, 0x13, 0x6C, + 0x9C, 0x8B, 0x31, 0x52, 0x4A, 0xAA, 0x9A, 0xFA, 0x5C, 0x0A, 0x00, 0x31, 0xE5, 0x98, 0xC3, 0xAA, + 0x16, 0x0F, 0xFB, 0x1E, 0x21, 0x18, 0x42, 0x7A, 0x38, 0x6C, 0x26, 0xA5, 0xBD, 0x8F, 0x39, 0x27, + 0x8C, 0x11, 0x97, 0x42, 0x56, 0x9C, 0x10, 0x3C, 0x2F, 0x1A, 0x42, 0x08, 0x41, 0x19, 0xC6, 0xB1, + 0xAA, 0xDB, 0x18, 0x82, 0x0F, 0x36, 0xE7, 0x02, 0x00, 0x24, 0x04, 0x53, 0x4A, 0x4B, 0xCE, 0x8C, + 0x12, 0x0C, 0xD1, 0xAA, 0xA9, 0xDE, 0xDD, 0xDD, 0x23, 0xCC, 0x6D, 0x88, 0xE7, 0xCB, 0xD9, 0x87, + 0xD8, 0xD4, 0x0D, 0xA1, 0x98, 0x61, 0xF0, 0x72, 0x3C, 0x4D, 0x4A, 0x1B, 0x1F, 0xCF, 0xC3, 0xEC, + 0x43, 0x3C, 0x0D, 0xF3, 0x7A, 0xD5, 0x56, 0x92, 0x5B, 0x1D, 0x18, 0xE5, 0x08, 0x40, 0x42, 0x68, + 0x55, 0xB5, 0x55, 0x8D, 0x05, 0xA7, 0x6D, 0xDB, 0x69, 0xE3, 0x38, 0x17, 0x31, 0x80, 0xE3, 0x75, + 0x3A, 0x0D, 0x63, 0x88, 0x61, 0x9A, 0x97, 0x55, 0x57, 0x7F, 0xFF, 0xEE, 0xE1, 0x76, 0xD3, 0x82, + 0x94, 0xFA, 0xA6, 0x62, 0x94, 0xBC, 0x5D, 0x46, 0x65, 0x7D, 0x55, 0xD7, 0x00, 0xE2, 0xB7, 0xEB, + 0x78, 0xBA, 0x0E, 0x25, 0xE5, 0x0C, 0x12, 0x00, 0xE5, 0xF9, 0xE5, 0x34, 0x29, 0x7D, 0x7F, 0x73, + 0x28, 0x29, 0x6D, 0xB7, 0x9B, 0x87, 0xDB, 0xDB, 0x5A, 0x48, 0xC9, 0xE4, 0xA6, 0x6B, 0x2B, 0xCE, + 0x08, 0x61, 0xB5, 0xAC, 0x18, 0xE1, 0x29, 0xE6, 0xE7, 0xD7, 0xF3, 0xE9, 0x3C, 0x45, 0x5F, 0xA2, + 0x4F, 0x18, 0x92, 0xAE, 0xAA, 0x6F, 0x77, 0xFD, 0xCD, 0x76, 0x7D, 0xBD, 0x4E, 0xAF, 0xA7, 0xE9, + 0x7C, 0x5D, 0x9C, 0x0B, 0x9C, 0xD2, 0x65, 0xD2, 0xA5, 0xC0, 0x46, 0xF0, 0xC3, 0x76, 0x65, 0x6D, + 0xD8, 0xF4, 0x2D, 0xC1, 0xF8, 0x32, 0x29, 0x29, 0xE9, 0x61, 0xDB, 0x34, 0x95, 0x24, 0x18, 0x59, + 0x1B, 0x86, 0x49, 0x9F, 0xC7, 0xA5, 0x64, 0x40, 0x30, 0xA4, 0x04, 0x7E, 0x7C, 0xB7, 0xAF, 0x05, + 0xF9, 0xF8, 0xB0, 0xBE, 0xDD, 0x36, 0xEF, 0xEE, 0xB7, 0x7D, 0xC3, 0x6F, 0x6E, 0xDA, 0xD5, 0xAA, + 0x2A, 0x39, 0x3A, 0x6F, 0x8D, 0xD7, 0x4C, 0x52, 0xCA, 0x40, 0x8E, 0xA1, 0x69, 0x99, 0x90, 0x04, + 0x11, 0x58, 0x0A, 0x2A, 0x25, 0xBF, 0x9E, 0xCF, 0x31, 0x64, 0xEF, 0xD3, 0x79, 0x98, 0xE6, 0xC5, + 0x2E, 0xCA, 0x87, 0xF8, 0x75, 0xD3, 0x80, 0x98, 0x0A, 0x80, 0xD0, 0x68, 0xD7, 0xB5, 0x6D, 0x5B, + 0x4B, 0xFC, 0xFE, 0xF1, 0x5D, 0x2C, 0xD2, 0x5A, 0x1D, 0xCD, 0xA2, 0x97, 0x71, 0x18, 0xA7, 0x97, + 0xD7, 0xA7, 0xE1, 0x7A, 0x99, 0x86, 0x6B, 0xCA, 0x9E, 0x35, 0xDB, 0xB7, 0xD3, 0x65, 0x5E, 0x66, + 0xCA, 0x48, 0x48, 0xF1, 0x74, 0x3A, 0xF6, 0x5D, 0x1B, 0x42, 0x98, 0xB5, 0x01, 0x05, 0x74, 0x35, + 0x83, 0x10, 0x1A, 0xE3, 0x73, 0xCE, 0x05, 0x42, 0x4E, 0x69, 0x88, 0x59, 0x19, 0x7B, 0xB3, 0x5D, + 0xAD, 0x57, 0xEB, 0x0F, 0xDF, 0xFE, 0xFE, 0x2F, 0x7F, 0xFA, 0x37, 0x9C, 0xFD, 0xE3, 0xBA, 0x7B, + 0x7E, 0xBB, 0xAC, 0xAB, 0x24, 0x80, 0xF3, 0x09, 0xCC, 0xB3, 0x8E, 0x89, 0xEC, 0xFB, 0x6A, 0x59, + 0xC6, 0x9F, 0x5E, 0x96, 0xE8, 0xEC, 0xA7, 0x2D, 0xFA, 0x7E, 0x4F, 0xFE, 0xD7, 0xE7, 0xF1, 0x3A, + 0x07, 0x49, 0x90, 0xB1, 0x1E, 0x14, 0xFF, 0x61, 0xDF, 0xFE, 0xE1, 0xDD, 0xEA, 0x32, 0x2F, 0x48, + 0xEE, 0x36, 0x02, 0x3D, 0xA2, 0x1F, 0x0F, 0xDB, 0x36, 0x8B, 0x9B, 0x93, 0xA3, 0x71, 0xF8, 0xF1, + 0x6E, 0x4B, 0xEE, 0x0E, 0x5B, 0x14, 0x0D, 0x4A, 0x3E, 0x79, 0x4B, 0x60, 0xAC, 0xEB, 0x6A, 0xD4, + 0x61, 0xDB, 0xD3, 0x93, 0x72, 0x67, 0x1D, 0x5F, 0xA6, 0x78, 0xD5, 0x31, 0xE4, 0x84, 0x12, 0xB6, + 0x21, 0xFF, 0x72, 0xB6, 0x88, 0x22, 0xED, 0x53, 0x57, 0x97, 0x02, 0xE1, 0xAA, 0xA3, 0x94, 0xA2, + 0xA7, 0x37, 0x37, 0xAA, 0xEC, 0x22, 0x46, 0xB4, 0x7E, 0x7D, 0x55, 0x08, 0x94, 0x9B, 0x5D, 0x17, + 0xA3, 0xA3, 0x1C, 0x54, 0xF5, 0x6E, 0x1C, 0x06, 0x49, 0x4A, 0x55, 0x89, 0xB6, 0x6B, 0x10, 0x2C, + 0x31, 0xFA, 0x55, 0x5F, 0xF5, 0x35, 0x69, 0x1A, 0x76, 0x1D, 0x14, 0xA4, 0x48, 0x3B, 0xFF, 0xF4, + 0x74, 0x81, 0xA4, 0x5C, 0x66, 0x35, 0x4E, 0x86, 0x10, 0x7C, 0xBE, 0x2E, 0x7F, 0xFB, 0xF1, 0x95, + 0x31, 0x02, 0x31, 0x34, 0x36, 0x2E, 0x3A, 0x00, 0xCC, 0x5C, 0x48, 0xB9, 0x80, 0x10, 0x13, 0x17, + 0x54, 0x48, 0xB1, 0xCC, 0x2E, 0x86, 0x18, 0x82, 0x8F, 0x31, 0x59, 0x1F, 0xAF, 0x93, 0x76, 0x3E, + 0x18, 0xEB, 0x43, 0x4C, 0x8B, 0x36, 0x5F, 0x69, 0x4D, 0x31, 0xA5, 0xBE, 0xAD, 0xFB, 0x55, 0x75, + 0xB3, 0xDF, 0xAE, 0x9A, 0x86, 0x62, 0x94, 0x53, 0xDE, 0x74, 0xCD, 0xF1, 0x32, 0x5C, 0x86, 0x71, + 0xDD, 0x77, 0x7D, 0xD3, 0x0E, 0xF3, 0x42, 0x29, 0x8F, 0x21, 0x1D, 0x76, 0x3D, 0xC2, 0x08, 0x13, + 0x9C, 0x52, 0x1A, 0xE6, 0x25, 0xF8, 0xB0, 0xEA, 0xBA, 0xBF, 0x7F, 0x7E, 0x9D, 0xE6, 0x45, 0x5B, + 0xCB, 0x19, 0x4E, 0x39, 0xA7, 0x98, 0xB7, 0xAB, 0xB6, 0xAA, 0x24, 0x63, 0x94, 0x4B, 0x9A, 0x72, + 0xC6, 0x18, 0x09, 0x29, 0xAD, 0xF6, 0xDE, 0x45, 0x6D, 0x9C, 0x77, 0xA1, 0x96, 0x12, 0x21, 0x54, + 0x0A, 0xE4, 0x15, 0x1D, 0x86, 0x25, 0xE5, 0xDC, 0xD4, 0x32, 0xF9, 0x3C, 0x0C, 0x8B, 0x0D, 0x46, + 0x48, 0x52, 0x42, 0xC0, 0x28, 0xC5, 0x90, 0xBF, 0x7B, 0x5F, 0x7F, 0xFF, 0xA1, 0x21, 0x14, 0x6A, + 0xBD, 0xFC, 0xF3, 0x77, 0x0D, 0x04, 0x19, 0x02, 0xFC, 0xFD, 0x43, 0x95, 0x52, 0x10, 0x15, 0xDF, + 0x6E, 0x1B, 0x4E, 0x52, 0x5B, 0x11, 0xC9, 0x82, 0xE4, 0x8C, 0x92, 0x42, 0x10, 0x2B, 0x21, 0xD9, + 0xE8, 0x36, 0xB7, 0xBC, 0xED, 0xB9, 0x73, 0x7E, 0xD5, 0x11, 0x8A, 0xD1, 0x30, 0x58, 0x88, 0x92, + 0x0F, 0x85, 0x10, 0x0A, 0x61, 0xBE, 0xB9, 0xED, 0xDA, 0x5A, 0x20, 0x00, 0x6C, 0x44, 0x84, 0x22, + 0xB5, 0x18, 0x58, 0x52, 0x25, 0xD8, 0xF5, 0x3C, 0x41, 0x08, 0x5D, 0x0A, 0xC7, 0xF3, 0x9C, 0x73, + 0xC6, 0x10, 0x9E, 0xAF, 0x83, 0xD2, 0xBE, 0x6F, 0xEA, 0x56, 0xD2, 0xF7, 0x0F, 0xDB, 0xDD, 0xBA, + 0xFF, 0x70, 0xB7, 0xFB, 0xE7, 0xDF, 0x7E, 0xBC, 0xD9, 0xF4, 0x1F, 0xEE, 0x77, 0xF7, 0x87, 0xED, + 0xED, 0xBE, 0xBB, 0x59, 0x0B, 0x46, 0xE0, 0x3C, 0xEB, 0x71, 0x56, 0x9B, 0xF5, 0x0A, 0x20, 0x18, + 0x53, 0xA4, 0x94, 0x50, 0x82, 0x11, 0xCA, 0x25, 0x16, 0x42, 0x50, 0xF0, 0x9E, 0x62, 0xF8, 0xFE, + 0x6E, 0x0F, 0x21, 0x88, 0x29, 0xC6, 0x5C, 0xCE, 0xC3, 0xA4, 0x8D, 0xF3, 0x31, 0x53, 0x46, 0xFA, + 0xBE, 0x4D, 0x29, 0xC7, 0x18, 0x62, 0x48, 0x8C, 0x52, 0x08, 0xA0, 0x76, 0xBE, 0xAA, 0x1B, 0xEF, + 0xBD, 0xF7, 0xAE, 0x80, 0xAF, 0xB4, 0x63, 0x10, 0x62, 0x4C, 0x29, 0x15, 0x00, 0x08, 0x41, 0xEB, + 0xB6, 0xDE, 0xAC, 0xD6, 0x08, 0xF3, 0x90, 0x81, 0xF5, 0xC9, 0x58, 0xD7, 0xB7, 0xED, 0x66, 0xD5, + 0xE5, 0x9C, 0x8D, 0x35, 0xEB, 0x75, 0x5B, 0x40, 0x96, 0x15, 0xA7, 0x8C, 0x12, 0x4A, 0x10, 0xC2, + 0x6A, 0xB1, 0xE3, 0x62, 0xDB, 0xAE, 0x91, 0x75, 0xF5, 0x76, 0x1A, 0x00, 0x84, 0xA5, 0x24, 0x67, + 0x4C, 0x5D, 0x55, 0xE3, 0x62, 0x00, 0xC0, 0x25, 0x03, 0x6D, 0xFD, 0xB2, 0xE8, 0xBA, 0x6E, 0x32, + 0x00, 0xFB, 0x5D, 0x7B, 0xB3, 0xD9, 0x01, 0x80, 0x8D, 0xB1, 0x82, 0x53, 0x00, 0x80, 0x0B, 0x9E, + 0x71, 0x12, 0x52, 0x8E, 0x19, 0x2F, 0xC6, 0x5D, 0xA7, 0x39, 0xBA, 0xC0, 0x28, 0x79, 0xBB, 0xCC, + 0x29, 0xFA, 0xB6, 0x62, 0xF7, 0xFB, 0x9B, 0x8A, 0x71, 0x82, 0x70, 0x55, 0x57, 0x6F, 0xC7, 0xE3, + 0x62, 0x8C, 0xF5, 0x56, 0x7F, 0xED, 0xF7, 0x52, 0x1E, 0x73, 0x7A, 0x7B, 0x3B, 0x2F, 0xD6, 0xFE, + 0xF4, 0x74, 0x3C, 0x0D, 0xF6, 0xE5, 0x34, 0xA6, 0x0C, 0x25, 0x17, 0x10, 0x63, 0x21, 0x24, 0xC6, + 0xA4, 0xEF, 0xE4, 0x7A, 0xDD, 0x72, 0x46, 0xEB, 0x8A, 0x8F, 0x93, 0xE2, 0x8C, 0x31, 0x8C, 0x28, + 0x46, 0x94, 0x60, 0x8C, 0x11, 0x67, 0x04, 0x94, 0xB2, 0x6A, 0x44, 0x5D, 0x53, 0x08, 0xD0, 0xED, + 0x76, 0x6B, 0x8C, 0x39, 0x5E, 0xE7, 0x94, 0x0A, 0xA7, 0xE4, 0xE1, 0x6E, 0x43, 0x29, 0xEA, 0x1A, + 0xDA, 0x4A, 0xD6, 0x56, 0xD5, 0x32, 0x9B, 0xAE, 0xAD, 0x82, 0x8B, 0x39, 0x17, 0xAD, 0x7C, 0x53, + 0x8B, 0x52, 0x60, 0xD7, 0x49, 0x2E, 0x28, 0xA1, 0x50, 0xD6, 0x22, 0xF8, 0x94, 0x73, 0xC2, 0x18, + 0x4C, 0x83, 0x72, 0x21, 0x26, 0x5C, 0x42, 0xC8, 0x5F, 0x0B, 0x73, 0x08, 0x82, 0xEB, 0xB4, 0xFC, + 0xF2, 0xE5, 0xB4, 0x59, 0xB5, 0x10, 0xE5, 0x61, 0x98, 0x0B, 0x2C, 0xD1, 0x87, 0xBA, 0xAA, 0x20, + 0x44, 0x97, 0x71, 0x22, 0x11, 0x94, 0xD5, 0xBA, 0x39, 0x9E, 0x5E, 0x46, 0xA7, 0x08, 0x61, 0x00, + 0x02, 0x6F, 0x6D, 0xD3, 0xC8, 0x55, 0x5D, 0x55, 0xAB, 0x5B, 0x9B, 0xF1, 0xE9, 0x72, 0x2E, 0x25, + 0x2B, 0xAD, 0x9A, 0xCD, 0xDD, 0xCD, 0xFD, 0x87, 0xB7, 0xA7, 0xBF, 0x6B, 0x63, 0x00, 0x00, 0x84, + 0x91, 0xE3, 0x79, 0x24, 0x04, 0x43, 0x04, 0x8D, 0x09, 0x02, 0x12, 0xE3, 0x42, 0x8C, 0xFE, 0xFD, + 0xED, 0xB6, 0x11, 0xEC, 0xF1, 0xDB, 0x7F, 0xBA, 0x5E, 0x4F, 0xFB, 0x1A, 0xDE, 0x1E, 0x56, 0xA5, + 0xB8, 0x3F, 0x3E, 0x22, 0x52, 0x32, 0x6A, 0xD8, 0x37, 0x1B, 0xE8, 0x63, 0x20, 0xEC, 0xF8, 0x83, + 0xFE, 0x34, 0x2E, 0xB2, 0x2D, 0x2F, 0x7F, 0xFC, 0x7E, 0x87, 0x5C, 0xF8, 0x32, 0x4C, 0xE7, 0x39, + 0x75, 0x92, 0x29, 0x9F, 0x0F, 0x1B, 0xF9, 0xFB, 0xBB, 0xBC, 0xE9, 0x01, 0x41, 0x99, 0xA3, 0x8D, + 0xE5, 0x8F, 0xE5, 0xF2, 0xD7, 0xB2, 0x7A, 0x77, 0xA4, 0x1F, 0xE6, 0xE1, 0xB4, 0x29, 0x9F, 0x9F, + 0xC7, 0x78, 0x77, 0x53, 0x3D, 0x9F, 0x4E, 0x8B, 0x8A, 0xEF, 0xB6, 0x02, 0xE3, 0xE6, 0x7F, 0xFC, + 0xE7, 0xD3, 0xFB, 0x77, 0x8D, 0xF5, 0xE0, 0xCF, 0xAF, 0xF3, 0x4F, 0xA7, 0x42, 0x10, 0x3C, 0xEC, + 0xF1, 0xDB, 0x35, 0x61, 0x00, 0x3E, 0x6D, 0xF3, 0x92, 0xF0, 0xEC, 0xCA, 0xA8, 0x22, 0xE7, 0x60, + 0x56, 0x05, 0x42, 0xE0, 0x63, 0xF9, 0xE5, 0xA7, 0x18, 0x3C, 0x20, 0x34, 0x33, 0xEA, 0x2A, 0x01, + 0xB7, 0x1D, 0x6C, 0xEB, 0x15, 0xC6, 0x28, 0xC6, 0x58, 0x10, 0x34, 0x26, 0x42, 0x10, 0xA7, 0x69, + 0xA1, 0x92, 0x25, 0xEF, 0xBB, 0x5E, 0x70, 0x0C, 0x4A, 0x0A, 0xE7, 0xC1, 0xFA, 0x9C, 0x5F, 0xBE, + 0x0C, 0xF8, 0x8D, 0xE4, 0x5C, 0x96, 0xC9, 0xFC, 0xF6, 0xBB, 0xFD, 0xB8, 0x58, 0x6B, 0xB3, 0xF6, + 0xC9, 0xDA, 0x38, 0x6B, 0x3F, 0x8D, 0x2F, 0x5D, 0x5F, 0xAB, 0xC5, 0x61, 0x42, 0x08, 0x26, 0x4D, + 0x25, 0x8D, 0x73, 0x8C, 0x11, 0x51, 0xD3, 0x79, 0xD6, 0xD3, 0x62, 0x82, 0x8B, 0x08, 0x43, 0x6B, + 0x3D, 0xE3, 0x14, 0x61, 0x84, 0x31, 0x82, 0x00, 0xB5, 0xAC, 0xB2, 0x3A, 0x1A, 0x6F, 0xB7, 0xDB, + 0x5E, 0x2D, 0xD6, 0x84, 0x70, 0x7E, 0x1B, 0x00, 0x80, 0xBB, 0xF5, 0x6A, 0xB7, 0xED, 0x38, 0x41, + 0x00, 0xC4, 0x9B, 0x6D, 0xF5, 0xDF, 0xFF, 0xE7, 0x9F, 0xD6, 0x5D, 0x3B, 0x8C, 0xCB, 0xB4, 0x18, + 0xC1, 0x2B, 0x29, 0x65, 0x57, 0x57, 0x97, 0x59, 0x05, 0x1F, 0x5D, 0x88, 0xA0, 0x14, 0x2E, 0xD8, + 0x4F, 0xCF, 0xAF, 0xC6, 0xDA, 0xC7, 0xDB, 0xC3, 0xDD, 0xCD, 0x81, 0x31, 0x72, 0xBD, 0x5C, 0x38, + 0x67, 0x5C, 0xF2, 0x98, 0xF2, 0xA2, 0x14, 0x13, 0x14, 0x22, 0x2E, 0x04, 0xBB, 0x5E, 0xE6, 0xAA, + 0x6D, 0x64, 0x25, 0x3E, 0xFF, 0xFA, 0xA2, 0x94, 0x0F, 0x3E, 0x75, 0x7D, 0x2D, 0x24, 0xC9, 0x05, + 0x40, 0x08, 0x05, 0xC5, 0xCF, 0x2F, 0xC3, 0xFD, 0xED, 0xCA, 0x07, 0x57, 0x72, 0xF9, 0x70, 0x2F, + 0x61, 0x30, 0x42, 0xE4, 0x5E, 0x74, 0xEF, 0xF7, 0xF4, 0xA7, 0x57, 0x35, 0x3B, 0xF7, 0xE9, 0x63, + 0xBD, 0x65, 0xF0, 0xBA, 0xE0, 0xFF, 0xE7, 0x9F, 0x9A, 0x61, 0x72, 0x3E, 0x80, 0xCD, 0x96, 0xCE, + 0xCB, 0x15, 0x12, 0x92, 0xC3, 0xC8, 0x44, 0x6B, 0x03, 0x08, 0xCE, 0x4A, 0x01, 0x49, 0x9D, 0x5B, + 0x94, 0x09, 0x25, 0x97, 0x31, 0xFC, 0xFE, 0x83, 0x30, 0x2E, 0xFC, 0xFB, 0x5F, 0x26, 0x4C, 0xD0, + 0x7E, 0x4F, 0xAF, 0x03, 0x70, 0xDE, 0x3F, 0x3C, 0xD4, 0xF7, 0x77, 0xDD, 0xF1, 0x65, 0x94, 0x92, + 0x7E, 0xEA, 0x7A, 0xAD, 0x46, 0x86, 0x20, 0x86, 0xC5, 0xE8, 0xB0, 0xDB, 0xEE, 0x52, 0xC9, 0x12, + 0x64, 0x18, 0xE1, 0xC7, 0xF7, 0x0F, 0x20, 0xFB, 0x94, 0xBC, 0x94, 0x92, 0x12, 0x5C, 0x32, 0xA0, + 0x94, 0x29, 0xED, 0x09, 0x02, 0x25, 0x05, 0xAB, 0xE7, 0x10, 0x01, 0x44, 0xC4, 0x3B, 0x7F, 0xC9, + 0x8E, 0x30, 0x52, 0x55, 0xF0, 0x8E, 0x35, 0x7D, 0xD7, 0xC7, 0xD4, 0x5D, 0x86, 0x6E, 0xB1, 0xE1, + 0x78, 0x1E, 0xB5, 0x51, 0xAB, 0x5A, 0x2E, 0xCA, 0xE7, 0x90, 0xBA, 0xBE, 0xA6, 0x8C, 0x09, 0xCE, + 0x67, 0xE5, 0x5E, 0xCF, 0x97, 0x5A, 0xD0, 0x5A, 0xB0, 0xD9, 0x38, 0x08, 0x60, 0x0C, 0x41, 0x2B, + 0x23, 0x18, 0x8D, 0x21, 0xB9, 0x10, 0x4B, 0x01, 0x29, 0x25, 0x63, 0x74, 0x8C, 0x11, 0x43, 0x98, + 0x4A, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0xA5, 0x14, 0x08, 0xA1, 0x75, 0x81, 0x6F, 0x39, 0x23, + 0x34, 0x15, 0x94, 0x12, 0xA0, 0xA2, 0xFA, 0xB0, 0xDD, 0x0B, 0x10, 0x9C, 0x35, 0xD6, 0xFB, 0x61, + 0x5E, 0xA4, 0xA4, 0x00, 0x94, 0xE3, 0xF9, 0x3A, 0xCF, 0x6E, 0xBB, 0xED, 0x01, 0x04, 0xA0, 0x00, + 0x58, 0xE0, 0xA4, 0xAC, 0x09, 0xBE, 0x40, 0x00, 0x11, 0xC8, 0xD1, 0xCB, 0xAA, 0x53, 0x9E, 0xFF, + 0xF2, 0xFC, 0x74, 0xB7, 0xDB, 0x96, 0x12, 0x2A, 0x81, 0x0E, 0xBB, 0xD5, 0xEB, 0x79, 0x96, 0x5C, + 0x40, 0x88, 0x31, 0x13, 0x39, 0xA6, 0xE7, 0xD3, 0xD8, 0x4A, 0x16, 0x53, 0x76, 0x3E, 0x12, 0x8A, + 0x73, 0x41, 0x11, 0x64, 0xAD, 0x67, 0x49, 0x49, 0xC5, 0x99, 0xF3, 0x65, 0xDD, 0xB5, 0x1F, 0xEE, + 0x36, 0x4D, 0xC5, 0x43, 0xC4, 0xBF, 0x7C, 0x7E, 0x5D, 0xAC, 0xCD, 0x00, 0x0E, 0xF3, 0x62, 0x9D, + 0xDF, 0x6D, 0x5B, 0x08, 0x20, 0xE7, 0xAC, 0xAA, 0x25, 0x63, 0x74, 0x7F, 0xD3, 0x82, 0x82, 0x66, + 0xED, 0x66, 0x9D, 0xC6, 0x69, 0xFC, 0xF8, 0xEE, 0xA6, 0x6B, 0x1B, 0x63, 0xDC, 0xB4, 0x98, 0xBE, + 0xEB, 0x8C, 0x71, 0x9C, 0xB2, 0xDF, 0x7E, 0x7A, 0x98, 0x66, 0x43, 0x10, 0x61, 0x8C, 0x8E, 0xE3, + 0x90, 0x0B, 0xC4, 0x84, 0x11, 0x92, 0x16, 0xAD, 0x42, 0x4C, 0x92, 0x33, 0x6F, 0xE2, 0xCD, 0xCD, + 0x6E, 0x98, 0x97, 0xF3, 0xB8, 0x20, 0x04, 0x41, 0x49, 0x9F, 0xEE, 0x36, 0x29, 0xA7, 0xEB, 0xAC, + 0x71, 0x23, 0xBF, 0x4C, 0x17, 0xE7, 0xFC, 0xEF, 0xBF, 0x7B, 0xCC, 0x09, 0x8D, 0xA3, 0x0D, 0x29, + 0xC9, 0x0A, 0x4B, 0x8A, 0x34, 0x42, 0x6A, 0xB4, 0x98, 0x62, 0xC2, 0xB0, 0x5A, 0x0C, 0x93, 0x54, + 0x08, 0x89, 0x40, 0x16, 0x9C, 0x52, 0x42, 0x31, 0x63, 0xE8, 0x00, 0x9E, 0x3E, 0x5F, 0x65, 0x55, + 0x1B, 0x1D, 0x52, 0x4E, 0xDF, 0x7C, 0xD8, 0x1C, 0xB6, 0xF2, 0xE9, 0x55, 0x63, 0x02, 0x77, 0xDB, + 0xDE, 0x28, 0xEB, 0x62, 0xFA, 0xF5, 0xE5, 0x88, 0x08, 0xC2, 0x08, 0x67, 0x88, 0x79, 0xD0, 0xE7, + 0x9E, 0x78, 0x2A, 0x1A, 0x97, 0x8A, 0x60, 0xA8, 0x60, 0xE1, 0x12, 0xC1, 0xB4, 0x2A, 0x00, 0x9C, + 0x8E, 0x2F, 0x8C, 0x12, 0xCE, 0x69, 0xD5, 0xED, 0xCE, 0x97, 0xA3, 0xF7, 0x8E, 0x57, 0xB5, 0xD1, + 0xEA, 0xAB, 0x29, 0xA8, 0x64, 0x50, 0x4A, 0xF9, 0xD7, 0x6F, 0xB8, 0x09, 0xE5, 0x32, 0xE9, 0xBB, + 0x4D, 0xFB, 0xC7, 0xC7, 0x1D, 0xAF, 0xD7, 0xCF, 0xA7, 0xEB, 0x43, 0x13, 0xBE, 0x5D, 0x99, 0x9A, + 0xC4, 0x35, 0xF1, 0x92, 0x97, 0x94, 0x9D, 0xB3, 0x7A, 0x57, 0x25, 0xC4, 0xC9, 0xD3, 0xF1, 0x0D, + 0xB2, 0xDE, 0xBB, 0xF0, 0x58, 0x9D, 0x1F, 0xB7, 0x38, 0x25, 0x77, 0xBB, 0x15, 0x77, 0x3B, 0x5E, + 0x91, 0xF2, 0x70, 0x4B, 0x36, 0x2D, 0x3A, 0x6A, 0xEB, 0x53, 0xB2, 0x2E, 0x80, 0x22, 0xDE, 0xF5, + 0x0C, 0x8A, 0xEE, 0x3F, 0x8E, 0xD8, 0xCE, 0xBF, 0xEC, 0x2B, 0xBD, 0x62, 0xB1, 0xE6, 0x5E, 0x7B, + 0xE6, 0x8A, 0xFC, 0xF1, 0xA4, 0xD6, 0xDB, 0xCD, 0x64, 0x20, 0x00, 0x59, 0x85, 0x94, 0x8B, 0xFE, + 0x75, 0x20, 0x92, 0xC1, 0xDB, 0x75, 0x19, 0x54, 0x19, 0xAF, 0xB9, 0xA9, 0xE1, 0xD3, 0x35, 0x11, + 0x02, 0x85, 0x2C, 0xB3, 0x01, 0xCE, 0x17, 0xC6, 0x10, 0x43, 0xA0, 0xE2, 0x4C, 0x99, 0xC4, 0x28, + 0xC2, 0x10, 0xC6, 0x98, 0x09, 0x2E, 0x6D, 0x25, 0x0A, 0xC0, 0x39, 0x17, 0x17, 0xE2, 0xAC, 0x33, + 0x84, 0x14, 0x66, 0x53, 0x4B, 0xD2, 0x76, 0x22, 0x45, 0xC7, 0x29, 0xF2, 0xD6, 0x3F, 0x7D, 0xB9, + 0x1E, 0x2F, 0x6A, 0x98, 0x4C, 0x2A, 0x80, 0x70, 0x9E, 0x63, 0xAC, 0x24, 0xCF, 0x10, 0xBA, 0x08, + 0xE6, 0xC9, 0x11, 0x84, 0x73, 0x49, 0x18, 0x81, 0xAA, 0x12, 0x29, 0xE7, 0x52, 0xC0, 0x6A, 0xD5, + 0xD4, 0x8D, 0x04, 0x20, 0x57, 0x4D, 0x05, 0x09, 0x36, 0x3A, 0x2C, 0x8B, 0x1D, 0x06, 0x05, 0x21, + 0xC4, 0x14, 0x53, 0x8A, 0x8D, 0xF5, 0x31, 0x46, 0x8C, 0x51, 0x4C, 0x25, 0xE5, 0xA2, 0xB4, 0xF1, + 0x31, 0x8E, 0xB3, 0x52, 0xC6, 0x19, 0xEB, 0x7D, 0x48, 0x97, 0x61, 0xD6, 0xCE, 0x10, 0x82, 0x63, + 0x49, 0xB3, 0xD6, 0x84, 0x94, 0x9B, 0x4D, 0xCF, 0x30, 0xBB, 0xCE, 0x9A, 0x33, 0x78, 0xD8, 0x6F, + 0x09, 0x86, 0x2F, 0xC7, 0xCB, 0xB0, 0x98, 0xD7, 0xF3, 0xF5, 0xF1, 0x66, 0xBB, 0xEE, 0xEB, 0xF3, + 0x30, 0x0B, 0x4E, 0xF7, 0xEB, 0xFE, 0xB0, 0x59, 0x13, 0x0C, 0xCF, 0x97, 0x6B, 0xD7, 0xAF, 0x08, + 0x15, 0xD6, 0x58, 0x1F, 0xBD, 0x8F, 0x71, 0x99, 0x14, 0xA5, 0xD0, 0xDA, 0xA0, 0x54, 0x60, 0x8C, + 0x54, 0x95, 0x44, 0x10, 0x71, 0x81, 0x72, 0x06, 0x6D, 0xC3, 0x9D, 0x8B, 0xE3, 0x64, 0xBF, 0x7D, + 0xEC, 0x6B, 0x81, 0x0F, 0x87, 0xAA, 0x17, 0xF8, 0x71, 0x0B, 0x1A, 0x49, 0xB7, 0x15, 0x58, 0xB7, + 0x19, 0xC0, 0xC2, 0x10, 0xB0, 0xDA, 0x27, 0x10, 0x21, 0x2A, 0xB8, 0x64, 0x1D, 0x32, 0xAD, 0xF8, + 0xE9, 0x6A, 0x78, 0x05, 0xDB, 0x8E, 0x65, 0xA7, 0x1A, 0x01, 0x95, 0x76, 0xC1, 0xA4, 0x82, 0x50, + 0x82, 0x30, 0x17, 0x84, 0x90, 0x8F, 0x79, 0xB1, 0x46, 0x5F, 0x86, 0xCC, 0x18, 0xAD, 0x65, 0x0C, + 0x10, 0x66, 0x0C, 0x61, 0xF1, 0xD6, 0x45, 0x0C, 0xCB, 0xBF, 0xFE, 0x41, 0x0A, 0x86, 0xAE, 0xD7, + 0x31, 0xC4, 0x80, 0x09, 0x4B, 0xCE, 0x1D, 0xD6, 0xFD, 0xB6, 0xAF, 0x39, 0xA3, 0x94, 0x8A, 0x4A, + 0xB0, 0x56, 0xCA, 0x8A, 0x92, 0xBE, 0xE1, 0x84, 0xF0, 0x14, 0x0B, 0x28, 0xD0, 0xF9, 0x80, 0x28, + 0x4D, 0x00, 0x68, 0x9B, 0x6C, 0x08, 0xB9, 0x64, 0x2A, 0xE8, 0x34, 0xCD, 0xC3, 0x34, 0x23, 0x02, + 0x17, 0x63, 0x62, 0x0C, 0x8B, 0xB5, 0xE7, 0x41, 0x69, 0x13, 0x43, 0x02, 0xA0, 0x94, 0x9C, 0x72, + 0xDF, 0x4A, 0x6D, 0xDD, 0xB2, 0x18, 0xCE, 0x64, 0x2E, 0x45, 0xD6, 0x12, 0x13, 0x7A, 0xB3, 0xDB, + 0xCF, 0xF3, 0xF2, 0xF4, 0x7A, 0xFA, 0xF8, 0x70, 0x8B, 0x21, 0x08, 0x29, 0x02, 0x88, 0x63, 0x8C, + 0x5F, 0x55, 0x58, 0xA0, 0x00, 0xEF, 0x63, 0x2E, 0xB0, 0x14, 0x50, 0x4A, 0xF9, 0x6A, 0x8A, 0xF8, + 0xC7, 0x0C, 0xFB, 0xBF, 0x1F, 0x82, 0xE8, 0x6E, 0xBF, 0x5F, 0x94, 0x8A, 0x19, 0xF4, 0x9B, 0x03, + 0x28, 0x05, 0xE5, 0x68, 0x96, 0x69, 0xD1, 0xC6, 0x78, 0x8F, 0x10, 0x9C, 0x16, 0xFD, 0xF9, 0xF5, + 0x0C, 0x20, 0x32, 0xD6, 0x1B, 0x6B, 0x0B, 0x04, 0x31, 0x15, 0xE7, 0xD3, 0xA2, 0xFD, 0xAC, 0x5C, + 0xCA, 0xE5, 0x32, 0x6A, 0xE3, 0x02, 0x00, 0x20, 0x16, 0x90, 0x4B, 0x4A, 0x39, 0x84, 0xE8, 0x39, + 0x06, 0x4A, 0xCD, 0x4D, 0xDB, 0x4B, 0x29, 0xCE, 0xC3, 0x15, 0x40, 0xE0, 0xBD, 0x3B, 0x5D, 0x06, + 0x59, 0x37, 0x21, 0x16, 0x97, 0xA1, 0xF1, 0x01, 0x63, 0x32, 0xCD, 0x73, 0x4A, 0x51, 0x32, 0x2A, + 0x38, 0xE7, 0x8C, 0x7E, 0xB8, 0xDB, 0x2F, 0x8B, 0x79, 0x3D, 0x4D, 0x7F, 0xF9, 0xF9, 0x65, 0x36, + 0xEE, 0x78, 0x9D, 0x86, 0xC5, 0xA6, 0x0C, 0x38, 0xA3, 0x94, 0x10, 0x00, 0x60, 0xCC, 0x69, 0x18, + 0xE7, 0xF3, 0x79, 0x40, 0x10, 0xAD, 0xDB, 0x6E, 0xBF, 0x6E, 0x38, 0x01, 0xF7, 0xFB, 0x76, 0xD5, + 0x72, 0x90, 0xF3, 0xD3, 0xEB, 0x79, 0xD1, 0xEE, 0xF9, 0xED, 0xF2, 0x7C, 0x1C, 0x08, 0xC6, 0x25, + 0x17, 0x29, 0xAB, 0x75, 0xDF, 0x43, 0x98, 0x9C, 0xF7, 0x5D, 0xDF, 0x87, 0x50, 0x16, 0xAD, 0x21, + 0x2A, 0xD6, 0x39, 0xCE, 0x18, 0xE7, 0x74, 0x9A, 0xCD, 0xDB, 0xF9, 0x1A, 0x72, 0x41, 0xA0, 0xAC, + 0x1A, 0x06, 0x72, 0x9A, 0x26, 0xAB, 0x4D, 0x30, 0x36, 0xBC, 0x5E, 0x17, 0x59, 0x89, 0xC3, 0x76, + 0xFB, 0x97, 0xBF, 0x3F, 0x17, 0x00, 0xD6, 0xEB, 0x66, 0xBB, 0x92, 0xC7, 0xF3, 0x32, 0x8C, 0x76, + 0x98, 0xCC, 0xB4, 0xB8, 0x71, 0xB6, 0x97, 0xF3, 0x24, 0x18, 0x36, 0x8B, 0x45, 0x10, 0x46, 0x1F, + 0x09, 0x46, 0x39, 0x44, 0x41, 0xE1, 0xAA, 0x6B, 0x04, 0x67, 0x5C, 0x92, 0x87, 0x43, 0xBF, 0x5F, + 0xB3, 0x10, 0x03, 0x17, 0xE4, 0xBB, 0x6F, 0xEE, 0xEF, 0x6F, 0x36, 0x5C, 0xD0, 0x71, 0x9E, 0xB5, + 0xB2, 0x4C, 0x70, 0x5C, 0xD7, 0x1D, 0x22, 0x92, 0x03, 0xBB, 0xAE, 0xD0, 0xA8, 0xE2, 0xE6, 0xF6, + 0x23, 0xE6, 0x8D, 0x73, 0x11, 0x95, 0x60, 0x8C, 0x3A, 0x9E, 0x4E, 0xCA, 0xCC, 0x84, 0x10, 0x65, + 0xDC, 0xE1, 0xFE, 0xD3, 0x97, 0xCF, 0x7F, 0xBF, 0x7F, 0xFC, 0xB0, 0x8C, 0x97, 0x92, 0xA3, 0x0B, + 0x81, 0x89, 0x86, 0x52, 0xB6, 0x92, 0xF0, 0xBF, 0x7D, 0x4B, 0x7F, 0x78, 0xB1, 0xDB, 0xBE, 0x7E, + 0xDC, 0x34, 0x77, 0x77, 0x77, 0xFF, 0xEB, 0xF3, 0x40, 0xCC, 0xE7, 0xDF, 0x6D, 0xA2, 0x76, 0xA1, + 0xAB, 0x49, 0xDB, 0xF0, 0xCB, 0xF8, 0xD6, 0x89, 0xBC, 0x6E, 0x45, 0x48, 0xE9, 0xAF, 0xAF, 0xCB, + 0xCB, 0x92, 0xB6, 0x15, 0xDB, 0x70, 0xD5, 0x55, 0xEE, 0xA2, 0x67, 0x4E, 0x59, 0x4C, 0x38, 0x66, + 0xB0, 0x59, 0x8B, 0x1F, 0x5E, 0xC7, 0xC9, 0x2D, 0x10, 0x41, 0x89, 0xC9, 0x4A, 0x70, 0x8E, 0x80, + 0xC9, 0xF0, 0xDF, 0x7E, 0x7C, 0x7E, 0xA8, 0xA7, 0x6E, 0x55, 0xFF, 0xED, 0xC5, 0x50, 0x06, 0x7C, + 0x4E, 0xBF, 0x7D, 0x7F, 0xB3, 0x38, 0x4F, 0x71, 0xBE, 0xED, 0x44, 0xC8, 0x71, 0xBD, 0xDD, 0xBE, + 0x5C, 0xA7, 0xB3, 0x4E, 0x00, 0xA1, 0xC7, 0x1E, 0xDC, 0x08, 0x78, 0xD3, 0x22, 0x42, 0xF0, 0x64, + 0x31, 0x67, 0x68, 0xD6, 0x65, 0x9C, 0xF3, 0xB6, 0xC7, 0x14, 0x63, 0xC9, 0xC1, 0x77, 0xF7, 0x1D, + 0xA1, 0xE4, 0xF9, 0x68, 0x30, 0x28, 0x9C, 0x21, 0x8C, 0x80, 0xF5, 0xC5, 0xD8, 0x9C, 0x53, 0x36, + 0xC6, 0xB9, 0x90, 0x66, 0x15, 0x19, 0xAB, 0x1E, 0x1F, 0xB6, 0x18, 0x2A, 0x67, 0x13, 0x26, 0xBD, + 0xD6, 0xE8, 0xE5, 0xE5, 0x24, 0x1A, 0xA9, 0xB5, 0x0B, 0x05, 0x54, 0xAD, 0x0C, 0xCE, 0xC6, 0x18, + 0x9B, 0x55, 0xF5, 0xFC, 0x32, 0x4A, 0xC9, 0xFF, 0xB1, 0x96, 0x31, 0x34, 0xCA, 0xC7, 0x98, 0x08, + 0x25, 0x25, 0x67, 0xA3, 0x7D, 0x01, 0x19, 0x63, 0x68, 0x5D, 0xC0, 0x04, 0x69, 0x6D, 0x11, 0x42, + 0x8C, 0x11, 0x21, 0xA9, 0xE0, 0x94, 0x71, 0x8A, 0x30, 0x4C, 0x29, 0x79, 0x17, 0x29, 0x25, 0x29, + 0xA5, 0x04, 0x0A, 0x80, 0xA0, 0x6E, 0x2A, 0xAB, 0xFD, 0x34, 0xAB, 0x52, 0x40, 0xDD, 0x54, 0xDE, + 0xC7, 0xD3, 0x79, 0x2C, 0xB0, 0x84, 0x9C, 0x16, 0xE5, 0xBA, 0xAE, 0xA6, 0x94, 0x7E, 0xFB, 0x78, + 0x97, 0x52, 0x26, 0x18, 0x6B, 0x63, 0x84, 0xA4, 0xDE, 0xFB, 0x4A, 0xF2, 0x02, 0xD0, 0x38, 0xA9, + 0x9C, 0xCB, 0x7E, 0xD3, 0xE7, 0x1C, 0x31, 0xC2, 0xC7, 0xD3, 0xA5, 0x5D, 0x1F, 0x10, 0xC1, 0xA5, + 0x00, 0x46, 0xD0, 0xF1, 0x32, 0x42, 0x00, 0x39, 0x85, 0x9C, 0x42, 0x00, 0xC2, 0x38, 0xE9, 0xD3, + 0x71, 0xC1, 0xB0, 0xDC, 0xEE, 0xFB, 0xC7, 0x7B, 0xDA, 0x37, 0xF8, 0xF5, 0xD5, 0x34, 0x82, 0x3C, + 0xEC, 0xD9, 0x3F, 0x7F, 0xD3, 0x31, 0x18, 0xEF, 0xF6, 0x14, 0xE4, 0xBC, 0xE9, 0x05, 0x67, 0x69, + 0x5D, 0xF3, 0xD1, 0xC6, 0x45, 0xFB, 0x71, 0x0C, 0x3E, 0x7A, 0x65, 0xCD, 0x68, 0x81, 0xD2, 0xDE, + 0xB9, 0xB4, 0xE8, 0x38, 0xD9, 0xE8, 0x5C, 0x80, 0x39, 0x42, 0x84, 0x5E, 0x8F, 0x7A, 0x9C, 0x3C, + 0xE7, 0x72, 0x5A, 0xD4, 0x62, 0x54, 0x2B, 0x90, 0x37, 0x56, 0x5B, 0x5D, 0x02, 0x9B, 0x2D, 0xCC, + 0x40, 0x33, 0xE2, 0x67, 0x65, 0x19, 0xF5, 0x9B, 0x35, 0x93, 0xB2, 0xBC, 0xBB, 0x43, 0x6B, 0xE2, + 0x4F, 0xE7, 0xEC, 0x13, 0xB6, 0xD6, 0xFF, 0xFA, 0xE5, 0x55, 0x32, 0x68, 0xF4, 0xF4, 0x7A, 0x7E, + 0xBB, 0x2C, 0x1A, 0x14, 0x60, 0xAC, 0xF6, 0xC9, 0xFA, 0xA0, 0x17, 0x67, 0x67, 0xE5, 0x8F, 0xE7, + 0xA5, 0x14, 0xF0, 0xE5, 0xF9, 0x12, 0x12, 0x0A, 0xC9, 0xBF, 0x1C, 0xAF, 0xF3, 0x62, 0x7C, 0x8C, + 0xD7, 0xD1, 0xE6, 0x52, 0x52, 0x4C, 0xB1, 0x64, 0x29, 0x00, 0x48, 0x69, 0x9A, 0x17, 0x46, 0xD1, + 0xEB, 0x49, 0xBD, 0x9E, 0xE7, 0xEB, 0x64, 0x2F, 0xA3, 0x19, 0x26, 0xDD, 0xB7, 0x52, 0x72, 0x8C, + 0x30, 0xCE, 0x10, 0x42, 0x08, 0x9A, 0xAA, 0x6E, 0xAA, 0xEA, 0xE9, 0xF9, 0xF4, 0x8F, 0x6F, 0x29, + 0xA5, 0xCC, 0xDA, 0x03, 0x80, 0x52, 0x4A, 0x08, 0x21, 0xE7, 0x62, 0xD7, 0x48, 0x82, 0x89, 0x0F, + 0x11, 0x61, 0x88, 0x00, 0xA8, 0x04, 0x2B, 0x00, 0xFC, 0x9F, 0x34, 0x06, 0x20, 0x00, 0x6D, 0xC5, + 0x01, 0x00, 0xFF, 0xF5, 0xB7, 0xB7, 0x37, 0xEB, 0xE6, 0xF6, 0xB0, 0xED, 0xD6, 0x07, 0x1F, 0x43, + 0x8C, 0xB9, 0xE4, 0x64, 0xB4, 0x5A, 0xB4, 0x9A, 0x95, 0x0E, 0x31, 0x2A, 0xEB, 0xAE, 0xD3, 0x62, + 0x9D, 0x23, 0x98, 0x72, 0xCE, 0x10, 0xC6, 0x00, 0x40, 0x63, 0x3D, 0x26, 0x2C, 0xE5, 0xEC, 0x43, + 0xD4, 0x36, 0xFA, 0x90, 0x39, 0xE7, 0x21, 0x85, 0xEB, 0x34, 0x59, 0xEF, 0x5D, 0xB0, 0xA0, 0x24, + 0xEF, 0x43, 0x21, 0x1C, 0x40, 0x68, 0xCC, 0x5C, 0x60, 0x66, 0x9C, 0x9F, 0xCE, 0xE7, 0xA6, 0x6E, + 0x0A, 0xE2, 0xDA, 0x3A, 0x88, 0x59, 0xCA, 0x0E, 0x81, 0x12, 0x63, 0x14, 0x82, 0x09, 0x86, 0xDF, + 0x2E, 0x43, 0x23, 0x30, 0x86, 0x68, 0x98, 0xF4, 0x4F, 0xCF, 0x67, 0xE3, 0xE2, 0xA4, 0x35, 0x66, + 0x8C, 0x31, 0x36, 0xCC, 0x4B, 0x57, 0x4B, 0x4A, 0xD0, 0xB4, 0x18, 0xAD, 0xBD, 0xB7, 0x89, 0x20, + 0xCC, 0x10, 0x89, 0x3E, 0x86, 0x10, 0x05, 0xC5, 0x08, 0x94, 0xF3, 0x75, 0xB2, 0xDE, 0x09, 0x41, + 0xFB, 0x96, 0x71, 0x0E, 0xF6, 0xDB, 0x36, 0xA5, 0x3C, 0x4E, 0xF3, 0xA2, 0xED, 0xA2, 0x2D, 0xA6, + 0xB0, 0x69, 0x65, 0xBF, 0x6E, 0x00, 0x28, 0x39, 0x07, 0x90, 0xB3, 0xB3, 0x69, 0xD5, 0x49, 0x50, + 0xD2, 0xF5, 0x32, 0x0F, 0xCA, 0xEE, 0xD7, 0x55, 0x5B, 0xF1, 0x52, 0xB0, 0xB5, 0xC1, 0xE7, 0x32, + 0x1B, 0x0F, 0x20, 0xB8, 0x2A, 0x5B, 0x73, 0x51, 0x4A, 0xD6, 0xDE, 0x69, 0xE3, 0x31, 0x82, 0x7F, + 0xFE, 0xFB, 0x6B, 0xCC, 0x38, 0xE7, 0xA2, 0x9D, 0x87, 0x18, 0x2E, 0xDA, 0xC6, 0x94, 0x00, 0x84, + 0x18, 0x22, 0xA5, 0x2C, 0x80, 0x70, 0xD1, 0x56, 0x2F, 0x1E, 0x23, 0x42, 0x28, 0x9B, 0x67, 0x43, + 0x71, 0xB1, 0xCE, 0xFF, 0xFC, 0xEB, 0xF5, 0x78, 0x5A, 0x56, 0x6D, 0x9F, 0x63, 0x99, 0x26, 0x9D, + 0x63, 0x5E, 0x75, 0x8D, 0x31, 0xF6, 0x7A, 0x99, 0xF0, 0xBE, 0x97, 0xF7, 0x8F, 0xDF, 0x82, 0x12, + 0x7F, 0x7E, 0x7A, 0x06, 0x6C, 0x9B, 0x21, 0x9C, 0x17, 0xBB, 0x67, 0xE6, 0xB1, 0xCD, 0x93, 0x36, + 0x9F, 0x5F, 0x4E, 0x94, 0x30, 0x17, 0xE2, 0x66, 0x7F, 0xEF, 0xBC, 0x47, 0x08, 0xE4, 0x18, 0x82, + 0x1E, 0x22, 0xC0, 0x9F, 0xF6, 0x62, 0xDD, 0xF2, 0x10, 0xE2, 0x6F, 0x6E, 0x24, 0xA7, 0x30, 0x64, + 0xFE, 0x5F, 0xBE, 0x59, 0xED, 0xD6, 0x9B, 0x9F, 0x07, 0xF8, 0xFA, 0xF2, 0xAB, 0xC4, 0xE9, 0x6E, + 0x55, 0xF6, 0x1B, 0xE1, 0x83, 0xF9, 0x65, 0x98, 0x01, 0x32, 0x18, 0xE7, 0x5F, 0xCE, 0xD0, 0x25, + 0xD8, 0xF0, 0x78, 0xD8, 0xD4, 0x14, 0x24, 0x81, 0xD5, 0xAB, 0x72, 0x2E, 0x62, 0x8E, 0xB1, 0x0B, + 0xC5, 0x97, 0x72, 0x9C, 0xA6, 0x51, 0xC7, 0xAA, 0xE2, 0x02, 0x40, 0x0C, 0xF0, 0x0F, 0x27, 0xF8, + 0x9F, 0x4F, 0x69, 0x72, 0xA3, 0xAC, 0x5C, 0xD3, 0x88, 0xB3, 0x4A, 0xBB, 0xAE, 0xF6, 0x01, 0xED, + 0x65, 0x72, 0x09, 0xFC, 0xE5, 0x69, 0x12, 0xBC, 0x7A, 0x1B, 0xA2, 0x07, 0xF9, 0xA4, 0xFD, 0x2F, + 0xAF, 0xCA, 0x7A, 0xB8, 0x68, 0xBF, 0xED, 0xF8, 0xA6, 0x65, 0x1C, 0xC4, 0xFB, 0x03, 0x92, 0x1C, + 0xD4, 0x92, 0xEA, 0x00, 0xB4, 0xC9, 0x35, 0x2F, 0x8C, 0x62, 0xE7, 0xF2, 0xC3, 0xCD, 0xDD, 0x7F, + 0xFE, 0x72, 0x4D, 0xA9, 0xC4, 0x98, 0x11, 0x86, 0x00, 0x40, 0xE7, 0x0A, 0x2C, 0x25, 0xE5, 0x5C, + 0x00, 0xC8, 0x05, 0xF8, 0x00, 0x1A, 0x49, 0xEE, 0x1E, 0x3E, 0x60, 0xBE, 0x62, 0xDD, 0x3D, 0xA4, + 0xF5, 0xAF, 0x5F, 0x3E, 0x07, 0x6F, 0x39, 0xC3, 0x10, 0x15, 0x8C, 0x51, 0x0C, 0x69, 0x9E, 0x74, + 0xCA, 0x25, 0x86, 0x94, 0x4A, 0x81, 0x05, 0x40, 0x50, 0xCE, 0xA3, 0x1E, 0xAE, 0x3A, 0xA6, 0x82, + 0x19, 0x59, 0x16, 0x5B, 0x72, 0x29, 0x08, 0x62, 0x8C, 0x85, 0xE0, 0x5A, 0x87, 0x18, 0x32, 0x28, + 0x00, 0x00, 0x18, 0x42, 0xCC, 0x39, 0x41, 0x04, 0x73, 0x2E, 0x94, 0x51, 0xCA, 0x08, 0x80, 0xC0, + 0x5A, 0x07, 0x10, 0x4E, 0xA5, 0x5C, 0x2F, 0xB3, 0x73, 0x51, 0x1B, 0x4B, 0x08, 0x01, 0x00, 0x20, + 0x84, 0xB8, 0x60, 0x18, 0xE3, 0x65, 0xD6, 0x2E, 0x44, 0xC2, 0xD8, 0x69, 0x58, 0x10, 0x02, 0xF7, + 0xBB, 0xBE, 0xE2, 0x3C, 0xC6, 0xB4, 0xDB, 0xAD, 0x77, 0x3D, 0xC7, 0xB8, 0xF8, 0x04, 0xC6, 0xD9, + 0x60, 0x82, 0x57, 0xAD, 0x68, 0x2A, 0x51, 0x0A, 0x80, 0x20, 0xCB, 0xBA, 0x49, 0x05, 0xBE, 0xBE, + 0xBC, 0xF6, 0xFD, 0xE6, 0x74, 0x3E, 0x5E, 0x87, 0x89, 0x61, 0x4C, 0x50, 0x98, 0x75, 0xEA, 0x7B, + 0x5E, 0x4B, 0x5C, 0x51, 0xF0, 0x9B, 0xF7, 0x55, 0x57, 0x11, 0x01, 0xD3, 0xB2, 0xD8, 0xAA, 0x66, + 0xFB, 0x2D, 0x6F, 0x78, 0xE1, 0x38, 0xA4, 0x0C, 0xAF, 0xE3, 0x22, 0x2A, 0x6A, 0xBD, 0xD3, 0x4E, + 0x29, 0xE7, 0x42, 0x04, 0x5A, 0xC5, 0xF3, 0x68, 0x06, 0x95, 0x9F, 0xCE, 0xE1, 0xDD, 0x01, 0xE4, + 0x18, 0x21, 0x14, 0x00, 0xC1, 0xCB, 0x14, 0x87, 0x31, 0xEC, 0x6A, 0x72, 0x19, 0xDD, 0x5F, 0x9F, + 0x23, 0x24, 0x6C, 0x58, 0xAC, 0xCF, 0x89, 0x62, 0x34, 0x0C, 0xCB, 0x75, 0xD4, 0x29, 0x17, 0x48, + 0x79, 0x46, 0x01, 0x66, 0x95, 0x62, 0x58, 0xE6, 0x50, 0x73, 0xE2, 0x73, 0x06, 0x29, 0x7B, 0xEB, + 0x7F, 0x79, 0x1E, 0x23, 0xC2, 0x31, 0x41, 0x63, 0x73, 0xCA, 0x68, 0xD6, 0xF3, 0x55, 0xB9, 0xC5, + 0x82, 0x75, 0xDF, 0xE8, 0xA0, 0xB9, 0x00, 0xDA, 0xCC, 0x4F, 0xE7, 0x81, 0x0B, 0x1C, 0x52, 0x29, + 0x00, 0x87, 0xE8, 0x52, 0x86, 0x42, 0x50, 0x00, 0xE2, 0xCB, 0xDB, 0xC5, 0xF9, 0xB4, 0xDB, 0xB6, + 0xC3, 0x30, 0x4D, 0xB3, 0x0D, 0x31, 0x1A, 0xE3, 0xBC, 0x8F, 0x21, 0x04, 0x1F, 0x8A, 0x75, 0x69, + 0xB3, 0x5E, 0x6D, 0x56, 0x9D, 0xAC, 0x45, 0xDF, 0x4A, 0x4A, 0xA8, 0x31, 0xB1, 0xA9, 0x2B, 0xCE, + 0x79, 0x55, 0x71, 0xC9, 0xD8, 0xFB, 0xDB, 0xFB, 0xB7, 0xE3, 0x79, 0x98, 0x14, 0xE7, 0x7C, 0x52, + 0xBA, 0x14, 0xA8, 0x8C, 0x8B, 0x31, 0x41, 0x88, 0x28, 0x21, 0x15, 0xA7, 0x30, 0xE7, 0xC5, 0xF9, + 0x98, 0xD2, 0x57, 0x4A, 0xAD, 0x0B, 0x11, 0xFE, 0xE3, 0x9A, 0x04, 0x00, 0x80, 0xDB, 0x4D, 0xFB, + 0x78, 0xE8, 0x9A, 0x5A, 0x3C, 0xDC, 0xAC, 0x41, 0x01, 0x8B, 0x8E, 0x6F, 0xE7, 0x61, 0x9A, 0x67, + 0x1F, 0x62, 0x88, 0xB1, 0x00, 0xE0, 0xBD, 0x4D, 0x39, 0xEF, 0x76, 0xFB, 0xD3, 0xE5, 0x62, 0xAC, + 0x05, 0x10, 0x00, 0x00, 0x18, 0xC7, 0xD6, 0xBA, 0x18, 0x0B, 0xA1, 0x24, 0x84, 0x00, 0x0A, 0x70, + 0xDE, 0x11, 0x8C, 0xB5, 0x9E, 0x73, 0xC9, 0xCA, 0x38, 0xAD, 0x0D, 0x67, 0x74, 0x9A, 0x66, 0x46, + 0x59, 0x06, 0x04, 0x12, 0x96, 0xA3, 0x8E, 0x29, 0xD5, 0x75, 0xFD, 0xF2, 0xF2, 0xD2, 0x34, 0x0D, + 0xA1, 0xDC, 0x06, 0x4F, 0x10, 0x2C, 0x29, 0x96, 0x92, 0x4A, 0xF6, 0xAB, 0x55, 0x4F, 0x29, 0x9A, + 0x97, 0x79, 0xBF, 0x69, 0x0E, 0xEB, 0x95, 0xF5, 0xF9, 0xBA, 0x18, 0x80, 0x50, 0x53, 0x57, 0x94, + 0x10, 0x17, 0xE2, 0xF1, 0x3A, 0xE6, 0x52, 0x56, 0xB5, 0xFC, 0x4A, 0xD3, 0xAB, 0x65, 0x55, 0x57, + 0xD5, 0x6E, 0xB3, 0xA6, 0x94, 0x0D, 0xB3, 0xBE, 0x8C, 0xCB, 0xDB, 0x79, 0x3A, 0x0D, 0x0A, 0x02, + 0x98, 0x01, 0xD0, 0xD6, 0xA6, 0x14, 0x08, 0x81, 0x04, 0x43, 0x21, 0x69, 0xD3, 0x0A, 0x88, 0xC9, + 0x3C, 0xAB, 0x7E, 0xD5, 0x1E, 0xDF, 0x86, 0x65, 0xD1, 0x9B, 0x4D, 0xB7, 0xDD, 0x34, 0xDB, 0x4D, + 0xFB, 0xE1, 0xDD, 0x76, 0xB5, 0x6A, 0xA5, 0x64, 0x8C, 0xE3, 0xA6, 0xAD, 0x6B, 0x8E, 0x00, 0x2C, + 0xCE, 0x86, 0xBE, 0x91, 0x93, 0xF6, 0x31, 0x45, 0x9F, 0x32, 0x27, 0xE4, 0x9B, 0xC7, 0x9E, 0x53, + 0x24, 0x18, 0x5D, 0xAF, 0xAB, 0xCD, 0xA6, 0x9D, 0x97, 0x10, 0x52, 0x28, 0x00, 0x68, 0x1B, 0x94, + 0x32, 0xCE, 0x07, 0x8A, 0xF1, 0x30, 0x1A, 0x63, 0x52, 0x8C, 0x71, 0x18, 0xF5, 0xFE, 0x6A, 0xF4, + 0xC4, 0x7C, 0x00, 0x00, 0x03, 0x78, 0x49, 0x44, 0x41, 0x54, 0xD0, 0xBF, 0x9D, 0x17, 0x6B, 0x83, + 0x94, 0xE2, 0xE9, 0xF9, 0xD2, 0xD4, 0xDC, 0x58, 0xDF, 0x37, 0xF5, 0xED, 0x7E, 0x3B, 0x4C, 0xE1, + 0x32, 0xA8, 0x69, 0xB1, 0xD7, 0xC9, 0x12, 0x84, 0xEE, 0x6E, 0x56, 0x4E, 0x5B, 0xFC, 0x78, 0xB3, + 0x22, 0x04, 0x39, 0x50, 0x4D, 0xD3, 0x70, 0xB8, 0xFB, 0xD6, 0x2F, 0x43, 0x4C, 0xF9, 0x3A, 0x9C, + 0x42, 0x88, 0xA7, 0xEB, 0xDC, 0xF6, 0x5B, 0x8C, 0x51, 0x2E, 0x80, 0x32, 0x51, 0x11, 0x20, 0x85, + 0xBC, 0x9C, 0x7E, 0xFD, 0x70, 0xBB, 0xDB, 0x54, 0xF4, 0xD3, 0x8E, 0xFC, 0xFE, 0xB1, 0x79, 0xD8, + 0xB0, 0x4D, 0x8B, 0x18, 0x15, 0x87, 0x8E, 0x45, 0x28, 0xFF, 0xFD, 0xD7, 0x10, 0xE7, 0x9F, 0xB6, + 0x0D, 0x52, 0xAE, 0x6C, 0x57, 0xD8, 0x86, 0x00, 0x4A, 0x79, 0x99, 0xED, 0x97, 0x6B, 0x76, 0x11, + 0x57, 0x04, 0x31, 0x02, 0x32, 0x30, 0x00, 0x82, 0xFF, 0xEF, 0xB3, 0xFF, 0xFB, 0x51, 0x45, 0x54, + 0x06, 0x05, 0x16, 0x67, 0x95, 0xB3, 0x31, 0x23, 0x1B, 0x9C, 0xCF, 0x40, 0x54, 0xDB, 0xE2, 0xED, + 0xA0, 0xCA, 0x0F, 0x2F, 0x11, 0x13, 0xCB, 0x25, 0x0D, 0x11, 0x28, 0x1B, 0x62, 0xCA, 0x10, 0x51, + 0xED, 0xE1, 0xEB, 0xC5, 0xCC, 0x09, 0xBD, 0xCD, 0xC5, 0x04, 0x8C, 0xE4, 0x23, 0xC0, 0xD5, 0x97, + 0x97, 0xD7, 0x79, 0xF6, 0x82, 0x82, 0xEF, 0x1F, 0x6B, 0x26, 0xC4, 0x71, 0xD4, 0x7F, 0x7E, 0x8E, + 0x4F, 0x43, 0x5A, 0xC9, 0x32, 0x2F, 0xF9, 0x34, 0x67, 0x4A, 0x61, 0x2C, 0x10, 0x22, 0x54, 0x57, + 0xDC, 0xF8, 0xFC, 0xF4, 0x3A, 0xC9, 0x8A, 0x31, 0x06, 0x53, 0x81, 0xC3, 0x14, 0x41, 0x01, 0x04, + 0xA3, 0x90, 0x20, 0x21, 0xD8, 0x38, 0x9F, 0x01, 0x6E, 0x05, 0x4C, 0x09, 0x2E, 0x0E, 0x0E, 0xE7, + 0x23, 0x84, 0xE0, 0x7A, 0xFA, 0x52, 0x0A, 0xE4, 0x9C, 0xC4, 0x10, 0xA7, 0xD1, 0xA4, 0x94, 0x7D, + 0xCC, 0xCE, 0x27, 0x6F, 0xA3, 0x10, 0xD4, 0x87, 0xAC, 0xB4, 0x07, 0xA5, 0x74, 0x9D, 0x2C, 0x19, + 0xB6, 0x75, 0x35, 0xCE, 0x26, 0x84, 0xD4, 0xAF, 0x1A, 0xC6, 0x99, 0xD1, 0xC1, 0xB9, 0xA0, 0x94, + 0x57, 0xDA, 0x96, 0x52, 0x52, 0x29, 0xB3, 0x72, 0xD6, 0xC5, 0xCB, 0xB0, 0x20, 0x04, 0x3E, 0x7F, + 0x39, 0x5D, 0x86, 0x99, 0x50, 0x0A, 0x00, 0xF2, 0x2E, 0x60, 0x82, 0x11, 0x82, 0x8C, 0x61, 0xC6, + 0x48, 0x4E, 0x69, 0xB3, 0xAA, 0x83, 0x77, 0x5D, 0x25, 0xDA, 0x9A, 0x6D, 0xD6, 0x75, 0x55, 0x51, + 0x6B, 0x5C, 0x2D, 0x19, 0x23, 0x84, 0x60, 0x7C, 0x7F, 0x7F, 0x58, 0xF5, 0x8D, 0x36, 0x26, 0xC3, + 0x82, 0x28, 0x8B, 0xDE, 0x3F, 0x1E, 0x36, 0xBB, 0x8D, 0xBC, 0x5E, 0xD5, 0xFE, 0xB0, 0x6F, 0xDB, + 0x2A, 0x25, 0xD7, 0xD4, 0x31, 0x46, 0x28, 0x45, 0x03, 0xA1, 0xCF, 0xD1, 0x03, 0x90, 0x9B, 0x1A, + 0xC7, 0x84, 0x19, 0x49, 0x30, 0xE7, 0x77, 0x37, 0x82, 0xF3, 0x32, 0x8E, 0x0B, 0x28, 0x09, 0x20, + 0x76, 0x7B, 0x10, 0xB5, 0xC8, 0x28, 0xC7, 0xCB, 0xA4, 0x01, 0xC5, 0x29, 0xE7, 0xF3, 0xE0, 0xDE, + 0x2E, 0xAA, 0x20, 0xC0, 0x38, 0x8C, 0x3E, 0xCE, 0x4B, 0x9C, 0x6C, 0x06, 0x10, 0x42, 0x04, 0x0F, + 0x6D, 0x79, 0x3B, 0x15, 0xCA, 0xC4, 0x30, 0x87, 0xB7, 0x93, 0xBF, 0xDD, 0xB1, 0x14, 0x92, 0x4D, + 0x45, 0xD4, 0x7C, 0x98, 0x03, 0xA1, 0xB0, 0xA9, 0xE9, 0xBC, 0xA4, 0xE7, 0xB3, 0x75, 0x11, 0xDB, + 0x84, 0x66, 0x6B, 0x18, 0xF6, 0x18, 0x97, 0x51, 0x15, 0x82, 0xA1, 0x8B, 0x7E, 0xB6, 0x25, 0x66, + 0xA2, 0x94, 0xF3, 0x91, 0x74, 0x7D, 0x35, 0xA9, 0xD0, 0x76, 0x9B, 0xEB, 0x38, 0x87, 0x08, 0xEA, + 0xA6, 0xFA, 0xE6, 0xE3, 0x3B, 0xE3, 0xCC, 0x75, 0xD4, 0xCE, 0x59, 0x90, 0x93, 0x0F, 0xA0, 0xAB, + 0x2B, 0x6B, 0x0B, 0x63, 0x28, 0x94, 0x80, 0x29, 0x8B, 0xCE, 0x84, 0x68, 0xB9, 0xA4, 0x84, 0x22, + 0x4A, 0x90, 0xB5, 0x8A, 0x32, 0x48, 0x08, 0xD8, 0xF4, 0x14, 0xC2, 0x3C, 0x2B, 0x9F, 0x0A, 0xD1, + 0x1E, 0x4C, 0x2A, 0x14, 0x88, 0xDA, 0xBE, 0x26, 0x18, 0x60, 0x84, 0x25, 0xE7, 0x14, 0x93, 0xA6, + 0xAE, 0x10, 0x2A, 0x14, 0x63, 0x4E, 0xB9, 0xB1, 0x8E, 0x73, 0xA9, 0x6D, 0xF0, 0x31, 0x95, 0x02, + 0x20, 0xA1, 0xFB, 0xDD, 0x01, 0x40, 0x24, 0x08, 0x5E, 0x77, 0x0D, 0xC6, 0x64, 0x58, 0x34, 0x82, + 0x90, 0x53, 0x12, 0x62, 0x8E, 0x39, 0xA7, 0x5C, 0xCA, 0xFF, 0x89, 0x64, 0xDB, 0x55, 0xDD, 0x37, + 0x32, 0xF8, 0x02, 0x60, 0x41, 0x08, 0x7D, 0x79, 0x1B, 0x7F, 0x7A, 0x7A, 0x89, 0x31, 0x7A, 0x1F, + 0xB8, 0xAC, 0xDA, 0xBA, 0xEA, 0x6B, 0x31, 0x8C, 0x63, 0x4E, 0x31, 0x97, 0x12, 0x52, 0xC4, 0x08, + 0x37, 0x6D, 0x6D, 0x9D, 0x73, 0xCE, 0x97, 0x52, 0x28, 0xA3, 0x29, 0x06, 0x6B, 0x8D, 0x10, 0x3C, + 0xE7, 0x64, 0xAD, 0x91, 0x52, 0x84, 0x18, 0x1F, 0x6E, 0x36, 0x1F, 0x6F, 0x77, 0xC7, 0x8B, 0x8A, + 0x09, 0x9C, 0x87, 0xD9, 0x5A, 0x0B, 0x21, 0xE0, 0xB2, 0x2A, 0x25, 0x41, 0x44, 0x98, 0x6C, 0x08, + 0x25, 0xDB, 0x9E, 0x31, 0x0A, 0x61, 0xC9, 0x5D, 0xCB, 0x29, 0x01, 0x5D, 0x5B, 0xE5, 0x12, 0x21, + 0xF2, 0xAB, 0x46, 0xE4, 0x8C, 0x5C, 0xC2, 0xC6, 0xF9, 0x5C, 0x40, 0x08, 0x3E, 0xE5, 0x32, 0x2B, + 0x15, 0x62, 0x02, 0x00, 0xC6, 0x98, 0x63, 0x2E, 0xA3, 0x32, 0xCE, 0xC7, 0x94, 0x4B, 0x25, 0xE5, + 0x0F, 0x3F, 0x7D, 0x79, 0xBB, 0x4E, 0xE7, 0x69, 0x01, 0x05, 0xB6, 0x75, 0x25, 0x44, 0x65, 0xAD, + 0x15, 0x8C, 0x5E, 0xC6, 0x45, 0x69, 0x5B, 0x20, 0x50, 0xD6, 0x86, 0x94, 0xD6, 0xAB, 0xA6, 0xEF, + 0x24, 0x84, 0x65, 0x99, 0xF5, 0xCB, 0xCB, 0x59, 0xAB, 0xF8, 0xF2, 0x32, 0x8D, 0xA3, 0xA1, 0x0C, + 0x23, 0x84, 0x21, 0x44, 0x6D, 0xDB, 0x3E, 0xDC, 0xEF, 0xD7, 0xEB, 0xDE, 0xEA, 0xA5, 0x91, 0xD0, + 0xD8, 0x70, 0x1C, 0x16, 0x82, 0xD0, 0x7E, 0x2D, 0x25, 0x17, 0x7D, 0x5B, 0x73, 0xCE, 0xA7, 0xC9, + 0x20, 0x4A, 0x9E, 0x5F, 0x27, 0x82, 0xE1, 0xA2, 0x0D, 0xA6, 0x58, 0x5B, 0xBF, 0x28, 0x5B, 0x55, + 0x94, 0x60, 0x12, 0x52, 0xD9, 0x6C, 0xDA, 0x79, 0x31, 0xA7, 0x51, 0x35, 0x82, 0x7D, 0x4D, 0xBC, + 0x39, 0x33, 0xC6, 0x64, 0x0C, 0xA9, 0xAA, 0x19, 0x15, 0xD5, 0xAC, 0xEC, 0xCB, 0xDB, 0x95, 0x32, + 0xE4, 0xBC, 0x7F, 0x39, 0x5E, 0x38, 0xA7, 0xD3, 0xA4, 0x57, 0xAB, 0xEA, 0x7F, 0x03, 0x1E, 0x8C, + 0xFD, 0x5B, 0xC8, 0xB2, 0x7A, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, + 0x60, 0x82 +}; diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 73f492bd..41b2d088 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -21,10 +21,13 @@ #include // STL includes -#include -#include -#include -#include +#include +#include +#include +#include + +// Default image +#include "image.c" // Sample-specific option struct options_Blur { @@ -215,9 +218,8 @@ cl_image_format set_image_format(state * const s, cl_int * const error) if (s->verbose) printf("Converting picture into supported format... "); - const size_t - pixels = s->input_image.width * s->input_image.height, - new = sizeof(unsigned char) * pixels * 4; + const size_t pixels = s->input_image.width * s->input_image.height; + const size_t new = sizeof(unsigned char) * pixels * 4; unsigned char * tmp = NULL; MEM_CHECK(tmp = (unsigned char *)realloc(s->input_image.pixels, new), *error, end); s->input_image.pixels = tmp; @@ -274,7 +276,7 @@ cl_int finalize_blur(state * const s) char name[1024]; sprintf(name, "%u", (unsigned int)s->step); strncat(name, s->filename, sizeof(name) - 2); - cl_sdk_write_image(name, &s->output_image, &error); + error = cl_sdk_write_image(name, &s->output_image); if (error == CL_SUCCESS) printf("Image %s written.\n\n", name); @@ -727,11 +729,6 @@ int main(int argc, char * argv[]) struct options_Blur blur_opts = { .size = 1, .op = "box", .in = NULL, .out = "out.png" }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &blur_opts), error, end); - if (!blur_opts.in) { - error = CL_INVALID_IMAGE_DESCRIPTOR; - fprintf(stderr, "No input image name!\n"); - goto end; - } s.verbose = diag_opts.verbose; s.filename = blur_opts.out; s.step = 0; @@ -752,6 +749,23 @@ int main(int argc, char * argv[]) cl_util_print_device_info(s.device); /// Read input image and prepare output image + const char fname[] = "andrew_svk_7oJ4D_ewB7c_unsplash.png"; + if (!blur_opts.in) { + printf("No file given, use standard image %s\n", fname); + const unsigned char * fcont = andrew_svk_7oJ4D_ewB7c_unsplash_png; + const size_t fsize = andrew_svk_7oJ4D_ewB7c_unsplash_png_size; + FILE * f; + if ((f = fopen(fname, "wb")) != NULL) { + if (fwrite(fcont, 1, fsize, f) != fsize) { + fprintf(stderr, "File write error!\n"); + error = CL_UTIL_FILE_OPERATION_ERROR; + fclose(f); + goto que; + } + fclose(f); + } + blur_opts.in = fname; + } OCLERROR_PAR(s.input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); s.output_image = s.input_image; From 7428f5e5607f619211291ae7efe1c58496a37f7c Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Sat, 27 Nov 2021 00:11:11 +0200 Subject: [PATCH 177/203] More cl_uint --- lib/include/CL/SDK/InteropContext.hpp | 2 +- lib/src/SDK/InteropContext.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/include/CL/SDK/InteropContext.hpp b/lib/include/CL/SDK/InteropContext.hpp index 21e51280..2689eb41 100644 --- a/lib/include/CL/SDK/InteropContext.hpp +++ b/lib/include/CL/SDK/InteropContext.hpp @@ -12,6 +12,6 @@ namespace sdk { vector SDKCPP_EXPORT get_interop_context_properties(const cl::Device& plat); - Context SDKCPP_EXPORT get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); + Context SDKCPP_EXPORT get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error = nullptr); } } diff --git a/lib/src/SDK/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp index fb2f36b4..c662573d 100644 --- a/lib/src/SDK/InteropContext.cpp +++ b/lib/src/SDK/InteropContext.cpp @@ -33,21 +33,21 @@ cl::vector cl::sdk::get_interop_context_properties(const }; } -cl::Context cl::sdk::get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +cl::Context cl::sdk::get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); if (plat_err == CL_SUCCESS) { - if (plat_id >= 0 && plat_id < platforms.size()) + if (plat_id < platforms.size()) { cl::vector devices; cl_int dev_err = platforms[plat_id].getDevices(type, &devices); if (dev_err == CL_SUCCESS) { - if (dev_id >= 0 && dev_id < devices.size()) + if (dev_id < devices.size()) { cl_int ctx_err = CL_SUCCESS; auto props = get_interop_context_properties(devices[dev_id]); From 0c960322ccde16ef3b923b441bfd4e5d04f52ee3 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 29 Nov 2021 12:27:06 +0200 Subject: [PATCH 178/203] Even more cl_uint --- lib/include/CL/Utils/Context.hpp | 2 +- lib/src/Utils/Context.cpp | 6 +++--- samples/core/blur/README.md | 2 +- samples/core/copybuffer/main.cpp | 8 ++++---- samples/core/copybufferkernel/main.cpp | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp index 3f797428..9a8ebaa2 100644 --- a/lib/include/CL/Utils/Context.hpp +++ b/lib/include/CL/Utils/Context.hpp @@ -12,6 +12,6 @@ namespace cl { namespace util { - Context UTILSCPP_EXPORT get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); + Context UTILSCPP_EXPORT get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error = nullptr); } } diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index aba7bfb7..8380fc0f 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -1,21 +1,21 @@ // OpenCL SDK includes #include -cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error) +cl::Context cl::util::get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); if (plat_err == CL_SUCCESS) { - if (plat_id >= 0 && plat_id < platforms.size()) + if (plat_id < platforms.size()) { cl::vector devices; cl_int dev_err = platforms[plat_id].getDevices(type, &devices); if (dev_err == CL_SUCCESS) { - if (dev_id >= 0 && dev_id < devices.size()) + if (dev_id < devices.size()) { return cl::Context(devices[dev_id]); } diff --git a/samples/core/blur/README.md b/samples/core/blur/README.md index 1c5a0826..766058fa 100644 --- a/samples/core/blur/README.md +++ b/samples/core/blur/README.md @@ -56,7 +56,7 @@ _(Note: the main reason why net kernel execution time doesn't amount to the time ### Used API surface ```c -cl_util_get_device(int plat_id, int dev_id, cl_device_type type, cl_int * error) +cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error) cl_util_print_device_info(cl_device_id device) cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) diff --git a/samples/core/copybuffer/main.cpp b/samples/core/copybuffer/main.cpp index 7466fd60..5b3ce2be 100644 --- a/samples/core/copybuffer/main.cpp +++ b/samples/core/copybuffer/main.cpp @@ -88,8 +88,8 @@ static void checkResults(Sample& sample) int main(int argc, char** argv) { bool printUsage = false; - int platformIndex = 0; - int deviceIndex = 0; + cl_uint platformIndex = 0; + cl_uint deviceIndex = 0; if (argc < 1) { @@ -104,7 +104,7 @@ int main(int argc, char** argv) ++i; if (i < argc) { - deviceIndex = strtol(argv[i], NULL, 10); + deviceIndex = strtoul(argv[i], NULL, 10); } } else if (!strcmp(argv[i], "-p")) @@ -112,7 +112,7 @@ int main(int argc, char** argv) ++i; if (i < argc) { - platformIndex = strtol(argv[i], NULL, 10); + platformIndex = strtoul(argv[i], NULL, 10); } } else diff --git a/samples/core/copybufferkernel/main.cpp b/samples/core/copybufferkernel/main.cpp index 8945d709..b3a91c4e 100644 --- a/samples/core/copybufferkernel/main.cpp +++ b/samples/core/copybufferkernel/main.cpp @@ -99,8 +99,8 @@ static void checkResults(Sample& sample) int main(int argc, char** argv) { bool printUsage = false; - int platformIndex = 0; - int deviceIndex = 0; + cl_uint platformIndex = 0; + cl_uint deviceIndex = 0; if (argc < 1) { @@ -115,7 +115,7 @@ int main(int argc, char** argv) ++i; if (i < argc) { - deviceIndex = strtol(argv[i], NULL, 10); + deviceIndex = strtoul(argv[i], NULL, 10); } } else if (!strcmp(argv[i], "-p")) @@ -123,7 +123,7 @@ int main(int argc, char** argv) ++i; if (i < argc) { - platformIndex = strtol(argv[i], NULL, 10); + platformIndex = strtoul(argv[i], NULL, 10); } } else From c19c353bb81f29c21ba63779f632c5d1f0feb6a1 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 29 Nov 2021 12:33:53 +0200 Subject: [PATCH 179/203] Bug in check_use_work_group_reduce fixed, macros for CLI added --- lib/include/CL/SDK/CLI.h | 17 +- samples/core/CMakeLists.txt | 1 + samples/core/binaries/CMakeLists.txt | 26 +++ samples/core/binaries/Collatz.cl | 44 +++++ samples/core/binaries/main.c | 229 +++++++++++++++++++++++++++ samples/core/binaries/main.cpp | 64 ++++++++ samples/core/blur/main.c | 13 +- samples/core/reduce/main.c | 16 +- samples/core/saxpy/main.c | 13 +- 9 files changed, 391 insertions(+), 32 deletions(-) create mode 100644 samples/core/binaries/CMakeLists.txt create mode 100644 samples/core/binaries/Collatz.cl create mode 100644 samples/core/binaries/main.c create mode 100644 samples/core/binaries/main.cpp diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index 2f36c18d..ec4553e3 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -101,9 +101,9 @@ ParseState parse_SingleDeviceOptions(const char identifier, cag_option_context * { const char * value; -#define IF_ERR(op) \ -if ((value = cag_option_get_value(cag_context))) \ - { op; return ParsedOK; } \ +#define IF_ERR(op) \ +if ((value = cag_option_get_value(cag_context))) \ + { op; return ParsedOK; } \ else return ParseError; switch (identifier) { @@ -118,3 +118,14 @@ else return ParseError; #undef IF_ERR } + +#define PARS_OPTIONS(parser, state) \ +do { \ +if (state == NotParsed) \ + state = parser; \ +if (state == ParseError) { \ + fprintf(stderr, "Parse error\n"); \ + identifier = 'h'; \ + state = ParsedOK; \ +} \ +} while (0) diff --git a/samples/core/CMakeLists.txt b/samples/core/CMakeLists.txt index 9edf8685..75d8357d 100644 --- a/samples/core/CMakeLists.txt +++ b/samples/core/CMakeLists.txt @@ -18,3 +18,4 @@ add_subdirectory(copybufferkernel) add_subdirectory(saxpy) add_subdirectory(reduce) add_subdirectory(blur) +add_subdirectory(binaries) diff --git a/samples/core/binaries/CMakeLists.txt b/samples/core/binaries/CMakeLists.txt new file mode 100644 index 00000000..b5434aa3 --- /dev/null +++ b/samples/core/binaries/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TEST + TARGET binaries + VERSION 300 + SOURCES main.c) + +add_sample( + TEST + TARGET binariescpp + VERSION 300 + SOURCES main.cpp + INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/binaries/Collatz.cl b/samples/core/binaries/Collatz.cl new file mode 100644 index 00000000..965becc7 --- /dev/null +++ b/samples/core/binaries/Collatz.cl @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +kernel void Collatz( + global int * result +) { + const size_t gli = get_global_id(0); + const size_t ind = gli - get_global_offset(0); + + int steps = 0; + + ulong n = gli + 1; + + while (n != 1) { + if (n & 1) { + ulong m = 3 * n + 1; + if (m < n) { + steps = -steps - 1; + break; + } + n = m >> 1; + steps += 2; + } + else { + n >>= 1; + ++steps; + } + } + + result[ind] = steps; +} \ No newline at end of file diff --git a/samples/core/binaries/main.c b/samples/core/binaries/main.c new file mode 100644 index 00000000..6e7f69ed --- /dev/null +++ b/samples/core/binaries/main.c @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2021 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include + +// STL includes +#include +#include +#include + +// Sample-specific option +struct options_Binaries { + size_t size; +}; + +cag_option BinariesOptions[] = { + {.identifier = 's', + .access_letters = "s", + .access_name = "size", + .value_name = "(positive integer)", + .description = "Size of reduction"} +}; + +ParseState parse_BinariesOptions(const char identifier, cag_option_context * cag_context, struct options_Binaries * opts) +{ + const char * value; + + switch (identifier) { + case 's': + if ((value = cag_option_get_value(cag_context))) { + opts->size = strtoull(value, NULL, 0); + return ParsedOK; + } + else return ParseError; + } + return NotParsed; +} + +cl_int parse_options(int argc, char * argv[], struct cl_sdk_options_Diagnostic * diag_opts, + struct cl_sdk_options_SingleDevice * dev_opts, struct options_Binaries * binaries_opts) +{ + cl_int error = CL_SUCCESS; + struct cag_option * opts = NULL, * tmp = NULL; + size_t n = 0; + + /* Prepare all options array. */ + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + opts = tmp; + MEM_CHECK(tmp = add_CLI_options(opts, &n, BinariesOptions, CAG_ARRAY_SIZE(BinariesOptions)), error, end); + opts = tmp; + + char identifier; + cag_option_context cag_context; + + /* Prepare the context and iterate over all options. */ + cag_option_prepare(&cag_context, opts, n, argc, argv); + while (cag_option_fetch(&cag_context)) { + ParseState state = NotParsed; + identifier = cag_option_get(&cag_context); + + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); + PARS_OPTIONS(parse_BinariesOptions(identifier, &cag_context, binaries_opts), state); + + if (identifier == 'h') { + printf("Usage: binaries [OPTION]...\n"); + printf("Option name and value should be separated by '=' or a space\n"); + printf("Demonstrates saving and loading of compiled binary OpenCL " + "programs for specific device.\n\n"); + cag_option_print(opts, n, stdout); + exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); + } + } + +end: free(opts); + return error; +} + + +cl_int print_timings(struct timespec start, struct timespec end, const cl_event * const event_list, + cl_uint event_number) +{ + cl_int error = CL_SUCCESS; + + cl_ulong time_host, time_device = 0; + TIMER_DIFFERENCE(time_host, start, end) + for (cl_uint i = 0; i < event_number; ++i) { + time_device += cl_util_get_event_duration(event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error); + if (error != CL_SUCCESS) + return error; + } + printf("Execution time as seen by host: %llu us, by device: %llu us\n", + (unsigned long long)(time_host + 500) / 1000, + (unsigned long long)(time_device + 500) / 1000); + + return error; +} + + +int main(int argc, char * argv[]) +{ + cl_int error = CL_SUCCESS; + cl_int end_error = CL_SUCCESS; + cl_platform_id platform; + cl_device_id device; + cl_context context; + cl_command_queue queue; + + cl_program program; + + /// Parse command-line options + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct options_Binaries binaries_opts = { .size = 100000 }; + + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &binaries_opts), error, end); + + /// Create runtime objects based on user preference or default + OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, + dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); + OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + + if (!diag_opts.quiet) + cl_util_print_device_info(device); + + /// Try to read binary + program = cl_util_read_binaries(context, &device, 1, "Collatz", &error); + + if (error == CL_SUCCESS) { // if the binary is already present - calculate + printf("Saved program found\n"); + OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); + + /// Create all remaining runtime objects + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, prg); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, prg); +#else + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, prg); +#endif + + cl_kernel Collatz; + OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, que); + + const size_t length = binaries_opts.size; + /// Prepare vector of values to extract results + cl_int * v = NULL; + MEM_CHECK(v = (cl_int *)malloc(sizeof(cl_int) * length), error, col); + + /// Initialize device-side storage + cl_mem buf; + OCLERROR_PAR(buf = clCreateBuffer(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, + sizeof(cl_int) * length, NULL, &error), error, vec); + + cl_event pass; + OCLERROR_RET(clSetKernelArg(Collatz, 0, sizeof(cl_mem), &buf), error, buff); + + GET_CURRENT_TIMER(start) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, NULL, &length, NULL, 0, NULL, &pass), error, buff); + OCLERROR_RET(clWaitForEvents(1, &pass), error, buff); + GET_CURRENT_TIMER(end) + + if (diag_opts.verbose) + print_timings(start, end, &pass, 1); + + OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, sizeof(cl_int) * length, v, + 0, NULL, NULL), error, buff); + + // show results + int max_steps = 0; + size_t max_ind = -1; + for (size_t i = 0; i < length; ++i) + if (v[i] < 0) { + fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", i, -v[i]); + } + else if (v[i] > max_steps) { + max_steps = v[i]; + max_ind = i + 1; + } + printf("From %zu numbers checked, maximum %i steps was needed to get to 1 for number %zu\n", + length, max_steps, max_ind); + +buff: OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); +vec: free(v); +col: OCLERROR_RET(clReleaseKernel(Collatz), end_error, que); +que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, cont); + } + else { // if binary not present, compile and save + const char * kernel_location = "./Collatz.cl"; + char * kernel = NULL; + size_t program_size = 0; + char * options = NULL; + + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, cont); + printf("OpenCL file red... "); + + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); + OCLERROR_RET(cl_util_build_program(program, device, options), error, prgs); + + OCLERROR_RET(cl_util_write_binaries(program, "Collatz"), error, prgs); + printf("Binary file written.\n"); + +prgs: OCLERROR_RET(clReleaseProgram(program), end_error, que); +ker: free(kernel); + } + + /// Cleanup +cont: OCLERROR_RET(clReleaseContext(context), end_error, end); +end: if (error != CL_SUCCESS) cl_util_print_error(error); + return error; +} diff --git a/samples/core/binaries/main.cpp b/samples/core/binaries/main.cpp new file mode 100644 index 00000000..db47a5f7 --- /dev/null +++ b/samples/core/binaries/main.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// OpenCL SDK includes +#include +#include +#include + +// STL includes +#include + +// TCLAP includes +#include + +// Sample-specific option + + +int main(int argc, char* argv[]) +{ + try + { + + } + catch(cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } + catch(cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } + catch(std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 41b2d088..03b591e4 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -115,15 +115,9 @@ cl_int parse_options(int argc, ParseState state = NotParsed; identifier = cag_option_get(&cag_context); -#define PARS_OPTIONS(parser) \ -if ((state = parser) == ParsedOK) \ - continue; \ -else if (state == ParseError) \ - {printf("Parse error\n"); identifier = 'h';} - - PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts)) - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts)) - PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, blur_opts)) + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); + PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, blur_opts), state); if (identifier == 'h') { printf("Usage: blur [OPTION]...\n"); @@ -134,7 +128,6 @@ else if (state == ParseError) \ cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } -#undef PARS_OPTIONS } end: free(opts); diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 129953d9..8472a733 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -93,15 +93,9 @@ cl_int parse_options(int argc, ParseState state = NotParsed; identifier = cag_option_get(&cag_context); -#define PARS_OPTIONS(parser) \ -if ((state = parser) == ParsedOK) \ - continue; \ -else if (state == ParseError) \ - {printf("Parse error\n"); identifier = 'h';} - - PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts)) - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts)) - PARS_OPTIONS(parse_ReduceOptions(identifier, &cag_context, reduce_opts)) + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); + PARS_OPTIONS(parse_ReduceOptions(identifier, &cag_context, reduce_opts), state); if (identifier == 'h') { printf("Usage: reduce [OPTION]...\n"); @@ -140,10 +134,10 @@ int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl size_t n = 0; OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, - sizeof(size_t), NULL, &n), *error, nam); + 0, NULL, &n), *error, nam); MEM_CHECK(c_features = (cl_name_version *)malloc(sizeof(char) * n), *error, nam); OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, - sizeof(char) * n, name, NULL), *error, cf); + sizeof(char) * n, c_features, NULL), *error, cf); const size_t feat = sizeof(char) * n / sizeof(cl_name_version); for (size_t i = 0; i < feat; ++i) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index ebc6f683..7734582d 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -76,14 +76,11 @@ cl_int parse_options(int argc, ParseState state = NotParsed; identifier = cag_option_get(&cag_context); - state = parse_DiagnosticOptions(identifier, diag_opts); - if (state == ParsedOK) continue; - state = parse_SingleDeviceOptions(identifier, &cag_context, dev_opts); - if (state == ParsedOK) continue; - state = parse_SaxpyOptions(identifier, &cag_context, saxpy_opts); - if (state == ParsedOK) continue; - - if ((identifier == 'h') || (state == ParseError)) { + PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); + PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); + PARS_OPTIONS(parse_SaxpyOptions(identifier, &cag_context, saxpy_opts), state); + + if (identifier == 'h') { printf("Usage: saxpy [OPTION]...\n"); printf("Demonstrates typical OpenCL application layout.\n\n"); cag_option_print(opts, n, stdout); From 184c5de59e368cdf436ad8b1e3c689abfcd9dbed Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Mon, 29 Nov 2021 20:50:02 +0200 Subject: [PATCH 180/203] Error handling rewrite, `const`s --- lib/CMakeLists.txt | 2 +- lib/include/CL/SDK/Context.h | 6 +- lib/include/CL/Utils/Context.h | 12 +-- lib/include/CL/Utils/Event.h | 3 +- lib/include/CL/Utils/File.h | 10 +-- lib/include/CL/Utils/File.hpp | 51 +++++------ lib/src/SDK/Context.c | 6 +- lib/src/SDK/Image.c | 21 ++--- lib/src/SDK/Image.cpp | 11 ++- lib/src/Utils/Context.c | 83 ++++++++++------- lib/src/Utils/Error.c | 8 +- lib/src/Utils/Event.c | 12 ++- lib/src/Utils/File.c | 88 +++++++++---------- samples/core/binaries/Collatz.cl | 4 +- samples/core/blur/README.md | 18 ++-- .../core/blur/{image.c => default_image.h} | 2 +- samples/core/blur/main.c | 9 +- 17 files changed, 183 insertions(+), 163 deletions(-) rename samples/core/blur/{image.c => default_image.h} (99%) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index d558b669..7fc72b05 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -44,7 +44,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) $ $ $ - ) + ) target_link_libraries(${UTIL_LIB_TARGET} PUBLIC ${UTIL_LIB_DEPS} diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index 392cdd1d..56f77503 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -10,7 +10,9 @@ #include SDK_EXPORT -cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error); +cl_context cl_sdk_get_context_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, + cl_int * const error); SDK_EXPORT -cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error); +cl_device_id cl_sdk_get_device_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, + cl_int * const error); diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index 87216d15..ffd7d2f0 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -10,21 +10,21 @@ #include UTILS_EXPORT -cl_context cl_util_get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error); +cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error); UTILS_EXPORT -cl_device_id cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error); +cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error); UTILS_EXPORT -void cl_util_print_device_info(cl_device_id device); +cl_int cl_util_print_device_info(const cl_device_id device); UTILS_EXPORT -char * cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error); +char * cl_util_get_device_info(const cl_device_id device, const cl_device_info info, cl_int * const error); UTILS_EXPORT -char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, cl_int * error); +char * cl_util_get_platform_info(const cl_platform_id platform, const cl_platform_info info, cl_int * const error); // build program and show log if build is not successful UTILS_EXPORT -cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt); +cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt); #define GET_CURRENT_TIMER(time) \ struct timespec time; \ diff --git a/lib/include/CL/Utils/Event.h b/lib/include/CL/Utils/Event.h index f6528164..c7faaf37 100644 --- a/lib/include/CL/Utils/Event.h +++ b/lib/include/CL/Utils/Event.h @@ -7,4 +7,5 @@ #include UTILS_EXPORT -cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error); \ No newline at end of file +cl_ulong cl_util_get_event_duration(const cl_event event, const cl_profiling_info start, const cl_profiling_info end, + cl_int * const error); \ No newline at end of file diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index ffb15c2a..26e219de 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -11,24 +11,24 @@ // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error); +char * cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error); // read all the binary file contents securely in ANSI C89 // return pointer to file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -unsigned char * cl_util_read_binary_file(const char * filename, size_t * length, cl_int * error); +unsigned char * cl_util_read_binary_file(const char * const filename, size_t * const length, cl_int * const error); // write binaries of OpenCL compiled program // binaries are written as separate files for each device // with file name "(program_file_name)_(name of device).bin" // based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ UTILS_EXPORT -cl_int cl_util_write_binaries(cl_program const program, const char * const program_file_name); +cl_int cl_util_write_binaries(const cl_program program, const char * const program_file_name); // read binaries of OpenCL compiled program // from files of file names "(program_file_name)_(name of device).bin" UTILS_EXPORT -cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, const cl_uint num_devices, - const char * const program_file_name, cl_int * error); +cl_program cl_util_read_binaries(const cl_context context, const cl_device_id * const devices, const cl_uint num_devices, + const char * const program_file_name, cl_int * const error); diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp index 8c929efb..8d17a9d7 100644 --- a/lib/include/CL/Utils/File.hpp +++ b/lib/include/CL/Utils/File.hpp @@ -11,46 +11,39 @@ namespace cl { namespace util { + // Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 + // with error handling UTILSCPP_EXPORT - std::string read_text_file(const char * filename, cl_int * error); -} -} - -// Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 -// with error handling -UTILSCPP_EXPORT -std::string cl::util::read_text_file(const char * filename, cl_int * error) -{ - cl_int err; - if (error == nullptr) - error = &err; - - std::ifstream in(filename); - if (in.good()) + std::string read_text_file(const char * const filename, cl_int * const error) { - try + std::ifstream in(filename); + if (in.good()) { - std::string red((std::istreambuf_iterator(in)), std::istreambuf_iterator()); - if (in.good() && in.eof()) + try { - *error = CL_SUCCESS; - return red; + std::string red((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + if (in.good() && in.eof()) + { + if (error != nullptr) *error = CL_SUCCESS; + return red; + } + else + { + detail::errHandler(CL_UTIL_FILE_OPERATION_ERROR, error, "File read error!"); + return std::string(); + } } - else + catch (std::bad_alloc& ex) { - *error = CL_INVALID_VALUE; + detail::errHandler(CL_OUT_OF_RESOURCES, error, "Bad allocation!"); return std::string(); } } - catch (std::bad_alloc& ex) + else { - *error = CL_OUT_OF_RESOURCES; + detail::errHandler(CL_INVALID_VALUE, error, "No file!"); return std::string(); } } - else - { - *error = CL_INVALID_ARG_VALUE; - return std::string(); - } +} } diff --git a/lib/src/SDK/Context.c b/lib/src/SDK/Context.c index c3651569..bdde9a4c 100644 --- a/lib/src/SDK/Context.c +++ b/lib/src/SDK/Context.c @@ -8,12 +8,14 @@ #include // malloc, free #include // printf -cl_context cl_sdk_get_context_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) +cl_context cl_sdk_get_context_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, + cl_int * const error) { return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); } -cl_device_id cl_sdk_get_device_by_triplet(struct cl_sdk_options_DeviceTriplet * triplet, cl_int * error) +cl_device_id cl_sdk_get_device_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, + cl_int * const error) { return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); } diff --git a/lib/src/SDK/Image.c b/lib/src/SDK/Image.c index 409060a2..74aa57c4 100644 --- a/lib/src/SDK/Image.c +++ b/lib/src/SDK/Image.c @@ -17,35 +17,32 @@ // OpenCL includes #include -cl_sdk_image cl_sdk_read_image(const char * file_name, cl_int * error) +cl_sdk_image cl_sdk_read_image(const char * const file_name, cl_int * const error) { - cl_int err; - if (error == NULL) - error = &err; + cl_int err = CL_SUCCESS; cl_sdk_image im = { .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL }; im.pixels = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); if (im.width && im.height && im.pixel_size && im.pixels) - *error = CL_SUCCESS; + err = CL_SUCCESS; else { fprintf(stderr, "File read error!"); - *error = CL_INVALID_ARG_VALUE; + err = CL_INVALID_ARG_VALUE; } + if (error != NULL) *error = err; return im; } -static char * to_lowercase(const char * s, char * d, size_t n) +static char * to_lowercase(const char * const s, char * const d, const size_t n) { - while(n > 0) { - --n; - d[n] = tolower(s[n]); - } + for (size_t i = 0; i < n; ++i) + d[i] = tolower(s[i]); return d; } -cl_int cl_sdk_write_image(const char * file_name, const cl_sdk_image * im) +cl_int cl_sdk_write_image(const char * const file_name, const cl_sdk_image * const im) { cl_int error = CL_SUCCESS; char fext[5] = {0, 0, 0, 0, 0}; diff --git a/lib/src/SDK/Image.cpp b/lib/src/SDK/Image.cpp index 14c26a55..8f22cd86 100644 --- a/lib/src/SDK/Image.cpp +++ b/lib/src/SDK/Image.cpp @@ -27,21 +27,20 @@ namespace cl { namespace sdk { - Image read_image(const char* file_name, cl_int * error) + Image read_image(const char* const file_name, cl_int * const error = nullptr) { - cl_int err; - if (error == NULL) - error = &err; + cl_int err = CL_SUCCESS; Image im; unsigned char *data = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); im.pixels.insert(im.pixels.end(), data, data + im.width * im.height * im.pixel_size); if (im.width && im.height && im.pixel_size && im.pixels.size() == im.width * im.height * im.pixel_size) - *error = CL_SUCCESS; + err = CL_SUCCESS; else - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, error, "File read error!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &err, "File read error!"); + if (error != NULL) *error = err; return im; } diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 775025be..5d03e44f 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -7,63 +7,70 @@ #include // printf UTILS_EXPORT -cl_context cl_util_get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) +cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) { + cl_int err = CL_SUCCESS; cl_context result = NULL; cl_platform_id * platforms; cl_uint num_platforms = 0; cl_device_id * devices; cl_uint num_devices = 0; - OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), *error, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); - OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), err, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), err, end); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), err, plat); if (plat_id >= num_platforms) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + fprintf(stderr, "Invalid platform index provided for cl_util_get_context()\n"); + err = CL_UTIL_INDEX_OUT_OF_RANGE; goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), *error, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, plat); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), err, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), err, dev); if (dev_id >= num_devices) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + fprintf(stderr, "Invalid device index provided for cl_util_get_context()\n"); + err = CL_UTIL_INDEX_OUT_OF_RANGE; goto dev; } - OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + dev_id, NULL, NULL, error), *error, dev); + OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + dev_id, NULL, NULL, &err), err, dev); dev: free(devices); plat: free(platforms); -end: return result; +end: if (error != NULL) *error = err; + return result; } UTILS_EXPORT -cl_device_id cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) +cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) { + cl_int err = CL_SUCCESS; cl_device_id result = NULL; cl_platform_id * platforms; cl_uint num_platforms = 0; cl_device_id * devices; cl_uint num_devices = 0; - OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), *error, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), *error, end); - OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), *error, plat); + OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), err, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), err, end); + OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), err, plat); if (plat_id >= num_platforms) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid platform index provided for cl_util_get_context()" + fprintf(stderr, "Invalid platform index provided for cl_util_get_context()\n"); + err = CL_UTIL_INDEX_OUT_OF_RANGE; goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), *error, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), *error, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), *error, dev); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, plat); + MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), err, plat); + OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), err, dev); if (dev_id >= num_devices) { - *error = CL_UTIL_INDEX_OUT_OF_RANGE; // "Invalid device index provided for cl_util_get_context()" + fprintf(stderr, "Invalid device index provided for cl_util_get_context()\n"); + err = CL_UTIL_INDEX_OUT_OF_RANGE; goto dev; } @@ -71,11 +78,12 @@ cl_device_id cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type dev: free(devices); plat: free(platforms); -end: return result; +end: if (error != NULL) *error = err; + return result; } UTILS_EXPORT -void cl_util_print_device_info(cl_device_id device) +cl_int cl_util_print_device_info(const cl_device_id device) { cl_int error = CL_SUCCESS; char * name = NULL; @@ -95,11 +103,13 @@ ocl: free(name); printf("%s\n\n", name); nam: free(name); + return error; } UTILS_EXPORT -char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, cl_int * error) +char * cl_util_get_platform_info(const cl_platform_id platform, const cl_platform_info info, cl_int * const error) { + cl_int err = CL_SUCCESS; char * name = NULL; size_t n = 0; @@ -109,20 +119,23 @@ char * cl_util_get_platform_info(cl_platform_id platform, cl_platform_info info, case CL_PLATFORM_NAME: case CL_PLATFORM_VENDOR: case CL_PLATFORM_EXTENSIONS: - OCLERROR_RET(clGetPlatformInfo(platform, info, 0, NULL, &n), *error, err); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), *error, err); - OCLERROR_RET(clGetPlatformInfo(platform, info, sizeof(char) * n, name, NULL), *error, err); + OCLERROR_RET(clGetPlatformInfo(platform, info, 0, NULL, &n), err, end); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), err, end); + OCLERROR_RET(clGetPlatformInfo(platform, info, sizeof(char) * n, name, NULL), err, end); name[n] = '\0'; + if (error != NULL) *error = err; return name; } -err: free(name); +end: free(name); + if (error != NULL) *error = err; return NULL; } UTILS_EXPORT -char * cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error) +char * cl_util_get_device_info(const cl_device_id device, const cl_device_info info, cl_int * const error) { + cl_int err = CL_SUCCESS; char * name = NULL; size_t n = 0; @@ -145,21 +158,23 @@ char * cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int case CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED: #endif case CL_DRIVER_VERSION: - OCLERROR_RET(clGetDeviceInfo(device, info, 0, NULL, &n), *error, err); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), *error, err); - OCLERROR_RET(clGetDeviceInfo(device, info, sizeof(char) * n, name, NULL), *error, err); + OCLERROR_RET(clGetDeviceInfo(device, info, 0, NULL, &n), err, end); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), err, end); + OCLERROR_RET(clGetDeviceInfo(device, info, sizeof(char) * n, name, NULL), err, end); name[n] = '\0'; + if (error != NULL) *error = err; return name; } -err: free(name); +end: free(name); + if (error != NULL) *error = err; return NULL; } // build program and show log if build is not successful UTILS_EXPORT -cl_int cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt) { - // if error +cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt) +{ cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); if (err != CL_SUCCESS) { // no error handling here as error from build program is more valuable char * program_log; diff --git a/lib/src/Utils/Error.c b/lib/src/Utils/Error.c index ee922be0..9891635c 100644 --- a/lib/src/Utils/Error.c +++ b/lib/src/Utils/Error.c @@ -1,7 +1,7 @@ // OpenCL Utils includes #include -void cl_util_print_error(cl_int error) +void cl_util_print_error(const cl_int error) { switch (error) { case CL_SUCCESS: @@ -208,6 +208,12 @@ void cl_util_print_error(cl_int error) case CL_UTIL_INDEX_OUT_OF_RANGE: fprintf(stderr, "\nError: CL_UTIL_INDEX_OUT_OF_RANGE\n"); break; + case CL_UTIL_DEVICE_NOT_INTEROPERABLE: + fprintf(stderr, "\nError: CL_UTIL_DEVICE_NOT_INTEROPERABLE\n"); + break; + case CL_UTIL_FILE_OPERATION_ERROR: + fprintf(stderr, "\nError: CL_UTIL_FILE_OPERATION_ERROR\n"); + break; // end of SDK errors default: fprintf(stderr, "\nUnknown error: %i\n", error); diff --git a/lib/src/Utils/Event.c b/lib/src/Utils/Event.c index fa7271da..1eb72b53 100644 --- a/lib/src/Utils/Event.c +++ b/lib/src/Utils/Event.c @@ -1,12 +1,16 @@ // OpenCL Utils includes #include -cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) +cl_ulong cl_util_get_event_duration(const cl_event event, const cl_profiling_info start, const cl_profiling_info end, + cl_int * const error) { + cl_int err = CL_SUCCESS; cl_ulong start_time = 0, end_time = 0; - OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), *error, end); - OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), *error, end); + OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), err, end); + OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), err, end); + if (error != NULL) *error = err; return end_time - start_time; -end: return 0; +end: if (error != NULL) *error = err; + return 0; } diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 8b3e6667..64990e54 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -11,7 +11,7 @@ // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) +char * cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error) { cl_int err = CL_SUCCESS; char * data = NULL, * temp; @@ -23,11 +23,8 @@ char * cl_util_read_text_file(const char * filename, size_t * length, cl_int * e /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 -#define IF_ERR(func, er, label) \ -do { if (func) {*error = er; goto label;} } while (0) - - if (error == NULL) - error = &err; +#define IF_ERR(func, error_type, label) \ +do { if (func) { err = error_type; goto label; } } while (0) /* File name can not be NULL. */ IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); @@ -36,16 +33,16 @@ do { if (func) {*error = er; goto label;} } while (0) IF_ERR(!(in = fopen(filename, "r")), CL_INVALID_VALUE, end); /* A read error already occurred? */ - IF_ERR(ferror(in), CL_INVALID_VALUE, fl); + IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, fl); while (1) { if (used + READALL_CHUNK + 1 > size) { size = used + READALL_CHUNK + 1; /* Overflow check. */ - IF_ERR(size <= used, CL_OUT_OF_RESOURCES, dt); + IF_ERR(size <= used, CL_OUT_OF_RESOURCES, nodata); - MEM_CHECK(temp = (char *)realloc(data, size), *error, dt); + MEM_CHECK(temp = (char *)realloc(data, size), err, nodata); data = temp; } @@ -58,28 +55,29 @@ do { if (func) {*error = er; goto label;} } while (0) } /* A read error already occurred? */ - IF_ERR(ferror(in), CL_INVALID_VALUE, dt); + IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, nodata); /* Put null termination. */ - MEM_CHECK(temp = (char *)realloc(data, used + 1), *error, dt); + MEM_CHECK(temp = (char *)realloc(data, used + 1), err, nodata); data = temp; data[used] = '\0'; if (length != NULL) *length = used; - *error = CL_SUCCESS; fl: fclose(in); -end: return data; +end: if (error != NULL) *error = err; + return data; -dt: fclose(in); - free(data); - return NULL; +nodata: fclose(in); + free(data); + if (error != NULL) *error = err; + return NULL; #undef IF_ERR } UTILS_EXPORT -unsigned char * cl_util_read_binary_file(const char * filename, size_t * length, cl_int * error) +unsigned char * cl_util_read_binary_file(const char * const filename, size_t * const length, cl_int * const error) { cl_int err = CL_SUCCESS; unsigned char * data = NULL, * temp; @@ -91,11 +89,8 @@ unsigned char * cl_util_read_binary_file(const char * filename, size_t * length, /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 -#define IF_ERR(func, er, label) \ -do { if (func) {*error = er; goto label;} } while (0) - - if (error == NULL) - error = &err; +#define IF_ERR(func, error_type, label) \ +do { if (func) { err = error_type; goto label; } } while (0) /* File name can not be NULL. */ IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); @@ -104,16 +99,16 @@ do { if (func) {*error = er; goto label;} } while (0) IF_ERR(!(in = fopen(filename, "rb")), CL_INVALID_VALUE, end); /* A read error already occurred? */ - IF_ERR(ferror(in), CL_INVALID_VALUE, fl); + IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, fl); while (1) { if (used + READALL_CHUNK + 1 > size) { size = used + READALL_CHUNK + 1; /* Overflow check. */ - IF_ERR(size <= used, CL_OUT_OF_RESOURCES, dt); + IF_ERR(size <= used, CL_OUT_OF_RESOURCES, nodata); - MEM_CHECK(temp = (unsigned char *)realloc(data, size), *error, dt); + MEM_CHECK(temp = (unsigned char *)realloc(data, size), err, nodata); data = temp; } @@ -126,20 +121,21 @@ do { if (func) {*error = er; goto label;} } while (0) } /* A read error already occurred? */ - IF_ERR(ferror(in), CL_INVALID_VALUE, dt); + IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, nodata); /* Truncate to the real size. */ - MEM_CHECK(temp = (unsigned char *)realloc(data, used), *error, dt); + MEM_CHECK(temp = (unsigned char *)realloc(data, used), err, nodata); data = temp; if (length != NULL) *length = used; - *error = CL_SUCCESS; fl: fclose(in); -end: return data; +end: if (error != NULL) *error = err; + return data; -dt: fclose(in); +nodata: fclose(in); free(data); + if (error != NULL) *error = err; return NULL; #undef IF_ERR @@ -150,7 +146,7 @@ dt: fclose(in); // with file name "(program_file_name)_(name of device).bin" // based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ UTILS_EXPORT -cl_int cl_util_write_binaries(cl_program const program, const char * const program_file_name) +cl_int cl_util_write_binaries(const cl_program program, const char * const program_file_name) { cl_int error = CL_SUCCESS; @@ -204,7 +200,7 @@ cl_int cl_util_write_binaries(cl_program const program, const char * const progr fclose(f); } else - error = CL_UTIL_FILE_OPERATION_ERROR; + error = CL_INVALID_VALUE; } end: // cleanup @@ -221,8 +217,8 @@ cl_int cl_util_write_binaries(cl_program const program, const char * const progr // function to read binaries of OpenCL compiled program // read binaries from files of file names "(program_file_name)_(name of device).bin" UTILS_EXPORT -cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, const cl_uint num_devices, - const char * const program_file_name, cl_int * error) +cl_program cl_util_read_binaries(const cl_context context, const cl_device_id * const devices, const cl_uint num_devices, + const char * const program_file_name, cl_int * const error) { cl_int err = CL_SUCCESS; size_t binaries_size_alloc_size = 0; @@ -231,39 +227,38 @@ cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, con unsigned char ** binaries_ptr = NULL; cl_program program = NULL; - if (error == NULL) - error = &err; - // array for binaries' sizes binaries_size_alloc_size = sizeof(size_t) * num_devices; - MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), *error, end); + MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), err, end); // array for the binaries binaries_ptr_alloc_size = sizeof(unsigned char *) * num_devices; - MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), *error, end); + MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), err, end); memset(binaries_ptr, 0, binaries_ptr_alloc_size); // read binaries from files for (cl_uint i = 0; i < num_devices; ++i) { // get device name char name_data[201]; - OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), *error, end); + OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), err, end); name_data[200] = '\0'; // create input file name char filename[256]; snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); - binaries_ptr[i] = cl_util_read_binary_file(filename, binaries_size + i, error); - if (*error == CL_INVALID_VALUE) { - fprintf(stderr, "No suitable file found\n"); + binaries_ptr[i] = cl_util_read_binary_file(filename, binaries_size + i, &err); + if (err == CL_INVALID_VALUE) { + fprintf(stderr, "No suitable file %s found\n", filename); + goto end; + } + else if (err != CL_SUCCESS) goto end; - }; } OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, devices, - binaries_size, binaries_ptr, error, NULL), *error, end); + binaries_size, binaries_ptr, &err, NULL), err, end); -end: // Cleanup +end: // cleanup if (binaries_ptr != NULL) { for (cl_uint i = 0; i < num_devices; ++i) free(binaries_ptr[i]); @@ -271,5 +266,6 @@ cl_program cl_util_read_binaries(cl_context context, cl_device_id * devices, con } free(binaries_size); + if (error != NULL) *error = err; return program; } diff --git a/samples/core/binaries/Collatz.cl b/samples/core/binaries/Collatz.cl index 965becc7..262b33dd 100644 --- a/samples/core/binaries/Collatz.cl +++ b/samples/core/binaries/Collatz.cl @@ -15,7 +15,7 @@ */ kernel void Collatz( - global int * result + global int * const result ) { const size_t gli = get_global_id(0); const size_t ind = gli - get_global_offset(0); @@ -41,4 +41,4 @@ kernel void Collatz( } result[ind] = steps; -} \ No newline at end of file +} diff --git a/samples/core/blur/README.md b/samples/core/blur/README.md index 766058fa..061683ed 100644 --- a/samples/core/blur/README.md +++ b/samples/core/blur/README.md @@ -56,13 +56,13 @@ _(Note: the main reason why net kernel execution time doesn't amount to the time ### Used API surface ```c -cl_util_get_device(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int * error) -cl_util_get_device_info(cl_device_id device, cl_device_info info, cl_int * error) -cl_util_print_device_info(cl_device_id device) -cl_util_read_text_file(const char * filename, size_t * length, cl_int * error) -cl_util_build_program(cl_program pr, const cl_device_id dev, const char * opt) -cl_sdk_read_image(const char * file_name, cl_int * error) -cl_sdk_write_image(const char * file_name, const cl_sdk_image * im) -cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int * error) -cl_util_print_error(cl_int error) +cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) +cl_util_get_device_info(const cl_device_id device, const cl_device_info info, cl_int * const error) +cl_util_print_device_info(const cl_device_id device) +cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error) +cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt) +cl_sdk_read_image(const char * const file_name, cl_int * const error) +cl_sdk_write_image(const char * const file_name, const cl_sdk_image * const im) +cl_util_get_event_duration(const cl_event event, const cl_profiling_info start, const cl_profiling_info end, cl_int * const error) +cl_util_print_error(const cl_int error) ``` diff --git a/samples/core/blur/image.c b/samples/core/blur/default_image.h similarity index 99% rename from samples/core/blur/image.c rename to samples/core/blur/default_image.h index 704000cb..3e36884c 100644 --- a/samples/core/blur/image.c +++ b/samples/core/blur/default_image.h @@ -1,6 +1,6 @@ /* Generated by bin2c from image by Andrew Svk https://unsplash.com/photos/7oJ4D_ewB7c */ -/* Contents of file c:\Users\Uzivatel\Downloads\andrew-svk-7oJ4D_ewB7c-unsplash.png */ +/* Contents of file andrew-svk-7oJ4D_ewB7c-unsplash.png */ const size_t andrew_svk_7oJ4D_ewB7c_unsplash_png_size = 189954; const unsigned char andrew_svk_7oJ4D_ewB7c_unsplash_png[189954] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 03b591e4..186e21c5 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -27,7 +27,7 @@ #include // Default image -#include "image.c" +#include "default_image.h" // Sample-specific option struct options_Blur { @@ -40,7 +40,7 @@ cag_option BlurOptions[] = { .access_letters = "i", .access_name = "in", .value_name = "(name)", - .description = "Input image file (obligatory)"}, + .description = "Input image file"}, {.identifier = 'o', .access_letters = "o", @@ -757,6 +757,11 @@ int main(int argc, char * argv[]) } fclose(f); } + else { + fprintf(stderr, "Cannot open the file to write!\n"); + error = CL_INVALID_VALUE; + goto que; + } blur_opts.in = fname; } OCLERROR_PAR(s.input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); From 8c01a8e72dcf9e69691c4e9c6275f252bf951c4a Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 30 Nov 2021 13:23:27 +0200 Subject: [PATCH 181/203] Remove blanks, shift for Collatz --- samples/core/binaries/CMakeLists.txt | 7 --- samples/core/binaries/Collatz.cl | 4 ++ samples/core/binaries/README.md | 54 +++++++++++++++++++++++ samples/core/binaries/main.c | 45 +++++++++++++------ samples/core/binaries/main.cpp | 64 ---------------------------- samples/core/blur/CMakeLists.txt | 7 --- samples/core/blur/main.cpp | 64 ---------------------------- 7 files changed, 89 insertions(+), 156 deletions(-) create mode 100644 samples/core/binaries/README.md delete mode 100644 samples/core/binaries/main.cpp delete mode 100644 samples/core/blur/main.cpp diff --git a/samples/core/binaries/CMakeLists.txt b/samples/core/binaries/CMakeLists.txt index b5434aa3..2ebdc117 100644 --- a/samples/core/binaries/CMakeLists.txt +++ b/samples/core/binaries/CMakeLists.txt @@ -17,10 +17,3 @@ add_sample( TARGET binaries VERSION 300 SOURCES main.c) - -add_sample( - TEST - TARGET binariescpp - VERSION 300 - SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/binaries/Collatz.cl b/samples/core/binaries/Collatz.cl index 262b33dd..4da2fbca 100644 --- a/samples/core/binaries/Collatz.cl +++ b/samples/core/binaries/Collatz.cl @@ -25,6 +25,10 @@ kernel void Collatz( ulong n = gli + 1; while (n != 1) { + if (steps > INT_MAX - 3) { + steps = 0; + break; + } if (n & 1) { ulong m = 3 * n + 1; if (m < n) { diff --git a/samples/core/binaries/README.md b/samples/core/binaries/README.md new file mode 100644 index 00000000..9f1ff075 --- /dev/null +++ b/samples/core/binaries/README.md @@ -0,0 +1,54 @@ +# Binaries + +## Sample Purpose + +This sample intends to demonstrate how to use separate compilation and consumption of OpenCL program by saving and loading program binaries. + +## Key APIs and Concepts + +The binary of a compiled program can be extracted from the program by invoking `clGetProgramInfo` with `CL_PROGRAM_BINARIES` parameter. Each device is provided with separate binary, and this binary can be saved into a file, and then loaded into the same runtime for a specified context to use on the same device. Loaded binaries could be used for `clCreateProgramWithBinary` invocation that constructs OpenCL program out of them. As a result offline compilation of the program becomes possible. + +### Application flow + +The application once a platform and a device is selected tries to read corresponding binary file from the disk. In the case of success the program is built from the binary and executed. If the binary file is not present in the folder of the program then kernel file is loaded, built for the specified device, and saved as a binary. + +#### Event profiling + +While events are multi-purpose in OpenCL, they are the handles through which synchronization and profiling can be done, here we only demonstrate their profiling capabilities. Event profiling is turned on by creating the queue as such: +```c +cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; +queue = clCreateCommandQueueWithProperties(context, device, props, &error); +``` +We do not have to test for this capability, as it's mandatory for a device to provide profiling capabilities. + +To record the execution time of every blur step, we save the associated events like this: +```c +cl_event pass; +clEnqueueNDRangeKernel(queue, Collatz, 1, NULL, &length, NULL, 0, NULL, &pass); +clWaitForEvents(1, &pass); +``` +Calling the kernel returns the event associated with it. Instead calling finish on the queue, we may as well wait for all events in `passes` to signal completion. (For a complete list of event state, refer to the [Execution Model](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_execution_model) chapter of the OpenCL API spec). + +Because most often we measure durations between event state transitions, we use the utility `cl_ulong cl_util_get_event_duration(cl_event event, cl_profiling_info start, cl_profiling_info end, cl_int *error)` to get duration in nanoseconds between the states `start` and `end`. +_(Note: the main reason why net kernel execution time doesn't amount to the time measured by the host are due to dispatching kernel binaries to the device which happen on the first execution, as the sample doesn't invoke a so called warm-up kernel. By doing so, one can reduce the difference to minimal runtime overhead.)_ + +### Kernel logic + +Kernel is testing Collatz conjecture that states that the sequential application of rules + +1) if `n` is odd, `n` -> `3*n+1` +2) if `n` is even, `n` -> `n/2` + +to any of positive integer numbers results ultimately in a loop of `1`->`4`->`2`->`1` etc. (See [Wikipedia article](https://en.wikipedia.org/wiki/Collatz_conjecture) for a brief introduction.) It writes down the number of iterations needed to get into the circle for each of the unique global work-item ID values (plus 1). + +## Used API surface + +```c +cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) +cl_util_print_device_info(const cl_device_id device) +cl_util_read_binaries(const cl_context context, const cl_device_id * const devices, const cl_uint num_devices, const char * const program_file_name, cl_int * const error) +cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt) +cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error) +cl_util_write_binaries(const cl_program program, const char * const program_file_name) +cl_util_print_error(const cl_int error) +``` diff --git a/samples/core/binaries/main.c b/samples/core/binaries/main.c index 6e7f69ed..b8cb431e 100644 --- a/samples/core/binaries/main.c +++ b/samples/core/binaries/main.c @@ -26,15 +26,22 @@ // Sample-specific option struct options_Binaries { - size_t size; + size_t start; + size_t length; }; cag_option BinariesOptions[] = { + {.identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of range to test"}, + {.identifier = 's', .access_letters = "s", - .access_name = "size", + .access_name = "start", .value_name = "(positive integer)", - .description = "Size of reduction"} + .description = "Starting number"} }; ParseState parse_BinariesOptions(const char identifier, cag_option_context * cag_context, struct options_Binaries * opts) @@ -44,7 +51,13 @@ ParseState parse_BinariesOptions(const char identifier, cag_option_context * cag switch (identifier) { case 's': if ((value = cag_option_get_value(cag_context))) { - opts->size = strtoull(value, NULL, 0); + opts->start = strtoull(value, NULL, 0); + return ParsedOK; + } + else return ParseError; + case 'l': + if ((value = cag_option_get_value(cag_context))) { + opts->length = strtoull(value, NULL, 0); return ParsedOK; } else return ParseError; @@ -128,7 +141,7 @@ int main(int argc, char * argv[]) /// Parse command-line options struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct options_Binaries binaries_opts = { .size = 100000 }; + struct options_Binaries binaries_opts = { .start = 1, .length = 100000 }; OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &binaries_opts), error, end); @@ -159,7 +172,8 @@ int main(int argc, char * argv[]) cl_kernel Collatz; OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, que); - const size_t length = binaries_opts.size; + const size_t length = binaries_opts.length; + const size_t start = binaries_opts.start - 1; /// Prepare vector of values to extract results cl_int * v = NULL; MEM_CHECK(v = (cl_int *)malloc(sizeof(cl_int) * length), error, col); @@ -172,13 +186,13 @@ int main(int argc, char * argv[]) cl_event pass; OCLERROR_RET(clSetKernelArg(Collatz, 0, sizeof(cl_mem), &buf), error, buff); - GET_CURRENT_TIMER(start) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, NULL, &length, NULL, 0, NULL, &pass), error, buff); + GET_CURRENT_TIMER(start_time) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, &start, &length, NULL, 0, NULL, &pass), error, buff); OCLERROR_RET(clWaitForEvents(1, &pass), error, buff); - GET_CURRENT_TIMER(end) + GET_CURRENT_TIMER(end_time) if (diag_opts.verbose) - print_timings(start, end, &pass, 1); + print_timings(start_time, end_time, &pass, 1); OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, sizeof(cl_int) * length, v, 0, NULL, NULL), error, buff); @@ -188,14 +202,17 @@ int main(int argc, char * argv[]) size_t max_ind = -1; for (size_t i = 0; i < length; ++i) if (v[i] < 0) { - fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", i, -v[i]); + fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", start + 1 + i, -v[i]); + } + else if ((v[i] == 0) && (start + i != 0)) { + fprintf(stderr, "Number %zu did not converge to 1 at step %i\n", start + 1 + i, INT_MAX - 2); } else if (v[i] > max_steps) { max_steps = v[i]; - max_ind = i + 1; + max_ind = start + 1 + i; } - printf("From %zu numbers checked, maximum %i steps was needed to get to 1 for number %zu\n", - length, max_steps, max_ind); + printf("From %zu numbers checked starting from %zu, maximum %i steps was needed to get to 1 for number %zu\n", + length, start + 1, max_steps, max_ind); buff: OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); vec: free(v); diff --git a/samples/core/binaries/main.cpp b/samples/core/binaries/main.cpp deleted file mode 100644 index db47a5f7..00000000 --- a/samples/core/binaries/main.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2020 The Khronos Group Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// OpenCL SDK includes -#include -#include -#include - -// STL includes -#include - -// TCLAP includes -#include - -// Sample-specific option - - -int main(int argc, char* argv[]) -{ - try - { - - } - catch(cl::util::Error& e) - { - std::cerr << "OpenCL Utils error: " << e.what() << std::endl; - std::exit(e.err()); - } - catch(cl::BuildError& e) - { - std::cerr << "OpenCL runtime error: " << e.what() << std::endl; - for (auto& build_log : e.getBuildLog()) - { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; - std::cerr << build_log.second << "\n" << std::endl; - } - std::exit(e.err()); - } - catch(cl::Error& e) - { - std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; - std::exit(e.err()); - } - catch(std::exception& e) - { - std::cerr << "Error: " << e.what() << std::endl; - std::exit(EXIT_FAILURE); - } - - return 0; -} diff --git a/samples/core/blur/CMakeLists.txt b/samples/core/blur/CMakeLists.txt index ed247c87..8b1c725f 100644 --- a/samples/core/blur/CMakeLists.txt +++ b/samples/core/blur/CMakeLists.txt @@ -17,10 +17,3 @@ add_sample( TARGET blur VERSION 300 SOURCES main.c) - -add_sample( - TEST - TARGET blurcpp - VERSION 300 - SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR}) diff --git a/samples/core/blur/main.cpp b/samples/core/blur/main.cpp deleted file mode 100644 index db47a5f7..00000000 --- a/samples/core/blur/main.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2020 The Khronos Group Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// OpenCL SDK includes -#include -#include -#include - -// STL includes -#include - -// TCLAP includes -#include - -// Sample-specific option - - -int main(int argc, char* argv[]) -{ - try - { - - } - catch(cl::util::Error& e) - { - std::cerr << "OpenCL Utils error: " << e.what() << std::endl; - std::exit(e.err()); - } - catch(cl::BuildError& e) - { - std::cerr << "OpenCL runtime error: " << e.what() << std::endl; - for (auto& build_log : e.getBuildLog()) - { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; - std::cerr << build_log.second << "\n" << std::endl; - } - std::exit(e.err()); - } - catch(cl::Error& e) - { - std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; - std::exit(e.err()); - } - catch(std::exception& e) - { - std::cerr << "Error: " << e.what() << std::endl; - std::exit(EXIT_FAILURE); - } - - return 0; -} From e31e95c2aad55ba1bdf72ec57b681f4b9bcb3b31 Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 30 Nov 2021 13:45:08 +0200 Subject: [PATCH 182/203] Integer limits header --- samples/core/binaries/main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/samples/core/binaries/main.c b/samples/core/binaries/main.c index b8cb431e..2f9c28f5 100644 --- a/samples/core/binaries/main.c +++ b/samples/core/binaries/main.c @@ -20,9 +20,10 @@ #include // STL includes -#include -#include -#include +#include +#include +#include +#include // Sample-specific option struct options_Binaries { From 1b3899a44c09d89c2930e14d46f7f66961a2ea3f Mon Sep 17 00:00:00 2001 From: Ivan Siutsou Date: Tue, 30 Nov 2021 14:07:58 +0200 Subject: [PATCH 183/203] Execution step added --- samples/core/binaries/README.md | 2 +- samples/core/binaries/main.c | 134 ++++++++++++++++---------------- 2 files changed, 69 insertions(+), 67 deletions(-) diff --git a/samples/core/binaries/README.md b/samples/core/binaries/README.md index 9f1ff075..ad76ce9a 100644 --- a/samples/core/binaries/README.md +++ b/samples/core/binaries/README.md @@ -10,7 +10,7 @@ The binary of a compiled program can be extracted from the program by invoking ` ### Application flow -The application once a platform and a device is selected tries to read corresponding binary file from the disk. In the case of success the program is built from the binary and executed. If the binary file is not present in the folder of the program then kernel file is loaded, built for the specified device, and saved as a binary. +The application once a platform and a device is selected tries to read corresponding binary file from the disk. In the case of success the program is built from the binary and executed. If the binary file is not present in the folder of the program then kernel `.cl` file is loaded, built for the specified device, saved as a binary file, loaded and executed. #### Event profiling diff --git a/samples/core/binaries/main.c b/samples/core/binaries/main.c index 2f9c28f5..06e294c1 100644 --- a/samples/core/binaries/main.c +++ b/samples/core/binaries/main.c @@ -157,71 +157,7 @@ int main(int argc, char * argv[]) /// Try to read binary program = cl_util_read_binaries(context, &device, 1, "Collatz", &error); - if (error == CL_SUCCESS) { // if the binary is already present - calculate - printf("Saved program found\n"); - OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); - - /// Create all remaining runtime objects - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, prg); -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, prg); -#else - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, prg); -#endif - - cl_kernel Collatz; - OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, que); - - const size_t length = binaries_opts.length; - const size_t start = binaries_opts.start - 1; - /// Prepare vector of values to extract results - cl_int * v = NULL; - MEM_CHECK(v = (cl_int *)malloc(sizeof(cl_int) * length), error, col); - - /// Initialize device-side storage - cl_mem buf; - OCLERROR_PAR(buf = clCreateBuffer(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, - sizeof(cl_int) * length, NULL, &error), error, vec); - - cl_event pass; - OCLERROR_RET(clSetKernelArg(Collatz, 0, sizeof(cl_mem), &buf), error, buff); - - GET_CURRENT_TIMER(start_time) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, &start, &length, NULL, 0, NULL, &pass), error, buff); - OCLERROR_RET(clWaitForEvents(1, &pass), error, buff); - GET_CURRENT_TIMER(end_time) - - if (diag_opts.verbose) - print_timings(start_time, end_time, &pass, 1); - - OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, sizeof(cl_int) * length, v, - 0, NULL, NULL), error, buff); - - // show results - int max_steps = 0; - size_t max_ind = -1; - for (size_t i = 0; i < length; ++i) - if (v[i] < 0) { - fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", start + 1 + i, -v[i]); - } - else if ((v[i] == 0) && (start + i != 0)) { - fprintf(stderr, "Number %zu did not converge to 1 at step %i\n", start + 1 + i, INT_MAX - 2); - } - else if (v[i] > max_steps) { - max_steps = v[i]; - max_ind = start + 1 + i; - } - printf("From %zu numbers checked starting from %zu, maximum %i steps was needed to get to 1 for number %zu\n", - length, start + 1, max_steps, max_ind); - -buff: OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); -vec: free(v); -col: OCLERROR_RET(clReleaseKernel(Collatz), end_error, que); -que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, cont); - } - else { // if binary not present, compile and save + if (error != CL_SUCCESS) { // if binary not present, compile and save const char * kernel_location = "./Collatz.cl"; char * kernel = NULL; size_t program_size = 0; @@ -234,13 +170,79 @@ prg: OCLERROR_RET(clReleaseProgram(program), end_error, cont); OCLERROR_RET(cl_util_build_program(program, device, options), error, prgs); OCLERROR_RET(cl_util_write_binaries(program, "Collatz"), error, prgs); - printf("Binary file written.\n"); + printf("Binary file written.\n\n"); prgs: OCLERROR_RET(clReleaseProgram(program), end_error, que); ker: free(kernel); + + OCLERROR_PAR(program = cl_util_read_binaries(context, &device, 1, "Collatz", &error), error, cont); } + // if the binary is already present - calculate + printf("Saved program found\n"); + OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); + + /// Create all remaining runtime objects + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, prg); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, prg); +#else + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, prg); +#endif + + cl_kernel Collatz; + OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, que); + + const size_t length = binaries_opts.length; + const size_t start = binaries_opts.start - 1; + /// Prepare vector of values to extract results + cl_int * v = NULL; + MEM_CHECK(v = (cl_int *)malloc(sizeof(cl_int) * length), error, col); + + /// Initialize device-side storage + cl_mem buf; + OCLERROR_PAR(buf = clCreateBuffer(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, + sizeof(cl_int) * length, NULL, &error), error, vec); + + /// Run kernel + cl_event pass; + OCLERROR_RET(clSetKernelArg(Collatz, 0, sizeof(cl_mem), &buf), error, buff); + + GET_CURRENT_TIMER(start_time) + OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, &start, &length, NULL, 0, NULL, &pass), error, buff); + OCLERROR_RET(clWaitForEvents(1, &pass), error, buff); + GET_CURRENT_TIMER(end_time) + + if (diag_opts.verbose) + print_timings(start_time, end_time, &pass, 1); + + OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, sizeof(cl_int) * length, v, + 0, NULL, NULL), error, buff); + + /// Show results + int max_steps = 0; + size_t max_ind = -1; + for (size_t i = 0; i < length; ++i) + if (v[i] < 0) { + fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", start + 1 + i, -v[i]); + } + else if ((v[i] == 0) && (start + i != 0)) { + fprintf(stderr, "Number %zu did not converge to 1 at step %i\n", start + 1 + i, INT_MAX - 2); + } + else if (v[i] > max_steps) { + max_steps = v[i]; + max_ind = start + 1 + i; + } + printf("From %zu numbers checked starting from %zu, maximum %i steps was needed to get to 1 for number %zu\n", + length, start + 1, max_steps, max_ind); + /// Cleanup +buff: OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); +vec: free(v); +col: OCLERROR_RET(clReleaseKernel(Collatz), end_error, que); +que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, prg); +prg: OCLERROR_RET(clReleaseProgram(program), end_error, cont); cont: OCLERROR_RET(clReleaseContext(context), end_error, end); end: if (error != CL_SUCCESS) cl_util_print_error(error); return error; From 574bfa91c8fe4bbca872811bcfd50472cc839f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Tue, 14 Dec 2021 17:48:17 +0100 Subject: [PATCH 184/203] Format and minor CI update (#2) * WIP * Added error handling to context_properties * Initial Utility and SDK lib docs * Match definition to declaration * Fix constraints lifetime * Explicit narrowing conversion * Fix lifetime * Initial NBody sample * Reduce NBody particle count * NBody docs * Add GLM as a dependency * Don't draw after closing window * Fix InteropWindow namespace * Don't call CTOR explicitly * Simplify includes * Build SDK libs in correct place * Hook SDK deps to the correct targerts * Only install Util headers * Check for TCLAP alongside other deps * Only check for sample deps when building them * Add TCLAP to SDK props * Build SDK lib only with samples * Inherit common deps from libSDK * Modularize Stb detection for non-Vcpkg consumers * Revamp dependency use * Install layout overhaul * Fix CI YAML * Fix dynamic library dependence in install tree * Update readme * Don't test NBody using CTest * Move image Dockerfiles to OpenCL-SDK * Remove dead kernel code * README typo fixes. * Newline * Update submodules to point GitHub * Apply git-format * CI bump * Install deps. * apt update * Install stb * Acknolwedge Linux stb install layout * Fix build path * Fix vcpkg paths Co-authored-by: Ivan Siutsou --- .github/workflows/presubmit.yml | 25 +- .gitlab/stream-ci.yaml | 91 +- .gitlab/ubuntu-18.04-rocm.Dockerfile | 10 + .gitlab/ubuntu-18.04.Dockerfile | 45 + .gitmodules | 6 +- CMakeLists.txt | 53 +- cmake/Modules/FindStb.cmake | 30 + cmake/Modules/FindTCLAP.cmake | 2 +- external/OpenCL-CLHPP | 2 +- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- lib/CMakeLists.txt | 187 +- lib/README.md | 15 + lib/SDK.md | 278 + lib/Utils.md | 121 + lib/include/CL/SDK/CLI.h | 168 +- lib/include/CL/SDK/CLI.hpp | 152 +- lib/include/CL/SDK/Context.h | 10 +- lib/include/CL/SDK/Context.hpp | 17 +- lib/include/CL/SDK/Image.h | 7 +- lib/include/CL/SDK/Image.hpp | 6 +- lib/include/CL/SDK/InteropContext.hpp | 14 +- lib/include/CL/SDK/InteropWindow.hpp | 33 +- lib/include/CL/SDK/OpenCLSDK_Config.in.h | 3 + lib/include/CL/SDK/Options.h | 2 +- lib/include/CL/SDK/Options.hpp | 60 +- lib/include/CL/SDK/Random.h | 53 +- lib/include/CL/SDK/Random.hpp | 21 +- lib/include/CL/SDK/SDK.hpp | 3 + lib/include/CL/Utils/Context.h | 47 +- lib/include/CL/Utils/Context.hpp | 10 +- lib/include/CL/Utils/Detail.hpp | 137 +- lib/include/CL/Utils/Device.hpp | 15 +- lib/include/CL/Utils/Error.h | 71 +- lib/include/CL/Utils/Error.hpp | 33 +- lib/include/CL/Utils/Event.h | 6 +- lib/include/CL/Utils/Event.hpp | 9 +- lib/include/CL/Utils/File.h | 20 +- lib/include/CL/Utils/File.hpp | 20 +- lib/include/CL/Utils/InteropContext.hpp | 18 + lib/include/CL/Utils/Platform.hpp | 12 +- lib/src/SDK/CLI.cpp | 5 + lib/src/SDK/Context.c | 20 +- lib/src/SDK/Image.c | 66 +- lib/src/SDK/Image.cpp | 70 +- lib/src/SDK/InteropContext.cpp | 66 +- lib/src/SDK/InteropWindow.cpp | 39 +- lib/src/Utils/Context.c | 181 +- lib/src/Utils/Context.cpp | 23 +- lib/src/Utils/Device.cpp | 24 +- lib/src/Utils/Error.c | 13 +- lib/src/Utils/Error.cpp | 6 +- lib/src/Utils/Event.c | 17 +- lib/src/Utils/File.c | 206 +- lib/src/Utils/Platform.cpp | 26 +- samples/CMakeLists.txt | 10 +- samples/core/binaries/CMakeLists.txt | 3 +- samples/core/binaries/main.c | 262 +- samples/core/blur/CMakeLists.txt | 3 +- samples/core/blur/default_image.h | 27706 +++++++++------- samples/core/blur/main.c | 1042 +- samples/core/copybuffer/main.cpp | 4 +- samples/core/copybufferkernel/main.cpp | 4 +- samples/core/reduce/CMakeLists.txt | 5 +- samples/core/reduce/main.c | 448 +- samples/core/reduce/main.cpp | 260 +- samples/core/saxpy/CMakeLists.txt | 7 +- samples/core/saxpy/main.c | 211 +- samples/core/saxpy/main.cpp | 110 +- samples/extensions/CMakeLists.txt | 3 - samples/extensions/khr/CMakeLists.txt | 4 + samples/extensions/khr/conway/CMakeLists.txt | 6 +- samples/extensions/khr/conway/main.cpp | 375 +- .../extensions/khr/histogram/CMakeLists.txt | 3 +- samples/extensions/khr/histogram/main.cpp | 156 +- samples/extensions/khr/nbody/CMakeLists.txt | 23 + samples/extensions/khr/nbody/README.md | 39 + samples/extensions/khr/nbody/main.cpp | 500 + samples/extensions/khr/nbody/nbody.cl | 46 + samples/extensions/khr/nbody/nbody.frag.glsl | 21 + samples/extensions/khr/nbody/nbody.vert.glsl | 25 + test/cmake/platformenum.c | 2 +- test/cmake/platformenum.cpp | 27 +- third_party/cargs/cargs.c | 678 +- third_party/cargs/cargs.h | 65 +- 85 files changed, 20421 insertions(+), 14205 deletions(-) create mode 100644 .gitlab/ubuntu-18.04-rocm.Dockerfile create mode 100644 .gitlab/ubuntu-18.04.Dockerfile create mode 100644 cmake/Modules/FindStb.cmake create mode 100644 lib/README.md create mode 100644 lib/SDK.md create mode 100644 lib/Utils.md create mode 100644 lib/include/CL/SDK/OpenCLSDK_Config.in.h create mode 100644 lib/include/CL/Utils/InteropContext.hpp create mode 100644 lib/src/SDK/CLI.cpp create mode 100644 samples/extensions/khr/nbody/CMakeLists.txt create mode 100644 samples/extensions/khr/nbody/README.md create mode 100644 samples/extensions/khr/nbody/main.cpp create mode 100644 samples/extensions/khr/nbody/nbody.cl create mode 100644 samples/extensions/khr/nbody/nbody.frag.glsl create mode 100644 samples/extensions/khr/nbody/nbody.vert.glsl diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index ef82b6ec..1e9a4d31 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -28,8 +28,16 @@ jobs: submodules: recursive - name: Build run: | - mkdir build - cd build + if [[ "${{ matrix.os }}" == "ubuntu-20.04" ]]; then + sudo apt update + sudo apt install -y libtclap-dev libglm-dev libglew-dev libsfml-dev libstb-dev libidn11 libx11-dev libxrandr-dev libxi-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libudev-dev + elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then + brew install tclap glm glew sfml mesa-glu + git clone https://github.com/Microsoft/vcpkg.git + ./vcpkg/bootstrap-vcpkg.sh + ./vcpkg/vcpkg install stb + TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake" + fi if [[ "${{ matrix.compiler }}" == "gcc" ]]; then CC=gcc CXX=g++ @@ -37,8 +45,8 @@ jobs: CC=clang CXX=clang++ fi - cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX ../ - make -j2 VERBOSE=1 + cmake -D CMAKE_C_COMPILER=$CC -D CMAKE_CXX_COMPILER=$CXX $TOOLCHAIN_ARG -S . -B build + cmake --build ./build --verbose --parallel 2 buildwin: needs: format name: Build Windows @@ -50,10 +58,11 @@ jobs: submodules: recursive - name: Build run: | - mkdir build - cd build - cmake ../ - cmake --build . + git clone https://github.com/Microsoft/vcpkg.git + .\vcpkg\bootstrap-vcpkg.bat + .\vcpkg\vcpkg.exe --triplet=x64-windows install sfml tclap glm glew stb + cmake -D CMAKE_TOOLCHAIN_FILE=.\vcpkg\scripts\buildsystems\vcpkg.cmake -S . -B build + cmake --build ./build -- /verbosity:minimal /maxCpuCount /noLogo python: name: Exercise Python examples on ${{matrix.os}} diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml index 9f83a0ee..c269f81f 100644 --- a/.gitlab/stream-ci.yaml +++ b/.gitlab/stream-ci.yaml @@ -23,17 +23,37 @@ variables: image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 parallel: matrix: - # NOTE: Old CMake versions will likely not use cutting-edge compilers + # NOTE 1: Old CMake versions will likely not use cutting-edge compilers + # NOTE 2: To reduce CI time, we test a complete matrix only with the + # oldest supported GCC and LLVM compilers. Rest use defaults + - C_COMPILER: gcc-7 + CXX_COMPILER: g++-7 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" - C_COMPILER: gcc-7 CXX_COMPILER: g++-7 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: gcc-8 CXX_COMPILER: g++-8 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" - C_COMPILER: clang-8 CXX_COMPILER: clang++-8 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: clang-9 CXX_COMPILER: clang++-9 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-10 CXX_COMPILER: clang++-10 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" @@ -46,14 +66,32 @@ variables: # NOTE: Cutting edge CMake versions will likely not use old compilers - C_COMPILER: gcc-9 CXX_COMPILER: g++-9 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: gcc-10 CXX_COMPILER: g++-10 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" + - C_COMPILER: gcc-10 + CXX_COMPILER: g++-10 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: clang-11 CXX_COMPILER: clang++-11 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-12 CXX_COMPILER: clang++-12 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-13 CXX_COMPILER: clang++-13 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" + - C_COMPILER: clang-13 + CXX_COMPILER: clang++-13 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" @@ -65,14 +103,32 @@ variables: # NOTE: Old CMake versions will likely not use cutting-edge compilers - C_COMPILER: gcc-7 CXX_COMPILER: g++-7 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" + - C_COMPILER: gcc-7 + CXX_COMPILER: g++-7 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: gcc-8 CXX_COMPILER: g++-8 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" - C_COMPILER: clang-8 CXX_COMPILER: clang++-8 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: clang-9 CXX_COMPILER: clang++-9 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-10 CXX_COMPILER: clang++-10 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH @@ -82,14 +138,32 @@ variables: # NOTE: Cutting edge CMake versions will likely not use old compilers - C_COMPILER: gcc-9 CXX_COMPILER: g++-9 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" + - C_COMPILER: gcc-10 + CXX_COMPILER: g++-10 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" - C_COMPILER: gcc-10 CXX_COMPILER: g++-10 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" - C_COMPILER: clang-11 CXX_COMPILER: clang++-11 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-12 CXX_COMPILER: clang++-12 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "ON" - C_COMPILER: clang-13 CXX_COMPILER: clang++-13 + BUILD_SAMPLES: ["ON", "OFF"] + BUILD_OPENGL: "ON" + - C_COMPILER: clang-13 + CXX_COMPILER: clang++-13 + BUILD_SAMPLES: "ON" + BUILD_OPENGL: "OFF" before_script: - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH @@ -106,6 +180,9 @@ build:cmake-minimum: # NOTE 2: Lack of space in -H -B is important! # https://stackoverflow.com/a/20611964/1476661 script: + # When not building OpenGL samples, delete OpenGL-related deps from image to make sure we + # don't accidentally include a header that otherwise need not be installed + - if [[ "$BUILD_OPENGL" == "OFF" ]]; then /opt/Microsoft/vcpkg/vcpkg remove sfml glm; fi; # Clone, configure, build, install OpenCL-SDK - cmake -G Ninja @@ -119,7 +196,8 @@ build:cmake-minimum: -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=ON - -D OPENCL_SDK_BUILD_SAMPLES=ON + -D OPENCL_SDK_BUILD_SAMPLES=$BUILD_SAMPLES + -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=$BUILD_OPENGL -D OPENCL_SDK_TEST_SAMPLES=ON -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR -B$BUILD_DIR @@ -139,6 +217,9 @@ build:cmake-latest: extends: .toolchain-matrix-latest stage: build script: + # When not building OpenGL samples, delete OpenGL-related deps from image to make sure we + # don't accidentally include a header that otherwise need not be installed + - if [[ "$BUILD_OPENGL" == "OFF" ]]; then /opt/Microsoft/vcpkg/vcpkg remove sfml glm; fi; # Clone, configure, build, install OpenCL-SDK - cmake -G "Ninja Multi-Config" @@ -151,8 +232,10 @@ build:cmake-latest: -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=ON - -D OPENCL_SDK_BUILD_SAMPLES=ON - -D OPENCL_SDK_TEST_SAMPLES=ONINSTALL_DIR + -D OPENCL_SDK_BUILD_SAMPLES=$BUILD_SAMPLES + -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=$BUILD_OPENGL + -D OPENCL_SDK_TEST_SAMPLES=ON + -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR -B $BUILD_DIR -S $CI_PROJECT_DIR - cmake diff --git a/.gitlab/ubuntu-18.04-rocm.Dockerfile b/.gitlab/ubuntu-18.04-rocm.Dockerfile new file mode 100644 index 00000000..d17ef498 --- /dev/null +++ b/.gitlab/ubuntu-18.04-rocm.Dockerfile @@ -0,0 +1,10 @@ +FROM streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 +RUN set -ex; \ + export DEBIAN_FRONTEND=noninteractive ; \ +# Register ROCm APT repo + wget --quiet --recursive --no-directories --no-parent "https://repo.radeon.com/amdgpu-install/latest/ubuntu/bionic/" --accept "amdgpu-install-*_all.deb" ; \ + apt install -y -qq ./amdgpu-install-*_all.deb libnuma-dev initramfs-tools ; \ + apt update -qq; \ + rm ./amdgpu-install-*_all.deb ; \ +# Install OpenCL package only (and dependency) + amdgpu-install -y --usecase=opencl \ No newline at end of file diff --git a/.gitlab/ubuntu-18.04.Dockerfile b/.gitlab/ubuntu-18.04.Dockerfile new file mode 100644 index 00000000..04869a8a --- /dev/null +++ b/.gitlab/ubuntu-18.04.Dockerfile @@ -0,0 +1,45 @@ +FROM ubuntu:18.04 AS apt-installs +RUN set -ex; \ + export DEBIAN_FRONTEND=noninteractive ; \ + apt update -qq; \ +# install wget to download repository keys and CMake tarballs +# install software-properties-common for the apt-add-repository command + apt install -y -qq wget software-properties-common ; \ +# Canonical hosts recent GCC compilers in ubuntu-toolchain-r/test + apt-add-repository -y ppa:ubuntu-toolchain-r/test ; \ +# LLVM hosts most toolchain in separate repos. We only register those absent from ubuntu-toolchain-r/test + wget -q -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - ; \ + apt-add-repository -y 'deb [arch=amd64] https://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main' ; \ + apt-add-repository -y 'deb [arch=amd64] https://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main' ; \ + apt-add-repository -y 'deb [arch=amd64] https://apt.llvm.org/bionic/ llvm-toolchain-bionic-13 main' ; \ +# install ninja, GCC 7-10, LLVM 8-13 and build-essential to get linkers, etc. +# install git to download dependencies +# install ruby to run CMock +# install libidn11 which CMake 3.1.3 only depends on +# install ca-certificates to `git clone` via HTTPS +# install SFML dependencies +# libx11-dev libxrandr-dev libxi-dev +# mesa-common-dev for gl.h +# libgl1-mesa-dev for libGL.so +# libglu1-mesa-dev for glu.h +# libudev-dev +# install Vcpkg dependencies +# curl zip unzip tar + apt install -y -qq build-essential g++-7 g++-8 g++-9 g++-10 clang-8 clang-9 clang-10 clang-11 clang-12 clang-13 ninja-build git ruby libidn11 ca-certificates libx11-dev libxrandr-dev libxi-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libudev-dev curl zip unzip tar + +# install CMake minimum (3.0.2 (Headers, ICD Loader), 3.1.3 (CLHPP), 3.10.3 (SDK)) and latest (3.21.2) +RUN mkdir -p /opt/Kitware/CMake ; \ + wget -c https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-Linux-i386.tar.gz -O - | tar -xz --directory /opt/Kitware/CMake ; \ + mv /opt/Kitware/CMake/cmake-3.0.2-Linux-i386 /opt/Kitware/CMake/3.0.2 ; \ + wget -c https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-Linux-x86_64.tar.gz -O - | tar -xz --directory /opt/Kitware/CMake ; \ + mv /opt/Kitware/CMake/cmake-3.1.3-Linux-x86_64 /opt/Kitware/CMake/3.1.3 ; \ + wget -c https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-Linux-x86_64.tar.gz -O - | tar -xz --directory /opt/Kitware/CMake ; \ + mv /opt/Kitware/CMake/cmake-3.10.3-Linux-x86_64 /opt/Kitware/CMake/3.10.3 ; \ + wget -c https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-x86_64.tar.gz -O - | tar -xz --directory /opt/Kitware/CMake ; \ + mv /opt/Kitware/CMake/cmake-3.21.2-linux-x86_64 /opt/Kitware/CMake/3.21.2 + +# install Vcpkg +RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /opt/Microsoft/vcpkg ; \ + /opt/Microsoft/vcpkg/bootstrap-vcpkg.sh ; \ +# install SFML, TCLAP, GLM + /opt/Microsoft/vcpkg/vcpkg install sfml tclap glm glew \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index bd83747a..964d1b40 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ [submodule "loader"] path = external/OpenCL-ICD-Loader - url = git@projects.streamhpc.com:Khronos/OpenCL-ICD-Loader.git + url = https://github.com/StreamHPC/OpenCL-ICD-Loader.git branch = develop_stream [submodule "headers"] path = external/OpenCL-Headers - url = git@projects.streamhpc.com:Khronos/OpenCL-Headers.git + url = https://github.com/StreamHPC/OpenCL-Headers.git branch = develop_stream [submodule "headers-cpp"] path = external/OpenCL-CLHPP - url = git@projects.streamhpc.com:Khronos/OpenCL-CLHPP.git + url = https://github.com/StreamHPC/OpenCL-CLHPP.git branch = develop_stream diff --git a/CMakeLists.txt b/CMakeLists.txt index 821bd393..2aca2aad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,35 +42,36 @@ add_subdirectory(external/OpenCL-Headers) add_subdirectory(external/OpenCL-ICD-Loader) add_subdirectory(external/OpenCL-CLHPP) -add_subdirectory(third_party/cargs) -if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) - cmake_minimum_required(VERSION 3.10) # SFML 2 won't find Freetype::Freetype under 3.10 +if(OPENCL_SDK_BUILD_SAMPLES) + list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) + add_subdirectory(third_party/cargs) + find_package(TCLAP REQUIRED) find_package(Stb REQUIRED) - find_package(OpenGL REQUIRED) - if(CMAKE_SYSTEM_NAME MATCHES Linux) # TODO: Add EGL support - # OpenGL doesn't explicitly depend on X11 (as of CMake v3.2) but we'll need it - find_package(X11 REQUIRED) - endif() - find_package(GLEW REQUIRED) - if(NOT TARGET OpenGL::GLU) - # GLU is a dependency of GLEW but it's not advertized as an OpenGL COMPONENT - message(FATAL_ERROR "GLEW depends on GLU but was not found.") - endif() - find_package(SFML 2 - REQUIRED - COMPONENTS window graphics - ) -endif() + if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) + cmake_minimum_required(VERSION 3.10) # SFML 2 won't find Freetype::Freetype under 3.10 + find_package(OpenGL REQUIRED) + if(CMAKE_SYSTEM_NAME MATCHES Linux) # TODO: Add EGL support + # OpenGL doesn't explicitly depend on X11 (as of CMake v3.2) but we'll need it + find_package(X11 REQUIRED) + endif() + find_package(GLEW REQUIRED) + if(NOT TARGET OpenGL::GLU) + # GLU is a dependency of GLEW but it's not advertized as an OpenGL COMPONENT + message(FATAL_ERROR "GLEW depends on GLU but was not found.") + endif() + find_package(SFML 2 + REQUIRED + COMPONENTS window graphics + ) + find_package(GLEW REQUIRED) + find_package(glm CONFIG REQUIRED) + endif(OPENCL_SDK_BUILD_OPENGL_SAMPLES) +endif(OPENCL_SDK_BUILD_SAMPLES) add_subdirectory(lib) -add_subdirectory(samples) - -include (GNUInstallDirs) -set_target_properties(OpenCL OpenCLUtils OpenCLUtilsCpp - PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} -) +if(OPENCL_SDK_BUILD_SAMPLES) + add_subdirectory(samples) +endif() include(GNUInstallDirs) file( diff --git a/cmake/Modules/FindStb.cmake b/cmake/Modules/FindStb.cmake new file mode 100644 index 00000000..0a4886e5 --- /dev/null +++ b/cmake/Modules/FindStb.cmake @@ -0,0 +1,30 @@ +# - Find Stb +# Find the Stb headers +# +# Stb_INCLUDE_DIR - where to find the TCLAP headers +# Stb_FOUND - True if TCLAP is found + +if (Stb_INCLUDE_DIR) + # already in cache, be silent + set (Stb_FIND_QUIETLY TRUE) +endif (Stb_INCLUDE_DIR) + +# find the headers +find_path (Stb_INCLUDE_PATH stb_image.h + PATHS + ${Stb_DIR} + PATH_SUFFIXES + include + include/stb + ) + +# handle the QUIETLY and REQUIRED arguments and set Stb_FOUND to +# TRUE if all listed variables are TRUE +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (Stb "Stb (https://github.com/nothings/stb) could not be found. Set Stb_INCLUDE_PATH to point to the headers adding '-D Stb_INCLUDE_PATH=/path/to/stb' to the cmake command." Stb_INCLUDE_PATH) + +if (Stb_FOUND) + set (Stb_INCLUDE_DIR ${Stb_INCLUDE_PATH}) +endif (Stb_FOUND) + +mark_as_advanced(Stb_INCLUDE_PATH) diff --git a/cmake/Modules/FindTCLAP.cmake b/cmake/Modules/FindTCLAP.cmake index 70fbf3b9..781450a2 100644 --- a/cmake/Modules/FindTCLAP.cmake +++ b/cmake/Modules/FindTCLAP.cmake @@ -25,4 +25,4 @@ if (TCLAP_FOUND) set (TCLAP_INCLUDE_DIR ${TCLAP_INCLUDE_PATH}) endif (TCLAP_FOUND) -mark_as_advanced(TCLAP_INCLUDE_PATH) \ No newline at end of file +mark_as_advanced(TCLAP_INCLUDE_PATH) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 9b67fa3e..84fc0fe7 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 9b67fa3e8bf799477093b2156fac5b5d46af2430 +Subproject commit 84fc0fe7778cba279f2684e46717dcf8a34a4c21 diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index e38a6706..80d35ae1 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit e38a6706586dba899610013f7e409a25d9f54cd5 +Subproject commit 80d35ae1258ca3de3a30064a00c51036b5f7b351 diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 6a3d0b41..8ae08b04 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 6a3d0b4143b55ec1b8ba766a6fdd824a913f0b9e +Subproject commit 8ae08b045fd16a2fc2e11c85643f6b0acdd1dc8b diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 7fc72b05..0a6d8e89 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -14,18 +14,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set(UTIL_LIB_DEPS OpenCL::HeadersCpp OpenCL::Utils - OpenGL::GL - GLEW::GLEW - $<$:OpenGL::GLU> - sfml-window - sfml-graphics ) - if(CMAKE_VERSION VERSION_LESS 3.4) - list(APPEND UTIL_LIB_DEPS ${OPENGL_LIBRARIES}) - else() - list(APPEND UTIL_LIB_DEPS OpenGL::GL) - endif() - set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() message(FATAL_ERROR "Unkown Util flavor") endif() @@ -49,8 +38,6 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) PUBLIC ${UTIL_LIB_DEPS} OpenCL::OpenCL - PRIVATE - cargs ) target_compile_definitions(${UTIL_LIB_TARGET} PRIVATE @@ -61,7 +48,8 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set_target_properties(${UTIL_LIB_TARGET} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} FOLDER "Libraries/${UTIL_LIB_NAME}" ) @@ -73,8 +61,8 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install( - DIRECTORY include/CL - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + DIRECTORY include/CL/Utils + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CL ) export( EXPORT OpenCL${UTIL_LIB_NAME}Targets @@ -111,72 +99,111 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) ) endforeach() -foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) - if(SDK_LIB_NAME STREQUAL SDK) - set(SDK_LIB_SOURCES src/SDK/SDK.c) - set(SDK_LIB_DEPS - OpenCL::Headers - OpenCL::Utils - ) - set(SDK_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) - elseif(SDK_LIB_NAME STREQUAL SDKCpp) - set(SDK_LIB_SOURCES - src/SDK/Image.cpp - src/SDK/InteropContext.cpp - src/SDK/InteropWindow.cpp - ) - set(SDK_LIB_DEPS - OpenCL::HeadersCpp - OpenCL::UtilsCpp - GLEW::GLEW - $<$:OpenGL::GLU> - sfml-window - sfml-graphics - ) - if(CMAKE_VERSION VERSION_LESS 3.4) - list(APPEND SDK_LIB_DEPS ${OPENGL_LIBRARIES}) +if(OPENCL_SDK_BUILD_SAMPLES) + foreach(SDK_LIB_NAME IN ITEMS SDK SDKCpp) + if(SDK_LIB_NAME STREQUAL SDK) + set(SDK_LIB_SOURCES src/SDK/SDK.c) + set(SDK_LIB_DEPS + OpenCL::Headers + OpenCL::Utils + cargs + ) + set(SDK_LIB_INCLUDES + ${Stb_INCLUDE_DIR} + ) + set(SDK_CL_VERSION_MACRO_NAME CL_TARGET_OPENCL_VERSION) + elseif(SDK_LIB_NAME STREQUAL SDKCpp) + set(SDK_LIB_SOURCES + src/SDK/CLI.cpp + src/SDK/Image.cpp + $<$:src/SDK/InteropContext.cpp> + $<$:src/SDK/InteropWindow.cpp> + ) + set(SDK_LIB_DEPS + OpenCL::HeadersCpp + OpenCL::UtilsCpp + $<$:OpenGL::GL> + $<$:GLEW::GLEW> + $<$,$>:OpenGL::GLU> + $<$:sfml-system> + $<$:sfml-window> + $<$:sfml-graphics> + ) + set(SDK_LIB_INCLUDES + ${TCLAP_INCLUDE_DIR} + ${Stb_INCLUDE_DIR} + ) + set(SDK_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() - list(APPEND SDK_LIB_DEPS OpenGL::GL) + message(FATAL_ERROR "Unkown SDK flavor") endif() - set(SDK_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) - else() - message(FATAL_ERROR "Unkown SDK flavor") - endif() - set(SDK_LIB_TARGET OpenCL${SDK_LIB_NAME}) - add_library(${SDK_LIB_TARGET} ${SDK_LIB_SOURCES}) - add_library(OpenCL::${SDK_LIB_NAME} ALIAS ${SDK_LIB_TARGET}) - string(TOUPPER ${SDK_LIB_NAME} UPPER_SDK_LIB_NAME) - generate_export_header(${SDK_LIB_TARGET} - EXPORT_MACRO_NAME ${UPPER_SDK_LIB_NAME}_EXPORT - EXPORT_FILE_NAME OpenCL${SDK_LIB_NAME}_Export.h - ) + set(SDK_LIB_TARGET OpenCL${SDK_LIB_NAME}) + add_library(${SDK_LIB_TARGET} ${SDK_LIB_SOURCES}) + add_library(OpenCL::${SDK_LIB_NAME} ALIAS ${SDK_LIB_TARGET}) - target_include_directories(${SDK_LIB_TARGET} - PUBLIC - $ - $ - $ - PRIVATE - ${Stb_INCLUDE_DIR} - ) - target_link_libraries(${SDK_LIB_TARGET} - PUBLIC - ${SDK_LIB_DEPS} - OpenCL::OpenCL - PRIVATE - cargs - ) - target_compile_definitions(${SDK_LIB_TARGET} - PRIVATE - ${SDK_CL_VERSION_MACRO_NAME}=300 - PUBLIC - CL_HPP_ENABLE_EXCEPTIONS - ) + string(TOUPPER ${SDK_LIB_NAME} UPPER_SDK_LIB_NAME) + generate_export_header(${SDK_LIB_TARGET} + EXPORT_MACRO_NAME ${UPPER_SDK_LIB_NAME}_EXPORT + EXPORT_FILE_NAME OpenCL${SDK_LIB_NAME}_Export.h + ) + configure_file( + include/CL/SDK/OpenCLSDK_Config.in.h + ${CMAKE_CURRENT_BINARY_DIR}/OpenCLSDK_Config.h + ) - set_target_properties(${SDK_LIB_TARGET} - PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} - FOLDER "Libraries/${SDK_LIB_NAME}" - ) -endforeach() + target_include_directories(${SDK_LIB_TARGET} + PUBLIC + ${SDK_LIB_INCLUDES} + $ + $ + $ + ) + target_link_libraries(${SDK_LIB_TARGET} + PUBLIC + ${SDK_LIB_DEPS} + OpenCL::OpenCL + ) + target_compile_definitions(${SDK_LIB_TARGET} + PRIVATE + ${SDK_CL_VERSION_MACRO_NAME}=300 + PUBLIC + CL_HPP_ENABLE_EXCEPTIONS + ) + + set_target_properties(${SDK_LIB_TARGET} + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + FOLDER "Libraries/${SDK_LIB_NAME}" + ) + install( + TARGETS ${SDK_LIB_TARGET} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + # Copying DLLs the samples depend on only makes sense on Wnidows. On *nix + # OSes we rely on RPATH. We can only do this with sufficiently new CMake. + if( + OPENCL_SDK_BUILD_OPENGL_SAMPLES AND + CMAKE_VERSION VERSION_GREATER_EQUAL 3.21 AND + CMAKE_SYSTEM_NAME MATCHES Windows + ) + foreach(DEP IN ITEMS + GLEW::GLEW + sfml-window + sfml-graphics + sfml-system + ) + get_target_property(DEP_TYPE ${DEP} TYPE) + if(${DEP_TYPE} STREQUAL SHARED_LIBRARY) + install( + IMPORTED_RUNTIME_ARTIFACTS + ${DEP} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) + endif() + endforeach() + endif() + endforeach() +endif(OPENCL_SDK_BUILD_SAMPLES) diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 00000000..8fb015da --- /dev/null +++ b/lib/README.md @@ -0,0 +1,15 @@ +# OpenCL Utility and OpenCL SDK Library Documentation + +There are two libraries in the OpenCL SDK which all samples utilize to different extents. One such library is the OpenCL Utility Library which is an exported library and is meant to ease the use of OpenCL, while the OpenCL SDK Library builds on top of it but is not exported when installing the SDK. The OpenCL SDK lib extends the Utility library in ways which likely don't make sense outside the context of the SDK samples. + +## OpenCL Utility Library + +One may think of this library as analogous to GLU and GLUT in the domain of OpenGL. A set of utilities which condense common tasks into singular functions or add missing functionality of the API which otherwise couldn't be added as a non-API-breaking change. + +For a complete list utilities provided by this library, refer to the [OpenCL Utility Library docs](./Utils.md). + +## OpenCL SDK Library + +The SDK library extends the Utility library by deduplicating common tasks like command-line argument parsing, selecting devices, logging, and other contentious tasks which your application likely does differently, hence the value in shipping it for external use, moreover promise forward and/or backward compatibility is low. + +For a complete list functionality provided by this library, refer to the [OpenCL SDK Library docs](./SDK.md). \ No newline at end of file diff --git a/lib/SDK.md b/lib/SDK.md new file mode 100644 index 00000000..e9a55596 --- /dev/null +++ b/lib/SDK.md @@ -0,0 +1,278 @@ +# OpenCL SDK Library + +The OpenCL SDK Library hosts both C and C++ utilities which are generally useful for writing OpenCL applications but are either dependency-heavy or contentious. Because these utilities aren't the subject of universal interest, these utilities are _not_ exported, meaning SDK installations won't install their headers nor their libraries. Doing so the [OpenCL Utility Library](./Utils.md) can be kept dependency-free. + +The utilities are broken into to libraries, `OpenCLSDK` and `OpenCLSDKCpp`. Samples include ``/`` and link to their libraries respectively. + +## List of utilities + +- [Command-line Interface](#command-line-interface-utilities) +- [Pseudo Random Number Generation utilities](#pseudo-random-number-generation-utilities) +- [Image utilities](#image-utilities) +- [OpenCL-OpenGL interop utilities](#openCL-openGL-interop-utilities) + +### Command-line interface utilities + +#### C +```c +struct cl_sdk_options_DeviceTriplet +{ + int plat_index; + int dev_index; + cl_device_type dev_type; +}; + +struct cl_sdk_options_Diagnostic +{ + bool verbose; + bool quiet; +}; + +struct cl_sdk_options_SingleDevice +{ + struct cl_sdk_options_DeviceTriplet triplet; +}; + +struct cl_sdk_options_MultiDevice +{ + struct cl_sdk_options_DeviceTriplet * triplets; + size_t number; +}; +``` +#### C++ +```c++ +struct cl::sdk::DeviceTriplet +{ + int plat_index; + int dev_index; + cl_device_type dev_type; +}; +struct cl::sdk::Diagnostic +{ + bool verbose, + quiet; +}; +struct cl::sdk::SingleDevice +{ + DeviceTriplet triplet; +}; +struct cl::sdk::MultiDevice +{ + cl::vector triplets; +}; +struct cl::sdk::Window +{ + int width; + int height; + bool fullscreen; +}; +``` + +The SDK Library deduplicates the storage the result of common CLI argument parsing. These types are used throughout the SDK samples. + +#### C++ +```c++ +template +auto cl::sdk::parse(); + +template +Option cl::sdk::comprehend(Parsers... parsers); + +template +std::tuple cl::sdk::parse_cli(int argc, char* argv[], std::string banner = "OpenCL SDK sample template") +``` + +These functions reduce the boilerplate needed for each sample to introduce their own set of command-line arguments and helps deduplicate the set of common options which most samples inherit. + +The first two are the customizable parts where each sample (and the the pre-defined options) specify how CLI arguments should be processed. `cl::sdk::parse()` specifies what the option names are and should return an instance of tuple-like type (`std::get(const type&)` be valid) containing smart-pointer-like types (`ptr.get()` be valid) holding TCLAP arguments and switches. `cl::sdk::comprehend()` takes this tuple already expanded as arguments with names and "makes sense" of the strings of args already validated during parsing and returns a singular struct of the options at hand. + +> The types returned by `cl::sdk::parse()` must exactly match the `Parsers...` of `cl::sdk::comprehend()`. + +`cl::sdk::parse_cli()` is a simple metaprogram that invokes the `parse` and `comprehend` functions of all the `Options` types it is given in the correct order. First it registers all the command-line arguments and switches, then invokes the parse method of the underlying CLI parser and then invokes the comprehend method of the + +Simplest example is the C++ SAXPY sample adding a single option to control the length of the vector operands. The sample uses a single OpenCL device and respects diagnostic level options as well. + +#### C++ +```c++ +// Sample-specific option +struct SaxpyOptions { size_t length; }; + +// Add option to CLI parsing SDK utility +template <> auto cl::sdk::parse(){ + return std::make_tuple( + std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral") + ); +} +template <> SaxpyOptions cl::sdk::comprehend( + std::shared_ptr> length_arg){ + return SaxpyOptions{ + length_arg->getValue() + }; +} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = cl::sdk::parse_cli< + cl::sdk::options::Diagnostic, + cl::sdk::options::SingleDevice, + SaxpyOptions>(argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); + const auto& saxpy_opts = std::get<2>(opts); + ... + } + // catch clauses +} +``` + +_(Note: C++17 structured-bindings allows cleaner binding of names to the members of the tuple returned by `cl::sdk::parse_cli`.)_ + +### Pseudo Random Number Generation utilities + +#### C +```c +void cl_sdk_fill_with_random_floats(pcg32_random_t * rng, cl_float * arr, const size_t len); +``` +Fills an array with random floats in the range [0, 1). +- `rng` must point to a valid PRNG instance. +- `arr` must be allocated storage long enough to store the results. +- `len` is the count of elements that will be written to `arr`. + +```c +void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, + cl_float * arr, const size_t len, const cl_float low, const cl_float hi); +``` +Fills an array with random floats in the range [`low`, `hi`). +- `rng` must point to a valid PRNG instance. +- `arr` must be allocated storage long enough to store the results. +- `len` is the count of elements that will be written to `arr`. +- `low` is the low-end of the range. +- `hi` is the high-end of the range. + +```c +void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, + cl_int * arr, const size_t len, const cl_int low, const cl_int hi); +``` +Fills an array with uniformly distributed numbers in the range [`low`, `hi`]. Uses rejection sampling from uniform bit distribution. +- `rng` must point to a valid PRNG instance. +- `arr` must be allocated storage long enough to store the results. +- `len` is the count of elements that will be written to `arr`. +- `low` is the low-end of the range. +- `hi` is the high-end of the range. + +#### C++ +```c++ +template +void fill_with_random(PRNG&& prng, Containers&&... containers); +``` +Fills containers with random numbers using a user-provided PRNG. +- `prng` must be a PRNG, a callable type with `T(void)` signature where `T` is implicitly convertible to the `value_type` of `containers`. +- `containers` must be a container providing a [LegacyOutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator). + +### Image utilities +#### C +```c +typedef struct cl_sdk_image +{ + int width, height, pixel_size; + unsigned char* pixels; +} +cl_sdk_image; +``` +#### C++ +```c++ +struct cl::sdk::Image +{ + int width, height, pixel_size; + cl::vector pixels; +}; +``` +Used to store pixel information of images read/written to/from storage. +- `width` and `height` store the number of pixels the image has in x-y directions respectively. +- `pixel_size` stores the number of bytes used to store a single pixel. +- `pixels` stores the actual pixel data. + +#### C +```c +cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err); +``` +#### C++ +```c++ +Image cl::sdk::read_image(const char* file_name, cl_int* err); +``` +Reads a BMP/JPEG/PNG image from disk. +- `file_name` specifies the absolute or relative path (to the current working-directory) to the image. +- `err` is an optional pointer used to capture error conditions. + +Returns an `cl_sdk_image`/`cl::sdk::Image` instance. If an error occurs, the returned image is in an invalid state. + +#### C +```c +void cl_sdk_write_image(const char * file_name, const cl_sdk_image * im, cl_int * err); +``` +#### C++ +```c++ +void cl::sdk::write_image(const char* file_name, const Image& image, cl_int* err); +``` +Writes a BMP/JPEG/PNG image from disk. +- `file_name` specifies the absolute or relative path (to the current working-directory) to the image. +- `image` is the source of pixel information. +- `err` is an optional pointer used to capture error conditions. +### OpenCL-OpenGL interop utilities + +#### C++ +```c++ +cl::vector cl::sdk::get_interop_context_properties(const cl::Device& plat, cl_int* error = nullptr); +``` + +This function returns a null-terminated list of context properties required to setup an OpenCL-OpenGL interop context with the currently active OpenGL context. + +If `error` is non-null or if `CL_HPP_ENABLE_EXCEPTIONS` is used, ordinary OpenCL error codes may be returned and the following library-specific error codes: + +- `CL_UTIL_OS_GL_QUERY_ERROR` if platform-specific errors occur when trying to query for the currently active OpenGL context. + +#### C++ +```c++ +cl::Context cl::sdk::get_interop_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); +``` + +This function creates an interop context on the platform with id `plat_id` with a single device of type `type` and id `dev_id` which is able to share resources with the currently active OpenGL context. + +If `error` is non-null or if `CL_HPP_ENABLE_EXCEPTIONS` is used, ordinary OpenCL error codes may be returned and the following library-specific error codes: + +- `CL_UTIL_INDEX_OUT_OF_RANGE` if the requested platform or device id is outside the range of available platforms or devices of the selected `type` on the platform. +- `CL_UTIL_OS_GL_QUERY_ERROR` if platform-specific errors occur when trying to query for the currently active OpenGL context. + +#### C++ +```c++ +class cl::sdk::InteropWindow : public sf::Window +{ +public: + explicit InteropWindow( + sf::VideoMode mode, + const sf::String& title, + sf::Uint32 style = sf::Style::Default, + const sf::ContextSettings& settings = sf::ContextSettings{}, + int platform_id = 0, + int device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT + ); + + void run(); + +protected: + // Core functionality to be overriden + virtual void initializeGL() = 0; // Function that initializes all OpenGL assets needed to draw a scene + virtual void initializeCL() = 0; // Function that initializes all OpenCL assets needed to draw a scene + virtual void updateScene() = 0; // Function that holds scene update guaranteed not to conflict with drawing + virtual void render() = 0; // Function that does the native rendering + virtual void event(const sf::Event& e) = 0; // Function that handles render area resize + + cl::Context opencl_context; + bool cl_khr_gl_event_supported; +}; +``` +This class encapsulates an interactive window with the content being one OpenGL canvas. It provides a set of functions for the user to override in derived classes. \ No newline at end of file diff --git a/lib/Utils.md b/lib/Utils.md new file mode 100644 index 00000000..61ec0138 --- /dev/null +++ b/lib/Utils.md @@ -0,0 +1,121 @@ +# OpenCL Utility Library + +The OpenCL Utility Library provides both C and C++ bindings with near feature parity. The utilities are broken into to libraries, `OpenCLUtils` and `OpenCLUtilsCpp`. To include them in your project, include ``/`` and link to their libraries respectively. + +## List of utilities + +- [Platform](#platform-utilities) +- [Device](#device-utilities) +- [Context](#context-utilities) +- [Event](#event-utilities) +- [Error](#error-handling-utilities) + +### Platform utilities + +```c++ +bool cl::util::supports_extension(const cl::Platform& platform, const cl::string& extension); +``` +Tells whether a platform supports a given extension. +- `platform` is the platform to query. +- `extension` is the extension string being searched for. + +```c++ +bool cl::util::platform_version_contains(const cl::Platform& platform, const cl::string& version_fragment); +``` +Tells whether the platform version string contains a specific fragment. +- `platform` is the platform to query. +- `version_fragment` is the version string fragment to search for. + +### Device utilities + +```c++ +bool cl::util::opencl_c_version_contains(const cl::Device& device, const cl::string& version_fragment); +``` +Tells whether the device OpenCL C version string contains a specific fragment. +- `device` is the device to query. +- `version_fragment` is the version string fragment to search for. + +```c++ +bool cl::util::supports_extension(const cl::Device& device, const cl::string& extension); +``` +Tells whether a device supports a given extension. +- `device` is the device to query. +- `extension` is the extension string being searched for. + +```c++ +bool cl::util::supports_feature(const cl::Device& device, const cl::string& feature_name); +``` +Tells whether a device supports any version of a feature. +- `device` is the device to query. +- `feature_name` is the feature name string being searched for. + +_(Note: this function is only available when both the Utility library and the using code defines minimally `CL_VERSION_3_0`.)_ +### Context utilities + +```c +cl_context cl_util_get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error); +``` +```c++ +cl::Context cl::util::get_context(int plat_id, int dev_id, cl_device_type type, cl_int* error = nullptr); +``` + +These functions create a context on the platform with id `plat_id` with a single device of type `type` and id `dev_id`. + +If `error` is non-null or if `CL_HPP_ENABLE_EXCEPTIONS` is used, ordinary OpenCL error codes may be returned and the following library-specific error codes: + +- `CL_UTIL_INDEX_OUT_OF_RANGE` if the requested platform or device id is outside the range of available platforms or devices of the selected `type` on the platform. + +### Event utilities + +```c++ +template +auto cl::util::get_duration(cl::Event& ev); +``` + +This function template can be used to query an event for the duration of time measured in user-provided units between two state transitions. By default the return type is `std::chrono::nanoseconds` as that is the unit of measure of the OpenCL API. + +### Error handling utilities + +```c++ +class Error : public std::exception +{ +private: + int err_; + const char * errStr_; +public: + /*! \brief Create a new SDK error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) + {} + + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char * what() const throw () + { + if (errStr_ == NULL) { + return "empty"; + } + else { + return errStr_; + } + } + + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } +}; +``` +This type is used as the exception type thrown by utilities when an error occurs and the compiling code defines `CL_HPP_ENABLE_EXCEPTIONS` diff --git a/lib/include/CL/SDK/CLI.h b/lib/include/CL/SDK/CLI.h index ec4553e3..f04410b5 100644 --- a/lib/include/CL/SDK/CLI.h +++ b/lib/include/CL/SDK/CLI.h @@ -13,12 +13,15 @@ typedef struct cag_option cag_option; -cag_option * add_CLI_options(cag_option * opts, size_t * const num_opts, cag_option * add_opts, size_t add_num_opts) +cag_option *add_CLI_options(cag_option *opts, size_t *const num_opts, + cag_option *add_opts, size_t add_num_opts) { - cag_option * tmp = NULL; + cag_option *tmp = NULL; - tmp = (cag_option *)realloc(opts, sizeof(cag_option) * (*num_opts + add_num_opts)); - if (tmp) { + tmp = (cag_option *)realloc( + opts, sizeof(cag_option) * (*num_opts + add_num_opts)); + if (tmp) + { memcpy(tmp + *num_opts, add_opts, sizeof(cag_option) * add_num_opts); *num_opts += add_num_opts; } @@ -36,96 +39,109 @@ enum ParseState typedef enum ParseState ParseState; cag_option DiagnosticOptions[] = { - {.identifier = 'h', - .access_letters = "h", - .access_name = "help", - .description = "Show this help"}, - - {.identifier = 'q', - .access_letters = "q", - .access_name = "quiet", - .description = "Suppress standard output"}, - - {.identifier = 'v', - .access_letters = "v", - .access_name = "verbose", - .description = "Extra informational output"} + { .identifier = 'h', + .access_letters = "h", + .access_name = "help", + .description = "Show this help" }, + + { .identifier = 'q', + .access_letters = "q", + .access_name = "quiet", + .description = "Suppress standard output" }, + + { .identifier = 'v', + .access_letters = "v", + .access_name = "verbose", + .description = "Extra informational output" } }; -ParseState parse_DiagnosticOptions(const char identifier, struct cl_sdk_options_Diagnostic * diag_opts) +ParseState parse_DiagnosticOptions(const char identifier, + struct cl_sdk_options_Diagnostic *diag_opts) { - switch (identifier) { - case 'q': - diag_opts->quiet = true; - return ParsedOK; - case 'v': - diag_opts->verbose = true; - return ParsedOK; + switch (identifier) + { + case 'q': diag_opts->quiet = true; return ParsedOK; + case 'v': diag_opts->verbose = true; return ParsedOK; } return NotParsed; } cag_option SingleDeviceOptions[] = { - {.identifier = 'p', - .access_letters = "p", - .access_name = "platform", - .value_name = "(positive integer)", - .description = "Index of platform to use"}, - - {.identifier = 'd', - .access_letters = "d", - .access_name = "device", - .value_name = "(positive integer)", - .description = "Index of device to use"}, - - {.identifier = 't', - .access_letters = "t", - .access_name = "type", - .value_name = "(all|cpu|gpu|acc|def|cus)", - .description = "Type of device to use"} + { .identifier = 'p', + .access_letters = "p", + .access_name = "platform", + .value_name = "(positive integer)", + .description = "Index of platform to use" }, + + { .identifier = 'd', + .access_letters = "d", + .access_name = "device", + .value_name = "(positive integer)", + .description = "Index of device to use" }, + + { .identifier = 't', + .access_letters = "t", + .access_name = "type", + .value_name = "(all|cpu|gpu|acc|def|cus)", + .description = "Type of device to use" } }; // TODO: error handling -cl_device_type get_dev_type(const char * in) +cl_device_type get_dev_type(const char *in) { - if (!strcmp(in, "all")) return CL_DEVICE_TYPE_ALL; - else if (!strcmp(in, "cpu")) return CL_DEVICE_TYPE_CPU; - else if (!strcmp(in, "gpu")) return CL_DEVICE_TYPE_GPU; - else if (!strcmp(in, "acc")) return CL_DEVICE_TYPE_ACCELERATOR; - else if (!strcmp(in, "def")) return CL_DEVICE_TYPE_DEFAULT; - else if (!strcmp(in, "cus")) return CL_DEVICE_TYPE_CUSTOM; - else return CL_DEVICE_TYPE_ALL;//CL_INVALID_DEVICE_TYPE;// "Unkown device type after cli parse. Should not have happened." + if (!strcmp(in, "all")) + return CL_DEVICE_TYPE_ALL; + else if (!strcmp(in, "cpu")) + return CL_DEVICE_TYPE_CPU; + else if (!strcmp(in, "gpu")) + return CL_DEVICE_TYPE_GPU; + else if (!strcmp(in, "acc")) + return CL_DEVICE_TYPE_ACCELERATOR; + else if (!strcmp(in, "def")) + return CL_DEVICE_TYPE_DEFAULT; + else if (!strcmp(in, "cus")) + return CL_DEVICE_TYPE_CUSTOM; + else + return CL_DEVICE_TYPE_ALL; // CL_INVALID_DEVICE_TYPE;// "Unkown device + // type after cli parse. Should not have + // happened." } -ParseState parse_SingleDeviceOptions(const char identifier, cag_option_context * cag_context, struct cl_sdk_options_SingleDevice * dev_opts) +ParseState +parse_SingleDeviceOptions(const char identifier, + cag_option_context *cag_context, + struct cl_sdk_options_SingleDevice *dev_opts) { - const char * value; - -#define IF_ERR(op) \ -if ((value = cag_option_get_value(cag_context))) \ - { op; return ParsedOK; } \ -else return ParseError; - - switch (identifier) { - case 'p': - IF_ERR(dev_opts->triplet.plat_index = strtoul(value, NULL, 0)) - case 'd': - IF_ERR(dev_opts->triplet.dev_index = strtoul(value, NULL, 0)) - case 't': - IF_ERR(dev_opts->triplet.dev_type = get_dev_type(value)) + const char *value; + +#define IF_ERR(op) \ + if ((value = cag_option_get_value(cag_context))) \ + { \ + op; \ + return ParsedOK; \ + } \ + else \ + return ParseError; + + switch (identifier) + { + case 'p': IF_ERR(dev_opts->triplet.plat_index = strtoul(value, NULL, 0)) + case 'd': IF_ERR(dev_opts->triplet.dev_index = strtoul(value, NULL, 0)) + case 't': IF_ERR(dev_opts->triplet.dev_type = get_dev_type(value)) } return NotParsed; #undef IF_ERR } -#define PARS_OPTIONS(parser, state) \ -do { \ -if (state == NotParsed) \ - state = parser; \ -if (state == ParseError) { \ - fprintf(stderr, "Parse error\n"); \ - identifier = 'h'; \ - state = ParsedOK; \ -} \ -} while (0) +#define PARS_OPTIONS(parser, state) \ + do \ + { \ + if (state == NotParsed) state = parser; \ + if (state == ParseError) \ + { \ + fprintf(stderr, "Parse error\n"); \ + identifier = 'h'; \ + state = ParsedOK; \ + } \ + } while (0) diff --git a/lib/include/CL/SDK/CLI.hpp b/lib/include/CL/SDK/CLI.hpp index bb844fae..6937c2cf 100644 --- a/lib/include/CL/SDK/CLI.hpp +++ b/lib/include/CL/SDK/CLI.hpp @@ -1,6 +1,7 @@ #pragma once // OpenCL SDK includes +#include "OpenCLSDKCpp_Export.h" #include // OpenCL Utils includes @@ -10,48 +11,45 @@ #include // STL includes -#include // std::shared_ptr, std::make_shared -#include // std::make_tuple -#include // std::vector +#include // std::shared_ptr, std::make_shared +#include // std::make_tuple +#include // std::vector -namespace cl -{ -namespace sdk -{ - template - auto parse(); +namespace cl { +namespace sdk { + template auto parse(); template Option comprehend(Parsers... parsers); -namespace detail -{ - template - auto comprehend_helper(std::tuple parser) - { - return util::detail::apply(comprehend, parser); + namespace detail { + template + auto comprehend_helper(std::tuple parser) + { + return util::detail::apply(comprehend, parser); + } } -} template - std::tuple parse_cli(int argc, char* argv[], std::string banner = "OpenCL SDK sample template") + std::tuple + parse_cli(int argc, char* argv[], + std::string banner = "OpenCL SDK sample template") { TCLAP::CmdLine cli(banner); - auto parsers = std::make_tuple( - std::make_pair(Options{}, parse())... - ); + auto parsers = + std::make_tuple(std::make_pair(Options{}, parse())...); - util::detail::for_each_in_tuple(parsers, [&](auto&& parser){ - util::detail::for_each_in_tuple(parser.second, [&](auto&& arg){ - cli.add(arg.get()); - }); + util::detail::for_each_in_tuple(parsers, [&](auto&& parser) { + util::detail::for_each_in_tuple( + parser.second, [&](auto&& arg) { cli.add(arg.get()); }); }); cli.parse(argc, argv); - return util::detail::transform_tuple(parsers, [](auto&& parser){ - return detail::comprehend_helper>(parser.second); + return util::detail::transform_tuple(parsers, [](auto&& parser) { + return detail::comprehend_helper< + std::remove_reference_t>(parser.second); }); } } @@ -59,69 +57,84 @@ namespace detail // SDK built-in CLI parsers -template <> -auto cl::sdk::parse() +template <> auto cl::sdk::parse() { return std::make_tuple( - std::make_shared("v", "verbose", "Extra informational output", false), - std::make_shared("q", "quiet", "Suppress standard output", false) - ); + std::make_shared("v", "verbose", + "Extra informational output", false), + std::make_shared("q", "quiet", + "Suppress standard output", false)); } template <> cl::sdk::options::Diagnostic cl::sdk::comprehend( std::shared_ptr verbose_arg, std::shared_ptr quiet_arg) { - return options::Diagnostic{ - verbose_arg->getValue(), - quiet_arg->getValue() - }; + return options::Diagnostic{ verbose_arg->getValue(), + quiet_arg->getValue() }; } -template <> -auto cl::sdk::parse() -{ - std::vector valid_dev_strings{ "all", "cpu", "gpu", "acc", "cus", "def" }; - TCLAP::ValuesConstraint valid_dev_constraint{ valid_dev_strings }; +SDKCPP_EXPORT extern std::unique_ptr> + valid_dev_constraint; - return std::make_tuple( - std::make_shared>("p", "platform", "Index of platform to use", false, 0, "positive integral"), - std::make_shared>("d", "device", "Index of device to use", false, 0, "positive integral"), - std::make_shared>( "t", "type","Type of device to use", false, "def", &valid_dev_constraint) - ); +template <> auto cl::sdk::parse() +{ + std::vector valid_dev_strings{ "all", "cpu", "gpu", + "acc", "cus", "def" }; + valid_dev_constraint = + std::make_unique>( + valid_dev_strings); + + return std::make_tuple(std::make_shared>( + "p", "platform", "Index of platform to use", + false, 0, "positive integral"), + std::make_shared>( + "d", "device", "Index of device to use", false, + 0, "positive integral"), + std::make_shared>( + "t", "type", "Type of device to use", false, + "def", valid_dev_constraint.get())); } template <> -cl::sdk::options::SingleDevice cl::sdk::comprehend( +cl::sdk::options::SingleDevice +cl::sdk::comprehend( std::shared_ptr> platform_arg, std::shared_ptr> device_arg, std::shared_ptr> type_arg) { - auto device_type = [](std::string in) -> cl_device_type - { - if (in == "all") return CL_DEVICE_TYPE_ALL; - else if (in == "cpu") return CL_DEVICE_TYPE_CPU; - else if (in == "gpu") return CL_DEVICE_TYPE_GPU; - else if (in == "acc") return CL_DEVICE_TYPE_ACCELERATOR; - else if (in == "cus") return CL_DEVICE_TYPE_CUSTOM; - else if (in == "def") return CL_DEVICE_TYPE_DEFAULT; - else throw std::logic_error{ "Unkown device type after cli parse. Should not have happened." }; + auto device_type = [](std::string in) -> cl_device_type { + if (in == "all") + return CL_DEVICE_TYPE_ALL; + else if (in == "cpu") + return CL_DEVICE_TYPE_CPU; + else if (in == "gpu") + return CL_DEVICE_TYPE_GPU; + else if (in == "acc") + return CL_DEVICE_TYPE_ACCELERATOR; + else if (in == "cus") + return CL_DEVICE_TYPE_CUSTOM; + else if (in == "def") + return CL_DEVICE_TYPE_DEFAULT; + else + throw std::logic_error{ + "Unkown device type after cli parse. Should not have happened." + }; }; - return options::SingleDevice{ - platform_arg->getValue(), - device_arg->getValue(), - device_type(type_arg->getValue()) - }; + return options::SingleDevice{ platform_arg->getValue(), + device_arg->getValue(), + device_type(type_arg->getValue()) }; } -template <> -auto cl::sdk::parse() +template <> auto cl::sdk::parse() { return std::make_tuple( - std::make_shared>("x", "width", "Width of window", false, 800, "positive integral"), - std::make_shared>("y", "height", "Height of window", false, 800, "positive integral"), - std::make_shared("f", "fullscreen", "Fullscreen window", false) - ); + std::make_shared>("x", "width", "Width of window", + false, 800, "positive integral"), + std::make_shared>( + "y", "height", "Height of window", false, 800, "positive integral"), + std::make_shared("f", "fullscreen", + "Fullscreen window", false)); } template <> cl::sdk::options::Window cl::sdk::comprehend( @@ -129,9 +142,6 @@ cl::sdk::options::Window cl::sdk::comprehend( std::shared_ptr> height_arg, std::shared_ptr fullscreen_arg) { - return options::Window{ - width_arg->getValue(), - height_arg->getValue(), - fullscreen_arg->getValue() - }; + return options::Window{ width_arg->getValue(), height_arg->getValue(), + fullscreen_arg->getValue() }; } diff --git a/lib/include/CL/SDK/Context.h b/lib/include/CL/SDK/Context.h index 56f77503..127c724b 100644 --- a/lib/include/CL/SDK/Context.h +++ b/lib/include/CL/SDK/Context.h @@ -10,9 +10,11 @@ #include SDK_EXPORT -cl_context cl_sdk_get_context_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, - cl_int * const error); +cl_context cl_sdk_get_context_by_triplet( + const struct cl_sdk_options_DeviceTriplet* const triplet, + cl_int* const error); SDK_EXPORT -cl_device_id cl_sdk_get_device_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, - cl_int * const error); +cl_device_id cl_sdk_get_device_by_triplet( + const struct cl_sdk_options_DeviceTriplet* const triplet, + cl_int* const error); diff --git a/lib/include/CL/SDK/Context.hpp b/lib/include/CL/SDK/Context.hpp index 2da19083..7cf1e8b3 100644 --- a/lib/include/CL/SDK/Context.hpp +++ b/lib/include/CL/SDK/Context.hpp @@ -4,20 +4,15 @@ #include #include -namespace cl -{ -namespace sdk -{ - Context get_context(options::DeviceTriplet triplet, cl_int* error = nullptr); +namespace cl { +namespace sdk { + Context get_context(options::DeviceTriplet triplet, + cl_int* error = nullptr); } } cl::Context cl::sdk::get_context(options::DeviceTriplet triplet, cl_int* error) { - return cl::util::get_context( - triplet.plat_index, - triplet.dev_index, - triplet.dev_type, - error - ); + return cl::util::get_context(triplet.plat_index, triplet.dev_index, + triplet.dev_type, error); } \ No newline at end of file diff --git a/lib/include/CL/SDK/Image.h b/lib/include/CL/SDK/Image.h index 32ac6320..5aa65c8e 100644 --- a/lib/include/CL/SDK/Image.h +++ b/lib/include/CL/SDK/Image.h @@ -10,11 +10,10 @@ typedef struct cl_sdk_image { int width, height, pixel_size; unsigned char* pixels; -} -cl_sdk_image; +} cl_sdk_image; SDK_EXPORT -cl_sdk_image cl_sdk_read_image(const char * file_name, cl_int * err); +cl_sdk_image cl_sdk_read_image(const char* file_name, cl_int* err); SDK_EXPORT -cl_int cl_sdk_write_image(const char * file_name, const cl_sdk_image * im); +cl_int cl_sdk_write_image(const char* file_name, const cl_sdk_image* im); diff --git a/lib/include/CL/SDK/Image.hpp b/lib/include/CL/SDK/Image.hpp index 53b964b2..1da5dc01 100644 --- a/lib/include/CL/SDK/Image.hpp +++ b/lib/include/CL/SDK/Image.hpp @@ -6,10 +6,8 @@ // OpenCL includes #include -namespace cl -{ -namespace sdk -{ +namespace cl { +namespace sdk { struct Image { int width, height, pixel_size; diff --git a/lib/include/CL/SDK/InteropContext.hpp b/lib/include/CL/SDK/InteropContext.hpp index 2689eb41..01d751ba 100644 --- a/lib/include/CL/SDK/InteropContext.hpp +++ b/lib/include/CL/SDK/InteropContext.hpp @@ -6,12 +6,14 @@ // OpenCL includes #include -namespace cl -{ -namespace sdk -{ - vector SDKCPP_EXPORT get_interop_context_properties(const cl::Device& plat); +namespace cl { +namespace sdk { + vector + SDKCPP_EXPORT get_interop_context_properties(const cl::Device& plat, + cl_int* error = nullptr); - Context SDKCPP_EXPORT get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error = nullptr); + Context SDKCPP_EXPORT get_interop_context(cl_uint plat_id, cl_uint dev_id, + cl_device_type type, + cl_int* error = nullptr); } } diff --git a/lib/include/CL/SDK/InteropWindow.hpp b/lib/include/CL/SDK/InteropWindow.hpp index beaf5ba7..98ba44f7 100644 --- a/lib/include/CL/SDK/InteropWindow.hpp +++ b/lib/include/CL/SDK/InteropWindow.hpp @@ -13,32 +13,31 @@ #include #include -namespace cl -{ -namespace sdk -{ - class SDKCPP_EXPORT InteropWindow : public sf::Window - { +namespace cl { +namespace sdk { + class SDKCPP_EXPORT InteropWindow : public sf::Window { public: explicit InteropWindow( - sf::VideoMode mode, - const sf::String& title, + sf::VideoMode mode, const sf::String& title, sf::Uint32 style = sf::Style::Default, const sf::ContextSettings& settings = sf::ContextSettings{}, - cl_uint platform_id = 0, - cl_uint device_id = 0, - cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT - ); + cl_uint platform_id = 0, cl_uint device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT); void run(); protected: // Core functionality to be overriden - virtual void initializeGL() = 0; // Function that initializes all OpenGL assets needed to draw a scene - virtual void initializeCL() = 0; // Function that initializes all OpenCL assets needed to draw a scene - virtual void updateScene() = 0; // Function that holds scene update guaranteed not to conflict with drawing - virtual void render() = 0; // Function that does the native rendering - virtual void event(const sf::Event& e) = 0; // Function that handles render area resize + virtual void initializeGL() = 0; // Function that initializes all OpenGL + // assets needed to draw a scene + virtual void initializeCL() = 0; // Function that initializes all OpenCL + // assets needed to draw a scene + virtual void + updateScene() = 0; // Function that holds scene update guaranteed not to + // conflict with drawing + virtual void render() = 0; // Function that does the native rendering + virtual void event( + const sf::Event& e) = 0; // Function that handles render area resize cl::Context opencl_context; bool cl_khr_gl_event_supported; diff --git a/lib/include/CL/SDK/OpenCLSDK_Config.in.h b/lib/include/CL/SDK/OpenCLSDK_Config.in.h new file mode 100644 index 00000000..c358b41b --- /dev/null +++ b/lib/include/CL/SDK/OpenCLSDK_Config.in.h @@ -0,0 +1,3 @@ +#pragma once + +#cmakedefine OPENCL_SDK_BUILD_OPENGL_SAMPLES diff --git a/lib/include/CL/SDK/Options.h b/lib/include/CL/SDK/Options.h index 476d8f5f..6f381b25 100644 --- a/lib/include/CL/SDK/Options.h +++ b/lib/include/CL/SDK/Options.h @@ -26,6 +26,6 @@ struct cl_sdk_options_SingleDevice struct cl_sdk_options_MultiDevice { - struct cl_sdk_options_DeviceTriplet * triplets; + struct cl_sdk_options_DeviceTriplet* triplets; size_t number; }; diff --git a/lib/include/CL/SDK/Options.hpp b/lib/include/CL/SDK/Options.hpp index 736e9bb8..116ea0d0 100644 --- a/lib/include/CL/SDK/Options.hpp +++ b/lib/include/CL/SDK/Options.hpp @@ -3,37 +3,33 @@ // OpenCL includes #include -namespace cl -{ -namespace sdk -{ -namespace options -{ - struct DeviceTriplet - { - cl_uint plat_index; - cl_uint dev_index; - cl_device_type dev_type; - }; - struct Diagnostic - { - bool verbose, - quiet; - }; - struct SingleDevice - { - DeviceTriplet triplet; - }; - struct MultiDevice - { - cl::vector triplets; - }; - struct Window - { - int width; - int height; - bool fullscreen; - }; -} +namespace cl { +namespace sdk { + namespace options { + struct DeviceTriplet + { + cl_uint plat_index; + cl_uint dev_index; + cl_device_type dev_type; + }; + struct Diagnostic + { + bool verbose, quiet; + }; + struct SingleDevice + { + DeviceTriplet triplet; + }; + struct MultiDevice + { + cl::vector triplets; + }; + struct Window + { + int width; + int height; + bool fullscreen; + }; + } } } diff --git a/lib/include/CL/SDK/Random.h b/lib/include/CL/SDK/Random.h index c7162ddd..89783f6a 100644 --- a/lib/include/CL/SDK/Random.h +++ b/lib/include/CL/SDK/Random.h @@ -1,9 +1,9 @@ #pragma once // STL includes -#include // uint64_t, uint32_t -#include // bool -#include // ldexpf +#include // uint64_t, uint32_t +#include // bool +#include // ldexpf /* * PCG Random Number Generation for C. @@ -31,13 +31,17 @@ // *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org // Licensed under Apache License 2.0 (NO WARRANTY, etc. see website) -typedef struct { uint64_t state; uint64_t inc; } pcg32_random_t; +typedef struct +{ + uint64_t state; + uint64_t inc; +} pcg32_random_t; // pcg32_random() // pcg32_random_r(rng) // Generate a uniformly distributed 32-bit random number -uint32_t pcg32_random_r(pcg32_random_t * rng) +uint32_t pcg32_random_r(pcg32_random_t* rng) { uint64_t oldstate = rng->state; // Advance internal state @@ -45,17 +49,18 @@ uint32_t pcg32_random_r(pcg32_random_t * rng) // Calculate output function (XSH RR), uses old state for max ILP uint32_t xorshifted = (uint32_t)(((oldstate >> 18u) ^ oldstate) >> 27u); uint32_t rot = oldstate >> 59u; - return (xorshifted >> rot) | (xorshifted << ((0-rot) & 31)); + return (xorshifted >> rot) | (xorshifted << ((0 - rot) & 31)); } // give almost uniformly distributed random float in [0, 1) -cl_float pcg32_random_float(pcg32_random_t * rng) +cl_float pcg32_random_float(pcg32_random_t* rng) { return ldexpf((float)pcg32_random_r(rng), -32); } // give almost uniformly distributed random float in [low, high) -cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float hi) +cl_float pcg32_random_float_range(pcg32_random_t* rng, cl_float low, + cl_float hi) { return ldexpf((float)pcg32_random_r(rng), -32) * (hi - low) + low; } @@ -65,7 +70,7 @@ cl_float pcg32_random_float_range(pcg32_random_t * rng, cl_float low, cl_float h // Seed the rng. Specified in two parts, state initializer and a // sequence selection constant (a.k.a. stream id) -void pcg32_srandom_r(pcg32_random_t * rng, uint64_t initstate, uint64_t initseq) +void pcg32_srandom_r(pcg32_random_t* rng, uint64_t initstate, uint64_t initseq) { rng->state = 0U; rng->inc = (initseq << 1u) | 1u; @@ -75,14 +80,16 @@ void pcg32_srandom_r(pcg32_random_t * rng, uint64_t initstate, uint64_t initseq) } // fill array with random floats in [0, 1) -void cl_sdk_fill_with_random_floats(pcg32_random_t * rng, cl_float * arr, const size_t len) +void cl_sdk_fill_with_random_floats(pcg32_random_t* rng, cl_float* arr, + const size_t len) { for (size_t index = 0; index < len; ++index) arr[index] = pcg32_random_float(rng); } -void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, - cl_float * arr, const size_t len, const cl_float low, const cl_float hi) +void cl_sdk_fill_with_random_floats_range(pcg32_random_t* rng, cl_float* arr, + const size_t len, const cl_float low, + const cl_float hi) { cl_float diff = hi - low; for (size_t index = 0; index < len; ++index) @@ -91,22 +98,24 @@ void cl_sdk_fill_with_random_floats_range(pcg32_random_t * rng, // return uniformly distributed numbers in the range [low, hi] // use rejection sampling from uniform bit distribution -void cl_sdk_fill_with_random_ints_range(pcg32_random_t * rng, - cl_int * arr, const size_t len, const cl_int low, const cl_int hi) +void cl_sdk_fill_with_random_ints_range(pcg32_random_t* rng, cl_int* arr, + const size_t len, const cl_int low, + const cl_int hi) { - const uint32_t - diff = hi - low, - bits_of_uint32_t = 32, - bits_needed = diff ? (uint32_t)log2(diff) + 1 : 1, - mask = diff ? (1u << bits_needed) - 1 : 0; - for (size_t index = 0; index < len; ++index) { + const uint32_t diff = hi - low, bits_of_uint32_t = 32, + bits_needed = diff ? (uint32_t)log2(diff) + 1 : 1, + mask = diff ? (1u << bits_needed) - 1 : 0; + for (size_t index = 0; index < len; ++index) + { uint32_t res; bool reject = true; - do { + do + { res = pcg32_random_r(rng); // get 32 random bits // and take enough of them to cover [0..diff] range for (uint32_t i = 0; i < bits_of_uint32_t / bits_needed; ++i) - if ((res & mask) <= diff) { // no rejection + if ((res & mask) <= diff) + { // no rejection res &= mask; // take this number reject = false; break; diff --git a/lib/include/CL/SDK/Random.hpp b/lib/include/CL/SDK/Random.hpp index 5e162188..93bead88 100644 --- a/lib/include/CL/SDK/Random.hpp +++ b/lib/include/CL/SDK/Random.hpp @@ -1,24 +1,23 @@ #pragma once // OpenCL SDK includes -#include // cl::util::detail::for_each_arg +#include // cl::util::detail::for_each_arg // STL includes -#include // std::generate_n -#include // std::begin +#include // std::generate_n +#include // std::begin #include -namespace cl -{ -namespace sdk -{ +namespace cl { +namespace sdk { template void fill_with_random(PRNG&& prng, Containers&&... containers) { - util::detail::for_each_arg([&](auto&& container) - { - std::generate_n(std::begin(container), container.size(), prng); - }, containers...); + util::detail::for_each_arg( + [&](auto&& container) { + std::generate_n(std::begin(container), container.size(), prng); + }, + containers...); } } } diff --git a/lib/include/CL/SDK/SDK.hpp b/lib/include/CL/SDK/SDK.hpp index 82a6b113..36d1b525 100644 --- a/lib/include/CL/SDK/SDK.hpp +++ b/lib/include/CL/SDK/SDK.hpp @@ -2,11 +2,14 @@ // OpenCL SDK includes #include "OpenCLSDK_Export.h" +#include "OpenCLSDK_Config.h" #include #include +#ifdef OPENCL_SDK_BUILD_OPENGL_SAMPLES #include #include +#endif // OpenCL includes #include diff --git a/lib/include/CL/Utils/Context.h b/lib/include/CL/Utils/Context.h index ffd7d2f0..cebb8b9e 100644 --- a/lib/include/CL/Utils/Context.h +++ b/lib/include/CL/Utils/Context.h @@ -10,32 +10,41 @@ #include UTILS_EXPORT -cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error); +cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, + const cl_device_type type, cl_int* const error); UTILS_EXPORT -cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error); +cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, + const cl_device_type type, cl_int* const error); UTILS_EXPORT cl_int cl_util_print_device_info(const cl_device_id device); UTILS_EXPORT -char * cl_util_get_device_info(const cl_device_id device, const cl_device_info info, cl_int * const error); +char* cl_util_get_device_info(const cl_device_id device, + const cl_device_info info, cl_int* const error); UTILS_EXPORT -char * cl_util_get_platform_info(const cl_platform_id platform, const cl_platform_info info, cl_int * const error); +char* cl_util_get_platform_info(const cl_platform_id platform, + const cl_platform_info info, + cl_int* const error); // build program and show log if build is not successful UTILS_EXPORT -cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt); - -#define GET_CURRENT_TIMER(time) \ -struct timespec time; \ -timespec_get(&time, TIME_UTC); {} - -#define TIMER_DIFFERENCE(dt, time1, time2) \ -{ \ - dt = (time2.tv_sec - time1.tv_sec) * 1000000000 \ - + (time2.tv_nsec - time1.tv_nsec); \ -} - -#define START_TIMER GET_CURRENT_TIMER(start_timer1) -#define STOP_TIMER(dt) GET_CURRENT_TIMER(stop_timer2) \ -TIMER_DIFFERENCE(dt, start_timer1, stop_timer2) +cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, + const char* const opt); + +#define GET_CURRENT_TIMER(time) \ + struct timespec time; \ + timespec_get(&time, TIME_UTC); \ + { \ + } + +#define TIMER_DIFFERENCE(dt, time1, time2) \ + { \ + dt = (time2.tv_sec - time1.tv_sec) * 1000000000 \ + + (time2.tv_nsec - time1.tv_nsec); \ + } + +#define START_TIMER GET_CURRENT_TIMER(start_timer1) +#define STOP_TIMER(dt) \ + GET_CURRENT_TIMER(stop_timer2) \ + TIMER_DIFFERENCE(dt, start_timer1, stop_timer2) diff --git a/lib/include/CL/Utils/Context.hpp b/lib/include/CL/Utils/Context.hpp index 9a8ebaa2..bd1110c3 100644 --- a/lib/include/CL/Utils/Context.hpp +++ b/lib/include/CL/Utils/Context.hpp @@ -8,10 +8,10 @@ // OpenCL includes #include -namespace cl -{ -namespace util -{ - Context UTILSCPP_EXPORT get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error = nullptr); +namespace cl { +namespace util { + Context UTILSCPP_EXPORT get_context(cl_uint plat_id, cl_uint dev_id, + cl_device_type type, + cl_int* error = nullptr); } } diff --git a/lib/include/CL/Utils/Detail.hpp b/lib/include/CL/Utils/Detail.hpp index facd6b86..49cccd02 100644 --- a/lib/include/CL/Utils/Detail.hpp +++ b/lib/include/CL/Utils/Detail.hpp @@ -2,76 +2,83 @@ // STL includes #include -#include // std::forward, std::integer_sequence -#include // std::tuple, std::get +#include // std::forward, std::integer_sequence +#include // std::tuple, std::get #include // std::initializer_list -namespace cl -{ -namespace util -{ -namespace detail -{ - // Borrowed from: https://www.fluentcpp.com/2019/03/05/for_each_arg-applying-a-function-to-each-argument-of-a-function-in-cpp/ - template - F for_each_arg(F f, Args&&...args) - { - (void)std::initializer_list{((void)f(std::forward(args)), 0)...}; - return f; - } +namespace cl { +namespace util { + namespace detail { + // Borrowed from: + // https://www.fluentcpp.com/2019/03/05/for_each_arg-applying-a-function-to-each-argument-of-a-function-in-cpp/ + template F for_each_arg(F f, Args&&... args) + { + (void)std::initializer_list{ ( + (void)f(std::forward(args)), 0)... }; + return f; + } -namespace impl -{ - // Borrowed from: https://stackoverflow.com/a/16387374/1476661 - template - void - for_each_in_tuple(T&& t, F&& f, std::integer_sequence) - { - auto l = { (std::forward(f)(std::get(std::forward(t))), 0)... }; (void)l; - } -} - template - void - for_each_in_tuple(std::tuple const& t, F&& f) - { - impl::for_each_in_tuple(t, std::forward(f), std::make_integer_sequence()); - } + namespace impl { + // Borrowed from: https://stackoverflow.com/a/16387374/1476661 + template + void for_each_in_tuple(T&& t, F&& f, + std::integer_sequence) + { + auto l = { + (std::forward(f)(std::get(std::forward(t))), 0)... + }; + (void)l; + } + } + template + void for_each_in_tuple(std::tuple const& t, F&& f) + { + impl::for_each_in_tuple( + t, std::forward(f), + std::make_integer_sequence()); + } -namespace impl -{ - // Borrowed from https://codereview.stackexchange.com/questions/193420/apply-a-function-to-each-element-of-a-tuple-map-a-tuple - template - auto transform_tuple(Tuple&& t, F&& f, std::index_sequence) { - return std::make_tuple( - std::forward(f)(std::get(t))... - ); - } -} - template - auto transform_tuple(const std::tuple& t, F&& f) { - return impl::transform_tuple( - t, std::forward(f), std::make_index_sequence{}); - } + namespace impl { + // Borrowed from + // https://codereview.stackexchange.com/questions/193420/apply-a-function-to-each-element-of-a-tuple-map-a-tuple + template + auto transform_tuple(Tuple&& t, F&& f, std::index_sequence) + { + return std::make_tuple(std::forward(f)(std::get(t))...); + } + } + template + auto transform_tuple(const std::tuple& t, F&& f) + { + return impl::transform_tuple( + t, std::forward(f), + std::make_index_sequence{}); + } -namespace impl -{ - // Borrowed from http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html - // with modifications of Casey Carter at https://stackoverflow.com/a/51365112/1476661 - template - auto apply(F&& f, Tuple&& args, std::index_sequence) - -> decltype(std::forward(f)(std::get(std::forward(args))...)) - { - return std::forward(f)(std::get(std::forward(args))...); + namespace impl { + // Borrowed from + // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html + // with modifications of Casey Carter at + // https://stackoverflow.com/a/51365112/1476661 + template + auto apply(F&& f, Tuple&& args, std::index_sequence) + -> decltype(std::forward(f)( + std::get(std::forward(args))...)) + { + return std::forward(f)( + std::get(std::forward(args))...); + } + } + template >::value>> + auto apply(F&& f, Tuple&& args) + -> decltype(impl::apply(std::forward(f), + std::forward(args), Indices())) + { + return impl::apply(std::forward(f), std::forward(args), + Indices()); + } } -} - template>::value>> - auto apply(F&& f, Tuple&& args) - -> decltype(impl::apply(std::forward(f), std::forward(args), Indices())) - { - return impl::apply(std::forward(f), std::forward(args), Indices()); - } -} } } diff --git a/lib/include/CL/Utils/Device.hpp b/lib/include/CL/Utils/Device.hpp index d9c7309d..0a8aed8b 100644 --- a/lib/include/CL/Utils/Device.hpp +++ b/lib/include/CL/Utils/Device.hpp @@ -5,16 +5,17 @@ #include -namespace cl -{ -namespace util -{ - bool UTILSCPP_EXPORT opencl_c_version_contains(const cl::Device& device, const cl::string& version_fragment); +namespace cl { +namespace util { + bool UTILSCPP_EXPORT opencl_c_version_contains( + const cl::Device& device, const cl::string& version_fragment); - bool UTILSCPP_EXPORT supports_extension(const cl::Device& device, const cl::string& extension); + bool UTILSCPP_EXPORT supports_extension(const cl::Device& device, + const cl::string& extension); #ifdef CL_VERSION_3_0 - bool UTILSCPP_EXPORT supports_feature(const cl::Device& device, const cl::string& feature_name); + bool UTILSCPP_EXPORT supports_feature(const cl::Device& device, + const cl::string& feature_name); #endif } } diff --git a/lib/include/CL/Utils/Error.h b/lib/include/CL/Utils/Error.h index c6c282cf..bf6e24bf 100644 --- a/lib/include/CL/Utils/Error.h +++ b/lib/include/CL/Utils/Error.h @@ -7,7 +7,7 @@ #include // STL includes -#include // fprintf +#include // fprintf // OpenCL includes #include @@ -17,25 +17,70 @@ #ifdef _DEBUG -#define OCLERROR_RET(func, err, label) \ -do { err = func; if (err != CL_SUCCESS) { cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +#define OCLERROR_RET(func, err, label) \ + do \ + { \ + err = func; \ + if (err != CL_SUCCESS) \ + { \ + cl_util_print_error(err); \ + fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, \ + __FILE__, #func); \ + goto label; \ + } \ + } while (0) -#define OCLERROR_PAR(func, err, label) \ -do { func; if (err != CL_SUCCESS) { cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +#define OCLERROR_PAR(func, err, label) \ + do \ + { \ + func; \ + if (err != CL_SUCCESS) \ + { \ + cl_util_print_error(err); \ + fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, \ + __FILE__, #func); \ + goto label; \ + } \ + } while (0) -#define MEM_CHECK(func, err, label) \ -do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; cl_util_print_error(err); fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, __FILE__, #func); goto label;} } while (0) +#define MEM_CHECK(func, err, label) \ + do \ + { \ + if ((func) == NULL) \ + { \ + err = CL_OUT_OF_HOST_MEMORY; \ + cl_util_print_error(err); \ + fprintf(stderr, "on line %d, in file %s\n%s\n", __LINE__, \ + __FILE__, #func); \ + goto label; \ + } \ + } while (0) #else -#define OCLERROR_RET(func, err, label) \ -do { err = func; if (err != CL_SUCCESS) goto label; } while (0) +#define OCLERROR_RET(func, err, label) \ + do \ + { \ + err = func; \ + if (err != CL_SUCCESS) goto label; \ + } while (0) -#define OCLERROR_PAR(func, err, label) \ -do { func; if (err != CL_SUCCESS) goto label; } while (0) +#define OCLERROR_PAR(func, err, label) \ + do \ + { \ + func; \ + if (err != CL_SUCCESS) goto label; \ + } while (0) -#define MEM_CHECK(func, err, label) \ -do { if ((func) == NULL) {err = CL_OUT_OF_HOST_MEMORY; goto label;} } while (0) +#define MEM_CHECK(func, err, label) \ + do \ + { \ + if ((func) == NULL) \ + { \ + err = CL_OUT_OF_HOST_MEMORY; \ + goto label; \ + } \ + } while (0) #endif diff --git a/lib/include/CL/Utils/Error.hpp b/lib/include/CL/Utils/Error.hpp index 2acd03ab..83bb1a13 100644 --- a/lib/include/CL/Utils/Error.hpp +++ b/lib/include/CL/Utils/Error.hpp @@ -9,20 +9,19 @@ // OpenCL includes #include -namespace cl -{ -namespace util -{ +namespace cl { +namespace util { #if defined(CL_HPP_ENABLE_EXCEPTIONS) /*! \brief Exception class * - * This may be thrown by SDK utility functions when CL_HPP_ENABLE_EXCEPTIONS is defined. + * This may be thrown by SDK utility functions when + * CL_HPP_ENABLE_EXCEPTIONS is defined. */ - class Error : public std::exception - { + class Error : public std::exception { private: int err_; - const char * errStr_; + const char* errStr_; + public: /*! \brief Create a new SDK error exception for a given error code * and corresponding message. @@ -33,7 +32,7 @@ namespace util * handling of the exception has concluded. If set, it * will be returned by what(). */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) + Error(cl_int err, const char* errStr = NULL): err_(err), errStr_(errStr) {} ~Error() throw() {} @@ -42,12 +41,14 @@ namespace util * * \return A memory pointer to the error message string. */ - virtual const char * what() const throw () + virtual const char* what() const throw() { - if (errStr_ == NULL) { + if (errStr_ == NULL) + { return "empty"; } - else { + else + { return errStr_; } } @@ -60,10 +61,10 @@ namespace util }; #endif -namespace detail -{ - UTILS_EXPORT cl_int errHandler(cl_int err, cl_int* errPtr, const char* errStr = nullptr); -} + namespace detail { + UTILS_EXPORT cl_int errHandler(cl_int err, cl_int* errPtr, + const char* errStr = nullptr); + } } } diff --git a/lib/include/CL/Utils/Event.h b/lib/include/CL/Utils/Event.h index c7faaf37..f144e215 100644 --- a/lib/include/CL/Utils/Event.h +++ b/lib/include/CL/Utils/Event.h @@ -7,5 +7,7 @@ #include UTILS_EXPORT -cl_ulong cl_util_get_event_duration(const cl_event event, const cl_profiling_info start, const cl_profiling_info end, - cl_int * const error); \ No newline at end of file +cl_ulong cl_util_get_event_duration(const cl_event event, + const cl_profiling_info start, + const cl_profiling_info end, + cl_int* const error); \ No newline at end of file diff --git a/lib/include/CL/Utils/Event.hpp b/lib/include/CL/Utils/Event.hpp index bcfa8788..e5a6577e 100644 --- a/lib/include/CL/Utils/Event.hpp +++ b/lib/include/CL/Utils/Event.hpp @@ -9,14 +9,13 @@ // OpenCL includes #include -namespace cl -{ -namespace util -{ +namespace cl { +namespace util { template auto get_duration(cl::Event& ev) { - return std::chrono::duration_cast(std::chrono::nanoseconds{ ev.getProfilingInfo() - ev.getProfilingInfo() }); + return std::chrono::duration_cast(std::chrono::nanoseconds{ + ev.getProfilingInfo() - ev.getProfilingInfo() }); } } } diff --git a/lib/include/CL/Utils/File.h b/lib/include/CL/Utils/File.h index 26e219de..62c8e95a 100644 --- a/lib/include/CL/Utils/File.h +++ b/lib/include/CL/Utils/File.h @@ -11,24 +11,32 @@ // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -char * cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error); +char* cl_util_read_text_file(const char* const filename, size_t* const length, + cl_int* const error); // read all the binary file contents securely in ANSI C89 // return pointer to file contents // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -unsigned char * cl_util_read_binary_file(const char * const filename, size_t * const length, cl_int * const error); +unsigned char* cl_util_read_binary_file(const char* const filename, + size_t* const length, + cl_int* const error); // write binaries of OpenCL compiled program // binaries are written as separate files for each device // with file name "(program_file_name)_(name of device).bin" -// based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ +// based on variant of Logan +// http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ UTILS_EXPORT -cl_int cl_util_write_binaries(const cl_program program, const char * const program_file_name); +cl_int cl_util_write_binaries(const cl_program program, + const char* const program_file_name); // read binaries of OpenCL compiled program // from files of file names "(program_file_name)_(name of device).bin" UTILS_EXPORT -cl_program cl_util_read_binaries(const cl_context context, const cl_device_id * const devices, const cl_uint num_devices, - const char * const program_file_name, cl_int * const error); +cl_program cl_util_read_binaries(const cl_context context, + const cl_device_id* const devices, + const cl_uint num_devices, + const char* const program_file_name, + cl_int* const error); diff --git a/lib/include/CL/Utils/File.hpp b/lib/include/CL/Utils/File.hpp index 8d17a9d7..984a3238 100644 --- a/lib/include/CL/Utils/File.hpp +++ b/lib/include/CL/Utils/File.hpp @@ -7,21 +7,20 @@ #include #include -namespace cl -{ -namespace util -{ +namespace cl { +namespace util { // Scott Meyers, Effective STL, Addison-Wesley Professional, 2001, Item 29 // with error handling UTILSCPP_EXPORT - std::string read_text_file(const char * const filename, cl_int * const error) + std::string read_text_file(const char* const filename, cl_int* const error) { std::ifstream in(filename); if (in.good()) { try { - std::string red((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + std::string red((std::istreambuf_iterator(in)), + std::istreambuf_iterator()); if (in.good() && in.eof()) { if (error != nullptr) *error = CL_SUCCESS; @@ -29,13 +28,14 @@ namespace util } else { - detail::errHandler(CL_UTIL_FILE_OPERATION_ERROR, error, "File read error!"); + detail::errHandler(CL_UTIL_FILE_OPERATION_ERROR, error, + "File read error!"); return std::string(); } - } - catch (std::bad_alloc& ex) + } catch (std::bad_alloc& ex) { - detail::errHandler(CL_OUT_OF_RESOURCES, error, "Bad allocation!"); + detail::errHandler(CL_OUT_OF_RESOURCES, error, + "Bad allocation!"); return std::string(); } } diff --git a/lib/include/CL/Utils/InteropContext.hpp b/lib/include/CL/Utils/InteropContext.hpp new file mode 100644 index 00000000..2d8fdbfd --- /dev/null +++ b/lib/include/CL/Utils/InteropContext.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "OpenCLUtilsCpp_Export.h" +#include + +#include + +namespace cl { +namespace util { + vector + UTILSCPP_EXPORT get_interop_context_properties(const cl::Device& plat, + cl_int* error = nullptr); + + Context UTILSCPP_EXPORT get_interop_context(int plat_id, int dev_id, + cl_device_type type, + cl_int* error = nullptr); +} +} diff --git a/lib/include/CL/Utils/Platform.hpp b/lib/include/CL/Utils/Platform.hpp index cc549806..9957d76b 100644 --- a/lib/include/CL/Utils/Platform.hpp +++ b/lib/include/CL/Utils/Platform.hpp @@ -5,12 +5,12 @@ #include -namespace cl -{ -namespace util -{ - bool UTILSCPP_EXPORT supports_extension(const cl::Platform& platform, const cl::string& extension); +namespace cl { +namespace util { + bool UTILSCPP_EXPORT supports_extension(const cl::Platform& platform, + const cl::string& extension); - bool UTILSCPP_EXPORT platform_version_contains(const cl::Platform& platform, const cl::string& version_fragment); + bool UTILSCPP_EXPORT platform_version_contains( + const cl::Platform& platform, const cl::string& version_fragment); } } diff --git a/lib/src/SDK/CLI.cpp b/lib/src/SDK/CLI.cpp new file mode 100644 index 00000000..a53a5e17 --- /dev/null +++ b/lib/src/SDK/CLI.cpp @@ -0,0 +1,5 @@ +// OpenCL SDK includes +#include + +SDKCPP_EXPORT std::unique_ptr> + valid_dev_constraint; diff --git a/lib/src/SDK/Context.c b/lib/src/SDK/Context.c index bdde9a4c..b18625e1 100644 --- a/lib/src/SDK/Context.c +++ b/lib/src/SDK/Context.c @@ -5,17 +5,21 @@ #include // STL includes -#include // malloc, free -#include // printf +#include // malloc, free +#include // printf -cl_context cl_sdk_get_context_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, - cl_int * const error) +cl_context cl_sdk_get_context_by_triplet( + const struct cl_sdk_options_DeviceTriplet* const triplet, + cl_int* const error) { - return cl_util_get_context(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); + return cl_util_get_context(triplet->plat_index, triplet->dev_index, + triplet->dev_type, error); } -cl_device_id cl_sdk_get_device_by_triplet(const struct cl_sdk_options_DeviceTriplet * const triplet, - cl_int * const error) +cl_device_id cl_sdk_get_device_by_triplet( + const struct cl_sdk_options_DeviceTriplet* const triplet, + cl_int* const error) { - return cl_util_get_device(triplet->plat_index, triplet->dev_index, triplet->dev_type, error); + return cl_util_get_device(triplet->plat_index, triplet->dev_index, + triplet->dev_type, error); } diff --git a/lib/src/SDK/Image.c b/lib/src/SDK/Image.c index 74aa57c4..cc5459ff 100644 --- a/lib/src/SDK/Image.c +++ b/lib/src/SDK/Image.c @@ -5,8 +5,8 @@ #include // STL includes -#include // fprintf -#include // tolower +#include // fprintf +#include // tolower // stb includes #define STB_IMAGE_IMPLEMENTATION @@ -17,16 +17,19 @@ // OpenCL includes #include -cl_sdk_image cl_sdk_read_image(const char * const file_name, cl_int * const error) +cl_sdk_image cl_sdk_read_image(const char* const file_name, cl_int* const error) { cl_int err = CL_SUCCESS; - cl_sdk_image im = { .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL }; + cl_sdk_image im = { + .width = 0, .height = 0, .pixel_size = 1, .pixels = NULL + }; im.pixels = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); if (im.width && im.height && im.pixel_size && im.pixels) err = CL_SUCCESS; - else { + else + { fprintf(stderr, "File read error!"); err = CL_INVALID_ARG_VALUE; } @@ -35,33 +38,48 @@ cl_sdk_image cl_sdk_read_image(const char * const file_name, cl_int * const erro return im; } -static char * to_lowercase(const char * const s, char * const d, const size_t n) +static char* to_lowercase(const char* const s, char* const d, const size_t n) { - for (size_t i = 0; i < n; ++i) - d[i] = tolower(s[i]); + for (size_t i = 0; i < n; ++i) d[i] = tolower(s[i]); return d; } -cl_int cl_sdk_write_image(const char * const file_name, const cl_sdk_image * const im) +cl_int cl_sdk_write_image(const char* const file_name, + const cl_sdk_image* const im) { cl_int error = CL_SUCCESS; - char fext[5] = {0, 0, 0, 0, 0}; + char fext[5] = { 0, 0, 0, 0, 0 }; -#define IF_EXT(ext, func, err_text) \ - if (!strcmp(to_lowercase(file_name + strlen(file_name) - 4, fext, 4), ext)) { \ - if (!func) { \ - fprintf(stderr, err_text); \ - error = CL_INVALID_ARG_VALUE; \ - } \ - } \ +#define IF_EXT(ext, func, err_text) \ + if (!strcmp(to_lowercase(file_name + strlen(file_name) - 4, fext, 4), \ + ext)) \ + { \ + if (!func) \ + { \ + fprintf(stderr, err_text); \ + error = CL_INVALID_ARG_VALUE; \ + } \ + } - IF_EXT(".png", stbi_write_png(file_name, im->width, im->height, im->pixel_size, im->pixels, 0), - "Not possible to write PNG file!\n") - else IF_EXT(".bmp", stbi_write_bmp(file_name, im->width, im->height, im->pixel_size, im->pixels), - "Not possible to write BMP file!\n") - else IF_EXT(".jpg", stbi_write_jpg(file_name, im->width, im->height, im->pixel_size, im->pixels, 80), - "Not possible to write JPG file!\n") - else { + IF_EXT(".png", + stbi_write_png(file_name, im->width, im->height, im->pixel_size, + im->pixels, 0), + "Not possible to write PNG file!\n") + else IF_EXT( + ".bmp", + stbi_write_bmp(file_name, im->width, im->height, im->pixel_size, + im->pixels), + "Not possible to write BMP file!\n") else IF_EXT(".jpg", + stbi_write_jpg( + file_name, + im->width, + im->height, + im->pixel_size, + im->pixels, 80), + "Not possible to " + "write JPG " + "file!\n") else + { fprintf(stderr, "Unknown file extension!\n"); error = CL_IMAGE_FORMAT_NOT_SUPPORTED; } diff --git a/lib/src/SDK/Image.cpp b/lib/src/SDK/Image.cpp index 8f22cd86..c71c6447 100644 --- a/lib/src/SDK/Image.cpp +++ b/lib/src/SDK/Image.cpp @@ -11,7 +11,7 @@ #include // STL includes -#include // std::vector +#include // std::vector #include #if __cplusplus < 201703L @@ -23,28 +23,30 @@ // OpenCL includes #include -namespace cl -{ -namespace sdk -{ - Image read_image(const char* const file_name, cl_int * const error = nullptr) +namespace cl { +namespace sdk { + Image read_image(const char* const file_name, cl_int* const error = nullptr) { cl_int err = CL_SUCCESS; Image im; - unsigned char *data = stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); - im.pixels.insert(im.pixels.end(), data, data + im.width * im.height * im.pixel_size); + unsigned char* data = + stbi_load(file_name, &im.width, &im.height, &im.pixel_size, 0); + im.pixels.insert(im.pixels.end(), data, + data + im.width * im.height * im.pixel_size); - if (im.width && im.height && im.pixel_size && im.pixels.size() == im.width * im.height * im.pixel_size) + if (im.width && im.height && im.pixel_size + && im.pixels.size() == im.width * im.height * im.pixel_size) err = CL_SUCCESS; else - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &err, "File read error!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &err, + "File read error!"); if (error != NULL) *error = err; return im; } - cl_int write_image(const char * file_name, const Image& image) + cl_int write_image(const char* file_name, const Image& image) { cl_int error = CL_SUCCESS; @@ -52,36 +54,44 @@ namespace sdk std::filesystem::path fn(file_name); std::string extension = fn.extension().string(); #else - const char * extpos = strrchr(file_name, '.'); + const char* extpos = strrchr(file_name, '.'); if (extpos == nullptr) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "No file extension!"); + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, + "No file extension!"); std::string extension(extpos); #endif // solution by Timmmm https://stackoverflow.com/questions/11635 - auto str_compare = [](const string& a, const string& b) - { - return std::equal(a.begin(), a.end(), - b.begin(), b.end(), - [](char a, char b) { - return tolower(a) == tolower(b); - }); + auto str_compare = [](const string& a, const string& b) { + return std::equal( + a.begin(), a.end(), b.begin(), b.end(), + [](char a, char b) { return tolower(a) == tolower(b); }); }; - if (str_compare(extension, ".png")) { - if (!stbi_write_png(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 0)) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write PNG file!"); + if (str_compare(extension, ".png")) + { + if (!stbi_write_png(file_name, image.width, image.height, + image.pixel_size, image.pixels.data(), 0)) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, + "Not possible to write PNG file!"); } - else if (str_compare(extension, ".bmp")) { - if (!stbi_write_bmp(file_name, image.width, image.height, image.pixel_size, image.pixels.data())) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write BMP file!"); + else if (str_compare(extension, ".bmp")) + { + if (!stbi_write_bmp(file_name, image.width, image.height, + image.pixel_size, image.pixels.data())) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, + "Not possible to write BMP file!"); } - else if (str_compare(extension, ".jpg")) { - if (!stbi_write_jpg(file_name, image.width, image.height, image.pixel_size, image.pixels.data(), 80)) - cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, "Not possible to write JPG file!"); + else if (str_compare(extension, ".jpg")) + { + if (!stbi_write_jpg(file_name, image.width, image.height, + image.pixel_size, image.pixels.data(), 80)) + cl::util::detail::errHandler(CL_INVALID_ARG_VALUE, &error, + "Not possible to write JPG file!"); } else - cl::util::detail::errHandler(CL_IMAGE_FORMAT_NOT_SUPPORTED, &error, "Unknown file extension!"); + cl::util::detail::errHandler(CL_IMAGE_FORMAT_NOT_SUPPORTED, &error, + "Unknown file extension!"); return error; } diff --git a/lib/src/SDK/InteropContext.cpp b/lib/src/SDK/InteropContext.cpp index c662573d..33e388e7 100644 --- a/lib/src/SDK/InteropContext.cpp +++ b/lib/src/SDK/InteropContext.cpp @@ -1,6 +1,7 @@ // Platform includes // -// Note: gl.h need to be included before glxew.h which will define the glXGetCurrent...() functions. +// Note: gl.h need to be included before glxew.h which will define the +// glXGetCurrent...() functions. #ifdef _WIN32 #define NOMINMAX #include @@ -17,23 +18,31 @@ // OpenCL Utils includes #include -cl::vector cl::sdk::get_interop_context_properties(const cl::Device& device) +cl::vector +cl::sdk::get_interop_context_properties(const cl::Device& device, cl_int*) { return cl::vector{ - CL_CONTEXT_PLATFORM, reinterpret_cast(cl::Platform{ device.getInfo() }()), + CL_CONTEXT_PLATFORM, + reinterpret_cast( + cl::Platform{ device.getInfo() }()), #ifdef _WIN32 - CL_WGL_HDC_KHR, reinterpret_cast(wglGetCurrentDC()), - CL_GL_CONTEXT_KHR, reinterpret_cast(wglGetCurrentContext()), + CL_WGL_HDC_KHR, + reinterpret_cast(wglGetCurrentDC()), + CL_GL_CONTEXT_KHR, + reinterpret_cast(wglGetCurrentContext()), #endif #ifdef __linux__ - CL_GLX_DISPLAY_KHR, reinterpret_cast(glXGetCurrentDisplay()), - CL_GL_CONTEXT_KHR, reinterpret_cast(glXGetCurrentContext()), + CL_GLX_DISPLAY_KHR, + reinterpret_cast(glXGetCurrentDisplay()), + CL_GL_CONTEXT_KHR, + reinterpret_cast(glXGetCurrentContext()), #endif 0 }; } -cl::Context cl::sdk::get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error) +cl::Context cl::sdk::get_interop_context(cl_uint plat_id, cl_uint dev_id, + cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); @@ -50,22 +59,17 @@ cl::Context cl::sdk::get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_dev if (dev_id < devices.size()) { cl_int ctx_err = CL_SUCCESS; - auto props = get_interop_context_properties(devices[dev_id]); + auto props = + get_interop_context_properties(devices[dev_id]); cl::Context context; #if defined(CL_HPP_ENABLE_EXCEPTIONS) try { #endif - context = cl::Context( - devices[dev_id], - props.data(), - nullptr, - nullptr, - &ctx_err - ); + context = cl::Context(devices[dev_id], props.data(), + nullptr, nullptr, &ctx_err); #if defined(CL_HPP_ENABLE_EXCEPTIONS) - } - catch (cl::Error& e) + } catch (cl::Error& e) { ctx_err = e.err(); } @@ -75,32 +79,30 @@ cl::Context cl::sdk::get_interop_context(cl_uint plat_id, cl_uint dev_id, cl_dev else { cl::util::detail::errHandler( - CL_UTIL_DEVICE_NOT_INTEROPERABLE, - error, - "Selected device isn't interoperable with the current OpenGL context." - ); + CL_UTIL_DEVICE_NOT_INTEROPERABLE, error, + "Selected device isn't interoperable with the " + "current OpenGL context."); return cl::Context{}; } } else cl::util::detail::errHandler( - CL_UTIL_INDEX_OUT_OF_RANGE, - error, - "Invalid device index provided for cl::Context cl::sdk::get_context()" - ); + CL_UTIL_INDEX_OUT_OF_RANGE, error, + "Invalid device index provided for cl::Context " + "cl::sdk::get_context()"); } else cl::util::detail::errHandler(plat_err, error); } else - cl::util::detail::errHandler( - CL_UTIL_INDEX_OUT_OF_RANGE, - error, - "Invalid platform index provided for cl::Context cl::sdk::get_context()" - ); + cl::util::detail::errHandler(CL_UTIL_INDEX_OUT_OF_RANGE, error, + "Invalid platform index provided for " + "cl::Context cl::sdk::get_context()"); } else - cl::util::detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); + cl::util::detail::errHandler(plat_err, error, + "Failed to get platforms inside " + "cl::Context cl::sdk::get_context()"); return cl::Context{}; } diff --git a/lib/src/SDK/InteropWindow.cpp b/lib/src/SDK/InteropWindow.cpp index af80beab..97325ec2 100644 --- a/lib/src/SDK/InteropWindow.cpp +++ b/lib/src/SDK/InteropWindow.cpp @@ -2,21 +2,14 @@ #include #include -cl::sdk::InteropWindow::InteropWindow( - sf::VideoMode mode, - const sf::String& title, - sf::Uint32 style, - const sf::ContextSettings& settings, - cl_uint platform_id, - cl_uint device_id, - cl_bitfield device_type -) - : sf::Window{mode, title, style, settings} - , plat_id{platform_id} - , dev_id{device_id} - , dev_type{device_type} -{ -} +cl::sdk::InteropWindow::InteropWindow(sf::VideoMode mode, + const sf::String& title, sf::Uint32 style, + const sf::ContextSettings& settings, + cl_uint platform_id, cl_uint device_id, + cl_bitfield device_type) + : sf::Window{ mode, title, style, settings }, plat_id{ platform_id }, + dev_id{ device_id }, dev_type{ device_type } +{} void cl::sdk::InteropWindow::run() { @@ -26,22 +19,24 @@ void cl::sdk::InteropWindow::run() opencl_context = get_interop_context(plat_id, dev_id, dev_type); - cl_khr_gl_event_supported = - opencl_context.getInfo().at(0).getInfo().find("cl_khr_gl_event") != cl::string::npos; + cl_khr_gl_event_supported = opencl_context.getInfo() + .at(0) + .getInfo() + .find("cl_khr_gl_event") + != cl::string::npos; initializeCL(); - while(isOpen()) + while (isOpen()) { - sf::Event ev; - while (pollEvent(ev)) - event(ev); - render(); display(); updateScene(); + + sf::Event ev; + while (pollEvent(ev)) event(ev); } setActive(false); diff --git a/lib/src/Utils/Context.c b/lib/src/Utils/Context.c index 5d03e44f..7974c0a0 100644 --- a/lib/src/Utils/Context.c +++ b/lib/src/Utils/Context.c @@ -3,82 +3,116 @@ #include // STL includes -#include // malloc, free -#include // printf +#include // malloc, free +#include // printf UTILS_EXPORT -cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) +cl_context cl_util_get_context(const cl_uint plat_id, const cl_uint dev_id, + const cl_device_type type, cl_int *const error) { cl_int err = CL_SUCCESS; cl_context result = NULL; - cl_platform_id * platforms; + cl_platform_id *platforms; cl_uint num_platforms = 0; - cl_device_id * devices; + cl_device_id *devices; cl_uint num_devices = 0; OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), err, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), err, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) + * num_platforms), + err, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), err, plat); - if (plat_id >= num_platforms) { - fprintf(stderr, "Invalid platform index provided for cl_util_get_context()\n"); + if (plat_id >= num_platforms) + { + fprintf(stderr, + "Invalid platform index provided for cl_util_get_context()\n"); err = CL_UTIL_INDEX_OUT_OF_RANGE; goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), err, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), err, dev); - - if (dev_id >= num_devices) { - fprintf(stderr, "Invalid device index provided for cl_util_get_context()\n"); + OCLERROR_RET( + clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, + plat); + MEM_CHECK(devices = + (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), + err, plat); + OCLERROR_RET( + clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), + err, dev); + + if (dev_id >= num_devices) + { + fprintf(stderr, + "Invalid device index provided for cl_util_get_context()\n"); err = CL_UTIL_INDEX_OUT_OF_RANGE; goto dev; } - OCLERROR_PAR(result = clCreateContext(NULL, 1, devices + dev_id, NULL, NULL, &err), err, dev); + OCLERROR_PAR( + result = clCreateContext(NULL, 1, devices + dev_id, NULL, NULL, &err), + err, dev); -dev: free(devices); -plat: free(platforms); -end: if (error != NULL) *error = err; +dev: + free(devices); +plat: + free(platforms); +end: + if (error != NULL) *error = err; return result; } UTILS_EXPORT -cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, const cl_device_type type, cl_int * const error) +cl_device_id cl_util_get_device(const cl_uint plat_id, const cl_uint dev_id, + const cl_device_type type, cl_int *const error) { cl_int err = CL_SUCCESS; cl_device_id result = NULL; - cl_platform_id * platforms; + cl_platform_id *platforms; cl_uint num_platforms = 0; - cl_device_id * devices; + cl_device_id *devices; cl_uint num_devices = 0; OCLERROR_RET(clGetPlatformIDs(0, NULL, &num_platforms), err, end); - MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms), err, end); + MEM_CHECK(platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) + * num_platforms), + err, end); OCLERROR_RET(clGetPlatformIDs(num_platforms, platforms, NULL), err, plat); - if (plat_id >= num_platforms) { - fprintf(stderr, "Invalid platform index provided for cl_util_get_context()\n"); + if (plat_id >= num_platforms) + { + fprintf(stderr, + "Invalid platform index provided for cl_util_get_context()\n"); err = CL_UTIL_INDEX_OUT_OF_RANGE; goto plat; } - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, plat); - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), err, plat); - OCLERROR_RET(clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), err, dev); - - if (dev_id >= num_devices) { - fprintf(stderr, "Invalid device index provided for cl_util_get_context()\n"); + OCLERROR_RET( + clGetDeviceIDs(platforms[plat_id], type, 0, NULL, &num_devices), err, + plat); + MEM_CHECK(devices = + (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), + err, plat); + OCLERROR_RET( + clGetDeviceIDs(platforms[plat_id], type, num_devices, devices, NULL), + err, dev); + + if (dev_id >= num_devices) + { + fprintf(stderr, + "Invalid device index provided for cl_util_get_context()\n"); err = CL_UTIL_INDEX_OUT_OF_RANGE; goto dev; } result = devices[dev_id]; -dev: free(devices); -plat: free(platforms); -end: if (error != NULL) *error = err; +dev: + free(devices); +plat: + free(platforms); +end: + if (error != NULL) *error = err; return result; } @@ -86,60 +120,79 @@ UTILS_EXPORT cl_int cl_util_print_device_info(const cl_device_id device) { cl_int error = CL_SUCCESS; - char * name = NULL; + char *name = NULL; cl_platform_id platform; - OCLERROR_PAR(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, nam); + OCLERROR_PAR(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, + sizeof(cl_platform_id), &platform, NULL), + error, nam); - OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VENDOR, &error), error, ven); + OCLERROR_PAR( + name = cl_util_get_platform_info(platform, CL_PLATFORM_VENDOR, &error), + error, ven); printf("Selected platform by %s\n", name); -ven: free(name); - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_NAME, &error), error, ocl); +ven: + free(name); + OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_NAME, &error), + error, ocl); printf("Selected device: %s\n", name); -ocl: free(name); - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_OPENCL_C_VERSION, &error), error, nam); +ocl: + free(name); + OCLERROR_PAR(name = cl_util_get_device_info( + device, CL_DEVICE_OPENCL_C_VERSION, &error), + error, nam); printf("%s\n\n", name); -nam: free(name); +nam: + free(name); return error; } UTILS_EXPORT -char * cl_util_get_platform_info(const cl_platform_id platform, const cl_platform_info info, cl_int * const error) +char *cl_util_get_platform_info(const cl_platform_id platform, + const cl_platform_info info, + cl_int *const error) { cl_int err = CL_SUCCESS; - char * name = NULL; + char *name = NULL; size_t n = 0; - switch (info) { + switch (info) + { case CL_PLATFORM_PROFILE: case CL_PLATFORM_VERSION: case CL_PLATFORM_NAME: case CL_PLATFORM_VENDOR: case CL_PLATFORM_EXTENSIONS: - OCLERROR_RET(clGetPlatformInfo(platform, info, 0, NULL, &n), err, end); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), err, end); - OCLERROR_RET(clGetPlatformInfo(platform, info, sizeof(char) * n, name, NULL), err, end); + OCLERROR_RET(clGetPlatformInfo(platform, info, 0, NULL, &n), err, + end); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n + 1)), err, end); + OCLERROR_RET( + clGetPlatformInfo(platform, info, sizeof(char) * n, name, NULL), + err, end); name[n] = '\0'; if (error != NULL) *error = err; return name; } -end: free(name); +end: + free(name); if (error != NULL) *error = err; return NULL; } UTILS_EXPORT -char * cl_util_get_device_info(const cl_device_id device, const cl_device_info info, cl_int * const error) +char *cl_util_get_device_info(const cl_device_id device, + const cl_device_info info, cl_int *const error) { cl_int err = CL_SUCCESS; - char * name = NULL; + char *name = NULL; size_t n = 0; - switch (info) { + switch (info) + { case CL_DEVICE_EXTENSIONS: case CL_DEVICE_NAME: case CL_DEVICE_VENDOR: @@ -159,29 +212,37 @@ char * cl_util_get_device_info(const cl_device_id device, const cl_device_info i #endif case CL_DRIVER_VERSION: OCLERROR_RET(clGetDeviceInfo(device, info, 0, NULL, &n), err, end); - MEM_CHECK(name = (char *)malloc(sizeof(char) * (n+1)), err, end); - OCLERROR_RET(clGetDeviceInfo(device, info, sizeof(char) * n, name, NULL), err, end); + MEM_CHECK(name = (char *)malloc(sizeof(char) * (n + 1)), err, end); + OCLERROR_RET( + clGetDeviceInfo(device, info, sizeof(char) * n, name, NULL), + err, end); name[n] = '\0'; if (error != NULL) *error = err; return name; } -end: free(name); +end: + free(name); if (error != NULL) *error = err; return NULL; } // build program and show log if build is not successful UTILS_EXPORT -cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, const char * const opt) +cl_int cl_util_build_program(const cl_program pr, const cl_device_id dev, + const char *const opt) { cl_int err = clBuildProgram(pr, 1, &dev, opt, NULL, NULL); - if (err != CL_SUCCESS) { // no error handling here as error from build program is more valuable - char * program_log; + if (err != CL_SUCCESS) + { // no error handling here as error from build program is more valuable + char *program_log; size_t log_size = 0; - clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); - if ((program_log = (char *)malloc((log_size + 1) * sizeof(char)))) { - clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, program_log, NULL); + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, 0, NULL, + &log_size); + if ((program_log = (char *)malloc((log_size + 1) * sizeof(char)))) + { + clGetProgramBuildInfo(pr, dev, CL_PROGRAM_BUILD_LOG, log_size, + program_log, NULL); program_log[log_size] = '\0'; printf("Build log is:\n\n%s\nOptions:\n%s\n\n", program_log, opt); free(program_log); diff --git a/lib/src/Utils/Context.cpp b/lib/src/Utils/Context.cpp index 8380fc0f..7882998f 100644 --- a/lib/src/Utils/Context.cpp +++ b/lib/src/Utils/Context.cpp @@ -1,7 +1,8 @@ // OpenCL SDK includes #include -cl::Context cl::util::get_context(cl_uint plat_id, cl_uint dev_id, cl_device_type type, cl_int* error) +cl::Context cl::util::get_context(cl_uint plat_id, cl_uint dev_id, + cl_device_type type, cl_int* error) { cl::vector platforms; cl_int plat_err = cl::Platform::get(&platforms); @@ -20,24 +21,22 @@ cl::Context cl::util::get_context(cl_uint plat_id, cl_uint dev_id, cl_device_typ return cl::Context(devices[dev_id]); } else - detail::errHandler( - CL_UTIL_INDEX_OUT_OF_RANGE, - error, - "Invalid device index provided for cl::Context cl::sdk::get_context()" - ); + detail::errHandler(CL_UTIL_INDEX_OUT_OF_RANGE, error, + "Invalid device index provided for " + "cl::Context cl::sdk::get_context()"); } else detail::errHandler(dev_err, error); } else - detail::errHandler( - CL_UTIL_INDEX_OUT_OF_RANGE, - error, - "Invalid platform index provided for cl::Context cl::sdk::get_context()" - ); + detail::errHandler(CL_UTIL_INDEX_OUT_OF_RANGE, error, + "Invalid platform index provided for " + "cl::Context cl::sdk::get_context()"); } else - detail::errHandler(plat_err, error, "Failed to get platforms inside cl::Context cl::sdk::get_context()"); + detail::errHandler(plat_err, error, + "Failed to get platforms inside cl::Context " + "cl::sdk::get_context()"); return cl::Context{}; } diff --git a/lib/src/Utils/Device.cpp b/lib/src/Utils/Device.cpp index 7a3fe19c..fab39c99 100644 --- a/lib/src/Utils/Device.cpp +++ b/lib/src/Utils/Device.cpp @@ -2,24 +2,30 @@ #include -bool cl::util::opencl_c_version_contains(const cl::Device& device, const cl::string& version_fragment) +bool cl::util::opencl_c_version_contains(const cl::Device& device, + const cl::string& version_fragment) { - return device.getInfo().find(version_fragment) != cl::string::npos; + return device.getInfo().find(version_fragment) + != cl::string::npos; } -bool cl::util::supports_extension(const cl::Device& device, const cl::string& extension) +bool cl::util::supports_extension(const cl::Device& device, + const cl::string& extension) { - return device.getInfo().find(extension) != cl::string::npos; + return device.getInfo().find(extension) + != cl::string::npos; } #ifdef CL_VERSION_3_0 -bool cl::util::supports_feature(const cl::Device& device, const cl::string& feature_name) +bool cl::util::supports_feature(const cl::Device& device, + const cl::string& feature_name) { auto c_features = device.getInfo(); - auto feature_is_work_group_reduce = [&](const cl_name_version& name_ver) - { - return cl::string{name_ver.name} == feature_name; + auto feature_is_work_group_reduce = [&](const cl_name_version& name_ver) { + return cl::string{ name_ver.name } == feature_name; }; - return std::find_if(c_features.cbegin(), c_features.cend(), feature_is_work_group_reduce) != c_features.cend(); + return std::find_if(c_features.cbegin(), c_features.cend(), + feature_is_work_group_reduce) + != c_features.cend(); } #endif diff --git a/lib/src/Utils/Error.c b/lib/src/Utils/Error.c index 9891635c..ac00dbe2 100644 --- a/lib/src/Utils/Error.c +++ b/lib/src/Utils/Error.c @@ -3,9 +3,9 @@ void cl_util_print_error(const cl_int error) { - switch (error) { - case CL_SUCCESS: - break; + switch (error) + { + case CL_SUCCESS: break; case CL_DEVICE_NOT_FOUND: fprintf(stderr, "\nError: CL_DEVICE_NOT_FOUND\n"); break; @@ -47,7 +47,8 @@ void cl_util_print_error(const cl_int error) fprintf(stderr, "\nError: CL_MISALIGNED_SUB_BUFFER_OFFSET\n"); break; case CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: - fprintf(stderr, "\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); + fprintf(stderr, + "\nError: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST\n"); break; #endif #ifdef CL_VERSION_1_2 @@ -215,8 +216,6 @@ void cl_util_print_error(const cl_int error) fprintf(stderr, "\nError: CL_UTIL_FILE_OPERATION_ERROR\n"); break; // end of SDK errors - default: - fprintf(stderr, "\nUnknown error: %i\n", error); - break; + default: fprintf(stderr, "\nUnknown error: %i\n", error); break; } } diff --git a/lib/src/Utils/Error.cpp b/lib/src/Utils/Error.cpp index 079cc1fe..fbfcc925 100644 --- a/lib/src/Utils/Error.cpp +++ b/lib/src/Utils/Error.cpp @@ -4,8 +4,7 @@ #if defined(CL_HPP_ENABLE_EXCEPTIONS) cl_int cl::util::detail::errHandler(cl_int err, cl_int*, const char* errStr) { - if (err != CL_SUCCESS) - throw cl::util::Error{err, errStr}; + if (err != CL_SUCCESS) throw cl::util::Error{ err, errStr }; return err; } #else @@ -13,8 +12,7 @@ cl_int cl::util::detail::errHandler(cl_int err, cl_int* errPtr, const char*) { if (err != CL_SUCCESS) { - if (errPtr != nullptr) - *errPtr = err; + if (errPtr != nullptr) *errPtr = err; } return err; } diff --git a/lib/src/Utils/Event.c b/lib/src/Utils/Event.c index 1eb72b53..f770e9a3 100644 --- a/lib/src/Utils/Event.c +++ b/lib/src/Utils/Event.c @@ -1,16 +1,23 @@ // OpenCL Utils includes #include -cl_ulong cl_util_get_event_duration(const cl_event event, const cl_profiling_info start, const cl_profiling_info end, - cl_int * const error) +cl_ulong cl_util_get_event_duration(const cl_event event, + const cl_profiling_info start, + const cl_profiling_info end, + cl_int* const error) { cl_int err = CL_SUCCESS; cl_ulong start_time = 0, end_time = 0; - OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), &start_time, NULL), err, end); - OCLERROR_RET(clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), err, end); + OCLERROR_RET(clGetEventProfilingInfo(event, start, sizeof(cl_ulong), + &start_time, NULL), + err, end); + OCLERROR_RET( + clGetEventProfilingInfo(event, end, sizeof(cl_ulong), &end_time, NULL), + err, end); if (error != NULL) *error = err; return end_time - start_time; -end: if (error != NULL) *error = err; +end: + if (error != NULL) *error = err; return 0; } diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 64990e54..c6e8a984 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -3,7 +3,7 @@ // STL includes #include // realloc, free -#include // fopen, ferror, fread, fclose +#include // fopen, ferror, fread, fclose #include // memset // read all the text file contents securely in ANSI C89 @@ -11,20 +11,28 @@ // can handle streams with no known size and no support for fseek // based on https://stackoverflow.com/questions/14002954/ by Nominal Animal UTILS_EXPORT -char * cl_util_read_text_file(const char * const filename, size_t * const length, cl_int * const error) +char *cl_util_read_text_file(const char *const filename, size_t *const length, + cl_int *const error) { cl_int err = CL_SUCCESS; - char * data = NULL, * temp; + char *data = NULL, *temp; size_t size = 0; size_t used = 0; size_t n; - FILE * in; + FILE *in; /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 -#define IF_ERR(func, error_type, label) \ -do { if (func) { err = error_type; goto label; } } while (0) +#define IF_ERR(func, error_type, label) \ + do \ + { \ + if (func) \ + { \ + err = error_type; \ + goto label; \ + } \ + } while (0) /* File name can not be NULL. */ IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); @@ -35,8 +43,10 @@ do { if (func) { err = error_type; goto label; } } while (0) /* A read error already occurred? */ IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, fl); - while (1) { - if (used + READALL_CHUNK + 1 > size) { + while (1) + { + if (used + READALL_CHUNK + 1 > size) + { size = used + READALL_CHUNK + 1; /* Overflow check. */ @@ -48,8 +58,7 @@ do { if (func) { err = error_type; goto label; } } while (0) /* Read file in chunks. */ n = fread(data + used, 1, READALL_CHUNK, in); - if (n == 0) - break; + if (n == 0) break; used += n; } @@ -61,14 +70,16 @@ do { if (func) { err = error_type; goto label; } } while (0) MEM_CHECK(temp = (char *)realloc(data, used + 1), err, nodata); data = temp; data[used] = '\0'; - if (length != NULL) - *length = used; + if (length != NULL) *length = used; -fl: fclose(in); -end: if (error != NULL) *error = err; +fl: + fclose(in); +end: + if (error != NULL) *error = err; return data; -nodata: fclose(in); +nodata: + fclose(in); free(data); if (error != NULL) *error = err; return NULL; @@ -77,20 +88,29 @@ nodata: fclose(in); } UTILS_EXPORT -unsigned char * cl_util_read_binary_file(const char * const filename, size_t * const length, cl_int * const error) +unsigned char *cl_util_read_binary_file(const char *const filename, + size_t *const length, + cl_int *const error) { cl_int err = CL_SUCCESS; - unsigned char * data = NULL, * temp; + unsigned char *data = NULL, *temp; size_t size = 0; size_t used = 0; size_t n; - FILE * in; + FILE *in; /* Size of each input chunk to be read and allocate for. */ #define READALL_CHUNK 2097152 -#define IF_ERR(func, error_type, label) \ -do { if (func) { err = error_type; goto label; } } while (0) +#define IF_ERR(func, error_type, label) \ + do \ + { \ + if (func) \ + { \ + err = error_type; \ + goto label; \ + } \ + } while (0) /* File name can not be NULL. */ IF_ERR(!filename, CL_INVALID_ARG_VALUE, end); @@ -101,8 +121,10 @@ do { if (func) { err = error_type; goto label; } } while (0) /* A read error already occurred? */ IF_ERR(ferror(in), CL_UTIL_FILE_OPERATION_ERROR, fl); - while (1) { - if (used + READALL_CHUNK + 1 > size) { + while (1) + { + if (used + READALL_CHUNK + 1 > size) + { size = used + READALL_CHUNK + 1; /* Overflow check. */ @@ -114,8 +136,7 @@ do { if (func) { err = error_type; goto label; } } while (0) /* Read file in chunks. */ n = fread(data + used, 1, READALL_CHUNK, in); - if (n == 0) - break; + if (n == 0) break; used += n; } @@ -126,17 +147,19 @@ do { if (func) { err = error_type; goto label; } } while (0) /* Truncate to the real size. */ MEM_CHECK(temp = (unsigned char *)realloc(data, used), err, nodata); data = temp; - if (length != NULL) - *length = used; + if (length != NULL) *length = used; -fl: fclose(in); -end: if (error != NULL) *error = err; +fl: + fclose(in); +end: + if (error != NULL) *error = err; return data; -nodata: fclose(in); - free(data); - if (error != NULL) *error = err; - return NULL; +nodata: + fclose(in); + free(data); + if (error != NULL) *error = err; + return NULL; #undef IF_ERR } @@ -144,58 +167,81 @@ nodata: fclose(in); // function to write binaries of OpenCL compiled program // binaries are written as separate files for each device // with file name "(program_file_name)_(name of device).bin" -// based on variant of Logan http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ +// based on variant of Logan +// http://logan.tw/posts/2014/11/22/pre-compile-the-opencl-kernel-program-part-2/ UTILS_EXPORT -cl_int cl_util_write_binaries(const cl_program program, const char * const program_file_name) +cl_int cl_util_write_binaries(const cl_program program, + const char *const program_file_name) { cl_int error = CL_SUCCESS; cl_uint num_devices = 0; size_t binaries_size_alloc_size = 0; size_t binaries_ptr_alloc_size = 0; - size_t * binaries_size = NULL; - unsigned char ** binaries_ptr = NULL; - cl_device_id * devices = NULL; + size_t *binaries_size = NULL; + unsigned char **binaries_ptr = NULL; + cl_device_id *devices = NULL; // read number of devices - OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_NUM_DEVICES, sizeof(cl_uint), &num_devices, NULL), error, end); - if (num_devices == 0) - return CL_INVALID_PROGRAM_EXECUTABLE; + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_NUM_DEVICES, + sizeof(cl_uint), &num_devices, NULL), + error, end); + if (num_devices == 0) return CL_INVALID_PROGRAM_EXECUTABLE; // read the binaries size binaries_size_alloc_size = sizeof(size_t) * num_devices; - MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), error, end); + MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), error, + end); - OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARY_SIZES, binaries_size_alloc_size, binaries_size, NULL), error, end); + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARY_SIZES, + binaries_size_alloc_size, binaries_size, + NULL), + error, end); // read the binaries binaries_ptr_alloc_size = sizeof(unsigned char *) * num_devices; - MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), error, end); + MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), + error, end); memset(binaries_ptr, 0, binaries_ptr_alloc_size); for (cl_uint i = 0; i < num_devices; ++i) - MEM_CHECK(binaries_ptr[i] = (unsigned char *)malloc(binaries_size[i]), error, end); + MEM_CHECK(binaries_ptr[i] = (unsigned char *)malloc(binaries_size[i]), + error, end); - OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARIES, binaries_ptr_alloc_size, binaries_ptr, NULL), error, end); + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_BINARIES, + binaries_ptr_alloc_size, binaries_ptr, NULL), + error, end); // query devices - MEM_CHECK(devices = (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), error, end); - OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_DEVICES, sizeof(cl_device_id) * num_devices, devices, NULL), error, end); + MEM_CHECK(devices = + (cl_device_id *)malloc(sizeof(cl_device_id) * num_devices), + error, end); + OCLERROR_RET(clGetProgramInfo(program, CL_PROGRAM_DEVICES, + sizeof(cl_device_id) * num_devices, devices, + NULL), + error, end); // write the binaries to files - for (cl_uint i = 0; i < num_devices; ++i) { + for (cl_uint i = 0; i < num_devices; ++i) + { // get device name char name_data[201]; - OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), error, end); + OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, + sizeof(name_data) - 1, name_data, NULL), + error, end); name_data[200] = '\0'; // create output file name char filename[256]; - snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, + name_data); // write the binary to the output file - FILE * f = fopen(filename, "wb"); - if (f != NULL) { - if (fwrite(binaries_ptr[i], sizeof(unsigned char), binaries_size[i], f) != binaries_size[i]) + FILE *f = fopen(filename, "wb"); + if (f != NULL) + { + if (fwrite(binaries_ptr[i], sizeof(unsigned char), binaries_size[i], + f) + != binaries_size[i]) error = CL_UTIL_FILE_OPERATION_ERROR; fclose(f); } @@ -204,9 +250,9 @@ cl_int cl_util_write_binaries(const cl_program program, const char * const progr } end: // cleanup - if (binaries_ptr != NULL) { - for (cl_uint i = 0; i < num_devices; ++i) - free(binaries_ptr[i]); + if (binaries_ptr != NULL) + { + for (cl_uint i = 0; i < num_devices; ++i) free(binaries_ptr[i]); free(binaries_ptr); } free(binaries_size); @@ -215,39 +261,51 @@ cl_int cl_util_write_binaries(const cl_program program, const char * const progr } // function to read binaries of OpenCL compiled program -// read binaries from files of file names "(program_file_name)_(name of device).bin" +// read binaries from files of file names "(program_file_name)_(name of +// device).bin" UTILS_EXPORT -cl_program cl_util_read_binaries(const cl_context context, const cl_device_id * const devices, const cl_uint num_devices, - const char * const program_file_name, cl_int * const error) +cl_program cl_util_read_binaries(const cl_context context, + const cl_device_id *const devices, + const cl_uint num_devices, + const char *const program_file_name, + cl_int *const error) { cl_int err = CL_SUCCESS; size_t binaries_size_alloc_size = 0; size_t binaries_ptr_alloc_size = 0; - size_t * binaries_size = NULL; - unsigned char ** binaries_ptr = NULL; + size_t *binaries_size = NULL; + unsigned char **binaries_ptr = NULL; cl_program program = NULL; // array for binaries' sizes binaries_size_alloc_size = sizeof(size_t) * num_devices; - MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), err, end); + MEM_CHECK(binaries_size = (size_t *)malloc(binaries_size_alloc_size), err, + end); // array for the binaries binaries_ptr_alloc_size = sizeof(unsigned char *) * num_devices; - MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), err, end); + MEM_CHECK(binaries_ptr = (unsigned char **)malloc(binaries_ptr_alloc_size), + err, end); memset(binaries_ptr, 0, binaries_ptr_alloc_size); // read binaries from files - for (cl_uint i = 0; i < num_devices; ++i) { + for (cl_uint i = 0; i < num_devices; ++i) + { // get device name char name_data[201]; - OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name_data) - 1, name_data, NULL), err, end); + OCLERROR_RET(clGetDeviceInfo(devices[i], CL_DEVICE_NAME, + sizeof(name_data) - 1, name_data, NULL), + err, end); name_data[200] = '\0'; // create input file name char filename[256]; - snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, name_data); + snprintf(filename, sizeof(filename), "%s-%s.bin", program_file_name, + name_data); - binaries_ptr[i] = cl_util_read_binary_file(filename, binaries_size + i, &err); - if (err == CL_INVALID_VALUE) { + binaries_ptr[i] = + cl_util_read_binary_file(filename, binaries_size + i, &err); + if (err == CL_INVALID_VALUE) + { fprintf(stderr, "No suitable file %s found\n", filename); goto end; } @@ -255,13 +313,15 @@ cl_program cl_util_read_binaries(const cl_context context, const cl_device_id * goto end; } - OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, devices, - binaries_size, binaries_ptr, &err, NULL), err, end); + OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, + devices, binaries_size, + binaries_ptr, &err, NULL), + err, end); end: // cleanup - if (binaries_ptr != NULL) { - for (cl_uint i = 0; i < num_devices; ++i) - free(binaries_ptr[i]); + if (binaries_ptr != NULL) + { + for (cl_uint i = 0; i < num_devices; ++i) free(binaries_ptr[i]); free(binaries_ptr); } free(binaries_size); diff --git a/lib/src/Utils/Platform.cpp b/lib/src/Utils/Platform.cpp index fc73ae98..bc26de50 100644 --- a/lib/src/Utils/Platform.cpp +++ b/lib/src/Utils/Platform.cpp @@ -1,11 +1,15 @@ -#include - -bool cl::util::supports_extension(const cl::Platform& platform, const cl::string& extension) -{ - return platform.getInfo().find(extension) != cl::string::npos; -} - -bool cl::util::platform_version_contains(const cl::Platform& platform, const cl::string& version_fragment) -{ - return platform.getInfo().find(version_fragment) != cl::string::npos; -} \ No newline at end of file +#include + +bool cl::util::supports_extension(const cl::Platform& platform, + const cl::string& extension) +{ + return platform.getInfo().find(extension) + != cl::string::npos; +} + +bool cl::util::platform_version_contains(const cl::Platform& platform, + const cl::string& version_fragment) +{ + return platform.getInfo().find(version_fragment) + != cl::string::npos; +} \ No newline at end of file diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index c2aa8250..edd8924a 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -17,9 +17,8 @@ if(CMAKE_CONFIGURATION_TYPES) else() set(OPENCL_SAMPLE_CONFIGS ${CMAKE_BUILD_TYPE}) endif() +list(APPEND CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") -list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) -find_package(TCLAP REQUIRED) # add math library to link if needed # method by Michael Ambrus, https://stackoverflow.com/questions/34625627 include(CheckLibraryExists) @@ -39,7 +38,7 @@ CHECK_LIBRARY_EXISTS(m sin "" HAVE_LIB_M) macro(add_sample) set(options TEST) set(one_value_args TARGET VERSION CATEGORY) - set(multi_value_args SOURCES KERNELS INCLUDES LIBS) + set(multi_value_args SOURCES KERNELS SHADERS INCLUDES LIBS) cmake_parse_arguments(OPENCL_SAMPLE "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN} @@ -86,8 +85,9 @@ macro(add_sample) ) foreach(CONFIG ${OPENCL_SAMPLE_CONFIGS}) - install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) - install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CONFIG}) + install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES ${OPENCL_SAMPLE_SHADERS} CONFIGURATIONS ${CONFIG} DESTINATION ${CMAKE_INSTALL_BINDIR}) endforeach() if(OPENCL_SDK_TEST_SAMPLES AND OPENCL_SAMPLE_TEST) add_test( diff --git a/samples/core/binaries/CMakeLists.txt b/samples/core/binaries/CMakeLists.txt index 2ebdc117..17dd56df 100644 --- a/samples/core/binaries/CMakeLists.txt +++ b/samples/core/binaries/CMakeLists.txt @@ -16,4 +16,5 @@ add_sample( TEST TARGET binaries VERSION 300 - SOURCES main.c) + SOURCES main.c + KERNELS Collatz.cl) diff --git a/samples/core/binaries/main.c b/samples/core/binaries/main.c index 06e294c1..4a13d922 100644 --- a/samples/core/binaries/main.c +++ b/samples/core/binaries/main.c @@ -26,58 +26,72 @@ #include // Sample-specific option -struct options_Binaries { +struct options_Binaries +{ size_t start; size_t length; }; -cag_option BinariesOptions[] = { - {.identifier = 'l', - .access_letters = "l", - .access_name = "length", - .value_name = "(positive integer)", - .description = "Length of range to test"}, - - {.identifier = 's', - .access_letters = "s", - .access_name = "start", - .value_name = "(positive integer)", - .description = "Starting number"} -}; - -ParseState parse_BinariesOptions(const char identifier, cag_option_context * cag_context, struct options_Binaries * opts) +cag_option BinariesOptions[] = { { .identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of range to test" }, + + { .identifier = 's', + .access_letters = "s", + .access_name = "start", + .value_name = "(positive integer)", + .description = "Starting number" } }; + +ParseState parse_BinariesOptions(const char identifier, + cag_option_context *cag_context, + struct options_Binaries *opts) { - const char * value; - - switch (identifier) { - case 's': - if ((value = cag_option_get_value(cag_context))) { - opts->start = strtoull(value, NULL, 0); - return ParsedOK; - } - else return ParseError; - case 'l': - if ((value = cag_option_get_value(cag_context))) { - opts->length = strtoull(value, NULL, 0); - return ParsedOK; - } - else return ParseError; + const char *value; + + switch (identifier) + { + case 's': + if ((value = cag_option_get_value(cag_context))) + { + opts->start = strtoull(value, NULL, 0); + return ParsedOK; + } + else + return ParseError; + case 'l': + if ((value = cag_option_get_value(cag_context))) + { + opts->length = strtoull(value, NULL, 0); + return ParsedOK; + } + else + return ParseError; } return NotParsed; } -cl_int parse_options(int argc, char * argv[], struct cl_sdk_options_Diagnostic * diag_opts, - struct cl_sdk_options_SingleDevice * dev_opts, struct options_Binaries * binaries_opts) +cl_int parse_options(int argc, char *argv[], + struct cl_sdk_options_Diagnostic *diag_opts, + struct cl_sdk_options_SingleDevice *dev_opts, + struct options_Binaries *binaries_opts) { cl_int error = CL_SUCCESS; - struct cag_option * opts = NULL, * tmp = NULL; + struct cag_option *opts = NULL, *tmp = NULL; size_t n = 0; /* Prepare all options array. */ - MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); - MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, + CAG_ARRAY_SIZE(DiagnosticOptions)), + error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, + CAG_ARRAY_SIZE(SingleDeviceOptions)), + error, end); opts = tmp; - MEM_CHECK(tmp = add_CLI_options(opts, &n, BinariesOptions, CAG_ARRAY_SIZE(BinariesOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, BinariesOptions, + CAG_ARRAY_SIZE(BinariesOptions)), + error, end); opts = tmp; char identifier; @@ -85,17 +99,24 @@ cl_int parse_options(int argc, char * argv[], struct cl_sdk_options_Diagnostic * /* Prepare the context and iterate over all options. */ cag_option_prepare(&cag_context, opts, n, argc, argv); - while (cag_option_fetch(&cag_context)) { + while (cag_option_fetch(&cag_context)) + { ParseState state = NotParsed; identifier = cag_option_get(&cag_context); PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); - PARS_OPTIONS(parse_BinariesOptions(identifier, &cag_context, binaries_opts), state); - - if (identifier == 'h') { + PARS_OPTIONS( + parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), + state); + PARS_OPTIONS( + parse_BinariesOptions(identifier, &cag_context, binaries_opts), + state); + + if (identifier == 'h') + { printf("Usage: binaries [OPTION]...\n"); - printf("Option name and value should be separated by '=' or a space\n"); + printf("Option name and value should be separated by '=' or a " + "space\n"); printf("Demonstrates saving and loading of compiled binary OpenCL " "programs for specific device.\n\n"); cag_option_print(opts, n, stdout); @@ -103,32 +124,35 @@ cl_int parse_options(int argc, char * argv[], struct cl_sdk_options_Diagnostic * } } -end: free(opts); +end: + free(opts); return error; } -cl_int print_timings(struct timespec start, struct timespec end, const cl_event * const event_list, - cl_uint event_number) +cl_int print_timings(struct timespec start, struct timespec end, + const cl_event *const event_list, cl_uint event_number) { cl_int error = CL_SUCCESS; cl_ulong time_host, time_device = 0; TIMER_DIFFERENCE(time_host, start, end) - for (cl_uint i = 0; i < event_number; ++i) { - time_device += cl_util_get_event_duration(event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error); - if (error != CL_SUCCESS) - return error; + for (cl_uint i = 0; i < event_number; ++i) + { + time_device += cl_util_get_event_duration( + event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, + &error); + if (error != CL_SUCCESS) return error; } printf("Execution time as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(time_host + 500) / 1000, - (unsigned long long)(time_device + 500) / 1000); + (unsigned long long)(time_host + 500) / 1000, + (unsigned long long)(time_device + 500) / 1000); return error; } -int main(int argc, char * argv[]) +int main(int argc, char *argv[]) { cl_int error = CL_SUCCESS; cl_int end_error = CL_SUCCESS; @@ -140,42 +164,61 @@ int main(int argc, char * argv[]) cl_program program; /// Parse command-line options - struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; - struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, + .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { + .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } + }; struct options_Binaries binaries_opts = { .start = 1, .length = 100000 }; - OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &binaries_opts), error, end); + OCLERROR_RET( + parse_options(argc, argv, &diag_opts, &dev_opts, &binaries_opts), error, + end); /// Create runtime objects based on user preference or default OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, - dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); - OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); + dev_opts.triplet.dev_index, + dev_opts.triplet.dev_type, &error), + error, end); + OCLERROR_PAR(context = + clCreateContext(NULL, 1, &device, NULL, NULL, &error), + error, end); - if (!diag_opts.quiet) - cl_util_print_device_info(device); + if (!diag_opts.quiet) cl_util_print_device_info(device); /// Try to read binary program = cl_util_read_binaries(context, &device, 1, "Collatz", &error); - if (error != CL_SUCCESS) { // if binary not present, compile and save - const char * kernel_location = "./Collatz.cl"; - char * kernel = NULL; + if (error != CL_SUCCESS) + { // if binary not present, compile and save + const char *kernel_location = "./Collatz.cl"; + char *kernel = NULL; size_t program_size = 0; - char * options = NULL; + char *options = NULL; - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, cont); + OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, + &program_size, &error), + error, cont); printf("OpenCL file red... "); - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); - OCLERROR_RET(cl_util_build_program(program, device, options), error, prgs); + OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, + (const char **)&kernel, + &program_size, &error), + error, ker); + OCLERROR_RET(cl_util_build_program(program, device, options), error, + prgs); OCLERROR_RET(cl_util_write_binaries(program, "Collatz"), error, prgs); printf("Binary file written.\n\n"); -prgs: OCLERROR_RET(clReleaseProgram(program), end_error, que); -ker: free(kernel); + prgs: + OCLERROR_RET(clReleaseProgram(program), end_error, que); + ker: + free(kernel); - OCLERROR_PAR(program = cl_util_read_binaries(context, &device, 1, "Collatz", &error), error, cont); + OCLERROR_PAR(program = cl_util_read_binaries(context, &device, 1, + "Collatz", &error), + error, cont); } // if the binary is already present - calculate @@ -183,67 +226,92 @@ ker: free(kernel); OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); /// Create all remaining runtime objects - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, prg); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, + sizeof(cl_platform_id), &platform, NULL), + error, prg); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0 }; - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, prg); + cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, + CL_QUEUE_PROFILING_ENABLE, 0 }; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, + props, &error), + error, prg); #else - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, prg); + OCLERROR_PAR(queue = clCreateCommandQueue( + context, device, CL_QUEUE_PROFILING_ENABLE, &error), + error, prg); #endif cl_kernel Collatz; - OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, que); + OCLERROR_PAR(Collatz = clCreateKernel(program, "Collatz", &error), error, + que); const size_t length = binaries_opts.length; const size_t start = binaries_opts.start - 1; /// Prepare vector of values to extract results - cl_int * v = NULL; + cl_int *v = NULL; MEM_CHECK(v = (cl_int *)malloc(sizeof(cl_int) * length), error, col); /// Initialize device-side storage cl_mem buf; - OCLERROR_PAR(buf = clCreateBuffer(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, - sizeof(cl_int) * length, NULL, &error), error, vec); + OCLERROR_PAR(buf = clCreateBuffer(context, + CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, + sizeof(cl_int) * length, NULL, &error), + error, vec); /// Run kernel cl_event pass; OCLERROR_RET(clSetKernelArg(Collatz, 0, sizeof(cl_mem), &buf), error, buff); GET_CURRENT_TIMER(start_time) - OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, &start, &length, NULL, 0, NULL, &pass), error, buff); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, Collatz, 1, &start, &length, + NULL, 0, NULL, &pass), + error, buff); OCLERROR_RET(clWaitForEvents(1, &pass), error, buff); GET_CURRENT_TIMER(end_time) - if (diag_opts.verbose) - print_timings(start_time, end_time, &pass, 1); + if (diag_opts.verbose) print_timings(start_time, end_time, &pass, 1); - OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, sizeof(cl_int) * length, v, - 0, NULL, NULL), error, buff); + OCLERROR_RET(clEnqueueReadBuffer(queue, buf, CL_BLOCKING, 0, + sizeof(cl_int) * length, v, 0, NULL, NULL), + error, buff); /// Show results int max_steps = 0; size_t max_ind = -1; for (size_t i = 0; i < length; ++i) - if (v[i] < 0) { - fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", start + 1 + i, -v[i]); + if (v[i] < 0) + { + fprintf(stderr, "Number %zu gets out of 64 bits at step %i\n", + start + 1 + i, -v[i]); } - else if ((v[i] == 0) && (start + i != 0)) { - fprintf(stderr, "Number %zu did not converge to 1 at step %i\n", start + 1 + i, INT_MAX - 2); + else if ((v[i] == 0) && (start + i != 0)) + { + fprintf(stderr, "Number %zu did not converge to 1 at step %i\n", + start + 1 + i, INT_MAX - 2); } - else if (v[i] > max_steps) { + else if (v[i] > max_steps) + { max_steps = v[i]; max_ind = start + 1 + i; } - printf("From %zu numbers checked starting from %zu, maximum %i steps was needed to get to 1 for number %zu\n", - length, start + 1, max_steps, max_ind); + printf("From %zu numbers checked starting from %zu, maximum %i steps was " + "needed to get to 1 for number %zu\n", + length, start + 1, max_steps, max_ind); /// Cleanup -buff: OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); -vec: free(v); -col: OCLERROR_RET(clReleaseKernel(Collatz), end_error, que); -que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, cont); -cont: OCLERROR_RET(clReleaseContext(context), end_error, end); -end: if (error != CL_SUCCESS) cl_util_print_error(error); +buff: + OCLERROR_RET(clReleaseMemObject(buf), end_error, vec); +vec: + free(v); +col: + OCLERROR_RET(clReleaseKernel(Collatz), end_error, que); +que: + OCLERROR_RET(clReleaseCommandQueue(queue), end_error, prg); +prg: + OCLERROR_RET(clReleaseProgram(program), end_error, cont); +cont: + OCLERROR_RET(clReleaseContext(context), end_error, end); +end: + if (error != CL_SUCCESS) cl_util_print_error(error); return error; } diff --git a/samples/core/blur/CMakeLists.txt b/samples/core/blur/CMakeLists.txt index 8b1c725f..9ed4fb16 100644 --- a/samples/core/blur/CMakeLists.txt +++ b/samples/core/blur/CMakeLists.txt @@ -16,4 +16,5 @@ add_sample( TEST TARGET blur VERSION 300 - SOURCES main.c) + SOURCES main.c + KERNELS blur.cl) diff --git a/samples/core/blur/default_image.h b/samples/core/blur/default_image.h index 3e36884c..579b162b 100644 --- a/samples/core/blur/default_image.h +++ b/samples/core/blur/default_image.h @@ -1,11879 +1,15837 @@ -/* Generated by bin2c from image by Andrew Svk https://unsplash.com/photos/7oJ4D_ewB7c */ +/* Generated by bin2c from image by Andrew Svk + * https://unsplash.com/photos/7oJ4D_ewB7c */ /* Contents of file andrew-svk-7oJ4D_ewB7c-unsplash.png */ const size_t andrew_svk_7oJ4D_ewB7c_unsplash_png_size = 189954; const unsigned char andrew_svk_7oJ4D_ewB7c_unsplash_png[189954] = { - 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, - 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x01, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x02, 0xBA, 0xF5, - 0xB7, 0x00, 0x00, 0x01, 0x1C, 0x69, 0x43, 0x43, 0x50, 0x49, 0x43, 0x43, 0x20, 0x70, 0x72, 0x6F, - 0x66, 0x69, 0x6C, 0x65, 0x00, 0x00, 0x28, 0x91, 0x63, 0x60, 0x60, 0xE2, 0xC9, 0x49, 0xCE, 0x2D, - 0x66, 0x12, 0x60, 0x60, 0xC8, 0xCD, 0x2B, 0x29, 0x0A, 0x72, 0x77, 0x52, 0x88, 0x88, 0x8C, 0x52, - 0x60, 0xBF, 0xC3, 0xC0, 0xC8, 0x20, 0xC9, 0xC0, 0xCC, 0xA0, 0xC9, 0x60, 0x99, 0x98, 0x5C, 0x5C, - 0xE0, 0x18, 0x10, 0xE0, 0xC3, 0x80, 0x13, 0x7C, 0xBB, 0x06, 0x54, 0x0D, 0x04, 0x97, 0x75, 0x41, - 0x66, 0xE1, 0x56, 0x87, 0x15, 0x70, 0xA5, 0xA4, 0x16, 0x27, 0x03, 0xE9, 0x3F, 0x40, 0x1C, 0x97, - 0x5C, 0x50, 0x54, 0xC2, 0xC0, 0xC0, 0x18, 0x03, 0x64, 0x73, 0x97, 0x97, 0x14, 0x80, 0xD8, 0x19, - 0x40, 0xB6, 0x48, 0x52, 0x36, 0x98, 0x5D, 0x03, 0x62, 0x17, 0x01, 0x1D, 0x08, 0x64, 0x4F, 0x00, - 0xB1, 0xD3, 0x21, 0xEC, 0x25, 0x60, 0x35, 0x10, 0xF6, 0x0E, 0xB0, 0x9A, 0x90, 0x20, 0x67, 0x20, - 0xFB, 0x0C, 0x90, 0xED, 0x90, 0x8E, 0xC4, 0x4E, 0x42, 0x62, 0x43, 0xED, 0x05, 0x01, 0xE6, 0x64, - 0x23, 0x12, 0x5D, 0x4D, 0x04, 0x28, 0x49, 0xAD, 0x28, 0x01, 0xD1, 0x9E, 0x11, 0x0C, 0x0C, 0xA0, - 0x30, 0x85, 0x88, 0x22, 0xC2, 0x0A, 0x21, 0xC6, 0x2C, 0x06, 0xC4, 0xC6, 0x0C, 0x0C, 0x4C, 0x4B, - 0x10, 0x62, 0xF9, 0x8B, 0x18, 0x18, 0x2C, 0xBE, 0x02, 0xC5, 0x27, 0x20, 0xC4, 0x92, 0x66, 0x32, - 0x30, 0x6C, 0x6F, 0x65, 0x60, 0x90, 0xB8, 0x85, 0x10, 0x53, 0x59, 0xC0, 0xC0, 0xC0, 0xDF, 0xC2, - 0xC0, 0xB0, 0xED, 0x7C, 0x72, 0x69, 0x51, 0x19, 0xD4, 0x6A, 0x29, 0x20, 0x3E, 0xCD, 0x78, 0x92, - 0x39, 0x99, 0x75, 0x12, 0x47, 0x36, 0xF7, 0x37, 0x01, 0x7B, 0xD1, 0x40, 0x69, 0x13, 0xC5, 0x8F, - 0x9A, 0x13, 0x8C, 0x24, 0xAC, 0x27, 0xB9, 0xB1, 0x06, 0x96, 0xC7, 0xBE, 0xCD, 0x2E, 0xA8, 0x62, - 0xED, 0xDC, 0x38, 0xAB, 0x66, 0x4D, 0xE6, 0xFE, 0xDA, 0xCB, 0x87, 0x5F, 0x1A, 0xFC, 0xFF, 0x0F, - 0x00, 0xEE, 0x93, 0x53, 0x96, 0xD2, 0xC6, 0x80, 0x56, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, - 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01, 0xD2, 0xDD, 0x7E, 0xFC, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9C, 0x8C, 0xBD, 0x59, 0x8F, 0x2C, 0x4B, 0x92, 0x1E, - 0x66, 0x8B, 0x7B, 0x44, 0xE4, 0x52, 0x55, 0x67, 0xB9, 0x4B, 0x77, 0x4F, 0x37, 0x1B, 0x33, 0xC4, - 0x50, 0xE4, 0x48, 0xE0, 0x22, 0x3D, 0x09, 0xD0, 0x0B, 0xFF, 0x90, 0x20, 0x40, 0xBF, 0x50, 0x7A, - 0xD0, 0x83, 0x1E, 0x28, 0x90, 0x18, 0x0C, 0xC5, 0x6D, 0x7A, 0x7A, 0x99, 0x5E, 0xEE, 0x72, 0xEE, - 0xA9, 0x25, 0x33, 0x23, 0xC2, 0xDD, 0xCC, 0xF8, 0x60, 0xEE, 0x1E, 0x9E, 0x59, 0x75, 0x87, 0x8C, - 0x0B, 0x9C, 0x5B, 0x95, 0x15, 0xE9, 0xAB, 0xD9, 0x67, 0x8B, 0x9B, 0x99, 0xE3, 0xBF, 0xFD, 0xF7, - 0xBF, 0x8E, 0x81, 0xA7, 0x21, 0x0C, 0x43, 0x08, 0x44, 0x06, 0x06, 0x80, 0x00, 0x06, 0x06, 0x44, - 0x04, 0x06, 0x80, 0x06, 0x80, 0xA2, 0x62, 0x06, 0x4B, 0xCA, 0xA6, 0x06, 0xFE, 0x20, 0x12, 0x00, - 0x22, 0x02, 0x82, 0x88, 0x02, 0x00, 0x31, 0x83, 0x19, 0x22, 0x20, 0xA0, 0x9A, 0x31, 0xA3, 0x88, - 0x8A, 0x28, 0x02, 0x02, 0x82, 0xAA, 0x65, 0xD1, 0x94, 0xC5, 0xCC, 0x0C, 0x90, 0x11, 0x89, 0x31, - 0x30, 0x1D, 0x77, 0x23, 0x12, 0x8A, 0xE8, 0x92, 0x72, 0xCE, 0x62, 0x06, 0x59, 0x54, 0xD4, 0xB2, - 0xA8, 0x88, 0x8C, 0x43, 0x18, 0x62, 0x48, 0x59, 0x97, 0x94, 0xD7, 0x24, 0x22, 0x06, 0x00, 0x6A, - 0x60, 0x3E, 0x44, 0x00, 0x33, 0x33, 0x03, 0x30, 0x10, 0x53, 0x33, 0x00, 0x40, 0x00, 0x30, 0x00, - 0x35, 0x43, 0x00, 0x42, 0x44, 0x34, 0x00, 0x40, 0x44, 0x44, 0x04, 0x00, 0x33, 0x55, 0x45, 0x05, - 0x30, 0x03, 0x55, 0x53, 0x50, 0x53, 0x34, 0xF3, 0x17, 0x20, 0x30, 0x02, 0xC2, 0x92, 0x14, 0xC0, - 0x54, 0xB1, 0x4E, 0x14, 0xCC, 0x3B, 0x03, 0x50, 0x33, 0x30, 0x33, 0x00, 0x00, 0x34, 0x33, 0x66, - 0x9A, 0x22, 0xA5, 0xAC, 0x63, 0x24, 0x44, 0xBC, 0xDF, 0xC7, 0xFB, 0x5D, 0xFC, 0x7C, 0x5A, 0x3F, - 0xBD, 0xAC, 0x7F, 0xF6, 0x71, 0x8F, 0x08, 0x39, 0xDB, 0xFB, 0xBB, 0x29, 0x32, 0x8E, 0x43, 0xD8, - 0xEF, 0x06, 0x42, 0xF8, 0x0F, 0xBF, 0xFE, 0xFE, 0xEF, 0x3F, 0x9D, 0x0D, 0xB0, 0xB4, 0x02, 0x65, - 0xC5, 0x11, 0x4B, 0x5F, 0x88, 0x10, 0x03, 0xAF, 0x49, 0xCD, 0x00, 0x11, 0xC4, 0x4C, 0x0D, 0x08, - 0xC0, 0xCC, 0xD4, 0x20, 0x30, 0x12, 0x62, 0x12, 0x43, 0xAC, 0x03, 0xF1, 0x5D, 0x00, 0x20, 0x84, - 0xE3, 0x14, 0x10, 0x21, 0x12, 0x25, 0xB5, 0x25, 0xC9, 0x18, 0x29, 0x89, 0x9D, 0x66, 0xF1, 0x4E, - 0xB0, 0x4C, 0xE8, 0xF6, 0xF9, 0xB1, 0x3F, 0xF8, 0xE7, 0xBE, 0x70, 0x08, 0x86, 0x4E, 0x0A, 0x65, - 0x81, 0xB7, 0xC7, 0xAC, 0x2D, 0x0B, 0x12, 0xDA, 0xFF, 0xFA, 0x57, 0x3F, 0xFD, 0xF0, 0xB0, 0xB3, - 0x8D, 0x4C, 0xD0, 0xCA, 0x03, 0x21, 0x04, 0x66, 0xEA, 0x7B, 0xF4, 0xBF, 0xD6, 0x76, 0x4C, 0x55, - 0x45, 0xC4, 0xCC, 0x44, 0x24, 0xA5, 0x9C, 0x52, 0xF6, 0x77, 0x98, 0xC9, 0x0C, 0x54, 0xD5, 0x1B, - 0x42, 0x44, 0x44, 0x62, 0x46, 0x22, 0x24, 0x22, 0xFF, 0x6E, 0x25, 0x06, 0xF3, 0xD7, 0x54, 0xCB, - 0xAF, 0xDE, 0x38, 0x33, 0x0D, 0x31, 0x0E, 0x31, 0x72, 0x0C, 0x56, 0xFE, 0x0C, 0xC8, 0x64, 0x66, - 0xE8, 0xE3, 0x56, 0x53, 0x55, 0x2B, 0x34, 0x53, 0x17, 0x84, 0xEA, 0xCF, 0xE6, 0xFF, 0x99, 0xA9, - 0xB5, 0x47, 0x4D, 0x45, 0x54, 0x54, 0x24, 0x4B, 0x16, 0x55, 0x55, 0x11, 0x55, 0xB1, 0xBE, 0xDF, - 0x7E, 0xA6, 0x21, 0x10, 0x07, 0x66, 0x66, 0x22, 0xF2, 0x61, 0x23, 0x02, 0x11, 0x02, 0x00, 0x33, - 0x77, 0x24, 0x5A, 0xE6, 0x82, 0x88, 0xF5, 0xB5, 0xDB, 0x3F, 0xF9, 0x42, 0xF9, 0x4C, 0xEB, 0x1A, - 0x3A, 0x19, 0x03, 0x00, 0xA8, 0x9A, 0x88, 0x00, 0x80, 0xAA, 0xFA, 0xD7, 0x89, 0xA8, 0xDB, 0x88, - 0xB2, 0x86, 0x65, 0xC5, 0x14, 0xFB, 0xD5, 0xB3, 0xD6, 0x0A, 0x42, 0xB7, 0xA4, 0x00, 0x60, 0xAA, - 0xEA, 0x0D, 0xB6, 0x31, 0x38, 0x13, 0x22, 0x12, 0x21, 0x6D, 0x8B, 0x86, 0x18, 0x23, 0x85, 0x10, - 0x42, 0x08, 0x60, 0x96, 0x25, 0xAB, 0x9A, 0x8A, 0x22, 0x51, 0x99, 0x3A, 0x02, 0x21, 0x31, 0x13, - 0x22, 0x70, 0x60, 0x55, 0x45, 0x44, 0x55, 0x93, 0xAC, 0x59, 0x44, 0x6B, 0xBB, 0x3E, 0xF7, 0x35, - 0x6B, 0xCA, 0x92, 0xB2, 0xCE, 0xAB, 0xA4, 0xAC, 0x00, 0xE0, 0x6F, 0x88, 0x99, 0x81, 0x31, 0x11, - 0x18, 0x1C, 0xA6, 0x18, 0x44, 0x0C, 0x41, 0x35, 0x18, 0x98, 0xCD, 0x6B, 0x4A, 0x59, 0x08, 0x31, - 0x04, 0x8E, 0x81, 0x54, 0x35, 0x57, 0x6E, 0x4E, 0xA2, 0x60, 0x80, 0x8E, 0x5E, 0x75, 0x83, 0x22, - 0x33, 0x33, 0x49, 0x99, 0x1E, 0x82, 0xA9, 0x19, 0x88, 0xA8, 0x99, 0x11, 0x11, 0x33, 0x13, 0x62, - 0x36, 0x33, 0x30, 0x42, 0x12, 0x55, 0x33, 0x03, 0x84, 0x94, 0xD5, 0xD4, 0x04, 0x11, 0x32, 0x22, - 0x82, 0xAA, 0x8D, 0x43, 0x58, 0xD7, 0xEC, 0x7C, 0xC0, 0x8C, 0x00, 0x10, 0x03, 0x02, 0x80, 0xA8, - 0x99, 0x59, 0x60, 0x1A, 0x02, 0xEF, 0x86, 0x70, 0x59, 0xF3, 0xE7, 0xE7, 0xD9, 0x00, 0xB4, 0x42, - 0x58, 0xE5, 0x24, 0x50, 0x6B, 0xB0, 0x50, 0xFE, 0x87, 0x80, 0xB4, 0x2D, 0x2C, 0x38, 0xA3, 0x21, - 0x56, 0x2E, 0xB0, 0x02, 0x7B, 0x00, 0x08, 0x58, 0x3E, 0x22, 0x44, 0x03, 0x13, 0x01, 0xE7, 0xD8, - 0x9E, 0x51, 0xCD, 0x77, 0x14, 0xC0, 0xBF, 0xE4, 0x7B, 0xED, 0xAB, 0xBF, 0x66, 0x8D, 0x81, 0x86, - 0x40, 0x3E, 0xE0, 0x6F, 0x1E, 0x2F, 0x29, 0x9B, 0xAA, 0x9D, 0xE6, 0x7C, 0x37, 0xC5, 0x25, 0xA5, - 0x4F, 0x4F, 0x97, 0x7F, 0xF4, 0xF5, 0xC3, 0x6E, 0x8A, 0x08, 0xB8, 0xAE, 0xD9, 0x87, 0x15, 0x08, - 0xD5, 0x40, 0xB5, 0xEF, 0x07, 0x9D, 0x57, 0xD4, 0x6C, 0x00, 0x78, 0xD8, 0x87, 0x39, 0xE9, 0x9A, - 0xD5, 0x87, 0x82, 0x08, 0x81, 0x49, 0xD5, 0x88, 0x48, 0x54, 0x6F, 0x90, 0xC7, 0x67, 0x95, 0xD5, - 0x98, 0x70, 0x88, 0x24, 0x62, 0x00, 0x36, 0x46, 0x0A, 0x4C, 0x97, 0x35, 0xC3, 0x3F, 0x80, 0x61, - 0x3F, 0xF2, 0xF4, 0xEF, 0x3B, 0x8A, 0xF9, 0xE8, 0x0A, 0xD8, 0x76, 0x7F, 0x35, 0x33, 0x44, 0xD8, - 0x0F, 0x0C, 0x00, 0x97, 0x25, 0xFD, 0xE5, 0x9F, 0xBD, 0xFB, 0xF8, 0xB0, 0x47, 0xA2, 0xBA, 0xD0, - 0xD8, 0xB8, 0xBA, 0x71, 0xCE, 0xCD, 0xD7, 0x5F, 0xF7, 0xBE, 0x71, 0x14, 0x80, 0x88, 0x81, 0x15, - 0x6E, 0x44, 0xC4, 0xC6, 0x48, 0x44, 0x88, 0x88, 0x8E, 0x02, 0x1B, 0x4F, 0x9A, 0x33, 0x9B, 0xF9, - 0x76, 0xF7, 0x80, 0x02, 0x60, 0x0E, 0x1F, 0x26, 0xEA, 0xFB, 0x88, 0x00, 0x2A, 0x6A, 0x60, 0x8C, - 0xE4, 0x82, 0x71, 0xA3, 0xEE, 0x7E, 0x1D, 0x6E, 0xC0, 0xCB, 0x51, 0xD2, 0x29, 0x50, 0x4D, 0xC4, - 0x85, 0x75, 0xEB, 0xCB, 0x7A, 0x94, 0x6F, 0x92, 0xC0, 0xFF, 0x35, 0xD8, 0x56, 0xC3, 0x79, 0xC4, - 0x57, 0xC2, 0x51, 0x06, 0x00, 0x9C, 0xA5, 0xDB, 0x77, 0xDB, 0xE7, 0xFD, 0xF4, 0x37, 0xD0, 0x69, - 0x2D, 0x97, 0xC6, 0xA1, 0x76, 0x8D, 0x0D, 0xDD, 0x36, 0x51, 0x54, 0xF7, 0xA2, 0x1F, 0x52, 0x83, - 0xBF, 0x9B, 0xA1, 0x96, 0xF6, 0xAF, 0x24, 0x25, 0xF4, 0xAF, 0xF5, 0x20, 0x5B, 0x65, 0x24, 0x32, - 0x23, 0x21, 0x67, 0x71, 0x09, 0x82, 0x66, 0x40, 0x84, 0x01, 0x99, 0x98, 0x52, 0xCA, 0xFE, 0x3E, - 0xB9, 0x9A, 0x83, 0x8E, 0xAA, 0x80, 0x08, 0xAA, 0x2A, 0xD9, 0x88, 0x8C, 0x18, 0x31, 0x10, 0x31, - 0x89, 0x88, 0xAB, 0x3E, 0xDE, 0x42, 0x8C, 0x26, 0xA2, 0xF3, 0x92, 0xB2, 0x28, 0x02, 0x89, 0x2A, - 0x00, 0x89, 0x2A, 0x33, 0xBE, 0x3F, 0xEE, 0xA6, 0x81, 0x55, 0xE1, 0x30, 0x85, 0x00, 0x00, 0x6A, - 0x36, 0xAF, 0x79, 0x5E, 0xB3, 0x99, 0x21, 0x20, 0x11, 0x8A, 0x9A, 0x28, 0x21, 0xE0, 0x30, 0x30, - 0x63, 0x25, 0x4A, 0x40, 0x22, 0x64, 0x26, 0x66, 0x72, 0x79, 0x04, 0x08, 0xCC, 0x6C, 0x66, 0x43, - 0x0C, 0x95, 0xEC, 0x74, 0x4D, 0x19, 0x01, 0x62, 0x0C, 0xCC, 0xA4, 0x6A, 0xE3, 0x10, 0x53, 0x96, - 0x9C, 0x33, 0x13, 0x89, 0x64, 0x04, 0x18, 0x42, 0x58, 0x53, 0xCE, 0xA2, 0xCE, 0x18, 0xAE, 0x7F, - 0x31, 0xA1, 0x9A, 0x69, 0x52, 0x01, 0x33, 0x73, 0xA0, 0x35, 0x00, 0x24, 0xC4, 0x79, 0xC9, 0x48, - 0xC8, 0x84, 0x43, 0xA0, 0x71, 0xE0, 0x94, 0x35, 0x67, 0xAD, 0x7A, 0x0C, 0x98, 0x0B, 0x5E, 0x30, - 0x74, 0x75, 0x69, 0xDB, 0x0C, 0x13, 0x03, 0xBA, 0x92, 0xF9, 0x58, 0x36, 0xBA, 0x51, 0xDA, 0x35, - 0x7F, 0x8B, 0x98, 0x56, 0xD6, 0x42, 0x44, 0x04, 0x53, 0xF3, 0xDD, 0x05, 0xFF, 0x1F, 0x21, 0x10, - 0xA1, 0x54, 0x4E, 0x70, 0x8A, 0xCA, 0x62, 0x77, 0xBB, 0x80, 0x00, 0xF7, 0xFB, 0xE1, 0xBB, 0xE7, - 0x65, 0x49, 0xB2, 0x1B, 0x82, 0xA8, 0x9D, 0x97, 0x7C, 0xBF, 0x8B, 0x31, 0xD0, 0xFB, 0xFB, 0xDD, - 0x10, 0x99, 0x10, 0xE7, 0x25, 0xAD, 0x29, 0x13, 0x96, 0x15, 0x86, 0xAA, 0x7F, 0xA9, 0xFA, 0x40, - 0x8A, 0x24, 0x44, 0x80, 0x35, 0xAB, 0x19, 0xF8, 0x3B, 0x60, 0x80, 0x05, 0x3A, 0x31, 0x04, 0x54, - 0x35, 0x31, 0xC0, 0x6E, 0x06, 0x8D, 0x3A, 0x09, 0xF1, 0xB2, 0xCA, 0x10, 0xF8, 0x38, 0x05, 0x00, - 0x38, 0xEC, 0xE2, 0xB7, 0x8F, 0x17, 0x35, 0xAB, 0xBA, 0xDE, 0x7F, 0x2F, 0x96, 0x35, 0xF6, 0x28, - 0xEA, 0x09, 0x18, 0xA0, 0x61, 0x13, 0x12, 0xD8, 0xBF, 0x09, 0x6A, 0xF0, 0xE5, 0xFD, 0xF4, 0xD5, - 0xFD, 0x78, 0x9A, 0x57, 0xC4, 0xE9, 0x2F, 0x7E, 0xF6, 0x9E, 0x98, 0xFD, 0xAF, 0xCE, 0x87, 0x4D, - 0x29, 0xB8, 0x69, 0xFF, 0xC7, 0x9E, 0x0A, 0x46, 0x5A, 0xA9, 0xAE, 0x70, 0x54, 0xDD, 0x97, 0xBA, - 0x39, 0x00, 0xD4, 0xE4, 0x6A, 0x6D, 0x11, 0x09, 0xB1, 0x12, 0x42, 0x0F, 0x64, 0x6D, 0x7D, 0x4A, - 0x17, 0x8E, 0x86, 0xA5, 0x6D, 0x00, 0x04, 0x35, 0x73, 0xF1, 0x85, 0x4C, 0x9B, 0xC6, 0x89, 0x05, - 0x30, 0x1A, 0x7E, 0xB9, 0x12, 0xA4, 0x66, 0x66, 0x0A, 0x88, 0x0D, 0x37, 0x6F, 0x56, 0xAF, 0xC9, - 0xB9, 0x9B, 0x59, 0x23, 0x56, 0xA2, 0xBD, 0x82, 0x98, 0x32, 0xEB, 0x5E, 0x51, 0xF2, 0xA5, 0xEB, - 0x61, 0xA8, 0x6B, 0xBC, 0xBC, 0xC6, 0x48, 0x02, 0x8A, 0x8D, 0x06, 0xEA, 0xBA, 0x88, 0x6E, 0x8D, - 0xFB, 0xCB, 0x0D, 0x10, 0x7B, 0x9C, 0xDA, 0x7A, 0xB7, 0x4D, 0x07, 0xEB, 0xF5, 0x3E, 0x27, 0xC8, - 0x0A, 0x76, 0x7A, 0x03, 0x82, 0xDD, 0x6B, 0x00, 0x00, 0xCC, 0x1C, 0x63, 0x40, 0xC0, 0x3C, 0x27, - 0x30, 0x13, 0x71, 0x25, 0x4B, 0x95, 0x0B, 0xF7, 0x10, 0xD1, 0x18, 0x23, 0x31, 0x8A, 0xAB, 0x44, - 0x84, 0x44, 0x18, 0x63, 0x30, 0x53, 0x22, 0x70, 0x51, 0x01, 0x08, 0x84, 0x40, 0xC4, 0x0E, 0x91, - 0xAE, 0x1E, 0x91, 0x9A, 0xA9, 0x11, 0xE1, 0x18, 0x78, 0x05, 0xDD, 0x8D, 0x31, 0x8B, 0x70, 0x92, - 0xE3, 0x6E, 0xB8, 0x3F, 0x8C, 0xC7, 0xFD, 0x48, 0x84, 0x29, 0x49, 0x00, 0x00, 0x55, 0x5B, 0x4D, - 0x7C, 0xE9, 0x09, 0xC0, 0xC4, 0xCC, 0x4C, 0xC4, 0x62, 0x20, 0x53, 0x32, 0x2A, 0xD8, 0x1F, 0x03, - 0x23, 0x60, 0x0C, 0x1C, 0x22, 0x6F, 0xAB, 0xC9, 0xE4, 0x52, 0xB1, 0x49, 0x1A, 0x51, 0x73, 0xE9, - 0xA0, 0x85, 0x10, 0x41, 0x0D, 0xDC, 0x32, 0x5D, 0xD7, 0x0C, 0x00, 0xBB, 0x29, 0xBE, 0x9C, 0x97, - 0x4F, 0x9F, 0x4F, 0x44, 0xA8, 0x66, 0xEB, 0x9A, 0x2F, 0xCB, 0xCA, 0x44, 0xCE, 0x36, 0x2E, 0xFF, - 0x44, 0x9C, 0xB4, 0x60, 0x88, 0x01, 0x11, 0x52, 0x96, 0xA5, 0x70, 0x3E, 0x8A, 0x9A, 0x96, 0x9F, - 0x9B, 0x99, 0xE9, 0x32, 0x6A, 0xE3, 0x84, 0x4D, 0x81, 0x2A, 0x54, 0x85, 0x6E, 0x21, 0x3B, 0x04, - 0x10, 0x16, 0x95, 0xCA, 0x75, 0x4C, 0x43, 0x2C, 0x64, 0x0F, 0x68, 0xB6, 0x69, 0xCE, 0x1B, 0x7B, - 0x20, 0x8A, 0xEA, 0x17, 0xF7, 0xE3, 0x18, 0xF9, 0xE9, 0xBC, 0x66, 0xC6, 0x35, 0xAB, 0xA8, 0xD3, - 0x3B, 0xEE, 0x06, 0x06, 0x83, 0xE3, 0x3E, 0x8A, 0x9A, 0x9A, 0x89, 0xC2, 0x9A, 0xF5, 0xB8, 0x0B, - 0x5F, 0xDC, 0x4F, 0xFB, 0x29, 0x1E, 0x76, 0x71, 0x37, 0x06, 0x33, 0x43, 0x84, 0x24, 0xF2, 0xC3, - 0xCB, 0xFC, 0x7C, 0x59, 0x09, 0x29, 0x9B, 0x12, 0xFA, 0x14, 0x8A, 0x58, 0x6B, 0x24, 0xE4, 0xF4, - 0xB7, 0x66, 0x55, 0xB3, 0x21, 0x10, 0x02, 0x24, 0x05, 0x30, 0xC8, 0x62, 0x4C, 0x98, 0xC4, 0x7A, - 0x24, 0x21, 0x44, 0x40, 0xAC, 0xDA, 0x25, 0xAC, 0x59, 0x5F, 0xE6, 0x44, 0x08, 0xEF, 0xEF, 0x26, - 0xFF, 0x55, 0x14, 0x7A, 0x3E, 0x80, 0xBA, 0x5C, 0x6F, 0x3D, 0x58, 0x4D, 0x8A, 0xC2, 0x6F, 0xFE, - 0xC5, 0xF6, 0xEB, 0x2D, 0x53, 0xB9, 0xFA, 0x61, 0x7A, 0x18, 0x79, 0xBF, 0x8B, 0xEF, 0xEE, 0xA7, - 0xFD, 0x34, 0xEE, 0xA6, 0x51, 0xAB, 0x2E, 0xD6, 0x56, 0xB2, 0xFD, 0x6A, 0xD7, 0xEA, 0xD8, 0xEB, - 0xA7, 0xD7, 0x7A, 0x0A, 0x93, 0x81, 0x76, 0xA2, 0x08, 0xAA, 0x22, 0x60, 0x48, 0x06, 0x4D, 0x7F, - 0x6A, 0xCD, 0x6A, 0x9B, 0x86, 0xB6, 0xD6, 0x10, 0x31, 0x30, 0x0D, 0x21, 0xC2, 0x15, 0x03, 0x6F, - 0xAC, 0x0E, 0x75, 0x7A, 0x06, 0xC5, 0x61, 0x51, 0x7E, 0x2D, 0x64, 0x54, 0xF1, 0x4B, 0xB5, 0xD9, - 0x6B, 0x52, 0xD5, 0xA2, 0xA2, 0xB0, 0x82, 0x6D, 0x5A, 0x0F, 0x5A, 0xAF, 0x06, 0x11, 0xE1, 0xF6, - 0xE2, 0xF5, 0x1C, 0x7B, 0xDB, 0xDD, 0x3F, 0xE9, 0xF1, 0xAB, 0xEA, 0x3B, 0xDB, 0xDE, 0xDC, 0x40, - 0xB3, 0xA1, 0x81, 0x6E, 0xEB, 0xD9, 0x10, 0xB1, 0xFF, 0xCA, 0x0D, 0xF4, 0xB4, 0x01, 0xF4, 0x6D, - 0x22, 0x01, 0x02, 0x98, 0xB6, 0x06, 0x4A, 0x17, 0x65, 0x39, 0x00, 0xDA, 0xEC, 0x1C, 0x13, 0xFB, - 0xC1, 0xF4, 0x1D, 0xF9, 0x87, 0x4C, 0x80, 0x82, 0xD9, 0x14, 0x15, 0xD7, 0x25, 0xDB, 0x50, 0xB6, - 0x8C, 0x10, 0x98, 0x89, 0x18, 0x99, 0xC9, 0xD4, 0x88, 0x89, 0x08, 0x89, 0x10, 0x31, 0x00, 0x40, - 0xD5, 0x69, 0xCB, 0xD8, 0x98, 0xB9, 0xAE, 0x06, 0x18, 0x21, 0x12, 0x32, 0x53, 0x0C, 0x7C, 0x9E, - 0x93, 0xA8, 0xAD, 0x8B, 0xAE, 0x49, 0xD2, 0x50, 0x1C, 0x0D, 0xCC, 0xA1, 0xB4, 0xD2, 0x3F, 0x02, - 0x86, 0x00, 0xA6, 0xA0, 0xAE, 0x1B, 0x81, 0x4D, 0x43, 0x8C, 0x81, 0x8A, 0x9E, 0x0B, 0x48, 0xEC, - 0x32, 0x10, 0xDC, 0xD8, 0x7F, 0x0D, 0xD2, 0x11, 0xDD, 0x69, 0xA2, 0x56, 0xA1, 0xC7, 0xCC, 0x22, - 0x10, 0x11, 0x1D, 0xF7, 0xA3, 0x81, 0xA9, 0xDA, 0x5E, 0x0D, 0xDF, 0x01, 0x33, 0x01, 0x20, 0x21, - 0x64, 0xD1, 0xCF, 0xCF, 0x17, 0x03, 0x5B, 0xD6, 0xBC, 0x66, 0xC9, 0xA2, 0x66, 0x38, 0x46, 0xDE, - 0x8D, 0x43, 0x8C, 0xAE, 0xF1, 0x15, 0x05, 0x5F, 0xD5, 0x88, 0x10, 0x17, 0x48, 0x49, 0x0B, 0x54, - 0x55, 0x14, 0xF3, 0x55, 0xD5, 0x5E, 0xC0, 0x00, 0x18, 0x80, 0x98, 0x6B, 0x13, 0x65, 0xD1, 0xB5, - 0xC1, 0x5C, 0xC7, 0xCE, 0x76, 0xAB, 0xAA, 0x5D, 0x3D, 0x66, 0x76, 0xB7, 0x8B, 0x6A, 0xF6, 0xF9, - 0xB4, 0x9E, 0x17, 0x89, 0x8C, 0x91, 0x5D, 0xC5, 0x45, 0x00, 0xCB, 0x6A, 0x7B, 0xC2, 0x2C, 0xF6, - 0x7C, 0x49, 0x4B, 0x52, 0x05, 0x58, 0xB3, 0x1C, 0xA7, 0xF1, 0xEB, 0xF7, 0x87, 0x94, 0x95, 0xD0, - 0x15, 0x07, 0xFC, 0xDB, 0xDF, 0xFF, 0xF0, 0xDD, 0xE7, 0xCB, 0x22, 0x9A, 0xC5, 0x39, 0xC7, 0xE9, - 0xBB, 0xF0, 0x40, 0xED, 0xE7, 0x4A, 0xDA, 0x21, 0xE0, 0x9A, 0xD5, 0xED, 0x11, 0x9F, 0xA3, 0xCA, - 0xED, 0x08, 0xB5, 0xFB, 0x0E, 0x02, 0x44, 0xA6, 0xC3, 0x14, 0xC6, 0x81, 0xD7, 0x94, 0x01, 0x70, - 0x59, 0x15, 0x00, 0x68, 0x23, 0x63, 0x43, 0x84, 0xA2, 0x4E, 0xBE, 0x52, 0x8C, 0x10, 0x8A, 0x06, - 0xE4, 0x0B, 0x62, 0x86, 0x08, 0x0A, 0x80, 0x70, 0xCD, 0x2A, 0xBD, 0x23, 0x46, 0x4D, 0x3F, 0x1E, - 0xC7, 0x2F, 0x1E, 0xF6, 0x1F, 0xDF, 0x1D, 0x86, 0x21, 0x6E, 0x84, 0x5F, 0x99, 0xCD, 0x99, 0xDF, - 0x1D, 0x40, 0x00, 0x57, 0x38, 0xD8, 0x2F, 0x2F, 0x74, 0x2A, 0x49, 0x6F, 0xC7, 0x99, 0x19, 0x02, - 0x9A, 0x9A, 0xE1, 0x86, 0x14, 0x88, 0xC5, 0x0F, 0xEB, 0xAA, 0x13, 0x12, 0xBA, 0xAA, 0x95, 0x55, - 0x9D, 0x08, 0x88, 0x50, 0x64, 0x63, 0x57, 0x42, 0x9C, 0xC6, 0xB1, 0xB9, 0xD2, 0x5C, 0x43, 0x0C, - 0x21, 0xB4, 0xE5, 0xB6, 0x6B, 0x43, 0xAC, 0xB8, 0x88, 0x2B, 0xDC, 0xF8, 0x14, 0xDC, 0x31, 0xA2, - 0xE5, 0xBF, 0x8D, 0xE5, 0x6E, 0x98, 0xDF, 0xAC, 0x89, 0x42, 0x24, 0x72, 0x1D, 0x0F, 0x7C, 0x48, - 0x6D, 0x3C, 0xDD, 0xCB, 0x6A, 0xC6, 0xB5, 0x11, 0x64, 0x66, 0xE8, 0x40, 0xA1, 0x5F, 0x46, 0x00, - 0x70, 0xD7, 0x21, 0x22, 0x42, 0x9D, 0x42, 0xE5, 0x7C, 0x6D, 0x20, 0xE2, 0xAD, 0x83, 0xD5, 0xDE, - 0x8B, 0x38, 0x2A, 0x9A, 0x97, 0x2B, 0xFE, 0x0D, 0x8C, 0x6E, 0x90, 0x08, 0x08, 0xC0, 0xAE, 0xB0, - 0xD2, 0xE7, 0xAB, 0x1D, 0x06, 0xDF, 0x20, 0x63, 0x2F, 0x15, 0xCC, 0x9A, 0x7A, 0x01, 0x88, 0xC0, - 0x40, 0x08, 0x20, 0xAA, 0x54, 0x76, 0x1F, 0x10, 0x49, 0xCD, 0x02, 0x32, 0x12, 0x19, 0x29, 0x62, - 0x71, 0x0E, 0x78, 0x0B, 0xCC, 0x08, 0x40, 0x66, 0x26, 0xB2, 0xAD, 0x2D, 0x00, 0xB8, 0x66, 0x87, - 0x00, 0x84, 0x34, 0x84, 0xA0, 0x83, 0x9D, 0xE6, 0xD5, 0xD4, 0x44, 0x6D, 0x5E, 0xF3, 0x9A, 0x24, - 0x8B, 0x46, 0x33, 0x22, 0x0C, 0xA5, 0x2D, 0x02, 0x46, 0x72, 0x07, 0x0D, 0x00, 0x28, 0x18, 0x16, - 0x53, 0x4B, 0x00, 0x00, 0x71, 0x88, 0x01, 0xB0, 0xAC, 0x8E, 0x01, 0x60, 0x0C, 0xDC, 0x1B, 0xF0, - 0x00, 0x37, 0x6C, 0x61, 0x08, 0x44, 0x7C, 0x4B, 0xD0, 0x6D, 0x21, 0xA6, 0xA9, 0x88, 0x47, 0x42, - 0x24, 0xA6, 0x03, 0xF3, 0x34, 0x0D, 0x22, 0x9A, 0x45, 0xCE, 0x97, 0xF5, 0xBB, 0xC7, 0xD3, 0x65, - 0x4E, 0xAA, 0xB4, 0xE6, 0x8C, 0x04, 0x31, 0xF0, 0x61, 0x8A, 0xEE, 0xFE, 0x77, 0x0C, 0x50, 0xB5, - 0x94, 0x57, 0x77, 0x09, 0x6E, 0xC2, 0xAE, 0x91, 0x4D, 0x27, 0xC0, 0x7B, 0x56, 0xE9, 0x41, 0xC2, - 0xAC, 0xA9, 0x42, 0x3E, 0xDA, 0x46, 0x00, 0x0D, 0xCD, 0x5C, 0x55, 0x2F, 0xE6, 0xAA, 0x98, 0x5D, - 0x2E, 0xE2, 0xCE, 0xB8, 0xAC, 0x30, 0x20, 0x22, 0x00, 0x12, 0xA8, 0x82, 0x88, 0xCD, 0x49, 0x44, - 0x4D, 0x2A, 0x25, 0x29, 0xC0, 0x2A, 0x3A, 0x2F, 0x39, 0x38, 0xE8, 0x03, 0x3E, 0x9D, 0xE6, 0x3F, - 0x7E, 0x3A, 0x0F, 0x81, 0x46, 0x24, 0x51, 0x49, 0xE2, 0xBE, 0xF3, 0xD6, 0x51, 0xF5, 0xD0, 0xBC, - 0x56, 0x56, 0x6C, 0x1B, 0xD0, 0xEB, 0xA7, 0x70, 0x11, 0x00, 0x00, 0xC4, 0x80, 0xBB, 0x18, 0x76, - 0x03, 0xDF, 0xED, 0xA2, 0x81, 0x1D, 0xF7, 0xC3, 0x79, 0x4E, 0x88, 0x05, 0x9E, 0xAA, 0xA0, 0xC6, - 0xD2, 0x62, 0x93, 0xDE, 0xB5, 0x4B, 0x02, 0x73, 0x12, 0xF4, 0x81, 0x80, 0x99, 0x1B, 0x69, 0x50, - 0x4D, 0x8E, 0xD6, 0xA3, 0x99, 0x0D, 0x81, 0x76, 0x91, 0xD7, 0x2C, 0x3F, 0xFB, 0xE2, 0xFE, 0xCF, - 0x3E, 0x1E, 0xF7, 0xBB, 0x21, 0xC4, 0xD8, 0x2F, 0x75, 0xFB, 0xC1, 0x9D, 0x3E, 0x4D, 0xB9, 0x78, - 0x6B, 0x86, 0xDB, 0xCB, 0x15, 0x39, 0xA4, 0x3A, 0xF5, 0xCB, 0x90, 0x0B, 0x7C, 0xA3, 0x31, 0x13, - 0x56, 0x83, 0xC8, 0x7F, 0x20, 0x2E, 0xDC, 0xE0, 0x5E, 0x00, 0xAB, 0x6A, 0x04, 0x11, 0xAA, 0xBA, - 0x1F, 0x07, 0xC7, 0x21, 0x12, 0x91, 0x4B, 0x78, 0xB3, 0xE2, 0x05, 0xEF, 0x21, 0xF5, 0x86, 0x5A, - 0xD0, 0xB6, 0xF1, 0xB4, 0x17, 0x0A, 0x8A, 0x99, 0xB9, 0x41, 0x60, 0x55, 0x81, 0xE9, 0x15, 0xA5, - 0x2A, 0xBC, 0x5D, 0x9F, 0x02, 0x03, 0x73, 0x7D, 0x99, 0x2A, 0xAB, 0x5B, 0xE7, 0x37, 0xF4, 0xAF, - 0xAB, 0xAA, 0x3B, 0x67, 0xA0, 0xA3, 0x52, 0xC7, 0x7D, 0x5F, 0xBA, 0x86, 0x62, 0x8D, 0x7D, 0xAE, - 0x7D, 0xFC, 0xDA, 0x4F, 0x04, 0x5D, 0x37, 0x47, 0xE8, 0xBD, 0xC3, 0xE0, 0xFE, 0x44, 0x00, 0x20, - 0xDF, 0x91, 0xD2, 0xEF, 0x15, 0x0C, 0x35, 0x16, 0xE8, 0xA6, 0xEC, 0x4E, 0x77, 0xEC, 0x24, 0x59, - 0xBF, 0x5F, 0x76, 0xAD, 0x77, 0xFB, 0xC0, 0x8A, 0x67, 0x9C, 0x8A, 0x29, 0x56, 0xBD, 0xE7, 0x80, - 0x88, 0x46, 0x00, 0x68, 0x06, 0x4C, 0x68, 0xD5, 0xBF, 0x49, 0xAD, 0x35, 0x77, 0x11, 0x98, 0x19, - 0x11, 0x98, 0x75, 0xDE, 0x12, 0xDF, 0x32, 0x55, 0x04, 0x22, 0xC6, 0x18, 0x78, 0x3F, 0xC6, 0x94, - 0x34, 0x04, 0x3A, 0xEE, 0x87, 0xBB, 0xFD, 0x80, 0x88, 0x39, 0x0B, 0x22, 0x04, 0x3F, 0x7A, 0xE4, - 0xD7, 0xB4, 0x05, 0xA0, 0x60, 0x6C, 0x98, 0xB2, 0x22, 0xAC, 0x29, 0x13, 0x11, 0xC5, 0x40, 0x31, - 0x84, 0x21, 0xB0, 0xAB, 0x72, 0x3D, 0x81, 0xDE, 0x50, 0x30, 0x34, 0x1F, 0x56, 0xA7, 0x32, 0xA8, - 0x36, 0x9B, 0x0F, 0x89, 0x30, 0x65, 0xCD, 0xAA, 0x03, 0xC2, 0x9C, 0x65, 0x5E, 0xD3, 0x10, 0xE2, - 0x34, 0xC4, 0xC8, 0xCC, 0x8C, 0x7F, 0xFF, 0xCD, 0xD3, 0xB2, 0x66, 0x44, 0xD8, 0x4F, 0xC3, 0x6E, - 0x8A, 0x86, 0x38, 0xAF, 0x89, 0x10, 0x0D, 0x60, 0x4D, 0x32, 0xAF, 0x59, 0xD5, 0x10, 0x01, 0x0C, - 0xAD, 0x03, 0x1E, 0x2B, 0x44, 0x58, 0x97, 0xB8, 0xA3, 0xD0, 0xEB, 0x11, 0x82, 0x3B, 0x4C, 0xCC, - 0xA0, 0x1E, 0x6D, 0xA1, 0x0B, 0xB7, 0xF6, 0xBA, 0x0F, 0xBE, 0x9E, 0x21, 0xC0, 0x69, 0x16, 0x42, - 0x18, 0x02, 0xB9, 0xF3, 0x7D, 0xCD, 0x9B, 0x8B, 0xC1, 0x00, 0xD4, 0xE0, 0xBC, 0x0A, 0x34, 0x34, - 0x32, 0x30, 0xB3, 0x71, 0x08, 0x31, 0xD0, 0xB2, 0xE6, 0x1F, 0x9E, 0x2F, 0x4F, 0x97, 0x64, 0x00, - 0xAB, 0x68, 0x64, 0x9C, 0x22, 0x9B, 0xA9, 0xF8, 0xC9, 0xC7, 0x8D, 0x5D, 0xB0, 0x3D, 0xAE, 0x6D, - 0x00, 0x20, 0x10, 0xA0, 0x81, 0xAB, 0x46, 0xDB, 0xF2, 0xF6, 0xD3, 0x71, 0x3C, 0x62, 0xC4, 0xBB, - 0x5D, 0xF8, 0xEA, 0x61, 0x6F, 0x00, 0x97, 0x94, 0x22, 0xB3, 0x59, 0x4A, 0xA2, 0x8C, 0x75, 0xC6, - 0x15, 0xA0, 0x6A, 0xC3, 0x45, 0x2D, 0x04, 0x28, 0xA8, 0x5A, 0xF5, 0x11, 0x6C, 0xAF, 0x36, 0x8F, - 0x54, 0x5D, 0x11, 0xC7, 0x40, 0x03, 0xB3, 0xAF, 0xDE, 0x4D, 0x3F, 0xFF, 0xFA, 0xDD, 0x6E, 0x0C, - 0x6A, 0xC0, 0xBC, 0x91, 0x0F, 0x76, 0x46, 0x47, 0x4A, 0x09, 0x00, 0x62, 0x8C, 0x6F, 0x8C, 0xF9, - 0x35, 0xBD, 0x99, 0x39, 0xC9, 0x8A, 0x5E, 0x59, 0x19, 0x00, 0xD5, 0x1A, 0x36, 0x54, 0x54, 0x25, - 0x2A, 0x00, 0x4B, 0xD5, 0x0B, 0xE5, 0x3D, 0xAA, 0x9A, 0x9A, 0xA9, 0xF5, 0x98, 0x0D, 0x08, 0x91, - 0x39, 0x86, 0xC8, 0xCC, 0x3E, 0xC8, 0x9C, 0x33, 0x54, 0xF6, 0xB0, 0xEA, 0xB1, 0xEE, 0xB5, 0x0C, - 0xEF, 0xD5, 0xAE, 0xB4, 0x9E, 0xC2, 0x96, 0x04, 0x28, 0x1B, 0x6D, 0x6F, 0x7A, 0xDC, 0xA6, 0xC5, - 0x98, 0xAF, 0x91, 0x21, 0x35, 0xF1, 0x83, 0x6D, 0x61, 0xBD, 0xD3, 0x36, 0x59, 0x6F, 0xBF, 0xE9, - 0xAA, 0x9D, 0x7A, 0x64, 0xAE, 0x7C, 0xF5, 0x5D, 0xB8, 0x2D, 0xDB, 0xBA, 0x2B, 0xC7, 0x66, 0x58, - 0x4C, 0x51, 0x73, 0x5D, 0x6B, 0xD3, 0x79, 0x6F, 0xE9, 0xAA, 0x0C, 0xC0, 0x4D, 0x76, 0x55, 0xAB, - 0xBA, 0x45, 0x73, 0x62, 0x16, 0xE7, 0x7A, 0x47, 0x83, 0x75, 0x38, 0xD8, 0xD4, 0x82, 0x1E, 0xB9, - 0x7A, 0x20, 0xC3, 0xEE, 0x05, 0x33, 0xAB, 0xC6, 0x31, 0x82, 0x47, 0x26, 0x54, 0xD1, 0xE3, 0xC3, - 0x31, 0x8F, 0x6A, 0xE8, 0x46, 0xDB, 0xBA, 0xEB, 0x7E, 0xED, 0xEC, 0xF0, 0xBA, 0x88, 0x44, 0x45, - 0x22, 0x30, 0x11, 0x11, 0x9A, 0xC1, 0x38, 0xC4, 0x18, 0x58, 0xD4, 0x54, 0x15, 0x11, 0x82, 0x37, - 0xA9, 0x56, 0x24, 0x11, 0x34, 0x9F, 0xA8, 0x81, 0xBB, 0xA5, 0x11, 0x51, 0xD4, 0x0C, 0x34, 0x18, - 0x60, 0x60, 0x04, 0x20, 0xC6, 0x1E, 0xA4, 0x5E, 0x53, 0x67, 0xE7, 0xE3, 0x00, 0xA8, 0x5A, 0xB1, - 0x7F, 0xA0, 0x06, 0x92, 0xD5, 0x17, 0x31, 0x67, 0x11, 0x51, 0x15, 0xCD, 0x22, 0xA2, 0x46, 0x80, - 0x43, 0x1C, 0x95, 0x70, 0x8C, 0xE1, 0xDD, 0x71, 0x4A, 0x59, 0xA6, 0x21, 0x12, 0xE1, 0xF9, 0xB2, - 0xFA, 0xF9, 0xAB, 0xF7, 0xB5, 0x24, 0xC9, 0x6A, 0x6A, 0x2E, 0xEE, 0x5C, 0xC3, 0x28, 0xFA, 0x54, - 0x03, 0x35, 0x2B, 0x4E, 0x5C, 0xB4, 0x57, 0x9E, 0xE6, 0x1E, 0x6F, 0xB5, 0x90, 0xD4, 0x95, 0xDB, - 0x08, 0x71, 0x6B, 0xAD, 0xC3, 0x41, 0x50, 0xB3, 0x25, 0x17, 0x39, 0x4C, 0x08, 0x06, 0xC5, 0x61, - 0x4F, 0xDB, 0xD6, 0x22, 0x23, 0x26, 0x35, 0x26, 0xCC, 0x62, 0xCB, 0x9A, 0x52, 0xC2, 0xF3, 0x92, - 0x1E, 0x4F, 0xAB, 0x01, 0x10, 0xE1, 0x92, 0x64, 0x49, 0x30, 0x04, 0x3A, 0x4E, 0x7C, 0x5A, 0x44, - 0xD5, 0xCA, 0x59, 0xD3, 0xAB, 0x9D, 0xF3, 0x1E, 0xD1, 0xDC, 0x4F, 0x68, 0x04, 0x80, 0x00, 0x0A, - 0xDB, 0xDE, 0x3B, 0x75, 0x68, 0x25, 0x0D, 0x42, 0x73, 0xF2, 0x00, 0x04, 0x33, 0x63, 0xC4, 0x35, - 0xCB, 0x79, 0xC9, 0xA5, 0xA1, 0x8A, 0x4E, 0xED, 0x37, 0x32, 0x00, 0xC7, 0x83, 0x1F, 0x53, 0xF7, - 0x9A, 0x67, 0xB7, 0x7D, 0xCB, 0xCC, 0xC0, 0x98, 0x30, 0x65, 0xFB, 0xC5, 0x97, 0xFB, 0x5F, 0x7C, - 0xFD, 0x6E, 0xB7, 0x1B, 0x01, 0x20, 0xBC, 0xE5, 0x7F, 0x69, 0x54, 0x71, 0x43, 0x1E, 0x8D, 0x0D, - 0x6E, 0x3F, 0x51, 0x13, 0xC9, 0xAA, 0x9A, 0x53, 0x6E, 0xEA, 0x58, 0x73, 0xF9, 0x57, 0x08, 0x35, - 0x33, 0xAC, 0x2A, 0x9E, 0x6F, 0xFC, 0xD6, 0xB7, 0xB7, 0xE8, 0x24, 0x5E, 0x08, 0x00, 0x21, 0x84, - 0x10, 0x43, 0x70, 0xB0, 0x20, 0xA2, 0x9C, 0x73, 0xCF, 0x72, 0xF0, 0xCA, 0x8E, 0xC3, 0xAA, 0x25, - 0xB5, 0x17, 0xDA, 0x50, 0xB1, 0xD2, 0x52, 0x3F, 0xF2, 0xD7, 0x94, 0x8F, 0xC5, 0xE8, 0xBD, 0x72, - 0xEA, 0xBD, 0xFE, 0x4A, 0x0F, 0x07, 0x66, 0x26, 0x02, 0x88, 0x57, 0x1E, 0xFA, 0xA6, 0x3F, 0xD6, - 0x17, 0xB4, 0x90, 0x00, 0x40, 0x19, 0x05, 0x16, 0xDD, 0x0D, 0x0C, 0x04, 0x4A, 0x9C, 0x00, 0x02, - 0xBA, 0x75, 0xD8, 0x81, 0x5A, 0xD9, 0x64, 0x47, 0x59, 0x9F, 0x95, 0x76, 0x13, 0x29, 0xD3, 0x6C, - 0xE7, 0xE5, 0x05, 0x28, 0x37, 0x31, 0xBB, 0xC1, 0xF4, 0x5B, 0xBB, 0xDC, 0x2F, 0x26, 0xB4, 0xA3, - 0x64, 0xAC, 0x67, 0xC9, 0xD5, 0x8F, 0xE1, 0x76, 0x6E, 0x60, 0x0F, 0xB9, 0xA0, 0xFE, 0xAC, 0xF9, - 0xAD, 0xC5, 0xF4, 0x6E, 0x37, 0x89, 0xD8, 0xA2, 0x55, 0x88, 0x0C, 0x02, 0x8E, 0x10, 0x45, 0xC5, - 0x9D, 0x54, 0x58, 0x3B, 0x0D, 0xB5, 0xA1, 0xA2, 0x4D, 0x0C, 0x81, 0xC1, 0x2C, 0x67, 0xF5, 0x61, - 0xB1, 0x6B, 0xA5, 0x08, 0x43, 0xE4, 0xFD, 0x34, 0x4E, 0x63, 0x64, 0xA6, 0x10, 0x36, 0x31, 0xD2, - 0x04, 0xD7, 0x0D, 0xA5, 0x6A, 0x75, 0x21, 0x15, 0x03, 0x4D, 0xA1, 0x39, 0x3F, 0x00, 0x40, 0xD5, - 0x96, 0x75, 0x71, 0xFB, 0x7B, 0x5E, 0x12, 0x20, 0x30, 0xD1, 0x30, 0x04, 0x37, 0x1B, 0x43, 0x08, - 0x5F, 0x7D, 0xB8, 0x5B, 0x53, 0x5E, 0xB3, 0xA4, 0x2C, 0x04, 0x18, 0x02, 0x9F, 0xE6, 0x74, 0x99, - 0x73, 0x0C, 0x94, 0x44, 0xB3, 0xA8, 0x99, 0x49, 0x39, 0x8F, 0xC3, 0x06, 0x49, 0x57, 0xEB, 0x02, - 0xD0, 0xA3, 0x58, 0xED, 0xBA, 0x8B, 0xB5, 0xA9, 0x1E, 0x8D, 0x5E, 0x6B, 0x6B, 0x3B, 0xE5, 0xFA, - 0x1D, 0xC0, 0x2D, 0xCB, 0xF9, 0xA3, 0x08, 0x68, 0x40, 0xC5, 0x57, 0x8F, 0x59, 0x0C, 0x10, 0xEF, - 0x77, 0x61, 0x49, 0x9A, 0x45, 0x10, 0x80, 0x10, 0x4E, 0x4B, 0x66, 0x84, 0x35, 0xEB, 0x10, 0xD9, - 0x9D, 0x65, 0x50, 0xBD, 0x5D, 0xBB, 0x81, 0x01, 0xF0, 0xB4, 0xA4, 0x02, 0x54, 0x55, 0x64, 0xDD, - 0x32, 0x06, 0x42, 0xF5, 0x58, 0xBD, 0x1A, 0x8D, 0xFF, 0xB5, 0x6A, 0x80, 0x43, 0x20, 0x26, 0xFA, - 0x7C, 0x5A, 0xD6, 0x2C, 0x1E, 0x08, 0x92, 0x45, 0xB5, 0x5A, 0x58, 0xAF, 0xE9, 0xEF, 0x4D, 0x0B, - 0xEF, 0x2D, 0xB6, 0x84, 0xA2, 0x99, 0xAA, 0x4E, 0x91, 0x10, 0x71, 0xCD, 0x72, 0x18, 0xE9, 0x27, - 0x1F, 0x0E, 0x87, 0xC3, 0xA4, 0x9D, 0xA7, 0xB9, 0xFF, 0x7A, 0xDD, 0xE2, 0x22, 0xAE, 0xDC, 0xE2, - 0xB8, 0x89, 0xF6, 0x2A, 0x92, 0x1C, 0x8A, 0x2F, 0xD0, 0xCC, 0x3C, 0x82, 0x48, 0xAA, 0x5D, 0xD9, - 0x24, 0xA5, 0xF9, 0xE1, 0x36, 0x02, 0x12, 0x54, 0xD0, 0x53, 0x34, 0x56, 0x35, 0xE3, 0xF2, 0x5E, - 0xA7, 0x9B, 0x39, 0xAF, 0x1A, 0x21, 0x19, 0x5B, 0x60, 0x6E, 0xF1, 0x59, 0xD5, 0x0B, 0xD1, 0x14, - 0x87, 0x2D, 0xE2, 0xA1, 0x19, 0x16, 0x95, 0xC3, 0xCD, 0xAE, 0x0F, 0x3D, 0xDB, 0x4F, 0xDE, 0x78, - 0x59, 0xC3, 0x4E, 0xFD, 0x7F, 0x93, 0x48, 0xDE, 0x5C, 0xD2, 0x36, 0xFD, 0xF6, 0xB3, 0xDB, 0x8C, - 0xCD, 0x3F, 0xD6, 0x3E, 0xF7, 0xA7, 0x12, 0x46, 0x81, 0x66, 0xD7, 0x4D, 0x7C, 0xF3, 0xA9, 0x79, - 0xA8, 0x6B, 0x18, 0xC7, 0xCD, 0x18, 0xDE, 0x84, 0x1B, 0x55, 0xCD, 0x39, 0x97, 0x48, 0x94, 0x36, - 0x12, 0x03, 0xC9, 0x1B, 0x84, 0x79, 0xC7, 0xFD, 0x48, 0x6E, 0x1A, 0xBC, 0x41, 0x7F, 0x5F, 0x4C, - 0x66, 0x42, 0x40, 0x33, 0xA5, 0x2E, 0xFC, 0x4D, 0x4C, 0x97, 0x35, 0xA9, 0xDA, 0x34, 0x45, 0x57, - 0xA6, 0x9A, 0x26, 0x6D, 0xAF, 0x62, 0x44, 0xAA, 0x1D, 0xEA, 0xCB, 0x62, 0x15, 0x40, 0xBA, 0x19, - 0x55, 0x45, 0xC4, 0xBF, 0x98, 0x55, 0x87, 0xC0, 0x88, 0x28, 0xA2, 0xC1, 0x17, 0x05, 0x01, 0x10, - 0x81, 0x7D, 0x77, 0x11, 0x63, 0x44, 0x26, 0xF4, 0x60, 0x54, 0x35, 0x8D, 0x81, 0x87, 0x18, 0x63, - 0x64, 0x8F, 0x3F, 0xC4, 0xCE, 0x7C, 0xE8, 0x57, 0xBC, 0xF5, 0x87, 0x88, 0x88, 0x94, 0xB3, 0xB4, - 0xCF, 0xDD, 0x31, 0xB1, 0x7D, 0x17, 0xEC, 0xB2, 0xA4, 0xC0, 0x64, 0x06, 0x39, 0x4B, 0x8C, 0x61, - 0x1A, 0xA2, 0x47, 0x75, 0xC4, 0xC0, 0xAE, 0xFE, 0xB2, 0x12, 0x79, 0x88, 0x0E, 0x40, 0x60, 0xDA, - 0x8D, 0x31, 0x67, 0x0D, 0x4C, 0x80, 0x78, 0x5E, 0x72, 0x15, 0x5C, 0x00, 0x9D, 0xFF, 0xBE, 0x8D, - 0x81, 0xEA, 0x02, 0x34, 0x3A, 0xAA, 0x82, 0xBA, 0x70, 0xA7, 0x95, 0x65, 0x79, 0x03, 0x1F, 0xCA, - 0xC2, 0xB9, 0xE5, 0x7A, 0xFD, 0xB9, 0x13, 0x4E, 0xF9, 0x5A, 0xD1, 0x12, 0x8A, 0x34, 0x43, 0x80, - 0x79, 0x95, 0x55, 0x8C, 0x09, 0x91, 0x60, 0x8C, 0x9C, 0xB3, 0x3C, 0xAD, 0x62, 0x6A, 0x0A, 0x90, - 0x45, 0x77, 0x03, 0xA7, 0xAC, 0x86, 0x48, 0x84, 0x77, 0xBB, 0xE1, 0x30, 0x19, 0xBF, 0xC0, 0x79, - 0x95, 0x94, 0x8B, 0xB2, 0x7D, 0xC3, 0x12, 0x57, 0x74, 0x0F, 0xD5, 0x72, 0xDE, 0xCC, 0x42, 0x00, - 0xF7, 0xDC, 0x1B, 0x12, 0xE2, 0x14, 0x79, 0x8A, 0x7C, 0x5A, 0xD2, 0x69, 0x4E, 0x39, 0xF0, 0xDD, - 0x3E, 0x22, 0xF2, 0xA7, 0xE7, 0x45, 0xB5, 0x28, 0x98, 0x37, 0x24, 0xFE, 0xDF, 0x7C, 0xEA, 0x9B, - 0xE5, 0x1C, 0x2A, 0x06, 0xFA, 0x27, 0x3F, 0xFF, 0x70, 0x9E, 0x97, 0xF3, 0x9C, 0x7E, 0xF9, 0x93, - 0x77, 0xEF, 0xEE, 0xF7, 0xF6, 0xFA, 0xB0, 0xA0, 0xFB, 0xAE, 0xF3, 0x43, 0xB1, 0x9B, 0x6C, 0x6B, - 0xB0, 0x0F, 0xA7, 0x6C, 0xD4, 0x03, 0x00, 0xAA, 0xA2, 0x66, 0xB9, 0xC6, 0x92, 0x42, 0xAF, 0xD9, - 0xA1, 0xB9, 0xB1, 0x66, 0x65, 0xE6, 0x0D, 0xDB, 0x51, 0x45, 0x19, 0x09, 0xF8, 0x4A, 0x91, 0x31, - 0x33, 0x37, 0x92, 0x88, 0x83, 0xDB, 0xF8, 0xCD, 0x80, 0x72, 0xB7, 0x4F, 0x1F, 0x62, 0x7A, 0x25, - 0x9C, 0xD4, 0xA0, 0x46, 0x87, 0x69, 0x77, 0x78, 0x7D, 0x35, 0x24, 0x0F, 0x44, 0x81, 0x62, 0xBF, - 0x80, 0x4B, 0x93, 0xFA, 0xC2, 0x9B, 0x0B, 0xD2, 0x2C, 0xB8, 0x37, 0x57, 0xD8, 0xC7, 0xCC, 0x4C, - 0x37, 0xB6, 0x8D, 0x7F, 0xDE, 0x83, 0x85, 0xA3, 0x98, 0x2F, 0xA9, 0xDB, 0x92, 0xA5, 0x1D, 0x42, - 0x06, 0x02, 0x00, 0xB5, 0x6D, 0xD8, 0x37, 0x58, 0xD6, 0xD6, 0xF9, 0x3A, 0xEC, 0xCE, 0x55, 0x10, - 0x04, 0x8F, 0xA7, 0xEB, 0xE2, 0x8D, 0xAD, 0x93, 0xAA, 0x37, 0x22, 0xF6, 0x15, 0x9B, 0x83, 0xDB, - 0x7C, 0x44, 0xE4, 0x6F, 0x30, 0xB1, 0x87, 0xE3, 0xFA, 0xAC, 0x45, 0xDC, 0x8B, 0x62, 0x60, 0x50, - 0x14, 0xA0, 0x6B, 0xE1, 0x77, 0x83, 0x65, 0xB5, 0x2F, 0x17, 0x73, 0x57, 0x6E, 0x3B, 0x28, 0x48, - 0x65, 0xE0, 0xB1, 0x0A, 0x66, 0x44, 0x9A, 0x05, 0x40, 0x20, 0x8B, 0x06, 0x30, 0x53, 0x04, 0xF2, - 0x10, 0x1C, 0x30, 0x53, 0x60, 0xC6, 0x18, 0x38, 0x30, 0x31, 0xA1, 0x99, 0x8D, 0x31, 0x86, 0x40, - 0x88, 0xE0, 0x6E, 0xA9, 0x7E, 0x7D, 0xDB, 0xC4, 0x7A, 0x2C, 0xF3, 0x87, 0xC8, 0x10, 0x21, 0x25, - 0x11, 0x91, 0x10, 0x78, 0x18, 0x62, 0x95, 0xCC, 0x98, 0xB3, 0x4E, 0xE3, 0x30, 0xC4, 0xE8, 0x7E, - 0x5D, 0xD3, 0xC1, 0x00, 0x86, 0x21, 0xB6, 0x98, 0xEF, 0x2C, 0xA6, 0x49, 0x53, 0x96, 0x25, 0xE5, - 0xE7, 0xF3, 0x9A, 0xB2, 0x88, 0x1A, 0x21, 0x30, 0xB3, 0xB3, 0x32, 0xD5, 0x00, 0x8A, 0x1B, 0x59, - 0x51, 0x9D, 0xFE, 0xDB, 0xBF, 0xFD, 0x5F, 0xCB, 0x9E, 0xB6, 0x95, 0xA9, 0x51, 0xB2, 0xFD, 0xAB, - 0x1B, 0x35, 0xBD, 0x82, 0xB1, 0xB2, 0x7F, 0xE8, 0xD1, 0x93, 0x57, 0xB2, 0xC2, 0xB3, 0x08, 0xD6, - 0xAC, 0xA5, 0x59, 0x85, 0x35, 0xCB, 0x65, 0xA5, 0x25, 0x89, 0x19, 0xA8, 0xD9, 0x14, 0x79, 0x8A, - 0x01, 0x0F, 0x08, 0x00, 0x4B, 0x92, 0x4B, 0xCA, 0x97, 0x25, 0xFB, 0xFB, 0x4E, 0x0D, 0x3F, 0x62, - 0xE0, 0xF5, 0x53, 0x40, 0xF3, 0xC8, 0xA9, 0xCE, 0x82, 0x86, 0xEA, 0x7A, 0x0F, 0xEE, 0xDB, 0x06, - 0x64, 0xC6, 0xBB, 0x5D, 0x1C, 0x23, 0xCF, 0xAB, 0x24, 0xF1, 0x9D, 0x42, 0xC4, 0x6B, 0x6A, 0x78, - 0x53, 0xFB, 0xAB, 0x73, 0xEF, 0xC8, 0x14, 0xC0, 0xF4, 0x30, 0x86, 0xAF, 0x1E, 0xA6, 0xFD, 0x34, - 0x7C, 0xF9, 0x6E, 0xFF, 0xF9, 0x09, 0x7E, 0xF2, 0xE1, 0xEE, 0xFD, 0xBB, 0xC3, 0x6B, 0x43, 0xF8, - 0x6A, 0xE9, 0xBA, 0x5F, 0x55, 0x04, 0x0C, 0x10, 0x88, 0xCA, 0x21, 0x3F, 0x68, 0x0D, 0x26, 0x2D, - 0xA3, 0x77, 0x52, 0xD6, 0x6A, 0xCE, 0xD4, 0xA0, 0x39, 0x7F, 0xA1, 0x77, 0x60, 0xD5, 0x1F, 0x80, - 0xAA, 0xE6, 0xD2, 0x74, 0x15, 0xA8, 0xF6, 0x60, 0x73, 0x2D, 0x63, 0xD1, 0xC3, 0xFC, 0x28, 0xD0, - 0x44, 0x45, 0xA5, 0x04, 0x37, 0xF5, 0x0D, 0xDE, 0x32, 0xBC, 0x23, 0x88, 0x6D, 0x46, 0x86, 0x75, - 0x4F, 0xED, 0xDD, 0xD4, 0x8A, 0xD1, 0x5F, 0x06, 0xD0, 0xF9, 0xA4, 0xAE, 0xB7, 0xEC, 0x56, 0xD2, - 0xB7, 0xC5, 0xEF, 0x7F, 0x00, 0xC7, 0x50, 0xF3, 0xF3, 0xC4, 0xE2, 0xF6, 0xEE, 0x7D, 0x67, 0x55, - 0x9D, 0xDD, 0xE2, 0x66, 0x91, 0xB7, 0xF8, 0x27, 0xF4, 0x43, 0x5C, 0x33, 0x50, 0x53, 0x54, 0x28, - 0x51, 0x41, 0xD0, 0xB8, 0xB2, 0x2E, 0x66, 0x41, 0xB3, 0x7A, 0xE2, 0xA1, 0x66, 0x00, 0xE6, 0x5E, - 0x86, 0x12, 0xDC, 0x5F, 0x5E, 0xED, 0x24, 0xDF, 0x6B, 0x3A, 0xB9, 0xA2, 0x10, 0x57, 0x0C, 0xA9, - 0x84, 0xF5, 0xAB, 0xBB, 0x38, 0xAB, 0xDD, 0x91, 0x55, 0x44, 0x2C, 0x89, 0x22, 0x52, 0x64, 0x66, - 0x22, 0x35, 0x23, 0xD8, 0x16, 0xBC, 0x07, 0x90, 0x9B, 0x96, 0x5D, 0x33, 0x41, 0x40, 0xBC, 0x05, - 0x38, 0x20, 0x26, 0x40, 0x83, 0x0C, 0x62, 0x4A, 0x48, 0x66, 0x96, 0x44, 0xC1, 0x2C, 0xB4, 0x48, - 0x47, 0x87, 0x64, 0x00, 0x33, 0xE3, 0x2A, 0x28, 0x98, 0xC9, 0x97, 0x21, 0x20, 0x02, 0x93, 0x89, - 0x20, 0x80, 0xB9, 0x75, 0xD9, 0x62, 0x5E, 0xFA, 0x2D, 0xE9, 0x7F, 0x66, 0xE6, 0x18, 0xAD, 0x0F, - 0xC5, 0xF6, 0x1F, 0x3C, 0x0A, 0xCE, 0xCC, 0xCC, 0xC8, 0x0C, 0x44, 0x44, 0xB2, 0x35, 0xA1, 0xA5, - 0x22, 0x22, 0x96, 0xB2, 0x5C, 0xE6, 0xF5, 0xB2, 0xE4, 0x65, 0xCD, 0xA7, 0x25, 0x03, 0x40, 0x64, - 0x22, 0x35, 0x42, 0x90, 0xEA, 0x2B, 0x32, 0x0F, 0x10, 0xB0, 0xED, 0xC0, 0x0F, 0xA1, 0x66, 0x4D, - 0xD5, 0x35, 0xAF, 0xC1, 0xE8, 0x60, 0x55, 0xC3, 0xEA, 0xA4, 0x1E, 0x54, 0x0B, 0xE6, 0x6A, 0xF0, - 0x58, 0xB5, 0x2E, 0xBA, 0x8E, 0xEF, 0xC7, 0x02, 0x61, 0xA0, 0x06, 0x00, 0x46, 0xF5, 0xFC, 0xDF, - 0xAC, 0x1C, 0x12, 0x11, 0x41, 0x60, 0x8A, 0x4C, 0x77, 0xBB, 0x78, 0x9C, 0xE2, 0x7E, 0x8A, 0x2F, - 0x97, 0xF5, 0x34, 0x27, 0x40, 0xF8, 0x70, 0xB7, 0xBB, 0xDB, 0x0D, 0x4F, 0xE7, 0xC5, 0xD4, 0x3E, - 0xBD, 0x2C, 0xCF, 0xE7, 0x35, 0x89, 0x25, 0xD1, 0xE6, 0x48, 0x70, 0xC0, 0x69, 0x34, 0x07, 0xD7, - 0xFD, 0x56, 0xB6, 0xA9, 0x52, 0x71, 0x23, 0x2B, 0x60, 0x84, 0x94, 0xF5, 0x87, 0xB4, 0x42, 0xC9, - 0x13, 0x81, 0x1F, 0x4E, 0xEB, 0xB8, 0x12, 0x00, 0xDE, 0xEF, 0xE2, 0x92, 0xD5, 0x63, 0x6B, 0x6F, - 0xB6, 0xE6, 0xAA, 0xE5, 0x8E, 0x50, 0x9A, 0x6E, 0x5E, 0x98, 0x81, 0xF0, 0xA7, 0xEF, 0xF7, 0x3F, - 0xFB, 0xF2, 0x6E, 0x1A, 0x63, 0x4A, 0xF9, 0xB0, 0x1B, 0xF6, 0xFB, 0xB1, 0xB9, 0x3C, 0x6E, 0x9E, - 0xC6, 0xB7, 0x5A, 0xFC, 0xEE, 0xEE, 0xB6, 0x57, 0x50, 0x40, 0x55, 0x50, 0xF3, 0x98, 0x37, 0x28, - 0xF4, 0xDA, 0xA2, 0x49, 0x4B, 0xE4, 0x64, 0xD3, 0x37, 0xAB, 0xE3, 0x13, 0x81, 0x7C, 0xAE, 0x58, - 0x02, 0x2C, 0x70, 0xCB, 0x14, 0x6B, 0x5C, 0xAA, 0x66, 0x28, 0x9B, 0x57, 0xDE, 0xC7, 0x4D, 0x88, - 0x4C, 0x8C, 0x88, 0x21, 0x04, 0x00, 0x48, 0x29, 0xAB, 0x8A, 0xBB, 0x40, 0x5E, 0xCB, 0xFF, 0xEB, - 0x19, 0x58, 0xCF, 0xB7, 0x3D, 0x84, 0xB5, 0x85, 0x2A, 0x3C, 0x56, 0x85, 0x8F, 0xE1, 0xDB, 0x7C, - 0xDE, 0xF3, 0x9E, 0xCF, 0xB1, 0xE7, 0xDB, 0x9B, 0x95, 0x07, 0x17, 0x4E, 0xE6, 0x27, 0xAD, 0xE5, - 0xE5, 0x66, 0xBE, 0xF4, 0x88, 0xD6, 0x0F, 0x6F, 0x73, 0x35, 0x21, 0xA2, 0x01, 0x91, 0x99, 0x92, - 0x82, 0x2A, 0x5C, 0xED, 0x29, 0x14, 0x51, 0x5D, 0xA0, 0xAF, 0x92, 0x5C, 0x3D, 0xD9, 0x52, 0x1F, - 0xF6, 0x1B, 0x84, 0x07, 0x70, 0x8B, 0x62, 0xDD, 0x1C, 0xAB, 0x19, 0x07, 0xD8, 0xB2, 0x71, 0x40, - 0xD1, 0x1D, 0x9C, 0xDB, 0xEE, 0xA8, 0xF9, 0x18, 0x89, 0x91, 0x19, 0x5D, 0xA7, 0xE9, 0x9B, 0xB5, - 0x6A, 0x59, 0x77, 0x5A, 0xF3, 0xA6, 0xFA, 0x19, 0x18, 0x21, 0x98, 0x16, 0x5B, 0xB4, 0xFB, 0x93, - 0x01, 0x80, 0x65, 0x68, 0x81, 0x06, 0x59, 0x35, 0x10, 0x12, 0xD5, 0x4C, 0xC3, 0x61, 0x88, 0xCE, - 0x55, 0x66, 0xEE, 0x92, 0xC0, 0x61, 0x08, 0x84, 0xC5, 0xCF, 0x22, 0x92, 0x11, 0x91, 0xB0, 0x24, - 0xD6, 0x4C, 0x53, 0x78, 0x1D, 0xB3, 0xF7, 0x7A, 0xF2, 0xCD, 0x39, 0xD2, 0x8E, 0x99, 0x01, 0x00, - 0x80, 0x55, 0xB5, 0x42, 0x27, 0x70, 0x40, 0x33, 0x13, 0x31, 0x55, 0x53, 0xD5, 0x35, 0xCB, 0x65, - 0x4E, 0xF3, 0x2A, 0x29, 0x0B, 0x22, 0x70, 0xDD, 0xAF, 0x94, 0x35, 0x10, 0xED, 0xC6, 0xC0, 0x88, - 0xE7, 0x25, 0x99, 0x15, 0x3D, 0xA5, 0xF4, 0x0E, 0x1E, 0xC7, 0xEF, 0x30, 0x67, 0x60, 0x25, 0xF0, - 0x75, 0x5B, 0xB5, 0xBA, 0x57, 0x4E, 0x85, 0x85, 0x44, 0x8B, 0x9A, 0x85, 0x84, 0x58, 0xB3, 0x3F, - 0x00, 0x00, 0x5A, 0xE4, 0xBD, 0x56, 0x9C, 0x02, 0x33, 0x31, 0x55, 0xB3, 0xC3, 0x34, 0x0C, 0x01, - 0x4F, 0x73, 0xAA, 0xFB, 0x08, 0xAA, 0xBA, 0x1F, 0xC3, 0x61, 0x0C, 0x6B, 0x96, 0x31, 0xF2, 0xFD, - 0x3E, 0x3E, 0x1C, 0xA6, 0xBB, 0xC3, 0x38, 0x0E, 0x1C, 0x98, 0x08, 0xE1, 0x30, 0x45, 0xF7, 0x9D, - 0x3D, 0xDC, 0xED, 0xBE, 0x78, 0x77, 0xF8, 0xFD, 0x77, 0xCF, 0x4F, 0xE7, 0xF5, 0xB4, 0x4A, 0xA5, - 0xB4, 0x1A, 0xA5, 0xEA, 0xB4, 0xF1, 0x8A, 0x86, 0x10, 0xAF, 0xA4, 0xE4, 0x6B, 0x3D, 0xA2, 0x89, - 0x01, 0x03, 0x58, 0xB2, 0x8A, 0x02, 0x11, 0x1C, 0xA7, 0x30, 0x04, 0xFA, 0x7C, 0x5E, 0x45, 0x00, - 0xDE, 0x42, 0xB1, 0x37, 0x7F, 0xA8, 0x5E, 0x67, 0x54, 0xB5, 0x77, 0x87, 0xF8, 0xB3, 0x2F, 0xEF, - 0xC6, 0xC1, 0x13, 0x24, 0xC3, 0x34, 0x21, 0x22, 0xF5, 0x61, 0x01, 0x37, 0xCF, 0xC6, 0xF9, 0xF5, - 0x5F, 0x67, 0x50, 0x57, 0xB8, 0xB8, 0x7A, 0xAC, 0xA0, 0x7A, 0xD0, 0x5A, 0x7C, 0xA9, 0xB5, 0xD4, - 0x91, 0xEA, 0xAB, 0xED, 0x47, 0xB5, 0x31, 0xBF, 0x6A, 0xE7, 0xD2, 0xBC, 0x52, 0x79, 0x9A, 0x2E, - 0xC6, 0x44, 0xA5, 0x23, 0x02, 0x30, 0xCD, 0xB9, 0x4B, 0x12, 0xF8, 0x91, 0x61, 0xBF, 0x5E, 0x99, - 0x37, 0x19, 0xB8, 0x43, 0x9F, 0xC2, 0xCC, 0x45, 0x1B, 0xDB, 0x30, 0x60, 0x3B, 0xE7, 0xBD, 0x06, - 0xBE, 0x2B, 0xD3, 0xAC, 0x6F, 0xB0, 0x3E, 0x7E, 0xB8, 0xE7, 0x86, 0x2A, 0x60, 0xA7, 0xE2, 0xF5, - 0x2C, 0x66, 0x1D, 0x46, 0xD4, 0xFE, 0xAA, 0x16, 0xE2, 0xDD, 0x12, 0x10, 0xD0, 0x76, 0xF8, 0xEE, - 0xE6, 0x3F, 0x36, 0x63, 0xAD, 0x8D, 0xA8, 0x7C, 0xBF, 0x7E, 0x8E, 0xD8, 0xA2, 0xCC, 0x60, 0x8B, - 0x30, 0xEC, 0xE1, 0xE6, 0x66, 0xFC, 0x08, 0x25, 0x76, 0xCF, 0xE5, 0x4B, 0x49, 0x06, 0x54, 0x75, - 0x26, 0x6A, 0x7B, 0x11, 0x23, 0x11, 0x31, 0x02, 0x84, 0x50, 0x12, 0x4C, 0x8B, 0x0C, 0xE8, 0x65, - 0x71, 0x7D, 0x7F, 0x0B, 0x06, 0x36, 0x43, 0x24, 0xC3, 0xE2, 0x70, 0x28, 0xC7, 0xCF, 0x95, 0x3F, - 0x0A, 0x05, 0x3A, 0x08, 0xAA, 0xA8, 0x7A, 0x80, 0x14, 0x06, 0x06, 0x20, 0x46, 0x22, 0x0A, 0x4C, - 0x43, 0xE4, 0xE8, 0x90, 0x59, 0x08, 0xD0, 0x7C, 0x10, 0x66, 0x40, 0x88, 0x6A, 0xBA, 0x2C, 0xC9, - 0xCC, 0x86, 0x18, 0x00, 0x80, 0x70, 0x1D, 0xC6, 0xE1, 0x66, 0xA1, 0xFB, 0x9F, 0xFB, 0x2D, 0xEC, - 0x68, 0xAE, 0xFD, 0xB1, 0x1C, 0x29, 0x98, 0xD9, 0x9A, 0xA4, 0x44, 0xC1, 0x22, 0x66, 0xD1, 0x2C, - 0xB2, 0x26, 0x51, 0x35, 0x24, 0x1A, 0x62, 0x18, 0x62, 0x08, 0xCC, 0x6B, 0xCA, 0x4B, 0x12, 0xE7, - 0x58, 0x77, 0xE0, 0x9A, 0x29, 0xF8, 0x1A, 0xE2, 0x96, 0x2F, 0xE6, 0x1E, 0x64, 0xF0, 0xC5, 0x6E, - 0xB1, 0x06, 0x9B, 0x02, 0xE7, 0x3F, 0xD6, 0xA4, 0xC1, 0xBA, 0x35, 0xAE, 0x98, 0xC7, 0x40, 0x00, - 0x10, 0x03, 0x99, 0xC1, 0x61, 0x8A, 0x6B, 0xD6, 0xE7, 0xCB, 0x8A, 0x48, 0x1E, 0x76, 0xBC, 0x1F, - 0xC3, 0xBB, 0xE3, 0x2E, 0x65, 0xFD, 0xE9, 0x87, 0xC3, 0xFD, 0x61, 0xBC, 0x2C, 0xF9, 0xB2, 0xE6, - 0xBF, 0xFD, 0xC3, 0xE3, 0x9C, 0xC4, 0xD4, 0x3E, 0xDE, 0x8D, 0xBF, 0xF8, 0xEA, 0xE1, 0x3C, 0xAF, - 0x66, 0x96, 0x3C, 0x28, 0x3F, 0x06, 0xA6, 0xE4, 0x41, 0x24, 0x00, 0xF0, 0xFE, 0x7E, 0xFF, 0x93, - 0x2F, 0xEE, 0xFD, 0x58, 0x6D, 0x3F, 0xC5, 0xDF, 0x7E, 0xF3, 0x74, 0xFA, 0xD3, 0x53, 0x4B, 0x07, - 0xAD, 0x8E, 0x36, 0x37, 0xB8, 0x8A, 0x22, 0xB2, 0x91, 0x69, 0x23, 0xA3, 0xEA, 0x9A, 0x69, 0x9C, - 0xD9, 0xAD, 0x79, 0xB5, 0xB6, 0x00, 0xB2, 0x18, 0x88, 0x7D, 0xCA, 0x2B, 0x23, 0xE4, 0xAB, 0xA3, - 0x36, 0x9F, 0x70, 0x61, 0x81, 0x6B, 0x7D, 0xB4, 0xB1, 0x06, 0x20, 0x00, 0x33, 0x25, 0x93, 0x8F, - 0x0F, 0xBB, 0xFB, 0xBB, 0x9D, 0xA8, 0x79, 0xAA, 0x6F, 0xCE, 0x19, 0x51, 0x1B, 0x18, 0xBD, 0x7E, - 0x9A, 0x06, 0xD1, 0x3C, 0xE2, 0xAF, 0x11, 0xC1, 0x2D, 0xC0, 0x16, 0x0C, 0x05, 0x15, 0xC8, 0x1A, - 0x1D, 0xF7, 0xAA, 0x4A, 0x8F, 0x62, 0xE0, 0x31, 0x28, 0xF5, 0x5B, 0x9D, 0xD5, 0x09, 0x58, 0x33, - 0x5A, 0x3C, 0x51, 0x86, 0x39, 0x00, 0x82, 0xE4, 0x9C, 0x52, 0x0D, 0xD3, 0xB9, 0x1E, 0xE1, 0xAB, - 0x81, 0xBF, 0x6D, 0xD9, 0xB7, 0xF1, 0x34, 0x04, 0x69, 0x03, 0x83, 0xA2, 0xCD, 0x97, 0x0F, 0xAB, - 0xB3, 0x1D, 0xB5, 0x7A, 0xFF, 0x1A, 0x16, 0xF4, 0x3F, 0xF4, 0x0F, 0x55, 0x9B, 0x0C, 0xAA, 0xF0, - 0x70, 0x14, 0x6E, 0x46, 0x43, 0xEF, 0x8C, 0xEE, 0xB5, 0xB3, 0xD6, 0xBD, 0x93, 0xB1, 0xB9, 0x30, - 0xF7, 0x00, 0x8A, 0xF2, 0x59, 0xD3, 0xAF, 0x01, 0x5E, 0xCD, 0xF7, 0x0A, 0x95, 0xCA, 0xC1, 0x3F, - 0x3A, 0xBE, 0x28, 0x98, 0xD6, 0x1E, 0x7A, 0x14, 0xDB, 0x16, 0x04, 0x50, 0x55, 0x91, 0x10, 0x80, - 0xAA, 0x66, 0x6D, 0xC5, 0xE9, 0x0D, 0xE6, 0xAA, 0x8F, 0xBF, 0xE9, 0x0B, 0xC2, 0xC4, 0x21, 0xF0, - 0x10, 0x03, 0x31, 0x22, 0x62, 0x55, 0xC7, 0xA0, 0xF7, 0x75, 0x6C, 0x00, 0x62, 0x6D, 0x77, 0x3C, - 0x3A, 0xD7, 0x88, 0xC8, 0x8A, 0x8D, 0x58, 0xE5, 0x3D, 0xA0, 0xE7, 0xCB, 0xAB, 0x39, 0x96, 0xC1, - 0xBC, 0x26, 0x00, 0x20, 0xE6, 0xE0, 0xE9, 0x93, 0x81, 0x39, 0x78, 0xF6, 0x80, 0x19, 0x11, 0xC5, - 0x10, 0xD0, 0x03, 0x73, 0x91, 0xDC, 0xB3, 0x40, 0x8C, 0x81, 0xD8, 0xCC, 0x2E, 0x97, 0x65, 0x59, - 0x92, 0x0F, 0x83, 0x5F, 0x85, 0xC5, 0xBE, 0x5E, 0xB5, 0x7E, 0xED, 0xAA, 0x23, 0xA3, 0x0C, 0xCB, - 0x6D, 0x10, 0x35, 0x10, 0x55, 0xDF, 0x87, 0x94, 0xF3, 0x92, 0x64, 0x1A, 0xE2, 0x71, 0x3F, 0xAD, - 0x29, 0x2F, 0xAB, 0xFB, 0x92, 0x32, 0x82, 0x85, 0x40, 0x4B, 0xCA, 0x29, 0xE9, 0x65, 0xCD, 0x4E, - 0x2A, 0x4C, 0x3E, 0x5A, 0x8F, 0xFC, 0xAE, 0xEA, 0x71, 0x51, 0x92, 0x9C, 0xA0, 0xAE, 0xC4, 0x4B, - 0x33, 0xD1, 0xAA, 0x8D, 0xE2, 0xC6, 0x0E, 0x18, 0xD8, 0xFD, 0x7E, 0xF8, 0xEA, 0xDD, 0xFE, 0xB8, - 0x8B, 0xBB, 0x29, 0x46, 0xA6, 0x18, 0x3C, 0x69, 0x01, 0x3E, 0x3D, 0x5E, 0x96, 0x35, 0x3D, 0x9E, - 0x16, 0x66, 0xFE, 0xF2, 0x61, 0xB7, 0x1B, 0xA3, 0x19, 0x88, 0xEA, 0x6E, 0x8A, 0x1F, 0xDF, 0x1D, - 0x54, 0xF5, 0xFD, 0xDD, 0x74, 0x9A, 0xF3, 0xB2, 0x26, 0x02, 0x98, 0xC6, 0xF0, 0x70, 0x37, 0x95, - 0xEC, 0x7D, 0x40, 0x24, 0x3A, 0xEE, 0xC7, 0x21, 0x9E, 0xBF, 0x7D, 0x3C, 0xC7, 0x39, 0x3D, 0xDC, - 0xED, 0x86, 0x18, 0x92, 0x08, 0x00, 0xC4, 0xC8, 0xEE, 0xD9, 0xC8, 0x62, 0xD4, 0xD0, 0xB4, 0xB0, - 0x93, 0xEF, 0x56, 0xDD, 0xCD, 0x6B, 0xBE, 0x82, 0x62, 0x79, 0xBD, 0xED, 0x6A, 0x81, 0x26, 0xA2, - 0xAB, 0x64, 0xCD, 0xE5, 0x18, 0xDD, 0xDF, 0x04, 0xA8, 0x86, 0x76, 0x51, 0xDF, 0x1C, 0x36, 0x37, - 0xE9, 0x0E, 0x88, 0x30, 0x04, 0xDA, 0x8F, 0x61, 0xCD, 0xCA, 0xC8, 0x53, 0x60, 0x44, 0x0C, 0xCC, - 0xBE, 0x57, 0xFF, 0x4D, 0xA5, 0xE6, 0x46, 0xFB, 0xF0, 0x2D, 0xB8, 0x21, 0x8F, 0x26, 0x7E, 0x1B, - 0x3D, 0xC0, 0x2B, 0xC0, 0xEA, 0xB1, 0xA0, 0x9D, 0x78, 0xB6, 0xD7, 0x5C, 0x25, 0x64, 0x26, 0x62, - 0x2A, 0x02, 0xAC, 0x70, 0x4E, 0x70, 0xDD, 0xC6, 0xFD, 0x15, 0x39, 0x4B, 0x8D, 0x7D, 0xBD, 0xF2, - 0x81, 0xF4, 0xFF, 0xD6, 0x10, 0x87, 0xCD, 0x4B, 0x50, 0x36, 0x02, 0x3D, 0x03, 0x08, 0xDA, 0xEA, - 0xB4, 0x59, 0x34, 0x6C, 0xAA, 0xB1, 0xA2, 0x75, 0x71, 0x1D, 0x7D, 0x6A, 0x00, 0xC4, 0xCD, 0xB7, - 0x7A, 0x5C, 0xA6, 0xF2, 0x54, 0xE3, 0x01, 0x4B, 0x8A, 0x4B, 0xF9, 0x9B, 0x03, 0x16, 0x80, 0xE7, - 0x33, 0xDC, 0x7C, 0xDD, 0x79, 0xBD, 0x39, 0x18, 0x9D, 0x7A, 0x7D, 0xF7, 0xAE, 0x03, 0x2A, 0xAB, - 0x38, 0xB7, 0x8D, 0xFB, 0x8A, 0xFA, 0x50, 0x57, 0xEC, 0xCA, 0xD7, 0x68, 0x5E, 0x05, 0xA4, 0xF0, - 0x48, 0x5B, 0xFF, 0xAB, 0x89, 0xB4, 0xB3, 0x26, 0x05, 0xC3, 0x42, 0x0D, 0x66, 0xA8, 0x02, 0x66, - 0x9E, 0x10, 0x74, 0x05, 0x9A, 0x3E, 0x3C, 0x66, 0x42, 0x42, 0x66, 0xBE, 0x3A, 0x67, 0x70, 0x9B, - 0xCE, 0x0C, 0x3B, 0xF4, 0x70, 0x7E, 0xBD, 0xD6, 0x86, 0x80, 0xB0, 0xC5, 0xEE, 0x15, 0xE2, 0xC1, - 0x62, 0x2F, 0x22, 0x07, 0x34, 0x00, 0x66, 0x51, 0x35, 0x30, 0x0B, 0xFE, 0x07, 0x55, 0x13, 0x34, - 0x52, 0x9C, 0x86, 0x48, 0xA5, 0xDA, 0x06, 0x06, 0xF0, 0xB2, 0x3C, 0x2D, 0x07, 0x18, 0xA7, 0x71, - 0xD8, 0x4D, 0xA3, 0x9F, 0x5D, 0xFA, 0x6B, 0x6F, 0xA2, 0xD8, 0xCD, 0x7C, 0x6E, 0xA8, 0xDC, 0xAC, - 0x54, 0x1D, 0x80, 0x72, 0xFA, 0x00, 0x81, 0xD9, 0x41, 0x9A, 0x88, 0x76, 0xD3, 0x18, 0x43, 0x89, - 0x6C, 0xCE, 0x84, 0x43, 0xE4, 0xC0, 0xB4, 0xA4, 0x6C, 0x49, 0xC7, 0x18, 0x34, 0xD8, 0x69, 0x4E, - 0x52, 0x63, 0x0A, 0xAC, 0x1E, 0x5C, 0x7A, 0xDB, 0xE8, 0x5B, 0xED, 0x90, 0xEF, 0x63, 0x2E, 0x06, - 0x97, 0xD7, 0xED, 0xE9, 0x85, 0xB3, 0xD5, 0x0C, 0x7B, 0x9B, 0x06, 0xFE, 0xE5, 0xD7, 0xF7, 0x3F, - 0xFF, 0xEA, 0x3E, 0x04, 0x16, 0x55, 0x33, 0x08, 0x81, 0x01, 0x2C, 0x25, 0x19, 0x23, 0x01, 0x84, - 0x9F, 0x8C, 0xF1, 0x87, 0xE7, 0x8B, 0xAA, 0x66, 0xD1, 0xDD, 0x6E, 0xF0, 0x58, 0xF2, 0x65, 0x4D, - 0xCC, 0xF4, 0xE1, 0x61, 0xFF, 0xE5, 0x7B, 0x5C, 0x96, 0xFC, 0xBB, 0x6F, 0x3E, 0x7F, 0xFF, 0xF9, - 0xF4, 0xEE, 0xB8, 0x13, 0x53, 0x4F, 0x95, 0x67, 0x53, 0x55, 0xFD, 0xF2, 0xDD, 0x01, 0x11, 0x3F, - 0xBF, 0xCC, 0xE7, 0x79, 0x05, 0x30, 0x53, 0x7B, 0x39, 0xCD, 0x44, 0xF4, 0xE1, 0x7E, 0x1F, 0x88, - 0xBF, 0x7D, 0xBA, 0x9C, 0x2E, 0xE9, 0x92, 0x04, 0x3B, 0xE3, 0x4F, 0x0D, 0x3C, 0x10, 0xDA, 0xB6, - 0x4C, 0xED, 0x37, 0x3C, 0x5C, 0xED, 0xF3, 0xC6, 0x5A, 0x95, 0xBD, 0xC0, 0x75, 0x85, 0x2D, 0x25, - 0x1A, 0xCA, 0x69, 0x9F, 0x13, 0x62, 0x07, 0x46, 0xD6, 0x94, 0x76, 0x22, 0x04, 0x83, 0x69, 0xE0, - 0x87, 0xFD, 0x30, 0x46, 0xFE, 0xEE, 0xE9, 0x62, 0x08, 0x9F, 0x9E, 0xCE, 0x5F, 0x9E, 0x8F, 0xC7, - 0xC3, 0xCE, 0x8A, 0x5F, 0xEC, 0x47, 0x75, 0xB1, 0x1B, 0x89, 0x05, 0x84, 0x08, 0xE4, 0xF4, 0x5A, - 0xB8, 0xB4, 0xF6, 0xEB, 0x1E, 0x86, 0xDE, 0x3E, 0xFD, 0x31, 0x67, 0x6B, 0x99, 0x54, 0xC7, 0x00, - 0xED, 0xB5, 0xD2, 0x8F, 0x47, 0xC0, 0x18, 0x00, 0x6A, 0xD5, 0x5F, 0xD5, 0xCB, 0x44, 0x49, 0xDE, - 0x4E, 0xFD, 0x7A, 0x34, 0xE9, 0xE1, 0xAC, 0xFF, 0xC1, 0xCC, 0x00, 0x89, 0x8A, 0x3E, 0x55, 0x60, - 0xA9, 0xC9, 0x96, 0x9B, 0x46, 0xDE, 0x52, 0x87, 0xAD, 0xA8, 0xB2, 0x15, 0x26, 0xEC, 0xAD, 0x2D, - 0x6B, 0x03, 0x70, 0x31, 0x59, 0x31, 0x10, 0x91, 0x88, 0x89, 0x55, 0xB4, 0x5F, 0x96, 0x26, 0x86, - 0x6F, 0xF3, 0x22, 0xB0, 0xED, 0xB0, 0xE7, 0x33, 0x6C, 0x31, 0xE1, 0x1D, 0xAF, 0xB5, 0xA1, 0x37, - 0x1F, 0x0A, 0x78, 0x14, 0x5E, 0x61, 0x13, 0xAA, 0xF9, 0x06, 0xB5, 0x97, 0x42, 0x2B, 0x1E, 0xAA, - 0xDD, 0x68, 0xA9, 0x39, 0x2C, 0xAE, 0x14, 0x14, 0x03, 0x03, 0xDD, 0xFA, 0xDA, 0xA6, 0x59, 0xD3, - 0xA0, 0x5D, 0x4F, 0x06, 0x51, 0x15, 0x11, 0x3F, 0x2A, 0x84, 0x0D, 0x88, 0xA1, 0x69, 0x13, 0x45, - 0x9F, 0x80, 0xEB, 0x5E, 0x10, 0xDC, 0x67, 0xE4, 0xE7, 0x16, 0x08, 0xD8, 0x8A, 0x41, 0xF4, 0x1B, - 0x2A, 0xA6, 0x88, 0x10, 0x98, 0x56, 0x55, 0x11, 0x0D, 0x0D, 0xE4, 0x54, 0xCD, 0x2B, 0x40, 0x4D, - 0xE3, 0xB0, 0xDB, 0x0D, 0x88, 0x14, 0xDD, 0xC1, 0x53, 0xF7, 0xA7, 0x84, 0xE4, 0x94, 0xA5, 0x2C, - 0x8B, 0xF6, 0x0F, 0xAB, 0x60, 0xAF, 0x7E, 0x28, 0x78, 0x9F, 0x55, 0xD7, 0x35, 0x01, 0xA0, 0xAA, - 0x02, 0x82, 0xAA, 0xAD, 0x49, 0xCA, 0xF6, 0x54, 0x5C, 0x57, 0xB5, 0xCB, 0x9A, 0x53, 0x2E, 0xF1, - 0x24, 0x5A, 0x77, 0x64, 0x1C, 0x82, 0x2E, 0x39, 0x89, 0x33, 0x7F, 0x23, 0xAF, 0x32, 0xD3, 0xB6, - 0xD4, 0x8D, 0x57, 0xCB, 0x90, 0x0D, 0x44, 0x9B, 0xD8, 0x05, 0x46, 0x54, 0x83, 0x21, 0x10, 0x21, - 0xFC, 0xE4, 0xC3, 0xF1, 0xE7, 0x5F, 0xDF, 0x87, 0x10, 0xCA, 0x01, 0x04, 0x33, 0x00, 0x88, 0x68, - 0xCE, 0xC2, 0x4C, 0x77, 0x43, 0x1C, 0x22, 0x1F, 0xF6, 0xC3, 0x9A, 0x64, 0xF4, 0xCC, 0x2C, 0xDA, - 0xA8, 0x79, 0x5E, 0xD2, 0xBA, 0x66, 0x00, 0xFC, 0xE2, 0xE1, 0xB8, 0xA6, 0xE4, 0x11, 0x4C, 0xDF, - 0x3E, 0x3E, 0xEF, 0xA7, 0xE1, 0xC3, 0xFD, 0x3E, 0x25, 0xC9, 0xA2, 0x5F, 0xBD, 0x3B, 0xFC, 0xF4, - 0xE3, 0x5D, 0x8C, 0x94, 0xB2, 0xCC, 0x4B, 0x1A, 0x86, 0x10, 0x43, 0x38, 0x32, 0xBD, 0xBB, 0xDB, - 0xDD, 0xED, 0x87, 0xE7, 0xF3, 0xF2, 0x78, 0x5A, 0x5F, 0xE6, 0xF4, 0x32, 0x27, 0x57, 0x0D, 0xDC, - 0x51, 0x99, 0xB5, 0x2E, 0xD7, 0x2B, 0x03, 0x10, 0x7B, 0xD5, 0xBC, 0x6C, 0xB0, 0x2F, 0xDE, 0xC6, - 0x57, 0x95, 0x04, 0x4B, 0xCC, 0x2D, 0x56, 0x24, 0x81, 0xE2, 0x82, 0xE9, 0xB4, 0x0F, 0x40, 0x26, - 0x0C, 0x8C, 0x29, 0xEB, 0xC0, 0x24, 0x6A, 0x4F, 0xA7, 0xC5, 0xD4, 0x54, 0x74, 0x49, 0xFA, 0xF4, - 0x72, 0x19, 0x86, 0x10, 0x98, 0x1B, 0xF7, 0xC2, 0x8F, 0x3C, 0xAF, 0xD4, 0x10, 0xAB, 0x3C, 0xE3, - 0xC8, 0xDF, 0x81, 0xB2, 0x6E, 0x0B, 0x08, 0x1D, 0x7B, 0xE3, 0xB5, 0x0A, 0x80, 0x55, 0x03, 0xED, - 0xC9, 0xD7, 0x7F, 0xF1, 0x9D, 0x52, 0xB5, 0x66, 0x6A, 0x03, 0x02, 0x80, 0x80, 0x81, 0xEA, 0x56, - 0x84, 0x0B, 0xAE, 0x2C, 0x50, 0xEC, 0x53, 0xB2, 0x6B, 0xE3, 0x9B, 0x00, 0x41, 0x40, 0xDB, 0x0C, - 0xBB, 0xEA, 0xDC, 0xAB, 0x86, 0xB9, 0xEB, 0x6E, 0x1E, 0x4B, 0xD1, 0x1D, 0xDC, 0x6F, 0x14, 0xDE, - 0x8D, 0x0E, 0xD5, 0xAB, 0xA8, 0x5C, 0xC9, 0x0C, 0x68, 0xDD, 0x61, 0x2D, 0xDF, 0xD5, 0x00, 0xD3, - 0x97, 0x86, 0x98, 0x54, 0x44, 0x45, 0x0A, 0x1B, 0x20, 0x32, 0xF1, 0xDB, 0x47, 0xA2, 0x6F, 0x6D, - 0xC2, 0x15, 0xA3, 0x35, 0x89, 0x62, 0x1E, 0x32, 0x52, 0x16, 0xA9, 0xAD, 0xED, 0xAB, 0x8C, 0x02, - 0x57, 0xE3, 0xEA, 0x59, 0x0A, 0x54, 0xDA, 0xC1, 0xCA, 0xE4, 0x58, 0x8A, 0x74, 0x5D, 0x49, 0xDC, - 0xCE, 0xF9, 0xB8, 0xB1, 0x37, 0x00, 0x20, 0x66, 0x11, 0xFF, 0x1E, 0x0B, 0x79, 0x34, 0x46, 0x49, - 0xFF, 0x68, 0x06, 0x82, 0xA7, 0x94, 0x99, 0x82, 0x12, 0x52, 0xB3, 0xA7, 0xAA, 0x55, 0x5C, 0xC6, - 0x09, 0x00, 0x48, 0x66, 0x80, 0xAD, 0x1A, 0x00, 0xFA, 0x01, 0x82, 0x6F, 0xB1, 0x88, 0x65, 0xB1, - 0x9C, 0x55, 0xD4, 0x3C, 0xD7, 0x12, 0x87, 0x48, 0xC7, 0xFD, 0x18, 0x42, 0xB1, 0x69, 0x63, 0x0C, - 0x8D, 0xCA, 0xB7, 0xD5, 0x2B, 0x5A, 0x6D, 0x1F, 0xF1, 0xFE, 0x86, 0xC2, 0xD5, 0x7E, 0xBD, 0xF9, - 0xD9, 0x29, 0xCF, 0x01, 0x42, 0xB4, 0x14, 0x4A, 0x34, 0x05, 0x35, 0x4B, 0x59, 0xD6, 0xEC, 0x85, - 0x11, 0xCD, 0x00, 0x54, 0x41, 0xFC, 0x30, 0x4B, 0x2C, 0x5D, 0xC7, 0x73, 0x12, 0xFA, 0x59, 0xA2, - 0x11, 0x22, 0xF5, 0x27, 0x79, 0x3D, 0x23, 0xB5, 0x9D, 0x28, 0x27, 0x3B, 0x2E, 0x76, 0x6C, 0x8A, - 0x1C, 0x03, 0x65, 0xD1, 0x35, 0x6B, 0x16, 0x65, 0xA2, 0x87, 0xFD, 0x70, 0xB7, 0x1B, 0xBE, 0xFC, - 0x70, 0x0C, 0x21, 0xF8, 0x6E, 0x90, 0x4B, 0x65, 0x00, 0x55, 0x9B, 0x97, 0x84, 0x88, 0xD3, 0xC8, - 0x44, 0xB8, 0xDF, 0x0D, 0x43, 0xD4, 0xD3, 0x79, 0x21, 0x26, 0x0F, 0x99, 0x89, 0x81, 0x9F, 0x4F, - 0xF3, 0xA7, 0xC7, 0x33, 0x13, 0x85, 0x40, 0xBB, 0xB1, 0x84, 0x8F, 0x4C, 0x03, 0x7F, 0xF9, 0xEE, - 0xE0, 0xC5, 0x73, 0xA6, 0x31, 0xBA, 0xFB, 0xDA, 0x2B, 0xC9, 0x9D, 0xCE, 0x6B, 0xCA, 0xC2, 0xE4, - 0x0E, 0x69, 0x00, 0xC0, 0x87, 0xE3, 0x44, 0x84, 0x31, 0xD0, 0xFB, 0xBB, 0xF1, 0xB7, 0xDF, 0x3E, - 0x9F, 0x57, 0x19, 0x03, 0xDF, 0xEF, 0x82, 0x01, 0xCC, 0x49, 0x0A, 0x55, 0x11, 0x3E, 0x9D, 0x1D, - 0xCF, 0xCB, 0x2E, 0x94, 0x4D, 0x2E, 0x92, 0xCD, 0xFA, 0x7D, 0xEA, 0x01, 0xA2, 0xBD, 0xDC, 0x73, - 0x82, 0x57, 0x2A, 0xA1, 0x42, 0xDB, 0x4D, 0xFD, 0xD0, 0x9C, 0x11, 0x11, 0x56, 0x91, 0x35, 0xCB, - 0x9A, 0x65, 0xA8, 0xA7, 0x4B, 0xA7, 0xCB, 0x1A, 0x1F, 0xCF, 0xEF, 0x1F, 0xF6, 0x56, 0xA3, 0xC0, - 0x6E, 0x4E, 0x78, 0xFA, 0x95, 0xEF, 0xFB, 0xD2, 0x8E, 0x93, 0x1D, 0x40, 0x37, 0x22, 0xAE, 0x6F, - 0x62, 0x3D, 0xA8, 0xDA, 0x5E, 0xEB, 0x6D, 0xB7, 0x32, 0xDC, 0x6A, 0xC1, 0x75, 0x9F, 0xD2, 0x46, - 0x5D, 0xD5, 0x12, 0xF2, 0xF9, 0xA8, 0xDD, 0xB4, 0xDF, 0xAB, 0x7B, 0xB7, 0xB0, 0xD2, 0xB5, 0xD9, - 0xAD, 0xDB, 0x46, 0xE3, 0x56, 0x93, 0xBD, 0x2B, 0xF5, 0x2A, 0x21, 0x79, 0xFA, 0xFA, 0x8D, 0xFC, - 0xBE, 0x99, 0x3B, 0x00, 0x9A, 0xA1, 0x9F, 0x4B, 0x50, 0xD5, 0x15, 0x9D, 0xD1, 0x9C, 0x2E, 0x25, - 0x8B, 0x31, 0x11, 0x33, 0x02, 0x98, 0xA7, 0x08, 0x95, 0xC1, 0x21, 0x78, 0xC1, 0x85, 0x7A, 0x30, - 0xCA, 0x14, 0x4C, 0x3D, 0xE7, 0xA9, 0xBA, 0xBD, 0xA0, 0xEA, 0x6B, 0x7A, 0xA5, 0x25, 0xF4, 0x0C, - 0x78, 0xAB, 0x20, 0x17, 0x0C, 0x2D, 0x01, 0x0D, 0x2D, 0x90, 0x00, 0xAB, 0x73, 0xD9, 0x17, 0xD2, - 0xE3, 0x27, 0xFC, 0xFC, 0xA2, 0xAE, 0x24, 0x56, 0x5D, 0xB3, 0x90, 0xCA, 0x9B, 0x5B, 0xAF, 0x25, - 0x11, 0x15, 0xDA, 0xF6, 0x61, 0x55, 0x24, 0x55, 0x55, 0xA4, 0x94, 0xCF, 0x9B, 0xE7, 0x15, 0x11, - 0xA7, 0x69, 0x60, 0xCF, 0xEA, 0xF1, 0xD4, 0xA2, 0xC0, 0x60, 0x5C, 0xD1, 0xDF, 0x33, 0xBE, 0x4B, - 0xDB, 0xE5, 0x7F, 0xBE, 0x70, 0x35, 0xD0, 0x01, 0xA0, 0x55, 0xF1, 0xB3, 0xEC, 0xE9, 0xFC, 0xA6, - 0x06, 0x18, 0x00, 0x20, 0x30, 0x7E, 0x78, 0x38, 0xDC, 0xDD, 0xED, 0xA9, 0x09, 0xEB, 0xBA, 0x1F, - 0xAF, 0x07, 0xFD, 0xFA, 0x93, 0x1F, 0x5B, 0xBB, 0x1B, 0xAD, 0xCD, 0x0C, 0x72, 0x96, 0x94, 0x24, - 0x65, 0x71, 0x77, 0xFE, 0x65, 0x4E, 0x59, 0x34, 0x65, 0x75, 0x8D, 0xD4, 0x37, 0xCC, 0x0C, 0x44, - 0x5D, 0x14, 0xA2, 0xAF, 0x7D, 0x51, 0xF2, 0xCD, 0x00, 0x20, 0x9B, 0x7A, 0xF8, 0x03, 0xBB, 0x7B, - 0x6B, 0xE3, 0xE2, 0x9B, 0x03, 0x23, 0x84, 0x7A, 0xA2, 0x04, 0x60, 0x4C, 0xC8, 0xC4, 0x3F, 0xFB, - 0x78, 0xDC, 0x8D, 0xF1, 0xBB, 0xC7, 0xF3, 0x77, 0x8F, 0x97, 0xC0, 0xF4, 0xB0, 0x1F, 0x0E, 0x53, - 0x7C, 0xB8, 0x9B, 0xEE, 0x0E, 0x63, 0x1B, 0x73, 0xCE, 0xE2, 0xC0, 0x37, 0xCF, 0x89, 0x99, 0x77, - 0xD3, 0x90, 0xB3, 0x40, 0x39, 0x11, 0x85, 0x21, 0x06, 0xA7, 0x74, 0x46, 0x78, 0x7C, 0xB9, 0x7C, - 0xF3, 0xFD, 0xB3, 0x2A, 0x0C, 0x91, 0x43, 0xA0, 0x94, 0xC5, 0xD7, 0x6B, 0x45, 0xBC, 0x3B, 0x4C, - 0x97, 0x79, 0x4D, 0x39, 0x0F, 0x31, 0x4C, 0x31, 0xAC, 0x59, 0xD4, 0xCC, 0xE3, 0x9B, 0x99, 0x30, - 0x8B, 0x9E, 0xE7, 0xF5, 0x80, 0x23, 0x80, 0x89, 0xEA, 0x10, 0x79, 0x4D, 0x34, 0x46, 0xFA, 0xC5, - 0x17, 0x77, 0xDF, 0x3D, 0x5D, 0xC6, 0xC8, 0xD3, 0x10, 0x00, 0xE0, 0x3D, 0xE1, 0x65, 0x4D, 0x81, - 0x38, 0x06, 0x5A, 0xD3, 0xF3, 0x49, 0xE5, 0x5A, 0xA8, 0x14, 0x31, 0x8A, 0x00, 0xA5, 0xAE, 0x8D, - 0x4B, 0x4D, 0xB8, 0x75, 0xA2, 0x95, 0x18, 0x06, 0xB3, 0xE6, 0x3B, 0x39, 0x4C, 0x21, 0x8B, 0xAE, - 0x09, 0xAA, 0x1D, 0x0A, 0x8D, 0xC1, 0x72, 0x76, 0x87, 0x43, 0xA1, 0xA3, 0xAC, 0x6A, 0x66, 0x43, - 0x0C, 0x39, 0x0B, 0x20, 0x30, 0xB3, 0x67, 0x9B, 0x79, 0x58, 0x43, 0x37, 0x98, 0x2B, 0xF4, 0xB4, - 0x2A, 0x5D, 0xFB, 0x61, 0x74, 0x56, 0x43, 0x51, 0x8E, 0xB6, 0x98, 0xAF, 0x0E, 0x62, 0xAE, 0x30, - 0xA2, 0xB2, 0x3E, 0xBA, 0x2F, 0xB3, 0xCD, 0x88, 0xF0, 0x3A, 0x98, 0xD1, 0x55, 0x81, 0x62, 0x31, - 0x55, 0xFD, 0xA8, 0x6A, 0x3F, 0xD4, 0xAC, 0xA8, 0x0D, 0xDC, 0x1D, 0x11, 0x8C, 0xB6, 0x0F, 0x01, - 0x6A, 0xAC, 0x8D, 0xD5, 0x3F, 0xBB, 0x9B, 0x09, 0x15, 0xB4, 0xF5, 0x4B, 0x86, 0xCD, 0x4D, 0x53, - 0x7A, 0xBC, 0x26, 0xF8, 0x32, 0x7D, 0xB7, 0xD3, 0xA9, 0x1C, 0xA7, 0x58, 0x67, 0x1C, 0x82, 0xA7, - 0xD6, 0x95, 0xC8, 0xEA, 0xAE, 0x2C, 0x5A, 0x29, 0x0B, 0x65, 0xDA, 0xF4, 0x22, 0xD7, 0xAC, 0x40, - 0xCD, 0xC8, 0x4A, 0x7A, 0x5A, 0x57, 0xEC, 0xA4, 0x47, 0xAE, 0xD7, 0x70, 0x56, 0x46, 0x02, 0x1B, - 0x63, 0x76, 0x2B, 0xBA, 0x2D, 0xF2, 0xD6, 0x91, 0x99, 0x9A, 0xB9, 0x1A, 0x55, 0x42, 0x15, 0x09, - 0xA1, 0x46, 0x08, 0x6F, 0xDB, 0x57, 0x5A, 0xC3, 0xAA, 0xEE, 0x17, 0x14, 0xB3, 0x72, 0x34, 0xE8, - 0x28, 0xB3, 0x95, 0x09, 0x40, 0x64, 0xAC, 0x55, 0x1E, 0x53, 0x92, 0x9C, 0x44, 0xEB, 0xF9, 0xB5, - 0x7B, 0x5D, 0x89, 0x48, 0xD5, 0x10, 0xC5, 0xBD, 0xF3, 0x88, 0x68, 0xA8, 0x4D, 0xFE, 0x99, 0x3B, - 0x09, 0xAB, 0xC6, 0x58, 0xA7, 0x00, 0x00, 0xA0, 0x0A, 0x2A, 0x25, 0x3F, 0x29, 0x06, 0x52, 0x83, - 0x30, 0xC4, 0xF0, 0xD5, 0xC7, 0xFB, 0x62, 0xC8, 0x49, 0xF9, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0xFD, 0x7E, 0x44, 0xBC, 0xF2, 0x6E, 0xF6, 0x44, 0x89, 0xAF, 0xA1, 0xF8, 0xD5, 0xD3, - 0x90, 0xBE, 0x2D, 0xE8, 0xCD, 0xB7, 0x10, 0x01, 0x91, 0x0C, 0xF2, 0x9A, 0x73, 0x4A, 0x92, 0xB3, - 0xA6, 0xAC, 0x73, 0x4A, 0xAA, 0x66, 0xEE, 0xDE, 0x6E, 0xCE, 0xCD, 0xC2, 0x75, 0xE5, 0x7F, 0xD8, - 0x31, 0x70, 0x83, 0xDA, 0xBA, 0x9D, 0x8A, 0x35, 0xCB, 0xC7, 0x6A, 0x64, 0xAB, 0x1F, 0xE5, 0x50, - 0xD1, 0x52, 0x01, 0x10, 0x0E, 0x53, 0xFC, 0x70, 0xB7, 0x7B, 0x7F, 0xBF, 0x9B, 0xD7, 0x3C, 0x0D, - 0xFC, 0xD3, 0x0F, 0x07, 0x33, 0xBB, 0xDB, 0x8F, 0xEF, 0xEE, 0xF7, 0x43, 0x64, 0x04, 0x70, 0xAF, - 0x70, 0x4A, 0x92, 0x72, 0x39, 0x8E, 0x00, 0xF0, 0x55, 0xD6, 0x2C, 0x72, 0x59, 0x64, 0x88, 0xBC, - 0xDF, 0x8D, 0xE0, 0x09, 0x55, 0x09, 0x5E, 0xCE, 0xCB, 0x9F, 0x3E, 0xBD, 0x98, 0xC1, 0x71, 0x37, - 0xDC, 0x1D, 0x46, 0x04, 0x78, 0x3E, 0x2F, 0x43, 0x0C, 0x44, 0x88, 0x24, 0xB8, 0x66, 0x27, 0x38, - 0x51, 0x13, 0xD1, 0x94, 0x4A, 0x28, 0x97, 0xA7, 0x8B, 0x7A, 0x45, 0x18, 0x00, 0x18, 0x63, 0x58, - 0xD6, 0x3C, 0xAF, 0x19, 0x00, 0x54, 0x2D, 0x46, 0xFA, 0xFA, 0xDD, 0x5E, 0xCC, 0xEE, 0x76, 0xE3, - 0x38, 0x04, 0x35, 0xFB, 0xF6, 0x87, 0x97, 0x18, 0x78, 0xCD, 0x3A, 0x27, 0xA9, 0xE7, 0x62, 0x55, - 0x4E, 0x42, 0x71, 0x3B, 0x05, 0x42, 0x83, 0x32, 0x79, 0xC4, 0x92, 0x2E, 0xEB, 0xB2, 0xDD, 0x4A, - 0x2A, 0x78, 0x01, 0x04, 0x55, 0x33, 0xB0, 0x31, 0xD0, 0x87, 0xE3, 0xF4, 0xE9, 0x79, 0x36, 0x16, - 0x0F, 0xF0, 0x2A, 0x47, 0xE7, 0x1E, 0x6F, 0x44, 0xF0, 0x7E, 0x37, 0x00, 0xD8, 0xD3, 0x79, 0xCD, - 0x6A, 0x94, 0xF5, 0xB2, 0xE4, 0x18, 0x39, 0xE5, 0x12, 0xEC, 0xE3, 0x16, 0x56, 0xCE, 0xF9, 0xCD, - 0xB3, 0xCB, 0x1E, 0xCB, 0xD0, 0xC3, 0x5C, 0x41, 0x99, 0x59, 0xB7, 0xE4, 0x84, 0x1A, 0x81, 0x85, - 0xC5, 0x58, 0xBB, 0x89, 0x8D, 0xDA, 0x78, 0x12, 0x00, 0x4D, 0x19, 0xA8, 0xB8, 0xF7, 0xA0, 0x80, - 0x5A, 0xC3, 0xC7, 0x46, 0x99, 0x3D, 0x6B, 0x01, 0x01, 0xE8, 0xAD, 0x33, 0xE5, 0x8D, 0x87, 0x8A, - 0xEB, 0xBA, 0xBD, 0x63, 0xCD, 0xD2, 0x2E, 0xC4, 0x54, 0x49, 0xDA, 0x00, 0xC9, 0x4D, 0x05, 0xCF, - 0x7F, 0x52, 0x44, 0xFE, 0x31, 0xEC, 0xB8, 0x42, 0xB4, 0x2B, 0xF7, 0x66, 0x87, 0x98, 0x45, 0xBF, - 0x44, 0x0F, 0x7C, 0xC5, 0x66, 0xDC, 0xA1, 0x96, 0x9A, 0x39, 0x45, 0xD1, 0xF6, 0x8C, 0x45, 0x77, - 0x24, 0x29, 0x02, 0x75, 0x3E, 0xA9, 0x37, 0x7A, 0x2F, 0x60, 0xF4, 0x2A, 0xB3, 0x18, 0x0A, 0x1E, - 0x17, 0xCE, 0xEE, 0xDF, 0xF7, 0xBF, 0x79, 0x39, 0xD7, 0x3E, 0x2B, 0xC0, 0xCC, 0xC8, 0x8F, 0x3A, - 0xB0, 0xD2, 0x9A, 0x6D, 0x23, 0x6D, 0x13, 0xAD, 0xE0, 0xB5, 0x1D, 0x32, 0xB4, 0xC6, 0x3D, 0xB6, - 0xC6, 0x6D, 0xC9, 0x05, 0x40, 0xA1, 0xD4, 0x34, 0xF1, 0x1C, 0x34, 0x55, 0x25, 0xCA, 0xE3, 0x34, - 0xC4, 0x18, 0xBC, 0x3C, 0x92, 0x87, 0x98, 0xA9, 0x42, 0x8C, 0x2C, 0x22, 0x49, 0xB4, 0x78, 0x70, - 0x00, 0x8A, 0xA7, 0xB0, 0x13, 0x6D, 0x5E, 0x71, 0x15, 0x6B, 0x59, 0x9A, 0x21, 0xB0, 0x99, 0x65, - 0xB5, 0x70, 0x7F, 0xB7, 0x3B, 0x1E, 0xA6, 0x37, 0x14, 0xE5, 0x8E, 0x62, 0x7A, 0x38, 0xBB, 0x91, - 0x3F, 0xAF, 0x5E, 0x06, 0x4F, 0xAF, 0xF3, 0x6C, 0x87, 0xCD, 0xC9, 0xE7, 0xF4, 0x43, 0xE8, 0x05, - 0xF8, 0xD7, 0x24, 0x88, 0xB8, 0x1B, 0x23, 0x13, 0x5E, 0x52, 0x16, 0x31, 0x3F, 0x43, 0x04, 0x44, - 0xF3, 0x83, 0xB6, 0xEA, 0xAE, 0x86, 0x52, 0xA3, 0xE2, 0x4A, 0x56, 0x6F, 0xD2, 0xB5, 0xD1, 0x8B, - 0x47, 0x8D, 0x15, 0xF5, 0xBB, 0x73, 0x7F, 0x82, 0x21, 0xE0, 0x79, 0x49, 0x63, 0xE4, 0xFD, 0x14, - 0x10, 0x60, 0x3F, 0xC6, 0x35, 0x49, 0x56, 0x4B, 0x59, 0x11, 0x20, 0x04, 0x5E, 0x96, 0xE4, 0xC7, - 0x17, 0x6B, 0xCA, 0x6B, 0x12, 0x66, 0x02, 0x33, 0x51, 0x63, 0x00, 0x33, 0x9B, 0xC6, 0x38, 0xC4, - 0xE0, 0x48, 0x27, 0xA2, 0xEB, 0x9A, 0x1F, 0x4F, 0xF3, 0xB7, 0x9F, 0xCF, 0x31, 0xD0, 0xDD, 0x6E, - 0x8C, 0x81, 0x73, 0x29, 0x1A, 0x0A, 0x29, 0xCB, 0x7E, 0x1A, 0x02, 0xB3, 0xAA, 0x0E, 0x91, 0xDD, - 0xE7, 0xE8, 0xD7, 0x14, 0x78, 0x85, 0x6B, 0x55, 0x53, 0x85, 0x35, 0x0B, 0x31, 0xE1, 0x79, 0x39, - 0xE1, 0x8A, 0x88, 0x8F, 0x2F, 0xF3, 0x7E, 0x8A, 0x63, 0x0C, 0x04, 0x38, 0x8C, 0x3C, 0xC4, 0x70, - 0xD8, 0x8F, 0x00, 0xF0, 0xE9, 0xF1, 0xE4, 0xAA, 0xFE, 0x0F, 0x2F, 0x33, 0x41, 0xC9, 0x90, 0x2E, - 0x47, 0xED, 0x08, 0x1E, 0x88, 0xE9, 0x55, 0x73, 0x73, 0xA9, 0x9D, 0x58, 0x82, 0xFB, 0xF7, 0x23, - 0x2F, 0xC9, 0xC5, 0x1A, 0xA0, 0x47, 0x95, 0x9A, 0x05, 0xA6, 0xDD, 0x3E, 0x8E, 0x31, 0x1C, 0x77, - 0xC3, 0xE9, 0xB2, 0x10, 0xC2, 0xFD, 0x7E, 0x70, 0xE0, 0xF3, 0x78, 0x3D, 0x5F, 0xF6, 0xFB, 0xFD, - 0x38, 0x45, 0x7E, 0x39, 0xAF, 0x66, 0x40, 0x04, 0xAA, 0xEA, 0x4A, 0xD9, 0xE5, 0xB2, 0x1E, 0x8F, - 0x53, 0x2B, 0x98, 0xF5, 0x63, 0x74, 0xD2, 0x7F, 0x42, 0x44, 0xA1, 0x38, 0x28, 0xAA, 0x1C, 0x6F, - 0xAC, 0x4D, 0x9E, 0xEF, 0x0E, 0xBE, 0xC9, 0xFD, 0x17, 0x7D, 0x29, 0x3D, 0x2C, 0x81, 0x39, 0x14, - 0x6A, 0x35, 0xE8, 0x63, 0x45, 0x5E, 0x63, 0x19, 0xA0, 0xB6, 0xEC, 0x58, 0x37, 0xDA, 0x9B, 0xBA, - 0xF4, 0x7A, 0x9C, 0xD5, 0xEB, 0xD4, 0xE9, 0x1A, 0xBD, 0xBE, 0x06, 0x00, 0x9B, 0x2E, 0xE0, 0x5A, - 0x15, 0xB6, 0x52, 0x5D, 0x68, 0xC5, 0xA8, 0x35, 0x73, 0xA3, 0x4C, 0x3B, 0x06, 0xA9, 0x12, 0xE4, - 0xDA, 0x46, 0xD9, 0x74, 0x43, 0xF7, 0xD9, 0xB5, 0xBF, 0xD6, 0xB4, 0xF0, 0x3A, 0x8A, 0x5A, 0x1D, - 0xC8, 0x00, 0x88, 0xAA, 0xB2, 0x0D, 0x66, 0x66, 0x62, 0x46, 0x1B, 0x33, 0xF7, 0xED, 0xBF, 0xF1, - 0xB4, 0x59, 0x40, 0xC5, 0x65, 0x28, 0x39, 0xAD, 0x3E, 0x48, 0x8F, 0x13, 0x68, 0x96, 0x63, 0x99, - 0x0D, 0xA0, 0x56, 0xEC, 0x0E, 0x4C, 0x00, 0x28, 0x2A, 0xEE, 0xBA, 0x12, 0x54, 0xAB, 0xB6, 0xEC, - 0x75, 0xEF, 0x60, 0x56, 0xCA, 0x33, 0xDF, 0x2C, 0xB5, 0xEB, 0x34, 0x2D, 0xD4, 0x59, 0x24, 0xDB, - 0x30, 0xC4, 0x10, 0x88, 0x09, 0x10, 0x3C, 0xC7, 0xC3, 0x13, 0xB3, 0x6A, 0x3D, 0x1F, 0x34, 0x05, - 0x42, 0xCB, 0x39, 0x9B, 0x81, 0xB9, 0x12, 0xDC, 0x80, 0xB5, 0x84, 0x31, 0x97, 0x0D, 0x72, 0xE7, - 0x9B, 0x9B, 0xAB, 0x81, 0x49, 0xCD, 0x72, 0x36, 0x51, 0x0B, 0xC7, 0xC3, 0xA8, 0xDD, 0x8A, 0xFF, - 0xD8, 0xD3, 0x4B, 0x9E, 0xF6, 0xF2, 0x0D, 0xA1, 0x34, 0x41, 0xE8, 0x3F, 0x7B, 0xA8, 0xD0, 0xCD, - 0x8E, 0x32, 0xF3, 0x61, 0x3F, 0x12, 0xE2, 0x92, 0xF2, 0xBC, 0xA4, 0xA0, 0xBC, 0x27, 0xCC, 0x52, - 0x06, 0xED, 0xF0, 0xB7, 0x66, 0xB7, 0xAB, 0x6B, 0xEC, 0x0C, 0x38, 0x99, 0xE0, 0xCD, 0x08, 0xAF, - 0x7B, 0xB7, 0xAD, 0xE3, 0x82, 0x83, 0xC5, 0xA2, 0x02, 0x80, 0x94, 0xF5, 0xF1, 0xE4, 0x39, 0xEA, - 0xB6, 0x26, 0x0D, 0x8C, 0x7E, 0x32, 0x3A, 0x2F, 0x89, 0x08, 0xB3, 0xC8, 0x40, 0x21, 0x67, 0x51, - 0x31, 0x55, 0x1D, 0x63, 0xC8, 0xA2, 0xCB, 0xBA, 0xBE, 0xBF, 0x3F, 0x88, 0x2A, 0x11, 0x86, 0x40, - 0xD5, 0x9C, 0x81, 0x71, 0x08, 0xC3, 0xC2, 0xFB, 0x31, 0x1E, 0xA6, 0x98, 0x55, 0x2F, 0xCB, 0x2A, - 0xCA, 0xC7, 0xDD, 0x68, 0xB1, 0x88, 0xB2, 0x58, 0x42, 0x31, 0xE1, 0x34, 0x2F, 0xEB, 0x9A, 0xE7, - 0x55, 0xD4, 0x8C, 0x09, 0xD1, 0xC0, 0x85, 0x8F, 0x73, 0xE9, 0xE3, 0xCB, 0x12, 0x43, 0x39, 0x74, - 0x17, 0x31, 0x65, 0x1B, 0x06, 0x9E, 0x06, 0x2F, 0x39, 0x83, 0x58, 0x0E, 0xB6, 0xF0, 0xFB, 0xA7, - 0xCB, 0xE3, 0x29, 0x21, 0x96, 0x88, 0x1F, 0xAA, 0x25, 0x04, 0xC6, 0x40, 0xA2, 0x36, 0x46, 0x5E, - 0xB3, 0x9C, 0xE7, 0x62, 0x5E, 0xBD, 0xBF, 0x9F, 0xE6, 0x35, 0xE7, 0xAC, 0x63, 0xA4, 0x35, 0x4B, - 0x73, 0xE0, 0x02, 0xC2, 0x71, 0x17, 0xFF, 0xC9, 0x3F, 0xFA, 0x62, 0x1A, 0xE2, 0xBC, 0xA6, 0x4F, - 0x8F, 0xF8, 0xEE, 0x6E, 0xB7, 0x1F, 0xE3, 0x92, 0xB2, 0x88, 0x26, 0xD1, 0xDF, 0x7D, 0xF7, 0x6C, - 0xA6, 0x87, 0x89, 0xCF, 0x97, 0xF4, 0xF4, 0xB2, 0x80, 0x17, 0xB4, 0x32, 0x18, 0x23, 0x7F, 0xF5, - 0xEE, 0x10, 0x98, 0xC6, 0x31, 0x86, 0x10, 0xBC, 0x6E, 0xE7, 0xEB, 0xC5, 0xEF, 0x0D, 0x96, 0x9E, - 0x33, 0xFB, 0xC4, 0xEC, 0x4A, 0x1E, 0x9E, 0x09, 0x07, 0xD5, 0xB9, 0x89, 0xD6, 0x45, 0x60, 0xF8, - 0xFF, 0x4C, 0xE4, 0xFF, 0xFD, 0xFF, 0xFE, 0x86, 0x90, 0x38, 0xF0, 0xFF, 0xFC, 0xCF, 0xFF, 0x59, - 0x0C, 0x41, 0x3C, 0x16, 0xAC, 0x5C, 0xD6, 0x51, 0x37, 0xFB, 0xE6, 0x29, 0xC5, 0xB8, 0x37, 0xFB, - 0xB1, 0x91, 0x68, 0xC9, 0x76, 0x24, 0xAA, 0x5E, 0x5F, 0x6C, 0xCB, 0xD2, 0x1C, 0x13, 0xE5, 0x5B, - 0x1D, 0xD8, 0x16, 0x4F, 0xBC, 0x7A, 0x0C, 0x27, 0x5B, 0x29, 0x13, 0x5A, 0xD4, 0x1A, 0x55, 0x43, - 0x03, 0xB3, 0xAD, 0xA2, 0x96, 0x93, 0xC7, 0x36, 0x97, 0xCA, 0xDE, 0xED, 0x20, 0xD2, 0xFF, 0xD4, - 0x47, 0x87, 0xF9, 0xB3, 0xB1, 0x52, 0x95, 0xC1, 0x15, 0x5D, 0xCC, 0x4A, 0x4D, 0x03, 0x44, 0xD9, - 0x56, 0xB5, 0xFF, 0xA1, 0x65, 0x47, 0x02, 0x80, 0xBB, 0x9B, 0x7B, 0x5F, 0x29, 0xA0, 0x87, 0x4A, - 0x58, 0x1B, 0x61, 0xD1, 0xA4, 0x5A, 0xD5, 0xD3, 0xD2, 0xD4, 0xC6, 0xCE, 0x4C, 0xC4, 0xC4, 0xCC, - 0x08, 0xC0, 0x2A, 0x90, 0x72, 0xD2, 0x62, 0x2C, 0xDD, 0x18, 0x6A, 0x57, 0x28, 0xD6, 0x93, 0x41, - 0x9B, 0xA6, 0x59, 0xC9, 0xB8, 0x8C, 0x61, 0x18, 0xC7, 0xE8, 0x41, 0x61, 0x29, 0x1B, 0x36, 0x30, - 0x31, 0x08, 0x81, 0x09, 0x90, 0x88, 0x8C, 0xA0, 0x94, 0xAF, 0x54, 0x8F, 0x47, 0xAB, 0xFA, 0x5E, - 0x39, 0x7D, 0xAF, 0x9E, 0x13, 0x33, 0xF3, 0xFC, 0x2A, 0x6D, 0x4B, 0x0D, 0x44, 0xC8, 0x8A, 0x41, - 0x45, 0x95, 0x84, 0xF8, 0x75, 0x45, 0xB2, 0x5B, 0x7A, 0xAD, 0x6B, 0xB1, 0xE5, 0xBB, 0xBF, 0x41, - 0x4E, 0x88, 0x66, 0xE6, 0x61, 0xBC, 0xCC, 0xE6, 0xB1, 0x3C, 0x7D, 0x01, 0x06, 0x00, 0x60, 0xA2, - 0xC3, 0x7E, 0xDC, 0xDB, 0x90, 0xB2, 0x2C, 0x6B, 0xBE, 0xCC, 0x69, 0x4D, 0x59, 0xCC, 0xB2, 0xA8, - 0x4B, 0x0A, 0x0F, 0x49, 0xDD, 0xF6, 0xAC, 0x91, 0x19, 0xF4, 0xD6, 0xC4, 0xC6, 0x39, 0xBD, 0xEA, - 0x5E, 0x81, 0x14, 0xA0, 0xE4, 0x12, 0x95, 0xCD, 0x5E, 0x12, 0xA4, 0x3C, 0x67, 0xD5, 0xFD, 0x10, - 0x62, 0x88, 0xBB, 0x29, 0xBE, 0xBB, 0xDB, 0x21, 0xA0, 0x8F, 0x61, 0x59, 0xB3, 0x88, 0x8E, 0x43, - 0xF0, 0x08, 0x8C, 0x94, 0xF3, 0xC3, 0x71, 0x1F, 0x02, 0x9F, 0xE7, 0x55, 0xC5, 0xC6, 0xB1, 0x16, - 0x04, 0x4F, 0xB2, 0xA6, 0x6C, 0x00, 0xF7, 0xFB, 0x51, 0xCC, 0x1E, 0x4F, 0x0B, 0x23, 0x4D, 0x43, - 0x64, 0x46, 0x11, 0x34, 0xC4, 0x10, 0x48, 0xC1, 0x96, 0x39, 0xCF, 0xCB, 0x9A, 0xC4, 0xCE, 0x97, - 0x75, 0xCD, 0xE2, 0xAA, 0x93, 0x97, 0x04, 0x10, 0x05, 0xB7, 0x25, 0xCD, 0x20, 0x04, 0x9A, 0x06, - 0x0E, 0x44, 0xA2, 0x16, 0x23, 0x07, 0xA2, 0x61, 0x08, 0x2E, 0x00, 0x9C, 0x76, 0xCE, 0x73, 0x7A, - 0xB9, 0x24, 0xAC, 0x12, 0x82, 0x08, 0x22, 0xF3, 0x61, 0x0A, 0x87, 0x69, 0xB8, 0x3F, 0x0C, 0x31, - 0x84, 0xC7, 0x97, 0xF9, 0xF1, 0x34, 0x4B, 0x24, 0x33, 0x18, 0x23, 0xDF, 0xED, 0x86, 0x2F, 0x1E, - 0x76, 0x63, 0x0C, 0x6B, 0x96, 0x1F, 0x9E, 0x2F, 0x39, 0x2B, 0x96, 0x42, 0x00, 0xF0, 0x93, 0x0F, - 0x25, 0xCD, 0x28, 0x06, 0xFE, 0xC9, 0x17, 0xF7, 0xBE, 0x92, 0x07, 0x1D, 0x55, 0x8D, 0x09, 0x76, - 0x63, 0xFC, 0xF4, 0x74, 0x5E, 0xCA, 0x35, 0x25, 0xBE, 0x68, 0xA6, 0x6A, 0x81, 0xE9, 0xFE, 0x38, - 0x71, 0xE0, 0x1D, 0x95, 0x18, 0xC3, 0x9E, 0x70, 0x7B, 0x43, 0xA6, 0x27, 0x86, 0xB6, 0x71, 0x0D, - 0xC5, 0xDC, 0xD0, 0xC0, 0x16, 0x49, 0xD0, 0xB1, 0x23, 0x20, 0x78, 0xF2, 0x44, 0x8B, 0x5D, 0x1E, - 0xC6, 0xF8, 0xCD, 0x37, 0x3F, 0xA8, 0xC8, 0xAF, 0x7F, 0xFF, 0xFD, 0x2A, 0xF8, 0xAF, 0xFF, 0xB7, - 0x7F, 0xA5, 0xF3, 0x6A, 0x7D, 0x9A, 0x1E, 0xB4, 0xF6, 0xDB, 0x89, 0x25, 0xF5, 0x0A, 0xD1, 0x8D, - 0x82, 0x60, 0xE6, 0x45, 0x9F, 0x0A, 0x36, 0xF9, 0x5D, 0x13, 0xDB, 0xCD, 0x34, 0x1D, 0xE9, 0xDE, - 0x90, 0x31, 0xB8, 0xFD, 0xE7, 0x9C, 0xE4, 0xEE, 0xB7, 0x92, 0xE8, 0x66, 0x48, 0x7A, 0x45, 0xA2, - 0x66, 0xD8, 0xB9, 0x56, 0x5E, 0xF3, 0x45, 0x2F, 0xCB, 0x37, 0xE8, 0x79, 0xA5, 0x07, 0xB4, 0x4F, - 0xE8, 0xDA, 0xB4, 0xEC, 0x95, 0xD0, 0xFE, 0xEB, 0xED, 0xB7, 0xED, 0xDF, 0xA2, 0x71, 0x3A, 0x05, - 0xD5, 0xF5, 0x6A, 0xA0, 0xD8, 0xE1, 0xA3, 0x56, 0xE3, 0xD0, 0xD9, 0x27, 0x84, 0x40, 0x84, 0x8C, - 0xA4, 0xA6, 0x04, 0x8C, 0x08, 0x48, 0x18, 0x63, 0x90, 0xD5, 0xA0, 0xE2, 0xE8, 0x16, 0xEB, 0x0C, - 0x35, 0xDC, 0xB6, 0x0E, 0x8C, 0xBA, 0x12, 0x6F, 0xAD, 0xCD, 0xFA, 0x14, 0xAC, 0x34, 0xF7, 0x36, - 0x98, 0xE7, 0x38, 0x06, 0x0E, 0x14, 0x42, 0x20, 0x40, 0x35, 0x65, 0xA4, 0x32, 0x87, 0x92, 0x35, - 0x51, 0x7C, 0x4A, 0x56, 0x8A, 0xF9, 0xD4, 0xD2, 0x45, 0x00, 0xAA, 0x62, 0xA5, 0x12, 0x30, 0x10, - 0x90, 0x82, 0xAB, 0x66, 0x18, 0x9E, 0x5E, 0x2E, 0x77, 0x87, 0x69, 0x9A, 0xDE, 0x06, 0xA6, 0x1F, - 0xDB, 0x92, 0x26, 0x67, 0x6E, 0xF0, 0xF8, 0xE6, 0x87, 0x10, 0x18, 0x11, 0xFC, 0x9E, 0x99, 0x5E, - 0x34, 0xF9, 0xCC, 0xDD, 0x9B, 0x7E, 0xD8, 0x89, 0xDF, 0xCA, 0xB1, 0xA4, 0x9C, 0xB3, 0xA6, 0x24, - 0x6A, 0x46, 0x28, 0x9E, 0x71, 0xED, 0xFD, 0x15, 0x83, 0xBE, 0x0C, 0x60, 0x1B, 0x89, 0x55, 0x53, - 0xFF, 0xF5, 0x29, 0xF5, 0xF6, 0x57, 0x57, 0x0F, 0x15, 0x92, 0xA9, 0x13, 0xC5, 0xFD, 0x7E, 0x74, - 0xB1, 0x10, 0x03, 0x89, 0xDA, 0x9C, 0xF2, 0xBA, 0x66, 0x44, 0x10, 0xB3, 0x58, 0xCA, 0xF2, 0x62, - 0x60, 0xBA, 0xCC, 0xEB, 0xBA, 0xA6, 0x8B, 0xDA, 0x79, 0xC6, 0xAC, 0xEA, 0xC7, 0x27, 0x4E, 0x23, - 0x2F, 0xF3, 0x32, 0xAF, 0x62, 0x0A, 0xC7, 0x63, 0x9C, 0xC6, 0x30, 0x2F, 0x39, 0x65, 0x19, 0x62, - 0x40, 0xC4, 0x65, 0xCD, 0x97, 0x79, 0x5D, 0x92, 0x9C, 0x1C, 0xC5, 0x0C, 0xCC, 0x40, 0x08, 0xC6, - 0x18, 0xC0, 0xEC, 0xBC, 0xE6, 0x35, 0xAB, 0x1A, 0x20, 0x00, 0x33, 0xBD, 0x3F, 0xC6, 0xDD, 0x18, - 0xE6, 0x94, 0x55, 0x15, 0x98, 0x72, 0x96, 0x61, 0x08, 0xF3, 0x9C, 0x45, 0xF5, 0xF3, 0xF3, 0x2C, - 0xA2, 0x81, 0xC9, 0xED, 0x17, 0x87, 0xA4, 0x18, 0x08, 0x11, 0xCE, 0x4B, 0xBA, 0x2C, 0xE9, 0xDD, - 0xDD, 0xC4, 0x04, 0x53, 0x64, 0x3F, 0x90, 0xBE, 0xDB, 0x8F, 0x22, 0x2A, 0x82, 0xB3, 0xA5, 0xCB, - 0x9C, 0xA6, 0xC8, 0x3C, 0x86, 0x87, 0xE3, 0x34, 0xC4, 0x90, 0x92, 0xEC, 0x77, 0x83, 0xB9, 0xA8, - 0xC8, 0xEA, 0x67, 0xD3, 0x29, 0xA5, 0x9C, 0x95, 0x99, 0x88, 0xF9, 0xFD, 0xFD, 0x8E, 0x08, 0x5E, - 0xCE, 0x8B, 0x3C, 0x5E, 0x3C, 0x4A, 0xD1, 0xCC, 0x98, 0x60, 0x3F, 0x45, 0xD7, 0xE1, 0x4B, 0xD1, - 0x85, 0x6B, 0x8B, 0xE9, 0x35, 0x84, 0xF5, 0x0C, 0xD9, 0x50, 0x4C, 0xA4, 0x84, 0x34, 0xB6, 0x37, - 0xB7, 0x76, 0xBC, 0xFE, 0x52, 0xAD, 0x2C, 0x66, 0x66, 0x21, 0xF2, 0x6F, 0x7E, 0xF3, 0xFB, 0x65, - 0x5E, 0x01, 0x20, 0xC4, 0xE1, 0x3F, 0xFD, 0xED, 0xDF, 0x3F, 0xDC, 0x1F, 0xFF, 0xC5, 0x5F, 0xFD, - 0x85, 0x57, 0xF7, 0x21, 0xDA, 0x82, 0xD8, 0x5D, 0x5C, 0x03, 0x34, 0xBB, 0x06, 0xDF, 0x68, 0xBF, - 0xB1, 0x59, 0xD1, 0xC2, 0x0A, 0x1F, 0x23, 0x61, 0x83, 0x86, 0x9E, 0x60, 0xDE, 0x60, 0x01, 0x6F, - 0xD5, 0xA0, 0x15, 0xD6, 0xAD, 0xD3, 0xEF, 0x3D, 0x65, 0x8A, 0x88, 0x6A, 0x46, 0x40, 0xAF, 0x51, - 0xE6, 0xA6, 0x8B, 0x1B, 0xF6, 0x81, 0x57, 0xB0, 0x5B, 0x3E, 0x84, 0x0E, 0xF3, 0x3A, 0xB8, 0x7C, - 0x05, 0x64, 0xE5, 0x5F, 0xAD, 0xBF, 0x40, 0xA9, 0xDB, 0x82, 0x8D, 0x55, 0xCA, 0x5F, 0xF4, 0xAA, - 0x05, 0x05, 0x57, 0x85, 0x37, 0x25, 0x91, 0x89, 0x62, 0x08, 0xED, 0xCF, 0x49, 0x84, 0x4B, 0x59, - 0x7D, 0xCA, 0x22, 0xCD, 0x97, 0x0F, 0x8D, 0xBB, 0x01, 0xB1, 0xFF, 0xF5, 0xC6, 0x3D, 0xDA, 0x26, - 0x8E, 0x80, 0x48, 0x1E, 0xD3, 0x8F, 0x88, 0x71, 0x08, 0x66, 0x16, 0x98, 0x43, 0xA8, 0xD7, 0x8B, - 0x10, 0xB9, 0x2D, 0x5F, 0xCA, 0x0A, 0x79, 0xB6, 0xA6, 0x8B, 0xA7, 0x0D, 0x78, 0x7B, 0xB1, 0x04, - 0x4D, 0xA7, 0x51, 0x50, 0x2F, 0xAC, 0x28, 0x6A, 0xE1, 0x32, 0xA7, 0xDD, 0x34, 0xFC, 0xD8, 0xC9, - 0xFA, 0xCD, 0x06, 0x6C, 0x42, 0xF5, 0xBF, 0xFB, 0x69, 0xBA, 0x9B, 0x27, 0x24, 0xA9, 0x4A, 0x2B, - 0x6B, 0xEB, 0xAD, 0x4D, 0x13, 0xC5, 0x18, 0x96, 0x35, 0xD1, 0x65, 0x79, 0xCE, 0x73, 0x3B, 0x48, - 0xF3, 0xA0, 0x5E, 0xDF, 0x8A, 0xBA, 0xBB, 0xC5, 0x2C, 0x50, 0xBB, 0x22, 0x05, 0x00, 0x17, 0xD3, - 0xAF, 0x8E, 0x17, 0x5C, 0x51, 0x2F, 0x85, 0x21, 0x0B, 0xC5, 0xAC, 0x59, 0x44, 0x35, 0x86, 0x30, - 0xCF, 0x29, 0x1E, 0x99, 0x90, 0x02, 0xE1, 0x02, 0xB0, 0x2C, 0x19, 0x00, 0xE3, 0x9E, 0xBD, 0xD8, - 0xD9, 0xA7, 0xA7, 0x93, 0xAA, 0x11, 0x53, 0x20, 0x7C, 0x3A, 0x2D, 0x4F, 0xA7, 0xE5, 0xB8, 0x1B, - 0x86, 0xC8, 0x81, 0xF9, 0xB2, 0xA4, 0x4F, 0xCF, 0xCB, 0x14, 0xF9, 0x8B, 0x87, 0x5D, 0x8C, 0xFC, - 0xE9, 0xE9, 0xE2, 0x97, 0xE6, 0xDD, 0x23, 0xCE, 0x6B, 0x9A, 0x86, 0xF8, 0xF1, 0xFD, 0x21, 0x25, - 0x3D, 0xEE, 0xD7, 0x6F, 0x7F, 0x38, 0xBD, 0x5C, 0x12, 0x11, 0x06, 0x2E, 0x00, 0x04, 0x08, 0x81, - 0x49, 0xC4, 0xB2, 0x2A, 0x13, 0x8A, 0x99, 0x5F, 0xD7, 0xC6, 0x4C, 0x59, 0x75, 0x39, 0xCD, 0xF7, - 0x30, 0x5D, 0x96, 0xB5, 0x5C, 0x00, 0xEA, 0x87, 0x32, 0x5B, 0xF9, 0x5E, 0x04, 0x80, 0x94, 0x75, - 0x49, 0x0A, 0x00, 0x29, 0xCB, 0xBB, 0xE3, 0xF4, 0xC5, 0xFB, 0xC3, 0xD3, 0x69, 0x51, 0xB5, 0x87, - 0xE3, 0x94, 0x52, 0xFE, 0xFE, 0xF1, 0xEC, 0x0A, 0xE3, 0x65, 0xCD, 0xF7, 0x87, 0x71, 0x8C, 0x41, - 0xCD, 0xC6, 0x21, 0x88, 0xEA, 0xF9, 0x69, 0x1D, 0x86, 0xB0, 0xA6, 0x2C, 0xA5, 0x08, 0xBD, 0x57, - 0x4C, 0x32, 0x11, 0xCB, 0x59, 0x72, 0x56, 0x50, 0x18, 0x87, 0xB0, 0x1B, 0x71, 0x49, 0xF9, 0x34, - 0x27, 0x26, 0x5C, 0x96, 0xA4, 0x35, 0xC6, 0x91, 0x6A, 0x02, 0xCA, 0x6B, 0xAE, 0xEB, 0x3F, 0xBC, - 0xA6, 0x39, 0x93, 0x66, 0x2F, 0x5C, 0x97, 0x36, 0x6E, 0x13, 0xD2, 0x2C, 0x92, 0x85, 0xD8, 0x88, - 0x49, 0x55, 0x19, 0xF0, 0x3F, 0xFC, 0xC7, 0x5F, 0x49, 0xCE, 0xC7, 0xC3, 0xF4, 0xD5, 0xFB, 0xC3, - 0x30, 0xC6, 0xBF, 0xF9, 0x4F, 0xBF, 0x35, 0x80, 0x7F, 0xF1, 0xCF, 0xFE, 0x9C, 0x91, 0x5C, 0xC7, - 0xB4, 0x3E, 0x22, 0xBC, 0xBA, 0x82, 0x7F, 0xCC, 0x3E, 0x40, 0x2C, 0x06, 0xA4, 0x75, 0x27, 0x51, - 0xD4, 0x8A, 0x87, 0xD6, 0x49, 0xBD, 0x96, 0x82, 0x57, 0x00, 0xE4, 0xDE, 0xAA, 0x7A, 0xF4, 0xD4, - 0xD9, 0x04, 0xAE, 0x6B, 0x30, 0xA0, 0x9A, 0x54, 0xD3, 0x56, 0xB7, 0xAF, 0xF7, 0x42, 0xFD, 0x06, - 0x5E, 0x1B, 0x88, 0xBC, 0xEE, 0xB1, 0xAC, 0x73, 0x67, 0xF3, 0xB6, 0xF7, 0x3B, 0x20, 0xF3, 0x8B, - 0x3B, 0xEB, 0xE7, 0xED, 0xB4, 0xD9, 0x8A, 0x9E, 0x5B, 0xE2, 0x31, 0xDD, 0x96, 0xB4, 0xED, 0xEB, - 0x9E, 0x56, 0xD3, 0x95, 0x1D, 0x2B, 0x11, 0x30, 0x6B, 0x4A, 0xA2, 0x02, 0x00, 0x9E, 0x26, 0xE5, - 0x05, 0xFF, 0x20, 0x83, 0xB6, 0x43, 0x08, 0x75, 0x6D, 0x4C, 0xB1, 0xE6, 0x97, 0xDE, 0xE8, 0xB0, - 0xAF, 0x57, 0xBE, 0x3A, 0x11, 0x36, 0x33, 0xCE, 0xBD, 0x13, 0x88, 0x28, 0x62, 0x66, 0x4A, 0xA4, - 0x1C, 0x88, 0x89, 0x11, 0xA9, 0x9D, 0xE1, 0x5A, 0x43, 0x76, 0xC3, 0x52, 0x70, 0xBB, 0x5B, 0x04, - 0x57, 0xC7, 0x10, 0x51, 0xEA, 0xED, 0x09, 0x0E, 0xD4, 0x81, 0x08, 0xBD, 0x1A, 0x86, 0x5D, 0x97, - 0x40, 0xFA, 0x31, 0xE2, 0xF0, 0xA7, 0x8F, 0x33, 0x84, 0x6B, 0xF2, 0xBD, 0x21, 0x88, 0x0E, 0x50, - 0x2D, 0x65, 0x41, 0x40, 0xE6, 0xB2, 0x85, 0x1E, 0x46, 0x63, 0x06, 0xCC, 0xB8, 0xDF, 0x0D, 0x84, - 0x38, 0x2F, 0x29, 0x65, 0x5D, 0x92, 0xAC, 0x39, 0x8B, 0x00, 0x22, 0x0E, 0x91, 0xDB, 0xB5, 0x49, - 0x35, 0x7C, 0xE4, 0x4A, 0xD8, 0xFA, 0x6E, 0x35, 0x8D, 0xAC, 0xF5, 0xE6, 0x62, 0xA9, 0x85, 0xD7, - 0xFA, 0x68, 0x00, 0x40, 0x0C, 0x3E, 0xBF, 0x2C, 0x44, 0xEB, 0xFD, 0x7E, 0x18, 0x22, 0x23, 0xE2, - 0x10, 0x43, 0x0C, 0x7C, 0xBA, 0xAC, 0x22, 0xFA, 0x7C, 0x5A, 0x42, 0x20, 0x55, 0xBD, 0x2C, 0x39, - 0x30, 0xDD, 0x1D, 0x26, 0x4F, 0x9C, 0xAC, 0x96, 0x08, 0x8A, 0xEA, 0x9A, 0x85, 0x11, 0xDD, 0xFE, - 0xFD, 0xF6, 0xF3, 0x69, 0x4D, 0xE2, 0xD7, 0x0C, 0x1F, 0x76, 0xE3, 0x71, 0x3F, 0xC6, 0xC8, 0x00, - 0x46, 0x48, 0xF7, 0xC7, 0xE9, 0xEE, 0x30, 0xFD, 0xFA, 0xF7, 0x9F, 0x1C, 0x14, 0x00, 0x60, 0x1A, - 0x82, 0x7A, 0x49, 0x00, 0x80, 0x40, 0xCC, 0x4C, 0x8F, 0x2F, 0x33, 0x22, 0x1C, 0xA6, 0x21, 0x06, - 0x3A, 0x5D, 0x52, 0x60, 0xBC, 0x84, 0xA4, 0x66, 0x6B, 0x12, 0x3F, 0xAC, 0x44, 0xAC, 0xE7, 0xE0, - 0x80, 0x00, 0xB6, 0x26, 0x8B, 0x01, 0x77, 0x03, 0x8B, 0x5A, 0x16, 0xCB, 0xA2, 0xFB, 0x71, 0x38, - 0xEE, 0x47, 0xCF, 0xD9, 0xFB, 0xE6, 0xD3, 0x73, 0x16, 0xBD, 0xDB, 0x8F, 0xE7, 0x25, 0x1D, 0xA6, - 0x21, 0x67, 0xFD, 0xD5, 0x1F, 0x7E, 0x00, 0x83, 0x69, 0x60, 0x44, 0x18, 0x62, 0x88, 0x6B, 0x32, - 0x00, 0x53, 0x5B, 0xB3, 0x1C, 0xF7, 0x23, 0x13, 0xE6, 0x2C, 0x22, 0x5C, 0x63, 0x71, 0xE0, 0xB8, - 0x1B, 0x76, 0x63, 0x7C, 0x39, 0x2F, 0xAA, 0x16, 0x03, 0xBD, 0x3B, 0x4E, 0xD3, 0x18, 0x45, 0x94, - 0x08, 0x55, 0x4B, 0xCC, 0x44, 0x4F, 0x1B, 0x37, 0xFF, 0x5A, 0x2D, 0x66, 0xE0, 0x1F, 0x88, 0x48, - 0xCE, 0x1E, 0xE3, 0xA9, 0x5E, 0xD3, 0xB5, 0xD7, 0xEC, 0xAA, 0x33, 0xD8, 0xE6, 0x35, 0x4F, 0x63, - 0xAC, 0x46, 0x27, 0xEC, 0x77, 0xC3, 0xBF, 0xFA, 0x9F, 0xFE, 0xFC, 0x3F, 0xFF, 0xDD, 0x1F, 0x7F, - 0xFA, 0xF1, 0xFE, 0x79, 0xCE, 0x21, 0x4E, 0xDF, 0x7C, 0xFB, 0xF8, 0x7F, 0x7D, 0xFE, 0x77, 0x7F, - 0xF5, 0x97, 0xBF, 0xF8, 0xEA, 0x8B, 0xF7, 0x00, 0x90, 0x92, 0xA2, 0xC9, 0xCD, 0xC9, 0x43, 0x03, - 0x82, 0x1B, 0x52, 0xF4, 0x13, 0x24, 0x67, 0x6F, 0xAD, 0xB7, 0x93, 0xA8, 0x2A, 0xA1, 0x1F, 0x80, - 0x81, 0xE1, 0xD5, 0xB1, 0xF8, 0x8F, 0x11, 0xB3, 0x55, 0x0F, 0x6C, 0x93, 0xAC, 0x55, 0xEF, 0x00, - 0x33, 0x75, 0xA7, 0x90, 0x02, 0x60, 0x3B, 0x0F, 0x30, 0xE8, 0x03, 0xA7, 0xEB, 0x08, 0xC1, 0xFD, - 0xEB, 0xBD, 0x67, 0xC6, 0x7F, 0x68, 0x8E, 0xFF, 0x86, 0xF8, 0x9B, 0xAF, 0xA4, 0x56, 0x0A, 0xBB, - 0xE6, 0xA9, 0x4E, 0x5D, 0xA9, 0x3C, 0xE6, 0x97, 0x58, 0x20, 0x22, 0xD4, 0x72, 0x3E, 0xAF, 0x6D, - 0xD0, 0x1A, 0x58, 0x5E, 0xC2, 0xD7, 0xDC, 0x91, 0x8F, 0x88, 0x66, 0x29, 0x67, 0xBC, 0x7A, 0x02, - 0x9B, 0x81, 0x94, 0x4B, 0x12, 0x51, 0xAC, 0x5C, 0x4F, 0xD8, 0x92, 0xEA, 0xA8, 0x96, 0xB4, 0x29, - 0x23, 0x27, 0x02, 0xB5, 0xEA, 0xFC, 0x74, 0x77, 0x8A, 0xAB, 0x5D, 0x36, 0xCF, 0x2B, 0x11, 0x0D, - 0x43, 0x2B, 0x33, 0x61, 0xE5, 0x9A, 0x62, 0x44, 0xBF, 0x1A, 0xB9, 0x60, 0x94, 0x97, 0x12, 0x50, - 0x00, 0x2C, 0x17, 0xAA, 0x5D, 0x55, 0xFD, 0x2F, 0x8C, 0x5D, 0xB2, 0xB8, 0xA0, 0xDA, 0x68, 0x44, - 0x84, 0x66, 0xFC, 0xBF, 0xFF, 0x1F, 0xFF, 0xE7, 0x30, 0xB0, 0x87, 0xAC, 0xDF, 0xEC, 0x65, 0x07, - 0x0D, 0x1B, 0x70, 0xB4, 0xE7, 0x66, 0xA7, 0x5F, 0x7F, 0x72, 0xB5, 0xCA, 0x85, 0x15, 0x51, 0x44, - 0xFD, 0x94, 0xAD, 0xD8, 0x16, 0x56, 0x1C, 0xFC, 0x7E, 0x6B, 0xEF, 0x38, 0x04, 0x42, 0xCA, 0xF5, - 0x94, 0xE0, 0xDD, 0x71, 0x0A, 0x4C, 0x6B, 0x12, 0x00, 0x34, 0x30, 0x31, 0x54, 0xAF, 0xDC, 0x52, - 0x47, 0x60, 0xE5, 0x2E, 0x4B, 0x2C, 0xC1, 0xB4, 0x56, 0x5C, 0x03, 0xD6, 0xE1, 0xD7, 0x96, 0x6E, - 0xE8, 0xD1, 0x09, 0x6A, 0x9E, 0x43, 0x1A, 0x03, 0x79, 0x64, 0xAC, 0x88, 0x64, 0xB5, 0xAC, 0xB6, - 0xD4, 0xDB, 0x36, 0x2F, 0x4B, 0x4E, 0x59, 0x63, 0xE4, 0xF3, 0x9C, 0x1E, 0x4F, 0xCB, 0x79, 0xC9, - 0x81, 0x28, 0x30, 0x89, 0x68, 0x0C, 0x9C, 0x44, 0xDC, 0xEB, 0x7F, 0x59, 0x52, 0xCA, 0x1A, 0x02, - 0x1F, 0xA6, 0xF8, 0xC5, 0xC3, 0x7E, 0xBF, 0x1B, 0x90, 0x70, 0x9E, 0x93, 0x88, 0xFA, 0xE5, 0x4F, - 0x31, 0x86, 0xC3, 0x34, 0x1C, 0xA6, 0xC8, 0x4C, 0xD3, 0x10, 0x01, 0x6C, 0x0C, 0x61, 0x18, 0x82, - 0x59, 0x11, 0x72, 0x58, 0x6F, 0xB7, 0xCB, 0x59, 0xD7, 0x2C, 0xA9, 0x9C, 0x72, 0xE0, 0xE9, 0xB2, - 0x2E, 0x29, 0xAB, 0x9A, 0x17, 0xBA, 0xAC, 0x76, 0x90, 0x1B, 0x3A, 0x06, 0x06, 0x81, 0x29, 0x04, - 0x1A, 0x23, 0x7F, 0x78, 0x38, 0x8C, 0x63, 0xC8, 0x59, 0x2F, 0x4B, 0x3A, 0x5D, 0x56, 0xD7, 0x55, - 0x01, 0x31, 0xA5, 0xFC, 0xED, 0xE3, 0x39, 0x8B, 0x81, 0x59, 0xCA, 0x22, 0x62, 0xD3, 0x18, 0xC6, - 0x21, 0xAC, 0xAB, 0x9C, 0xE7, 0xA4, 0x66, 0xE7, 0x39, 0x8D, 0x91, 0xD9, 0x73, 0xD5, 0xCC, 0x76, - 0x53, 0x64, 0x26, 0x55, 0xF5, 0x6B, 0xBB, 0xEE, 0xF6, 0xC3, 0x57, 0x1F, 0x8E, 0x1F, 0x3F, 0xDC, - 0xB9, 0x6B, 0x4C, 0xA4, 0xA4, 0xB6, 0x94, 0x93, 0xB5, 0x57, 0x4E, 0x52, 0xDF, 0x63, 0x11, 0x59, - 0xD7, 0xE4, 0xB7, 0x8E, 0xFA, 0xB7, 0x52, 0x96, 0x9C, 0x05, 0x10, 0x03, 0x33, 0xB4, 0x52, 0x4E, - 0x06, 0x6A, 0xB2, 0xAE, 0xB2, 0xAE, 0x49, 0xD5, 0xD6, 0x94, 0xFD, 0x64, 0x23, 0x04, 0x7E, 0x79, - 0x3E, 0xFD, 0xEE, 0x77, 0x7F, 0x0C, 0x31, 0xFE, 0xE7, 0x5F, 0xFF, 0xFE, 0xC3, 0xFB, 0xFB, 0xFF, - 0xF8, 0xEB, 0x6F, 0xD4, 0x8C, 0x99, 0x53, 0x96, 0x5F, 0xFD, 0xF6, 0x8F, 0x97, 0xCB, 0x72, 0xDC, - 0x4F, 0x93, 0x67, 0xBC, 0xD6, 0xC2, 0xF6, 0x8D, 0x1A, 0x7B, 0x00, 0x2A, 0x14, 0x52, 0xAB, 0x91, - 0x42, 0xE1, 0xEA, 0x7A, 0xB7, 0x4E, 0xD5, 0xCE, 0xB0, 0xC2, 0x53, 0x3F, 0x91, 0x62, 0x4A, 0xF6, - 0xB2, 0xBC, 0xB2, 0xD1, 0x66, 0x17, 0x60, 0x73, 0x5D, 0x42, 0xB9, 0x5B, 0xB3, 0x96, 0x75, 0x40, - 0x24, 0xA4, 0x76, 0x5D, 0xF9, 0x16, 0x91, 0xEB, 0x49, 0x7D, 0x85, 0x79, 0x4B, 0x86, 0x5F, 0xAD, - 0x9A, 0x56, 0x07, 0x50, 0xC3, 0xAF, 0xAE, 0x92, 0x10, 0x1A, 0xFF, 0x38, 0x12, 0x35, 0x0F, 0xE1, - 0x36, 0x66, 0x00, 0x73, 0xB2, 0x30, 0x33, 0xC3, 0xE2, 0x42, 0xAA, 0x81, 0xC2, 0x0D, 0xB6, 0xB4, - 0xDC, 0x9C, 0x52, 0x1E, 0x70, 0x47, 0x57, 0xAD, 0x14, 0x5F, 0x5B, 0xDA, 0x56, 0x2F, 0x70, 0x40, - 0x84, 0x9C, 0xC5, 0xA5, 0xB8, 0x6A, 0x0B, 0x72, 0x53, 0x44, 0x04, 0x24, 0x66, 0xE2, 0x1A, 0x0F, - 0x48, 0x44, 0x8C, 0x88, 0x7E, 0x96, 0x55, 0x1A, 0x21, 0x40, 0x08, 0x1C, 0x98, 0xD9, 0xD4, 0xC0, - 0x20, 0x7B, 0x45, 0x42, 0x44, 0x22, 0x1C, 0x86, 0x18, 0xEA, 0x55, 0x92, 0x0D, 0x23, 0xB4, 0xB8, - 0xA0, 0x6A, 0x49, 0xB8, 0x57, 0x76, 0xA5, 0x2F, 0xBD, 0x15, 0xFD, 0x6E, 0xAB, 0x7E, 0x8C, 0x88, - 0x61, 0x08, 0x81, 0x3C, 0xE8, 0x81, 0xB4, 0x5F, 0x9D, 0x7E, 0x11, 0xFB, 0x50, 0xE0, 0x37, 0x51, - 0xAC, 0x7F, 0xAC, 0x93, 0x02, 0x0D, 0x47, 0x6B, 0xD5, 0x8A, 0x10, 0x02, 0xD5, 0xC2, 0x07, 0xE5, - 0x3E, 0x1B, 0x1F, 0xA7, 0x9A, 0xAD, 0x6B, 0x62, 0xE6, 0xC3, 0x7E, 0x08, 0x01, 0x1F, 0x5F, 0x16, - 0x97, 0xD8, 0xA7, 0x39, 0x37, 0x63, 0xDE, 0xC1, 0x9E, 0xA8, 0x5C, 0xC5, 0xA6, 0x60, 0x8C, 0xE8, - 0x59, 0x35, 0xC3, 0x18, 0x88, 0xD0, 0x83, 0x21, 0x3C, 0xC8, 0x96, 0x08, 0xB3, 0xD8, 0x9A, 0xCB, - 0x25, 0xB7, 0x06, 0x40, 0x04, 0x8C, 0xB4, 0x26, 0x05, 0xC4, 0xAC, 0xFA, 0xFD, 0xD3, 0xC5, 0x15, - 0x10, 0x87, 0x2F, 0x42, 0xCC, 0xAA, 0x91, 0xF9, 0xF1, 0x65, 0xF1, 0x2B, 0x4E, 0xD3, 0xCB, 0x92, - 0xC4, 0x44, 0x14, 0x10, 0xB2, 0x5A, 0x0C, 0x7C, 0xB7, 0x1F, 0x96, 0x94, 0xCD, 0x60, 0x08, 0x8C, - 0x80, 0x6B, 0x89, 0x95, 0x05, 0x33, 0x38, 0x2F, 0xEB, 0xD9, 0xC3, 0x38, 0x10, 0xA6, 0x31, 0x12, - 0x62, 0x60, 0x56, 0x12, 0x0F, 0xF7, 0x57, 0xB5, 0x79, 0x4D, 0x62, 0x36, 0x30, 0x06, 0xA2, 0x21, - 0xB2, 0x78, 0x6A, 0x05, 0x19, 0x98, 0x89, 0xE8, 0x30, 0x04, 0xEF, 0x48, 0xD5, 0xB2, 0xE8, 0x92, - 0xB2, 0x47, 0x87, 0xF8, 0x42, 0x53, 0x2D, 0x7E, 0x05, 0x60, 0xBB, 0x61, 0x20, 0x84, 0x25, 0xE7, - 0x7D, 0x88, 0x0F, 0x87, 0x89, 0x98, 0x10, 0xC9, 0x43, 0x46, 0x8E, 0xBB, 0x21, 0x04, 0x1A, 0x42, - 0xC8, 0x22, 0x97, 0x25, 0x7F, 0xB8, 0x67, 0x33, 0x23, 0x42, 0x11, 0x45, 0xC0, 0x40, 0xE4, 0x81, - 0x1D, 0x06, 0x36, 0xC4, 0xF0, 0xF9, 0xF9, 0xF2, 0x74, 0x9A, 0xEF, 0xF6, 0x93, 0xB3, 0x4C, 0x0C, - 0xC1, 0xDF, 0x01, 0x00, 0xBF, 0x83, 0xD9, 0x4B, 0xCE, 0x79, 0x64, 0xF6, 0x9A, 0x64, 0x1C, 0x02, - 0x73, 0xC9, 0xB8, 0x6C, 0x87, 0xEB, 0x8D, 0x52, 0xCC, 0x2C, 0xE7, 0xBC, 0x2C, 0x39, 0x67, 0x41, - 0x44, 0x11, 0x22, 0xC4, 0xAC, 0x96, 0x52, 0x36, 0x33, 0x8F, 0x5F, 0x09, 0xA1, 0xE4, 0x39, 0xB9, - 0x69, 0x23, 0xA2, 0x39, 0x17, 0xFF, 0x40, 0x4A, 0x42, 0x84, 0x31, 0x0C, 0xBF, 0xFF, 0xC3, 0x37, - 0x6B, 0x86, 0x7F, 0xF3, 0xD7, 0x7F, 0xF7, 0xF1, 0xC3, 0xC3, 0x92, 0xF4, 0xF3, 0xD3, 0x09, 0x89, - 0x5E, 0x5E, 0x5E, 0x7E, 0xF9, 0x8B, 0x9F, 0x7D, 0x7C, 0xFF, 0xF0, 0x87, 0x6F, 0x7F, 0xF8, 0xD3, - 0x37, 0xDF, 0x7F, 0xF9, 0xF1, 0xFE, 0x2F, 0xFF, 0xE2, 0xE7, 0x77, 0xC7, 0x83, 0xE7, 0xBE, 0xF4, - 0xD1, 0xFB, 0x8D, 0xFC, 0xB0, 0x44, 0x8A, 0x15, 0x08, 0x73, 0x6C, 0x6A, 0x6A, 0x54, 0xCA, 0x59, - 0xD5, 0x42, 0xE4, 0xC0, 0x8C, 0x82, 0x54, 0x83, 0xEC, 0x0B, 0x2B, 0x5B, 0x45, 0xAB, 0xC6, 0x0B, - 0xC5, 0x90, 0xBA, 0x65, 0x29, 0x6F, 0xD4, 0x21, 0xCE, 0xD5, 0x11, 0x2C, 0xBE, 0xA3, 0x46, 0xF6, - 0x45, 0x73, 0x70, 0x14, 0xA4, 0xEA, 0x54, 0x69, 0x9C, 0xD2, 0x31, 0x08, 0xB5, 0x1F, 0xE0, 0x95, - 0xE3, 0x0C, 0x2A, 0x8A, 0x15, 0xBF, 0xA0, 0xF5, 0x1F, 0xDE, 0xB0, 0xDF, 0x2D, 0x0F, 0x56, 0x16, - 0xAE, 0x05, 0x2D, 0x3B, 0xCD, 0x02, 0x4C, 0xEB, 0x25, 0x2E, 0xC5, 0x65, 0xE9, 0x03, 0x20, 0x66, - 0xCF, 0x53, 0x51, 0xC0, 0xC0, 0xEC, 0xD7, 0x7A, 0x4B, 0xC5, 0x17, 0x66, 0x1E, 0x8A, 0xCF, 0x0B, - 0xB0, 0x66, 0x3B, 0xD1, 0x56, 0x08, 0xCB, 0x90, 0x01, 0x4D, 0x09, 0xB0, 0x79, 0x00, 0xCC, 0x4A, - 0x54, 0x66, 0x4A, 0x89, 0xC7, 0x01, 0xFC, 0x16, 0x18, 0xE6, 0x66, 0x30, 0xB9, 0x58, 0x72, 0xA1, - 0xEE, 0xCA, 0xA7, 0xD5, 0x24, 0xA7, 0x3A, 0x53, 0xF4, 0x3A, 0x0B, 0x4D, 0xC9, 0xAC, 0xC3, 0xAE, - 0xB0, 0x1B, 0x02, 0x79, 0xBC, 0x92, 0xAE, 0xEA, 0x55, 0xC0, 0xCD, 0xC0, 0x9D, 0x7C, 0x76, 0x2D, - 0xBE, 0xCC, 0xD4, 0x89, 0xC6, 0xEC, 0x4A, 0x32, 0xD3, 0xF5, 0x35, 0x79, 0xED, 0x5F, 0xBC, 0xB6, - 0x3D, 0xFD, 0x63, 0x22, 0x72, 0x50, 0xF7, 0xC2, 0x19, 0x22, 0xA5, 0x8B, 0xCB, 0x65, 0x15, 0xB1, - 0xD3, 0xE5, 0xB2, 0xA6, 0x6C, 0x80, 0x59, 0x15, 0x14, 0x96, 0xB4, 0x22, 0x82, 0x5A, 0xB9, 0xDB, - 0x2E, 0x12, 0x0D, 0x81, 0x00, 0xD1, 0x55, 0xB6, 0xDD, 0x14, 0xEF, 0xF7, 0xE3, 0x6E, 0x8A, 0x08, - 0x70, 0x7F, 0xB7, 0x53, 0xAF, 0xE5, 0x0F, 0xB0, 0xAE, 0x32, 0xAF, 0xE9, 0xFB, 0xA7, 0xF3, 0xBC, - 0xE4, 0x35, 0x77, 0xA7, 0xFB, 0xF5, 0x7C, 0x7A, 0x49, 0x3A, 0xAF, 0x79, 0x37, 0x84, 0x35, 0x4B, - 0x0C, 0x34, 0xC6, 0x30, 0x44, 0x56, 0xB3, 0xCB, 0x9C, 0x96, 0x2C, 0xE3, 0x10, 0x98, 0xF0, 0xE5, - 0xB2, 0xCE, 0xAB, 0x7A, 0x1C, 0x36, 0x02, 0x64, 0xD1, 0xD3, 0xB2, 0x1E, 0xA6, 0xE8, 0x45, 0xD3, - 0x00, 0x40, 0x55, 0x3C, 0x92, 0x20, 0x8B, 0x8A, 0xD9, 0x69, 0x4E, 0x39, 0xEB, 0x57, 0xEF, 0x0F, - 0xF3, 0x9A, 0xC7, 0x01, 0x98, 0xC9, 0xC0, 0xBE, 0xFB, 0x74, 0x12, 0x55, 0x42, 0xF4, 0x1A, 0x1E, - 0x81, 0x79, 0x4E, 0x39, 0x08, 0x21, 0x96, 0xD8, 0x24, 0x2F, 0x70, 0x10, 0x03, 0x0D, 0x4C, 0x2A, - 0x7A, 0xDC, 0x0D, 0xC7, 0xFD, 0xF8, 0xFD, 0xE3, 0xD9, 0x0C, 0xB8, 0x17, 0x38, 0xE0, 0x58, 0x0F, - 0x84, 0xF8, 0xEE, 0x38, 0x8E, 0x43, 0x78, 0x7C, 0x99, 0xA3, 0xE7, 0x45, 0x11, 0x22, 0x22, 0x33, - 0x0D, 0x43, 0x98, 0xA6, 0x61, 0x27, 0xE2, 0xBA, 0xCF, 0x65, 0x5E, 0x73, 0x96, 0x69, 0x1A, 0x52, - 0xCA, 0x22, 0x1A, 0x63, 0xF0, 0x1A, 0x4D, 0x0B, 0xD3, 0x71, 0x3F, 0x8E, 0x31, 0x22, 0x40, 0x56, - 0x4D, 0x39, 0xC7, 0x18, 0x22, 0x91, 0xAA, 0x0D, 0x43, 0x30, 0xB0, 0x9C, 0x35, 0xC6, 0xE0, 0xF8, - 0x15, 0xA3, 0x6F, 0x25, 0xF8, 0xBD, 0x76, 0xBD, 0x92, 0x52, 0xEB, 0xE1, 0x61, 0xE5, 0x08, 0x5D, - 0xD7, 0xBC, 0x2C, 0x49, 0x3C, 0x1B, 0xB1, 0x16, 0x7F, 0xF7, 0x8C, 0xDF, 0x2C, 0xCA, 0x80, 0xA4, - 0x2D, 0x61, 0x11, 0x44, 0x8C, 0x89, 0x32, 0x88, 0x97, 0x61, 0x59, 0x2D, 0x4F, 0xD3, 0xF0, 0xD7, - 0xFF, 0xFE, 0xBF, 0xFC, 0x9B, 0x7F, 0xF7, 0x2B, 0x95, 0xFC, 0xF9, 0xE9, 0xE5, 0x1F, 0xFF, 0xE2, - 0xCB, 0x6F, 0x1F, 0x2F, 0x77, 0xC7, 0xBD, 0xE4, 0x84, 0x48, 0x4F, 0x4F, 0xCF, 0xEF, 0xEE, 0x8F, - 0x87, 0xDD, 0xA8, 0x39, 0x7F, 0xF3, 0xCD, 0xE7, 0xF9, 0x32, 0x7F, 0xF5, 0xE5, 0x87, 0xAF, 0xBE, - 0xFC, 0x70, 0x7F, 0x77, 0x20, 0x22, 0x11, 0x05, 0x28, 0x97, 0x15, 0x62, 0xBD, 0x29, 0xBC, 0xEA, - 0xFC, 0x2D, 0x9C, 0xB6, 0x70, 0xA9, 0x8F, 0x2C, 0xAB, 0x42, 0x06, 0x35, 0x23, 0xC0, 0x88, 0x01, - 0x4A, 0xF6, 0x40, 0xC1, 0xBD, 0x1B, 0x41, 0xDD, 0x54, 0x1B, 0xA8, 0xF1, 0xAC, 0x1B, 0xC2, 0xF9, - 0x17, 0x14, 0xCC, 0x4A, 0x84, 0x94, 0x7F, 0x40, 0xB0, 0x45, 0x10, 0xF4, 0xF1, 0x9C, 0x3D, 0x2A, - 0x81, 0x95, 0xCE, 0x5A, 0x65, 0x91, 0xEB, 0x1E, 0xAF, 0x40, 0x07, 0x11, 0xCB, 0xC5, 0xF7, 0x1B, - 0x5E, 0x39, 0xDE, 0x5D, 0xD7, 0x69, 0xAA, 0x1F, 0xBC, 0x46, 0xB1, 0x2B, 0x08, 0xAB, 0x2F, 0x43, - 0xB5, 0x04, 0x6B, 0x7B, 0x44, 0x4C, 0x1E, 0x8F, 0x6A, 0x66, 0x08, 0x30, 0x0E, 0x83, 0xA8, 0xE6, - 0x9C, 0x03, 0x23, 0x53, 0x09, 0xC7, 0xC7, 0x9A, 0xA7, 0x85, 0x08, 0x5C, 0xAE, 0xE4, 0x43, 0x53, - 0xF3, 0x7B, 0xC2, 0x01, 0xA1, 0x95, 0xB6, 0x8F, 0x91, 0x01, 0x01, 0xD0, 0x88, 0x30, 0xC4, 0x20, - 0xA2, 0x29, 0xE7, 0x10, 0x02, 0x11, 0xA8, 0x34, 0xC5, 0xB0, 0x5C, 0x15, 0xAA, 0x9D, 0xD7, 0xAB, - 0xAD, 0x19, 0xB8, 0x2F, 0xD2, 0x0F, 0xC8, 0xC8, 0x5A, 0xE2, 0x8A, 0x5E, 0xCF, 0x25, 0xAC, 0x29, - 0x13, 0x33, 0x98, 0x18, 0x40, 0x0C, 0xC6, 0xF5, 0x2A, 0xC6, 0x8A, 0x62, 0xE6, 0x52, 0x1D, 0x00, - 0x44, 0xCC, 0x2C, 0x57, 0xC7, 0xA1, 0x21, 0x51, 0x0C, 0x01, 0xAE, 0x31, 0xAB, 0x35, 0xDD, 0xEF, - 0x0A, 0x16, 0x2F, 0x80, 0xC3, 0x27, 0x30, 0x53, 0x8C, 0x1E, 0x60, 0x51, 0x72, 0xD9, 0x98, 0x39, - 0x30, 0x8B, 0x64, 0x8F, 0x98, 0x55, 0xB3, 0x7D, 0x18, 0x76, 0x63, 0x74, 0xE7, 0xC6, 0x0F, 0x8F, - 0xE7, 0x24, 0xA2, 0x6A, 0x29, 0xC9, 0x38, 0x06, 0x26, 0x72, 0xE5, 0xE2, 0xFD, 0xC3, 0xBE, 0xAA, - 0xE9, 0x08, 0x60, 0x97, 0xCB, 0x1A, 0x89, 0x99, 0x68, 0x8C, 0x9C, 0x72, 0xFE, 0xE1, 0x79, 0x9E, - 0x93, 0xF2, 0xF5, 0x29, 0xBB, 0xEF, 0x8D, 0x93, 0xAF, 0x17, 0x41, 0x44, 0xC0, 0x2C, 0x7E, 0x3F, - 0x88, 0x30, 0xD3, 0x5D, 0xE4, 0x35, 0x6B, 0xCA, 0x25, 0x3B, 0x03, 0xB1, 0x08, 0x75, 0x42, 0x04, - 0xC3, 0xEF, 0x9F, 0xCE, 0x53, 0x0C, 0x00, 0xB0, 0x8A, 0x78, 0x42, 0x28, 0x81, 0x4B, 0x78, 0x19, - 0xA6, 0xE1, 0x70, 0x1C, 0x98, 0x69, 0x8C, 0xC1, 0x35, 0x84, 0xCB, 0xBC, 0x9E, 0xE6, 0xD5, 0x45, - 0xF9, 0x79, 0x4D, 0x84, 0x5E, 0xF3, 0x03, 0xE2, 0x40, 0x4B, 0x12, 0x44, 0x1C, 0x23, 0x65, 0xD1, - 0x77, 0xC7, 0x69, 0x1A, 0xC2, 0xE7, 0x97, 0x59, 0xCC, 0x2D, 0x6B, 0x30, 0xB3, 0x18, 0xC8, 0xB3, - 0x35, 0x4B, 0xB9, 0x3B, 0x35, 0x04, 0x18, 0x03, 0x0F, 0x81, 0xCF, 0x73, 0x5A, 0xD6, 0x7C, 0xB7, - 0x1F, 0x08, 0x51, 0x6A, 0x64, 0x03, 0x11, 0x8F, 0x63, 0xF4, 0xF8, 0x1F, 0x51, 0x71, 0xB5, 0x68, - 0xB7, 0x1B, 0xF6, 0xBB, 0xE1, 0x74, 0xB2, 0x18, 0x78, 0x18, 0x02, 0x18, 0x9C, 0xE7, 0xF5, 0x34, - 0x2F, 0x39, 0xDB, 0x1A, 0xF3, 0x61, 0x3F, 0x5D, 0xE6, 0xF5, 0xB2, 0xAC, 0x88, 0x28, 0x59, 0x60, - 0xC5, 0xE3, 0x7E, 0xF4, 0x94, 0x06, 0x55, 0x13, 0x55, 0xE6, 0xA2, 0x3B, 0xAB, 0x6A, 0xCE, 0x42, - 0x14, 0xFB, 0x95, 0x74, 0x13, 0x58, 0x04, 0x10, 0x21, 0x67, 0x4D, 0x29, 0x7B, 0xE6, 0x19, 0x00, - 0xA8, 0x6A, 0xF2, 0xF3, 0x50, 0xC4, 0xF3, 0xBC, 0xC4, 0x18, 0x48, 0xC0, 0x5D, 0x6C, 0x6C, 0xE8, - 0x7E, 0xAA, 0x94, 0x25, 0xAD, 0x39, 0xAB, 0x9B, 0xF6, 0x06, 0x48, 0x7F, 0xFF, 0xC7, 0xEF, 0xFE, - 0xEF, 0xFF, 0xE7, 0xDF, 0x32, 0x0D, 0x4F, 0x2F, 0x2F, 0x5F, 0x7F, 0xF5, 0xFE, 0xDD, 0xC3, 0xF1, - 0x37, 0x7F, 0xFC, 0x74, 0x38, 0xEC, 0x41, 0x25, 0x06, 0x3C, 0xEC, 0x06, 0x53, 0xFD, 0xE2, 0xFD, - 0x7D, 0x5E, 0xD7, 0x65, 0x1A, 0x44, 0xF5, 0x9B, 0x6F, 0x3F, 0x7F, 0xFB, 0xFD, 0xE3, 0xF1, 0xB8, - 0xFB, 0xE5, 0x2F, 0x7E, 0xFA, 0xFE, 0xE1, 0xDE, 0x0B, 0x54, 0x41, 0xDD, 0xAF, 0xA6, 0x3C, 0x99, - 0xBD, 0xC6, 0x25, 0x88, 0x31, 0x28, 0x08, 0x22, 0x32, 0x21, 0xBA, 0x83, 0x58, 0xCD, 0x4A, 0x91, - 0x0E, 0xD8, 0xC0, 0xE6, 0x9A, 0x72, 0x4A, 0xDC, 0xC6, 0x2B, 0xFF, 0x3D, 0x22, 0x1A, 0x01, 0x6A, - 0xFB, 0xAA, 0x91, 0x47, 0xB5, 0x59, 0x3D, 0x5D, 0xAD, 0xE6, 0xE9, 0xD6, 0x9A, 0x33, 0xAF, 0xBA, - 0x42, 0xA7, 0x37, 0x03, 0xEC, 0x35, 0xB5, 0x7E, 0x14, 0x9D, 0xCA, 0x79, 0x7D, 0xA9, 0x5F, 0x3F, - 0x52, 0xBB, 0x6D, 0xCA, 0xD9, 0xBD, 0x37, 0xD3, 0x6A, 0x9B, 0x0D, 0x8E, 0xD5, 0xD3, 0xA8, 0xDC, - 0x6D, 0x15, 0x39, 0x78, 0xFD, 0x30, 0x62, 0x22, 0x26, 0x44, 0x18, 0x30, 0x2C, 0x0B, 0x22, 0x89, - 0x2A, 0x96, 0xE2, 0x48, 0x56, 0x4A, 0x78, 0xC5, 0x2E, 0xC1, 0xA3, 0x95, 0x17, 0xD7, 0x1A, 0xEB, - 0xDB, 0xD8, 0x87, 0x19, 0xDD, 0x29, 0xE6, 0xB7, 0xE2, 0x04, 0x00, 0x04, 0x90, 0x2C, 0x02, 0x8A, - 0x25, 0xC9, 0x89, 0xA0, 0x5A, 0xCD, 0xFD, 0x94, 0x0B, 0x4A, 0x97, 0x1B, 0x39, 0x01, 0x6B, 0x1E, - 0xBB, 0x07, 0x70, 0x7B, 0xA1, 0xC0, 0xA2, 0x91, 0x65, 0xCF, 0x1B, 0xF0, 0x02, 0x4F, 0x55, 0xB7, - 0x12, 0x31, 0x22, 0x2A, 0x09, 0x13, 0x06, 0x49, 0x64, 0x5D, 0x73, 0x4A, 0xB9, 0x64, 0x95, 0x0F, - 0x21, 0x56, 0x76, 0xBD, 0xC9, 0x8A, 0xC0, 0xAE, 0x5E, 0x6D, 0x2F, 0xC0, 0x7B, 0x59, 0xA4, 0xAA, - 0xAE, 0x88, 0xB9, 0x58, 0xF2, 0x8C, 0x9D, 0x69, 0x8C, 0x31, 0x70, 0xCA, 0xE5, 0xBA, 0x4C, 0x72, - 0xFF, 0x06, 0xA1, 0xA8, 0x7E, 0xF5, 0xE1, 0x0E, 0xB1, 0x5C, 0x9E, 0xE8, 0x90, 0xBA, 0xAC, 0x69, - 0x37, 0x0D, 0x7E, 0xB5, 0x75, 0xED, 0x08, 0xC7, 0x71, 0xF0, 0xAE, 0x39, 0x84, 0x8F, 0xEF, 0x0E, - 0xFF, 0x03, 0xC0, 0xEF, 0xBE, 0x7D, 0x5E, 0x92, 0xF8, 0xB1, 0x60, 0xE0, 0xE2, 0x96, 0x13, 0xBF, - 0xAB, 0xDC, 0xCC, 0x0C, 0x22, 0x93, 0xDF, 0x44, 0xE7, 0x39, 0xEA, 0xAE, 0x30, 0x67, 0x91, 0xE7, - 0x4B, 0x2A, 0x3A, 0x51, 0x15, 0xA8, 0x84, 0x58, 0x2A, 0x53, 0x13, 0x6A, 0x56, 0x53, 0xCB, 0xC5, - 0x07, 0x6A, 0x84, 0x98, 0x92, 0xBE, 0xD8, 0x42, 0x88, 0xBB, 0x29, 0x0C, 0x43, 0x50, 0x95, 0xCB, - 0x65, 0x59, 0xB2, 0x44, 0x26, 0x00, 0x58, 0x45, 0x09, 0x91, 0x09, 0x87, 0xC8, 0xFB, 0x71, 0xD8, - 0xEF, 0xE2, 0xBC, 0xE6, 0xE7, 0xF3, 0xAA, 0xAA, 0xC7, 0xDD, 0x10, 0x03, 0xCF, 0x6B, 0x56, 0xD5, - 0x35, 0xE5, 0xF3, 0x92, 0x44, 0x94, 0x18, 0x2D, 0x03, 0x00, 0x10, 0x13, 0xA2, 0x31, 0x53, 0xE0, - 0x00, 0x06, 0xBB, 0x31, 0xCC, 0x4B, 0x32, 0x33, 0x44, 0x3A, 0x5D, 0xD6, 0xC3, 0x6E, 0xF0, 0x80, - 0x0F, 0x2D, 0xF5, 0xB9, 0x8A, 0x1F, 0xDD, 0x0C, 0x44, 0x6C, 0xBF, 0x8B, 0x66, 0x96, 0xB3, 0x1E, - 0x0E, 0x93, 0x16, 0x7C, 0xB2, 0x21, 0xF2, 0x18, 0x03, 0x98, 0x78, 0xA9, 0xA4, 0xC0, 0xB4, 0x9F, - 0x06, 0x00, 0x18, 0x62, 0xF0, 0x68, 0xC9, 0x65, 0xCD, 0x39, 0x8B, 0x19, 0xDC, 0x1D, 0x77, 0x66, - 0x7A, 0x3E, 0x2F, 0x59, 0xF4, 0xB2, 0xA4, 0x94, 0xF2, 0xD7, 0x1F, 0xEF, 0xA1, 0x5A, 0x67, 0xBE, - 0xC3, 0x29, 0x65, 0x0F, 0x18, 0x46, 0xC3, 0x5C, 0xBD, 0x7B, 0x8D, 0x79, 0x08, 0x49, 0x4D, 0x93, - 0x28, 0xA0, 0x04, 0x26, 0x37, 0x18, 0x6A, 0x69, 0x0A, 0x23, 0x04, 0x43, 0xF0, 0x9B, 0xA2, 0x55, - 0xED, 0x70, 0x18, 0xFF, 0xFA, 0xAF, 0xFF, 0x46, 0x52, 0x4E, 0x26, 0xA2, 0xF2, 0xB3, 0xAF, 0x3F, - 0x20, 0xDA, 0x65, 0x5E, 0xEE, 0xEE, 0xEF, 0xC7, 0x61, 0x37, 0x0D, 0x61, 0x1A, 0x07, 0x04, 0x41, - 0x10, 0xAF, 0x6C, 0x35, 0xAF, 0x19, 0x10, 0x41, 0xE0, 0xD3, 0x0F, 0xCF, 0x4F, 0x4F, 0xA7, 0xFF, - 0xE5, 0x5F, 0xFE, 0xD3, 0xBB, 0xE3, 0x31, 0xE7, 0x8C, 0x08, 0x9E, 0xD2, 0x56, 0xAD, 0xC3, 0xCA, - 0xAB, 0xD7, 0xD2, 0xDB, 0xB1, 0x85, 0x09, 0x03, 0x85, 0x92, 0x46, 0x5F, 0x45, 0xBE, 0x07, 0xA4, - 0x02, 0x76, 0xEE, 0x76, 0x28, 0x59, 0xD1, 0x85, 0x67, 0x3A, 0x4C, 0xB9, 0x82, 0x18, 0x76, 0xD3, - 0x1F, 0xA0, 0x5E, 0xB4, 0xD7, 0x8E, 0xF6, 0x0A, 0x98, 0xE2, 0x66, 0xB8, 0x22, 0x20, 0x02, 0x2A, - 0x1A, 0x60, 0xF1, 0x38, 0xB5, 0x76, 0x6E, 0xB4, 0xB0, 0xD7, 0x6E, 0x9C, 0x0A, 0x73, 0x6E, 0x59, - 0xC1, 0x66, 0x39, 0x03, 0x6C, 0x75, 0xDD, 0xBB, 0x46, 0xEC, 0x3A, 0xCB, 0xA7, 0x5B, 0x07, 0x8F, - 0x7B, 0x29, 0xF6, 0x6C, 0x08, 0x61, 0xF0, 0xEB, 0x85, 0x10, 0x11, 0x81, 0x18, 0x87, 0x21, 0x10, - 0xA1, 0x7B, 0x95, 0x62, 0x64, 0x04, 0x58, 0x56, 0x6D, 0x3A, 0xB8, 0xBB, 0x23, 0xE8, 0x55, 0xA8, - 0x8D, 0x8F, 0x99, 0x88, 0x10, 0xA1, 0x7A, 0xC0, 0xC0, 0xA5, 0x85, 0xD6, 0x04, 0x35, 0x33, 0xCD, - 0x52, 0xEC, 0x64, 0xF5, 0x50, 0x7E, 0x93, 0x36, 0xA8, 0x36, 0x47, 0x00, 0x68, 0xC1, 0xA3, 0x6D, - 0xE3, 0x00, 0xAC, 0xE6, 0xA8, 0x77, 0x11, 0x24, 0xCC, 0x61, 0x08, 0x7E, 0x70, 0x89, 0xCE, 0xEA, - 0x39, 0x4B, 0xCA, 0x12, 0x03, 0x23, 0x92, 0x8A, 0x99, 0xA9, 0xA8, 0xE5, 0x2C, 0xAA, 0x8A, 0x84, - 0x21, 0xD0, 0x38, 0xC6, 0x18, 0xD9, 0x15, 0xA1, 0xAD, 0xBF, 0xEB, 0x55, 0xEE, 0x77, 0xE5, 0x66, - 0xD7, 0x1D, 0x25, 0xD7, 0x35, 0xA9, 0x99, 0x1B, 0x83, 0x50, 0x15, 0x1F, 0x2E, 0x57, 0xD7, 0x11, - 0x22, 0x84, 0x40, 0xCC, 0x94, 0x45, 0x55, 0x8C, 0x88, 0xA6, 0x29, 0x56, 0xCF, 0x20, 0x22, 0xE2, - 0x6E, 0x37, 0xF6, 0x52, 0xCB, 0x1F, 0x22, 0x24, 0x2A, 0x27, 0x59, 0x81, 0xF9, 0xCB, 0x0F, 0xB8, - 0x9F, 0x86, 0x25, 0xE5, 0x1F, 0x9E, 0x2F, 0xDF, 0x7E, 0x3E, 0xAF, 0x59, 0xA6, 0x21, 0xEC, 0x86, - 0xF0, 0x32, 0x27, 0xBF, 0xBD, 0x6D, 0x8A, 0xEC, 0x94, 0xE0, 0x46, 0xAE, 0xAA, 0xAD, 0x59, 0x5F, - 0x2E, 0x8B, 0xB7, 0x20, 0xAA, 0xE0, 0x57, 0x67, 0x16, 0x92, 0xF4, 0xCB, 0x7A, 0xDA, 0x1D, 0x9D, - 0xE5, 0xA4, 0xD4, 0xCC, 0xC4, 0xC5, 0x6A, 0xB6, 0x25, 0xE5, 0x65, 0x0D, 0x81, 0xED, 0xB8, 0x1F, - 0xC1, 0x40, 0xD7, 0x4C, 0x84, 0x49, 0x0C, 0x00, 0x99, 0xF0, 0x30, 0xC5, 0x0F, 0xF7, 0x7B, 0x2F, - 0xD9, 0x38, 0x0D, 0x51, 0xC5, 0x2E, 0x4B, 0x42, 0x84, 0xE7, 0xF3, 0x0C, 0x80, 0xA2, 0x10, 0x39, - 0xA4, 0x24, 0x29, 0x79, 0x74, 0x08, 0x7B, 0x6C, 0x84, 0x07, 0xDF, 0x13, 0xC2, 0xFB, 0xE3, 0xEE, - 0xC3, 0xC3, 0x7E, 0x4D, 0x32, 0x0C, 0x4C, 0x44, 0xDF, 0x7F, 0x7E, 0x11, 0xD5, 0x2C, 0x9A, 0x92, - 0xC4, 0x58, 0xDC, 0xC3, 0x8D, 0x76, 0x99, 0x69, 0x5E, 0xD6, 0x79, 0x49, 0xF7, 0xC7, 0x9D, 0x64, - 0x5F, 0x7F, 0x03, 0xB0, 0x61, 0x88, 0x5F, 0x8C, 0x83, 0xBF, 0x96, 0xB3, 0x8C, 0x63, 0xA0, 0x7A, - 0x46, 0x96, 0x73, 0x06, 0xB0, 0x2C, 0x32, 0xC4, 0x70, 0x77, 0x9C, 0x98, 0xE9, 0xE5, 0xB4, 0xBC, - 0x9C, 0x97, 0x18, 0x78, 0x08, 0xCC, 0x84, 0xD6, 0xD5, 0x41, 0xF4, 0x12, 0x26, 0x2F, 0xE7, 0x79, - 0x4D, 0xE2, 0x27, 0xBF, 0xDE, 0x26, 0x22, 0xC4, 0x10, 0x54, 0xD5, 0x80, 0x52, 0xCE, 0x59, 0x8C, - 0x99, 0x45, 0xD4, 0x53, 0xD0, 0xCE, 0x75, 0x6D, 0x63, 0xE0, 0x21, 0xFA, 0x05, 0x87, 0x08, 0x02, - 0xCC, 0xFC, 0xC7, 0x3F, 0x7D, 0xF7, 0x9B, 0xDF, 0xFE, 0xF1, 0xAB, 0xF7, 0xF7, 0xFF, 0xFF, 0xDF, - 0xFD, 0xE1, 0xCF, 0x7F, 0xF9, 0xF5, 0x71, 0x37, 0x7D, 0xF7, 0xE9, 0x05, 0x89, 0x43, 0xE0, 0x87, - 0xFB, 0xE3, 0xDD, 0x61, 0x42, 0x30, 0x42, 0x3C, 0x9F, 0x66, 0x2D, 0xF5, 0x8F, 0x0B, 0xB7, 0xC6, - 0x18, 0xB3, 0xC8, 0xAF, 0x7E, 0xFD, 0xBB, 0xFF, 0xF1, 0x9F, 0xFE, 0xE3, 0xCA, 0xC9, 0x56, 0x63, - 0x90, 0xAC, 0x53, 0xC8, 0x3A, 0x8B, 0x01, 0xBD, 0xCC, 0x3C, 0x11, 0x51, 0x43, 0x31, 0xD7, 0x1C, - 0x9C, 0x3F, 0xFC, 0x14, 0x9F, 0x90, 0x7A, 0x0F, 0x4D, 0x71, 0x13, 0xAB, 0x5F, 0x3D, 0x70, 0x93, - 0xE9, 0x59, 0xE8, 0x1D, 0x8A, 0x51, 0xDB, 0x13, 0xFC, 0xF6, 0x6B, 0x65, 0xE2, 0x96, 0x4F, 0x80, - 0xC4, 0xED, 0x6E, 0x5D, 0x28, 0x46, 0xE6, 0xAD, 0xC7, 0xEB, 0xEA, 0xDC, 0x13, 0x36, 0x14, 0xF3, - 0xD3, 0x52, 0x30, 0xB3, 0x7A, 0x1B, 0xAD, 0xBF, 0x6D, 0x57, 0xB7, 0xEC, 0xDE, 0xAA, 0x95, 0xAF, - 0x1A, 0x27, 0x40, 0x2C, 0xA5, 0x2B, 0x7B, 0xCC, 0xB4, 0x7A, 0x87, 0x98, 0xFA, 0x7D, 0xB7, 0x35, - 0x21, 0xDF, 0x1F, 0x57, 0x29, 0x42, 0xF5, 0xF4, 0x5B, 0xF7, 0x54, 0x10, 0x04, 0xC4, 0x37, 0x00, - 0xB4, 0x9E, 0xCF, 0x94, 0x10, 0x0A, 0xC5, 0x16, 0x1D, 0x52, 0x1E, 0x22, 0xAA, 0xB6, 0x3B, 0xD6, - 0xC9, 0x9A, 0x01, 0xFA, 0xAB, 0x35, 0xE2, 0x8A, 0xDA, 0x84, 0xDB, 0x88, 0x09, 0x31, 0x7C, 0xFC, - 0x70, 0x87, 0x08, 0xEB, 0x9A, 0x2F, 0xF3, 0x5A, 0xE5, 0x18, 0x21, 0x60, 0x4A, 0x69, 0x59, 0xD2, - 0x65, 0x4D, 0x08, 0x38, 0x8D, 0xB1, 0xA9, 0x70, 0x6E, 0x7A, 0x10, 0x5D, 0xD5, 0xC6, 0x7B, 0x73, - 0xD5, 0x7A, 0x55, 0xB6, 0x47, 0x34, 0x66, 0x0C, 0x91, 0xE7, 0x39, 0x65, 0xD1, 0xC7, 0x97, 0x8B, - 0x9A, 0x21, 0x20, 0x13, 0xEE, 0xC6, 0x38, 0x4D, 0x03, 0x13, 0x7A, 0x85, 0x6F, 0x00, 0x8B, 0x81, - 0x62, 0x18, 0xDA, 0xAC, 0xDA, 0xFD, 0x11, 0xAD, 0xDF, 0x5E, 0x82, 0x59, 0xBD, 0xEC, 0xA0, 0x2C, - 0x74, 0x08, 0xC7, 0x03, 0x8E, 0x39, 0x8C, 0x91, 0xF7, 0x63, 0xFC, 0xE6, 0xF3, 0x29, 0x8B, 0x7E, - 0xF9, 0x6E, 0x4F, 0x4F, 0x97, 0xF3, 0x92, 0x93, 0x1F, 0x25, 0x5B, 0x69, 0xF0, 0xB2, 0xE4, 0x97, - 0x39, 0xA9, 0x9A, 0xC7, 0x6E, 0x72, 0x6B, 0x1C, 0xAB, 0x33, 0x1F, 0x4B, 0xAA, 0x84, 0x1F, 0x1E, - 0x88, 0x0B, 0xDE, 0x72, 0x04, 0x01, 0x0A, 0x10, 0xD8, 0x53, 0x47, 0xC9, 0xC3, 0x6E, 0x10, 0x3C, - 0x49, 0x01, 0x01, 0xF4, 0x30, 0x05, 0x46, 0x98, 0x86, 0x30, 0xC4, 0x30, 0x4D, 0x71, 0x59, 0xF3, - 0xE9, 0xB2, 0x64, 0x11, 0x22, 0x3C, 0xCF, 0x49, 0x54, 0x87, 0x18, 0x3C, 0xCA, 0xDF, 0x6B, 0x01, - 0xCD, 0x4B, 0x5E, 0x53, 0x1E, 0x87, 0x90, 0xB2, 0x0E, 0x91, 0x5D, 0x27, 0x72, 0x99, 0x34, 0x46, - 0x1E, 0xC7, 0x18, 0x98, 0x87, 0x2F, 0x1F, 0x56, 0xD7, 0x4A, 0xCA, 0xE8, 0xAE, 0x96, 0x5D, 0x44, - 0x5E, 0xCE, 0xCB, 0xF3, 0x69, 0xB9, 0x2C, 0xD9, 0x4B, 0x3C, 0xC4, 0xC0, 0xFB, 0x69, 0x18, 0x47, - 0x8C, 0x31, 0x20, 0x92, 0x9A, 0x86, 0x00, 0x35, 0x58, 0x1F, 0x96, 0x79, 0x75, 0xD7, 0xD2, 0x71, - 0x37, 0xC5, 0x81, 0x89, 0x28, 0xE7, 0x7C, 0x99, 0xD3, 0xB2, 0xE6, 0xAC, 0x32, 0xC6, 0x80, 0x88, - 0xF3, 0x92, 0xFC, 0x14, 0x72, 0x1C, 0x82, 0x19, 0x88, 0x9A, 0xA8, 0x2D, 0xAB, 0x88, 0x9A, 0xCF, - 0x1D, 0xCB, 0x21, 0x5D, 0x71, 0x23, 0x2C, 0x6B, 0x26, 0x84, 0x21, 0x84, 0x25, 0xE5, 0x24, 0x12, - 0x98, 0x44, 0xF5, 0x3C, 0x67, 0x26, 0x1C, 0x23, 0xA7, 0x1C, 0x62, 0x70, 0x59, 0x28, 0xD3, 0x34, - 0xFC, 0xE1, 0x0F, 0x7F, 0xCA, 0x49, 0x3E, 0x3D, 0x9F, 0x8E, 0x87, 0x09, 0x11, 0x9F, 0xCE, 0xF3, - 0x9F, 0xBE, 0x7F, 0xDC, 0xED, 0xA6, 0xC3, 0x6E, 0x22, 0x66, 0x62, 0x9E, 0x22, 0xA7, 0x94, 0x55, - 0x35, 0x46, 0x4E, 0x97, 0x25, 0x84, 0xC0, 0xC4, 0xBE, 0xD0, 0x88, 0xF8, 0xEB, 0xDF, 0xFC, 0xE9, - 0x27, 0x5F, 0x7F, 0xFC, 0xE2, 0xE3, 0x07, 0x3F, 0xD6, 0x80, 0x4E, 0xF9, 0x29, 0x6C, 0x59, 0xB6, - 0xCB, 0x29, 0x84, 0x02, 0x73, 0x8B, 0x38, 0x75, 0x65, 0x01, 0x4A, 0xCC, 0xBF, 0x9A, 0x1A, 0x81, - 0x9B, 0x26, 0xB6, 0x1D, 0x5E, 0x6E, 0xF9, 0x46, 0xE2, 0xAC, 0x04, 0x57, 0x68, 0xD5, 0x63, 0x03, - 0xFE, 0xD8, 0xAF, 0x4E, 0x52, 0x25, 0xDA, 0xA3, 0xD9, 0xBF, 0x88, 0x56, 0xCA, 0xB5, 0x13, 0x54, - 0x06, 0xED, 0x4C, 0xC8, 0x4D, 0x44, 0xBD, 0xC9, 0x5F, 0x85, 0x8D, 0x01, 0xA4, 0xFB, 0xF8, 0xE6, - 0x05, 0xEC, 0x73, 0x8F, 0xAF, 0x91, 0x11, 0xBB, 0x07, 0xC0, 0x72, 0xCE, 0x4C, 0xCC, 0x25, 0x2A, - 0x4A, 0x3D, 0x1C, 0xA3, 0x59, 0x69, 0xBE, 0x1A, 0x8C, 0x68, 0x58, 0x2E, 0x60, 0xAC, 0x42, 0xFD, - 0x8A, 0xBB, 0x01, 0xD1, 0xCC, 0x23, 0x2A, 0x10, 0x19, 0x98, 0xB7, 0xC8, 0x61, 0x37, 0x39, 0x89, - 0xA9, 0x89, 0x9A, 0x2D, 0x0E, 0x0C, 0xB6, 0x29, 0xDF, 0x3E, 0x7E, 0xF3, 0x56, 0x47, 0xDB, 0xCE, - 0x75, 0x54, 0x4E, 0x52, 0xCA, 0xB7, 0xC2, 0x65, 0x5E, 0x87, 0xC0, 0xCB, 0x9A, 0x3E, 0x3F, 0x5F, - 0xFC, 0xE2, 0x48, 0xD7, 0x1E, 0x93, 0x88, 0x88, 0x82, 0xC1, 0x34, 0x06, 0x3F, 0x9E, 0xD8, 0x4D, - 0x43, 0x8C, 0xE5, 0x16, 0x81, 0x37, 0xBA, 0x7B, 0x65, 0xCC, 0x43, 0x35, 0x24, 0xEB, 0x36, 0x94, - 0x6D, 0x55, 0x35, 0x0F, 0x1A, 0x4C, 0xA2, 0x84, 0x94, 0x72, 0xF6, 0xE8, 0x50, 0x00, 0x24, 0xA6, - 0x10, 0xC8, 0xCC, 0x52, 0xCA, 0x5B, 0x42, 0xE9, 0x8F, 0x84, 0x08, 0xDD, 0xF4, 0x6B, 0x66, 0x5E, - 0x96, 0x2E, 0xAD, 0x19, 0x10, 0x3C, 0xE5, 0x22, 0x86, 0xE0, 0xF2, 0xE6, 0xDD, 0x71, 0xF7, 0xF9, - 0xE5, 0xB2, 0x1B, 0xE3, 0x71, 0x3F, 0x7C, 0x7A, 0x3A, 0xFF, 0xF0, 0xBC, 0x10, 0x61, 0x56, 0x45, - 0x65, 0x00, 0xBB, 0xAC, 0x19, 0xAC, 0xC4, 0xA9, 0xD5, 0x92, 0x38, 0x1B, 0x48, 0xD7, 0xDE, 0x41, - 0x51, 0xD7, 0xE4, 0x76, 0xC6, 0x95, 0xC7, 0x17, 0x3D, 0x46, 0x4C, 0xED, 0xF1, 0x34, 0xA7, 0x2C, - 0x4F, 0xE7, 0xE5, 0xEB, 0xF7, 0xC7, 0xFB, 0xE3, 0xEE, 0xB2, 0xAC, 0x00, 0x91, 0x10, 0xA7, 0x18, - 0xC6, 0x21, 0xB8, 0xCB, 0x3C, 0x30, 0x05, 0x66, 0x35, 0xB8, 0xAC, 0x79, 0x37, 0x84, 0xF3, 0x92, - 0x4F, 0xF3, 0x7A, 0xB7, 0x1B, 0x03, 0xB3, 0xA8, 0x39, 0xB6, 0x9C, 0xE6, 0x75, 0xCD, 0xB2, 0x1B, - 0xE3, 0xC7, 0x87, 0xBD, 0x99, 0xFD, 0xF1, 0xFB, 0x67, 0x97, 0x57, 0x7E, 0xB6, 0xE6, 0x11, 0x09, - 0xE3, 0xB8, 0xE5, 0x48, 0xB4, 0x15, 0xF0, 0x05, 0x9F, 0x97, 0x9C, 0xB3, 0x4E, 0x63, 0x5C, 0xD6, - 0x34, 0xC6, 0x00, 0x88, 0xBA, 0xA6, 0xC0, 0x14, 0x63, 0x31, 0xCF, 0x19, 0x6B, 0x0C, 0xB7, 0x6F, - 0xD0, 0x18, 0x9D, 0xC9, 0x87, 0x48, 0x00, 0xF0, 0xF4, 0x7C, 0x46, 0xC4, 0xCB, 0x9C, 0x9E, 0xCF, - 0x0B, 0x31, 0x0D, 0x51, 0xC6, 0xC0, 0x00, 0x30, 0xCF, 0xAB, 0x07, 0xF7, 0x1A, 0x60, 0xCE, 0xD9, - 0xD4, 0x88, 0x9B, 0x12, 0xED, 0xF8, 0x85, 0x84, 0xB8, 0x8A, 0x02, 0x80, 0x5F, 0xFE, 0x40, 0x84, - 0x48, 0xC1, 0x15, 0x69, 0x03, 0x1C, 0x07, 0x1B, 0x82, 0x07, 0xC1, 0x09, 0xB3, 0x9F, 0x66, 0x20, - 0x33, 0xBD, 0xBB, 0xDF, 0xAF, 0x29, 0x5D, 0x96, 0x35, 0x04, 0x7A, 0xFF, 0x70, 0xB7, 0x9F, 0xA6, - 0x0F, 0xEF, 0xEE, 0x63, 0x8C, 0xD3, 0x6E, 0x1C, 0x86, 0xB8, 0x9B, 0x06, 0x22, 0x10, 0xD1, 0xDD, - 0x34, 0x10, 0xE3, 0x30, 0x0E, 0xA7, 0xD3, 0x05, 0x01, 0x2D, 0x86, 0x94, 0x73, 0x0C, 0x71, 0x59, - 0xD3, 0xE5, 0xB2, 0x94, 0xB2, 0xC8, 0x9D, 0x8B, 0x0B, 0x11, 0x81, 0x0C, 0x3C, 0xE5, 0xDA, 0x40, - 0xC5, 0xAA, 0xC7, 0x93, 0x90, 0xB7, 0x4C, 0x9A, 0x9A, 0x07, 0xE3, 0xA1, 0x09, 0x4D, 0x35, 0xC0, - 0x5E, 0x9B, 0x80, 0x76, 0xEA, 0xD5, 0x99, 0x1D, 0xFF, 0xB0, 0xBE, 0xD3, 0xB3, 0xC3, 0xA6, 0x49, - 0xC1, 0x2D, 0xFC, 0x21, 0x80, 0x55, 0x42, 0x03, 0xC7, 0xBA, 0x6B, 0x2D, 0xAC, 0x62, 0xE8, 0x55, - 0x8C, 0x67, 0x8D, 0x12, 0x69, 0x6F, 0x14, 0xF3, 0xCB, 0xB6, 0x1C, 0xA2, 0xDB, 0xB1, 0x95, 0xD6, - 0xBB, 0x94, 0xBE, 0x0E, 0xCE, 0x4A, 0x88, 0xB0, 0x99, 0xB9, 0x55, 0x23, 0x62, 0x88, 0xD2, 0x22, - 0xDA, 0x54, 0xF5, 0xE6, 0x9E, 0x76, 0x31, 0xAF, 0x00, 0xB9, 0x9D, 0x08, 0x97, 0x1E, 0x15, 0x88, - 0xA8, 0xD8, 0xCF, 0x84, 0x00, 0xE0, 0x17, 0xC1, 0x79, 0x54, 0x85, 0x98, 0x20, 0x20, 0x0E, 0x7E, - 0xB9, 0xC1, 0xE6, 0xB9, 0x73, 0xCC, 0x69, 0x90, 0x57, 0xD7, 0xBD, 0x14, 0xE7, 0x68, 0x33, 0xDD, - 0x10, 0xD3, 0x75, 0x33, 0x02, 0x3F, 0xE7, 0x51, 0xD5, 0xF0, 0xED, 0xA7, 0x67, 0x77, 0x75, 0x3F, - 0x9D, 0x16, 0xAB, 0xC7, 0x4C, 0x6E, 0xDF, 0x22, 0xE2, 0xC0, 0x8C, 0x08, 0xA2, 0xBA, 0x9F, 0xC6, - 0xB1, 0x5E, 0x3D, 0xD9, 0x1D, 0xBD, 0x77, 0x9D, 0x5E, 0x03, 0xF3, 0x26, 0x2E, 0xB6, 0x24, 0x2C, - 0xD0, 0x52, 0xD6, 0x46, 0x9C, 0x6D, 0xCE, 0x97, 0x25, 0x67, 0xF7, 0x1F, 0x41, 0x16, 0x7D, 0x4A, - 0xB3, 0xA3, 0xA7, 0xFB, 0x89, 0x43, 0xF0, 0xFC, 0x19, 0x77, 0x43, 0x7A, 0xEE, 0xEE, 0x95, 0xD7, - 0xA0, 0xDF, 0x0C, 0x27, 0xBE, 0x10, 0xC0, 0xCC, 0x72, 0x96, 0xE7, 0x97, 0xCB, 0xB2, 0x9E, 0xA6, - 0x71, 0x18, 0x86, 0x60, 0x6A, 0xA7, 0xCB, 0x6A, 0x06, 0xC7, 0xDD, 0xF0, 0x72, 0x59, 0xBE, 0x7F, - 0x9A, 0x5F, 0x2E, 0xAB, 0xA8, 0x79, 0x1C, 0x59, 0xCC, 0x4A, 0x88, 0x6B, 0x2E, 0x70, 0xDB, 0x66, - 0x85, 0x35, 0x08, 0xE9, 0x7A, 0x8A, 0x20, 0xDB, 0x81, 0x98, 0x75, 0xAE, 0x61, 0xBC, 0x2C, 0x79, - 0x5E, 0x65, 0x8C, 0x6C, 0x66, 0xCB, 0x9A, 0xE7, 0x35, 0x79, 0x38, 0xC8, 0x34, 0xC6, 0x9C, 0xC5, - 0xEF, 0xFD, 0x66, 0x2F, 0x81, 0x1F, 0xF8, 0xB0, 0x1F, 0x7D, 0xD7, 0xF6, 0x63, 0x34, 0x80, 0x79, - 0x4D, 0x97, 0x35, 0x47, 0x26, 0x55, 0x20, 0xB2, 0xFD, 0x2E, 0x9E, 0x97, 0xB4, 0xA6, 0xCC, 0x44, - 0x31, 0xF2, 0xBC, 0xA4, 0x69, 0x08, 0x87, 0x9D, 0x7B, 0x30, 0x7C, 0x0D, 0xCB, 0xDD, 0xDD, 0xBD, - 0xA0, 0x76, 0x3B, 0x37, 0xE7, 0xEC, 0xCB, 0xEB, 0x81, 0xC4, 0x38, 0xC4, 0xC3, 0x6E, 0x40, 0x80, - 0x10, 0x18, 0x09, 0x89, 0xAF, 0x8E, 0xFF, 0xDB, 0x62, 0xBA, 0xCD, 0x1E, 0x07, 0x56, 0x91, 0xC7, - 0xA7, 0xF3, 0x79, 0x5E, 0x45, 0xF5, 0xE5, 0x9C, 0x10, 0x31, 0x25, 0x41, 0x80, 0xE3, 0x34, 0x04, - 0xA6, 0x94, 0x32, 0x18, 0x5C, 0xE6, 0xD5, 0x31, 0xD7, 0xFD, 0x6E, 0x46, 0xE0, 0x71, 0x70, 0x25, - 0xE2, 0xCC, 0x00, 0x0C, 0xD6, 0x2C, 0xD1, 0x0D, 0x52, 0xAF, 0x63, 0x0E, 0xA5, 0xB6, 0x72, 0x2E, - 0xD7, 0xB5, 0x02, 0xF8, 0x0D, 0x29, 0x88, 0xCC, 0x94, 0xD3, 0xFA, 0x5F, 0xFE, 0xF6, 0xB7, 0xC4, - 0xFC, 0xF3, 0x3F, 0xFB, 0xE2, 0xE1, 0xEE, 0xF0, 0xF1, 0xFD, 0x91, 0x38, 0x7C, 0xFD, 0xE5, 0x87, - 0x87, 0x87, 0x43, 0x88, 0xE1, 0x72, 0x99, 0xC1, 0xEF, 0x91, 0xD8, 0x8F, 0xCB, 0x9A, 0x52, 0x36, - 0x0F, 0x64, 0xFD, 0xFC, 0xF4, 0xB4, 0xDB, 0xEF, 0x86, 0x71, 0xF8, 0xF4, 0xE9, 0x31, 0x8B, 0x7D, - 0x7E, 0x7C, 0xF9, 0xE5, 0x2F, 0x8A, 0xDB, 0xE5, 0x95, 0xF3, 0xDB, 0x6A, 0x00, 0x44, 0x27, 0x7D, - 0xFE, 0x2B, 0x67, 0x6F, 0xD2, 0x63, 0x49, 0x92, 0xA4, 0x89, 0x89, 0x88, 0xAA, 0x9A, 0xD9, 0x5B, - 0x7D, 0x89, 0x25, 0x23, 0x97, 0xC8, 0xAA, 0xEC, 0xDA, 0xBA, 0xBA, 0xD1, 0x8D, 0x1E, 0x0E, 0x38, - 0xC3, 0x03, 0x81, 0x41, 0x1F, 0xF9, 0x23, 0x88, 0x39, 0x10, 0x73, 0xE2, 0xFC, 0x3D, 0x5E, 0x78, - 0x22, 0x88, 0x26, 0x06, 0x43, 0x0E, 0x7A, 0xAB, 0xAA, 0xAC, 0xCC, 0xCA, 0xCA, 0x25, 0x22, 0x63, - 0x0F, 0x5F, 0xDE, 0x6E, 0x66, 0xBA, 0x88, 0xF0, 0x20, 0xAA, 0xF6, 0xCC, 0x9F, 0x47, 0x15, 0x01, - 0xBE, 0x2A, 0x44, 0xBA, 0x3F, 0xB7, 0x55, 0x55, 0x54, 0xF4, 0x93, 0xED, 0x93, 0xE2, 0x82, 0x11, - 0x39, 0x96, 0x31, 0x97, 0xAC, 0x20, 0x11, 0xF1, 0xD6, 0x14, 0x86, 0xE6, 0x6C, 0x6A, 0x0D, 0xD2, - 0x70, 0x77, 0xB1, 0xFD, 0xE9, 0xCF, 0x58, 0x78, 0x4E, 0x64, 0x35, 0x5F, 0x74, 0x20, 0x2F, 0xCC, - 0x24, 0x8C, 0x47, 0x9D, 0x40, 0x77, 0xD9, 0x8D, 0x00, 0xB2, 0x8F, 0x78, 0xA4, 0xCE, 0x78, 0x78, - 0x9F, 0x41, 0x14, 0x0B, 0x6E, 0x3A, 0xD5, 0x62, 0x98, 0xC9, 0x64, 0x90, 0xEE, 0xCE, 0xFE, 0xF0, - 0x88, 0x08, 0xA5, 0x6B, 0x3D, 0x62, 0x8A, 0xA2, 0x00, 0x11, 0x73, 0x46, 0x0A, 0xB0, 0x48, 0x0C, - 0x29, 0xC4, 0x98, 0x8E, 0x94, 0x01, 0xA8, 0xE5, 0xFE, 0x88, 0x68, 0xEE, 0xB9, 0x92, 0x58, 0x29, - 0xFC, 0x0D, 0x0A, 0x0B, 0x13, 0x33, 0x03, 0xAB, 0x5B, 0x8B, 0x11, 0x40, 0x90, 0x44, 0x12, 0x03, - 0xD1, 0x10, 0xA2, 0x84, 0x82, 0x78, 0x8E, 0x53, 0x36, 0x18, 0xB9, 0x77, 0xB3, 0xDF, 0x55, 0x90, - 0x94, 0x18, 0x4A, 0xCF, 0x1C, 0x54, 0x9F, 0xDD, 0xB5, 0x3E, 0xED, 0x8F, 0x10, 0x0F, 0x01, 0x34, - 0xC2, 0xA5, 0x9C, 0x7F, 0x95, 0x33, 0xCE, 0xDA, 0xCA, 0xA9, 0x6E, 0xC1, 0x72, 0xEE, 0x1D, 0x50, - 0x3A, 0xD6, 0xA3, 0xA3, 0x5D, 0xEE, 0x8E, 0x5E, 0x43, 0x44, 0x29, 0xCD, 0xDF, 0xAA, 0xCA, 0x6A, - 0xC2, 0x07, 0x91, 0xB2, 0xB9, 0xA8, 0x59, 0x2F, 0x21, 0x26, 0x1F, 0xD2, 0xBE, 0x0B, 0xCE, 0xE4, - 0x96, 0x4E, 0xD3, 0xC6, 0xA9, 0x3F, 0x5B, 0x8B, 0xB3, 0x0C, 0x19, 0x24, 0x41, 0xFC, 0x80, 0x75, - 0x39, 0x16, 0x11, 0x63, 0x0C, 0x19, 0xDA, 0x6E, 0x0F, 0x9B, 0x5D, 0x17, 0x36, 0x0C, 0x22, 0x3E, - 0xB1, 0x08, 0x74, 0xDE, 0x1C, 0xBA, 0xE0, 0x43, 0xAC, 0x9C, 0x71, 0x56, 0xD5, 0x54, 0x6C, 0xFB, - 0x58, 0xC6, 0x29, 0x6F, 0x2F, 0xE3, 0x09, 0x1E, 0x3D, 0x3F, 0x64, 0xB2, 0xAB, 0x11, 0x62, 0x27, - 0x3C, 0x76, 0x8D, 0x8B, 0x0C, 0x84, 0xE2, 0x23, 0x80, 0x80, 0x21, 0x3C, 0x74, 0xC1, 0x59, 0x53, - 0x3B, 0xCB, 0x9C, 0x87, 0xA6, 0xAE, 0x9D, 0x0E, 0x09, 0x11, 0x59, 0x4B, 0x67, 0x8B, 0xA9, 0xB3, - 0xC6, 0x87, 0xD8, 0xFA, 0xA8, 0xFA, 0x82, 0x27, 0x72, 0x31, 0x9F, 0x88, 0x48, 0x76, 0x3C, 0x11, - 0x3A, 0x43, 0x29, 0x72, 0x5D, 0xB9, 0xB3, 0x05, 0xCE, 0x26, 0xB5, 0x88, 0x30, 0x83, 0x31, 0x26, - 0x84, 0xD8, 0xF0, 0x40, 0x75, 0x8A, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x7B, 0xDF, - 0xD4, 0xCE, 0x14, 0xCA, 0x1A, 0x50, 0xBA, 0x74, 0xE6, 0xDE, 0xC7, 0xED, 0xBE, 0xAB, 0x9C, 0x3D, - 0x9B, 0x4F, 0x00, 0xD1, 0xFB, 0x90, 0x58, 0x0C, 0xA1, 0x73, 0x56, 0x7D, 0xB7, 0x27, 0x3B, 0xD0, - 0x30, 0x47, 0xA8, 0xF9, 0x07, 0x44, 0x4D, 0xED, 0x42, 0x4C, 0xB1, 0xE7, 0xDA, 0x19, 0x40, 0x30, - 0x89, 0x34, 0xE8, 0x31, 0x6C, 0x30, 0x5A, 0xDB, 0x80, 0x5A, 0x5D, 0xA8, 0xA9, 0x92, 0x02, 0x0C, - 0x62, 0x0A, 0x56, 0xB0, 0xD6, 0x48, 0xF6, 0x54, 0xA1, 0xC2, 0x1A, 0x63, 0xA8, 0xAE, 0xAC, 0xA6, - 0xF8, 0x77, 0x3E, 0x36, 0x95, 0xB5, 0xD6, 0xA8, 0xD6, 0xB0, 0xD6, 0xC6, 0xD8, 0xA7, 0x18, 0x7F, - 0xFD, 0x8B, 0x9F, 0x4C, 0x26, 0xD5, 0x72, 0x3E, 0x4D, 0x2C, 0xCB, 0xC5, 0xDC, 0x5A, 0xE3, 0x9C, - 0xF1, 0xDE, 0xC7, 0x10, 0xC8, 0x18, 0x67, 0xED, 0x61, 0xDF, 0xEE, 0xF7, 0xAD, 0x20, 0xD6, 0x75, - 0xD5, 0xC7, 0xD0, 0xF6, 0x7D, 0xDB, 0xF5, 0xD6, 0xDA, 0x5D, 0xDB, 0x27, 0x96, 0xEB, 0xDB, 0x2D, - 0xB3, 0xF6, 0xB9, 0x85, 0xC1, 0x1B, 0x5D, 0x16, 0xA9, 0x2E, 0xD3, 0x1C, 0x72, 0x1C, 0xD6, 0x9B, - 0xBE, 0x75, 0x36, 0x5B, 0x04, 0x86, 0x4C, 0x08, 0x25, 0x46, 0x00, 0x88, 0x54, 0x08, 0x1D, 0x75, - 0xD4, 0x28, 0xA7, 0xF3, 0xDE, 0x71, 0x57, 0xC1, 0xFF, 0xDF, 0x8F, 0x1C, 0xAB, 0x44, 0x8F, 0x9F, - 0xF2, 0x0D, 0x96, 0x0A, 0x02, 0x18, 0x9E, 0x73, 0x58, 0x59, 0xC3, 0xDE, 0x93, 0xD2, 0xC8, 0x8C, - 0xC4, 0xF2, 0xA4, 0x04, 0xF7, 0x70, 0x9F, 0x0C, 0xE5, 0x97, 0x05, 0x25, 0x15, 0x91, 0x2E, 0xE5, - 0x5D, 0x00, 0xA3, 0xFD, 0x39, 0x1B, 0xDA, 0x20, 0x49, 0x95, 0x3B, 0x8B, 0x48, 0x0C, 0x31, 0xA6, - 0x04, 0xDA, 0x24, 0x21, 0x33, 0x4A, 0x65, 0xF2, 0x5B, 0x16, 0x1E, 0xE7, 0xC7, 0xA9, 0x94, 0x12, - 0x11, 0x31, 0x31, 0x28, 0xA1, 0x8F, 0x0C, 0x20, 0x41, 0x1F, 0x3E, 0x71, 0x69, 0x08, 0x3C, 0xD2, - 0x1B, 0x22, 0x52, 0x98, 0x3A, 0xB2, 0xF5, 0x86, 0x38, 0x2A, 0x51, 0xCA, 0x15, 0xB6, 0x80, 0xAC, - 0x24, 0x50, 0xB9, 0xAF, 0x5B, 0x7E, 0x7B, 0x40, 0xEB, 0x43, 0x1A, 0x65, 0xFC, 0xA3, 0x00, 0x7A, - 0x1F, 0xA5, 0x2C, 0x54, 0x16, 0x38, 0x74, 0x21, 0x25, 0xC6, 0x09, 0x86, 0x10, 0x45, 0x34, 0x36, - 0x93, 0x43, 0x8A, 0x58, 0x0C, 0xF8, 0x13, 0x14, 0xA6, 0xFA, 0xAE, 0xA4, 0xFC, 0xE6, 0x81, 0x23, - 0x42, 0xCD, 0x1D, 0x57, 0x31, 0xD1, 0xD6, 0x4D, 0xCC, 0x61, 0x73, 0xF0, 0x52, 0x50, 0x26, 0x11, - 0xC6, 0xC4, 0x9E, 0xB0, 0x76, 0x56, 0x47, 0x38, 0xC4, 0x24, 0x02, 0xAA, 0xD7, 0x26, 0x4D, 0x5D, - 0x55, 0x16, 0x00, 0x4E, 0x04, 0xE8, 0xFE, 0xE2, 0xB4, 0xC6, 0x5C, 0x9C, 0xCD, 0x27, 0x4D, 0xFD, - 0xF6, 0x6A, 0x7D, 0xB5, 0x3A, 0x44, 0xE6, 0xC8, 0x62, 0x89, 0x8C, 0xC1, 0x69, 0x53, 0x69, 0x56, - 0x4A, 0x1F, 0x52, 0x4C, 0x3C, 0x72, 0x75, 0x21, 0xA2, 0x0C, 0xB2, 0x7F, 0x57, 0x57, 0x0E, 0x57, - 0xD6, 0x6F, 0x04, 0x11, 0x6A, 0x4B, 0x21, 0x89, 0x21, 0x28, 0xE1, 0x2C, 0x11, 0x80, 0x3E, 0x32, - 0x82, 0x54, 0x40, 0x95, 0xB3, 0xB6, 0xD0, 0x45, 0xA8, 0xE7, 0x5E, 0xEB, 0x81, 0x10, 0xD1, 0x98, - 0xDC, 0xF2, 0xDA, 0x59, 0xD3, 0xF5, 0x21, 0xC4, 0x34, 0xAD, 0xAD, 0x0F, 0x1C, 0x22, 0xF7, 0x21, - 0xB6, 0x7D, 0xE8, 0x7C, 0x4C, 0x2C, 0x0F, 0xCF, 0xA6, 0xCE, 0x1A, 0xEB, 0x0C, 0x33, 0x1B, 0xC2, - 0xD2, 0x01, 0xEF, 0x88, 0xB9, 0xD4, 0x67, 0x34, 0xB8, 0xA5, 0x14, 0x09, 0xF6, 0x7D, 0x4C, 0x89, - 0x7B, 0x0E, 0xCE, 0x98, 0xBA, 0x76, 0x4E, 0xCB, 0xE2, 0x41, 0xB2, 0x85, 0x7D, 0xBF, 0xDA, 0x11, - 0x00, 0x00, 0xAC, 0xB5, 0xFA, 0x0D, 0x11, 0x4D, 0x26, 0x95, 0x4E, 0x56, 0xDB, 0x05, 0x40, 0x40, - 0xD0, 0x04, 0x57, 0x8E, 0x88, 0xCA, 0x4D, 0x1C, 0x23, 0xC7, 0xC4, 0xCE, 0x1A, 0x61, 0xD6, 0xFA, - 0x36, 0x2E, 0x9D, 0xAB, 0x09, 0x73, 0x46, 0xBB, 0xB3, 0x66, 0x0C, 0x9F, 0x95, 0x44, 0x47, 0x84, - 0x26, 0x8D, 0x43, 0x84, 0xBA, 0x72, 0x9D, 0x8F, 0xAA, 0x24, 0x00, 0x05, 0x89, 0xCE, 0xCF, 0x16, - 0x31, 0xA6, 0xBA, 0x72, 0xCC, 0x3C, 0x9F, 0xCF, 0xE6, 0xF3, 0xC9, 0xB3, 0xE7, 0xAF, 0x74, 0x15, - 0x5B, 0xC2, 0xBA, 0xAE, 0x44, 0x7C, 0x88, 0x0C, 0x48, 0x21, 0xA6, 0x10, 0x0F, 0x5D, 0xE7, 0x91, - 0xEC, 0x66, 0xB3, 0xEB, 0x43, 0x48, 0x89, 0x4D, 0x66, 0xAC, 0x2D, 0x00, 0xA7, 0xE4, 0x46, 0x1D, - 0x69, 0x79, 0x64, 0xE0, 0x0B, 0x2E, 0xCB, 0x49, 0x7F, 0x2E, 0x16, 0x5F, 0xF6, 0xA7, 0xE4, 0xE0, - 0x99, 0x00, 0x90, 0x88, 0xF2, 0x62, 0x65, 0x46, 0x75, 0x66, 0x26, 0x83, 0xD9, 0x03, 0x84, 0x1F, - 0x26, 0xFB, 0xBE, 0x2F, 0x87, 0xC3, 0x37, 0xA7, 0x20, 0x4E, 0xEE, 0x68, 0x9A, 0x91, 0x25, 0x90, - 0x0D, 0xBD, 0xE1, 0xF0, 0x61, 0x65, 0x0D, 0xB7, 0x28, 0xC9, 0x78, 0x92, 0x99, 0x28, 0x54, 0xCD, - 0xE9, 0xD1, 0x04, 0xBA, 0xD7, 0x72, 0x1A, 0xDF, 0x30, 0x4B, 0xAC, 0x46, 0x19, 0x34, 0xED, 0x0B, - 0x8A, 0x8D, 0x9C, 0xF5, 0x63, 0x91, 0xF7, 0xE3, 0x63, 0x0B, 0x88, 0x80, 0x72, 0x1E, 0x30, 0xA7, - 0x98, 0x92, 0x70, 0x89, 0x7D, 0x71, 0xF6, 0xD1, 0xEB, 0x10, 0x0F, 0x86, 0xCC, 0x40, 0x76, 0x8D, - 0x08, 0x59, 0xF9, 0xC8, 0xF8, 0xE1, 0xB3, 0x80, 0x01, 0x40, 0x8A, 0x40, 0x26, 0xC3, 0x52, 0x55, - 0x23, 0x47, 0xAD, 0x96, 0x75, 0xF7, 0xD1, 0xA0, 0xE6, 0x01, 0x3C, 0xE9, 0xFB, 0x0B, 0x47, 0x06, - 0x43, 0xC6, 0x1A, 0x43, 0x48, 0x5A, 0x9C, 0x21, 0x00, 0x16, 0x71, 0xC8, 0x80, 0xCE, 0x9E, 0x20, - 0x45, 0x19, 0xD6, 0x1A, 0x00, 0x0C, 0x21, 0x22, 0x21, 0x91, 0x05, 0x38, 0x9A, 0xA3, 0xAC, 0x76, - 0x9C, 0x21, 0xAD, 0xB6, 0x39, 0xD9, 0x31, 0xA0, 0x30, 0xB7, 0xE8, 0x6B, 0x69, 0x75, 0x28, 0x94, - 0x5D, 0xA6, 0xF7, 0xD1, 0xFB, 0x18, 0x62, 0xDA, 0x1C, 0xBA, 0x7D, 0xEB, 0xDB, 0x2E, 0x6A, 0xEA, - 0x03, 0x96, 0x4D, 0x53, 0x63, 0x25, 0x88, 0xA0, 0x69, 0x76, 0xD6, 0x18, 0xF5, 0x85, 0xEB, 0x7E, - 0x32, 0xC6, 0x14, 0x45, 0x7F, 0x9C, 0xE0, 0xBE, 0xA2, 0x55, 0x01, 0x26, 0x4D, 0xF5, 0xF4, 0x93, - 0x07, 0x67, 0xCB, 0xE9, 0xDB, 0xAB, 0xED, 0xD5, 0xA6, 0xDD, 0xE7, 0x2E, 0x76, 0xBE, 0xE4, 0xCA, - 0x01, 0x97, 0x62, 0xF2, 0x32, 0xD3, 0x23, 0xC9, 0x1A, 0xFD, 0xA2, 0xFB, 0x83, 0x14, 0xD7, 0x22, - 0x20, 0xCC, 0x6A, 0x0B, 0x00, 0xAD, 0x0F, 0x83, 0xBA, 0x53, 0xF1, 0xD3, 0x74, 0x72, 0x63, 0x68, - 0xB5, 0x6D, 0xD7, 0xFB, 0x76, 0x31, 0xA9, 0x97, 0xB3, 0x7A, 0x36, 0x69, 0x90, 0x30, 0xC5, 0x94, - 0x54, 0xF1, 0x29, 0x57, 0x6B, 0x62, 0x6D, 0x6D, 0xA8, 0xC4, 0xD6, 0xCE, 0xF2, 0xAE, 0xED, 0x99, - 0x4B, 0x4D, 0xBB, 0x31, 0x21, 0x72, 0x4C, 0x3C, 0x9D, 0xD4, 0x06, 0xD1, 0x38, 0x6D, 0x74, 0x46, - 0x31, 0x26, 0xEF, 0x63, 0x4C, 0xA2, 0xE9, 0xB2, 0x22, 0x6C, 0xAD, 0x49, 0x29, 0xF9, 0x90, 0x82, - 0x8F, 0x37, 0xDB, 0xB6, 0xA9, 0xAC, 0xFA, 0xE6, 0x8D, 0xCD, 0xEF, 0x68, 0x2D, 0x0D, 0xB9, 0x32, - 0xC3, 0xB8, 0x9D, 0xAE, 0xAB, 0x32, 0x74, 0xBA, 0x73, 0xAA, 0x91, 0x08, 0x00, 0xF3, 0x49, 0x0D, - 0x93, 0x8C, 0xDE, 0x13, 0x73, 0x5D, 0xD9, 0x22, 0xFA, 0x94, 0x12, 0x87, 0x24, 0x84, 0x60, 0x1C, - 0x18, 0x44, 0x4E, 0xC2, 0x9C, 0x8C, 0xA1, 0x04, 0x32, 0x70, 0x16, 0x09, 0x80, 0x35, 0x46, 0x69, - 0x3F, 0x7B, 0x1F, 0x43, 0x4C, 0x21, 0x26, 0x16, 0xD8, 0xB7, 0x5E, 0xA1, 0x25, 0x11, 0x58, 0x6B, - 0xD6, 0x9B, 0xCD, 0xD9, 0x7C, 0xF2, 0xD3, 0x2F, 0x3E, 0x57, 0x02, 0xA2, 0xD9, 0x6C, 0xF2, 0xF6, - 0xDD, 0x55, 0x4C, 0xC9, 0x18, 0x2D, 0x9F, 0x60, 0x86, 0x40, 0x31, 0xC5, 0x98, 0x42, 0x8C, 0x29, - 0xC9, 0x6A, 0xB3, 0x25, 0x34, 0x68, 0xA8, 0xF3, 0x29, 0xC6, 0x84, 0x00, 0xFB, 0x5D, 0xDB, 0x76, - 0x61, 0x70, 0xE0, 0x40, 0x31, 0x43, 0x8E, 0x99, 0x52, 0xB9, 0xBF, 0xC5, 0xA0, 0x21, 0x44, 0x19, - 0x27, 0xA1, 0x4C, 0x9E, 0x88, 0xA0, 0x32, 0xD3, 0x38, 0x15, 0x60, 0x01, 0x90, 0xEC, 0xE7, 0x2E, - 0xE0, 0x72, 0x48, 0x73, 0x81, 0xBB, 0x3A, 0x2B, 0x57, 0x06, 0xDD, 0x33, 0x24, 0x47, 0xF2, 0x73, - 0xA2, 0xC5, 0x46, 0xA9, 0xB2, 0xC7, 0xE5, 0x7B, 0x47, 0xFA, 0xF4, 0x9F, 0x71, 0x14, 0x73, 0xA4, - 0xC2, 0x78, 0x84, 0xDA, 0xF2, 0x46, 0xAB, 0x97, 0x54, 0x31, 0x24, 0x02, 0xC9, 0xF4, 0xDC, 0x23, - 0xD0, 0x97, 0x55, 0xF9, 0x9D, 0x0C, 0x76, 0xBE, 0x47, 0xC2, 0x31, 0x46, 0x24, 0x7A, 0x17, 0x11, - 0x1E, 0x53, 0x71, 0xC9, 0x50, 0xE9, 0x85, 0x20, 0x20, 0x99, 0x25, 0x51, 0x32, 0x3D, 0xE6, 0xB1, - 0xA1, 0x4D, 0xC1, 0x31, 0x77, 0x14, 0xEA, 0xA8, 0x5D, 0x00, 0x00, 0x21, 0xDD, 0xD9, 0x12, 0x0A, - 0x46, 0x00, 0x25, 0x64, 0x1B, 0x7C, 0xEB, 0x9A, 0xC8, 0x91, 0xBF, 0xD1, 0x2C, 0x99, 0x0C, 0x2F, - 0x41, 0x4A, 0x5E, 0x41, 0x12, 0x2E, 0x65, 0x9C, 0x38, 0xD6, 0x0B, 0x08, 0x00, 0x84, 0xA0, 0x3C, - 0xF4, 0xB5, 0xA6, 0xB2, 0x21, 0xB2, 0x80, 0xA4, 0x6C, 0x84, 0x22, 0x40, 0x14, 0x26, 0x1A, 0xD2, - 0x46, 0x8E, 0xC5, 0x77, 0x19, 0xCD, 0x95, 0x7D, 0x23, 0xB7, 0xC5, 0x24, 0x8C, 0x31, 0xB5, 0x9D, - 0xDF, 0x1E, 0xBA, 0xB6, 0x8B, 0x02, 0x70, 0xE8, 0xBC, 0x0F, 0x49, 0x53, 0x2E, 0x92, 0xF0, 0xA4, - 0xB2, 0xCE, 0x19, 0x25, 0x8F, 0x15, 0x90, 0xA6, 0xB2, 0x8B, 0x69, 0x6D, 0x9D, 0x69, 0x6A, 0x67, - 0x88, 0x54, 0x73, 0x9B, 0xE2, 0xE2, 0x39, 0x19, 0x9D, 0xFB, 0xB2, 0x32, 0xDE, 0x5B, 0x96, 0xB3, - 0xA6, 0xA9, 0xEC, 0xC3, 0xF3, 0xA9, 0x8F, 0xBC, 0x6F, 0xFD, 0xED, 0xB6, 0x3D, 0xF4, 0x51, 0x57, - 0x94, 0x7E, 0x18, 0x80, 0x48, 0xBB, 0x94, 0xE3, 0x20, 0xDB, 0x83, 0x08, 0x96, 0x4B, 0x1D, 0x65, - 0xCC, 0x19, 0x24, 0xC2, 0x10, 0x53, 0xE5, 0x88, 0x59, 0x9C, 0xA1, 0x90, 0x12, 0x96, 0x02, 0x16, - 0x03, 0xC4, 0x0C, 0x6D, 0x88, 0x88, 0xD8, 0xFB, 0x83, 0x46, 0xF7, 0xAC, 0x21, 0x67, 0x0D, 0x02, - 0x86, 0x94, 0x52, 0x60, 0x4B, 0xE4, 0x9C, 0x45, 0x00, 0x4B, 0x58, 0x39, 0xB3, 0xDA, 0x29, 0x08, - 0x93, 0xD6, 0x07, 0x15, 0xCA, 0x10, 0x79, 0xDF, 0x79, 0x4B, 0xD4, 0xF5, 0xA1, 0x72, 0xC6, 0x1A, - 0x64, 0x16, 0x63, 0x20, 0xB1, 0x26, 0xD5, 0x2A, 0xC1, 0xA6, 0x15, 0x11, 0x1F, 0x62, 0x8C, 0x69, - 0x77, 0xE8, 0x29, 0xEF, 0x60, 0x32, 0x2E, 0x9B, 0xD5, 0xF8, 0xC0, 0x48, 0x49, 0xC1, 0xC9, 0x00, - 0x0E, 0xAF, 0x9C, 0x87, 0x42, 0xF3, 0xE9, 0x2A, 0x37, 0x6D, 0x6A, 0x3D, 0xBD, 0x76, 0x06, 0x89, - 0x44, 0xA4, 0xED, 0x7C, 0xD7, 0x07, 0x75, 0x75, 0x19, 0x43, 0xD6, 0x88, 0x49, 0x18, 0xA2, 0x72, - 0x21, 0x20, 0xE7, 0xD3, 0x73, 0xF5, 0xA8, 0x56, 0x7F, 0xE8, 0x6D, 0xB4, 0x46, 0xEA, 0xD0, 0xFB, - 0x10, 0xB2, 0x83, 0x0C, 0x11, 0x8D, 0x41, 0x22, 0x20, 0x42, 0x02, 0x5C, 0x2E, 0x26, 0x0F, 0xFE, - 0xE6, 0x57, 0x93, 0xC9, 0xA4, 0xEB, 0xFC, 0xED, 0xDB, 0xAB, 0xAB, 0x9B, 0x75, 0x8A, 0xA9, 0xA9, - 0xEA, 0x7D, 0xD7, 0x69, 0xA9, 0x40, 0xE5, 0x1C, 0x20, 0xEE, 0xF6, 0x2D, 0x12, 0xF9, 0x3E, 0x74, - 0xDE, 0x4F, 0x9A, 0x46, 0x12, 0x9F, 0x9F, 0x2D, 0x6E, 0xD7, 0x1B, 0x6D, 0x63, 0xF1, 0xE2, 0xD5, - 0xFB, 0x43, 0xDB, 0xD5, 0x55, 0x75, 0xDC, 0xD8, 0x4A, 0xAE, 0xC5, 0x51, 0x28, 0x40, 0x11, 0x95, - 0xAE, 0xCF, 0x3B, 0x8B, 0x36, 0x8F, 0x82, 0x31, 0x4E, 0x08, 0x32, 0x29, 0x31, 0x0F, 0x59, 0x60, - 0xC3, 0x45, 0xFE, 0x3F, 0x34, 0xD4, 0xBD, 0x63, 0x3E, 0x70, 0x00, 0x0F, 0x83, 0x2F, 0x0A, 0x77, - 0x0A, 0xD6, 0xC8, 0x67, 0x8C, 0x4D, 0x84, 0x72, 0xF2, 0x1D, 0xB8, 0x37, 0x92, 0xD2, 0xE1, 0x5D, - 0x32, 0x62, 0x39, 0x2E, 0xE1, 0x62, 0xFD, 0x1D, 0xA1, 0xDC, 0x50, 0xE6, 0x36, 0x76, 0x39, 0x8D, - 0x65, 0xFD, 0x68, 0x43, 0x8F, 0x15, 0x99, 0xE4, 0xDA, 0xC7, 0xF2, 0x80, 0x05, 0x3A, 0x1D, 0xDB, - 0x00, 0x83, 0x00, 0x1F, 0x73, 0xE1, 0x74, 0xCC, 0x01, 0x72, 0xB5, 0xB3, 0x8C, 0xDA, 0x30, 0x1D, - 0x6F, 0x57, 0xCA, 0x06, 0xF0, 0xAE, 0x17, 0x27, 0xBB, 0x77, 0xA4, 0x38, 0x01, 0x54, 0xD9, 0x89, - 0x26, 0x9A, 0x31, 0x03, 0xA2, 0x0E, 0x17, 0x21, 0x69, 0x4D, 0x67, 0x2E, 0xC9, 0x14, 0x61, 0x66, - 0x5B, 0xAE, 0x70, 0x04, 0x21, 0x59, 0x34, 0x45, 0x24, 0x6A, 0x53, 0x00, 0x48, 0x89, 0xD9, 0x0A, - 0xA1, 0x02, 0x5A, 0x74, 0xD6, 0x8A, 0x00, 0x0B, 0xF7, 0x7D, 0x74, 0x4E, 0xEB, 0x60, 0xEF, 0xD8, - 0x95, 0x0A, 0xC7, 0x24, 0x93, 0xDF, 0x43, 0x4C, 0xDC, 0x1D, 0x7C, 0x08, 0x49, 0x4B, 0x08, 0x2B, - 0x67, 0x2A, 0x67, 0xCF, 0xE6, 0xB5, 0x21, 0xA3, 0xC4, 0x8B, 0x44, 0x64, 0x88, 0x00, 0xA1, 0xEB, - 0xBD, 0xAE, 0x61, 0xAD, 0xF5, 0xB3, 0xC6, 0x80, 0x28, 0xBE, 0x13, 0x64, 0x48, 0x09, 0x35, 0x23, - 0x57, 0x07, 0x73, 0x9C, 0x39, 0x75, 0x32, 0xC7, 0xE3, 0x5F, 0x05, 0xD1, 0x18, 0xB3, 0x98, 0x37, - 0x20, 0xF0, 0xF0, 0x7C, 0xF6, 0xE8, 0x62, 0xB6, 0xDA, 0xB6, 0x3E, 0xF0, 0xA4, 0xC9, 0x29, 0xA3, - 0xD7, 0xDB, 0xC3, 0x66, 0xDF, 0x33, 0x83, 0x21, 0x24, 0x1A, 0x12, 0x17, 0x8F, 0x03, 0x53, 0xC2, - 0xD7, 0x65, 0xAA, 0x18, 0xDA, 0x2E, 0x46, 0x61, 0x67, 0xC8, 0x19, 0xA5, 0xBA, 0x02, 0x4D, 0x08, - 0x32, 0x44, 0x96, 0x90, 0x08, 0x62, 0x04, 0x11, 0x41, 0xC2, 0xDB, 0x5D, 0x7B, 0xE8, 0x3C, 0x22, - 0xCE, 0x26, 0xD5, 0xAC, 0x71, 0x9D, 0x8F, 0xBD, 0x8F, 0x8B, 0x69, 0x2D, 0xAD, 0x3F, 0x5F, 0x4C, - 0xAA, 0xCA, 0x2A, 0x4E, 0xC4, 0x42, 0x8A, 0xA0, 0xE5, 0xB5, 0x49, 0xD8, 0x10, 0x3D, 0x38, 0x9F, - 0x22, 0x40, 0xDB, 0x79, 0xE7, 0xEC, 0xCC, 0x50, 0x8C, 0x09, 0x04, 0x42, 0x4C, 0xD6, 0x90, 0xB5, - 0xD6, 0x5A, 0xDA, 0xEF, 0xFB, 0x7D, 0xE7, 0x63, 0x64, 0x22, 0x6C, 0x1A, 0x0B, 0x58, 0xD5, 0xCE, - 0x19, 0x32, 0xDA, 0x9E, 0x30, 0x69, 0x7B, 0x54, 0xFC, 0x00, 0x16, 0x93, 0xE2, 0x5B, 0xD5, 0xF6, - 0x51, 0xE3, 0x01, 0xD4, 0x63, 0x26, 0x93, 0x8A, 0x08, 0x0F, 0x6D, 0x1F, 0x63, 0xAA, 0x9C, 0x35, - 0x5A, 0xC2, 0x19, 0x53, 0x4C, 0x29, 0xB2, 0x0C, 0xA6, 0xB7, 0xB3, 0x26, 0x2B, 0x8D, 0x82, 0x75, - 0xF4, 0xB2, 0xCC, 0x62, 0x99, 0x04, 0x44, 0xCB, 0xEC, 0xFB, 0x90, 0x54, 0x8B, 0xA9, 0x21, 0x5C, - 0x2C, 0x19, 0x10, 0x4E, 0x93, 0xCA, 0x05, 0xB4, 0xDB, 0x6D, 0xBB, 0x3B, 0xF4, 0x7D, 0xD7, 0xFB, - 0x90, 0x42, 0x48, 0x21, 0xC4, 0xBE, 0xEF, 0x3B, 0x1F, 0x7C, 0x88, 0x9C, 0xB8, 0x25, 0xBF, 0x6F, - 0xBB, 0x10, 0xD2, 0xE5, 0xC5, 0x19, 0x19, 0x43, 0x64, 0xD6, 0x9B, 0xBD, 0x88, 0x34, 0x4D, 0xAD, - 0x31, 0x74, 0x32, 0xF4, 0xE8, 0xE1, 0x99, 0xB3, 0x2E, 0x0D, 0xB4, 0xCC, 0x28, 0xCA, 0x97, 0x9C, - 0xD7, 0x30, 0x8C, 0xAC, 0xB5, 0x91, 0x6C, 0x9C, 0x08, 0xBF, 0x4E, 0x01, 0x64, 0x14, 0x46, 0x52, - 0x92, 0x45, 0x3F, 0xB8, 0xF2, 0xD5, 0xE2, 0xC9, 0x16, 0xEC, 0x5D, 0xE5, 0xF5, 0xC1, 0xCD, 0x75, - 0xB0, 0xE5, 0xB2, 0x0C, 0xA9, 0xFE, 0x81, 0x8C, 0x21, 0x86, 0x7E, 0xA4, 0x20, 0xA2, 0x1D, 0x1D, - 0x47, 0xB4, 0xD8, 0x70, 0xFF, 0x6A, 0xE5, 0x57, 0x1C, 0x54, 0xED, 0x90, 0xD2, 0x35, 0x5A, 0xCA, - 0x47, 0xE3, 0x11, 0x4A, 0xCF, 0x97, 0x9C, 0xAB, 0x85, 0x32, 0x34, 0x45, 0x19, 0x2C, 0xEE, 0x93, - 0xEB, 0x0F, 0xA2, 0x82, 0x72, 0xDC, 0xE6, 0x41, 0x2D, 0xCB, 0xE1, 0x85, 0x86, 0xF2, 0xFB, 0xD1, - 0xD2, 0x1B, 0x3C, 0x2D, 0x05, 0x0C, 0x82, 0x80, 0x10, 0x00, 0x09, 0x30, 0x89, 0x02, 0x60, 0x00, - 0x18, 0x52, 0xDE, 0x8E, 0x19, 0x1E, 0x23, 0x23, 0x1D, 0x33, 0x5F, 0x76, 0xB9, 0x82, 0xE4, 0x01, - 0x32, 0x06, 0x9D, 0xB5, 0xC6, 0x12, 0x14, 0x79, 0x4B, 0xC2, 0x29, 0x25, 0xCB, 0xCA, 0x97, 0x3F, - 0x52, 0xCD, 0x38, 0x54, 0xBE, 0x12, 0x02, 0x80, 0x8F, 0xE9, 0xD0, 0x07, 0x24, 0xAC, 0x6C, 0x2E, - 0x47, 0xF0, 0x31, 0x4A, 0xB6, 0xFE, 0xF2, 0x40, 0x0C, 0x33, 0xC7, 0x2C, 0x9A, 0x52, 0x0B, 0x02, - 0x31, 0xA5, 0xC8, 0x1C, 0x42, 0x3A, 0x74, 0xE1, 0xD0, 0xF9, 0x98, 0x52, 0xED, 0x6C, 0x64, 0x61, - 0xE6, 0x59, 0x5D, 0xCD, 0x67, 0x75, 0x5D, 0xD9, 0x4A, 0x4C, 0x4C, 0xC9, 0x1A, 0x63, 0x8D, 0xF1, - 0x21, 0x22, 0x54, 0x95, 0x63, 0x75, 0x06, 0x1B, 0x43, 0x08, 0xC8, 0x2C, 0xD6, 0x92, 0x73, 0x94, - 0x93, 0x83, 0x4B, 0x58, 0xE2, 0x24, 0xAC, 0x73, 0xA2, 0xF2, 0x87, 0x0F, 0x96, 0x92, 0xE2, 0x52, - 0x5D, 0xC1, 0x93, 0xA6, 0x9A, 0x4D, 0xEB, 0x12, 0xBB, 0x80, 0xDE, 0x87, 0x8B, 0xE5, 0xE4, 0xD0, - 0x87, 0x97, 0xEF, 0x37, 0x9B, 0xBD, 0x57, 0x2D, 0x86, 0x47, 0x9D, 0x08, 0x88, 0x47, 0xC9, 0x50, - 0x79, 0xD0, 0xBC, 0x6F, 0x7B, 0x7C, 0x77, 0xAD, 0x8B, 0x04, 0x10, 0x20, 0x02, 0x43, 0xA8, 0xCB, - 0x29, 0x81, 0x20, 0x83, 0x35, 0xD4, 0x85, 0x04, 0x20, 0x5D, 0x88, 0xBD, 0xCF, 0xC4, 0x41, 0x5D, - 0x88, 0x21, 0x24, 0x63, 0x68, 0x31, 0xAD, 0x2B, 0x6B, 0x26, 0xB5, 0xED, 0x7C, 0x8C, 0x89, 0x0C, - 0xA2, 0x18, 0x14, 0x91, 0x89, 0xB5, 0x86, 0xD0, 0x1A, 0xAA, 0x9C, 0xBD, 0xDD, 0x04, 0x1F, 0xFA, - 0xDA, 0x99, 0xAA, 0x32, 0x48, 0x60, 0x88, 0x7C, 0x48, 0x22, 0x90, 0x12, 0x8A, 0xF2, 0xFC, 0x1A, - 0x9C, 0xD4, 0xD5, 0xA4, 0x71, 0x33, 0xCA, 0x16, 0xFA, 0xB0, 0x1B, 0xAB, 0x1B, 0x60, 0x2C, 0x22, - 0x70, 0x6C, 0x47, 0x98, 0x8F, 0xC9, 0x83, 0x56, 0x92, 0x17, 0x45, 0x24, 0xC6, 0x08, 0x80, 0x75, - 0xED, 0x58, 0x64, 0xBF, 0xEF, 0xD6, 0xBD, 0x57, 0x0A, 0xEE, 0xBC, 0x72, 0x25, 0x97, 0xAC, 0xDA, - 0x63, 0x9D, 0x75, 0x01, 0x05, 0x23, 0x7B, 0x3F, 0x89, 0x58, 0x42, 0x63, 0x8C, 0x66, 0x53, 0x6B, - 0x81, 0x1E, 0x40, 0x4E, 0xB5, 0x24, 0xC2, 0xDA, 0x12, 0x0A, 0xDC, 0xDC, 0xAC, 0x5E, 0xBC, 0x7E, - 0x6F, 0xC9, 0x6A, 0x2F, 0x1C, 0x16, 0xE9, 0xBD, 0xF7, 0x7D, 0xB8, 0x59, 0x6D, 0x94, 0x6B, 0x73, - 0x36, 0x9B, 0xCE, 0x27, 0xF5, 0xEE, 0x6A, 0xB5, 0xDD, 0xEE, 0x7D, 0x88, 0x1F, 0x7F, 0xFC, 0xD8, - 0x26, 0x11, 0xE9, 0x63, 0x8C, 0x29, 0x39, 0x63, 0xA8, 0xAE, 0xAA, 0xB6, 0xF3, 0x3F, 0xF9, 0xEC, - 0x49, 0x5D, 0xBB, 0xAE, 0xF3, 0x48, 0x24, 0x23, 0x03, 0x33, 0x8B, 0x01, 0x0C, 0x58, 0xEC, 0x14, - 0x55, 0x9D, 0x48, 0x4B, 0xD9, 0xAD, 0x20, 0x2B, 0xC4, 0xD1, 0x1A, 0x3F, 0x11, 0xB0, 0xA2, 0x1A, - 0xE5, 0xBE, 0x16, 0x28, 0xA9, 0x6B, 0x23, 0xE1, 0x2C, 0xC0, 0x24, 0x8F, 0x12, 0x28, 0xED, 0xEB, - 0xB0, 0xCE, 0x0B, 0xB6, 0x29, 0x74, 0x82, 0x3A, 0x51, 0x02, 0xC0, 0x49, 0x4E, 0xB4, 0x12, 0x1F, - 0x43, 0x87, 0x2C, 0x23, 0x27, 0x94, 0x96, 0x93, 0x95, 0x59, 0xF8, 0xC0, 0xA6, 0x3E, 0x3C, 0x7C, - 0x5E, 0xB0, 0x98, 0xEF, 0x85, 0xAA, 0x3D, 0xE5, 0x38, 0x3E, 0x27, 0xA2, 0x32, 0x5C, 0x65, 0x8C, - 0x1A, 0x86, 0x83, 0x07, 0x1B, 0x70, 0x34, 0x8C, 0x65, 0x68, 0xC6, 0x22, 0x01, 0xC0, 0x90, 0x0B, - 0x27, 0x58, 0x98, 0x80, 0x14, 0x6A, 0x99, 0xBC, 0xB4, 0x8F, 0xAC, 0xAB, 0x19, 0xF2, 0xE9, 0xCD, - 0x75, 0x37, 0x22, 0x30, 0x64, 0x40, 0xA0, 0xD2, 0x5D, 0x90, 0x50, 0x91, 0x13, 0x33, 0x47, 0x4E, - 0x1A, 0x34, 0xB7, 0x31, 0x8F, 0x4B, 0x49, 0x6E, 0x80, 0x6C, 0x82, 0xAA, 0x6C, 0x33, 0x03, 0x8A, - 0x84, 0xC8, 0x5D, 0x17, 0x92, 0xCB, 0xDA, 0x57, 0xD3, 0x85, 0x6A, 0xE7, 0x8C, 0x25, 0x6B, 0x8D, - 0x73, 0xB9, 0xE2, 0xB2, 0xED, 0xFC, 0x66, 0xD7, 0x2A, 0x15, 0x8E, 0x3A, 0x6E, 0x00, 0x21, 0x44, - 0xEE, 0x7D, 0x36, 0xE4, 0xB4, 0xA3, 0x90, 0xB3, 0x14, 0x12, 0x7B, 0x1F, 0xAD, 0xA1, 0xBA, 0x72, - 0xDD, 0xA1, 0x6F, 0xFB, 0xB6, 0xB2, 0x46, 0xDD, 0xF9, 0x31, 0x46, 0x74, 0x36, 0xA6, 0xD4, 0x87, - 0xB8, 0x98, 0x4E, 0x34, 0xC5, 0x5F, 0x8D, 0x4A, 0xEF, 0x23, 0x95, 0xBE, 0xD3, 0x38, 0x32, 0x97, - 0x3E, 0x28, 0xA0, 0x83, 0x6E, 0x95, 0x5C, 0x14, 0x95, 0x77, 0xAC, 0x18, 0x93, 0x73, 0xEA, 0x69, - 0x44, 0x24, 0x30, 0xC6, 0x4C, 0x1A, 0x9C, 0x34, 0x6E, 0x5A, 0xBB, 0x97, 0xEF, 0xD7, 0xEF, 0x56, - 0x07, 0x73, 0x2F, 0x4B, 0xCE, 0x00, 0x22, 0xA2, 0x31, 0xC8, 0x02, 0x29, 0x71, 0x76, 0x11, 0x03, - 0x22, 0x8A, 0xB2, 0xB6, 0x6A, 0x8E, 0x9E, 0xB1, 0xD9, 0xC4, 0x8E, 0x1C, 0x91, 0x00, 0x05, 0x0D, - 0x61, 0x53, 0xD9, 0x43, 0x17, 0x34, 0xC1, 0xB2, 0xF3, 0x51, 0xCB, 0xD7, 0xBA, 0x3E, 0x26, 0xE6, - 0xF5, 0xB6, 0xD5, 0x98, 0x49, 0x65, 0xCD, 0xBE, 0x0B, 0x93, 0xDA, 0x89, 0x48, 0x88, 0xC9, 0x5A, - 0xC3, 0x22, 0x7D, 0x48, 0xAB, 0x5D, 0x77, 0x36, 0xAB, 0x2B, 0x67, 0x7C, 0x48, 0x6D, 0x1F, 0x34, - 0xD7, 0x17, 0x11, 0xF7, 0x6D, 0x3F, 0x9B, 0x54, 0x3B, 0x9F, 0x79, 0xD0, 0x42, 0x4C, 0xB1, 0xA4, - 0xAA, 0x6A, 0x9C, 0x4D, 0xDF, 0x94, 0x4B, 0xF7, 0x07, 0x0D, 0xD5, 0x43, 0x5E, 0x21, 0xA2, 0x74, - 0x89, 0xAE, 0xB2, 0x9A, 0xEA, 0x35, 0x88, 0x5A, 0xC1, 0x49, 0x20, 0x25, 0xBE, 0x3C, 0x69, 0x9C, - 0x35, 0xA6, 0xEF, 0xC3, 0xBE, 0xED, 0x7A, 0x1F, 0x8A, 0x5D, 0x50, 0x1C, 0x9A, 0x03, 0x7E, 0x38, - 0x9A, 0x4B, 0x47, 0xF3, 0x04, 0xD5, 0xB0, 0xA5, 0xCC, 0x6A, 0x09, 0x9A, 0x02, 0xA2, 0x9E, 0x75, - 0x10, 0x6B, 0xB0, 0xEF, 0xFA, 0x97, 0x6F, 0xAF, 0x6F, 0x57, 0x5B, 0x4E, 0x89, 0x10, 0xAB, 0xCA, - 0x7A, 0x1F, 0x99, 0x79, 0xB7, 0x3F, 0xB4, 0x9D, 0xDF, 0xB7, 0x7D, 0xD7, 0x7B, 0x01, 0x30, 0xC6, - 0x32, 0x43, 0xD3, 0xD4, 0xD6, 0xD9, 0x10, 0xE2, 0x7A, 0xBD, 0x5D, 0x2E, 0x66, 0x7D, 0xDF, 0x5B, - 0x6B, 0x43, 0xD0, 0x0E, 0x7B, 0xD6, 0x87, 0x10, 0x62, 0x1C, 0x01, 0x05, 0x80, 0xA3, 0xFF, 0xE8, - 0xE8, 0xFC, 0xC4, 0x0F, 0xE9, 0xB2, 0xE1, 0xCB, 0x61, 0xBD, 0x9D, 0x60, 0x37, 0xC5, 0x02, 0x78, - 0x57, 0x2A, 0x06, 0x40, 0x34, 0xA0, 0xF7, 0x3B, 0xA0, 0x0C, 0x46, 0x19, 0xA8, 0x23, 0xA3, 0xEC, - 0xF8, 0xF7, 0xD1, 0x71, 0x32, 0xE2, 0x47, 0x24, 0xCA, 0x8D, 0x42, 0x98, 0x07, 0x9D, 0x52, 0x50, - 0xC9, 0x48, 0x2F, 0x14, 0xE6, 0x2E, 0x80, 0xE2, 0xB3, 0xCE, 0x5C, 0x6B, 0x45, 0x0B, 0xC0, 0xA8, - 0xA5, 0xCB, 0x48, 0x7F, 0x0D, 0x2E, 0x2A, 0x22, 0x73, 0x17, 0x07, 0x7D, 0x08, 0xF1, 0x8D, 0x34, - 0xE6, 0x71, 0x64, 0xB9, 0x3C, 0xEB, 0x09, 0x68, 0x18, 0x36, 0xB0, 0x11, 0x62, 0xBD, 0xB3, 0x3C, - 0x01, 0x8A, 0x17, 0x0F, 0x8E, 0x9E, 0xA8, 0x92, 0x0F, 0x74, 0xC7, 0x9B, 0x96, 0xCF, 0xCA, 0x65, - 0x61, 0xBA, 0xAC, 0x4A, 0x55, 0xC1, 0x00, 0x3C, 0x59, 0x62, 0xE4, 0x98, 0x52, 0xA1, 0x27, 0x60, - 0x4B, 0x54, 0xEA, 0xC8, 0x45, 0x13, 0xF6, 0x20, 0xB7, 0x0D, 0x2D, 0xEF, 0x45, 0x40, 0x31, 0xA5, - 0x83, 0x88, 0x09, 0xC9, 0x50, 0xAE, 0xD1, 0x6E, 0x1A, 0x37, 0x9B, 0xD5, 0xCE, 0x39, 0x65, 0x92, - 0xE2, 0x94, 0xB4, 0x66, 0x65, 0xBD, 0x6D, 0x7B, 0x1F, 0x75, 0xC7, 0x2E, 0x04, 0x46, 0x12, 0x93, - 0x28, 0x09, 0x45, 0x01, 0x53, 0x18, 0x13, 0x1F, 0xFA, 0x00, 0x00, 0x29, 0x71, 0xDB, 0x87, 0xED, - 0xA1, 0x27, 0xA2, 0xE5, 0xAC, 0x46, 0x22, 0x67, 0xC8, 0x5A, 0x23, 0x20, 0x21, 0x26, 0x11, 0x26, - 0x32, 0xD9, 0x50, 0xD7, 0x8C, 0xF9, 0x8C, 0x8C, 0x78, 0x98, 0x9B, 0x61, 0x04, 0xEF, 0x57, 0x1A, - 0x8C, 0x27, 0x52, 0xC3, 0xD5, 0x9D, 0x0F, 0x9C, 0xA4, 0x4E, 0xAE, 0x69, 0xD0, 0x39, 0x04, 0x40, - 0x6B, 0x31, 0x25, 0x14, 0xC1, 0xE9, 0xA4, 0x7A, 0xFA, 0xD1, 0x39, 0x21, 0xD6, 0x95, 0x5D, 0xEF, - 0xFB, 0xD5, 0xB6, 0x53, 0x7E, 0x5E, 0x16, 0x10, 0x10, 0x9B, 0xCB, 0xDA, 0x44, 0x15, 0x69, 0x16, - 0x77, 0x01, 0x66, 0xEE, 0x83, 0x88, 0x88, 0x76, 0x07, 0x61, 0x56, 0xEE, 0x1D, 0x04, 0x12, 0x0B, - 0xD9, 0x95, 0xA6, 0xD5, 0xC3, 0xD6, 0x1A, 0x6B, 0xA8, 0xF5, 0x41, 0xCD, 0x73, 0x4D, 0xDD, 0x08, - 0x91, 0x63, 0x4A, 0xFB, 0x36, 0xC4, 0xC8, 0x9C, 0xEB, 0xE8, 0x25, 0x29, 0x59, 0x01, 0xA7, 0xF5, - 0xAE, 0x0B, 0x21, 0xCD, 0x26, 0x15, 0xB3, 0xEC, 0x0E, 0xBD, 0x21, 0x6A, 0xEA, 0x8C, 0xB7, 0x3B, - 0x1F, 0x7D, 0x48, 0x3E, 0x64, 0x48, 0x18, 0x42, 0x72, 0x36, 0x97, 0xBE, 0x2A, 0x3D, 0x4E, 0x49, - 0x24, 0x2E, 0x14, 0x60, 0x00, 0x29, 0xA5, 0x43, 0xE7, 0x99, 0xB9, 0xED, 0x63, 0x4A, 0x69, 0x36, - 0xAD, 0x6B, 0x67, 0xA7, 0x93, 0x5A, 0x4B, 0x56, 0xC7, 0x80, 0x9C, 0x88, 0xB4, 0xBC, 0x30, 0x46, - 0x00, 0xC0, 0xA6, 0x76, 0x88, 0xB0, 0x3B, 0x74, 0x2C, 0xE0, 0x4C, 0xEE, 0x4B, 0x36, 0x9A, 0x8E, - 0x81, 0xDA, 0xF3, 0xB8, 0xC7, 0x98, 0xD2, 0x4B, 0x12, 0x00, 0x41, 0x14, 0x8E, 0x41, 0xEF, 0x43, - 0x0C, 0x1E, 0x39, 0xFD, 0xE1, 0xDB, 0xE7, 0xF3, 0xF9, 0x5C, 0xEB, 0x19, 0x97, 0xCB, 0xF9, 0x76, - 0xBB, 0x4B, 0x21, 0xF6, 0x3E, 0x84, 0x18, 0x57, 0xAB, 0x2D, 0x00, 0xF9, 0x98, 0xF6, 0x87, 0x2E, - 0xA5, 0xE4, 0x9C, 0x8B, 0x91, 0x7B, 0xBF, 0x07, 0x91, 0x07, 0x0F, 0x2E, 0x42, 0x88, 0x29, 0xF2, - 0x66, 0xB3, 0x27, 0xA2, 0x10, 0x82, 0x88, 0xA4, 0xC4, 0xFB, 0x83, 0xA4, 0xC4, 0xEB, 0xCD, 0xAE, - 0x6C, 0x5A, 0x90, 0xCB, 0xB5, 0x91, 0x11, 0xAD, 0xDA, 0x17, 0x59, 0xEB, 0x28, 0xF3, 0xFE, 0x48, - 0x93, 0x0C, 0x12, 0x32, 0xAC, 0x40, 0xCC, 0x08, 0x69, 0xA4, 0x74, 0x06, 0xC4, 0xA4, 0x75, 0x4B, - 0x34, 0x28, 0xC8, 0x1C, 0x35, 0x3C, 0xAE, 0xE4, 0xA3, 0x27, 0x69, 0xAC, 0x11, 0xC6, 0x8A, 0x22, - 0xC3, 0xAE, 0x8C, 0x39, 0x80, 0xCB, 0x36, 0x90, 0x17, 0x79, 0x2A, 0xE4, 0xF8, 0xEA, 0x29, 0x2B, - 0x41, 0xB3, 0x3B, 0x2B, 0x1C, 0x4B, 0x5B, 0x1F, 0x35, 0xE2, 0xA5, 0x90, 0xBE, 0x0E, 0x8A, 0x03, - 0xEE, 0x66, 0x96, 0xD2, 0x3D, 0x15, 0x2C, 0xA2, 0x0B, 0x5D, 0xED, 0x95, 0x6C, 0xD8, 0xDE, 0xC7, - 0xA9, 0x63, 0x68, 0x96, 0xDF, 0xE1, 0xEE, 0xCB, 0x0D, 0x28, 0x61, 0xAC, 0xBF, 0x60, 0xA4, 0xD4, - 0x4E, 0x14, 0x99, 0x1E, 0x93, 0xFB, 0x79, 0x18, 0x63, 0x4C, 0xEE, 0x43, 0x3A, 0xBC, 0x97, 0x4A, - 0xEC, 0x00, 0x41, 0xCA, 0x45, 0xF4, 0x39, 0x73, 0xFE, 0x16, 0xAB, 0x31, 0xC9, 0x12, 0xB5, 0x64, - 0xBC, 0xB0, 0x4E, 0xAA, 0xB9, 0x88, 0x29, 0x57, 0x1D, 0xDC, 0xF1, 0x9D, 0x63, 0xA6, 0x85, 0x03, - 0x91, 0xDC, 0x97, 0x4B, 0x93, 0xDF, 0xE7, 0xF3, 0xC9, 0xE5, 0xF9, 0xAC, 0xAA, 0x9C, 0x96, 0x89, - 0xC6, 0x98, 0x7A, 0x1F, 0x0F, 0x6D, 0x7F, 0xBB, 0x69, 0xBB, 0x10, 0x63, 0xCA, 0xC4, 0x47, 0xDA, - 0x63, 0x4C, 0x97, 0xB7, 0x00, 0x0C, 0x05, 0x46, 0x7D, 0xE0, 0x94, 0x7C, 0x5D, 0x19, 0x1F, 0x93, - 0x69, 0x95, 0x2B, 0x31, 0x47, 0x10, 0x11, 0x21, 0x96, 0x70, 0xDE, 0xB4, 0xD1, 0x92, 0x54, 0x00, - 0xC0, 0x18, 0x53, 0xD7, 0x07, 0x4D, 0x5F, 0x68, 0x6A, 0xA7, 0xB3, 0x39, 0x54, 0x7F, 0x8D, 0x07, - 0x62, 0x50, 0x67, 0x32, 0x8A, 0xA2, 0xEA, 0x5C, 0xD6, 0x35, 0x59, 0x6B, 0xB4, 0xF5, 0x59, 0xDB, - 0xF9, 0x94, 0x4C, 0xAE, 0x9F, 0x60, 0x61, 0x81, 0x10, 0x63, 0x08, 0x69, 0x39, 0xAB, 0x45, 0x60, - 0x3E, 0x71, 0x21, 0xA6, 0x98, 0x24, 0x69, 0x90, 0x1B, 0x10, 0x04, 0x38, 0x81, 0x26, 0xA6, 0x0A, - 0x80, 0xBA, 0xBD, 0x43, 0xE4, 0x10, 0xD3, 0x70, 0x40, 0x52, 0x4E, 0x77, 0xED, 0x6B, 0x57, 0xFC, - 0xC4, 0x5C, 0xAA, 0xD2, 0x10, 0x40, 0xC9, 0x66, 0x61, 0x54, 0x54, 0x77, 0xE8, 0x42, 0x4C, 0xEC, - 0xA3, 0x92, 0x46, 0x08, 0x92, 0x86, 0x8C, 0x05, 0x73, 0xCF, 0x1F, 0xD8, 0x77, 0x21, 0xB1, 0x10, - 0x02, 0x8B, 0xB8, 0xCE, 0xEB, 0x9A, 0xAA, 0x9C, 0x0D, 0x29, 0x55, 0x8E, 0xBA, 0x3E, 0xED, 0x3B, - 0x3F, 0x9B, 0x54, 0xD3, 0x49, 0xED, 0x2C, 0xA9, 0x07, 0x2D, 0x44, 0xD6, 0x66, 0x97, 0x2C, 0xE2, - 0x8C, 0x09, 0x31, 0x71, 0x62, 0x6B, 0xCD, 0x7A, 0xDB, 0xEE, 0x0E, 0x7D, 0xCA, 0xAD, 0x2C, 0x84, - 0x77, 0xFD, 0x9E, 0x7C, 0x8C, 0xBC, 0x5C, 0xC8, 0xE0, 0x29, 0x2B, 0xFB, 0xB0, 0x14, 0xB9, 0xC9, - 0xC0, 0xAB, 0xAA, 0xDC, 0x1C, 0xC0, 0x87, 0xA4, 0xF4, 0x2C, 0x3A, 0x65, 0x03, 0x70, 0x80, 0xC2, - 0x81, 0xA3, 0xE3, 0x6D, 0x08, 0x2B, 0x6B, 0x20, 0x73, 0x45, 0x41, 0x55, 0xB9, 0xB6, 0xED, 0x56, - 0xEB, 0x0D, 0x21, 0x34, 0x4D, 0x7D, 0x75, 0xB3, 0x79, 0xF3, 0xE6, 0xEA, 0xB3, 0xCF, 0xAA, 0xC9, - 0xB4, 0x41, 0xA4, 0xD9, 0x74, 0xD2, 0xB7, 0x1D, 0x13, 0x32, 0x80, 0x0F, 0x69, 0xBB, 0x6F, 0x9B, - 0x66, 0xA2, 0xD0, 0x4C, 0x2F, 0xE8, 0xBD, 0xEF, 0xFB, 0x5E, 0x44, 0xCE, 0xCE, 0x96, 0xCC, 0xEC, - 0x83, 0xEF, 0xFB, 0x1E, 0x91, 0x00, 0x50, 0x2B, 0xAB, 0xCE, 0xCE, 0x96, 0xFB, 0x7D, 0xBB, 0xDE, - 0xEC, 0x43, 0x0C, 0xD9, 0x86, 0x2D, 0x99, 0x01, 0x39, 0x6E, 0x39, 0x2C, 0xB2, 0xE2, 0x86, 0x2A, - 0x50, 0x12, 0x00, 0x8E, 0x2D, 0x2C, 0x8F, 0xCA, 0xA2, 0x98, 0x46, 0x88, 0x38, 0x14, 0xD1, 0x80, - 0x66, 0xA2, 0xA2, 0x60, 0x31, 0x5D, 0x86, 0xFE, 0xBE, 0x43, 0x81, 0x63, 0xD6, 0x4E, 0x79, 0xB5, - 0xAB, 0x96, 0x53, 0x1A, 0x30, 0x55, 0x5C, 0xC7, 0x9C, 0x8B, 0x8C, 0x92, 0x01, 0x00, 0x20, 0x95, - 0x14, 0x61, 0xCE, 0x8C, 0x88, 0x19, 0xF6, 0x8E, 0x75, 0xD9, 0x58, 0xD5, 0xE6, 0x24, 0xF9, 0x02, - 0xBA, 0x05, 0x07, 0x1D, 0x29, 0x59, 0x9D, 0xF2, 0x1D, 0x40, 0x38, 0xAC, 0x82, 0x21, 0x8C, 0x98, - 0x4D, 0x52, 0x73, 0x7C, 0xF1, 0x01, 0x5F, 0x0F, 0xEA, 0xE9, 0xBE, 0x46, 0x93, 0xBB, 0xBF, 0x1E, - 0x87, 0xEB, 0x1E, 0x3A, 0x83, 0xA3, 0xBA, 0xBC, 0x73, 0xA9, 0x0C, 0x29, 0x4A, 0x7B, 0xE2, 0xF1, - 0x8E, 0xA2, 0x1C, 0xC5, 0x58, 0x8E, 0x38, 0x7A, 0x30, 0x74, 0xB8, 0x12, 0x73, 0x42, 0x6D, 0xC1, - 0x9E, 0x58, 0x38, 0x71, 0x86, 0x6B, 0x9C, 0x8D, 0x87, 0xC4, 0x68, 0x8F, 0xD3, 0x99, 0x77, 0xA4, - 0x6C, 0x45, 0x8B, 0x80, 0x21, 0x32, 0x96, 0x72, 0x34, 0x1D, 0x91, 0x59, 0xEA, 0xCA, 0x5C, 0x9C, - 0xCD, 0xE6, 0xB3, 0x06, 0x00, 0xFA, 0xCE, 0x2B, 0xFF, 0xA7, 0x26, 0xB2, 0xB7, 0x3E, 0x6A, 0x85, - 0xB3, 0x68, 0xEA, 0x09, 0x83, 0x00, 0x10, 0xA1, 0x25, 0x03, 0x68, 0xFA, 0x10, 0xB1, 0x64, 0x97, - 0x68, 0x1E, 0x8B, 0xF7, 0x29, 0x10, 0x0F, 0x12, 0x66, 0xAC, 0x09, 0x31, 0x6D, 0xF7, 0x7D, 0xEB, - 0x83, 0x33, 0xB4, 0x9C, 0x35, 0xD3, 0xA6, 0x82, 0xD1, 0x00, 0x59, 0x43, 0x78, 0x1C, 0xB8, 0x61, - 0x58, 0x8E, 0x3A, 0x6B, 0x3C, 0x6A, 0xF7, 0xB7, 0x02, 0x8D, 0x9A, 0x1B, 0x63, 0x9C, 0xB3, 0x29, - 0xC5, 0xB6, 0x0D, 0xDB, 0x7D, 0xA7, 0x4F, 0xAB, 0x7C, 0xB4, 0x21, 0x26, 0x66, 0xB6, 0xC6, 0xB0, - 0x48, 0x4C, 0x3C, 0xA9, 0x6C, 0x48, 0xA9, 0xEB, 0x35, 0x2C, 0x4B, 0x90, 0x33, 0xF4, 0x00, 0x01, - 0xAC, 0x21, 0x37, 0x6D, 0x9C, 0xA5, 0xC4, 0xBC, 0x3B, 0xF8, 0xFD, 0xB1, 0x46, 0x55, 0x10, 0x91, - 0x01, 0x51, 0x80, 0x8E, 0x9E, 0x46, 0x40, 0x38, 0xA2, 0xF4, 0x9C, 0xE3, 0xAE, 0xB4, 0x48, 0x2C, - 0x12, 0x35, 0x47, 0x3F, 0x8F, 0xBC, 0x92, 0x97, 0x95, 0x55, 0x25, 0x00, 0xA8, 0xA6, 0x19, 0x13, - 0x1A, 0x40, 0xEF, 0x93, 0x88, 0x68, 0xBA, 0xBF, 0x0E, 0xB2, 0xB6, 0x02, 0x88, 0x91, 0x0D, 0x32, - 0x11, 0x11, 0x8B, 0x35, 0x46, 0x72, 0x6E, 0x5C, 0xE6, 0x53, 0xF6, 0x7D, 0x88, 0x89, 0xE3, 0xA1, - 0x6F, 0xFB, 0x6C, 0x7C, 0x11, 0x02, 0x82, 0xF6, 0x6A, 0xC2, 0xB6, 0xF7, 0xD6, 0xD0, 0x74, 0x8A, - 0x88, 0xA0, 0x95, 0xAA, 0x83, 0x7A, 0xA2, 0xEC, 0x89, 0xD0, 0x01, 0x04, 0xE7, 0x6C, 0xB6, 0x7A, - 0x52, 0x52, 0x50, 0xA9, 0x7F, 0xAA, 0x9C, 0x4D, 0xB9, 0xAC, 0x27, 0x6B, 0x5F, 0x6D, 0x58, 0x27, - 0x92, 0xF9, 0x96, 0xB7, 0x9B, 0xCD, 0x76, 0xB3, 0x35, 0xD6, 0x34, 0x55, 0x7D, 0x7D, 0xBD, 0x7A, - 0xFD, 0xE6, 0xFA, 0xF2, 0xE2, 0xBC, 0xEF, 0xFB, 0x10, 0xC3, 0xE3, 0xC7, 0x0F, 0x39, 0x31, 0x20, - 0x12, 0x19, 0xE6, 0x74, 0xBB, 0xDA, 0xEC, 0x0E, 0xDD, 0xA1, 0xF5, 0xBA, 0xB6, 0x07, 0xF3, 0xC9, - 0x18, 0x63, 0x0C, 0xF5, 0xBD, 0x6F, 0xBB, 0x2E, 0xF8, 0x80, 0x44, 0xD6, 0xE2, 0x6C, 0x36, 0x5D, - 0xAD, 0xB7, 0x1C, 0xD2, 0xFE, 0xD0, 0x26, 0xE6, 0x49, 0x53, 0x6B, 0x7E, 0x86, 0xB3, 0xD6, 0x3A, - 0x25, 0xB8, 0x54, 0xC5, 0x73, 0xDF, 0x83, 0x55, 0x64, 0x22, 0xBB, 0x86, 0x06, 0xFD, 0x96, 0xD3, - 0x2C, 0xA0, 0xAC, 0x85, 0x41, 0x7E, 0x32, 0xE8, 0x20, 0x64, 0x64, 0x62, 0xCA, 0x44, 0x2C, 0xA5, - 0xE9, 0xB0, 0x2E, 0x9F, 0xF1, 0xBA, 0x45, 0x84, 0xC4, 0xB1, 0x28, 0x30, 0x28, 0xA4, 0x3B, 0x59, - 0x93, 0x49, 0x09, 0x85, 0x0D, 0x88, 0x06, 0xCA, 0x16, 0xA2, 0x03, 0x9B, 0x95, 0x70, 0xCE, 0xC3, - 0x2F, 0x97, 0xC8, 0x73, 0x91, 0x55, 0x62, 0xD9, 0x7F, 0xCB, 0x11, 0xF9, 0x7F, 0x28, 0x59, 0x87, - 0x8F, 0x13, 0x68, 0x01, 0x09, 0x84, 0x8F, 0x5C, 0x6C, 0xEA, 0x32, 0x62, 0x66, 0x5B, 0xBA, 0x8D, - 0xA0, 0xAE, 0x2D, 0x3E, 0xAA, 0x96, 0xF1, 0xDA, 0x39, 0xD1, 0x6B, 0x30, 0x2A, 0xD7, 0x19, 0x8D, - 0xE5, 0x1D, 0x75, 0x76, 0x5F, 0x1B, 0xE6, 0x13, 0x0B, 0xDA, 0x10, 0xC6, 0x9C, 0x76, 0x55, 0x86, - 0x97, 0xF3, 0x56, 0xA1, 0x7A, 0x0E, 0xA1, 0x28, 0x68, 0x8E, 0xC0, 0x25, 0x4F, 0x96, 0x59, 0x94, - 0xD0, 0x58, 0xF7, 0x07, 0xCE, 0xAD, 0x0A, 0x50, 0x40, 0xAC, 0x3E, 0x3A, 0x95, 0xBE, 0x32, 0xC3, - 0x63, 0x29, 0x0C, 0x36, 0x44, 0x93, 0xCA, 0x4C, 0x9B, 0xCA, 0x3A, 0x2B, 0x22, 0x4A, 0xB6, 0xB5, - 0x3F, 0xF4, 0xCC, 0x9C, 0x9B, 0xB9, 0xF5, 0x21, 0x46, 0x96, 0x82, 0xBF, 0x74, 0x57, 0x00, 0x40, - 0x6D, 0x2F, 0x27, 0x00, 0x4D, 0x6D, 0xAD, 0xA1, 0x49, 0x6D, 0x99, 0xA5, 0x0F, 0xB1, 0x0F, 0x09, - 0x24, 0xA7, 0x83, 0x69, 0x94, 0x90, 0x0B, 0x79, 0x61, 0xDB, 0x7B, 0xC0, 0xDC, 0x70, 0xD9, 0x87, - 0x04, 0xE0, 0xFB, 0x10, 0xB5, 0xA1, 0xA2, 0x35, 0xD4, 0x34, 0x55, 0xF1, 0xE2, 0x50, 0xF9, 0x01, - 0x87, 0x11, 0xFC, 0xE0, 0xCE, 0x70, 0x32, 0xD0, 0xA3, 0x11, 0xA7, 0xAA, 0xB2, 0x6D, 0xEF, 0xDB, - 0x3E, 0xF8, 0xC0, 0x21, 0x26, 0x40, 0x0C, 0x31, 0x31, 0x8B, 0xB3, 0x04, 0x90, 0x2B, 0x6C, 0xCE, - 0xE7, 0x93, 0x83, 0x55, 0x9E, 0x0E, 0x09, 0x91, 0x01, 0x30, 0x31, 0xEF, 0x3A, 0x8F, 0x00, 0x88, - 0x38, 0x6D, 0x5C, 0x53, 0xD9, 0xA6, 0xB2, 0x89, 0xB9, 0x0F, 0x47, 0x46, 0x06, 0x04, 0xA0, 0x63, - 0x76, 0xCC, 0x07, 0x36, 0xC6, 0xFC, 0x6B, 0x51, 0x72, 0x06, 0x41, 0x0C, 0x45, 0xF5, 0x6A, 0x12, - 0x66, 0x0D, 0x98, 0xC7, 0x1F, 0x88, 0xD0, 0x8C, 0xBE, 0x42, 0x84, 0x10, 0x93, 0xB5, 0x64, 0x0C, - 0x84, 0x08, 0x88, 0x50, 0x39, 0x53, 0x59, 0xAD, 0x2B, 0x05, 0x6B, 0x31, 0xAA, 0xF3, 0x53, 0x80, - 0x85, 0x09, 0x20, 0x04, 0xE8, 0x43, 0xD4, 0xC6, 0x54, 0xCC, 0x0C, 0x08, 0xA6, 0x44, 0xF7, 0xD5, - 0x2C, 0x0C, 0x91, 0x0F, 0x9D, 0x57, 0x6A, 0x5C, 0x24, 0x4D, 0x64, 0xD5, 0xB2, 0xA4, 0xEC, 0x07, - 0xD3, 0x3E, 0x58, 0x00, 0x60, 0x08, 0x9D, 0x55, 0x2A, 0x8B, 0xA4, 0xD1, 0x55, 0x22, 0xB4, 0xD6, - 0x5E, 0x2C, 0x67, 0x31, 0xA5, 0x10, 0x92, 0x52, 0xB8, 0x68, 0x7F, 0x62, 0xF5, 0x42, 0xC6, 0x28, - 0x29, 0x84, 0xED, 0x66, 0xA3, 0x98, 0x7A, 0xEB, 0xF7, 0xC0, 0x5C, 0x39, 0xB3, 0xDD, 0xB7, 0xB6, - 0xB2, 0x0F, 0x1F, 0x5C, 0xA4, 0x94, 0x5E, 0xBF, 0x7A, 0xEB, 0xBD, 0x5F, 0x2C, 0xE6, 0xB7, 0xEB, - 0xDD, 0xD5, 0xCD, 0x3A, 0x86, 0xC4, 0x12, 0x11, 0x51, 0xB5, 0xEA, 0xE0, 0xE6, 0x73, 0xCE, 0xED, - 0xF6, 0x87, 0x94, 0xD2, 0x62, 0x3E, 0x67, 0xE6, 0xBA, 0xAE, 0x91, 0xB0, 0x69, 0x6A, 0x00, 0x64, - 0x91, 0xDD, 0xFE, 0xF0, 0xE0, 0x72, 0xC9, 0x9C, 0x82, 0xF7, 0x86, 0xC8, 0x9A, 0x3A, 0xF7, 0xF1, - 0xC6, 0x42, 0xE8, 0xF3, 0x27, 0x3E, 0x77, 0x71, 0x04, 0x02, 0x1E, 0x1B, 0x43, 0x0C, 0x7E, 0xAB, - 0xB2, 0xF8, 0x41, 0x12, 0x03, 0x02, 0x9A, 0xFC, 0x54, 0x65, 0x7E, 0x87, 0x69, 0xCD, 0x4C, 0xCD, - 0x19, 0x4D, 0x70, 0x61, 0x49, 0x11, 0x31, 0xE3, 0x48, 0x6D, 0xF6, 0x2A, 0x1E, 0x5D, 0x5B, 0xC3, - 0xD5, 0x52, 0x92, 0x01, 0x87, 0x42, 0xD9, 0x17, 0x8F, 0x8A, 0xB0, 0x80, 0xBE, 0xFC, 0x30, 0x9C, - 0xBB, 0x8D, 0x94, 0xDF, 0xB3, 0x80, 0x40, 0x56, 0xC2, 0x47, 0xF7, 0x5D, 0x06, 0x92, 0x65, 0xE3, - 0x19, 0xE4, 0x50, 0x78, 0x5C, 0x6D, 0x2A, 0x00, 0x80, 0x04, 0x22, 0xA7, 0xE1, 0xDD, 0xB2, 0x88, - 0xF2, 0xE5, 0x4E, 0xD6, 0xD7, 0x78, 0x89, 0x9D, 0x80, 0xB2, 0x13, 0x0D, 0x88, 0x88, 0x3A, 0x59, - 0x43, 0xA9, 0x3F, 0xA4, 0xEC, 0xC1, 0x14, 0x51, 0xF6, 0x5A, 0xED, 0xDA, 0x47, 0x39, 0x4D, 0x4E, - 0xB2, 0x91, 0x9F, 0xC7, 0xA2, 0xCC, 0xC8, 0x10, 0x9C, 0x15, 0xC1, 0x1C, 0xFA, 0x05, 0x41, 0x44, - 0x3B, 0xB8, 0x38, 0x51, 0xA9, 0xCB, 0xEE, 0xCE, 0x7A, 0x4A, 0x29, 0x24, 0xDC, 0x77, 0xBE, 0x8A, - 0xC9, 0x18, 0xEA, 0x7D, 0x50, 0xD2, 0x7D, 0x66, 0x09, 0x29, 0x69, 0xD2, 0xA6, 0xBE, 0x8E, 0x0A, - 0x9F, 0xA6, 0x5E, 0xFA, 0xC0, 0x81, 0x93, 0x30, 0x20, 0xE0, 0xBE, 0xF5, 0xC6, 0x60, 0x53, 0xD9, - 0x49, 0xED, 0x1A, 0x67, 0xD6, 0x87, 0x5E, 0x3D, 0x38, 0x1A, 0x95, 0x5B, 0xCC, 0x1A, 0x04, 0x50, - 0x02, 0x55, 0x4E, 0xE2, 0x43, 0x42, 0x81, 0x94, 0x64, 0x25, 0x9D, 0x21, 0x12, 0x90, 0xCA, 0xD0, - 0xD9, 0xBC, 0x39, 0x5B, 0x4C, 0xE9, 0xC8, 0xDE, 0x71, 0xCC, 0xA3, 0x1B, 0x90, 0xD7, 0x71, 0x7A, - 0xE4, 0xCE, 0x70, 0xDF, 0xD7, 0x65, 0xFA, 0xB3, 0x35, 0xD4, 0x54, 0xCE, 0xFB, 0x98, 0x58, 0x18, - 0xC8, 0x7B, 0xED, 0x2D, 0x24, 0x21, 0xB1, 0x21, 0x10, 0x81, 0x98, 0xB8, 0xF7, 0x51, 0x8B, 0x0A, - 0x7B, 0xCF, 0x02, 0x90, 0x98, 0x39, 0x60, 0x4E, 0x99, 0x42, 0x88, 0x8A, 0x3D, 0xD5, 0xD6, 0xB3, - 0xA4, 0x93, 0x14, 0x52, 0x2A, 0x60, 0xEA, 0xCE, 0x48, 0x8E, 0xD5, 0x6E, 0x79, 0x60, 0xC8, 0x16, - 0xAB, 0x80, 0x7A, 0xD0, 0x00, 0x32, 0xA5, 0x55, 0x39, 0x4F, 0x08, 0x8A, 0x85, 0xA9, 0xDB, 0x2C, - 0x01, 0x80, 0x3A, 0xFB, 0x84, 0x10, 0x9C, 0x25, 0x67, 0x8C, 0x73, 0x46, 0xF3, 0x2D, 0xAC, 0x35, - 0x22, 0xD0, 0xFB, 0x28, 0xCC, 0x7D, 0x88, 0x80, 0x68, 0x88, 0xB4, 0xB2, 0xB5, 0x20, 0xA6, 0x92, - 0x30, 0xC8, 0x9C, 0x18, 0x58, 0x24, 0xB2, 0x38, 0x81, 0x0E, 0xA2, 0x0F, 0x91, 0xB4, 0x9A, 0x62, - 0x52, 0x29, 0x81, 0x47, 0x52, 0xFA, 0x4E, 0x96, 0xC9, 0xA4, 0xAA, 0x9C, 0x92, 0x91, 0x20, 0x8B, - 0x38, 0x6B, 0xAC, 0x25, 0x55, 0x72, 0x25, 0xAF, 0x58, 0xAC, 0x31, 0x4E, 0x4B, 0x8E, 0x58, 0x5C, - 0x65, 0x99, 0x19, 0x11, 0x0E, 0xFB, 0xFD, 0x9B, 0x37, 0x57, 0x5D, 0xE7, 0x53, 0xE2, 0xD9, 0x7C, - 0xDA, 0x77, 0xFD, 0x6E, 0x77, 0x88, 0x29, 0xFB, 0x5E, 0x0F, 0x87, 0xF6, 0xF9, 0x8F, 0xAF, 0xDA, - 0x43, 0x07, 0x00, 0x40, 0xB8, 0xDE, 0xB6, 0xDB, 0xDD, 0x41, 0x45, 0xCB, 0x5A, 0xA3, 0xEC, 0x7D, - 0xC6, 0x18, 0xA8, 0x50, 0x41, 0x3E, 0x77, 0x7E, 0xB1, 0x98, 0x19, 0x43, 0x4D, 0xD3, 0xC4, 0x14, - 0x43, 0x08, 0x49, 0xE4, 0xE1, 0x83, 0xCB, 0x1F, 0x5E, 0xBC, 0x6A, 0xAA, 0x6A, 0x3A, 0x99, 0x58, - 0x63, 0x43, 0x88, 0xCC, 0xE2, 0x2A, 0xA3, 0x3B, 0xDD, 0xB1, 0xAA, 0xFA, 0x6E, 0x5B, 0x55, 0x9D, - 0x8F, 0x3F, 0xA3, 0xDD, 0x74, 0x0B, 0x91, 0xEC, 0xC0, 0x2A, 0x9F, 0xB2, 0x82, 0x02, 0xA5, 0x4C, - 0x67, 0x80, 0x28, 0x02, 0x83, 0x17, 0x7A, 0xBC, 0xC4, 0xD4, 0x53, 0x29, 0x92, 0x99, 0xC2, 0x8C, - 0x25, 0x42, 0x75, 0x0B, 0x49, 0xF1, 0xD0, 0x0C, 0xDC, 0xF9, 0x52, 0x5C, 0xDB, 0xBA, 0x03, 0x1D, - 0x53, 0x25, 0x8E, 0x34, 0x19, 0xA3, 0xC7, 0x2F, 0xAB, 0x3B, 0x23, 0x30, 0x4D, 0x76, 0xD3, 0x4D, - 0x10, 0x11, 0x91, 0xA4, 0x94, 0x4C, 0x16, 0x74, 0x06, 0x00, 0x80, 0x03, 0xD9, 0xD7, 0x9D, 0x1D, - 0x1D, 0x65, 0xBC, 0x70, 0x8A, 0x54, 0xE6, 0x91, 0x19, 0x03, 0xCC, 0xE1, 0x14, 0x81, 0x62, 0x11, - 0x1E, 0xB1, 0x67, 0x36, 0x84, 0x71, 0x54, 0xA5, 0x34, 0x08, 0xFC, 0xA0, 0x97, 0xCB, 0x5D, 0xB2, - 0x32, 0x12, 0xC4, 0x52, 0x8C, 0x80, 0x45, 0xC0, 0xB3, 0xE0, 0x2B, 0xA2, 0x54, 0x1B, 0xFD, 0x78, - 0xF7, 0xD1, 0xC3, 0x8C, 0xB4, 0xD8, 0x51, 0xE5, 0x22, 0xA2, 0x06, 0x1C, 0xC7, 0x41, 0x5F, 0x54, - 0x27, 0xEE, 0xA0, 0x41, 0xFB, 0x90, 0x7C, 0x4C, 0x5D, 0x1F, 0x39, 0xF3, 0x9C, 0x40, 0x92, 0xF2, - 0x53, 0xB9, 0xB7, 0xBA, 0x1B, 0x35, 0x90, 0xE7, 0xAC, 0x99, 0x34, 0xD4, 0xB0, 0x15, 0x91, 0x3E, - 0x24, 0x66, 0x8E, 0x89, 0x0F, 0x5D, 0x08, 0x31, 0x35, 0x95, 0x9B, 0xD4, 0x2E, 0x50, 0xEA, 0x7C, - 0x44, 0xC4, 0xBA, 0xB2, 0xD3, 0xDA, 0xF9, 0x18, 0xD5, 0x37, 0x94, 0xB8, 0x94, 0x3D, 0x20, 0x30, - 0x73, 0xEF, 0x63, 0x53, 0x59, 0x53, 0x51, 0x62, 0xF1, 0x31, 0xD9, 0x60, 0x94, 0xF7, 0xDD, 0xE5, - 0xEA, 0xA5, 0xA3, 0xE6, 0x3A, 0x51, 0x5B, 0x27, 0x73, 0x30, 0x4E, 0x6A, 0x1F, 0xBE, 0x11, 0xC4, - 0x99, 0x12, 0xDE, 0x6F, 0x0E, 0x7D, 0x88, 0x95, 0x31, 0x7D, 0x4C, 0xDE, 0x47, 0x7D, 0xDF, 0x90, - 0x04, 0x23, 0xB7, 0x7D, 0x34, 0x86, 0x10, 0x20, 0x24, 0xCE, 0x5B, 0xBB, 0x88, 0x29, 0xA0, 0x30, - 0x32, 0x1F, 0x7A, 0x5F, 0x59, 0x0B, 0x00, 0x2C, 0xE0, 0x2C, 0x99, 0x9C, 0x11, 0x0E, 0xC5, 0xCD, - 0x32, 0xCC, 0xD6, 0x9D, 0x90, 0x90, 0x3E, 0x8C, 0x0A, 0x30, 0x31, 0x88, 0x28, 0x67, 0x34, 0x61, - 0xF6, 0xEA, 0x40, 0x31, 0x54, 0x89, 0x10, 0x89, 0xB2, 0x6F, 0x51, 0x23, 0xC5, 0xE3, 0xEB, 0xD4, - 0xCE, 0xAA, 0x1B, 0xCB, 0x68, 0x9D, 0x86, 0x40, 0xEF, 0x23, 0x33, 0xE7, 0x91, 0x04, 0xE8, 0xBD, - 0x07, 0x54, 0x23, 0x42, 0x49, 0x32, 0xF4, 0xEE, 0xC2, 0x90, 0x59, 0xEE, 0x26, 0x95, 0x55, 0x90, - 0x35, 0x9F, 0x56, 0x4A, 0x4F, 0x14, 0x42, 0x62, 0x94, 0xC8, 0x69, 0x70, 0xDC, 0x78, 0x8D, 0xB4, - 0x66, 0xF2, 0x4F, 0xB0, 0x96, 0xAC, 0x35, 0x29, 0x89, 0xB5, 0x64, 0xAD, 0x55, 0x49, 0x4D, 0x29, - 0xE9, 0x16, 0x58, 0x4D, 0xAA, 0x18, 0xC2, 0x7E, 0xB7, 0x47, 0x80, 0x43, 0xDB, 0xED, 0xB6, 0xFB, - 0xF5, 0x76, 0xFF, 0xF0, 0xF2, 0xFC, 0x70, 0x68, 0xDF, 0xBC, 0xBB, 0xB9, 0x5D, 0x1D, 0x9C, 0x73, - 0x64, 0x60, 0xB7, 0x3B, 0x68, 0x9B, 0x02, 0x66, 0x06, 0xA1, 0xED, 0x7E, 0xBF, 0x3B, 0xB4, 0x75, - 0x5D, 0x4F, 0xA7, 0xD3, 0xDD, 0xFE, 0xBA, 0x4C, 0x22, 0x50, 0xE6, 0xB0, 0x16, 0x25, 0x27, 0x3D, - 0x1C, 0xBA, 0xBA, 0x76, 0xDE, 0x47, 0x1F, 0x42, 0x0C, 0x71, 0x3A, 0x9D, 0xEC, 0xDB, 0xD6, 0x59, - 0x67, 0x9D, 0x6B, 0xDB, 0x76, 0x36, 0x6D, 0x0A, 0xB7, 0x1D, 0x65, 0xF7, 0x88, 0x0C, 0xAB, 0xF3, - 0xDE, 0xAE, 0x56, 0xA0, 0xD4, 0x58, 0x2A, 0x8A, 0x7E, 0x10, 0x01, 0xCD, 0x03, 0xC9, 0xAE, 0x28, - 0xD5, 0x37, 0x31, 0xA5, 0x58, 0xC6, 0x24, 0xAF, 0xC9, 0x62, 0x80, 0x67, 0xCD, 0x51, 0x1C, 0x64, - 0xA2, 0x01, 0xB7, 0xCC, 0xBE, 0x8D, 0x00, 0x80, 0x09, 0xAD, 0x31, 0x26, 0x31, 0x99, 0xBC, 0x31, - 0x29, 0x01, 0x0E, 0x33, 0x94, 0x04, 0x73, 0x85, 0x67, 0xFA, 0x54, 0xC5, 0xD3, 0x2A, 0x59, 0x9B, - 0x8D, 0x9E, 0x50, 0xE4, 0xCE, 0x7F, 0x61, 0xF0, 0xC0, 0xAB, 0x16, 0x1B, 0x32, 0xDA, 0xB4, 0xF1, - 0x87, 0x2E, 0x69, 0xD6, 0x00, 0x02, 0x02, 0xDC, 0xCB, 0xC9, 0x18, 0x2B, 0x9A, 0x91, 0x6F, 0xF0, - 0x8E, 0xB8, 0x16, 0xA1, 0xCD, 0xD7, 0x80, 0x41, 0x03, 0xDD, 0xC5, 0x0D, 0xA7, 0x14, 0x06, 0x23, - 0xDF, 0xF4, 0xF8, 0x82, 0xA3, 0x1F, 0xF2, 0x30, 0xA6, 0xD1, 0x90, 0x96, 0x6B, 0xE6, 0x23, 0x3F, - 0x74, 0x56, 0xFE, 0x72, 0x4C, 0xEF, 0xAD, 0x67, 0xD9, 0x94, 0xC7, 0xAF, 0x18, 0x3B, 0xE5, 0x42, - 0xB9, 0xF5, 0x2F, 0x43, 0x1A, 0x93, 0x82, 0xEB, 0x0C, 0x8F, 0xD2, 0x55, 0xF2, 0x85, 0xCA, 0x34, - 0x86, 0xC4, 0xA9, 0x0B, 0xCA, 0x39, 0x85, 0x1A, 0x5E, 0x11, 0x61, 0x11, 0x63, 0x51, 0x04, 0x36, - 0x87, 0x5E, 0x78, 0x18, 0x2F, 0x69, 0xFB, 0xA0, 0x1D, 0x7D, 0x20, 0xF3, 0xFA, 0x00, 0x12, 0x1A, - 0x42, 0x83, 0x28, 0x20, 0x54, 0x82, 0x1A, 0x89, 0x39, 0x86, 0x78, 0xD3, 0x79, 0x16, 0x5E, 0xCC, - 0xA6, 0x1A, 0x27, 0x1D, 0xA7, 0x29, 0x0E, 0xAF, 0x3A, 0x14, 0x7E, 0x8E, 0xB5, 0xD8, 0x58, 0x0C, - 0xC6, 0x23, 0x82, 0x88, 0x4D, 0xED, 0xE2, 0xB4, 0x86, 0x16, 0x7A, 0x9F, 0x26, 0x95, 0xAB, 0xAD, - 0xD9, 0x77, 0x3E, 0x24, 0x86, 0x32, 0xF7, 0x21, 0x96, 0x99, 0x06, 0xD1, 0x5A, 0xD5, 0xB2, 0x71, - 0x00, 0x27, 0xF0, 0x90, 0x98, 0x73, 0xC7, 0x04, 0x65, 0x43, 0x1C, 0x89, 0xC2, 0x71, 0x99, 0x0C, - 0xD2, 0x83, 0x79, 0x27, 0x2C, 0x66, 0x1B, 0x08, 0xB3, 0x56, 0xE1, 0x8A, 0x76, 0xE1, 0x55, 0x5E, - 0xDC, 0x81, 0xE3, 0x4E, 0xCD, 0x73, 0x6B, 0xE8, 0x28, 0x46, 0xC7, 0xD9, 0xC9, 0x23, 0x90, 0x52, - 0x8A, 0x09, 0x9D, 0xA5, 0x90, 0xD2, 0xAE, 0xED, 0xB5, 0xE9, 0x14, 0x22, 0x86, 0x90, 0x92, 0x08, - 0xD1, 0x20, 0x58, 0x00, 0x08, 0xA4, 0x40, 0x85, 0x00, 0x11, 0xAC, 0x98, 0xF3, 0xE5, 0xD4, 0x1A, - 0x83, 0x28, 0x93, 0x49, 0x0D, 0x00, 0x5D, 0xE7, 0xB5, 0xEB, 0xA5, 0x88, 0x28, 0x42, 0x24, 0x44, - 0x32, 0xC8, 0xC5, 0x9C, 0x2C, 0xC2, 0x2A, 0xC6, 0x68, 0x63, 0x6A, 0x8D, 0xB3, 0x6A, 0x74, 0x45, - 0x88, 0x4C, 0xDF, 0x75, 0xAB, 0x9B, 0xDB, 0xDB, 0xDB, 0xAD, 0x20, 0x12, 0x11, 0xA3, 0xD9, 0xED, - 0xBB, 0xDD, 0xFE, 0x4D, 0xE7, 0x63, 0x33, 0x99, 0x2C, 0xCF, 0xE6, 0x6F, 0xDE, 0x5E, 0x1F, 0xDA, - 0xCE, 0x39, 0x63, 0x88, 0x42, 0x9B, 0xAC, 0xB5, 0x29, 0x85, 0x3E, 0xC4, 0xBA, 0xAE, 0x1F, 0x3F, - 0x7E, 0xB8, 0xDD, 0xED, 0xAB, 0xAA, 0x8A, 0x29, 0x69, 0xF1, 0x80, 0xCA, 0x0F, 0x00, 0xD4, 0x35, - 0x05, 0x1F, 0xB7, 0xFB, 0x76, 0xD7, 0x76, 0x88, 0x50, 0x55, 0xAE, 0xA9, 0x2A, 0x66, 0x7E, 0x77, - 0x75, 0x7B, 0x71, 0xB6, 0x6C, 0xBB, 0x2E, 0xF8, 0xA8, 0x39, 0x2B, 0x05, 0x4F, 0x0C, 0x7B, 0xC9, - 0x71, 0x69, 0xE9, 0x86, 0x0B, 0x00, 0x08, 0x85, 0xD3, 0x7A, 0xFC, 0x91, 0x21, 0x98, 0xA8, 0xA5, - 0xD2, 0x92, 0x52, 0x4A, 0x51, 0x8E, 0x70, 0x2C, 0x1D, 0x79, 0x01, 0x53, 0x3C, 0x72, 0x93, 0x96, - 0x49, 0x2D, 0xB8, 0x83, 0x40, 0x04, 0x94, 0xFB, 0x51, 0x7F, 0xD5, 0x3F, 0xA6, 0x28, 0xC6, 0x20, - 0x15, 0xE6, 0x75, 0x3D, 0x59, 0x8A, 0xE9, 0x3A, 0xF6, 0xFD, 0x43, 0x86, 0x62, 0xDA, 0xA7, 0x4E, - 0x10, 0x8E, 0x6E, 0x93, 0xE3, 0xBB, 0x0C, 0xA1, 0xD4, 0xEC, 0x56, 0xCA, 0x37, 0x1A, 0x24, 0x6D, - 0x38, 0x45, 0x40, 0xC8, 0x64, 0x1F, 0xFE, 0x20, 0x7B, 0xBA, 0xC1, 0x8E, 0xD2, 0xF5, 0xC7, 0x08, - 0xE0, 0x74, 0xD3, 0x95, 0xA3, 0x45, 0x9A, 0x13, 0xC3, 0x8B, 0x67, 0xE2, 0x38, 0x84, 0xE3, 0x55, - 0x36, 0x7E, 0x86, 0x71, 0x86, 0xC7, 0xFD, 0xCF, 0x18, 0xBE, 0x7D, 0x70, 0xBF, 0xF9, 0x53, 0xE7, - 0x1E, 0xD5, 0xCE, 0xE8, 0x18, 0x9B, 0x49, 0x9A, 0x04, 0x00, 0x85, 0x94, 0xDE, 0x4D, 0xF7, 0x03, - 0x66, 0x40, 0x4A, 0xA3, 0xC6, 0x6A, 0x74, 0xB4, 0x5B, 0x87, 0xDB, 0xEB, 0xCE, 0x09, 0x86, 0x70, - 0xE0, 0x4C, 0x67, 0x61, 0x60, 0xDA, 0xB5, 0x7E, 0xB8, 0x9F, 0x41, 0x9C, 0xD6, 0x15, 0x19, 0x4C, - 0x07, 0x9F, 0x54, 0x61, 0xA1, 0x1A, 0x62, 0x0C, 0x05, 0xC7, 0xEB, 0x65, 0x55, 0x8B, 0x29, 0xB6, - 0x64, 0x6D, 0x86, 0x86, 0xB9, 0xD7, 0x31, 0x20, 0x56, 0xD6, 0xC5, 0x18, 0x0F, 0x07, 0x99, 0xCD, - 0x1A, 0x75, 0xB8, 0xDE, 0x1F, 0x3E, 0xB8, 0x6B, 0x69, 0x22, 0x7E, 0xC0, 0x55, 0x39, 0x06, 0xC6, - 0xF3, 0x69, 0x53, 0x39, 0x7B, 0x75, 0xBB, 0xDB, 0xB7, 0x3E, 0x24, 0x6E, 0x7D, 0x8C, 0xB9, 0xE8, - 0x1F, 0x86, 0x9C, 0xB5, 0xBC, 0x7F, 0x03, 0xD2, 0x5D, 0xFE, 0x4D, 0x16, 0x50, 0x5E, 0x1A, 0x50, - 0xB1, 0x88, 0xC3, 0xF6, 0xA8, 0x05, 0xD1, 0x47, 0xE0, 0x4B, 0x25, 0xFD, 0x6A, 0xD8, 0x33, 0x73, - 0xE8, 0xA8, 0x30, 0xC5, 0x0C, 0xFB, 0x0C, 0x22, 0xD8, 0xA3, 0xDB, 0x05, 0x0C, 0x12, 0x20, 0x94, - 0x9E, 0x8F, 0x32, 0xEC, 0x63, 0x88, 0xA8, 0x0C, 0x73, 0x06, 0x09, 0x00, 0x25, 0xC7, 0x2B, 0x23, - 0x80, 0x89, 0x31, 0x49, 0xA1, 0x32, 0x15, 0x90, 0xD1, 0x84, 0x67, 0x93, 0x8A, 0x00, 0x04, 0x60, - 0x3E, 0x6F, 0xA6, 0x93, 0xDA, 0x18, 0xE5, 0xBC, 0x20, 0x44, 0x68, 0x9A, 0xAA, 0x56, 0xD2, 0xA1, - 0x98, 0x88, 0x50, 0x2B, 0x28, 0x38, 0x73, 0xF6, 0xB3, 0x31, 0xA0, 0x88, 0x6C, 0x64, 0x29, 0x00, - 0x11, 0x32, 0xA3, 0xB5, 0x36, 0xC6, 0xB8, 0xDB, 0x6E, 0xF7, 0xDB, 0xFD, 0xED, 0x7A, 0xBB, 0xD9, - 0x75, 0x31, 0x25, 0x16, 0xB0, 0xD6, 0x9E, 0x5F, 0x5E, 0xEC, 0x76, 0x6D, 0xB7, 0x5B, 0xF5, 0xF1, - 0xB0, 0xDF, 0x1D, 0x0E, 0x6D, 0x6B, 0x8D, 0x4D, 0x91, 0x13, 0x0A, 0x11, 0x22, 0xA6, 0xAA, 0x72, - 0x53, 0x6E, 0xC8, 0xDA, 0x57, 0xAF, 0xDF, 0x3A, 0xE7, 0x16, 0x8B, 0xD9, 0x6A, 0xB5, 0x19, 0x36, - 0x2A, 0x95, 0x31, 0x22, 0x0B, 0x10, 0x63, 0x8A, 0x24, 0x64, 0xAD, 0x8D, 0x31, 0xDD, 0x1C, 0x36, - 0x4D, 0x53, 0xA5, 0x24, 0xB1, 0x28, 0x97, 0x9B, 0xDB, 0xED, 0xE3, 0x87, 0x4B, 0x10, 0x89, 0x29, - 0x92, 0x21, 0x42, 0xFB, 0x27, 0x96, 0x8F, 0x6E, 0x9A, 0x38, 0x2A, 0x86, 0x29, 0x39, 0x0C, 0x70, - 0x74, 0x5A, 0x71, 0xD2, 0x2C, 0x96, 0xC4, 0xCC, 0x91, 0x39, 0x45, 0x4E, 0x43, 0xCB, 0x74, 0x91, - 0x18, 0x4B, 0x6E, 0xDC, 0xB0, 0xC6, 0xF3, 0xD4, 0x0E, 0x60, 0x0D, 0x40, 0x47, 0x95, 0x11, 0xB0, - 0xCC, 0x99, 0x10, 0x6A, 0xF2, 0x79, 0x59, 0x44, 0x2A, 0xA1, 0xEA, 0x4C, 0xBB, 0xE3, 0xCB, 0x93, - 0xA2, 0x84, 0x06, 0xA7, 0x4F, 0x56, 0x7D, 0x83, 0xB5, 0xAC, 0x02, 0x83, 0x45, 0x18, 0x20, 0xAB, - 0xB3, 0xA2, 0xC8, 0x33, 0x05, 0x98, 0x08, 0x65, 0x7C, 0x92, 0xDD, 0xD2, 0x59, 0x0D, 0xE4, 0xD3, - 0xEE, 0xA8, 0x03, 0xBD, 0xEF, 0x30, 0x66, 0x77, 0xF7, 0x00, 0x50, 0x5C, 0x9C, 0x51, 0x9E, 0x9A, - 0x76, 0x25, 0xBC, 0x76, 0x0A, 0x6C, 0xC7, 0x3B, 0xF7, 0x08, 0x97, 0x0D, 0x76, 0xD2, 0x78, 0x49, - 0x0E, 0xBF, 0x8E, 0x69, 0xA9, 0x3E, 0x30, 0x65, 0xFA, 0x30, 0xA3, 0x11, 0xC2, 0xE2, 0x63, 0x1E, - 0x4E, 0xB1, 0x43, 0xEA, 0x1D, 0x22, 0x08, 0x09, 0xE7, 0xD3, 0x04, 0x24, 0xE7, 0x78, 0x94, 0xE7, - 0x51, 0x2A, 0xAE, 0x02, 0x32, 0x07, 0xBE, 0x91, 0x9C, 0x38, 0x71, 0x47, 0x8B, 0xB3, 0x30, 0xB3, - 0xF2, 0x5B, 0x60, 0x12, 0xA1, 0xD2, 0x84, 0xCE, 0x18, 0x34, 0x06, 0x87, 0xB6, 0x95, 0xC3, 0x60, - 0x11, 0xE2, 0x62, 0x52, 0x4F, 0x9B, 0x8A, 0x10, 0x9D, 0x25, 0xB5, 0xF2, 0x04, 0xC0, 0x19, 0x9A, - 0x4D, 0x2A, 0x63, 0x94, 0xDD, 0xD4, 0x6A, 0xD5, 0x34, 0x16, 0x70, 0x3E, 0xA4, 0xC9, 0x7D, 0x70, - 0x1C, 0xEF, 0xFF, 0x3A, 0x56, 0x73, 0xC7, 0x21, 0x23, 0xA8, 0x10, 0xE6, 0xD3, 0xEA, 0x76, 0x7B, - 0x68, 0xFB, 0xD8, 0x85, 0x14, 0x52, 0x29, 0xB2, 0x2B, 0xB1, 0x7B, 0xA3, 0xF1, 0x3B, 0x7D, 0x7D, - 0x5D, 0x07, 0xCA, 0xE9, 0xC3, 0x20, 0x05, 0xCA, 0xE6, 0xF9, 0x80, 0x52, 0xFF, 0x01, 0x70, 0xCC, - 0x48, 0x28, 0x3F, 0x0F, 0x5A, 0x4C, 0xC1, 0xB8, 0x08, 0xD3, 0x5D, 0x1B, 0x47, 0xCA, 0x41, 0xA0, - 0x16, 0x0A, 0x83, 0xB1, 0x32, 0xB0, 0x10, 0x1F, 0xE9, 0x66, 0x00, 0x44, 0xA4, 0x0F, 0x8C, 0x88, - 0x62, 0xC1, 0xB0, 0x74, 0x49, 0x42, 0x64, 0x83, 0x14, 0x22, 0x87, 0xA4, 0x7B, 0x93, 0x18, 0x40, - 0x6B, 0x08, 0x0D, 0xA8, 0x89, 0x93, 0x0A, 0x49, 0x9D, 0xAA, 0x09, 0x43, 0x28, 0xC2, 0xA3, 0xAA, - 0x5D, 0x54, 0x17, 0x8E, 0x96, 0xA6, 0x65, 0x17, 0x6C, 0xA1, 0x0F, 0x18, 0xB2, 0xC6, 0xAC, 0xA5, - 0x51, 0x73, 0x80, 0x3C, 0x86, 0x9B, 0xF5, 0x66, 0xB3, 0xD9, 0xB6, 0xAD, 0x8F, 0x31, 0xBE, 0x7C, - 0x7D, 0xB5, 0xDB, 0x77, 0x87, 0xB6, 0x0B, 0x31, 0xD5, 0x55, 0x55, 0x37, 0xF5, 0xF9, 0xF9, 0x12, - 0x11, 0x6F, 0x6F, 0x56, 0xEA, 0xE4, 0x65, 0x61, 0x14, 0x83, 0x00, 0x9A, 0x85, 0xFF, 0xB7, 0x7F, - 0xF3, 0xEB, 0xD5, 0x7A, 0xFB, 0xF6, 0xFD, 0xCD, 0xD3, 0xCF, 0x3E, 0x59, 0x6F, 0xB6, 0xBB, 0xDD, - 0x7E, 0xBC, 0x06, 0xD4, 0x11, 0xDE, 0xF7, 0x3D, 0x97, 0xE6, 0x89, 0x88, 0xCA, 0xF9, 0x87, 0x00, - 0x68, 0x0C, 0x5D, 0x5D, 0xDF, 0x22, 0xA1, 0x35, 0xE6, 0x7A, 0xB5, 0x35, 0x64, 0x58, 0x92, 0xF2, - 0xFF, 0xD5, 0x35, 0x10, 0x9A, 0xA3, 0xD1, 0xF7, 0xE1, 0xF5, 0x01, 0x79, 0x0B, 0x15, 0x29, 0xDE, - 0xB0, 0x94, 0x92, 0xA4, 0x98, 0x7F, 0xCA, 0x0D, 0x86, 0x25, 0xC5, 0x90, 0x1B, 0x2E, 0x1E, 0x19, - 0x51, 0xC7, 0xCE, 0x20, 0x19, 0x76, 0x9E, 0x63, 0xAC, 0xAD, 0xF4, 0x9D, 0xC5, 0x01, 0x87, 0x0F, - 0x6B, 0x7E, 0x40, 0x8B, 0x58, 0x8A, 0x07, 0xA1, 0xF0, 0x60, 0x0F, 0xD8, 0x44, 0xCA, 0xDA, 0xD0, - 0xEF, 0x8F, 0x4B, 0x78, 0x78, 0xA1, 0xD2, 0x93, 0x13, 0x14, 0x7D, 0x28, 0x73, 0x49, 0x5D, 0xEB, - 0xDF, 0x76, 0xFB, 0xAE, 0xAE, 0xAC, 0xA6, 0xC8, 0x58, 0x73, 0x9C, 0xE2, 0xA2, 0x32, 0x73, 0x99, - 0xD1, 0x78, 0xA5, 0xE8, 0x5A, 0x1F, 0x02, 0xA1, 0xA3, 0x41, 0xCA, 0xDB, 0x67, 0xF6, 0x7B, 0x14, - 0xDD, 0x7D, 0x02, 0xDC, 0xF0, 0x4E, 0x41, 0xF8, 0xF1, 0x4B, 0x95, 0x58, 0x3D, 0xFB, 0x44, 0xEB, - 0x9D, 0x20, 0xAF, 0x13, 0xE5, 0xA8, 0x3F, 0x14, 0xD3, 0x0F, 0xB2, 0xDB, 0x85, 0xA1, 0x94, 0xC6, - 0xE7, 0x45, 0x37, 0xE4, 0x30, 0x5A, 0x55, 0x4F, 0x46, 0x07, 0x8B, 0x87, 0xE7, 0x96, 0xC8, 0x9C, - 0xED, 0x91, 0x92, 0x79, 0x30, 0x3C, 0xE1, 0x5D, 0x61, 0xC8, 0x37, 0x1A, 0x9E, 0x12, 0xA1, 0xF4, - 0xFE, 0x11, 0xF1, 0x41, 0x90, 0x84, 0x01, 0x36, 0x87, 0x5C, 0x5E, 0xAE, 0x8B, 0x03, 0xCB, 0xBE, - 0x41, 0x88, 0x86, 0xE8, 0x6C, 0xDE, 0x3C, 0x38, 0x9B, 0x55, 0xCE, 0x28, 0xCE, 0xEA, 0x7C, 0xD8, - 0x1D, 0x3A, 0xAD, 0xF2, 0x5B, 0xCC, 0x1A, 0x44, 0xD4, 0x8A, 0x4E, 0x93, 0xFD, 0xA5, 0x39, 0x4A, - 0x7D, 0x5F, 0x85, 0x8D, 0x64, 0xE5, 0xC3, 0x48, 0x75, 0x98, 0x83, 0xF1, 0x52, 0x44, 0xC4, 0xD9, - 0xB4, 0x99, 0x36, 0x6E, 0x73, 0xD0, 0xE2, 0x2B, 0xD1, 0xE8, 0x5E, 0xBE, 0x0B, 0x88, 0x16, 0x40, - 0x23, 0x0E, 0xCD, 0xB3, 0x86, 0x1B, 0xE4, 0xE9, 0xC5, 0xBC, 0xC1, 0x17, 0x2F, 0x57, 0x01, 0xDE, - 0x03, 0x55, 0x07, 0x19, 0x94, 0x11, 0x36, 0x22, 0x82, 0x21, 0x97, 0x7E, 0x90, 0x27, 0x2D, 0xE1, - 0xA1, 0xE2, 0xE0, 0x35, 0x94, 0x83, 0xE8, 0x52, 0x3C, 0xCA, 0xA6, 0xB4, 0xC0, 0x92, 0xEC, 0x53, - 0x01, 0x00, 0x49, 0x89, 0xA3, 0x80, 0x68, 0x4F, 0x40, 0xC9, 0x58, 0x83, 0x50, 0x58, 0xB2, 0xD7, - 0xC3, 0xE4, 0x0A, 0xAD, 0xEC, 0x3A, 0x2E, 0x58, 0x40, 0x3A, 0x1F, 0x0C, 0xA1, 0x88, 0xD4, 0x4D, - 0x35, 0x32, 0x01, 0xD0, 0x1A, 0x63, 0xA7, 0xDA, 0x3F, 0x89, 0x75, 0x9F, 0x34, 0x86, 0x42, 0x08, - 0x88, 0xD9, 0x9C, 0x1C, 0x7B, 0x43, 0x10, 0xF1, 0xC7, 0xE7, 0x2F, 0xF7, 0xBB, 0x7D, 0x1F, 0xE2, - 0xCD, 0xED, 0x76, 0xB5, 0xDE, 0xCE, 0x66, 0x73, 0x16, 0xF6, 0xDE, 0x13, 0xD2, 0x6A, 0xB5, 0x7A, - 0xF0, 0xE8, 0x41, 0x4A, 0x31, 0xC6, 0xA8, 0xDB, 0x39, 0x0A, 0xA9, 0xBA, 0x3C, 0x74, 0x9D, 0xB5, - 0xF6, 0xA7, 0x3F, 0xFD, 0x34, 0x44, 0xAE, 0xEB, 0xAA, 0xAA, 0x9C, 0x75, 0x76, 0xBB, 0xDD, 0x89, - 0x40, 0x55, 0xB9, 0x94, 0x58, 0x0F, 0x8B, 0x31, 0xFA, 0x10, 0x5D, 0xE5, 0xAA, 0xBA, 0x4A, 0xB9, - 0x30, 0x43, 0x09, 0xAF, 0x8F, 0x2D, 0x9D, 0x38, 0x09, 0x5A, 0x7A, 0xF5, 0xEE, 0x66, 0x7F, 0xE8, - 0xA6, 0x4D, 0x15, 0x63, 0x02, 0xC0, 0x94, 0x22, 0xDA, 0xE2, 0x2C, 0xC3, 0x63, 0x01, 0xD6, 0x51, - 0x68, 0x07, 0x01, 0x11, 0xF5, 0x97, 0x64, 0x71, 0x28, 0x08, 0x34, 0x86, 0x98, 0x52, 0x62, 0x45, - 0x7C, 0xCA, 0xA4, 0x96, 0x49, 0x21, 0xEF, 0x8A, 0x53, 0x16, 0x84, 0x2C, 0x6F, 0xAA, 0x46, 0x04, - 0x51, 0x7B, 0x7D, 0x67, 0x10, 0x80, 0x05, 0x9F, 0x67, 0x9B, 0xE5, 0xDE, 0x67, 0x2C, 0x93, 0x63, - 0x1D, 0xF1, 0x01, 0x2D, 0x3C, 0xA4, 0x88, 0x68, 0xBC, 0xA8, 0x60, 0x7A, 0x67, 0xAD, 0x35, 0xE6, - 0x8F, 0xCF, 0x5E, 0xCD, 0x26, 0xCD, 0xD5, 0xCD, 0xE6, 0xB7, 0x7F, 0xF8, 0xF1, 0xD7, 0x3F, 0xFF, - 0xEC, 0xBF, 0xFB, 0xEB, 0x9F, 0xA6, 0x42, 0xC3, 0x59, 0xA6, 0x0C, 0x98, 0x73, 0x4B, 0x9D, 0x61, - 0xA5, 0x1C, 0xFF, 0x85, 0x53, 0x2D, 0xA6, 0x7F, 0x62, 0x00, 0x3D, 0x47, 0x73, 0xB0, 0x86, 0xF8, - 0x29, 0x8E, 0x88, 0xB0, 0x35, 0x6C, 0x31, 0x4E, 0xCB, 0x18, 0xF6, 0x6C, 0x80, 0xA3, 0x25, 0x3E, - 0x5C, 0xFC, 0x44, 0x8B, 0x41, 0xE6, 0x41, 0xC8, 0xFC, 0x7A, 0x39, 0x50, 0x22, 0xC0, 0x47, 0xDC, - 0x28, 0xE5, 0x9D, 0x33, 0x90, 0xE6, 0x52, 0xE3, 0xA5, 0x37, 0xB2, 0x54, 0xF0, 0x2A, 0x8B, 0x60, - 0xD9, 0x13, 0x12, 0x03, 0x03, 0x1B, 0xAD, 0x22, 0x44, 0x40, 0x40, 0x2A, 0xBD, 0xAD, 0x32, 0x3E, - 0x85, 0x6C, 0xF7, 0x09, 0xE4, 0xFC, 0x3B, 0x5D, 0xCC, 0xE3, 0x72, 0x8A, 0x41, 0x99, 0x14, 0xAD, - 0x01, 0x45, 0xA1, 0x83, 0x96, 0x28, 0x38, 0x43, 0x93, 0xDA, 0xD5, 0x95, 0x9D, 0x36, 0xCE, 0x87, - 0xD8, 0x7A, 0x5F, 0x57, 0x8E, 0x59, 0x10, 0xC0, 0x10, 0x25, 0xE4, 0xE9, 0xA4, 0x52, 0x36, 0x21, - 0xCD, 0x06, 0x2E, 0xE7, 0x1F, 0x1B, 0x3E, 0xDD, 0x17, 0x88, 0xFB, 0x12, 0x70, 0x6F, 0x64, 0x8F, - 0x28, 0x77, 0xF8, 0xD9, 0x10, 0x3E, 0x38, 0x9B, 0xEF, 0xDA, 0x10, 0x62, 0x27, 0x5C, 0xFA, 0x8C, - 0x2A, 0x54, 0xCF, 0x53, 0x05, 0x47, 0x43, 0x62, 0x48, 0x6C, 0x44, 0x39, 0x76, 0x42, 0x10, 0x25, - 0xF1, 0x01, 0x82, 0xA3, 0x92, 0x65, 0x11, 0x14, 0x75, 0xD8, 0x67, 0xBE, 0x11, 0x2A, 0x7B, 0x14, - 0x40, 0x16, 0x02, 0x75, 0x16, 0x13, 0x00, 0x0A, 0xAA, 0x1E, 0x72, 0x36, 0x93, 0x7C, 0x15, 0xE7, - 0x58, 0x7E, 0xE8, 0x21, 0xE1, 0x4C, 0xB3, 0xDE, 0x10, 0xB5, 0x99, 0x1E, 0xA4, 0x94, 0x2D, 0xA5, - 0x21, 0x98, 0x48, 0x20, 0xC2, 0x42, 0x04, 0x43, 0x53, 0x9C, 0x23, 0x66, 0xCC, 0x79, 0x09, 0x50, - 0x59, 0xDB, 0x34, 0x95, 0xB1, 0xD6, 0x9A, 0x71, 0xA1, 0x12, 0xA8, 0xA1, 0x3A, 0xA4, 0xC8, 0xEA, - 0x59, 0xC6, 0x5A, 0xB5, 0x40, 0xC7, 0x12, 0x8C, 0x08, 0xAF, 0x5E, 0xBE, 0xB9, 0xBA, 0xC9, 0x24, - 0x2E, 0xD3, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xBA, 0x89, 0x31, 0x5D, 0xDF, 0x6C, - 0xB7, 0xDB, 0xDD, 0xF2, 0xEC, 0x0C, 0x09, 0x9B, 0xC9, 0x44, 0x00, 0xBB, 0xB6, 0xFF, 0xE8, 0xA3, - 0xC7, 0x8F, 0x3F, 0x7A, 0xD8, 0x34, 0xF5, 0x64, 0x32, 0xDD, 0x6C, 0x77, 0xEB, 0xCD, 0x6E, 0xB5, - 0xDA, 0xA4, 0xC8, 0x21, 0xC5, 0xE5, 0x72, 0x71, 0x79, 0x79, 0x3E, 0x9B, 0xCD, 0xBE, 0xFF, 0xE1, - 0x45, 0xD7, 0xF7, 0x55, 0xE5, 0xFA, 0xDE, 0xAB, 0x7A, 0xEA, 0x7B, 0x9F, 0x52, 0x9A, 0xCD, 0xA6, - 0x4D, 0x53, 0xDF, 0xDC, 0xAC, 0x22, 0x07, 0x62, 0xA6, 0x78, 0x24, 0x92, 0x41, 0xC4, 0x94, 0x92, - 0x1A, 0xC5, 0xCC, 0xF2, 0xC9, 0xC7, 0x8F, 0x1E, 0x5E, 0x9E, 0x7F, 0xF5, 0xD5, 0xB7, 0x6F, 0xDF, - 0xDF, 0xFE, 0xF2, 0x67, 0x9F, 0xB2, 0x67, 0xD5, 0xEF, 0xC6, 0x30, 0xA0, 0x40, 0x66, 0xD0, 0x03, - 0xB9, 0xE3, 0x20, 0x4E, 0x02, 0x02, 0x92, 0xA3, 0xAE, 0x00, 0x1A, 0x67, 0xCC, 0x0E, 0xDD, 0xAC, - 0xB6, 0x62, 0x8A, 0xE9, 0x98, 0x77, 0x9A, 0x33, 0x30, 0xEF, 0x29, 0xB2, 0x93, 0xD5, 0x38, 0xFE, - 0x3D, 0x3F, 0x2B, 0x96, 0xA4, 0xA8, 0xA2, 0x39, 0x70, 0x94, 0xE7, 0x05, 0xF7, 0xB4, 0xD5, 0xC9, - 0xF7, 0x63, 0x75, 0x53, 0x64, 0x38, 0x1B, 0x95, 0x99, 0xE9, 0x0F, 0xA5, 0xAE, 0x2A, 0x4E, 0xFC, - 0x4F, 0x5F, 0x7E, 0xFF, 0x5F, 0xFF, 0xF9, 0x9B, 0x8F, 0x1E, 0x5E, 0xAE, 0xB6, 0x7B, 0x67, 0xCD, - 0xBF, 0x7C, 0xFD, 0xE3, 0x8B, 0x37, 0xD7, 0x7F, 0xFF, 0x3F, 0xFC, 0xF5, 0x62, 0x36, 0x51, 0x1A, - 0x9B, 0xD1, 0x2A, 0x39, 0x5A, 0x69, 0x77, 0x34, 0x8B, 0xDC, 0xF9, 0xB2, 0x60, 0xA2, 0x62, 0xD6, - 0x8A, 0xD6, 0x13, 0xCB, 0x38, 0x00, 0x81, 0x25, 0x2F, 0x0C, 0x0A, 0x5E, 0xFE, 0x33, 0xAA, 0xEA, - 0x83, 0x4B, 0x72, 0x58, 0x8C, 0x9A, 0xE6, 0x56, 0xC6, 0xF9, 0xCE, 0x68, 0x64, 0xB4, 0x0B, 0x00, - 0x85, 0xBF, 0xE1, 0xFE, 0xA2, 0x56, 0x3E, 0x75, 0x12, 0x91, 0x9C, 0x7A, 0xAC, 0x69, 0xF6, 0x02, - 0xA0, 0x1D, 0x0D, 0x18, 0x88, 0x84, 0x50, 0xE9, 0xDA, 0x44, 0x99, 0x0D, 0x14, 0xDA, 0x09, 0x00, - 0x0E, 0x77, 0x2D, 0x96, 0x38, 0x00, 0x1E, 0x8B, 0x9B, 0x40, 0x0A, 0x42, 0x19, 0xD4, 0x7F, 0x3E, - 0x86, 0xCB, 0x36, 0x98, 0x58, 0x7C, 0x8C, 0x6D, 0x17, 0x58, 0x84, 0x08, 0xAD, 0xE9, 0x2D, 0x11, - 0x11, 0x5A, 0x4B, 0x8B, 0xD9, 0xA4, 0xAE, 0x2A, 0x32, 0x0A, 0xB9, 0x07, 0xD7, 0xBE, 0x7A, 0xA0, - 0xFE, 0x64, 0x01, 0xF0, 0x89, 0xA8, 0x9D, 0xC8, 0xC1, 0xFD, 0x83, 0xF5, 0x87, 0xC4, 0x6C, 0x2D, - 0x3D, 0x38, 0x9B, 0x58, 0x43, 0xBB, 0x36, 0xB4, 0x3E, 0xE6, 0xD0, 0xAD, 0x42, 0x5A, 0x84, 0x12, - 0xD5, 0x01, 0x94, 0xC1, 0xAF, 0x95, 0x81, 0xF6, 0x51, 0xE0, 0x4E, 0x9B, 0x80, 0xDC, 0x41, 0xB2, - 0x94, 0x75, 0x98, 0x50, 0xEE, 0x5D, 0x92, 0x5F, 0xC7, 0xE4, 0x2A, 0x28, 0x40, 0x14, 0x8B, 0x68, - 0x0C, 0x56, 0xC6, 0x10, 0x91, 0x6E, 0x15, 0xA3, 0xB9, 0x07, 0xC8, 0x89, 0x8B, 0x60, 0x00, 0xA4, - 0x94, 0x0A, 0x0D, 0xC8, 0x9B, 0x28, 0x37, 0xE5, 0x61, 0x6D, 0x6C, 0x66, 0x94, 0x14, 0x0C, 0x35, - 0xD1, 0x9D, 0xA1, 0xB8, 0x51, 0x50, 0x10, 0xD1, 0x12, 0xCD, 0x67, 0x4D, 0x5D, 0xD7, 0xC3, 0x48, - 0x1E, 0x65, 0x77, 0x34, 0x6E, 0xC3, 0xE8, 0x11, 0x80, 0x30, 0x24, 0x4E, 0x48, 0x68, 0xAD, 0xED, - 0xFB, 0x7E, 0xBB, 0x6B, 0xFB, 0xBE, 0xBF, 0x7A, 0x7F, 0x83, 0x48, 0xBD, 0xEF, 0x9B, 0xA6, 0x9E, - 0xCF, 0xE7, 0xC6, 0xDA, 0x3E, 0x46, 0x1F, 0xE2, 0xA3, 0x87, 0x0F, 0x74, 0x22, 0xDA, 0xB6, 0x45, - 0xC4, 0xB3, 0xB3, 0xF9, 0x74, 0xDA, 0x9C, 0x9D, 0x9F, 0x3D, 0x7A, 0x78, 0xB9, 0xD9, 0xEC, 0xBA, - 0xDE, 0xA7, 0xC4, 0xAF, 0xDF, 0xBC, 0x7F, 0xF9, 0xF2, 0x4D, 0x62, 0xAE, 0xEB, 0xDA, 0x10, 0x09, - 0xC0, 0x7E, 0xB7, 0x47, 0xA2, 0x10, 0xE3, 0x6C, 0x3A, 0x9D, 0x4C, 0x1A, 0xEF, 0xBD, 0xCF, 0x7D, - 0xCB, 0x45, 0x85, 0x51, 0x7D, 0xFF, 0x84, 0x82, 0x44, 0x3E, 0x24, 0x00, 0xB1, 0xD6, 0x58, 0x6B, - 0x6F, 0x6E, 0x37, 0x02, 0xF8, 0xFA, 0xDD, 0xED, 0x5F, 0xFD, 0xEA, 0xF3, 0x3E, 0xE4, 0xAD, 0x45, - 0x11, 0x25, 0x60, 0x2A, 0xEA, 0xA0, 0x6C, 0xD8, 0xAC, 0x60, 0x53, 0x00, 0x93, 0x8A, 0x16, 0x21, - 0x01, 0xA4, 0xE0, 0x63, 0x8C, 0xC9, 0x18, 0x42, 0x10, 0x6D, 0x91, 0xA8, 0xE8, 0x2C, 0xC4, 0x38, - 0x00, 0xB1, 0x0F, 0x0A, 0xD2, 0xFD, 0x2F, 0x33, 0x36, 0xC9, 0xD6, 0x49, 0x76, 0xC8, 0x4B, 0x11, - 0x8F, 0xEC, 0x9E, 0x43, 0xC0, 0xD2, 0xE6, 0x66, 0x38, 0xEB, 0x4F, 0xD9, 0x13, 0xF7, 0xA5, 0xBD, - 0xAC, 0x6E, 0xAE, 0xEB, 0xBA, 0xEF, 0xE3, 0x3F, 0x7F, 0xF9, 0xFD, 0x7A, 0xD7, 0x7F, 0xF1, 0x93, - 0x4F, 0x0F, 0xAD, 0x76, 0xA0, 0x14, 0x00, 0xB9, 0xDE, 0x74, 0xFF, 0xF0, 0x8F, 0x7F, 0xF8, 0x0F, - 0xFF, 0xFD, 0x5F, 0x22, 0x82, 0xE6, 0xF7, 0xC1, 0x50, 0x60, 0x75, 0xAA, 0x56, 0x72, 0x5A, 0xD9, - 0xC9, 0x06, 0x7F, 0x4C, 0xE9, 0x1D, 0xBD, 0x23, 0xCB, 0xB1, 0x16, 0x70, 0xF8, 0x7E, 0xA0, 0x69, - 0x1B, 0xFF, 0xE9, 0xBE, 0xE6, 0x1A, 0x3F, 0xBF, 0x7E, 0x89, 0x9A, 0xC8, 0x02, 0x20, 0x22, 0x5A, - 0x92, 0xCD, 0x22, 0x20, 0xCA, 0x1D, 0x95, 0x5F, 0x73, 0x94, 0x5E, 0x77, 0x54, 0x7F, 0xE3, 0x07, - 0x40, 0xC4, 0xE3, 0xC6, 0x4B, 0x02, 0xA5, 0xD7, 0x9C, 0xDA, 0xF0, 0x00, 0x80, 0x0C, 0x42, 0xA2, - 0xD1, 0x7A, 0x60, 0x91, 0xC2, 0xEC, 0x2C, 0x06, 0x51, 0xEB, 0x66, 0xB2, 0x0B, 0x79, 0xFC, 0x9A, - 0x02, 0x82, 0x40, 0x02, 0x05, 0x41, 0x1C, 0x07, 0x4B, 0x0D, 0x7B, 0x24, 0x11, 0x16, 0x61, 0xB0, - 0x8E, 0x44, 0xA4, 0xED, 0x23, 0x40, 0x44, 0x84, 0xDA, 0xB9, 0x98, 0xB8, 0x76, 0xA6, 0x22, 0x1B, - 0x22, 0xAB, 0x67, 0x2A, 0x67, 0x25, 0x0C, 0xBA, 0xB9, 0x0C, 0xD3, 0x7D, 0x15, 0xF6, 0x41, 0x91, - 0x1A, 0xD2, 0x0E, 0xB5, 0xB6, 0x06, 0x47, 0x9F, 0xF1, 0x45, 0x88, 0xC8, 0x59, 0xE3, 0x8C, 0x31, - 0xA4, 0x7D, 0x73, 0x29, 0x40, 0x3A, 0x6E, 0x5B, 0xD9, 0xDC, 0xBE, 0x73, 0xE5, 0x3C, 0xAA, 0x19, - 0x8E, 0x02, 0x80, 0x06, 0xC3, 0x64, 0xB8, 0x3A, 0x8E, 0x68, 0x20, 0x75, 0x24, 0x0A, 0xFF, 0x43, - 0xE9, 0x3E, 0xA8, 0xA7, 0x00, 0x14, 0x96, 0x4D, 0x04, 0xC8, 0x01, 0xFB, 0x4C, 0x8E, 0x4E, 0xB9, - 0xC5, 0xF7, 0xB0, 0xB7, 0x28, 0x74, 0x8F, 0xCC, 0x7C, 0x94, 0xF5, 0x1C, 0x7C, 0x22, 0x02, 0x22, - 0x83, 0x28, 0x90, 0x8E, 0x06, 0xAB, 0x35, 0x68, 0xCA, 0x46, 0xA7, 0x63, 0x43, 0x48, 0xCE, 0x9A, - 0xD9, 0xB4, 0x6E, 0x9A, 0x53, 0x2D, 0x96, 0xCF, 0x11, 0x01, 0x01, 0xCD, 0x85, 0xC9, 0xEB, 0x5F, - 0xB4, 0xFD, 0xA1, 0x88, 0x48, 0xED, 0xAA, 0x17, 0x2F, 0x5F, 0x7F, 0xF7, 0xC3, 0x2B, 0xB2, 0x16, - 0x01, 0x38, 0x32, 0x02, 0x1B, 0x63, 0xAA, 0xAA, 0x62, 0x34, 0x44, 0x64, 0x58, 0x2E, 0x2F, 0x2F, - 0x62, 0x8C, 0x9C, 0x18, 0x84, 0x63, 0xC2, 0x94, 0xF8, 0x76, 0xB5, 0x49, 0x2C, 0x5D, 0xE7, 0xEB, - 0xCA, 0x3E, 0x7A, 0x74, 0x79, 0x76, 0xB6, 0x7C, 0xF6, 0xFC, 0xD5, 0xF9, 0xC5, 0x72, 0xBB, 0xDD, - 0xC7, 0xC4, 0x4F, 0x3F, 0x7D, 0xF2, 0xF6, 0xDD, 0xD5, 0x8B, 0x97, 0x6F, 0x67, 0xF3, 0xD9, 0x76, - 0xBB, 0x9F, 0x4E, 0x26, 0x67, 0x67, 0xCB, 0xCD, 0x76, 0xB7, 0x5A, 0x6F, 0x13, 0xB3, 0xB5, 0x16, - 0x80, 0xAB, 0xAA, 0x0E, 0x21, 0xFA, 0x10, 0x40, 0x85, 0x1C, 0x24, 0x72, 0xB4, 0x84, 0x09, 0xF0, - 0xC7, 0x17, 0x6F, 0xAC, 0x35, 0xC6, 0x9A, 0xCD, 0xBE, 0x0D, 0x31, 0x59, 0x32, 0x23, 0x5F, 0x64, - 0xB6, 0x97, 0x55, 0x8D, 0xEB, 0x2B, 0xA8, 0x71, 0xAA, 0xE8, 0x83, 0x59, 0x94, 0xF8, 0x80, 0x13, - 0xC7, 0x98, 0xDA, 0xAE, 0x57, 0x98, 0x13, 0x63, 0x12, 0xC1, 0xC4, 0x29, 0x67, 0xB1, 0xFD, 0x89, - 0x72, 0xC2, 0xF1, 0x82, 0xBC, 0x2B, 0x77, 0x77, 0xCC, 0xC3, 0x72, 0x3C, 0x0C, 0x47, 0xE9, 0x86, - 0x02, 0x79, 0xEF, 0x93, 0x91, 0xA4, 0xFD, 0x39, 0x91, 0x16, 0x39, 0x4A, 0x14, 0x00, 0x00, 0x42, - 0x5D, 0x55, 0x5D, 0xEB, 0xFF, 0x9F, 0xDF, 0x7E, 0xD7, 0xF6, 0xE9, 0x66, 0xB5, 0xF9, 0xE8, 0xD1, - 0x83, 0xBA, 0x72, 0xBD, 0xF7, 0xB3, 0xE9, 0x34, 0x25, 0xEE, 0xDA, 0xEE, 0xD5, 0x3B, 0xFE, 0xDF, - 0xFE, 0x8F, 0x7F, 0x39, 0x5F, 0x4E, 0xFF, 0xDD, 0xDF, 0xFE, 0xC5, 0x7C, 0xDA, 0xF4, 0x21, 0x11, - 0x8E, 0x2E, 0x7B, 0x44, 0x3E, 0x1F, 0x30, 0x53, 0xA4, 0xFC, 0x7D, 0xFC, 0x72, 0x27, 0x2F, 0x3B, - 0x80, 0xA9, 0xF1, 0xD3, 0xDE, 0x3F, 0x06, 0x46, 0x1A, 0x67, 0x3C, 0x2C, 0xC3, 0x06, 0x53, 0xB4, - 0xE6, 0x31, 0x0C, 0x52, 0x6E, 0x7D, 0x7C, 0xA4, 0x62, 0x07, 0xE0, 0x58, 0x09, 0x0E, 0x77, 0xB9, - 0xD3, 0x2A, 0xFC, 0x38, 0xF3, 0x83, 0x55, 0x5F, 0x02, 0x98, 0xBA, 0x41, 0x95, 0x87, 0x20, 0x20, - 0x55, 0x6D, 0x00, 0xD9, 0xA2, 0x1A, 0x4F, 0x22, 0xE8, 0x46, 0x87, 0x94, 0x57, 0xFF, 0xDD, 0x69, - 0x16, 0x43, 0x98, 0x00, 0x38, 0x89, 0xF7, 0x49, 0xB4, 0x4F, 0xAA, 0xA5, 0xCA, 0x1A, 0x67, 0x0D, - 0x0B, 0x1F, 0xFA, 0xD0, 0xF6, 0xC1, 0x19, 0x63, 0x0C, 0xCD, 0x53, 0xB2, 0xD6, 0xD4, 0xA5, 0xAA, - 0xF9, 0x3E, 0xBC, 0x3A, 0x19, 0xA3, 0x13, 0xF5, 0x34, 0x3E, 0x12, 0x4B, 0x41, 0xB5, 0x42, 0x2D, - 0x35, 0x4E, 0x73, 0x09, 0x7E, 0x09, 0x90, 0xCD, 0x26, 0xB5, 0xA6, 0xE8, 0x6F, 0x0F, 0x9E, 0x73, - 0x6B, 0x78, 0xC4, 0x52, 0x8C, 0xA7, 0x7A, 0xA7, 0x28, 0x35, 0xCC, 0x35, 0x21, 0x05, 0x76, 0x11, - 0x20, 0x51, 0x99, 0x9E, 0x63, 0xB2, 0x68, 0xBE, 0x35, 0xC2, 0x51, 0xC1, 0x09, 0x40, 0x21, 0xF1, - 0x82, 0x02, 0x92, 0x54, 0x1A, 0x90, 0x08, 0x0D, 0x62, 0x2E, 0x13, 0x40, 0x68, 0xC8, 0x58, 0x22, - 0x01, 0x41, 0x81, 0x90, 0xD2, 0xB3, 0x67, 0x3F, 0xF6, 0x7D, 0xF8, 0xF8, 0xD3, 0x27, 0xF3, 0xF9, - 0x7C, 0xF4, 0x8E, 0x00, 0x98, 0xB9, 0xA4, 0x2D, 0x91, 0x90, 0x0C, 0x38, 0xD1, 0x12, 0x39, 0xAB, - 0x79, 0xF6, 0xB6, 0xAE, 0x91, 0x13, 0xF7, 0x3E, 0x32, 0x8B, 0xB5, 0x34, 0x99, 0xDC, 0xD1, 0x62, - 0x27, 0x6E, 0xDA, 0x3C, 0x83, 0x59, 0x92, 0xB2, 0x37, 0x8E, 0x0C, 0x39, 0xEB, 0xBE, 0xFF, 0xE1, - 0xC5, 0xCB, 0xD7, 0xD7, 0x48, 0xA6, 0x6F, 0xFB, 0x18, 0x93, 0x73, 0x36, 0x25, 0xAE, 0x9C, 0xED, - 0x7C, 0xDA, 0xEC, 0xB6, 0x93, 0xA6, 0xB6, 0xD6, 0x79, 0x1F, 0x9C, 0x33, 0xC1, 0x87, 0xDE, 0xFB, - 0xD5, 0x66, 0x0B, 0x40, 0xF3, 0xD9, 0x4C, 0x40, 0xE6, 0xF3, 0xE9, 0x72, 0x31, 0x5F, 0xAD, 0xB7, - 0xBF, 0xFB, 0xF2, 0x9B, 0x98, 0xF8, 0xF2, 0xF2, 0xFC, 0xE3, 0x27, 0x8F, 0x1F, 0x3F, 0xBA, 0x5C, - 0x6F, 0xB6, 0xBB, 0x7D, 0x8B, 0x88, 0xB3, 0xF9, 0x74, 0x3E, 0x9B, 0xF6, 0x3E, 0x20, 0x61, 0xDF, - 0xFB, 0xC4, 0x6C, 0xC8, 0x70, 0x62, 0x35, 0x21, 0x53, 0x4C, 0x08, 0x18, 0x85, 0x05, 0x18, 0x05, - 0x53, 0x4A, 0x56, 0x1D, 0x11, 0x84, 0x22, 0xD2, 0x87, 0xF0, 0xFE, 0x66, 0xFB, 0x8F, 0xBF, 0xFD, - 0x21, 0xC5, 0xF0, 0x57, 0xBF, 0x7C, 0x7A, 0x7E, 0x56, 0x8F, 0x96, 0x53, 0x81, 0x16, 0xDA, 0x44, - 0x23, 0x44, 0x11, 0x4E, 0xCC, 0x84, 0xD4, 0xF5, 0xDE, 0x5A, 0xE3, 0x9C, 0xE3, 0xC4, 0xBD, 0x0F, - 0x87, 0xD6, 0x73, 0xA9, 0xD5, 0x25, 0xCC, 0x35, 0xC2, 0x27, 0x82, 0x37, 0x5E, 0x90, 0x2A, 0x3C, - 0x3C, 0x50, 0xA1, 0x66, 0x34, 0x7B, 0xDC, 0xF3, 0x86, 0x55, 0x77, 0xBA, 0xCA, 0xF2, 0x61, 0x1A, - 0x56, 0x1E, 0xBB, 0x55, 0x8F, 0x67, 0xC1, 0xDD, 0x8F, 0x73, 0x16, 0xA1, 0xF8, 0x6A, 0x75, 0x55, - 0x1B, 0x04, 0x80, 0x2F, 0xBF, 0x7D, 0x79, 0xB3, 0x6A, 0xDB, 0xBE, 0x5F, 0x6D, 0x0E, 0x80, 0xF4, - 0x93, 0xA7, 0x1F, 0x1F, 0xDA, 0xFE, 0x66, 0xB5, 0x0D, 0x21, 0x5E, 0xDF, 0xAE, 0x99, 0xF9, 0xA3, - 0xC7, 0x0F, 0xDE, 0xBC, 0x5F, 0x6D, 0xF7, 0xDD, 0xDF, 0xFF, 0xFB, 0x5F, 0x2F, 0xE7, 0x93, 0xCE, - 0x87, 0x21, 0x62, 0x2B, 0x47, 0x37, 0xCB, 0x1D, 0x1D, 0x5D, 0xB4, 0xCA, 0xB0, 0xB0, 0x33, 0x92, - 0x3D, 0x79, 0xB6, 0xA1, 0x1D, 0x2F, 0xDE, 0xF5, 0xF4, 0x8F, 0x81, 0xD8, 0x78, 0x15, 0x9C, 0x8C, - 0x43, 0xE6, 0xD7, 0x92, 0x3C, 0x72, 0x32, 0xEA, 0x5A, 0x87, 0x23, 0x93, 0x73, 0xBC, 0x55, 0x8C, - 0xAF, 0x7C, 0xB2, 0x79, 0xD8, 0x90, 0x09, 0x1B, 0x86, 0xE7, 0xD6, 0x9D, 0x2A, 0x3F, 0xBD, 0x20, - 0xA4, 0xE1, 0xB5, 0x8E, 0x1F, 0x61, 0x86, 0xA3, 0x49, 0xAD, 0x8E, 0xEE, 0x61, 0x28, 0x04, 0x28, - 0x1B, 0xF0, 0x23, 0xAD, 0x89, 0xA0, 0xC6, 0xA4, 0xDA, 0x86, 0x84, 0xCC, 0x2A, 0x9D, 0x00, 0x91, - 0x25, 0x24, 0x0E, 0x51, 0x0B, 0x75, 0x80, 0x41, 0x08, 0x31, 0x59, 0xC1, 0x7D, 0x1F, 0x63, 0x9A, - 0xD4, 0xAE, 0x72, 0x06, 0x06, 0x1B, 0xF5, 0x2E, 0x7C, 0x18, 0xDE, 0xE7, 0x83, 0x00, 0x6D, 0xF8, - 0x5E, 0xE9, 0xF7, 0x62, 0x8C, 0x1A, 0xFA, 0x4B, 0x89, 0x99, 0x93, 0xB5, 0x77, 0xB2, 0x34, 0xAC, - 0xB5, 0x8B, 0x85, 0x99, 0xCF, 0x27, 0x6D, 0xE7, 0xA7, 0x13, 0xB7, 0xDD, 0xFB, 0x5D, 0xEB, 0x7D, - 0xE4, 0xC1, 0x95, 0x0F, 0x05, 0x34, 0xE5, 0xC9, 0x90, 0xC1, 0x57, 0x01, 0x04, 0x88, 0x28, 0xA5, - 0x88, 0x1D, 0x0C, 0x91, 0x35, 0xA8, 0xAF, 0x6E, 0x0D, 0x55, 0x36, 0xBB, 0xAA, 0x62, 0xCA, 0x9A, - 0x74, 0xAC, 0x75, 0x8B, 0x70, 0x80, 0x32, 0x89, 0xE8, 0xC5, 0x59, 0xC4, 0x22, 0x19, 0x63, 0x12, - 0x0B, 0x20, 0x54, 0x95, 0xBB, 0xBE, 0xBA, 0x3E, 0x6C, 0x77, 0xEB, 0xED, 0x21, 0x89, 0xFC, 0xF2, - 0x57, 0x3F, 0xDF, 0x6E, 0x77, 0x17, 0x67, 0x4B, 0x63, 0x0D, 0x40, 0xD4, 0x8D, 0xDA, 0x19, 0xB2, - 0x56, 0x17, 0x55, 0xBE, 0x74, 0xD7, 0xB6, 0x29, 0xD2, 0x6C, 0x3A, 0x51, 0x72, 0x37, 0x11, 0xEE, - 0x43, 0xB4, 0x96, 0x66, 0xD3, 0x86, 0xC8, 0x9C, 0x6E, 0x9E, 0xA5, 0x3E, 0xBC, 0x98, 0xA0, 0x20, - 0x7C, 0xFC, 0x2B, 0x11, 0xEE, 0x76, 0x87, 0xDF, 0xFF, 0xE1, 0xFB, 0xEB, 0xDB, 0xDD, 0x6C, 0x3A, - 0xD1, 0xBA, 0x4B, 0x16, 0xD6, 0xCE, 0xE7, 0x21, 0x26, 0x22, 0x42, 0x81, 0xAB, 0xEB, 0x55, 0xDF, - 0xF7, 0x9F, 0x7C, 0xF2, 0x04, 0x40, 0x92, 0xC8, 0x6C, 0x36, 0xB3, 0xCE, 0xBD, 0x7A, 0xFD, 0x3E, - 0x4D, 0xB8, 0x99, 0xD4, 0x67, 0x67, 0x8B, 0x17, 0x2F, 0xDE, 0x3C, 0x7B, 0xFE, 0xEA, 0xFA, 0x66, - 0x6D, 0x8C, 0x79, 0xF4, 0xF0, 0x72, 0xB1, 0x98, 0x11, 0xE1, 0xFB, 0xAB, 0xDB, 0xC3, 0xBE, 0x25, - 0xA2, 0xF6, 0xD0, 0x01, 0x82, 0x30, 0xB4, 0xB7, 0x9B, 0xDD, 0xA1, 0x15, 0x01, 0x32, 0xE4, 0xFB, - 0x58, 0xD5, 0x4E, 0xD9, 0x96, 0x35, 0xD0, 0x00, 0x05, 0xB1, 0x86, 0x98, 0x88, 0xC0, 0x91, 0xB1, - 0xD6, 0x26, 0xEF, 0xB7, 0xDB, 0xC3, 0x8B, 0xD7, 0xD7, 0x57, 0x37, 0xAB, 0x47, 0x0F, 0x96, 0x0F, - 0x2E, 0x17, 0x7D, 0x9F, 0x06, 0x8B, 0x40, 0x04, 0x83, 0x0F, 0x0A, 0xCC, 0x43, 0xD0, 0xC2, 0x01, - 0x06, 0xC4, 0x18, 0x92, 0xB1, 0xC9, 0x87, 0x94, 0x62, 0xEA, 0x7D, 0x88, 0x29, 0x96, 0xE4, 0xE1, - 0x3B, 0xEE, 0x8B, 0xC1, 0x87, 0x7D, 0xA2, 0x8C, 0x86, 0x2D, 0xB0, 0x08, 0xFE, 0x9D, 0x0D, 0x75, - 0x2C, 0xAE, 0x27, 0x27, 0x96, 0x9F, 0xB3, 0x5F, 0x00, 0x4E, 0xE1, 0xFE, 0xDD, 0xDD, 0x1A, 0x60, - 0xD2, 0xD4, 0xFF, 0xF5, 0x9F, 0x7E, 0xF7, 0xC9, 0x47, 0x8F, 0xBE, 0x78, 0xFA, 0x71, 0xEF, 0x03, - 0x11, 0x01, 0x4A, 0xE5, 0xEC, 0x7E, 0xDF, 0x7D, 0xF7, 0xFC, 0xDD, 0xED, 0x7A, 0x57, 0xD7, 0x75, - 0x5D, 0x57, 0x29, 0x25, 0x43, 0x34, 0x9F, 0x4D, 0xDE, 0x5D, 0xAD, 0x66, 0xB3, 0x69, 0xD7, 0xFB, - 0x37, 0x6F, 0xAF, 0x5E, 0xBC, 0x78, 0xF3, 0xF8, 0xF1, 0x83, 0xDF, 0x7C, 0xF5, 0xEC, 0xDD, 0xD5, - 0xED, 0xFF, 0xF4, 0x1F, 0xFE, 0xCD, 0xE3, 0x07, 0xCB, 0xA4, 0xB5, 0x56, 0x38, 0x00, 0x21, 0x1C, - 0x23, 0xB2, 0xD1, 0xAD, 0x71, 0x50, 0x65, 0xE3, 0xEF, 0xC7, 0x2F, 0x28, 0x23, 0x07, 0xFF, 0x78, - 0xC4, 0x86, 0x53, 0xEE, 0xA7, 0x98, 0xDD, 0x7D, 0xCF, 0x21, 0x12, 0x7A, 0x67, 0x70, 0x4E, 0xD4, - 0xD6, 0xF8, 0xCA, 0xF7, 0x1E, 0x32, 0x7F, 0xAC, 0x52, 0x51, 0x8F, 0xBC, 0x39, 0x38, 0x3E, 0x26, - 0xE3, 0xBD, 0xD1, 0x55, 0x8E, 0x1B, 0x42, 0x41, 0xD6, 0xC3, 0xBA, 0xC6, 0x72, 0x57, 0x02, 0x64, - 0x06, 0x2C, 0xBA, 0x0C, 0x72, 0xC3, 0x2D, 0x60, 0x10, 0x64, 0xE8, 0x7C, 0x74, 0x96, 0xAC, 0x21, - 0x46, 0xE5, 0xC2, 0x96, 0x24, 0x1C, 0xA2, 0x10, 0x81, 0x23, 0xB2, 0x96, 0x9A, 0xCA, 0xCE, 0x9A, - 0xCA, 0x18, 0x74, 0xD6, 0xD4, 0x5A, 0x20, 0x43, 0xE6, 0x3E, 0x1C, 0x1B, 0x36, 0x81, 0x61, 0x5B, - 0xF8, 0x53, 0xA2, 0xA0, 0x9F, 0x82, 0xB0, 0x72, 0x2D, 0xD7, 0x7D, 0x7A, 0x13, 0xBD, 0xC8, 0x6C, - 0x5A, 0xFF, 0xB4, 0x79, 0xD8, 0xF5, 0xFE, 0xFD, 0xED, 0xEE, 0xDD, 0xCD, 0xAE, 0xF3, 0xB1, 0x64, - 0x35, 0x2A, 0x28, 0x2F, 0x2E, 0x18, 0x00, 0x55, 0xDF, 0x9A, 0x62, 0x9A, 0xED, 0x3B, 0x00, 0x40, - 0x34, 0x0A, 0x8E, 0x24, 0x27, 0xA0, 0x58, 0x4B, 0xCA, 0xA3, 0x1F, 0x53, 0x0A, 0x31, 0xA5, 0x84, - 0x6A, 0xA4, 0x8F, 0xDE, 0x08, 0x8B, 0x19, 0xAE, 0x44, 0xB3, 0xA0, 0xFD, 0xBD, 0x45, 0x32, 0xB2, - 0x7D, 0xF5, 0xF2, 0xCD, 0xBB, 0xB7, 0xEF, 0xAC, 0xB3, 0xD3, 0xE9, 0x74, 0xBF, 0x6F, 0x7F, 0xF3, - 0xAF, 0x5F, 0x75, 0x5D, 0xF7, 0xF0, 0xF2, 0xEC, 0xD0, 0x87, 0xCF, 0x3E, 0xFB, 0x64, 0x36, 0xAD, - 0xFB, 0x3E, 0x55, 0x8B, 0xA9, 0x12, 0xBB, 0x84, 0x10, 0x56, 0xB7, 0xEB, 0x94, 0x52, 0x8C, 0xC1, - 0x58, 0xB3, 0xB2, 0xF6, 0xE3, 0x27, 0x8F, 0x16, 0x8B, 0x29, 0xA2, 0x39, 0x5F, 0xCE, 0xD4, 0xA9, - 0x74, 0x67, 0x70, 0x06, 0x13, 0x02, 0x86, 0x95, 0x75, 0x94, 0x24, 0x11, 0x41, 0x84, 0x7F, 0xF9, - 0xED, 0x37, 0x6F, 0xDF, 0xAF, 0x0F, 0x6D, 0x67, 0xAD, 0x21, 0xC2, 0xCA, 0xB9, 0xA6, 0x76, 0xAF, - 0x5F, 0xBF, 0xBB, 0x5D, 0x6D, 0x97, 0xCB, 0x79, 0x5D, 0xD7, 0x6D, 0xD7, 0xBD, 0xBD, 0xBA, 0x7E, - 0xF8, 0xE0, 0xC1, 0xC5, 0xE5, 0x79, 0x5D, 0x57, 0xCB, 0xC5, 0x4C, 0x1D, 0xCC, 0xF3, 0xF9, 0x6C, - 0x79, 0xB6, 0x34, 0x44, 0x4D, 0x5D, 0x7F, 0xF5, 0xCD, 0xF7, 0x5F, 0x7D, 0xF5, 0x6D, 0x8C, 0xDC, - 0xD4, 0xF5, 0xD3, 0xA7, 0x9F, 0x54, 0x95, 0x43, 0x80, 0xC3, 0xA1, 0x5B, 0xAF, 0x77, 0x6D, 0xDB, - 0x91, 0x31, 0xDE, 0xEF, 0x8C, 0xB5, 0xCB, 0xE5, 0xE2, 0xFA, 0x76, 0xC5, 0xC2, 0xC0, 0xD8, 0x77, - 0x41, 0x9F, 0x64, 0x36, 0x9B, 0x8A, 0xEC, 0x11, 0x09, 0x7D, 0x00, 0x00, 0x1F, 0x82, 0x0A, 0xAA, - 0x96, 0x2A, 0xA6, 0x98, 0x38, 0xF1, 0xA1, 0x6D, 0x13, 0x73, 0xDF, 0x87, 0xAB, 0x9B, 0x2D, 0x02, - 0xA5, 0xC8, 0x1A, 0x1F, 0x11, 0x8D, 0x7E, 0xC6, 0x10, 0x63, 0x8A, 0x21, 0xC5, 0xC8, 0x31, 0xC6, - 0x98, 0x92, 0x6E, 0x22, 0x89, 0x19, 0x31, 0xC5, 0x18, 0x13, 0xB3, 0xA8, 0x5F, 0x64, 0xB4, 0xBD, - 0x15, 0x3D, 0x7E, 0x27, 0x36, 0x37, 0x96, 0xBA, 0xB1, 0xFC, 0x9C, 0x48, 0xD4, 0x87, 0x34, 0xD7, - 0x11, 0xA3, 0x1D, 0x45, 0x4A, 0x00, 0x0A, 0xFC, 0x1D, 0xBC, 0x57, 0x58, 0xB2, 0xAB, 0xD4, 0x74, - 0xE8, 0x7D, 0x78, 0x7F, 0xBD, 0x45, 0xAA, 0x1E, 0x3D, 0xBC, 0x5C, 0x4C, 0x9B, 0x90, 0x22, 0x11, - 0x75, 0x9D, 0xFF, 0x87, 0xFF, 0xF6, 0xB5, 0x20, 0x2D, 0x17, 0xB3, 0x17, 0xAF, 0xDF, 0xCF, 0xE7, - 0x33, 0x10, 0xF9, 0xCD, 0xEF, 0xBF, 0x25, 0x32, 0x6D, 0xD7, 0xBF, 0x7C, 0xFD, 0xAE, 0xAE, 0xAB, - 0x8F, 0x1E, 0x3F, 0xDC, 0x1F, 0xDA, 0xD7, 0x6F, 0xAE, 0x52, 0x4A, 0x97, 0x17, 0xCB, 0xFF, 0xFD, - 0x1F, 0x7E, 0xFB, 0xEF, 0xFE, 0xF6, 0x8B, 0xBF, 0xFC, 0xD9, 0x27, 0x9D, 0x0F, 0x5A, 0x62, 0x55, - 0xA8, 0xC0, 0xEE, 0x68, 0x07, 0xF9, 0x90, 0xFE, 0x1A, 0xBF, 0xCB, 0x18, 0x69, 0xC2, 0x3D, 0x35, - 0x37, 0x92, 0x1C, 0x1C, 0xBF, 0xF8, 0xC9, 0xA5, 0x44, 0x8E, 0x09, 0xCC, 0xCC, 0x77, 0xD6, 0xF5, - 0xF8, 0xAC, 0x61, 0x6D, 0x8E, 0xB7, 0x8D, 0xB1, 0x36, 0xD0, 0xBB, 0x58, 0x16, 0x31, 0x6A, 0x48, - 0x8E, 0x83, 0x9B, 0x7A, 0xC5, 0xF2, 0x34, 0x43, 0x66, 0xE8, 0xB1, 0x16, 0x17, 0x00, 0x00, 0x34, - 0x45, 0x40, 0x3D, 0x8B, 0x26, 0xDB, 0x60, 0x1A, 0x73, 0xCC, 0x49, 0xAD, 0x9A, 0xF2, 0x83, 0x85, - 0x50, 0xC0, 0x00, 0x12, 0xA1, 0x73, 0x34, 0xAD, 0x1D, 0x22, 0x6E, 0xF6, 0x3D, 0xC7, 0x44, 0x84, - 0x06, 0x8D, 0x1E, 0x50, 0x59, 0x22, 0xA4, 0xCA, 0x9A, 0xA6, 0xB6, 0x22, 0x42, 0x88, 0xD6, 0x8C, - 0x5A, 0x01, 0x94, 0xF7, 0x3F, 0x31, 0x85, 0xC6, 0x32, 0x74, 0x7F, 0xE0, 0x86, 0x6F, 0x86, 0x20, - 0xB4, 0x31, 0xA7, 0xD6, 0xC1, 0x78, 0x32, 0xF5, 0xE0, 0xAA, 0x72, 0x1F, 0x3F, 0x3A, 0x9B, 0x4D, - 0xEA, 0x9B, 0xF5, 0x7E, 0xBB, 0xEF, 0x22, 0xB3, 0x86, 0x19, 0x54, 0x92, 0x99, 0xC5, 0x10, 0xCE, - 0x9A, 0x6A, 0xD2, 0x38, 0x66, 0xD1, 0x45, 0x8B, 0x45, 0x36, 0x8D, 0x21, 0x6B, 0x48, 0x24, 0x87, - 0xAB, 0x63, 0x4C, 0x84, 0xA8, 0xEE, 0x2A, 0x72, 0x18, 0x89, 0x59, 0x72, 0x5A, 0x96, 0x08, 0x68, - 0xDA, 0x44, 0xA6, 0x2E, 0x29, 0x78, 0x48, 0x85, 0xCC, 0x39, 0xEB, 0x7D, 0xFF, 0xFB, 0x2F, 0xBF, - 0xBB, 0x7A, 0x7F, 0xB3, 0x5C, 0xCE, 0x91, 0x30, 0x24, 0x6E, 0x0F, 0x5D, 0xDB, 0xAE, 0xDB, 0xDE, - 0xAF, 0x56, 0x3B, 0x11, 0x79, 0xFB, 0xEE, 0xE6, 0xF2, 0xE2, 0x3C, 0xC6, 0x18, 0x63, 0x9C, 0xCF, - 0x26, 0xCA, 0x0D, 0x8D, 0x00, 0x55, 0x6D, 0x8D, 0xB1, 0xF3, 0xF9, 0x34, 0x58, 0xF9, 0xE3, 0x77, - 0x2F, 0xAD, 0x35, 0x4F, 0x3E, 0xBA, 0x9C, 0xCD, 0x14, 0x9D, 0x99, 0x18, 0xE3, 0x68, 0x94, 0x58, - 0xEB, 0x69, 0x46, 0x03, 0x98, 0xC7, 0x21, 0xA5, 0x54, 0x55, 0xEE, 0xE5, 0xAB, 0x77, 0x3F, 0x3C, - 0x7F, 0x7B, 0xF9, 0xE0, 0xE2, 0xE2, 0xF2, 0xDC, 0x1A, 0x72, 0xCE, 0x76, 0x9D, 0x37, 0x22, 0x9B, - 0xF5, 0xA6, 0x3D, 0xB4, 0xC6, 0xA0, 0x2A, 0x81, 0xE9, 0x74, 0x72, 0xBB, 0x5E, 0x3F, 0x74, 0x0F, - 0xA0, 0xEB, 0x6E, 0x57, 0x6B, 0x44, 0xBC, 0xBC, 0x38, 0x37, 0xD6, 0x24, 0x96, 0xD5, 0x7E, 0xD7, - 0xF7, 0x7E, 0xB7, 0x3B, 0x24, 0x96, 0xB3, 0xF3, 0xE5, 0xCF, 0x7F, 0xF6, 0xF9, 0x62, 0x31, 0x43, - 0xC0, 0xCD, 0x76, 0xFF, 0xEA, 0xCD, 0xFB, 0xDE, 0x87, 0xE5, 0xD9, 0xF2, 0xFD, 0xD5, 0x4D, 0x62, - 0xFE, 0xE5, 0x2F, 0x3E, 0xD9, 0xEF, 0x0F, 0xCB, 0xE5, 0xFC, 0xDD, 0xFB, 0x5B, 0x7D, 0x0A, 0x7D, - 0x1E, 0xDD, 0x4E, 0x8D, 0xA5, 0xC9, 0xB4, 0x49, 0x4A, 0x24, 0x99, 0x9D, 0xFD, 0xC4, 0x2C, 0x3E, - 0x46, 0x1F, 0xA2, 0x31, 0x74, 0xBE, 0x9C, 0xCF, 0x67, 0xD3, 0xB6, 0x8F, 0xBB, 0x5D, 0x8B, 0x88, - 0x31, 0x46, 0x44, 0x64, 0x6D, 0x9F, 0x91, 0x58, 0xE9, 0xCC, 0x52, 0xE2, 0xA8, 0x89, 0x14, 0x4A, - 0xF6, 0x59, 0x16, 0x8F, 0x48, 0xC9, 0x50, 0xBA, 0x6B, 0x3F, 0x8E, 0x97, 0xDF, 0xC9, 0x1A, 0xD6, - 0x9F, 0x87, 0x98, 0xDD, 0xC9, 0x89, 0x63, 0x85, 0x08, 0x77, 0x3F, 0xA3, 0x6F, 0x54, 0xB6, 0x4B, - 0x5F, 0xDD, 0xA3, 0xF5, 0xA2, 0x4A, 0x18, 0x7F, 0xF7, 0xCD, 0x8B, 0x9B, 0xF5, 0x16, 0x00, 0x96, - 0xCB, 0xE5, 0xC7, 0x8F, 0x2F, 0x7E, 0x7C, 0xF9, 0x86, 0x45, 0xFE, 0xF2, 0xE7, 0x4F, 0xA7, 0x93, - 0xFA, 0xB7, 0xCF, 0xDE, 0xDE, 0x6E, 0x3B, 0x22, 0x7C, 0xF5, 0xF6, 0xFA, 0xE2, 0x7C, 0x69, 0x8C, - 0xF9, 0xFE, 0xD9, 0x4B, 0xE7, 0x5C, 0x55, 0xB9, 0xC5, 0x6C, 0xFA, 0xD1, 0xE3, 0x87, 0x02, 0xD2, - 0xD4, 0x55, 0x55, 0xB9, 0x14, 0x13, 0x54, 0x8E, 0x08, 0x93, 0xC0, 0x37, 0x3F, 0xBC, 0xF9, 0xC5, - 0x17, 0x4F, 0x50, 0xB3, 0x20, 0xC7, 0x01, 0xC2, 0x61, 0x71, 0x1D, 0xC9, 0x3A, 0x4E, 0x15, 0x1C, - 0x22, 0x8E, 0xFB, 0x73, 0x0F, 0x0B, 0x6A, 0xAC, 0x6E, 0x4E, 0x14, 0xFD, 0x07, 0x50, 0xD8, 0xE8, - 0xAF, 0xE3, 0x18, 0xE5, 0x78, 0x48, 0x4F, 0xAE, 0x33, 0xDC, 0x7A, 0x7C, 0x97, 0x93, 0x27, 0xB7, - 0xC7, 0x11, 0x1D, 0x65, 0x35, 0x71, 0x29, 0x5F, 0x28, 0x40, 0x0D, 0xB3, 0xC1, 0x51, 0x1E, 0x58, - 0x04, 0x9C, 0xC5, 0x69, 0x65, 0x13, 0x8B, 0x56, 0x77, 0x6B, 0x01, 0x79, 0x62, 0x41, 0xCC, 0x8C, - 0x17, 0xAD, 0x0F, 0x00, 0x54, 0x57, 0x06, 0x01, 0xFA, 0x10, 0xA5, 0xD0, 0x43, 0x27, 0x2E, 0x84, - 0x49, 0x08, 0x95, 0x35, 0xCA, 0xF5, 0x6C, 0x0D, 0x29, 0x79, 0xEC, 0xB4, 0x71, 0x44, 0xC4, 0x2C, - 0xC6, 0x98, 0xF9, 0xA4, 0x72, 0xCE, 0xC4, 0x98, 0x0C, 0xB1, 0x86, 0x31, 0xB4, 0xFE, 0x4E, 0x33, - 0x15, 0x07, 0xDC, 0xAB, 0x2F, 0x56, 0x55, 0xB6, 0xAA, 0xAA, 0xE1, 0x55, 0x87, 0xEF, 0x4F, 0xA4, - 0x07, 0x8B, 0x5F, 0x63, 0x18, 0x91, 0xF1, 0x0E, 0x30, 0x1E, 0x65, 0x22, 0xBA, 0x3C, 0x9B, 0xCD, - 0x27, 0xD5, 0xBE, 0xF5, 0x37, 0xEB, 0x43, 0xEF, 0xC3, 0x6C, 0x52, 0xAB, 0xE3, 0x9C, 0x08, 0x17, - 0xB3, 0x66, 0x31, 0x6B, 0x84, 0xA5, 0xF3, 0x51, 0x75, 0x6E, 0xE4, 0x63, 0xA3, 0xC1, 0x98, 0x53, - 0x90, 0x8E, 0x4C, 0xEA, 0x89, 0x41, 0x44, 0xAB, 0x54, 0xB3, 0x72, 0x4F, 0x2C, 0x2C, 0x62, 0x8C, - 0x81, 0x04, 0xEA, 0xBA, 0xD3, 0x18, 0xA3, 0x35, 0x88, 0x84, 0x0C, 0xF0, 0xED, 0x77, 0xCF, 0xAF, - 0xDE, 0x5F, 0x1D, 0xDA, 0xDE, 0x56, 0xB5, 0xB6, 0xF9, 0xF0, 0xDE, 0x2B, 0xC4, 0x05, 0x91, 0x94, - 0x52, 0x55, 0x55, 0x5D, 0xE7, 0x5F, 0xBD, 0x7E, 0xDF, 0x4C, 0xEA, 0x94, 0x78, 0xB5, 0x39, 0x38, - 0x67, 0x09, 0xB1, 0xAA, 0x2B, 0x26, 0x49, 0x5D, 0xFF, 0xFA, 0xED, 0xCD, 0xA7, 0x1F, 0x3F, 0x9A, - 0x4C, 0x9A, 0xCD, 0x6E, 0xF7, 0xFE, 0x6A, 0x65, 0x08, 0x43, 0x0C, 0xFF, 0xE6, 0xEF, 0xFE, 0xF2, - 0xC9, 0xA3, 0x07, 0xB9, 0x94, 0x1C, 0x65, 0xF0, 0x82, 0x0D, 0xA2, 0x9C, 0x05, 0x9A, 0xC5, 0x59, - 0xF3, 0xFC, 0xC5, 0xEB, 0xFF, 0xF2, 0xDF, 0xBE, 0xBC, 0xB8, 0xB8, 0x70, 0xAE, 0x9A, 0x36, 0x8D, - 0x0F, 0xFE, 0xF6, 0x76, 0xE3, 0x7D, 0x88, 0xC1, 0xC7, 0xC4, 0xCD, 0xA4, 0x89, 0x29, 0xC5, 0xFD, - 0x81, 0x13, 0x5B, 0x67, 0x11, 0xE0, 0xF5, 0xAB, 0xB7, 0xD3, 0x69, 0x23, 0x00, 0x4D, 0x53, 0x6F, - 0x36, 0xBB, 0xCE, 0x07, 0xEB, 0x6C, 0x08, 0x69, 0xB7, 0xDB, 0xF7, 0xBD, 0xFF, 0xD5, 0x2F, 0xBF, - 0xF8, 0xE4, 0xE3, 0xC7, 0x2C, 0x50, 0x57, 0x2E, 0xC6, 0xB8, 0xDD, 0xF7, 0x87, 0xB6, 0x7B, 0x77, - 0x75, 0x13, 0x53, 0xEA, 0x7A, 0xFF, 0x93, 0xCF, 0x3F, 0x39, 0x5B, 0xCE, 0x9F, 0xFD, 0xF8, 0xFA, - 0x6C, 0xB9, 0x48, 0x49, 0x03, 0xAD, 0x99, 0x77, 0x30, 0x31, 0xCF, 0x66, 0xD3, 0xDD, 0xBE, 0xBD, - 0xBC, 0x3C, 0x7F, 0xFA, 0xE9, 0xE3, 0x7F, 0xFD, 0xED, 0x37, 0x7D, 0xBF, 0x77, 0xCE, 0xA4, 0xC4, - 0xDE, 0xA7, 0xAA, 0xB2, 0xCC, 0xC2, 0x1C, 0xDF, 0xBC, 0xBF, 0xB9, 0x3C, 0x5F, 0x3E, 0x7F, 0x79, - 0xFD, 0x77, 0xBF, 0xFE, 0xC9, 0x6C, 0x5A, 0x87, 0x14, 0x41, 0x84, 0x19, 0x62, 0x4A, 0x29, 0xA6, - 0x81, 0x25, 0xB8, 0xBC, 0x20, 0xE3, 0x5D, 0xEF, 0xC4, 0x20, 0x06, 0xE3, 0xD5, 0x72, 0xA2, 0xB6, - 0x4A, 0x8F, 0xEA, 0x23, 0xE2, 0x18, 0x21, 0xAC, 0x53, 0x49, 0xFB, 0xA0, 0x04, 0x8E, 0x7F, 0xE6, - 0x51, 0x69, 0x52, 0x81, 0x27, 0xB9, 0x18, 0xC0, 0x5A, 0xF3, 0xF5, 0xB7, 0x2F, 0xFF, 0xEF, 0x7F, - 0xFE, 0xDA, 0x55, 0x35, 0x73, 0x7A, 0xF2, 0xE8, 0xF2, 0x5F, 0x7E, 0xFF, 0xC3, 0xD5, 0xCD, 0x6A, - 0x3A, 0x99, 0x3C, 0xFD, 0xF4, 0xA3, 0xDD, 0xA1, 0x5F, 0xED, 0xFA, 0xCB, 0xF3, 0xE5, 0xBB, 0xAB, - 0xDB, 0xF3, 0xE5, 0xC2, 0x58, 0x32, 0xC6, 0xFC, 0xE2, 0x67, 0x3F, 0xD9, 0xED, 0xDB, 0x18, 0xE3, - 0xED, 0x6A, 0xFB, 0xF9, 0xE7, 0x1F, 0x1B, 0x63, 0xBE, 0xF9, 0xE3, 0x0F, 0x75, 0x5D, 0x7F, 0xF6, - 0xD9, 0x47, 0xD3, 0x49, 0xF3, 0xEE, 0xEA, 0xA6, 0xA9, 0x6B, 0xA2, 0x85, 0xB2, 0x9B, 0x1C, 0xA9, - 0xD6, 0x46, 0xF3, 0x5E, 0x1A, 0x80, 0x03, 0x80, 0x8C, 0x51, 0x92, 0x7E, 0x86, 0xB2, 0xE5, 0x61, - 0x0C, 0xC7, 0x6B, 0xED, 0x64, 0x05, 0x41, 0x09, 0x65, 0x0E, 0x38, 0xE3, 0x24, 0x66, 0x22, 0x85, - 0x71, 0x4C, 0xEE, 0x9E, 0x35, 0xDC, 0x6B, 0x7C, 0xF0, 0x89, 0x4E, 0x1C, 0x1C, 0x76, 0x03, 0x58, - 0x33, 0xFF, 0xF3, 0xFF, 0xF2, 0xBF, 0xEA, 0xE3, 0x19, 0x44, 0xCA, 0x85, 0x0C, 0xC7, 0x6C, 0xF5, - 0x5C, 0xCC, 0x5C, 0x7E, 0x85, 0x6C, 0x6C, 0xA2, 0x7A, 0x7F, 0xAC, 0xA1, 0x87, 0x67, 0xB3, 0xBA, - 0xB2, 0x21, 0xB1, 0xD1, 0x30, 0xBF, 0x88, 0xB5, 0x64, 0x48, 0xE9, 0x5C, 0xA4, 0xAA, 0x8C, 0x33, - 0x86, 0x25, 0x37, 0x5E, 0xD3, 0x0E, 0x6F, 0x89, 0x25, 0xC4, 0x24, 0xCC, 0xD6, 0x98, 0xE5, 0xB4, - 0xBE, 0x3C, 0x9B, 0x5C, 0x2E, 0xA7, 0xCE, 0xE5, 0x4E, 0x88, 0x7D, 0x4C, 0xFB, 0xD6, 0x13, 0xE2, - 0x7C, 0x52, 0x19, 0x63, 0xBA, 0x3E, 0xB4, 0xBD, 0xEF, 0xFA, 0xA0, 0xFF, 0xF7, 0xF1, 0x98, 0x5C, - 0xAD, 0xD9, 0x80, 0xEA, 0x36, 0x41, 0xD4, 0xD4, 0xA7, 0x21, 0xB8, 0x4E, 0x27, 0xE3, 0x3B, 0x1E, - 0x88, 0x41, 0x46, 0x35, 0xBE, 0x3E, 0x4C, 0xC9, 0xFD, 0x52, 0x01, 0x2E, 0xD3, 0x6A, 0x88, 0xCE, - 0x16, 0x93, 0xF9, 0xB4, 0x9E, 0x4F, 0xEB, 0xF3, 0xE5, 0xF4, 0x62, 0x39, 0x9B, 0x4D, 0x6B, 0xCC, - 0x2D, 0xC6, 0x40, 0xC9, 0xB8, 0xEB, 0xCA, 0x4E, 0x9A, 0xCA, 0x39, 0x6B, 0x8C, 0x76, 0x40, 0xC4, - 0xCA, 0x59, 0x25, 0xC6, 0x51, 0x52, 0xE9, 0x18, 0xB3, 0x7B, 0x8C, 0x75, 0x38, 0x58, 0xC8, 0x9A, - 0x9B, 0x9B, 0x95, 0xB5, 0x66, 0x3A, 0x9D, 0x18, 0x63, 0x08, 0xD1, 0x39, 0x4B, 0x48, 0x5D, 0x17, - 0x5E, 0xBC, 0x7C, 0xF3, 0xDD, 0xB7, 0x3F, 0x26, 0xE6, 0x66, 0xD2, 0x84, 0x10, 0xFB, 0x10, 0xBA, - 0xCE, 0x6F, 0xB6, 0x3B, 0x91, 0x21, 0xC1, 0x9D, 0x03, 0x73, 0x4A, 0x6C, 0xAC, 0x89, 0x21, 0x97, - 0x25, 0xC5, 0xC4, 0x5D, 0xEF, 0xEB, 0xBA, 0xEE, 0xDA, 0xFE, 0xD0, 0xF6, 0x57, 0x37, 0x2B, 0x8D, - 0x0C, 0xBE, 0x7C, 0xFD, 0x9E, 0x99, 0x9F, 0x3C, 0x79, 0xBC, 0xDE, 0x1C, 0xAE, 0x6F, 0xD6, 0xEF, - 0xAF, 0x56, 0x00, 0x7C, 0xBE, 0x9C, 0xF9, 0xDE, 0xF3, 0x40, 0x06, 0x30, 0xDA, 0x84, 0x59, 0xB9, - 0x95, 0x08, 0x7F, 0xF3, 0xE5, 0xB7, 0x5D, 0xEB, 0xA3, 0x36, 0x4A, 0x44, 0x7C, 0xFD, 0xEA, 0xED, - 0xED, 0x6A, 0x93, 0x24, 0xC5, 0xC8, 0x64, 0x08, 0x80, 0x40, 0xE0, 0x70, 0xE8, 0x0E, 0x6D, 0x17, - 0x42, 0x8C, 0x31, 0x71, 0x76, 0xD3, 0x4C, 0xA7, 0x4D, 0x9D, 0x62, 0xDA, 0xED, 0xDB, 0xEB, 0x9B, - 0xD5, 0xF5, 0xF5, 0x6D, 0xDB, 0x76, 0x4F, 0x3E, 0x7A, 0xF4, 0xF0, 0xE1, 0xC5, 0xF5, 0xED, 0x3A, - 0x84, 0x68, 0xAD, 0xB9, 0xB9, 0xDD, 0xDC, 0xDC, 0xAE, 0x9A, 0xA6, 0xFE, 0xE1, 0xF9, 0x2B, 0x66, - 0xAE, 0xEB, 0x1A, 0x00, 0xDF, 0x5F, 0xAD, 0x6E, 0x6F, 0xB7, 0xFB, 0xC3, 0x21, 0x26, 0x26, 0xC2, - 0xB3, 0xB3, 0xB9, 0x12, 0xD8, 0x2E, 0x97, 0x73, 0x55, 0xB7, 0x3F, 0x7D, 0xFA, 0x09, 0x80, 0xAC, - 0x37, 0x7B, 0x55, 0x4B, 0x25, 0xA1, 0x0C, 0x7D, 0x48, 0xD6, 0x98, 0x18, 0xE3, 0x62, 0x31, 0x7F, - 0xFB, 0xEE, 0xFA, 0xF3, 0x4F, 0x1F, 0x2E, 0x17, 0x13, 0xED, 0x95, 0xC5, 0xCC, 0x51, 0x9B, 0xA6, - 0x8C, 0xDE, 0x6E, 0x10, 0x12, 0xD1, 0xCC, 0xCB, 0xBB, 0x12, 0x72, 0x02, 0xF0, 0xCB, 0x42, 0xD0, - 0xB8, 0xEC, 0xE9, 0x9F, 0x4E, 0xD6, 0xF3, 0xFD, 0x85, 0x3D, 0x5E, 0xFC, 0x7F, 0x06, 0xA3, 0xA1, - 0x2E, 0x3D, 0x02, 0x44, 0xB4, 0xC6, 0x3C, 0x7B, 0xF5, 0xFE, 0x87, 0x57, 0xB7, 0x49, 0x60, 0x52, - 0xBB, 0x5F, 0xFE, 0xEC, 0xA9, 0x31, 0xE6, 0x66, 0xB5, 0x79, 0xF2, 0xE8, 0x61, 0xEF, 0xE3, 0xBB, - 0xAB, 0xD5, 0xFB, 0x9B, 0xDD, 0xD7, 0xDF, 0xBD, 0x52, 0x38, 0x3C, 0x99, 0xD4, 0x86, 0x28, 0xC6, - 0x34, 0x99, 0x34, 0xBB, 0xDD, 0xE1, 0xD5, 0x9B, 0xF7, 0xBB, 0xDD, 0x7E, 0xB1, 0x98, 0x09, 0xC3, - 0xA3, 0x87, 0x97, 0x31, 0xC6, 0xC3, 0xA1, 0x9B, 0xCF, 0xA7, 0xDA, 0x19, 0x63, 0xDF, 0x76, 0xE7, - 0x8B, 0xD9, 0xE5, 0xF9, 0x7C, 0x40, 0xE5, 0x30, 0x54, 0x37, 0x8C, 0x3E, 0xE3, 0xDF, 0xC6, 0x0B, - 0xE7, 0xFE, 0xB0, 0x9C, 0x94, 0x33, 0x0F, 0xA3, 0x37, 0x04, 0xD3, 0x60, 0x04, 0x57, 0x45, 0xD3, - 0x1A, 0xB2, 0x12, 0xCF, 0xFE, 0x98, 0xF1, 0xC8, 0xDC, 0x1F, 0xF3, 0x93, 0x71, 0x96, 0x51, 0x10, - 0x79, 0x30, 0x36, 0x89, 0xC8, 0xFC, 0xC7, 0xFF, 0xF4, 0x9F, 0x09, 0xC1, 0x64, 0x1E, 0x6D, 0x50, - 0x65, 0x66, 0x10, 0xB5, 0xF2, 0x61, 0x5C, 0x8C, 0x3A, 0x7A, 0x33, 0x20, 0x44, 0x10, 0x70, 0x96, - 0x08, 0xF1, 0x76, 0xD7, 0xB5, 0x7D, 0xE4, 0x9C, 0xBF, 0x04, 0x00, 0x90, 0x58, 0x34, 0xE5, 0x27, - 0x97, 0xBC, 0x8A, 0x4C, 0xEA, 0xAA, 0xA9, 0x2C, 0x02, 0x52, 0x6E, 0x62, 0x42, 0x80, 0x60, 0x8D, - 0xB6, 0x47, 0x4C, 0x21, 0x26, 0x1F, 0xE2, 0xBE, 0xF5, 0xEF, 0xD7, 0x87, 0xD5, 0xAE, 0x8F, 0x89, - 0x0F, 0x9D, 0xEF, 0x7C, 0x3C, 0xB4, 0x7E, 0xDF, 0xF5, 0xDB, 0x7D, 0x7F, 0xBB, 0xEB, 0xDA, 0x3E, - 0xE8, 0xD3, 0x57, 0xCE, 0x3A, 0x67, 0x88, 0xC0, 0x59, 0xE3, 0x9C, 0x25, 0x42, 0x53, 0x3A, 0x6C, - 0x0E, 0x21, 0xA7, 0xFB, 0x82, 0x32, 0x16, 0x97, 0x61, 0x5C, 0x78, 0x04, 0xAD, 0x07, 0x14, 0x96, - 0xB7, 0xCA, 0x23, 0xED, 0x91, 0x00, 0xE0, 0x44, 0x59, 0x58, 0x9D, 0x51, 0x9D, 0x65, 0xAC, 0xC6, - 0x1F, 0x80, 0x08, 0xAC, 0xB5, 0xBA, 0x96, 0x86, 0x48, 0x28, 0x11, 0x18, 0x43, 0x95, 0x33, 0x75, - 0x65, 0xB5, 0x39, 0x9B, 0x1A, 0x9B, 0xB9, 0xCA, 0xC7, 0x90, 0x52, 0x59, 0xB8, 0xBA, 0x7A, 0xF1, - 0xE3, 0xAB, 0x2F, 0x7F, 0xFB, 0xF5, 0x66, 0x7B, 0xF0, 0x3E, 0xC4, 0x10, 0x8D, 0x35, 0xEB, 0xF5, - 0xEE, 0xEB, 0x3F, 0x3E, 0xFB, 0xC3, 0x1F, 0x9F, 0xC5, 0x10, 0xCF, 0xCE, 0x97, 0x29, 0xC6, 0xDE, - 0x87, 0xAE, 0xF3, 0xDE, 0x87, 0xD5, 0x66, 0xD7, 0xF9, 0x18, 0x63, 0x22, 0x22, 0x2D, 0xF3, 0x64, - 0x01, 0xEF, 0x43, 0xD7, 0xFB, 0xDE, 0x7B, 0x22, 0x33, 0x9D, 0x4E, 0x67, 0xD3, 0x86, 0x0C, 0x75, - 0x9D, 0x47, 0x44, 0x63, 0xAC, 0x80, 0x5C, 0x5D, 0xDF, 0xB6, 0x87, 0x3E, 0xC6, 0xB4, 0xDE, 0xEE, - 0x13, 0xC3, 0xA3, 0x87, 0x17, 0x64, 0xEC, 0xFE, 0xD0, 0xBD, 0x79, 0x77, 0xDB, 0xFB, 0xFE, 0xC1, - 0xC5, 0x52, 0x05, 0x5A, 0xEE, 0x7C, 0xC0, 0x59, 0x1B, 0x63, 0x7C, 0xF6, 0xE2, 0xDD, 0xCD, 0xCD, - 0xA6, 0xEF, 0xDA, 0xAA, 0xAA, 0xB4, 0xB9, 0x72, 0xF0, 0xE1, 0xD0, 0x1E, 0x9A, 0xA6, 0x51, 0xD4, - 0x5C, 0x55, 0xCE, 0xFB, 0x28, 0x88, 0x75, 0x55, 0xB5, 0xBD, 0x37, 0x64, 0x42, 0x8C, 0x31, 0x25, - 0x41, 0x60, 0x91, 0x18, 0xC2, 0x6A, 0xB5, 0xB9, 0xBA, 0xBE, 0xD5, 0xD8, 0x59, 0x55, 0xB9, 0xED, - 0x6E, 0x7F, 0x71, 0x7E, 0x46, 0x86, 0x0E, 0x87, 0xAE, 0xAE, 0xAB, 0xA7, 0x9F, 0x3D, 0xF9, 0xF2, - 0xF7, 0xDF, 0xAD, 0xD7, 0x3B, 0x11, 0xF0, 0xBD, 0x0F, 0x31, 0x74, 0xBD, 0x8F, 0x31, 0x09, 0xF3, - 0x74, 0x52, 0x6B, 0x32, 0x5D, 0xD0, 0x14, 0x7B, 0x16, 0x6B, 0xED, 0xA7, 0x9F, 0x7C, 0xF4, 0xE8, - 0xC1, 0xC5, 0xF5, 0xF5, 0xAA, 0xEB, 0xFB, 0x8F, 0x9F, 0x3C, 0x3A, 0x5B, 0xCC, 0x0E, 0x6D, 0x1B, - 0x42, 0x14, 0x81, 0x14, 0x79, 0x3A, 0x9B, 0xFC, 0xCD, 0x5F, 0xFD, 0x6C, 0xBB, 0xDD, 0xBD, 0x7E, - 0x7B, 0x6D, 0x8C, 0xF9, 0xF9, 0x4F, 0x3F, 0xF5, 0x21, 0x4A, 0xC9, 0xCB, 0x2F, 0x6B, 0x36, 0x3B, - 0x4C, 0x86, 0x89, 0x06, 0x38, 0x5D, 0x45, 0xC3, 0x67, 0x58, 0x27, 0xC3, 0xB2, 0xC1, 0x63, 0xF6, - 0x03, 0x0E, 0xEA, 0x69, 0x40, 0x1C, 0x27, 0x9B, 0xE5, 0x07, 0xC5, 0x0F, 0xFE, 0xB4, 0x96, 0x44, - 0x44, 0x32, 0x88, 0x80, 0x95, 0x75, 0xDE, 0xFB, 0xFF, 0xF2, 0x8F, 0x5F, 0x5F, 0xDD, 0xEE, 0x36, - 0xEB, 0x7D, 0x88, 0xE1, 0xD0, 0x76, 0xC6, 0x98, 0xDB, 0xF5, 0xBE, 0xED, 0xBA, 0xD5, 0x7A, 0xF7, - 0xFA, 0xDD, 0xED, 0xBE, 0xF5, 0x7D, 0xEF, 0x57, 0xEB, 0x5D, 0x5D, 0x57, 0x67, 0xCB, 0x45, 0xEF, - 0x63, 0xEF, 0xC3, 0x62, 0x3E, 0x59, 0x6F, 0xF6, 0xDB, 0xED, 0x41, 0x04, 0x66, 0xB3, 0x29, 0x0B, - 0x37, 0xB5, 0xBB, 0x38, 0x5F, 0xBE, 0x7D, 0x77, 0xF5, 0xEE, 0xFD, 0x8D, 0x0F, 0xD1, 0x5A, 0xEB, - 0x7D, 0x40, 0x84, 0x2F, 0x3E, 0x7B, 0x94, 0x52, 0xD9, 0xBA, 0x4A, 0x58, 0x0F, 0x4A, 0xFE, 0xC1, - 0xA8, 0xEE, 0xE1, 0x54, 0xF3, 0x0E, 0x20, 0x6E, 0x50, 0x61, 0xE3, 0x71, 0x18, 0xDE, 0xF4, 0xB8, - 0x12, 0x06, 0x16, 0xC6, 0xA2, 0xC8, 0x10, 0x4B, 0x64, 0x1D, 0x20, 0x27, 0x02, 0xDC, 0x1D, 0xF9, - 0xFB, 0xF7, 0x1D, 0x96, 0xE4, 0xE0, 0xA3, 0xBC, 0x7F, 0x98, 0x35, 0x94, 0x95, 0x55, 0xCE, 0x0D, - 0x47, 0x44, 0xCC, 0xF6, 0xF3, 0x78, 0x0E, 0x04, 0x8E, 0x31, 0x3B, 0xD0, 0xC4, 0x0B, 0x94, 0x3E, - 0xA4, 0x98, 0xBA, 0x3E, 0x26, 0xBD, 0x02, 0xB3, 0xD6, 0x5A, 0x43, 0x64, 0xEE, 0xA3, 0x54, 0xC6, - 0x98, 0x8A, 0x9A, 0xDA, 0xD1, 0xC0, 0xCF, 0x27, 0xD1, 0xC7, 0x18, 0x52, 0x02, 0x44, 0x6B, 0xB0, - 0xF3, 0x31, 0x26, 0x26, 0xC4, 0x69, 0xC3, 0x02, 0xD0, 0xF9, 0xA8, 0x6C, 0x10, 0x2A, 0x3A, 0x0A, - 0xC1, 0x58, 0x40, 0xE9, 0xED, 0x75, 0x8C, 0x89, 0xC8, 0x18, 0x1F, 0x93, 0xA9, 0x2B, 0xAB, 0x55, - 0x2C, 0x44, 0xC8, 0x89, 0xBD, 0x4F, 0x54, 0x98, 0x57, 0xE1, 0x43, 0xA1, 0xE2, 0xF1, 0xCB, 0xDF, - 0x8F, 0xB3, 0x1C, 0x5F, 0x53, 0x01, 0xB6, 0xFA, 0x90, 0x55, 0xD3, 0x1B, 0x53, 0xD7, 0x38, 0x44, - 0x3C, 0x46, 0xF3, 0x07, 0x44, 0x06, 0x60, 0xE8, 0x4D, 0x77, 0xBC, 0x8E, 0x96, 0x52, 0x95, 0x7D, - 0x43, 0x1A, 0x22, 0xAD, 0x44, 0x9F, 0x4C, 0x2A, 0x61, 0x49, 0xCC, 0x90, 0xD8, 0x54, 0xEE, 0xEA, - 0xFA, 0xF6, 0x87, 0xEF, 0x9F, 0xD7, 0x75, 0x9D, 0x62, 0x7C, 0xF3, 0xE6, 0x5D, 0x55, 0xD5, 0xC6, - 0xD0, 0xBB, 0x77, 0xD7, 0xAE, 0xAE, 0x41, 0x24, 0x86, 0x18, 0x6C, 0x38, 0xB4, 0x5D, 0xD7, 0xF7, - 0xBB, 0x7D, 0x67, 0x8D, 0x25, 0x63, 0xA6, 0x4D, 0xB3, 0x5C, 0xCC, 0x43, 0xF0, 0x5D, 0x1F, 0x18, - 0x92, 0x24, 0x59, 0x2C, 0x16, 0x3E, 0x44, 0xEF, 0x3D, 0x00, 0xEC, 0x0F, 0x87, 0xBA, 0x3E, 0x5B, - 0x2C, 0xE6, 0x75, 0xE5, 0x44, 0x60, 0xBD, 0xD9, 0x31, 0x4B, 0xD3, 0xD4, 0x93, 0x69, 0x03, 0x00, - 0x9B, 0xCD, 0xF6, 0xC7, 0x97, 0x6F, 0x9A, 0xA6, 0xAA, 0x9C, 0x65, 0x4E, 0xDE, 0x87, 0xE7, 0x2F, - 0xDE, 0xFD, 0xF2, 0x2F, 0x9E, 0x8E, 0xA5, 0x50, 0x51, 0xA1, 0x20, 0xAC, 0xB7, 0xBB, 0xAF, 0xBF, - 0x79, 0xB6, 0xDD, 0x75, 0x31, 0x78, 0x6B, 0x1D, 0x8A, 0x70, 0x4A, 0x7D, 0x4A, 0x02, 0xA2, 0x09, - 0x68, 0xCE, 0x39, 0x63, 0x0C, 0xB3, 0xCC, 0x96, 0xB3, 0x19, 0x50, 0x55, 0xD9, 0x7A, 0xBD, 0x0D, - 0x21, 0xCE, 0x0D, 0xAD, 0x6E, 0xD7, 0xEB, 0xF5, 0x7E, 0xB7, 0xEB, 0xDA, 0xB6, 0x7D, 0xFC, 0xE8, - 0xC1, 0xD3, 0xCF, 0x3F, 0xBD, 0xB8, 0x38, 0xDB, 0x6C, 0xF7, 0xEF, 0xAF, 0x6E, 0x2E, 0xCE, 0xCF, - 0x9C, 0x33, 0x86, 0x8D, 0x30, 0x3C, 0x7A, 0x70, 0xB6, 0x5A, 0xEF, 0xAE, 0x6F, 0x6E, 0x7D, 0x8C, - 0xE7, 0xB3, 0xF9, 0xE5, 0xF9, 0xE2, 0xA3, 0x47, 0x97, 0xD7, 0x37, 0xAB, 0x18, 0xD2, 0xAB, 0x77, - 0x37, 0x87, 0xCE, 0x3B, 0x63, 0xFB, 0xBE, 0x47, 0x84, 0xF3, 0x8B, 0xC5, 0x2F, 0x7E, 0xF6, 0x79, - 0x62, 0xA9, 0x9C, 0x6D, 0xBB, 0xAE, 0xED, 0xFA, 0xBA, 0xAE, 0x2F, 0xCE, 0x96, 0x6F, 0xDE, 0x5D, - 0x13, 0x6A, 0x1D, 0x68, 0xD2, 0x68, 0x6C, 0x53, 0xD7, 0x3F, 0x7D, 0xFA, 0xF1, 0x7C, 0x36, 0xB1, - 0xD6, 0xF4, 0x3E, 0x00, 0x40, 0x8A, 0x5C, 0x92, 0x1F, 0x29, 0x97, 0xEA, 0x21, 0x1A, 0x32, 0x80, - 0xA7, 0x96, 0xCE, 0x78, 0x39, 0x8D, 0x17, 0x2D, 0x16, 0x81, 0x84, 0x0F, 0x7D, 0xE4, 0x9E, 0x6D, - 0xF5, 0x67, 0x0E, 0x3E, 0x39, 0x05, 0xB2, 0xB1, 0x96, 0x5D, 0x3A, 0x44, 0x44, 0x90, 0xFD, 0x0B, - 0xBF, 0xF9, 0xFA, 0xF9, 0xDB, 0xEB, 0x6D, 0x08, 0x71, 0xD2, 0xD4, 0x95, 0xB3, 0xDF, 0x3F, 0x7F, - 0x63, 0xCC, 0xFB, 0x9F, 0x7F, 0xF1, 0xE9, 0xC3, 0x8B, 0xB3, 0x6F, 0xBE, 0x7F, 0xF1, 0xFC, 0xE5, - 0x9B, 0xA7, 0x9F, 0x3D, 0x51, 0x54, 0x5B, 0x55, 0xD5, 0xD5, 0xF5, 0x6A, 0x36, 0x9D, 0x4C, 0x27, - 0xCD, 0x8F, 0x2F, 0xDE, 0xBE, 0x7B, 0x7F, 0xBB, 0xD9, 0xED, 0x2F, 0xCF, 0xCF, 0x10, 0xF1, 0xE6, - 0x66, 0xED, 0xBD, 0x3F, 0x5B, 0x2E, 0x7E, 0xF5, 0x8B, 0x2F, 0x6E, 0xD7, 0x9B, 0xFD, 0xBE, 0xBB, - 0x5D, 0x6D, 0x10, 0xF1, 0xFA, 0x76, 0x1B, 0x4B, 0xAE, 0xBF, 0x14, 0xCB, 0x4E, 0x8E, 0xF9, 0xDB, - 0xF7, 0xF2, 0xA9, 0x46, 0x43, 0x34, 0xD8, 0x94, 0x83, 0x43, 0xE6, 0xCF, 0x8C, 0xCC, 0x89, 0xF1, - 0xAE, 0x0B, 0x68, 0xA4, 0xF1, 0x10, 0xF1, 0x38, 0xC8, 0xF7, 0x35, 0xD4, 0x70, 0x62, 0x81, 0x1D, - 0xC7, 0xB4, 0xD8, 0xE2, 0x3C, 0x3D, 0xDE, 0xCB, 0x02, 0xA2, 0x6A, 0xCB, 0xD1, 0x63, 0xE5, 0x89, - 0x49, 0x20, 0xC7, 0x1A, 0xB5, 0xE1, 0xBF, 0xF9, 0xD2, 0x90, 0x04, 0x24, 0x30, 0x91, 0x9A, 0x93, - 0x38, 0xA4, 0x0E, 0x48, 0x61, 0xB4, 0x23, 0x42, 0x22, 0xF0, 0x21, 0xC5, 0x94, 0xB4, 0xC3, 0x9B, - 0xF2, 0x8E, 0x11, 0xE1, 0xD9, 0xAC, 0x11, 0x80, 0x6B, 0xBF, 0xF7, 0x91, 0x0D, 0x61, 0x4A, 0xE2, - 0x53, 0xEA, 0x7D, 0x32, 0x5A, 0x73, 0xC3, 0x6C, 0x89, 0x42, 0x14, 0x1F, 0x19, 0x49, 0x23, 0x00, - 0xB9, 0xCC, 0x50, 0x99, 0x63, 0x17, 0xB3, 0x46, 0x01, 0x02, 0xB3, 0x78, 0x1F, 0x7C, 0x48, 0x95, - 0x33, 0x55, 0x65, 0x45, 0xA0, 0x54, 0x73, 0xDE, 0x41, 0xB9, 0xF7, 0x77, 0x15, 0xFD, 0xD3, 0x49, - 0xF2, 0xCB, 0x58, 0xDF, 0x0F, 0xC0, 0x18, 0x75, 0x7C, 0xCA, 0xDC, 0x8E, 0x76, 0xF2, 0xE3, 0x34, - 0xE3, 0xA8, 0xAB, 0xE0, 0xF8, 0x9A, 0xE5, 0xBE, 0xA0, 0x80, 0x51, 0xEF, 0xAC, 0xDE, 0x9F, 0xF5, - 0x66, 0xF7, 0xD5, 0x57, 0x7F, 0xB4, 0xD6, 0x0D, 0x25, 0xD9, 0xC1, 0x87, 0x9E, 0x93, 0x21, 0xF4, - 0x6D, 0xCB, 0xCC, 0xEB, 0xD5, 0x9A, 0x45, 0x62, 0xE4, 0xDE, 0x7B, 0x25, 0xFF, 0x78, 0x70, 0x79, - 0x51, 0x55, 0x75, 0x62, 0x69, 0x26, 0xD3, 0xF3, 0xF3, 0x6A, 0xB7, 0xDB, 0x5F, 0xDD, 0xAC, 0x5C, - 0xE5, 0xAC, 0xB5, 0xCC, 0x42, 0x84, 0x87, 0xB6, 0x7B, 0xE3, 0xC3, 0x64, 0xD2, 0x4C, 0x27, 0xF5, - 0x6C, 0x36, 0x35, 0xC6, 0xCC, 0x26, 0x8D, 0x35, 0x64, 0x8D, 0x61, 0xE1, 0xC5, 0x62, 0xC1, 0x22, - 0xEB, 0xF5, 0x0E, 0x09, 0xAD, 0xC1, 0xB3, 0xE5, 0x3C, 0xA5, 0xB4, 0xD9, 0x1E, 0xCE, 0x97, 0xF3, - 0x10, 0x23, 0x33, 0x1B, 0x43, 0xEB, 0xCD, 0xDE, 0xFB, 0x70, 0x7D, 0xBB, 0x7E, 0xF9, 0xFA, 0xDA, - 0x87, 0x70, 0xB6, 0x5C, 0x78, 0x22, 0x57, 0x31, 0x82, 0x52, 0x5C, 0xA4, 0xD9, 0xC5, 0xCC, 0x59, - 0x7B, 0x75, 0x75, 0xD3, 0x75, 0x7D, 0xDD, 0xD4, 0xC6, 0x28, 0x43, 0x00, 0xC4, 0xC4, 0x9F, 0x7E, - 0xFA, 0x64, 0xB3, 0xD9, 0x9D, 0x9F, 0x2F, 0x37, 0x17, 0xE7, 0x2F, 0x5F, 0xBE, 0x9D, 0x4C, 0x9B, - 0xBF, 0xFA, 0xF5, 0xCF, 0xE7, 0xF3, 0xE9, 0x6A, 0xBD, 0x5D, 0x6F, 0x76, 0x95, 0xB3, 0x3F, 0x79, - 0xFA, 0xB1, 0x75, 0xCE, 0x1A, 0xF3, 0xFD, 0xB3, 0x97, 0xAB, 0xF5, 0x6E, 0x3A, 0x6D, 0xFE, 0xF8, - 0xED, 0xF3, 0xDD, 0xBE, 0x9D, 0x4E, 0xAA, 0x7F, 0xFB, 0x77, 0x7F, 0x35, 0x9F, 0x4D, 0xFB, 0xBE, - 0xDB, 0x6E, 0xF7, 0x00, 0xF0, 0xE0, 0x62, 0xEE, 0x43, 0xE2, 0x04, 0x8B, 0xC5, 0x64, 0xBB, 0x3B, - 0x4C, 0x27, 0xCD, 0x67, 0x9F, 0x3C, 0x0A, 0x31, 0x39, 0x6B, 0xBF, 0xFC, 0xFA, 0xFB, 0x67, 0x2F, - 0xDE, 0x3C, 0x7A, 0x70, 0x71, 0xBB, 0xDE, 0xBC, 0x7C, 0xF5, 0x6E, 0xBF, 0x6F, 0xD5, 0xAB, 0xF0, - 0xC9, 0xC7, 0x8F, 0x43, 0x08, 0xBF, 0xFF, 0xC3, 0x0F, 0x97, 0x17, 0x8B, 0xBF, 0xFD, 0xF5, 0x5F, - 0xFC, 0xE1, 0xDB, 0xE7, 0x6D, 0xE7, 0x27, 0xB5, 0xEB, 0x39, 0x16, 0x3F, 0x94, 0x18, 0x32, 0x28, - 0x18, 0x25, 0xE9, 0x74, 0x52, 0xB1, 0x6B, 0xEE, 0x6F, 0x66, 0x78, 0xCF, 0xD9, 0x3C, 0x4C, 0xE9, - 0x09, 0xDF, 0xC1, 0x78, 0xAE, 0xE5, 0x8E, 0x03, 0xE8, 0x78, 0xC0, 0xC9, 0x6E, 0x5A, 0x44, 0x08, - 0x07, 0xBF, 0x33, 0x22, 0xE6, 0xD2, 0x31, 0x80, 0xCA, 0xB9, 0xAF, 0xBE, 0x7B, 0xF1, 0xD5, 0xB7, - 0xAF, 0x36, 0xDB, 0xFD, 0xD9, 0x72, 0xF1, 0xF0, 0xE1, 0x79, 0x7B, 0xE8, 0x8C, 0x31, 0x17, 0x67, - 0x8B, 0xF9, 0x74, 0xB2, 0xD9, 0x1D, 0x12, 0xCB, 0x74, 0x3A, 0xBD, 0x5D, 0x6D, 0x8D, 0x35, 0x75, - 0x55, 0x39, 0x6B, 0x26, 0x93, 0xC5, 0x6A, 0xB5, 0x5D, 0x6F, 0x77, 0xEB, 0xF5, 0xEE, 0xFA, 0x76, - 0x25, 0x00, 0x21, 0xA6, 0xCD, 0x76, 0xF7, 0xF4, 0xD3, 0xC7, 0x7D, 0x1F, 0xDF, 0xBD, 0xBF, 0x59, - 0xAD, 0x36, 0x9F, 0x7E, 0xFC, 0x68, 0x3E, 0x9D, 0xBE, 0x79, 0x77, 0xDD, 0x76, 0x7E, 0xBB, 0xDD, - 0x0F, 0xFE, 0xF5, 0x12, 0x5D, 0x28, 0x39, 0x70, 0x45, 0x8D, 0x8C, 0x47, 0x63, 0x78, 0x05, 0xC9, - 0x69, 0xBD, 0x43, 0x60, 0xF0, 0x78, 0x00, 0xDC, 0xD5, 0xE0, 0xE3, 0x31, 0x1C, 0x7E, 0x16, 0x38, - 0x2D, 0x2C, 0xBF, 0x63, 0x05, 0x8C, 0x16, 0x17, 0x8E, 0x0C, 0xC9, 0xE1, 0xEE, 0xA3, 0xB4, 0xDB, - 0x3B, 0xEB, 0x0B, 0x00, 0x98, 0xD9, 0x1E, 0x0F, 0xCD, 0x3D, 0xF2, 0x80, 0x47, 0xF1, 0x57, 0x10, - 0x7D, 0x6E, 0x80, 0xC2, 0x16, 0x42, 0x99, 0x6A, 0xFA, 0x88, 0x92, 0x9C, 0x21, 0x93, 0x0B, 0x0A, - 0x00, 0x50, 0x84, 0xC1, 0x1A, 0xB2, 0x96, 0x9C, 0xA1, 0xD6, 0xA7, 0x7D, 0xD7, 0x59, 0x42, 0x61, - 0xA9, 0x2A, 0x40, 0x94, 0xDA, 0xD9, 0xCA, 0x19, 0x00, 0x68, 0x3B, 0x0F, 0x80, 0xB3, 0xC6, 0x59, - 0x43, 0x3E, 0xA6, 0x3E, 0xE4, 0x2D, 0x82, 0x01, 0x52, 0xE4, 0x8E, 0x13, 0x02, 0x34, 0x95, 0x01, - 0xC0, 0x98, 0x94, 0x88, 0x03, 0x0C, 0x51, 0x62, 0x26, 0xB2, 0x31, 0xA6, 0xDD, 0xBE, 0xD7, 0xC8, - 0x7A, 0xDF, 0xAB, 0xF1, 0x61, 0x53, 0x62, 0xE7, 0xAC, 0x31, 0xB9, 0x06, 0x6D, 0x3C, 0x46, 0x63, - 0x5B, 0xFA, 0x64, 0x7A, 0x4E, 0x46, 0x7F, 0x2C, 0x6A, 0xC3, 0xE6, 0x3C, 0x78, 0x3F, 0x4E, 0x64, - 0xF7, 0x64, 0xB2, 0xA1, 0x40, 0xB9, 0xE1, 0xFB, 0x93, 0x24, 0x1A, 0x11, 0x60, 0x4E, 0x55, 0xE5, - 0x36, 0xEB, 0xDD, 0x3F, 0xFE, 0xD3, 0x97, 0xDB, 0x7D, 0xDF, 0x34, 0xD5, 0xA1, 0xF5, 0x95, 0x33, - 0x37, 0xB7, 0x6B, 0x11, 0x68, 0x26, 0xB5, 0x08, 0x20, 0xD1, 0x6E, 0x77, 0xD0, 0x50, 0xA0, 0x00, - 0x28, 0xB2, 0x30, 0xC6, 0xBC, 0x7F, 0x7F, 0x6D, 0x8C, 0xF5, 0xBD, 0x27, 0x43, 0x8B, 0xF9, 0xEC, - 0xE1, 0xA3, 0x07, 0xC6, 0xD8, 0x9B, 0xDB, 0xF5, 0x7C, 0x36, 0x3B, 0xB4, 0xDD, 0x6E, 0xB7, 0x9F, - 0x4E, 0x9A, 0xC3, 0xA1, 0xED, 0xBA, 0xDE, 0xFB, 0x69, 0x8C, 0x8C, 0x39, 0x76, 0x2C, 0xAB, 0xCD, - 0x76, 0x36, 0x9D, 0x02, 0xC0, 0x6E, 0xB7, 0x0F, 0xDE, 0xC7, 0x98, 0x3E, 0x7A, 0xFC, 0x00, 0x44, - 0x9A, 0xBA, 0xFA, 0xE1, 0xC7, 0x37, 0x93, 0xA6, 0x7A, 0xFC, 0xF0, 0x62, 0x36, 0x6D, 0xFE, 0xF8, - 0xDD, 0x8B, 0x67, 0x2F, 0xDE, 0x57, 0xB5, 0xE3, 0x94, 0xBC, 0xF7, 0x64, 0x0D, 0x11, 0xCD, 0xE7, - 0xD3, 0x9B, 0x9B, 0x5B, 0x63, 0x2C, 0x89, 0x34, 0x93, 0x9A, 0x45, 0xDA, 0xAE, 0x0B, 0x41, 0xBB, - 0x34, 0x04, 0x4E, 0xCC, 0x02, 0xCE, 0xB9, 0x8F, 0x9F, 0x3C, 0x5A, 0xCC, 0x67, 0x8B, 0xF9, 0xCC, - 0x87, 0xF0, 0xD9, 0x67, 0x4F, 0x3E, 0x7F, 0xFA, 0xB1, 0xF7, 0x71, 0xBB, 0x3F, 0xBC, 0x7D, 0x77, - 0xFB, 0xEC, 0xF9, 0x4B, 0x22, 0xFC, 0xD9, 0x17, 0x4F, 0x3F, 0x7A, 0xFC, 0x70, 0xBF, 0x6F, 0x9F, - 0xBF, 0x7C, 0x53, 0x39, 0xFB, 0xF1, 0x93, 0x87, 0xCF, 0x7E, 0x7C, 0xFD, 0xFB, 0xAF, 0xBF, 0x9B, - 0xCF, 0x66, 0x3F, 0xFF, 0xD9, 0xD3, 0xBE, 0xF7, 0x8F, 0x1F, 0x5D, 0x5E, 0x5F, 0x5D, 0x13, 0x91, - 0x2A, 0xAC, 0xE5, 0x7C, 0x62, 0x8C, 0xB1, 0xD6, 0x4E, 0x1A, 0x57, 0x57, 0xF6, 0xF9, 0x8B, 0x37, - 0x95, 0xB3, 0x17, 0x17, 0x67, 0xBF, 0xFA, 0xF9, 0xE7, 0x7D, 0x1F, 0xAE, 0x6E, 0xD7, 0xEF, 0xAF, - 0x6F, 0xC9, 0x90, 0x73, 0x56, 0xE9, 0x36, 0xF7, 0x87, 0xB6, 0xEF, 0x7A, 0x20, 0xB4, 0x86, 0x6E, - 0x57, 0xBB, 0xA6, 0xA9, 0xBF, 0xFC, 0xE6, 0xF9, 0xBF, 0xFF, 0xBB, 0x5F, 0x89, 0xF4, 0xC3, 0xF8, - 0x33, 0x88, 0x21, 0x63, 0x88, 0x62, 0xE2, 0xC4, 0x49, 0x94, 0xE1, 0x5D, 0xEE, 0x38, 0xB9, 0x4E, - 0x22, 0x3F, 0x38, 0xB6, 0x2B, 0x3F, 0x64, 0x43, 0x8D, 0x97, 0xD3, 0x9F, 0x07, 0x65, 0x83, 0x44, - 0x8D, 0x96, 0x6B, 0x96, 0x2A, 0xED, 0x4D, 0x26, 0x22, 0x88, 0xD4, 0xD4, 0x36, 0xC6, 0xB8, 0xDE, - 0x77, 0xEA, 0x71, 0xFE, 0xFE, 0xD9, 0x6B, 0x16, 0x39, 0x5B, 0xCC, 0x17, 0xF3, 0xE9, 0x76, 0xDF, - 0xFA, 0x90, 0x76, 0xFB, 0xC3, 0xE3, 0x47, 0x0F, 0x6E, 0xD7, 0xDB, 0xBF, 0xFF, 0x1F, 0xFF, 0x2D, - 0x11, 0xFE, 0xF8, 0xF2, 0xDD, 0x9B, 0xB7, 0xD7, 0x3E, 0x04, 0x04, 0xDA, 0xEC, 0xF6, 0x2C, 0x62, - 0x8D, 0xD9, 0xEE, 0xF6, 0x93, 0xA6, 0xBA, 0xB9, 0x5D, 0xAF, 0x56, 0xBB, 0x8B, 0xCB, 0xB3, 0x18, - 0xE2, 0x6F, 0x7E, 0xF7, 0x4D, 0x88, 0xE9, 0xF2, 0xE2, 0xAC, 0xEF, 0x7B, 0x98, 0xD7, 0x1A, 0x5B, - 0xCB, 0x8F, 0x91, 0x1F, 0x0F, 0x10, 0x47, 0xCB, 0x1E, 0x60, 0xAC, 0xCE, 0xEE, 0xBE, 0xA0, 0x68, - 0x46, 0xD4, 0x07, 0x87, 0xE2, 0xE4, 0xA3, 0x07, 0xB0, 0x28, 0x0F, 0x61, 0xC9, 0xC4, 0x1D, 0x29, - 0xA0, 0x93, 0x8B, 0x8C, 0x11, 0xAE, 0x42, 0x0D, 0x1E, 0xB5, 0x13, 0x12, 0xF9, 0xB0, 0xCD, 0x8B, - 0x88, 0xE6, 0x3F, 0xFE, 0xA7, 0xFF, 0x0C, 0x00, 0x48, 0xC4, 0xA0, 0x1C, 0x3E, 0xC0, 0x50, 0x40, - 0x17, 0x64, 0xED, 0x3B, 0x7E, 0x56, 0x63, 0x68, 0xDA, 0xD8, 0xCA, 0x19, 0x10, 0xB1, 0x16, 0x27, - 0x95, 0x45, 0x84, 0xCA, 0x92, 0x3E, 0x92, 0x31, 0xB9, 0x19, 0x7A, 0x5D, 0x1B, 0x24, 0x0C, 0x31, - 0xA9, 0x2F, 0xBC, 0xAA, 0xCC, 0x7C, 0x5A, 0x3D, 0x38, 0x9B, 0x3D, 0x38, 0x9B, 0x55, 0x95, 0x09, - 0x31, 0x85, 0x24, 0xCB, 0x59, 0xAD, 0x65, 0xCF, 0x02, 0x39, 0xDB, 0x3E, 0x31, 0x87, 0xC4, 0x21, - 0x66, 0x5E, 0x3A, 0xED, 0x23, 0xE9, 0x8C, 0xE9, 0x03, 0xAB, 0xB2, 0xBB, 0xD9, 0x75, 0xBB, 0xD6, - 0x83, 0xC8, 0x7A, 0xD7, 0x1E, 0x5A, 0xDF, 0xFB, 0x88, 0x84, 0xC5, 0xCC, 0xCC, 0x34, 0xB3, 0x5A, - 0x38, 0x45, 0x04, 0x6A, 0xFB, 0xC4, 0x58, 0x78, 0x87, 0x01, 0xD4, 0xB8, 0x18, 0x20, 0xE7, 0x30, - 0x0A, 0x03, 0x04, 0x2B, 0x6D, 0xAA, 0xF0, 0x3E, 0xF2, 0x3A, 0x11, 0xD6, 0x61, 0xB7, 0x39, 0xD9, - 0xBA, 0xC7, 0xFF, 0x8E, 0xE7, 0x49, 0x44, 0x98, 0xC5, 0x5A, 0xF3, 0xFA, 0xCD, 0xFB, 0xFF, 0xF3, - 0xFF, 0xFA, 0xA7, 0xB7, 0xEF, 0xD7, 0x49, 0x64, 0xB5, 0xDE, 0xB6, 0x7D, 0xEC, 0x7C, 0x58, 0xDD, - 0x6E, 0xBB, 0xCE, 0x33, 0x40, 0x08, 0xA9, 0x8F, 0xB1, 0xEB, 0xFD, 0xA1, 0xED, 0x42, 0x48, 0x7D, - 0xDF, 0xCF, 0x17, 0x73, 0x2D, 0x6F, 0x44, 0xA4, 0xBE, 0x0F, 0x20, 0x10, 0x13, 0x6F, 0xF7, 0x87, - 0xCD, 0x66, 0x4B, 0x48, 0x8B, 0xE5, 0x1C, 0x00, 0x67, 0xD3, 0x26, 0x86, 0xE8, 0x63, 0xB8, 0xB8, - 0x38, 0x03, 0x80, 0xE9, 0xA4, 0x21, 0xA2, 0xED, 0x76, 0xB7, 0xDD, 0xEE, 0x45, 0xA4, 0xEB, 0xFD, - 0x6E, 0x7B, 0xD8, 0xEE, 0x76, 0x21, 0x44, 0x67, 0xAD, 0xB5, 0xD6, 0x10, 0x59, 0x6B, 0xE6, 0xB3, - 0x89, 0x08, 0xAC, 0x36, 0xBB, 0xC3, 0xBE, 0xED, 0xBB, 0xEE, 0xD9, 0x8B, 0xF7, 0x31, 0xC5, 0xC5, - 0x7C, 0x66, 0xAD, 0x61, 0x66, 0x6B, 0xAC, 0xB5, 0xA6, 0x69, 0x2A, 0x63, 0x0C, 0x12, 0x56, 0xCE, - 0x85, 0x98, 0xDA, 0xAE, 0x45, 0xA4, 0xF3, 0x8B, 0x33, 0x22, 0x9A, 0x4D, 0x27, 0x4F, 0x3E, 0x7A, - 0xFC, 0xE4, 0xF1, 0xC3, 0x47, 0x0F, 0x2F, 0x66, 0xD3, 0x49, 0x4C, 0x1C, 0x7C, 0x00, 0x40, 0x6B, - 0x8C, 0xF7, 0x7E, 0xB3, 0xDD, 0x75, 0xBD, 0x7F, 0x7F, 0x75, 0x1B, 0x63, 0xFA, 0xC9, 0xE7, 0x9F, - 0x58, 0x6B, 0x5E, 0xBE, 0x7E, 0x7B, 0x71, 0xBE, 0x9C, 0xCD, 0xA6, 0xC6, 0xD0, 0xBB, 0xF7, 0xB7, - 0xBF, 0xF9, 0xDD, 0x1F, 0x45, 0x24, 0xA6, 0x34, 0x9B, 0x4D, 0xEA, 0xCA, 0xB5, 0x6D, 0xDF, 0x34, - 0x6E, 0xB3, 0xD9, 0xE9, 0x32, 0x52, 0x02, 0x0C, 0x63, 0x68, 0x36, 0x9D, 0x4C, 0x67, 0xD3, 0x10, - 0x22, 0x21, 0x7A, 0x1F, 0x1F, 0x3F, 0xBA, 0xFC, 0xEB, 0xBF, 0xFC, 0x02, 0x01, 0x98, 0x65, 0x3E, - 0x9B, 0x5E, 0x9C, 0x2F, 0x1F, 0x3F, 0xBC, 0x7C, 0xFC, 0xF8, 0x72, 0x7F, 0x68, 0x53, 0xE2, 0x27, - 0x8F, 0x1F, 0xEE, 0x0E, 0x2D, 0x11, 0x59, 0x6B, 0x5F, 0xBD, 0xB9, 0xFA, 0xF9, 0x4F, 0x3F, 0x1E, - 0xD6, 0x52, 0x8E, 0x90, 0x30, 0x83, 0x80, 0x51, 0x4A, 0xC8, 0xD2, 0x60, 0x05, 0x47, 0xEE, 0xB0, - 0xF1, 0x14, 0x53, 0x29, 0xFC, 0x18, 0x44, 0xE5, 0xE4, 0x98, 0xFB, 0xEB, 0xEA, 0x44, 0x36, 0xC6, - 0xC7, 0xEB, 0x0F, 0xC6, 0x18, 0xF5, 0x46, 0x0F, 0xFE, 0x23, 0x43, 0x59, 0xE0, 0xEA, 0xAA, 0x22, - 0xC2, 0xCD, 0xFE, 0xF0, 0xFB, 0x6F, 0x7E, 0xDC, 0xEC, 0x7B, 0x6B, 0xED, 0x7A, 0xBB, 0x9B, 0x34, - 0xD5, 0x4F, 0x3E, 0x7B, 0xFC, 0xC5, 0xE7, 0x4F, 0x00, 0xF0, 0xDD, 0xD5, 0x6A, 0xB5, 0xDE, 0x4E, - 0x9A, 0x66, 0xB9, 0x98, 0xDD, 0xAE, 0x36, 0xAE, 0x72, 0x2F, 0x5F, 0xBD, 0xEB, 0xFA, 0x90, 0x52, - 0x7A, 0x7F, 0x75, 0x9B, 0x52, 0x5A, 0xAD, 0x37, 0xEA, 0xC4, 0x35, 0x06, 0x27, 0x4D, 0xDD, 0x75, - 0xBE, 0xAE, 0x2B, 0x6B, 0xCC, 0x62, 0x31, 0xB3, 0xD6, 0xAE, 0xD7, 0x9B, 0xC4, 0x1C, 0x7C, 0x00, - 0xA4, 0xBF, 0xFE, 0xC5, 0xD3, 0x49, 0x53, 0x0D, 0x06, 0x1A, 0x0E, 0xC8, 0xF0, 0xF8, 0x76, 0x1F, - 0xF6, 0x32, 0x03, 0x00, 0x96, 0xFE, 0xAA, 0xF7, 0x41, 0xD3, 0x7D, 0x65, 0x2D, 0x22, 0xA5, 0xDC, - 0x1F, 0x45, 0xEF, 0x37, 0xDA, 0x0F, 0x4E, 0x76, 0xFD, 0x93, 0x15, 0x34, 0xE8, 0xAF, 0xE1, 0xDF, - 0x61, 0xA6, 0xEE, 0x4E, 0x0D, 0x29, 0xFF, 0xDC, 0xB0, 0xE4, 0xEE, 0x2F, 0x5A, 0x01, 0x38, 0x56, - 0xCA, 0x8B, 0x08, 0x33, 0x20, 0xB0, 0x76, 0xC5, 0x54, 0xFD, 0x4D, 0x84, 0x8D, 0xAB, 0x94, 0x25, - 0x71, 0xDE, 0x54, 0xCC, 0x72, 0x80, 0x88, 0x00, 0x4A, 0x78, 0xAF, 0xB5, 0x93, 0x8F, 0x2F, 0xE7, - 0x67, 0x8B, 0x89, 0x35, 0x34, 0x9D, 0xD4, 0xCC, 0x1C, 0x77, 0x89, 0x10, 0xE7, 0x8D, 0xF3, 0x31, - 0x1D, 0xBA, 0xA0, 0x17, 0x27, 0xC4, 0x10, 0x25, 0x84, 0x52, 0xB1, 0x20, 0xA8, 0xE9, 0x01, 0xCE, - 0x9A, 0xC8, 0x1C, 0x12, 0x13, 0x41, 0x4A, 0x82, 0x80, 0x3E, 0xA6, 0xCD, 0xA1, 0x5F, 0xCE, 0xEA, - 0xC2, 0x7F, 0xC0, 0x31, 0x61, 0x4C, 0x8C, 0x88, 0x86, 0x08, 0x10, 0x4C, 0xA2, 0xCA, 0x82, 0x31, - 0x0E, 0x11, 0x75, 0x4D, 0x7A, 0x1F, 0x9D, 0xB3, 0xCC, 0xAC, 0x79, 0x6D, 0xD6, 0x82, 0x29, 0xE4, - 0xCD, 0x63, 0x68, 0x06, 0xF7, 0x0C, 0x84, 0xFB, 0x9F, 0x0F, 0x5A, 0x22, 0x27, 0x26, 0xC6, 0xD8, - 0x68, 0x1D, 0x6F, 0x23, 0xC6, 0x50, 0x4A, 0xFC, 0xCF, 0xFF, 0xFA, 0x87, 0xAB, 0xDB, 0xAD, 0xB5, - 0x86, 0x53, 0x02, 0x81, 0xAA, 0x76, 0xEB, 0xCD, 0xB6, 0xF5, 0x3D, 0x01, 0xFA, 0x55, 0x34, 0xD6, - 0xA4, 0x98, 0x2E, 0x2E, 0xCF, 0x01, 0x70, 0xBD, 0xDE, 0x32, 0x4B, 0x08, 0x71, 0xB9, 0x5C, 0x10, - 0xD1, 0x76, 0xBB, 0xAF, 0x9B, 0xFA, 0xE2, 0xE2, 0x6C, 0x75, 0xBB, 0xDE, 0x1F, 0x0E, 0x22, 0xE0, - 0x43, 0x08, 0x3E, 0x3A, 0xE7, 0x98, 0xF9, 0x2F, 0xBE, 0xF8, 0xFC, 0xC5, 0xCB, 0xD7, 0x22, 0xFC, - 0x93, 0xCF, 0x3F, 0xF5, 0x3E, 0xBC, 0x7A, 0xFD, 0x36, 0x84, 0xD0, 0xF7, 0xC1, 0x7B, 0xDF, 0x75, - 0xDD, 0x6C, 0x36, 0x5B, 0x2E, 0x17, 0x8B, 0xC5, 0x8C, 0x53, 0x8A, 0x31, 0x2E, 0x97, 0xD3, 0xB3, - 0xE5, 0x9C, 0x0C, 0xF5, 0xBD, 0x5F, 0x4C, 0x1B, 0x4E, 0xE9, 0xD9, 0xB3, 0x57, 0x3E, 0x70, 0x33, - 0x99, 0x80, 0x88, 0x73, 0x76, 0x31, 0x9F, 0x01, 0x40, 0x33, 0xA9, 0x8D, 0x31, 0x44, 0x33, 0x24, - 0xDC, 0x6C, 0x76, 0xC6, 0x98, 0x87, 0x0F, 0x1E, 0x10, 0xA1, 0x0F, 0xF1, 0xE9, 0x67, 0x9F, 0x20, - 0xA2, 0x32, 0xDE, 0x68, 0xF2, 0xC4, 0xD9, 0x7C, 0x7A, 0xE0, 0xB4, 0x6F, 0xBB, 0xDD, 0x6E, 0xAF, - 0x11, 0xCF, 0x94, 0xD2, 0xE1, 0xD0, 0x8A, 0xC8, 0xE1, 0xD0, 0x7D, 0xF5, 0xE3, 0xAB, 0xCB, 0x8B, - 0xB3, 0xDE, 0xFB, 0xBE, 0xF3, 0xB7, 0xAB, 0xCD, 0x8F, 0x2F, 0xDE, 0x5C, 0xDF, 0xDC, 0x7E, 0xF4, - 0xD1, 0x03, 0x22, 0x0C, 0xDE, 0x77, 0x5D, 0xC7, 0x2C, 0x17, 0xE7, 0x8F, 0x66, 0xB3, 0xE9, 0xED, - 0x6A, 0x6D, 0xAD, 0xFD, 0x7F, 0x19, 0x7B, 0xAF, 0x26, 0xC9, 0xB6, 0xEC, 0x3C, 0x6C, 0x6D, 0x7F, - 0x7C, 0x9A, 0x72, 0x5D, 0xD5, 0xF6, 0xF6, 0xBD, 0x77, 0xEE, 0x38, 0x80, 0x00, 0x83, 0x08, 0x90, - 0x7C, 0xA1, 0x4C, 0x04, 0x1F, 0x18, 0xC1, 0x9F, 0x20, 0x85, 0x14, 0x18, 0x90, 0xA0, 0x02, 0x23, - 0xFE, 0x30, 0xBD, 0xEA, 0x41, 0x0F, 0x32, 0x94, 0x28, 0x20, 0x30, 0x00, 0x89, 0xE1, 0xCC, 0x9D, - 0xB9, 0xB6, 0x7D, 0x77, 0x55, 0x97, 0x4B, 0x7B, 0xDC, 0xF6, 0x5B, 0x0F, 0xFB, 0x64, 0x56, 0x76, - 0x55, 0xCF, 0x08, 0x27, 0x3A, 0xAA, 0x33, 0x4F, 0x9E, 0x34, 0x67, 0xEF, 0xBD, 0xBE, 0xBD, 0xEC, - 0xB7, 0x00, 0x40, 0x4A, 0xCD, 0x19, 0x1B, 0xEC, 0x6E, 0x63, 0xB5, 0xD2, 0x5C, 0xF0, 0xD7, 0x6F, - 0xDE, 0x3F, 0x7E, 0x74, 0xFC, 0xD9, 0x27, 0xF7, 0x9F, 0x3E, 0x3E, 0x89, 0x6D, 0x05, 0xBA, 0x4E, - 0x5E, 0xCE, 0x56, 0xEB, 0xBA, 0x3D, 0x3A, 0xDC, 0xF3, 0xDE, 0x4B, 0xA9, 0x5F, 0xBD, 0x7D, 0xEF, - 0xAC, 0x1F, 0x57, 0xF9, 0x37, 0xCF, 0xDE, 0xFD, 0xE8, 0xB3, 0x87, 0x76, 0x43, 0x5D, 0xB7, 0x11, - 0x09, 0x80, 0x98, 0x45, 0xB1, 0x21, 0x4A, 0x8A, 0x8B, 0xFF, 0xEE, 0xD4, 0xEF, 0xE2, 0xD7, 0x2D, - 0x71, 0xFD, 0xA8, 0x62, 0x7E, 0xF7, 0xD8, 0x4A, 0xE3, 0xF6, 0xE9, 0xF6, 0xD3, 0x06, 0xB1, 0x44, - 0x28, 0x5A, 0x33, 0x04, 0xE3, 0xB7, 0x17, 0xD7, 0xEF, 0xCE, 0x17, 0x4D, 0xA7, 0xCE, 0xAE, 0xD7, - 0x75, 0xD3, 0x1A, 0x6D, 0xB4, 0x31, 0x0B, 0x6B, 0xBD, 0xF7, 0x6D, 0x27, 0xFB, 0x5E, 0x9D, 0x5D, - 0x5C, 0x53, 0x42, 0x8A, 0x22, 0x0B, 0x21, 0x3C, 0x7A, 0x70, 0x7C, 0x71, 0xB5, 0x58, 0x2E, 0xD7, - 0xEB, 0x75, 0x43, 0x28, 0x0E, 0x3E, 0xD4, 0x75, 0x83, 0x09, 0xF1, 0x21, 0x30, 0x46, 0xA7, 0xE3, - 0x51, 0x51, 0x64, 0xA3, 0x32, 0x6F, 0xBB, 0xBE, 0xEB, 0xD4, 0xE9, 0xD9, 0x85, 0xD6, 0x9A, 0x10, - 0x6C, 0x8C, 0x25, 0x84, 0x2C, 0x56, 0x75, 0x27, 0xD5, 0xA8, 0xCA, 0x62, 0x32, 0xFC, 0xAD, 0x9F, - 0xBC, 0x5D, 0xD7, 0xF0, 0x21, 0x3A, 0xEF, 0xDE, 0x14, 0x7C, 0x47, 0x02, 0x5C, 0x71, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xB8, 0x91, 0xDF, 0xBA, 0x0C, 0xED, 0x18, 0x95, 0x91, 0x90, - 0x27, 0xC4, 0xDE, 0x62, 0x3B, 0x12, 0xB1, 0x1D, 0xCF, 0xDD, 0x6D, 0x66, 0x77, 0xAC, 0x6E, 0x7D, - 0xDA, 0xC6, 0x85, 0x37, 0xE4, 0x09, 0xDF, 0xDA, 0x78, 0x10, 0x02, 0xBA, 0xF9, 0xCA, 0xCD, 0x6F, - 0xBF, 0x71, 0xA3, 0x85, 0xB0, 0x69, 0xD9, 0xBB, 0x95, 0x54, 0x42, 0xD0, 0xA4, 0x4A, 0x9C, 0x0B, - 0xBD, 0x35, 0x00, 0x90, 0x0A, 0x46, 0x10, 0x1E, 0xF2, 0xAA, 0x52, 0x81, 0x00, 0x4C, 0xF0, 0xCE, - 0x7B, 0x04, 0x88, 0x62, 0x24, 0x18, 0x99, 0x56, 0x59, 0x9E, 0xF2, 0x2A, 0x4F, 0x00, 0xA1, 0xC8, - 0x27, 0xB0, 0xAE, 0xFB, 0x75, 0x2B, 0xAD, 0xF3, 0xAD, 0xD4, 0x6D, 0x6F, 0x42, 0x00, 0x42, 0x86, - 0xF2, 0x77, 0x40, 0xC1, 0x43, 0x08, 0x08, 0x8E, 0xC6, 0x99, 0xF7, 0xA1, 0x91, 0x46, 0x5B, 0xAF, - 0xB4, 0x63, 0x0C, 0xA5, 0x82, 0x32, 0x8C, 0x32, 0x41, 0xED, 0x26, 0x1E, 0xDA, 0x6B, 0xAB, 0xB5, - 0x75, 0x01, 0x08, 0x42, 0x84, 0x00, 0x0A, 0x50, 0x64, 0x62, 0x5A, 0xC5, 0x18, 0xF3, 0x10, 0xED, - 0x02, 0xA0, 0x00, 0x01, 0x63, 0x9C, 0x65, 0x62, 0x67, 0x38, 0x86, 0xF0, 0xE2, 0x2D, 0xF8, 0x0F, - 0x1F, 0x5A, 0xF5, 0xB7, 0x56, 0xDE, 0x76, 0x0E, 0x6E, 0x3D, 0xB8, 0xF5, 0xD2, 0x2D, 0x25, 0x79, - 0xF7, 0x71, 0x08, 0x61, 0xB5, 0x6E, 0x5E, 0xBD, 0x7E, 0x3F, 0x5F, 0xD4, 0x82, 0x73, 0xAD, 0x2D, - 0x26, 0x38, 0xCF, 0xB3, 0xA6, 0xE9, 0x8C, 0x36, 0x94, 0x52, 0xC6, 0x18, 0xE3, 0x2C, 0x11, 0x42, - 0x4A, 0x75, 0x3D, 0x5B, 0x96, 0x45, 0x9E, 0x97, 0x45, 0xFC, 0xFA, 0x75, 0xDD, 0x08, 0xC1, 0x08, - 0x25, 0x52, 0xAA, 0xC5, 0x62, 0xC5, 0x19, 0x2B, 0xCB, 0x82, 0x73, 0x96, 0xA6, 0xA9, 0xB1, 0xB6, - 0xED, 0xBA, 0xAE, 0x93, 0xE7, 0x17, 0xB3, 0x34, 0x4D, 0xE6, 0x57, 0x8B, 0xE0, 0x91, 0x0F, 0xDE, - 0x1A, 0xAB, 0xB5, 0x49, 0x12, 0x4E, 0x09, 0xA9, 0xCA, 0x82, 0x31, 0xFA, 0xF8, 0xD1, 0xFD, 0x24, - 0x11, 0x4A, 0x29, 0x82, 0x21, 0x15, 0x1C, 0x63, 0x24, 0x38, 0x13, 0x9C, 0x81, 0xF7, 0xD6, 0xB8, - 0x80, 0x30, 0x26, 0xC0, 0x28, 0x15, 0x09, 0x4F, 0xD3, 0xC4, 0x3A, 0xCF, 0x19, 0xA3, 0x94, 0x2C, - 0x16, 0x2B, 0x6B, 0x5C, 0x51, 0xE6, 0xE3, 0x71, 0x15, 0x42, 0xDC, 0x00, 0x80, 0x73, 0x8E, 0x10, - 0x38, 0xEF, 0x00, 0x80, 0x10, 0x22, 0x95, 0x0E, 0xC1, 0xBF, 0x7E, 0x7B, 0x96, 0x65, 0xD9, 0xC5, - 0xE5, 0xB5, 0xF7, 0xE1, 0x60, 0x7F, 0x9C, 0xF2, 0x64, 0xBE, 0xA8, 0xF7, 0xF7, 0xC6, 0x3E, 0xF8, - 0xF9, 0x7C, 0x91, 0x65, 0xC9, 0xE3, 0xC7, 0x27, 0xD7, 0xF3, 0xF5, 0xD9, 0xF9, 0x55, 0x08, 0xC1, - 0x3A, 0xBB, 0x37, 0x29, 0x12, 0x86, 0x31, 0x21, 0x04, 0x41, 0xDB, 0xF6, 0x3E, 0xC0, 0xE5, 0xD5, - 0x9C, 0x10, 0x62, 0xAC, 0x23, 0x14, 0xC6, 0x55, 0xD9, 0x4B, 0x69, 0xBD, 0x47, 0x21, 0xF6, 0x04, - 0x70, 0x8B, 0xE5, 0xBA, 0xCC, 0x73, 0x42, 0x68, 0xD7, 0xCB, 0x98, 0xA7, 0x92, 0xA7, 0x89, 0xD6, - 0x66, 0x32, 0x2E, 0xB5, 0xB1, 0x52, 0x8D, 0x18, 0x65, 0x17, 0x17, 0x33, 0x6D, 0x0C, 0x25, 0x78, - 0xB5, 0x6E, 0x08, 0xC1, 0xCF, 0x5E, 0x9D, 0x3D, 0x79, 0x78, 0x84, 0x37, 0x75, 0xD2, 0x00, 0x40, - 0x10, 0xF6, 0x9B, 0x0C, 0x2A, 0x02, 0x18, 0x10, 0xF8, 0x9B, 0xE0, 0x0F, 0xC0, 0xC6, 0x73, 0xBA, - 0xBB, 0xF9, 0xEF, 0x42, 0xD8, 0xAD, 0x03, 0xEF, 0x90, 0x9A, 0xDE, 0x35, 0xB2, 0xEE, 0x5E, 0xBF, - 0x11, 0x54, 0x14, 0x02, 0x78, 0xE7, 0x11, 0xC1, 0x10, 0xC0, 0x7B, 0x9F, 0x26, 0xE2, 0xF2, 0x7A, - 0xF1, 0xD7, 0xFF, 0xF9, 0x5B, 0x1F, 0x50, 0xDD, 0xB4, 0xDA, 0x58, 0xE7, 0x3C, 0x26, 0x84, 0x86, - 0xD0, 0x4B, 0x79, 0xA5, 0x75, 0x4C, 0x37, 0x11, 0x82, 0xC7, 0x44, 0x42, 0xA5, 0xCC, 0xD1, 0xD1, - 0x74, 0x54, 0xE5, 0xF3, 0xC5, 0x0A, 0xA3, 0x21, 0xAF, 0x15, 0x63, 0xE2, 0x8C, 0xA2, 0x94, 0x8C, - 0xCA, 0x02, 0x20, 0xB4, 0x5D, 0x8F, 0x11, 0x7A, 0x70, 0x72, 0xF8, 0xF6, 0xDD, 0xF9, 0xC2, 0x3A, - 0xA5, 0x0D, 0xA3, 0x2C, 0xC6, 0xDC, 0xB5, 0xB5, 0x5F, 0x3F, 0x3F, 0xFB, 0xE4, 0xC1, 0xE1, 0x96, - 0xA6, 0x14, 0x06, 0x6F, 0xD2, 0x60, 0xF0, 0xC6, 0x5B, 0xF9, 0x28, 0x88, 0xC3, 0x87, 0x74, 0x3D, - 0xBB, 0x42, 0x74, 0x6B, 0xB5, 0xC7, 0x21, 0x77, 0xE1, 0x03, 0xBD, 0xF5, 0xD6, 0x96, 0xBF, 0xF3, - 0x46, 0xB4, 0xAB, 0x1A, 0xC3, 0x26, 0xF8, 0xB0, 0xA3, 0x25, 0x84, 0xCD, 0x99, 0x81, 0xBA, 0x79, - 0x13, 0x27, 0x41, 0x21, 0x00, 0xC6, 0x70, 0xD3, 0xD7, 0x72, 0x4B, 0x91, 0x38, 0x38, 0xFC, 0x37, - 0x7D, 0x64, 0xD1, 0xC6, 0x18, 0x4B, 0x04, 0x4D, 0x39, 0x4D, 0x39, 0x0D, 0x01, 0x08, 0x46, 0x6D, - 0x6F, 0x94, 0xB6, 0xBD, 0x0F, 0x9C, 0xE1, 0x54, 0x30, 0xEB, 0x03, 0x67, 0x84, 0x01, 0x2E, 0x53, - 0x51, 0x65, 0x42, 0xF0, 0xC1, 0x03, 0x4D, 0x09, 0x56, 0xC6, 0x12, 0x8C, 0xB5, 0xB1, 0x8B, 0xBA, - 0x6D, 0x3A, 0xD5, 0x29, 0xDB, 0xF4, 0x26, 0xA6, 0x9E, 0x31, 0x82, 0x01, 0x40, 0x59, 0x87, 0x00, - 0x18, 0x25, 0xD3, 0x32, 0x49, 0x39, 0xCB, 0x12, 0x16, 0xF7, 0x8A, 0xAB, 0x55, 0xC7, 0x28, 0x19, - 0x67, 0x3C, 0xFE, 0x74, 0x42, 0xB0, 0x71, 0xD6, 0xFB, 0xE0, 0x42, 0x50, 0xC6, 0x31, 0x8A, 0x31, - 0x02, 0x1F, 0x3C, 0x09, 0x84, 0x31, 0x3C, 0x2A, 0xD2, 0x2C, 0xE5, 0x9C, 0x53, 0x6B, 0x7D, 0x74, - 0x9B, 0x29, 0x6D, 0x19, 0xC5, 0x49, 0x22, 0x18, 0xA3, 0xB7, 0x76, 0xD1, 0x5B, 0x1B, 0xEF, 0xEF, - 0x9A, 0x92, 0xBB, 0x0B, 0x31, 0xEC, 0x38, 0x53, 0x76, 0xA7, 0x6D, 0x77, 0x41, 0x87, 0x5B, 0x71, - 0x03, 0x44, 0x18, 0xA7, 0x6F, 0xDE, 0x9C, 0xFE, 0xCD, 0x2F, 0xBE, 0xC4, 0x94, 0x22, 0x40, 0x46, - 0x29, 0xEF, 0xBD, 0x31, 0xA1, 0xEF, 0x7A, 0x40, 0xA8, 0x1A, 0x95, 0x59, 0x96, 0x85, 0x10, 0xB4, - 0x36, 0xCE, 0xB9, 0xAA, 0x2A, 0x7B, 0xA9, 0xCE, 0x2F, 0xAE, 0x1F, 0x3E, 0x3C, 0xB6, 0xD6, 0x59, - 0x6B, 0xEB, 0xBA, 0x59, 0xAF, 0xDD, 0xA8, 0xAA, 0x9C, 0x0B, 0xAB, 0x55, 0x4D, 0x29, 0x39, 0x38, - 0x98, 0xEE, 0xEF, 0x4D, 0xA3, 0x4A, 0x25, 0xA5, 0xF4, 0xDE, 0x59, 0x6B, 0xA5, 0x94, 0xD6, 0xBA, - 0x8B, 0xCB, 0xAB, 0xD1, 0xA8, 0xAC, 0xAA, 0x22, 0x4D, 0x93, 0xA6, 0xED, 0x94, 0x54, 0x87, 0x87, - 0xFB, 0x7B, 0xD3, 0x11, 0x42, 0x08, 0x20, 0x8C, 0x47, 0x05, 0x40, 0xE0, 0x04, 0x31, 0xC6, 0x8C, - 0xB5, 0x10, 0x7C, 0x70, 0x8E, 0xA7, 0x82, 0xA5, 0x02, 0x00, 0x10, 0xC2, 0x55, 0x59, 0x10, 0x8C, - 0x84, 0xE0, 0x6D, 0x27, 0x9B, 0xB6, 0xA3, 0x8C, 0x95, 0x55, 0xE5, 0xBD, 0x0F, 0xCE, 0xA1, 0x00, - 0x98, 0x60, 0xB2, 0xD1, 0x37, 0x13, 0xC1, 0x29, 0x25, 0x52, 0x2A, 0xC1, 0x99, 0x36, 0xA6, 0xED, - 0xA4, 0x48, 0x92, 0xFB, 0x27, 0x87, 0x89, 0x10, 0x65, 0x99, 0x7B, 0xEF, 0x47, 0x55, 0x49, 0x09, - 0xD1, 0xD6, 0x9C, 0x9E, 0x9E, 0xBF, 0x7C, 0xF3, 0x1E, 0x61, 0xB2, 0xBF, 0x37, 0x7E, 0xF8, 0xE0, - 0x9E, 0xF7, 0xFE, 0xED, 0xDB, 0xB3, 0xBF, 0xFF, 0xE5, 0x97, 0x89, 0x60, 0x79, 0x5E, 0x30, 0xCE, - 0xAF, 0xAF, 0x67, 0x08, 0x41, 0x91, 0xA5, 0x71, 0xED, 0x1A, 0x63, 0x8D, 0xB1, 0x91, 0x13, 0x2D, - 0x8E, 0xA7, 0x52, 0x1A, 0x13, 0xD2, 0xF7, 0x92, 0x71, 0xB6, 0x5C, 0x36, 0x55, 0x99, 0x51, 0x4A, - 0x22, 0xBB, 0xFF, 0xF5, 0x6C, 0xC1, 0x28, 0xFE, 0xEC, 0xF1, 0xFD, 0x8B, 0xEB, 0x45, 0xDB, 0xF7, - 0x8C, 0x52, 0x8C, 0x71, 0x96, 0xA5, 0xC6, 0x3A, 0xA3, 0xED, 0xF9, 0xE5, 0xFC, 0xC9, 0xC3, 0x23, - 0xA9, 0xCD, 0xD6, 0x41, 0x33, 0xAC, 0xF4, 0xCD, 0xC6, 0xB6, 0x2B, 0x80, 0xF0, 0xA1, 0x23, 0x15, - 0xA1, 0x4D, 0x93, 0xE1, 0x0F, 0xA5, 0xF4, 0xEE, 0xB2, 0x81, 0x8F, 0xED, 0x6D, 0xBB, 0x26, 0xD2, - 0xEE, 0x99, 0x28, 0x5E, 0x51, 0x1B, 0x74, 0xE0, 0x19, 0x61, 0xBD, 0xD2, 0x7F, 0xF3, 0xAB, 0xEF, - 0x2F, 0xAE, 0x96, 0x94, 0x92, 0x07, 0x27, 0x87, 0x57, 0xB3, 0x15, 0x63, 0xDC, 0x3B, 0xD7, 0x4B, - 0x8D, 0x10, 0x0A, 0xDE, 0x2B, 0x6D, 0xA2, 0xFE, 0x3B, 0x9D, 0x8C, 0xF3, 0x2C, 0x3B, 0x3C, 0x18, - 0x07, 0x40, 0xDF, 0x3D, 0x7F, 0xA3, 0x95, 0xA1, 0x94, 0x19, 0x6B, 0x07, 0x36, 0x84, 0x00, 0x08, - 0x90, 0xF7, 0xBE, 0xEF, 0x25, 0xA5, 0xC4, 0x68, 0xB3, 0x37, 0xA9, 0x18, 0x67, 0xF7, 0xEE, 0xED, - 0x4F, 0xC7, 0x55, 0xDF, 0xCB, 0x97, 0xAF, 0xCF, 0x00, 0xE0, 0x70, 0x7F, 0xF2, 0xF2, 0xF4, 0xFA, - 0xAB, 0x17, 0x67, 0x9F, 0x3E, 0x3C, 0x34, 0x66, 0xC0, 0xB2, 0x8D, 0xE1, 0xF5, 0x81, 0x82, 0xF5, - 0x51, 0xEB, 0x64, 0x6B, 0xCA, 0xDC, 0xD5, 0x61, 0x77, 0x9F, 0xFA, 0x10, 0x6E, 0x28, 0xAF, 0x3E, - 0x1C, 0x93, 0xF8, 0x20, 0x6E, 0x8A, 0xDB, 0x3C, 0xE0, 0x08, 0x4C, 0x70, 0xE3, 0xCB, 0x0F, 0x21, - 0xC0, 0x8E, 0xBD, 0x18, 0x75, 0xAA, 0x61, 0x36, 0xD0, 0x8D, 0x37, 0x20, 0x44, 0x70, 0xA0, 0x37, - 0xB3, 0xBB, 0x75, 0x68, 0xDF, 0xDC, 0xD5, 0x26, 0xF5, 0x23, 0x76, 0x8B, 0x09, 0x60, 0xAC, 0x6B, - 0x7B, 0x40, 0x18, 0x79, 0xE7, 0xB3, 0x84, 0xF9, 0xE0, 0x8D, 0xF5, 0x04, 0x63, 0x46, 0x49, 0x96, - 0x70, 0x84, 0x20, 0xF8, 0x30, 0xA6, 0xC4, 0x0E, 0x81, 0x6D, 0x30, 0xD6, 0x46, 0x0A, 0x40, 0xEF, - 0x43, 0xDD, 0xA9, 0xBA, 0xD7, 0x9C, 0x12, 0x65, 0x5D, 0xAF, 0x87, 0x7E, 0xBD, 0xC6, 0xFA, 0xA1, - 0xB3, 0xD9, 0x50, 0x8B, 0x84, 0x94, 0xB1, 0xCB, 0x46, 0x22, 0x14, 0xAB, 0x98, 0x91, 0x87, 0xD0, - 0x2A, 0x33, 0xCE, 0x93, 0x54, 0xD0, 0x5E, 0x19, 0xC1, 0xA8, 0x60, 0x60, 0xAC, 0x73, 0xDE, 0x67, - 0x09, 0x47, 0x00, 0x08, 0x41, 0xC2, 0x69, 0xC2, 0x99, 0xE0, 0xD4, 0x79, 0x6F, 0x8C, 0xE5, 0x9C, - 0x71, 0x4E, 0x63, 0x87, 0x6D, 0x21, 0x18, 0x63, 0x6C, 0xBB, 0xA4, 0x76, 0xD1, 0xE7, 0x96, 0x9E, - 0x0F, 0x77, 0x8E, 0x5D, 0x15, 0xFA, 0xEE, 0xB1, 0xB5, 0x1F, 0x77, 0xDF, 0xFB, 0xA1, 0xF3, 0x12, - 0x21, 0x04, 0xC6, 0xD8, 0xD5, 0xBA, 0xA3, 0x94, 0x3C, 0x7B, 0xFE, 0x4E, 0x1B, 0xC7, 0x00, 0x5B, - 0xEB, 0x82, 0x77, 0x21, 0x0C, 0x71, 0x52, 0x2E, 0x04, 0x00, 0xEA, 0x7B, 0xC9, 0x18, 0x65, 0x8C, - 0xE5, 0x79, 0x1A, 0x3C, 0x9C, 0x1C, 0x1F, 0x69, 0xE3, 0xBA, 0x5E, 0xA6, 0x49, 0xA2, 0x95, 0xA6, - 0x94, 0x16, 0x79, 0xEE, 0x83, 0x4F, 0x53, 0x51, 0x96, 0x79, 0x5D, 0xB7, 0x4A, 0xD9, 0xB6, 0x93, - 0xCE, 0x59, 0xA5, 0x34, 0x82, 0x58, 0x24, 0xE4, 0xBD, 0xF7, 0x94, 0xD2, 0x34, 0x4D, 0x93, 0x24, - 0x41, 0x98, 0x74, 0x9D, 0x7C, 0xFF, 0xFE, 0xD2, 0x39, 0xA7, 0x8D, 0x05, 0x80, 0xFD, 0xBD, 0x71, - 0x9A, 0xF0, 0xE0, 0x43, 0x92, 0x88, 0x3C, 0x13, 0xEB, 0xE5, 0x8A, 0x11, 0x98, 0x94, 0xE2, 0xF9, - 0xBB, 0x59, 0x02, 0x28, 0xCF, 0x12, 0x4A, 0x69, 0xA4, 0x39, 0xC9, 0xF3, 0x0C, 0xBC, 0xFB, 0xFE, - 0xC5, 0xDB, 0xA2, 0x28, 0xCA, 0x3C, 0xD3, 0xDA, 0x60, 0x8C, 0x94, 0xD4, 0xD1, 0xFB, 0x1E, 0xEF, - 0x8E, 0x52, 0xDA, 0x75, 0xDD, 0xFB, 0xF7, 0x57, 0x5C, 0xF0, 0x2C, 0x4B, 0x7D, 0x08, 0x3F, 0xFE, - 0xD1, 0x67, 0x9C, 0x51, 0xCE, 0x99, 0x31, 0xC6, 0xFB, 0x40, 0x30, 0xA6, 0x84, 0x78, 0xEF, 0x10, - 0x84, 0x17, 0xAF, 0xCE, 0xA4, 0x76, 0x08, 0x41, 0x51, 0xE6, 0x5F, 0x7D, 0xF5, 0xBD, 0x52, 0xFA, - 0xDE, 0xD1, 0xC1, 0xF1, 0xC9, 0xB1, 0x35, 0x66, 0xB5, 0x5A, 0x27, 0x69, 0xCA, 0x39, 0x77, 0xCE, - 0xD5, 0x75, 0xA3, 0x94, 0xA2, 0x84, 0x68, 0xEB, 0xBC, 0x0F, 0x22, 0xE1, 0x21, 0x04, 0xA5, 0x14, - 0xE3, 0x0C, 0x21, 0x34, 0xAA, 0x8A, 0xD5, 0x62, 0x3D, 0x9B, 0xCD, 0x63, 0xA1, 0x55, 0xDF, 0x4B, - 0xEF, 0xC3, 0x93, 0x47, 0x27, 0x94, 0xD0, 0xA6, 0x6D, 0x93, 0x44, 0x3C, 0x7E, 0x70, 0xD8, 0x75, - 0xFD, 0xCB, 0x37, 0xE7, 0x52, 0x2A, 0xA5, 0x94, 0x0F, 0xE1, 0x12, 0xC3, 0xEB, 0x77, 0x97, 0x0F, - 0x4F, 0x0E, 0xB6, 0xBC, 0x3E, 0x3B, 0x14, 0xAF, 0xBB, 0xD2, 0x0B, 0x9B, 0x33, 0x5B, 0x2D, 0x23, - 0x0C, 0x14, 0x78, 0xDB, 0x6C, 0xFB, 0x8F, 0xC5, 0x28, 0x3F, 0x2A, 0xA2, 0xB7, 0x24, 0xFC, 0xAE, - 0x5D, 0xB9, 0x2B, 0x61, 0x21, 0x04, 0x42, 0xF0, 0xD5, 0x6C, 0xB5, 0x58, 0xF7, 0xDE, 0xBB, 0x4F, - 0x9F, 0x3C, 0xCA, 0xB3, 0x34, 0x9A, 0x2F, 0x6D, 0x2F, 0x39, 0xE7, 0x52, 0xF6, 0x4A, 0xFB, 0xA8, - 0xFA, 0xC5, 0x72, 0xFD, 0xB6, 0x6D, 0xC5, 0xC9, 0xC1, 0xD5, 0x7C, 0x15, 0x53, 0xEA, 0xBC, 0x0F, - 0xD8, 0xE3, 0x48, 0x25, 0xCF, 0x28, 0x01, 0x8C, 0xD7, 0x75, 0x9B, 0x25, 0x02, 0x63, 0xDC, 0xF5, - 0x72, 0x55, 0x37, 0xC6, 0x58, 0xC1, 0x39, 0x40, 0x28, 0xF2, 0x6C, 0x3A, 0xA9, 0xAA, 0xB2, 0x90, - 0x52, 0xCE, 0xE6, 0xCB, 0xBF, 0xFE, 0x2F, 0xCF, 0xAA, 0x3C, 0x39, 0x9C, 0x56, 0x77, 0x68, 0x17, - 0x3F, 0x00, 0xA9, 0xBB, 0xD2, 0x71, 0x6B, 0xE7, 0xDE, 0x8E, 0xC6, 0xEE, 0xFD, 0xEE, 0xA8, 0x70, - 0xE8, 0x77, 0x8D, 0x06, 0x25, 0x68, 0x5B, 0xFC, 0xEC, 0x42, 0x88, 0x08, 0x10, 0x36, 0x76, 0x93, - 0xF3, 0x37, 0xD9, 0x7F, 0xDB, 0x4C, 0xB4, 0x48, 0x3E, 0xBA, 0xD5, 0xD0, 0xA2, 0xDE, 0x1C, 0x67, - 0x86, 0xFC, 0xF7, 0x3F, 0xFB, 0x4B, 0xB4, 0x63, 0xCC, 0xDF, 0x1C, 0x9B, 0x2F, 0x8C, 0xDF, 0xEA, - 0x43, 0x88, 0x15, 0x48, 0xC6, 0x07, 0x63, 0x1C, 0x42, 0x80, 0x30, 0x12, 0x8C, 0xE6, 0x09, 0x4B, - 0x13, 0x5E, 0x15, 0x69, 0x22, 0x98, 0xB5, 0x8E, 0x90, 0xD8, 0x99, 0xD5, 0x39, 0x17, 0x22, 0x2B, - 0x5E, 0xDB, 0x9B, 0x75, 0x2B, 0x67, 0xEB, 0xBE, 0x95, 0xD6, 0x07, 0x68, 0xA5, 0xD1, 0x26, 0xF6, - 0xD8, 0x06, 0xB4, 0xA1, 0xF3, 0x8A, 0xBD, 0x46, 0xAD, 0xF3, 0xAD, 0x34, 0x52, 0x5B, 0x63, 0x9D, - 0x32, 0x3E, 0x78, 0x40, 0x08, 0x79, 0x17, 0x18, 0x25, 0xB1, 0x1B, 0x2E, 0xA7, 0xD4, 0x38, 0xEF, - 0xBD, 0xA7, 0x04, 0xA7, 0x82, 0x55, 0x59, 0x92, 0x67, 0x9C, 0x20, 0x44, 0x30, 0xE2, 0x8C, 0x62, - 0x8C, 0x28, 0x21, 0x9C, 0x33, 0x3A, 0x24, 0xD3, 0xC7, 0x58, 0x3F, 0xD9, 0x2E, 0xC1, 0x8F, 0x42, - 0xD2, 0xAD, 0x75, 0xF6, 0xB1, 0x01, 0xB8, 0x79, 0xBC, 0xFB, 0x39, 0xDB, 0xB9, 0xD9, 0x51, 0xA4, - 0x6F, 0x59, 0x19, 0x81, 0x32, 0xFA, 0xE5, 0x97, 0xDF, 0xFD, 0xE2, 0xEF, 0x7E, 0xFB, 0xF2, 0xF5, - 0x99, 0x54, 0xD6, 0x58, 0x17, 0x02, 0x68, 0xAD, 0x63, 0x6D, 0x43, 0x64, 0x41, 0x91, 0x4A, 0x1B, - 0x63, 0xAC, 0xB5, 0x1B, 0x68, 0x0B, 0x75, 0xDB, 0x5A, 0xEB, 0xF6, 0xF6, 0xA6, 0x01, 0xA0, 0xA9, - 0x1B, 0xC6, 0x58, 0x92, 0x0A, 0x00, 0xA8, 0xAA, 0x72, 0xB9, 0x5C, 0x1B, 0x63, 0x4F, 0x4E, 0x0E, - 0x39, 0xE7, 0xD7, 0xF3, 0x85, 0xE0, 0x9C, 0x73, 0x86, 0x10, 0x08, 0xC1, 0x8D, 0xB1, 0x08, 0x80, - 0x50, 0x0A, 0x08, 0xE5, 0x59, 0xEA, 0x9D, 0xBB, 0x9E, 0xCD, 0xFB, 0x5E, 0x1E, 0x1D, 0xEE, 0x1F, - 0xDD, 0xDB, 0xCF, 0xF3, 0x74, 0x3C, 0x2A, 0x30, 0xC2, 0x69, 0x9A, 0x20, 0x08, 0xF5, 0x7A, 0x2D, - 0xFB, 0xF6, 0xE9, 0xFD, 0xBD, 0xA6, 0xED, 0xE7, 0xB5, 0x41, 0x08, 0x4B, 0xA9, 0x62, 0x54, 0xC4, - 0x6A, 0x53, 0xA6, 0xE4, 0x6F, 0xFF, 0xCB, 0xB7, 0x9D, 0x34, 0x8C, 0xD1, 0x34, 0x49, 0x10, 0xC6, - 0x84, 0x52, 0xCE, 0x18, 0x65, 0x0C, 0x00, 0x08, 0x46, 0x4A, 0xE9, 0xB7, 0xA7, 0x17, 0xD7, 0xB3, - 0x65, 0x2F, 0x65, 0x9A, 0x26, 0x65, 0x9E, 0xE7, 0x59, 0x36, 0x9B, 0x2F, 0x8D, 0x31, 0xB1, 0x89, - 0xDA, 0x62, 0xB1, 0x6E, 0xDB, 0xCE, 0x39, 0xDB, 0x36, 0xDD, 0xE5, 0xF5, 0x62, 0xDD, 0xCA, 0xA2, - 0x48, 0xD3, 0x24, 0x61, 0x94, 0x54, 0x65, 0x21, 0x38, 0x5B, 0xD7, 0xAD, 0x75, 0x2E, 0xCB, 0xB2, - 0xA6, 0xED, 0xFA, 0xAE, 0xAF, 0x46, 0x55, 0x1C, 0x62, 0x6D, 0x8C, 0xF7, 0x9E, 0x12, 0xC2, 0x38, - 0xB3, 0xD6, 0xC8, 0x5E, 0x85, 0x21, 0xE8, 0x1C, 0x9C, 0xF3, 0x75, 0xD3, 0x52, 0x82, 0x9D, 0xF5, - 0x22, 0x11, 0x4A, 0x1B, 0xAD, 0x75, 0xAF, 0x14, 0xE3, 0x6C, 0x5C, 0x95, 0x89, 0x10, 0x75, 0xDD, - 0x26, 0x9C, 0x72, 0x46, 0x97, 0xAB, 0xA6, 0xED, 0xFA, 0x32, 0xCF, 0x9C, 0x73, 0xDA, 0xBA, 0x51, - 0x99, 0xEF, 0x4F, 0x2B, 0xEB, 0xFC, 0xC6, 0x9D, 0x8D, 0x60, 0x83, 0x5F, 0xBB, 0x02, 0xBA, 0x9D, - 0xFF, 0x4D, 0x60, 0x6D, 0x57, 0x9F, 0xFA, 0xC8, 0xDA, 0xB9, 0xF9, 0xA8, 0x9D, 0x15, 0x72, 0x6B, - 0x09, 0x6D, 0x7D, 0xD2, 0xBB, 0x3E, 0xA0, 0xDD, 0x25, 0x46, 0x08, 0x11, 0x8C, 0xBE, 0x3F, 0x7B, - 0x4F, 0x93, 0xF4, 0x93, 0xC7, 0xF7, 0xE7, 0x8B, 0xF5, 0xF3, 0x57, 0x67, 0x00, 0x20, 0xB5, 0xE9, - 0xA5, 0x52, 0x4A, 0x03, 0xA0, 0xAB, 0xEB, 0x05, 0x8A, 0x61, 0x0A, 0x88, 0x89, 0x9E, 0xF8, 0x57, - 0xBF, 0xFD, 0x9E, 0x52, 0xFA, 0xC5, 0x67, 0x0F, 0x31, 0xA6, 0xDA, 0x98, 0x34, 0x4D, 0xB4, 0x36, - 0x9C, 0xD3, 0xE9, 0x74, 0x2C, 0x95, 0x0E, 0x01, 0xA4, 0x92, 0xC9, 0xC6, 0x97, 0x7F, 0xB8, 0xBF, - 0xD7, 0x76, 0x12, 0x01, 0x34, 0x6D, 0x4F, 0x08, 0x19, 0x55, 0x45, 0x96, 0xA5, 0x55, 0x99, 0x21, - 0x84, 0xE6, 0xAB, 0xFA, 0x8B, 0x27, 0xC7, 0x1B, 0x52, 0xFB, 0x81, 0x10, 0x0F, 0x3E, 0xC4, 0xDC, - 0x5B, 0x72, 0x71, 0x57, 0x10, 0xB6, 0x2F, 0xC7, 0x18, 0xCB, 0x60, 0x78, 0x0E, 0xEF, 0x8A, 0xB7, - 0x8F, 0x10, 0x8A, 0x09, 0x98, 0x08, 0x00, 0x61, 0x82, 0xD1, 0x86, 0x29, 0x2F, 0x86, 0x3D, 0x10, - 0x42, 0x3E, 0x00, 0xD9, 0xF9, 0x8A, 0x98, 0x1A, 0x11, 0x86, 0xEE, 0x9C, 0x1B, 0x01, 0x43, 0x00, - 0x80, 0x36, 0x59, 0xC9, 0xBB, 0x62, 0x8B, 0x00, 0x62, 0x5F, 0xCB, 0xC1, 0x02, 0x82, 0xAD, 0xCB, - 0x73, 0x7B, 0x72, 0xFB, 0xBB, 0xE3, 0x49, 0xEB, 0x01, 0xA1, 0x90, 0x8A, 0x48, 0x4E, 0xED, 0x18, - 0x25, 0xE3, 0x32, 0x4D, 0x05, 0x27, 0x04, 0x3B, 0xE7, 0x68, 0x91, 0x42, 0xE4, 0x75, 0x00, 0x58, - 0x0D, 0x59, 0xE8, 0xA1, 0xE9, 0x4D, 0xEC, 0x7A, 0x88, 0x00, 0x9C, 0xF3, 0xD6, 0x7B, 0xE7, 0x43, - 0x64, 0x90, 0xF6, 0x00, 0x04, 0x0D, 0xE3, 0x37, 0x54, 0xFE, 0x6D, 0x7E, 0x1E, 0x46, 0xE0, 0x42, - 0x40, 0x10, 0x52, 0x4E, 0x26, 0x65, 0x82, 0x10, 0x5A, 0x36, 0x32, 0x84, 0xC0, 0x29, 0xBD, 0xB7, - 0x57, 0x01, 0x04, 0xE7, 0x7D, 0x96, 0x08, 0x4A, 0xB0, 0xE3, 0x6C, 0x93, 0xDC, 0x1F, 0x21, 0x6C, - 0xA8, 0xA4, 0xDF, 0xC6, 0xD1, 0xD1, 0xC6, 0x12, 0x8C, 0xD0, 0xB3, 0x55, 0xA3, 0xB6, 0x1E, 0x90, - 0xDD, 0x69, 0xBB, 0x65, 0x38, 0xDC, 0x3A, 0xB9, 0x7D, 0xE9, 0x16, 0x72, 0xED, 0x22, 0x9A, 0x1F, - 0xA8, 0x1C, 0x03, 0x42, 0x60, 0xB5, 0x3D, 0x3B, 0xBF, 0xC6, 0x84, 0x84, 0x00, 0xCA, 0x18, 0x84, - 0x70, 0xD7, 0xF5, 0xDE, 0x7B, 0xE3, 0x86, 0x5C, 0x41, 0x42, 0x29, 0x13, 0x3C, 0x36, 0x2E, 0xAA, - 0xD7, 0x4D, 0x59, 0x15, 0xCE, 0x7B, 0x6B, 0x6D, 0xDF, 0xEB, 0x75, 0xD3, 0x71, 0x46, 0x19, 0x67, - 0x5D, 0xDF, 0x63, 0x8C, 0x38, 0xE7, 0x8B, 0xC5, 0x32, 0x49, 0x04, 0xE7, 0x3C, 0xCF, 0xB2, 0xB6, - 0xEB, 0x47, 0x65, 0x69, 0xAC, 0xD3, 0x5A, 0x53, 0x82, 0x39, 0xE3, 0xD3, 0xE9, 0xC4, 0x3B, 0xB7, - 0x5C, 0xD5, 0x4A, 0xE9, 0xF9, 0x7C, 0xC5, 0x39, 0xE5, 0x8C, 0xFD, 0xD1, 0x1F, 0xFE, 0xB8, 0x1A, - 0x15, 0x8C, 0xB1, 0xAA, 0x48, 0x29, 0x25, 0xEF, 0x4E, 0xCF, 0xBB, 0xAE, 0x37, 0x5A, 0x1F, 0x1F, - 0xED, 0x09, 0xC6, 0x01, 0x82, 0x0F, 0xE0, 0x9C, 0x6B, 0x9A, 0xA6, 0x2C, 0x4B, 0xE7, 0xFC, 0x6A, - 0xDD, 0xFE, 0xF4, 0xF3, 0xFB, 0xD7, 0xD7, 0x8B, 0xAE, 0x37, 0x7B, 0x7B, 0x93, 0x24, 0x4D, 0x18, - 0x63, 0x1E, 0x82, 0xDD, 0x54, 0xC5, 0x53, 0x82, 0xB5, 0xB1, 0x67, 0x17, 0xB3, 0xA6, 0xE9, 0x0F, - 0x0F, 0xC6, 0xD3, 0xC9, 0x28, 0xF8, 0xB0, 0xAE, 0x9B, 0xEB, 0xF9, 0xD2, 0x7B, 0x57, 0xAF, 0xEB, - 0x35, 0x67, 0x59, 0x96, 0xF6, 0x52, 0x11, 0x8C, 0xD2, 0x84, 0x33, 0x46, 0xD2, 0x44, 0x7C, 0xF6, - 0xE4, 0xA4, 0x28, 0x72, 0x4A, 0x99, 0x32, 0x7A, 0x5C, 0x95, 0x10, 0xFC, 0xB3, 0xE7, 0xAF, 0xFA, - 0x5E, 0x1B, 0xAD, 0xAD, 0x35, 0x55, 0x55, 0xAE, 0x56, 0x35, 0xE7, 0x8C, 0x03, 0xC4, 0xD2, 0x6E, - 0x91, 0x20, 0xAD, 0x14, 0xA5, 0xD4, 0x18, 0x13, 0x4B, 0xDC, 0x31, 0xC6, 0xDE, 0xB9, 0xE0, 0xBD, - 0xD6, 0x06, 0xE3, 0x7E, 0x3E, 0x5B, 0xEE, 0x1F, 0x4C, 0xD3, 0x3C, 0x6B, 0x9A, 0x56, 0x6B, 0xBB, - 0x26, 0xED, 0x83, 0x7B, 0x07, 0xF7, 0x0E, 0xF7, 0xCF, 0xCE, 0x2F, 0x0E, 0xF6, 0x46, 0x82, 0xD3, - 0xFF, 0xED, 0xFF, 0xFC, 0x45, 0x96, 0x25, 0x45, 0x9E, 0x52, 0x4A, 0xBF, 0x7F, 0x79, 0xF6, 0xF4, - 0xF1, 0x31, 0xC6, 0x43, 0xD8, 0xEA, 0x96, 0xBA, 0xB1, 0xB3, 0xFD, 0x0C, 0xFF, 0x6F, 0x9D, 0x44, - 0x9B, 0x93, 0xBF, 0xCF, 0xAF, 0xBF, 0x9D, 0xFA, 0xBB, 0x92, 0xBF, 0xBB, 0x8A, 0x3E, 0xDC, 0x17, - 0x21, 0x04, 0x08, 0x01, 0x28, 0x25, 0x01, 0xE0, 0xAB, 0xEF, 0x5E, 0x4C, 0x0A, 0xFE, 0xDD, 0xE9, - 0xF2, 0xFD, 0x8B, 0x53, 0x67, 0x5D, 0x9E, 0x25, 0x01, 0xC0, 0x79, 0xDF, 0xB4, 0xBD, 0xE0, 0x2C, - 0xCA, 0x7F, 0xEC, 0x44, 0xB7, 0x5A, 0x37, 0x5D, 0xAF, 0x8A, 0x3C, 0x2D, 0xF2, 0x8C, 0x60, 0xF2, - 0xED, 0xB3, 0x37, 0x07, 0x7B, 0x93, 0x3C, 0x4B, 0xCE, 0xAF, 0xE6, 0xCB, 0x55, 0xAD, 0xB4, 0x39, - 0xBE, 0x77, 0x50, 0xB7, 0x1D, 0x63, 0x90, 0x26, 0x55, 0x5D, 0xD7, 0x00, 0x28, 0x4B, 0x53, 0x8C, - 0xA0, 0x97, 0x12, 0x21, 0xE8, 0x7A, 0x99, 0x24, 0xC9, 0x7A, 0xDD, 0x74, 0x52, 0xE5, 0x59, 0x72, - 0x74, 0x30, 0x2D, 0xF2, 0xC4, 0xFA, 0x20, 0x04, 0x57, 0x5A, 0xA3, 0x8D, 0x23, 0xE9, 0xF7, 0x40, - 0xF6, 0xEF, 0xBC, 0x7D, 0x84, 0xC8, 0x0E, 0xF7, 0x51, 0x74, 0x79, 0x7B, 0x80, 0xD8, 0xCD, 0x0E, - 0xA1, 0x6D, 0x1E, 0x52, 0xCC, 0x36, 0x0D, 0x91, 0x02, 0x74, 0x83, 0xF5, 0x28, 0x04, 0x44, 0x36, - 0x64, 0x30, 0x36, 0xDA, 0x4C, 0x61, 0x20, 0x6A, 0xC3, 0x18, 0xBC, 0x1F, 0x8C, 0x43, 0xB4, 0x09, - 0x3C, 0xEE, 0xFE, 0x9E, 0xAD, 0x43, 0x93, 0xFC, 0x77, 0x3F, 0xFB, 0x4B, 0xD8, 0x69, 0x93, 0x31, - 0xBC, 0xBC, 0xBD, 0x9B, 0xCD, 0xC9, 0xED, 0x9B, 0x09, 0x46, 0xD3, 0x2A, 0x49, 0x05, 0x65, 0x94, - 0xE4, 0x29, 0x67, 0x84, 0x84, 0x10, 0x22, 0xA5, 0xA8, 0xB5, 0x56, 0x5B, 0xA7, 0xB4, 0xA9, 0x3B, - 0xD5, 0xF4, 0xAA, 0x91, 0xA6, 0x93, 0xC6, 0xB8, 0x81, 0xF6, 0x7B, 0x48, 0x81, 0x40, 0x10, 0x5B, - 0x03, 0xC4, 0xE9, 0xF7, 0x1B, 0x12, 0x93, 0xDD, 0xD1, 0x43, 0x68, 0x68, 0x9E, 0xC6, 0x19, 0xC9, - 0x05, 0x25, 0x78, 0x20, 0xC0, 0xA1, 0x94, 0x94, 0x19, 0x4F, 0xF8, 0xA6, 0xE8, 0x87, 0x12, 0xCE, - 0xA9, 0x10, 0x4C, 0x08, 0x16, 0x49, 0x1D, 0x76, 0xB6, 0x87, 0xE1, 0xC1, 0x6E, 0xEC, 0xFC, 0xD6, - 0xAE, 0x72, 0x7B, 0x73, 0xFC, 0xBD, 0xC7, 0x5D, 0x2C, 0x43, 0x1F, 0xEE, 0xB4, 0xBB, 0x97, 0x79, - 0xEF, 0x19, 0x25, 0x49, 0x9A, 0x5C, 0xCF, 0x16, 0xCF, 0x5F, 0x9C, 0x51, 0x4A, 0x01, 0x01, 0x26, - 0x14, 0x42, 0x70, 0xCE, 0x01, 0xC2, 0x8C, 0x32, 0x4A, 0x29, 0x60, 0xEC, 0x9C, 0xC3, 0x04, 0x77, - 0x4D, 0xAF, 0x94, 0x56, 0x4A, 0x1B, 0x6B, 0xFB, 0x4E, 0xD6, 0x75, 0x17, 0x00, 0xEA, 0xB6, 0xBD, - 0xBA, 0x9C, 0xA5, 0x89, 0x78, 0xF4, 0xF0, 0x24, 0x4B, 0xD3, 0x5E, 0xAA, 0x34, 0x4D, 0x26, 0x93, - 0x71, 0x55, 0x95, 0x4A, 0xE9, 0xE9, 0xA4, 0xF2, 0xC1, 0x5F, 0x5C, 0x5D, 0x37, 0x6D, 0xDF, 0x77, - 0x52, 0x5B, 0xCB, 0x18, 0xCB, 0xB2, 0x2C, 0xCB, 0x32, 0x84, 0x50, 0xDB, 0x76, 0x56, 0x9B, 0xFD, - 0xFD, 0xE9, 0x78, 0x32, 0xB2, 0xCE, 0xED, 0x4F, 0xAB, 0x44, 0x70, 0x6B, 0xEC, 0x6A, 0xB5, 0xB6, - 0xC6, 0xEC, 0x4D, 0x27, 0x45, 0x59, 0x74, 0x9D, 0xC4, 0x18, 0x5B, 0x1F, 0x2E, 0xAE, 0x57, 0x65, - 0x99, 0x73, 0xCE, 0x11, 0x42, 0x0F, 0x8E, 0x27, 0xA3, 0x22, 0x99, 0x37, 0x16, 0x61, 0x92, 0x24, - 0x49, 0x59, 0xE6, 0xEB, 0xA6, 0x75, 0x3E, 0x10, 0x42, 0x9C, 0xF3, 0x01, 0xC2, 0x72, 0x55, 0xBF, - 0x7C, 0xFD, 0xFE, 0xE5, 0xAB, 0x53, 0x6D, 0x8C, 0x75, 0x3E, 0x4D, 0x04, 0x67, 0xDC, 0x79, 0xAF, - 0x8D, 0x51, 0x4A, 0x03, 0x40, 0x27, 0x55, 0xDF, 0x4B, 0x8C, 0x31, 0xA3, 0x94, 0x12, 0xDC, 0xB6, - 0x5D, 0xDD, 0x4A, 0x8C, 0xD1, 0xCB, 0x57, 0x6F, 0x38, 0xA5, 0x59, 0x96, 0xCD, 0x17, 0xAB, 0x67, - 0xCF, 0x5E, 0xCD, 0x66, 0x0B, 0xC6, 0x98, 0x94, 0x32, 0xCB, 0x33, 0x42, 0x68, 0xD3, 0x76, 0x00, - 0x9E, 0x52, 0x62, 0xAC, 0x0B, 0x10, 0x62, 0x37, 0xB3, 0xC8, 0xE8, 0xCA, 0x39, 0xF7, 0xCE, 0x13, - 0x4A, 0x9D, 0x77, 0x7D, 0x27, 0xAD, 0x73, 0x04, 0x63, 0xA9, 0x0C, 0x21, 0xA4, 0x2A, 0x0B, 0x4A, - 0x49, 0xD3, 0x76, 0x18, 0x63, 0xE7, 0x7D, 0x91, 0xA5, 0xE3, 0x51, 0x39, 0x19, 0x97, 0x82, 0xF3, - 0xAA, 0x2C, 0x9C, 0x47, 0x00, 0xB0, 0x37, 0xAE, 0x10, 0xC1, 0x08, 0xC1, 0xD1, 0xFE, 0x18, 0x63, - 0xE4, 0xBD, 0xDF, 0xA6, 0xD2, 0xEF, 0xCC, 0x2E, 0x0C, 0x62, 0xBC, 0xB3, 0xE8, 0x77, 0x96, 0x04, - 0xDA, 0xC1, 0xB5, 0x1B, 0xA5, 0xFB, 0xD6, 0xA4, 0xDF, 0x5A, 0x1B, 0xBB, 0x6B, 0x6F, 0x5B, 0x70, - 0x82, 0x36, 0x26, 0x2E, 0x21, 0x38, 0x11, 0x0C, 0x63, 0xBC, 0x98, 0xAF, 0xBE, 0x7B, 0xF1, 0xEE, - 0xE9, 0xC3, 0xA3, 0x57, 0x67, 0xCB, 0xA6, 0x55, 0x52, 0x69, 0xC6, 0xD9, 0xC1, 0x74, 0x4C, 0x08, - 0xC9, 0xB3, 0x84, 0x51, 0x8A, 0x10, 0xEA, 0xA5, 0x92, 0x52, 0xC5, 0xB5, 0x96, 0xE7, 0x59, 0x8C, - 0xB4, 0x24, 0x82, 0x13, 0x42, 0x7A, 0xA9, 0xF3, 0x3C, 0x7B, 0xFC, 0xE0, 0xF0, 0xB3, 0xA7, 0x0F, - 0x8F, 0x8F, 0xF6, 0x9C, 0x0F, 0xFB, 0xD3, 0x71, 0x22, 0x44, 0xDB, 0x76, 0x88, 0x60, 0xE7, 0xFC, - 0x62, 0xB9, 0x3A, 0xD8, 0x9F, 0xD6, 0x4D, 0xDB, 0xB4, 0x5D, 0xAC, 0x4F, 0x6A, 0xDA, 0xAE, 0x97, - 0xF2, 0xE2, 0x72, 0x16, 0x42, 0x98, 0x8C, 0x4B, 0x84, 0x30, 0x04, 0x5F, 0x64, 0xA9, 0xBB, 0xC9, - 0x84, 0x08, 0xBB, 0x72, 0x84, 0x76, 0x9C, 0x86, 0x77, 0xA5, 0x06, 0xA1, 0x4D, 0x3A, 0xEF, 0x4E, - 0xB5, 0x0C, 0x0C, 0x24, 0x57, 0x78, 0x3B, 0x90, 0x68, 0xC8, 0x2A, 0x47, 0x74, 0xD3, 0xA2, 0xF8, - 0x96, 0x60, 0x62, 0x3C, 0xA4, 0x04, 0x3B, 0xEF, 0x11, 0x42, 0xDE, 0x07, 0x17, 0x1D, 0x5E, 0x37, - 0xE1, 0xDD, 0x6D, 0xF7, 0x89, 0x2D, 0x1B, 0xE5, 0x0D, 0x6C, 0x84, 0x10, 0x06, 0xF6, 0x8B, 0x6D, - 0x70, 0x74, 0x7B, 0x0F, 0x1B, 0xA3, 0x14, 0x60, 0xC3, 0xD4, 0x1C, 0x6D, 0xD7, 0x10, 0x42, 0xEC, - 0xAA, 0x8B, 0x00, 0xF9, 0x5E, 0x77, 0x52, 0x63, 0x8C, 0x7C, 0x08, 0xC1, 0x83, 0xB1, 0x4E, 0x1B, - 0x67, 0x9D, 0xB7, 0x3E, 0x68, 0xEB, 0xAD, 0xFB, 0xA0, 0xCC, 0x09, 0x45, 0xC6, 0x41, 0x8A, 0xAD, - 0xF3, 0xC6, 0x3A, 0x40, 0x40, 0x29, 0xF1, 0x01, 0xC2, 0xD0, 0x47, 0xD2, 0x6F, 0x94, 0xEF, 0x9B, - 0xEB, 0xAD, 0xF3, 0x75, 0xEF, 0xB1, 0x34, 0x94, 0x62, 0x8C, 0xC0, 0x5A, 0x47, 0x30, 0x76, 0x3E, - 0x60, 0x04, 0x42, 0xB0, 0x44, 0xB0, 0x48, 0x45, 0xB0, 0x63, 0x81, 0xC3, 0xD6, 0x26, 0xDF, 0x1D, - 0xFD, 0xDD, 0x75, 0x19, 0xBF, 0xE3, 0xA3, 0x9A, 0xD7, 0x47, 0x8F, 0xBB, 0x46, 0xC5, 0x76, 0x70, - 0x77, 0x3F, 0x7C, 0xBB, 0xC3, 0x1B, 0x63, 0x42, 0x80, 0xBF, 0xFF, 0xF5, 0xB7, 0x9C, 0xF1, 0x77, - 0xA7, 0x97, 0x52, 0x69, 0x00, 0xC0, 0x88, 0x60, 0x0A, 0x52, 0x2A, 0xCA, 0xA8, 0x07, 0x30, 0xDA, - 0x79, 0xEF, 0xB5, 0x52, 0xB1, 0xDD, 0x45, 0x96, 0xA5, 0x8B, 0xD5, 0xDA, 0x58, 0xA7, 0x74, 0x6B, - 0x9D, 0x0F, 0x1E, 0x9A, 0x5E, 0x8E, 0x46, 0xC5, 0xC1, 0xE3, 0xE9, 0x64, 0x5C, 0x95, 0x65, 0x91, - 0xA6, 0xA2, 0x28, 0xB2, 0xD9, 0x7C, 0xB5, 0x5E, 0x37, 0x94, 0xD1, 0xAE, 0xEB, 0xCF, 0x2F, 0xAE, - 0xAA, 0xB2, 0x38, 0xD8, 0x9B, 0xCE, 0xE6, 0x4B, 0xCE, 0xE8, 0x0F, 0x3E, 0x7F, 0x42, 0x19, 0xF7, - 0xDE, 0x1B, 0x63, 0xF6, 0xF7, 0xC7, 0x5A, 0xEB, 0xB2, 0xC8, 0x30, 0xC6, 0x4D, 0x2B, 0x29, 0xC1, - 0xBF, 0xFD, 0xEA, 0x7B, 0xC6, 0xD9, 0x78, 0x5C, 0x71, 0x21, 0x44, 0x22, 0xD2, 0x2C, 0xC5, 0x08, - 0x23, 0x04, 0xB3, 0x95, 0x44, 0x94, 0x5A, 0x1F, 0x3C, 0x20, 0xED, 0xFC, 0xB4, 0x4A, 0x19, 0xF2, - 0x8B, 0x75, 0xAF, 0xB4, 0x49, 0xB3, 0x54, 0x70, 0xAE, 0x94, 0x16, 0x82, 0x33, 0xC6, 0xBC, 0x0F, - 0x94, 0x91, 0x3C, 0x49, 0xBE, 0xFC, 0xF2, 0xEB, 0x5F, 0x7F, 0xF5, 0xBC, 0x6F, 0xFB, 0xFD, 0xFD, - 0xC9, 0x0F, 0xBF, 0xF8, 0x04, 0x21, 0xD4, 0x2B, 0x95, 0xA6, 0x49, 0x91, 0x67, 0x21, 0x04, 0x46, - 0xC9, 0x72, 0x5D, 0x4B, 0xA5, 0x39, 0xA3, 0x3C, 0xB6, 0xFE, 0xF3, 0xE0, 0x42, 0xB0, 0xCE, 0xEF, - 0xEF, 0xEF, 0x37, 0x5D, 0xDF, 0x69, 0xF3, 0xFA, 0xF5, 0xBB, 0x7A, 0x55, 0xC7, 0x5C, 0x36, 0x2E, - 0xB8, 0x54, 0x8A, 0x51, 0x57, 0x16, 0x59, 0x88, 0x06, 0x4E, 0x08, 0x18, 0xA1, 0xA6, 0xEB, 0x38, - 0xA5, 0x20, 0x06, 0xFA, 0x04, 0xEB, 0x3D, 0x58, 0xDB, 0xB6, 0xB2, 0xE9, 0x55, 0xE4, 0xBC, 0xF5, - 0x60, 0x67, 0xF3, 0x65, 0x9A, 0x26, 0x79, 0x9E, 0x25, 0x42, 0x2C, 0x17, 0x6B, 0xCE, 0xE8, 0xB2, - 0x6E, 0xF2, 0x2C, 0x25, 0x04, 0x55, 0x65, 0xFE, 0xCF, 0xFF, 0xE4, 0xA7, 0xEB, 0xA6, 0xFF, 0xD5, - 0x6F, 0x9F, 0x29, 0x6D, 0x70, 0x40, 0x67, 0x97, 0x8B, 0x75, 0xD3, 0x4D, 0x46, 0xC5, 0xE3, 0x07, - 0x87, 0xDA, 0x58, 0xB4, 0x33, 0x71, 0xB0, 0x71, 0x10, 0x47, 0x77, 0xD8, 0xDD, 0x10, 0xE5, 0x5D, - 0x6D, 0xEB, 0xF7, 0xA0, 0x18, 0xEC, 0xEC, 0xA3, 0x9B, 0xEB, 0x3F, 0xB8, 0x38, 0x40, 0xA0, 0x84, - 0x28, 0xA5, 0x7E, 0xFD, 0xF5, 0xCB, 0xCB, 0xD9, 0xBA, 0x69, 0x5A, 0x46, 0xC8, 0x77, 0xCF, 0x4E, - 0x4F, 0x2F, 0xAE, 0xB5, 0x76, 0xDA, 0x58, 0xA9, 0xF4, 0xBA, 0x69, 0x39, 0x67, 0x14, 0x63, 0xE5, - 0x07, 0xBA, 0x17, 0x00, 0x08, 0x01, 0x30, 0x82, 0x34, 0x15, 0x07, 0xFB, 0x53, 0x00, 0x78, 0x77, - 0x7A, 0x5E, 0x14, 0x79, 0xEC, 0x09, 0x3D, 0xAA, 0xB2, 0xD3, 0xF7, 0x57, 0x9F, 0x3E, 0xBE, 0x5F, - 0x15, 0xBA, 0x93, 0x3A, 0x00, 0x58, 0x6F, 0x31, 0xC2, 0x57, 0xD7, 0xF3, 0x75, 0x6D, 0xD7, 0x75, - 0x2B, 0x38, 0x9F, 0x8E, 0x47, 0x5C, 0xF0, 0x37, 0x6F, 0xCF, 0x9C, 0xF7, 0xA3, 0xAA, 0x3C, 0xDC, - 0x9B, 0xFA, 0xE0, 0xDF, 0x9F, 0xCF, 0x16, 0xCB, 0x3A, 0x04, 0xFF, 0xDF, 0xFC, 0xD3, 0x9F, 0x1E, - 0xEC, 0x8F, 0x42, 0x08, 0xC6, 0x58, 0x8C, 0xB0, 0x75, 0xEE, 0xAE, 0xD4, 0x84, 0x0F, 0xC3, 0x94, - 0x7E, 0x6B, 0xED, 0x01, 0xDC, 0x80, 0x06, 0x00, 0x00, 0xC4, 0xE6, 0xE1, 0x04, 0xC7, 0x6B, 0x6E, - 0x64, 0x73, 0x9B, 0x34, 0xBA, 0x75, 0x72, 0xDD, 0x7C, 0x26, 0x42, 0x01, 0xBC, 0xF7, 0xB0, 0x2D, - 0x1B, 0x88, 0xAC, 0xF0, 0x68, 0x53, 0x33, 0xB3, 0xFB, 0x03, 0x36, 0xAD, 0x59, 0x87, 0xED, 0x67, - 0xD8, 0x1B, 0xFE, 0x87, 0x7F, 0xF3, 0xF3, 0x68, 0xAA, 0x6E, 0x10, 0x6D, 0xD8, 0x37, 0x36, 0x5D, - 0x3E, 0xA2, 0x37, 0x0C, 0x36, 0x70, 0x18, 0x10, 0x02, 0xE7, 0x83, 0x52, 0x4E, 0x19, 0xA3, 0xAD, - 0xD3, 0xD6, 0x77, 0x52, 0x6B, 0xE3, 0x7B, 0x6D, 0xEB, 0x5E, 0x77, 0xCA, 0x6A, 0x1B, 0x8C, 0xF5, - 0x6E, 0x33, 0xC1, 0x18, 0x23, 0xC1, 0x08, 0x25, 0x84, 0x51, 0xCC, 0x08, 0x8A, 0x2D, 0xC8, 0x10, - 0xC2, 0x82, 0x91, 0x84, 0x92, 0x8C, 0x53, 0x41, 0x49, 0x9A, 0x30, 0x46, 0x49, 0xCC, 0x64, 0xDF, - 0x2D, 0x58, 0x65, 0x04, 0x73, 0x8A, 0x83, 0x0F, 0x82, 0x91, 0x22, 0xE1, 0x55, 0x9E, 0x14, 0x19, - 0xDF, 0x50, 0x4D, 0x0C, 0x99, 0xAB, 0x30, 0x14, 0x60, 0x92, 0x5B, 0x18, 0x7F, 0xCB, 0x9F, 0x75, - 0x33, 0x0A, 0x1F, 0xEA, 0xFC, 0xBB, 0xAF, 0xEE, 0x1E, 0x77, 0x4F, 0xDE, 0xFA, 0x84, 0xBB, 0x2F, - 0x45, 0xE8, 0xA4, 0x84, 0xF4, 0x52, 0xFD, 0xD5, 0x5F, 0xFF, 0xEA, 0xE5, 0xAB, 0xF7, 0x3E, 0x00, - 0x13, 0x22, 0x04, 0xE8, 0xA5, 0x0A, 0x01, 0x28, 0xA3, 0x3E, 0x84, 0x34, 0x49, 0x9C, 0x77, 0x4A, - 0x69, 0x42, 0x69, 0x96, 0x67, 0x42, 0x24, 0x94, 0xD0, 0xA6, 0x69, 0xB5, 0x31, 0x08, 0x21, 0xEB, - 0x3C, 0x22, 0xF8, 0xF0, 0x70, 0xFF, 0xC1, 0xC9, 0xBD, 0xE9, 0x64, 0x24, 0x7B, 0xA9, 0xB4, 0x06, - 0xC0, 0x84, 0x90, 0x22, 0xCF, 0x16, 0xAB, 0x75, 0x0C, 0x08, 0x08, 0xCE, 0x92, 0x44, 0xA4, 0x69, - 0x7A, 0x70, 0x30, 0x3D, 0x39, 0x39, 0x4C, 0xD3, 0x24, 0x9E, 0x11, 0x9C, 0x67, 0x69, 0x72, 0x78, - 0x30, 0x5D, 0x2E, 0x56, 0x9D, 0x54, 0x00, 0xC1, 0x18, 0xBB, 0xBF, 0x3F, 0x1D, 0x8F, 0x2A, 0xAD, - 0x0D, 0x00, 0x20, 0x84, 0xB3, 0x44, 0xBC, 0x7A, 0xF3, 0x96, 0x32, 0xE1, 0x03, 0x08, 0x21, 0xAA, - 0xF1, 0x48, 0x08, 0xB1, 0x58, 0xD6, 0x2F, 0x5F, 0xBD, 0x4B, 0x12, 0x41, 0x28, 0x3F, 0xBF, 0x5A, - 0x46, 0x1A, 0xD2, 0x3C, 0xCB, 0x38, 0x67, 0x94, 0xD2, 0x10, 0xBC, 0x73, 0xAE, 0x69, 0xDA, 0xEF, - 0x9F, 0xBF, 0xBE, 0x9A, 0x2D, 0xB2, 0x2C, 0xFD, 0xEC, 0xD3, 0x27, 0xD6, 0xFA, 0xB6, 0xED, 0x28, - 0xA3, 0x21, 0x00, 0xA3, 0xC4, 0x39, 0x8F, 0x30, 0x9E, 0x2F, 0xD7, 0x9C, 0xB3, 0xAA, 0xCC, 0x0E, - 0x0E, 0x26, 0x17, 0x57, 0x8B, 0xF3, 0xCB, 0xB9, 0x51, 0xA6, 0x2C, 0x8B, 0xC9, 0xB8, 0x0A, 0x00, - 0x9C, 0xF3, 0x7B, 0x47, 0x07, 0x4D, 0xDD, 0xCC, 0x67, 0x73, 0x63, 0x2C, 0xE7, 0xDC, 0x39, 0x0F, - 0x10, 0xAA, 0xAA, 0xEC, 0xBA, 0x1E, 0x23, 0xA4, 0x8C, 0x61, 0x94, 0x71, 0xC6, 0x03, 0x0A, 0x9C, - 0x71, 0xCE, 0x39, 0x26, 0xD8, 0xF9, 0x80, 0x10, 0x76, 0xDE, 0x6B, 0x65, 0x42, 0x08, 0x89, 0x60, - 0xDA, 0x58, 0x40, 0x48, 0x69, 0xEB, 0x83, 0xCF, 0xB3, 0x74, 0xB9, 0xAA, 0x9B, 0xA6, 0x4B, 0x84, - 0xA8, 0xCA, 0x0C, 0x61, 0x6C, 0x7D, 0xB0, 0xD6, 0xE5, 0x29, 0x7F, 0x78, 0x72, 0x10, 0x02, 0x9C, - 0x5F, 0xCE, 0xBB, 0x4E, 0x9D, 0x5F, 0x2D, 0xBD, 0xF7, 0x9F, 0x3E, 0x3E, 0xC6, 0x9B, 0xE6, 0x35, - 0x71, 0x4B, 0xBF, 0x35, 0x9B, 0xB7, 0x9E, 0x7E, 0xD4, 0xAF, 0xFA, 0xD1, 0xF5, 0x70, 0x6B, 0x63, - 0xDB, 0x39, 0x89, 0xB6, 0x2A, 0x60, 0x22, 0x18, 0x67, 0x4C, 0x70, 0xFA, 0x7F, 0xFD, 0xD5, 0x2F, - 0xBF, 0x7B, 0x33, 0xE3, 0x5C, 0xD4, 0x8D, 0xCC, 0xF2, 0xB4, 0x28, 0x32, 0x65, 0x43, 0x9E, 0xA7, - 0x75, 0xD3, 0x2D, 0x16, 0xAB, 0xBA, 0x6E, 0xAF, 0xAF, 0x97, 0xB3, 0xC5, 0xDA, 0x18, 0x13, 0xF3, - 0x7B, 0xBB, 0xAE, 0x8F, 0x9A, 0x48, 0xD3, 0xB6, 0x98, 0x50, 0x4A, 0x49, 0x9E, 0xA5, 0x4A, 0xE9, - 0xD5, 0xAA, 0xF6, 0xDE, 0xFF, 0xE4, 0x87, 0x4F, 0xD7, 0x75, 0xFB, 0xFE, 0x62, 0x3E, 0x19, 0x15, - 0x9C, 0xD1, 0x2F, 0xBF, 0xFA, 0xDE, 0xFB, 0x60, 0xAC, 0x09, 0x00, 0x94, 0x50, 0x21, 0x38, 0x21, - 0x84, 0x52, 0x12, 0xB7, 0xA5, 0xC7, 0x0F, 0xEF, 0xFD, 0xE8, 0xF3, 0x27, 0x4F, 0x1F, 0x1F, 0xFF, - 0xE0, 0xE9, 0x23, 0x21, 0xD8, 0xDB, 0xD3, 0x0B, 0x8C, 0xE9, 0x8B, 0x77, 0x97, 0xB3, 0xC5, 0x3A, - 0x11, 0x8C, 0x51, 0xAA, 0xB4, 0x11, 0x82, 0x6D, 0xE3, 0x58, 0x77, 0x55, 0xB0, 0xED, 0x9D, 0xC6, - 0xDA, 0xD0, 0x8D, 0x63, 0x0A, 0x6D, 0xEF, 0x76, 0x23, 0x0E, 0x68, 0x53, 0x05, 0x84, 0xB6, 0x96, - 0x0B, 0xD9, 0x9E, 0xDC, 0x0E, 0xE3, 0x66, 0xB8, 0xFC, 0xD6, 0x68, 0xDB, 0x98, 0xF9, 0x61, 0x9B, - 0x09, 0x86, 0x80, 0x10, 0x1C, 0xC3, 0x2F, 0x18, 0x63, 0x1A, 0x89, 0x1B, 0x08, 0xA1, 0x04, 0x93, - 0xA8, 0xCB, 0x61, 0x44, 0xFE, 0xEC, 0xDF, 0xFE, 0x7C, 0xE0, 0xBA, 0xD8, 0xFC, 0x6A, 0xB8, 0x81, - 0xB3, 0xAD, 0x0E, 0x3E, 0x78, 0xAF, 0x86, 0x60, 0x34, 0x02, 0x18, 0xBA, 0xD7, 0x06, 0xEB, 0xBC, - 0xF7, 0xE0, 0x7C, 0x90, 0xC6, 0x86, 0x9D, 0x4A, 0xCE, 0x0D, 0xA8, 0x44, 0xBD, 0x1E, 0x08, 0x46, - 0x45, 0x42, 0x47, 0x45, 0x82, 0x11, 0x4A, 0x39, 0x2B, 0x52, 0x36, 0x2E, 0x93, 0x2C, 0x61, 0x65, - 0xC6, 0xAB, 0x3C, 0x19, 0xE5, 0xA2, 0xCA, 0x45, 0xCA, 0x29, 0xC1, 0x28, 0xE5, 0x94, 0x52, 0x8C, - 0x11, 0x4A, 0x38, 0x2D, 0x32, 0x9E, 0x30, 0xC2, 0x28, 0x26, 0x18, 0x15, 0xA9, 0x60, 0x14, 0x53, - 0x4A, 0xD2, 0x84, 0x73, 0x36, 0xC4, 0xCE, 0xA2, 0x46, 0xB6, 0x9B, 0x85, 0x7F, 0x0B, 0x80, 0x76, - 0xB7, 0xD0, 0x0F, 0xC2, 0xEA, 0xFF, 0xB0, 0x95, 0xFA, 0x81, 0x53, 0xF3, 0x0E, 0x84, 0xED, 0x3A, - 0xC5, 0xC2, 0x26, 0x4D, 0xD9, 0x39, 0xF7, 0x1F, 0xFF, 0xEA, 0xEF, 0xAF, 0xAE, 0x97, 0x1B, 0xE2, - 0x2A, 0x9F, 0xA6, 0x22, 0x11, 0xC2, 0x38, 0x87, 0x31, 0x4A, 0xD2, 0x24, 0x56, 0x51, 0x31, 0x21, - 0x08, 0x21, 0x5D, 0xD7, 0xAD, 0x96, 0xEB, 0xBA, 0xE9, 0x22, 0x9D, 0x86, 0x71, 0xCE, 0xFB, 0x90, - 0x67, 0x39, 0xA5, 0xF4, 0xF4, 0xF4, 0x7C, 0xB9, 0x58, 0x4A, 0x29, 0xB9, 0x10, 0x75, 0xDB, 0xD5, - 0x75, 0x83, 0x20, 0x94, 0x65, 0x21, 0x8D, 0x49, 0x13, 0xF1, 0xE0, 0xFE, 0xBD, 0xC3, 0x83, 0x29, - 0x65, 0x84, 0x52, 0x4A, 0x29, 0x8D, 0x3D, 0x65, 0xD1, 0x50, 0x5B, 0xEB, 0x8C, 0x56, 0xEB, 0x55, - 0x3D, 0x9E, 0x8C, 0x27, 0x93, 0x51, 0x9A, 0xA6, 0x6D, 0xDB, 0x2D, 0xAF, 0xAF, 0xAA, 0x51, 0x39, - 0x99, 0x8E, 0xB5, 0x92, 0x5F, 0x7E, 0xF9, 0x55, 0x9A, 0x15, 0xAB, 0xBA, 0x33, 0xD6, 0x63, 0x42, - 0xAE, 0x67, 0x4B, 0xA5, 0xF5, 0x62, 0xBE, 0xAC, 0x46, 0x65, 0x9A, 0x66, 0xA7, 0x17, 0x73, 0xCA, - 0x68, 0xEC, 0xE5, 0x1E, 0x2D, 0x3B, 0x29, 0xD5, 0xC5, 0xE5, 0xEC, 0xF2, 0x72, 0x21, 0xFB, 0x0E, - 0x10, 0xFE, 0xA3, 0x3F, 0xFC, 0x49, 0x51, 0xE6, 0x17, 0x97, 0xD7, 0x67, 0x67, 0x17, 0x9F, 0x3C, - 0x79, 0xB8, 0x37, 0x1D, 0x71, 0x4A, 0x66, 0xB3, 0xF9, 0xEB, 0x77, 0x67, 0x75, 0xD3, 0xC6, 0x84, - 0x7B, 0x8C, 0xA0, 0x69, 0x3A, 0x00, 0x22, 0x04, 0x17, 0x82, 0x53, 0x4A, 0x8D, 0xB5, 0x80, 0x50, - 0x5C, 0x7F, 0xF3, 0xC5, 0x72, 0x3E, 0x5B, 0xA2, 0x8D, 0x61, 0x1E, 0x20, 0x3C, 0x7D, 0xFA, 0x88, - 0x31, 0xB6, 0x5A, 0xAD, 0x31, 0xC2, 0x91, 0x6E, 0x87, 0x52, 0x1A, 0xBC, 0x67, 0x8C, 0x61, 0x84, - 0x8D, 0x35, 0x9C, 0x33, 0x08, 0x28, 0xB2, 0xA4, 0xA4, 0x82, 0x19, 0xEB, 0x63, 0x13, 0x12, 0x82, - 0xF1, 0x64, 0x5C, 0x11, 0x82, 0xE7, 0xCB, 0x75, 0x00, 0x60, 0x94, 0x55, 0x65, 0x1E, 0x69, 0xAC, - 0x8D, 0x75, 0x08, 0xD0, 0xD1, 0xC1, 0x78, 0x32, 0x2A, 0xDF, 0x5F, 0xCC, 0x4E, 0xCF, 0xAF, 0xAA, - 0xAA, 0x08, 0x01, 0x94, 0xD2, 0x08, 0xA1, 0x24, 0xE1, 0x5B, 0xFF, 0xC9, 0x1D, 0x2C, 0xFB, 0x5D, - 0x2B, 0xE2, 0x83, 0xA9, 0xDF, 0x7D, 0xEF, 0xF6, 0xEF, 0x5D, 0x69, 0x8F, 0x7A, 0x0A, 0x21, 0x84, - 0x31, 0xF2, 0xFA, 0xDD, 0x65, 0xDB, 0xAB, 0x5F, 0xFD, 0xF6, 0xF9, 0xAF, 0xBE, 0x79, 0xB7, 0x37, - 0x19, 0x31, 0x4A, 0xBF, 0xF8, 0xEC, 0xE1, 0xF1, 0xE1, 0xB4, 0xED, 0xFA, 0x55, 0xDD, 0xAF, 0x9B, - 0x1E, 0x21, 0xD4, 0x76, 0x92, 0x11, 0x1A, 0xE9, 0x43, 0xB4, 0x36, 0xA3, 0xAA, 0x28, 0xF2, 0xAC, - 0xEB, 0xA5, 0x52, 0x86, 0x10, 0xE2, 0x3D, 0x20, 0x08, 0xB1, 0x5B, 0x4A, 0x5D, 0xB7, 0xB3, 0xC5, - 0x0A, 0x00, 0x3D, 0x79, 0x78, 0x4C, 0x30, 0xFE, 0xF4, 0xC9, 0x49, 0x9A, 0xF0, 0xF9, 0xB2, 0x16, - 0x42, 0xAC, 0xD6, 0xCD, 0x62, 0x59, 0x53, 0x42, 0xE3, 0x9D, 0x86, 0xC1, 0x9D, 0x83, 0x4E, 0x8E, - 0x0F, 0x8E, 0x0F, 0xA7, 0x51, 0x7C, 0x12, 0xC1, 0x28, 0x25, 0x65, 0x59, 0x4C, 0x46, 0xA5, 0x10, - 0xBC, 0x57, 0xE6, 0xEB, 0x67, 0xEF, 0x5E, 0xBD, 0xB9, 0x78, 0x75, 0x7A, 0xBD, 0x37, 0x29, 0xAB, - 0x22, 0x8D, 0xF7, 0xB3, 0xF1, 0x5C, 0xA3, 0xBB, 0xF7, 0xB8, 0x7D, 0x42, 0x36, 0x29, 0xAA, 0x18, - 0x63, 0xB2, 0xF5, 0xEA, 0x23, 0x84, 0x36, 0x98, 0x85, 0x37, 0x4A, 0x11, 0xDE, 0x49, 0xFA, 0xDF, - 0xCD, 0xD1, 0x8F, 0x1F, 0x17, 0x36, 0x3D, 0xA1, 0x01, 0x00, 0x93, 0xE1, 0x63, 0x08, 0x41, 0x94, - 0x10, 0x46, 0x09, 0xC1, 0x08, 0x63, 0x4C, 0x28, 0x8A, 0x84, 0xD1, 0x18, 0x63, 0x8A, 0x11, 0xC5, - 0x38, 0xA6, 0x3B, 0x50, 0x08, 0x00, 0x78, 0xD0, 0x12, 0x69, 0xAC, 0x08, 0x05, 0xB4, 0xA5, 0xC0, - 0xBD, 0x99, 0x8C, 0x0D, 0xCA, 0x02, 0x6C, 0xBD, 0x9F, 0xB1, 0xDB, 0xFB, 0xF0, 0x9C, 0x20, 0x1C, - 0x10, 0xEC, 0x5E, 0x16, 0x95, 0xE1, 0x58, 0x4B, 0x8F, 0x11, 0xB2, 0x3E, 0x2C, 0x1B, 0x09, 0x00, - 0x8C, 0x62, 0xE4, 0x07, 0x2F, 0x9D, 0xC6, 0x37, 0xB7, 0xCA, 0x28, 0xCE, 0x13, 0x86, 0x11, 0x8A, - 0x36, 0xA3, 0xB5, 0x4E, 0x1B, 0x8B, 0x11, 0xE6, 0x9C, 0x72, 0x46, 0x04, 0xA3, 0x9B, 0xCC, 0x11, - 0xD8, 0x0C, 0xD4, 0xF0, 0x21, 0xB7, 0xAA, 0xB1, 0x60, 0x87, 0xA3, 0x02, 0x86, 0x08, 0x37, 0xF9, - 0x28, 0x42, 0xDD, 0x5D, 0x9D, 0xBB, 0xFA, 0xF3, 0xDD, 0x57, 0x3F, 0x7A, 0x7E, 0xFB, 0xAA, 0x52, - 0x9A, 0x52, 0xFC, 0xE6, 0xCD, 0xF9, 0x8B, 0x97, 0xA7, 0x94, 0x32, 0xCA, 0x18, 0xA5, 0x04, 0x42, - 0xB0, 0x46, 0xC7, 0xD8, 0xAB, 0x0F, 0xC1, 0x6A, 0xDB, 0x1B, 0xEB, 0x43, 0x90, 0x4A, 0x4B, 0x29, - 0x05, 0xE7, 0x8C, 0x73, 0x41, 0x30, 0xC1, 0xC4, 0x87, 0x9E, 0x0A, 0x4E, 0x08, 0xEB, 0xBB, 0xBE, - 0xAE, 0x9B, 0x24, 0x49, 0x26, 0xE3, 0x32, 0x4D, 0x44, 0x51, 0xE4, 0x57, 0xF3, 0xA5, 0xEA, 0xE5, - 0x74, 0x32, 0x9A, 0x8C, 0x2B, 0xA9, 0x6D, 0x59, 0x16, 0x9C, 0xD2, 0x5E, 0x2A, 0x21, 0x78, 0xF0, - 0xE0, 0xBD, 0xC7, 0x6C, 0xC8, 0xA9, 0xA9, 0xEB, 0x0E, 0x82, 0x9B, 0x4E, 0xC6, 0x9F, 0x7D, 0xFE, - 0x89, 0xF7, 0xE1, 0xFC, 0x6A, 0xAE, 0xFA, 0xEE, 0x60, 0x5C, 0xB0, 0xC9, 0x31, 0x65, 0xA2, 0x5E, - 0xAF, 0xE7, 0x8B, 0x55, 0x9E, 0x65, 0x47, 0x07, 0x13, 0x69, 0x9C, 0x73, 0xE1, 0xE8, 0x70, 0x4F, - 0x08, 0x1E, 0x13, 0x7E, 0xA4, 0x52, 0x17, 0x57, 0x2B, 0x4C, 0x10, 0x84, 0x60, 0x8D, 0xC3, 0x80, - 0x2D, 0xD8, 0x77, 0x67, 0x17, 0x7D, 0xAF, 0x30, 0x42, 0x18, 0xA3, 0xD9, 0x62, 0x75, 0x7E, 0x39, - 0x37, 0x2E, 0x3C, 0x7D, 0xF2, 0x60, 0x5C, 0x15, 0xD6, 0xDA, 0xC8, 0x69, 0xE2, 0x9C, 0xB3, 0xCE, - 0x1F, 0xDF, 0x3B, 0xD2, 0xC6, 0x54, 0x65, 0x91, 0x08, 0x4E, 0x30, 0x5A, 0x2C, 0xD7, 0x3E, 0x04, - 0x82, 0xB1, 0x74, 0x3E, 0x11, 0xA8, 0xEB, 0xA5, 0xB1, 0x7E, 0x54, 0xE5, 0xB3, 0xF9, 0x72, 0x31, - 0x5F, 0x32, 0x4A, 0xF3, 0x2C, 0xF3, 0xC1, 0x87, 0x10, 0x18, 0x63, 0xC6, 0xD8, 0xE9, 0x64, 0xBC, - 0x5C, 0xAE, 0xD6, 0xEB, 0x26, 0x62, 0x3A, 0x42, 0x48, 0x1B, 0x8B, 0x7A, 0x29, 0x38, 0x23, 0x08, - 0xF7, 0xBD, 0xF2, 0x21, 0x60, 0x32, 0x30, 0x62, 0x12, 0x82, 0x9C, 0x73, 0x5A, 0xEB, 0xE5, 0xCA, - 0x4F, 0x27, 0x15, 0x67, 0x6C, 0x6F, 0x6F, 0x02, 0x3E, 0x5C, 0xCD, 0x96, 0x84, 0x92, 0xB2, 0x48, - 0xDB, 0xA6, 0x2F, 0x8B, 0x5C, 0x59, 0x67, 0x3A, 0x7F, 0xB8, 0x3F, 0xFE, 0x57, 0xFF, 0xED, 0x9F, - 0x7E, 0xF9, 0xCD, 0x8B, 0xAB, 0xEB, 0xD5, 0xF9, 0xD5, 0x62, 0xBD, 0xEE, 0x04, 0x27, 0xFF, 0xD5, - 0x3F, 0xFB, 0x43, 0x8C, 0x90, 0xBB, 0x93, 0x67, 0xB0, 0xBB, 0x34, 0xEE, 0x7A, 0xC4, 0x76, 0x97, - 0xCD, 0xEF, 0x59, 0x0F, 0xDB, 0x55, 0x14, 0x42, 0xC0, 0x18, 0xA5, 0x82, 0x2F, 0x16, 0xEB, 0xBF, - 0xF9, 0xFB, 0xAF, 0x67, 0x8D, 0x9E, 0x8E, 0x47, 0x5F, 0x7F, 0xFB, 0x2A, 0x40, 0x70, 0xCE, 0x4D, - 0xC6, 0xE5, 0x8B, 0xD7, 0xEF, 0xEB, 0xA6, 0xBB, 0xB7, 0x3F, 0xFE, 0xEE, 0xC5, 0xDB, 0x34, 0x4D, - 0x47, 0xA3, 0x72, 0x3A, 0x1E, 0x35, 0x5D, 0xEF, 0x9C, 0xE7, 0x9C, 0x4D, 0x27, 0x23, 0x00, 0xB4, - 0x5C, 0xAE, 0xFC, 0xE0, 0x7B, 0x0D, 0x08, 0xA1, 0xBA, 0xE9, 0xD2, 0x44, 0x18, 0xEB, 0xB3, 0x2C, - 0xDD, 0xDF, 0x1B, 0xBF, 0x7C, 0xFD, 0x7E, 0xB1, 0x6A, 0x9E, 0x3C, 0x38, 0x44, 0x18, 0x25, 0x82, - 0x9F, 0x1C, 0xED, 0x7D, 0xFA, 0xE8, 0xDE, 0x9F, 0xFE, 0xF1, 0x0F, 0xDF, 0xBD, 0xBF, 0x8E, 0x36, - 0x8B, 0xD2, 0x3A, 0x04, 0x78, 0xF9, 0xF6, 0xBC, 0xCC, 0xD3, 0x83, 0xBD, 0x11, 0xE7, 0xEC, 0xFC, - 0x72, 0xE6, 0x7D, 0x58, 0xAE, 0x5E, 0xE5, 0x69, 0x72, 0x72, 0x7C, 0xC0, 0x28, 0x29, 0x8B, 0xD4, - 0x5A, 0x47, 0x30, 0x7A, 0xF9, 0xFA, 0xEC, 0xD1, 0x83, 0xE3, 0xFF, 0xE7, 0x17, 0x5F, 0x3D, 0x7D, - 0x74, 0xF4, 0x93, 0x1F, 0x3C, 0xD4, 0xDA, 0x64, 0x69, 0x12, 0xCB, 0x78, 0x00, 0x3E, 0xC2, 0xC3, - 0x0C, 0x3B, 0xBE, 0x1A, 0x34, 0x40, 0x12, 0x10, 0x00, 0xEF, 0x6F, 0x18, 0x90, 0xA2, 0xEC, 0xED, - 0xF4, 0xDA, 0x89, 0xB1, 0x8E, 0x41, 0x4E, 0x23, 0x3C, 0x6E, 0x3F, 0x3C, 0x0C, 0x1C, 0xA3, 0x88, - 0x62, 0x8C, 0x10, 0x84, 0x10, 0xC8, 0xB6, 0xDA, 0x09, 0x80, 0xD0, 0xAD, 0xBE, 0x32, 0x78, 0xFD, - 0x01, 0xA2, 0x52, 0x85, 0xC8, 0xFF, 0xF8, 0xE7, 0x7F, 0x39, 0x7C, 0x56, 0x18, 0x3C, 0x65, 0x18, - 0x03, 0x46, 0xF1, 0x1F, 0xC6, 0x68, 0x50, 0xA9, 0x10, 0x42, 0x64, 0xAB, 0x19, 0x02, 0x8A, 0x54, - 0xF5, 0x61, 0xB3, 0xE1, 0x6C, 0xBC, 0x0C, 0x5B, 0x47, 0xD5, 0xE6, 0x19, 0x02, 0x00, 0xA0, 0x08, - 0xFB, 0x00, 0x31, 0x03, 0x56, 0x30, 0x9A, 0x30, 0xCA, 0x39, 0xE1, 0x8C, 0x6A, 0xE3, 0x00, 0x21, - 0x82, 0x71, 0x95, 0x27, 0x69, 0xC2, 0x11, 0x42, 0x82, 0xB3, 0x2C, 0xE1, 0x59, 0xC2, 0x53, 0xC1, - 0x04, 0x67, 0x31, 0x9E, 0x10, 0xCB, 0x86, 0x19, 0xA3, 0x94, 0x12, 0x4A, 0x09, 0xE7, 0x2C, 0x3E, - 0xDE, 0xE1, 0xFF, 0xC2, 0xDB, 0x92, 0xA3, 0xBB, 0x0E, 0xF8, 0x8F, 0xAE, 0xB3, 0xED, 0x71, 0x77, - 0x56, 0x6E, 0x5D, 0xB0, 0x3D, 0x3E, 0x4A, 0x0D, 0xF4, 0xE1, 0xE2, 0x0E, 0x9C, 0xD1, 0x57, 0x6F, - 0xDE, 0xBF, 0x7B, 0x77, 0x89, 0x10, 0x22, 0x04, 0x0B, 0xC1, 0xB3, 0x2C, 0x21, 0x18, 0xD5, 0x4D, - 0xDB, 0x77, 0x7D, 0xDF, 0xAB, 0xC5, 0xB2, 0x46, 0x84, 0xF8, 0x10, 0x16, 0xCB, 0x35, 0x42, 0x78, - 0xDD, 0x74, 0x4A, 0x99, 0xD8, 0x4F, 0xBB, 0x57, 0x4A, 0x49, 0xED, 0x9D, 0xA7, 0x94, 0x72, 0xCE, - 0x93, 0x54, 0x64, 0x79, 0xC6, 0x39, 0x93, 0xCA, 0xB4, 0x6D, 0x57, 0xE4, 0xE9, 0x78, 0x54, 0x16, - 0x45, 0xD6, 0x74, 0xFD, 0xD9, 0xF9, 0x35, 0x02, 0x34, 0x19, 0x57, 0xF1, 0xC7, 0x30, 0x4E, 0x95, - 0x54, 0x00, 0xA0, 0x8D, 0xEE, 0x7B, 0x99, 0x66, 0x69, 0x96, 0x65, 0x5A, 0xEB, 0xF9, 0x62, 0x55, - 0xA6, 0xF4, 0x07, 0x4F, 0x8E, 0x9F, 0x3C, 0x3E, 0x4E, 0x13, 0x71, 0x39, 0x5B, 0xB9, 0x00, 0x1E, - 0xE0, 0x87, 0x5F, 0x7C, 0x96, 0x17, 0x05, 0x67, 0x3C, 0x4D, 0x45, 0xDB, 0xF6, 0x6D, 0xDB, 0xC7, - 0x6E, 0x20, 0x8C, 0x31, 0xA5, 0x14, 0x42, 0xA8, 0xEF, 0xD5, 0x6C, 0xB1, 0x94, 0xBD, 0x8A, 0xCC, - 0x22, 0x59, 0x9A, 0x4C, 0x26, 0x15, 0x04, 0x47, 0x08, 0xA9, 0x9B, 0x46, 0x24, 0xFC, 0x70, 0x7F, - 0x82, 0x09, 0x2A, 0xF2, 0x6C, 0x3C, 0xAA, 0x10, 0x40, 0xDB, 0xF5, 0x88, 0x60, 0xCE, 0x18, 0xA5, - 0x94, 0x51, 0xEA, 0xBC, 0xB7, 0xCE, 0x17, 0x45, 0x2E, 0xA5, 0xAC, 0x9B, 0x2E, 0x4B, 0x85, 0x73, - 0x2E, 0x20, 0x5C, 0xD7, 0xCD, 0xCB, 0x97, 0x6F, 0x7C, 0x08, 0xCB, 0xC5, 0xAA, 0xEF, 0x3A, 0x9E, - 0x24, 0x18, 0xA1, 0x34, 0x4B, 0x17, 0xCB, 0x65, 0x59, 0x96, 0xCB, 0x55, 0xED, 0x9D, 0x1B, 0x32, - 0x13, 0x09, 0xA1, 0x34, 0x5A, 0x94, 0x1B, 0x9E, 0x3C, 0x8C, 0x8C, 0x75, 0x10, 0xC0, 0x5A, 0x87, - 0x09, 0x8E, 0xAE, 0x6E, 0x80, 0xC8, 0x1C, 0xE5, 0xAD, 0x75, 0x55, 0x91, 0x3D, 0x79, 0x74, 0xA2, - 0xB4, 0xAE, 0xEB, 0x0E, 0x01, 0xF8, 0x10, 0x16, 0xCB, 0x3A, 0x4B, 0x13, 0xA5, 0xCD, 0x6C, 0x51, - 0xBF, 0x3B, 0xBB, 0x7C, 0x74, 0xFF, 0xE8, 0xD3, 0x4F, 0x4E, 0x30, 0xC2, 0xDE, 0x87, 0x5E, 0xEA, - 0x5E, 0x2A, 0x82, 0x71, 0x59, 0x64, 0x3B, 0x74, 0x34, 0xC3, 0x12, 0xB8, 0x05, 0x61, 0xB7, 0xD6, - 0xC6, 0xDD, 0x63, 0x57, 0xEB, 0xBF, 0xA5, 0xA0, 0x15, 0x79, 0x3A, 0x5F, 0xD4, 0xEF, 0xCE, 0x67, - 0x6F, 0xDE, 0x5E, 0xFC, 0x1F, 0x7F, 0xF5, 0x65, 0x9E, 0xE7, 0x69, 0x2A, 0x02, 0x40, 0xD7, 0x6B, - 0xAD, 0x4D, 0x51, 0x64, 0xDF, 0x3C, 0x7B, 0xED, 0x5C, 0xE8, 0x95, 0x09, 0x80, 0x08, 0xC1, 0x10, - 0x60, 0xBE, 0x5C, 0xC7, 0x37, 0x22, 0x8C, 0xA4, 0x54, 0x6D, 0xD7, 0xD5, 0x75, 0x6B, 0x8C, 0xDD, - 0xEE, 0xD9, 0xDE, 0x87, 0xCF, 0x9E, 0x3E, 0xFC, 0xC1, 0x67, 0x8F, 0xBE, 0xFB, 0xFE, 0x4D, 0x55, - 0x15, 0x59, 0x9A, 0xE4, 0x59, 0xF2, 0xF8, 0xE1, 0x11, 0x02, 0xE8, 0xA4, 0x66, 0x94, 0xC4, 0xF4, - 0xA3, 0xA3, 0xFD, 0x2A, 0xCF, 0x12, 0x82, 0x91, 0x0F, 0x70, 0xEF, 0x70, 0x7A, 0x74, 0x30, 0xA1, - 0x14, 0x5F, 0xCF, 0x57, 0xE7, 0x97, 0xF3, 0xF3, 0xAB, 0xF9, 0x62, 0xBE, 0xBA, 0x9E, 0xAF, 0xB4, - 0xB1, 0x07, 0x7B, 0xE3, 0x44, 0xF0, 0x3C, 0x4B, 0xD6, 0x75, 0x9B, 0x26, 0x22, 0xCB, 0xD2, 0xD3, - 0xF7, 0x57, 0x17, 0x57, 0xF3, 0xD3, 0x8B, 0xF9, 0xDB, 0xF7, 0xB3, 0xD3, 0xF3, 0xF9, 0xD3, 0x47, - 0xF7, 0xA2, 0xDB, 0x86, 0x73, 0xB6, 0xAB, 0x8E, 0x6D, 0xE5, 0x6E, 0x93, 0x62, 0x82, 0x76, 0xC9, - 0x16, 0xB6, 0xC6, 0x63, 0xD4, 0x28, 0xA2, 0x11, 0x8A, 0x76, 0x7A, 0x3C, 0xDF, 0x52, 0x26, 0x76, - 0xDF, 0x48, 0x30, 0x22, 0x43, 0x72, 0xC6, 0xED, 0x92, 0xE7, 0x6D, 0xB4, 0x64, 0xF3, 0x60, 0x6B, - 0x8A, 0x06, 0xF2, 0x67, 0xFF, 0xEE, 0xE7, 0xE8, 0xC6, 0x56, 0x84, 0xAD, 0xAC, 0x22, 0x14, 0xFB, - 0x9B, 0x0D, 0xFF, 0xC8, 0xF0, 0x74, 0x03, 0xA0, 0x9B, 0x7E, 0x8A, 0x9B, 0xD8, 0x42, 0x08, 0x80, - 0xC2, 0x86, 0xD2, 0x88, 0x11, 0x1C, 0x0B, 0x8F, 0x62, 0x8E, 0x6B, 0xF0, 0x21, 0xE1, 0x74, 0x7F, - 0x9C, 0x1D, 0xEF, 0x95, 0xD3, 0x51, 0x36, 0xA9, 0xB2, 0x71, 0x99, 0x96, 0x79, 0x72, 0x30, 0xAD, - 0xF6, 0x46, 0xD9, 0xB8, 0xCA, 0xAA, 0x32, 0x4D, 0x04, 0xE3, 0x94, 0x08, 0xCE, 0x28, 0xC1, 0x3A, - 0x26, 0x6E, 0x84, 0x20, 0x38, 0x4D, 0x12, 0x46, 0x29, 0xDD, 0x80, 0x17, 0x8D, 0x89, 0x2A, 0xDB, - 0x41, 0x8C, 0xC7, 0x4E, 0x78, 0xE8, 0x76, 0xB6, 0xCE, 0x76, 0x39, 0x6E, 0xD7, 0xD6, 0xEE, 0xB8, - 0x6C, 0x2D, 0x47, 0x3F, 0x34, 0x9A, 0x8E, 0xE4, 0xEE, 0xC3, 0xC3, 0x2D, 0x91, 0xDB, 0xF6, 0xAF, - 0xDF, 0xD0, 0xC9, 0xFA, 0x48, 0xAB, 0x1A, 0x00, 0x00, 0x86, 0x7A, 0x43, 0x6B, 0x31, 0xC6, 0xCF, - 0x5F, 0xBE, 0xFB, 0xC5, 0xDF, 0xFE, 0x06, 0x00, 0x62, 0xB9, 0xB5, 0xB3, 0x06, 0x01, 0x30, 0xCE, - 0x11, 0xC6, 0x52, 0x5B, 0x6D, 0x2C, 0x65, 0x2C, 0x49, 0x44, 0x6C, 0x3B, 0xD4, 0xF5, 0xAA, 0xD7, - 0xCA, 0xFB, 0x80, 0x09, 0x31, 0xCE, 0xF5, 0x9D, 0x74, 0xCE, 0xA5, 0x59, 0x9A, 0x24, 0x22, 0x78, - 0xBF, 0x5C, 0xAE, 0xDB, 0xA6, 0x47, 0x08, 0xF5, 0x7D, 0xAF, 0x8D, 0x55, 0xCA, 0x54, 0x65, 0xBE, - 0x58, 0x35, 0x79, 0x96, 0x0A, 0xC1, 0x8B, 0x3C, 0xAB, 0x46, 0x39, 0xC6, 0x08, 0x82, 0x7F, 0xF1, - 0xFC, 0xE5, 0xF9, 0xE5, 0xB5, 0xD4, 0xBA, 0xC8, 0xF3, 0x22, 0xCF, 0x93, 0x84, 0x23, 0x00, 0x8C, - 0xE1, 0xC9, 0x83, 0xBD, 0x83, 0xBD, 0x51, 0x9A, 0x66, 0xB3, 0xF9, 0xEA, 0xAB, 0xEF, 0xDF, 0x68, - 0xE3, 0x11, 0x42, 0x45, 0x9E, 0x53, 0xC6, 0x7A, 0xA9, 0x00, 0xA1, 0xC5, 0xAA, 0x6E, 0xDA, 0x2E, - 0x3A, 0x20, 0x52, 0xC1, 0x57, 0xCB, 0xBA, 0xEB, 0x5A, 0x8C, 0xF1, 0xDE, 0xDE, 0x94, 0x31, 0xAA, - 0x94, 0xC6, 0x88, 0xD4, 0x75, 0x4B, 0x28, 0x31, 0xC6, 0x5C, 0xCF, 0x16, 0x8C, 0xB3, 0xC3, 0x83, - 0x29, 0xE7, 0x94, 0x10, 0x32, 0x19, 0x8F, 0x84, 0x60, 0x14, 0xE3, 0xD9, 0x6C, 0xC9, 0x04, 0xCF, - 0xB2, 0x14, 0x63, 0xC4, 0x28, 0x33, 0xC6, 0xFA, 0xE0, 0x09, 0xC6, 0x6D, 0xD7, 0x1A, 0x6D, 0x12, - 0xC1, 0x72, 0x41, 0xCE, 0xCE, 0xE7, 0x67, 0xE7, 0xD7, 0xB3, 0xEB, 0xD9, 0xDB, 0x77, 0xE7, 0x7D, - 0x2F, 0xBB, 0xAE, 0xC5, 0x98, 0x68, 0xAD, 0xBB, 0xBE, 0x77, 0xCE, 0x69, 0x65, 0xEA, 0xA6, 0x45, - 0x08, 0xC5, 0xBD, 0xC9, 0x18, 0x0B, 0x18, 0xA5, 0x89, 0x18, 0x5C, 0x6F, 0xD6, 0x51, 0x46, 0x8D, - 0x75, 0xC6, 0x38, 0x4C, 0x48, 0xEC, 0xA5, 0x24, 0x95, 0xF6, 0x01, 0x18, 0xA3, 0x42, 0x88, 0xF5, - 0xAA, 0x3E, 0xD8, 0x9F, 0xBC, 0xBF, 0xB8, 0xB6, 0xCE, 0xDE, 0x3F, 0x3E, 0x04, 0x14, 0xAE, 0xAE, - 0x17, 0x94, 0x92, 0xA6, 0xED, 0x67, 0x8B, 0xB5, 0xB5, 0xF6, 0xF2, 0x6A, 0xF1, 0xEC, 0xC5, 0x9B, - 0xB7, 0xA7, 0x57, 0x00, 0xE8, 0xE1, 0xC9, 0x41, 0x59, 0xA4, 0xEB, 0xBA, 0xBB, 0x9A, 0xAD, 0x2E, - 0xAF, 0x17, 0x47, 0x07, 0x13, 0x21, 0xF8, 0x87, 0xEA, 0xF9, 0xC7, 0x5D, 0x0D, 0xBF, 0x4B, 0x55, - 0xDF, 0xAE, 0xAB, 0xAD, 0xC8, 0x6D, 0xD7, 0x18, 0x46, 0xE8, 0xFB, 0x97, 0xEF, 0xFE, 0xEE, 0xD7, - 0xCF, 0xFF, 0xEE, 0xD7, 0xCF, 0x5E, 0x9F, 0x5E, 0x01, 0x20, 0x65, 0xCC, 0xD9, 0xF9, 0x2C, 0x46, - 0x66, 0x7B, 0xA5, 0xE7, 0x8B, 0xF5, 0x62, 0xB1, 0xEE, 0xA5, 0x8C, 0x49, 0xCB, 0x52, 0x6A, 0x19, - 0x2B, 0x90, 0xB4, 0x69, 0x9A, 0x5E, 0x6B, 0xAD, 0xB5, 0xED, 0xFB, 0x3E, 0x56, 0x9B, 0x6E, 0x81, - 0xD2, 0x5A, 0x57, 0x16, 0xD9, 0xE1, 0xE1, 0xF4, 0x7A, 0xB6, 0x9A, 0xCD, 0x16, 0x59, 0x96, 0x44, - 0x91, 0xEF, 0xA5, 0x9A, 0x8E, 0x8B, 0x24, 0xE1, 0x10, 0x02, 0x63, 0xD4, 0x59, 0x17, 0x20, 0x68, - 0xE3, 0x7E, 0xF3, 0xCD, 0x8B, 0x57, 0xEF, 0xCE, 0xAB, 0x32, 0xC7, 0x18, 0xA7, 0x09, 0x1F, 0x57, - 0xB9, 0xD6, 0xF6, 0xF4, 0xFD, 0x95, 0x36, 0x9A, 0x12, 0xCA, 0x39, 0x8B, 0x11, 0x41, 0x65, 0xCC, - 0xC5, 0xD5, 0xC2, 0x7B, 0xDF, 0x75, 0xBD, 0xF7, 0xA1, 0xEF, 0xFA, 0x2F, 0x7F, 0xF3, 0x9D, 0xB6, - 0xF0, 0xF0, 0xE4, 0xE0, 0xE4, 0x68, 0x1C, 0x02, 0x74, 0xBD, 0x8A, 0x51, 0xD4, 0xDB, 0x07, 0x1E, - 0xE8, 0x70, 0xD0, 0x06, 0x5F, 0x30, 0xC6, 0x80, 0x20, 0x26, 0x45, 0x21, 0x1C, 0xB3, 0x28, 0xB6, - 0x8E, 0x2B, 0x84, 0x76, 0xDC, 0xF6, 0xBB, 0x26, 0xD4, 0x16, 0xF8, 0xB6, 0x66, 0xEC, 0xAE, 0x63, - 0x67, 0x67, 0xB4, 0x6F, 0x4E, 0xB8, 0x10, 0xA2, 0x67, 0xCD, 0x87, 0x40, 0x7E, 0xF6, 0x17, 0xFF, - 0x7E, 0x77, 0xF4, 0xEF, 0xFE, 0x1D, 0x1E, 0x6C, 0x00, 0x2C, 0x6C, 0xA0, 0x31, 0x3E, 0xDE, 0x60, - 0xEB, 0x76, 0x82, 0x43, 0x08, 0x90, 0x09, 0xB6, 0x69, 0x02, 0x04, 0x21, 0x04, 0xC1, 0xC9, 0xA7, - 0x0F, 0xF6, 0xF6, 0x27, 0x45, 0x9E, 0xA5, 0x69, 0xC2, 0x63, 0x27, 0x1E, 0xBA, 0xE1, 0x77, 0x8D, - 0x71, 0x99, 0x98, 0x9B, 0xAE, 0x8D, 0xD5, 0xDA, 0x52, 0x4A, 0xB2, 0x94, 0x27, 0x82, 0x0B, 0x21, - 0x22, 0x80, 0xFD, 0x03, 0x95, 0xAC, 0x5B, 0xB7, 0xBD, 0x7B, 0x66, 0x7B, 0x47, 0xB7, 0x9E, 0xA2, - 0x0D, 0x67, 0x9B, 0xB5, 0xCE, 0x18, 0xAB, 0xF5, 0x50, 0xED, 0xB1, 0x25, 0x56, 0xDC, 0x5E, 0x13, - 0x0F, 0x63, 0x06, 0xA8, 0x8B, 0x57, 0xC6, 0xE5, 0xE5, 0x9C, 0xEB, 0x7B, 0xED, 0x3C, 0xFC, 0xED, - 0xDF, 0x7D, 0x39, 0x9B, 0xAD, 0x18, 0x67, 0x7B, 0xE3, 0xF2, 0xE4, 0x68, 0xDF, 0x3A, 0xAF, 0xE3, - 0x61, 0xBD, 0x0B, 0x80, 0x31, 0x71, 0xD6, 0x35, 0x4D, 0x2B, 0xA5, 0x46, 0x08, 0x8B, 0x44, 0x88, - 0x24, 0x09, 0x80, 0xAC, 0xF5, 0xD6, 0xBA, 0x00, 0x41, 0x24, 0xE9, 0x74, 0x32, 0x4A, 0x12, 0x6E, - 0x8D, 0xCD, 0xF3, 0x2C, 0x04, 0x9F, 0xA4, 0x89, 0xD2, 0x86, 0x51, 0xAA, 0xB5, 0xE5, 0x9C, 0x55, - 0x65, 0x51, 0x16, 0xF9, 0xC1, 0xFE, 0x64, 0x34, 0x2A, 0x10, 0x0A, 0xC6, 0xB8, 0xBE, 0x69, 0x5E, - 0xBF, 0x79, 0x4B, 0xB9, 0xD8, 0xDF, 0x1B, 0x57, 0x45, 0xEA, 0x62, 0xA3, 0x13, 0x4A, 0x20, 0xF8, - 0xE0, 0xC3, 0x62, 0xDD, 0xBD, 0x7B, 0x7F, 0xF9, 0xE2, 0xCD, 0x79, 0xD7, 0x47, 0xCE, 0x58, 0x0C, - 0x00, 0xCE, 0x39, 0xA5, 0xB4, 0x73, 0xBE, 0xED, 0xFA, 0x24, 0x49, 0x30, 0x42, 0x6D, 0xDB, 0x5D, - 0x5E, 0xCE, 0xD6, 0xEB, 0xBA, 0xEF, 0xA5, 0x73, 0x9E, 0x0B, 0xBE, 0x5E, 0xAD, 0x03, 0x20, 0xA5, - 0xE4, 0xF9, 0xF9, 0xA5, 0xF7, 0x60, 0x8C, 0x41, 0x08, 0xB2, 0x2C, 0x59, 0xAD, 0x6B, 0x63, 0x1C, - 0xC2, 0xA8, 0xA9, 0x9B, 0xAE, 0xED, 0xBC, 0x55, 0x97, 0xD7, 0x8B, 0x80, 0x50, 0x9E, 0xA5, 0xAB, - 0x75, 0xCD, 0x39, 0x8F, 0x2E, 0x58, 0xE7, 0xDC, 0xC0, 0x45, 0x69, 0x35, 0x20, 0xD4, 0x4A, 0xDB, - 0xC9, 0x5E, 0x08, 0xF1, 0xFE, 0xEC, 0xE2, 0xF0, 0x60, 0x0F, 0x21, 0xE4, 0xBD, 0x4F, 0xD3, 0x84, - 0xD0, 0x4D, 0x12, 0x75, 0x08, 0x08, 0x81, 0xF7, 0x0E, 0x13, 0xAC, 0xAC, 0xC5, 0x08, 0x59, 0x63, - 0x01, 0xBC, 0xF5, 0x9E, 0x12, 0x6C, 0xAD, 0xF5, 0x01, 0xBA, 0x5E, 0x32, 0xC6, 0x30, 0x8E, 0x1D, - 0x33, 0x8D, 0xB5, 0x4E, 0x08, 0x56, 0x96, 0x19, 0x21, 0xC4, 0x39, 0x37, 0xAA, 0x8A, 0xE5, 0xBA, - 0x89, 0xE9, 0x3C, 0x65, 0x96, 0xAE, 0xD7, 0x2D, 0xC6, 0xB8, 0xED, 0xE5, 0xBA, 0x6E, 0x95, 0xD4, - 0xCA, 0x18, 0x67, 0xED, 0xF5, 0x7C, 0x75, 0x3D, 0x5F, 0xDD, 0x3B, 0x98, 0x1E, 0x1F, 0x4D, 0x85, - 0xE0, 0x8B, 0xE5, 0x9A, 0x60, 0x7C, 0xB8, 0x3F, 0x76, 0x1F, 0x92, 0x64, 0xFD, 0x43, 0x8E, 0xED, - 0x32, 0xDB, 0x15, 0x9C, 0x1D, 0x41, 0x05, 0xCE, 0xD9, 0xE9, 0xFB, 0xAB, 0xFF, 0xE5, 0x7F, 0xFD, - 0x8F, 0xAB, 0x5A, 0xA6, 0x69, 0x7A, 0x71, 0x39, 0x8F, 0x85, 0xE9, 0xD3, 0xC9, 0x38, 0x49, 0xF8, - 0xBA, 0x6E, 0x0E, 0xF6, 0x26, 0xD6, 0xB8, 0x75, 0xDD, 0x72, 0x4E, 0x03, 0x42, 0x46, 0x0F, 0x3A, - 0x97, 0xB5, 0xF6, 0xDE, 0xD1, 0xDE, 0xC3, 0xFB, 0x47, 0x79, 0x91, 0x49, 0xA9, 0xA5, 0x54, 0xDE, - 0x7B, 0xEF, 0x1D, 0x1E, 0x3A, 0xE1, 0x41, 0x34, 0x57, 0xF7, 0xA7, 0xE3, 0x8B, 0xD9, 0xD2, 0x5A, - 0x77, 0xB8, 0x3F, 0x7D, 0xFC, 0xE8, 0xDE, 0x72, 0xD5, 0x2C, 0xEB, 0x46, 0x2A, 0x7D, 0xB8, 0x3F, - 0x71, 0xD6, 0x1B, 0x63, 0xA2, 0xBB, 0x2A, 0x6E, 0xFF, 0x8B, 0x65, 0x93, 0xE7, 0x29, 0xC6, 0x68, - 0x3A, 0x2A, 0xB3, 0x2C, 0x89, 0xED, 0xD5, 0x29, 0xA5, 0x5D, 0xDF, 0xA7, 0x69, 0x92, 0x08, 0x2E, - 0x95, 0xFE, 0xCD, 0xD7, 0xCF, 0x01, 0xD0, 0x7C, 0xB9, 0x92, 0x52, 0x1D, 0x1D, 0xEE, 0x8F, 0xAA, - 0xB2, 0x6D, 0x3B, 0x6D, 0x4D, 0x27, 0xAD, 0x10, 0x6C, 0xB1, 0x58, 0xFF, 0x87, 0xBF, 0xFD, 0xAA, - 0xED, 0xD4, 0x83, 0xA3, 0x3D, 0xB4, 0x93, 0x5E, 0x70, 0xA3, 0x1F, 0x0D, 0xE8, 0xB3, 0xD5, 0x81, - 0x30, 0xC1, 0x98, 0xC4, 0xA4, 0x8A, 0xBB, 0xCE, 0xB5, 0x1B, 0xFD, 0x37, 0x36, 0xF4, 0x0E, 0x37, - 0xF1, 0xCF, 0x38, 0xB6, 0xE1, 0x03, 0x7C, 0x96, 0x71, 0x76, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0x41, 0xDE, 0x0E, 0xF5, 0x16, 0x79, 0x7C, 0x08, 0x76, 0xCB, 0x0C, 0x17, 0x50, 0x08, - 0x40, 0xFE, 0xFC, 0x2F, 0x7E, 0xBE, 0x89, 0x53, 0xDE, 0xD6, 0x59, 0x76, 0x31, 0x77, 0x5B, 0x88, - 0xB5, 0x73, 0x7E, 0x08, 0x39, 0x0C, 0x9D, 0x4A, 0x10, 0x50, 0x12, 0x6B, 0x27, 0x11, 0xA3, 0x18, - 0x01, 0x0A, 0x01, 0x8A, 0x94, 0x1F, 0x4E, 0x8B, 0xFB, 0x87, 0xA3, 0x51, 0x99, 0x31, 0xCE, 0x76, - 0x55, 0xA7, 0xCD, 0x0E, 0xB6, 0xD5, 0xA1, 0x60, 0xB0, 0xC5, 0xD2, 0x24, 0xCF, 0x53, 0x21, 0x44, - 0x44, 0xB0, 0x8F, 0xE2, 0xD7, 0x47, 0x31, 0xEB, 0xCE, 0x4E, 0xF1, 0x11, 0x15, 0x6C, 0xF7, 0xFA, - 0x98, 0x64, 0xE8, 0x87, 0xC3, 0x45, 0xCB, 0x3C, 0xC6, 0x77, 0x36, 0xA6, 0x2B, 0xD9, 0x5E, 0x1C, - 0x06, 0x37, 0x64, 0xB0, 0xD6, 0x19, 0xE3, 0xAC, 0xF5, 0x03, 0x03, 0xB3, 0xF7, 0x00, 0x21, 0x36, - 0x12, 0x63, 0x8C, 0xBE, 0x7D, 0xF7, 0x5E, 0x4A, 0x95, 0x67, 0xC9, 0x83, 0x93, 0x83, 0xAC, 0x28, - 0x18, 0x63, 0xBD, 0xD2, 0xDE, 0x03, 0x67, 0xC4, 0xF9, 0xA0, 0x8D, 0x75, 0x37, 0x4E, 0x3D, 0x6C, - 0xAC, 0x35, 0xC6, 0x6A, 0x6B, 0xAD, 0x75, 0x52, 0xE9, 0xAA, 0x2A, 0xC7, 0xA3, 0x2A, 0xBA, 0xD5, - 0x00, 0x21, 0x9E, 0xF0, 0x7B, 0x87, 0xFB, 0x3E, 0xF8, 0xAE, 0x57, 0x08, 0x61, 0x21, 0xF8, 0xFE, - 0xDE, 0xA4, 0x28, 0x32, 0xE3, 0x5C, 0x91, 0xA7, 0xC1, 0x87, 0xCB, 0xCB, 0xF9, 0x7A, 0x5D, 0x9F, - 0x9F, 0x9F, 0x53, 0x26, 0xF2, 0x22, 0xCF, 0xB3, 0xD4, 0x68, 0x93, 0x67, 0x82, 0x52, 0xE2, 0xAC, - 0x9D, 0x5D, 0x2F, 0x09, 0xA5, 0x9C, 0xB3, 0xEB, 0xF9, 0xAA, 0xC8, 0xF3, 0x51, 0x55, 0x22, 0x04, - 0xA3, 0x51, 0x21, 0x38, 0x73, 0x6E, 0x48, 0xDF, 0x93, 0x52, 0xF5, 0xBD, 0xBC, 0x38, 0xBF, 0xEA, - 0x9A, 0x6E, 0x5D, 0xAF, 0x23, 0x05, 0x93, 0xB3, 0xCE, 0x79, 0x5F, 0xD7, 0xCD, 0x64, 0x3C, 0x3A, - 0x3B, 0x3B, 0xB7, 0xD6, 0x7A, 0x6F, 0x01, 0xC2, 0xE1, 0xE1, 0xBE, 0x54, 0xBA, 0x28, 0xF2, 0xE3, - 0x7B, 0x07, 0xB2, 0x97, 0x21, 0x84, 0xBE, 0x97, 0xFD, 0x6A, 0x55, 0xAF, 0x9B, 0x41, 0x1D, 0x63, - 0xDC, 0x59, 0x8B, 0x31, 0xB6, 0xD6, 0x19, 0xAD, 0xB3, 0x24, 0xE9, 0x65, 0x0F, 0xDE, 0xFE, 0xFA, - 0xB7, 0xCF, 0x7A, 0xA5, 0x21, 0x04, 0x63, 0xED, 0xC5, 0xE5, 0xE5, 0xFD, 0x93, 0x63, 0x6B, 0xAD, - 0x52, 0xCA, 0xFB, 0x00, 0x08, 0x23, 0x84, 0xAC, 0x73, 0x08, 0x21, 0x4A, 0x08, 0x00, 0x20, 0x8C, - 0x43, 0xF0, 0x28, 0x0C, 0x2C, 0xBB, 0x21, 0x04, 0x42, 0xB0, 0x0F, 0x40, 0x08, 0xC5, 0x84, 0x58, - 0x63, 0xCB, 0x22, 0x03, 0x08, 0x52, 0x69, 0x42, 0x48, 0x88, 0xA9, 0x8B, 0xDA, 0xF4, 0xBD, 0x2C, - 0xF2, 0xD4, 0x79, 0xA7, 0x8D, 0x19, 0x55, 0x45, 0xD3, 0xF5, 0x79, 0x9E, 0x21, 0x04, 0x18, 0x21, - 0x6B, 0xED, 0xBA, 0x6E, 0xA5, 0x54, 0xCE, 0x39, 0x65, 0xF4, 0xBA, 0x6E, 0xAF, 0xE7, 0x2B, 0x6B, - 0x5D, 0x91, 0xA7, 0x55, 0x91, 0xBB, 0xE0, 0xF3, 0x2C, 0xE1, 0x8C, 0x7D, 0x48, 0xF8, 0x77, 0xDB, - 0xAE, 0xFC, 0x5D, 0xEE, 0xB0, 0xBB, 0x4B, 0x6E, 0x2B, 0x6C, 0x8C, 0xD1, 0xEF, 0x9F, 0xBD, 0xBD, - 0x9A, 0xD5, 0xCA, 0xFA, 0xE8, 0x12, 0x35, 0xD6, 0x1D, 0xEC, 0x4F, 0x38, 0xA7, 0x04, 0xE3, 0xCF, - 0x3E, 0x79, 0xC8, 0x39, 0xCD, 0xF3, 0x1C, 0x10, 0x72, 0x9B, 0x1D, 0x14, 0x63, 0x44, 0x28, 0xF9, - 0xD1, 0x17, 0x9F, 0x3C, 0xBE, 0x7F, 0xEF, 0xE2, 0x6A, 0x7E, 0x7A, 0x76, 0xA9, 0xB5, 0x89, 0xB4, - 0x3F, 0x5A, 0xDB, 0x58, 0x14, 0x19, 0x07, 0xAA, 0x97, 0x2A, 0x49, 0x92, 0x4F, 0x1E, 0x9D, 0x1C, - 0x1D, 0x4C, 0x46, 0x55, 0xF9, 0xF8, 0xFE, 0x61, 0x9A, 0xF2, 0x87, 0xF7, 0x0F, 0x0F, 0xA7, 0x23, - 0xAD, 0xAD, 0x87, 0x30, 0x5B, 0xAC, 0x7B, 0xA9, 0x00, 0x23, 0x8C, 0x10, 0xE7, 0x8C, 0x32, 0xB2, - 0x5A, 0x37, 0x00, 0x50, 0xB7, 0xDD, 0x62, 0xD5, 0xAC, 0xEB, 0xF6, 0xF2, 0x7A, 0xDE, 0xF7, 0x6A, - 0x3A, 0x19, 0x39, 0xE7, 0xEA, 0xA6, 0x5B, 0xAF, 0x5B, 0x6B, 0x5D, 0x55, 0xE5, 0x93, 0x71, 0x75, - 0x7E, 0x31, 0xFF, 0xE6, 0xBB, 0xE7, 0xBD, 0x54, 0x45, 0x59, 0x94, 0x65, 0x1E, 0x00, 0x5D, 0x2F, - 0xEA, 0x67, 0xAF, 0xCE, 0xDB, 0x4E, 0x37, 0xAD, 0x2C, 0xF3, 0x74, 0x3A, 0x29, 0xB6, 0x01, 0x2E, - 0xB4, 0xC9, 0x92, 0xDB, 0x75, 0x9F, 0x45, 0xD9, 0x26, 0x18, 0x6D, 0x20, 0xEE, 0x06, 0x86, 0x76, - 0x04, 0x0A, 0xC2, 0xD0, 0x42, 0x29, 0xA0, 0xAD, 0xAB, 0x6C, 0x73, 0x4D, 0x6C, 0xA9, 0xBA, 0x3B, - 0xA4, 0xDB, 0x89, 0xD9, 0xF2, 0x54, 0x47, 0xF0, 0x8B, 0x30, 0x84, 0x10, 0x90, 0x3F, 0xFF, 0x77, - 0xFF, 0x33, 0xFA, 0x70, 0xDA, 0x76, 0xE7, 0x29, 0xFE, 0x87, 0xE1, 0xA6, 0x5E, 0xF3, 0xC3, 0x19, - 0x1D, 0xD2, 0x49, 0x00, 0x01, 0x41, 0x38, 0x4B, 0x68, 0x36, 0xF4, 0xD3, 0x05, 0x4A, 0xF1, 0xFE, - 0x38, 0xBF, 0xB7, 0x5F, 0x8D, 0x8A, 0x24, 0x49, 0x38, 0x26, 0xF4, 0xB6, 0xD5, 0xB7, 0x73, 0x60, - 0x8C, 0xA3, 0xD9, 0x18, 0x11, 0x64, 0x83, 0xD9, 0x77, 0x7F, 0xD1, 0x0D, 0xAC, 0xDC, 0xFA, 0x25, - 0x1F, 0x35, 0x2A, 0x77, 0x1F, 0x7C, 0x30, 0x4C, 0x9B, 0x8A, 0xEE, 0x08, 0x67, 0x7E, 0xD3, 0xCE, - 0x0B, 0x0F, 0x9D, 0xC4, 0x21, 0x6A, 0x88, 0xD6, 0x3A, 0xE7, 0xBC, 0xDB, 0x34, 0x3C, 0x8C, 0x6D, - 0x5D, 0x43, 0x18, 0x62, 0x17, 0x64, 0x08, 0xA9, 0x60, 0xC6, 0x28, 0x21, 0x98, 0x33, 0x9A, 0x08, - 0x7E, 0x71, 0x7E, 0xB5, 0x5C, 0xD6, 0xC7, 0xC7, 0x87, 0xBD, 0x09, 0xCE, 0x03, 0xE5, 0x9C, 0x50, - 0x1A, 0x00, 0x78, 0x92, 0x78, 0x80, 0x10, 0x42, 0x92, 0x88, 0xB2, 0xCC, 0x4F, 0x4E, 0x8E, 0x4E, - 0x4E, 0xEE, 0x9D, 0x1C, 0x1F, 0x1D, 0xDF, 0x3B, 0x3C, 0x3A, 0xDC, 0xA7, 0x8C, 0xF7, 0x52, 0xE5, - 0x59, 0xDA, 0xB6, 0x5D, 0x92, 0xF0, 0xC3, 0x83, 0xE9, 0xA3, 0x07, 0xC7, 0xDE, 0x07, 0xCE, 0x68, - 0x59, 0x64, 0x07, 0xFB, 0x7B, 0x69, 0x96, 0x60, 0x8C, 0xEE, 0x1D, 0xED, 0x51, 0xCA, 0xB2, 0x34, - 0xE9, 0xFB, 0xFE, 0xDD, 0xBB, 0xB3, 0xC5, 0x7C, 0x31, 0x9B, 0xCD, 0xD6, 0xEB, 0x9A, 0x52, 0x3A, - 0x19, 0x8F, 0x94, 0x94, 0x84, 0xD0, 0x84, 0xB3, 0x2C, 0x65, 0xCE, 0xB9, 0x34, 0xE1, 0x4A, 0x1B, - 0x91, 0xA6, 0xD6, 0xBA, 0xC5, 0x62, 0x8D, 0x10, 0x92, 0x52, 0x36, 0x4D, 0x47, 0x29, 0x2B, 0x8A, - 0x8C, 0x60, 0x82, 0x00, 0x54, 0xDF, 0x9D, 0x9D, 0xBE, 0xBF, 0xB8, 0xBC, 0x8E, 0x6D, 0xD3, 0xFA, - 0x5E, 0x36, 0x4D, 0xEB, 0x82, 0x47, 0x80, 0xB4, 0x31, 0x84, 0xD2, 0xA6, 0x69, 0xB9, 0xE0, 0x18, - 0xC2, 0x74, 0x3A, 0x49, 0xB3, 0x34, 0xCF, 0xD2, 0x24, 0xE1, 0x08, 0xA1, 0x44, 0x08, 0xA5, 0xCD, - 0xFE, 0xA4, 0x34, 0x5A, 0x23, 0x42, 0xC7, 0xA3, 0xD2, 0x18, 0x6B, 0xAC, 0x15, 0x42, 0xF4, 0xBD, - 0xEC, 0xBB, 0x16, 0x03, 0x64, 0x99, 0x48, 0x19, 0x79, 0xFD, 0xFA, 0xEC, 0xF4, 0xFC, 0x2A, 0x38, - 0xBB, 0x5C, 0xAC, 0xFA, 0x5E, 0x6A, 0x65, 0x8A, 0xAA, 0x40, 0x28, 0x2C, 0x16, 0x2B, 0xC6, 0x58, - 0xCC, 0xBD, 0x20, 0x84, 0x94, 0x65, 0x11, 0xBD, 0xA5, 0x10, 0x02, 0x63, 0x2C, 0xC4, 0xA8, 0x65, - 0x08, 0x18, 0x21, 0xE7, 0x3C, 0x84, 0xE0, 0x21, 0x10, 0x42, 0xA4, 0xD4, 0x80, 0x60, 0x3A, 0x19, - 0x5B, 0xEB, 0x7A, 0x29, 0x29, 0xA1, 0x18, 0x23, 0x40, 0xE0, 0x7D, 0xE8, 0xA5, 0x64, 0x8C, 0x2F, - 0x16, 0x2B, 0xEB, 0x86, 0xFE, 0x50, 0x9C, 0x51, 0xA5, 0x4D, 0xDD, 0xF4, 0x11, 0x73, 0x21, 0x84, - 0xAA, 0xC8, 0x23, 0x7D, 0xC8, 0xAA, 0x6E, 0x19, 0x65, 0x08, 0xC0, 0x6A, 0xEB, 0x9D, 0xDD, 0x9F, - 0x8C, 0x8C, 0xB5, 0x1B, 0x37, 0xEF, 0x76, 0xA9, 0xFC, 0x4E, 0x03, 0x65, 0xBB, 0xFC, 0x76, 0x9D, - 0xB3, 0x5B, 0x08, 0x8B, 0xFF, 0x84, 0xE0, 0x2F, 0x5E, 0x9D, 0xBE, 0x78, 0x75, 0x76, 0xEF, 0xDE, - 0xE1, 0xBA, 0x69, 0x37, 0x9D, 0x07, 0x7C, 0x96, 0x25, 0x00, 0x08, 0x23, 0x20, 0x04, 0xAF, 0x9A, - 0x2E, 0xCF, 0xD3, 0xAE, 0x57, 0xD1, 0x78, 0x4C, 0x12, 0x91, 0x65, 0x49, 0x9A, 0x8A, 0x67, 0xCF, - 0xDF, 0x5E, 0x5C, 0xCD, 0xE2, 0xA4, 0x00, 0x80, 0x0F, 0x70, 0xEF, 0xDE, 0xFE, 0xF1, 0xD1, 0x9E, - 0xF7, 0xA1, 0x69, 0x3A, 0xCE, 0x99, 0x10, 0xBC, 0x97, 0xEA, 0x8B, 0xCF, 0x1F, 0xFD, 0xF3, 0x7F, - 0xF2, 0xE3, 0xE3, 0xA3, 0xA9, 0xE0, 0x74, 0x7F, 0x3A, 0x8A, 0x3E, 0x17, 0xA9, 0x74, 0x96, 0xF2, - 0x32, 0xCF, 0x92, 0x84, 0x6B, 0x6D, 0xFB, 0x5E, 0x67, 0x99, 0xC8, 0xD3, 0xC4, 0xFB, 0x30, 0x5B, - 0xAC, 0x16, 0xAB, 0xFA, 0x6A, 0xB6, 0x7A, 0xF6, 0xE2, 0x8D, 0x73, 0xA1, 0x2A, 0x8A, 0xF9, 0x72, - 0x75, 0x71, 0x35, 0x33, 0xC6, 0xF6, 0x4A, 0x69, 0x6B, 0xA7, 0x93, 0x31, 0x21, 0xF8, 0xD3, 0x4F, - 0x1E, 0x00, 0x20, 0xCE, 0xF9, 0x8F, 0xBF, 0x78, 0xF2, 0xF4, 0xC9, 0xFD, 0x44, 0xF0, 0xD7, 0x6F, - 0xCF, 0x26, 0xE3, 0xD1, 0x6C, 0xBE, 0x5C, 0xAC, 0xEA, 0x5E, 0xDB, 0x37, 0x67, 0x57, 0x52, 0xEA, - 0xE3, 0xC3, 0x89, 0x31, 0x36, 0x00, 0x6C, 0x52, 0x55, 0x3F, 0x64, 0x2D, 0x45, 0x08, 0x62, 0x2A, - 0xD8, 0x16, 0x6C, 0x76, 0x24, 0xD7, 0x0F, 0x74, 0x1D, 0x38, 0xAA, 0x0E, 0xE4, 0xE6, 0xED, 0x1B, - 0xB1, 0x05, 0xC0, 0x3B, 0xF6, 0x10, 0x6C, 0xF6, 0x96, 0x8D, 0x39, 0x88, 0x00, 0x20, 0x32, 0x98, - 0x6F, 0x02, 0x80, 0x88, 0x0E, 0x90, 0x16, 0x36, 0xAD, 0x4D, 0x76, 0x0A, 0xA1, 0xC3, 0x8E, 0xE7, - 0x73, 0x1B, 0x23, 0xD8, 0x30, 0x97, 0x05, 0x08, 0x38, 0xB6, 0x3F, 0x8B, 0x5F, 0x99, 0x70, 0xC2, - 0x29, 0x29, 0x33, 0x8E, 0x10, 0xE2, 0x8C, 0x0A, 0x4E, 0xA3, 0x76, 0xE0, 0x7D, 0x00, 0xC0, 0xBB, - 0xE0, 0xF7, 0xBB, 0x8E, 0xF0, 0xBB, 0xA0, 0xEB, 0xC3, 0xE3, 0x16, 0x48, 0xC3, 0x6D, 0x6C, 0xFD, - 0x88, 0x75, 0x09, 0x3B, 0x46, 0xE5, 0xF6, 0xF1, 0x76, 0x1C, 0x07, 0x95, 0x6C, 0x70, 0x8D, 0x05, - 0xEF, 0x7D, 0x6C, 0x09, 0x6E, 0xAC, 0x1D, 0x66, 0x68, 0xF3, 0x17, 0x13, 0x44, 0x30, 0x12, 0x2C, - 0x26, 0xE2, 0x7E, 0x40, 0xAA, 0x17, 0x07, 0x34, 0xE1, 0x54, 0x70, 0x76, 0x79, 0xBD, 0x14, 0xC9, - 0xE0, 0xB9, 0x10, 0x69, 0x96, 0x16, 0x65, 0xF0, 0xBE, 0x1A, 0xB9, 0x00, 0xA0, 0xB5, 0x11, 0x89, - 0x40, 0x08, 0x19, 0x6D, 0x8D, 0x75, 0xC6, 0x1A, 0x6D, 0x6C, 0x92, 0xF0, 0x3C, 0x4B, 0x8B, 0x3C, - 0xA3, 0x94, 0x64, 0x69, 0x96, 0x67, 0x59, 0x24, 0x05, 0x4D, 0xB3, 0x84, 0x32, 0x1A, 0x42, 0x10, - 0x9D, 0xDC, 0x9B, 0x8C, 0x00, 0xD0, 0x6A, 0xB5, 0x5A, 0xCC, 0xE6, 0x4D, 0xDD, 0x04, 0x08, 0x18, - 0xA1, 0xB6, 0xEB, 0xB3, 0x2C, 0x25, 0x04, 0xCF, 0xE7, 0x0B, 0xCE, 0x79, 0x08, 0x90, 0x70, 0x22, - 0x04, 0x43, 0x10, 0xAE, 0xE7, 0x0B, 0x9E, 0x64, 0xCE, 0x39, 0xCE, 0x69, 0x55, 0x15, 0xCE, 0xB9, - 0xD5, 0xAA, 0xC1, 0x18, 0x5B, 0x1B, 0x9A, 0xAE, 0xA7, 0x94, 0xCE, 0x67, 0x73, 0x8A, 0xC3, 0x4F, - 0x3E, 0x7F, 0xF4, 0xAE, 0xCC, 0x16, 0xAB, 0x66, 0xBE, 0x58, 0x21, 0x8C, 0x09, 0x25, 0x84, 0x50, - 0x8C, 0x71, 0x9A, 0xA6, 0x7D, 0x2F, 0xA3, 0x9D, 0x3D, 0x1D, 0x17, 0xEB, 0x55, 0xED, 0x9C, 0x7F, - 0xFA, 0xF4, 0x51, 0xAC, 0x02, 0x6B, 0xBB, 0xBE, 0x2C, 0xB2, 0x3C, 0x21, 0xAF, 0xD6, 0x0D, 0x65, - 0x1C, 0x13, 0x52, 0x8D, 0x72, 0xE7, 0x43, 0xDB, 0xF7, 0x2F, 0x5E, 0xBC, 0xC9, 0xD2, 0xF4, 0x07, - 0x9F, 0x3D, 0x5E, 0xAF, 0x56, 0xF5, 0xBA, 0x99, 0xAD, 0x7B, 0x6D, 0xDD, 0x34, 0x11, 0x84, 0xE0, - 0x75, 0xD3, 0x27, 0x89, 0x58, 0xAD, 0xEA, 0xA2, 0x48, 0xAB, 0xAA, 0x0C, 0x21, 0x70, 0xCA, 0xE2, - 0xD8, 0xB7, 0x7D, 0x2F, 0x18, 0x63, 0x94, 0x69, 0x63, 0xA2, 0xE3, 0xD7, 0x18, 0x83, 0x31, 0xA1, - 0x94, 0x00, 0x80, 0x31, 0x06, 0x01, 0x20, 0xC2, 0xCA, 0x32, 0x6B, 0xDA, 0xBE, 0x6E, 0xBA, 0xA3, - 0xC3, 0xFD, 0xC8, 0xCE, 0x58, 0x95, 0x79, 0x8C, 0x86, 0xA9, 0x60, 0x99, 0x94, 0x80, 0xD0, 0xFB, - 0xF3, 0xAB, 0xB2, 0xC8, 0x55, 0x9E, 0xAB, 0x54, 0x07, 0x80, 0xBE, 0x97, 0x5D, 0xD7, 0x91, 0xC8, - 0x80, 0xEE, 0x7D, 0x9E, 0xA7, 0x79, 0x96, 0x12, 0x4A, 0x67, 0xCB, 0x5A, 0x70, 0x56, 0x16, 0x29, - 0x89, 0x19, 0x70, 0x28, 0x76, 0x98, 0xDE, 0xF5, 0x3F, 0xC4, 0xAD, 0xEE, 0x23, 0x0B, 0x6C, 0x77, - 0x1D, 0x6E, 0xDD, 0xCF, 0xB7, 0x2E, 0x8B, 0x42, 0x21, 0x18, 0x4E, 0x05, 0x0F, 0x01, 0x84, 0xE0, - 0x82, 0xF3, 0xBA, 0x69, 0x28, 0x63, 0xD3, 0x49, 0xB5, 0x5C, 0x37, 0xE7, 0x17, 0xB3, 0x3C, 0x4F, - 0x9F, 0x3C, 0xBE, 0x1F, 0x97, 0x1D, 0xA5, 0xA4, 0x69, 0x3A, 0x4A, 0xC9, 0xAB, 0xD7, 0xA7, 0x08, - 0xA1, 0xC9, 0x64, 0x34, 0x9F, 0x2F, 0xB5, 0x36, 0xD3, 0xBD, 0xF1, 0xE7, 0x4F, 0x1F, 0xFE, 0xE0, - 0xD3, 0xFB, 0xE3, 0xB2, 0xA8, 0xDB, 0xFE, 0x17, 0xFF, 0xE9, 0xAB, 0xD3, 0xF7, 0x57, 0x8B, 0xE5, - 0xAA, 0x28, 0xD2, 0xF7, 0x17, 0x73, 0x6B, 0xCC, 0x9F, 0xFC, 0xD1, 0x0F, 0x97, 0x6B, 0xE5, 0xC3, - 0xD0, 0x4F, 0x76, 0x3C, 0x2A, 0x00, 0xC0, 0x59, 0xC7, 0x08, 0xC1, 0x18, 0x4B, 0xDD, 0xAB, 0x6B, - 0x3D, 0x1E, 0x95, 0xD6, 0xD9, 0xE9, 0xA4, 0xDA, 0x9F, 0x8E, 0xA5, 0xD2, 0x9F, 0x3F, 0x7D, 0x50, - 0x16, 0x39, 0x40, 0x58, 0xAE, 0x1A, 0x84, 0x20, 0x4B, 0x92, 0xF9, 0xAA, 0xA6, 0x94, 0xD0, 0xA1, - 0x31, 0x68, 0x72, 0xEF, 0x70, 0x02, 0x00, 0xC6, 0xD8, 0xB3, 0x8B, 0xEB, 0x2C, 0x4B, 0x9E, 0x3C, - 0x3A, 0xE9, 0x7B, 0xB5, 0xBF, 0x37, 0x3E, 0xBF, 0x9C, 0x5D, 0x5C, 0x2D, 0x10, 0x26, 0xA7, 0x97, - 0xAB, 0xC3, 0xBD, 0xC5, 0xFE, 0xB4, 0x8A, 0xEE, 0x15, 0x82, 0x71, 0xA4, 0xEA, 0x44, 0x9B, 0x12, - 0xC0, 0x10, 0x36, 0xFC, 0xE2, 0x68, 0x70, 0xA2, 0x6F, 0x94, 0x38, 0x70, 0x3B, 0xD9, 0xB6, 0xDB, - 0xDE, 0x7A, 0x9B, 0xA1, 0x1B, 0x14, 0x8C, 0xA8, 0x68, 0x44, 0x5B, 0xDA, 0x7F, 0x28, 0xD2, 0x3E, - 0x04, 0x3F, 0x10, 0xE1, 0x45, 0xFD, 0x23, 0x76, 0xC3, 0x02, 0x3A, 0xC8, 0x61, 0x84, 0x4C, 0x40, - 0x68, 0xD7, 0x03, 0x77, 0x93, 0x68, 0x81, 0x00, 0x6E, 0xCE, 0xDF, 0x44, 0x4C, 0x01, 0x30, 0xC6, - 0xB1, 0x31, 0x65, 0x00, 0x60, 0x04, 0x11, 0x82, 0x8B, 0x2C, 0x89, 0x8D, 0x8E, 0x28, 0x25, 0x00, - 0x88, 0x90, 0xDF, 0x69, 0xDF, 0x7D, 0x14, 0x7A, 0x76, 0x17, 0xCA, 0xFF, 0xEF, 0x35, 0xDB, 0x97, - 0x76, 0x71, 0xEA, 0xEE, 0xF5, 0xBB, 0x36, 0xC2, 0xF6, 0xFA, 0xED, 0x83, 0x6D, 0xB8, 0x20, 0x04, - 0x1B, 0x9D, 0x11, 0x04, 0xB6, 0x05, 0x9B, 0x01, 0xE3, 0x4D, 0x03, 0x4A, 0x8C, 0x49, 0xC0, 0x81, - 0x00, 0x80, 0xF3, 0xDE, 0x6F, 0x34, 0xEA, 0x9B, 0x8D, 0x48, 0x4A, 0xD5, 0x75, 0xFD, 0xC3, 0xFB, - 0x07, 0xD5, 0x78, 0xFC, 0xED, 0xF3, 0x77, 0x52, 0xA9, 0xD1, 0xA8, 0x92, 0x4A, 0xD7, 0x4D, 0x1F, - 0x20, 0xE4, 0x59, 0xDA, 0xD4, 0x6D, 0xD7, 0x2B, 0x79, 0x31, 0xC3, 0x18, 0x4B, 0xA9, 0x1C, 0x04, - 0x00, 0x54, 0xE4, 0x39, 0x25, 0xE4, 0xF3, 0x4F, 0x1F, 0x31, 0x4A, 0xCE, 0xCF, 0xAF, 0x20, 0x38, - 0x84, 0x20, 0x72, 0x78, 0x20, 0x84, 0xAE, 0xAF, 0xE7, 0x46, 0xEB, 0xE0, 0xBD, 0x94, 0xAA, 0x6D, - 0x9A, 0xA6, 0x6D, 0xBA, 0xA6, 0x2B, 0xF3, 0x1C, 0x61, 0xC8, 0x8B, 0xEC, 0x93, 0x27, 0x0F, 0x8A, - 0x8C, 0xCF, 0x56, 0x1D, 0x84, 0x30, 0x1E, 0x95, 0x0F, 0xEF, 0xEF, 0x43, 0x08, 0xCE, 0x3A, 0xD9, - 0xF5, 0xDA, 0x38, 0xEB, 0xFB, 0x2C, 0xCF, 0x13, 0x21, 0x08, 0x21, 0xA7, 0x67, 0x17, 0x52, 0x2A, - 0x84, 0x91, 0x10, 0xBC, 0xAA, 0x8A, 0x7A, 0xDD, 0xCC, 0x66, 0x0B, 0x63, 0x34, 0xC5, 0x68, 0x6F, - 0x52, 0x51, 0x4A, 0xF6, 0x26, 0xD5, 0xBA, 0xEE, 0xD7, 0x4D, 0x9B, 0x66, 0x19, 0x20, 0x84, 0x31, - 0x89, 0x15, 0xCB, 0x45, 0x9E, 0x60, 0x42, 0xFA, 0x4E, 0x1D, 0x57, 0x65, 0x08, 0x41, 0x4A, 0x59, - 0x64, 0xA9, 0x0F, 0x21, 0x17, 0xE4, 0xE5, 0x9B, 0xF7, 0x69, 0x5E, 0x8C, 0xC7, 0xE3, 0x2C, 0xCF, - 0x95, 0xD6, 0xDE, 0x87, 0x6F, 0xBE, 0x7D, 0x71, 0x79, 0x71, 0xA9, 0xB4, 0x91, 0x4A, 0x2A, 0x29, - 0x39, 0x67, 0x82, 0x93, 0x87, 0x27, 0x07, 0x10, 0x10, 0x26, 0xB8, 0x93, 0xAA, 0xEB, 0x65, 0x00, - 0x24, 0x04, 0xCF, 0xF2, 0x22, 0x78, 0x27, 0x95, 0x46, 0x08, 0x71, 0xCE, 0xBB, 0x5E, 0xC6, 0xED, - 0xD8, 0x7B, 0xAF, 0x95, 0xE6, 0x9C, 0x11, 0x42, 0xAC, 0xF7, 0x04, 0x30, 0x21, 0x38, 0x04, 0xAA, - 0xB4, 0x35, 0xB6, 0x17, 0x82, 0x13, 0x8C, 0xA5, 0x54, 0x94, 0xE0, 0x87, 0x0F, 0x8E, 0xA7, 0x93, - 0xF1, 0xAB, 0x37, 0xA7, 0x91, 0x3A, 0x8D, 0x73, 0xE6, 0x5C, 0x10, 0x9C, 0xAF, 0xD6, 0x2D, 0x21, - 0xC4, 0x87, 0xD0, 0xB4, 0x6D, 0x08, 0xD0, 0xB6, 0x7D, 0xDF, 0xF7, 0x79, 0xCA, 0x29, 0xC2, 0x4D, - 0xD3, 0xDA, 0x10, 0x18, 0xA3, 0x93, 0x34, 0xBD, 0xBC, 0x9E, 0xDF, 0x3B, 0x98, 0xBC, 0x3B, 0xBD, - 0x58, 0xAE, 0x56, 0xC7, 0xFF, 0xEA, 0x5F, 0x10, 0x3C, 0xF4, 0xB8, 0x0A, 0x1B, 0x3E, 0x2B, 0xB4, - 0x93, 0x53, 0xBE, 0xD5, 0xC8, 0x6E, 0xF9, 0x34, 0x36, 0x5C, 0xAF, 0x03, 0x59, 0xE3, 0x56, 0x61, - 0x23, 0x94, 0xB6, 0x4D, 0xBD, 0x9A, 0x5D, 0xFD, 0x93, 0x1F, 0x3F, 0x5A, 0x6A, 0x18, 0x55, 0xB9, - 0xE0, 0x7C, 0xBE, 0x58, 0xAF, 0xEB, 0x3A, 0x4E, 0xEE, 0xE9, 0xD9, 0x65, 0x54, 0xF0, 0xDF, 0xBE, - 0x3B, 0x47, 0x08, 0xAC, 0xB5, 0xA3, 0xAA, 0x9C, 0x8C, 0x2B, 0x6B, 0x0D, 0x00, 0xC1, 0x84, 0xC4, - 0x9E, 0x7E, 0xD3, 0x69, 0xFA, 0x93, 0x2F, 0x9E, 0xFC, 0xC1, 0x0F, 0x3F, 0x41, 0x18, 0x29, 0x65, - 0x00, 0xC2, 0xBF, 0xFE, 0x97, 0xFF, 0xF4, 0x3F, 0x7F, 0xF9, 0xFD, 0x7F, 0xF8, 0x7F, 0x7F, 0xC9, - 0x28, 0x65, 0x84, 0xFC, 0xEA, 0xB7, 0xCF, 0xBC, 0x0F, 0x08, 0x63, 0xEF, 0x83, 0xD6, 0xBA, 0x2C, - 0xD2, 0xAE, 0x57, 0x4F, 0x1F, 0x1D, 0x4F, 0xC6, 0x65, 0x08, 0x21, 0x4F, 0x85, 0xF7, 0xE1, 0xEB, - 0xEF, 0xDF, 0xBC, 0x7D, 0x7F, 0xFD, 0x93, 0x2F, 0x9E, 0x08, 0xCE, 0x10, 0x40, 0x96, 0x70, 0xE7, - 0xDC, 0x72, 0x55, 0xEF, 0x4F, 0xAB, 0xCF, 0x9F, 0xDE, 0x8F, 0xB5, 0x89, 0x47, 0x07, 0x63, 0x65, - 0x0C, 0x46, 0x98, 0x33, 0xB2, 0x6E, 0xBA, 0x10, 0x60, 0x32, 0xCA, 0x25, 0x46, 0xE3, 0xAA, 0xB4, - 0xCE, 0x8D, 0xAA, 0x02, 0x00, 0x0E, 0xF6, 0x27, 0x6F, 0x4F, 0xCF, 0x09, 0xC9, 0xBF, 0xFC, 0xED, - 0xB7, 0xC7, 0xF7, 0x0E, 0x47, 0x79, 0x72, 0xB0, 0x57, 0x59, 0xE7, 0xB1, 0x07, 0x87, 0xDC, 0x90, - 0x14, 0x86, 0x90, 0xDF, 0xD0, 0x44, 0xDF, 0x68, 0x3C, 0xB0, 0xDD, 0x18, 0x6E, 0x14, 0xDB, 0x4D, - 0xB6, 0xD9, 0x80, 0x62, 0xC3, 0x90, 0x6E, 0x7C, 0x65, 0x61, 0x03, 0x85, 0xDB, 0xB7, 0xA1, 0x1D, - 0x3F, 0x75, 0x6C, 0x8B, 0xB5, 0x09, 0xE3, 0x02, 0x42, 0x9E, 0x52, 0x4A, 0x7E, 0xF6, 0x17, 0x3F, - 0xDF, 0x7E, 0x7A, 0xF8, 0xC0, 0x2F, 0xB6, 0xCD, 0xFA, 0xD8, 0xC5, 0x94, 0x4D, 0x84, 0x02, 0x21, - 0x00, 0x20, 0x18, 0xC5, 0xA2, 0xCB, 0x28, 0xF6, 0x89, 0xA0, 0x55, 0x96, 0x46, 0x45, 0x8C, 0x52, - 0x8A, 0xEE, 0xE8, 0x9C, 0xFF, 0x40, 0x60, 0x1A, 0xBE, 0xE9, 0x43, 0xB2, 0xC3, 0x3B, 0xEF, 0x8A, - 0x3F, 0x6D, 0x73, 0x76, 0xB3, 0xC2, 0x6E, 0x61, 0xD6, 0xDD, 0x2F, 0xBA, 0xF5, 0x69, 0xDB, 0x63, - 0xB3, 0x5E, 0xB7, 0xDA, 0xAF, 0x47, 0x80, 0x08, 0xC6, 0x08, 0xC0, 0x6F, 0x78, 0x95, 0x62, 0xDB, - 0x37, 0xE7, 0xBC, 0xF3, 0xDE, 0x5A, 0x07, 0x01, 0x22, 0x06, 0x0E, 0xBF, 0xD3, 0x39, 0x6B, 0x75, - 0xDB, 0x4A, 0xA5, 0x8C, 0xD4, 0x06, 0x05, 0xAF, 0x95, 0xAA, 0xEB, 0x7A, 0x36, 0x5F, 0xAC, 0x57, - 0x75, 0x00, 0x58, 0x2E, 0xD7, 0x08, 0xA1, 0xAE, 0x93, 0x59, 0x96, 0x3A, 0x1F, 0xD6, 0xAB, 0x3A, - 0x78, 0x67, 0x95, 0x6C, 0xD7, 0xAB, 0x7A, 0xB5, 0xBC, 0x78, 0x7F, 0xD1, 0xAE, 0xD7, 0x7D, 0xDF, - 0xAF, 0x16, 0xCB, 0x34, 0x4D, 0xA4, 0x94, 0x6F, 0x5E, 0xBF, 0x5D, 0xCC, 0xE6, 0xF3, 0xD9, 0x7C, - 0x76, 0x3D, 0x5B, 0x2C, 0x56, 0x4A, 0x4A, 0x8C, 0x50, 0x59, 0xE6, 0x71, 0xA1, 0x9C, 0xDC, 0x9B, - 0xEE, 0x4F, 0x8A, 0xE9, 0xB8, 0x40, 0xC1, 0x23, 0x44, 0x1E, 0xDD, 0x3F, 0xA2, 0x18, 0xAE, 0xE7, - 0xAB, 0xBE, 0xEF, 0x09, 0xC1, 0x9D, 0x34, 0x93, 0xC9, 0x78, 0xBD, 0xAE, 0x57, 0xAB, 0x35, 0xA5, - 0x24, 0x66, 0x45, 0x40, 0x40, 0xCE, 0x39, 0x42, 0xC8, 0x9B, 0xD7, 0x6F, 0x11, 0x42, 0xCE, 0xFB, - 0x5E, 0xE9, 0x00, 0xD0, 0x75, 0x2A, 0x49, 0x78, 0x55, 0xE6, 0xDA, 0x86, 0x58, 0xD6, 0x1E, 0xA3, - 0x96, 0x94, 0x62, 0x04, 0xC1, 0x3B, 0x4F, 0x29, 0x56, 0x4A, 0x47, 0x0F, 0x7D, 0xAF, 0xB4, 0xD5, - 0xAA, 0xEB, 0xFA, 0xD1, 0x78, 0xFC, 0xE8, 0xD1, 0x7D, 0xCA, 0xD8, 0x6A, 0xB1, 0xBC, 0x5E, 0xAC, - 0x94, 0x0D, 0xCB, 0xE5, 0x9A, 0x12, 0xE4, 0xBD, 0x6B, 0x3B, 0x55, 0x55, 0x25, 0x42, 0x70, 0xB4, - 0x3F, 0xF9, 0xD1, 0x67, 0x8F, 0x04, 0xA3, 0xCB, 0x55, 0x53, 0x37, 0x7D, 0xD3, 0x74, 0x5C, 0x08, - 0x80, 0x50, 0xD7, 0x0D, 0xE3, 0x02, 0x42, 0x88, 0x29, 0x92, 0xD1, 0x4C, 0x60, 0x8C, 0x1A, 0x63, - 0x11, 0xC2, 0x84, 0x31, 0x8C, 0x91, 0x71, 0x8E, 0x10, 0x6A, 0x94, 0x89, 0xED, 0xC4, 0x11, 0x42, - 0x91, 0x0B, 0xD7, 0x58, 0xCB, 0x18, 0xEF, 0x7B, 0x59, 0x56, 0xF9, 0xC1, 0xFE, 0x84, 0x51, 0x5A, - 0x37, 0x1D, 0x42, 0x98, 0x10, 0x9C, 0x08, 0xC1, 0x18, 0x51, 0xDA, 0x08, 0xCE, 0x10, 0xC2, 0x4D, - 0xD3, 0x75, 0x5D, 0xDF, 0x2B, 0xED, 0x9C, 0x8F, 0xA9, 0x70, 0x8C, 0x33, 0x08, 0x60, 0xBD, 0x93, - 0x52, 0xC5, 0x15, 0x70, 0x79, 0x35, 0xFF, 0xE3, 0x3F, 0xFC, 0x8C, 0xD3, 0xB8, 0xA3, 0xE3, 0xC8, - 0x24, 0xB3, 0xE3, 0x32, 0x86, 0x0F, 0xC5, 0x6F, 0x23, 0x1D, 0x78, 0x48, 0xEE, 0xC5, 0x18, 0x03, - 0xC2, 0x78, 0x68, 0x7E, 0x34, 0x88, 0x46, 0x08, 0xF0, 0xE6, 0xD5, 0xEB, 0x8B, 0xAB, 0xD9, 0xF3, - 0x77, 0xF3, 0x5E, 0x2A, 0xEF, 0x43, 0x22, 0xD8, 0x68, 0x54, 0x18, 0xE3, 0x92, 0x84, 0x9F, 0x1C, - 0x1F, 0x22, 0x00, 0xA9, 0x4C, 0x55, 0xE6, 0x75, 0xDB, 0xFA, 0xE0, 0x31, 0xC2, 0xD6, 0x3A, 0xCE, - 0x58, 0xF4, 0xF7, 0xB5, 0x6D, 0x37, 0x99, 0x8C, 0xFE, 0xE5, 0x7F, 0xFD, 0x27, 0x7F, 0xFA, 0xC7, - 0x3F, 0xDC, 0x9F, 0x8E, 0xD6, 0x4D, 0xBB, 0x58, 0x35, 0x59, 0x22, 0xAC, 0x73, 0x2F, 0xDF, 0x9C, - 0xAF, 0xEB, 0xAE, 0x69, 0x7A, 0x8C, 0xD1, 0xE9, 0xFB, 0x8B, 0x4F, 0x9F, 0x3E, 0xFA, 0xEC, 0xC9, - 0x7D, 0xA5, 0x4D, 0x9A, 0x8A, 0xE9, 0xA8, 0xC4, 0x98, 0x3C, 0x7F, 0x75, 0x8A, 0x30, 0xDE, 0x9B, - 0x8C, 0xE2, 0x1D, 0x30, 0x46, 0xEE, 0x1D, 0x4C, 0xAD, 0x73, 0xBD, 0x34, 0x75, 0xD3, 0xF5, 0xBD, - 0x5C, 0xAC, 0xEA, 0xAE, 0x57, 0x42, 0xF0, 0xBD, 0x49, 0xA5, 0x94, 0xEE, 0x7A, 0x55, 0xD7, 0x9D, - 0xF5, 0x2E, 0xD6, 0x07, 0x49, 0x6D, 0xA4, 0x34, 0xBD, 0x54, 0x3E, 0x80, 0x31, 0x16, 0x20, 0x68, - 0x6D, 0x04, 0xE3, 0xD6, 0x7B, 0xC1, 0x19, 0xE7, 0xDC, 0x58, 0x77, 0x7C, 0xEF, 0xE0, 0xE2, 0x72, - 0x5E, 0x56, 0xC5, 0x83, 0xE3, 0xBD, 0xA8, 0x52, 0xA1, 0x8D, 0x03, 0x3D, 0x06, 0x34, 0x30, 0xC2, - 0x10, 0xC0, 0x3A, 0x17, 0xB3, 0x0F, 0xB6, 0x8D, 0x80, 0x7D, 0xF0, 0x11, 0xF8, 0x63, 0x3A, 0x7E, - 0xD8, 0x49, 0x7F, 0x85, 0x8D, 0xE0, 0x85, 0x81, 0x11, 0x07, 0x85, 0x00, 0x3E, 0x84, 0x4D, 0x09, - 0x79, 0xD4, 0x7C, 0x21, 0x04, 0xD8, 0xC6, 0x70, 0x77, 0x73, 0x45, 0x01, 0x80, 0xFC, 0xD9, 0xBF, - 0xFD, 0xF9, 0x0D, 0x78, 0x01, 0x44, 0x05, 0x75, 0x37, 0x79, 0x63, 0x98, 0xD1, 0xA8, 0x7F, 0x6D, - 0x42, 0xAC, 0xDB, 0xD7, 0xBC, 0x0F, 0xDA, 0x39, 0xE7, 0x03, 0xA7, 0x24, 0x76, 0xA7, 0x65, 0x1B, - 0x27, 0x57, 0x3C, 0xB6, 0x46, 0xEC, 0xEF, 0x01, 0xAF, 0xED, 0x8E, 0xF7, 0xFB, 0x75, 0xB7, 0x1B, - 0x6C, 0x1A, 0x86, 0xCD, 0x0F, 0xA9, 0x75, 0x71, 0x08, 0x37, 0x23, 0xF6, 0x7B, 0xBE, 0x68, 0xD0, - 0x28, 0x3F, 0x84, 0xB1, 0x0F, 0x49, 0xC4, 0x00, 0xA1, 0xC1, 0xE3, 0x46, 0x07, 0xFF, 0x17, 0x11, - 0x9C, 0x09, 0x4E, 0x23, 0x9F, 0x04, 0xDF, 0x78, 0xF1, 0x18, 0x8D, 0xE4, 0xEB, 0x71, 0xFD, 0x86, - 0xBE, 0xAD, 0x9B, 0xBA, 0x9E, 0xCF, 0xD7, 0x8B, 0xBA, 0xEB, 0x7A, 0xE5, 0xAC, 0xB5, 0xD6, 0xB6, - 0x6D, 0x1B, 0xBC, 0x43, 0xCE, 0x3A, 0x6B, 0x30, 0xC6, 0x21, 0x76, 0x54, 0x49, 0x92, 0xB6, 0x6D, - 0x57, 0x8B, 0x85, 0x37, 0xBA, 0xAD, 0x6B, 0x6B, 0x8C, 0x35, 0xC6, 0x69, 0x13, 0x13, 0x0B, 0x10, - 0x80, 0x56, 0x7A, 0xB9, 0x58, 0x5C, 0xBC, 0xBF, 0xEC, 0x7A, 0x19, 0x21, 0x95, 0x10, 0x92, 0x24, - 0x1C, 0x63, 0x4C, 0x28, 0x49, 0xD3, 0x54, 0x6B, 0x3B, 0xAA, 0xD2, 0x1F, 0x7D, 0x7A, 0x9C, 0x08, - 0x51, 0x15, 0xC9, 0xE5, 0xF5, 0xBA, 0xD7, 0x6E, 0x3C, 0x2A, 0x00, 0xFC, 0xC5, 0xD5, 0x72, 0x5C, - 0x15, 0x9D, 0x72, 0x1E, 0x60, 0x34, 0x2E, 0x27, 0xA3, 0xAA, 0xAA, 0x8A, 0xD5, 0xBA, 0x51, 0x4A, - 0x8F, 0xC7, 0x95, 0xD6, 0x4A, 0x6B, 0x13, 0x00, 0x2D, 0x56, 0xAB, 0x34, 0x4D, 0xAB, 0xAA, 0x94, - 0xBD, 0xB4, 0xD6, 0xF9, 0x00, 0xB3, 0xC5, 0x9A, 0x53, 0x6A, 0xAC, 0xA5, 0x8C, 0x1F, 0x1D, 0x1E, - 0xC4, 0xEB, 0x19, 0x25, 0x84, 0xD0, 0xB2, 0x2C, 0xF7, 0x0F, 0xF6, 0x00, 0xA0, 0xA9, 0x3B, 0x1F, - 0x42, 0x55, 0x16, 0x87, 0x7B, 0x85, 0x0B, 0x98, 0x31, 0xE6, 0xAC, 0x31, 0x4A, 0x73, 0x4E, 0x5F, - 0x9F, 0x5D, 0xD5, 0x75, 0xBB, 0x5A, 0x2E, 0x8D, 0x31, 0x89, 0x48, 0xEB, 0xB6, 0xFF, 0xE4, 0x93, - 0x27, 0xD6, 0xB9, 0x54, 0xF0, 0xAB, 0xD9, 0x32, 0x49, 0xC4, 0x8B, 0x37, 0xEF, 0xD7, 0x75, 0x8F, - 0x09, 0x4D, 0x92, 0x84, 0x52, 0xB2, 0x5A, 0x37, 0x3E, 0x78, 0xC6, 0x58, 0xA4, 0x76, 0xC0, 0x08, - 0x69, 0x6B, 0x39, 0xA5, 0x01, 0x42, 0xCC, 0xDD, 0x8E, 0x0E, 0xC9, 0x3C, 0xCB, 0x94, 0xD6, 0x4A, - 0x19, 0x6D, 0x6D, 0x92, 0x08, 0xCE, 0x99, 0x94, 0x8A, 0x31, 0x0E, 0x00, 0x08, 0xA3, 0x58, 0xD4, - 0x35, 0x1E, 0x95, 0x82, 0xB3, 0x4E, 0xAA, 0xC8, 0xEB, 0x9F, 0x26, 0x7C, 0xB9, 0x6A, 0xBC, 0x0F, - 0x94, 0x90, 0xB6, 0xEB, 0x7B, 0x29, 0xAD, 0xF5, 0x94, 0x92, 0xA6, 0x93, 0xCB, 0x75, 0x97, 0xA7, - 0x82, 0x33, 0x16, 0x00, 0x01, 0xC6, 0xAB, 0x75, 0x0D, 0x10, 0x8A, 0x3C, 0x7F, 0xF2, 0xE0, 0x30, - 0xCF, 0x13, 0x1F, 0xFC, 0xD6, 0xCB, 0xB2, 0x5D, 0x96, 0x9B, 0x6C, 0x80, 0x21, 0xC7, 0x7B, 0xAB, - 0xBF, 0x0F, 0x79, 0x3F, 0x83, 0xD4, 0xDC, 0x88, 0x04, 0x42, 0x28, 0xC6, 0x55, 0xBF, 0xFE, 0xFA, - 0x3B, 0x4A, 0x69, 0xA7, 0x5D, 0x22, 0x78, 0xA7, 0x74, 0xDB, 0xF5, 0x10, 0xFC, 0x3F, 0xFA, 0xE9, - 0x0F, 0x38, 0xE3, 0x8B, 0xE5, 0x4A, 0x24, 0x1C, 0x21, 0xE8, 0x7B, 0xD9, 0xF7, 0x52, 0x6A, 0x65, - 0x8C, 0xDD, 0xDF, 0x9B, 0x3A, 0xEF, 0x9A, 0xB6, 0x75, 0xD6, 0x8D, 0x46, 0xD5, 0x1F, 0xFC, 0xF8, - 0xE9, 0xE3, 0xFB, 0x87, 0x00, 0xE1, 0xEB, 0xEF, 0xDF, 0x7C, 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xF3, - 0x5C, 0x2A, 0xFD, 0xC3, 0xCF, 0x1E, 0xBD, 0x7C, 0xF3, 0xDE, 0xFB, 0x70, 0x7E, 0x71, 0xBD, 0x58, - 0xAE, 0x7F, 0xF0, 0xD9, 0x93, 0x7F, 0xF1, 0xCF, 0xFE, 0x51, 0x5C, 0xBE, 0x9C, 0xB3, 0xE9, 0xA8, - 0x20, 0x18, 0xF7, 0x52, 0x35, 0xAD, 0x3C, 0x3E, 0xDA, 0x8B, 0x05, 0x49, 0xDE, 0x79, 0x4A, 0xC9, - 0xD1, 0xFE, 0xA4, 0x2C, 0xD2, 0x5E, 0xEA, 0x37, 0xA7, 0x97, 0xCF, 0x5E, 0x9D, 0xCE, 0x97, 0xCD, - 0xDE, 0xA4, 0x9A, 0x4E, 0x4A, 0x6D, 0xEC, 0x9B, 0xD3, 0x4B, 0x91, 0xF0, 0x22, 0x4B, 0x47, 0x45, - 0x86, 0x10, 0xD2, 0xDA, 0x72, 0x41, 0xA5, 0xD2, 0x4D, 0xDB, 0x07, 0x1F, 0xA4, 0x32, 0xFB, 0x93, - 0x51, 0x2F, 0x15, 0xA5, 0xA4, 0x6E, 0x3B, 0xE7, 0x7C, 0x9E, 0x25, 0xFB, 0x7B, 0x93, 0xD9, 0x62, - 0xF9, 0xCD, 0x77, 0xAF, 0xF7, 0xA7, 0xE3, 0x87, 0x27, 0xFB, 0x31, 0x56, 0x83, 0xB6, 0x1B, 0xC0, - 0xB0, 0xF7, 0x7B, 0xEB, 0xBD, 0x73, 0x03, 0xE2, 0xC4, 0x32, 0xEF, 0x0D, 0xA0, 0x41, 0x80, 0x60, - 0x7D, 0xD8, 0xF4, 0x7D, 0x8F, 0xFD, 0x92, 0x83, 0xF3, 0x10, 0x39, 0xF4, 0xB7, 0x6D, 0x37, 0x7C, - 0x24, 0x95, 0xD8, 0x58, 0xF7, 0x1B, 0x08, 0xBB, 0x1D, 0x63, 0x19, 0xE6, 0xE5, 0x67, 0x7F, 0xF1, - 0xF3, 0x1B, 0xA5, 0x69, 0x13, 0x4F, 0xDC, 0xB2, 0xC9, 0x6D, 0x41, 0x6D, 0xF7, 0x8D, 0x68, 0x70, - 0x0F, 0x6D, 0x95, 0x38, 0x20, 0x08, 0x31, 0x46, 0x63, 0x19, 0x41, 0xA4, 0xD2, 0xDF, 0x45, 0xA8, - 0x2D, 0x68, 0xDC, 0x05, 0xA9, 0xDD, 0x9F, 0x72, 0x1B, 0xAD, 0x3E, 0x06, 0x46, 0x1B, 0x6C, 0x1F, - 0xEE, 0x38, 0x26, 0x7B, 0x85, 0xE0, 0xE1, 0x66, 0x88, 0x6E, 0x22, 0xB9, 0xB7, 0xBE, 0x6E, 0x07, - 0xE6, 0x06, 0x38, 0xDC, 0x68, 0xAA, 0xEE, 0xD6, 0x05, 0x68, 0x53, 0x1F, 0x46, 0x29, 0xA6, 0x94, - 0x30, 0x46, 0x18, 0xDB, 0x66, 0xE4, 0x6E, 0xB6, 0x94, 0x4D, 0x74, 0x46, 0x75, 0xED, 0x6A, 0xB1, - 0x38, 0x3F, 0xBF, 0x7E, 0xF5, 0xFA, 0x7D, 0x08, 0xC8, 0xB9, 0xD0, 0x74, 0x7D, 0x64, 0x2B, 0x51, - 0x5A, 0xB7, 0x6D, 0xDF, 0xB4, 0xBD, 0x07, 0x64, 0xB4, 0xE9, 0xBA, 0x4E, 0x49, 0xD9, 0xB5, 0x5D, - 0x53, 0xD7, 0x7D, 0xD7, 0x6F, 0x39, 0xC8, 0x10, 0x40, 0xF0, 0x10, 0xA7, 0x09, 0x21, 0x10, 0xA9, - 0x00, 0x40, 0x80, 0x11, 0xE7, 0x8C, 0x60, 0x4C, 0x09, 0x8E, 0xED, 0x1E, 0xFA, 0x5E, 0x45, 0x1B, - 0xD8, 0x3A, 0xF7, 0xE0, 0x68, 0xFC, 0xF4, 0xD1, 0xE1, 0xAB, 0xD3, 0xEB, 0x97, 0x6F, 0x2F, 0xB3, - 0x34, 0xAD, 0x8A, 0xEC, 0xA7, 0x5F, 0x3C, 0xFA, 0xE6, 0xBB, 0x37, 0x55, 0x95, 0x2B, 0x6D, 0x94, - 0x75, 0xE3, 0xF1, 0x08, 0x42, 0xC8, 0xB2, 0x34, 0x4D, 0x13, 0x9E, 0x08, 0xCE, 0x98, 0x94, 0x7A, - 0x3C, 0x2A, 0xA7, 0xD3, 0x49, 0x92, 0x70, 0x42, 0x68, 0xDF, 0xAB, 0xB6, 0x6B, 0xB7, 0x8A, 0xBA, - 0x73, 0x8E, 0x32, 0x36, 0x9E, 0x8C, 0xF7, 0xF7, 0xA7, 0xDE, 0x07, 0xCE, 0x59, 0x91, 0x25, 0x22, - 0xE1, 0xA3, 0xAA, 0x64, 0x14, 0x73, 0xCE, 0x0E, 0x0F, 0xF6, 0xA4, 0xD2, 0xFB, 0x7B, 0xE3, 0x7B, - 0x07, 0xA3, 0xF3, 0xCB, 0x65, 0xD7, 0x75, 0x6D, 0x5D, 0x63, 0xF0, 0x4D, 0xD7, 0x4B, 0xE3, 0xE6, - 0xF3, 0xD5, 0xF5, 0x6C, 0xEE, 0x9D, 0x53, 0x4A, 0x3F, 0x78, 0xF4, 0xD0, 0x68, 0xDD, 0x76, 0x9D, - 0xB3, 0x36, 0xCD, 0xD2, 0xE7, 0xAF, 0xCF, 0x4E, 0x2F, 0x16, 0x4A, 0x5B, 0xC6, 0x98, 0x31, 0xA6, - 0x97, 0x0A, 0x61, 0x24, 0xB5, 0x19, 0x8D, 0x46, 0xD6, 0x58, 0x8C, 0x09, 0x02, 0xF0, 0x21, 0x20, - 0x8C, 0x13, 0x21, 0x62, 0x38, 0x25, 0xC6, 0xBE, 0x39, 0xE7, 0x94, 0x52, 0x40, 0xA8, 0x97, 0x1A, - 0x61, 0x1C, 0x22, 0x3F, 0x4C, 0x08, 0xBD, 0xD4, 0xD1, 0xAF, 0x84, 0x31, 0xB2, 0xCE, 0xB5, 0x6D, - 0x87, 0x30, 0xDA, 0x9B, 0x8E, 0x21, 0x80, 0x52, 0x9A, 0x33, 0xAA, 0xAD, 0xED, 0x3A, 0x85, 0x11, - 0x52, 0xDA, 0x86, 0x10, 0xA2, 0x9D, 0x9E, 0x24, 0xC2, 0x05, 0xA8, 0x9B, 0x2E, 0x4F, 0x45, 0x96, - 0x25, 0x7D, 0xAF, 0xD6, 0x75, 0x23, 0x95, 0xD1, 0xC6, 0x7E, 0xF2, 0xE8, 0x68, 0x3A, 0x2E, 0x23, - 0xEF, 0xF3, 0x4D, 0x9E, 0xD1, 0xCE, 0xC6, 0x7A, 0xB3, 0xD3, 0xE3, 0xA1, 0x2E, 0x39, 0xAE, 0x01, - 0xBC, 0xAD, 0x42, 0xDE, 0xAE, 0xE1, 0x00, 0x18, 0xE3, 0xE0, 0xCC, 0x2F, 0xBF, 0xFC, 0x86, 0x31, - 0xDE, 0x49, 0xD3, 0x4A, 0xC5, 0x18, 0xF3, 0x01, 0x59, 0x6B, 0xAD, 0x35, 0x9C, 0xD1, 0xD9, 0x62, - 0x8D, 0x00, 0x08, 0x02, 0x29, 0x7B, 0x42, 0x48, 0x22, 0x84, 0xF7, 0x2E, 0xCB, 0x12, 0xEF, 0x82, - 0xEC, 0x65, 0x80, 0x90, 0xA4, 0xC9, 0xDE, 0x64, 0x34, 0x1E, 0xE5, 0x57, 0xD7, 0xCB, 0xFF, 0xFD, - 0xFF, 0xFE, 0x4F, 0xE7, 0x17, 0x73, 0x8A, 0xD1, 0xE5, 0xF5, 0x02, 0x61, 0xFC, 0xC3, 0xCF, 0x1F, - 0x59, 0xE7, 0x47, 0xE3, 0xEA, 0xF4, 0xEC, 0x32, 0x2A, 0xAA, 0x59, 0x9A, 0xFC, 0xFD, 0xAF, 0xBF, - 0xA1, 0x8C, 0x65, 0x59, 0xF2, 0xEC, 0xD5, 0xE9, 0x6C, 0xBE, 0x6E, 0xDA, 0xF6, 0x60, 0x6F, 0xEA, - 0xBC, 0x43, 0x08, 0x25, 0x9C, 0x3B, 0xE7, 0x8C, 0xB3, 0x09, 0xE7, 0x65, 0x91, 0xC6, 0x52, 0x10, - 0x4A, 0xC9, 0xBB, 0xB3, 0xCB, 0xC5, 0xAA, 0x0E, 0x1E, 0x0E, 0x0F, 0xC6, 0x47, 0x7B, 0xE3, 0x24, - 0x61, 0x75, 0xDB, 0x3B, 0xEB, 0xAA, 0x2A, 0x8F, 0x04, 0xE8, 0xCE, 0xFB, 0x2C, 0x49, 0x7C, 0x08, - 0x9D, 0x94, 0xD7, 0x8B, 0x55, 0x84, 0x48, 0x21, 0xF8, 0xAA, 0x6E, 0x0E, 0xF6, 0xC6, 0x52, 0xAA, - 0xAF, 0xBE, 0x79, 0x8E, 0x08, 0xFB, 0xE2, 0xE9, 0x89, 0xE0, 0x34, 0x0A, 0xD4, 0xD6, 0x37, 0x1F, - 0x35, 0x29, 0xEF, 0x77, 0xDB, 0xCB, 0x0E, 0x09, 0x62, 0xCE, 0x85, 0x28, 0xAF, 0x9B, 0x78, 0x1B, - 0xC4, 0xE4, 0x09, 0xE7, 0x7D, 0x64, 0xC9, 0x89, 0xF5, 0xD6, 0x83, 0x7E, 0x82, 0x80, 0x0C, 0xAE, - 0x7F, 0xF0, 0x3E, 0xB8, 0x6D, 0xBA, 0x05, 0x0C, 0x16, 0xD2, 0xAE, 0x2D, 0x45, 0xFE, 0xCD, 0xFF, - 0xF4, 0xEF, 0xB7, 0x02, 0x1F, 0xBF, 0x6F, 0x5B, 0x22, 0x3E, 0xA8, 0x1B, 0x68, 0x6B, 0x23, 0x0E, - 0xB8, 0xBB, 0x99, 0x37, 0x88, 0x79, 0x19, 0x18, 0x23, 0xCE, 0x68, 0x9E, 0x32, 0xCE, 0x08, 0xA3, - 0x24, 0x26, 0x4C, 0x6E, 0xC1, 0xF1, 0x16, 0x7E, 0xDD, 0x55, 0xBE, 0x3E, 0x6A, 0xFA, 0xFD, 0x7E, - 0xC3, 0x70, 0x80, 0xAC, 0x88, 0x3B, 0x08, 0x6E, 0xC8, 0x3C, 0x03, 0x6C, 0xCB, 0xA4, 0x6E, 0xE1, - 0xE3, 0xF0, 0xED, 0x9B, 0xFF, 0xB6, 0xDF, 0x12, 0x93, 0x30, 0x76, 0x55, 0xB9, 0xAD, 0xEB, 0x71, - 0x3B, 0x02, 0xBB, 0x30, 0x17, 0x25, 0x0D, 0x21, 0x6C, 0xAC, 0xD1, 0xB2, 0x7B, 0xF1, 0xFC, 0xC5, - 0xF7, 0xCF, 0xDE, 0x7C, 0xFB, 0xFC, 0xF4, 0xF2, 0x6A, 0x89, 0x09, 0x6D, 0x3B, 0x35, 0x5B, 0xAC, - 0x9A, 0xA6, 0x83, 0x10, 0x94, 0xD2, 0x75, 0xD3, 0x29, 0x6D, 0x43, 0x40, 0xDE, 0x7B, 0xAD, 0x0D, - 0x0A, 0xC1, 0x39, 0xDF, 0x2B, 0x6D, 0x8C, 0xD9, 0x0E, 0x2B, 0x21, 0x84, 0x27, 0x0C, 0x21, 0x30, - 0xDA, 0x02, 0x04, 0xCE, 0x39, 0xC6, 0x78, 0xA8, 0xDD, 0xA1, 0x94, 0x12, 0xB2, 0xD5, 0x7F, 0x09, - 0x21, 0x18, 0x41, 0x08, 0x3E, 0x78, 0xFF, 0x8F, 0x7F, 0xFA, 0x89, 0x31, 0xE6, 0xAF, 0x7F, 0xF9, - 0xED, 0xA4, 0xCC, 0xF7, 0x46, 0xF9, 0x1F, 0xFC, 0xF0, 0xF1, 0xD5, 0x6C, 0x31, 0x9B, 0xAF, 0x97, - 0xEB, 0x56, 0x64, 0xF9, 0xDE, 0x74, 0x92, 0x65, 0x89, 0xE0, 0x3C, 0x32, 0x5E, 0x31, 0x4A, 0x8B, - 0x32, 0x4B, 0x84, 0x00, 0x40, 0x52, 0x29, 0xA9, 0x8C, 0x52, 0x3A, 0xF2, 0xBA, 0xC8, 0x5E, 0x61, - 0x82, 0x8B, 0x22, 0x3F, 0x3C, 0xDC, 0xDF, 0x3F, 0xD8, 0x17, 0x22, 0x59, 0x2C, 0x57, 0x42, 0xF0, - 0x32, 0x4F, 0x29, 0x81, 0x2C, 0x11, 0xC1, 0x5B, 0x8A, 0x11, 0x17, 0x3C, 0x40, 0x38, 0x38, 0x98, - 0xEE, 0x8D, 0x8A, 0x77, 0xEF, 0x2F, 0x8B, 0x3C, 0x4F, 0x04, 0x9F, 0x4E, 0x46, 0x65, 0x99, 0x63, - 0xCA, 0x2E, 0x2E, 0xAF, 0xDB, 0xB6, 0x9D, 0x4E, 0x26, 0x49, 0x92, 0x24, 0x89, 0x50, 0x4A, 0xE6, - 0x59, 0x9A, 0xE7, 0x79, 0xF0, 0xFE, 0xED, 0xBB, 0xF3, 0xB2, 0xAA, 0xB4, 0x75, 0xD7, 0xB3, 0x65, - 0x16, 0xC9, 0x66, 0xA3, 0x7F, 0x37, 0x84, 0x07, 0xF7, 0xEF, 0xF5, 0x52, 0xC6, 0x6D, 0x36, 0xEE, - 0x9D, 0xDE, 0x1A, 0x00, 0x60, 0x8C, 0x71, 0xCE, 0x03, 0x42, 0x8C, 0x31, 0xAD, 0x8D, 0x77, 0x2E, - 0xCE, 0x38, 0xC6, 0xC8, 0x3A, 0x1B, 0x63, 0x61, 0xD1, 0xFF, 0xE2, 0x7D, 0x88, 0xDB, 0x67, 0x34, - 0x5B, 0xF2, 0x3C, 0x8D, 0xB4, 0xB1, 0x64, 0xD3, 0x11, 0xD9, 0x18, 0x1B, 0xC1, 0x45, 0x5B, 0x27, - 0x18, 0x2B, 0xB2, 0x34, 0xBA, 0x66, 0x62, 0x5C, 0xA7, 0xEB, 0x25, 0x63, 0x34, 0xF8, 0xF0, 0xF4, - 0xF1, 0xBD, 0x83, 0xFD, 0x49, 0x6C, 0xE1, 0x1E, 0xF7, 0x30, 0x14, 0x36, 0xFC, 0xCB, 0x5B, 0xE6, - 0x04, 0xD8, 0x50, 0xCD, 0x20, 0x20, 0x51, 0x66, 0x37, 0x66, 0x4D, 0x8C, 0x93, 0x0D, 0x96, 0x07, - 0x46, 0x8C, 0x73, 0xD9, 0x2C, 0xE7, 0xB3, 0x79, 0xD3, 0x9B, 0xF9, 0xBA, 0xA5, 0x98, 0xF8, 0x30, - 0x78, 0x82, 0x10, 0x82, 0xC5, 0xB2, 0x0E, 0x21, 0x38, 0x6B, 0x13, 0xC1, 0x47, 0x55, 0x91, 0xE7, - 0x49, 0x91, 0x25, 0x82, 0x11, 0xA3, 0xB5, 0xB5, 0x9A, 0x10, 0x22, 0xB5, 0x7D, 0xF2, 0xE8, 0xF8, - 0xD3, 0xC7, 0x27, 0x5D, 0xDB, 0x7F, 0xF9, 0xD5, 0x8B, 0xEB, 0xF9, 0xAA, 0xEF, 0x65, 0x55, 0x15, - 0xA3, 0x71, 0x45, 0x30, 0x7E, 0xF2, 0xE0, 0xDE, 0xB3, 0x57, 0x67, 0x97, 0x57, 0x33, 0x29, 0xD5, - 0x7C, 0xB1, 0x9A, 0x2D, 0xD6, 0x4D, 0x2B, 0x01, 0x21, 0xA5, 0x4C, 0xD3, 0xF6, 0x8F, 0x1E, 0xDC, - 0xA3, 0x8C, 0x5A, 0xE7, 0xCB, 0x3C, 0xDB, 0xDF, 0x1B, 0x85, 0x10, 0x12, 0xCE, 0x7D, 0x08, 0xAB, - 0xBA, 0xED, 0xA5, 0x96, 0x4A, 0xE7, 0x59, 0xF2, 0xE0, 0xF8, 0x80, 0x51, 0x5A, 0xE4, 0xE9, 0x62, - 0x59, 0x37, 0x5D, 0x5F, 0xE6, 0xD9, 0x78, 0x94, 0xD7, 0x75, 0x1F, 0x00, 0x2E, 0x67, 0x4B, 0x4C, - 0x30, 0x02, 0xB8, 0x9C, 0xAD, 0x12, 0x21, 0x16, 0xEB, 0x7A, 0xB9, 0x6A, 0xBA, 0x5E, 0x8F, 0xAB, - 0x7C, 0x7F, 0x3A, 0x42, 0x08, 0xF5, 0x4A, 0x75, 0x4D, 0x7F, 0x76, 0x7E, 0xF5, 0xE0, 0xFE, 0xD1, - 0x7C, 0xB1, 0x7A, 0x77, 0x76, 0xF9, 0xC9, 0xA3, 0x7B, 0x0F, 0x8F, 0xF7, 0x8C, 0xF5, 0x91, 0xC9, - 0x67, 0x2B, 0xD4, 0x30, 0x70, 0x1F, 0x6D, 0xB3, 0xB5, 0xA2, 0x0F, 0x7A, 0xE8, 0x97, 0xE8, 0x42, - 0x04, 0xB8, 0x9B, 0x6C, 0xB2, 0xC1, 0x29, 0xE6, 0xC0, 0x47, 0xB8, 0x08, 0x28, 0x80, 0x8F, 0xC5, - 0x45, 0x91, 0xD2, 0xD5, 0x3A, 0x3F, 0xE4, 0x8D, 0xA1, 0xB0, 0xC9, 0x59, 0xFB, 0x40, 0xC6, 0x29, - 0xC1, 0x38, 0x62, 0xC2, 0xA6, 0xEA, 0x71, 0xB8, 0x6A, 0x03, 0x18, 0x71, 0x25, 0x84, 0x80, 0x06, - 0xF8, 0x40, 0x1B, 0x6B, 0x95, 0x0E, 0xC0, 0x30, 0x84, 0x56, 0xA5, 0xB2, 0x21, 0x04, 0xCE, 0xE8, - 0xE6, 0x4E, 0x06, 0x4D, 0x67, 0x37, 0xC1, 0xE4, 0x2E, 0x5A, 0x85, 0x1D, 0xBF, 0xFB, 0x5D, 0x14, - 0xBB, 0xAB, 0xC1, 0xC5, 0x57, 0xE3, 0x1E, 0x3E, 0x40, 0x18, 0x1A, 0x34, 0xC3, 0x4D, 0x9C, 0xE9, - 0xC6, 0x62, 0x0F, 0x1F, 0x4B, 0x45, 0xD9, 0xFD, 0x9C, 0x30, 0x24, 0x55, 0xF8, 0x4D, 0x5A, 0xDB, - 0xE0, 0x58, 0x74, 0x6E, 0x28, 0x94, 0x8D, 0x29, 0xFD, 0xB0, 0xD1, 0x6C, 0x9D, 0x73, 0x08, 0x53, - 0xAD, 0x65, 0xBD, 0x5A, 0x21, 0x2B, 0xAF, 0x2E, 0xAF, 0xCE, 0xAF, 0xEB, 0x75, 0x2D, 0x95, 0x71, - 0x84, 0x92, 0xC5, 0xE9, 0x25, 0x65, 0x4C, 0x69, 0x03, 0x21, 0x48, 0xD5, 0x84, 0x10, 0x94, 0x32, - 0x98, 0xE0, 0x24, 0x15, 0x8C, 0x31, 0xD5, 0x4B, 0x40, 0x10, 0x9C, 0xA7, 0x94, 0x00, 0x42, 0x11, - 0xA7, 0x30, 0x42, 0x80, 0x21, 0x84, 0x40, 0x19, 0x49, 0xF3, 0xD4, 0x7B, 0x1F, 0x87, 0x3A, 0x49, - 0x12, 0x84, 0x90, 0xD6, 0x3A, 0xEE, 0xAB, 0x4A, 0xA9, 0x34, 0x49, 0x10, 0x02, 0xEF, 0x1C, 0x63, - 0xD4, 0x28, 0x2B, 0x28, 0xBA, 0x5C, 0x34, 0x59, 0x92, 0x7E, 0xF2, 0x60, 0xFF, 0xE4, 0x78, 0x3F, - 0xCF, 0xC4, 0xDB, 0x33, 0x59, 0x14, 0xB9, 0x71, 0x6D, 0xC2, 0x19, 0xC6, 0x88, 0x53, 0x86, 0x22, - 0x31, 0x1D, 0x46, 0xC1, 0x07, 0x67, 0x3D, 0xA5, 0x74, 0x34, 0x2E, 0xC7, 0xE3, 0x6A, 0xB5, 0x6E, - 0x30, 0x46, 0xE3, 0x71, 0x85, 0x00, 0x96, 0xAB, 0x75, 0x9A, 0x24, 0xDA, 0x18, 0xE7, 0x43, 0x64, - 0xF2, 0x9B, 0x8C, 0x2B, 0xC1, 0x88, 0xE0, 0x14, 0xBC, 0xCB, 0x53, 0x51, 0x37, 0xBE, 0x57, 0x06, - 0x23, 0x64, 0x95, 0x62, 0x45, 0xDE, 0xF6, 0xF2, 0x60, 0x7F, 0xAF, 0xEB, 0x64, 0x99, 0x25, 0xFB, - 0x7B, 0xA3, 0x4E, 0x99, 0x80, 0xE9, 0xE3, 0xC7, 0x0F, 0x29, 0xA3, 0x52, 0xAA, 0x00, 0x1E, 0x02, - 0xF5, 0xCE, 0x72, 0x46, 0x0E, 0xF6, 0xAA, 0x00, 0xF8, 0xE5, 0x9B, 0xB3, 0xF3, 0xEB, 0x85, 0x36, - 0xCE, 0x39, 0xA7, 0x8C, 0x19, 0x8F, 0x4A, 0x42, 0xB0, 0xEC, 0xFB, 0xAA, 0x2A, 0xB5, 0xB1, 0x01, - 0x40, 0x69, 0xCD, 0x29, 0xF5, 0x21, 0x10, 0x4A, 0x70, 0x08, 0xD6, 0x3B, 0x17, 0x82, 0xF3, 0x5E, - 0x69, 0xAD, 0x95, 0x76, 0x3E, 0x44, 0xFA, 0x8D, 0xBE, 0x6F, 0xB2, 0x54, 0x48, 0x6D, 0x31, 0xC2, - 0x00, 0x88, 0x31, 0xEA, 0x7D, 0x50, 0xCA, 0x10, 0x82, 0x83, 0x67, 0x8C, 0x51, 0x08, 0x20, 0xA5, - 0x12, 0x42, 0x44, 0x4D, 0x1D, 0x20, 0x34, 0x5D, 0xEF, 0xAC, 0xC3, 0x84, 0xC4, 0x14, 0x67, 0x63, - 0xAD, 0x77, 0x8E, 0x0B, 0x16, 0x21, 0x2C, 0xC6, 0x19, 0x04, 0x67, 0x5A, 0x9B, 0xB6, 0x93, 0xF8, - 0x66, 0xBB, 0x06, 0xEF, 0x03, 0x10, 0xC0, 0x1E, 0x85, 0xC1, 0x37, 0x1A, 0x21, 0x6D, 0xBB, 0x30, - 0x51, 0xDC, 0xC2, 0x87, 0x86, 0x39, 0xC3, 0xEB, 0x38, 0x84, 0x40, 0x08, 0x09, 0xC1, 0x69, 0xD5, - 0x5F, 0x5E, 0x2D, 0x5A, 0xE5, 0x18, 0xA3, 0x18, 0xC1, 0x0F, 0x9F, 0xDE, 0xFB, 0xED, 0x8B, 0xF3, - 0x00, 0x81, 0x53, 0xB2, 0x3F, 0xCA, 0xDF, 0xF4, 0x8B, 0xD8, 0x9D, 0xD0, 0x39, 0x97, 0x24, 0x02, - 0x13, 0xDC, 0xB5, 0x3D, 0xE3, 0x8C, 0x31, 0x5A, 0x55, 0xA5, 0x03, 0x38, 0xD8, 0x9B, 0x3E, 0x3E, - 0x39, 0x68, 0xFB, 0xFE, 0xEA, 0x7A, 0x79, 0x3D, 0x5F, 0x12, 0x82, 0x19, 0x23, 0xCB, 0xD5, 0xBA, - 0xE9, 0x3A, 0xEF, 0xEC, 0x6F, 0xBE, 0x79, 0xF1, 0xDB, 0xAF, 0x9F, 0xC7, 0xAC, 0x63, 0xC1, 0xE8, - 0xE5, 0xE5, 0x6C, 0xB9, 0xAC, 0x47, 0x55, 0xB1, 0x58, 0xAE, 0x7F, 0xF2, 0xA3, 0xCF, 0x92, 0x54, - 0x4C, 0x47, 0x45, 0x22, 0x78, 0x22, 0x98, 0xD6, 0x56, 0x08, 0xA6, 0xAD, 0xC1, 0x04, 0x0B, 0xCE, - 0x97, 0xEB, 0x76, 0x3A, 0x2A, 0x62, 0xC0, 0xFD, 0xE8, 0x60, 0x7C, 0xB0, 0x57, 0x3D, 0x38, 0x39, - 0xA8, 0x9B, 0xAE, 0x2A, 0xB2, 0xD8, 0x1E, 0x5B, 0x4A, 0x4D, 0x28, 0x9D, 0xCD, 0xEB, 0xCF, 0x1E, - 0x1F, 0x1F, 0x1F, 0x4E, 0x01, 0xA1, 0x2C, 0x13, 0xB3, 0xF9, 0xEA, 0xF2, 0x7A, 0x31, 0x9B, 0xAF, - 0xAE, 0x17, 0x4B, 0x6B, 0x5C, 0x92, 0x88, 0xCF, 0x9F, 0x3E, 0xFC, 0xFA, 0xBB, 0x97, 0x8B, 0x55, - 0xFD, 0x27, 0xFF, 0xF8, 0xA7, 0xDF, 0xBF, 0x78, 0x7B, 0x71, 0xBD, 0x1C, 0x72, 0x55, 0x3E, 0xA2, - 0xAC, 0xDC, 0x9C, 0x74, 0xCE, 0x01, 0x10, 0x17, 0x13, 0x36, 0x63, 0x2D, 0x37, 0xF6, 0x3E, 0x44, - 0x63, 0x6F, 0xA3, 0x85, 0x79, 0x08, 0x3E, 0x6C, 0xF8, 0xC6, 0x01, 0x01, 0xF2, 0x0E, 0x3C, 0x38, - 0xEB, 0xC3, 0x36, 0xA2, 0xE9, 0x5D, 0x20, 0x18, 0x21, 0x02, 0x5B, 0x60, 0xD9, 0x24, 0xAE, 0x23, - 0x4A, 0x08, 0x1A, 0x7C, 0x69, 0xF1, 0xF3, 0x11, 0x6C, 0x36, 0xBD, 0x1D, 0xAE, 0xCC, 0x58, 0xA2, - 0x09, 0x10, 0xD0, 0xC0, 0x4D, 0x06, 0x30, 0xF0, 0x49, 0x22, 0x1C, 0xC9, 0x21, 0x91, 0x73, 0x43, - 0x98, 0x4F, 0x2A, 0x43, 0x09, 0x46, 0x08, 0x08, 0xC1, 0xB1, 0x7F, 0x04, 0xDC, 0x78, 0xEE, 0x07, - 0xA3, 0x30, 0x5A, 0xC7, 0xD1, 0xD7, 0xB0, 0xC5, 0x94, 0xED, 0x79, 0xB4, 0xC3, 0x36, 0x89, 0x3E, - 0x46, 0x8E, 0x1E, 0x99, 0x0F, 0xD0, 0x4E, 0x80, 0x3C, 0x92, 0xB8, 0x0D, 0xF1, 0xA6, 0x9D, 0x7A, - 0xAE, 0xED, 0xB0, 0x0E, 0x4F, 0x63, 0x26, 0xC9, 0x0D, 0xBF, 0x1D, 0x61, 0x2C, 0x84, 0xA0, 0x63, - 0x81, 0x51, 0xDC, 0x90, 0xA3, 0x8E, 0x16, 0x77, 0xE0, 0xC8, 0x26, 0xC8, 0x19, 0x05, 0x40, 0xC1, - 0x07, 0x00, 0x74, 0x7D, 0x79, 0xF1, 0xEC, 0xDB, 0x6F, 0x13, 0x4E, 0xF6, 0x46, 0x45, 0x96, 0x70, - 0x42, 0xA9, 0x75, 0xDE, 0x58, 0x23, 0x8D, 0xF1, 0x3E, 0x78, 0xE7, 0x10, 0x42, 0xCE, 0xD9, 0xB8, - 0xBD, 0xA7, 0x69, 0xE2, 0x01, 0x62, 0x9F, 0x70, 0xCC, 0xA8, 0xF7, 0x1E, 0x41, 0xE0, 0x8C, 0x21, - 0xEB, 0x42, 0x08, 0x94, 0x10, 0x00, 0x1F, 0xFC, 0x4D, 0x46, 0x0C, 0xC6, 0x58, 0x69, 0xED, 0x94, - 0x46, 0xD1, 0x41, 0x10, 0xBC, 0x31, 0x16, 0x42, 0x90, 0xBD, 0xCA, 0xD2, 0x44, 0x6B, 0xE3, 0x9C, - 0x0D, 0x01, 0xC6, 0xE3, 0x42, 0x29, 0x75, 0x75, 0xBD, 0x2A, 0x32, 0xEE, 0x01, 0x63, 0x04, 0x52, - 0x99, 0xA6, 0xD7, 0x52, 0x69, 0xC2, 0x68, 0x27, 0x15, 0xC2, 0xD8, 0x7B, 0xA8, 0xCA, 0xCC, 0xFB, - 0x60, 0x8D, 0x8D, 0xD2, 0x18, 0xAB, 0xF0, 0x7A, 0xA5, 0x43, 0x08, 0x07, 0xFB, 0x93, 0xAE, 0x97, - 0xCE, 0xF9, 0xA3, 0xA3, 0xC3, 0xA6, 0xED, 0xB0, 0x73, 0x08, 0xC1, 0x68, 0x54, 0x22, 0x08, 0x04, - 0x03, 0x27, 0xB8, 0x2A, 0x52, 0x67, 0xED, 0x64, 0x94, 0x4F, 0x46, 0xF9, 0xCB, 0x77, 0x97, 0x89, - 0xA0, 0x16, 0xF9, 0x34, 0x15, 0x4D, 0xDB, 0x13, 0xF2, 0xFF, 0x11, 0xF6, 0x5E, 0x4D, 0x92, 0x25, - 0x59, 0x7A, 0xD8, 0x39, 0x7E, 0x5C, 0x5C, 0x15, 0x32, 0x45, 0x65, 0x55, 0x75, 0x55, 0x77, 0xB5, - 0x9E, 0x1E, 0xB1, 0x33, 0x3B, 0x8B, 0x01, 0x07, 0xA0, 0x00, 0xD7, 0x40, 0x33, 0x3E, 0xF1, 0x85, - 0xBF, 0x82, 0x86, 0x15, 0xC0, 0xE2, 0xAF, 0xF0, 0x99, 0xFF, 0x81, 0x2F, 0x34, 0xD2, 0xC0, 0x25, - 0x09, 0xEE, 0x12, 0xB6, 0x8B, 0xDD, 0xC5, 0x08, 0xB4, 0x98, 0x16, 0x25, 0xBA, 0x44, 0x56, 0xEA, - 0x90, 0x57, 0xB9, 0x3A, 0x7C, 0xF0, 0x1B, 0x51, 0xD9, 0x33, 0x8B, 0x45, 0x58, 0x59, 0x5A, 0x55, - 0x66, 0x56, 0x44, 0xDC, 0x1B, 0xEE, 0xC7, 0x8F, 0xF8, 0x84, 0xBC, 0x7F, 0xEF, 0xA8, 0x30, 0xB4, - 0xDA, 0xB4, 0xD7, 0x8B, 0x55, 0x53, 0x37, 0x4D, 0xDB, 0x6F, 0x36, 0x5B, 0xE7, 0x7C, 0x08, 0x11, - 0x91, 0xEF, 0x1C, 0x1F, 0xAE, 0x36, 0xDB, 0x8B, 0xB3, 0xCB, 0xD9, 0xC1, 0x3C, 0x02, 0xB4, 0x5D, - 0x1F, 0x23, 0x24, 0x2E, 0xC7, 0xDD, 0x93, 0x3B, 0x21, 0x86, 0xD3, 0xD3, 0xB3, 0xE9, 0x64, 0xB2, - 0xAD, 0x1B, 0xE7, 0x43, 0xD7, 0x75, 0xBA, 0xAA, 0x04, 0xA2, 0xB3, 0x2E, 0xE5, 0x3D, 0x7D, 0x6F, - 0x15, 0x11, 0x30, 0x28, 0xAD, 0xC1, 0x7B, 0x22, 0xEA, 0x7B, 0x9B, 0xA4, 0xEB, 0x80, 0xB1, 0xED, - 0xED, 0xF1, 0xD1, 0x4C, 0x29, 0xD9, 0x75, 0x76, 0xED, 0x9A, 0xBE, 0xB7, 0xC0, 0xCC, 0x1C, 0x95, - 0x52, 0xDE, 0x07, 0xEB, 0x42, 0xC2, 0xB2, 0x23, 0x8A, 0x84, 0x95, 0xD7, 0xBB, 0x73, 0x54, 0x29, - 0x72, 0xD6, 0x39, 0xCB, 0x4A, 0xC9, 0x14, 0x74, 0xAC, 0xF5, 0xDE, 0x3A, 0x64, 0x4E, 0xD6, 0x1E, - 0xFB, 0x1A, 0x42, 0x08, 0x8E, 0x31, 0x82, 0xD8, 0xEF, 0x44, 0xDE, 0xA1, 0x3A, 0x91, 0xE3, 0xED, - 0x34, 0x1F, 0xDF, 0xFC, 0xC6, 0x00, 0x79, 0xF3, 0x9F, 0x7D, 0xF9, 0xE4, 0xEB, 0x6F, 0x5E, 0x14, - 0x5A, 0xC4, 0x08, 0x77, 0x8E, 0x46, 0xCB, 0x75, 0xAD, 0xB5, 0x6C, 0x7B, 0xC7, 0x00, 0xD3, 0x2A, - 0xCB, 0x14, 0xC5, 0xC8, 0x4A, 0xA9, 0x54, 0x1A, 0xA3, 0x40, 0x08, 0x50, 0x77, 0x76, 0x3E, 0x19, - 0x19, 0xA3, 0x7B, 0xE7, 0x3E, 0xF9, 0xE8, 0xBD, 0xE9, 0xB8, 0x3C, 0xBB, 0xB8, 0xBE, 0x5E, 0xAC, - 0x9B, 0xBA, 0x59, 0xAD, 0xD6, 0x49, 0x4F, 0xA9, 0xEB, 0x7A, 0x72, 0xEE, 0xE5, 0x2B, 0xFB, 0xFA, - 0xEC, 0x4A, 0x6B, 0x59, 0x15, 0xE3, 0xD5, 0xBA, 0xEF, 0x3A, 0x5B, 0xE4, 0x66, 0x53, 0xB7, 0xCE, - 0x7A, 0xAD, 0x95, 0x92, 0xF4, 0xBD, 0xF7, 0x1E, 0xF4, 0xBD, 0x8D, 0x15, 0x4B, 0x25, 0xA5, 0x10, - 0x24, 0x44, 0x6F, 0x6D, 0x55, 0xE6, 0xD3, 0x71, 0xE1, 0x9D, 0x97, 0x44, 0x29, 0xAC, 0x0B, 0x44, - 0xA5, 0x54, 0x6E, 0x4C, 0x55, 0x64, 0x52, 0xD2, 0xCD, 0x62, 0x5D, 0x64, 0xBA, 0x6B, 0x7B, 0x81, - 0xC2, 0xB9, 0xEE, 0xDB, 0x57, 0x17, 0x77, 0x8F, 0xE7, 0x5D, 0x6F, 0xCB, 0x32, 0x7B, 0xEF, 0xED, - 0x7B, 0x0F, 0xEF, 0x1F, 0x2F, 0x56, 0xF5, 0xD3, 0xE7, 0xA7, 0x9B, 0x4D, 0x33, 0x9F, 0x4D, 0x84, - 0x14, 0x3F, 0xFE, 0xE1, 0x47, 0xCF, 0x5E, 0x9C, 0xD5, 0x6D, 0x37, 0x1A, 0x97, 0xAF, 0xCE, 0x6F, - 0xFA, 0xDE, 0x49, 0x12, 0xBC, 0x43, 0x38, 0xA4, 0xE4, 0x21, 0x6D, 0xDF, 0x5D, 0x55, 0xB8, 0x7B, - 0x70, 0x8C, 0x8C, 0x00, 0x71, 0x80, 0x40, 0x44, 0xDE, 0x25, 0x4C, 0x30, 0x4C, 0x36, 0x71, 0xB8, - 0xA7, 0x1C, 0x21, 0xD5, 0x9B, 0x00, 0xC0, 0x28, 0xE2, 0xBE, 0x0E, 0x43, 0xE0, 0x08, 0x12, 0x21, - 0xD1, 0x25, 0x79, 0x40, 0x1D, 0x08, 0x12, 0x48, 0x7F, 0xF4, 0xC7, 0x7F, 0x46, 0x02, 0x45, 0xE2, - 0x8A, 0xC3, 0x40, 0x9C, 0xDA, 0x4D, 0xA0, 0x87, 0x4D, 0x0F, 0xBB, 0xC6, 0xE7, 0x6F, 0xA1, 0x4E, - 0x85, 0x40, 0x25, 0x84, 0x56, 0x84, 0x3B, 0x8D, 0xD9, 0x3E, 0xAD, 0x66, 0x00, 0x44, 0x91, 0x84, - 0x7A, 0xD3, 0x95, 0x38, 0xE7, 0xD2, 0xD7, 0xB6, 0xED, 0xAD, 0x75, 0x6D, 0xDB, 0x47, 0x8E, 0x49, - 0xD7, 0x75, 0x1F, 0xA1, 0xF6, 0x84, 0xC7, 0xDF, 0xCD, 0xA1, 0xFE, 0x9E, 0x7F, 0x22, 0xBE, 0x51, - 0xBD, 0xBD, 0x95, 0x76, 0xA5, 0xBF, 0xEC, 0x79, 0x91, 0xB7, 0xB9, 0x04, 0xB8, 0xAB, 0x9C, 0xF7, - 0x38, 0xC6, 0x14, 0xDD, 0xD2, 0x3F, 0x95, 0x4A, 0xDF, 0x41, 0xC4, 0x94, 0xF4, 0xA5, 0xB1, 0xD4, - 0x20, 0x45, 0x3B, 0x88, 0x6D, 0x5D, 0x5D, 0x7C, 0xF1, 0xEB, 0x5F, 0x9C, 0x4C, 0x0B, 0x85, 0xB0, - 0x69, 0x3A, 0x40, 0xF1, 0xE2, 0xF4, 0x66, 0xDB, 0xB4, 0xA4, 0x14, 0x82, 0x60, 0x1C, 0xBC, 0x38, - 0x9D, 0xF5, 0xA9, 0x42, 0x91, 0x4A, 0xFA, 0xC0, 0xDE, 0x85, 0x04, 0x2C, 0x48, 0xA2, 0x7A, 0x31, - 0x70, 0x0C, 0x11, 0x85, 0xC8, 0x33, 0x23, 0x25, 0x01, 0xC2, 0x90, 0x39, 0x73, 0x0C, 0x21, 0x20, - 0x40, 0x08, 0xC1, 0x5A, 0x17, 0x63, 0x4C, 0x83, 0xC2, 0x34, 0x20, 0xCB, 0x33, 0x63, 0xAD, 0x8B, - 0x91, 0x11, 0xC4, 0x5B, 0x47, 0x63, 0x8E, 0xB1, 0x0F, 0x1C, 0x19, 0x95, 0x14, 0x1F, 0xBD, 0xF7, - 0xE0, 0xAB, 0x67, 0x67, 0xA7, 0xAF, 0xAF, 0xAB, 0x51, 0xD5, 0xB4, 0xB6, 0xAA, 0x8A, 0x3C, 0xCF, - 0xAD, 0xB5, 0x75, 0xD3, 0x4A, 0x12, 0xBD, 0xB5, 0x4A, 0xC9, 0xA6, 0xED, 0x10, 0x99, 0x23, 0x87, - 0x10, 0xDA, 0xAE, 0x23, 0x21, 0xFA, 0xDE, 0xF6, 0xD6, 0x21, 0x40, 0x9E, 0x9B, 0xA2, 0xC8, 0x11, - 0x85, 0x24, 0xC1, 0x31, 0x08, 0x44, 0xA3, 0xA8, 0xC8, 0x54, 0x55, 0xE5, 0x45, 0x6E, 0x48, 0x4A, - 0x44, 0x94, 0x24, 0x8B, 0xAA, 0x12, 0x42, 0x18, 0x63, 0xCA, 0xC2, 0x70, 0xB0, 0xCC, 0xF1, 0xF9, - 0xAB, 0x8B, 0xAA, 0x2C, 0x8D, 0x96, 0x8C, 0xB8, 0xDE, 0xD4, 0xE3, 0xF1, 0xE8, 0xF8, 0xF8, 0x50, - 0x69, 0xBD, 0x5A, 0x6D, 0x1E, 0xBD, 0x7D, 0xBF, 0xCC, 0xF5, 0xB7, 0xA7, 0x57, 0x26, 0xCB, 0xD6, - 0xEB, 0x6D, 0x72, 0xDB, 0x8D, 0x91, 0x8F, 0x8F, 0x0F, 0x1E, 0x3E, 0xB8, 0xFF, 0xF2, 0xD5, 0xE9, - 0xE1, 0xC1, 0x41, 0x0C, 0x51, 0x12, 0x39, 0xE7, 0x52, 0x21, 0xA0, 0x24, 0x09, 0x49, 0x3E, 0x84, - 0x18, 0x62, 0x55, 0xE4, 0x59, 0x9E, 0x31, 0x00, 0x0F, 0x22, 0x2C, 0xEC, 0xBD, 0x8F, 0x91, 0x49, - 0x92, 0x94, 0x54, 0xE4, 0x86, 0x99, 0x89, 0x04, 0x09, 0xE1, 0x43, 0x20, 0x31, 0x2C, 0xA1, 0x10, - 0x93, 0x24, 0xB7, 0xC8, 0x32, 0xE3, 0x43, 0xD8, 0x6C, 0x6A, 0xE7, 0x3D, 0x33, 0xC7, 0x10, 0x99, - 0xC1, 0x28, 0x09, 0xCC, 0x44, 0x62, 0x32, 0x2E, 0x6F, 0x96, 0x5B, 0x8E, 0x8C, 0x08, 0xE3, 0x51, - 0x15, 0x9C, 0x3F, 0x3C, 0x98, 0xBC, 0xFF, 0xE8, 0x7E, 0x1A, 0xB6, 0xEC, 0x97, 0xD0, 0x9B, 0xBE, - 0xCA, 0x77, 0x9B, 0x21, 0x88, 0xFB, 0xF6, 0xFE, 0x6D, 0x82, 0x0A, 0x30, 0xF3, 0xBF, 0xF9, 0xB7, - 0x7F, 0xFB, 0xCB, 0x4F, 0x9F, 0xBC, 0xFF, 0xE8, 0xAD, 0xA6, 0x69, 0xAB, 0x5C, 0x8F, 0x47, 0xC5, - 0xB7, 0xAF, 0xAE, 0x98, 0x79, 0xDB, 0x58, 0xEB, 0xC3, 0xC9, 0xC1, 0x98, 0x08, 0x2F, 0x97, 0x35, - 0x87, 0x98, 0xE6, 0xC2, 0x5D, 0xD7, 0x7B, 0x1F, 0x26, 0x93, 0x51, 0x9E, 0x65, 0x37, 0x8B, 0x95, - 0x10, 0xA8, 0xA4, 0x3C, 0x7D, 0x7D, 0xF9, 0xE4, 0xDB, 0x97, 0x37, 0x37, 0xCB, 0xCD, 0xB6, 0x1E, - 0x15, 0xD9, 0x6C, 0x3A, 0x9A, 0x8C, 0x8A, 0x3C, 0x33, 0xDB, 0xA6, 0xF5, 0xDE, 0x23, 0x8A, 0x71, - 0x55, 0xA6, 0x03, 0x72, 0x36, 0x19, 0x09, 0x84, 0xD4, 0xBA, 0x3A, 0x38, 0x98, 0xAE, 0x36, 0xDB, - 0x2C, 0xD3, 0x52, 0xD2, 0x5F, 0xFE, 0xF5, 0xAF, 0xF3, 0x4C, 0x9B, 0x4C, 0x3B, 0x17, 0x46, 0x55, - 0x9E, 0x66, 0x53, 0xA9, 0xB6, 0xD2, 0x4A, 0x09, 0x14, 0x69, 0x77, 0xC7, 0x10, 0xDA, 0xDE, 0x86, - 0x10, 0x92, 0x06, 0x99, 0x0B, 0x51, 0x49, 0x19, 0x42, 0xB4, 0xCE, 0x3F, 0x7E, 0xF6, 0xEA, 0xC5, - 0xAB, 0x8B, 0xDE, 0x86, 0x4C, 0x2B, 0xAD, 0x55, 0x66, 0xD4, 0x7C, 0x3A, 0xFE, 0xE0, 0xD1, 0x83, - 0xB2, 0xC8, 0xEA, 0xBA, 0x7D, 0xF5, 0xFA, 0xB2, 0x28, 0x32, 0x63, 0xF4, 0xC5, 0xC5, 0xF5, 0xE7, - 0x5F, 0x3E, 0xB9, 0x77, 0xF7, 0xE8, 0x9D, 0xB7, 0xEE, 0x38, 0x17, 0x70, 0x27, 0x4E, 0x43, 0x83, - 0x02, 0xCF, 0x1E, 0x09, 0xB0, 0xBB, 0x8D, 0x3B, 0x22, 0xA3, 0x40, 0xA4, 0x24, 0x76, 0xBD, 0x6B, - 0x11, 0xF3, 0x6E, 0x5F, 0xEF, 0x5B, 0xF4, 0x91, 0x39, 0x30, 0x02, 0xBE, 0xF9, 0x44, 0x00, 0x40, - 0xA0, 0xD8, 0x4F, 0x62, 0xF6, 0xAD, 0x70, 0xA5, 0x48, 0x2B, 0x49, 0x7F, 0xFC, 0x27, 0x7F, 0x06, - 0x3C, 0xBC, 0x04, 0xE2, 0xAD, 0x9F, 0xEF, 0x22, 0xD8, 0x77, 0x43, 0xC9, 0x40, 0x27, 0x10, 0x28, - 0x54, 0xCA, 0xC5, 0x86, 0x7B, 0x04, 0x24, 0x70, 0x47, 0x26, 0x8F, 0x3E, 0x0C, 0xD6, 0x4A, 0xDE, - 0x0F, 0xDD, 0x56, 0xE7, 0x42, 0x8C, 0xEC, 0x7D, 0x88, 0x91, 0x7D, 0x88, 0x69, 0x39, 0xCA, 0x61, - 0xE6, 0xFD, 0x26, 0x6C, 0xDD, 0x1E, 0xA9, 0xEE, 0x57, 0xC9, 0xED, 0xAF, 0x6F, 0x62, 0xD9, 0xF0, - 0x06, 0xDF, 0x1C, 0xA4, 0xB7, 0x53, 0xBF, 0xFD, 0x4D, 0xF9, 0x7B, 0xC3, 0xDC, 0xFE, 0xEF, 0xB7, - 0x30, 0xFD, 0x09, 0x34, 0x04, 0x44, 0x89, 0xEC, 0x4A, 0x52, 0x91, 0x18, 0xA6, 0xEC, 0x18, 0x23, - 0x08, 0x01, 0x24, 0xE5, 0xD5, 0xE9, 0xF3, 0x66, 0xBD, 0xD6, 0x26, 0xD7, 0x4A, 0xF6, 0x36, 0xD4, - 0xAD, 0xBD, 0x59, 0xB7, 0x48, 0xC4, 0x11, 0x7C, 0x08, 0x4A, 0x6B, 0x00, 0x00, 0x06, 0x12, 0x98, - 0xC8, 0x25, 0x52, 0xA9, 0xAE, 0xB3, 0x31, 0xB2, 0x54, 0x52, 0x48, 0x91, 0x72, 0x3D, 0xEF, 0x3C, - 0x00, 0x0B, 0xC1, 0xC1, 0xFB, 0x94, 0x89, 0x58, 0xE7, 0x53, 0x46, 0x9A, 0x02, 0x2B, 0x49, 0xE9, - 0x77, 0x09, 0x33, 0xA2, 0x08, 0x21, 0xDD, 0xBA, 0xD8, 0xF5, 0xCE, 0xF9, 0xB0, 0x6D, 0xBB, 0xC3, - 0x71, 0xAE, 0x15, 0x09, 0xA9, 0x5C, 0xE0, 0xB7, 0xEF, 0x1F, 0x97, 0xA3, 0xD1, 0x5F, 0xFD, 0xCD, - 0xA7, 0x3F, 0xF9, 0xE1, 0x07, 0x7F, 0xF3, 0x1F, 0xBE, 0x70, 0xCE, 0xEB, 0x4C, 0xE7, 0x99, 0x79, - 0x7D, 0x76, 0x51, 0x96, 0x05, 0xA2, 0x88, 0x31, 0x4A, 0xA9, 0x9A, 0xB6, 0xDB, 0x36, 0x6D, 0xD3, - 0xB4, 0xD6, 0xB9, 0xC8, 0x20, 0x08, 0x09, 0x29, 0xCB, 0xB2, 0x10, 0xE2, 0xF5, 0x62, 0xD5, 0x34, - 0xAD, 0x52, 0x04, 0x1C, 0xBD, 0x73, 0x44, 0xA8, 0x15, 0x65, 0x5A, 0x06, 0x1F, 0xA4, 0x94, 0x11, - 0xD0, 0x68, 0x29, 0xA4, 0x2A, 0x8A, 0x42, 0x4A, 0x22, 0xC2, 0x83, 0xE9, 0x28, 0xCB, 0xF4, 0x9F, - 0xFF, 0xDB, 0xBF, 0xB9, 0xBA, 0x59, 0xDF, 0x3D, 0x39, 0x32, 0x59, 0xBE, 0x6D, 0x7B, 0xA3, 0xD5, - 0xB6, 0x6E, 0x80, 0x24, 0x0A, 0x59, 0x16, 0xF9, 0xA8, 0xCC, 0xE7, 0x47, 0x87, 0x9F, 0x7E, 0xF9, - 0x74, 0x3A, 0x9D, 0xCC, 0x67, 0x93, 0xB6, 0xED, 0x11, 0x91, 0x39, 0x3A, 0xE7, 0x1E, 0x3C, 0xB8, - 0xB7, 0x5A, 0x6D, 0xAE, 0x6E, 0x16, 0x3E, 0x84, 0xAE, 0xEB, 0xA4, 0xA4, 0xBE, 0x77, 0xC0, 0x3C, - 0x9D, 0x4E, 0x42, 0x8C, 0xBD, 0xF3, 0x44, 0x94, 0x69, 0x15, 0x62, 0xE8, 0xBA, 0x3E, 0xDD, 0x01, - 0x00, 0x24, 0x21, 0x7C, 0x88, 0x42, 0x88, 0xD9, 0x6C, 0x12, 0x42, 0xDC, 0x6E, 0xDB, 0xA6, 0xEB, - 0xA5, 0x24, 0xE0, 0xE4, 0x57, 0xC2, 0x00, 0x98, 0x56, 0xB9, 0x0F, 0x51, 0x6B, 0x9D, 0xE8, 0x5F, - 0x99, 0x51, 0x77, 0x0E, 0xA7, 0xE3, 0x2A, 0x47, 0x84, 0xB6, 0xEF, 0x99, 0x81, 0x88, 0xF2, 0xCC, - 0x24, 0x99, 0xEF, 0x18, 0xD9, 0x68, 0x95, 0x50, 0xB2, 0xDF, 0xFB, 0xF0, 0xED, 0xFD, 0x09, 0x7A, - 0x7B, 0xA9, 0xEC, 0x17, 0xFF, 0xAE, 0xE5, 0x3F, 0x74, 0x4E, 0x6F, 0x3F, 0x98, 0x59, 0x6B, 0x75, - 0xFA, 0xFA, 0xE2, 0x2F, 0xFE, 0xFA, 0x33, 0x10, 0xF4, 0xD1, 0xDB, 0x87, 0xCF, 0x5E, 0x5D, 0x8D, - 0x0A, 0x53, 0x18, 0xFD, 0xE4, 0xE5, 0x45, 0xA6, 0xF5, 0xA6, 0x75, 0x91, 0xF9, 0xC1, 0x9D, 0x99, - 0xF3, 0xE1, 0x6A, 0xD9, 0x70, 0x64, 0x44, 0x4C, 0xF3, 0xB7, 0x3C, 0xCF, 0x9C, 0x73, 0x8B, 0xE5, - 0x0A, 0x00, 0xEA, 0xA6, 0x7D, 0x7D, 0x76, 0x71, 0xBD, 0x58, 0x35, 0x6D, 0xEF, 0x9C, 0x13, 0x02, - 0x8C, 0xD1, 0x44, 0xA2, 0xC8, 0x4D, 0x96, 0x69, 0x12, 0x88, 0xC0, 0x21, 0x86, 0x94, 0x58, 0x3D, - 0xB8, 0x7F, 0xB7, 0xED, 0x7A, 0x21, 0xF0, 0xFE, 0xBD, 0x13, 0x12, 0x08, 0x31, 0x30, 0x07, 0xA5, - 0xCD, 0x66, 0xDB, 0xFE, 0xE2, 0xD7, 0x5F, 0x7E, 0xF5, 0xF8, 0x45, 0xDB, 0xD9, 0x2C, 0xD3, 0x89, - 0xC6, 0x8B, 0x88, 0x46, 0x2B, 0x18, 0x76, 0x2B, 0x13, 0x11, 0xC7, 0x98, 0x2E, 0x2B, 0x46, 0x3E, - 0xBB, 0x5C, 0x34, 0x6D, 0xFF, 0xD5, 0xE3, 0x17, 0x0C, 0x5C, 0xE4, 0x19, 0x00, 0x74, 0x7D, 0xAF, - 0x95, 0x6E, 0xFB, 0xFE, 0xF2, 0x7A, 0xB5, 0x5C, 0x6D, 0xF3, 0x3C, 0x23, 0x12, 0x69, 0x79, 0x1E, - 0x4C, 0xC7, 0x4A, 0xAB, 0x6D, 0xDD, 0xD6, 0x75, 0xDB, 0x76, 0x5D, 0x59, 0x14, 0xCE, 0xC7, 0xEF, - 0xBD, 0xFF, 0x40, 0x52, 0xE2, 0x56, 0xBF, 0xD1, 0xBD, 0x18, 0x6E, 0xE3, 0xD0, 0xB1, 0xC2, 0xDD, - 0x7A, 0x46, 0xD8, 0x81, 0x37, 0xE5, 0x80, 0x57, 0x81, 0x24, 0x2D, 0xB1, 0x6F, 0xA6, 0x0D, 0x47, - 0x48, 0x1A, 0xA7, 0xC0, 0xF0, 0x24, 0xDF, 0xFD, 0x68, 0xC4, 0x4E, 0x02, 0x90, 0x89, 0x44, 0xA6, - 0xA5, 0x56, 0x44, 0xFF, 0xD3, 0xBF, 0xF8, 0x97, 0x69, 0x40, 0x30, 0xD4, 0x53, 0xB8, 0x93, 0xC7, - 0xE6, 0xFD, 0x47, 0x88, 0xBC, 0x23, 0xE5, 0x20, 0x82, 0x00, 0x90, 0x83, 0xC7, 0x2D, 0x08, 0x1A, - 0x4E, 0xA7, 0xDD, 0x90, 0x1A, 0x01, 0x99, 0x23, 0x20, 0x60, 0x59, 0x18, 0x63, 0xD4, 0x3E, 0xC4, - 0x24, 0x95, 0x18, 0x29, 0x85, 0x94, 0xD2, 0x18, 0x95, 0x67, 0x26, 0x31, 0xE9, 0x6E, 0x8F, 0x02, - 0x52, 0x00, 0x12, 0x3B, 0xD3, 0xD3, 0x7D, 0xE4, 0xDA, 0x2F, 0x97, 0x5B, 0xAB, 0xEA, 0xCD, 0x55, - 0xFD, 0xF6, 0x69, 0x79, 0xBB, 0x35, 0x7E, 0x6B, 0xC5, 0xFD, 0x76, 0x42, 0xF7, 0x5D, 0x10, 0x59, - 0xBC, 0xA5, 0x68, 0x36, 0xDC, 0xF1, 0x21, 0x26, 0x02, 0x22, 0x92, 0x10, 0x92, 0x24, 0x11, 0x6D, - 0x6E, 0x2E, 0xFA, 0xDE, 0x26, 0xA3, 0x2A, 0x1F, 0x42, 0xDF, 0x87, 0x57, 0x97, 0x6B, 0x00, 0x68, - 0xDB, 0x5E, 0x84, 0x70, 0x21, 0x95, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x6B, 0x9D, - 0xC0, 0xA8, 0xCC, 0xB1, 0x6D, 0x3B, 0xEF, 0xBD, 0xD6, 0x2A, 0x02, 0x04, 0x3F, 0xA0, 0xC6, 0xD3, - 0x94, 0x20, 0x86, 0x40, 0x02, 0xB5, 0x94, 0x29, 0xDE, 0x71, 0x88, 0x91, 0xE3, 0xBE, 0xB0, 0x55, - 0x92, 0xD2, 0x1D, 0x23, 0x49, 0xCC, 0xD1, 0xF9, 0xE0, 0xBD, 0xB7, 0xD6, 0x87, 0x37, 0x76, 0x2A, - 0x22, 0x84, 0xF0, 0xDE, 0x83, 0x83, 0x3B, 0xC7, 0x07, 0xDB, 0xD6, 0x5E, 0x5C, 0xAF, 0x7E, 0xF2, - 0xC3, 0xF7, 0xFE, 0xF6, 0x97, 0x5F, 0x4D, 0xC7, 0x23, 0xEF, 0xE3, 0xB7, 0x2F, 0xCF, 0x85, 0x40, - 0x49, 0x12, 0x01, 0x67, 0xB3, 0x29, 0x33, 0xB4, 0x6D, 0x9F, 0xE7, 0x99, 0x31, 0x46, 0x4A, 0x42, - 0x80, 0xB2, 0x28, 0x92, 0x35, 0x4C, 0xDB, 0xF6, 0xEB, 0xF5, 0x66, 0xBD, 0xD9, 0x32, 0x80, 0xED, - 0xFB, 0xC4, 0xF3, 0x69, 0x9B, 0x26, 0xCF, 0x34, 0xA1, 0x98, 0x8C, 0x0A, 0x67, 0x9D, 0x31, 0xAA, - 0xAC, 0xAA, 0xF3, 0xCB, 0x9B, 0xB3, 0x8B, 0x25, 0x49, 0xE9, 0xDA, 0xFA, 0xE6, 0xE2, 0xF2, 0x9D, - 0x47, 0x0F, 0x9C, 0x73, 0xFF, 0xCF, 0x5F, 0xFC, 0xDD, 0xAB, 0xD3, 0xF3, 0xA3, 0xA3, 0xA3, 0xBA, - 0x69, 0x6F, 0x16, 0xAB, 0xB7, 0x1F, 0xDC, 0x17, 0x52, 0x1E, 0x1E, 0x1E, 0x5E, 0xDF, 0x2C, 0x7D, - 0xE4, 0xD1, 0xA8, 0x22, 0xA5, 0x9E, 0x3E, 0x7F, 0xBD, 0x5C, 0x2C, 0xAF, 0xAE, 0x17, 0x07, 0x07, - 0x33, 0xEB, 0x5C, 0x12, 0x08, 0x62, 0x00, 0xAD, 0xB5, 0x24, 0x61, 0x5D, 0x58, 0x2E, 0x57, 0x31, - 0x44, 0xAD, 0x55, 0x2A, 0xF4, 0x06, 0x73, 0x2D, 0x00, 0x29, 0xA5, 0xD1, 0x0A, 0x19, 0x92, 0x30, - 0xBF, 0x75, 0xDE, 0x85, 0x28, 0x48, 0x30, 0x73, 0x9E, 0xE7, 0xE9, 0x5C, 0xEC, 0x7B, 0x17, 0x23, - 0x77, 0xBD, 0x8D, 0x91, 0xA5, 0x54, 0xC6, 0x64, 0x21, 0x04, 0xE7, 0x5D, 0x3A, 0x29, 0x7B, 0x6B, - 0xD3, 0xF0, 0x5E, 0x49, 0x9A, 0x4F, 0x4B, 0x66, 0x36, 0x46, 0x8F, 0xAA, 0xA2, 0xEB, 0xAD, 0xF3, - 0x71, 0x32, 0x2A, 0x36, 0xDB, 0x36, 0x81, 0x75, 0x24, 0x11, 0x11, 0x8E, 0xAB, 0x32, 0x05, 0xB2, - 0xDB, 0x8B, 0x64, 0x58, 0x6F, 0xE9, 0x2C, 0x1F, 0x8A, 0xCB, 0x37, 0xAB, 0xF1, 0x36, 0x82, 0x89, - 0x99, 0xA5, 0x94, 0x5F, 0x7E, 0xF5, 0xF4, 0xCB, 0xC7, 0x2F, 0x3E, 0x7C, 0x74, 0x77, 0xB9, 0xDA, - 0x3E, 0x7B, 0x71, 0x61, 0x14, 0x39, 0x17, 0xCE, 0xAF, 0xD6, 0x6D, 0x6F, 0x03, 0x00, 0x03, 0x1E, - 0xCD, 0x4A, 0xE7, 0xC3, 0xCD, 0xAA, 0x26, 0x49, 0x24, 0x95, 0x10, 0x42, 0x12, 0x6D, 0xB7, 0x75, - 0xD7, 0xF5, 0x44, 0x82, 0x39, 0xDA, 0xDE, 0x31, 0x40, 0x96, 0x99, 0x84, 0x0A, 0x28, 0x32, 0xAD, - 0x48, 0xB8, 0x10, 0x85, 0x20, 0x66, 0xD0, 0x8A, 0xCA, 0x22, 0x4F, 0x4A, 0xD6, 0x80, 0x78, 0x73, - 0xB3, 0xF4, 0xCE, 0xB5, 0x6D, 0x97, 0x0E, 0xA1, 0x51, 0x95, 0xDF, 0x39, 0x9A, 0xFF, 0xD3, 0x9F, - 0xFD, 0xDE, 0x74, 0x5C, 0xBC, 0x3C, 0x3D, 0x77, 0xDE, 0x73, 0x8C, 0x4A, 0xC9, 0xF9, 0x74, 0x2C, - 0x04, 0xA5, 0xD2, 0x4C, 0x49, 0xDA, 0x5D, 0x11, 0x08, 0x14, 0x82, 0x04, 0x02, 0x26, 0x50, 0x51, - 0xE4, 0xD8, 0x5B, 0x67, 0xAD, 0x37, 0xC6, 0x5C, 0xDD, 0xAC, 0xCE, 0xCE, 0xAE, 0x5F, 0xBC, 0x7A, - 0xBD, 0x58, 0xAC, 0xBA, 0xDE, 0x3D, 0x7E, 0xF2, 0xE2, 0xF2, 0x6A, 0xF9, 0xEA, 0xEC, 0xCA, 0xF9, - 0x70, 0x75, 0xB3, 0x7A, 0x71, 0x7A, 0xD1, 0x75, 0x76, 0x36, 0x1D, 0x1D, 0xCE, 0x27, 0xC7, 0x47, - 0x73, 0x92, 0xB2, 0x77, 0x1E, 0x98, 0xEF, 0xDE, 0x39, 0x80, 0x5D, 0x75, 0x09, 0x80, 0x00, 0x22, - 0xF5, 0xFB, 0x13, 0x44, 0x65, 0x77, 0xDF, 0xC4, 0x8E, 0x22, 0xCE, 0x88, 0x28, 0xE5, 0x30, 0x4A, - 0x01, 0x00, 0x21, 0x90, 0x84, 0xD8, 0x6F, 0x59, 0x81, 0x28, 0x29, 0x31, 0xD6, 0x38, 0x32, 0x30, - 0x40, 0x62, 0x38, 0xEE, 0x11, 0x7E, 0x09, 0x7F, 0xA6, 0x95, 0x28, 0x33, 0x95, 0x80, 0x50, 0xF4, - 0x2F, 0xFE, 0xE4, 0x5F, 0xED, 0xB5, 0x2B, 0xD2, 0x91, 0x23, 0x08, 0xC5, 0xCE, 0x72, 0x8E, 0x48, - 0x0C, 0xE2, 0xD9, 0x02, 0x09, 0x91, 0xDE, 0x04, 0x45, 0x40, 0x71, 0x7B, 0xB6, 0x08, 0x08, 0x48, - 0x28, 0x04, 0x82, 0xD1, 0x6A, 0x36, 0x29, 0xAB, 0x32, 0x4F, 0x79, 0x8D, 0x4A, 0x7A, 0xFB, 0x00, - 0x03, 0x0F, 0x9B, 0x28, 0x25, 0x62, 0xBF, 0xD5, 0x89, 0xE7, 0xEF, 0x4A, 0xAD, 0xEE, 0x63, 0xD0, - 0x3E, 0xD6, 0xDC, 0x8E, 0x41, 0xB0, 0x2B, 0xBC, 0x7F, 0x2B, 0x3C, 0xFD, 0x56, 0x38, 0xBB, 0xF5, - 0xF6, 0x86, 0xE7, 0xBE, 0x2D, 0xCB, 0xB3, 0x2B, 0x58, 0x62, 0x4A, 0x94, 0xF6, 0x27, 0xC6, 0x9B, - 0xF8, 0x08, 0x7B, 0xA9, 0x38, 0xD0, 0x4A, 0x33, 0x87, 0x6E, 0xBD, 0xE8, 0x3B, 0xBB, 0xDA, 0xD4, - 0x29, 0xCA, 0xD6, 0x9D, 0x5B, 0xAC, 0x5B, 0x8E, 0x2C, 0x84, 0x10, 0x44, 0x00, 0x40, 0x02, 0x43, - 0x08, 0xDE, 0x07, 0x44, 0xE1, 0x9C, 0x4F, 0xE0, 0x78, 0x44, 0x1E, 0xD0, 0x98, 0x92, 0xB4, 0x94, - 0x69, 0xF8, 0x42, 0x02, 0x25, 0x09, 0x1F, 0x22, 0x20, 0x2A, 0x65, 0xD2, 0xAC, 0x38, 0xC4, 0x10, - 0x02, 0x6B, 0xAD, 0x01, 0xB1, 0xEB, 0xFA, 0xDD, 0xC0, 0x8E, 0xD3, 0x38, 0x82, 0x19, 0xF2, 0xCC, - 0x1C, 0xCE, 0xAA, 0x9F, 0x7E, 0xF2, 0x48, 0x67, 0xE6, 0x9B, 0x67, 0xAF, 0x27, 0x55, 0x7E, 0xFF, - 0x64, 0xF6, 0xFC, 0xC5, 0xF9, 0x0F, 0xBE, 0xFF, 0xFE, 0xE3, 0x67, 0xAF, 0xAF, 0x97, 0x1B, 0x88, - 0xB1, 0xDE, 0x6C, 0xF2, 0x22, 0x27, 0xA9, 0xB6, 0x75, 0x53, 0x55, 0x65, 0xD3, 0x75, 0xEB, 0x75, - 0x6D, 0x8C, 0x1A, 0x8D, 0xAA, 0x18, 0xE3, 0x62, 0xB9, 0xF2, 0xCE, 0x1D, 0xCC, 0xA7, 0xC7, 0x47, - 0x33, 0x41, 0xE4, 0xAC, 0x6B, 0xDB, 0x0E, 0x38, 0x0A, 0x64, 0x25, 0x87, 0x42, 0x4F, 0x0A, 0xAC, - 0xCA, 0xEC, 0xE8, 0x68, 0x1E, 0x18, 0x96, 0xEB, 0x36, 0x44, 0xFE, 0xEA, 0xF1, 0x8B, 0x27, 0x4F, - 0x5F, 0xE8, 0xCC, 0x4C, 0x26, 0xA3, 0xE7, 0x2F, 0x5F, 0xFF, 0xBB, 0xBF, 0xFE, 0x35, 0x08, 0x34, - 0x59, 0xD6, 0x76, 0x9D, 0x36, 0xC6, 0x79, 0xBF, 0xAD, 0xBB, 0xEB, 0xD5, 0xFA, 0xAD, 0xFB, 0x27, - 0x55, 0x91, 0x5F, 0x5E, 0x2F, 0x18, 0xF0, 0xF8, 0x70, 0x8E, 0x24, 0xCE, 0xCE, 0xAE, 0x9C, 0x0F, - 0x5A, 0xEB, 0xB2, 0xC8, 0x89, 0xC4, 0xCF, 0xFE, 0xE0, 0x27, 0x97, 0x57, 0xD7, 0xDB, 0xED, 0xB6, - 0xEF, 0x1D, 0x0A, 0xF4, 0xDE, 0xA7, 0x1A, 0x3F, 0xC1, 0xC1, 0x33, 0x63, 0x18, 0x80, 0x43, 0xCC, - 0xB4, 0x12, 0x42, 0x30, 0x40, 0xDB, 0x3B, 0x8E, 0x90, 0x94, 0x76, 0x42, 0x88, 0x55, 0x99, 0x77, - 0x7D, 0xEF, 0xBD, 0x0F, 0x31, 0x0E, 0x14, 0x77, 0x00, 0xA3, 0x14, 0x00, 0xE7, 0x45, 0xEE, 0x9D, - 0x0F, 0x21, 0x58, 0x1B, 0x22, 0x30, 0x33, 0x48, 0x49, 0xBD, 0x75, 0x21, 0xC2, 0xF5, 0x62, 0xBB, - 0xAE, 0xDB, 0x22, 0xCB, 0xA5, 0x92, 0xC9, 0xF2, 0x36, 0xC6, 0xE8, 0x7C, 0x10, 0x08, 0xA9, 0x6B, - 0xAE, 0x14, 0x7D, 0xFF, 0xA3, 0x47, 0xC3, 0x2A, 0xE3, 0x04, 0xEE, 0xDF, 0x47, 0x29, 0xBC, 0x25, - 0xE8, 0xBF, 0x2B, 0x01, 0xBE, 0x7B, 0x34, 0x22, 0x0A, 0x60, 0x5E, 0x2E, 0x97, 0xD7, 0x8B, 0x8D, - 0x00, 0x78, 0xF6, 0xFA, 0x4A, 0x08, 0x51, 0x15, 0xA6, 0x30, 0xFA, 0x7A, 0x59, 0x3F, 0xBC, 0x7B, - 0xB0, 0xAE, 0xFB, 0xDE, 0xF9, 0xB7, 0x8E, 0xA7, 0xD6, 0xFA, 0x8B, 0xC5, 0x36, 0x32, 0x27, 0x84, - 0x1D, 0x40, 0xE4, 0xC8, 0x91, 0x07, 0x41, 0x34, 0xEB, 0x83, 0x24, 0x2A, 0x0B, 0x93, 0x7A, 0xE2, - 0x52, 0x52, 0x66, 0x14, 0x22, 0x26, 0xF5, 0x17, 0xDB, 0x5B, 0x66, 0xD8, 0x36, 0x5D, 0x96, 0xE5, - 0x21, 0x04, 0x25, 0x50, 0x90, 0x40, 0x21, 0xDA, 0xAE, 0xE7, 0x18, 0xF3, 0x4C, 0x03, 0xC0, 0xF5, - 0xCD, 0xDA, 0x47, 0x5E, 0x6F, 0xB6, 0x4D, 0xD3, 0x6D, 0xEA, 0xE6, 0xB3, 0x2F, 0x9F, 0x5E, 0x5C, - 0x2E, 0x98, 0x63, 0xDB, 0x5B, 0x12, 0x02, 0x10, 0x43, 0x8C, 0xDE, 0x05, 0x29, 0x07, 0x29, 0x3F, - 0x22, 0x21, 0x50, 0x48, 0x49, 0xC8, 0x98, 0x68, 0x9E, 0xB3, 0x71, 0x39, 0x9F, 0x8E, 0x89, 0x44, - 0x59, 0x96, 0x45, 0x91, 0xCF, 0x67, 0xE3, 0x07, 0xF7, 0x8F, 0xBD, 0xF7, 0x07, 0xF3, 0xE9, 0x3B, - 0x0F, 0xEE, 0x66, 0x46, 0x85, 0x10, 0xAF, 0x6F, 0x56, 0x00, 0x18, 0x39, 0x5E, 0x5E, 0xDE, 0x4C, - 0x27, 0xD5, 0x6C, 0x3A, 0x02, 0xC0, 0xBF, 0xFA, 0xBB, 0xCF, 0xA7, 0x93, 0x6A, 0x3E, 0x1D, 0xC5, - 0xC8, 0x3B, 0x40, 0x2A, 0xA7, 0x11, 0xE4, 0xAE, 0x0B, 0x06, 0x88, 0x69, 0x2B, 0xA6, 0xBC, 0x08, - 0x77, 0x86, 0x1B, 0xC0, 0xCC, 0xA9, 0x7F, 0x22, 0x70, 0xC8, 0x88, 0x52, 0x03, 0x1C, 0x11, 0x23, - 0x83, 0x22, 0x21, 0x49, 0x48, 0x29, 0x94, 0x14, 0xC0, 0x83, 0x93, 0x11, 0x21, 0x6A, 0x89, 0x65, - 0xA6, 0x8D, 0xA6, 0xF4, 0x51, 0xC8, 0x21, 0x9F, 0xDA, 0xEB, 0x70, 0x40, 0x02, 0x1C, 0x20, 0xD2, - 0x40, 0x4A, 0x12, 0x02, 0x25, 0x88, 0xA4, 0x97, 0x70, 0x9B, 0x43, 0xB0, 0x9F, 0x9D, 0x0E, 0xA3, - 0x3E, 0x44, 0x92, 0x58, 0xE6, 0x45, 0xB2, 0x87, 0x71, 0xCE, 0x69, 0xAD, 0x05, 0x0C, 0xDE, 0x2A, - 0x7B, 0x7D, 0xFD, 0xBD, 0xB4, 0xD7, 0xED, 0xC0, 0x84, 0x3B, 0xD1, 0xC8, 0x24, 0xA7, 0xB3, 0xAF, - 0x67, 0xC5, 0xCE, 0x9A, 0x85, 0x77, 0x40, 0x5E, 0xFE, 0x1D, 0x04, 0x3F, 0xDC, 0x2A, 0x27, 0x7F, - 0x37, 0xBF, 0x4B, 0xF1, 0xCE, 0x7B, 0x9F, 0x9E, 0x2D, 0x51, 0x28, 0x52, 0x06, 0x94, 0x7C, 0xC6, - 0x52, 0x1E, 0xCA, 0xCC, 0xCC, 0xE1, 0xF6, 0x31, 0x0B, 0x3C, 0x94, 0xE7, 0xCC, 0xAC, 0xA4, 0x5A, - 0x2C, 0xAE, 0x9F, 0x3E, 0x79, 0x5A, 0xA9, 0x90, 0x67, 0x3A, 0x44, 0x1E, 0x57, 0xF9, 0xB6, 0xEE, - 0x8A, 0x4C, 0x95, 0xB9, 0xEE, 0x5D, 0x04, 0x44, 0xEF, 0x1C, 0x33, 0x28, 0x45, 0xDE, 0x79, 0x49, - 0x22, 0x32, 0x77, 0xBD, 0x27, 0xA9, 0x84, 0x40, 0x29, 0x85, 0x96, 0x64, 0xB4, 0x06, 0x84, 0x18, - 0x42, 0xE2, 0xB7, 0x92, 0x18, 0x2A, 0xCD, 0x10, 0x82, 0x90, 0x22, 0x02, 0x93, 0x92, 0xC1, 0xC6, - 0xC8, 0xAE, 0x69, 0xDB, 0x84, 0x1E, 0x48, 0xD7, 0xA2, 0xB4, 0x42, 0x1F, 0x62, 0x08, 0x52, 0xCA, - 0x10, 0x63, 0x55, 0xE8, 0xB7, 0xEF, 0xCF, 0xFF, 0xB7, 0xBF, 0xFC, 0x74, 0x53, 0x77, 0x3F, 0xFB, - 0xC9, 0x47, 0xDF, 0x3C, 0x39, 0xBD, 0x77, 0xF7, 0xB0, 0x1A, 0x95, 0x28, 0x70, 0x52, 0x66, 0x59, - 0x66, 0xEA, 0xBA, 0x5D, 0x2E, 0x57, 0x2E, 0x44, 0x00, 0xD4, 0x4A, 0x91, 0x94, 0x31, 0x86, 0x97, - 0xAF, 0x5E, 0x8F, 0xC7, 0x55, 0x6E, 0x0C, 0x0D, 0x1A, 0xCA, 0xB6, 0x6B, 0xDB, 0x8B, 0x8B, 0x6B, - 0xE6, 0xA8, 0x08, 0x4F, 0x8E, 0x66, 0x55, 0x91, 0x5D, 0xDD, 0xAC, 0x92, 0x17, 0xEF, 0x5B, 0xF7, - 0xEF, 0x1C, 0x1F, 0xCF, 0xCF, 0xAF, 0x56, 0xE7, 0x17, 0x37, 0x93, 0xC9, 0x68, 0x36, 0x1B, 0xAF, - 0xB7, 0xED, 0x6A, 0xB5, 0xFE, 0x0F, 0x9F, 0x7E, 0xDD, 0xF9, 0x38, 0x9D, 0x4E, 0xDE, 0xFB, 0xE0, - 0x3D, 0x06, 0x9C, 0xCD, 0xC6, 0xA3, 0x32, 0x57, 0x24, 0x4E, 0xCF, 0x2E, 0x23, 0xD2, 0xC9, 0xC9, - 0xB1, 0x92, 0xE4, 0x9C, 0xBF, 0x77, 0x72, 0xD4, 0x76, 0xF6, 0x7A, 0xB1, 0xD2, 0x4A, 0xCD, 0xE7, - 0x93, 0xB6, 0xB3, 0xDF, 0xFF, 0xF8, 0xBD, 0x5F, 0xFE, 0xC7, 0xDF, 0x08, 0x21, 0xAE, 0x6E, 0x16, - 0x45, 0x9E, 0xDF, 0x39, 0x3E, 0xF8, 0xF2, 0xCB, 0xA7, 0x8E, 0x41, 0x88, 0x84, 0xC5, 0x97, 0xAB, - 0xF5, 0x46, 0x4A, 0xE9, 0x7C, 0x48, 0x50, 0x8C, 0x6D, 0xDD, 0x4C, 0xC6, 0x95, 0xD6, 0xCA, 0x87, - 0xE8, 0x7D, 0x74, 0xCE, 0x49, 0x29, 0x95, 0x1E, 0x06, 0x47, 0xD6, 0x3A, 0x06, 0x10, 0x24, 0x14, - 0xE2, 0xB6, 0xED, 0x3A, 0xEC, 0x63, 0x4C, 0xDC, 0x58, 0x67, 0x9D, 0xD7, 0x4A, 0x87, 0xC8, 0x28, - 0x40, 0x49, 0xD9, 0x0B, 0xD1, 0x34, 0x9D, 0x24, 0xB4, 0x2E, 0x5E, 0xDE, 0xAC, 0x42, 0x08, 0x5A, - 0x49, 0x66, 0x48, 0x06, 0xD2, 0x49, 0x3D, 0x4F, 0x49, 0xB9, 0x6D, 0xBA, 0xAE, 0xB3, 0x46, 0xEB, - 0x38, 0x48, 0xA1, 0xEE, 0x22, 0x17, 0xC2, 0x3E, 0xC9, 0x60, 0x00, 0x91, 0xC8, 0x7F, 0x02, 0xF6, - 0xA8, 0x82, 0xDD, 0xAA, 0x8B, 0x88, 0xF2, 0xF2, 0x6A, 0xF9, 0xE2, 0xEC, 0xE6, 0xFD, 0x07, 0xC7, - 0xA3, 0xB2, 0x70, 0xDE, 0x97, 0x55, 0xD1, 0xD8, 0x40, 0x92, 0xEE, 0xBF, 0x75, 0xFC, 0xF2, 0x6A, - 0x83, 0x80, 0x69, 0x0E, 0x16, 0x22, 0xE4, 0x46, 0x29, 0x81, 0xC1, 0x87, 0xFD, 0x06, 0x26, 0xA2, - 0xA6, 0xED, 0xD3, 0x19, 0x9F, 0x2C, 0xD6, 0x33, 0x63, 0x56, 0xEB, 0x8D, 0x22, 0x61, 0x8C, 0x8A, - 0x1C, 0x11, 0x28, 0x95, 0x5A, 0x46, 0xAB, 0xD5, 0x6A, 0x6D, 0x8C, 0x3E, 0x3C, 0x9E, 0x76, 0xBD, - 0x63, 0xE0, 0x51, 0x55, 0x68, 0x25, 0xAB, 0xAA, 0xEC, 0xBA, 0xFE, 0xE2, 0xF2, 0x6A, 0xB3, 0x6D, - 0xDA, 0xCE, 0x4E, 0xC6, 0x55, 0x4A, 0x1B, 0x56, 0xEB, 0xED, 0xDF, 0xFE, 0xF2, 0x0B, 0x49, 0xF4, - 0xF6, 0xC3, 0xBB, 0xEF, 0x3F, 0x7A, 0x70, 0x72, 0x3C, 0x2F, 0x73, 0xD3, 0x75, 0xB6, 0xB7, 0xAE, - 0xED, 0x3A, 0x63, 0x74, 0x55, 0xE4, 0x46, 0xEB, 0xAA, 0xCC, 0x46, 0xA3, 0x7C, 0xB3, 0x6D, 0xB5, - 0x92, 0x65, 0x91, 0x1D, 0x1D, 0x4C, 0x22, 0x73, 0xDB, 0xF5, 0x6D, 0x67, 0x8B, 0xDC, 0xF4, 0xD6, - 0x09, 0xC4, 0xD5, 0x66, 0xBB, 0x58, 0x6E, 0xDF, 0x79, 0x70, 0xF2, 0xCE, 0x83, 0x93, 0xCE, 0xBA, - 0xC5, 0x62, 0xFD, 0xED, 0xCB, 0xD7, 0xC7, 0xBD, 0xFD, 0xFD, 0x1F, 0x7D, 0x54, 0xD7, 0xCD, 0x72, - 0xDD, 0xFE, 0xF2, 0xD3, 0xC7, 0xEF, 0x3C, 0x38, 0x19, 0x0C, 0xB9, 0x39, 0x42, 0xE2, 0x45, 0xFA, - 0x80, 0x38, 0xF8, 0x29, 0x01, 0xEC, 0x53, 0xAA, 0xDB, 0xA8, 0x26, 0x88, 0x0C, 0x62, 0x27, 0x2B, - 0x1D, 0x23, 0x2A, 0x1A, 0xD0, 0x03, 0x44, 0xC2, 0x28, 0x80, 0xC1, 0xE0, 0x91, 0x95, 0x94, 0x8A, - 0xFC, 0xBA, 0xB1, 0x80, 0xA8, 0x09, 0xB5, 0x14, 0xA9, 0xA1, 0x9C, 0x9E, 0x50, 0x0A, 0x14, 0x51, - 0x70, 0x2A, 0xA6, 0xD2, 0xBC, 0xF9, 0x8D, 0xB6, 0x58, 0x7A, 0x71, 0x01, 0xC8, 0x43, 0x93, 0x4D, - 0x50, 0x72, 0x57, 0xDA, 0x95, 0x6F, 0x42, 0x00, 0xA0, 0x56, 0x94, 0xEC, 0x00, 0x32, 0xAD, 0x94, - 0x92, 0xE9, 0xD4, 0x92, 0xC9, 0xF1, 0x0C, 0x80, 0x6F, 0x29, 0x4D, 0x0F, 0x47, 0xDE, 0xAE, 0x3F, - 0x95, 0xC2, 0x99, 0x73, 0x3E, 0x01, 0x82, 0x00, 0x60, 0x97, 0x1E, 0x71, 0x08, 0x48, 0x14, 0x13, - 0xFB, 0x27, 0x7D, 0xD2, 0x70, 0x2B, 0xC3, 0xFA, 0x4E, 0xDE, 0x74, 0x2B, 0x72, 0xED, 0xFE, 0x8E, - 0x7B, 0x04, 0x46, 0x9A, 0x30, 0xA4, 0x36, 0x81, 0x94, 0xE0, 0x23, 0x27, 0x96, 0x96, 0x10, 0x9C, - 0xA4, 0x17, 0x86, 0x0B, 0x21, 0xF1, 0x26, 0x32, 0x0E, 0x27, 0x08, 0x72, 0x64, 0x46, 0x26, 0xA2, - 0xD5, 0xE2, 0xFA, 0xB3, 0xCF, 0xBE, 0x20, 0x81, 0xF3, 0xA2, 0x8C, 0x01, 0x7D, 0xC0, 0xD6, 0x06, - 0x40, 0x01, 0x98, 0x12, 0xA5, 0xC0, 0x00, 0x3E, 0x04, 0x21, 0x44, 0xDD, 0x74, 0x7D, 0x67, 0xF3, - 0xDC, 0x28, 0x49, 0x59, 0x96, 0xB9, 0x10, 0x7D, 0x0C, 0x49, 0x21, 0x23, 0x9D, 0xF5, 0x42, 0xA0, - 0x94, 0xD2, 0xFB, 0x44, 0x53, 0x1F, 0x1C, 0x30, 0x5D, 0xDF, 0x01, 0xA2, 0xED, 0x2D, 0x22, 0x54, - 0x65, 0xD9, 0x5B, 0xDB, 0x75, 0x9B, 0xFD, 0x5D, 0x4A, 0xB7, 0xDB, 0x18, 0xDD, 0x5B, 0x7F, 0xB3, - 0xAC, 0xDF, 0xBD, 0x3F, 0x67, 0x44, 0x6B, 0x7D, 0x8C, 0xDC, 0x59, 0xBB, 0x5A, 0x6F, 0x1F, 0x3C, - 0xB8, 0xFB, 0xF8, 0xE9, 0xE9, 0xF2, 0xF2, 0xFA, 0xE1, 0xDD, 0xC3, 0x83, 0xC3, 0x69, 0x8C, 0xFC, - 0xF4, 0xF9, 0x99, 0xED, 0xFB, 0x2C, 0xCB, 0x97, 0xCB, 0x75, 0x51, 0xE6, 0x47, 0xF3, 0xA9, 0x96, - 0xD4, 0xF7, 0x2E, 0xB8, 0x08, 0xEC, 0x25, 0xC9, 0xED, 0x66, 0xD3, 0x34, 0x8D, 0xB7, 0xF6, 0xC1, - 0xBD, 0xE3, 0xCC, 0xC8, 0xE3, 0xC3, 0x49, 0x66, 0x34, 0x73, 0xB8, 0x59, 0xAC, 0x7F, 0xF4, 0xC3, - 0x0F, 0x95, 0x54, 0xE7, 0x57, 0xCB, 0xBE, 0xB3, 0x8B, 0xE5, 0xBA, 0x73, 0xA1, 0x6E, 0xDA, 0xD9, - 0x6C, 0x3A, 0x99, 0x8C, 0x36, 0x9B, 0x3A, 0xCB, 0xB4, 0x52, 0xFA, 0xDD, 0x47, 0x0F, 0xDB, 0xCE, - 0x96, 0x55, 0x1E, 0x63, 0xBC, 0x7B, 0x38, 0x3B, 0x38, 0x3C, 0x78, 0xF9, 0xFA, 0xF2, 0x3F, 0x7E, - 0xF6, 0xF5, 0x87, 0xEF, 0xBF, 0x73, 0x72, 0x34, 0x0B, 0x31, 0x22, 0x8A, 0xBE, 0xEF, 0xAF, 0xAE, - 0x16, 0x9F, 0x7C, 0xF2, 0xE1, 0x62, 0xB1, 0xBA, 0xB8, 0xBE, 0xF9, 0xE0, 0x83, 0x77, 0xB4, 0x54, - 0xA7, 0x67, 0x67, 0xC6, 0x64, 0x52, 0x29, 0xA5, 0xE5, 0xB6, 0xAE, 0x33, 0x63, 0xB4, 0xA4, 0x22, - 0x33, 0xB6, 0xEB, 0x89, 0x84, 0x75, 0x81, 0x39, 0x16, 0x79, 0xEE, 0x9C, 0x4F, 0xC7, 0x48, 0x5A, - 0x18, 0x29, 0x77, 0x36, 0x46, 0xA7, 0x9B, 0x16, 0x19, 0x54, 0x9A, 0x2F, 0x49, 0x61, 0x94, 0xCA, - 0xF3, 0x7C, 0xB9, 0xDE, 0x90, 0x75, 0x89, 0x25, 0x69, 0xBD, 0x93, 0x24, 0x11, 0xA1, 0xB7, 0xAE, - 0xB7, 0x4E, 0x91, 0x48, 0x0C, 0x2D, 0xAD, 0x54, 0xE3, 0x03, 0x02, 0x78, 0xEF, 0xE7, 0xD3, 0xE9, - 0x62, 0xB9, 0xF4, 0x2E, 0xF1, 0x1D, 0x63, 0xEF, 0xC3, 0x6A, 0xD3, 0xDC, 0x39, 0xD4, 0x91, 0xE3, - 0x00, 0x0F, 0x4B, 0x6A, 0xC9, 0x09, 0x6C, 0x91, 0x72, 0x03, 0xC6, 0x08, 0x11, 0x01, 0x21, 0x22, - 0x20, 0x32, 0xB2, 0xD8, 0x55, 0x24, 0x31, 0x70, 0x44, 0x46, 0x81, 0xD6, 0x85, 0xBA, 0xB3, 0x00, - 0x28, 0x89, 0x36, 0xDB, 0x2E, 0xC4, 0x68, 0x8C, 0x72, 0xD6, 0x73, 0x84, 0x22, 0xD7, 0x4D, 0x67, - 0x2F, 0x96, 0x5B, 0xA3, 0x25, 0x21, 0x84, 0xC8, 0xD6, 0x3A, 0xA5, 0x88, 0x99, 0x49, 0x08, 0xAD, - 0x54, 0xD7, 0xFB, 0x51, 0x95, 0x93, 0xC0, 0xA6, 0xED, 0x93, 0x44, 0x7D, 0x55, 0x64, 0x44, 0x02, - 0x00, 0x81, 0xD9, 0x79, 0x67, 0xAD, 0x53, 0x92, 0xBC, 0x73, 0x4D, 0xDB, 0x1D, 0xCC, 0xC6, 0x46, - 0x2B, 0xE7, 0x63, 0xD3, 0x75, 0x52, 0x52, 0x9E, 0xA7, 0x41, 0x50, 0xD4, 0x4A, 0xB5, 0x5D, 0x97, - 0x70, 0xF1, 0x02, 0xE4, 0xA8, 0x2C, 0xA4, 0x24, 0x1F, 0xC2, 0x72, 0xB5, 0xFD, 0xEC, 0x8B, 0x27, - 0xBF, 0xF9, 0xEA, 0xDB, 0xBB, 0x77, 0x0E, 0xEE, 0x9D, 0x1C, 0xFE, 0xFE, 0x8F, 0x3E, 0xAA, 0xCA, - 0xFC, 0xE2, 0x7A, 0xF1, 0xC5, 0xD7, 0xCF, 0x8B, 0x3C, 0x7B, 0xEF, 0xED, 0x7B, 0x28, 0x44, 0x9E, - 0xA9, 0xE3, 0xC3, 0xC9, 0x66, 0xDB, 0x26, 0x21, 0x90, 0x34, 0x66, 0x49, 0x9B, 0xB4, 0x2A, 0x32, - 0x45, 0xE4, 0x7D, 0x68, 0x5B, 0xAB, 0x24, 0x25, 0x91, 0xD3, 0x32, 0x33, 0xE6, 0xE7, 0x3F, 0x89, - 0x81, 0xF3, 0xCC, 0x28, 0x45, 0x59, 0xA6, 0xB4, 0xD6, 0x8A, 0x88, 0xB5, 0x02, 0x40, 0x1F, 0x23, - 0x44, 0x0E, 0xC1, 0x87, 0xC8, 0x72, 0x40, 0xD5, 0xBF, 0x09, 0x2B, 0x81, 0x93, 0xB3, 0x6D, 0xFA, - 0x88, 0x03, 0x20, 0x44, 0x66, 0xEF, 0x23, 0x91, 0xD0, 0x4A, 0x68, 0xA5, 0x18, 0x62, 0x02, 0xB9, - 0xA3, 0x00, 0x21, 0x28, 0x09, 0x3A, 0x84, 0x10, 0x95, 0x24, 0x45, 0x82, 0x39, 0x4A, 0x02, 0x91, - 0xC2, 0xA5, 0x47, 0x41, 0x2C, 0x84, 0x90, 0x24, 0x84, 0xD8, 0x83, 0xB9, 0x86, 0x7E, 0x3F, 0x30, - 0x0C, 0x7C, 0x9F, 0x21, 0x6A, 0x08, 0x46, 0x46, 0xA5, 0x08, 0x00, 0x9C, 0xF7, 0x8A, 0x44, 0xCA, - 0x29, 0x8A, 0x4C, 0x1B, 0x2D, 0x95, 0x4A, 0x6C, 0x0D, 0xB1, 0x4F, 0x9D, 0xF6, 0xA8, 0x8B, 0xBF, - 0x37, 0x5D, 0x0A, 0x61, 0x90, 0x24, 0x4C, 0x6F, 0xAE, 0x6E, 0x3A, 0x00, 0x90, 0x52, 0xE2, 0x80, - 0x72, 0x85, 0x1D, 0xF7, 0x03, 0x63, 0x04, 0x29, 0xDF, 0x00, 0x78, 0x6E, 0x65, 0x5A, 0x29, 0x1D, - 0x15, 0x6F, 0xDE, 0xE1, 0xAE, 0x0E, 0xBD, 0x95, 0x8B, 0x71, 0x08, 0xDE, 0x39, 0x37, 0xF4, 0x3B, - 0x07, 0xAD, 0xE4, 0x3D, 0x4C, 0x0F, 0xF6, 0x6C, 0x25, 0x44, 0xDE, 0xD7, 0xEA, 0xB0, 0xFF, 0xDE, - 0x0E, 0x7A, 0x12, 0x83, 0x7F, 0xFA, 0xE4, 0xD9, 0x6C, 0x32, 0x72, 0xAE, 0xDF, 0x6C, 0x5B, 0xEB, - 0xE2, 0xFD, 0x93, 0xD9, 0xD5, 0xB2, 0x76, 0xCE, 0x17, 0x99, 0x11, 0x88, 0xBD, 0x75, 0x92, 0x44, - 0x3A, 0x72, 0x01, 0xC0, 0x64, 0x5A, 0x10, 0x31, 0x70, 0xDF, 0xF5, 0x48, 0x24, 0x18, 0xE4, 0x4E, - 0x1E, 0x88, 0xA4, 0x48, 0x62, 0x1B, 0x42, 0x70, 0x8C, 0x28, 0x04, 0x03, 0x04, 0x40, 0x50, 0x4A, - 0x21, 0x62, 0x08, 0xC1, 0x28, 0x35, 0x99, 0x8E, 0x96, 0xEB, 0xED, 0xCD, 0xCD, 0x32, 0xDD, 0x04, - 0x21, 0x44, 0x08, 0xB1, 0x4F, 0x4A, 0x66, 0x31, 0x12, 0x89, 0x83, 0xE9, 0x68, 0xB3, 0xED, 0xBA, - 0xCE, 0x6A, 0x4D, 0xE9, 0x3F, 0xD6, 0xBD, 0xFB, 0xE5, 0x2F, 0x3E, 0xD7, 0x84, 0xDA, 0x48, 0x6B, - 0x5D, 0x22, 0x51, 0x75, 0x7D, 0xD7, 0xB4, 0xB1, 0x2C, 0x2B, 0xDB, 0xF7, 0xCE, 0xBB, 0xB2, 0xC8, - 0xC3, 0x36, 0x06, 0xEF, 0x9B, 0xA6, 0x2D, 0x8A, 0x1C, 0x80, 0x91, 0xF9, 0x60, 0x3A, 0x3A, 0x9C, - 0x57, 0x55, 0x91, 0x1D, 0x1E, 0xCE, 0xAC, 0x73, 0xF3, 0xE9, 0xE8, 0xBD, 0x77, 0xDF, 0xB6, 0x3E, - 0x9E, 0x9E, 0x5F, 0x11, 0x87, 0x2F, 0xBE, 0x7A, 0xF6, 0xD5, 0xD3, 0x53, 0x10, 0xE2, 0xD1, 0xA3, - 0x87, 0x87, 0x87, 0x07, 0x79, 0x96, 0x95, 0x45, 0x5E, 0x16, 0xF9, 0xCD, 0x72, 0x6D, 0x9D, 0x67, - 0xC4, 0x27, 0xCF, 0x5E, 0x29, 0xC2, 0xE9, 0xB8, 0x22, 0xA2, 0xC3, 0xF9, 0xF4, 0x9D, 0x87, 0xF6, - 0xFC, 0xEA, 0x66, 0x54, 0x15, 0x93, 0x71, 0x21, 0x89, 0xC6, 0xA3, 0x12, 0x51, 0xAC, 0xD6, 0x9B, - 0xCD, 0x66, 0xDB, 0x5B, 0xF7, 0xB3, 0xDF, 0xFF, 0x61, 0xD3, 0xF5, 0x27, 0x77, 0x0E, 0xD6, 0x9B, - 0xBA, 0xB7, 0xAE, 0x1A, 0x95, 0xAB, 0xD5, 0x46, 0x49, 0x62, 0x66, 0xE7, 0x1C, 0x91, 0x08, 0x3E, - 0x90, 0x40, 0x0E, 0xD8, 0x77, 0xBD, 0xD2, 0x0A, 0x10, 0xA3, 0x0F, 0x42, 0x08, 0x67, 0x1D, 0x23, - 0x28, 0x29, 0x39, 0x46, 0x44, 0x4C, 0x2A, 0x80, 0x46, 0xEB, 0x74, 0xC7, 0x88, 0xA8, 0xED, 0x7A, - 0x29, 0x28, 0xE9, 0x6B, 0x2B, 0x29, 0x7B, 0x67, 0x21, 0xA2, 0x96, 0x12, 0x89, 0x71, 0x70, 0xDF, - 0x41, 0xE7, 0xBD, 0x24, 0xA1, 0xB5, 0x14, 0x84, 0xA3, 0x51, 0x31, 0x1A, 0x95, 0xCB, 0xD5, 0x4A, - 0x4A, 0xF2, 0xC1, 0x03, 0xEA, 0xBA, 0xEE, 0x3E, 0xFF, 0xEA, 0xDB, 0x93, 0xE3, 0x59, 0x48, 0x52, - 0xF3, 0xBB, 0x8C, 0x0C, 0x11, 0x07, 0x11, 0x87, 0x01, 0x04, 0x8E, 0x88, 0x80, 0x0C, 0x08, 0x8C, - 0x8C, 0x91, 0x61, 0x70, 0x4B, 0x04, 0x0C, 0x31, 0xD4, 0x4D, 0x27, 0xA5, 0x5C, 0x6F, 0xBB, 0x32, - 0xD7, 0x0F, 0x4E, 0x0E, 0x56, 0xDB, 0x96, 0x04, 0x69, 0xA5, 0xEA, 0xBA, 0x4D, 0xDD, 0x3A, 0x1F, - 0x62, 0x91, 0x67, 0xD8, 0x3B, 0x44, 0xE1, 0x43, 0x48, 0x51, 0x0C, 0x11, 0x49, 0x60, 0x88, 0xA1, - 0xC8, 0x15, 0x0D, 0x13, 0x27, 0xF6, 0x21, 0x4A, 0x12, 0x46, 0x29, 0x1F, 0x82, 0xF5, 0x9D, 0xD6, - 0x3A, 0x04, 0x8F, 0x00, 0x44, 0x14, 0x98, 0xA7, 0xE3, 0xB2, 0xC8, 0x54, 0x1A, 0x04, 0x23, 0x62, - 0xD3, 0x76, 0x55, 0x99, 0x23, 0xA0, 0xF3, 0x11, 0x20, 0x6C, 0xB6, 0x8D, 0x92, 0xB2, 0xEB, 0x9D, - 0x40, 0xCC, 0x32, 0xE5, 0x7C, 0xA8, 0xCA, 0x7C, 0xBB, 0x6D, 0x32, 0x93, 0x2F, 0xD7, 0xF5, 0xD7, - 0x4F, 0x5E, 0x3C, 0x7D, 0x7E, 0x7A, 0x7E, 0xB5, 0x7C, 0xF4, 0xF6, 0xBD, 0x22, 0x33, 0xAB, 0x75, - 0xAD, 0xA4, 0x7C, 0x7E, 0x7A, 0x71, 0xF7, 0xCE, 0xE1, 0xD5, 0xCD, 0xEA, 0xF5, 0xC5, 0xE2, 0xFD, - 0xB7, 0xEF, 0x25, 0x64, 0x9C, 0x60, 0x1C, 0x29, 0x59, 0xE4, 0x46, 0xEC, 0xFC, 0x37, 0x8E, 0x0E, - 0x26, 0x07, 0xB3, 0x71, 0x1A, 0xBE, 0xE7, 0x99, 0x11, 0x88, 0x99, 0xD1, 0xDE, 0x07, 0xEB, 0x7D, - 0xA6, 0xD5, 0x4F, 0x7E, 0xF0, 0x3E, 0x00, 0x3C, 0xFE, 0xF6, 0x8C, 0x04, 0xBE, 0xBE, 0xB8, 0x3E, - 0x3A, 0x9C, 0xCD, 0x27, 0x95, 0x52, 0x89, 0xAF, 0x88, 0x69, 0xF8, 0xCE, 0xBB, 0xB6, 0xBB, 0x18, - 0x72, 0x20, 0x20, 0x21, 0x22, 0xB1, 0x10, 0xC3, 0xC7, 0x04, 0x9C, 0x7A, 0xFD, 0x40, 0x44, 0xDE, - 0xC7, 0xD4, 0x23, 0x88, 0x31, 0xE0, 0x60, 0x25, 0xC7, 0x00, 0x98, 0x69, 0xB2, 0x6E, 0x30, 0xEB, - 0x85, 0x84, 0x27, 0x0D, 0xC0, 0x1C, 0xE4, 0xCE, 0xDE, 0x9C, 0xE1, 0xD6, 0x3E, 0xBE, 0x9D, 0xEC, - 0x24, 0x50, 0xB5, 0x51, 0x52, 0x2B, 0x69, 0xAD, 0x47, 0x29, 0x8D, 0x92, 0x24, 0x85, 0x51, 0xCA, - 0x18, 0x45, 0x43, 0xCE, 0x9B, 0xEA, 0x3E, 0x80, 0xEF, 0x8A, 0xDB, 0xDC, 0x8E, 0x3D, 0xE9, 0x7A, - 0x42, 0x02, 0x59, 0xED, 0x70, 0xBA, 0x3E, 0x04, 0x22, 0xA1, 0x64, 0x1A, 0xC5, 0x90, 0x1A, 0xEC, - 0x91, 0x86, 0x7E, 0x56, 0x8C, 0x10, 0x02, 0x87, 0xE0, 0x87, 0xA3, 0x69, 0xC8, 0xEF, 0x92, 0x2A, - 0xC7, 0x1B, 0xC1, 0x90, 0xDD, 0x6C, 0x6B, 0x78, 0xAD, 0xFD, 0x23, 0xC9, 0x8A, 0xA5, 0x89, 0x72, - 0x42, 0xE7, 0xE2, 0x4E, 0x43, 0x6A, 0xE8, 0x21, 0x32, 0xC3, 0xCE, 0x8A, 0x69, 0xB8, 0x95, 0x6F, - 0xD2, 0xB9, 0x94, 0xA9, 0xD1, 0xF5, 0xE5, 0x65, 0xD7, 0xB6, 0xC1, 0x4B, 0x08, 0xDE, 0x03, 0xFB, - 0x18, 0xAB, 0xDC, 0xE4, 0x99, 0xC6, 0x1D, 0x12, 0x38, 0xF5, 0x6B, 0xAC, 0x75, 0x28, 0x44, 0x08, - 0x41, 0x2A, 0xA9, 0x8C, 0xF6, 0x7D, 0x2F, 0x15, 0x01, 0xA3, 0x90, 0xD2, 0x18, 0x9D, 0x10, 0xF9, - 0x43, 0x1E, 0x3A, 0xA4, 0xB4, 0x11, 0x10, 0x92, 0xDC, 0x19, 0x46, 0x17, 0x39, 0x4A, 0x49, 0xCC, - 0xF1, 0xE6, 0xFA, 0x66, 0xDB, 0x76, 0xB7, 0x51, 0xC4, 0x49, 0x64, 0xC6, 0x18, 0xD5, 0x75, 0xF6, - 0x70, 0x36, 0xFA, 0xF0, 0xD1, 0xC9, 0xB7, 0xA7, 0xD7, 0x6D, 0x67, 0xFF, 0xC9, 0x3F, 0xFE, 0xC1, - 0xCD, 0xCD, 0x52, 0x99, 0x6C, 0xBD, 0xED, 0x49, 0xC0, 0x27, 0x9F, 0xBC, 0x77, 0x30, 0x1F, 0x57, - 0x55, 0xE9, 0x9C, 0xBB, 0xBA, 0x59, 0x6F, 0xB6, 0x8D, 0x04, 0xD1, 0x35, 0x5B, 0x06, 0xDC, 0x6C, - 0x34, 0x8E, 0x90, 0x99, 0x7B, 0xEB, 0x36, 0xDB, 0x26, 0x0D, 0x49, 0x43, 0xF0, 0xCE, 0x87, 0xD5, - 0x2A, 0x3F, 0x3A, 0x9C, 0x92, 0x24, 0xB6, 0x3E, 0x30, 0x7E, 0xFE, 0xE5, 0xB3, 0xD9, 0xA4, 0xDA, - 0xAE, 0xD6, 0x97, 0xD7, 0xCB, 0xDE, 0xC3, 0xBD, 0x7B, 0x77, 0xAC, 0x8F, 0xBF, 0xFE, 0xF5, 0x17, - 0xAF, 0x5E, 0x9E, 0xFD, 0x77, 0xFF, 0xFC, 0xBF, 0x1A, 0x55, 0xC5, 0xF5, 0x62, 0x23, 0x48, 0xBA, - 0xCE, 0x5A, 0x17, 0x9C, 0xED, 0x7F, 0xF5, 0xC5, 0x37, 0x1F, 0x7F, 0xF8, 0x1E, 0x40, 0x40, 0xC4, - 0xBB, 0x77, 0x0E, 0xEF, 0xDE, 0x39, 0x7C, 0x79, 0x7A, 0xC9, 0x1C, 0x47, 0x55, 0x81, 0x00, 0x1F, - 0xBD, 0xFF, 0xF0, 0xE5, 0xE9, 0x45, 0xDF, 0xBB, 0xEB, 0xC5, 0xF2, 0xDF, 0xFC, 0x5F, 0xFF, 0xAE, - 0xAC, 0xCA, 0xB6, 0xEB, 0xAD, 0xF5, 0xFF, 0xE8, 0xA7, 0xDF, 0x7F, 0xF7, 0xD1, 0x83, 0xB3, 0xD7, - 0x17, 0xA9, 0x13, 0x9A, 0xDA, 0xF9, 0xA9, 0x55, 0x44, 0x29, 0xBA, 0xC7, 0x18, 0x62, 0x6C, 0xBB, - 0x4E, 0x08, 0x91, 0x06, 0x61, 0x52, 0x52, 0xF2, 0x60, 0x17, 0x02, 0x8B, 0xDC, 0x6C, 0xB6, 0x8D, - 0x56, 0x92, 0x48, 0xF4, 0xD6, 0xA6, 0x6D, 0xAF, 0x04, 0x31, 0x73, 0xDB, 0xF5, 0xCC, 0xCC, 0x94, - 0x74, 0x67, 0x65, 0xD2, 0xB4, 0xC8, 0x74, 0x3A, 0x68, 0x40, 0x0B, 0x91, 0xE5, 0xD9, 0xBD, 0xBB, - 0xC7, 0xD7, 0xD7, 0x37, 0x02, 0x51, 0x1A, 0xDD, 0xF7, 0x36, 0x32, 0x10, 0xD1, 0xCB, 0xB3, 0x2B, - 0xE7, 0x02, 0x0F, 0x62, 0x0C, 0x43, 0x22, 0xB6, 0x3F, 0x16, 0x11, 0x87, 0xCF, 0x9A, 0x41, 0xA4, - 0xCE, 0x3F, 0x02, 0xE0, 0x0E, 0x84, 0x8D, 0x08, 0xDE, 0xC7, 0xC5, 0xAA, 0x01, 0x80, 0xCE, 0xFA, - 0xCC, 0xA8, 0x18, 0xA3, 0x94, 0x64, 0xAD, 0x3F, 0x98, 0x4F, 0x62, 0x64, 0x8E, 0x31, 0x44, 0x71, - 0x7E, 0xB3, 0x39, 0x9A, 0x8D, 0x9A, 0xCE, 0x86, 0x18, 0x22, 0x83, 0xD1, 0xCA, 0xF9, 0x10, 0x63, - 0x40, 0x31, 0xB0, 0x2F, 0x9C, 0xF7, 0x75, 0xD3, 0x6F, 0x9B, 0x2E, 0xCF, 0xB4, 0x51, 0xE4, 0x43, - 0x90, 0x02, 0x11, 0x48, 0x08, 0xCC, 0x32, 0x0D, 0x00, 0xCE, 0x39, 0xE7, 0x7C, 0x72, 0x45, 0x62, - 0x00, 0x22, 0x2C, 0x72, 0x0D, 0x08, 0x09, 0x5E, 0xC3, 0x8C, 0xDE, 0x87, 0xB6, 0xEB, 0xA9, 0x10, - 0xCE, 0x79, 0x29, 0x49, 0x09, 0x99, 0x69, 0x01, 0xCC, 0x52, 0x49, 0x8E, 0xB1, 0xC8, 0xCD, 0xBD, - 0x3B, 0x87, 0x97, 0xD7, 0x8B, 0xCF, 0xBE, 0xF8, 0xE6, 0xF1, 0x93, 0x17, 0x79, 0x6E, 0xE6, 0xB3, - 0x29, 0x00, 0xEB, 0xB5, 0x9C, 0x4D, 0x46, 0x65, 0x91, 0x7D, 0xF9, 0xF8, 0x45, 0x55, 0xE6, 0x0F, - 0xEE, 0x1D, 0x26, 0x63, 0xF9, 0xB4, 0xB3, 0x78, 0xE8, 0x65, 0x43, 0xE4, 0x08, 0x08, 0x24, 0x07, - 0x65, 0x0B, 0xEB, 0x82, 0x92, 0x52, 0xA9, 0x94, 0xDF, 0xE0, 0xE1, 0x7C, 0x12, 0x42, 0x74, 0xC1, - 0x37, 0x9D, 0x27, 0x41, 0xDB, 0x6D, 0xD3, 0xB5, 0x7D, 0x51, 0x18, 0xAD, 0x94, 0x94, 0x54, 0x95, - 0xF9, 0xAE, 0x8E, 0x4E, 0x07, 0xF9, 0xB0, 0xC0, 0x05, 0x82, 0x96, 0x42, 0x90, 0x42, 0x4E, 0xFC, - 0xD7, 0xC1, 0xED, 0x3B, 0x6D, 0x92, 0x5D, 0x43, 0x09, 0x04, 0x42, 0x08, 0xC9, 0x2C, 0x6E, 0xF0, - 0x25, 0x01, 0x8E, 0xA9, 0xE7, 0x36, 0x6C, 0xF9, 0xC8, 0x72, 0x68, 0x15, 0xA4, 0x6F, 0xE2, 0xC0, - 0x71, 0x42, 0xC0, 0x84, 0x37, 0x4D, 0x61, 0x45, 0x2B, 0x25, 0x49, 0x00, 0x83, 0x94, 0x42, 0x23, - 0x65, 0x46, 0xE7, 0xB9, 0xC6, 0x94, 0xC6, 0xDC, 0x02, 0x4C, 0xEC, 0xA7, 0x13, 0xF0, 0xDD, 0xC7, - 0xBE, 0xD5, 0x95, 0xFE, 0x29, 0xA5, 0x24, 0xE2, 0x94, 0x2E, 0x1A, 0x52, 0x99, 0x51, 0x7B, 0xA4, - 0x44, 0x0A, 0x49, 0xCC, 0x31, 0x84, 0x28, 0x04, 0x49, 0x39, 0x50, 0xE4, 0xBD, 0xF7, 0x5D, 0xEF, - 0x98, 0x39, 0xF5, 0x29, 0x53, 0xF2, 0xE5, 0x43, 0x60, 0x06, 0x12, 0x82, 0x68, 0x08, 0xB8, 0x31, - 0x72, 0xE4, 0x61, 0xDE, 0x2C, 0xC4, 0xE0, 0xC3, 0xC4, 0x83, 0x5F, 0x1E, 0x73, 0x64, 0x14, 0x48, - 0x02, 0x95, 0x1C, 0x86, 0x09, 0x91, 0x53, 0x1B, 0x7E, 0xC0, 0x85, 0x24, 0xD4, 0xD8, 0xD0, 0xCB, - 0xE3, 0x98, 0x02, 0xD9, 0x62, 0xB9, 0x3E, 0x7D, 0x7D, 0x75, 0xFF, 0xDE, 0x61, 0x95, 0xA9, 0xAA, - 0xCC, 0xDB, 0xDE, 0x2D, 0x17, 0x4B, 0xA3, 0xCD, 0xE5, 0xF5, 0xBA, 0x2A, 0x4C, 0x91, 0x29, 0x04, - 0xF0, 0x3E, 0xD8, 0xDE, 0xE6, 0x65, 0xE1, 0x9D, 0x4B, 0xF2, 0x3B, 0x82, 0x64, 0x22, 0x1D, 0x68, - 0xAD, 0x38, 0x46, 0xCF, 0x11, 0x31, 0xC9, 0x09, 0x60, 0x8C, 0x1C, 0x62, 0x48, 0xC1, 0x3C, 0x39, - 0x30, 0x12, 0x09, 0x6D, 0x94, 0xED, 0x1D, 0x21, 0x2A, 0x29, 0x8F, 0x0F, 0x66, 0x0B, 0xB9, 0x5D, - 0x6F, 0xB6, 0x29, 0x95, 0xB0, 0xDE, 0x4B, 0x22, 0x04, 0x40, 0x84, 0xBB, 0xC7, 0xE3, 0xE5, 0x6A, - 0xF3, 0xEA, 0x62, 0x21, 0x95, 0x3C, 0x39, 0x9E, 0xFF, 0xF9, 0x67, 0x5F, 0x7F, 0xF8, 0xF1, 0x07, - 0x4F, 0x9E, 0xBD, 0xD6, 0x99, 0xA9, 0xAA, 0xE2, 0xBD, 0x77, 0x1F, 0xAE, 0xD6, 0x9B, 0xB6, 0x6D, - 0xEF, 0xDF, 0x3D, 0x20, 0xA2, 0xCB, 0xEB, 0xA5, 0x22, 0xDC, 0xD6, 0xCD, 0xC5, 0xEB, 0xCE, 0xF5, - 0xCE, 0xC5, 0x78, 0x7E, 0x71, 0xBD, 0xDD, 0x0E, 0xAA, 0xFC, 0x09, 0xAD, 0x56, 0x96, 0x0F, 0xA6, - 0x93, 0x71, 0x67, 0xFD, 0xCD, 0xB2, 0x76, 0x3E, 0x62, 0xF4, 0x67, 0x67, 0x17, 0x75, 0x1F, 0xAA, - 0xD9, 0xFC, 0xDD, 0xF7, 0xA6, 0x21, 0xF8, 0x9B, 0x4D, 0xBB, 0xD9, 0x6C, 0x3F, 0xFD, 0xF4, 0x8B, - 0x83, 0xF9, 0xE4, 0x67, 0x7F, 0xF0, 0x23, 0x40, 0x94, 0x92, 0xAA, 0x22, 0xFF, 0xCD, 0xE3, 0xE7, - 0x27, 0xC7, 0x47, 0xF3, 0xD9, 0xB4, 0xAE, 0x1B, 0x6D, 0x94, 0xD6, 0xDA, 0x76, 0xFD, 0x64, 0x54, - 0x54, 0xA5, 0x79, 0xFC, 0xED, 0xAB, 0x7B, 0x77, 0x8E, 0x8E, 0x0F, 0xA7, 0xDB, 0x6D, 0x3B, 0x9F, - 0x4D, 0xC6, 0xE3, 0x6A, 0x54, 0xE5, 0xAF, 0x5F, 0x5F, 0x2C, 0x17, 0x8B, 0xF3, 0xCB, 0xC5, 0xC5, - 0xE5, 0xA2, 0x6D, 0xDB, 0x7F, 0xFE, 0xDF, 0xFE, 0xFC, 0xE0, 0x60, 0x76, 0x73, 0x7D, 0x43, 0x54, - 0xB8, 0x10, 0x49, 0x4A, 0x6F, 0x2D, 0x87, 0x18, 0x05, 0x27, 0xB3, 0xB2, 0xAE, 0xB7, 0x59, 0x66, - 0x92, 0xE9, 0x06, 0x03, 0x6B, 0x96, 0x24, 0xA5, 0x75, 0x01, 0x11, 0x9D, 0x0F, 0xCE, 0x7B, 0x40, - 0x28, 0xA4, 0x21, 0x44, 0x16, 0xE8, 0x9C, 0x57, 0x44, 0xC0, 0x1C, 0x99, 0x33, 0x63, 0xBA, 0xBE, - 0x77, 0x3E, 0x38, 0x1F, 0xB3, 0x2C, 0x2B, 0x72, 0x2D, 0x10, 0xEE, 0x18, 0x7D, 0x79, 0xB5, 0x54, - 0x46, 0x49, 0x49, 0xAF, 0xCF, 0x2E, 0x63, 0x8C, 0x59, 0xA6, 0xDB, 0xCE, 0xA5, 0xA5, 0xA5, 0xA4, - 0x40, 0x41, 0xD6, 0x7B, 0x4C, 0x9F, 0x7B, 0xCA, 0x0D, 0x86, 0xE0, 0x35, 0x6C, 0x95, 0x61, 0x71, - 0x02, 0x33, 0xA4, 0xBD, 0xCD, 0x7B, 0x55, 0x98, 0xF4, 0xBF, 0xB6, 0x9D, 0xF5, 0x3E, 0xF4, 0xD6, - 0xE5, 0x99, 0x7A, 0x7E, 0xBE, 0xF0, 0x21, 0x21, 0x7B, 0x10, 0x62, 0x44, 0x81, 0x5D, 0x6F, 0xE7, - 0xE3, 0x92, 0x01, 0x42, 0x04, 0x49, 0x22, 0xFA, 0xD0, 0x76, 0x96, 0x48, 0xC8, 0xB4, 0xB1, 0x89, - 0x9C, 0x0F, 0xBD, 0xF3, 0x5D, 0x6F, 0x43, 0x88, 0x4D, 0xD7, 0x1B, 0xAD, 0x32, 0x89, 0xC0, 0xAC, - 0x8D, 0x36, 0xC6, 0xEC, 0xCB, 0x97, 0x3C, 0x33, 0x69, 0xDD, 0x4A, 0x29, 0x42, 0xE0, 0xD4, 0x46, - 0x14, 0x88, 0x65, 0x9E, 0x2D, 0x37, 0xB5, 0x40, 0x2C, 0x8B, 0x2C, 0x01, 0xD1, 0xD3, 0x3E, 0xE1, - 0x14, 0x2C, 0x94, 0xAC, 0xEB, 0x16, 0x11, 0xCA, 0xC2, 0x5C, 0x5E, 0x71, 0x91, 0x67, 0x42, 0x60, - 0x6E, 0xD4, 0x62, 0xB9, 0xD8, 0xD6, 0x5B, 0x25, 0x65, 0xEF, 0xDC, 0x8F, 0x7F, 0xF8, 0xF1, 0xE1, - 0x6C, 0xF2, 0xF9, 0x97, 0xCF, 0xA4, 0x10, 0x27, 0xC7, 0xB3, 0x1D, 0x06, 0x75, 0x70, 0x7D, 0x7F, - 0xD3, 0x1D, 0xDF, 0x25, 0x3B, 0x3C, 0x28, 0xF7, 0x85, 0x10, 0x23, 0xA6, 0xDC, 0x2A, 0x49, 0x5D, - 0x19, 0x55, 0xE5, 0x06, 0x00, 0x9C, 0xF3, 0x37, 0xCB, 0x0D, 0x02, 0x7A, 0x1F, 0xEE, 0xDE, 0x39, - 0x38, 0x3A, 0x9C, 0xA5, 0xC8, 0x92, 0xA6, 0xA5, 0x69, 0xD8, 0xB5, 0x4F, 0x1D, 0x50, 0x88, 0x18, - 0xA3, 0x40, 0x14, 0x84, 0x21, 0x44, 0x1F, 0x39, 0x46, 0x48, 0x48, 0xD7, 0x1D, 0xA0, 0x2F, 0x42, - 0x88, 0xD6, 0x86, 0x64, 0xE4, 0xFC, 0x26, 0xED, 0x4A, 0x0D, 0x00, 0x46, 0x19, 0x99, 0xE9, 0xD6, - 0x9C, 0x0E, 0x70, 0xA7, 0xCA, 0xB4, 0xFB, 0x5D, 0x12, 0x02, 0x18, 0xAC, 0xF3, 0x24, 0x84, 0xD6, - 0x4A, 0x4B, 0xCA, 0x32, 0x95, 0xA0, 0x6C, 0xF0, 0x5B, 0xD8, 0xAE, 0xDF, 0x09, 0x61, 0xB7, 0x7F, - 0xC4, 0x3B, 0xFC, 0x48, 0xEA, 0x70, 0x0F, 0x12, 0x28, 0xBB, 0x1C, 0x2A, 0xB5, 0xC6, 0xF6, 0xF2, - 0xB0, 0x29, 0xD0, 0x24, 0x75, 0x79, 0xE7, 0x83, 0xF7, 0xB1, 0xB7, 0x2E, 0x0E, 0xDE, 0x50, 0x90, - 0xBC, 0x97, 0x53, 0xE0, 0xA4, 0x37, 0xD6, 0x73, 0xE9, 0xF6, 0x02, 0xC7, 0x41, 0xCA, 0x39, 0x1D, - 0x1D, 0x0C, 0xB8, 0x1F, 0x54, 0xC4, 0x10, 0x01, 0x05, 0x84, 0x48, 0x91, 0x31, 0xB1, 0x14, 0x84, - 0x88, 0x0C, 0xC8, 0xC3, 0xB2, 0xDB, 0xA9, 0x57, 0xA7, 0xCA, 0x92, 0x99, 0xB9, 0xD9, 0xD6, 0x6D, - 0xD7, 0x6D, 0xEB, 0x4E, 0x0B, 0xA6, 0x71, 0xA5, 0x28, 0x28, 0x29, 0xBB, 0xDE, 0xD6, 0x6D, 0x5F, - 0x15, 0x46, 0x20, 0x3A, 0x1F, 0xB4, 0x22, 0xA5, 0xC8, 0x76, 0x9D, 0xD2, 0x12, 0x50, 0xD4, 0x4D, - 0xA7, 0x09, 0x09, 0x04, 0x08, 0x88, 0xC1, 0xEF, 0x36, 0x03, 0x44, 0x06, 0xEF, 0x5D, 0xA2, 0x40, - 0x84, 0x10, 0x03, 0x27, 0xAE, 0xF4, 0x90, 0xCC, 0x26, 0x0C, 0xA6, 0x52, 0x72, 0x8F, 0xA9, 0x09, - 0x21, 0x38, 0x17, 0xAC, 0x8F, 0x2E, 0x91, 0xA8, 0x88, 0xDE, 0xBA, 0x33, 0x2B, 0x8A, 0xFC, 0xE5, - 0xE9, 0xCD, 0x7F, 0xF9, 0x4F, 0x7F, 0xBC, 0x5E, 0x6D, 0xCA, 0xB2, 0xB8, 0x73, 0x74, 0x70, 0x73, - 0xB3, 0x04, 0xCE, 0x8C, 0x96, 0xDE, 0x79, 0x44, 0x5C, 0x6D, 0x6A, 0x1F, 0xF8, 0xE4, 0xF8, 0xA0, - 0xEF, 0xFA, 0xB3, 0x8B, 0xEB, 0xAA, 0xC8, 0x17, 0xEB, 0xED, 0xD5, 0xE5, 0x95, 0x29, 0x8B, 0xBE, - 0xEF, 0xFB, 0xDE, 0x0A, 0xA2, 0x64, 0xCF, 0xF3, 0x7B, 0xDF, 0x7F, 0xF7, 0xDD, 0x47, 0xF7, 0x6F, - 0x16, 0x9B, 0xCE, 0x05, 0x60, 0x0E, 0xD6, 0x36, 0x75, 0x7B, 0xB3, 0xAE, 0xEF, 0xDD, 0xBF, 0x33, - 0x2A, 0xF3, 0xAB, 0xCB, 0x8B, 0xAF, 0x1F, 0x3F, 0xDB, 0x34, 0x4E, 0x08, 0xFA, 0xE9, 0xEF, 0xFF, - 0xDE, 0xF9, 0xF9, 0xD5, 0xFF, 0xFE, 0x7F, 0xFE, 0xE5, 0x8F, 0x7F, 0xFC, 0x83, 0xD1, 0xA8, 0x2C, - 0x0A, 0xF3, 0xFE, 0x3B, 0xF7, 0x4F, 0xCF, 0xAE, 0xEE, 0xDD, 0x39, 0xC8, 0x12, 0xC5, 0x3D, 0x99, - 0xB0, 0x84, 0xF8, 0xF0, 0xFE, 0xC9, 0xC1, 0x6C, 0x52, 0x77, 0x7D, 0x72, 0xE5, 0x41, 0xC4, 0xBE, - 0x77, 0x1F, 0x3C, 0x7A, 0xF8, 0xFE, 0x3B, 0x6F, 0x5D, 0x5F, 0xDD, 0x7C, 0xF5, 0xE4, 0x85, 0x56, - 0xD2, 0xF6, 0xF6, 0xEC, 0xFC, 0x2A, 0xCD, 0x2E, 0x78, 0x28, 0xC9, 0x59, 0x12, 0x75, 0xCE, 0x2A, - 0xA5, 0x05, 0xA2, 0xB5, 0x7E, 0x94, 0x65, 0xF3, 0xD9, 0xB4, 0xB7, 0xEE, 0xF5, 0xD9, 0x25, 0x47, - 0xB0, 0xD6, 0x65, 0xB9, 0x18, 0x7A, 0xA6, 0x42, 0x10, 0x51, 0xF0, 0x21, 0xCD, 0x8B, 0x89, 0x59, - 0x1A, 0x43, 0x52, 0x28, 0xA6, 0xAE, 0x77, 0x16, 0xAD, 0x40, 0x74, 0x2E, 0xC4, 0x10, 0xF3, 0xC2, - 0x14, 0x45, 0x2E, 0x49, 0xC4, 0x10, 0xBB, 0xCE, 0x7A, 0xE7, 0xFA, 0xDE, 0x76, 0x5D, 0x64, 0x4E, - 0x33, 0x9F, 0xC0, 0x00, 0x08, 0x18, 0x62, 0xBC, 0xBA, 0x5E, 0x2E, 0xD7, 0xCD, 0x6C, 0x52, 0x85, - 0x90, 0xC0, 0x12, 0x20, 0xDE, 0xD0, 0xC7, 0x11, 0x12, 0xC9, 0x25, 0x82, 0xD8, 0x61, 0x17, 0x6F, - 0x0D, 0xBA, 0x00, 0x00, 0xAC, 0xF7, 0x75, 0xD3, 0x27, 0x8C, 0x08, 0x30, 0x38, 0x1F, 0xDA, 0xDE, - 0x4A, 0x21, 0xAE, 0x96, 0x9B, 0x10, 0x62, 0x64, 0x16, 0x42, 0xF4, 0x2E, 0x74, 0xAB, 0x3A, 0x04, - 0xC7, 0x51, 0x28, 0xA5, 0x7C, 0x88, 0xFB, 0xAC, 0x6F, 0xDB, 0xF4, 0xD6, 0xBA, 0xC3, 0xD9, 0x38, - 0x9D, 0xDF, 0x4D, 0xDB, 0x2E, 0x56, 0x9B, 0x59, 0x95, 0x17, 0x99, 0x0E, 0xDE, 0x3B, 0x21, 0xBC, - 0x0F, 0xC9, 0x85, 0x40, 0x2B, 0x25, 0x04, 0x56, 0x45, 0x96, 0x64, 0x76, 0x18, 0x30, 0xE9, 0x68, - 0xF6, 0xD6, 0x7A, 0xE7, 0xF2, 0xDC, 0xC4, 0xC8, 0x3E, 0x04, 0x21, 0x92, 0x17, 0x1A, 0x32, 0x70, - 0x52, 0x4C, 0x4C, 0xD9, 0x8D, 0x75, 0x4E, 0x08, 0x14, 0x11, 0x26, 0xA3, 0x62, 0x3E, 0xAD, 0x10, - 0xC5, 0x72, 0xB3, 0xF5, 0x3E, 0xBC, 0x7C, 0x75, 0x3E, 0x1E, 0x8F, 0xA6, 0x93, 0x51, 0xDF, 0xF7, - 0x9F, 0x7F, 0xF5, 0x94, 0x08, 0x8D, 0xD1, 0x92, 0x48, 0x6B, 0xB5, 0xDA, 0xD6, 0xC9, 0xE1, 0x6C, - 0x80, 0x52, 0x01, 0x00, 0xA2, 0x90, 0xC2, 0x20, 0xF6, 0xBD, 0x4B, 0x02, 0x9F, 0xE9, 0x42, 0x42, - 0x9A, 0xD3, 0x21, 0x5A, 0xF6, 0x08, 0x80, 0x00, 0x99, 0xD6, 0x44, 0xA2, 0xED, 0xFA, 0xD7, 0xE7, - 0xD7, 0x80, 0x5C, 0x55, 0x65, 0x91, 0x65, 0x88, 0x9C, 0xEA, 0x92, 0xB0, 0x9B, 0x5F, 0xD2, 0x77, - 0x32, 0xA1, 0x81, 0x09, 0x09, 0x10, 0xF7, 0x61, 0x6E, 0x68, 0x22, 0xF9, 0xB4, 0x8F, 0xDE, 0x28, - 0xBF, 0x02, 0x43, 0x80, 0x98, 0x7E, 0x9B, 0xFE, 0xE8, 0x4F, 0xFF, 0x0C, 0x76, 0xC1, 0x36, 0xC5, - 0xAF, 0x1D, 0xA1, 0x0C, 0x77, 0xB3, 0x99, 0x41, 0x40, 0x4E, 0x0A, 0xA1, 0x95, 0x14, 0x02, 0x93, - 0x64, 0x8E, 0xD8, 0xE9, 0x31, 0xF1, 0x77, 0x81, 0x14, 0x7F, 0xEF, 0x63, 0x9F, 0xA6, 0xEF, 0x4A, - 0xCB, 0x80, 0xF8, 0xE6, 0xBF, 0xF3, 0x60, 0xE1, 0x11, 0x87, 0x08, 0x05, 0x00, 0x00, 0xC9, 0xD1, - 0x63, 0xB5, 0x6D, 0x9B, 0xD6, 0x5A, 0x37, 0x84, 0x83, 0x24, 0xFD, 0x11, 0x86, 0xFC, 0x8E, 0x63, - 0x64, 0x1F, 0x38, 0x84, 0x98, 0xA4, 0xD6, 0xF6, 0xC6, 0x47, 0xBF, 0xFB, 0xEA, 0x4A, 0xD2, 0xA8, - 0xCC, 0x10, 0x51, 0x26, 0xAC, 0x0A, 0x20, 0xEE, 0x24, 0x59, 0xF6, 0xB3, 0x61, 0x66, 0x4E, 0xF3, - 0xE9, 0x14, 0xCB, 0x00, 0x80, 0x48, 0xBC, 0x7A, 0xF1, 0x7C, 0xBB, 0xDE, 0x6C, 0x9A, 0xFE, 0x68, - 0x3E, 0x26, 0x42, 0xAD, 0xD4, 0xA6, 0x69, 0x6E, 0x56, 0xF5, 0xA6, 0xE9, 0x7B, 0x17, 0x96, 0xEB, - 0x66, 0xB3, 0x69, 0x23, 0xEF, 0x74, 0x95, 0x10, 0xAD, 0xF3, 0x09, 0xA2, 0xCD, 0xCC, 0x52, 0xC9, - 0xA4, 0xDF, 0x90, 0xAC, 0xED, 0x77, 0xA5, 0xF0, 0x70, 0xBD, 0x49, 0xB2, 0x43, 0x08, 0xA1, 0xB5, - 0x0E, 0x3E, 0xA4, 0x10, 0x53, 0x16, 0xA6, 0x2C, 0x73, 0x66, 0x6E, 0x3B, 0xCB, 0x0C, 0x6D, 0x6F, - 0x7B, 0xEB, 0x52, 0x5C, 0x1B, 0x57, 0xC5, 0x1F, 0xFE, 0xFC, 0x93, 0xC7, 0xDF, 0xBE, 0xFE, 0xF6, - 0xF5, 0xE2, 0x7F, 0xFC, 0x1F, 0xFE, 0xD9, 0xDF, 0xFD, 0xDD, 0xA7, 0x77, 0x4E, 0x8E, 0xCB, 0xB2, - 0xF8, 0xF8, 0x83, 0x87, 0x0F, 0xEE, 0x1F, 0x97, 0x45, 0x26, 0x10, 0x8B, 0x22, 0x3F, 0x3C, 0x9C, - 0x6D, 0x37, 0xCD, 0xF9, 0xC5, 0x75, 0xD7, 0xD9, 0xBA, 0x69, 0x53, 0x7C, 0xD9, 0xB6, 0x7D, 0xD7, - 0xDB, 0xBA, 0x6E, 0xAB, 0x6A, 0xA4, 0xB5, 0x5E, 0x6F, 0xB6, 0x3F, 0xF8, 0xE8, 0xD1, 0x4F, 0x7F, - 0xFC, 0x3D, 0xEF, 0xB9, 0xAE, 0xBB, 0xBE, 0xEF, 0xAF, 0xAF, 0x16, 0x4D, 0xDB, 0x55, 0x55, 0x8E, - 0x08, 0x52, 0xA9, 0x8B, 0xF3, 0xCB, 0xD5, 0xA6, 0xFE, 0xFA, 0xF1, 0xF3, 0xAF, 0xBF, 0x7E, 0x56, - 0x56, 0xD5, 0x47, 0x9F, 0x7C, 0x9C, 0x97, 0xE5, 0x6C, 0x3A, 0xFD, 0xFC, 0x37, 0xDF, 0x14, 0x79, - 0x56, 0x16, 0xC5, 0xD1, 0x7C, 0x9A, 0x65, 0xBA, 0xEB, 0xFB, 0xF9, 0x64, 0x1C, 0x63, 0x72, 0x8A, - 0x6B, 0x94, 0xA4, 0xDC, 0x28, 0x25, 0x65, 0x91, 0x67, 0x5A, 0xA9, 0xD4, 0xE0, 0x13, 0x42, 0x48, - 0x29, 0x0E, 0x67, 0x23, 0xAD, 0xD5, 0x74, 0x3A, 0xBE, 0x73, 0x7C, 0x10, 0x23, 0xD7, 0x75, 0x7B, - 0x73, 0xB3, 0xEC, 0xFA, 0x0E, 0x51, 0x10, 0xC9, 0x84, 0xEA, 0x72, 0xCE, 0xA5, 0x4E, 0x79, 0x8A, - 0xDA, 0xE3, 0xF1, 0xE8, 0x60, 0x3E, 0xED, 0x7A, 0x9B, 0x65, 0x59, 0x8C, 0x4C, 0x52, 0xA0, 0xC0, - 0x22, 0xCF, 0x8C, 0xD1, 0xC0, 0x9C, 0xC0, 0x3D, 0x7B, 0xAB, 0xF0, 0x74, 0xF2, 0x34, 0x6D, 0x9F, - 0x6A, 0x13, 0xA5, 0x64, 0x04, 0x76, 0xD6, 0x6D, 0x36, 0x75, 0x0C, 0xBE, 0x6B, 0x3B, 0xAD, 0x95, - 0x24, 0x0A, 0x91, 0x43, 0x64, 0xE7, 0x83, 0x0F, 0x31, 0xD9, 0x4A, 0x10, 0xA1, 0xF3, 0x01, 0x51, - 0xBC, 0xFB, 0xCE, 0xFD, 0x51, 0x59, 0x24, 0x8B, 0xA3, 0xE1, 0xD8, 0x63, 0x88, 0x83, 0x9C, 0x0A, - 0xA2, 0xD8, 0x35, 0x91, 0xBF, 0x7B, 0x40, 0xA7, 0xC0, 0xBA, 0x6D, 0xBA, 0xBF, 0xFD, 0xE5, 0x97, - 0x6D, 0xE7, 0x8A, 0x3C, 0x1B, 0x57, 0xB9, 0x75, 0x3E, 0x46, 0x08, 0x21, 0x24, 0x26, 0x75, 0xD7, - 0x3B, 0x25, 0x15, 0x00, 0x93, 0x40, 0x12, 0xC2, 0x79, 0x4F, 0x44, 0x4A, 0x52, 0xDF, 0xFB, 0xB4, - 0x3C, 0x42, 0xE4, 0x18, 0xB9, 0x2C, 0x4C, 0x60, 0x76, 0xCE, 0xB7, 0x5D, 0xE7, 0x7D, 0x50, 0x24, - 0x32, 0xA3, 0x84, 0x40, 0xE7, 0xC3, 0x6A, 0x5D, 0x5B, 0xE7, 0x3A, 0xEB, 0xB4, 0x94, 0x89, 0x0F, - 0x94, 0x04, 0xBF, 0xD2, 0xF3, 0x84, 0x18, 0x42, 0x08, 0x65, 0x9E, 0x31, 0xA0, 0x73, 0x0E, 0x00, - 0x00, 0x41, 0x20, 0x5A, 0xE7, 0x52, 0x91, 0xE1, 0x5C, 0xE8, 0xFA, 0x5E, 0x12, 0x4D, 0xC7, 0xE5, - 0xD1, 0x7C, 0x9C, 0x19, 0xDD, 0xF6, 0x36, 0xCF, 0x34, 0x32, 0x1F, 0x1E, 0x4C, 0x62, 0xE0, 0xB3, - 0x8B, 0x9B, 0xAB, 0xAB, 0xC5, 0x72, 0xB5, 0x49, 0x9D, 0xAF, 0x10, 0xD8, 0x7B, 0x77, 0x75, 0xBD, - 0x22, 0x12, 0x8B, 0xD5, 0xA6, 0xDE, 0x76, 0x1C, 0x63, 0x08, 0x61, 0x5B, 0xB7, 0xCE, 0xB9, 0xAE, - 0xB7, 0x6D, 0x67, 0x53, 0xCE, 0x97, 0x68, 0x3C, 0x00, 0x89, 0x1E, 0x93, 0x72, 0x09, 0xE0, 0x44, - 0x25, 0x56, 0x32, 0x19, 0xC7, 0x28, 0x29, 0x8D, 0x56, 0xEB, 0x4D, 0xFD, 0xF2, 0xD5, 0xC5, 0xCD, - 0x72, 0x45, 0x92, 0x8A, 0x3C, 0x4B, 0x78, 0xA3, 0x04, 0xDB, 0x02, 0xE0, 0xFD, 0xC6, 0x8F, 0x31, - 0x71, 0xC2, 0x41, 0x26, 0x1B, 0x36, 0x81, 0x3B, 0x2B, 0x89, 0x81, 0xE2, 0xF4, 0x9D, 0x78, 0x02, - 0xE9, 0xD3, 0x06, 0x00, 0x90, 0xCC, 0x89, 0x44, 0x08, 0x6F, 0x5A, 0x97, 0x43, 0x4F, 0x80, 0x71, - 0x68, 0x23, 0xA5, 0x86, 0x00, 0x13, 0x0D, 0x66, 0xE5, 0x42, 0x60, 0x8C, 0x10, 0x42, 0x44, 0x0C, - 0xB7, 0x31, 0x5F, 0xFF, 0xA9, 0x28, 0xB6, 0x7F, 0xEC, 0x50, 0x17, 0xA8, 0x86, 0x55, 0x3E, 0xA8, - 0xE0, 0xA7, 0x44, 0x6C, 0x27, 0x8A, 0xCF, 0x00, 0xE0, 0x7D, 0x68, 0x7B, 0xEB, 0x9C, 0x0F, 0xBC, - 0xCF, 0xAD, 0x86, 0xB8, 0x0A, 0xC3, 0x62, 0x4A, 0x64, 0xFA, 0x7D, 0xB3, 0xFF, 0x0D, 0x9E, 0x36, - 0xBD, 0x96, 0x56, 0x32, 0x0C, 0xBC, 0x4E, 0x4E, 0x90, 0x96, 0xDE, 0x3A, 0x22, 0x22, 0x14, 0x0C, - 0x6F, 0xA0, 0x64, 0xE9, 0xE9, 0xC2, 0x10, 0x8A, 0x86, 0x10, 0x93, 0x62, 0x66, 0xDA, 0x87, 0xAB, - 0xF5, 0x56, 0x2B, 0x2A, 0xA4, 0x6C, 0xBB, 0x7E, 0x54, 0xE6, 0x8B, 0xD5, 0x06, 0x18, 0x14, 0x89, - 0xA6, 0xB3, 0x6D, 0xE7, 0x36, 0x75, 0x17, 0x99, 0x83, 0x75, 0x46, 0xAB, 0x18, 0xD9, 0x85, 0xA8, - 0x32, 0xA3, 0x07, 0xDB, 0x94, 0xD4, 0xC9, 0xF6, 0x80, 0xC0, 0x51, 0x58, 0x6B, 0x13, 0xB8, 0x64, - 0x20, 0x3C, 0x5B, 0x1B, 0x81, 0x63, 0x60, 0x00, 0x61, 0x6D, 0xAD, 0x94, 0x64, 0x80, 0x24, 0xFC, - 0x1F, 0xBC, 0x4F, 0x90, 0xDA, 0xC4, 0x5A, 0x4A, 0xFD, 0x52, 0xEF, 0xC2, 0x83, 0x93, 0x99, 0x31, - 0xEA, 0xD3, 0xAF, 0x5E, 0xFD, 0xF4, 0xF7, 0x3E, 0xEA, 0xDA, 0x1A, 0x88, 0xEE, 0xDE, 0xBD, 0x13, - 0x82, 0x1F, 0x8F, 0x47, 0xC6, 0xE8, 0xAE, 0x6D, 0x81, 0x99, 0xA4, 0x6C, 0x36, 0xDB, 0xED, 0xB6, - 0xBE, 0xBA, 0x5E, 0xAE, 0xD6, 0xDB, 0x41, 0xC1, 0x0E, 0xA0, 0xEB, 0x9D, 0x6F, 0x5A, 0x1F, 0x78, - 0x6A, 0x0C, 0x02, 0xFF, 0xFC, 0x0F, 0x3E, 0xF9, 0xDE, 0x47, 0x8F, 0x9C, 0x75, 0x5D, 0x6F, 0xEB, - 0xBA, 0xB9, 0xB8, 0xB8, 0x52, 0x92, 0xF2, 0xCC, 0x58, 0x1F, 0x5E, 0x9F, 0x5F, 0xF5, 0xBD, 0xCD, - 0xB3, 0xEC, 0xF9, 0xE9, 0xC5, 0xB6, 0x71, 0xF3, 0xC3, 0x03, 0xEF, 0x43, 0xA6, 0x65, 0x79, 0x34, - 0xEB, 0xAD, 0xFB, 0xF1, 0xEF, 0x7D, 0xF2, 0xEA, 0xD5, 0xD9, 0xDD, 0x3B, 0x87, 0xEB, 0x4D, 0x5D, - 0x96, 0xB9, 0x94, 0xE4, 0xBC, 0x1F, 0x97, 0xC5, 0xF5, 0x6A, 0x53, 0xE6, 0xE6, 0x60, 0x5A, 0xD6, - 0x75, 0xC7, 0x00, 0x8B, 0xE5, 0x7A, 0x34, 0x2A, 0x01, 0xD1, 0x18, 0xDD, 0x34, 0x5D, 0x8C, 0xD1, - 0x28, 0x39, 0x1E, 0x15, 0x2E, 0x70, 0x96, 0x65, 0x6D, 0x67, 0x7F, 0xF5, 0xE9, 0x6F, 0xD2, 0xF9, - 0x5D, 0x37, 0x8D, 0xD6, 0x3A, 0x33, 0x26, 0xF1, 0x25, 0x89, 0x44, 0x8C, 0x91, 0x88, 0x60, 0x98, - 0x1A, 0xD1, 0xF7, 0x3E, 0x7C, 0xF4, 0xE2, 0xD5, 0xB9, 0x73, 0x5E, 0x20, 0x59, 0x6B, 0x81, 0x51, - 0x6B, 0x35, 0x9D, 0x8C, 0x63, 0x8C, 0xCE, 0x3B, 0x1F, 0x02, 0x00, 0xC5, 0x10, 0x52, 0x19, 0x21, - 0x10, 0x39, 0x32, 0x09, 0x11, 0xBC, 0x27, 0x42, 0xA9, 0x34, 0x33, 0x58, 0x17, 0x8C, 0xA6, 0x24, - 0xD9, 0xC8, 0xC0, 0xDE, 0xC7, 0x54, 0x1E, 0x56, 0x65, 0x0E, 0xA9, 0x7F, 0x15, 0x7D, 0xE4, 0xD8, - 0xB6, 0x7D, 0x60, 0xF0, 0x21, 0x41, 0xA3, 0x61, 0xF8, 0x03, 0x38, 0x0C, 0xEC, 0x77, 0xF9, 0x41, - 0x00, 0x4E, 0xE8, 0x80, 0xD4, 0xF2, 0x4F, 0x8B, 0x2D, 0x59, 0x6A, 0xA5, 0x48, 0x97, 0xDC, 0xB5, - 0x88, 0x30, 0x04, 0x00, 0x14, 0x21, 0xB2, 0xF3, 0x51, 0x6B, 0x16, 0x8C, 0x44, 0xC2, 0xFB, 0x68, - 0x8C, 0x49, 0x2B, 0x5C, 0xEE, 0x6C, 0xB2, 0x2B, 0x25, 0x63, 0xA6, 0xB5, 0xD6, 0xD6, 0x07, 0xEB, - 0x9D, 0x73, 0x3E, 0xBD, 0xB6, 0x10, 0xA0, 0x95, 0xF4, 0x81, 0x8D, 0x51, 0x44, 0xC2, 0xF9, 0x90, - 0x1A, 0xC4, 0x44, 0x22, 0xC6, 0xC0, 0x0C, 0x59, 0xA6, 0x98, 0xC1, 0x7B, 0x46, 0x84, 0x10, 0xA3, - 0x94, 0x62, 0x9A, 0x55, 0x5D, 0xEF, 0xBA, 0xCE, 0xA2, 0x10, 0x46, 0x0A, 0x12, 0x22, 0xAD, 0x23, - 0xA3, 0x35, 0x33, 0x37, 0x4D, 0x57, 0x95, 0x59, 0xD7, 0xF7, 0x4A, 0x52, 0x55, 0xE4, 0x4A, 0x11, - 0x33, 0xAC, 0x37, 0x8D, 0x94, 0x32, 0xF8, 0x50, 0xD7, 0x6D, 0x95, 0x1B, 0xEF, 0xDC, 0x72, 0xB9, - 0xDA, 0x6E, 0xB7, 0xF3, 0xD9, 0xC4, 0xF6, 0x56, 0x30, 0x3B, 0x67, 0xAD, 0x22, 0xAD, 0xA4, 0xB7, - 0xAE, 0xB6, 0x2E, 0x46, 0xBE, 0x5E, 0xAE, 0xEF, 0x9D, 0x1C, 0x4D, 0xC6, 0xE5, 0xBE, 0xD6, 0xEE, - 0x9A, 0x2E, 0x26, 0x99, 0x4C, 0x00, 0x04, 0x90, 0x92, 0x7A, 0xE7, 0x30, 0x55, 0xA6, 0x31, 0xC6, - 0x18, 0x49, 0x88, 0x51, 0x59, 0x84, 0x18, 0x4E, 0xCF, 0xAE, 0xEA, 0xA6, 0x7D, 0xE7, 0xC1, 0xDD, - 0x94, 0x8D, 0x04, 0x1E, 0xB2, 0x86, 0xB4, 0x9D, 0x89, 0x92, 0x9C, 0x19, 0x8B, 0xD4, 0x16, 0x47, - 0x88, 0x91, 0x5D, 0x42, 0x3A, 0xC7, 0xDF, 0xC6, 0x81, 0xC2, 0x2E, 0x5E, 0x01, 0xC0, 0x30, 0x5E, - 0x8C, 0x03, 0x1C, 0x66, 0x60, 0x18, 0x70, 0x7A, 0x2E, 0x21, 0x62, 0xEA, 0xC2, 0x7A, 0xC8, 0x33, - 0x95, 0xD8, 0x88, 0xC9, 0x3C, 0x35, 0xB9, 0xA2, 0x21, 0xC2, 0xED, 0x01, 0xE5, 0x3F, 0xFC, 0xE0, - 0x9D, 0xA3, 0x84, 0x94, 0x6F, 0xE8, 0x44, 0xA9, 0xFF, 0x9D, 0xEA, 0x4D, 0xA5, 0xC8, 0x5A, 0xC7, - 0xCC, 0xD6, 0xF9, 0xCE, 0x3A, 0xEF, 0x23, 0x27, 0xD9, 0x5C, 0x48, 0xD4, 0xF1, 0xDB, 0x43, 0xC9, - 0xFD, 0x55, 0xA4, 0xC4, 0x71, 0xE0, 0x81, 0xFA, 0x1D, 0xB4, 0x35, 0x37, 0xDA, 0x68, 0x19, 0x99, - 0x63, 0x88, 0xD6, 0xF9, 0x28, 0x29, 0xE5, 0x92, 0xE9, 0xC9, 0x79, 0x30, 0x4C, 0x12, 0x00, 0x10, - 0x62, 0x14, 0x3B, 0x47, 0x38, 0x4E, 0xA5, 0x7E, 0x64, 0x66, 0x26, 0x46, 0x00, 0xB0, 0xCE, 0xF5, - 0xBD, 0xD7, 0x4A, 0xAE, 0xB7, 0xDD, 0xB8, 0xCA, 0x8A, 0x22, 0x5F, 0xAC, 0xB7, 0x91, 0x59, 0x29, - 0x59, 0xE5, 0xC6, 0x07, 0x5E, 0xD7, 0x1D, 0x03, 0x24, 0xBE, 0x05, 0x0B, 0x50, 0x42, 0x18, 0xAD, - 0x81, 0x59, 0x20, 0xF1, 0x4E, 0x6D, 0x06, 0x11, 0x22, 0xC4, 0x84, 0x59, 0x8B, 0x91, 0xDB, 0xB6, - 0x37, 0xC6, 0x10, 0x91, 0x1F, 0xB8, 0x35, 0x81, 0x88, 0xAC, 0x75, 0x92, 0xA8, 0xEB, 0xDD, 0xEB, - 0x8B, 0x45, 0x99, 0xEB, 0x22, 0xD3, 0x75, 0xA3, 0xD2, 0x24, 0x44, 0x30, 0x4B, 0xA5, 0x32, 0xA5, - 0xFF, 0xF1, 0x4F, 0xBF, 0xF7, 0xD5, 0xD3, 0xD7, 0x99, 0x31, 0xC7, 0x07, 0xE3, 0xCB, 0xEB, 0xED, - 0x27, 0x9F, 0x7C, 0x3C, 0x9F, 0x4D, 0xFA, 0xBE, 0x8D, 0x91, 0xA5, 0xD2, 0x99, 0xC0, 0x64, 0xEE, - 0x7B, 0xF6, 0xF8, 0xDB, 0x6F, 0x9E, 0xBD, 0xF6, 0x3E, 0x8E, 0x26, 0x63, 0x25, 0x65, 0xD3, 0xB6, - 0x65, 0xA5, 0xA5, 0x29, 0xB6, 0x4D, 0xAB, 0x94, 0x3E, 0x9A, 0x97, 0x1F, 0x3C, 0x7A, 0x6B, 0x3C, - 0x2A, 0x9F, 0xBF, 0x38, 0xED, 0xDA, 0xFE, 0xF9, 0xAB, 0x73, 0x04, 0xBC, 0x73, 0x30, 0xF5, 0xB6, - 0x37, 0xD3, 0x89, 0xED, 0xEC, 0xB6, 0xED, 0x97, 0xCB, 0xED, 0xC9, 0x49, 0x5E, 0x8D, 0xC6, 0x9D, - 0xF5, 0xE7, 0xE7, 0x97, 0x75, 0xDD, 0xF4, 0x5D, 0x77, 0xF7, 0xEE, 0xF1, 0xEB, 0xF3, 0x2B, 0x12, - 0xF4, 0xBD, 0x8F, 0xDF, 0x7B, 0xF2, 0xFC, 0xF5, 0x7B, 0x6F, 0xDF, 0xEB, 0x7B, 0x9B, 0xE7, 0x19, - 0x87, 0xE8, 0x43, 0x9C, 0x4D, 0x47, 0x5D, 0xEF, 0xB4, 0x56, 0xB3, 0x71, 0xE1, 0x43, 0xD4, 0x0A, - 0x97, 0x9B, 0x6E, 0xB1, 0xAE, 0xCB, 0x22, 0x9F, 0x4F, 0x47, 0x08, 0x68, 0xBD, 0x57, 0x92, 0xBE, - 0xFC, 0xFA, 0xE9, 0x74, 0x3A, 0x7E, 0xEF, 0x9D, 0xB7, 0xCE, 0xCE, 0xAF, 0x9E, 0x3E, 0x7B, 0xC1, - 0x91, 0x63, 0xE4, 0xAE, 0xED, 0xCB, 0x3C, 0x8F, 0x31, 0x00, 0x62, 0x8C, 0x60, 0x63, 0xD4, 0x02, - 0x89, 0xD9, 0x3B, 0x47, 0x44, 0x9B, 0x6D, 0xFD, 0xEA, 0xF4, 0xAC, 0x28, 0x0A, 0x00, 0xB0, 0xCE, - 0x87, 0x10, 0xB7, 0x75, 0x63, 0x9D, 0x17, 0x88, 0x45, 0x6E, 0x04, 0x0A, 0x17, 0xBC, 0x92, 0xB2, - 0xB7, 0xD6, 0x5B, 0xA7, 0x95, 0x70, 0x3E, 0x3A, 0xEF, 0x03, 0xD3, 0x38, 0xCB, 0xD3, 0xF4, 0xA0, - 0xEB, 0x2D, 0x21, 0x06, 0x8E, 0xCE, 0xDB, 0x22, 0xD3, 0x56, 0x80, 0xB3, 0x69, 0xDC, 0x11, 0x8A, - 0xDC, 0xB4, 0x1D, 0x33, 0x0A, 0xEF, 0xC2, 0x72, 0xBD, 0x4D, 0x39, 0xFE, 0xAE, 0xC3, 0x3D, 0x34, - 0xB9, 0x31, 0x22, 0x0B, 0xE6, 0x18, 0x71, 0xE8, 0xF6, 0x0E, 0xC8, 0x0C, 0x06, 0xA0, 0xE1, 0xE8, - 0x1F, 0x68, 0xC2, 0x79, 0x96, 0x01, 0x80, 0x73, 0x3E, 0xC4, 0x68, 0xB4, 0x2A, 0x72, 0xF2, 0x81, - 0x63, 0x8C, 0x99, 0xD1, 0x31, 0xC6, 0x28, 0xA0, 0x77, 0x7E, 0x8F, 0x90, 0x42, 0x4C, 0x28, 0xA8, - 0x30, 0x8C, 0xFC, 0x45, 0xC2, 0x1E, 0x3A, 0xA3, 0x54, 0x7E, 0x34, 0x4B, 0x07, 0x58, 0x8C, 0xD1, - 0x5A, 0x6B, 0xB2, 0x2C, 0x8B, 0xBA, 0x87, 0x04, 0xE5, 0xE5, 0x10, 0x22, 0x22, 0x44, 0x00, 0x21, - 0x50, 0x6B, 0xD9, 0x75, 0x0E, 0x87, 0x1E, 0xB3, 0x88, 0x81, 0x59, 0x70, 0x0C, 0x71, 0xDB, 0xB4, - 0x87, 0xD9, 0xC4, 0xA8, 0x21, 0xA1, 0x93, 0x89, 0x84, 0x17, 0x58, 0x10, 0x5D, 0x2E, 0x36, 0x31, - 0xF2, 0xC1, 0x74, 0xA4, 0x94, 0x52, 0x8A, 0x36, 0xDB, 0x76, 0xBD, 0xA9, 0xB3, 0xCC, 0x28, 0x25, - 0x25, 0x49, 0x00, 0x48, 0x7E, 0xA3, 0x07, 0xB3, 0x89, 0x96, 0x42, 0x11, 0x52, 0xA6, 0x57, 0x9B, - 0x7A, 0xB3, 0xA9, 0x67, 0xE3, 0x92, 0x08, 0x9D, 0x75, 0x4D, 0x67, 0x37, 0xDB, 0xFA, 0xF4, 0x35, - 0x28, 0x49, 0x24, 0x89, 0x48, 0x38, 0xEB, 0xCF, 0x2F, 0x6F, 0x6E, 0x16, 0xEB, 0x3B, 0xC7, 0xF3, - 0x32, 0xCF, 0x8C, 0x56, 0x29, 0x85, 0x8C, 0x21, 0x18, 0x2D, 0x81, 0x21, 0xCB, 0x74, 0x6F, 0x5D, - 0x5D, 0xB7, 0x52, 0xC9, 0xF1, 0xA8, 0x5A, 0xAF, 0xEB, 0xD7, 0x67, 0xD7, 0xB3, 0xF9, 0x44, 0x92, - 0xA0, 0x37, 0xA9, 0xC9, 0x90, 0x91, 0x08, 0x44, 0x42, 0x91, 0x80, 0xE5, 0x09, 0xFE, 0x2A, 0x52, - 0xC6, 0xB4, 0x03, 0x6C, 0xC5, 0x5B, 0x56, 0xD9, 0xC3, 0x50, 0x00, 0x40, 0xEE, 0xA3, 0x4C, 0xFA, - 0x81, 0x40, 0x91, 0xB2, 0x13, 0xA3, 0xA4, 0x0F, 0x91, 0xE3, 0xC0, 0xC9, 0x94, 0x34, 0x50, 0x4F, - 0xA5, 0xA4, 0x84, 0x03, 0x90, 0x92, 0x12, 0xD2, 0x62, 0x9F, 0x28, 0xFD, 0x6E, 0xE4, 0xBA, 0x9D, - 0x88, 0xE1, 0x2E, 0x5E, 0xEC, 0xB9, 0x47, 0xFB, 0xEC, 0x29, 0xA1, 0xDA, 0x88, 0xC8, 0x18, 0x95, - 0xFA, 0x65, 0x00, 0x4E, 0x08, 0x88, 0x01, 0x77, 0xBE, 0x45, 0xC0, 0x1C, 0x71, 0xD0, 0xE0, 0x18, - 0x5A, 0x73, 0xCC, 0x69, 0x55, 0x0C, 0x36, 0xF7, 0x98, 0xC4, 0x0C, 0x87, 0x7E, 0x0D, 0xF7, 0xBD, - 0xE3, 0x9D, 0xAA, 0x7A, 0xF2, 0x58, 0x14, 0x28, 0x50, 0x88, 0x10, 0x62, 0xE0, 0xB0, 0x47, 0xD9, - 0x25, 0x7D, 0xF7, 0x74, 0xED, 0x49, 0xA9, 0x4E, 0x08, 0xDC, 0x8B, 0x11, 0x49, 0x29, 0xA7, 0x93, - 0x92, 0xBC, 0xAA, 0x5B, 0xAB, 0x95, 0x4C, 0x79, 0x72, 0x9E, 0xE9, 0x10, 0xE2, 0x9D, 0x83, 0xCA, - 0x3A, 0x3E, 0x3D, 0xBF, 0x89, 0x1C, 0xB5, 0xD4, 0x4A, 0x2B, 0x44, 0x0C, 0x43, 0xA3, 0x2D, 0x38, - 0xEF, 0x77, 0x89, 0x64, 0x48, 0xFD, 0xCE, 0x84, 0x51, 0x9A, 0x4E, 0x46, 0x21, 0x06, 0x66, 0xEC, - 0x9D, 0x43, 0x10, 0x24, 0x41, 0x4A, 0x31, 0x2A, 0x4B, 0xE7, 0x5C, 0xDB, 0x59, 0x44, 0x40, 0x21, - 0x94, 0x56, 0x7D, 0xEF, 0xB4, 0x92, 0xA9, 0xDB, 0x1D, 0x22, 0x0B, 0x41, 0xEF, 0x3E, 0x3A, 0x59, - 0x6D, 0xB6, 0xBF, 0xFA, 0xFC, 0xD9, 0x8F, 0x3E, 0x79, 0x3F, 0x2F, 0xCB, 0xF3, 0xAB, 0xF5, 0xC1, - 0x6C, 0xE4, 0xBD, 0x57, 0x5A, 0x93, 0x54, 0xC9, 0x0E, 0x15, 0x09, 0x9D, 0xB3, 0xB3, 0xD9, 0xB4, - 0x1C, 0x8F, 0xCE, 0xCF, 0xAF, 0x19, 0x71, 0x36, 0x9D, 0xDC, 0xBB, 0x7F, 0x92, 0x65, 0x99, 0x75, - 0xA1, 0x73, 0x7E, 0x32, 0x2A, 0xEE, 0xDF, 0x39, 0x70, 0xCE, 0x5D, 0x5E, 0x5E, 0x5F, 0x9C, 0x5F, - 0x45, 0x14, 0xC1, 0xBA, 0x0F, 0xDE, 0x7F, 0x90, 0x67, 0x19, 0x12, 0x5D, 0xAF, 0x9A, 0x2F, 0xBE, - 0x7A, 0xFA, 0xE9, 0xE7, 0xDF, 0xBC, 0xF7, 0xFE, 0xBB, 0x6D, 0xEF, 0xB4, 0x31, 0xE3, 0xF1, 0xE8, - 0xE2, 0xEA, 0x7A, 0xBB, 0x69, 0xFA, 0xDE, 0x5E, 0xDD, 0x2C, 0xF3, 0x3C, 0xFF, 0xFA, 0x9B, 0x67, - 0xDF, 0x7E, 0xFB, 0x7C, 0x7E, 0x70, 0x30, 0x9D, 0x8C, 0xE7, 0xD3, 0x2A, 0x86, 0xD0, 0x34, 0x5D, - 0x88, 0xF1, 0x60, 0x3E, 0xD1, 0x8A, 0x48, 0x88, 0xF1, 0xA8, 0xE8, 0x7B, 0x0F, 0x0C, 0x89, 0x74, - 0xC9, 0xCC, 0xD7, 0x37, 0xAB, 0xA3, 0x83, 0x89, 0x56, 0x12, 0x01, 0x1E, 0xBD, 0x7D, 0xFF, 0xB3, - 0x2F, 0x9F, 0x20, 0xD2, 0x5B, 0x6F, 0xDD, 0x73, 0xCE, 0x3D, 0x79, 0xF2, 0x5C, 0x4A, 0x0A, 0x3E, - 0x44, 0x8E, 0x4A, 0x49, 0xDF, 0xBA, 0xC0, 0x4C, 0x02, 0x42, 0x04, 0x21, 0x44, 0x5D, 0xD7, 0x9B, - 0x6D, 0x71, 0x75, 0x75, 0x53, 0x37, 0x2D, 0xA2, 0x48, 0xA8, 0x05, 0x60, 0xEE, 0x7A, 0xAB, 0xB5, - 0xCA, 0xB4, 0x0E, 0x31, 0x64, 0x5A, 0xA3, 0x10, 0x6D, 0xDB, 0x49, 0x22, 0x95, 0x53, 0x5D, 0xD7, - 0x89, 0x24, 0x9E, 0x44, 0x47, 0xA5, 0x44, 0x29, 0x65, 0x86, 0x00, 0x0C, 0xB9, 0xCE, 0x44, 0x6F, - 0x95, 0x92, 0x05, 0x8A, 0xAE, 0x5B, 0x27, 0x0B, 0xF7, 0x18, 0x43, 0x59, 0x14, 0xD6, 0xBA, 0xBE, - 0xEF, 0xB7, 0x75, 0x3B, 0xD0, 0xFE, 0x86, 0x4D, 0x32, 0x80, 0x78, 0x10, 0x19, 0x19, 0x41, 0xA0, - 0xC0, 0x41, 0x34, 0x86, 0x87, 0xC6, 0x03, 0x84, 0xF4, 0x95, 0xC1, 0xBF, 0x69, 0x89, 0xC4, 0x10, - 0x91, 0x19, 0xBA, 0xCE, 0x09, 0x81, 0x49, 0x8A, 0x23, 0x29, 0x68, 0x62, 0x9A, 0x73, 0x0E, 0xE8, - 0x22, 0x90, 0x52, 0xA4, 0x34, 0xA3, 0xEF, 0xDD, 0x68, 0x54, 0xF9, 0x10, 0x4E, 0xCF, 0xAF, 0x05, - 0x89, 0xE3, 0xC3, 0xC9, 0x7A, 0x53, 0x9B, 0x22, 0x4B, 0x3C, 0x1C, 0xA5, 0x14, 0x09, 0xA1, 0x88, - 0x96, 0x5D, 0xEF, 0x5C, 0x30, 0x46, 0x4B, 0x99, 0x04, 0x03, 0xC1, 0x18, 0x09, 0xCC, 0x02, 0x41, - 0x1B, 0x19, 0x95, 0x70, 0x3E, 0x30, 0x0F, 0x40, 0x6B, 0x25, 0x09, 0x99, 0x01, 0x58, 0x91, 0x70, - 0x8E, 0x43, 0x08, 0x69, 0x44, 0xE6, 0x7C, 0x18, 0x55, 0x85, 0x24, 0x2A, 0x32, 0x2D, 0x84, 0x68, - 0x5A, 0xAB, 0xB5, 0xFA, 0xE0, 0xDD, 0xB7, 0x4E, 0xCF, 0xAE, 0x25, 0x49, 0x12, 0x58, 0x37, 0x2D, - 0x00, 0x1F, 0x4C, 0xC7, 0x6F, 0x9D, 0x1C, 0xCE, 0x27, 0xE5, 0x0E, 0x74, 0x89, 0x08, 0x68, 0xAD, - 0xED, 0x7B, 0xDB, 0xF5, 0x7D, 0xDB, 0x74, 0x1C, 0x63, 0xDD, 0x34, 0xAB, 0xF5, 0x96, 0x01, 0x42, - 0x88, 0x99, 0xD1, 0xD6, 0xB9, 0x6D, 0xDD, 0xF4, 0x2F, 0xFA, 0x49, 0x55, 0x76, 0xCE, 0x36, 0x75, - 0x2B, 0x84, 0x38, 0x98, 0x4F, 0xF4, 0x6C, 0x52, 0x14, 0xC6, 0x18, 0x43, 0x52, 0x19, 0x63, 0x96, - 0xAB, 0xF5, 0x72, 0xB5, 0xAE, 0xCA, 0xE2, 0xE9, 0x8B, 0xD3, 0xF3, 0xAB, 0x9B, 0x9F, 0xFE, 0xE8, - 0x83, 0x4C, 0xAB, 0xAE, 0x73, 0xB0, 0xAB, 0xA8, 0xF6, 0x51, 0xC3, 0x87, 0x18, 0x22, 0x87, 0x10, - 0x94, 0x92, 0xE9, 0x76, 0x87, 0x18, 0x15, 0x51, 0xDA, 0x59, 0xB8, 0x63, 0x79, 0xEF, 0x7A, 0x8D, - 0x7D, 0x23, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1F, 0xF4, 0xC7, 0xFF, 0xF2, 0x5F, - 0xA7, 0x6D, 0x4C, 0x98, 0xAA, 0x56, 0x56, 0x4A, 0x66, 0x8A, 0xD2, 0x73, 0x95, 0xB9, 0x2E, 0x32, - 0x93, 0x9A, 0xD0, 0x65, 0x9E, 0x25, 0x52, 0x18, 0xA7, 0x0E, 0xC5, 0x3F, 0xE8, 0x9B, 0xFB, 0x26, - 0x65, 0x7A, 0x13, 0x6B, 0x93, 0x9F, 0xE3, 0x1B, 0xFA, 0x37, 0xEE, 0xC0, 0x10, 0x62, 0x47, 0x0B, - 0xDF, 0xC1, 0xA6, 0x12, 0xC9, 0x3C, 0x32, 0x60, 0x64, 0x0E, 0x71, 0x98, 0x3A, 0xA6, 0x64, 0x5F, - 0xD0, 0xED, 0xB8, 0xF9, 0x46, 0x98, 0x38, 0xEC, 0x18, 0xE0, 0xFB, 0xA0, 0xE9, 0x63, 0x4C, 0xC3, - 0x41, 0x66, 0x48, 0xD0, 0xC7, 0x84, 0x36, 0x8A, 0xBB, 0x5B, 0x96, 0xF2, 0xB2, 0x74, 0x53, 0xCA, - 0x32, 0x2B, 0xF2, 0x2C, 0xB1, 0xD9, 0x73, 0x93, 0x29, 0x29, 0x95, 0x92, 0x21, 0x84, 0xB3, 0xD3, - 0x57, 0x8B, 0xE5, 0x56, 0x6B, 0x7A, 0xEB, 0xEE, 0x61, 0xD2, 0x57, 0x28, 0xF2, 0xAC, 0xAE, 0x9B, - 0x83, 0xD9, 0xC8, 0xB9, 0xF0, 0xF2, 0x6C, 0x41, 0x52, 0x11, 0x09, 0x40, 0x10, 0x29, 0x59, 0x4D, - 0xC6, 0x8E, 0xCE, 0xA7, 0xF0, 0x1D, 0x42, 0x88, 0x81, 0x95, 0x92, 0x28, 0x90, 0x48, 0x8C, 0x46, - 0xE5, 0xD1, 0xC1, 0x8C, 0x39, 0x5A, 0xE7, 0x13, 0x98, 0x28, 0xCF, 0x4C, 0x6E, 0xB4, 0x52, 0xD2, - 0x87, 0x60, 0x94, 0xF4, 0xDE, 0x27, 0xCA, 0x7D, 0x6F, 0x5D, 0x08, 0x21, 0xB9, 0x94, 0xFB, 0x10, - 0xFE, 0xC9, 0x3F, 0xFA, 0xF8, 0xE5, 0x8B, 0xB3, 0x71, 0x55, 0x3D, 0x7C, 0xE7, 0xA1, 0x8F, 0x80, - 0x00, 0x99, 0xD1, 0x29, 0x57, 0x1D, 0x8F, 0x4A, 0x52, 0x12, 0x00, 0x63, 0x0C, 0xC0, 0x6C, 0x5D, - 0xB0, 0x1E, 0xB4, 0xD6, 0x99, 0xD1, 0xF7, 0xEF, 0x9F, 0x8C, 0xC7, 0xD5, 0x64, 0x32, 0xCA, 0x8C, - 0x3A, 0x9A, 0x8D, 0x8E, 0x0F, 0xA6, 0x6D, 0xD3, 0x9E, 0x9F, 0x5F, 0x6C, 0xEB, 0x2E, 0xFA, 0x90, - 0x67, 0xEA, 0xC3, 0x0F, 0xDF, 0xB9, 0x77, 0x72, 0x54, 0x37, 0xAD, 0xF5, 0xF1, 0xC5, 0xE9, 0xE5, - 0xE9, 0xD9, 0x75, 0xDB, 0xBB, 0x7A, 0x5B, 0x87, 0xE0, 0x67, 0xF3, 0x59, 0x9E, 0x67, 0x45, 0x55, - 0xDD, 0x2C, 0x16, 0x27, 0x77, 0xEF, 0x64, 0x79, 0x76, 0x38, 0x1D, 0x49, 0x29, 0xCF, 0xCF, 0xAF, - 0xBE, 0x7D, 0xF6, 0xAD, 0x31, 0xFA, 0xE8, 0xE8, 0x50, 0x92, 0x40, 0x14, 0x5D, 0xDF, 0x93, 0xA0, - 0x2C, 0x33, 0xB9, 0x96, 0x09, 0x89, 0x93, 0xC4, 0x82, 0x52, 0xB9, 0x7D, 0x38, 0x9F, 0x08, 0x21, - 0x24, 0xA1, 0xB3, 0x36, 0x30, 0x5E, 0x5D, 0xAF, 0xBE, 0x7D, 0xF1, 0xFA, 0x60, 0x3E, 0x45, 0x41, - 0xAF, 0x5E, 0x9D, 0xED, 0x61, 0x2E, 0x90, 0x08, 0x3B, 0xCC, 0x02, 0x61, 0x36, 0x9B, 0xE6, 0x79, - 0xD6, 0x76, 0x1D, 0x33, 0x34, 0x4D, 0xBB, 0xAD, 0x9B, 0x74, 0xD6, 0x24, 0xAD, 0x0B, 0x39, 0x38, - 0x5A, 0x06, 0x8E, 0x03, 0x06, 0xAD, 0xB7, 0xCE, 0x79, 0x07, 0x0C, 0x49, 0x4A, 0x68, 0x38, 0xA5, - 0x79, 0xE8, 0x73, 0x07, 0x1F, 0x26, 0x93, 0xD1, 0xC1, 0x6C, 0x92, 0x50, 0xDF, 0x75, 0xD3, 0x05, - 0xE6, 0x18, 0xB9, 0x2A, 0x32, 0xEF, 0x63, 0x66, 0x94, 0x40, 0x6C, 0xDA, 0x2E, 0xCF, 0xCD, 0x87, - 0xEF, 0xBE, 0x1D, 0xDE, 0x94, 0x96, 0xB8, 0x13, 0x8C, 0xDF, 0xAD, 0x68, 0xC0, 0x08, 0xC8, 0x3B, - 0x0E, 0xD3, 0xF0, 0x35, 0x82, 0x94, 0x74, 0x79, 0xB3, 0xFE, 0xE2, 0xEB, 0xE7, 0xC1, 0x07, 0x04, - 0x10, 0x02, 0x7D, 0x82, 0x4D, 0x01, 0x0B, 0x1C, 0x0A, 0x91, 0x18, 0x82, 0x52, 0x94, 0xF2, 0xA3, - 0x34, 0x37, 0x60, 0xE6, 0x64, 0x11, 0x87, 0x02, 0x5D, 0x88, 0x9B, 0xBA, 0xED, 0x7A, 0xAB, 0xA5, - 0x14, 0x42, 0x38, 0xE7, 0xF3, 0x64, 0x17, 0x8F, 0x40, 0x34, 0x28, 0xAF, 0x58, 0xE7, 0xD3, 0x99, - 0x6D, 0x8C, 0x16, 0x44, 0xCE, 0xFB, 0x3C, 0x33, 0x89, 0xCB, 0xAD, 0x95, 0x14, 0x00, 0x4A, 0xCA, - 0x18, 0xA3, 0xF5, 0x1E, 0x00, 0xBA, 0xDE, 0xA6, 0x5E, 0xB0, 0x0F, 0xA1, 0x69, 0x7B, 0x67, 0x5D, - 0x92, 0xC3, 0xAE, 0x9B, 0x0E, 0x11, 0xA6, 0x93, 0x32, 0x25, 0x22, 0x7A, 0x70, 0x66, 0xA0, 0x84, - 0xC2, 0x9D, 0x8C, 0x4B, 0x25, 0xA9, 0xC8, 0xB3, 0xC3, 0xF9, 0x64, 0x3E, 0x1D, 0x69, 0x25, 0x63, - 0x88, 0xE9, 0x25, 0x52, 0x7C, 0xDC, 0x6C, 0xDB, 0xB6, 0xB3, 0x9B, 0xBA, 0x41, 0xC0, 0xB2, 0xC8, - 0x17, 0xCB, 0xF5, 0x72, 0xB5, 0x79, 0xFA, 0xFC, 0xD5, 0x72, 0xB5, 0x49, 0xFE, 0x81, 0x09, 0x13, - 0x73, 0x76, 0x71, 0x8D, 0x00, 0x47, 0x07, 0xB3, 0x2C, 0x37, 0x79, 0x9E, 0xA7, 0x04, 0xA9, 0xEB, - 0xFB, 0xBE, 0x77, 0xE3, 0x51, 0xA5, 0x95, 0x0A, 0x31, 0x94, 0x79, 0xB1, 0x6D, 0xDA, 0xC7, 0xDF, - 0x9E, 0x1E, 0x1F, 0x4C, 0x66, 0x93, 0xCA, 0x7B, 0x8F, 0x30, 0x20, 0x55, 0x53, 0x11, 0xE3, 0x7C, - 0x00, 0x80, 0x2C, 0xD3, 0x4F, 0x9F, 0xBF, 0x66, 0x06, 0x04, 0xCE, 0x8C, 0x3E, 0x3D, 0xBF, 0xCC, - 0x8C, 0x96, 0x52, 0x0E, 0x0C, 0x81, 0x5B, 0x31, 0x46, 0xEE, 0x74, 0x55, 0x07, 0x94, 0x96, 0x94, - 0x54, 0x64, 0x9A, 0x99, 0x83, 0x75, 0x65, 0xA6, 0x8B, 0xDC, 0x58, 0x17, 0x92, 0x22, 0x02, 0x20, - 0xF0, 0x80, 0x01, 0x79, 0x13, 0xBF, 0xFE, 0x53, 0x75, 0xE5, 0xED, 0xEF, 0xE3, 0x2D, 0xC1, 0x9C, - 0x7D, 0x13, 0x6A, 0xFF, 0x0B, 0xFB, 0x18, 0xB7, 0xCF, 0x1B, 0x53, 0xC6, 0x87, 0x08, 0xCE, 0x47, - 0xDC, 0x01, 0x3A, 0xC4, 0x20, 0x03, 0xBB, 0xCF, 0x25, 0xF7, 0xE1, 0x12, 0x93, 0x38, 0xD1, 0x2E, - 0x35, 0xE3, 0x34, 0x25, 0xF7, 0x3B, 0xF0, 0x5A, 0xCA, 0xFA, 0x52, 0x76, 0x16, 0xE3, 0x30, 0x2B, - 0x51, 0x03, 0xF1, 0x3E, 0x75, 0xFA, 0xB0, 0x2A, 0xB3, 0xCC, 0x68, 0x60, 0xC8, 0xB4, 0xDE, 0xCF, - 0x1F, 0x88, 0x10, 0x20, 0x5E, 0x2D, 0x36, 0xD6, 0x3A, 0xA3, 0x24, 0x00, 0x76, 0xD6, 0xA3, 0x10, - 0x4D, 0xDB, 0x75, 0xBD, 0x33, 0xDA, 0xF5, 0xD6, 0x91, 0x90, 0x20, 0x52, 0x7F, 0x7A, 0xA7, 0xF1, - 0x9D, 0xA8, 0xE3, 0x00, 0x88, 0x14, 0x42, 0x4C, 0xA7, 0xA8, 0x90, 0x34, 0x1F, 0x8F, 0x67, 0xD3, - 0xB1, 0x94, 0x84, 0x80, 0x8B, 0xC8, 0x92, 0x84, 0x54, 0x94, 0x69, 0x65, 0xB4, 0x3A, 0x98, 0x8F, - 0x97, 0xEB, 0xED, 0x7C, 0x32, 0xB2, 0xCE, 0x0B, 0x12, 0x5D, 0xEF, 0xCA, 0xBC, 0x50, 0x52, 0xD4, - 0x4D, 0xB7, 0xDA, 0xB4, 0x4D, 0x6B, 0xDF, 0xBA, 0x3B, 0x3F, 0x9E, 0x8F, 0x32, 0x65, 0x5C, 0x84, - 0xE5, 0xB6, 0x35, 0x8A, 0xBA, 0xAE, 0xD3, 0x5A, 0x1A, 0xA3, 0x8C, 0x56, 0x24, 0x44, 0x4A, 0x62, - 0x51, 0x08, 0x08, 0xEC, 0x43, 0xD4, 0x12, 0x0F, 0xA6, 0x55, 0xDB, 0xF5, 0xCE, 0xD9, 0x83, 0xD9, - 0x68, 0x54, 0x1A, 0x2E, 0xA4, 0xED, 0xAD, 0x14, 0xEC, 0x6C, 0xAF, 0xA4, 0x3C, 0x3A, 0x2C, 0x9A, - 0x6D, 0xF3, 0xF0, 0xC1, 0xC9, 0x64, 0x3A, 0xAE, 0x9B, 0x6E, 0xB1, 0xDA, 0x3C, 0xF9, 0xF6, 0xB5, - 0x32, 0xD9, 0xFB, 0xEF, 0xBD, 0xBD, 0x5C, 0xAD, 0xA2, 0xF7, 0x1C, 0xE3, 0xC5, 0xF9, 0xE5, 0xB6, - 0x69, 0x7A, 0x6B, 0x11, 0xE9, 0xF1, 0x93, 0xE7, 0x1F, 0x7F, 0xF8, 0xAE, 0x94, 0xB2, 0x2A, 0x8B, - 0xE3, 0x3B, 0x47, 0x52, 0xC9, 0x2F, 0xBF, 0xF8, 0xCD, 0x7C, 0x36, 0xFE, 0xDE, 0x47, 0xEF, 0x97, - 0x85, 0xD2, 0x5A, 0xD5, 0x4D, 0x2B, 0x3B, 0xAB, 0x09, 0x99, 0xA3, 0x96, 0xC2, 0xE8, 0x04, 0x6F, - 0x06, 0xA3, 0x24, 0x49, 0x4A, 0xC4, 0x46, 0x41, 0x74, 0x76, 0x7E, 0x19, 0x63, 0xFC, 0xFE, 0xC7, - 0xEF, 0xFE, 0xFA, 0xF3, 0x6F, 0x8E, 0x0E, 0x0F, 0x66, 0xD3, 0xC9, 0x6A, 0xB5, 0xDE, 0x71, 0xC8, - 0x28, 0x06, 0x4E, 0x20, 0x32, 0x66, 0x1E, 0xFC, 0xE8, 0xAC, 0xB5, 0xD6, 0x19, 0xAD, 0x9D, 0x0F, - 0x0A, 0xE5, 0x6E, 0x4E, 0x02, 0x30, 0x48, 0xC4, 0x30, 0x00, 0x38, 0x6B, 0x67, 0x93, 0xAA, 0xED, - 0x6C, 0xDB, 0x76, 0x42, 0x08, 0x49, 0x14, 0x39, 0x48, 0x29, 0x23, 0x73, 0xD3, 0xF6, 0x99, 0xD1, - 0x4A, 0xC9, 0xB6, 0x69, 0x17, 0xCB, 0xA5, 0x24, 0x4A, 0x16, 0x73, 0x2A, 0x50, 0xD3, 0xF6, 0xD6, - 0x3A, 0x00, 0xEE, 0x7B, 0x2B, 0x10, 0x94, 0x94, 0xEB, 0x75, 0xDD, 0xD9, 0x9E, 0x04, 0x31, 0x47, - 0x66, 0x04, 0xC0, 0x08, 0x91, 0x93, 0xD2, 0x1D, 0x43, 0x8C, 0x20, 0x76, 0xC8, 0xB1, 0x37, 0xD0, - 0xE9, 0x01, 0xA9, 0x03, 0x6D, 0xDB, 0x5B, 0xE7, 0xB3, 0xCC, 0x24, 0x1A, 0x89, 0xF3, 0x31, 0xAF, - 0x4C, 0xE4, 0xB8, 0x6D, 0xBA, 0xC9, 0xA8, 0x90, 0x24, 0x2C, 0x40, 0x8C, 0x51, 0x08, 0x42, 0x14, - 0xCE, 0x05, 0xA2, 0x61, 0xAD, 0x6A, 0x2D, 0xB5, 0x92, 0x8B, 0x75, 0xD3, 0x75, 0x7D, 0x9E, 0x9B, - 0x10, 0x83, 0xB5, 0xDE, 0xF9, 0x90, 0x90, 0x6A, 0x4D, 0xDB, 0x07, 0x1F, 0x4C, 0x96, 0x39, 0xE7, - 0x8C, 0x56, 0xFB, 0x95, 0xEF, 0x9C, 0x27, 0x49, 0x52, 0xCA, 0x10, 0x62, 0xCA, 0xF3, 0x10, 0xD1, - 0xA6, 0x8E, 0x21, 0x0F, 0xB6, 0xAD, 0x9D, 0xF5, 0x9B, 0xBA, 0x4D, 0x38, 0x6D, 0xE7, 0x93, 0xA0, - 0x51, 0x8D, 0x28, 0x94, 0x94, 0x00, 0x50, 0xE6, 0x06, 0x52, 0x11, 0x93, 0x9B, 0xB6, 0xEB, 0x95, - 0xA4, 0xD9, 0x64, 0x5C, 0xE4, 0xA6, 0x2C, 0xB2, 0xF9, 0x74, 0x94, 0x52, 0x94, 0x10, 0x62, 0xEF, - 0x5D, 0x32, 0x0C, 0xB7, 0x2E, 0xF8, 0x10, 0x9C, 0xF3, 0x6D, 0xD7, 0x3B, 0xE7, 0xF3, 0xCC, 0x08, - 0x04, 0xEF, 0x7C, 0xC2, 0x7C, 0xAC, 0xD7, 0x5B, 0x1F, 0x62, 0xDF, 0xF7, 0x26, 0x33, 0x79, 0x66, - 0x24, 0x51, 0x64, 0xD8, 0x36, 0x0D, 0x23, 0x77, 0x9D, 0x05, 0x80, 0xA2, 0xC8, 0xAF, 0x6F, 0x96, - 0x00, 0x7C, 0xEF, 0xE4, 0x28, 0xC6, 0x20, 0xA5, 0xEC, 0xBA, 0x8D, 0x0F, 0xB1, 0xAA, 0xCA, 0x5F, - 0x7F, 0xF9, 0xFC, 0xFD, 0x77, 0x4E, 0xEE, 0x1D, 0xCD, 0xE2, 0x0E, 0x4B, 0xDF, 0xF7, 0xD6, 0x79, - 0x9F, 0xDE, 0xE7, 0xD3, 0x6F, 0x4F, 0xFF, 0xE7, 0xFF, 0xE5, 0x7F, 0x3D, 0x38, 0x98, 0x7E, 0xFC, - 0xFE, 0xDB, 0x79, 0xA6, 0xFF, 0xFD, 0x2F, 0x7E, 0xF3, 0xF3, 0x3F, 0xF8, 0xE4, 0x0F, 0x7F, 0xFE, - 0x43, 0x20, 0x8C, 0x21, 0xF8, 0xC0, 0xB8, 0x43, 0x89, 0xD1, 0x9F, 0xFC, 0xE9, 0xBF, 0x4E, 0x00, - 0x3F, 0x22, 0xD4, 0x5A, 0xE6, 0x46, 0x33, 0x73, 0x62, 0x38, 0x67, 0x46, 0x25, 0xA5, 0x07, 0xAD, - 0x08, 0x60, 0x40, 0x39, 0xEF, 0x0C, 0xEE, 0xF1, 0x1F, 0x48, 0xC7, 0xFE, 0x81, 0xB8, 0xF6, 0x5B, - 0xD5, 0x25, 0x0E, 0x13, 0xD7, 0xFD, 0x23, 0x32, 0x43, 0x5A, 0x47, 0x42, 0x88, 0xC0, 0x91, 0x23, - 0x0B, 0xC4, 0x14, 0xE9, 0xF7, 0x20, 0xAF, 0xFD, 0x11, 0xB9, 0xB7, 0x57, 0xB9, 0xDD, 0x74, 0xDB, - 0xE7, 0x9C, 0x29, 0xA8, 0xA5, 0x77, 0x59, 0x64, 0x3A, 0x4B, 0x98, 0xAF, 0x5D, 0x15, 0x20, 0x10, - 0x95, 0x22, 0x25, 0xA9, 0x2A, 0xF3, 0x3C, 0xCF, 0x08, 0x13, 0x2C, 0x36, 0x9D, 0x09, 0x11, 0x05, - 0xA7, 0x5A, 0xF5, 0xF2, 0xF5, 0x59, 0x61, 0x54, 0x88, 0xA0, 0x94, 0xA8, 0x3B, 0xE7, 0x7D, 0x28, - 0x8C, 0x12, 0x00, 0x92, 0x84, 0xB5, 0xE1, 0x7A, 0xD9, 0x20, 0x82, 0x20, 0xD4, 0x5A, 0xED, 0x84, - 0x24, 0x87, 0xBE, 0x5B, 0x42, 0xD6, 0x84, 0xC8, 0x4A, 0xC9, 0xBB, 0x77, 0x0E, 0xC6, 0xA3, 0xF2, - 0xEE, 0x9D, 0x03, 0xAD, 0x65, 0x9A, 0xFE, 0xE4, 0x99, 0x39, 0x3E, 0x98, 0xDE, 0xBF, 0x7B, 0x14, - 0x42, 0x38, 0x3E, 0x9C, 0x3F, 0x7C, 0xEB, 0x4E, 0x66, 0x94, 0x56, 0xF2, 0x60, 0x3A, 0x7E, 0xFB, - 0xC1, 0xC9, 0x74, 0x54, 0x68, 0x25, 0xAD, 0xF3, 0x6D, 0xE7, 0x24, 0xC1, 0x7F, 0xFF, 0xCF, 0x7E, - 0x3A, 0x9B, 0x1F, 0x90, 0xD2, 0x9E, 0x31, 0x37, 0xAA, 0xEB, 0xDA, 0x22, 0xD3, 0x99, 0xD6, 0x00, - 0x3C, 0x9F, 0x8D, 0xB3, 0xDC, 0x30, 0xC7, 0x10, 0x7C, 0x32, 0xC9, 0xF2, 0xDE, 0x73, 0x88, 0xA3, - 0xB2, 0x28, 0x8A, 0x2C, 0x33, 0x7A, 0x5C, 0x16, 0xA3, 0x51, 0x51, 0x55, 0x65, 0x35, 0x2A, 0x95, - 0xA4, 0xA6, 0x6E, 0xA5, 0x92, 0x46, 0xEB, 0xF1, 0xB8, 0x1C, 0x4F, 0xC6, 0xD6, 0xDA, 0xEB, 0xAB, - 0x05, 0x91, 0xB4, 0x2E, 0xE4, 0x79, 0x71, 0x78, 0x38, 0x3D, 0x3E, 0x9C, 0x8D, 0xC7, 0x63, 0x1F, - 0x42, 0xDD, 0x34, 0x8C, 0x80, 0x20, 0x46, 0xA3, 0xF2, 0xC5, 0x8B, 0x57, 0x00, 0x58, 0x56, 0xE5, - 0x62, 0xB9, 0xFE, 0xE6, 0xF1, 0xD3, 0xE7, 0x2F, 0x5E, 0xE5, 0x5A, 0xA1, 0xA0, 0xF1, 0x74, 0x7A, - 0x7E, 0x79, 0x3D, 0x9B, 0x8E, 0x00, 0x61, 0xBB, 0x6D, 0x26, 0x55, 0x01, 0x00, 0x75, 0xDB, 0xC7, - 0xC8, 0x92, 0x84, 0x56, 0x54, 0x37, 0x4D, 0xD7, 0xBB, 0xB2, 0xC8, 0x90, 0xE3, 0xE5, 0xE5, 0x4D, - 0xEF, 0xC2, 0x64, 0x32, 0xCA, 0xB2, 0xEC, 0xF4, 0xF4, 0x3C, 0x95, 0x24, 0xAB, 0xD5, 0xDA, 0xF9, - 0xA0, 0xB5, 0x02, 0xC6, 0xDE, 0x39, 0xB9, 0x23, 0xD5, 0xEB, 0x81, 0x99, 0x14, 0x84, 0x10, 0x29, - 0x21, 0x27, 0xA2, 0xE4, 0x9F, 0xC8, 0x10, 0x13, 0x8D, 0x24, 0xA1, 0x2B, 0x01, 0xC0, 0x87, 0x38, - 0x74, 0x3C, 0x43, 0x60, 0x8E, 0x82, 0x84, 0xF3, 0x5E, 0x25, 0xA2, 0x2B, 0x09, 0xAD, 0x65, 0x1A, - 0x0A, 0x27, 0x88, 0x8F, 0xD6, 0x9A, 0x99, 0x77, 0x13, 0x3D, 0x12, 0x02, 0x49, 0x50, 0x08, 0xC1, - 0xF9, 0xF0, 0xFE, 0x7B, 0x0F, 0xF3, 0xDC, 0x84, 0xC0, 0x8C, 0x03, 0xB9, 0x05, 0x6E, 0xA3, 0x23, - 0x77, 0xE8, 0x80, 0x1D, 0x42, 0x7D, 0x58, 0x84, 0x4A, 0xAB, 0x17, 0xAF, 0xCE, 0x9F, 0x3E, 0x7F, - 0xAD, 0xA4, 0x4C, 0xA3, 0x74, 0x14, 0x98, 0x44, 0xBE, 0xF2, 0xCC, 0x8C, 0xAA, 0x1C, 0x00, 0x9A, - 0xB6, 0xCF, 0xB4, 0x06, 0xE6, 0xCE, 0xBA, 0x44, 0x1A, 0x4D, 0x23, 0x54, 0x49, 0x82, 0x23, 0x77, - 0xD6, 0x4B, 0x29, 0xDB, 0xAE, 0x57, 0x4A, 0x06, 0xEF, 0x93, 0xAD, 0x6A, 0xDF, 0xBB, 0x10, 0xA2, - 0x20, 0x91, 0x69, 0xD5, 0x59, 0x27, 0x89, 0x98, 0x41, 0x29, 0x99, 0x3A, 0x65, 0x69, 0xA4, 0xC4, - 0x0C, 0x31, 0x06, 0x45, 0xB4, 0x27, 0x6F, 0x01, 0x8A, 0xDE, 0xFA, 0xBE, 0x77, 0xD6, 0x39, 0x6B, - 0xBD, 0xF7, 0xC1, 0x39, 0xD7, 0xF7, 0x5E, 0x90, 0x00, 0x44, 0x49, 0x94, 0x65, 0x66, 0xBD, 0x69, - 0x98, 0xD9, 0x68, 0x6D, 0x7D, 0xE0, 0x18, 0x7D, 0xE0, 0x18, 0x79, 0x3C, 0x2A, 0x46, 0x45, 0x5E, - 0x95, 0xF9, 0x64, 0x5C, 0x66, 0x99, 0x4E, 0xB5, 0x9E, 0xED, 0x5D, 0xD7, 0x3B, 0x48, 0x0D, 0x65, - 0x06, 0xEB, 0x9C, 0x73, 0xBE, 0xC8, 0xB3, 0x3C, 0x33, 0x90, 0x9A, 0x74, 0x4A, 0x12, 0x11, 0x49, - 0x6A, 0xDA, 0xAE, 0xEF, 0x5C, 0xD3, 0x76, 0x1C, 0xA3, 0x40, 0xE1, 0x53, 0x03, 0x9D, 0xA8, 0x6E, - 0xDB, 0xCC, 0x98, 0x6D, 0xDD, 0x9C, 0x5F, 0xDE, 0x48, 0xA9, 0xFB, 0xBE, 0xDF, 0xD6, 0x9D, 0x77, - 0x4E, 0x2B, 0xBD, 0x5A, 0x6F, 0xAE, 0xAE, 0x97, 0x17, 0x57, 0x8B, 0x9B, 0x55, 0xB3, 0x69, 0xBA, - 0xE4, 0x56, 0xF7, 0xFA, 0xE2, 0xFA, 0x2F, 0xFF, 0xEA, 0x57, 0xDB, 0xBA, 0xF5, 0x81, 0xAF, 0x97, - 0xDB, 0xC5, 0xAA, 0x3E, 0x38, 0x98, 0x47, 0xC6, 0xD3, 0xB3, 0x9B, 0x5F, 0x7D, 0xF6, 0x78, 0xB9, - 0xDA, 0x5E, 0x5C, 0xAD, 0xDF, 0x7B, 0xFB, 0xE4, 0x66, 0xB9, 0x96, 0x24, 0x26, 0x55, 0x19, 0x99, - 0x3D, 0x47, 0x22, 0x41, 0x7F, 0xFC, 0xA7, 0x7F, 0x86, 0x00, 0x52, 0xCA, 0xA4, 0xB8, 0x9F, 0x6A, - 0x31, 0x49, 0x64, 0xB4, 0x24, 0x21, 0x00, 0x38, 0xB1, 0x4F, 0x13, 0x58, 0x39, 0x71, 0x62, 0x6E, - 0x4B, 0xF2, 0xFF, 0x67, 0x03, 0xD9, 0xAD, 0x39, 0x20, 0xEC, 0xF3, 0xB2, 0xDB, 0x41, 0xF0, 0xCD, - 0xF4, 0x21, 0xD9, 0x4A, 0x03, 0xA7, 0xE4, 0xCB, 0xBB, 0x84, 0xC5, 0x07, 0x44, 0x00, 0x01, 0x9A, - 0xA4, 0x92, 0x94, 0xDA, 0x64, 0x0C, 0x1C, 0x23, 0xE0, 0xA0, 0x0C, 0x05, 0x44, 0x42, 0x11, 0x49, - 0x1A, 0x00, 0x21, 0x5A, 0xCA, 0xFD, 0xE7, 0x4D, 0x24, 0x8C, 0x51, 0xA3, 0x2A, 0xCF, 0x73, 0x23, - 0x89, 0x52, 0x6B, 0x8C, 0x23, 0x6B, 0x29, 0xA7, 0x93, 0x32, 0xCB, 0x74, 0x91, 0x9B, 0x2C, 0x33, - 0x3B, 0x52, 0x2B, 0x00, 0x42, 0x8C, 0x01, 0x11, 0x49, 0x28, 0x81, 0x22, 0xC6, 0x78, 0xFA, 0xE2, - 0x65, 0xF4, 0x7E, 0xDB, 0xF6, 0xD3, 0x51, 0x81, 0x28, 0xDA, 0xDE, 0x5B, 0xEB, 0x8C, 0xA6, 0x18, - 0xD9, 0xF9, 0x78, 0xB5, 0xD8, 0x7A, 0x1F, 0xF2, 0x22, 0x43, 0x44, 0x29, 0x25, 0x49, 0x0A, 0x3E, - 0xF4, 0x2E, 0x24, 0x09, 0xF3, 0xDE, 0xF9, 0x18, 0xC1, 0x68, 0xF5, 0xD1, 0x07, 0x0F, 0x47, 0xA3, - 0x42, 0x1B, 0x75, 0x78, 0x30, 0x9B, 0x8E, 0x47, 0x00, 0xEC, 0x9C, 0x7F, 0xEF, 0x9D, 0xFB, 0xEF, - 0x3E, 0xBA, 0x3F, 0x9F, 0x4F, 0x94, 0xA4, 0x51, 0x95, 0x8F, 0x47, 0x95, 0x92, 0x34, 0x9B, 0x8D, - 0x8E, 0x8F, 0x66, 0x93, 0x71, 0x35, 0x1E, 0x95, 0x82, 0x68, 0xB5, 0x5C, 0x7E, 0xF2, 0xC1, 0xC3, - 0x77, 0x1E, 0x3D, 0x6C, 0x7B, 0x7F, 0xBD, 0x58, 0x87, 0x18, 0x36, 0xCB, 0xA5, 0x51, 0xE2, 0xBD, - 0x77, 0x1F, 0xC6, 0x18, 0xE6, 0xF3, 0x71, 0x51, 0x64, 0xE9, 0x06, 0xD6, 0x75, 0xE3, 0x5D, 0x48, - 0x10, 0xDC, 0x22, 0xCF, 0xB5, 0x51, 0x92, 0xC4, 0xE1, 0x7C, 0x22, 0x95, 0x94, 0x34, 0x38, 0xDD, - 0xC2, 0xCE, 0xD1, 0x63, 0x5B, 0xB7, 0x99, 0xC9, 0x7C, 0x8C, 0x97, 0x57, 0x8B, 0xDE, 0x06, 0x14, - 0x74, 0x79, 0xBD, 0xAC, 0x9B, 0x86, 0x63, 0x80, 0x18, 0xCB, 0xAA, 0x38, 0x3A, 0x3A, 0xEC, 0xAD, - 0x1B, 0x55, 0xE5, 0x7C, 0x32, 0x3A, 0x39, 0x9E, 0xDF, 0x3B, 0xB9, 0x73, 0xBD, 0xDC, 0xCC, 0xA6, - 0x93, 0xD9, 0xA4, 0x3A, 0xBF, 0xB8, 0x5E, 0x2C, 0x96, 0x5D, 0xDF, 0x37, 0x4D, 0xFF, 0xE0, 0xAD, - 0x13, 0x29, 0xD5, 0x93, 0x67, 0xAF, 0x8E, 0x8F, 0xE6, 0xC7, 0x07, 0x93, 0xD4, 0x0C, 0x8A, 0x1C, - 0x8D, 0x56, 0x49, 0x6D, 0xBD, 0xE9, 0x12, 0x68, 0xDF, 0x33, 0x63, 0xDD, 0xF6, 0x9B, 0xBA, 0x93, - 0x52, 0x7D, 0xFE, 0xC5, 0xD7, 0x07, 0xF3, 0xA9, 0x20, 0xBA, 0xBA, 0x5E, 0xB4, 0x6D, 0xE7, 0x9D, - 0x4F, 0x53, 0x23, 0xA9, 0x54, 0x92, 0x7E, 0xE3, 0x18, 0x97, 0xAB, 0xB5, 0xD1, 0x1A, 0x80, 0xAB, - 0x51, 0xD5, 0x75, 0xB6, 0xAE, 0x1B, 0x22, 0x2A, 0x8A, 0x2C, 0x35, 0x19, 0x12, 0x9A, 0x3A, 0xE1, - 0x68, 0xCA, 0xAA, 0x48, 0xB6, 0xF0, 0x42, 0xE0, 0xC0, 0xAB, 0x15, 0x22, 0x86, 0x68, 0xB4, 0x26, - 0x12, 0x21, 0x04, 0xEB, 0x9C, 0x56, 0x2A, 0xCF, 0xB3, 0xC8, 0x51, 0x24, 0xE0, 0xA5, 0x40, 0xE6, - 0xA4, 0x94, 0x4D, 0x4A, 0x52, 0x08, 0x21, 0x44, 0x0E, 0x31, 0x56, 0x65, 0x71, 0xF7, 0xEE, 0x51, - 0x52, 0xF4, 0x85, 0xDD, 0x38, 0x6C, 0xC7, 0xEC, 0xFD, 0x7B, 0xD6, 0x79, 0x5A, 0xBF, 0x5A, 0xC9, - 0x27, 0xCF, 0x4F, 0x9F, 0xBF, 0x3C, 0x4F, 0x23, 0xDA, 0x54, 0x20, 0x24, 0xBC, 0xAB, 0x91, 0x32, - 0x6D, 0x78, 0xE7, 0x7C, 0x6A, 0x80, 0x26, 0x65, 0x94, 0x04, 0xFA, 0x09, 0x21, 0xD9, 0x3B, 0xB5, - 0xD6, 0x05, 0x21, 0x70, 0x5B, 0x37, 0x00, 0x90, 0x7A, 0x40, 0x8A, 0x28, 0xC4, 0x38, 0xB4, 0x3E, - 0x00, 0x08, 0x51, 0x2A, 0x29, 0x50, 0x78, 0x17, 0xB2, 0x4C, 0x6B, 0xAD, 0x92, 0x3D, 0xAD, 0x56, - 0xC4, 0x0C, 0x31, 0xC6, 0x34, 0xE4, 0x4D, 0x8C, 0xC5, 0x54, 0xC0, 0x3A, 0xEB, 0x62, 0x1C, 0x88, - 0x0A, 0xA9, 0x90, 0x4C, 0x33, 0x2E, 0x63, 0xB4, 0x40, 0xF4, 0x3E, 0xA4, 0x89, 0x6C, 0xDB, 0x59, - 0x8E, 0x9C, 0x67, 0x26, 0x35, 0x8E, 0x94, 0x94, 0x69, 0xA6, 0x07, 0x80, 0x4D, 0x6B, 0xD3, 0x55, - 0x3A, 0xE7, 0x99, 0x07, 0x32, 0x69, 0xC2, 0x6F, 0x7B, 0x1F, 0xDA, 0xB6, 0xEB, 0xAD, 0x5F, 0xAC, - 0x36, 0x28, 0x84, 0xB5, 0x0E, 0x11, 0x23, 0x40, 0x8C, 0xAC, 0xB5, 0x0E, 0x21, 0x6A, 0x2D, 0x19, - 0xB8, 0x6B, 0x6D, 0x88, 0xF1, 0x66, 0xB9, 0xDE, 0x6E, 0x1B, 0x41, 0xA2, 0x2C, 0xF2, 0x10, 0xC2, - 0x76, 0x5B, 0x73, 0x8C, 0xD6, 0x79, 0x41, 0xD4, 0x5B, 0xB7, 0xD9, 0xD6, 0xF3, 0xE9, 0x78, 0xB9, - 0xA9, 0x57, 0x9B, 0x66, 0xB1, 0xDA, 0x2E, 0xD6, 0xCD, 0xE1, 0xC1, 0xFC, 0xE2, 0x6A, 0xE5, 0x02, - 0x23, 0x89, 0xF1, 0xA8, 0x7A, 0x70, 0xEF, 0xF8, 0xCE, 0xD1, 0x0C, 0x11, 0xA6, 0xE3, 0x32, 0x29, - 0x6D, 0x7C, 0xF9, 0xE4, 0xF4, 0xCF, 0xFF, 0xE2, 0x97, 0xCB, 0x75, 0x9D, 0x17, 0xC6, 0x3A, 0x77, - 0x30, 0x1D, 0xB7, 0x6D, 0x27, 0x43, 0x8C, 0x09, 0x1C, 0xCF, 0xCC, 0x7D, 0x62, 0xED, 0x66, 0xC6, - 0x68, 0x95, 0x8C, 0xCC, 0xD5, 0x8E, 0xA4, 0x9E, 0x48, 0xE0, 0xB7, 0x13, 0x9F, 0x7F, 0x38, 0x7E, - 0xDD, 0x8E, 0x50, 0xFB, 0x69, 0xE3, 0x00, 0xDE, 0xBD, 0x05, 0xA3, 0x7D, 0x93, 0x89, 0xC5, 0xB8, - 0x77, 0x33, 0x82, 0x37, 0xF3, 0x81, 0x9D, 0x3C, 0x19, 0x83, 0xD6, 0x32, 0x33, 0xAA, 0xB7, 0x3E, - 0x86, 0x18, 0x59, 0xF6, 0xD6, 0x25, 0x60, 0xF4, 0x70, 0x2C, 0x48, 0x82, 0x37, 0xBC, 0x4B, 0x40, - 0x40, 0xE7, 0x7D, 0xA6, 0xA5, 0x54, 0x52, 0x2B, 0x99, 0x25, 0x6C, 0x74, 0x8C, 0x3A, 0xBD, 0x62, - 0xA6, 0x8A, 0x3C, 0x4F, 0xA6, 0x15, 0xC3, 0xC0, 0x01, 0x61, 0x30, 0x94, 0x0B, 0x20, 0x08, 0x05, - 0x12, 0x00, 0x24, 0x9D, 0x99, 0xDE, 0xBA, 0x10, 0xA2, 0x73, 0x1E, 0x01, 0x26, 0x55, 0xD6, 0x34, - 0x1D, 0x11, 0x35, 0x5D, 0xBF, 0x5A, 0xB7, 0x2C, 0xA8, 0x28, 0x4C, 0x7A, 0xD3, 0x34, 0x18, 0x84, - 0x51, 0x08, 0x2C, 0x10, 0x02, 0x73, 0xDF, 0x5B, 0x00, 0x48, 0x98, 0x26, 0x93, 0xE9, 0xE3, 0xA3, - 0x83, 0x64, 0x26, 0x12, 0x39, 0xBE, 0x75, 0xFF, 0x24, 0xC4, 0x78, 0x7E, 0x75, 0x03, 0x02, 0xEF, - 0x1C, 0x1F, 0xF4, 0x5A, 0x93, 0x24, 0x63, 0x34, 0x00, 0x74, 0x5D, 0xCF, 0x31, 0x66, 0x99, 0x31, - 0x46, 0x5B, 0x6B, 0xD5, 0x0F, 0x3E, 0x38, 0x3A, 0x3A, 0x5C, 0xAC, 0xEB, 0xB4, 0x86, 0x32, 0x4D, - 0xA3, 0x32, 0xBF, 0x77, 0xEF, 0xA8, 0xAA, 0x32, 0x49, 0x30, 0x1A, 0x8F, 0x9C, 0x75, 0xC0, 0x1C, - 0x85, 0x68, 0x9B, 0x4E, 0x49, 0xA9, 0xB4, 0x4A, 0x6D, 0x60, 0xA5, 0xA8, 0xC8, 0x0D, 0x00, 0x26, - 0x6D, 0xDE, 0x10, 0x18, 0x01, 0xBD, 0x0B, 0xDE, 0x87, 0xEB, 0x9B, 0x95, 0x8F, 0xBC, 0xDC, 0xD4, - 0x5D, 0x67, 0x9F, 0x3E, 0x7B, 0x51, 0x94, 0x85, 0xD6, 0xA6, 0xDE, 0x36, 0x75, 0x5D, 0x5B, 0xEB, - 0x1E, 0x3E, 0x7C, 0x6B, 0xB3, 0xD9, 0xBC, 0xFD, 0xF6, 0x5D, 0xA3, 0xD5, 0xCD, 0xCD, 0xE2, 0xE1, - 0xFD, 0xE3, 0x7A, 0x5B, 0xFF, 0xE2, 0xD3, 0xAF, 0x46, 0x65, 0xB9, 0xDD, 0x36, 0xDF, 0x3C, 0x7E, - 0xF6, 0xE4, 0xC9, 0xB7, 0x55, 0x55, 0x3D, 0x78, 0x70, 0x5F, 0x1B, 0xFD, 0xFF, 0xFE, 0x7F, 0xFF, - 0xFE, 0x0F, 0xFF, 0xEB, 0xFF, 0xE2, 0x67, 0xBF, 0xFF, 0x83, 0xAE, 0x6D, 0x38, 0xC4, 0x2C, 0x33, - 0xCC, 0x80, 0x01, 0x22, 0xB3, 0x44, 0xE8, 0x5D, 0x10, 0x42, 0x68, 0x2D, 0xB5, 0x24, 0xEB, 0x5C, - 0x96, 0x67, 0xC6, 0x74, 0xBD, 0xB5, 0xF7, 0xEE, 0xDD, 0x19, 0x8F, 0xAA, 0xDE, 0x05, 0xEF, 0xC3, - 0x66, 0xBD, 0x76, 0x56, 0x78, 0x1F, 0xAA, 0x4A, 0x96, 0x65, 0x79, 0x7D, 0xB3, 0x42, 0xC4, 0x44, - 0x26, 0x41, 0x84, 0xA2, 0x28, 0x9A, 0xA6, 0x49, 0xB8, 0xD3, 0xB6, 0xED, 0x78, 0x20, 0xCD, 0x40, - 0xD2, 0xCF, 0x8B, 0x21, 0x2A, 0x2D, 0x9D, 0xF3, 0xC1, 0x87, 0xA4, 0x32, 0x92, 0xD2, 0xB7, 0x10, - 0x5C, 0x0C, 0xD1, 0x3A, 0x67, 0x8C, 0x4E, 0x5A, 0xE1, 0x46, 0xA9, 0xC9, 0x74, 0x1C, 0x23, 0x34, - 0x6D, 0x33, 0x2C, 0x40, 0x40, 0xE7, 0x3C, 0x00, 0x8C, 0xAA, 0xBC, 0xEF, 0x9D, 0x94, 0x84, 0x28, - 0xBF, 0xFA, 0xE6, 0xD9, 0xC7, 0x1F, 0xBE, 0x23, 0xE5, 0x50, 0x73, 0x24, 0x46, 0x9F, 0x18, 0x8A, - 0xB7, 0xDD, 0x68, 0x09, 0xF6, 0xD2, 0x78, 0xA9, 0x9B, 0x81, 0x91, 0xD9, 0x39, 0xC7, 0x1C, 0x9D, - 0xB5, 0x48, 0xC4, 0x83, 0x2A, 0x3A, 0x64, 0x03, 0x09, 0x29, 0x26, 0x41, 0x04, 0xE7, 0x93, 0xDE, - 0x1A, 0x58, 0xE7, 0xC1, 0x71, 0x92, 0xB7, 0x65, 0x06, 0xEB, 0xA3, 0xF7, 0xDE, 0x39, 0x6F, 0xB4, - 0x76, 0xCE, 0x15, 0x79, 0x9E, 0x2C, 0xAE, 0x97, 0xEB, 0xDA, 0x05, 0x0F, 0xC0, 0xE3, 0x32, 0x93, - 0x92, 0x7C, 0x04, 0x96, 0x28, 0x63, 0xC2, 0xB5, 0x7A, 0x44, 0x4A, 0xEF, 0x42, 0x6B, 0x05, 0x21, - 0x22, 0x42, 0xE0, 0x88, 0x3E, 0x18, 0xAD, 0x52, 0x26, 0x18, 0x42, 0x6C, 0xBB, 0x9E, 0x84, 0x00, - 0x01, 0x99, 0xD6, 0x31, 0x32, 0x82, 0x2F, 0x8B, 0xA2, 0x2A, 0x72, 0x25, 0x09, 0x80, 0x8B, 0x3C, - 0x23, 0x21, 0x8C, 0x92, 0x22, 0x41, 0xDB, 0xC4, 0xA0, 0x0F, 0xE8, 0x43, 0x90, 0x92, 0x36, 0xDB, - 0xA6, 0x6D, 0xFB, 0x14, 0xF5, 0x12, 0x8A, 0xB3, 0xC8, 0x0D, 0x22, 0xEC, 0x8D, 0x5D, 0xAC, 0xF5, - 0xD7, 0xCB, 0x55, 0x2A, 0x41, 0x94, 0xA2, 0x74, 0x6C, 0x33, 0x6B, 0x44, 0x28, 0x8B, 0x2C, 0xCB, - 0x94, 0x73, 0x41, 0x48, 0x72, 0xDE, 0xF7, 0xBD, 0x75, 0x2E, 0x98, 0x4C, 0xAD, 0x37, 0x5B, 0xEF, - 0x7D, 0xDF, 0xDB, 0x6D, 0xDD, 0x56, 0x65, 0x2E, 0x04, 0xCE, 0xA6, 0xE3, 0xEF, 0x7D, 0xF4, 0x6E, - 0x66, 0xB4, 0xF7, 0xBE, 0x2A, 0xF3, 0xAE, 0x77, 0x4A, 0x4B, 0x60, 0x38, 0x3C, 0x9C, 0xBF, 0xBE, - 0xB8, 0x5E, 0x6E, 0xEA, 0x10, 0xC2, 0x6C, 0x3A, 0xAE, 0xCA, 0xEC, 0x7B, 0x1F, 0x3E, 0x4A, 0xD3, - 0xB6, 0x8B, 0xEB, 0xF5, 0xFF, 0xF1, 0x7F, 0xFF, 0xF5, 0xC5, 0xC5, 0xD5, 0xE7, 0x4A, 0x3E, 0x7D, - 0x79, 0xF1, 0xDF, 0xFC, 0xE3, 0xEF, 0x1F, 0xCE, 0x67, 0xBF, 0xF8, 0xEC, 0x29, 0xFD, 0xD1, 0x9F, - 0xFC, 0x2B, 0x81, 0x18, 0x19, 0x12, 0x66, 0x0B, 0x11, 0xF3, 0x2C, 0x89, 0xDF, 0x0D, 0x32, 0x8C, - 0xFB, 0x04, 0x6A, 0x1F, 0x92, 0xFE, 0xB3, 0x45, 0xE5, 0x6F, 0xFD, 0x68, 0x08, 0x64, 0x31, 0xD1, - 0xA9, 0x7E, 0x27, 0x8A, 0xC5, 0xC8, 0xCC, 0xC1, 0x87, 0xE4, 0x56, 0xED, 0x7C, 0x68, 0x3B, 0xEB, - 0x7D, 0x90, 0x8A, 0x54, 0x9A, 0x4C, 0x23, 0x26, 0xD8, 0x8B, 0x36, 0x8A, 0x08, 0x93, 0x50, 0x60, - 0x9E, 0x69, 0xA3, 0x95, 0x24, 0xAA, 0x8A, 0xBC, 0x28, 0x92, 0xEE, 0xC6, 0xE0, 0x34, 0x98, 0xCA, - 0x43, 0x29, 0xA5, 0xD6, 0x4A, 0x2B, 0xA5, 0x94, 0x42, 0x21, 0x10, 0x06, 0xA8, 0x3E, 0x91, 0xC8, - 0xB4, 0x49, 0xA9, 0xE5, 0xAD, 0x77, 0x18, 0xF7, 0x17, 0x4B, 0x24, 0x01, 0x13, 0xC5, 0x0F, 0xDA, - 0xAE, 0xFB, 0xE5, 0xAF, 0xBE, 0x1C, 0x15, 0x59, 0x67, 0xFD, 0xC1, 0xB4, 0x6A, 0x5A, 0xBB, 0x6D, - 0xFA, 0xD9, 0xA8, 0xF0, 0x3E, 0xA4, 0xD6, 0x3E, 0x03, 0x86, 0x08, 0xC1, 0x7B, 0x41, 0x03, 0xFF, - 0xD9, 0x87, 0xD8, 0x74, 0xD6, 0xF6, 0x3E, 0x71, 0x38, 0x88, 0xA8, 0xEB, 0xBA, 0x51, 0x99, 0xBF, - 0xF3, 0xF0, 0x1E, 0x11, 0x01, 0x60, 0x60, 0x26, 0xA2, 0xCC, 0xE8, 0xCB, 0xAB, 0x65, 0x5D, 0xB7, - 0x5A, 0x2B, 0x8E, 0xAC, 0xB4, 0xEA, 0xBA, 0xAE, 0x69, 0x1A, 0x49, 0x22, 0xCF, 0x8D, 0x52, 0xAA, - 0xEB, 0x3A, 0x29, 0x25, 0x92, 0xCC, 0x8B, 0x5C, 0x4A, 0x5A, 0x6F, 0xEA, 0x51, 0x99, 0x1F, 0xCE, - 0x27, 0x65, 0x61, 0xB2, 0xCC, 0x8C, 0x26, 0x95, 0x52, 0x8A, 0x43, 0x0C, 0xD6, 0x09, 0x49, 0x82, - 0x06, 0x51, 0x20, 0xAD, 0x95, 0x10, 0x42, 0x90, 0x90, 0x4A, 0xCA, 0x24, 0xB9, 0x81, 0x48, 0x28, - 0x9C, 0x0F, 0x67, 0xE7, 0x97, 0xA7, 0xA7, 0xE7, 0x57, 0xAB, 0x4D, 0x6F, 0xC3, 0x72, 0xB5, 0x5D, - 0xAE, 0x36, 0x67, 0x17, 0xD7, 0x88, 0x42, 0x99, 0xEC, 0xEC, 0xE2, 0x1A, 0x11, 0x95, 0xD6, 0xCE, - 0x87, 0x3B, 0x27, 0xC7, 0xBD, 0x75, 0x9B, 0xCD, 0xF6, 0xE1, 0x5B, 0x77, 0xAB, 0xAA, 0xF8, 0xF4, - 0xF3, 0x6F, 0xBE, 0x79, 0xF6, 0x6A, 0xBB, 0x6D, 0x5E, 0x3C, 0x7F, 0xF9, 0xFA, 0xFC, 0xF2, 0xFE, - 0xFD, 0xFB, 0x87, 0x87, 0x53, 0xD7, 0x77, 0x57, 0xD7, 0x8B, 0xE7, 0xCF, 0x4F, 0x3F, 0xFE, 0xF8, - 0x83, 0xC7, 0x5F, 0x3F, 0x01, 0x8E, 0x21, 0x04, 0x41, 0x24, 0x89, 0x24, 0x89, 0x3C, 0x33, 0x80, - 0x98, 0x8A, 0x8B, 0xE0, 0x03, 0x09, 0x31, 0xA9, 0xCA, 0xA4, 0xA7, 0x60, 0x5D, 0xA8, 0x9B, 0x7E, - 0x34, 0xAA, 0x26, 0xE3, 0xAA, 0x6E, 0x5A, 0x04, 0x88, 0x91, 0xAF, 0xAE, 0x17, 0x31, 0x70, 0x66, - 0x8C, 0xD6, 0xCA, 0x39, 0x9B, 0xE8, 0xF1, 0x79, 0x9E, 0xDD, 0xBF, 0x7F, 0xD2, 0xB6, 0x5D, 0x6E, - 0x8C, 0xB5, 0xCE, 0x7A, 0x5F, 0x55, 0x79, 0x0C, 0xC1, 0xFB, 0x30, 0x1E, 0x97, 0xDE, 0x7B, 0x14, - 0x98, 0x19, 0x1D, 0xE2, 0xBE, 0xC9, 0x45, 0x02, 0x31, 0x30, 0x78, 0x1F, 0x98, 0x23, 0xA2, 0x40, - 0xC0, 0xD4, 0x48, 0xCA, 0x33, 0x6D, 0xAD, 0xB3, 0xD6, 0x35, 0x4D, 0x5B, 0xD7, 0xED, 0x7C, 0x36, - 0xC9, 0x32, 0xDD, 0xF7, 0x3D, 0x33, 0x74, 0x3B, 0x31, 0xF1, 0x18, 0xE2, 0x5B, 0xF7, 0xEF, 0xAC, - 0x36, 0xDB, 0x3C, 0xCB, 0xEE, 0x9D, 0x1C, 0x0E, 0xA3, 0x31, 0x00, 0xB1, 0xF3, 0x66, 0x8E, 0xF8, - 0x86, 0x75, 0xF9, 0x9D, 0x45, 0xCE, 0x40, 0x44, 0x9F, 0xFD, 0xE6, 0xF1, 0xCD, 0x62, 0x13, 0x19, - 0xB2, 0x4C, 0x39, 0xE7, 0x7D, 0x08, 0x99, 0x56, 0xA9, 0x20, 0x08, 0x83, 0x26, 0x30, 0xA4, 0x16, - 0x35, 0xC0, 0x1B, 0xB4, 0x94, 0xF5, 0xA1, 0xEB, 0x5C, 0x3A, 0xB6, 0x95, 0xA4, 0x04, 0x70, 0x4D, - 0x8B, 0xD8, 0x87, 0xE0, 0xBD, 0xB7, 0xCE, 0xA7, 0x1E, 0x1F, 0x60, 0x82, 0x95, 0x04, 0x21, 0x84, - 0x54, 0x8A, 0x77, 0x7E, 0xC6, 0x59, 0xA6, 0x11, 0x31, 0x33, 0x3A, 0xC1, 0xCA, 0x68, 0x87, 0x57, - 0xF7, 0x3E, 0x6C, 0xB6, 0x8D, 0x31, 0x2A, 0xC4, 0x38, 0x2A, 0x8B, 0x22, 0x33, 0x5D, 0x6F, 0x8B, - 0x3C, 0x9B, 0x4F, 0xC6, 0xA9, 0x3A, 0xD1, 0x5A, 0x93, 0x10, 0x46, 0xA9, 0x94, 0x1B, 0x4A, 0xA2, - 0x04, 0x29, 0x4F, 0x00, 0x4F, 0x66, 0x58, 0xAF, 0xEB, 0x6D, 0xDD, 0xA6, 0x54, 0x77, 0x53, 0xD7, - 0xA9, 0xEC, 0x55, 0x4A, 0x7A, 0x1F, 0x96, 0xAB, 0x6D, 0xD7, 0xFF, 0xFF, 0x9C, 0xBD, 0xD9, 0x93, - 0xA4, 0xD7, 0x75, 0x27, 0x76, 0xEE, 0x7E, 0xBF, 0x2D, 0xB7, 0xCA, 0xDA, 0xBA, 0xBA, 0x1B, 0x0D, - 0x74, 0x93, 0x20, 0x20, 0x50, 0x24, 0x35, 0x1C, 0xD9, 0x9A, 0x89, 0x91, 0xE5, 0x79, 0xB3, 0x23, - 0x1C, 0xFE, 0x4B, 0xBC, 0x8D, 0xFD, 0x28, 0x51, 0xB2, 0x23, 0xEC, 0xF9, 0x4F, 0xFC, 0x38, 0x8F, - 0x76, 0x38, 0x1C, 0x13, 0x76, 0xC4, 0x48, 0x23, 0x8D, 0x48, 0x90, 0x04, 0x48, 0x6C, 0xBD, 0x77, - 0x2D, 0x5D, 0x5B, 0x56, 0x6E, 0xDF, 0x76, 0xF7, 0xEB, 0x87, 0x9B, 0x59, 0x5D, 0x00, 0xA9, 0xB1, - 0xC7, 0xF9, 0xD0, 0x40, 0xD7, 0x92, 0x5D, 0x95, 0xF9, 0x7D, 0xE7, 0x9E, 0xF3, 0x3B, 0xBF, 0xC5, - 0x20, 0x48, 0x4A, 0x29, 0x42, 0x29, 0x6D, 0x5B, 0xE5, 0x5D, 0xA0, 0x94, 0x64, 0x92, 0x55, 0x55, - 0x91, 0x98, 0x1C, 0x89, 0xF6, 0xB5, 0x5C, 0xD6, 0x11, 0x20, 0xCF, 0xE5, 0x72, 0xD9, 0x18, 0x63, - 0x11, 0x80, 0xF3, 0xDE, 0xF9, 0xD0, 0xB4, 0xFD, 0x93, 0x0F, 0x1E, 0x7E, 0xF4, 0xE1, 0x07, 0x84, - 0xE0, 0xA4, 0x71, 0x69, 0xBA, 0x3E, 0x85, 0x3B, 0x3A, 0xE7, 0x4F, 0xDE, 0x5E, 0x7F, 0xFA, 0xD9, - 0xD7, 0xAB, 0x75, 0xFB, 0xCD, 0xB3, 0xD7, 0x08, 0x21, 0xCE, 0xC5, 0xF5, 0xCD, 0xB2, 0x57, 0xF6, - 0xD9, 0x8B, 0x37, 0x8C, 0xD3, 0x1F, 0x7D, 0xF2, 0xBD, 0xC3, 0x83, 0xE9, 0xEE, 0x74, 0x74, 0xEF, - 0x60, 0x4A, 0x19, 0x7F, 0xFE, 0xFA, 0xFC, 0xC5, 0xEB, 0x73, 0xF2, 0x5F, 0xFF, 0xB7, 0xFF, 0x7D, - 0x42, 0x4D, 0x43, 0x04, 0x1F, 0x42, 0xD2, 0x40, 0x01, 0x40, 0x5A, 0xFE, 0x6C, 0x71, 0xF4, 0x77, - 0x6F, 0xDE, 0xAD, 0xB4, 0xE8, 0x77, 0x0B, 0xD6, 0xEF, 0x3E, 0x6E, 0x7B, 0xB1, 0xF4, 0x67, 0x1A, - 0xB8, 0xEE, 0x7C, 0x7A, 0x03, 0xED, 0x27, 0xE3, 0x11, 0xE7, 0xBC, 0xD6, 0xD6, 0x58, 0x8F, 0x10, - 0x24, 0x19, 0x79, 0x08, 0x9B, 0xCD, 0x66, 0x9E, 0x89, 0xDB, 0x19, 0x0A, 0xBF, 0x33, 0xBD, 0x00, - 0xCE, 0x19, 0xE3, 0x2C, 0x5D, 0xB5, 0x89, 0xE7, 0x9B, 0xBC, 0x31, 0x11, 0x42, 0x8C, 0xA4, 0x51, - 0x8F, 0xC4, 0x77, 0xFC, 0x8D, 0x08, 0x80, 0x30, 0x20, 0x4A, 0x69, 0x0A, 0x24, 0x84, 0x5B, 0x5C, - 0x2E, 0xFA, 0x0D, 0xB9, 0x8C, 0xB2, 0xCD, 0x93, 0xC5, 0x80, 0x29, 0x39, 0x3B, 0xBB, 0xF8, 0xE2, - 0xAB, 0x97, 0x52, 0x50, 0x6D, 0xEC, 0xCE, 0xB0, 0x4A, 0x66, 0x22, 0xDA, 0x18, 0x4A, 0x70, 0x3A, - 0xD9, 0x96, 0x75, 0x1F, 0x22, 0x58, 0xEF, 0x53, 0xF0, 0xA2, 0xB5, 0xCE, 0x18, 0x67, 0x36, 0xDA, - 0x00, 0xC8, 0xA4, 0xCC, 0xF3, 0x2C, 0x78, 0xBF, 0xAE, 0xDB, 0x2C, 0x13, 0x83, 0xB2, 0xC0, 0x84, - 0x78, 0xEF, 0x39, 0x63, 0x9C, 0x33, 0x8C, 0xD1, 0x6C, 0xBE, 0x4A, 0xA8, 0x56, 0xD3, 0xB4, 0xC6, - 0x18, 0xCE, 0x59, 0x55, 0x16, 0x52, 0x8A, 0x34, 0x01, 0x01, 0xC2, 0x5D, 0xDB, 0x67, 0x19, 0xEF, - 0x3A, 0x55, 0x16, 0x99, 0x94, 0x7C, 0xBA, 0x33, 0x1C, 0x8D, 0x07, 0x98, 0x60, 0x29, 0x04, 0x00, - 0x68, 0xA5, 0x62, 0x0C, 0x94, 0xF3, 0xE4, 0x80, 0x4E, 0x36, 0x33, 0x35, 0xDE, 0xC2, 0x37, 0x31, - 0xC6, 0x68, 0x8D, 0xEB, 0xB5, 0x9A, 0x2F, 0x56, 0x37, 0xF3, 0xF5, 0xBA, 0xE9, 0x8D, 0x0D, 0xC6, - 0xD8, 0xBA, 0x6E, 0x9D, 0x0F, 0x32, 0x93, 0x45, 0x91, 0x2F, 0xD7, 0x0D, 0x21, 0xF4, 0xE0, 0x60, - 0x0F, 0x30, 0x05, 0x84, 0x87, 0x55, 0x59, 0x95, 0xC5, 0x97, 0x4F, 0x5F, 0x5D, 0xCE, 0xE6, 0x87, - 0x07, 0xFB, 0x4D, 0xAB, 0x4E, 0xCE, 0x2E, 0xAB, 0x41, 0xE5, 0x43, 0x5C, 0x2C, 0x97, 0x7B, 0x7B, - 0xD3, 0xC1, 0x68, 0x38, 0xBF, 0x59, 0xAE, 0xE6, 0x37, 0xDE, 0xBB, 0xBE, 0xEB, 0x77, 0x26, 0xA3, - 0x5F, 0x7E, 0xF6, 0xF5, 0x97, 0x5F, 0x3D, 0xBF, 0x99, 0x2D, 0x26, 0x93, 0xD1, 0x78, 0x34, 0x70, - 0xDE, 0xC5, 0x5B, 0xDB, 0x29, 0x84, 0x29, 0xC5, 0x04, 0xE3, 0x18, 0x63, 0x00, 0x44, 0x29, 0x9B, - 0x8C, 0x06, 0x79, 0x26, 0x8D, 0x75, 0xD6, 0xBA, 0xAA, 0xCC, 0x23, 0x42, 0x97, 0x97, 0xB3, 0x4E, - 0xE9, 0x2C, 0x93, 0xCE, 0xBB, 0x18, 0x22, 0x46, 0x29, 0x54, 0x8D, 0xE5, 0x59, 0x96, 0x4A, 0xB3, - 0x52, 0xC6, 0x5A, 0x97, 0x58, 0x4B, 0x31, 0xC6, 0xE0, 0x43, 0x59, 0xE6, 0xC6, 0xD8, 0xB4, 0xE7, - 0xCA, 0xB3, 0x4C, 0x69, 0xE5, 0x7D, 0xF2, 0xC8, 0x8C, 0xEB, 0xB6, 0x4F, 0xF4, 0x26, 0x1F, 0x22, - 0x00, 0xAA, 0xCA, 0x6C, 0x50, 0x16, 0x21, 0x46, 0xA5, 0x74, 0x6A, 0xE8, 0xBC, 0xF7, 0x21, 0xC6, - 0xFB, 0x47, 0xFB, 0x08, 0xE1, 0xA6, 0xED, 0x7C, 0x08, 0x82, 0x31, 0x6B, 0xED, 0x70, 0x50, 0x2A, - 0x6D, 0x6E, 0x16, 0xAB, 0x4F, 0x7E, 0xF0, 0xC1, 0xB6, 0x90, 0x6D, 0x38, 0x95, 0x5B, 0x77, 0x45, - 0x80, 0x04, 0xF5, 0x27, 0x16, 0x50, 0x72, 0xFE, 0x83, 0x08, 0x00, 0x5F, 0x3D, 0x7D, 0x5D, 0xB7, - 0x5D, 0xA2, 0xCA, 0x26, 0x2C, 0x2F, 0xAD, 0x05, 0xB2, 0x4C, 0xC4, 0x08, 0x82, 0xB3, 0x8D, 0x47, - 0x2B, 0x23, 0x71, 0xC3, 0x0B, 0xA1, 0x84, 0x60, 0xEF, 0x43, 0x8C, 0x41, 0x0A, 0x66, 0x9D, 0x8F, - 0x31, 0x58, 0xEF, 0x29, 0x65, 0x98, 0x20, 0x42, 0x70, 0x91, 0x4B, 0x82, 0xD1, 0xDE, 0xCE, 0x30, - 0x93, 0x5C, 0x1B, 0xCB, 0x05, 0x0B, 0x21, 0x86, 0x00, 0x18, 0x63, 0xEF, 0x3C, 0x42, 0x28, 0xCB, - 0xB8, 0x14, 0x3C, 0x25, 0x04, 0xA6, 0xF5, 0xBA, 0xF7, 0x81, 0x32, 0x1A, 0x22, 0x10, 0x4C, 0xAC, - 0xF7, 0xD6, 0xBA, 0x4C, 0xCA, 0x10, 0x62, 0xF0, 0x51, 0x69, 0x33, 0x1E, 0x96, 0x3B, 0xA3, 0x4A, - 0x0A, 0xDA, 0xF5, 0xBA, 0x6E, 0x7A, 0x82, 0x71, 0xEA, 0x7D, 0x7C, 0xF0, 0x89, 0xE5, 0xAE, 0x8C, - 0x05, 0x84, 0x04, 0x67, 0x98, 0x90, 0x54, 0xC2, 0xB4, 0x36, 0x31, 0xC2, 0xBA, 0x69, 0xAD, 0xF3, - 0xDA, 0xD8, 0x18, 0x23, 0x25, 0xB4, 0x57, 0xBA, 0x53, 0x9B, 0xDC, 0xE8, 0x8D, 0x76, 0x1E, 0x00, - 0x63, 0xD4, 0xB4, 0xCA, 0x5A, 0x9B, 0xC8, 0x25, 0x31, 0x44, 0x4A, 0xE9, 0xBA, 0x6E, 0x9D, 0xF7, - 0x08, 0xE1, 0xB6, 0x57, 0x83, 0xAA, 0x74, 0x3E, 0xD4, 0x4D, 0xEB, 0x7C, 0x10, 0x9C, 0x3B, 0xEF, - 0xFF, 0xE0, 0x07, 0x1F, 0x7C, 0xF2, 0xD1, 0x63, 0xEF, 0xFD, 0xB2, 0x6E, 0x97, 0xAB, 0x9A, 0x12, - 0x52, 0x14, 0x39, 0x44, 0x38, 0xBB, 0x9C, 0xFD, 0xF5, 0xDF, 0x7D, 0xF6, 0xE2, 0xE5, 0x89, 0x52, - 0xFA, 0xFE, 0xD1, 0x3E, 0x46, 0x78, 0xB1, 0xAC, 0x01, 0xE1, 0xAA, 0xCC, 0xAF, 0xAE, 0xE7, 0x7D, - 0xAF, 0x8C, 0xB1, 0x83, 0x41, 0xF9, 0xDE, 0x83, 0x83, 0xA3, 0x83, 0xE9, 0x83, 0xA3, 0xFD, 0xE7, - 0xAF, 0x4E, 0xBE, 0xFA, 0xEA, 0x05, 0x20, 0x44, 0xFE, 0xAB, 0xFF, 0xE6, 0x5F, 0xA4, 0x17, 0xB7, - 0xCC, 0xC4, 0x68, 0x58, 0x20, 0x80, 0x5E, 0x99, 0x04, 0xB8, 0x6E, 0xCE, 0xA2, 0x3B, 0x94, 0xFA, - 0xDB, 0xCC, 0x8E, 0xDF, 0x5B, 0xC2, 0x7E, 0x6F, 0x23, 0x76, 0xFB, 0xF1, 0x5B, 0x58, 0xED, 0xF6, - 0x23, 0x09, 0xE8, 0x42, 0x08, 0x39, 0xEF, 0xBC, 0xF7, 0x80, 0x80, 0x60, 0xCC, 0x39, 0x2D, 0x8A, - 0x4C, 0x08, 0x06, 0x00, 0x84, 0xE0, 0xD4, 0x82, 0x15, 0x79, 0x86, 0xB7, 0xEC, 0x8D, 0xF4, 0xCC, - 0x09, 0x23, 0xA0, 0x24, 0x99, 0x6D, 0x43, 0x32, 0xA2, 0x72, 0xCE, 0xC1, 0xB6, 0xB1, 0xA2, 0x49, - 0x69, 0x1A, 0x12, 0xFB, 0x0C, 0x82, 0x0F, 0x18, 0x63, 0x92, 0x98, 0xB3, 0xEF, 0xFC, 0x77, 0x53, - 0x2F, 0xB6, 0xD9, 0xB8, 0x63, 0x82, 0x31, 0xA6, 0xB0, 0x15, 0xD3, 0x61, 0x82, 0x57, 0xEB, 0xF5, - 0xCB, 0x17, 0xC7, 0x9C, 0x12, 0x1F, 0x51, 0x2E, 0x19, 0x23, 0xC4, 0x3B, 0x2F, 0x18, 0xA9, 0x72, - 0xD9, 0x29, 0x63, 0xAD, 0x43, 0x18, 0xCF, 0x97, 0x6D, 0xE2, 0xBD, 0x7A, 0x1F, 0x9C, 0xB3, 0xDE, - 0x07, 0x40, 0xC8, 0x5A, 0xC7, 0x29, 0xE5, 0x9C, 0x1A, 0x6D, 0x38, 0x67, 0x49, 0x32, 0x92, 0x65, - 0x82, 0x31, 0xE2, 0xBC, 0x67, 0x8C, 0x39, 0xEF, 0xB4, 0x32, 0x75, 0xD3, 0xC6, 0x18, 0x95, 0xD2, - 0x18, 0x21, 0xC6, 0x68, 0x59, 0xE4, 0xFB, 0xFB, 0x53, 0x2E, 0x78, 0x8A, 0x92, 0xF4, 0xCE, 0x0B, - 0x4E, 0xAD, 0x0D, 0x5D, 0xD7, 0x8E, 0x86, 0x65, 0x59, 0xE4, 0x79, 0x2E, 0xF3, 0x3C, 0x4B, 0x8E, - 0xA9, 0x21, 0x84, 0xE0, 0x1D, 0xA6, 0x84, 0x72, 0x86, 0x60, 0x63, 0x26, 0x8E, 0x31, 0x86, 0x18, - 0xAC, 0x73, 0xC9, 0x29, 0xC1, 0x1A, 0xAB, 0x94, 0x5A, 0xAF, 0xBB, 0xCB, 0xEB, 0xC5, 0xBA, 0xEE, - 0xEB, 0xB6, 0xCF, 0xA4, 0x18, 0x0C, 0x0A, 0x04, 0x88, 0x31, 0xB6, 0xBB, 0x33, 0x16, 0x82, 0x51, - 0x42, 0x19, 0x63, 0x80, 0x40, 0x29, 0x93, 0x65, 0x32, 0x02, 0x7A, 0xFE, 0xEA, 0x64, 0x34, 0x1C, - 0x68, 0xEB, 0x7D, 0x08, 0xEF, 0x3F, 0x7A, 0x60, 0x9D, 0xFF, 0xE2, 0xAB, 0xE7, 0xC3, 0xE1, 0x70, - 0x34, 0x1E, 0xCD, 0x97, 0xEB, 0x61, 0x55, 0x76, 0x7D, 0x0F, 0x10, 0x87, 0x55, 0xD9, 0xB6, 0xDD, - 0x70, 0x34, 0x8A, 0x80, 0xBA, 0xA6, 0x19, 0x55, 0x39, 0x46, 0x71, 0x67, 0x32, 0x02, 0x84, 0x92, - 0xDF, 0x7F, 0x04, 0xA0, 0x84, 0x48, 0xC1, 0x9D, 0xF7, 0x89, 0x17, 0xE1, 0x7D, 0x0C, 0x00, 0x89, - 0xA5, 0xBC, 0x5C, 0xD7, 0x6D, 0xA7, 0x7F, 0xF8, 0xF1, 0x93, 0xAA, 0x2A, 0xBF, 0xFA, 0xFA, 0x39, - 0x63, 0xEC, 0x60, 0x6F, 0xBA, 0xAE, 0xDB, 0x10, 0x42, 0x82, 0xAB, 0x22, 0xA0, 0xAE, 0xED, 0xB2, - 0x4C, 0x24, 0x93, 0xBF, 0x2C, 0x93, 0x5A, 0x6B, 0xCE, 0x36, 0x38, 0x74, 0x26, 0x45, 0xA2, 0x4B, - 0x02, 0x40, 0xDA, 0x45, 0x3B, 0xE7, 0x9D, 0x0F, 0xC6, 0xB8, 0x9D, 0x9D, 0x51, 0xF0, 0xC1, 0x39, - 0xCB, 0x18, 0xB1, 0xC6, 0x11, 0x82, 0xF3, 0x5C, 0x5A, 0xEB, 0x62, 0x04, 0xCE, 0x19, 0x46, 0xA0, - 0x8D, 0x1D, 0x0F, 0x07, 0x08, 0xA3, 0xA6, 0xED, 0x62, 0x88, 0x8C, 0x51, 0x8C, 0xF1, 0xE1, 0xE1, - 0x5E, 0x08, 0xE1, 0xE2, 0xF2, 0xE6, 0xE1, 0xFD, 0xFD, 0x41, 0x55, 0x3A, 0xEF, 0x37, 0x47, 0xDA, - 0x76, 0x94, 0x44, 0x1B, 0x5F, 0xF7, 0xDB, 0x8F, 0xA0, 0x88, 0xD2, 0x25, 0x04, 0x9F, 0x7D, 0xF1, - 0x74, 0xB9, 0x6E, 0xAD, 0x0B, 0x79, 0x26, 0x9D, 0x73, 0xDE, 0x47, 0xC6, 0x29, 0xA3, 0x24, 0xB8, - 0x80, 0x31, 0x12, 0x82, 0x1B, 0xE3, 0x92, 0x9E, 0x34, 0xB5, 0x63, 0x94, 0x12, 0xEF, 0x5D, 0x3A, - 0x30, 0xA5, 0xE4, 0xD6, 0x6E, 0x36, 0x95, 0x21, 0x06, 0x63, 0x0D, 0x46, 0xB8, 0xD7, 0xA6, 0xCC, - 0xB3, 0xC9, 0xA0, 0xCA, 0x32, 0x91, 0x16, 0xF7, 0x69, 0x32, 0xE5, 0x9C, 0x12, 0x82, 0x93, 0x85, - 0x19, 0x42, 0x80, 0x20, 0x26, 0x8C, 0x3C, 0x02, 0x38, 0x1F, 0x9A, 0x3E, 0xE5, 0x84, 0x06, 0xA5, - 0x8D, 0x73, 0x0E, 0x10, 0xF2, 0x3E, 0xF4, 0xBD, 0xDA, 0xDB, 0x1B, 0x33, 0x4A, 0x43, 0x88, 0x97, - 0xB3, 0x65, 0xDD, 0x76, 0x4D, 0xDB, 0x87, 0x18, 0x39, 0xA5, 0x09, 0x32, 0x0E, 0x31, 0x52, 0x42, - 0x8C, 0x73, 0x18, 0xE1, 0x5C, 0x0A, 0xE7, 0xBC, 0x71, 0xB6, 0x53, 0x2A, 0xD9, 0x10, 0x05, 0x00, - 0x65, 0xEC, 0x7A, 0xDD, 0x39, 0x1F, 0x9C, 0xF7, 0xDE, 0x7B, 0x6D, 0x2C, 0xC6, 0xC8, 0x5A, 0xDF, - 0x75, 0x0A, 0xA1, 0x04, 0xBF, 0xB8, 0x18, 0x21, 0x42, 0xC4, 0x18, 0x73, 0x46, 0xB7, 0x9B, 0x7D, - 0x93, 0x1C, 0xB4, 0xDA, 0xAE, 0x37, 0xC6, 0x1A, 0x6B, 0x23, 0x20, 0x67, 0xFD, 0xFE, 0xEE, 0xE4, - 0x3F, 0xFE, 0xE9, 0x0F, 0x7F, 0xF0, 0xFD, 0x47, 0xCB, 0x55, 0x5D, 0xB7, 0xFD, 0x68, 0x50, 0xEC, - 0xEE, 0x8C, 0x22, 0x80, 0x36, 0xEE, 0xF4, 0xFC, 0xFA, 0xE9, 0xF3, 0xD7, 0x94, 0xB2, 0xD9, 0xF5, - 0x8D, 0xD5, 0x56, 0x6B, 0x73, 0x71, 0x75, 0x73, 0x7D, 0xB3, 0x68, 0x3B, 0x65, 0xAD, 0xED, 0x7B, - 0x25, 0x84, 0x68, 0x9A, 0x16, 0x13, 0x9A, 0xC0, 0xD0, 0x9F, 0xFF, 0xF2, 0x8B, 0xD7, 0x6F, 0xCE, - 0x18, 0x63, 0x7B, 0xFB, 0xBB, 0xE4, 0x7F, 0xFE, 0x9F, 0xFE, 0xC7, 0x22, 0x97, 0x79, 0xC6, 0xA7, - 0xE3, 0x61, 0x91, 0x67, 0x29, 0x2A, 0x5C, 0x70, 0x9A, 0x49, 0x91, 0x00, 0x54, 0xB4, 0x49, 0x94, - 0xD9, 0xB8, 0x8C, 0xC5, 0x6F, 0x1B, 0x81, 0xDD, 0x16, 0xA6, 0xDF, 0x85, 0xCF, 0x36, 0x67, 0xF2, - 0xAD, 0x81, 0xF4, 0x9D, 0xAF, 0xD9, 0x36, 0x64, 0x90, 0x5A, 0xCD, 0x04, 0xDF, 0x32, 0xC6, 0xA4, - 0x94, 0x52, 0xCA, 0x54, 0x2E, 0x13, 0x30, 0x29, 0x18, 0x13, 0x82, 0xA3, 0x6D, 0x01, 0x85, 0x0D, - 0x5D, 0x3E, 0x39, 0x14, 0x92, 0xB8, 0xF1, 0x65, 0xF4, 0xDE, 0xFB, 0x5E, 0x19, 0x6B, 0x5C, 0x88, - 0x51, 0x30, 0x9E, 0x38, 0x35, 0x90, 0x38, 0x68, 0xDB, 0x5C, 0xBC, 0xDB, 0xA7, 0x4D, 0x35, 0x34, - 0x02, 0xA4, 0x6C, 0x0E, 0x1F, 0x7C, 0x82, 0x57, 0x30, 0xA6, 0xEF, 0x86, 0x68, 0x00, 0x8C, 0x51, - 0xD7, 0x34, 0x6F, 0x4F, 0x2F, 0x28, 0x46, 0x08, 0x40, 0x48, 0x1E, 0x42, 0x48, 0x53, 0x0C, 0x20, - 0x64, 0x9C, 0x27, 0x94, 0x2A, 0x6D, 0x97, 0x75, 0x97, 0x16, 0xC0, 0xD6, 0x59, 0xE7, 0x82, 0xB6, - 0x4E, 0x1B, 0xC7, 0x19, 0x49, 0x13, 0xE2, 0xEE, 0xEE, 0x18, 0x63, 0x94, 0x82, 0xE6, 0xC7, 0xA3, - 0x01, 0xC1, 0x49, 0x36, 0x1F, 0x8C, 0x31, 0x89, 0x4A, 0xAA, 0x7A, 0x2D, 0x25, 0x2F, 0x8B, 0x9C, - 0x10, 0x24, 0x25, 0x1F, 0x0E, 0x4B, 0xC6, 0x39, 0x02, 0x44, 0x39, 0x4B, 0x31, 0x54, 0x31, 0xC2, - 0xCE, 0xCE, 0x78, 0x34, 0x2C, 0x39, 0xA3, 0x42, 0x0A, 0xBC, 0xB5, 0x4B, 0x02, 0x00, 0xBC, 0x31, - 0x51, 0x7A, 0x97, 0x08, 0xE5, 0xBD, 0xB7, 0xD6, 0xA9, 0xDE, 0x74, 0xAD, 0xB2, 0xC6, 0x2D, 0x96, - 0xEB, 0xAB, 0xD9, 0xFA, 0xE4, 0xFC, 0xE6, 0xEA, 0x66, 0xB5, 0x58, 0xB7, 0x89, 0xD5, 0x3C, 0x1D, - 0x0F, 0xD3, 0x26, 0x41, 0x4A, 0x4E, 0x09, 0x2E, 0xCB, 0xBC, 0xED, 0xF4, 0x6C, 0xB6, 0x48, 0x7A, - 0xAD, 0xAA, 0xCC, 0xAD, 0xF5, 0x79, 0x9E, 0x41, 0x84, 0x93, 0xD3, 0x0B, 0x21, 0xF8, 0xC1, 0xFE, - 0x54, 0x1B, 0x7B, 0x7D, 0xB3, 0xE0, 0x94, 0x1A, 0x6B, 0x19, 0xE3, 0x45, 0x9E, 0xAD, 0xD7, 0x4D, - 0xD7, 0xF6, 0x9D, 0x52, 0xAB, 0x75, 0xB3, 0x58, 0xAC, 0x46, 0xC3, 0xF2, 0xE8, 0x70, 0xD7, 0x5B, - 0x77, 0x7A, 0x7A, 0xCE, 0x39, 0x0F, 0x3E, 0x18, 0xA3, 0x19, 0xC6, 0x45, 0x0A, 0xB3, 0xB0, 0x5E, - 0x69, 0x03, 0x11, 0x9C, 0x0F, 0x75, 0xDD, 0x52, 0xC6, 0x9C, 0xF3, 0x52, 0x08, 0xA5, 0xF4, 0xBA, - 0xEE, 0x3E, 0x78, 0xEF, 0x9E, 0xB6, 0x7E, 0x33, 0xBA, 0x25, 0xB3, 0x1A, 0xE7, 0x9D, 0xF5, 0x7D, - 0x0A, 0xC1, 0xB3, 0x0E, 0x21, 0xE4, 0x9D, 0x4B, 0x4D, 0x4D, 0x9A, 0xA0, 0xD3, 0x8C, 0xD9, 0x2B, - 0xBD, 0x39, 0x87, 0x00, 0x50, 0x32, 0x86, 0xA3, 0xB4, 0xEB, 0x55, 0xC2, 0x98, 0x92, 0xB9, 0x18, - 0xA1, 0x44, 0x1B, 0x9B, 0x8C, 0x15, 0x01, 0x01, 0xA5, 0x24, 0xAD, 0xF9, 0xE7, 0x8B, 0x55, 0xBA, - 0x08, 0x93, 0xE6, 0x05, 0x01, 0x20, 0x04, 0xD6, 0xD8, 0x55, 0xDD, 0xAE, 0xD6, 0xCD, 0x87, 0x4F, - 0x1E, 0x05, 0x1F, 0x52, 0x53, 0x0B, 0x61, 0xD3, 0x95, 0x45, 0x00, 0x78, 0x67, 0x76, 0xFA, 0x6E, - 0x73, 0x65, 0xB4, 0xF9, 0xD5, 0x6F, 0x9E, 0xAE, 0xD6, 0xED, 0x66, 0xC3, 0xA3, 0x0D, 0xC6, 0x58, - 0x48, 0x8E, 0xB6, 0xE4, 0x1E, 0x00, 0x48, 0xED, 0x76, 0xB2, 0xB8, 0x23, 0x84, 0x50, 0x82, 0x94, - 0xB2, 0x82, 0xD3, 0x08, 0x68, 0xB5, 0x6E, 0x38, 0x67, 0x36, 0xED, 0x2B, 0xD0, 0xA6, 0xA7, 0x8B, - 0x01, 0xF6, 0x77, 0xC7, 0x45, 0x2E, 0x12, 0x5A, 0x6F, 0xAC, 0xF5, 0x3E, 0xF9, 0x0E, 0xD2, 0x34, - 0x76, 0x84, 0x08, 0x49, 0xDE, 0x48, 0x08, 0xB2, 0xD6, 0x59, 0xEB, 0x00, 0x91, 0x44, 0xC3, 0x0C, - 0x3E, 0x34, 0x4D, 0x6F, 0xBC, 0xB7, 0xD6, 0x1A, 0xE3, 0x76, 0x26, 0x03, 0xE7, 0xFC, 0xF1, 0xE9, - 0x55, 0xDB, 0x29, 0xA5, 0x8D, 0xD1, 0x36, 0x39, 0xC4, 0x24, 0x20, 0xD8, 0xFB, 0x40, 0x08, 0x42, - 0x18, 0x73, 0x4A, 0x13, 0x69, 0x56, 0x1B, 0xEB, 0x43, 0x84, 0x08, 0x18, 0xE3, 0x2C, 0x93, 0x55, - 0x55, 0x28, 0xE3, 0x86, 0xC3, 0xAA, 0x1A, 0x94, 0x52, 0xCA, 0xE9, 0x74, 0x1C, 0x43, 0x5C, 0xD5, - 0x5D, 0xDB, 0xF5, 0xD6, 0x79, 0x63, 0x4C, 0x88, 0x51, 0x69, 0xB3, 0x5E, 0xB7, 0xD6, 0xFA, 0xA4, - 0x45, 0x31, 0xC6, 0xAD, 0xD6, 0x8D, 0xB6, 0x2E, 0xC6, 0x38, 0x1C, 0x94, 0x8C, 0xB2, 0xCB, 0xEB, - 0x1B, 0x84, 0x50, 0x99, 0xCB, 0x8F, 0x3F, 0xFC, 0xE0, 0x9F, 0xFE, 0xF1, 0x1F, 0xEE, 0x4E, 0xC7, - 0x8B, 0xE5, 0xFA, 0xF2, 0x7A, 0x81, 0x00, 0x31, 0x46, 0x7D, 0xF0, 0xC6, 0xFA, 0xE7, 0x2F, 0x8F, - 0x4F, 0xCF, 0x2E, 0x8F, 0xEE, 0x1D, 0x9C, 0x9C, 0x9C, 0xAD, 0x57, 0x29, 0x8D, 0x45, 0x71, 0x29, - 0xB5, 0x36, 0x5D, 0xD7, 0x5D, 0x5F, 0xCF, 0x9B, 0xBA, 0x29, 0xCB, 0xFC, 0xC9, 0xE3, 0x47, 0x5A, - 0x99, 0xD3, 0xB7, 0x17, 0xBD, 0xD2, 0x5F, 0x3F, 0x7F, 0x73, 0xB0, 0xBF, 0x5B, 0xE4, 0xB9, 0x52, - 0x8A, 0xFC, 0xCB, 0x7F, 0xF9, 0xBF, 0x48, 0xC1, 0xB3, 0xCD, 0x38, 0x13, 0x39, 0x67, 0x89, 0x17, - 0xCA, 0x18, 0x93, 0x52, 0xA4, 0x43, 0x9E, 0xB1, 0x84, 0x53, 0x93, 0xDB, 0x1A, 0x14, 0xEE, 0x84, - 0xAD, 0xDD, 0x2D, 0x55, 0x77, 0x4B, 0xD8, 0xEF, 0x7E, 0xE4, 0x77, 0xBB, 0x36, 0xD8, 0x72, 0x6B, - 0x29, 0xA5, 0x9C, 0xF3, 0x04, 0x6F, 0xA5, 0xAF, 0xA1, 0x78, 0xB3, 0x1B, 0x45, 0x5B, 0x6F, 0x37, - 0xEF, 0x83, 0xB5, 0x49, 0x5E, 0x07, 0x00, 0xA0, 0xB4, 0x4D, 0x11, 0xAD, 0x21, 0x44, 0x63, 0x9C, - 0x31, 0x1B, 0x41, 0x96, 0xE0, 0x14, 0x61, 0x94, 0x96, 0xD1, 0xCE, 0xBB, 0xF4, 0x96, 0x10, 0x4A, - 0x10, 0x46, 0x31, 0x26, 0x21, 0x70, 0x08, 0x21, 0x89, 0x3A, 0x63, 0x5A, 0x12, 0x13, 0x42, 0x51, - 0x8A, 0x1C, 0xB8, 0xF3, 0xD3, 0x61, 0x8C, 0x97, 0xF3, 0xF9, 0xE5, 0xF9, 0x85, 0xD2, 0x4E, 0x30, - 0x82, 0x10, 0xF4, 0xCA, 0x70, 0x86, 0x8D, 0x35, 0xE9, 0x8A, 0x89, 0x00, 0x6D, 0x67, 0xEA, 0x56, - 0xA7, 0x96, 0x36, 0xB9, 0x1F, 0xA6, 0x5B, 0xF4, 0x83, 0xF7, 0x0E, 0x7D, 0x88, 0x9C, 0xB1, 0x7B, - 0xFB, 0xD3, 0x64, 0x39, 0x30, 0x1E, 0x95, 0x00, 0xC9, 0x71, 0xC9, 0x1B, 0x6D, 0x10, 0xA0, 0x75, - 0xDD, 0x22, 0x04, 0x9C, 0x31, 0x84, 0x91, 0x31, 0xB6, 0xA9, 0xDB, 0xD1, 0xA0, 0x9C, 0x4C, 0x46, - 0x69, 0x9F, 0x4D, 0x29, 0xC5, 0x04, 0x33, 0x46, 0xB3, 0x5C, 0x4A, 0xC1, 0x29, 0xA3, 0x32, 0x93, - 0x9B, 0x49, 0xF9, 0x4E, 0xB7, 0x7B, 0x7B, 0xBA, 0xC4, 0x18, 0xBD, 0x0F, 0x5A, 0xE9, 0x5E, 0x69, - 0xD5, 0xAB, 0xAE, 0xD7, 0x67, 0xE7, 0xB3, 0xA7, 0xAF, 0x2E, 0xDE, 0x9C, 0xCD, 0x9C, 0x8F, 0x46, - 0xDB, 0xB2, 0xCC, 0x53, 0x2C, 0xC0, 0xA0, 0x2A, 0x62, 0x8C, 0xB3, 0xC5, 0x5A, 0x1B, 0xD7, 0x2B, - 0xA3, 0xB5, 0xBD, 0xBA, 0x59, 0x34, 0x6D, 0x4F, 0x29, 0xA5, 0x8C, 0x28, 0x65, 0x9C, 0xF3, 0x99, - 0x94, 0xD3, 0xE9, 0x48, 0x4A, 0xB1, 0x5C, 0xD5, 0x57, 0xB3, 0x79, 0x55, 0x95, 0xA7, 0x67, 0x97, - 0xC6, 0x58, 0xEF, 0xC3, 0x6A, 0xB5, 0xDE, 0xDD, 0xDD, 0xC9, 0x38, 0xE3, 0x52, 0x2C, 0x96, 0x2B, - 0x8C, 0x30, 0x02, 0xD8, 0x99, 0x0C, 0x76, 0x86, 0x05, 0x00, 0xD4, 0x75, 0xD3, 0x77, 0xFD, 0xCE, - 0xCE, 0x88, 0x60, 0x34, 0xA8, 0xF2, 0x24, 0x9E, 0xEF, 0x7B, 0xB5, 0x5A, 0x77, 0x84, 0x10, 0xEB, - 0xFC, 0x7C, 0xB1, 0x96, 0x82, 0x67, 0x92, 0x87, 0x10, 0x32, 0x29, 0xC6, 0xC3, 0x12, 0x21, 0xB4, - 0x33, 0x1D, 0x7F, 0xF2, 0xD1, 0x93, 0xF9, 0x7C, 0x39, 0xBB, 0x59, 0xC4, 0x18, 0x6F, 0xF5, 0xBD, - 0x8C, 0x31, 0xC6, 0x58, 0x72, 0x03, 0xE8, 0x7A, 0x05, 0x80, 0xD2, 0x29, 0x22, 0x05, 0xD7, 0xC6, - 0xC4, 0x18, 0x31, 0x82, 0x94, 0x29, 0x87, 0x10, 0x0A, 0x21, 0xEE, 0xED, 0x4E, 0xB3, 0x4C, 0xB4, - 0x5D, 0x4F, 0x09, 0x49, 0xD3, 0x60, 0x8A, 0x65, 0xD0, 0xDA, 0x50, 0xC6, 0x76, 0x26, 0x23, 0x4C, - 0x52, 0xFC, 0x0D, 0x6F, 0xBB, 0xDE, 0x39, 0x5F, 0x16, 0x39, 0xA5, 0x44, 0x29, 0xC3, 0x68, 0x22, - 0xFD, 0x59, 0x42, 0x48, 0xDB, 0xF4, 0x87, 0xFB, 0xD3, 0xD1, 0xA0, 0x72, 0xCE, 0x6F, 0x16, 0x0B, - 0xE9, 0x1A, 0x06, 0xD8, 0x4A, 0xC8, 0xDF, 0x2D, 0xA9, 0x28, 0xA5, 0x57, 0xB3, 0xF9, 0x57, 0xDF, - 0xBC, 0x9A, 0x4E, 0x27, 0x4A, 0x69, 0xC1, 0xA9, 0xB1, 0x36, 0x95, 0xBB, 0x98, 0x3A, 0x1D, 0x63, - 0x52, 0xE6, 0x66, 0x4A, 0xAC, 0x48, 0xA7, 0x28, 0x00, 0x58, 0xE7, 0x85, 0x48, 0xFE, 0x88, 0x94, - 0x12, 0xE2, 0x7D, 0x50, 0xC6, 0x58, 0xE7, 0xAD, 0xF5, 0x00, 0xF1, 0x8F, 0x3E, 0x79, 0x72, 0x74, - 0x30, 0xC9, 0x33, 0xD1, 0x2B, 0xE3, 0x7C, 0xD0, 0xD6, 0x16, 0x99, 0xC4, 0x04, 0x2B, 0x65, 0xB7, - 0xF6, 0x0F, 0x1B, 0x4A, 0xA6, 0xE0, 0x4C, 0x6B, 0x63, 0x5D, 0x00, 0x00, 0x29, 0x12, 0xC6, 0x6F, - 0x5C, 0x08, 0x21, 0x44, 0xA3, 0x6D, 0x6A, 0x00, 0x53, 0xAD, 0xCC, 0xA4, 0xC4, 0x08, 0x19, 0x63, - 0x13, 0xD6, 0x42, 0x28, 0x49, 0x86, 0x57, 0x31, 0x46, 0x8A, 0xB1, 0x60, 0x8C, 0x12, 0xE4, 0x7C, - 0x6C, 0x3A, 0xB5, 0x58, 0x35, 0x94, 0x52, 0x6D, 0xDC, 0xD5, 0xCD, 0x32, 0xCB, 0xE4, 0xCE, 0x64, - 0x24, 0x04, 0xCF, 0xA5, 0xD8, 0xDF, 0x9D, 0x8C, 0x47, 0x83, 0xC9, 0x78, 0xF8, 0xF0, 0xFE, 0x81, - 0x73, 0xFE, 0xFC, 0xE2, 0x3A, 0x01, 0x64, 0x6D, 0xAF, 0x8C, 0x35, 0xC6, 0xB9, 0xA6, 0x6D, 0xBD, - 0x8F, 0x42, 0xF0, 0xD5, 0xBA, 0x69, 0xBB, 0xBE, 0x57, 0x5A, 0x69, 0x33, 0x1A, 0x56, 0x21, 0xC2, - 0x74, 0x67, 0xFC, 0xA7, 0xFF, 0xE4, 0x27, 0x3F, 0xF8, 0xDE, 0x7B, 0xC6, 0xD8, 0x97, 0x6F, 0xCE, - 0x66, 0x37, 0x4B, 0xEB, 0x9C, 0x4E, 0xC3, 0x1F, 0x46, 0x6F, 0xCE, 0x2E, 0x4E, 0x4E, 0xCF, 0x87, - 0x55, 0xB9, 0x58, 0xAD, 0xCF, 0x4E, 0x2E, 0x28, 0xC6, 0x32, 0x93, 0x79, 0x9E, 0x79, 0xEF, 0xAD, - 0x31, 0x08, 0x41, 0x96, 0x49, 0x4A, 0xE9, 0x62, 0xB1, 0x5E, 0xD7, 0x4D, 0xD3, 0xB5, 0x4D, 0xDD, - 0x3D, 0x7B, 0xF1, 0xE6, 0x47, 0x3F, 0xFC, 0x28, 0x46, 0xF8, 0xED, 0x57, 0xCF, 0xF6, 0x76, 0xA7, - 0xF4, 0xF6, 0x78, 0x07, 0x78, 0x87, 0x1A, 0xBD, 0xAB, 0x59, 0x9B, 0xFC, 0xE4, 0x77, 0x5F, 0x93, - 0xDA, 0xB1, 0xBB, 0x1B, 0x80, 0xFF, 0x1F, 0x8F, 0xB8, 0x15, 0xAF, 0xDF, 0x06, 0x7E, 0x90, 0x3B, - 0x01, 0x97, 0x31, 0x04, 0x08, 0x31, 0x99, 0x78, 0x6F, 0x7C, 0xD1, 0xB6, 0x4B, 0x4F, 0x6D, 0x6C, - 0x42, 0xD0, 0x31, 0xC6, 0x04, 0xA3, 0xC4, 0x15, 0x82, 0x8D, 0x94, 0x04, 0x51, 0x82, 0x04, 0xA7, - 0xA9, 0xCA, 0xF8, 0xE0, 0x63, 0x8C, 0x18, 0x61, 0xC6, 0x08, 0xDD, 0xFC, 0x3A, 0xE9, 0x78, 0xDD, - 0xFC, 0x16, 0x21, 0x84, 0x18, 0x13, 0xBF, 0x97, 0xA0, 0xBB, 0xC8, 0xDD, 0x9D, 0x07, 0x25, 0x38, - 0x25, 0x1E, 0x50, 0x82, 0x62, 0x08, 0x94, 0x12, 0x1F, 0x92, 0x96, 0x4D, 0x95, 0x79, 0x16, 0x22, - 0x0C, 0xCA, 0xEC, 0x7A, 0xD1, 0x52, 0x00, 0x40, 0x98, 0x32, 0xAA, 0x8D, 0xE3, 0x3C, 0x1C, 0x1D, - 0xED, 0x8D, 0x06, 0xE5, 0xBA, 0xE9, 0x62, 0x0C, 0x67, 0xE7, 0x97, 0x69, 0xB3, 0x13, 0x23, 0x2C, - 0x97, 0x75, 0x8C, 0x71, 0x32, 0x19, 0x12, 0x82, 0xDB, 0xB6, 0x9F, 0xDD, 0x2C, 0x29, 0xC6, 0x93, - 0xC9, 0x90, 0x52, 0x62, 0x8C, 0x09, 0xCE, 0x8E, 0x46, 0x43, 0xC2, 0x68, 0xAA, 0xBC, 0xB7, 0xB3, - 0xFC, 0xDD, 0x33, 0x63, 0xAB, 0xBA, 0x07, 0xD8, 0x10, 0x2C, 0xF1, 0x6D, 0x23, 0xE6, 0x9D, 0x5F, - 0xAF, 0x1B, 0xA5, 0x35, 0x63, 0xAC, 0xEF, 0xCD, 0xF3, 0xE3, 0xCB, 0x9B, 0x45, 0x53, 0x14, 0x05, - 0xA5, 0xB6, 0x69, 0xDA, 0xAA, 0x2A, 0x19, 0x67, 0x21, 0x84, 0x32, 0x97, 0x4A, 0x5B, 0xE3, 0x5C, - 0xD3, 0xE9, 0xA6, 0x5D, 0x15, 0x39, 0x0F, 0x01, 0x62, 0x84, 0x3C, 0xCF, 0xD2, 0x91, 0x10, 0x7C, - 0x02, 0x47, 0xBC, 0x56, 0xBA, 0xCC, 0x33, 0x4E, 0xE9, 0xD7, 0xCF, 0x5E, 0x11, 0x4A, 0x1E, 0x1C, - 0x1D, 0xBE, 0x7C, 0xF9, 0x0A, 0x63, 0xE2, 0x9C, 0xBB, 0xBA, 0x9E, 0xDD, 0xDB, 0x9F, 0x62, 0x82, - 0xF7, 0x76, 0xA7, 0x5D, 0xD7, 0x0B, 0x46, 0x73, 0x29, 0xB4, 0xB6, 0xE3, 0x41, 0x41, 0x50, 0x81, - 0x20, 0x62, 0x80, 0xFD, 0xBD, 0x69, 0xBA, 0xAB, 0x63, 0x08, 0xD6, 0x98, 0xD5, 0x6A, 0x7D, 0xFA, - 0xF6, 0x12, 0x51, 0x36, 0x1E, 0x0E, 0x5E, 0x1E, 0x9F, 0x3D, 0xBC, 0x7F, 0x80, 0x10, 0x6A, 0xBA, - 0x5E, 0x08, 0xC6, 0x28, 0xC9, 0x38, 0xF3, 0xDE, 0x7F, 0xFC, 0x83, 0xC7, 0x2F, 0x5E, 0x1E, 0x27, - 0xCD, 0x26, 0xC4, 0x18, 0x62, 0x5C, 0xAD, 0x6B, 0x40, 0xC0, 0x19, 0xF5, 0xDE, 0x53, 0x9A, 0xC8, - 0x8C, 0x91, 0x20, 0x14, 0x63, 0x14, 0x9C, 0xC6, 0x88, 0x42, 0xF0, 0xCE, 0x79, 0x21, 0x44, 0xDF, - 0x77, 0x45, 0x9E, 0x25, 0x28, 0x4D, 0x70, 0xDE, 0x75, 0x7D, 0xB2, 0xC7, 0x48, 0x40, 0x08, 0xA5, - 0x74, 0xBD, 0x6E, 0x9C, 0x73, 0x83, 0xAA, 0x88, 0x31, 0x10, 0x4C, 0xF3, 0x4C, 0x5E, 0xCD, 0xE6, - 0x55, 0x99, 0xA7, 0x5C, 0x2B, 0x8C, 0x90, 0xF7, 0x9E, 0x12, 0x42, 0x31, 0x68, 0xE7, 0x5E, 0x9F, - 0xBC, 0xBD, 0x7F, 0x6F, 0x7F, 0x7B, 0x5A, 0xDC, 0x41, 0xF9, 0x23, 0x78, 0xE4, 0x6F, 0x01, 0xB3, - 0x10, 0x20, 0xC9, 0x09, 0x42, 0x8C, 0x37, 0xF3, 0x05, 0xDD, 0xD0, 0x2C, 0xF0, 0xED, 0xF7, 0x44, - 0x04, 0x21, 0x04, 0xAD, 0x15, 0xC6, 0xC8, 0x87, 0x80, 0x3C, 0x10, 0x82, 0xD3, 0x41, 0x4C, 0x08, - 0xB2, 0x2E, 0x79, 0x6D, 0x7A, 0x82, 0xD0, 0xA0, 0xCA, 0x05, 0xA7, 0xEB, 0xB6, 0x77, 0xD6, 0xA7, - 0x79, 0x22, 0x55, 0xD8, 0x64, 0x27, 0x29, 0x18, 0x8B, 0x10, 0x9D, 0x75, 0x84, 0xA0, 0xE0, 0x23, - 0x21, 0x29, 0x6B, 0xD1, 0x23, 0x40, 0x18, 0x61, 0x29, 0xA5, 0x69, 0x3A, 0x82, 0x51, 0x4A, 0x74, - 0xEE, 0x95, 0xB1, 0xCE, 0xDD, 0x7A, 0xCC, 0xD4, 0x4D, 0x87, 0x10, 0x4A, 0xC6, 0x67, 0x21, 0x04, - 0xC6, 0xD8, 0xED, 0xF5, 0xC3, 0x28, 0xED, 0xB5, 0x8D, 0x31, 0x4A, 0xC1, 0x03, 0x80, 0x75, 0x5E, - 0x29, 0xD3, 0x2B, 0x15, 0x63, 0xF8, 0xE4, 0xE3, 0x27, 0xC9, 0x29, 0x88, 0x73, 0x46, 0x09, 0x3E, - 0xBD, 0x98, 0x1D, 0xEC, 0xEF, 0x1C, 0xEE, 0x4D, 0x56, 0xEB, 0x66, 0xB9, 0xEE, 0xDA, 0xAE, 0xDF, - 0x99, 0x8E, 0x7E, 0xF8, 0xC9, 0x87, 0xBF, 0xFE, 0xFC, 0x6B, 0x1F, 0x42, 0x0C, 0x11, 0x52, 0xD7, - 0xEC, 0x63, 0xD3, 0xF6, 0x79, 0x9E, 0x11, 0x4A, 0x48, 0xA0, 0x46, 0x9B, 0xE5, 0xBA, 0xAE, 0xCA, - 0x12, 0x01, 0xFC, 0xF8, 0x93, 0xEF, 0x4F, 0x27, 0xA3, 0xE5, 0xAA, 0x79, 0xF6, 0xE2, 0xCD, 0x6A, - 0xB9, 0x92, 0x52, 0x60, 0x8C, 0xBA, 0x4E, 0xF9, 0xB0, 0x4B, 0x19, 0xC5, 0x80, 0xFE, 0xE8, 0xC7, - 0x1F, 0x33, 0x4A, 0xFF, 0xF5, 0xFF, 0xF5, 0xB7, 0x9C, 0x11, 0x84, 0x71, 0x51, 0x64, 0xBD, 0xD2, - 0x04, 0xA3, 0xE1, 0xB0, 0x04, 0x40, 0xCE, 0x5A, 0x4A, 0x30, 0x00, 0x3A, 0x39, 0x3E, 0x15, 0x52, - 0x00, 0xE0, 0x10, 0xA2, 0x52, 0xEA, 0xF1, 0x07, 0x0F, 0x08, 0xC1, 0xE7, 0x97, 0x33, 0xF2, 0x57, - 0x7F, 0xF5, 0x57, 0x70, 0xA7, 0x63, 0x4A, 0xBB, 0xC5, 0xF4, 0xD7, 0xDB, 0xC3, 0x3F, 0x06, 0x17, - 0x82, 0x8F, 0xA9, 0x8B, 0x89, 0xB7, 0xE1, 0x42, 0xDF, 0xEA, 0xB9, 0xFE, 0x83, 0xAB, 0x58, 0x8C, - 0x18, 0xFD, 0x03, 0xD5, 0x30, 0xC4, 0x04, 0xA5, 0xE2, 0x4D, 0xCE, 0x4A, 0xB2, 0xBC, 0x8D, 0xCE, - 0xBB, 0x10, 0xC2, 0x26, 0x2E, 0x6C, 0x13, 0x92, 0x1A, 0x9D, 0x0B, 0x89, 0xF8, 0xC7, 0x28, 0xCE, - 0x24, 0xCF, 0xA4, 0xD8, 0x8A, 0x4A, 0x10, 0x25, 0x84, 0xB1, 0xB4, 0x06, 0xDA, 0x18, 0xCC, 0x26, - 0x11, 0x4C, 0x7A, 0x47, 0x6F, 0x65, 0x06, 0x98, 0xFC, 0x8E, 0xEE, 0x3D, 0x46, 0x88, 0x01, 0x63, - 0x32, 0xBF, 0xB9, 0x39, 0x79, 0x73, 0xEA, 0x3C, 0x48, 0x41, 0x24, 0xA7, 0x94, 0x60, 0x41, 0xB1, - 0xB5, 0xAE, 0x28, 0x8A, 0xBE, 0x57, 0x8C, 0x92, 0xB2, 0x2A, 0xB9, 0xE0, 0xC6, 0x7A, 0x21, 0xC5, - 0xDE, 0xEE, 0x78, 0x67, 0x67, 0x94, 0x65, 0x22, 0x85, 0x03, 0xE6, 0x99, 0x40, 0x18, 0x55, 0x55, - 0xB5, 0x33, 0x19, 0x0D, 0x07, 0x65, 0x99, 0x67, 0xE3, 0xD1, 0xA0, 0x28, 0x24, 0x63, 0x0C, 0x42, - 0x58, 0x37, 0x2D, 0xC6, 0xA4, 0x2C, 0x0B, 0x42, 0x70, 0x9E, 0x09, 0xC1, 0xE9, 0x60, 0x50, 0x1D, - 0xDC, 0xDB, 0xDB, 0x04, 0x97, 0xDE, 0x69, 0x60, 0xF1, 0xD6, 0x86, 0xFB, 0xB6, 0x0B, 0xBB, 0xFB, - 0x1A, 0x86, 0x10, 0xB4, 0xD6, 0x8B, 0xC5, 0x7A, 0xB9, 0x5C, 0xAF, 0x56, 0x89, 0x60, 0x6D, 0x5F, - 0x9D, 0xCE, 0xCE, 0xAF, 0x16, 0x8C, 0x31, 0x63, 0x2D, 0x63, 0x54, 0x4A, 0x79, 0x4B, 0x29, 0xF0, - 0xDE, 0x6B, 0xEB, 0xEA, 0x56, 0x3B, 0x1F, 0x39, 0x67, 0x42, 0xB0, 0x32, 0xCF, 0xA5, 0x94, 0x00, - 0xF1, 0xF2, 0x6A, 0x06, 0x08, 0x7B, 0xE7, 0xBA, 0xB6, 0x9D, 0x8C, 0x06, 0xD3, 0x49, 0x55, 0xB7, - 0x2D, 0xC4, 0x90, 0x92, 0x09, 0xB5, 0x36, 0xEB, 0x75, 0x6D, 0x8D, 0x1E, 0x54, 0x25, 0x46, 0x88, - 0x10, 0x3A, 0x1E, 0x0D, 0xF6, 0xA6, 0xE3, 0xF9, 0x7C, 0x79, 0xEF, 0x70, 0xF7, 0x7B, 0x8F, 0x1F, - 0x32, 0x82, 0x53, 0xA0, 0x06, 0xC1, 0xA4, 0x2C, 0xF3, 0x3C, 0x13, 0xDE, 0xFB, 0xD9, 0x7C, 0x75, - 0xB3, 0x58, 0x73, 0x29, 0x87, 0x83, 0x6A, 0x36, 0x5F, 0x36, 0xAD, 0xDA, 0xDF, 0x9B, 0x62, 0x8C, - 0xAA, 0xB2, 0x28, 0x8B, 0x1C, 0x21, 0xB4, 0x58, 0x35, 0x08, 0x64, 0x54, 0x67, 0x17, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xA1, 0x4C, 0x30, 0xEB, 0x1C, 0xC2, 0x88, 0x52, 0x72, 0x7C, - 0xFC, 0x56, 0x48, 0x4E, 0x30, 0xF6, 0xCE, 0x87, 0x10, 0x38, 0xA3, 0x69, 0x2C, 0x50, 0x4A, 0x13, - 0x8C, 0xBC, 0x0F, 0x45, 0x99, 0x59, 0xBB, 0xE9, 0x35, 0xFA, 0x5E, 0x01, 0x40, 0x8A, 0xE3, 0xA4, - 0x94, 0xC5, 0x08, 0xCB, 0xD5, 0x8A, 0x31, 0xEE, 0x9C, 0x15, 0x82, 0x7B, 0xE7, 0x04, 0xE7, 0x94, - 0xB1, 0x18, 0x21, 0xCB, 0x44, 0xDF, 0xEB, 0xA4, 0x4F, 0xB3, 0xCE, 0xEE, 0x4C, 0x46, 0xDA, 0xD8, - 0x5E, 0x9B, 0x10, 0x62, 0xCA, 0xBE, 0x4B, 0xFD, 0xBC, 0x75, 0x8E, 0x31, 0x6A, 0xAD, 0x7D, 0xF2, - 0xC1, 0x03, 0xD8, 0xCA, 0x65, 0xE0, 0x96, 0x53, 0x06, 0xB7, 0x07, 0x7A, 0x62, 0xC6, 0x46, 0xC6, - 0xC8, 0xAB, 0xE3, 0xB7, 0xF3, 0xF9, 0x2A, 0x09, 0xDA, 0xD1, 0xD6, 0xCD, 0x46, 0x30, 0x86, 0x09, - 0x76, 0x3E, 0x48, 0x21, 0x92, 0x68, 0x25, 0x49, 0xC7, 0xE3, 0xD6, 0x74, 0xAF, 0xD7, 0xD6, 0xFB, - 0xE8, 0x43, 0x50, 0xDA, 0x64, 0x52, 0x60, 0x82, 0x39, 0xA3, 0x92, 0xB3, 0x41, 0x95, 0x8D, 0x87, - 0xE5, 0xEE, 0x64, 0xB8, 0xD9, 0x60, 0x62, 0x9C, 0x0C, 0x39, 0x8C, 0xB1, 0xCE, 0x7B, 0xC9, 0x68, - 0x88, 0xD1, 0xF9, 0x90, 0x70, 0xBD, 0xA4, 0x43, 0x4A, 0xCC, 0xDE, 0x24, 0x19, 0x5E, 0x37, 0xBD, - 0x75, 0x5E, 0x6B, 0xA3, 0x95, 0x4D, 0x78, 0x99, 0x0F, 0x21, 0x79, 0xD2, 0x4A, 0xC9, 0x23, 0x84, - 0x04, 0x96, 0x11, 0x82, 0xA5, 0x14, 0x79, 0x2E, 0x53, 0x0F, 0x81, 0x00, 0x18, 0xA3, 0xD6, 0xB9, - 0x5E, 0x99, 0x10, 0x20, 0x84, 0xB0, 0x58, 0xD5, 0x84, 0xD2, 0x07, 0x87, 0x7B, 0x31, 0x86, 0xB6, - 0xEB, 0x27, 0xE3, 0x11, 0x25, 0x68, 0xB1, 0x5C, 0x4B, 0x21, 0x62, 0xDC, 0xE4, 0x5A, 0x1D, 0xEC, - 0x4D, 0x09, 0xA3, 0x00, 0xD0, 0x2B, 0xED, 0x7D, 0x28, 0xF3, 0xBC, 0xDF, 0x44, 0xDB, 0x81, 0xF7, - 0xC1, 0xBB, 0x90, 0x54, 0x19, 0xDA, 0x98, 0x3C, 0xCF, 0x46, 0xA3, 0x4A, 0x08, 0x7E, 0x79, 0x39, - 0x5B, 0x2C, 0xD7, 0x89, 0xE6, 0xE9, 0x7D, 0xE8, 0x55, 0xCF, 0xB9, 0xC8, 0xF3, 0x7C, 0x30, 0x28, - 0xC6, 0x83, 0xC1, 0xEB, 0x93, 0xF3, 0xAE, 0x37, 0x01, 0x62, 0x59, 0xE4, 0x42, 0x48, 0x63, 0xDD, - 0xA0, 0x2A, 0x23, 0xC0, 0xB0, 0x2A, 0xD2, 0xA5, 0x9E, 0x3C, 0x1D, 0x18, 0xE7, 0x3B, 0xD3, 0xA9, - 0x73, 0xBE, 0x6E, 0xDA, 0x83, 0xBD, 0xC9, 0x93, 0xF7, 0x1F, 0xDC, 0x3F, 0xDC, 0xA3, 0xDF, 0x19, - 0x55, 0x22, 0xA4, 0x6E, 0x28, 0x09, 0x35, 0x52, 0x19, 0xF1, 0xDE, 0x27, 0x38, 0x7E, 0x63, 0xDA, - 0xC3, 0xB9, 0xA0, 0x5C, 0xFC, 0x87, 0xD6, 0xAF, 0xEF, 0x3C, 0x7E, 0x6F, 0x05, 0xDC, 0xF4, 0xEB, - 0x49, 0x3D, 0xB1, 0xA5, 0xB0, 0xA5, 0x46, 0x11, 0x00, 0x30, 0xC2, 0x79, 0x96, 0xA5, 0x65, 0x79, - 0xF4, 0x1B, 0xDE, 0x2C, 0x21, 0x21, 0xC4, 0x90, 0xD1, 0x0D, 0xC7, 0x38, 0x51, 0x6A, 0x11, 0x00, - 0x25, 0x18, 0x93, 0x3B, 0x85, 0x16, 0xC5, 0x64, 0xEF, 0x91, 0xFA, 0x97, 0x6F, 0x55, 0xE1, 0xDB, - 0x02, 0xB1, 0x3D, 0x75, 0x53, 0x89, 0x00, 0x88, 0x10, 0x3C, 0xA7, 0xA4, 0xD3, 0x1E, 0x01, 0x14, - 0xB9, 0x04, 0x00, 0x02, 0x01, 0xE3, 0x2C, 0xCD, 0xAD, 0x79, 0x59, 0x64, 0x55, 0xE5, 0x01, 0x87, - 0x80, 0x02, 0xA6, 0x55, 0x59, 0x10, 0x4A, 0x09, 0xAB, 0x95, 0xD2, 0xBD, 0x32, 0xBB, 0x3B, 0xA3, - 0xFD, 0xFD, 0x7D, 0xA5, 0xCD, 0xD1, 0xE1, 0x8E, 0x52, 0x3D, 0xC1, 0x68, 0x77, 0x3A, 0x49, 0xB6, - 0x45, 0x6B, 0xAD, 0x62, 0x84, 0x6A, 0x50, 0x31, 0x46, 0xFC, 0xC6, 0xE3, 0xC1, 0x30, 0xCE, 0x92, - 0x53, 0xE0, 0xED, 0x11, 0xB2, 0x45, 0xEB, 0x22, 0x7C, 0x57, 0x95, 0xB5, 0x01, 0x0A, 0x01, 0x40, - 0x2B, 0x7D, 0x71, 0x79, 0xB3, 0x5C, 0xB5, 0x09, 0x5B, 0xF1, 0xDE, 0x5D, 0xCF, 0x57, 0xD7, 0xF3, - 0xB5, 0x31, 0xAE, 0x28, 0x8A, 0xE8, 0x7C, 0xDB, 0xF5, 0xC3, 0x41, 0x55, 0x14, 0x39, 0x42, 0xC0, - 0x19, 0x25, 0x18, 0x96, 0xEB, 0x4E, 0x1B, 0x97, 0xE7, 0x42, 0x2B, 0xBD, 0x5C, 0xF6, 0x55, 0x15, - 0x54, 0x6F, 0xD6, 0x75, 0xBD, 0x5C, 0x2E, 0x76, 0x77, 0xC6, 0x9C, 0x33, 0x6B, 0xD4, 0xC5, 0xE5, - 0x6C, 0xBA, 0x33, 0xC8, 0x05, 0x37, 0x36, 0x54, 0x55, 0x41, 0x18, 0x3D, 0xDC, 0xDF, 0x1B, 0x0E, - 0x4A, 0x67, 0xCD, 0xE9, 0xD9, 0x05, 0xC6, 0x58, 0x70, 0x1E, 0x7C, 0x60, 0x8C, 0xFC, 0xE8, 0x0F, - 0x3F, 0xCA, 0x33, 0x31, 0x18, 0x56, 0x42, 0xF0, 0xBE, 0x6D, 0xAF, 0xAF, 0x6F, 0x9A, 0x65, 0x3D, - 0x9E, 0x0C, 0x1F, 0x1C, 0xED, 0xC7, 0xE0, 0x8D, 0x36, 0x37, 0xF3, 0xD5, 0xF5, 0xF5, 0xA2, 0x28, - 0x8B, 0x87, 0x0F, 0xEE, 0x65, 0x59, 0x46, 0x08, 0x06, 0x08, 0x5F, 0x7C, 0xF5, 0xFC, 0xC9, 0xE3, - 0x87, 0x3B, 0xA3, 0xC1, 0x68, 0x50, 0xF6, 0xBD, 0xAE, 0x3B, 0x35, 0x9D, 0x0C, 0xCF, 0xCE, 0xAF, - 0x18, 0xA5, 0x59, 0x2E, 0x11, 0x40, 0x88, 0x01, 0x21, 0x80, 0x08, 0x4D, 0xD3, 0x0A, 0xCE, 0x39, - 0x67, 0x21, 0x04, 0x07, 0x08, 0x00, 0xBA, 0x5E, 0x79, 0xE7, 0xA4, 0x14, 0x21, 0x84, 0x3C, 0x97, - 0xCE, 0xF9, 0xBE, 0xB7, 0x02, 0x13, 0x08, 0xD1, 0xC5, 0xC4, 0x71, 0xC5, 0xC3, 0xE1, 0x20, 0x15, - 0xBB, 0x10, 0x02, 0xC2, 0x28, 0xB1, 0x52, 0x52, 0xD0, 0xAA, 0xD6, 0x86, 0x10, 0x5C, 0xD7, 0x8D, - 0x94, 0xBC, 0xED, 0x95, 0x14, 0x3C, 0x0D, 0x6B, 0x52, 0x8A, 0xBE, 0x57, 0x42, 0x8A, 0x18, 0x62, - 0xD3, 0xB4, 0xAB, 0x75, 0x33, 0x1E, 0x55, 0x21, 0xB8, 0x8D, 0x40, 0x1C, 0x6F, 0x7C, 0xE2, 0xD1, - 0x36, 0xF1, 0x0B, 0x60, 0x83, 0xF4, 0xCF, 0x66, 0xCB, 0x64, 0x42, 0x67, 0x8C, 0xC7, 0x84, 0x58, - 0xEF, 0x42, 0x08, 0x92, 0x33, 0x67, 0x7D, 0x0A, 0x5C, 0x03, 0x40, 0xDE, 0x5B, 0xE7, 0x29, 0xDA, - 0xF2, 0xC3, 0x09, 0xC6, 0x29, 0xB9, 0x79, 0x77, 0x32, 0x84, 0x18, 0x92, 0x8F, 0x23, 0x00, 0x14, - 0x99, 0x48, 0x35, 0xA5, 0x2C, 0x32, 0xEF, 0x3D, 0xA1, 0x1B, 0xCB, 0x96, 0x04, 0xBF, 0xB8, 0x10, - 0x8C, 0xB5, 0xC9, 0x1F, 0x30, 0x81, 0x6E, 0x18, 0x6E, 0xD7, 0xEE, 0x80, 0x00, 0x69, 0x63, 0x56, - 0x75, 0x63, 0xAC, 0x63, 0x94, 0xBA, 0xE0, 0x82, 0x8F, 0x78, 0xDB, 0xA6, 0x85, 0x08, 0xBD, 0x52, - 0x31, 0xC6, 0xB2, 0x28, 0x92, 0x8E, 0x1D, 0x62, 0x54, 0x4A, 0x4B, 0xC9, 0x9D, 0x77, 0x19, 0xE6, - 0x18, 0x63, 0x80, 0x0D, 0x14, 0x3E, 0x1C, 0x54, 0x75, 0xD3, 0xFD, 0xFD, 0xCF, 0x7F, 0xF3, 0xE5, - 0x97, 0xCF, 0x62, 0x84, 0xAE, 0x57, 0xDF, 0x7F, 0xFC, 0xF0, 0x27, 0x3F, 0xFA, 0xC1, 0x62, 0x59, - 0xAF, 0x1B, 0x35, 0x19, 0x55, 0xE3, 0x51, 0x95, 0xDC, 0x03, 0x8F, 0x0E, 0xF7, 0x8A, 0x3C, 0xA7, - 0x04, 0x2D, 0x57, 0xB5, 0xB5, 0x7E, 0x32, 0x1E, 0xB5, 0x5D, 0xA7, 0x94, 0x4E, 0x13, 0x52, 0x9E, - 0xE7, 0x9C, 0x33, 0x82, 0xD1, 0xD1, 0xE1, 0xBE, 0x14, 0xBC, 0x6D, 0xFB, 0x57, 0xC7, 0x6F, 0xB5, - 0x36, 0x99, 0x14, 0x10, 0x43, 0x26, 0x45, 0x9E, 0x65, 0x28, 0xC6, 0xB6, 0x6D, 0xEB, 0x06, 0x32, - 0x29, 0x17, 0x8B, 0x95, 0xF7, 0x3E, 0xCB, 0x64, 0xDF, 0x27, 0x22, 0x35, 0x74, 0x4A, 0xF7, 0x5D, - 0xA7, 0xBA, 0x0E, 0x63, 0xEC, 0xAC, 0x37, 0xC8, 0x02, 0x42, 0x8C, 0xF1, 0xC5, 0x72, 0xD5, 0x34, - 0xCD, 0xA0, 0xAA, 0x7E, 0xF1, 0xE9, 0x6F, 0xFE, 0xE8, 0x27, 0x9F, 0x54, 0x45, 0x46, 0xEF, 0xDE, - 0x1E, 0x00, 0x31, 0x71, 0x82, 0xC0, 0xBB, 0x18, 0x43, 0x3A, 0x60, 0x21, 0x42, 0x88, 0xC1, 0x19, - 0xBB, 0xC9, 0x7F, 0xA4, 0x24, 0xC4, 0x20, 0x01, 0x08, 0x65, 0xF8, 0x0E, 0x6A, 0xF6, 0x0F, 0x3D, - 0x6E, 0x57, 0x9C, 0x77, 0x1B, 0x8A, 0xBB, 0x9F, 0xFD, 0xEE, 0x5F, 0x13, 0x08, 0x7F, 0x77, 0xBF, - 0x19, 0x63, 0x04, 0x48, 0x37, 0xCF, 0xA6, 0xEC, 0x22, 0x48, 0x4C, 0xF5, 0xE0, 0x03, 0xE0, 0x88, - 0x19, 0x45, 0x5B, 0x0B, 0xFF, 0xE4, 0xF6, 0x15, 0x21, 0x40, 0x84, 0x10, 0x30, 0x21, 0x64, 0xAB, - 0x22, 0xDD, 0x4A, 0x2F, 0x31, 0xBE, 0x25, 0x91, 0x6D, 0x8B, 0xF8, 0x66, 0x21, 0x80, 0x08, 0x03, - 0x48, 0x10, 0xC6, 0xE6, 0xD5, 0x48, 0x9B, 0x69, 0x46, 0x51, 0x99, 0x8B, 0xE4, 0xED, 0xC5, 0x19, - 0xC7, 0xD6, 0x76, 0x9D, 0xA6, 0x8C, 0x8F, 0x26, 0x13, 0x26, 0xE4, 0xBA, 0x31, 0x79, 0x91, 0xF5, - 0x0E, 0x3A, 0x6D, 0x57, 0xD7, 0x8B, 0xE1, 0x68, 0x70, 0xB4, 0x33, 0x4E, 0xE6, 0x49, 0xCB, 0xE5, - 0x6A, 0x5D, 0x77, 0x93, 0x61, 0xBE, 0xBB, 0x37, 0x96, 0x8C, 0x63, 0x82, 0x13, 0x3D, 0x35, 0x04, - 0xA0, 0x8C, 0x75, 0x5D, 0x6F, 0x8C, 0xC9, 0x33, 0x11, 0x00, 0x13, 0xC6, 0xAA, 0xB2, 0x20, 0x1B, - 0xFE, 0xFD, 0xB7, 0xAA, 0x7C, 0xDC, 0x92, 0x4E, 0x12, 0x67, 0x38, 0xB1, 0x55, 0x12, 0x51, 0xA6, - 0xED, 0xFA, 0xE5, 0xB2, 0x59, 0xAE, 0xBB, 0xF9, 0xAA, 0xCD, 0xA4, 0x54, 0xAA, 0x3B, 0xBF, 0x5E, - 0x38, 0x1F, 0x8B, 0x22, 0xE7, 0x3C, 0xAE, 0x56, 0x8D, 0x94, 0xA2, 0x28, 0x0A, 0xEB, 0x42, 0xD3, - 0xF5, 0xCE, 0x79, 0xA3, 0xB5, 0x14, 0x1C, 0x61, 0xCC, 0x18, 0xBD, 0x9A, 0xCD, 0x8B, 0x2C, 0x13, - 0x42, 0xAC, 0xD6, 0xCD, 0xAF, 0x3E, 0xFD, 0xCD, 0x60, 0x58, 0xFC, 0xF3, 0xFF, 0xE4, 0x8F, 0xF3, - 0x4C, 0x40, 0x84, 0x9D, 0x51, 0xE1, 0x9C, 0x5B, 0x2C, 0x57, 0x5D, 0x6F, 0x19, 0xE7, 0xC3, 0x61, - 0x75, 0x78, 0xB8, 0xC7, 0x19, 0x25, 0x14, 0x9F, 0x5F, 0x5C, 0xDF, 0x7F, 0x70, 0x14, 0x43, 0xD4, - 0xBD, 0x7A, 0xEF, 0xC1, 0x61, 0xF0, 0x3E, 0xD9, 0x40, 0x1E, 0x9F, 0x5E, 0xC4, 0x18, 0x05, 0x23, - 0x79, 0x59, 0x64, 0x45, 0x5E, 0x64, 0x02, 0x63, 0xEC, 0x7D, 0x74, 0xD6, 0x7A, 0xE7, 0x8D, 0xB1, - 0xCE, 0xB9, 0x75, 0xDD, 0xF4, 0xC6, 0x9D, 0x9E, 0x5D, 0x02, 0xC2, 0x22, 0xCF, 0xBF, 0xF8, 0xE6, - 0xF5, 0xD1, 0xC1, 0x74, 0x6F, 0x77, 0x92, 0x09, 0x16, 0x21, 0x1A, 0x63, 0x0E, 0xF7, 0x76, 0x32, - 0x29, 0x4F, 0x4E, 0xCF, 0x4F, 0xCF, 0x2E, 0xB3, 0x4C, 0x68, 0x6F, 0x12, 0x95, 0x64, 0xB5, 0x5A, - 0x1D, 0x1E, 0xEE, 0x0F, 0xAA, 0x72, 0xBE, 0xAC, 0x39, 0xA3, 0xC3, 0xAA, 0xEC, 0x95, 0x4A, 0xB2, - 0x5F, 0xAD, 0xB5, 0x31, 0x0E, 0x00, 0x12, 0x2B, 0x95, 0x4B, 0x79, 0x74, 0x6F, 0xDF, 0x1A, 0x6B, - 0x9D, 0x6F, 0x9A, 0x36, 0x55, 0x01, 0x88, 0x31, 0x84, 0x00, 0x10, 0x19, 0xA3, 0x69, 0xBA, 0xD4, - 0xC6, 0x26, 0x9A, 0x8E, 0x51, 0x16, 0x01, 0x50, 0x42, 0xAC, 0xF3, 0x79, 0x2E, 0xBB, 0x2E, 0x70, - 0x4A, 0x43, 0x8C, 0x75, 0xDD, 0x7C, 0xF3, 0xFC, 0xD5, 0x3F, 0xFB, 0x93, 0x3F, 0xB2, 0xD6, 0xC2, - 0xED, 0x7B, 0x91, 0x9C, 0x00, 0xDF, 0xB1, 0x32, 0x00, 0x23, 0xA4, 0x8D, 0x59, 0xAE, 0x6B, 0x63, - 0xAC, 0x0B, 0x91, 0x60, 0xDC, 0xF5, 0x7D, 0x42, 0x2D, 0xAD, 0xF7, 0x55, 0x91, 0x77, 0xBD, 0x4A, - 0xC0, 0x62, 0x4C, 0xF4, 0x5D, 0x96, 0x5C, 0x80, 0x90, 0x77, 0x5E, 0x0A, 0x96, 0x49, 0x9E, 0x4E, - 0x97, 0xBE, 0xD7, 0x09, 0x85, 0x36, 0x46, 0x71, 0x46, 0xAD, 0x0F, 0x37, 0x8B, 0x3A, 0xED, 0x85, - 0xD2, 0x4B, 0x87, 0x10, 0xB2, 0xCE, 0x09, 0xC1, 0x29, 0x42, 0x6D, 0xD7, 0xA7, 0x0A, 0x95, 0x56, - 0x1C, 0x8C, 0xB1, 0xAD, 0x51, 0x17, 0xD4, 0x75, 0xA7, 0x92, 0x5C, 0x9F, 0x31, 0x82, 0x08, 0x22, - 0xD1, 0x79, 0x87, 0x31, 0x4E, 0x42, 0xEB, 0x10, 0x62, 0xF0, 0xA1, 0xED, 0x7A, 0xCE, 0x29, 0x65, - 0x34, 0xB9, 0x9B, 0x75, 0xBD, 0x76, 0xDE, 0xE7, 0x52, 0x00, 0x40, 0x99, 0x67, 0xB9, 0x94, 0x04, - 0xE3, 0xE5, 0xBA, 0x9D, 0xCF, 0x17, 0xCE, 0x9A, 0xD3, 0xB3, 0x65, 0x88, 0x91, 0x33, 0xFE, 0x37, - 0x7F, 0xF7, 0xEB, 0xEB, 0xD9, 0xE2, 0x47, 0x3F, 0xFC, 0x90, 0x31, 0xA2, 0xB4, 0x09, 0x31, 0x16, - 0x99, 0x30, 0xD6, 0xCC, 0xE6, 0xCB, 0xC5, 0xB2, 0x11, 0x32, 0xFB, 0xE4, 0xDE, 0x41, 0x08, 0xE1, - 0xC5, 0xEB, 0xD3, 0x64, 0x09, 0xAB, 0xB4, 0xC1, 0x09, 0xC5, 0xC3, 0xF0, 0xE0, 0xE8, 0xE0, 0xDE, - 0xC1, 0x74, 0xCB, 0xB6, 0x5B, 0x61, 0x4C, 0x94, 0x36, 0x8C, 0x51, 0xCA, 0x28, 0xA7, 0x24, 0x2F, - 0x72, 0x67, 0xFD, 0xAA, 0x69, 0x62, 0x84, 0xE5, 0xAA, 0x16, 0x9C, 0x75, 0x9D, 0x83, 0x04, 0x6E, - 0x46, 0x6F, 0x95, 0x25, 0x18, 0xA7, 0xEC, 0xD4, 0x08, 0x4E, 0x69, 0x43, 0x08, 0x71, 0xEB, 0x7A, - 0x32, 0x1E, 0x29, 0x4A, 0xFB, 0x5E, 0x49, 0x5E, 0xAE, 0xD7, 0x35, 0x82, 0x48, 0x7E, 0xF6, 0xB3, - 0x9F, 0x41, 0x0C, 0x11, 0x42, 0x9A, 0xA7, 0xC2, 0xD6, 0xB4, 0x6C, 0x83, 0x1E, 0x7B, 0x1F, 0x82, - 0xB7, 0xC6, 0x5A, 0x67, 0x83, 0x0B, 0x01, 0x22, 0xA5, 0x34, 0x89, 0x84, 0x92, 0xFA, 0xF1, 0x3B, - 0xED, 0xC3, 0xBF, 0xBF, 0x4E, 0xDD, 0xDE, 0xA5, 0xFF, 0x9E, 0x99, 0x74, 0xE3, 0x0B, 0xB9, 0x7D, - 0xC4, 0x10, 0xA2, 0x0F, 0xB7, 0x1B, 0xD0, 0xCD, 0x3F, 0x84, 0x22, 0x42, 0x9B, 0x73, 0x31, 0xBD, - 0xA1, 0xA9, 0x8A, 0x71, 0xC1, 0x18, 0xA7, 0x08, 0x01, 0x21, 0x14, 0x6F, 0xA3, 0x98, 0xD2, 0xAF, - 0x72, 0xDB, 0xC2, 0x7C, 0x87, 0xDF, 0x7B, 0xFB, 0x63, 0xC4, 0x18, 0x21, 0x6E, 0x62, 0x0D, 0x53, - 0x19, 0xC2, 0x84, 0x38, 0x6B, 0xCE, 0xDF, 0x9E, 0x4B, 0x4E, 0x4B, 0x49, 0xF3, 0x22, 0x93, 0x52, - 0xF0, 0x4D, 0xA1, 0x04, 0xC6, 0xF9, 0x60, 0x58, 0x7D, 0xF9, 0xF4, 0xF8, 0xC5, 0xEB, 0x8B, 0xB3, - 0xCB, 0x79, 0xDB, 0x76, 0x65, 0x59, 0x62, 0x4A, 0xEF, 0xED, 0x8D, 0xEF, 0x1D, 0xEC, 0x8C, 0x06, - 0x05, 0xC1, 0x70, 0x3D, 0x5B, 0xEE, 0xED, 0x4E, 0xEE, 0x1F, 0xED, 0x55, 0x65, 0x99, 0xB8, 0xB9, - 0x18, 0xA3, 0x44, 0xF7, 0x25, 0x18, 0xAF, 0x57, 0xB5, 0x10, 0x82, 0x30, 0xB9, 0x5E, 0xD5, 0xF7, - 0x0F, 0x77, 0x8E, 0xEE, 0xED, 0x12, 0x4A, 0xBF, 0xF3, 0xCA, 0x7C, 0xC7, 0x01, 0x29, 0x84, 0xE0, - 0x9D, 0x73, 0x2E, 0x3A, 0xE7, 0x4F, 0xCF, 0xAE, 0xDE, 0x9C, 0x5C, 0x5D, 0xDD, 0xAC, 0xAE, 0x6F, - 0xD6, 0x08, 0x21, 0x1F, 0x62, 0xAB, 0x4C, 0x4A, 0x51, 0x33, 0xDA, 0x58, 0x6B, 0x23, 0x44, 0x4C, - 0x70, 0xDB, 0x75, 0x84, 0x12, 0x63, 0x6D, 0x9E, 0xC9, 0xA4, 0x5F, 0xC8, 0x32, 0xD9, 0xF5, 0xBD, - 0xD2, 0x26, 0x13, 0x5C, 0x4A, 0xE9, 0xAC, 0x2B, 0x4B, 0xF9, 0xFE, 0xC3, 0x7B, 0x93, 0xD1, 0x20, - 0x97, 0x42, 0x4A, 0x4A, 0x30, 0xCE, 0xA4, 0x50, 0xCA, 0x52, 0x46, 0x66, 0x37, 0x4B, 0xE7, 0xBC, - 0x73, 0xEE, 0xF9, 0xAB, 0x93, 0x61, 0x55, 0x55, 0x65, 0x3E, 0x1E, 0x0D, 0x28, 0xC1, 0x8C, 0x12, - 0x29, 0xC5, 0xE1, 0xFE, 0x4E, 0x62, 0xAE, 0x27, 0x4E, 0x3F, 0xC6, 0x38, 0x05, 0x67, 0x1C, 0x1D, - 0xEC, 0x32, 0xCE, 0x00, 0x81, 0xEA, 0x75, 0xDB, 0x2B, 0x99, 0x49, 0x4A, 0x69, 0xD7, 0x76, 0xBF, - 0xFA, 0xEC, 0xAB, 0x37, 0x6F, 0xCE, 0x2E, 0xAF, 0x6F, 0x9C, 0x73, 0x82, 0x8B, 0xA7, 0xCF, 0x5F, - 0xBF, 0x7C, 0x75, 0xE2, 0x63, 0x7C, 0x70, 0x6F, 0x8F, 0x11, 0xEA, 0x9C, 0xAF, 0xBB, 0x3E, 0xCF, - 0xB2, 0xB3, 0xF3, 0x4B, 0xB3, 0xB1, 0x0C, 0x73, 0x18, 0x61, 0x6D, 0x4C, 0xBA, 0x24, 0xB4, 0xB2, - 0x71, 0xF3, 0x1E, 0x6D, 0x7C, 0x2F, 0x9C, 0x73, 0x00, 0x88, 0x0B, 0x1E, 0x82, 0x17, 0x5C, 0x58, - 0xE7, 0x1F, 0xDE, 0x3F, 0xCC, 0x32, 0x79, 0x35, 0x9B, 0xF7, 0xBD, 0x22, 0x84, 0x22, 0x8C, 0x13, - 0x33, 0x03, 0x20, 0xDE, 0xA2, 0xAB, 0xE9, 0x15, 0x56, 0xCA, 0x84, 0x08, 0x9D, 0x52, 0x99, 0x10, - 0x08, 0xA1, 0x3C, 0x93, 0x4A, 0x1B, 0xA5, 0x4D, 0x91, 0x67, 0x18, 0xC1, 0x72, 0xB9, 0xBE, 0x77, - 0xB8, 0x3B, 0xA8, 0x8A, 0x94, 0x78, 0x82, 0xD3, 0x85, 0x89, 0x10, 0x4A, 0x19, 0x17, 0x80, 0x00, - 0x22, 0x21, 0xA4, 0xEB, 0xFB, 0xCF, 0x7E, 0xF3, 0x4C, 0x19, 0x97, 0xB4, 0xC0, 0xCE, 0x79, 0xCE, - 0x79, 0x08, 0x41, 0x70, 0x36, 0xAC, 0x4A, 0xE7, 0x5D, 0x62, 0x63, 0x45, 0x04, 0x84, 0x20, 0xC1, - 0x99, 0xF7, 0x1E, 0x23, 0x74, 0xB0, 0x3B, 0x1D, 0x56, 0x39, 0x46, 0x80, 0x31, 0x72, 0x3E, 0x32, - 0x4A, 0x10, 0xE0, 0xAE, 0x57, 0x18, 0xE3, 0x4E, 0x19, 0x6D, 0x7C, 0xDB, 0xAB, 0xE4, 0x20, 0xB6, - 0x58, 0xD7, 0x9C, 0xD3, 0x54, 0xA9, 0x01, 0x01, 0x63, 0x4C, 0x30, 0x9E, 0xA2, 0x6A, 0xD2, 0x7E, - 0x0C, 0x21, 0x94, 0x8C, 0xF3, 0x43, 0xF0, 0xF3, 0x55, 0xA3, 0x8D, 0xE3, 0x9C, 0x02, 0xA0, 0x18, - 0x21, 0x19, 0xFE, 0x58, 0xE7, 0x28, 0x65, 0x4A, 0xEB, 0x44, 0xB3, 0x48, 0xF6, 0xC5, 0xB0, 0x31, - 0x5F, 0x25, 0x5D, 0xAF, 0x28, 0x25, 0x89, 0xD1, 0x56, 0x96, 0xC5, 0xB0, 0x2A, 0x5F, 0xBC, 0x3E, - 0x39, 0x3D, 0x3B, 0xA7, 0x84, 0x68, 0xEB, 0xB2, 0x2C, 0xAB, 0xD7, 0xCD, 0x62, 0x55, 0x03, 0x44, - 0x63, 0xAD, 0x71, 0x9E, 0x31, 0x26, 0x38, 0xCB, 0x24, 0xEF, 0x94, 0xFE, 0xC5, 0xAF, 0xBE, 0x22, - 0x04, 0x8F, 0x86, 0x55, 0x55, 0xE5, 0x00, 0xF1, 0xFE, 0xBD, 0xFD, 0x61, 0x55, 0x36, 0x6D, 0xC7, - 0x18, 0x77, 0xDE, 0xA7, 0x0B, 0x20, 0x93, 0x62, 0x77, 0x67, 0xB4, 0x5A, 0xD7, 0xF7, 0x0E, 0x76, - 0xDF, 0x1C, 0xBF, 0x75, 0x2E, 0x08, 0xC1, 0x9C, 0x73, 0xCE, 0x39, 0x84, 0x31, 0xE7, 0x4C, 0x4A, - 0xC1, 0xE8, 0x46, 0x9E, 0x91, 0x76, 0xC7, 0x7D, 0xDF, 0x03, 0x82, 0x22, 0x97, 0x89, 0x00, 0x98, - 0x42, 0x18, 0x12, 0x4B, 0x2E, 0x89, 0x3D, 0x39, 0xA5, 0x75, 0xB3, 0x8E, 0x10, 0x8B, 0x4C, 0x52, - 0x42, 0x26, 0xC3, 0x8A, 0x51, 0x42, 0xFE, 0xF2, 0x67, 0x3F, 0x8B, 0x77, 0xEA, 0xD7, 0x96, 0xDC, - 0x90, 0x40, 0x70, 0x8A, 0x08, 0x86, 0x18, 0x9D, 0x75, 0xDE, 0x79, 0x9B, 0x6C, 0x95, 0x10, 0x20, - 0x8C, 0xA5, 0xCC, 0x28, 0xE3, 0x70, 0x67, 0xC6, 0x81, 0x7F, 0xB8, 0x9C, 0xDD, 0xED, 0x32, 0xEE, - 0x16, 0x8E, 0xBB, 0x15, 0xF0, 0x2E, 0xE8, 0x86, 0xBE, 0xFD, 0x6D, 0x9B, 0xFF, 0x92, 0xED, 0xB0, - 0x19, 0x37, 0x3E, 0x17, 0xE9, 0x48, 0x24, 0x34, 0x39, 0xA3, 0x6D, 0xBC, 0x9F, 0x30, 0xA6, 0x18, - 0x6D, 0xB9, 0x14, 0x77, 0x60, 0xBE, 0x5B, 0xEF, 0xD9, 0xDB, 0x5E, 0x2F, 0xDE, 0xF1, 0xE1, 0xB8, - 0xDB, 0xA0, 0xBD, 0xFB, 0x11, 0x10, 0x0E, 0xCE, 0x34, 0xCB, 0x45, 0xE2, 0x2B, 0x67, 0x92, 0x27, - 0xE7, 0xA2, 0xB2, 0xCC, 0x9D, 0x8F, 0x22, 0xCB, 0x3B, 0x1B, 0x5F, 0x9F, 0x5C, 0xAD, 0x9B, 0xAE, - 0xEF, 0xD5, 0xEE, 0xEE, 0xCE, 0x68, 0x50, 0x3E, 0x3C, 0xDA, 0x1D, 0x0F, 0x2B, 0x4A, 0xF1, 0xA0, - 0x2A, 0x00, 0x60, 0x30, 0x28, 0xDF, 0x7F, 0x74, 0xAF, 0xC8, 0x33, 0x8C, 0x49, 0xE2, 0xAC, 0xAD, - 0x96, 0xF5, 0xF9, 0xC5, 0xAC, 0xA9, 0x1B, 0x6B, 0x2D, 0x13, 0x1C, 0x10, 0x5E, 0x2C, 0x97, 0xBA, - 0x6F, 0x1F, 0x3D, 0x38, 0xA8, 0x86, 0x83, 0xBB, 0x2F, 0xC0, 0xDD, 0x59, 0xF2, 0xB6, 0x17, 0x4B, - 0xDA, 0xE6, 0x64, 0x88, 0x78, 0x79, 0xBD, 0xF2, 0x21, 0xCE, 0x97, 0x4D, 0xDB, 0xF6, 0x79, 0x2E, - 0x95, 0xF1, 0x21, 0x24, 0xB0, 0x19, 0xA5, 0x50, 0x5B, 0xC1, 0xF9, 0x68, 0x38, 0x98, 0x4C, 0x46, - 0x52, 0xB0, 0xF1, 0x70, 0x90, 0xA6, 0x95, 0x3C, 0xCF, 0xAC, 0xF5, 0x29, 0x8E, 0xB0, 0xEB, 0x7A, - 0x4A, 0x49, 0x5E, 0xE4, 0xBB, 0x3B, 0xC3, 0x94, 0x37, 0xE1, 0x37, 0x37, 0x7C, 0xCC, 0x33, 0xC1, - 0x19, 0x89, 0x00, 0x3E, 0x80, 0x73, 0xCE, 0x18, 0x67, 0x8C, 0x4D, 0xF2, 0x32, 0x4A, 0xC8, 0xC1, - 0xFE, 0x74, 0x6F, 0x2F, 0x8D, 0xC9, 0x31, 0x93, 0xA2, 0x6D, 0x3B, 0x8C, 0xC0, 0x58, 0xE3, 0xFD, - 0xE6, 0x38, 0x4C, 0x2C, 0x4D, 0xCE, 0xB9, 0xCC, 0x78, 0xF0, 0x1E, 0x10, 0x72, 0x3E, 0x9C, 0x5F, - 0xCC, 0xDE, 0x5E, 0x5C, 0xE7, 0x59, 0x86, 0x30, 0x9E, 0x2F, 0x16, 0x6F, 0x8E, 0xCF, 0xE6, 0xF3, - 0x55, 0x88, 0xE1, 0xE2, 0xE2, 0xEA, 0xFC, 0xFC, 0x3A, 0xD1, 0x53, 0x8C, 0x75, 0x97, 0x57, 0x37, - 0x21, 0xC2, 0x7A, 0x5D, 0x63, 0x8C, 0x92, 0x28, 0x95, 0x10, 0x6A, 0x8C, 0x51, 0x4A, 0xA5, 0x25, - 0xAF, 0xD2, 0x46, 0xF5, 0x3A, 0xDD, 0xC3, 0xE9, 0xB5, 0x4A, 0x6F, 0xB7, 0x75, 0x76, 0xBA, 0x33, - 0x7E, 0x7B, 0x7E, 0x7D, 0x76, 0x71, 0x25, 0x85, 0x20, 0x98, 0x84, 0x18, 0xB3, 0x2C, 0xA3, 0x94, - 0xA4, 0xFD, 0x63, 0x96, 0x89, 0x22, 0xCF, 0x19, 0xA3, 0x4A, 0x29, 0x6B, 0x5D, 0xA2, 0x3B, 0x50, - 0x46, 0x9D, 0xF3, 0xDB, 0x20, 0x0C, 0xD4, 0x29, 0x55, 0x16, 0x39, 0x21, 0xB8, 0xEB, 0xFA, 0xF5, - 0xBA, 0x7E, 0xFC, 0xE8, 0x41, 0x22, 0x25, 0xA4, 0xCF, 0x6F, 0xAE, 0x97, 0x88, 0x92, 0x6E, 0x89, - 0x53, 0x7A, 0x75, 0x3D, 0xFF, 0xEC, 0xCB, 0xE7, 0x82, 0x73, 0x00, 0x40, 0x98, 0x60, 0x8C, 0xF3, - 0x5C, 0x02, 0x20, 0x8A, 0x11, 0xA5, 0x04, 0x23, 0xA4, 0x94, 0x02, 0x04, 0x80, 0xB1, 0x60, 0x8C, - 0x11, 0x1C, 0x22, 0x38, 0xEF, 0x29, 0xC1, 0x04, 0xE3, 0x5E, 0xA9, 0x22, 0x97, 0x75, 0xDB, 0xED, - 0xEE, 0x0C, 0x31, 0x46, 0x4A, 0x9B, 0x18, 0x40, 0x69, 0x0B, 0x08, 0x22, 0x40, 0x0A, 0x94, 0x5A, - 0xAE, 0x5B, 0xEB, 0x7D, 0x59, 0xE4, 0x69, 0x28, 0x4E, 0x9B, 0x50, 0x4A, 0x09, 0x22, 0x98, 0x52, - 0xEA, 0xBC, 0xB7, 0xCE, 0x59, 0x1F, 0x20, 0x42, 0xDD, 0x74, 0x6D, 0xAF, 0x63, 0x8C, 0x99, 0x94, - 0x6D, 0xAB, 0x08, 0x21, 0x29, 0xF2, 0x02, 0x23, 0xEC, 0x83, 0x4F, 0x37, 0x0B, 0xDE, 0x44, 0x9E, - 0xA1, 0xE0, 0x3D, 0x26, 0x24, 0xC6, 0xD0, 0xF5, 0x4A, 0x4A, 0x19, 0x7C, 0x70, 0xDE, 0x37, 0x6D, - 0xD7, 0x34, 0xDD, 0xD9, 0xC5, 0xB5, 0xB3, 0x4E, 0x6B, 0x9B, 0x72, 0x91, 0x11, 0xC6, 0xC9, 0x5F, - 0xFE, 0xF1, 0xA3, 0x87, 0x1F, 0x7D, 0xF8, 0xC1, 0xFD, 0x7B, 0xBB, 0x07, 0xBB, 0x93, 0x75, 0xDD, - 0x7E, 0xF6, 0xC5, 0xB3, 0xB3, 0xF3, 0x1B, 0x82, 0xE1, 0xCF, 0xFE, 0xC9, 0x4F, 0x76, 0x27, 0x43, - 0x29, 0xA5, 0xD6, 0x26, 0xCF, 0xB3, 0xB6, 0xEB, 0xAC, 0xF3, 0x07, 0x7B, 0xD3, 0xD1, 0xB0, 0xCC, - 0x33, 0xB1, 0x3F, 0x9D, 0x1C, 0xEC, 0xEF, 0x54, 0x65, 0x71, 0x71, 0x35, 0x3B, 0x7B, 0x7B, 0x35, - 0x9D, 0x0C, 0x43, 0x08, 0xC6, 0x58, 0x8C, 0xB1, 0x31, 0x96, 0x73, 0xB6, 0x33, 0x1A, 0x16, 0x99, - 0xA4, 0x94, 0x24, 0x1A, 0x7C, 0xDB, 0x76, 0x08, 0xC1, 0x70, 0x50, 0x4E, 0xC7, 0xC3, 0x9D, 0xF1, - 0x30, 0xB1, 0xA0, 0xDB, 0xB6, 0x83, 0x18, 0x31, 0x02, 0x63, 0x8C, 0x73, 0x8E, 0x50, 0xF2, 0xFD, - 0xC7, 0x8F, 0x86, 0x83, 0x32, 0x93, 0xBC, 0xC8, 0xE4, 0x70, 0x50, 0x70, 0xC6, 0xE8, 0xD6, 0x01, - 0x3F, 0x6E, 0x5D, 0xBF, 0x02, 0x4E, 0x31, 0x96, 0x08, 0xC5, 0xE0, 0x82, 0x73, 0xC1, 0xDB, 0x18, - 0x37, 0xD9, 0xEE, 0xCE, 0x78, 0xAD, 0x6D, 0x55, 0xE5, 0xE9, 0x37, 0xB4, 0xC6, 0x38, 0xEF, 0xF0, - 0xD6, 0xEF, 0x90, 0xDC, 0x9A, 0x7B, 0xFD, 0xBE, 0x25, 0xE0, 0x77, 0xC0, 0xB8, 0x54, 0x92, 0xFE, - 0xA1, 0xD6, 0xEC, 0x5B, 0x5F, 0x76, 0x7B, 0x67, 0x6F, 0x6A, 0xDF, 0xB7, 0xCA, 0x0D, 0xC1, 0x14, - 0x10, 0x22, 0x94, 0x6E, 0x73, 0x53, 0xEE, 0x3E, 0x35, 0xA1, 0x18, 0x00, 0x90, 0x4F, 0xAE, 0xC3, - 0x18, 0x01, 0x40, 0x72, 0x8E, 0xBC, 0xE5, 0xD6, 0xC2, 0x3B, 0x62, 0x5A, 0x8A, 0x01, 0xC6, 0x9B, - 0xA9, 0x01, 0x13, 0x82, 0x31, 0xC4, 0x98, 0x71, 0xE6, 0x43, 0xA4, 0x94, 0x62, 0x4C, 0xB2, 0x2C, - 0x33, 0xC6, 0xFA, 0x00, 0x65, 0x59, 0x1A, 0x60, 0xD7, 0xB3, 0x15, 0x65, 0xB4, 0xC8, 0xE5, 0xDE, - 0xEE, 0xCE, 0x64, 0x5C, 0x0D, 0x2A, 0x39, 0x28, 0xB3, 0x94, 0x68, 0x67, 0x8C, 0x13, 0x42, 0x16, - 0x65, 0xC1, 0x18, 0x4D, 0x9C, 0x4C, 0xA3, 0x8D, 0xB1, 0x66, 0xBE, 0x58, 0x7B, 0xEF, 0x39, 0x17, - 0x3E, 0xC4, 0xA2, 0x28, 0xCE, 0xCE, 0x2F, 0x9C, 0xF3, 0xFB, 0x07, 0xFB, 0x59, 0x91, 0xA3, 0x3B, - 0x65, 0xF7, 0xEE, 0x9F, 0xA9, 0x27, 0x8D, 0xC1, 0x6B, 0x63, 0xB5, 0xD2, 0x4A, 0x9B, 0xF3, 0xCB, - 0x9B, 0xF9, 0xB2, 0x73, 0x21, 0x6A, 0x6D, 0x97, 0xAB, 0x1A, 0x10, 0x6A, 0x3B, 0xD3, 0x2B, 0x8D, - 0x08, 0x1E, 0x0D, 0x87, 0x08, 0x41, 0xD7, 0x6B, 0x67, 0xB9, 0x90, 0xF2, 0xFA, 0x66, 0x01, 0x10, - 0x87, 0x83, 0x41, 0x08, 0x71, 0x3E, 0x5F, 0x29, 0xAD, 0x23, 0x20, 0x1F, 0x62, 0xD7, 0xF5, 0x55, - 0x59, 0x88, 0x2C, 0xD3, 0xC6, 0x45, 0x40, 0x48, 0x50, 0x99, 0x49, 0x4E, 0x49, 0x48, 0x51, 0xDB, - 0x08, 0x49, 0x21, 0x38, 0xE7, 0x01, 0xD0, 0x6A, 0xDD, 0xD5, 0xDA, 0x3C, 0x7F, 0xFE, 0xFA, 0xE8, - 0xE8, 0x30, 0x86, 0xE8, 0xBD, 0xB7, 0x08, 0xFA, 0x5E, 0x55, 0x55, 0x3E, 0xA8, 0xAA, 0xBE, 0xEF, - 0x01, 0x90, 0xCC, 0xB3, 0xF5, 0x72, 0x15, 0x9C, 0x6D, 0xD7, 0x75, 0x55, 0xE6, 0x7B, 0xD3, 0x51, - 0xDF, 0xAB, 0xCB, 0xAB, 0x39, 0xA3, 0x6C, 0xD5, 0xB4, 0xC9, 0xAB, 0x52, 0x69, 0xA3, 0x8D, 0x1D, - 0x0C, 0x4A, 0xA3, 0x4D, 0x49, 0x98, 0x77, 0x3C, 0x78, 0x8D, 0x29, 0x61, 0x94, 0x08, 0x46, 0xBF, - 0x7E, 0xFA, 0x0A, 0x61, 0xFC, 0xD3, 0x1F, 0x7F, 0x5C, 0x14, 0xD9, 0x47, 0x1F, 0x3E, 0x2A, 0xCA, - 0x7C, 0xB5, 0xAA, 0x57, 0xAB, 0x55, 0x59, 0x16, 0xCB, 0x65, 0xF2, 0xF9, 0xF1, 0x99, 0xE0, 0x80, - 0xB1, 0x73, 0x8E, 0x52, 0xEA, 0x63, 0x72, 0x61, 0x09, 0x8C, 0x26, 0x07, 0x37, 0x4F, 0x30, 0x31, - 0xD6, 0xB5, 0x5D, 0x0F, 0x08, 0x92, 0xDC, 0x67, 0x30, 0xAC, 0x7A, 0xA5, 0xA7, 0x93, 0x61, 0x5D, - 0xD7, 0x5A, 0x6B, 0x84, 0x90, 0x0F, 0x81, 0x32, 0x42, 0x09, 0x59, 0xA6, 0xFC, 0x2D, 0x42, 0x8C, - 0xB5, 0x29, 0x07, 0xC4, 0xF9, 0xE0, 0x43, 0xF0, 0xDE, 0xA3, 0x18, 0x9B, 0xA6, 0xF3, 0x3E, 0x30, - 0x4A, 0xDF, 0x9C, 0x5E, 0xFE, 0xE2, 0xD7, 0x5F, 0xFE, 0xB3, 0x3F, 0xF9, 0x71, 0xDF, 0xEB, 0xBB, - 0xE7, 0xDF, 0x16, 0x86, 0x41, 0x84, 0xE2, 0xD9, 0x7C, 0x95, 0x4C, 0xD0, 0x12, 0x7C, 0x3C, 0x1A, - 0x0E, 0x22, 0x02, 0xC6, 0x59, 0xF0, 0xCE, 0x59, 0x9B, 0xB0, 0x73, 0x82, 0x01, 0x6D, 0x2F, 0xBF, - 0x24, 0xEA, 0x3C, 0xBF, 0x9A, 0x5F, 0xCD, 0x16, 0x65, 0x99, 0x0F, 0xAB, 0x72, 0xB5, 0xEE, 0x31, - 0x26, 0x83, 0x32, 0x2B, 0x32, 0x39, 0x5F, 0x36, 0x21, 0x04, 0xE7, 0x62, 0x8C, 0x71, 0x19, 0x5A, - 0xE7, 0xD7, 0x4A, 0x1B, 0x4C, 0x70, 0x04, 0x94, 0x4B, 0x4E, 0x08, 0x49, 0x46, 0xA9, 0x08, 0x23, - 0xDD, 0x1B, 0x4F, 0x43, 0x32, 0xEF, 0x88, 0x21, 0xBA, 0xE8, 0xBA, 0x5E, 0x13, 0x82, 0x69, 0x20, - 0x69, 0xBA, 0x44, 0x18, 0x9C, 0xF5, 0x08, 0xA1, 0xB0, 0xC9, 0x24, 0x43, 0x31, 0xC6, 0x10, 0x03, - 0xA3, 0x22, 0x42, 0xF4, 0x3E, 0x24, 0x51, 0x5B, 0x99, 0xE7, 0x99, 0x14, 0xD6, 0x58, 0x8C, 0xB1, - 0x14, 0xE2, 0xFC, 0x62, 0xB6, 0x5C, 0xAD, 0x31, 0xC6, 0x3B, 0x93, 0xC9, 0x8F, 0x7F, 0xF4, 0x71, - 0x8C, 0xB1, 0x2A, 0x0B, 0x21, 0xD8, 0xAB, 0xD7, 0xA7, 0xFF, 0xF6, 0x6F, 0x7F, 0xB1, 0xAE, 0xEB, - 0xEF, 0x3D, 0x79, 0x1F, 0x62, 0x78, 0x7B, 0x71, 0xBD, 0x5A, 0x37, 0xD7, 0x37, 0x8B, 0xB6, 0xEB, - 0x8E, 0xDF, 0xCE, 0xBA, 0x5E, 0x7D, 0xFA, 0xEB, 0x2F, 0xDF, 0x7B, 0x70, 0xF8, 0xD1, 0x87, 0x1F, - 0x08, 0x29, 0xD6, 0xEB, 0xB7, 0x99, 0xE4, 0x65, 0x91, 0xBD, 0xF7, 0xE0, 0xE0, 0x93, 0x0F, 0xDF, - 0xBF, 0xBC, 0x9E, 0xFF, 0xFA, 0xB7, 0x4F, 0xDB, 0xAE, 0xB7, 0xCE, 0x85, 0x10, 0xA5, 0x90, 0x89, - 0x3B, 0xD2, 0x75, 0xEA, 0x6A, 0xB6, 0xD8, 0x19, 0x0D, 0xF2, 0x14, 0x37, 0x91, 0x89, 0xB2, 0xC8, - 0x29, 0xC1, 0x49, 0x00, 0xC0, 0x39, 0x4B, 0xB7, 0x92, 0xD6, 0x9A, 0x12, 0xA4, 0xB5, 0x49, 0x22, - 0x50, 0x40, 0xF0, 0xA3, 0x4F, 0x3E, 0xFC, 0xDE, 0xE3, 0x47, 0x57, 0xD7, 0xD7, 0x28, 0x42, 0x9E, - 0xCB, 0x41, 0x95, 0x8B, 0xB4, 0xE8, 0x0D, 0x21, 0x06, 0xEF, 0xA2, 0xF7, 0x1B, 0x90, 0x9B, 0xB0, - 0xE0, 0x21, 0x46, 0xEF, 0x8C, 0x31, 0x1B, 0x68, 0x0C, 0x45, 0x88, 0x31, 0x44, 0xEF, 0x3C, 0x25, - 0x44, 0x70, 0x81, 0xF1, 0x06, 0xCD, 0xB1, 0xC6, 0x01, 0x80, 0x0F, 0x1E, 0x01, 0x12, 0x9C, 0x23, - 0x8C, 0x30, 0x20, 0xCA, 0x58, 0x5A, 0x38, 0xC2, 0xB7, 0xC7, 0xB7, 0xEF, 0xD4, 0x2A, 0x00, 0xF8, - 0x5D, 0x4F, 0x81, 0x2D, 0xDC, 0x9F, 0xBA, 0xBC, 0xC4, 0xDE, 0x89, 0x21, 0xFA, 0x18, 0x42, 0x0C, - 0x11, 0x6D, 0x83, 0x97, 0x30, 0x4E, 0x3E, 0x99, 0x18, 0x21, 0x9C, 0x8C, 0xF7, 0xB7, 0x42, 0xDE, - 0x08, 0xDB, 0x3C, 0x11, 0x00, 0x88, 0x90, 0x3C, 0xCE, 0x29, 0x49, 0x76, 0x8C, 0x11, 0x41, 0x0A, - 0xBD, 0xC7, 0x9B, 0x79, 0x0D, 0x6D, 0xD2, 0xBC, 0x13, 0xCA, 0x8E, 0x01, 0x61, 0x88, 0x31, 0x35, - 0xF2, 0x80, 0xC0, 0x6A, 0x85, 0x10, 0x62, 0x9C, 0x0A, 0xC1, 0x85, 0x10, 0x45, 0x55, 0x31, 0x63, - 0x97, 0x8D, 0x51, 0x3E, 0x1A, 0xEB, 0x29, 0x21, 0x45, 0x9E, 0x97, 0x45, 0xCE, 0x28, 0xD9, 0x19, - 0x0F, 0xA5, 0xE4, 0x69, 0xF5, 0x9E, 0x36, 0x4A, 0x08, 0x21, 0x88, 0x60, 0xB4, 0x75, 0xD6, 0xF6, - 0x21, 0x74, 0x9D, 0x32, 0xDA, 0x60, 0x8C, 0xAB, 0x41, 0x85, 0x31, 0xD1, 0xC6, 0x36, 0x75, 0xC3, - 0x29, 0xDD, 0x9D, 0x8C, 0x3E, 0x78, 0x74, 0xAF, 0x28, 0x8B, 0x77, 0x95, 0xEB, 0xDD, 0xBD, 0x92, - 0x74, 0xC9, 0xC1, 0x18, 0x7D, 0x35, 0x5B, 0xF4, 0xCA, 0x00, 0x42, 0x5D, 0x6F, 0x2E, 0x66, 0xEB, - 0x75, 0xDD, 0x69, 0xE3, 0x9C, 0x0F, 0x84, 0xD0, 0xE9, 0xEE, 0x64, 0x3E, 0x5F, 0xCD, 0x6E, 0x16, - 0x8C, 0x71, 0x04, 0xF8, 0xDE, 0xBD, 0x7D, 0x84, 0xC9, 0xE9, 0xD9, 0xC5, 0xBA, 0xED, 0xFA, 0xBE, - 0x37, 0xDA, 0x6A, 0x65, 0xBA, 0xAE, 0xEF, 0xBA, 0xF6, 0xDE, 0xBD, 0xC3, 0x17, 0x6F, 0x4E, 0x43, - 0x88, 0xDE, 0x7B, 0x4E, 0xE9, 0x64, 0x3C, 0xC0, 0x08, 0x4D, 0xC6, 0x43, 0x3A, 0x9D, 0x5C, 0x5D, - 0x2F, 0x01, 0x22, 0xA5, 0x64, 0x32, 0xAE, 0xAC, 0x75, 0xEB, 0x65, 0xED, 0xBC, 0x57, 0xC6, 0x8D, - 0x47, 0x83, 0xCB, 0xEB, 0x79, 0x88, 0x31, 0x2F, 0x72, 0x4A, 0xE9, 0xCD, 0xCD, 0x02, 0x10, 0xCC, - 0x30, 0x16, 0x82, 0x3F, 0x7A, 0xEF, 0x68, 0x34, 0x1C, 0x28, 0xAD, 0xC7, 0xC3, 0x41, 0x55, 0xE4, - 0xD7, 0x97, 0xD7, 0xAB, 0xC5, 0x6A, 0x32, 0x2C, 0xA4, 0xE4, 0x11, 0x13, 0x21, 0xF8, 0xAB, 0xD3, - 0x8B, 0xE3, 0xD3, 0xAB, 0xA3, 0xC3, 0xBD, 0x44, 0x4C, 0x89, 0x08, 0x4D, 0x26, 0xE3, 0xF5, 0xBA, - 0xD6, 0x7D, 0xC7, 0x18, 0x3B, 0xD8, 0x2B, 0x01, 0x00, 0x62, 0xE8, 0xBB, 0x7E, 0x77, 0x32, 0x34, - 0xBD, 0xFA, 0xEC, 0xF3, 0x2F, 0x0F, 0x0F, 0xF6, 0x22, 0xC2, 0x5C, 0x8A, 0xF7, 0x1E, 0x1E, 0xFD, - 0xFC, 0x17, 0x33, 0x29, 0xBC, 0xE0, 0xCC, 0x58, 0x97, 0xAE, 0x08, 0xB2, 0x65, 0x62, 0xCB, 0x4C, - 0x58, 0xEB, 0xAC, 0x35, 0x04, 0x23, 0x44, 0x48, 0x70, 0xB6, 0x2C, 0xB2, 0xC9, 0x78, 0x50, 0x37, - 0x6D, 0x9E, 0xC9, 0x36, 0x86, 0xB6, 0xEB, 0x10, 0x86, 0x7F, 0xF4, 0xE3, 0x3F, 0xC8, 0xA5, 0xF8, - 0xDB, 0xBF, 0xFF, 0xD5, 0xC1, 0xDE, 0x74, 0x36, 0x5F, 0xF6, 0x5D, 0x1F, 0x43, 0x18, 0x54, 0x85, - 0x94, 0x32, 0x49, 0x32, 0x63, 0x0C, 0xD6, 0xDA, 0x24, 0xC5, 0x4D, 0x61, 0xDD, 0xC6, 0xBA, 0x1C, - 0xA0, 0x28, 0x64, 0xDB, 0x29, 0x42, 0xE8, 0xD7, 0xCF, 0x8E, 0x7F, 0xF0, 0xE4, 0xE1, 0xC1, 0xFE, - 0x4E, 0xAF, 0x0C, 0xC1, 0x28, 0xC6, 0x98, 0x0E, 0xCB, 0xB0, 0xF1, 0xC2, 0x86, 0xF9, 0x72, 0x05, - 0x08, 0x73, 0xCE, 0xDB, 0xAE, 0x8B, 0x00, 0x6D, 0xD7, 0x13, 0x8C, 0x11, 0xC6, 0x10, 0x83, 0x52, - 0xE9, 0xFE, 0x71, 0x9C, 0xC9, 0xE0, 0x43, 0xC2, 0xBF, 0x63, 0x88, 0xCE, 0xA7, 0x68, 0xFA, 0xB0, - 0x6E, 0x3A, 0x8C, 0x49, 0x88, 0xD1, 0xFB, 0x90, 0xB4, 0x19, 0x98, 0x10, 0x8E, 0x90, 0x71, 0xCE, - 0x1B, 0xAB, 0xB5, 0x49, 0x2E, 0xDE, 0x9C, 0xB0, 0x9B, 0xF9, 0x2A, 0x8E, 0x07, 0xB9, 0xE4, 0x8C, - 0x91, 0x10, 0x63, 0x70, 0xC1, 0x24, 0xE8, 0x00, 0xB3, 0x00, 0x21, 0xC4, 0xD8, 0x34, 0xFD, 0xBA, - 0x69, 0x19, 0xE3, 0x8C, 0x12, 0xEB, 0x3D, 0xE3, 0x29, 0x3E, 0x12, 0xE1, 0x80, 0x22, 0xA0, 0x2D, - 0xFD, 0x08, 0x18, 0xA3, 0x04, 0xA3, 0xA6, 0xED, 0x19, 0x63, 0x92, 0xF3, 0x10, 0x43, 0x55, 0x16, - 0x5A, 0x99, 0x08, 0x51, 0x72, 0xC6, 0x19, 0x9D, 0xAF, 0x56, 0x5A, 0x9B, 0x22, 0x93, 0x9C, 0xD3, - 0xCF, 0x3E, 0xFF, 0xD2, 0x3A, 0xF7, 0xE8, 0xE1, 0xFD, 0xBD, 0xBD, 0x9D, 0xF1, 0x68, 0x60, 0x8C, - 0x99, 0x2F, 0x96, 0x37, 0xF3, 0xE5, 0xC3, 0xA3, 0xBD, 0x47, 0x0F, 0x0E, 0xFF, 0xF7, 0xFF, 0xF3, - 0xDF, 0x18, 0xE3, 0xFA, 0x5E, 0x7D, 0xFE, 0xC5, 0xB3, 0x47, 0x0F, 0xEF, 0xBD, 0x7E, 0x73, 0xFA, - 0xE0, 0xC1, 0x21, 0x06, 0xF8, 0xDE, 0x07, 0x0F, 0x87, 0x83, 0x8A, 0x53, 0xEC, 0x9C, 0xE7, 0x8C, - 0x9E, 0x9C, 0x5D, 0x9C, 0xBC, 0xBD, 0x3E, 0x7D, 0x7B, 0x95, 0x66, 0x05, 0x6D, 0x6C, 0x08, 0x8A, - 0x10, 0x9C, 0x49, 0x99, 0x42, 0x66, 0xA4, 0x14, 0x94, 0x92, 0xBE, 0x8F, 0x52, 0x30, 0x8C, 0x09, - 0x63, 0xAC, 0x2A, 0x0B, 0x9D, 0xB0, 0x30, 0xEF, 0x8B, 0x5C, 0x66, 0x99, 0x18, 0x56, 0x45, 0xAF, - 0x4D, 0x99, 0xE7, 0xCE, 0x59, 0x4A, 0x69, 0x55, 0x64, 0xE7, 0x17, 0x97, 0xA9, 0x17, 0x1B, 0x94, - 0x39, 0x20, 0xA0, 0x18, 0x91, 0xBF, 0xF8, 0x8B, 0x3F, 0x4F, 0xB0, 0x53, 0x82, 0x30, 0x51, 0xBA, - 0xC5, 0x13, 0x7B, 0x2B, 0x04, 0x1F, 0x12, 0xA7, 0x3A, 0xC4, 0x10, 0x9C, 0x0F, 0xC9, 0xA7, 0x2C, - 0x2B, 0x72, 0x2E, 0x44, 0x82, 0x9C, 0x93, 0x63, 0x54, 0x4A, 0x7E, 0x86, 0x44, 0x2E, 0xC5, 0x89, - 0xF0, 0xF0, 0x0E, 0xA2, 0xFA, 0xFD, 0x85, 0xEC, 0x16, 0x05, 0xFB, 0x3D, 0x78, 0x7F, 0x8C, 0x31, - 0xDC, 0x42, 0xAC, 0x11, 0xA2, 0xF7, 0xCE, 0xB9, 0xE0, 0x7D, 0x4C, 0xCB, 0x2C, 0x92, 0x12, 0x75, - 0xF0, 0xA6, 0xDD, 0xDF, 0x4C, 0x88, 0xDB, 0xDC, 0xB7, 0xB8, 0xD1, 0xC6, 0x25, 0x0D, 0x12, 0x6C, - 0xF6, 0x8F, 0x9B, 0xA3, 0x74, 0x43, 0xB5, 0xBC, 0xFD, 0xA6, 0xDB, 0x9F, 0x25, 0xED, 0x40, 0x37, - 0xAB, 0xF6, 0x8D, 0x7F, 0x1E, 0xD2, 0x4D, 0xDD, 0x35, 0x35, 0xA5, 0x2C, 0xCB, 0x32, 0x4A, 0x31, - 0xA1, 0x74, 0xB6, 0xEC, 0x5B, 0xED, 0x8D, 0xF3, 0x4A, 0x9B, 0x18, 0xC1, 0x3A, 0x27, 0x39, 0x3F, - 0xD8, 0xDF, 0x29, 0x8A, 0x5C, 0x48, 0x81, 0x11, 0x4A, 0x66, 0x41, 0x31, 0x46, 0xE7, 0xBC, 0x0F, - 0x5E, 0x5B, 0x1B, 0x01, 0x8C, 0xB1, 0x3A, 0xF9, 0xFF, 0x08, 0x56, 0x96, 0x39, 0xE7, 0xCC, 0x28, - 0xDD, 0x6B, 0x35, 0x1A, 0x94, 0x87, 0xFB, 0xE3, 0xC1, 0xA0, 0x44, 0x77, 0x4C, 0x41, 0x62, 0x22, - 0xC1, 0xF8, 0x80, 0x62, 0xB0, 0x46, 0x9D, 0x9E, 0x5D, 0x7D, 0xF6, 0xE5, 0xCB, 0x17, 0xAF, 0xCF, - 0x7D, 0x80, 0xA6, 0xD3, 0x6F, 0xDE, 0x5E, 0xF7, 0xCA, 0x7A, 0x1F, 0xCB, 0xB2, 0xC8, 0xA4, 0x20, - 0x84, 0x0C, 0x87, 0x03, 0x63, 0xDD, 0x72, 0xDD, 0x58, 0xEB, 0x11, 0x26, 0x5D, 0xDF, 0x3B, 0x1F, - 0xDE, 0xBE, 0xBD, 0xCA, 0x32, 0xD1, 0xB7, 0xDD, 0xC5, 0xC5, 0xEC, 0xF4, 0xEC, 0xBC, 0xC8, 0x05, - 0xA7, 0x78, 0x3E, 0x5F, 0xDE, 0xDC, 0xAC, 0xCF, 0x2F, 0xAE, 0x5E, 0xBF, 0x39, 0x59, 0x2E, 0x57, - 0x14, 0x83, 0xEA, 0xFB, 0xC5, 0x62, 0xD5, 0xB6, 0xDD, 0x7A, 0xBD, 0x5E, 0x2E, 0x57, 0x27, 0x27, - 0xE7, 0xAB, 0x75, 0xDB, 0x36, 0x9D, 0x56, 0x3A, 0x2B, 0x0A, 0xC6, 0xC4, 0x7C, 0xDD, 0xD4, 0x75, - 0xAB, 0x8C, 0x3B, 0x39, 0xBB, 0xF8, 0xC5, 0xA7, 0x9F, 0xBF, 0x3E, 0x7E, 0xDB, 0x76, 0xE6, 0xF8, - 0xF4, 0xA2, 0x6E, 0xD5, 0x17, 0x5F, 0x3E, 0x2B, 0x72, 0x39, 0x1C, 0x56, 0x75, 0xDD, 0x70, 0xC6, - 0x26, 0x3B, 0xA3, 0xA3, 0xA3, 0x7D, 0xCE, 0xE8, 0x9B, 0xE3, 0xB7, 0x2E, 0xC0, 0xEE, 0xEE, 0xAE, - 0xF5, 0x81, 0x32, 0x36, 0x1C, 0x56, 0x08, 0xE1, 0xA6, 0xEB, 0xD3, 0x80, 0x3F, 0x9B, 0x2D, 0x3A, - 0x65, 0x86, 0x83, 0xC2, 0x18, 0x5B, 0xE4, 0x19, 0x67, 0x84, 0x50, 0xB2, 0x33, 0x1E, 0x49, 0xC1, - 0x11, 0xC0, 0xC5, 0xC5, 0xAC, 0xAA, 0x4A, 0x21, 0xF8, 0xCD, 0x62, 0xE5, 0xAC, 0x5D, 0xAE, 0xD6, - 0x5B, 0x53, 0x72, 0x00, 0x14, 0x05, 0xE7, 0xC9, 0xDC, 0x06, 0x21, 0x9C, 0xC2, 0x09, 0x37, 0x38, - 0x1A, 0xC6, 0x00, 0x68, 0x34, 0x1C, 0x24, 0xC3, 0x99, 0xBE, 0xD7, 0x21, 0xC6, 0xE9, 0x64, 0xBC, - 0xB7, 0x3B, 0xB9, 0xB8, 0x9C, 0x11, 0x4A, 0x9B, 0xA6, 0x09, 0x31, 0x24, 0xB7, 0x19, 0x9C, 0x58, - 0x63, 0x21, 0x14, 0x79, 0x46, 0x09, 0xE9, 0x94, 0xD2, 0xC6, 0x0D, 0x87, 0x15, 0x41, 0xD8, 0x79, - 0x6F, 0xAC, 0xCB, 0xA4, 0x28, 0x8A, 0xBC, 0x6E, 0x3A, 0xC1, 0x58, 0xD7, 0x2B, 0xA5, 0xF5, 0x74, - 0x32, 0xCC, 0x33, 0x11, 0x63, 0xC4, 0x5B, 0x5E, 0x7F, 0xBA, 0x82, 0x30, 0x42, 0x9F, 0x7E, 0xFE, - 0x74, 0xBE, 0xAC, 0x11, 0x8A, 0x31, 0x44, 0x2E, 0x78, 0x5A, 0x88, 0x27, 0xBF, 0x79, 0x46, 0x49, - 0x62, 0xE4, 0x4B, 0xC9, 0x93, 0x45, 0x9E, 0x60, 0x04, 0x22, 0xB8, 0xB0, 0xC9, 0x8A, 0x8E, 0x01, - 0x36, 0x22, 0x6D, 0x88, 0x21, 0x82, 0xD2, 0xB6, 0x69, 0xFB, 0xE4, 0xC0, 0x0E, 0x00, 0xD6, 0x59, - 0x8C, 0x49, 0xF0, 0xDE, 0x79, 0x8F, 0x11, 0x9E, 0x4E, 0x86, 0x52, 0x70, 0x6B, 0xDD, 0x96, 0x42, - 0x14, 0x43, 0x08, 0xDE, 0x85, 0x10, 0x42, 0xAF, 0x8C, 0xD2, 0xD6, 0x58, 0xEF, 0xB6, 0x14, 0x5E, - 0xBB, 0x21, 0x91, 0x6D, 0x6E, 0x64, 0xEF, 0x1D, 0xA7, 0x2C, 0x21, 0xCE, 0xC6, 0x5A, 0x00, 0x44, - 0x08, 0x49, 0xAC, 0x7D, 0x80, 0x98, 0x9C, 0x2C, 0x31, 0x02, 0xAD, 0x4D, 0xD3, 0x76, 0x94, 0xD2, - 0x22, 0x17, 0x07, 0x07, 0xFB, 0xD6, 0xB9, 0xAA, 0xCC, 0x23, 0x80, 0xCC, 0x44, 0x26, 0x05, 0x63, - 0xF4, 0x7A, 0xB6, 0x18, 0x0F, 0x87, 0x52, 0xB0, 0x7F, 0xFC, 0x93, 0x8F, 0x57, 0x4D, 0xBF, 0x98, - 0xAF, 0xDB, 0xB6, 0x7B, 0x73, 0x7A, 0x2E, 0x84, 0xDC, 0x9D, 0xEE, 0x7C, 0xF8, 0xF8, 0x61, 0x26, - 0x79, 0x02, 0x80, 0xFE, 0xF6, 0xEF, 0x3F, 0xFF, 0xF2, 0x9B, 0xE7, 0x93, 0xD1, 0xE0, 0xB3, 0x2F, - 0x9E, 0x09, 0x21, 0xD6, 0x75, 0x27, 0x04, 0x13, 0x9C, 0x33, 0x4A, 0xC6, 0xA3, 0x01, 0x63, 0xCC, - 0x18, 0x93, 0x09, 0x3E, 0x1D, 0x0F, 0xF7, 0x76, 0xC7, 0x45, 0x2E, 0xF2, 0x4C, 0x60, 0x8C, 0x11, - 0x02, 0x1F, 0x42, 0x96, 0xC9, 0x3C, 0x97, 0x21, 0x04, 0x82, 0xC9, 0x83, 0xFB, 0xFB, 0x0F, 0xEF, - 0xEF, 0x4F, 0x27, 0xA3, 0x87, 0xF7, 0x0F, 0xF7, 0xA6, 0xE3, 0x22, 0x93, 0xE3, 0xD1, 0x20, 0x97, - 0xDC, 0x1A, 0x27, 0x04, 0xCB, 0x33, 0x91, 0x67, 0x22, 0xA4, 0xB4, 0x8D, 0x9F, 0xFD, 0xEC, 0x2F, - 0x92, 0x5F, 0x02, 0x20, 0x84, 0x30, 0xA1, 0x8C, 0x11, 0x4A, 0x31, 0xA1, 0x08, 0x23, 0x4C, 0x28, - 0x46, 0x38, 0x01, 0x68, 0x08, 0x01, 0xC1, 0x1B, 0xDB, 0x9C, 0x2C, 0xCB, 0x31, 0x41, 0xE9, 0xE5, - 0x10, 0x42, 0x48, 0x29, 0x38, 0xE7, 0xE9, 0x2D, 0xA1, 0x8C, 0x11, 0xF6, 0x0E, 0x4F, 0xFD, 0xFF, - 0xF8, 0xF8, 0xCE, 0xBC, 0x99, 0x2E, 0x14, 0x78, 0xE7, 0xED, 0xBA, 0xAD, 0x2C, 0xDB, 0xF5, 0x70, - 0x22, 0x5B, 0xA5, 0x8F, 0x44, 0x84, 0xB7, 0xFA, 0x91, 0xF4, 0xD5, 0x1B, 0xDE, 0x33, 0xA0, 0x98, - 0xB8, 0x3E, 0x77, 0xDB, 0x9C, 0x77, 0x83, 0x2C, 0x22, 0xDB, 0xDA, 0xBD, 0xD9, 0x8C, 0xA2, 0xCD, - 0x73, 0x6E, 0x63, 0xA4, 0x01, 0x61, 0x42, 0x55, 0xBD, 0xD0, 0xAA, 0x8F, 0x01, 0xB2, 0x5C, 0x58, - 0x1F, 0xDF, 0xBC, 0x5D, 0x36, 0xCA, 0xA7, 0x3D, 0x51, 0xAF, 0x94, 0xF7, 0x31, 0x02, 0x12, 0x82, - 0xE7, 0x99, 0x48, 0x32, 0xE0, 0x34, 0xBF, 0xC4, 0x08, 0xD6, 0x79, 0x6D, 0x4C, 0xFA, 0xFF, 0x10, - 0xA2, 0x77, 0x01, 0x21, 0xC4, 0x18, 0xE5, 0x82, 0x73, 0x46, 0x19, 0x21, 0x21, 0x86, 0xAA, 0xCC, - 0xF7, 0xF7, 0x26, 0xD5, 0xB0, 0xA2, 0x84, 0xC4, 0xED, 0x00, 0x9D, 0xC8, 0x32, 0x8C, 0x10, 0x6B, - 0xF5, 0xC5, 0xE5, 0xEC, 0xD3, 0xCF, 0x5F, 0xFC, 0xF2, 0xF3, 0x17, 0x57, 0x37, 0x2B, 0x4A, 0xD9, - 0xF5, 0x62, 0x7D, 0x7E, 0xB5, 0xC0, 0x08, 0x65, 0x59, 0xCE, 0x18, 0x4D, 0xAF, 0x9A, 0xB1, 0x6E, - 0xBE, 0xA8, 0x4F, 0xCF, 0x2E, 0x7E, 0xFE, 0xE9, 0xE7, 0x4A, 0x69, 0xCE, 0x59, 0xDD, 0x76, 0x6F, - 0x8E, 0xDF, 0x5E, 0x5E, 0xCD, 0x54, 0xD7, 0xFF, 0xF6, 0x8B, 0x6F, 0x56, 0x75, 0x53, 0xE4, 0x39, - 0x25, 0xF0, 0xE8, 0xFE, 0xC1, 0x7C, 0xB9, 0x3E, 0x7B, 0x7B, 0x49, 0x08, 0x79, 0x70, 0xFF, 0xB0, - 0x2A, 0x8B, 0xE1, 0xA0, 0x8C, 0x11, 0x08, 0x25, 0xB9, 0x60, 0x28, 0xC6, 0x24, 0xA4, 0x48, 0x5A, - 0xC5, 0xD1, 0x68, 0xE8, 0x9C, 0xF7, 0x11, 0x96, 0xEB, 0xF6, 0xF9, 0x8B, 0x63, 0x6B, 0x7D, 0x26, - 0x84, 0x73, 0x61, 0xBA, 0xBB, 0xB3, 0xB7, 0x3B, 0xB9, 0x59, 0xAC, 0xDE, 0xBC, 0x39, 0xB9, 0xBC, - 0xBC, 0x7E, 0xF5, 0xE6, 0xF4, 0xC9, 0x07, 0x0F, 0x19, 0x25, 0x5D, 0xD7, 0x59, 0x63, 0x38, 0xA3, - 0x32, 0x2F, 0x44, 0x96, 0x2B, 0xA5, 0xAF, 0x67, 0x0B, 0x6B, 0xED, 0xA0, 0x2A, 0xEB, 0xA6, 0xBD, - 0x9E, 0xCD, 0x93, 0xF1, 0x61, 0xDB, 0xA9, 0xB6, 0xEB, 0x38, 0xA3, 0x9C, 0x33, 0x8C, 0x50, 0x8C, - 0xA1, 0x1A, 0x54, 0x55, 0x59, 0x3A, 0xE7, 0xBB, 0xAE, 0xC7, 0x84, 0x24, 0x76, 0xF8, 0x87, 0x8F, - 0xDF, 0x13, 0x52, 0x5C, 0xCF, 0x96, 0x4A, 0x29, 0x8C, 0xB1, 0xDB, 0xA4, 0x07, 0x21, 0x84, 0x21, - 0xA5, 0xC7, 0x27, 0x51, 0x9A, 0x10, 0x2C, 0x2F, 0x72, 0xC1, 0x59, 0xDD, 0x34, 0x79, 0x96, 0x85, - 0x10, 0x84, 0xE0, 0xBB, 0x3B, 0xE3, 0xF9, 0x62, 0x95, 0x32, 0xC4, 0x9C, 0x0B, 0xDF, 0x3C, 0x7B, - 0xD9, 0x34, 0xAD, 0x94, 0x82, 0x52, 0x6A, 0xB4, 0x49, 0x96, 0xAA, 0x29, 0x20, 0x46, 0x69, 0x4D, - 0x29, 0xAD, 0xAA, 0xC2, 0xFB, 0x60, 0x8D, 0xBD, 0xD5, 0x93, 0xA7, 0xE4, 0x51, 0x6D, 0xAC, 0xE0, - 0xCC, 0x58, 0x7B, 0x7A, 0x7E, 0xDD, 0x2B, 0xFD, 0x87, 0x1F, 0x3F, 0xB6, 0xD6, 0xA5, 0x41, 0x24, - 0x5D, 0x45, 0x08, 0x21, 0x88, 0xE1, 0x17, 0x9F, 0x7F, 0x53, 0x37, 0x7D, 0x3A, 0x22, 0x13, 0x17, - 0xC4, 0x5A, 0xBB, 0xBD, 0xD8, 0x20, 0x86, 0x90, 0x3C, 0xD3, 0x01, 0x80, 0x60, 0x44, 0x09, 0x62, - 0x94, 0x60, 0x4C, 0x30, 0x21, 0xC9, 0x54, 0x7D, 0xE3, 0x14, 0x16, 0xA3, 0xF3, 0xA1, 0x6D, 0xBB, - 0xE4, 0x8C, 0xEA, 0x7D, 0xF0, 0xDE, 0xDF, 0xD6, 0x3B, 0xAD, 0x0D, 0x26, 0x78, 0x58, 0x15, 0x49, - 0x16, 0x90, 0x64, 0x4C, 0xD6, 0x38, 0x6D, 0x5C, 0xA7, 0x0D, 0xC1, 0x38, 0xC6, 0x60, 0x7D, 0x68, - 0x7B, 0xE5, 0xBD, 0x4F, 0x61, 0x3D, 0x21, 0x80, 0x31, 0x36, 0x19, 0x43, 0x85, 0xE0, 0x11, 0xC2, - 0x21, 0x06, 0xCE, 0x68, 0x51, 0x66, 0xD6, 0x58, 0xCE, 0x39, 0x63, 0x84, 0x31, 0x8A, 0x30, 0xA4, - 0xEE, 0x52, 0x6B, 0xA3, 0x8D, 0x6D, 0x9A, 0x16, 0x10, 0x2E, 0x8B, 0x7C, 0xBE, 0x58, 0x95, 0x65, - 0x59, 0x96, 0x25, 0xC2, 0xF8, 0x7B, 0x1F, 0x3C, 0x7C, 0xFC, 0xDE, 0x51, 0x9E, 0x8B, 0xC9, 0x64, - 0x7C, 0x7E, 0x71, 0x4D, 0x09, 0xBD, 0xBE, 0x59, 0x44, 0x04, 0xC6, 0xFA, 0x37, 0x27, 0x6F, 0xCB, - 0x3C, 0x3B, 0xD8, 0xDF, 0x3B, 0x38, 0x3C, 0x58, 0xAD, 0xEB, 0x07, 0x47, 0xFB, 0x84, 0xE0, 0xA6, - 0x53, 0x17, 0x97, 0xF3, 0xB3, 0xF3, 0xAB, 0x1F, 0x7E, 0xF4, 0x64, 0x3A, 0x1D, 0x5F, 0x5D, 0xCD, - 0xA5, 0x94, 0x29, 0x61, 0x7A, 0x50, 0x16, 0xCE, 0x6F, 0xC2, 0xB3, 0x29, 0x25, 0xA3, 0x61, 0x35, - 0x1A, 0x96, 0x83, 0x2A, 0x1B, 0x94, 0x05, 0x67, 0x14, 0xA5, 0x13, 0x2B, 0x02, 0x17, 0xAC, 0x69, - 0x7B, 0xA3, 0x37, 0x59, 0xD7, 0x79, 0x9E, 0x31, 0x46, 0x29, 0x41, 0x21, 0x06, 0xC6, 0x18, 0xA5, - 0xC4, 0x18, 0x5B, 0x94, 0x59, 0x55, 0x66, 0x99, 0x14, 0x89, 0xFF, 0xCC, 0x28, 0x25, 0x7F, 0xF9, - 0xB3, 0xBF, 0xD8, 0x84, 0xF6, 0xA1, 0x84, 0xF1, 0x13, 0x42, 0xEF, 0x46, 0x7F, 0x63, 0x82, 0x92, - 0x2F, 0x18, 0xE2, 0x9C, 0x61, 0x82, 0x29, 0xA1, 0x42, 0x4A, 0x92, 0x60, 0x75, 0x42, 0xEF, 0xF2, - 0x24, 0x36, 0x0B, 0x41, 0xF8, 0x56, 0x93, 0xF5, 0x0E, 0xE3, 0xFF, 0x7F, 0xDB, 0x03, 0xC0, 0xB6, - 0x1B, 0x01, 0x94, 0x78, 0x35, 0x11, 0x50, 0x04, 0x14, 0xD3, 0xD1, 0x17, 0x51, 0xA4, 0x94, 0x30, - 0xCA, 0x31, 0xC2, 0x11, 0x60, 0x0B, 0x86, 0xC5, 0xAD, 0x3B, 0x6C, 0xDA, 0x8B, 0x6F, 0xB7, 0x07, - 0x1B, 0xEA, 0xD5, 0xB7, 0xB8, 0x57, 0xDB, 0x7F, 0x0B, 0x27, 0xFB, 0xE2, 0x2D, 0x74, 0x9B, 0xAE, - 0x39, 0x8C, 0x31, 0x4E, 0xEE, 0x3D, 0x10, 0x23, 0x40, 0x24, 0x04, 0x39, 0x67, 0x66, 0x97, 0x57, - 0xCB, 0x5A, 0xF9, 0x88, 0x22, 0x62, 0xD7, 0x2B, 0xED, 0x81, 0x94, 0x45, 0x16, 0x82, 0xDF, 0x54, - 0x3A, 0x8C, 0x38, 0xA5, 0x59, 0x2E, 0x72, 0x29, 0x93, 0x11, 0x6D, 0x9A, 0x80, 0xFC, 0x66, 0x77, - 0xB2, 0x69, 0x02, 0xD3, 0x31, 0x89, 0x30, 0x22, 0x14, 0x33, 0x4A, 0x29, 0xC1, 0x94, 0xD2, 0x4C, - 0x8A, 0xAA, 0x2A, 0x64, 0x26, 0x10, 0xDA, 0x58, 0x8D, 0xC7, 0x10, 0x31, 0x44, 0x82, 0xD1, 0x7A, - 0x5D, 0xBF, 0x7C, 0x7D, 0xF6, 0xD5, 0xD3, 0x93, 0x4F, 0x3F, 0x7F, 0x71, 0xB3, 0xEA, 0x12, 0x02, - 0xAD, 0xB5, 0xE3, 0x8C, 0x15, 0x79, 0x66, 0x8D, 0x5D, 0xAE, 0x9A, 0xE0, 0xCC, 0x62, 0xB9, 0x0E, - 0x80, 0xBF, 0xFC, 0xE6, 0xC5, 0xC9, 0xE9, 0xE5, 0xC9, 0xD9, 0xF9, 0x74, 0x3A, 0x8E, 0x31, 0x5E, - 0x5E, 0xDD, 0x34, 0x6D, 0xAF, 0x94, 0xE6, 0x8C, 0xBD, 0x7D, 0x7B, 0x19, 0x63, 0xCC, 0xB3, 0x2C, - 0xCF, 0xB2, 0xE0, 0xBD, 0xF7, 0xE1, 0x7A, 0xB6, 0xE8, 0x3A, 0x35, 0x1A, 0x0D, 0x26, 0x93, 0x51, - 0x9E, 0xE7, 0xD6, 0xB9, 0xE9, 0x78, 0xB8, 0xBF, 0x3B, 0xB9, 0x7F, 0x6F, 0xEF, 0x60, 0x7F, 0x37, - 0xC6, 0xC8, 0xA5, 0xE0, 0x82, 0xE7, 0x59, 0xEE, 0xBC, 0x7F, 0x7B, 0x39, 0x6B, 0xDA, 0xBE, 0x69, - 0xBB, 0xE1, 0x60, 0xB0, 0xBB, 0x3B, 0xE5, 0x9C, 0x9D, 0x5F, 0x5C, 0x2F, 0x57, 0xEB, 0x97, 0xAF, - 0x4E, 0xD6, 0xAB, 0x15, 0x42, 0x68, 0x50, 0xE6, 0x9C, 0xD2, 0xB3, 0xF3, 0xCB, 0x4F, 0x3E, 0x7A, - 0x32, 0x1C, 0x94, 0xAB, 0xBA, 0xED, 0x3A, 0x85, 0x10, 0xA6, 0x94, 0x51, 0xC6, 0xDA, 0x4E, 0xB5, - 0x9D, 0x5A, 0x2D, 0xD7, 0x6D, 0xDD, 0x2A, 0xAD, 0x11, 0xC6, 0x83, 0x41, 0xE5, 0xBD, 0xEF, 0xBB, - 0x9E, 0x73, 0x96, 0x17, 0x39, 0x63, 0x34, 0xCB, 0x32, 0xC6, 0x58, 0x8C, 0xB1, 0xEB, 0xFB, 0xBE, - 0xD7, 0xC1, 0x07, 0x21, 0xB8, 0xB1, 0xF6, 0xCB, 0xAF, 0x9E, 0xED, 0x4D, 0x77, 0x76, 0x77, 0x77, - 0x6E, 0x6E, 0x96, 0x00, 0x60, 0x8C, 0x21, 0x1B, 0x6D, 0x56, 0xA4, 0x94, 0xA6, 0xE8, 0x46, 0x8C, - 0x91, 0xD6, 0x36, 0x7A, 0x9F, 0x4B, 0x41, 0x30, 0x56, 0x5A, 0x03, 0x20, 0x29, 0x45, 0xE2, 0x31, - 0x21, 0x84, 0xBA, 0xBE, 0xFF, 0xE9, 0x4F, 0xFE, 0x60, 0x3C, 0xAC, 0xBE, 0x7E, 0xFA, 0x72, 0x50, - 0x55, 0x18, 0x63, 0x6D, 0x4C, 0xB2, 0x1A, 0x47, 0xC9, 0xDD, 0x04, 0xE3, 0x5E, 0xA9, 0xAA, 0x2C, - 0x11, 0x46, 0xD7, 0x37, 0x0B, 0x29, 0xA4, 0x77, 0x5E, 0x69, 0x9B, 0x0C, 0x94, 0x93, 0x47, 0xA0, - 0xB1, 0x0E, 0x01, 0x9C, 0x5F, 0xDE, 0xF8, 0xE0, 0xFF, 0xE0, 0xC3, 0x47, 0xC9, 0x63, 0x0E, 0x20, - 0x4A, 0xCE, 0x87, 0x55, 0xD6, 0x74, 0xDD, 0xDF, 0xFC, 0xFC, 0xCB, 0x34, 0x34, 0x61, 0x8C, 0x09, - 0xC6, 0xC6, 0xDA, 0x10, 0x02, 0xE7, 0x3C, 0xC4, 0x68, 0xB4, 0xA1, 0x04, 0x27, 0xA0, 0x07, 0x20, - 0x32, 0x46, 0x04, 0x67, 0x45, 0x91, 0x13, 0x42, 0x28, 0x46, 0x99, 0xE0, 0x22, 0x13, 0x9C, 0x51, - 0x46, 0x49, 0x08, 0xD1, 0x79, 0xDF, 0x76, 0x3D, 0x42, 0x28, 0xCB, 0x64, 0xAA, 0xD1, 0xC9, 0xD7, - 0xD3, 0x85, 0x40, 0x09, 0x21, 0x04, 0x17, 0x85, 0x10, 0x8C, 0x39, 0xEF, 0x29, 0x26, 0x5A, 0xDB, - 0xBA, 0xED, 0x51, 0x8A, 0xB6, 0x45, 0x40, 0x08, 0xA9, 0xDB, 0xCE, 0x59, 0x07, 0x08, 0xE5, 0x99, - 0x8C, 0x21, 0x12, 0x8C, 0xCA, 0x22, 0xDB, 0x9B, 0x8E, 0x19, 0xA5, 0x75, 0xD3, 0xE6, 0x79, 0x46, - 0x30, 0x26, 0x94, 0xA4, 0xB2, 0x15, 0x63, 0x64, 0x9C, 0x15, 0x99, 0x44, 0x31, 0xD6, 0x6D, 0x6F, - 0xAD, 0xED, 0xB5, 0x6E, 0x9B, 0x0E, 0x23, 0xF4, 0xF8, 0x83, 0x47, 0x93, 0x9D, 0x91, 0x31, 0xEE, - 0xFC, 0xFC, 0xBA, 0x2C, 0xCB, 0xA4, 0x61, 0xBA, 0xBA, 0x59, 0xC4, 0x00, 0x55, 0x21, 0x6F, 0x6E, - 0x56, 0xC7, 0xA7, 0xE7, 0x27, 0x67, 0xE7, 0xBF, 0xFC, 0xF5, 0x57, 0x97, 0x57, 0x37, 0x31, 0xC6, - 0x22, 0xCF, 0x92, 0x4D, 0x96, 0x0F, 0x41, 0x6B, 0xFB, 0xCD, 0xF3, 0x37, 0xFF, 0xF6, 0xDF, 0xFD, - 0xEA, 0xF3, 0x2F, 0xBE, 0x39, 0xD8, 0x1D, 0xFF, 0xA7, 0xFF, 0xEC, 0xA7, 0xFF, 0xEE, 0x17, 0xBF, - 0x61, 0x9C, 0xAF, 0x56, 0x75, 0xF0, 0x1E, 0x00, 0x06, 0x65, 0x4E, 0x09, 0xE9, 0x95, 0xAA, 0x9B, - 0x96, 0x51, 0xF6, 0xF0, 0xFE, 0xFE, 0xCE, 0x64, 0xC0, 0x19, 0x4D, 0xF2, 0xC7, 0x64, 0xD0, 0x16, - 0x62, 0xB4, 0xD6, 0x49, 0xC1, 0xCB, 0x22, 0xD3, 0xC6, 0x22, 0x80, 0x4C, 0xF2, 0x18, 0xA3, 0xE4, - 0x9C, 0x31, 0xAA, 0xB4, 0x01, 0x00, 0x42, 0x88, 0xE0, 0x4C, 0x6E, 0x0A, 0x18, 0xF1, 0x21, 0x86, - 0xE0, 0xC9, 0x5F, 0xFE, 0xE5, 0xCF, 0x36, 0x88, 0xD1, 0x26, 0x7E, 0x3C, 0xF9, 0xF7, 0x6F, 0xAA, - 0x40, 0x04, 0x00, 0x4C, 0x92, 0x41, 0x42, 0x62, 0xE5, 0x31, 0x21, 0x98, 0x10, 0x38, 0x41, 0x97, - 0x1B, 0x8E, 0x57, 0x8C, 0x31, 0x04, 0xEF, 0x21, 0x42, 0xF4, 0xEE, 0xB6, 0x30, 0xC5, 0x10, 0x62, - 0xF0, 0x46, 0xF7, 0x56, 0x2B, 0xBC, 0x89, 0x29, 0x8E, 0x5B, 0x0F, 0xFD, 0x6F, 0xD7, 0xAF, 0xDB, - 0x7A, 0x07, 0x00, 0x9B, 0xC3, 0xEE, 0x16, 0x3D, 0x4B, 0x75, 0x27, 0x26, 0x18, 0x0B, 0xB6, 0x5F, - 0x16, 0x20, 0x6C, 0xA3, 0xA0, 0xB7, 0xD4, 0x9E, 0x6D, 0x10, 0x4B, 0x1A, 0x72, 0xEF, 0x3E, 0x7F, - 0xDC, 0xF6, 0xE2, 0x08, 0xE3, 0x4D, 0x0D, 0xBB, 0xD3, 0xBB, 0xA5, 0x4E, 0x74, 0xDB, 0x00, 0x42, - 0x04, 0x20, 0x84, 0x5E, 0x5E, 0x5E, 0x7E, 0xF6, 0xD9, 0xD7, 0xBD, 0x89, 0xC6, 0x43, 0xA7, 0xBD, - 0x76, 0x91, 0x32, 0x56, 0xE4, 0x79, 0x8C, 0xE0, 0x7C, 0xF0, 0x31, 0xA4, 0x7D, 0xAA, 0x94, 0x3C, - 0xA5, 0x8D, 0xDE, 0xFE, 0x22, 0xA9, 0x78, 0xA5, 0x95, 0xFF, 0x2D, 0x32, 0x92, 0xBA, 0x3D, 0x8C, - 0x71, 0x88, 0x11, 0x21, 0x9C, 0x38, 0x04, 0x18, 0x93, 0x34, 0xEF, 0x78, 0xEB, 0x19, 0x21, 0x14, - 0xC3, 0xAA, 0x6E, 0x7E, 0xF3, 0xF5, 0xAB, 0x7F, 0xF3, 0x77, 0xBF, 0xF9, 0xFA, 0xD9, 0xE9, 0x8B, - 0xE3, 0x0B, 0x21, 0x65, 0x32, 0x0E, 0xCA, 0xA4, 0xA4, 0x14, 0x4B, 0x29, 0x9A, 0xB6, 0x7B, 0x73, - 0xF2, 0x76, 0x36, 0x9B, 0xDD, 0xDC, 0xAC, 0x1C, 0xA0, 0x8B, 0xEB, 0x45, 0xD3, 0x74, 0x4D, 0xD7, - 0x5B, 0x63, 0x38, 0x63, 0xEF, 0xBF, 0xFF, 0x70, 0x6F, 0x7F, 0xCF, 0x38, 0x77, 0x73, 0x33, 0xBF, - 0xB9, 0x99, 0x03, 0xC4, 0xF1, 0xA0, 0xE2, 0x9C, 0xAF, 0xD6, 0x75, 0xF0, 0x61, 0xB9, 0xAA, 0x63, - 0x84, 0xBD, 0xE9, 0x38, 0x06, 0x7F, 0x73, 0xB3, 0x38, 0x3D, 0x7D, 0xBB, 0x58, 0x2C, 0xF7, 0xA6, - 0x93, 0xF1, 0xA0, 0x1C, 0x0F, 0x0B, 0x82, 0xB1, 0x0F, 0x00, 0x08, 0x9F, 0xBD, 0xBD, 0xB4, 0x2E, - 0xAC, 0xEB, 0xCE, 0xFA, 0xF8, 0xF5, 0xD3, 0x57, 0x31, 0x80, 0x36, 0xF6, 0x57, 0xBF, 0xFE, 0xE2, - 0x97, 0x9F, 0x7D, 0xD1, 0x2B, 0xBD, 0xAE, 0x6B, 0x4E, 0xF0, 0x74, 0x32, 0x2C, 0xF2, 0xCC, 0x79, - 0x2F, 0x04, 0x6F, 0xDA, 0xFE, 0xF8, 0xE4, 0x3C, 0x44, 0x78, 0xF1, 0xF2, 0x98, 0x31, 0xD6, 0x34, - 0xAD, 0x75, 0x9E, 0x32, 0x7A, 0x78, 0xB8, 0xB7, 0xBF, 0xB7, 0xB3, 0xB3, 0x33, 0x4E, 0xA6, 0x43, - 0x42, 0x8A, 0x2C, 0xCB, 0x8E, 0x8E, 0x0E, 0x8B, 0x42, 0x16, 0xB9, 0x18, 0x8F, 0x06, 0x3E, 0x84, - 0xB8, 0x09, 0x67, 0x40, 0xCE, 0x79, 0x63, 0xED, 0xB2, 0x6E, 0xDA, 0x4E, 0x75, 0x5D, 0x1F, 0x9C, - 0xFB, 0xED, 0x57, 0xCF, 0x31, 0xA1, 0x1F, 0x7C, 0xF0, 0x60, 0xB5, 0xAA, 0xDB, 0xAE, 0xBF, 0x7D, - 0x79, 0xB3, 0x4C, 0xA6, 0x04, 0x49, 0x8C, 0x09, 0xE7, 0x4C, 0x8A, 0xE4, 0x95, 0xE9, 0x19, 0xA5, - 0x8C, 0x52, 0xEB, 0x9D, 0xB5, 0x1E, 0x63, 0x64, 0x8C, 0xDD, 0xD9, 0x19, 0xFF, 0xF4, 0x8F, 0x3E, - 0x16, 0x52, 0x28, 0x65, 0xB4, 0xD6, 0x79, 0x26, 0x31, 0x46, 0x89, 0x67, 0x2F, 0x04, 0xE7, 0x9C, - 0xDD, 0x3B, 0xD8, 0x6B, 0xBB, 0xBE, 0x69, 0x3B, 0x6B, 0x5C, 0x8A, 0x59, 0xA0, 0x8C, 0x02, 0x02, - 0xE7, 0x3D, 0xE7, 0x2C, 0xCB, 0x84, 0xD6, 0xC6, 0x5A, 0x0B, 0x31, 0x22, 0x84, 0xDF, 0x9C, 0x5C, - 0x4C, 0x46, 0xE5, 0xE3, 0xF7, 0x0E, 0xBD, 0xF7, 0x65, 0x2E, 0x4F, 0xCF, 0xAF, 0x9E, 0xBE, 0x3C, - 0xFD, 0x9B, 0x9F, 0x7F, 0x71, 0x71, 0xBD, 0x48, 0x55, 0xAC, 0xEB, 0xFA, 0x10, 0x63, 0xD8, 0x5A, - 0x7A, 0x59, 0x6B, 0xB5, 0x56, 0x00, 0x50, 0x96, 0xC5, 0x76, 0xCB, 0x84, 0xA4, 0xE0, 0x5C, 0xF0, - 0x4D, 0xDB, 0x0E, 0xD1, 0x6D, 0xDD, 0xA9, 0xAD, 0x73, 0xA9, 0x8D, 0x12, 0x82, 0x3B, 0xBF, 0x09, - 0xD3, 0xF5, 0xDE, 0xA7, 0x02, 0xC1, 0x28, 0xE1, 0x8C, 0xA5, 0xA3, 0x98, 0x71, 0x06, 0x00, 0xBD, - 0xD2, 0x4D, 0xA7, 0xEA, 0xA6, 0xCB, 0x32, 0x89, 0x23, 0x38, 0xEF, 0x93, 0xFF, 0x84, 0x0F, 0x01, - 0x01, 0x2A, 0x72, 0x29, 0x04, 0xAD, 0x8A, 0x8C, 0x53, 0xD2, 0xB4, 0x3D, 0x42, 0xB8, 0x2C, 0x8A, - 0x00, 0x31, 0xBD, 0xC8, 0x14, 0x13, 0x4C, 0x08, 0x00, 0x08, 0xC6, 0xDA, 0xAE, 0x77, 0xD6, 0xF7, - 0xDA, 0xE4, 0x99, 0xE8, 0x7A, 0xB5, 0x5A, 0xD5, 0xD6, 0xC7, 0xB7, 0x17, 0xB3, 0x3C, 0xCB, 0xCA, - 0x22, 0xFF, 0xE8, 0x07, 0x8F, 0x8D, 0x31, 0x82, 0xF3, 0x67, 0x2F, 0x8E, 0x2F, 0xAE, 0x66, 0x52, - 0x88, 0x9B, 0xC5, 0xF2, 0xD9, 0xF3, 0x37, 0x42, 0x08, 0x2E, 0xB8, 0x52, 0x0A, 0x21, 0xB4, 0xAE, - 0x1B, 0x04, 0x68, 0x38, 0x1A, 0x32, 0x42, 0x96, 0xEB, 0xFA, 0x57, 0xBF, 0xFE, 0xA2, 0xAE, 0x1B, - 0xA5, 0x0D, 0x25, 0xE4, 0xE8, 0x68, 0xEF, 0xCD, 0xC9, 0xF9, 0x7A, 0x55, 0xAF, 0x9B, 0x76, 0xB1, - 0x5A, 0x0B, 0xC1, 0x27, 0xA3, 0x72, 0x34, 0x2C, 0x47, 0xC3, 0x6A, 0x34, 0xA8, 0xA6, 0x93, 0xE1, - 0xDE, 0x74, 0x54, 0x16, 0x92, 0x92, 0x8D, 0x61, 0x43, 0x9A, 0x25, 0x09, 0x46, 0x6D, 0xA7, 0x39, - 0x63, 0xC3, 0x41, 0x8E, 0x10, 0x26, 0x04, 0x53, 0x8A, 0x29, 0x21, 0xDE, 0xF9, 0xB6, 0x53, 0x5D, - 0xAF, 0x19, 0xA5, 0x65, 0x91, 0x71, 0x46, 0x53, 0xA1, 0xEF, 0xB5, 0x56, 0xC6, 0x3A, 0xEF, 0xC9, - 0x5F, 0xFC, 0xF9, 0x9F, 0xA7, 0x46, 0x08, 0xBE, 0xC5, 0xA9, 0x7A, 0x17, 0x81, 0x99, 0x1A, 0x2D, - 0x94, 0x2C, 0x70, 0x28, 0x23, 0x94, 0xDE, 0x72, 0x67, 0x9D, 0xB5, 0xCE, 0x98, 0xE0, 0x1D, 0x42, - 0x10, 0x82, 0x37, 0xAA, 0x77, 0x56, 0x13, 0x42, 0x10, 0xC6, 0xDE, 0x19, 0x67, 0x75, 0xDF, 0x34, - 0x6D, 0xD3, 0x76, 0x6D, 0xA7, 0xBA, 0x4E, 0x29, 0x65, 0xAD, 0xC5, 0x04, 0x41, 0x08, 0x28, 0xA5, - 0x21, 0xDD, 0x65, 0x6C, 0xC4, 0x88, 0xB6, 0xF0, 0x7F, 0xDA, 0x51, 0xA6, 0xB5, 0xE3, 0x6D, 0xE4, - 0xE7, 0x06, 0x96, 0x00, 0x84, 0xE0, 0xDD, 0x1A, 0x61, 0x53, 0xAE, 0xD0, 0xED, 0xF8, 0xB9, 0x7D, - 0x82, 0xDB, 0xE6, 0x7F, 0xFB, 0xA3, 0xC2, 0x36, 0x67, 0x00, 0x10, 0x24, 0x56, 0xD0, 0xB6, 0x80, - 0x92, 0xAD, 0x3B, 0xCB, 0x76, 0x0D, 0x4A, 0x48, 0x5B, 0xD7, 0x5F, 0x7E, 0xF9, 0x2C, 0x04, 0xA0, - 0x8C, 0x30, 0xC6, 0x9D, 0x0B, 0xD6, 0x05, 0x46, 0xE9, 0x3B, 0xE5, 0x23, 0xC1, 0x98, 0x60, 0x4A, - 0x89, 0x10, 0x7C, 0xB3, 0x8E, 0xDA, 0x3E, 0xC2, 0x36, 0x4F, 0x3C, 0xD1, 0x20, 0x7D, 0xCA, 0x43, - 0x44, 0x18, 0x21, 0xE4, 0xAC, 0x4F, 0x37, 0x0C, 0xC6, 0x18, 0x22, 0x38, 0xEF, 0x9D, 0x75, 0x31, - 0x46, 0xC6, 0xC8, 0x7C, 0xB1, 0xFA, 0xC5, 0x67, 0x4F, 0x3F, 0xFD, 0xCD, 0xCB, 0x57, 0x6F, 0xAE, - 0xA4, 0xCC, 0x76, 0x76, 0x76, 0xA4, 0xE0, 0x45, 0x9E, 0x23, 0x88, 0x59, 0x26, 0x19, 0xA5, 0xF3, - 0xE5, 0xFA, 0x57, 0xBF, 0xF9, 0x06, 0x10, 0xFE, 0xE7, 0x7F, 0xFA, 0x1F, 0xFD, 0xE1, 0x27, 0x1F, - 0xBE, 0xBD, 0x98, 0xBD, 0x3E, 0x3D, 0x97, 0x52, 0xBC, 0xF7, 0xF0, 0x88, 0x10, 0xE6, 0x43, 0x58, - 0xAE, 0xD6, 0xEB, 0xBA, 0x7D, 0xF1, 0xFA, 0x98, 0x20, 0x18, 0x95, 0xD9, 0x64, 0x58, 0x1E, 0xEE, - 0x4E, 0x08, 0xC2, 0x17, 0xD7, 0x37, 0xDA, 0x18, 0x63, 0x9C, 0xB1, 0x06, 0x01, 0x68, 0x63, 0x32, - 0xC1, 0x9F, 0x3C, 0xBA, 0x2F, 0x05, 0xDF, 0x9D, 0x8C, 0x26, 0xA3, 0x2A, 0x84, 0xE8, 0x7D, 0xB8, - 0x9A, 0xCD, 0x9F, 0x3E, 0x7B, 0x53, 0xB7, 0xCA, 0x39, 0xBF, 0xAC, 0x9B, 0xCB, 0xEB, 0x45, 0xDB, - 0x29, 0xCE, 0xF9, 0x62, 0xB5, 0xFE, 0xE2, 0xAB, 0xA7, 0x8B, 0xC5, 0x4A, 0x4A, 0xE9, 0xBD, 0x47, - 0x10, 0x87, 0x83, 0xA2, 0xED, 0x35, 0x42, 0x90, 0xCB, 0xAC, 0xED, 0x15, 0x00, 0xBA, 0x59, 0xD4, - 0xBF, 0xFE, 0xED, 0xD3, 0xD7, 0xC7, 0x6F, 0xCF, 0x2F, 0xAE, 0xEB, 0xBA, 0xDD, 0xDD, 0x9D, 0x24, - 0x12, 0x40, 0x52, 0x8C, 0xED, 0xEC, 0x8C, 0x76, 0xA7, 0x93, 0xE9, 0xCE, 0x78, 0x34, 0xAC, 0x8A, - 0x22, 0xAB, 0xCA, 0xB2, 0xEB, 0x3A, 0xEF, 0x42, 0x6A, 0x46, 0x18, 0x21, 0xC1, 0x87, 0xC5, 0x72, - 0x35, 0x5F, 0x2C, 0x75, 0xDF, 0x37, 0xEB, 0xA6, 0x69, 0x1A, 0x42, 0xB0, 0x76, 0xE1, 0xF2, 0x6A, - 0xD6, 0xB4, 0x2D, 0x21, 0xA4, 0x6D, 0x3B, 0x4E, 0x29, 0x40, 0x4C, 0x29, 0x88, 0xCE, 0x79, 0xB6, - 0xB9, 0xB1, 0x63, 0x8C, 0x91, 0x12, 0xE2, 0x9C, 0xCB, 0xF3, 0x9C, 0x72, 0xBE, 0x5E, 0x37, 0xBB, - 0xD3, 0x49, 0x12, 0x78, 0x78, 0xEF, 0x17, 0xCB, 0xFA, 0x9B, 0xA7, 0x2F, 0x9E, 0x3C, 0x7E, 0x94, - 0x4B, 0x61, 0x8C, 0x1D, 0x0E, 0x06, 0x75, 0xD3, 0xA4, 0x51, 0x2E, 0x93, 0x62, 0x77, 0x3A, 0xB1, - 0xD6, 0x61, 0x84, 0x93, 0x6D, 0xA9, 0xB1, 0x36, 0x02, 0xC4, 0x18, 0x18, 0x49, 0x74, 0x8D, 0x28, - 0x18, 0xEB, 0x95, 0x06, 0x84, 0xAA, 0x32, 0x6F, 0xDA, 0xEE, 0xD9, 0xCB, 0xB3, 0x41, 0x99, 0x4D, - 0x77, 0x46, 0xFF, 0xC7, 0xFF, 0xFD, 0xF7, 0xFF, 0xEB, 0xBF, 0xFA, 0xD7, 0x4F, 0x5F, 0x9E, 0x8D, - 0x86, 0x83, 0xD9, 0xCD, 0x32, 0xA1, 0x1C, 0xC6, 0x98, 0x14, 0xDB, 0x9A, 0x30, 0x32, 0xCA, 0x48, - 0x0C, 0x41, 0x72, 0x9E, 0x3C, 0x8A, 0x09, 0x42, 0x9C, 0x33, 0x4E, 0xC8, 0x76, 0xE6, 0xF5, 0xEB, - 0xB6, 0x77, 0x3E, 0x19, 0xF0, 0x19, 0x88, 0xD1, 0xF9, 0x60, 0x9D, 0x4F, 0x59, 0xEB, 0x49, 0x29, - 0x99, 0x20, 0x3C, 0xA5, 0x0D, 0x67, 0x54, 0x0A, 0x59, 0xB7, 0x5D, 0x91, 0x67, 0x8C, 0x92, 0xE4, - 0x8E, 0x2D, 0x38, 0x0B, 0x71, 0x43, 0xE6, 0x36, 0xD6, 0xA7, 0x26, 0x2B, 0xFA, 0x90, 0xAE, 0xCC, - 0xB6, 0xE9, 0xD2, 0x42, 0x36, 0xCB, 0x57, 0x37, 0xC4, 0xC7, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0x33, 0x29, 0xE4, 0x7A, 0xBD, 0x2E, 0xF2, 0xEC, 0xE1, 0x83, 0xC3, 0xF1, 0x78, 0xD4, - 0x75, 0xBD, 0xF3, 0x1E, 0x23, 0x44, 0x30, 0x49, 0x08, 0xE0, 0x9F, 0xFC, 0xA3, 0x4F, 0x3E, 0x78, - 0xF4, 0x60, 0xB9, 0x58, 0x9D, 0xBC, 0xBD, 0x64, 0x8C, 0x3E, 0x38, 0xBA, 0x57, 0xE4, 0x79, 0xAF, - 0xFA, 0x3C, 0xCF, 0xDE, 0x1C, 0x9F, 0xAD, 0xEB, 0x8E, 0x12, 0xF4, 0xE6, 0xF8, 0xEC, 0xF5, 0xF1, - 0xD9, 0xF1, 0xE9, 0x79, 0x3A, 0xE9, 0xD3, 0xE0, 0x95, 0xF4, 0x4F, 0x18, 0xA1, 0xAE, 0xEF, 0x27, - 0x93, 0x31, 0x21, 0xA4, 0xEB, 0xDA, 0xFD, 0xBD, 0x69, 0x91, 0xE7, 0xC6, 0xDA, 0xAA, 0x2C, 0xE6, - 0x8B, 0x95, 0x31, 0xCE, 0x5A, 0x5B, 0xE4, 0xD9, 0xC1, 0xEE, 0x78, 0x32, 0x1E, 0xEE, 0xED, 0x4E, - 0x86, 0x83, 0x62, 0x3C, 0xAA, 0x46, 0x83, 0x52, 0x0A, 0xB6, 0x9D, 0xE2, 0xDE, 0xA9, 0x59, 0x8C, - 0x75, 0x37, 0x8B, 0x15, 0x42, 0x48, 0x0A, 0x9E, 0xAC, 0xD9, 0x04, 0x67, 0x09, 0xD3, 0x4C, 0xFE, - 0x57, 0xE9, 0x2E, 0x73, 0xDE, 0x2B, 0x6D, 0x3B, 0xA5, 0x17, 0xCB, 0x26, 0x69, 0xB3, 0xA8, 0x33, - 0x3A, 0xC6, 0xB8, 0x91, 0x4F, 0x53, 0x96, 0x66, 0x2B, 0x74, 0x67, 0x1C, 0xDB, 0x74, 0x49, 0x00, - 0x90, 0xFA, 0x8E, 0x18, 0xBD, 0x73, 0x40, 0x29, 0x42, 0xC8, 0x69, 0xA3, 0xB5, 0x46, 0x08, 0x52, - 0x82, 0x90, 0xD1, 0x1A, 0x10, 0xB2, 0xD6, 0x31, 0xCE, 0x9C, 0xB1, 0xEB, 0xA6, 0xD5, 0xDA, 0x6E, - 0x12, 0xD8, 0x52, 0x5E, 0x24, 0x67, 0xA5, 0x52, 0x55, 0x59, 0xF0, 0x2C, 0xA7, 0x18, 0x36, 0x39, - 0x2E, 0xDB, 0x8A, 0x02, 0x00, 0x10, 0xC3, 0x36, 0xFC, 0xF4, 0xAE, 0x63, 0x0A, 0x7A, 0xA7, 0x1D, - 0x47, 0x90, 0x56, 0x8A, 0xA9, 0xCE, 0x6E, 0x5B, 0x21, 0x04, 0x77, 0xB8, 0xA3, 0x89, 0xEA, 0x06, - 0x9B, 0x6A, 0xE8, 0x11, 0x20, 0x0C, 0xD8, 0xDF, 0xC2, 0xB4, 0x5B, 0x20, 0x6C, 0x53, 0x10, 0xB7, - 0x93, 0x6F, 0xAA, 0xDB, 0x08, 0x21, 0xA3, 0xF5, 0xD3, 0x6F, 0x9E, 0x5B, 0xE3, 0xA4, 0x10, 0x31, - 0x84, 0x80, 0x93, 0x02, 0x04, 0x6E, 0xF7, 0x9B, 0xDB, 0x5A, 0x09, 0x89, 0x5D, 0x1D, 0x42, 0x40, - 0x09, 0xA7, 0xDB, 0x56, 0xCF, 0x5B, 0xBC, 0x16, 0x00, 0x42, 0x88, 0x1E, 0x3C, 0xC6, 0x18, 0x02, - 0x68, 0x63, 0xD3, 0x8F, 0x90, 0x1C, 0x3E, 0x31, 0xC6, 0x84, 0xE0, 0xB6, 0x53, 0x9F, 0x7E, 0xFE, - 0xCD, 0xAB, 0xE3, 0x2B, 0x00, 0x5C, 0x94, 0x79, 0x59, 0xE6, 0x83, 0xB2, 0x68, 0xBA, 0xCE, 0x7B, - 0x7F, 0x7D, 0x35, 0xDB, 0xDD, 0x9B, 0xF6, 0x4A, 0x7F, 0xF5, 0xCD, 0xF3, 0xBE, 0xD7, 0x7F, 0xFA, - 0x4F, 0xFF, 0xF1, 0x64, 0x3C, 0xA8, 0x9B, 0xEE, 0xE2, 0x5A, 0xF3, 0x2C, 0x1B, 0x0E, 0x87, 0x83, - 0xAA, 0xBA, 0xB9, 0x59, 0xCC, 0x6E, 0x16, 0xC9, 0x78, 0xC3, 0xFB, 0xF8, 0x83, 0xEF, 0x3F, 0xA9, - 0xD7, 0xF5, 0xE3, 0x07, 0x7B, 0xCE, 0x98, 0xAF, 0x9E, 0xBF, 0xD9, 0x19, 0x8F, 0x8E, 0xF6, 0xA7, - 0x97, 0xB3, 0x65, 0x80, 0x98, 0x89, 0x94, 0x1C, 0x8C, 0x01, 0xA1, 0xF1, 0xB0, 0x98, 0x8E, 0xAB, - 0xAE, 0x37, 0x4D, 0xA7, 0x2E, 0xAE, 0xE6, 0x52, 0xC8, 0xA6, 0xEF, 0x97, 0xEB, 0xC6, 0x5D, 0xDE, - 0x60, 0x42, 0x64, 0x96, 0x3D, 0x7C, 0x70, 0xF4, 0xF6, 0xFC, 0xE2, 0xFA, 0xFA, 0x26, 0xC4, 0x18, - 0x23, 0x8C, 0xC7, 0xA3, 0xBA, 0x69, 0x42, 0x08, 0xA3, 0x41, 0xA5, 0x8C, 0x4B, 0x7C, 0x17, 0x6D, - 0xAD, 0x77, 0xBE, 0x55, 0x5D, 0xD2, 0x28, 0x97, 0x45, 0x7E, 0x35, 0x5B, 0xBE, 0x39, 0xBD, 0x54, - 0xD6, 0xFF, 0x97, 0xFF, 0xF9, 0x9F, 0x19, 0x63, 0x62, 0x8C, 0x65, 0x91, 0x05, 0x1B, 0x01, 0x62, - 0x62, 0x33, 0x11, 0x4C, 0xA4, 0xE4, 0x4F, 0x9E, 0xBC, 0x7F, 0x72, 0x72, 0x7E, 0x71, 0x7E, 0x95, - 0x98, 0x68, 0xBA, 0xEF, 0xA3, 0xB3, 0xA3, 0xB2, 0xC8, 0x32, 0x99, 0x2C, 0x76, 0x7B, 0xA5, 0xA8, - 0xF3, 0x40, 0xD9, 0x7C, 0xBE, 0x96, 0x82, 0xE7, 0x99, 0xB0, 0xDA, 0x00, 0x4A, 0x11, 0x4D, 0xD4, - 0x87, 0x8D, 0x99, 0x0F, 0x66, 0xCC, 0xF9, 0x50, 0x77, 0x1D, 0x21, 0xA4, 0xD7, 0xE6, 0x83, 0xA3, - 0x83, 0xFB, 0x47, 0xFB, 0xBF, 0xFD, 0xF2, 0x59, 0x72, 0x19, 0xCC, 0xB2, 0xEC, 0xF4, 0xEC, 0x62, - 0xBE, 0x58, 0x74, 0xBD, 0x7A, 0x70, 0x74, 0x48, 0x08, 0x36, 0x46, 0xC7, 0x10, 0x03, 0x04, 0x00, - 0x58, 0x2C, 0x57, 0x75, 0xD3, 0x51, 0x42, 0xAA, 0x22, 0xF7, 0xDE, 0x2B, 0x6D, 0xA8, 0xF7, 0xCA, - 0xD8, 0x18, 0xA1, 0x2A, 0x8B, 0x4E, 0xA9, 0xBE, 0xD7, 0xC9, 0xF6, 0xAB, 0x53, 0x2A, 0x93, 0xE2, - 0xD1, 0x83, 0xC3, 0xF9, 0x7C, 0xF9, 0xAF, 0xFE, 0xB7, 0xBF, 0x1E, 0xFE, 0xF5, 0xAF, 0x9A, 0xA6, - 0xBF, 0x7F, 0xB8, 0xBF, 0x37, 0x1D, 0xCD, 0x97, 0xEB, 0x24, 0xBD, 0xB6, 0x89, 0x14, 0xB2, 0xE5, - 0x2A, 0x1A, 0x63, 0x32, 0x2A, 0x93, 0xB9, 0x7E, 0x8C, 0x01, 0x63, 0xE4, 0x22, 0x50, 0x8C, 0x00, - 0x81, 0x31, 0x76, 0x63, 0x3D, 0x16, 0x02, 0x42, 0x29, 0x39, 0xD0, 0x86, 0x24, 0x9E, 0x71, 0x4E, - 0x6B, 0x13, 0x62, 0x00, 0x84, 0x18, 0xA5, 0x4D, 0xD3, 0x86, 0x18, 0x09, 0xC6, 0x99, 0x94, 0xCA, - 0xE8, 0x44, 0x00, 0x16, 0x82, 0xAF, 0xEB, 0xA6, 0xED, 0x34, 0xA5, 0x04, 0x22, 0x68, 0x6D, 0x93, - 0x77, 0x50, 0x08, 0xD1, 0x5A, 0xDD, 0x29, 0xC5, 0x19, 0xEB, 0x3B, 0x85, 0x09, 0x76, 0x3E, 0x7E, - 0xEF, 0xF1, 0x4E, 0xAF, 0xD4, 0x72, 0x35, 0xF3, 0x5B, 0xF3, 0xCE, 0xD5, 0xBA, 0xD9, 0x99, 0x8C, - 0x7A, 0xA5, 0xEB, 0xA6, 0xD5, 0xC6, 0x08, 0xCE, 0xBD, 0x73, 0xB9, 0x64, 0x52, 0xB0, 0x34, 0x4D, - 0xAB, 0xBE, 0xFF, 0xD5, 0xE7, 0x5F, 0x4C, 0xC6, 0xC3, 0xE9, 0xCE, 0xB8, 0x5E, 0xB7, 0x9F, 0x7C, - 0xF4, 0x3D, 0x4A, 0xB1, 0x14, 0xFC, 0xBD, 0xFB, 0x87, 0x7F, 0xF7, 0xF3, 0xCF, 0xB4, 0x36, 0x8C, - 0x52, 0xEF, 0x5D, 0xAF, 0x54, 0x9E, 0x49, 0x84, 0x68, 0x82, 0x1A, 0xCB, 0xAA, 0x7A, 0x73, 0x7C, - 0xBA, 0x5A, 0x2E, 0xC7, 0x93, 0xF1, 0xBD, 0xA3, 0x83, 0xDD, 0x9D, 0xF1, 0xBA, 0x6E, 0x5E, 0xBE, - 0x3E, 0xCB, 0x04, 0x2D, 0x27, 0x43, 0x8C, 0xD0, 0xC3, 0xA3, 0x7D, 0xC1, 0x59, 0x12, 0xC6, 0xA7, - 0x69, 0x91, 0x26, 0xA3, 0xAD, 0x3B, 0x0F, 0x84, 0x90, 0x75, 0xBE, 0xEB, 0x35, 0xC1, 0x48, 0x30, - 0x1A, 0x63, 0xF0, 0x3E, 0x10, 0x8C, 0x39, 0xA3, 0xA9, 0x27, 0xC0, 0x18, 0x27, 0x17, 0xE8, 0x10, - 0xA3, 0x52, 0xC6, 0x18, 0xEB, 0x9C, 0xCF, 0x32, 0x91, 0xC2, 0xCC, 0xA9, 0x33, 0x3A, 0x0D, 0x87, - 0x84, 0xD2, 0x5B, 0x55, 0x23, 0x24, 0x2E, 0xC2, 0xF6, 0x8E, 0xDD, 0x8C, 0x66, 0x31, 0x26, 0x1F, - 0xD4, 0xE0, 0x6C, 0xF4, 0xCE, 0xB9, 0xD0, 0x2B, 0x65, 0x9D, 0x33, 0xD6, 0xA5, 0x24, 0x85, 0x94, - 0xA0, 0x19, 0x62, 0xC0, 0x08, 0xA5, 0x30, 0x2E, 0x04, 0x88, 0x52, 0xE2, 0xBC, 0xB7, 0xD6, 0x23, - 0x84, 0xAC, 0xF5, 0x18, 0xA1, 0xB2, 0xC8, 0x09, 0xC6, 0xC9, 0xCC, 0xE4, 0x5B, 0x1B, 0x4B, 0x84, - 0x20, 0x99, 0xE5, 0xC7, 0xF8, 0x2D, 0x5E, 0xC6, 0xA6, 0x94, 0xE2, 0xA4, 0x89, 0x83, 0xC4, 0xC7, - 0xD8, 0x92, 0x15, 0xD0, 0x1D, 0x69, 0xC1, 0xB7, 0x96, 0x06, 0x1B, 0xEE, 0x22, 0x06, 0x14, 0x92, - 0x00, 0x60, 0xFB, 0x59, 0xB4, 0x9D, 0xA4, 0xBF, 0xB5, 0x51, 0x8D, 0xC1, 0x02, 0x60, 0x4C, 0xD9, - 0xF9, 0xD9, 0x99, 0xB5, 0x36, 0xCB, 0xA5, 0x35, 0x0E, 0x45, 0xDC, 0xA9, 0x9E, 0x10, 0x5A, 0xE6, - 0x2C, 0x6E, 0xA3, 0x33, 0x63, 0x84, 0x64, 0x27, 0x0B, 0x18, 0x52, 0x49, 0xF2, 0xC8, 0xC7, 0x08, - 0x04, 0x13, 0x42, 0xD0, 0x46, 0xDF, 0x77, 0xFB, 0x53, 0x01, 0x84, 0x2D, 0x1D, 0x37, 0x19, 0x10, - 0x45, 0x80, 0x0C, 0x0B, 0xEF, 0xFD, 0x72, 0xBD, 0x7A, 0x7B, 0x31, 0x7F, 0xFE, 0xF2, 0x24, 0x44, - 0xC4, 0x05, 0xF5, 0xDE, 0xC6, 0x16, 0x38, 0xA5, 0x2F, 0x5E, 0x1D, 0x97, 0x83, 0x8A, 0x51, 0xFA, - 0xEA, 0xE4, 0xFC, 0xCD, 0xF9, 0xF5, 0xE5, 0xE5, 0xAC, 0x5E, 0xAD, 0x47, 0xE3, 0xE1, 0x8B, 0xD7, - 0xA7, 0x2F, 0x5E, 0xC5, 0x93, 0xD3, 0x73, 0xA5, 0xCC, 0xAA, 0x6E, 0xD2, 0x88, 0xD4, 0xD4, 0xAD, - 0x90, 0x72, 0x32, 0x19, 0x0D, 0xAA, 0xAA, 0x6E, 0xDA, 0xB7, 0xE7, 0x17, 0xCE, 0xBA, 0x17, 0xDE, - 0xEE, 0xED, 0x0C, 0x93, 0x39, 0xA7, 0xE0, 0x9C, 0x73, 0x8A, 0x10, 0x1A, 0x0D, 0xCA, 0x64, 0x1A, - 0x65, 0x8D, 0x3F, 0xBF, 0x5C, 0x4C, 0x77, 0x86, 0xF3, 0x75, 0x73, 0x7E, 0x35, 0x4F, 0x71, 0x4D, - 0x8B, 0x75, 0xEB, 0x7C, 0x88, 0x31, 0xEA, 0x5E, 0xDD, 0x2C, 0x56, 0x75, 0xD3, 0x4E, 0xC6, 0xA3, - 0x3C, 0xCF, 0x39, 0xA3, 0x8B, 0xE5, 0x6A, 0xB9, 0x5A, 0x3B, 0x6B, 0xF7, 0xF6, 0x76, 0xF2, 0x22, - 0x9B, 0x5D, 0xCF, 0x09, 0xC1, 0x5A, 0xDB, 0xF4, 0x96, 0xA5, 0xD2, 0x23, 0x84, 0x28, 0x8A, 0xBC, - 0xEF, 0x54, 0x91, 0x67, 0xBF, 0xFD, 0xF2, 0x39, 0x25, 0xE4, 0xBF, 0xF8, 0xCF, 0xFE, 0x34, 0xB1, - 0x82, 0x53, 0x4D, 0xF7, 0xC1, 0x1B, 0x63, 0x43, 0x30, 0x08, 0x81, 0x10, 0xFC, 0xC9, 0x93, 0x47, - 0x0F, 0xDF, 0x3B, 0x5A, 0xCC, 0x57, 0x75, 0xDD, 0xAC, 0x96, 0xEB, 0x62, 0x58, 0x09, 0x21, 0x06, - 0xC3, 0xC1, 0xFD, 0xA3, 0xFD, 0x57, 0xAF, 0x8F, 0xDB, 0xB6, 0x57, 0xCA, 0x5C, 0xDE, 0xAC, 0xE6, - 0xF3, 0xE5, 0xD5, 0xD5, 0xAC, 0x28, 0xB2, 0x5C, 0xF0, 0xB4, 0x3B, 0xC7, 0x18, 0x41, 0x0C, 0xC9, - 0xE7, 0x2B, 0xC6, 0xC8, 0x39, 0x87, 0x18, 0xB9, 0x10, 0xFB, 0x7B, 0x93, 0xC7, 0xEF, 0x1D, 0xDD, - 0xBF, 0xB7, 0x67, 0x8C, 0x7E, 0x7D, 0x7C, 0xCE, 0x28, 0xBD, 0xBA, 0xBE, 0x19, 0x0C, 0xAA, 0x4C, - 0xCA, 0xAE, 0x53, 0xAB, 0x75, 0x93, 0x4B, 0x31, 0x9B, 0x2F, 0x92, 0x65, 0x23, 0x65, 0xAC, 0xAE, - 0xDB, 0x18, 0xA3, 0x0F, 0xFE, 0x72, 0x76, 0x23, 0xA5, 0xB8, 0x77, 0x30, 0xBD, 0xBE, 0x59, 0x30, - 0xC6, 0xBC, 0x0F, 0x8B, 0xE5, 0xFA, 0xDE, 0xE1, 0x6E, 0x0A, 0x6D, 0x9C, 0x4E, 0x46, 0x5D, 0xDF, - 0xB7, 0x6D, 0xFB, 0x83, 0xEF, 0xBF, 0xFF, 0xE4, 0xD1, 0xFD, 0x67, 0x2F, 0x8F, 0x2F, 0x2E, 0x67, - 0x8F, 0xDF, 0xBF, 0xFF, 0x67, 0x7F, 0xF2, 0xE3, 0x2F, 0x9F, 0xBD, 0xFE, 0xE5, 0xE7, 0xDF, 0x64, - 0x79, 0xE6, 0xC3, 0x56, 0xBA, 0x8B, 0x51, 0x70, 0xA9, 0xF1, 0x47, 0x08, 0x22, 0xA7, 0x0C, 0x6D, - 0x7D, 0xA2, 0xC4, 0x86, 0x5D, 0x68, 0x23, 0x80, 0xF5, 0x01, 0x63, 0xB2, 0xB7, 0x33, 0x7E, 0x7B, - 0x79, 0xA3, 0xB4, 0x36, 0xDA, 0x6A, 0xE7, 0x92, 0xD9, 0x01, 0xC2, 0xC8, 0x9B, 0x80, 0x10, 0x0A, - 0xC8, 0x13, 0x42, 0x92, 0xE2, 0xBA, 0xEB, 0xFA, 0x08, 0x90, 0x65, 0x92, 0x12, 0x1C, 0x7C, 0xD0, - 0xDA, 0x36, 0x4D, 0xC7, 0x18, 0x8D, 0x80, 0xD2, 0x84, 0xC5, 0x28, 0x8D, 0x14, 0xBC, 0x27, 0x9D, - 0x52, 0x07, 0x7B, 0xBB, 0xC6, 0xD9, 0xD1, 0xA0, 0xDA, 0x9D, 0x8E, 0xBF, 0x79, 0xFA, 0xAA, 0xED, - 0x54, 0xAF, 0x15, 0x02, 0xD4, 0x84, 0xAE, 0x69, 0xBB, 0xB4, 0x4B, 0x2D, 0xF3, 0x3C, 0xF9, 0xF1, - 0xC5, 0xE0, 0x7F, 0xF2, 0xC3, 0x0F, 0x5F, 0xBC, 0x3A, 0xFE, 0xE3, 0x9F, 0xFE, 0x78, 0xB1, 0x5C, - 0x21, 0x84, 0x8C, 0xB1, 0x5D, 0xD7, 0x69, 0xAD, 0xD7, 0xAB, 0xFA, 0xF5, 0x9B, 0xB3, 0x9F, 0xFC, - 0xE1, 0xC7, 0x0F, 0x1F, 0xEC, 0x1B, 0x6B, 0xB3, 0x5C, 0xC6, 0x18, 0x18, 0x25, 0x9C, 0x13, 0x42, - 0x88, 0x36, 0xD6, 0x07, 0x4F, 0x30, 0x65, 0x8C, 0x87, 0x18, 0xCA, 0x22, 0x9F, 0xCF, 0x17, 0x5D, - 0xA7, 0x76, 0x77, 0xC9, 0xFE, 0xDE, 0xD4, 0x7B, 0x1F, 0x43, 0x14, 0x9C, 0x1D, 0x1E, 0x4C, 0x87, - 0xC3, 0x2A, 0xE3, 0x8C, 0x60, 0x8C, 0x31, 0x2A, 0x8B, 0x4C, 0x0A, 0x46, 0x08, 0x11, 0x82, 0x23, - 0x04, 0x3E, 0x85, 0xB9, 0xC5, 0xCD, 0x9D, 0xEB, 0xBD, 0x8F, 0x10, 0x19, 0x23, 0xA3, 0x61, 0x55, - 0x95, 0x39, 0xA3, 0x84, 0x18, 0x6B, 0x7D, 0x30, 0xD6, 0x25, 0x1E, 0x38, 0xC2, 0x38, 0x39, 0xDA, - 0x3B, 0xEF, 0x41, 0x6E, 0xE6, 0xAD, 0xE4, 0xBE, 0x8D, 0x31, 0x26, 0xFF, 0xC3, 0xBF, 0xF8, 0xEF, - 0xD2, 0x8D, 0x47, 0x29, 0xC5, 0x08, 0xC5, 0x10, 0x52, 0x5B, 0x94, 0xA0, 0xFE, 0x54, 0xC5, 0x6E, - 0x81, 0x7C, 0x88, 0x21, 0x86, 0xD8, 0xF7, 0x7D, 0xDB, 0xAA, 0xC5, 0xAA, 0x5E, 0xD5, 0x6D, 0xD7, - 0xAA, 0xAE, 0xD7, 0x5D, 0xA7, 0x00, 0x01, 0xC1, 0xA8, 0x57, 0xA6, 0xEB, 0x75, 0xDB, 0xE9, 0xB6, - 0x57, 0xCE, 0x85, 0x44, 0x16, 0xF7, 0xCE, 0xFB, 0x10, 0x30, 0x20, 0xC6, 0x49, 0x26, 0x79, 0x9E, - 0x49, 0x2E, 0x64, 0x2A, 0x62, 0x68, 0xFB, 0xAB, 0x6C, 0x90, 0xAE, 0x0D, 0xA5, 0xFE, 0x4E, 0x66, - 0xCD, 0xDD, 0x82, 0xF6, 0x6D, 0xCA, 0xFB, 0xBB, 0x35, 0x42, 0xC2, 0xDE, 0xB7, 0x2B, 0xC9, 0x34, - 0x26, 0xFE, 0x1E, 0x8A, 0xDA, 0xE6, 0xBB, 0xF0, 0x2D, 0x09, 0x0E, 0xB6, 0xE3, 0x74, 0x8C, 0xD1, - 0x3B, 0x47, 0x30, 0x9A, 0x5D, 0x5F, 0x5D, 0x5C, 0xCC, 0x30, 0x26, 0x31, 0x42, 0x44, 0xD8, 0xBA, - 0x80, 0x31, 0x61, 0x2C, 0x4D, 0xB8, 0xA9, 0xA6, 0xC3, 0x36, 0xB7, 0x35, 0xC6, 0x08, 0x18, 0x43, - 0x80, 0xB8, 0x89, 0x23, 0x40, 0x9B, 0xDF, 0x26, 0xDE, 0x91, 0x97, 0x46, 0x80, 0x94, 0x4F, 0x67, - 0x9C, 0x73, 0x36, 0x60, 0x8C, 0x28, 0x21, 0xAF, 0x4F, 0xDE, 0x3E, 0x7B, 0x79, 0xF6, 0xEA, 0xE4, - 0xEA, 0x66, 0x51, 0x8B, 0x4C, 0x46, 0x88, 0x5F, 0x3F, 0x7D, 0xCE, 0x18, 0x97, 0x52, 0x1E, 0x9F, - 0x5E, 0x3C, 0x7C, 0xF8, 0xA0, 0x28, 0xF2, 0x5F, 0xFF, 0xF6, 0x1B, 0xE7, 0x83, 0x77, 0xCE, 0x19, - 0x23, 0x84, 0xD8, 0x9D, 0x4E, 0x52, 0x2C, 0xE6, 0xC7, 0x1F, 0x7F, 0x2F, 0xF8, 0xD8, 0xB6, 0x3D, - 0xC6, 0xD8, 0x58, 0x93, 0x16, 0xC6, 0x5A, 0xE9, 0xAE, 0x57, 0x21, 0x44, 0x82, 0xF1, 0x7A, 0x5D, - 0x63, 0x04, 0x04, 0x61, 0xE3, 0x5C, 0xD7, 0x2B, 0x63, 0x5D, 0x84, 0xF8, 0xF0, 0x70, 0xB7, 0xC8, - 0xC4, 0xF5, 0x7C, 0xB5, 0x89, 0xAE, 0xE9, 0xD4, 0x7C, 0xD5, 0x2C, 0xD7, 0xED, 0xD5, 0x7C, 0xD9, - 0x74, 0xEA, 0x66, 0xB9, 0x6E, 0x3B, 0xA5, 0xB4, 0xAE, 0xDB, 0xAE, 0xED, 0xD4, 0xE3, 0xC7, 0xEF, - 0x1D, 0xEC, 0xEF, 0x36, 0x4D, 0xD7, 0xF7, 0xFD, 0xD5, 0xD5, 0xAC, 0xAE, 0x6B, 0x04, 0x71, 0x38, - 0xAC, 0x28, 0xA5, 0xD6, 0xFB, 0xB6, 0xED, 0x24, 0x63, 0x4A, 0xA9, 0x10, 0xA2, 0x36, 0x96, 0x52, - 0xC2, 0x28, 0x03, 0x04, 0xCE, 0x39, 0x42, 0x10, 0x25, 0x14, 0x10, 0x5C, 0xCE, 0x16, 0xAF, 0x8E, - 0xDF, 0x16, 0x45, 0xCE, 0x29, 0x4D, 0xB7, 0x07, 0x26, 0xA4, 0xC8, 0x33, 0xC6, 0x28, 0xE7, 0x34, - 0x04, 0xB0, 0xC6, 0x22, 0x84, 0x06, 0x83, 0x32, 0xCB, 0xB3, 0xBD, 0xFD, 0xE9, 0x74, 0xBA, 0x53, - 0x55, 0xFF, 0x0F, 0x5D, 0x6F, 0xD6, 0x64, 0x59, 0x76, 0x9D, 0x87, 0xAD, 0x3D, 0x9F, 0xF1, 0x0E, - 0x79, 0x73, 0xA8, 0xA9, 0xBB, 0x7A, 0x02, 0x1A, 0x53, 0x83, 0x20, 0x01, 0x89, 0x83, 0x28, 0x4B, - 0x96, 0x6C, 0x87, 0x1F, 0xF4, 0xA0, 0xF0, 0x83, 0x5F, 0x1D, 0x0C, 0xE9, 0xD9, 0xA4, 0xC9, 0xF0, - 0xDF, 0x72, 0x84, 0xC2, 0xA1, 0x10, 0x4D, 0xD9, 0x0E, 0x93, 0x04, 0x69, 0x8A, 0x20, 0x48, 0x0C, - 0x0D, 0x34, 0xD0, 0x8D, 0x9E, 0xAA, 0x2A, 0x2B, 0x2B, 0xA7, 0x3B, 0x9E, 0x69, 0x4F, 0x6B, 0xFB, - 0x61, 0x9D, 0x7B, 0x33, 0xBB, 0x41, 0xDF, 0x87, 0xEC, 0xAC, 0xEC, 0x3B, 0x9C, 0x73, 0xEE, 0xD9, - 0x6B, 0xAF, 0xF5, 0xAD, 0x6F, 0x7D, 0x5F, 0x59, 0xE4, 0x59, 0xD3, 0xB4, 0xD3, 0xC9, 0x84, 0x03, - 0xBE, 0x7C, 0x79, 0xA9, 0x94, 0x7E, 0xF9, 0xEA, 0x72, 0xB7, 0xDB, 0x1D, 0x1D, 0xCD, 0x9D, 0xF7, - 0x0C, 0x40, 0x2B, 0x65, 0xB4, 0x8A, 0x98, 0x7C, 0xF0, 0x4A, 0xC9, 0xE3, 0xC5, 0x11, 0x46, 0x4C, - 0x88, 0x45, 0x9E, 0xFD, 0xE6, 0x6F, 0x7C, 0xFD, 0xED, 0x37, 0x9E, 0x7C, 0xFF, 0x6F, 0xFE, 0x7E, - 0xB5, 0xDE, 0xBD, 0xFE, 0xDA, 0x23, 0xA5, 0xE4, 0x7A, 0xD3, 0x40, 0x62, 0x65, 0x99, 0x03, 0x80, - 0xF3, 0xBE, 0x6D, 0x1A, 0x63, 0x8C, 0x54, 0x4A, 0x4A, 0x71, 0xBC, 0x98, 0x23, 0xE2, 0x7A, 0xB3, - 0x2B, 0x8A, 0x8C, 0x33, 0xBE, 0xDB, 0xB5, 0x93, 0x49, 0x55, 0x64, 0x59, 0xD3, 0x76, 0xCE, 0x7B, - 0xC6, 0xA0, 0x2A, 0x8B, 0xB6, 0xED, 0x9C, 0x73, 0x29, 0x61, 0x5D, 0x95, 0x9C, 0xF3, 0xE9, 0xA4, - 0x3C, 0x3D, 0x3E, 0x3A, 0x5E, 0xCC, 0x1E, 0x9D, 0x9D, 0x2C, 0x8E, 0xA6, 0x37, 0xAB, 0xCD, 0x3F, - 0xFC, 0xE4, 0x43, 0xAD, 0xF5, 0x30, 0x58, 0xA3, 0x14, 0x00, 0xC6, 0x10, 0x8E, 0x17, 0xF3, 0x88, - 0xA9, 0xEF, 0x7B, 0x21, 0x45, 0x6E, 0x4C, 0x5D, 0x65, 0x74, 0x83, 0x95, 0x79, 0x16, 0x23, 0xB6, - 0xFD, 0x80, 0x23, 0x5C, 0xC3, 0x30, 0xA5, 0x22, 0x37, 0x5D, 0x37, 0x14, 0x45, 0x7E, 0xBC, 0x98, - 0x35, 0x6D, 0xEF, 0x9C, 0x57, 0x4A, 0x32, 0x60, 0x83, 0xB5, 0x5C, 0x70, 0x25, 0xA4, 0xD6, 0x3A, - 0xCB, 0x74, 0x08, 0x91, 0x24, 0x8C, 0x48, 0xE2, 0x58, 0x29, 0xE1, 0x7D, 0x58, 0xAD, 0x1B, 0xC4, - 0x94, 0x65, 0xDA, 0x39, 0x2F, 0x38, 0xB7, 0xD6, 0xB6, 0x7D, 0x9F, 0x67, 0x59, 0x4A, 0x69, 0x36, - 0xAB, 0x7E, 0xE7, 0xBB, 0xDF, 0xCE, 0x32, 0xF3, 0xC9, 0x67, 0xCF, 0x09, 0x9D, 0x20, 0x8F, 0x15, - 0xCE, 0x58, 0x02, 0xD2, 0xAF, 0x49, 0x5A, 0xC9, 0x2C, 0xD3, 0x82, 0xB3, 0x7F, 0xFD, 0x2F, 0x7E, - 0xFB, 0x64, 0x31, 0x7B, 0x71, 0xFE, 0xAA, 0x69, 0xFB, 0x8F, 0x3E, 0xFA, 0xDC, 0x85, 0xC0, 0x39, - 0x0F, 0x31, 0x66, 0xC6, 0x58, 0xE7, 0xDA, 0xAE, 0xBB, 0xBC, 0x5E, 0x2E, 0x57, 0x9B, 0x93, 0xC5, - 0xFC, 0xE6, 0x76, 0x75, 0x73, 0xBB, 0xCC, 0xB2, 0x2C, 0x25, 0x20, 0x6E, 0x36, 0x21, 0x2D, 0x31, - 0xA2, 0x54, 0x02, 0x23, 0x9E, 0x9D, 0x1E, 0x6F, 0x76, 0xDB, 0xAF, 0x7E, 0xE5, 0xED, 0xE0, 0xF1, - 0x83, 0x0F, 0x3E, 0x5C, 0xAF, 0xD6, 0x83, 0xB5, 0xC7, 0xF3, 0x29, 0x83, 0x64, 0x94, 0x72, 0xCE, - 0x97, 0x65, 0x56, 0x15, 0x99, 0x31, 0x9A, 0x74, 0x25, 0xC5, 0x81, 0xC9, 0xB2, 0x5F, 0xE4, 0x31, - 0x46, 0x06, 0xAC, 0xCC, 0xB3, 0x49, 0x55, 0x1A, 0x23, 0x85, 0x90, 0x4A, 0x29, 0x4E, 0xD4, 0xB3, - 0x04, 0x79, 0xA6, 0xB5, 0x24, 0xB9, 0x2C, 0x26, 0x84, 0x50, 0x52, 0x2A, 0x29, 0x8C, 0x56, 0x46, - 0x6B, 0x2E, 0x58, 0x66, 0xB4, 0xF8, 0x93, 0xFF, 0xE5, 0x0F, 0x69, 0x67, 0xE3, 0x9C, 0x8F, 0x33, - 0x5B, 0x98, 0x18, 0x2D, 0x4B, 0x6A, 0xA7, 0xF1, 0x51, 0xA4, 0x3F, 0x21, 0xDA, 0x61, 0x08, 0xDE, - 0x5D, 0x5E, 0xAF, 0x6F, 0x56, 0xBB, 0xAE, 0x1F, 0xBA, 0xC1, 0x3A, 0x17, 0x30, 0xE2, 0x83, 0xB3, - 0xA3, 0xB7, 0xDE, 0x78, 0xB2, 0x38, 0x9A, 0xE6, 0x99, 0x64, 0x0C, 0x9C, 0xF5, 0x3E, 0x04, 0xB2, - 0x29, 0x2E, 0x72, 0xAD, 0x95, 0x28, 0x8B, 0x8C, 0x73, 0xA8, 0x8A, 0xAC, 0x2C, 0x8C, 0x10, 0x5C, - 0x67, 0xD9, 0x58, 0xC8, 0x31, 0x96, 0x12, 0xDE, 0x49, 0xA2, 0xEF, 0x39, 0x5F, 0x00, 0x09, 0x48, - 0x3B, 0x6C, 0xC4, 0xBE, 0xD2, 0x81, 0x60, 0x06, 0xF7, 0x12, 0x39, 0xBE, 0xE7, 0xC7, 0x32, 0xCE, - 0xF7, 0x39, 0xD8, 0x1D, 0xD1, 0x07, 0x60, 0x0F, 0xEB, 0xEF, 0x03, 0x1F, 0x23, 0xE1, 0xB3, 0xF1, - 0x39, 0x44, 0x16, 0xA3, 0x22, 0x14, 0x39, 0x67, 0xCF, 0x9E, 0xBF, 0x78, 0xF1, 0xEC, 0x42, 0x29, - 0x1D, 0x11, 0x23, 0x26, 0x4C, 0x80, 0x23, 0xA7, 0x9F, 0x8D, 0x69, 0x62, 0xBA, 0x4B, 0xFA, 0x52, - 0x4A, 0x90, 0x18, 0xE3, 0x6C, 0x9C, 0x95, 0xE2, 0x74, 0x8C, 0x5F, 0x18, 0x2D, 0x4A, 0xFB, 0xE3, - 0x8F, 0x71, 0xE4, 0x61, 0xAC, 0x36, 0xBB, 0x8F, 0x3E, 0x7E, 0xF1, 0xD3, 0x5F, 0x7C, 0x6A, 0xB2, - 0xE2, 0xC5, 0xF9, 0xCB, 0xEB, 0xDB, 0xDB, 0xC9, 0xB4, 0x9E, 0x4E, 0x27, 0x6F, 0xBC, 0xFE, 0xE4, - 0xAD, 0x37, 0x5E, 0x07, 0x06, 0xC7, 0xC7, 0x47, 0xDF, 0x78, 0xF7, 0xAD, 0xDB, 0xD5, 0xC6, 0x98, - 0xEC, 0xEB, 0xEF, 0xBE, 0xB5, 0x5E, 0x6D, 0xEC, 0x30, 0xF8, 0x10, 0x43, 0xC4, 0x7A, 0x52, 0x21, - 0xA6, 0xBA, 0xAE, 0x6F, 0x96, 0xAB, 0x17, 0x2F, 0x2E, 0x52, 0x4A, 0x98, 0x90, 0x68, 0x1F, 0xDE, - 0x87, 0x69, 0x5D, 0x55, 0x45, 0x16, 0x7C, 0xB0, 0xCE, 0x65, 0xC6, 0x58, 0xEB, 0x6F, 0xD6, 0xDB, - 0xC5, 0x7C, 0x3A, 0xA9, 0x8B, 0xF5, 0xAE, 0x35, 0x4A, 0xD6, 0x65, 0x7E, 0xBD, 0xDC, 0x70, 0xCE, - 0x8C, 0xD6, 0x9D, 0xB5, 0xCB, 0xF5, 0xAE, 0xED, 0xAD, 0x75, 0x81, 0x9C, 0x13, 0x18, 0x8C, 0x8C, - 0x53, 0x25, 0x65, 0x02, 0xF6, 0xEA, 0xD5, 0xD5, 0xED, 0x72, 0xD9, 0x76, 0x2D, 0x22, 0xD6, 0x75, - 0x39, 0x9D, 0xD6, 0x3E, 0x84, 0x6D, 0xD3, 0x5D, 0x5F, 0x2F, 0x8B, 0xBD, 0xC1, 0x75, 0x62, 0x6C, - 0x18, 0xAC, 0xD6, 0x9A, 0x6A, 0x8D, 0xCC, 0x98, 0x3C, 0x33, 0x9C, 0x31, 0xEB, 0x42, 0xC4, 0xB8, - 0xDA, 0xEC, 0x7E, 0xFC, 0xFE, 0x87, 0xE4, 0x14, 0x47, 0xCA, 0x3F, 0x5C, 0x8C, 0x23, 0xB1, 0x6D, - 0xDB, 0x93, 0x38, 0x5A, 0x08, 0x21, 0x22, 0x52, 0x13, 0x7D, 0xBD, 0xDD, 0xCD, 0x66, 0x93, 0x87, - 0x67, 0x27, 0xEB, 0xED, 0xEE, 0xF9, 0xF3, 0xF3, 0xAE, 0xEB, 0xBF, 0xF6, 0xB5, 0xAF, 0x00, 0x40, - 0x9E, 0x19, 0xC6, 0x58, 0x3F, 0xB8, 0x6D, 0xD3, 0x4C, 0xCA, 0x82, 0x71, 0x26, 0xA4, 0xB0, 0xCE, - 0xD1, 0x24, 0x06, 0x11, 0x0E, 0xA4, 0x94, 0x4F, 0x1E, 0x9D, 0x85, 0x10, 0x3F, 0xF8, 0xF0, 0xD3, - 0xA6, 0x69, 0x33, 0xA3, 0x5F, 0x7B, 0x7C, 0x46, 0x7A, 0x0F, 0xC1, 0xC7, 0x3C, 0xCF, 0xA5, 0x94, - 0xCE, 0x5A, 0x22, 0xF4, 0x75, 0xFD, 0xD0, 0x34, 0xDD, 0xB4, 0xAE, 0xBE, 0xF3, 0xED, 0xAF, 0xA5, - 0x94, 0xB6, 0x9B, 0xAD, 0xD2, 0xAA, 0x2E, 0x0B, 0x82, 0xA8, 0xDA, 0xB6, 0xA3, 0xE6, 0x83, 0x0F, - 0x51, 0x0A, 0xDE, 0xB6, 0xED, 0x6C, 0x36, 0x91, 0x42, 0x90, 0xA9, 0xC2, 0xD9, 0xE9, 0x51, 0x59, - 0xE4, 0x8C, 0xC1, 0x8F, 0x7E, 0xFA, 0xCB, 0xE5, 0x7A, 0x97, 0x65, 0xBA, 0xE9, 0xBA, 0xB2, 0xC8, - 0x18, 0x40, 0xD7, 0x5B, 0xEB, 0x7C, 0x4A, 0x00, 0x2C, 0x69, 0x4D, 0xAD, 0x31, 0xAE, 0x94, 0xCA, - 0xB5, 0x0E, 0x31, 0x36, 0xFD, 0x40, 0xCD, 0x59, 0x29, 0x25, 0xB9, 0xCA, 0x23, 0x62, 0x8C, 0x49, - 0x4A, 0xF1, 0xF8, 0xD1, 0x03, 0xEA, 0x26, 0x1B, 0xA3, 0x23, 0x06, 0xE7, 0xBC, 0x96, 0x52, 0x4A, - 0x81, 0x98, 0x38, 0xE7, 0x88, 0x51, 0x6B, 0xAD, 0xB5, 0xF2, 0x3E, 0x8C, 0x74, 0x8A, 0x98, 0xAC, - 0xF3, 0x8C, 0x81, 0x10, 0xBC, 0xED, 0xFB, 0x18, 0x51, 0x48, 0xA9, 0x95, 0x0E, 0x21, 0xE4, 0x99, - 0x59, 0xAD, 0x36, 0x2F, 0x2E, 0x2E, 0xB5, 0x52, 0xBF, 0xF3, 0xDD, 0xF7, 0x9E, 0x3C, 0x3E, 0x7B, - 0xF9, 0xEA, 0xA6, 0xEB, 0x87, 0xC1, 0x0E, 0x42, 0x08, 0x06, 0x6C, 0x36, 0xAD, 0x8F, 0xE6, 0xB3, - 0xD5, 0x76, 0x97, 0xE7, 0xE6, 0xBF, 0xFB, 0x57, 0xBF, 0xFB, 0xDA, 0xE3, 0xB3, 0xF7, 0x7F, 0xFE, - 0xD1, 0x6C, 0x32, 0x79, 0xFF, 0xE7, 0x1F, 0xF5, 0x7D, 0xEF, 0x7C, 0xE0, 0x9C, 0x4F, 0xEA, 0x7A, - 0x3E, 0x9B, 0xFA, 0xE0, 0x23, 0x62, 0xDB, 0x76, 0xA7, 0xC7, 0x47, 0xFF, 0xEC, 0xB7, 0x7F, 0xE3, - 0xE2, 0xE2, 0xEA, 0xF9, 0xF9, 0xA5, 0xB5, 0x4E, 0x6B, 0xAD, 0x94, 0xB6, 0xDE, 0x13, 0x0A, 0x0C, - 0x8C, 0x0D, 0x76, 0x08, 0x3E, 0x6E, 0x36, 0x5B, 0x6B, 0xDD, 0x62, 0xB1, 0xD8, 0x6E, 0xB7, 0xDE, - 0x07, 0xA3, 0xD5, 0xED, 0xED, 0xEA, 0x78, 0x31, 0x3B, 0x3E, 0x9A, 0x17, 0xB9, 0x49, 0x09, 0x05, - 0xE7, 0x59, 0xA6, 0x29, 0xEE, 0x8C, 0x94, 0x88, 0x3D, 0xB2, 0x4D, 0x0B, 0x86, 0xCC, 0xE8, 0xB2, - 0x4C, 0x2B, 0x29, 0xF8, 0x98, 0x42, 0xC1, 0x1E, 0xB1, 0xA1, 0x11, 0x31, 0xC2, 0xFE, 0xE5, 0xE8, - 0x57, 0xC6, 0x85, 0x52, 0x72, 0xB4, 0xB0, 0x93, 0x42, 0xFC, 0xF1, 0x1F, 0xFD, 0xCF, 0xF4, 0x54, - 0x12, 0xE7, 0x0B, 0x21, 0x50, 0x42, 0xC1, 0xC6, 0x7A, 0x53, 0xC5, 0x10, 0xBA, 0xA6, 0x05, 0x8C, - 0x09, 0xC3, 0xAB, 0xCB, 0xDB, 0xEB, 0x9B, 0xF5, 0xAE, 0xE9, 0xAD, 0x73, 0x21, 0xC6, 0x4C, 0xEB, - 0x93, 0xA3, 0xC9, 0xD9, 0xC9, 0xFC, 0xC1, 0xD9, 0xC2, 0x59, 0xDB, 0xF7, 0x43, 0xDB, 0x0E, 0xDB, - 0xA6, 0x1F, 0x9C, 0x27, 0x2C, 0xF0, 0xF4, 0x78, 0xFA, 0xF0, 0x74, 0x5E, 0x57, 0x45, 0x66, 0xB4, - 0x14, 0x2C, 0x33, 0xAA, 0xAE, 0x6B, 0xD2, 0x3F, 0x65, 0xC4, 0x41, 0xDD, 0x8F, 0x1C, 0xD1, 0x40, - 0x21, 0x91, 0xAD, 0x53, 0xC2, 0x84, 0x31, 0x91, 0xE2, 0x1F, 0x00, 0x63, 0xE4, 0x74, 0x40, 0x79, - 0xDB, 0x08, 0x44, 0xF1, 0xFD, 0x0C, 0xEF, 0x3E, 0x48, 0x01, 0xC0, 0x5D, 0xEB, 0x10, 0x88, 0x0D, - 0x01, 0x2C, 0xB1, 0x3B, 0xB8, 0x8A, 0x01, 0xE3, 0x5C, 0xDE, 0x1B, 0x9F, 0xDA, 0xA3, 0x81, 0xC0, - 0xB8, 0xE0, 0x97, 0x17, 0xAF, 0x2E, 0x5E, 0x5E, 0x6A, 0x63, 0x00, 0x18, 0x22, 0x20, 0x42, 0x44, - 0xE4, 0xFB, 0x31, 0x75, 0xC6, 0x58, 0xC2, 0xF4, 0x25, 0x4A, 0x07, 0x1F, 0xCD, 0x99, 0xEE, 0xA7, - 0x7B, 0x77, 0xE2, 0xA1, 0x88, 0x29, 0x26, 0x8C, 0x01, 0x23, 0xA2, 0xF5, 0x61, 0xB3, 0x6D, 0xFF, - 0xE1, 0xA7, 0xBF, 0x7C, 0x75, 0xBD, 0xB9, 0xBE, 0x5D, 0xCF, 0xA6, 0xD3, 0x8B, 0x57, 0x97, 0xC0, - 0xD8, 0x93, 0xC7, 0x8F, 0x16, 0x8B, 0x39, 0xC6, 0x38, 0xA9, 0xEB, 0x3C, 0xCF, 0xE7, 0xB3, 0xC9, - 0xF1, 0x62, 0xF6, 0xFE, 0x2F, 0x3E, 0xCE, 0xF3, 0x6C, 0x52, 0x15, 0x7F, 0xF6, 0x7F, 0x7E, 0xFF, - 0xF3, 0x67, 0x2F, 0x63, 0x44, 0xE7, 0xDD, 0x30, 0xF8, 0x17, 0x2F, 0xAF, 0x5E, 0x5E, 0x5C, 0x7F, - 0xF6, 0xEC, 0xFC, 0xFC, 0xFC, 0x55, 0xF0, 0x21, 0x25, 0x9C, 0xD5, 0xB5, 0x56, 0x72, 0xD7, 0xB6, - 0xB9, 0xC9, 0x68, 0x18, 0x30, 0x62, 0x8C, 0x98, 0x38, 0xF0, 0xDE, 0xB9, 0xDE, 0xB9, 0x10, 0xE3, - 0xB4, 0x2A, 0xAE, 0x97, 0x9B, 0xB3, 0x93, 0xB9, 0x0F, 0xA1, 0xC8, 0xB3, 0xA2, 0xC8, 0x56, 0xBB, - 0x96, 0x1C, 0x6B, 0xC8, 0xB7, 0x34, 0x8D, 0x32, 0x32, 0x3C, 0x61, 0x22, 0x4E, 0x65, 0x3F, 0x0C, - 0xCE, 0xB9, 0x18, 0xB1, 0x2C, 0xF2, 0x27, 0x4F, 0x1E, 0x52, 0x2B, 0xAD, 0x6D, 0xBA, 0x6E, 0x18, - 0xAC, 0x75, 0xB9, 0x51, 0x82, 0x13, 0x71, 0x9C, 0x33, 0xC6, 0x9A, 0xB6, 0xC3, 0x84, 0x5A, 0x09, - 0x06, 0x0C, 0x31, 0x96, 0x45, 0x9E, 0x20, 0xB9, 0x10, 0xB5, 0x94, 0x4A, 0xCA, 0xA6, 0xE9, 0x3E, - 0xFC, 0xD5, 0xB3, 0x37, 0x9E, 0x3E, 0x3A, 0x9A, 0x4D, 0xBC, 0xF3, 0x42, 0x8A, 0xBE, 0xEB, 0xAD, - 0x73, 0x59, 0x66, 0x48, 0x1B, 0x93, 0x04, 0xFF, 0x9A, 0xB6, 0xA7, 0x7C, 0xCD, 0xF9, 0xF0, 0x93, - 0x9F, 0x7E, 0x20, 0x04, 0xAF, 0xEB, 0xF2, 0xEA, 0xFA, 0xB6, 0x1B, 0xDC, 0x64, 0x52, 0xD7, 0x55, - 0x99, 0xE7, 0xC4, 0xC5, 0x4F, 0x99, 0xD1, 0x29, 0x25, 0x06, 0x2C, 0xC4, 0xE8, 0xBD, 0x8F, 0x18, - 0x8F, 0x66, 0xD3, 0x22, 0x37, 0xF3, 0xD9, 0xC4, 0x7B, 0xFF, 0xEC, 0xF9, 0x45, 0x9E, 0x67, 0xCE, - 0x07, 0x21, 0xC5, 0x6C, 0x52, 0xF7, 0xBD, 0x5D, 0xEF, 0x9A, 0x94, 0x12, 0x19, 0x5E, 0x48, 0x21, - 0xBA, 0xC1, 0x4E, 0xAA, 0x0A, 0x20, 0x09, 0x21, 0x26, 0x55, 0x75, 0x75, 0x75, 0x53, 0xE4, 0x39, - 0xE7, 0xFC, 0x78, 0x31, 0xBF, 0xBC, 0xBA, 0xC5, 0x84, 0x54, 0xEF, 0xF4, 0xC3, 0xA0, 0xA4, 0x20, - 0x07, 0xDC, 0xF5, 0x7A, 0xEB, 0x83, 0x97, 0x52, 0x92, 0x63, 0x5B, 0x55, 0xE6, 0x3F, 0xFE, 0xD9, - 0x47, 0xCE, 0x79, 0xEB, 0x3C, 0x79, 0x1D, 0x91, 0xD9, 0x20, 0x19, 0x35, 0xA5, 0x94, 0x8C, 0x56, - 0x7C, 0x6C, 0x1C, 0x31, 0x21, 0xA5, 0x14, 0xDC, 0x07, 0x44, 0x4C, 0xE4, 0xCD, 0x2C, 0x85, 0x28, - 0x8B, 0xCC, 0x87, 0x30, 0x58, 0xCF, 0x19, 0x5F, 0x6F, 0x36, 0xCB, 0xD5, 0xC6, 0x3A, 0xDF, 0xF5, - 0xBD, 0x52, 0xCA, 0xFB, 0x20, 0x38, 0xAF, 0x8A, 0xC2, 0xF9, 0xC0, 0x38, 0x97, 0x52, 0x42, 0x4A, - 0x42, 0x08, 0xEB, 0x1C, 0x22, 0x8E, 0xD6, 0x90, 0x88, 0xD7, 0x37, 0xCB, 0xA2, 0x28, 0x08, 0x24, - 0x62, 0x9C, 0xE5, 0x59, 0x86, 0x09, 0x6F, 0x97, 0x2B, 0x25, 0x04, 0x02, 0x5C, 0x5E, 0xDF, 0xD0, - 0x94, 0xD5, 0xFB, 0x1F, 0xFC, 0xEA, 0xFA, 0x76, 0xE5, 0x7D, 0xC8, 0x8D, 0x39, 0x3B, 0x39, 0xEA, - 0xDA, 0x9E, 0x71, 0xEE, 0x9C, 0x3B, 0x3D, 0x9E, 0xFD, 0xCB, 0x7F, 0xF6, 0xDD, 0xB3, 0x93, 0x79, - 0xDB, 0xF5, 0x1F, 0x7F, 0xF2, 0xFC, 0x97, 0xBF, 0xFA, 0x3C, 0xCF, 0x33, 0xEF, 0x1C, 0xCD, 0x2A, - 0x1A, 0xA3, 0x49, 0xC1, 0xAB, 0xEF, 0x07, 0x21, 0x44, 0x3F, 0x0C, 0xCB, 0xD5, 0x16, 0x11, 0x9F, - 0x9F, 0x5F, 0x20, 0x22, 0x59, 0xC9, 0x35, 0x5D, 0x4F, 0xE8, 0x15, 0xAD, 0x45, 0x02, 0x25, 0x63, - 0x8C, 0xD3, 0x69, 0xDD, 0xB5, 0xED, 0xD0, 0x0F, 0x5D, 0xDF, 0x49, 0x21, 0x1F, 0x3C, 0x38, 0x91, - 0x52, 0xCC, 0x67, 0x13, 0xC6, 0x98, 0x90, 0xBC, 0x2C, 0x32, 0xAD, 0xA5, 0x14, 0x7C, 0xCF, 0x2A, - 0x20, 0xCE, 0x16, 0x13, 0xA3, 0xAA, 0x9A, 0x10, 0x92, 0x13, 0x2F, 0xFD, 0x8E, 0xBF, 0x4E, 0xD0, - 0x98, 0x92, 0x9C, 0x0B, 0xF2, 0xA8, 0x3D, 0x4C, 0xFD, 0xB3, 0xBD, 0xB8, 0x04, 0xE7, 0x8C, 0x71, - 0x26, 0xFE, 0xF8, 0x8F, 0xFE, 0x90, 0x72, 0xB1, 0x18, 0x02, 0x26, 0x42, 0xD7, 0x14, 0xF1, 0xF3, - 0xB9, 0x90, 0x42, 0xCA, 0xD5, 0x72, 0xB5, 0x5C, 0xAE, 0x04, 0x67, 0xAB, 0x4D, 0x7B, 0xBB, 0xDC, - 0x59, 0xEB, 0x23, 0x46, 0xCE, 0x59, 0x99, 0x67, 0x47, 0xB3, 0xB2, 0x2C, 0xB2, 0xC1, 0xFA, 0xDB, - 0xD5, 0xF6, 0x66, 0xB9, 0xB9, 0xB9, 0xD9, 0x5C, 0x5E, 0x6F, 0xBA, 0x7E, 0x08, 0x21, 0x5A, 0x1B, - 0xEA, 0x22, 0xFB, 0xCA, 0x3B, 0x4F, 0x75, 0x9E, 0xF3, 0x51, 0x11, 0x9B, 0x31, 0xC6, 0xB4, 0x31, - 0xCA, 0x64, 0xE3, 0xF7, 0xCC, 0x58, 0x1A, 0xC7, 0x1E, 0x29, 0x2B, 0x42, 0x96, 0x30, 0x7A, 0x8F, - 0x21, 0x1C, 0x9A, 0x98, 0x04, 0x42, 0x01, 0xE7, 0xD4, 0x05, 0xA7, 0xB9, 0x57, 0x8A, 0x47, 0x8C, - 0x73, 0x48, 0x0C, 0x00, 0x19, 0x03, 0xC6, 0x04, 0x90, 0x0B, 0xC9, 0x7E, 0x12, 0x33, 0x41, 0x62, - 0x09, 0x28, 0xEC, 0x8F, 0x3F, 0xC5, 0x3F, 0xAE, 0x04, 0xCB, 0x39, 0xEF, 0x9A, 0xDD, 0xF3, 0x67, - 0x2F, 0x04, 0x57, 0x09, 0x00, 0x23, 0x84, 0x88, 0x89, 0x68, 0x27, 0x34, 0x30, 0x2C, 0xC6, 0xF4, - 0x74, 0xAC, 0x0B, 0xEE, 0x61, 0x94, 0x87, 0x48, 0x0A, 0x00, 0xC0, 0x12, 0x3F, 0x88, 0x6D, 0xA4, - 0x84, 0x29, 0xC5, 0x90, 0x42, 0xC4, 0xDD, 0xAE, 0x3B, 0x7F, 0x79, 0xFD, 0xE2, 0xD5, 0xED, 0xAB, - 0xAB, 0xDB, 0xAA, 0xAC, 0xBA, 0xBE, 0x97, 0x4A, 0x02, 0x63, 0xCE, 0xF9, 0x2C, 0xCF, 0xA7, 0xD3, - 0x7A, 0x36, 0x9D, 0x0C, 0xD6, 0x39, 0xEF, 0xD6, 0x9B, 0xAD, 0x92, 0xF2, 0xEC, 0xF4, 0xA8, 0x2E, - 0x8B, 0x3F, 0xFF, 0xFE, 0xDF, 0x5E, 0x5D, 0x2F, 0x81, 0xB1, 0x61, 0xB0, 0xB4, 0x86, 0x53, 0x4A, - 0xBD, 0xB5, 0xAB, 0xCD, 0x46, 0x29, 0x05, 0x09, 0x26, 0x75, 0x79, 0x34, 0x9D, 0x6E, 0xDB, 0x96, - 0xD2, 0x9C, 0xCE, 0x5A, 0x29, 0xE4, 0x83, 0xE3, 0xA3, 0xAA, 0xC8, 0xB7, 0x4D, 0x13, 0x10, 0xEB, - 0xA2, 0x88, 0x18, 0x5F, 0xDD, 0xAC, 0x10, 0xD3, 0x6C, 0x52, 0x7B, 0x1F, 0x63, 0x4A, 0x57, 0xCB, - 0xCD, 0x66, 0xD7, 0x7A, 0x92, 0x03, 0x02, 0x20, 0x69, 0x07, 0x9A, 0xAF, 0xA6, 0xB6, 0x5D, 0x8C, - 0x48, 0xF0, 0xE5, 0xF1, 0x62, 0x56, 0x16, 0x79, 0x5D, 0x57, 0x5D, 0xD7, 0xF5, 0xFD, 0xD0, 0x0F, - 0x6E, 0xB0, 0x4E, 0x1B, 0x33, 0xA9, 0x6B, 0x44, 0x84, 0x94, 0xB4, 0xD6, 0x44, 0xA4, 0x84, 0x94, - 0x8C, 0x56, 0x18, 0x31, 0x2F, 0x32, 0x21, 0x39, 0x24, 0x20, 0x6D, 0xB8, 0xBA, 0x2C, 0x10, 0x71, - 0xB9, 0xDA, 0x70, 0xCE, 0xDE, 0xFB, 0xE6, 0x57, 0x62, 0x0C, 0x52, 0x70, 0x44, 0xB4, 0xCE, 0xB7, - 0x6D, 0xB7, 0x6B, 0x3B, 0xCE, 0x59, 0x59, 0x96, 0xE4, 0xBD, 0xA0, 0x94, 0x68, 0xDB, 0x5E, 0x0A, - 0xF1, 0xF4, 0xB5, 0x47, 0x8F, 0x1F, 0x3F, 0x98, 0x4E, 0x27, 0xDB, 0xED, 0xEE, 0xFA, 0x76, 0xBD, - 0xDA, 0x6C, 0x87, 0xC1, 0x9E, 0x9D, 0x1E, 0x03, 0xA2, 0x77, 0x8E, 0x84, 0xC9, 0x94, 0x92, 0xF4, - 0x25, 0xD0, 0xDE, 0x5D, 0x55, 0xE5, 0xC3, 0xB3, 0x93, 0x94, 0xD2, 0xF5, 0xCD, 0x92, 0xCA, 0xF1, - 0xCC, 0x64, 0x34, 0x56, 0x29, 0xA5, 0x5C, 0x2C, 0x66, 0x97, 0x97, 0x37, 0x11, 0xD3, 0xD1, 0x6C, - 0x32, 0x99, 0x54, 0x5A, 0xAB, 0xA6, 0xED, 0x48, 0x4B, 0x64, 0xBB, 0x6B, 0xBF, 0xF2, 0xCE, 0xD3, - 0xED, 0xAE, 0x7D, 0xFE, 0xE2, 0xC2, 0x18, 0x95, 0x19, 0x3D, 0x9B, 0xD6, 0xBB, 0xA6, 0x9B, 0x4D, - 0xAB, 0x69, 0x5D, 0x31, 0x00, 0x29, 0x84, 0x92, 0x82, 0x26, 0x9F, 0x20, 0x81, 0x0B, 0x21, 0xCB, - 0xCC, 0x66, 0xB3, 0x7B, 0xF6, 0xE2, 0xA2, 0xAE, 0xCA, 0xD5, 0x7A, 0xCB, 0x19, 0x53, 0x4A, 0x79, - 0xEF, 0xAD, 0xF3, 0x90, 0x80, 0x0B, 0x26, 0x38, 0x23, 0xC2, 0xF6, 0x60, 0x1D, 0xE7, 0x3C, 0x37, - 0x6A, 0x70, 0x9E, 0x16, 0x9E, 0x16, 0x5C, 0x4A, 0xA1, 0xA5, 0xEC, 0xAD, 0xDB, 0x35, 0x5D, 0x8C, - 0x11, 0x23, 0xF6, 0xFD, 0x50, 0x96, 0xE5, 0x76, 0xBB, 0xDB, 0x93, 0xD4, 0xC0, 0x5A, 0x9F, 0x20, - 0x29, 0x29, 0x9D, 0x73, 0x8C, 0x71, 0x6B, 0x1D, 0x63, 0xEC, 0xEC, 0x74, 0x51, 0x16, 0x26, 0xCF, - 0xCC, 0xB3, 0xF3, 0x57, 0xCE, 0x79, 0x12, 0xC9, 0xA1, 0xB6, 0x78, 0xD3, 0xB6, 0x79, 0x66, 0x4E, - 0x8F, 0x17, 0x5D, 0xDF, 0x0F, 0xD6, 0x9E, 0x2C, 0x16, 0x18, 0x71, 0xBD, 0xDD, 0x19, 0xAD, 0x8F, - 0x17, 0x47, 0xD6, 0xDA, 0xC1, 0xDA, 0xE9, 0xA4, 0x24, 0x9F, 0xBD, 0x6F, 0x7E, 0xED, 0xCD, 0xFF, - 0xFA, 0xF7, 0xBF, 0x57, 0x64, 0xC6, 0xFB, 0xF0, 0xD3, 0x9F, 0x7D, 0xB4, 0x5C, 0x6D, 0x7F, 0xE7, - 0x7B, 0xDF, 0x36, 0x46, 0x7D, 0xF4, 0xF1, 0xE7, 0x75, 0x59, 0x38, 0xE7, 0xFB, 0xC1, 0x4A, 0x29, - 0xBB, 0x6E, 0xF0, 0x21, 0xBC, 0xF6, 0xE8, 0x8C, 0x31, 0x76, 0x73, 0x73, 0x3B, 0x9B, 0x54, 0x5A, - 0xC9, 0xB2, 0x2A, 0x1F, 0x3D, 0x38, 0x15, 0x9C, 0xC5, 0x18, 0xA7, 0x75, 0x59, 0x97, 0x45, 0x6E, - 0x54, 0xAE, 0xE5, 0xB4, 0xCC, 0x43, 0x0C, 0x2E, 0x44, 0x3B, 0xB8, 0xC1, 0x5A, 0xEF, 0x5D, 0x99, - 0xE7, 0x55, 0x55, 0x2A, 0x29, 0xE7, 0xB3, 0x2A, 0x33, 0x5A, 0x2B, 0x31, 0xA9, 0x0B, 0xAD, 0x88, - 0x34, 0x3E, 0x4E, 0x17, 0xD2, 0xFA, 0xE1, 0x87, 0xC7, 0x5E, 0xBC, 0xEB, 0xC0, 0x97, 0x18, 0x53, - 0x12, 0x4E, 0x89, 0x98, 0x20, 0x63, 0x8D, 0x2F, 0x20, 0x48, 0xF7, 0xAA, 0x53, 0xCA, 0xD3, 0x46, - 0xCC, 0x88, 0x9C, 0x78, 0xA4, 0x52, 0xC0, 0x85, 0x10, 0x82, 0x52, 0x9E, 0xE3, 0x93, 0xE3, 0x3C, - 0xCB, 0xCE, 0x5F, 0x5E, 0xD2, 0x6C, 0x7D, 0xDA, 0x93, 0xD3, 0x10, 0xD3, 0xCD, 0x6A, 0xD7, 0xBF, - 0xBC, 0xA5, 0xE3, 0x0B, 0x21, 0x0E, 0xCE, 0x7B, 0x1F, 0x89, 0xEC, 0x50, 0x64, 0xEA, 0xF5, 0xD7, - 0x1F, 0x64, 0x65, 0x11, 0x22, 0x2A, 0x00, 0xA5, 0x54, 0x42, 0x6C, 0x9A, 0x56, 0x6B, 0x27, 0xA4, - 0x44, 0x87, 0x42, 0x4A, 0x3E, 0xB6, 0xAB, 0x01, 0x80, 0x01, 0x46, 0xC0, 0x48, 0x51, 0x2B, 0x21, - 0x8E, 0x93, 0x6C, 0x63, 0xCC, 0x48, 0xFB, 0xAE, 0x62, 0x22, 0xB5, 0x58, 0xC6, 0x18, 0xE3, 0xF7, - 0xA5, 0xBB, 0xD8, 0xC8, 0x0B, 0x3B, 0x54, 0xA8, 0xD4, 0x49, 0xD8, 0x67, 0xA6, 0x90, 0x04, 0xB0, - 0x2F, 0x36, 0x10, 0xC6, 0xD7, 0x92, 0xA5, 0xB9, 0x7D, 0xF1, 0xFC, 0x1C, 0x11, 0x18, 0x67, 0x64, - 0xB1, 0x37, 0xAA, 0x3A, 0x26, 0x48, 0x7B, 0xD5, 0xE9, 0xC3, 0x85, 0x0D, 0x98, 0x18, 0xD1, 0xD8, - 0x12, 0x2A, 0x10, 0x42, 0x8C, 0xD7, 0x9D, 0xB8, 0x62, 0xA4, 0xB4, 0xB3, 0x4F, 0x32, 0x59, 0x8C, - 0xB8, 0x6B, 0xFB, 0xF3, 0x8B, 0xAB, 0x8B, 0x8B, 0x2B, 0xC6, 0xC5, 0xD9, 0xC9, 0x71, 0x08, 0xE1, - 0xD1, 0xA3, 0xB3, 0xA3, 0xA3, 0xF9, 0x76, 0xDB, 0x74, 0xDD, 0xF0, 0xE0, 0xEC, 0x98, 0x2C, 0xC8, - 0x6E, 0x97, 0x6B, 0x6B, 0x2D, 0xA4, 0xF4, 0xE0, 0xF4, 0xA4, 0xEB, 0x86, 0xFF, 0xE3, 0xCF, 0xFE, - 0xE2, 0xD5, 0xE5, 0xB2, 0xB7, 0x03, 0x8D, 0x43, 0x73, 0x00, 0xEB, 0x5C, 0xC4, 0x14, 0x13, 0x4E, - 0xAA, 0xBA, 0x2C, 0xF2, 0xCD, 0x76, 0xCB, 0x38, 0xBF, 0xDD, 0x6C, 0xBA, 0x6E, 0x40, 0x44, 0xD0, - 0x0C, 0x13, 0xB4, 0x83, 0xBD, 0xBA, 0x5D, 0x53, 0x2F, 0xDF, 0x79, 0x2F, 0x84, 0x50, 0x42, 0x4A, - 0x81, 0x8C, 0xB1, 0x57, 0xD7, 0xEB, 0x98, 0x90, 0x01, 0x74, 0xDD, 0x40, 0x26, 0xC1, 0x04, 0x5F, - 0x22, 0x26, 0xEB, 0x03, 0xA2, 0x27, 0x00, 0x02, 0x12, 0x70, 0xCE, 0x42, 0x88, 0xA7, 0x27, 0xF3, - 0x49, 0x5D, 0xED, 0x76, 0x4D, 0xB3, 0xDB, 0xD9, 0xC1, 0x6E, 0x9B, 0xB6, 0x1F, 0x6C, 0x55, 0x95, - 0xA7, 0xC7, 0x0B, 0x06, 0x69, 0xB7, 0xDD, 0x1D, 0x7A, 0xB8, 0x42, 0x08, 0x92, 0x09, 0xA8, 0xCB, - 0x8C, 0x01, 0x5B, 0xAF, 0x76, 0x64, 0x33, 0xBA, 0x6D, 0xDA, 0xF9, 0xA4, 0x2E, 0x0B, 0x33, 0xA9, - 0x8A, 0xA3, 0xD9, 0xC4, 0x39, 0x17, 0x63, 0x0C, 0xCE, 0x93, 0x34, 0xD8, 0x7C, 0x3E, 0xDD, 0xEC, - 0x9A, 0x04, 0x20, 0x84, 0x08, 0xC1, 0xD7, 0x65, 0x41, 0xF3, 0x77, 0x9B, 0x6D, 0x43, 0x86, 0x98, - 0xC6, 0xE8, 0xDF, 0xFC, 0xCE, 0x37, 0xB3, 0xCC, 0x5C, 0x5E, 0xAF, 0xBC, 0x8F, 0x31, 0x46, 0x21, - 0x44, 0x88, 0xD4, 0xED, 0x65, 0x4A, 0xC9, 0x10, 0x31, 0x84, 0xE8, 0x06, 0xDB, 0x42, 0x32, 0x8D, - 0xBE, 0xBE, 0x59, 0x5D, 0xDF, 0xDC, 0x4A, 0x25, 0x38, 0xD7, 0x37, 0x37, 0xCB, 0xAB, 0xEB, 0x9B, - 0x53, 0xB6, 0xF8, 0xFA, 0xBB, 0x6F, 0x26, 0x32, 0x34, 0xB1, 0x7E, 0xB3, 0xDD, 0x59, 0xE7, 0x95, - 0xE0, 0x9B, 0x5D, 0xFB, 0xE6, 0xD3, 0xC7, 0x55, 0x91, 0x3F, 0x7B, 0x71, 0x71, 0x34, 0x9F, 0x3E, - 0x3F, 0xBF, 0x50, 0x52, 0x4C, 0x27, 0x55, 0x59, 0xE4, 0x09, 0x93, 0x10, 0xFC, 0xEC, 0x78, 0xC6, - 0x69, 0x7E, 0xA8, 0x2A, 0x94, 0x12, 0x29, 0x41, 0x66, 0xF4, 0x7A, 0xDB, 0x4C, 0xA7, 0xF5, 0xEB, - 0x4F, 0xCE, 0x72, 0xA3, 0xBD, 0xF7, 0x5F, 0xFB, 0xCA, 0x1B, 0x09, 0x52, 0x3B, 0x0C, 0xC1, 0x07, - 0x92, 0x84, 0x15, 0x9C, 0x31, 0x21, 0x85, 0x00, 0xE2, 0x73, 0x38, 0xEF, 0x39, 0x17, 0x00, 0x29, - 0x44, 0xA4, 0xD2, 0xDD, 0xF5, 0xCE, 0x5A, 0x5B, 0x95, 0xA5, 0x94, 0x4A, 0x08, 0xF1, 0xF0, 0xC1, - 0xC9, 0xAB, 0xCB, 0xEB, 0xD5, 0x66, 0xCB, 0xB8, 0x28, 0xAB, 0x54, 0x55, 0x65, 0xD7, 0xF5, 0x4A, - 0xA9, 0x61, 0xB0, 0x4A, 0xC9, 0x22, 0xCF, 0xB9, 0x10, 0xD6, 0x5A, 0xF2, 0x58, 0x2B, 0x4B, 0x35, - 0x0C, 0x16, 0x18, 0x10, 0x5B, 0x93, 0x01, 0x84, 0xE0, 0x19, 0xE3, 0x09, 0x13, 0x40, 0xCA, 0x8C, - 0xC9, 0xB3, 0xCC, 0x79, 0x7F, 0x7C, 0x7C, 0x44, 0x64, 0x14, 0xAD, 0x44, 0x3F, 0x0C, 0xC6, 0xE8, - 0xAA, 0xCA, 0x5F, 0x5E, 0x8C, 0x02, 0xB3, 0xDF, 0xF9, 0xD6, 0x57, 0x9F, 0x3C, 0x3A, 0x79, 0xFC, - 0xF0, 0x94, 0x50, 0xFF, 0x9F, 0xFE, 0xEC, 0xA3, 0x4F, 0x9F, 0x9D, 0x1F, 0xCD, 0xEA, 0xAE, 0xEF, - 0x7F, 0xF0, 0xC3, 0x9F, 0x90, 0x16, 0xD3, 0xA9, 0x56, 0xAF, 0x2E, 0xAF, 0xBD, 0xB3, 0x00, 0x38, - 0xAD, 0x0A, 0xCE, 0x40, 0x70, 0xA8, 0xAB, 0x22, 0x37, 0xB2, 0x7A, 0x78, 0x32, 0x2A, 0xD3, 0x42, - 0x29, 0x18, 0x54, 0x55, 0x89, 0x11, 0xDB, 0xBE, 0x57, 0x4A, 0x69, 0xA5, 0xA4, 0x52, 0x42, 0xEE, - 0x52, 0x82, 0x93, 0xC5, 0x11, 0xE3, 0x00, 0x29, 0x09, 0x00, 0x2D, 0xF8, 0xD1, 0x6C, 0xCA, 0x19, - 0xD3, 0x5A, 0x2A, 0x29, 0x49, 0x01, 0x8C, 0x74, 0x76, 0x38, 0x67, 0xA3, 0xE6, 0xE4, 0x3E, 0x30, - 0x7D, 0x31, 0x7E, 0xDD, 0x25, 0x0A, 0xEC, 0x8B, 0x1A, 0x14, 0x69, 0x24, 0xAE, 0xB2, 0x7B, 0x7D, - 0x3E, 0x20, 0xA6, 0x34, 0x81, 0x76, 0x11, 0x00, 0x48, 0x71, 0x90, 0xED, 0x29, 0x73, 0x30, 0xEA, - 0x4D, 0x0B, 0xCE, 0x89, 0x12, 0x0C, 0x94, 0x43, 0x06, 0x8E, 0x55, 0x25, 0xBB, 0xDE, 0x21, 0x26, - 0x63, 0xA4, 0x96, 0x32, 0x22, 0x7A, 0x1F, 0xAC, 0x0D, 0x88, 0x58, 0x15, 0x46, 0x08, 0xFE, 0xD5, - 0xB7, 0x1F, 0x9F, 0x9C, 0x2C, 0x10, 0x81, 0x01, 0x24, 0xC6, 0x6C, 0xD7, 0x2E, 0x97, 0xEB, 0xB6, - 0xEB, 0x19, 0x03, 0xAD, 0x95, 0x73, 0xDE, 0xF0, 0x9C, 0x01, 0x19, 0x67, 0x40, 0x42, 0xDC, 0x77, - 0x24, 0xC7, 0x7C, 0x8A, 0x01, 0xE0, 0xDE, 0x6E, 0x52, 0x48, 0xC9, 0x01, 0x80, 0x8B, 0x04, 0x00, - 0x88, 0xD1, 0xFB, 0xFD, 0xA8, 0x1B, 0xE7, 0x42, 0x8E, 0x80, 0x17, 0xDB, 0xE7, 0x6E, 0x5F, 0xCA, - 0x92, 0x20, 0x41, 0x62, 0x69, 0x6F, 0xF5, 0x78, 0xEF, 0x72, 0x8C, 0xA4, 0x4A, 0x8C, 0xFE, 0x57, - 0x1F, 0x7D, 0xDC, 0xB6, 0x83, 0x94, 0x32, 0xC6, 0x14, 0x31, 0x61, 0x4A, 0xA3, 0x82, 0xDE, 0x3E, - 0xEC, 0x8F, 0x12, 0x47, 0x08, 0x94, 0x67, 0x51, 0xBA, 0x45, 0x8D, 0x98, 0x7D, 0x14, 0x63, 0xD4, - 0x9F, 0xC0, 0x71, 0x06, 0x6E, 0x04, 0x2F, 0x77, 0x4D, 0x77, 0x7E, 0x71, 0x75, 0x79, 0xBD, 0xEC, - 0xFA, 0x61, 0x32, 0x9D, 0x64, 0x59, 0x56, 0x95, 0x85, 0xC9, 0xCD, 0xE5, 0xD5, 0xED, 0x6C, 0x5A, - 0x57, 0x55, 0xA9, 0x8D, 0xBE, 0xBC, 0xBA, 0xBD, 0xBA, 0x5D, 0xDD, 0xDC, 0xAE, 0x16, 0xF3, 0xD9, - 0x37, 0xBF, 0xF6, 0xD6, 0xB3, 0xE7, 0x2F, 0x3F, 0xFC, 0xF0, 0xD3, 0xE5, 0x72, 0x3B, 0x99, 0x54, - 0xD0, 0x30, 0xE7, 0x3C, 0xA9, 0x17, 0x24, 0x00, 0xA3, 0x75, 0x82, 0x11, 0xCE, 0xF7, 0x21, 0x6C, - 0x77, 0x8D, 0x94, 0x52, 0x4A, 0xC1, 0xB9, 0x4A, 0x90, 0xFA, 0xC1, 0xB5, 0x5D, 0xDF, 0xF5, 0xBD, - 0x96, 0x8A, 0x08, 0x3E, 0xD6, 0x3A, 0x94, 0xD2, 0xF9, 0x40, 0x96, 0x42, 0x98, 0x30, 0x21, 0x2A, - 0x21, 0x07, 0x6F, 0x49, 0x0E, 0x84, 0xB8, 0x6E, 0x31, 0xA2, 0x1C, 0xE5, 0x27, 0x29, 0xF0, 0x83, - 0x10, 0x3C, 0xD3, 0x7A, 0xE8, 0x07, 0x96, 0x20, 0x21, 0xB6, 0xDD, 0x80, 0x88, 0xB3, 0xAA, 0x5C, - 0x2C, 0xE6, 0xF3, 0xA3, 0xE9, 0x66, 0xBD, 0xC5, 0x18, 0xA9, 0x7D, 0x2E, 0xA4, 0x64, 0x31, 0x7A, - 0x1F, 0x74, 0x5D, 0x14, 0x45, 0xD6, 0x36, 0x7D, 0x88, 0x31, 0xC6, 0xE4, 0xBC, 0x53, 0x4A, 0x09, - 0xC1, 0x04, 0x63, 0x47, 0xB3, 0x9A, 0xA5, 0x34, 0x8A, 0xE8, 0x8B, 0xA4, 0x94, 0x9A, 0x1B, 0xC3, - 0x85, 0x78, 0xF2, 0xE8, 0x6C, 0xB5, 0xDE, 0x6E, 0x77, 0x3B, 0xA3, 0x95, 0xB5, 0x3E, 0xCF, 0x4D, - 0x9E, 0x19, 0x6B, 0xF4, 0xAE, 0x69, 0x31, 0xE2, 0x8B, 0x97, 0x17, 0x75, 0x55, 0xCE, 0xA6, 0x93, - 0x3C, 0xCF, 0xCF, 0x2F, 0xAE, 0x57, 0xEB, 0x2D, 0x91, 0xBF, 0xBB, 0xAE, 0xAF, 0xEB, 0x32, 0xA5, - 0x24, 0x38, 0x07, 0x01, 0x82, 0xF3, 0xD3, 0xD3, 0x93, 0x2C, 0x33, 0xAB, 0xF5, 0xD6, 0xF9, 0xF0, - 0xC6, 0xEB, 0x8F, 0x27, 0x93, 0xEA, 0x79, 0x99, 0xDF, 0xDC, 0xAE, 0x2F, 0x2F, 0x6F, 0x94, 0x10, - 0xDF, 0xFE, 0xD6, 0x57, 0xDF, 0xFF, 0xF9, 0xAF, 0x9A, 0xB6, 0xAD, 0xEA, 0x92, 0x33, 0x1E, 0xBC, - 0x23, 0xA4, 0xD9, 0x79, 0xFF, 0xE6, 0xD3, 0xC7, 0xB7, 0xCB, 0x35, 0x46, 0x94, 0x42, 0x4C, 0xEB, - 0xAA, 0xAE, 0xCB, 0xDC, 0xE8, 0x14, 0x71, 0x36, 0xA9, 0xC8, 0x3B, 0xA3, 0x2C, 0xF2, 0x3C, 0x37, - 0x55, 0x59, 0x9E, 0x1C, 0xCF, 0x77, 0x6D, 0xF7, 0xDE, 0xD7, 0xDF, 0x21, 0x41, 0xB1, 0xDF, 0xFE, - 0xEE, 0x37, 0x67, 0x93, 0xF2, 0x7F, 0xFB, 0x8F, 0x7F, 0x4E, 0x1B, 0x67, 0x8C, 0xD1, 0x39, 0x87, - 0x48, 0x77, 0x07, 0x57, 0x52, 0x02, 0x00, 0x67, 0x2C, 0xCF, 0x34, 0x62, 0xB2, 0xDE, 0x73, 0xC1, - 0x87, 0xC1, 0xB6, 0x6D, 0xDF, 0xB6, 0x7D, 0x88, 0x89, 0x0B, 0xBE, 0x5C, 0x6D, 0x7E, 0xEB, 0x37, - 0xBE, 0xE5, 0xAC, 0xBF, 0xBC, 0xBA, 0x15, 0x12, 0xAE, 0xAE, 0x6F, 0x01, 0xA0, 0xAE, 0x4B, 0x8A, - 0x56, 0x42, 0x70, 0x1F, 0xC2, 0xD3, 0x47, 0xA7, 0xB7, 0x4A, 0xDC, 0xDC, 0xAC, 0x84, 0xE0, 0x7D, - 0xDF, 0x93, 0xB6, 0xC3, 0x6A, 0x9D, 0xD4, 0xF8, 0xA5, 0xF3, 0x94, 0x12, 0xD5, 0x0A, 0x93, 0xAA, - 0x3C, 0xBF, 0x78, 0xF5, 0xDA, 0xE3, 0x07, 0xEF, 0xBC, 0xF9, 0x78, 0xBB, 0x6D, 0xCA, 0xB2, 0x1C, - 0x86, 0xE1, 0xF2, 0xEA, 0xF6, 0xAD, 0xA7, 0x8F, 0x1F, 0x3E, 0x58, 0x9C, 0x9F, 0xBF, 0x3A, 0x2D, - 0x8F, 0x9E, 0x3E, 0x39, 0xFB, 0xBD, 0x7F, 0xFA, 0x1E, 0x22, 0x6E, 0xB6, 0x0D, 0x00, 0x34, 0x6D, - 0xF7, 0xB3, 0x0F, 0x3E, 0x7A, 0xF2, 0xE4, 0x61, 0xDB, 0xF4, 0xFF, 0xE9, 0x3F, 0x7F, 0x1F, 0x83, - 0x9F, 0xD4, 0x15, 0x17, 0xD2, 0xF7, 0x7D, 0x5D, 0x16, 0xF3, 0xF9, 0x9C, 0xEC, 0xB8, 0x8A, 0x3C, - 0xCB, 0xB3, 0x45, 0x55, 0x64, 0x79, 0x6E, 0x48, 0xDC, 0x78, 0xB0, 0xB6, 0xEB, 0x87, 0xC9, 0x64, - 0xF2, 0xF4, 0xB5, 0x07, 0x0C, 0xA0, 0x1F, 0x2C, 0x62, 0x6A, 0xBA, 0xCE, 0x18, 0x7D, 0x74, 0x34, - 0xE3, 0x5C, 0xD4, 0x55, 0xD1, 0xB6, 0x9D, 0xF7, 0x9E, 0x33, 0xA8, 0xCA, 0xCC, 0x3B, 0x37, 0x5D, - 0x4C, 0xB5, 0x92, 0x52, 0x72, 0x21, 0xF6, 0x6E, 0x06, 0x30, 0xC2, 0xE0, 0x8C, 0xDF, 0x51, 0x0E, - 0xEE, 0xB7, 0xF2, 0x18, 0x00, 0xC2, 0x1E, 0x76, 0x1A, 0x75, 0x79, 0x69, 0xF8, 0x1B, 0xF7, 0x21, - 0x8F, 0x56, 0xF1, 0x1D, 0x24, 0x2D, 0x71, 0xD4, 0x11, 0x97, 0xCA, 0x18, 0xA9, 0x34, 0x83, 0x3B, - 0x85, 0x89, 0x94, 0x12, 0x4B, 0x80, 0xD1, 0x3B, 0x6B, 0xF9, 0xDE, 0xE7, 0x02, 0x20, 0x71, 0xC6, - 0x10, 0x71, 0x36, 0xC9, 0x9D, 0x8F, 0x5D, 0x6F, 0x31, 0xE2, 0x76, 0xD7, 0x5B, 0x17, 0x8C, 0x96, - 0x52, 0xA8, 0xAA, 0xCA, 0x8D, 0x14, 0xB3, 0xF9, 0x8C, 0x49, 0x45, 0x4D, 0xA5, 0x14, 0xB1, 0x69, - 0x5A, 0xA5, 0xC4, 0xC3, 0x87, 0x67, 0x7B, 0xD3, 0x84, 0x71, 0x54, 0x2D, 0x21, 0x1D, 0x0B, 0x42, - 0x02, 0xCE, 0x05, 0xF9, 0xE5, 0x1C, 0xE2, 0x2E, 0x4B, 0x80, 0x18, 0x63, 0x00, 0x46, 0xC3, 0x93, - 0x29, 0xB1, 0x84, 0xDE, 0x3B, 0x44, 0xA4, 0xB8, 0x95, 0xE5, 0x39, 0x62, 0x12, 0x42, 0x70, 0x21, - 0x81, 0x8B, 0x3D, 0xDC, 0x76, 0x47, 0xAA, 0x18, 0x8B, 0xE9, 0x2F, 0xA7, 0x62, 0x89, 0x38, 0xE5, - 0xB6, 0x6F, 0x3F, 0xFA, 0xF0, 0x63, 0x12, 0x03, 0x88, 0x81, 0xF4, 0x35, 0x00, 0x71, 0xC4, 0x19, - 0x19, 0x63, 0x87, 0x37, 0x24, 0xD6, 0x28, 0x7D, 0xEA, 0x28, 0xD0, 0xAA, 0x7F, 0x6D, 0x9E, 0x74, - 0x9C, 0x4F, 0x62, 0x0C, 0x20, 0xC6, 0x78, 0x73, 0xBB, 0x59, 0xAD, 0xB7, 0xAB, 0xD5, 0xB6, 0x2A, - 0x8A, 0xB7, 0xDE, 0x7C, 0x1D, 0x81, 0x69, 0xA3, 0x13, 0xA6, 0xD5, 0x6A, 0x3B, 0x9B, 0xD6, 0x5A, - 0xEB, 0x67, 0xCF, 0x5F, 0x5A, 0xE7, 0xCF, 0x2F, 0x2E, 0x3F, 0xF9, 0xE4, 0xF9, 0x72, 0xB5, 0xF9, - 0xEF, 0xFF, 0xDB, 0x7F, 0xDE, 0x34, 0xDD, 0x7F, 0xFA, 0xD3, 0x3F, 0xE7, 0x8C, 0x4F, 0xA6, 0x35, - 0x97, 0x12, 0x31, 0x31, 0xCE, 0xD0, 0xD3, 0x62, 0x10, 0x5A, 0xAB, 0x4D, 0xD3, 0xE0, 0xE8, 0x5D, - 0xC6, 0xB4, 0xD6, 0x52, 0x0A, 0x2A, 0x4F, 0x9A, 0xBE, 0x0F, 0x31, 0xD1, 0x0C, 0x53, 0x0C, 0x41, - 0x70, 0x1E, 0x3D, 0x1A, 0xAD, 0x87, 0xC1, 0xC6, 0x18, 0x75, 0x91, 0x63, 0xC4, 0x10, 0x82, 0x0B, - 0x5E, 0x70, 0xC1, 0x18, 0x17, 0x02, 0x68, 0xEB, 0x62, 0x0C, 0xB4, 0x96, 0x18, 0x91, 0x31, 0x36, - 0x1A, 0xA3, 0x71, 0xCE, 0x38, 0x1B, 0xAC, 0x55, 0x42, 0x84, 0x88, 0xDB, 0xA6, 0xED, 0x06, 0x5B, - 0xE5, 0xC6, 0x48, 0x15, 0x43, 0xE0, 0x0C, 0xB4, 0x96, 0x34, 0xF4, 0x4B, 0x83, 0xAC, 0x09, 0x51, - 0x70, 0xF0, 0x3E, 0xAC, 0x57, 0x3B, 0x22, 0xAA, 0xB7, 0xC3, 0xE0, 0xBD, 0x3F, 0x3B, 0x5E, 0x30, - 0x80, 0xED, 0x6E, 0x17, 0xD6, 0x71, 0xD7, 0xB4, 0x67, 0x67, 0x8B, 0xD3, 0x93, 0xA3, 0x18, 0x35, - 0x1D, 0x36, 0x8F, 0x91, 0xB0, 0x8E, 0x61, 0xB0, 0x74, 0x8D, 0xFB, 0x01, 0x68, 0xE5, 0xDC, 0x2E, - 0xD7, 0x3E, 0x84, 0xE3, 0xC5, 0xC2, 0x3A, 0x1F, 0xA3, 0x37, 0x59, 0xF6, 0xFA, 0x93, 0x87, 0x93, - 0xAA, 0xBC, 0xB8, 0xBC, 0x79, 0xF8, 0xE0, 0x94, 0xE8, 0xA3, 0x6D, 0xD7, 0xED, 0x0D, 0xB7, 0xA0, - 0xAA, 0xCA, 0xDB, 0xD5, 0x26, 0xC6, 0xAD, 0xD6, 0xEA, 0xB3, 0x67, 0x2F, 0xF3, 0x4C, 0x3F, 0x7E, - 0x74, 0xB6, 0x58, 0xCC, 0x3E, 0xF9, 0xF4, 0x85, 0x52, 0x22, 0x33, 0xEA, 0xEB, 0xEF, 0xBE, 0xD9, - 0x5B, 0xF7, 0xFC, 0xC5, 0xAB, 0xA6, 0xEB, 0x8E, 0x66, 0x93, 0xBA, 0xAE, 0x2E, 0xAF, 0x6E, 0xEA, - 0xA2, 0x10, 0x9C, 0xCF, 0x67, 0x93, 0xD5, 0x7A, 0x1B, 0x63, 0x9C, 0x4F, 0xAB, 0x3C, 0x33, 0x31, - 0x46, 0x1F, 0xA3, 0x60, 0xAC, 0xAA, 0x72, 0xA5, 0x84, 0x56, 0xCA, 0x68, 0xCD, 0x12, 0xBE, 0xFE, - 0xE8, 0x74, 0x32, 0x29, 0x13, 0xB0, 0x18, 0x22, 0x67, 0xEC, 0x74, 0x31, 0xBD, 0xBE, 0x5D, 0x5F, - 0xDD, 0x2C, 0xA5, 0xD4, 0x84, 0x8E, 0x01, 0xB0, 0xCC, 0x28, 0xEB, 0x02, 0xE5, 0x9B, 0x04, 0xD5, - 0x2B, 0x25, 0xFB, 0xAE, 0xD7, 0xAA, 0x54, 0x4A, 0x3A, 0xE7, 0xE9, 0x68, 0x63, 0x8C, 0x0F, 0xCE, - 0x4E, 0x18, 0x17, 0x2F, 0x2E, 0x2E, 0x97, 0xAB, 0x4D, 0x02, 0xF0, 0xDE, 0xD3, 0x58, 0x42, 0xDF, - 0x5B, 0x82, 0x85, 0x42, 0x88, 0x88, 0xFE, 0x67, 0x1F, 0x7C, 0x38, 0x9F, 0xCD, 0x4D, 0x66, 0x82, - 0xF7, 0x52, 0x4A, 0xAD, 0x64, 0xDB, 0xF5, 0xCE, 0x7B, 0xD0, 0x63, 0x25, 0x11, 0x63, 0x34, 0xC6, - 0x70, 0xCE, 0xAF, 0xAE, 0x6F, 0xDF, 0x7E, 0xF3, 0xB5, 0xEF, 0x7E, 0xE7, 0xEB, 0x00, 0xE9, 0xC9, - 0xC3, 0x13, 0x6D, 0x74, 0x6E, 0x8C, 0xD1, 0x8A, 0x9A, 0x03, 0xFF, 0xE3, 0xBF, 0xFD, 0x6F, 0xB4, - 0x92, 0x4A, 0xAB, 0xBE, 0x1F, 0xDA, 0xB6, 0x07, 0x80, 0x3C, 0xCF, 0x2E, 0x5E, 0x5D, 0xC5, 0x88, - 0x57, 0xD7, 0xCB, 0x97, 0x2F, 0xAF, 0x62, 0x0C, 0xB9, 0x56, 0xD3, 0x69, 0xDD, 0xF6, 0x76, 0xB7, - 0xDB, 0x29, 0xA9, 0x62, 0x0C, 0xCE, 0xF9, 0xAA, 0x2C, 0x1E, 0x9E, 0x2E, 0x94, 0x92, 0x93, 0xBA, - 0xD4, 0x5A, 0xDF, 0xDC, 0xAE, 0xBA, 0x6E, 0x60, 0x00, 0xC7, 0xF3, 0x49, 0x96, 0x99, 0x3C, 0xCB, - 0xAA, 0x32, 0x57, 0x4A, 0x22, 0xE2, 0xED, 0x72, 0xBD, 0x5A, 0xEF, 0x4C, 0x66, 0xC8, 0x37, 0x1A, - 0x8F, 0xA6, 0x9B, 0xED, 0x4E, 0x4A, 0x71, 0x34, 0x9B, 0x4C, 0xEA, 0xA2, 0xCC, 0xB3, 0x2C, 0x53, - 0xEA, 0x9E, 0xDD, 0x17, 0xE3, 0x8C, 0x33, 0xBE, 0x47, 0xF9, 0xBF, 0x34, 0x6A, 0x7D, 0x87, 0x31, - 0xEF, 0xC9, 0xF1, 0x90, 0x52, 0x82, 0x3B, 0x91, 0xAB, 0xBB, 0x97, 0xDC, 0x4F, 0xE2, 0xC4, 0xFF, - 0xFA, 0x27, 0x7F, 0x4C, 0x52, 0x93, 0xDA, 0x64, 0x00, 0x00, 0x38, 0xCA, 0x4E, 0x8C, 0x1C, 0x8F, - 0x18, 0x86, 0xBE, 0x5B, 0x6F, 0x76, 0x5D, 0xEF, 0x62, 0x8C, 0x81, 0xC0, 0xE4, 0xBB, 0x88, 0x98, - 0x88, 0xD8, 0xE2, 0x7C, 0x80, 0x44, 0xF2, 0xBB, 0xAC, 0xEB, 0x6D, 0x55, 0x66, 0x47, 0xF3, 0x49, - 0x0C, 0x91, 0x01, 0x46, 0x67, 0x09, 0xB6, 0xAC, 0x27, 0x93, 0xA2, 0x28, 0x12, 0xA2, 0x73, 0x96, - 0x4B, 0x21, 0xB8, 0xF0, 0x43, 0x8F, 0x31, 0x46, 0x0C, 0xC4, 0xC0, 0x20, 0x80, 0x09, 0x63, 0xD8, - 0x47, 0x22, 0x8A, 0xC6, 0x49, 0x2A, 0xC5, 0xF8, 0xBE, 0x29, 0xC8, 0x98, 0xB3, 0x43, 0x08, 0xA3, - 0x4D, 0x4C, 0xF0, 0xDE, 0x39, 0xEB, 0x9D, 0x03, 0x40, 0xCE, 0xF6, 0x13, 0x4B, 0x69, 0xBC, 0x22, - 0x63, 0xA4, 0xBF, 0x23, 0x5B, 0xD0, 0xA9, 0x8F, 0x93, 0x31, 0xCB, 0xDB, 0x9B, 0x8F, 0x7E, 0xF1, - 0xE1, 0xAE, 0x19, 0xC8, 0x92, 0x1E, 0xC7, 0x9E, 0x23, 0x60, 0x4A, 0x71, 0x0F, 0x83, 0x51, 0x94, - 0xA7, 0xB3, 0x0E, 0x09, 0x91, 0xC4, 0x84, 0x30, 0x71, 0xCE, 0x8C, 0x91, 0x52, 0x8E, 0x23, 0xC4, - 0x89, 0xC4, 0x94, 0xC7, 0x89, 0xF1, 0x84, 0x11, 0xDB, 0xDE, 0x6E, 0xB6, 0xCD, 0xD5, 0xF5, 0x52, - 0x48, 0xF9, 0xF4, 0xF5, 0x47, 0x8B, 0xC5, 0x9C, 0xBC, 0xD7, 0x76, 0x4D, 0xB7, 0x5C, 0xAE, 0xAF, - 0xAF, 0x6F, 0x7F, 0xF8, 0xA3, 0x9F, 0x7D, 0xFC, 0xE9, 0xF3, 0x8B, 0x8B, 0xCB, 0xF3, 0xF3, 0xCB, - 0xB6, 0xED, 0xBE, 0xFD, 0xAD, 0x77, 0xEB, 0xAA, 0xFC, 0x7F, 0xFF, 0xCB, 0x8F, 0x94, 0x90, 0x98, - 0x52, 0xD3, 0x75, 0xD6, 0x39, 0xDA, 0xA6, 0x30, 0x21, 0x03, 0xAE, 0xA4, 0x22, 0xDD, 0x2B, 0xC1, - 0x45, 0x9E, 0x1B, 0x25, 0xC9, 0x93, 0x80, 0xC7, 0x88, 0xDD, 0x30, 0x00, 0xE3, 0xB9, 0x31, 0xB9, - 0x56, 0x64, 0x40, 0x0B, 0x00, 0x4A, 0x08, 0xAD, 0xA5, 0x10, 0x42, 0x2B, 0x05, 0x64, 0xC0, 0x0E, - 0xE3, 0x45, 0x8E, 0x11, 0x19, 0x27, 0x8D, 0x36, 0x48, 0xC0, 0x48, 0xDA, 0x3E, 0xC6, 0x98, 0x19, - 0x4D, 0x0E, 0xDB, 0xE3, 0x9B, 0x0B, 0xBE, 0x6D, 0xBB, 0xC1, 0x7A, 0x44, 0xD4, 0x52, 0xD0, 0xF0, - 0xB3, 0x54, 0x6A, 0xBD, 0xDA, 0x38, 0xE7, 0x00, 0x40, 0x70, 0x11, 0x31, 0x86, 0x88, 0x9C, 0xF3, - 0x3C, 0xCB, 0x72, 0x92, 0xCF, 0x1F, 0x2C, 0xC6, 0x18, 0x53, 0xCA, 0xB4, 0x62, 0x29, 0xF9, 0x10, - 0xB4, 0xD6, 0x44, 0xE6, 0xCA, 0x0B, 0x03, 0x7B, 0xF8, 0x96, 0xB8, 0x02, 0x75, 0x55, 0x68, 0xA5, - 0xD6, 0x9B, 0x1D, 0x62, 0x2A, 0x8B, 0x7C, 0xBD, 0xDD, 0x11, 0x33, 0xA0, 0xEF, 0xED, 0xED, 0x72, - 0xB5, 0x5C, 0xAE, 0xBC, 0x0F, 0x7B, 0x50, 0x1F, 0xB5, 0x94, 0xF5, 0xA4, 0xAC, 0xCA, 0x62, 0x18, - 0xAC, 0x0F, 0xDE, 0x18, 0x43, 0x24, 0xB2, 0x5D, 0xD3, 0x84, 0x10, 0x8F, 0x8E, 0x66, 0xBB, 0xA6, - 0x59, 0xAF, 0x37, 0x59, 0x96, 0x6D, 0xB7, 0xBB, 0x27, 0x8F, 0x4E, 0xAD, 0x73, 0x44, 0x25, 0xD7, - 0x52, 0x3E, 0x3C, 0x5B, 0x3C, 0x7A, 0x78, 0x42, 0xAF, 0x7D, 0xED, 0xF1, 0x03, 0x96, 0x80, 0x0B, - 0xCE, 0x19, 0x23, 0x79, 0x52, 0x8C, 0xA9, 0x2C, 0x33, 0xE7, 0x3C, 0x8C, 0x32, 0x3B, 0x61, 0x36, - 0xAD, 0xCB, 0x22, 0xA7, 0x5B, 0x5A, 0x48, 0x7E, 0xBC, 0x98, 0xD3, 0x4C, 0x1E, 0x69, 0x3D, 0x2A, - 0x25, 0x7F, 0xFA, 0xC1, 0xC7, 0x9F, 0x3F, 0xBF, 0x32, 0x46, 0xC7, 0x18, 0xCF, 0x4E, 0x8F, 0x7E, - 0xEF, 0xB7, 0x7F, 0xB3, 0x6D, 0xFB, 0xAB, 0xDB, 0xA5, 0xE0, 0x22, 0xCF, 0x8C, 0x0F, 0x81, 0xDC, - 0xC2, 0xA9, 0x5F, 0x14, 0x7C, 0xBC, 0xB8, 0xBA, 0xCD, 0x8D, 0x8A, 0x21, 0x3E, 0x7D, 0xFD, 0xF1, - 0xEF, 0xFE, 0x93, 0xEF, 0xA4, 0x94, 0x96, 0xCB, 0xED, 0x72, 0xB5, 0xA6, 0xF2, 0x50, 0x69, 0x29, - 0x38, 0xA7, 0x56, 0xAC, 0x14, 0x64, 0x37, 0x19, 0xB5, 0x56, 0x21, 0xC4, 0x84, 0x18, 0x63, 0x30, - 0x46, 0x87, 0x88, 0x00, 0x40, 0x49, 0x0D, 0x35, 0xDF, 0xA9, 0x2F, 0x17, 0x42, 0xFC, 0x8D, 0xF7, - 0xDE, 0x7D, 0xEB, 0x8D, 0x27, 0x7F, 0xFE, 0xFD, 0x1F, 0xFC, 0xF2, 0xA3, 0xCF, 0xDA, 0xAE, 0x9F, - 0x4E, 0xAA, 0xD9, 0xB4, 0x26, 0xD7, 0x67, 0x4C, 0x78, 0x7E, 0x71, 0xCD, 0x39, 0x83, 0x94, 0xAE, - 0x6E, 0xD6, 0x34, 0xA9, 0xEE, 0x9C, 0xFB, 0x8B, 0xBF, 0xFE, 0x61, 0x4A, 0x69, 0x18, 0x06, 0x02, - 0x46, 0xAB, 0x22, 0x1B, 0x06, 0x7B, 0x79, 0xB3, 0x64, 0x8C, 0x67, 0x46, 0xE7, 0x79, 0xA1, 0xA4, - 0x78, 0x74, 0x76, 0x9C, 0x19, 0x65, 0xB4, 0x2E, 0x8B, 0x42, 0x4A, 0x61, 0xB4, 0x52, 0x5A, 0x55, - 0x65, 0x3E, 0x9F, 0x4E, 0xA4, 0xE4, 0x09, 0xD2, 0xA4, 0x2E, 0xAB, 0xDC, 0x4C, 0xAA, 0x62, 0x52, - 0x97, 0x65, 0x59, 0x2C, 0xE6, 0xD3, 0x49, 0x5D, 0xE6, 0x99, 0x01, 0x60, 0x46, 0xAB, 0xA3, 0xF9, - 0x74, 0x3A, 0xA9, 0x66, 0x93, 0x2A, 0xCF, 0x0C, 0x69, 0x4C, 0x72, 0x31, 0x3E, 0xF6, 0x20, 0xD7, - 0x7D, 0x9A, 0xC1, 0xAF, 0xA5, 0x04, 0xE9, 0x7E, 0xB2, 0x76, 0x58, 0xBE, 0xF7, 0x7F, 0xA6, 0xFB, - 0x41, 0x50, 0x6A, 0xA5, 0x94, 0xD6, 0x9C, 0x73, 0x8C, 0x01, 0x12, 0x22, 0x26, 0x86, 0x28, 0xA4, - 0x60, 0xC0, 0x13, 0x62, 0xF0, 0xBE, 0xEF, 0xFA, 0x94, 0x50, 0x29, 0xD1, 0x0F, 0x2E, 0xC4, 0x18, - 0x28, 0xCB, 0x42, 0xEC, 0x7A, 0xAB, 0x95, 0x90, 0x52, 0x90, 0x66, 0x08, 0x00, 0x20, 0x26, 0xE7, - 0x2C, 0x15, 0x82, 0xAF, 0x5E, 0x5D, 0x51, 0x33, 0x1E, 0x18, 0x54, 0x75, 0x0D, 0x00, 0x18, 0x63, - 0x67, 0xED, 0x30, 0xF4, 0xDE, 0x07, 0x36, 0x58, 0xA5, 0x2C, 0x21, 0x58, 0x42, 0xCA, 0xCC, 0x64, - 0x77, 0xF9, 0x22, 0x63, 0x18, 0x43, 0x4A, 0xA8, 0xB4, 0x66, 0x5C, 0x28, 0xB6, 0xD7, 0xA1, 0x05, - 0x48, 0x88, 0x11, 0xA3, 0x90, 0x12, 0x00, 0xD6, 0xEB, 0x2D, 0xCD, 0xD0, 0xFB, 0xE0, 0x13, 0x26, - 0xE7, 0x5D, 0x96, 0x79, 0x3D, 0x5A, 0xA2, 0x24, 0x0A, 0xE1, 0x52, 0x2A, 0x90, 0x8A, 0xED, 0xA5, - 0x25, 0x18, 0x63, 0x31, 0x84, 0x84, 0xA8, 0x94, 0x3C, 0x7F, 0xFE, 0xFC, 0xD9, 0x67, 0xCF, 0x38, - 0x57, 0x82, 0x31, 0x67, 0x9D, 0xD4, 0x19, 0x63, 0x40, 0x9E, 0x97, 0x87, 0xC0, 0x9F, 0xC6, 0x3E, - 0x25, 0x44, 0xC4, 0x80, 0x98, 0x30, 0xF1, 0xD1, 0x93, 0x25, 0x31, 0xC6, 0xE5, 0x88, 0x21, 0xC2, - 0x88, 0x8B, 0x25, 0x42, 0xF6, 0x40, 0x0A, 0x91, 0x38, 0x20, 0x26, 0xA5, 0xD5, 0xD1, 0xE2, 0x28, - 0xCB, 0xB2, 0x80, 0xE9, 0xD9, 0xF9, 0x95, 0xF7, 0x61, 0xB0, 0xEE, 0x93, 0x4F, 0x9F, 0x7F, 0xF8, - 0xD1, 0xA7, 0xCE, 0xB9, 0xBC, 0xC8, 0x5F, 0x7F, 0xF2, 0xD8, 0x5A, 0xB7, 0x5C, 0x6D, 0xDE, 0x7D, - 0xF7, 0xED, 0xC9, 0xA4, 0xFE, 0xE1, 0xDF, 0xFF, 0x4C, 0x08, 0x6E, 0x8A, 0xBC, 0x77, 0xCE, 0x3A, - 0x1F, 0xFA, 0x61, 0x3A, 0x99, 0x08, 0xCE, 0x15, 0x68, 0x60, 0x9E, 0xF4, 0xAA, 0xCA, 0x22, 0xCF, - 0x33, 0xC3, 0x00, 0xBA, 0xBE, 0x27, 0xCB, 0x48, 0x25, 0xE5, 0xA4, 0xAA, 0x22, 0xC6, 0x94, 0xC0, - 0xFB, 0x30, 0x58, 0x2B, 0x84, 0x90, 0x52, 0x90, 0xB0, 0x92, 0x10, 0x40, 0x53, 0xEB, 0x8C, 0x70, - 0x55, 0x96, 0x22, 0x26, 0x60, 0x40, 0x01, 0x97, 0xE4, 0xBD, 0xA4, 0xE4, 0x5A, 0xE9, 0x94, 0x52, - 0x0C, 0x91, 0xB8, 0xCA, 0x54, 0xC9, 0xAE, 0xB6, 0xBB, 0x88, 0x68, 0xB4, 0x11, 0x9C, 0x51, 0x8B, - 0x8D, 0x09, 0xBE, 0xDB, 0x36, 0x43, 0x6F, 0x09, 0xA6, 0x19, 0x35, 0x8B, 0xC0, 0x4B, 0x29, 0xCB, - 0x32, 0x77, 0xCE, 0x0F, 0xD6, 0x69, 0xA9, 0x22, 0x46, 0x06, 0xB0, 0xDD, 0x36, 0xE5, 0xE9, 0xF1, - 0xC9, 0xC9, 0xB1, 0x14, 0xBC, 0xEB, 0x86, 0xF3, 0x8B, 0xCB, 0xC5, 0x62, 0x3A, 0xAD, 0x2B, 0xCE, - 0xD9, 0x30, 0x38, 0x6B, 0xDD, 0xD1, 0xD1, 0xCC, 0xFB, 0xE0, 0x9C, 0x27, 0x54, 0x7B, 0xB7, 0x6B, - 0x32, 0xA3, 0x9B, 0xA6, 0xCB, 0x32, 0x7D, 0x7A, 0x72, 0x94, 0x67, 0xE6, 0x57, 0xBF, 0xFA, 0x4C, - 0x70, 0x4E, 0x72, 0x48, 0x92, 0xB3, 0xFA, 0x68, 0xBA, 0xD9, 0x35, 0x83, 0x73, 0xD3, 0xBA, 0xF4, - 0xDE, 0x87, 0xE0, 0xA7, 0x93, 0x89, 0xD1, 0xFA, 0xE5, 0xE5, 0xF5, 0xE2, 0x68, 0xD6, 0xEC, 0x9A, - 0xE0, 0xC3, 0x66, 0xDB, 0xBC, 0xF7, 0xCD, 0x77, 0x9D, 0xB5, 0xCF, 0x9E, 0x5F, 0x94, 0x65, 0xD9, - 0x76, 0xFD, 0x7A, 0xD3, 0x00, 0x00, 0xE7, 0xEC, 0x68, 0x36, 0xA9, 0xCB, 0xE2, 0xDB, 0xDF, 0x78, - 0x87, 0x01, 0xBB, 0x5D, 0x6D, 0x7E, 0xF5, 0xC9, 0xB3, 0x94, 0x60, 0x3E, 0x9F, 0xD0, 0x40, 0xE5, - 0x66, 0xDB, 0x14, 0x53, 0xF2, 0x09, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x2A, 0x25, - 0x73, 0x29, 0xCA, 0x32, 0xEB, 0xBA, 0x84, 0x88, 0x52, 0x8A, 0xCC, 0x18, 0x2E, 0x98, 0x10, 0xE2, - 0x20, 0xBD, 0x4E, 0x85, 0x82, 0xB5, 0xFE, 0xF3, 0xE7, 0xAF, 0x10, 0xC3, 0x76, 0xB7, 0x9B, 0xD4, - 0xE5, 0x3F, 0xFD, 0xAD, 0x6F, 0x65, 0xC6, 0x38, 0x1F, 0x48, 0x03, 0xDD, 0xEF, 0xFB, 0xFE, 0x24, - 0x4B, 0xDE, 0xF7, 0x56, 0x08, 0x9E, 0x67, 0x86, 0x84, 0x03, 0x4E, 0x8F, 0x17, 0x1F, 0x7D, 0xF2, - 0xEC, 0xC3, 0x8F, 0x3F, 0x9F, 0xD4, 0xE5, 0x7F, 0xF5, 0xBB, 0xDF, 0xFD, 0x87, 0x9F, 0xFC, 0xFC, - 0xE2, 0xD5, 0xB5, 0xE0, 0x1A, 0x31, 0x4A, 0xC1, 0x09, 0xAB, 0xC1, 0x94, 0x42, 0x60, 0x21, 0xC4, - 0x88, 0xBE, 0x2C, 0x72, 0xCE, 0x4D, 0x0C, 0x18, 0x62, 0xA0, 0x79, 0x72, 0xE7, 0xBC, 0xC9, 0x4C, - 0x0C, 0x91, 0xD2, 0x9F, 0xEF, 0xFD, 0xD6, 0xB7, 0x16, 0x47, 0xB3, 0x1F, 0xFD, 0xE4, 0x03, 0xE7, - 0x9C, 0x31, 0x66, 0xBD, 0xDE, 0x7D, 0xF0, 0xC1, 0xC7, 0x7D, 0x6F, 0x6F, 0x96, 0x9B, 0x07, 0xA7, - 0x47, 0x0F, 0x4E, 0x8F, 0xDB, 0xAE, 0x3F, 0x59, 0xCC, 0x6E, 0x57, 0x9B, 0xED, 0xAE, 0x39, 0x59, - 0xCC, 0x58, 0x4A, 0xEB, 0xCD, 0xAE, 0xEF, 0x06, 0xAD, 0x55, 0xDB, 0x05, 0x21, 0x78, 0x95, 0x19, - 0x06, 0x68, 0xAD, 0x07, 0x04, 0xA9, 0x39, 0x00, 0x28, 0xC9, 0x8B, 0xBC, 0x64, 0x00, 0x75, 0x5D, - 0xD6, 0x55, 0x49, 0x73, 0xEF, 0x98, 0xD2, 0x22, 0x37, 0x5A, 0x8F, 0x16, 0x01, 0x21, 0xA2, 0xD1, - 0xD2, 0x64, 0x5A, 0x48, 0x51, 0x28, 0x91, 0xE7, 0x86, 0x00, 0x0D, 0x92, 0x2D, 0x4A, 0x29, 0x19, - 0x2D, 0x95, 0x14, 0x99, 0x31, 0x52, 0x0A, 0xC6, 0x0E, 0x74, 0x83, 0x31, 0x72, 0x21, 0x7E, 0x81, - 0xBE, 0xFE, 0x6B, 0xE8, 0x18, 0xDB, 0x13, 0x2F, 0x12, 0x63, 0x77, 0x4F, 0x20, 0x8F, 0xD1, 0x2F, - 0xA1, 0x69, 0xF4, 0x4F, 0xA9, 0x0E, 0xB6, 0xB8, 0x00, 0x34, 0xE7, 0xC2, 0x38, 0x4F, 0x09, 0x52, - 0xF2, 0xDE, 0xB9, 0x10, 0x02, 0x75, 0x79, 0x89, 0x58, 0x25, 0x18, 0x93, 0x5A, 0xD1, 0x8A, 0xA5, - 0xB9, 0xE8, 0xB4, 0xB7, 0x5C, 0x2C, 0x0B, 0x53, 0x15, 0xD9, 0xAE, 0xED, 0x95, 0x52, 0xCE, 0x85, - 0x61, 0x70, 0xD6, 0x7A, 0xEB, 0xBC, 0x92, 0xA2, 0x6B, 0x07, 0x12, 0xA4, 0x26, 0x0F, 0x54, 0x9A, - 0x3F, 0x27, 0xCE, 0x1A, 0x63, 0x4C, 0x4A, 0xC5, 0x18, 0x4F, 0x88, 0x31, 0xA5, 0x18, 0x82, 0xF7, - 0x0E, 0x23, 0x72, 0xC1, 0x85, 0x94, 0x29, 0x10, 0xC0, 0x9D, 0x94, 0x52, 0x29, 0x81, 0xB7, 0x43, - 0x08, 0x51, 0x08, 0x61, 0xBD, 0xEB, 0xBB, 0x81, 0x73, 0x2E, 0x24, 0x27, 0x32, 0x2A, 0x46, 0x0C, - 0x01, 0x8B, 0x62, 0x2F, 0xD8, 0x1D, 0x23, 0x30, 0xA6, 0x84, 0x54, 0x4A, 0x49, 0xAD, 0x52, 0x4A, - 0x5C, 0x08, 0xA0, 0x41, 0xA7, 0x94, 0x3E, 0xFE, 0xEC, 0xD9, 0xC5, 0xC5, 0x95, 0xD6, 0x8A, 0x31, - 0x31, 0x0A, 0x61, 0x24, 0x00, 0xBE, 0x57, 0x33, 0xDB, 0xC7, 0x7E, 0xAA, 0xC0, 0xA9, 0x25, 0x4F, - 0x81, 0x94, 0x1C, 0xA5, 0xA4, 0x92, 0x44, 0x75, 0x19, 0xBB, 0xBD, 0x91, 0xE2, 0x1D, 0xA3, 0x1E, - 0xFF, 0x72, 0xDD, 0x7C, 0xF6, 0xE2, 0x42, 0x48, 0x95, 0x19, 0x93, 0x18, 0xFB, 0xFC, 0xC5, 0x4B, - 0x63, 0xCC, 0x6A, 0xB3, 0xB3, 0xCE, 0xDF, 0x2E, 0x57, 0x9B, 0x75, 0xA3, 0xB5, 0x56, 0x4A, 0x9E, - 0x9D, 0x9E, 0x04, 0xE7, 0x6E, 0x6F, 0x57, 0x5F, 0x7B, 0xF7, 0x1D, 0xE7, 0xC3, 0x5F, 0xFD, 0xCD, - 0x0F, 0x67, 0xD3, 0x3A, 0xC5, 0xB4, 0x21, 0x55, 0x5F, 0xCE, 0xD1, 0xFB, 0xB6, 0xEF, 0x24, 0xE7, - 0x00, 0x64, 0xAA, 0x9A, 0xC8, 0x31, 0x8C, 0xF3, 0x11, 0x31, 0xB1, 0xCE, 0x2A, 0xA9, 0xB8, 0x10, - 0xC1, 0x39, 0xEF, 0xBD, 0x14, 0x02, 0x53, 0xD2, 0x4A, 0x79, 0x52, 0xB0, 0xE2, 0x01, 0x5D, 0x4A, - 0x90, 0xAC, 0xF7, 0xB0, 0x6F, 0x73, 0x90, 0x9B, 0x16, 0xD5, 0x2F, 0x24, 0x85, 0x4E, 0x6C, 0x2C, - 0x3A, 0xCD, 0xB2, 0xC8, 0xA6, 0x93, 0x9A, 0x71, 0x71, 0xBB, 0x5A, 0x87, 0x18, 0x7B, 0x6B, 0x21, - 0x25, 0x0C, 0x28, 0x04, 0x47, 0xC4, 0x6E, 0xB0, 0x8C, 0x81, 0x92, 0x3C, 0x37, 0xBA, 0xE9, 0xFB, - 0x22, 0x33, 0x29, 0x41, 0x8A, 0x90, 0x67, 0x46, 0x2B, 0xED, 0x7D, 0xD8, 0x35, 0x5D, 0x42, 0x1C, - 0xA5, 0x94, 0x19, 0x1C, 0x4D, 0x27, 0xC7, 0x8B, 0xB9, 0xD6, 0xBA, 0xEB, 0xBA, 0xED, 0x6E, 0x07, - 0x00, 0xCF, 0xCF, 0x2F, 0x2F, 0x2F, 0x6F, 0xBF, 0xFE, 0xB5, 0x37, 0xDF, 0x7A, 0xF3, 0xB5, 0xCD, - 0x66, 0x97, 0x65, 0xC6, 0x68, 0x15, 0x11, 0xCB, 0x32, 0x37, 0x46, 0x0F, 0xD6, 0xC6, 0xC1, 0x31, - 0x06, 0x0C, 0xB4, 0xF7, 0x61, 0x32, 0xA9, 0xDE, 0x7B, 0xEF, 0xDD, 0xF5, 0x6A, 0x73, 0xFE, 0xF2, - 0x92, 0x01, 0x64, 0x5A, 0x75, 0x6D, 0xC7, 0x18, 0xCB, 0x8C, 0xEE, 0xBA, 0x9E, 0x33, 0xE0, 0x9C, - 0xAF, 0xD6, 0x1B, 0xC6, 0xF9, 0xD1, 0x7C, 0xCA, 0x00, 0xDA, 0xB6, 0x9D, 0x4C, 0x26, 0xFD, 0x60, - 0x3F, 0xFD, 0xF4, 0xF9, 0xD7, 0xBF, 0xFA, 0x66, 0xD3, 0x76, 0xD6, 0xDA, 0x37, 0x5E, 0x7F, 0xDC, - 0x0F, 0xC3, 0xCD, 0xED, 0x66, 0x36, 0xA9, 0x27, 0x75, 0x41, 0x7E, 0xE9, 0x0F, 0xCF, 0x8E, 0x1F, - 0x3D, 0x58, 0x30, 0x48, 0x1F, 0x7E, 0xFC, 0xAC, 0xEB, 0x86, 0xC7, 0x8F, 0x4E, 0xAD, 0x75, 0x9F, - 0x7E, 0x7E, 0x5E, 0x95, 0x05, 0x00, 0x94, 0x45, 0x5E, 0x96, 0x39, 0x07, 0xA6, 0xB5, 0xAE, 0x4A, - 0xE1, 0x1D, 0xE9, 0x8B, 0xA1, 0x52, 0x12, 0x88, 0xF9, 0x0C, 0xEC, 0xE2, 0xFA, 0xB6, 0x1F, 0x06, - 0xD2, 0x05, 0xFC, 0xFD, 0xDF, 0xFE, 0xCD, 0xE9, 0xA4, 0xFA, 0xD9, 0x2F, 0x3E, 0x7D, 0xF1, 0xF2, - 0x92, 0x33, 0x06, 0x09, 0x7D, 0xF0, 0x52, 0x48, 0xC4, 0xD8, 0xF7, 0xB6, 0x69, 0x7A, 0x21, 0xB9, - 0xD6, 0xD9, 0xA4, 0x2A, 0xB7, 0xBB, 0xB6, 0x2C, 0x8A, 0x8B, 0xCB, 0x6B, 0x4C, 0xF8, 0xD6, 0xD3, - 0x27, 0x29, 0xA5, 0xCD, 0x76, 0x47, 0xF2, 0x12, 0x88, 0x51, 0x4A, 0x59, 0xE7, 0xA6, 0xEB, 0x3D, - 0xAD, 0x4C, 0x06, 0xF0, 0xE8, 0xEC, 0x18, 0x53, 0x52, 0x52, 0x76, 0x83, 0x45, 0x44, 0x00, 0xCD, - 0x38, 0xAF, 0xAB, 0xA2, 0xEB, 0x06, 0xE7, 0x43, 0x59, 0x18, 0x25, 0xE5, 0xEB, 0x4F, 0x1E, 0x7A, - 0x6B, 0x7F, 0xFE, 0xC1, 0x87, 0xCE, 0x5A, 0xEA, 0xA7, 0x85, 0x10, 0xA4, 0x52, 0xCE, 0xC7, 0x5F, - 0x7C, 0xF8, 0x89, 0xF7, 0x4E, 0x08, 0xDE, 0xB6, 0x1D, 0x40, 0x8A, 0x31, 0xBE, 0xF5, 0xDA, 0xC3, - 0x18, 0x42, 0x4A, 0xE9, 0x76, 0xB9, 0xA6, 0x91, 0x75, 0x06, 0xCC, 0x28, 0xCD, 0x39, 0xC3, 0x18, - 0x12, 0x24, 0x00, 0x64, 0x20, 0x62, 0xC4, 0x5D, 0xD3, 0x56, 0x45, 0x5E, 0xE4, 0xD9, 0x64, 0x52, - 0xE7, 0x5A, 0x09, 0xC1, 0x49, 0x90, 0xAA, 0x2A, 0x8C, 0x54, 0x12, 0x23, 0x86, 0x88, 0x52, 0x88, - 0x3C, 0xD7, 0x52, 0x4A, 0xCE, 0x38, 0xDC, 0x85, 0xA7, 0x04, 0x90, 0x8A, 0x94, 0x52, 0x4A, 0x82, - 0x0B, 0x35, 0xB6, 0xFD, 0x89, 0x2A, 0xC1, 0xD9, 0x28, 0x91, 0x35, 0xD6, 0x4C, 0xEC, 0x7E, 0xAE, - 0xF5, 0x6B, 0x19, 0x16, 0x85, 0xB0, 0x43, 0xF2, 0x75, 0x2F, 0x72, 0xDD, 0xB3, 0xA9, 0x4C, 0x04, - 0x9B, 0x23, 0x00, 0x48, 0x9A, 0x74, 0xDD, 0xAF, 0xFF, 0x80, 0x98, 0x58, 0x82, 0xE0, 0x7D, 0x08, - 0x81, 0xC6, 0xE5, 0x7C, 0x88, 0x3E, 0x26, 0x1F, 0x22, 0xE7, 0x8C, 0xFC, 0xEC, 0x30, 0x25, 0xE2, - 0xA7, 0xE5, 0xB9, 0x76, 0xCE, 0x3B, 0xC6, 0x04, 0xE7, 0x55, 0x99, 0x0D, 0xD6, 0x21, 0xA6, 0xE0, - 0x03, 0x03, 0xD8, 0xEC, 0x7A, 0x32, 0x79, 0xEF, 0xC1, 0x37, 0xDD, 0x60, 0x94, 0xA4, 0xC2, 0x38, - 0x33, 0x4A, 0x8A, 0x14, 0x88, 0x43, 0x1C, 0x02, 0xCD, 0x0B, 0x20, 0x86, 0x18, 0x62, 0x88, 0x81, - 0x2C, 0x03, 0xA2, 0x0F, 0xBE, 0x0F, 0x4D, 0xD3, 0x8E, 0x0E, 0x02, 0x98, 0x8C, 0xD1, 0xB4, 0x93, - 0x87, 0xBD, 0x0F, 0x18, 0x17, 0x1C, 0x12, 0xF1, 0x04, 0x58, 0x0C, 0xA4, 0x15, 0xEF, 0x18, 0x4B, - 0x9C, 0x8B, 0x18, 0xE3, 0xA8, 0x6F, 0x27, 0x82, 0xF7, 0x5E, 0x78, 0xC9, 0x81, 0x71, 0x21, 0x8A, - 0x32, 0x6F, 0x9A, 0xEE, 0x17, 0x1F, 0x7E, 0x36, 0xF4, 0x76, 0x3A, 0xA9, 0x22, 0xA6, 0x98, 0x80, - 0x01, 0x87, 0x94, 0xD2, 0x58, 0xB9, 0x8E, 0x17, 0x87, 0x94, 0xFC, 0x28, 0xD5, 0x8A, 0x89, 0x08, - 0x6D, 0x29, 0xA5, 0x14, 0x42, 0x90, 0x92, 0xD7, 0x45, 0x76, 0x58, 0xFF, 0x31, 0xC6, 0x18, 0xC9, - 0x81, 0x89, 0x7D, 0x7E, 0x7E, 0xB1, 0xDE, 0x75, 0x3F, 0xFA, 0xE9, 0x2F, 0x8F, 0xE6, 0xF3, 0x69, - 0x5D, 0xF8, 0xDC, 0x87, 0x88, 0xD6, 0x85, 0xEB, 0xDB, 0xF5, 0xCD, 0x72, 0x8D, 0x98, 0x18, 0xB0, - 0xE3, 0xE3, 0x79, 0xDF, 0xDB, 0xB6, 0xED, 0x76, 0x9B, 0x1D, 0xE7, 0x7C, 0x70, 0xEE, 0xFC, 0xE2, - 0xD2, 0x0E, 0x6E, 0x36, 0x9D, 0xF8, 0x10, 0xAC, 0xEB, 0x05, 0x17, 0x45, 0x9E, 0x31, 0x80, 0xCC, - 0x68, 0xEB, 0x7D, 0x1C, 0xCD, 0x2E, 0x20, 0x26, 0x04, 0x04, 0xAD, 0xD4, 0x7A, 0xBB, 0x8D, 0x11, - 0x05, 0x67, 0x42, 0xC8, 0xDE, 0x5A, 0x1F, 0x22, 0x8D, 0xC4, 0x63, 0x4A, 0x90, 0x20, 0x62, 0x1A, - 0xCB, 0x43, 0x21, 0x43, 0x8C, 0x2E, 0xF8, 0x44, 0x16, 0xCB, 0x00, 0x88, 0x28, 0x05, 0x4F, 0x18, - 0xA9, 0x78, 0x74, 0xDE, 0x93, 0x1E, 0x43, 0xD7, 0x0F, 0x21, 0xC6, 0x3C, 0x33, 0x93, 0xBA, 0x9A, - 0x4E, 0xEB, 0xAB, 0x9B, 0x95, 0xB5, 0xCE, 0x7B, 0xA7, 0xA5, 0x02, 0x80, 0x10, 0x82, 0xE2, 0xA2, - 0xC8, 0xF3, 0xAE, 0xEB, 0x21, 0x25, 0x0E, 0xE0, 0x21, 0x96, 0x65, 0x7E, 0x7C, 0x34, 0x0F, 0x3E, - 0x34, 0x5D, 0x6F, 0x22, 0x0E, 0xD6, 0xB6, 0x5D, 0x37, 0x92, 0x30, 0x30, 0x09, 0x26, 0x1E, 0x9D, - 0x9D, 0xCE, 0x26, 0x15, 0x83, 0x74, 0xBB, 0xBC, 0xED, 0x7A, 0xCB, 0x39, 0x37, 0x46, 0x0F, 0x83, - 0xBD, 0xDE, 0xDD, 0x3E, 0x3F, 0xBF, 0xF8, 0xB7, 0xFF, 0xE6, 0x5F, 0xBF, 0xF1, 0xF4, 0x11, 0x30, - 0x36, 0x0A, 0x8D, 0xA5, 0x54, 0x16, 0x99, 0xF7, 0x7E, 0x18, 0x2C, 0xE7, 0xBC, 0xEB, 0x06, 0xAD, - 0x65, 0xD3, 0xB4, 0xC1, 0x07, 0xAD, 0xF5, 0xE3, 0x47, 0x0F, 0x48, 0xA8, 0xBA, 0x69, 0x3B, 0x63, - 0x8C, 0x56, 0xF2, 0xE5, 0xAB, 0xAB, 0xE5, 0x72, 0x6D, 0x32, 0x5D, 0x96, 0x25, 0x63, 0xEC, 0x9D, - 0x77, 0xDE, 0x24, 0x6B, 0xBB, 0x27, 0x4F, 0x1E, 0xFE, 0xED, 0xDF, 0xBD, 0xBF, 0x5E, 0xAD, 0x37, - 0xDB, 0xA6, 0xAE, 0xCB, 0xED, 0xAE, 0x71, 0xCE, 0x4D, 0x26, 0xD5, 0xC7, 0x9F, 0x3E, 0x7F, 0xFC, - 0xF0, 0x14, 0xD3, 0x51, 0x9E, 0x99, 0xBE, 0x1F, 0x6E, 0x6E, 0xD6, 0x5C, 0xB0, 0xAA, 0x2C, 0xDE, - 0xFD, 0xCA, 0x1B, 0x3F, 0xFF, 0xC5, 0x27, 0x42, 0x88, 0xD3, 0xD3, 0x85, 0x10, 0x62, 0xB9, 0x5C, - 0x93, 0xD6, 0xD5, 0xAC, 0x2E, 0xBD, 0xF7, 0x44, 0x59, 0x24, 0xB5, 0x7B, 0xC4, 0x34, 0x38, 0xCF, - 0x39, 0x73, 0x3E, 0x38, 0x1F, 0xB2, 0xCC, 0x9C, 0x1E, 0xCF, 0x07, 0x6B, 0xDF, 0xFB, 0xC6, 0xBB, - 0xD3, 0x69, 0xBD, 0xDE, 0x34, 0xCF, 0xCF, 0x5F, 0x39, 0xE7, 0xA5, 0xE4, 0x52, 0x72, 0x8C, 0x18, - 0x53, 0x30, 0x3A, 0xC3, 0x94, 0x98, 0x60, 0x5A, 0x29, 0x6A, 0xF1, 0x4F, 0xEA, 0xE2, 0xB5, 0xC7, - 0x0F, 0xE6, 0xD3, 0x49, 0x51, 0xE4, 0x93, 0xBA, 0x8C, 0x11, 0x5F, 0xBC, 0xBC, 0x78, 0xFA, 0xF8, - 0xEC, 0xE9, 0x93, 0x07, 0x21, 0x04, 0xA5, 0x54, 0x5D, 0x15, 0x42, 0xCA, 0xDB, 0xE5, 0xE6, 0xD5, - 0xE5, 0x0D, 0xE3, 0xFC, 0xBD, 0x77, 0xDF, 0x3C, 0x9A, 0x4D, 0xBB, 0xC1, 0x3E, 0xBF, 0xB8, 0x5A, - 0xAD, 0x77, 0x11, 0x51, 0x6B, 0x85, 0x29, 0xB5, 0x4D, 0x97, 0x30, 0xE6, 0xA6, 0x2A, 0xF2, 0x6C, - 0xBD, 0xDA, 0x20, 0xE2, 0x7C, 0x56, 0xCF, 0x27, 0xD5, 0xC5, 0xE5, 0x8D, 0x90, 0x82, 0xA6, 0x35, - 0x4F, 0x16, 0xB3, 0xFF, 0xE1, 0xDF, 0xFC, 0xAB, 0x07, 0xA7, 0x47, 0x4D, 0xDB, 0x3F, 0x79, 0x78, - 0x5A, 0x15, 0x79, 0x6E, 0x14, 0x4B, 0xB0, 0x6B, 0x7B, 0x1F, 0xFC, 0xF3, 0xE7, 0x17, 0xB4, 0x46, - 0xCA, 0x22, 0xDB, 0xEE, 0x5A, 0x96, 0x20, 0x84, 0xC0, 0x98, 0x28, 0x8B, 0x9C, 0xE4, 0x0C, 0xBC, - 0x0F, 0x88, 0x58, 0x55, 0x85, 0xE0, 0x4C, 0x0A, 0xAE, 0x47, 0x1B, 0x11, 0x2D, 0xA5, 0x14, 0x52, - 0x50, 0xAB, 0x54, 0x0A, 0x49, 0x0D, 0x6B, 0xC1, 0xF6, 0x92, 0x58, 0x89, 0x25, 0x4E, 0xAC, 0xCF, - 0x84, 0x29, 0x29, 0xC1, 0xF9, 0xE8, 0x84, 0x00, 0xA3, 0xBE, 0x17, 0xA4, 0x34, 0x76, 0xD2, 0x46, - 0x0A, 0xC1, 0x21, 0x3C, 0xA5, 0x7B, 0xC1, 0x09, 0xEF, 0xC5, 0xAC, 0x2F, 0x86, 0xB6, 0xFB, 0x30, - 0xFF, 0xDD, 0x2B, 0xE8, 0xA7, 0x8C, 0x31, 0x20, 0x22, 0x67, 0xDC, 0x7B, 0x1F, 0x23, 0xD9, 0x8B, - 0x30, 0x8A, 0x62, 0xD6, 0x91, 0x33, 0x20, 0x84, 0x10, 0x63, 0x1C, 0xD9, 0xA1, 0x31, 0x26, 0x25, - 0x38, 0x89, 0xE1, 0xD3, 0xA8, 0xB9, 0x14, 0x3C, 0xCF, 0x75, 0xDB, 0x0E, 0xD6, 0x79, 0x3A, 0x8E, - 0x10, 0x63, 0x4A, 0x20, 0x05, 0xA7, 0x4F, 0xE3, 0x8C, 0xC5, 0xE8, 0x88, 0xD8, 0x96, 0x69, 0x45, - 0xF4, 0xC2, 0x10, 0x82, 0x10, 0xA2, 0xAA, 0x4A, 0xC6, 0xB8, 0xF7, 0x9E, 0x7C, 0x35, 0xA8, 0x48, - 0x8B, 0x88, 0xD6, 0xF9, 0xE0, 0x03, 0x35, 0x4A, 0x00, 0xC0, 0x79, 0x0F, 0x00, 0x21, 0x20, 0x03, - 0x70, 0x3E, 0x32, 0x00, 0x1A, 0xBB, 0x4F, 0xB0, 0xAF, 0x92, 0x18, 0x8B, 0x81, 0x59, 0xF0, 0x00, - 0x2E, 0x25, 0x48, 0x08, 0x42, 0x70, 0x60, 0x80, 0x00, 0x08, 0xA0, 0x94, 0x64, 0x80, 0xBF, 0xF8, - 0xC5, 0xA7, 0xE7, 0xAF, 0x96, 0x29, 0xE1, 0xF1, 0xD1, 0x34, 0x91, 0x2B, 0x01, 0x40, 0xC2, 0x71, - 0x4C, 0x69, 0x2F, 0x22, 0x36, 0xE2, 0xFA, 0xFB, 0x13, 0x49, 0x31, 0x8E, 0x34, 0xB7, 0x10, 0x82, - 0x31, 0xA6, 0x2E, 0x33, 0xAD, 0x24, 0x30, 0x86, 0x18, 0xBD, 0x8F, 0xD4, 0xF2, 0xF3, 0x21, 0xFE, - 0xD5, 0x5F, 0xFF, 0x3D, 0x17, 0xDA, 0x85, 0x00, 0x09, 0xF2, 0x4C, 0xB7, 0x6D, 0x17, 0x42, 0xB8, - 0xBA, 0x5E, 0xAD, 0xB6, 0xBB, 0xF5, 0x7A, 0xD7, 0x74, 0xBD, 0xD2, 0x4A, 0x2B, 0x65, 0x9D, 0x1F, - 0xFA, 0x01, 0x18, 0xD3, 0x79, 0xE6, 0x42, 0x0C, 0x88, 0x9B, 0xD5, 0x3A, 0x37, 0x06, 0x40, 0x84, - 0x18, 0x85, 0x10, 0x82, 0xF1, 0x9E, 0xCA, 0x46, 0x48, 0x46, 0x69, 0xE7, 0x7D, 0xC0, 0x98, 0x00, - 0x48, 0xAB, 0x7B, 0xDB, 0x74, 0xB7, 0xEB, 0xED, 0xA4, 0x2A, 0x69, 0xDE, 0x2D, 0x41, 0x0A, 0x18, - 0x89, 0x33, 0x39, 0x22, 0x97, 0x08, 0x9C, 0x73, 0xAD, 0x94, 0x0F, 0xB1, 0x1D, 0x06, 0xCE, 0x98, - 0x52, 0x92, 0xC2, 0x3A, 0x27, 0x4A, 0x8E, 0x14, 0x10, 0x46, 0xA3, 0x3F, 0xF2, 0x52, 0x01, 0x80, - 0x14, 0xB1, 0x2E, 0x8B, 0xA3, 0xF9, 0xB4, 0x1B, 0xEC, 0xE5, 0xD5, 0x35, 0x11, 0x0E, 0x9C, 0xF3, - 0x92, 0x1E, 0x42, 0xA4, 0x94, 0xAA, 0xB2, 0x60, 0x09, 0x38, 0xE7, 0xD3, 0xC9, 0x84, 0x33, 0x66, - 0x8C, 0x66, 0xC0, 0x32, 0x13, 0x9B, 0x6E, 0x20, 0xC1, 0xF4, 0xA2, 0xCA, 0xEA, 0xAA, 0x6C, 0xBA, - 0x4E, 0x4B, 0x75, 0x7A, 0x32, 0x6F, 0x76, 0x4D, 0x8C, 0x48, 0x7B, 0x55, 0x4A, 0x58, 0xE4, 0x59, - 0x9E, 0x67, 0x09, 0x63, 0xDB, 0x0D, 0xFF, 0xE1, 0x3F, 0xFE, 0xDF, 0xFF, 0xE2, 0x9F, 0xFF, 0x93, - 0xEF, 0xBC, 0xF7, 0xB5, 0xED, 0xAE, 0xB1, 0xD6, 0x09, 0xCE, 0xCE, 0xCE, 0x8E, 0x21, 0x81, 0x52, - 0x32, 0x25, 0x70, 0xCE, 0xF5, 0x83, 0x65, 0x2C, 0xE5, 0x59, 0x06, 0x90, 0x84, 0xD0, 0x75, 0x95, - 0xF9, 0x10, 0x8D, 0x79, 0xD2, 0x0F, 0xF6, 0xE2, 0xD5, 0x4D, 0xD7, 0xF7, 0x45, 0x55, 0x1C, 0x4D, - 0x27, 0x88, 0xA9, 0x9E, 0x54, 0xCB, 0xE5, 0xEA, 0x9D, 0xB7, 0xDE, 0x7B, 0xF8, 0xF0, 0x04, 0x63, - 0x64, 0xDF, 0xFB, 0xE6, 0x8F, 0xDF, 0xFF, 0x68, 0xDB, 0xB4, 0x93, 0x69, 0x05, 0x00, 0x9F, 0x3F, - 0x7B, 0xF9, 0xCF, 0x7F, 0xEF, 0xBB, 0xDF, 0xFB, 0xCE, 0x37, 0x3E, 0xFE, 0xEC, 0x05, 0xED, 0x3A, - 0x65, 0x59, 0x2C, 0x37, 0x1B, 0xC1, 0xC5, 0xCD, 0x72, 0x73, 0x7A, 0x3C, 0x3F, 0x3B, 0x5D, 0xBC, - 0xBA, 0xBC, 0xE1, 0x9C, 0x9D, 0x1E, 0xCF, 0xDB, 0xB6, 0x43, 0xC4, 0x10, 0xE3, 0x30, 0xAA, 0x15, - 0xA6, 0x84, 0x40, 0x73, 0x7B, 0x59, 0xA6, 0x43, 0x8C, 0x3E, 0x22, 0x63, 0xAC, 0x2A, 0xB2, 0x94, - 0xE9, 0x22, 0xCF, 0xBF, 0xFD, 0x8D, 0xAF, 0x96, 0x65, 0xB1, 0x5E, 0x6F, 0x9D, 0x0F, 0x97, 0x57, - 0x37, 0x46, 0xCB, 0xAA, 0xCC, 0x8B, 0x22, 0x6B, 0xDA, 0x3E, 0x46, 0x54, 0x4A, 0x85, 0x10, 0x8D, - 0xD2, 0x5A, 0xC9, 0xB7, 0x9F, 0x3E, 0xD9, 0x35, 0xAD, 0x92, 0xF2, 0xE1, 0xE9, 0xC2, 0x18, 0x0D, - 0x8C, 0x6D, 0xB6, 0xBB, 0x3C, 0xD3, 0x6F, 0xBD, 0xFE, 0x90, 0x33, 0x16, 0x22, 0xD2, 0x18, 0x0C, - 0x62, 0xCA, 0x32, 0xF3, 0xE0, 0x78, 0xF6, 0xDA, 0xC3, 0x13, 0x4C, 0x89, 0x01, 0x08, 0xC1, 0x8E, - 0x17, 0x93, 0xA2, 0xD0, 0xEB, 0x6D, 0x13, 0x23, 0xB6, 0x9D, 0xBD, 0xBA, 0x59, 0x69, 0x25, 0x8F, - 0x66, 0xF5, 0x5B, 0x4F, 0x1F, 0x21, 0xA6, 0xF5, 0x7A, 0xFB, 0xF0, 0xC1, 0x09, 0x4D, 0xCB, 0x4A, - 0xC1, 0x13, 0x30, 0xA9, 0xE4, 0x9B, 0xAF, 0x3F, 0x7E, 0xFA, 0xE4, 0x0C, 0x18, 0x0C, 0xD6, 0x71, - 0xC6, 0xAA, 0x32, 0xEF, 0xFA, 0x01, 0x23, 0xE6, 0x99, 0xF9, 0xEC, 0xD9, 0x8B, 0x61, 0x70, 0x46, - 0xAB, 0x77, 0xDE, 0x78, 0xED, 0x66, 0xB9, 0x69, 0xBB, 0x41, 0x09, 0x91, 0xD0, 0x0B, 0xA1, 0x74, - 0x66, 0x38, 0xE3, 0xC0, 0x92, 0xF7, 0x31, 0xD3, 0x7A, 0x3A, 0x29, 0x69, 0x69, 0x73, 0xC1, 0x19, - 0x87, 0x31, 0x26, 0x71, 0x26, 0x49, 0x4D, 0x6D, 0x0F, 0x6F, 0x31, 0x0E, 0x9C, 0x03, 0xDB, 0x3B, - 0xBF, 0x51, 0x17, 0x82, 0xF3, 0x11, 0xDB, 0x3A, 0x64, 0x61, 0x87, 0xBE, 0xD9, 0x3E, 0x06, 0x7D, - 0xB9, 0x9C, 0x4C, 0xF7, 0x1F, 0xE3, 0x5F, 0xC6, 0xEA, 0xF2, 0xF0, 0x86, 0x87, 0x22, 0xE9, 0x4B, - 0x21, 0x8C, 0x7E, 0x91, 0x43, 0xDF, 0x53, 0xB4, 0xDC, 0x6B, 0x33, 0x80, 0x1D, 0x2C, 0xA9, 0x29, - 0x84, 0x80, 0xE4, 0xAB, 0x40, 0x84, 0xCC, 0x83, 0xEA, 0x16, 0x29, 0x08, 0x91, 0x83, 0xB9, 0x8B, - 0x5E, 0x6B, 0x49, 0x63, 0x77, 0x77, 0xB9, 0x62, 0x4A, 0x5C, 0xEC, 0xE9, 0xAB, 0x70, 0x68, 0x1E, - 0xB0, 0x94, 0x52, 0x44, 0xB2, 0x6F, 0x49, 0x44, 0x34, 0x0D, 0xDE, 0xDB, 0xC1, 0x72, 0x46, 0x33, - 0xE7, 0x63, 0x23, 0x21, 0x84, 0x68, 0x07, 0xB7, 0x0F, 0x2C, 0xC0, 0x38, 0x4B, 0x9E, 0x08, 0x9C, - 0x8C, 0xE2, 0x3D, 0xA9, 0x4D, 0x20, 0x03, 0xBE, 0xD7, 0x14, 0x43, 0x20, 0x6B, 0xC3, 0xFB, 0xCE, - 0xBB, 0x0C, 0x90, 0x01, 0x07, 0xCE, 0x79, 0x08, 0xF1, 0x07, 0x7F, 0xF7, 0xB3, 0x97, 0xAF, 0x96, - 0xC7, 0xC7, 0x8B, 0xAA, 0xCC, 0x86, 0xC1, 0x1A, 0x93, 0x01, 0xD9, 0xC3, 0xE0, 0x78, 0xD1, 0x71, - 0x94, 0x2C, 0x1B, 0x5D, 0xD7, 0x10, 0x53, 0xC0, 0x44, 0x3D, 0x41, 0x60, 0x40, 0xE5, 0xB0, 0xD1, - 0x72, 0xCC, 0x6E, 0x62, 0x0C, 0x21, 0x32, 0xC6, 0xA5, 0x14, 0xE7, 0x97, 0xB7, 0x7F, 0xFB, 0xC3, - 0x9F, 0x36, 0x6D, 0x6F, 0x8C, 0xB9, 0xB9, 0x59, 0x9E, 0x9E, 0x2C, 0xBA, 0xB6, 0xBB, 0xBE, 0x5D, - 0x4A, 0x21, 0x07, 0x17, 0xDA, 0xB6, 0x0F, 0x31, 0x1A, 0x63, 0x12, 0xE2, 0x30, 0x0C, 0xC1, 0x07, - 0xEB, 0x9D, 0xE4, 0x7C, 0x87, 0x18, 0x30, 0x52, 0xA1, 0x6D, 0x8C, 0x4E, 0x09, 0x72, 0x6E, 0x22, - 0xC6, 0x18, 0xA8, 0x8D, 0x8F, 0x3E, 0x44, 0xCE, 0x85, 0x92, 0x2A, 0x45, 0x4F, 0x07, 0x19, 0x11, - 0x7D, 0x08, 0x65, 0x6E, 0x8A, 0xDC, 0xB4, 0xFD, 0x20, 0x84, 0x50, 0x52, 0xF1, 0x40, 0x0E, 0xB2, - 0x89, 0x33, 0x4E, 0x02, 0xE3, 0x2E, 0x44, 0x00, 0xE8, 0x86, 0x01, 0x31, 0x91, 0x76, 0x3B, 0x29, - 0x34, 0x08, 0xCE, 0x9C, 0x73, 0x87, 0x5B, 0x2A, 0xD3, 0xBA, 0xED, 0x07, 0x96, 0x92, 0x14, 0xA2, - 0x98, 0x98, 0x94, 0xF0, 0xE6, 0x76, 0x1D, 0x42, 0x48, 0x98, 0xB4, 0xD6, 0x9C, 0x31, 0xF2, 0xF5, - 0x20, 0x12, 0x9D, 0xE6, 0x22, 0x01, 0x70, 0x01, 0xC0, 0x18, 0xE9, 0x6B, 0x13, 0x63, 0x9A, 0x33, - 0x16, 0x63, 0x90, 0x52, 0xD6, 0xD5, 0x7C, 0x36, 0xA9, 0x18, 0x83, 0xA3, 0xF9, 0xA4, 0xAA, 0x4A, - 0x2D, 0xE5, 0x62, 0x3E, 0xA9, 0xEB, 0x72, 0xB5, 0xDE, 0x76, 0x5D, 0xDF, 0x77, 0xC3, 0x64, 0x52, - 0xE7, 0xB9, 0x59, 0xAE, 0xB7, 0xF5, 0x60, 0x5F, 0xBE, 0xBC, 0xFC, 0xCB, 0xEF, 0xFF, 0xA0, 0xAE, - 0x8A, 0x07, 0x67, 0xC7, 0x3E, 0x84, 0xE5, 0xA6, 0xD9, 0x6C, 0x1B, 0x21, 0x44, 0xDF, 0x0F, 0x8B, - 0xC5, 0x3C, 0x33, 0xCA, 0x7B, 0xA7, 0x35, 0x5D, 0x16, 0x8C, 0x21, 0x12, 0x3F, 0x5B, 0x4B, 0x91, - 0x19, 0xDD, 0xB5, 0x7D, 0x66, 0x8C, 0xD6, 0x0A, 0x18, 0xF3, 0xC1, 0x7B, 0xEF, 0xCA, 0xB2, 0x78, - 0x79, 0x71, 0x55, 0x96, 0x39, 0xE7, 0xEC, 0xF8, 0x68, 0xF6, 0x2F, 0x7F, 0xFF, 0x7B, 0xEB, 0xCD, - 0xEE, 0x27, 0xEF, 0xFF, 0x72, 0xB3, 0xD9, 0x0A, 0x21, 0x7F, 0xFA, 0xF3, 0x0F, 0xBF, 0xFA, 0xCE, - 0x1B, 0x88, 0x8F, 0xB6, 0xBB, 0xA6, 0x3C, 0x5D, 0x08, 0xCE, 0x83, 0x0F, 0xD6, 0x3A, 0xA3, 0xD5, - 0xC5, 0xE5, 0xCD, 0xE9, 0xF1, 0xD1, 0x76, 0xD7, 0x5C, 0xDF, 0xAC, 0xA4, 0xE0, 0x4F, 0x1E, 0x9F, - 0x9D, 0xBF, 0xBC, 0xCC, 0x33, 0x43, 0x7E, 0x5D, 0xB6, 0xB7, 0x6D, 0xDF, 0x1B, 0xAD, 0xB3, 0x4C, - 0x03, 0x80, 0x56, 0x4A, 0xAB, 0x94, 0x52, 0x62, 0x8C, 0x77, 0xDD, 0xF0, 0xE6, 0xD3, 0x47, 0xD6, - 0xFA, 0x4F, 0x3F, 0x3F, 0x5F, 0x1C, 0x1F, 0x11, 0x60, 0x52, 0xD7, 0x25, 0x63, 0x40, 0x53, 0x3E, - 0xCE, 0x39, 0xEB, 0xDC, 0x30, 0xB8, 0x94, 0x92, 0x10, 0x2C, 0xCB, 0xCC, 0xCD, 0xED, 0x0A, 0x23, - 0x6E, 0x77, 0xED, 0x8C, 0xF3, 0xAA, 0xCC, 0x63, 0x88, 0xC3, 0xE0, 0x82, 0x0F, 0x24, 0x42, 0x2B, - 0xB9, 0x60, 0xC0, 0x12, 0x20, 0xE7, 0xAC, 0x2C, 0xCA, 0x2C, 0xD3, 0x90, 0xD8, 0x76, 0xD7, 0x12, - 0x0F, 0x70, 0x3E, 0xA9, 0x4F, 0x16, 0x73, 0xCE, 0xD9, 0xE5, 0xD5, 0xF2, 0x68, 0x56, 0x15, 0x79, - 0x26, 0x38, 0xCF, 0x33, 0x1D, 0x22, 0x3E, 0x7D, 0xED, 0x8C, 0x31, 0xC6, 0x19, 0x0B, 0x3E, 0x28, - 0x25, 0x38, 0x17, 0xEF, 0xBC, 0xF3, 0x54, 0x4B, 0x39, 0x58, 0xCB, 0x18, 0x5B, 0x2E, 0xD7, 0x4A, - 0x2B, 0xC4, 0xE8, 0x9C, 0xCF, 0x33, 0xB3, 0x5A, 0x6F, 0xAF, 0xAE, 0x96, 0xF3, 0xF9, 0x94, 0x44, - 0x3D, 0x69, 0x1B, 0xBB, 0xBD, 0x5D, 0x2D, 0x57, 0x6B, 0x32, 0x95, 0x3A, 0x9A, 0x4D, 0x69, 0xE2, - 0xC7, 0x68, 0x5D, 0xE4, 0xB9, 0x51, 0x52, 0x4B, 0x21, 0x24, 0x1F, 0x69, 0x9D, 0x82, 0x53, 0x7F, - 0x69, 0x1F, 0xBF, 0x0E, 0x41, 0xEA, 0x6E, 0xFA, 0xE5, 0x3E, 0x23, 0x8C, 0xED, 0x41, 0x31, 0xD8, - 0xB3, 0x9D, 0xE0, 0x1E, 0xB4, 0xFF, 0xC5, 0x6A, 0xF1, 0xCB, 0x8F, 0xC3, 0xFF, 0x21, 0xF4, 0x69, - 0x3F, 0xDD, 0xFC, 0x85, 0x90, 0xF7, 0xA5, 0xDF, 0x25, 0x6D, 0x9B, 0x88, 0xD8, 0xB6, 0x3D, 0x1D, - 0x8A, 0x75, 0xA1, 0xED, 0x2D, 0x00, 0x18, 0xAD, 0xB4, 0x96, 0xD6, 0xFA, 0x03, 0xF7, 0x82, 0xF2, - 0x35, 0x00, 0xF0, 0x3E, 0x14, 0x59, 0x4E, 0x1D, 0x52, 0x21, 0x85, 0xB7, 0xCE, 0x68, 0x45, 0x70, - 0x15, 0x51, 0x10, 0x49, 0x52, 0x9F, 0x8E, 0x86, 0x88, 0x6F, 0x9C, 0x31, 0x9A, 0x4E, 0x20, 0xD3, - 0x17, 0x00, 0x88, 0x31, 0xD2, 0x18, 0x04, 0x31, 0xB0, 0x68, 0x74, 0x31, 0xC6, 0xE8, 0xAC, 0xDF, - 0x07, 0x35, 0x00, 0x00, 0x88, 0x29, 0x71, 0x8E, 0x08, 0x98, 0x22, 0x5D, 0x18, 0xC1, 0xD2, 0x01, - 0x80, 0xBD, 0x3B, 0x79, 0x00, 0x04, 0xE0, 0x6C, 0x9C, 0xB3, 0x24, 0x78, 0x5B, 0x08, 0x39, 0x0C, - 0xF6, 0x87, 0x3F, 0xFA, 0xE5, 0x72, 0xB9, 0x3B, 0x3A, 0x9A, 0x53, 0x23, 0x5C, 0xC9, 0x8C, 0x4B, - 0x11, 0x31, 0x25, 0x60, 0x04, 0x7B, 0x50, 0x5D, 0x49, 0xAE, 0x1C, 0x21, 0x92, 0x5B, 0x79, 0x22, - 0xE4, 0x92, 0xE4, 0xAB, 0xB4, 0x22, 0x46, 0x1F, 0xA7, 0x0E, 0x3A, 0x62, 0xCA, 0x8C, 0xB9, 0x59, - 0xAE, 0xFF, 0xF7, 0x3F, 0xFB, 0xCB, 0xA6, 0x1D, 0x8C, 0xD6, 0x31, 0x46, 0x6B, 0xFD, 0xD1, 0x6C, - 0x96, 0x19, 0x73, 0xB3, 0xDC, 0x2C, 0x37, 0xAD, 0x14, 0x22, 0x44, 0xEC, 0x07, 0xDB, 0x5B, 0xCB, - 0x80, 0x61, 0x44, 0x29, 0x78, 0xEF, 0x7A, 0x60, 0x20, 0x94, 0xC6, 0x84, 0x21, 0x44, 0x25, 0x15, - 0xCD, 0x4B, 0x7A, 0x1F, 0x7C, 0x8C, 0x80, 0x04, 0x33, 0x4B, 0xB2, 0xF3, 0xE3, 0x42, 0x60, 0x44, - 0xEF, 0x23, 0x63, 0xA0, 0x95, 0x22, 0x57, 0x27, 0xAE, 0x24, 0x00, 0x18, 0xAD, 0x09, 0x99, 0xA3, - 0xAB, 0x20, 0x84, 0x18, 0xAC, 0x8B, 0x91, 0xBA, 0xAE, 0x18, 0xA8, 0xDD, 0x89, 0x91, 0x4A, 0x4E, - 0xCE, 0xB9, 0xE0, 0x2C, 0x25, 0x14, 0x42, 0x90, 0x44, 0xA7, 0x10, 0x82, 0x33, 0xC8, 0x8D, 0x9E, - 0x54, 0x65, 0x6F, 0x07, 0xAD, 0x54, 0xD3, 0x0F, 0x11, 0x93, 0x14, 0x3C, 0x37, 0x9A, 0xC6, 0x08, - 0x32, 0x25, 0x50, 0x1C, 0xF2, 0x6E, 0x72, 0xDE, 0x93, 0x29, 0x25, 0xEF, 0x7D, 0x9E, 0x67, 0x24, - 0xD8, 0x6D, 0x8C, 0x36, 0x46, 0x57, 0x55, 0x61, 0xB4, 0x5E, 0x6F, 0x77, 0x90, 0xE0, 0xE1, 0x83, - 0x13, 0x6B, 0x5D, 0x82, 0x54, 0x95, 0xC5, 0xB4, 0x2A, 0x95, 0xE4, 0x09, 0xA7, 0x21, 0x44, 0xA9, - 0x84, 0xD6, 0x7A, 0x3A, 0xA9, 0x76, 0xBB, 0x86, 0x73, 0x56, 0x64, 0x46, 0x30, 0xA6, 0xA4, 0x34, - 0x5A, 0xD9, 0xDE, 0x26, 0x4C, 0xC7, 0xA7, 0xB3, 0x5D, 0xD3, 0x1A, 0xAD, 0x04, 0xE7, 0x5A, 0x4B, - 0xC6, 0xC0, 0x39, 0xAB, 0x85, 0x34, 0x52, 0x25, 0x48, 0x82, 0x31, 0x48, 0x49, 0x49, 0x38, 0x5E, - 0xCC, 0xBE, 0xF5, 0x8D, 0xAF, 0xDC, 0xAE, 0xD6, 0x6D, 0xDB, 0x67, 0xD9, 0x44, 0x2A, 0xF1, 0xE4, - 0xF1, 0x83, 0xB7, 0xDF, 0x7C, 0x0D, 0x49, 0xFD, 0x9A, 0xA5, 0xAB, 0xDB, 0xD5, 0x67, 0x9F, 0xBD, - 0xDC, 0xAC, 0x77, 0x52, 0xB0, 0x94, 0xF0, 0xEA, 0xEA, 0x26, 0x33, 0x66, 0x3A, 0xAD, 0x8E, 0x8F, - 0x66, 0x7D, 0x3F, 0x18, 0xAD, 0xF3, 0xCC, 0x34, 0x6D, 0x4B, 0xCC, 0xEA, 0x7E, 0x18, 0x5E, 0x7F, - 0xF2, 0xE0, 0xE6, 0x66, 0xDD, 0x0D, 0x56, 0x69, 0x5D, 0x57, 0x65, 0xDF, 0x0F, 0x67, 0xA7, 0xC7, - 0x3E, 0xF8, 0x75, 0xD3, 0x1A, 0xA5, 0x84, 0x88, 0xD6, 0xF9, 0x8A, 0xC8, 0x40, 0xA3, 0x46, 0x13, - 0x66, 0x99, 0x7A, 0xEB, 0x8D, 0xC7, 0x7D, 0x6F, 0xAD, 0x73, 0x52, 0xCA, 0xAB, 0x9B, 0x55, 0x4A, - 0xC9, 0x5A, 0xC2, 0x3D, 0xB4, 0x10, 0x42, 0x29, 0xED, 0x7D, 0x24, 0xD3, 0xA0, 0x87, 0x93, 0xC9, - 0x0F, 0xFE, 0xE1, 0x7D, 0xE7, 0xC3, 0xF1, 0x7C, 0xBA, 0xDD, 0x35, 0x6F, 0xBC, 0xFE, 0x48, 0x4A, - 0x01, 0x90, 0x8A, 0xDC, 0x38, 0x1F, 0x06, 0xE7, 0x00, 0x98, 0xD2, 0x2A, 0x84, 0x80, 0x31, 0x0D, - 0xD6, 0x31, 0xCE, 0x13, 0x22, 0xED, 0x04, 0xC0, 0x98, 0x60, 0x5C, 0x29, 0xA2, 0xD0, 0x8A, 0x07, - 0x67, 0x47, 0x74, 0x7B, 0xD0, 0xDA, 0xE1, 0x8C, 0x4B, 0xA5, 0x62, 0x0C, 0xDE, 0x47, 0x63, 0xF4, - 0xD1, 0xD1, 0x54, 0x08, 0x21, 0x59, 0x8A, 0x21, 0x50, 0x5F, 0x6B, 0x52, 0xE5, 0x42, 0x0A, 0xEF, - 0x63, 0x66, 0xB4, 0xE0, 0xFC, 0x66, 0xB9, 0x7E, 0xFD, 0xC9, 0x03, 0x00, 0x10, 0x1C, 0x52, 0xC2, - 0xF9, 0xB4, 0xAE, 0xCA, 0x62, 0xB3, 0xD9, 0x1C, 0xCD, 0xA7, 0xCE, 0x85, 0x80, 0x51, 0x2B, 0x59, - 0xE4, 0xB9, 0x52, 0x52, 0x70, 0x6E, 0x8C, 0x56, 0x4A, 0x70, 0x21, 0x20, 0xDD, 0x39, 0x28, 0x1E, - 0x86, 0x94, 0xD9, 0x38, 0xEE, 0x72, 0x08, 0x4D, 0xE3, 0xCF, 0xFB, 0xB9, 0xD2, 0xBD, 0xAC, 0x06, - 0x0E, 0xCB, 0x74, 0xFF, 0x04, 0xF8, 0x47, 0x93, 0xB2, 0x2F, 0x84, 0xB2, 0x7B, 0x16, 0x6B, 0x7B, - 0xF5, 0xAC, 0x2F, 0x24, 0x62, 0x30, 0x92, 0x0A, 0xC6, 0x67, 0x8B, 0x3F, 0xF9, 0xA3, 0x3F, 0xEC, - 0xBA, 0xA1, 0xEB, 0x6D, 0x37, 0x38, 0xEB, 0xC3, 0x60, 0x83, 0xF3, 0x31, 0x04, 0xA4, 0xD5, 0x6C, - 0x8C, 0x1A, 0xAC, 0x0F, 0x61, 0x94, 0xAF, 0x21, 0xA9, 0x0D, 0xC6, 0x46, 0xB1, 0x1A, 0xEB, 0xC2, - 0x98, 0xA9, 0xA5, 0x91, 0x72, 0x4D, 0x08, 0x28, 0xCD, 0x11, 0x11, 0x5B, 0x4F, 0x08, 0xCE, 0xB9, - 0x90, 0x92, 0x4B, 0x41, 0x7D, 0x1F, 0xC4, 0x3B, 0xBB, 0xDC, 0xD1, 0x75, 0x76, 0xB4, 0xD3, 0x42, - 0x8C, 0x31, 0x06, 0x1F, 0x7D, 0x40, 0x1A, 0xD8, 0x8E, 0x98, 0x22, 0x26, 0x8A, 0x87, 0x31, 0x01, - 0x30, 0x26, 0xD8, 0x48, 0x08, 0xE6, 0x5F, 0xB4, 0x05, 0xD8, 0xEF, 0x07, 0xFC, 0x20, 0xD2, 0x2D, - 0xA4, 0x14, 0x52, 0x5C, 0x5F, 0xDD, 0xFC, 0xEC, 0x17, 0xCF, 0x84, 0xCA, 0x66, 0xF3, 0x69, 0x55, - 0x95, 0x5A, 0x49, 0xAD, 0x64, 0x56, 0x64, 0x04, 0x39, 0x8E, 0x4C, 0xA8, 0xF1, 0xA2, 0x8C, 0x47, - 0x15, 0x63, 0xDA, 0x27, 0x8C, 0x42, 0x2B, 0x99, 0x65, 0x4A, 0x29, 0xA9, 0xA5, 0x8C, 0x31, 0x1A, - 0xA3, 0x0F, 0xDD, 0xAB, 0x8F, 0x3F, 0x3B, 0xFF, 0x0F, 0x7F, 0xFA, 0x17, 0xBF, 0xFA, 0xF4, 0x45, - 0x9E, 0x67, 0x59, 0x66, 0xB6, 0x4D, 0xC7, 0x18, 0x1F, 0xAC, 0x6B, 0xDA, 0xBE, 0xED, 0x87, 0xC1, - 0xBA, 0x7E, 0xB0, 0x21, 0x44, 0x2E, 0xF8, 0x58, 0x71, 0xC7, 0x48, 0x85, 0x9A, 0x52, 0xD2, 0x39, - 0xCB, 0xB9, 0x70, 0x21, 0xC6, 0x84, 0x5A, 0x29, 0xE7, 0x3C, 0x79, 0xF0, 0x70, 0xC6, 0xA4, 0x92, - 0x5A, 0x29, 0x93, 0x11, 0x1C, 0x24, 0xAD, 0xF7, 0xD6, 0x7B, 0x63, 0x34, 0x9D, 0x78, 0x8C, 0x81, - 0x3A, 0x33, 0x2E, 0x84, 0x18, 0xA3, 0xF7, 0x9E, 0x2A, 0x74, 0xCA, 0x59, 0x48, 0x58, 0xD9, 0x3A, - 0xA7, 0x15, 0x6D, 0x2A, 0x4C, 0x4A, 0x4E, 0x13, 0x60, 0x87, 0xE6, 0x37, 0x67, 0xCC, 0x87, 0xA0, - 0x95, 0x2A, 0xCB, 0x42, 0x0A, 0xE1, 0xBD, 0x67, 0x0C, 0x26, 0xD3, 0x8A, 0x04, 0x0F, 0xBC, 0xF5, - 0x55, 0x91, 0x49, 0xC1, 0x63, 0x8C, 0x82, 0xB1, 0xB2, 0xC8, 0xA4, 0xE0, 0x82, 0x71, 0xC6, 0x41, - 0x1B, 0x9D, 0x52, 0x8A, 0x88, 0xB9, 0x31, 0x11, 0x91, 0x33, 0x6E, 0x32, 0x93, 0x19, 0xAD, 0x94, - 0x2C, 0xCA, 0x62, 0xD7, 0xB4, 0xC3, 0x60, 0xE7, 0xB3, 0x89, 0xF7, 0x61, 0xB3, 0xDD, 0x70, 0xC6, - 0xF2, 0xCC, 0x50, 0x8E, 0x0B, 0x09, 0x48, 0x70, 0xB5, 0x2E, 0xCB, 0x49, 0x5D, 0x4C, 0x26, 0x55, - 0x5D, 0x16, 0x0F, 0xCF, 0x8E, 0x17, 0x8B, 0x99, 0xE0, 0x8C, 0x33, 0x26, 0xA5, 0xD0, 0x5A, 0x68, - 0x29, 0x33, 0xAD, 0xC8, 0x05, 0x9D, 0x76, 0x0E, 0xC1, 0xF8, 0x41, 0x23, 0x21, 0xED, 0x79, 0xDC, - 0x0C, 0x40, 0x6B, 0xF5, 0xF9, 0xF3, 0x0B, 0xC2, 0xF2, 0x26, 0x55, 0xD1, 0x34, 0x4D, 0x08, 0x51, - 0x2A, 0xA9, 0x94, 0x6C, 0xDB, 0xFE, 0xEA, 0x7A, 0x79, 0x79, 0x79, 0x43, 0x70, 0x47, 0xDF, 0xDB, - 0x2C, 0xCB, 0xBC, 0x0F, 0xD7, 0xB7, 0x2B, 0xA5, 0xA4, 0xD1, 0x3A, 0xC6, 0x90, 0x52, 0xCA, 0x8C, - 0xBE, 0x5D, 0x6E, 0x48, 0x82, 0xD5, 0x68, 0x35, 0xA9, 0xCB, 0x61, 0xB0, 0xD3, 0xBA, 0x8C, 0x29, - 0xA5, 0x84, 0xE4, 0x07, 0x36, 0x58, 0x5B, 0xE4, 0xD9, 0xC9, 0x62, 0x4E, 0x44, 0x0D, 0x0A, 0x1F, - 0x84, 0xE1, 0xD0, 0x8A, 0xD5, 0x5A, 0x1F, 0xCD, 0xA7, 0x98, 0xF0, 0xE3, 0x4F, 0x9E, 0x5B, 0xE7, - 0xDB, 0xAE, 0xCF, 0x32, 0x4D, 0xC3, 0x3D, 0x55, 0x59, 0x38, 0xEF, 0x76, 0x4D, 0xF7, 0xD5, 0xB7, - 0x9F, 0xCE, 0x26, 0x35, 0xED, 0x95, 0x5D, 0xD7, 0xEF, 0xDA, 0x2E, 0x61, 0x42, 0xC4, 0xC5, 0xD1, - 0x34, 0xCF, 0x33, 0x80, 0x34, 0x9B, 0x4D, 0x4E, 0x16, 0xF3, 0xC9, 0xB4, 0xD2, 0x5A, 0xF9, 0x10, - 0xA4, 0x90, 0x4D, 0xDB, 0x59, 0xE7, 0xA5, 0xE4, 0x44, 0x00, 0xE6, 0x8C, 0x0B, 0x35, 0x7A, 0x4D, - 0x2B, 0xB2, 0x23, 0x17, 0x5C, 0x0A, 0xAE, 0xA5, 0xD4, 0x4A, 0x4B, 0xC1, 0x85, 0x10, 0x99, 0xD1, - 0x46, 0x89, 0x3C, 0x33, 0x4A, 0x4A, 0xE2, 0xD3, 0x52, 0x6E, 0x2E, 0xA5, 0xE0, 0x8C, 0x93, 0x65, - 0xA7, 0x75, 0xBE, 0x2E, 0xF3, 0xF9, 0x6C, 0x22, 0x38, 0x23, 0x52, 0xCB, 0xE2, 0x68, 0x76, 0x79, - 0x7D, 0x2B, 0x85, 0xAC, 0xEB, 0x42, 0x6B, 0x19, 0x42, 0x28, 0xF2, 0x4C, 0x29, 0x41, 0x3A, 0xBA, - 0x75, 0x55, 0xD4, 0x75, 0xA1, 0x0D, 0x59, 0x2B, 0x00, 0x8C, 0xD3, 0x60, 0x9C, 0x3C, 0x17, 0xEF, - 0xE6, 0x8A, 0x38, 0xC9, 0x92, 0x1E, 0xDA, 0x8B, 0xEC, 0xDE, 0x62, 0x1C, 0x51, 0xAD, 0x7B, 0x89, - 0x58, 0x4A, 0x89, 0x1F, 0x06, 0x6C, 0xBE, 0x1C, 0xC5, 0xD2, 0x48, 0x80, 0xBD, 0xF7, 0x8A, 0x2F, - 0x1B, 0x24, 0x1E, 0x5E, 0xF2, 0xEB, 0x65, 0xA9, 0xB4, 0xD6, 0xED, 0xDA, 0x61, 0xB0, 0x7E, 0x5C, - 0xD2, 0xFB, 0x60, 0x89, 0x88, 0xA0, 0x65, 0xDF, 0x3B, 0xF2, 0x7C, 0xC6, 0xFD, 0x9B, 0xB0, 0x94, - 0x30, 0x26, 0x00, 0x08, 0x11, 0x05, 0xE7, 0x42, 0xB0, 0x18, 0x11, 0x80, 0x91, 0xF4, 0x25, 0x1B, - 0x73, 0x01, 0xE2, 0x28, 0x8C, 0xF3, 0x95, 0x90, 0xF0, 0x70, 0x39, 0x22, 0x12, 0x2E, 0x05, 0x8C, - 0x33, 0x64, 0x54, 0x2A, 0x22, 0xE9, 0x12, 0x92, 0xF8, 0xD9, 0x3E, 0xC2, 0xA5, 0x94, 0x00, 0x90, - 0xE4, 0x47, 0x18, 0x26, 0xE0, 0x0C, 0xF6, 0xCE, 0xBB, 0x5F, 0xA0, 0x9F, 0x1C, 0x76, 0x84, 0xFD, - 0x1C, 0x16, 0x00, 0xE3, 0x46, 0xAB, 0x18, 0xFD, 0xCF, 0x7E, 0xFE, 0xE9, 0x72, 0xDD, 0x1F, 0x2D, - 0x16, 0x4A, 0x89, 0x10, 0x02, 0x83, 0xA4, 0x94, 0x14, 0x42, 0x24, 0x84, 0xC4, 0x88, 0xFB, 0x4A, - 0x19, 0x2F, 0x0B, 0x01, 0x0F, 0xFB, 0x4C, 0x88, 0x09, 0x68, 0x21, 0x71, 0x2E, 0x04, 0xE3, 0x9C, - 0x13, 0x4C, 0xA6, 0x35, 0xC9, 0x60, 0xC0, 0xC5, 0xE5, 0xCD, 0x5F, 0xFE, 0xCD, 0x8F, 0x7F, 0xF6, - 0xCB, 0x4F, 0xA7, 0x93, 0xC9, 0x9B, 0x4F, 0x5F, 0xDF, 0xB5, 0x6D, 0xD3, 0x0E, 0xDB, 0xA6, 0x2B, - 0x32, 0xD3, 0x59, 0x9B, 0x69, 0xC3, 0x39, 0xB3, 0xD6, 0xF9, 0x10, 0x18, 0x63, 0x55, 0x51, 0x30, - 0xC6, 0x20, 0xA5, 0xB2, 0xC8, 0xB9, 0xE0, 0xDE, 0x05, 0x17, 0xBC, 0x14, 0x22, 0xC4, 0x80, 0x18, - 0x81, 0xB1, 0x18, 0xE2, 0xE0, 0x9D, 0x92, 0xB2, 0x20, 0xD6, 0xA0, 0x94, 0xD6, 0xBA, 0x7D, 0x90, - 0x8A, 0x21, 0x62, 0x55, 0xE4, 0x14, 0xFA, 0xC3, 0xFE, 0x06, 0x72, 0x34, 0x85, 0x9C, 0x92, 0xE0, - 0x34, 0x3D, 0x9A, 0x38, 0xE7, 0x11, 0x43, 0x99, 0x1B, 0xE7, 0x03, 0xE1, 0xAE, 0x09, 0x10, 0x00, - 0x19, 0xC8, 0x4C, 0x2B, 0xDA, 0xA2, 0x21, 0x41, 0x8C, 0x31, 0xA4, 0xC4, 0x39, 0xA7, 0xA0, 0xB9, - 0xDD, 0xED, 0xCA, 0x22, 0x9F, 0x4C, 0xAA, 0xF9, 0x6C, 0x12, 0x62, 0x04, 0x8C, 0x4D, 0xD3, 0x85, - 0x10, 0x72, 0xA3, 0x89, 0xF9, 0xE9, 0x43, 0x40, 0x44, 0x48, 0x50, 0x15, 0x15, 0x0D, 0x09, 0x91, - 0xAC, 0x93, 0x10, 0x82, 0x2C, 0x66, 0xA8, 0x6F, 0xBB, 0x5A, 0x6D, 0xFA, 0x61, 0x58, 0x1C, 0x4D, - 0x8D, 0xD6, 0x4D, 0xDB, 0x32, 0xC6, 0x04, 0x17, 0x4D, 0xDB, 0xB5, 0x5D, 0xE7, 0xBD, 0x57, 0x42, - 0x4E, 0x67, 0x35, 0xB0, 0xC4, 0x81, 0xD7, 0x93, 0x72, 0x56, 0x54, 0xF3, 0x49, 0x05, 0x00, 0x5A, - 0x2B, 0x12, 0x23, 0x94, 0x99, 0xA6, 0xF1, 0x7B, 0xB2, 0xC8, 0x42, 0xF2, 0xCB, 0xE2, 0x8C, 0x4B, - 0x89, 0x7B, 0x65, 0x37, 0x62, 0xBA, 0x70, 0xC1, 0x95, 0x12, 0x29, 0xC9, 0xC5, 0x7C, 0xE2, 0x5D, - 0x98, 0xD4, 0xE5, 0x83, 0xE3, 0xB9, 0xD6, 0xBA, 0xDD, 0xB5, 0xBB, 0x6D, 0x73, 0xF6, 0xE0, 0xB8, - 0x2C, 0x0B, 0xAD, 0xE4, 0x3B, 0x6F, 0x3E, 0xE9, 0xBB, 0xA1, 0xB7, 0x43, 0x88, 0x68, 0xAD, 0x9D, - 0xD4, 0xA5, 0xF7, 0xFE, 0xE3, 0x4F, 0x9E, 0x4F, 0x26, 0x55, 0x55, 0xE6, 0x94, 0x3F, 0x16, 0x79, - 0xB6, 0xDE, 0x6C, 0x0A, 0xCC, 0x2E, 0xAF, 0x6E, 0xEB, 0xAA, 0xA8, 0xCB, 0xDC, 0x3B, 0xB7, 0x98, - 0x4F, 0xFA, 0xCC, 0xEC, 0x9A, 0x56, 0x4A, 0xF1, 0xF8, 0xE1, 0x69, 0x8C, 0xD1, 0x64, 0xCA, 0x64, - 0xCA, 0x5A, 0x8F, 0x38, 0x5A, 0x43, 0xC2, 0x5E, 0x08, 0x3E, 0x84, 0xA4, 0xB5, 0x2A, 0x72, 0xF3, - 0xE0, 0xF4, 0xC8, 0x68, 0xB5, 0xD9, 0x36, 0x3E, 0xF8, 0xCD, 0xB6, 0x31, 0x5A, 0x2A, 0x25, 0xB0, - 0xC5, 0xB2, 0xC8, 0xDE, 0xFB, 0xC6, 0x57, 0xC8, 0x3F, 0x7C, 0xFD, 0xC9, 0xE7, 0xDE, 0x87, 0x7E, - 0x18, 0x6E, 0xD7, 0xDB, 0xF9, 0x7C, 0x7A, 0xB3, 0xDC, 0x28, 0xD9, 0xC4, 0x18, 0x37, 0xDB, 0x06, - 0x11, 0x67, 0xD3, 0xFA, 0xD1, 0xC3, 0x33, 0x62, 0xAE, 0x19, 0x2D, 0x31, 0xA5, 0x82, 0xDC, 0xD2, - 0x18, 0xCD, 0xFB, 0x1E, 0x7A, 0x82, 0x64, 0xC6, 0xCA, 0x18, 0x10, 0x75, 0x06, 0x18, 0x03, 0xB9, - 0x5F, 0x0F, 0x29, 0x25, 0xD2, 0x7D, 0x1D, 0x53, 0x17, 0x92, 0x0E, 0xA4, 0xD0, 0xCB, 0xA9, 0x2A, - 0x82, 0x18, 0x62, 0x5D, 0x17, 0x84, 0x41, 0x7B, 0xEF, 0x8B, 0xDC, 0xE4, 0x66, 0x94, 0xA6, 0xE0, - 0x5C, 0x90, 0x32, 0x4F, 0x4A, 0x29, 0xCB, 0x74, 0x6E, 0xB4, 0x52, 0x42, 0xDC, 0x15, 0x3D, 0x8C, - 0x01, 0x70, 0x0E, 0x7C, 0xBF, 0x08, 0x01, 0x80, 0x41, 0x22, 0x4F, 0x5B, 0x0A, 0x0C, 0x74, 0x14, - 0xFB, 0x15, 0x79, 0x3F, 0x00, 0xC1, 0x01, 0x20, 0xDB, 0x87, 0x9E, 0x7F, 0x24, 0x17, 0x4B, 0x40, - 0x7E, 0x02, 0xF7, 0x05, 0x66, 0xF0, 0xFE, 0xD3, 0xEE, 0xC7, 0xAF, 0x5F, 0xFF, 0x3B, 0xFB, 0xF1, - 0x8F, 0x7E, 0x64, 0xAD, 0xC7, 0x98, 0x12, 0xDC, 0x4D, 0xF9, 0x00, 0x80, 0x52, 0x02, 0xC6, 0xF9, - 0x55, 0x82, 0xA5, 0xE0, 0xD0, 0x44, 0x60, 0xC0, 0x38, 0x63, 0x62, 0x9C, 0xE1, 0x4C, 0xFB, 0x69, - 0xC4, 0x43, 0x3E, 0xC9, 0xEE, 0x7F, 0x20, 0x03, 0xE0, 0x0C, 0x0E, 0x40, 0x20, 0xFD, 0x6F, 0x7A, - 0xAF, 0x43, 0x30, 0xA2, 0x91, 0xF0, 0xC3, 0xCB, 0x49, 0x54, 0x36, 0x84, 0x18, 0xC7, 0xF6, 0xE8, - 0xFE, 0x4B, 0x12, 0x64, 0xF4, 0x73, 0x37, 0xE8, 0x40, 0xE9, 0x49, 0x1A, 0x5D, 0x29, 0x19, 0xE7, - 0x20, 0x84, 0x12, 0x9C, 0x6D, 0xD6, 0xEB, 0x5F, 0x7D, 0x7A, 0xBE, 0x69, 0xDC, 0xD9, 0xD9, 0x89, - 0xD6, 0x9A, 0x01, 0x6A, 0x25, 0x13, 0xB5, 0x69, 0x95, 0x4C, 0x04, 0xAB, 0x21, 0x60, 0x42, 0x80, - 0x44, 0xE9, 0xE7, 0xE1, 0xAD, 0x10, 0x11, 0x11, 0x8C, 0x51, 0x63, 0x14, 0x06, 0x96, 0x12, 0x92, - 0xF3, 0x18, 0xE7, 0xFC, 0x83, 0x8F, 0x3E, 0xFF, 0xD3, 0xFF, 0xEB, 0xAF, 0x97, 0xEB, 0x46, 0x08, - 0x9E, 0x19, 0x13, 0x70, 0x2C, 0xA7, 0x07, 0x6B, 0xE9, 0x1E, 0x2F, 0x8B, 0xDC, 0x87, 0x40, 0x12, - 0x92, 0x4A, 0xCA, 0x04, 0xD0, 0x0D, 0xBD, 0xE0, 0x7C, 0x52, 0x55, 0x21, 0x86, 0xA1, 0xB7, 0x00, - 0x49, 0x6B, 0x35, 0x0C, 0xCE, 0xE4, 0x06, 0x43, 0xB4, 0xCE, 0x2B, 0xAD, 0xCA, 0x2C, 0xA3, 0x04, - 0xB6, 0xED, 0x7A, 0xEB, 0x2C, 0x49, 0xFA, 0x0E, 0xCE, 0x03, 0x80, 0x92, 0x2A, 0x86, 0x20, 0x25, - 0x67, 0x8C, 0x13, 0x4B, 0x96, 0xF8, 0xBA, 0x31, 0x46, 0x52, 0x41, 0x29, 0xF3, 0xDC, 0x68, 0xD5, - 0x5B, 0x2B, 0x38, 0xDF, 0x75, 0x5D, 0x91, 0x65, 0x1C, 0xA0, 0x19, 0x06, 0x1F, 0x82, 0x91, 0x2A, - 0x33, 0x26, 0xEE, 0x39, 0xC6, 0x07, 0xD6, 0x4B, 0x96, 0x91, 0x11, 0x37, 0xCE, 0x67, 0xB5, 0x31, - 0x3A, 0xCF, 0xB3, 0x9B, 0x9B, 0x55, 0xF4, 0x1E, 0x23, 0x29, 0x7A, 0xF3, 0xC1, 0x5A, 0xE7, 0xA3, - 0x0F, 0x41, 0x2B, 0x21, 0x38, 0x07, 0x80, 0x2C, 0x23, 0xD3, 0x5E, 0x25, 0xF7, 0x02, 0x9C, 0x79, - 0x9E, 0x0F, 0xC3, 0xB0, 0xD9, 0xEC, 0xA4, 0x94, 0x99, 0x51, 0xB3, 0xD9, 0x04, 0x80, 0x8A, 0x74, - 0x34, 0x5A, 0xFB, 0x10, 0x88, 0xA9, 0xAF, 0x94, 0x98, 0x54, 0x65, 0x51, 0x66, 0x45, 0x9E, 0x17, - 0xB9, 0xA9, 0xAB, 0xA2, 0xC8, 0x8C, 0x90, 0x52, 0x08, 0x01, 0x90, 0x48, 0x00, 0x85, 0x76, 0x50, - 0x2E, 0x78, 0xC2, 0x91, 0xE9, 0xC2, 0xF7, 0xD2, 0x9E, 0x87, 0xDD, 0x98, 0xFE, 0x80, 0x31, 0x61, - 0x8A, 0xD6, 0xFA, 0xAE, 0x1B, 0xB4, 0x52, 0xC4, 0x1A, 0x0D, 0x31, 0x32, 0x80, 0xAE, 0xB7, 0xB4, - 0xF3, 0x20, 0xC6, 0x18, 0xA2, 0xB5, 0x0E, 0x11, 0xB7, 0x4D, 0xE3, 0x43, 0x9C, 0x4E, 0x27, 0x4D, - 0xDB, 0x3B, 0xE7, 0xE6, 0xB3, 0xE9, 0x7C, 0x3E, 0x1D, 0xAC, 0x3D, 0x59, 0xCC, 0x2F, 0x2F, 0x6F, - 0x9A, 0x6E, 0x28, 0xCB, 0xBC, 0xD9, 0xB5, 0xAF, 0x3F, 0x79, 0xE0, 0xBC, 0x97, 0x52, 0x69, 0xAD, - 0xF3, 0xDC, 0x90, 0x6C, 0x1C, 0x85, 0x2C, 0xE2, 0x48, 0xEE, 0xEF, 0x8D, 0xC4, 0x58, 0x22, 0xCE, - 0x04, 0xD5, 0x25, 0x8C, 0xB1, 0xDB, 0xE5, 0x7A, 0xBB, 0x6D, 0xD6, 0x9B, 0xC6, 0x0E, 0xCE, 0x79, - 0xEF, 0x7C, 0xB8, 0x5D, 0x6F, 0xD7, 0x9B, 0xDD, 0x57, 0xDF, 0x79, 0x73, 0x52, 0x57, 0x98, 0xF0, - 0xFC, 0xE5, 0x65, 0x88, 0xB1, 0xEB, 0xFA, 0xD5, 0x7A, 0xF3, 0xF5, 0x77, 0xDF, 0x8E, 0x21, 0x36, - 0x4D, 0x97, 0xE7, 0xA6, 0x2A, 0x73, 0x5A, 0x71, 0x45, 0x91, 0x55, 0x55, 0x51, 0x57, 0x45, 0x0C, - 0x48, 0x5A, 0x37, 0x98, 0xB0, 0xC8, 0x33, 0xAA, 0x00, 0x52, 0x22, 0x3D, 0x84, 0x71, 0xB1, 0x60, - 0x4A, 0x52, 0x70, 0xB9, 0x9F, 0xCC, 0x1B, 0x43, 0x1B, 0x03, 0x6A, 0xB3, 0xC2, 0x18, 0xE8, 0xD2, - 0x9E, 0xE4, 0x00, 0x00, 0x10, 0x61, 0xEC, 0xBC, 0x53, 0xD1, 0x03, 0x00, 0x31, 0xE0, 0x72, 0xB5, - 0x19, 0x06, 0x77, 0xD0, 0x23, 0xA0, 0xE8, 0x86, 0x09, 0x39, 0xE7, 0x75, 0x51, 0xE4, 0x85, 0x21, - 0xF7, 0x36, 0x62, 0x35, 0xD0, 0x5A, 0x53, 0x5A, 0x4A, 0xC9, 0x29, 0x6D, 0x10, 0x82, 0x09, 0x12, - 0x71, 0x66, 0x2C, 0x01, 0x19, 0xC6, 0x52, 0x38, 0x62, 0x23, 0x7F, 0x64, 0xFC, 0xDE, 0xD8, 0xBE, - 0x48, 0xBC, 0xCF, 0x9F, 0xF8, 0x72, 0x48, 0xA2, 0x63, 0x40, 0x24, 0x43, 0xD9, 0x2F, 0x53, 0x31, - 0x0E, 0xBF, 0x1C, 0x08, 0x19, 0xF4, 0x26, 0xFB, 0x3E, 0x66, 0x0A, 0x88, 0xE2, 0x0F, 0xFE, 0xA7, - 0x7F, 0x47, 0x29, 0x55, 0x1A, 0xCB, 0x43, 0x3E, 0xAA, 0xE4, 0x70, 0xE2, 0x7C, 0x1F, 0x32, 0xBA, - 0x71, 0xBC, 0x60, 0x54, 0x10, 0x04, 0x36, 0x86, 0x8E, 0x2F, 0xC9, 0x49, 0x8C, 0x3E, 0x6E, 0x63, - 0x04, 0x60, 0x0C, 0x12, 0x30, 0xBE, 0xD7, 0x03, 0x18, 0x4F, 0x87, 0xF1, 0xFB, 0xE1, 0x94, 0x73, - 0x4E, 0x6F, 0x3E, 0x16, 0x87, 0x82, 0x23, 0x1E, 0x7C, 0x19, 0x80, 0xCA, 0xC5, 0x7B, 0x09, 0x17, - 0xDB, 0xE7, 0xF7, 0x89, 0x74, 0x7C, 0xEE, 0x27, 0x63, 0x52, 0x0A, 0xEF, 0xFD, 0x67, 0x9F, 0x9F, - 0x5F, 0x5C, 0xEF, 0x12, 0x53, 0x79, 0x6E, 0xCA, 0xB2, 0x60, 0x80, 0x8C, 0xB1, 0x57, 0xAF, 0x6E, - 0x9B, 0x76, 0x98, 0xD4, 0xC5, 0x3E, 0x8B, 0xA1, 0x2F, 0x1E, 0x02, 0x41, 0x65, 0xFB, 0x9D, 0x87, - 0xE6, 0xEC, 0xB5, 0x56, 0x4A, 0x09, 0x7A, 0x5F, 0xA5, 0x24, 0x29, 0x2E, 0x38, 0x1F, 0x7F, 0xF5, - 0xD9, 0xF9, 0x7F, 0xFE, 0x7F, 0xFE, 0xCB, 0x6A, 0xD3, 0x92, 0xD6, 0xEB, 0x60, 0x6D, 0x37, 0x58, - 0xCE, 0xB9, 0x75, 0x8E, 0x68, 0xFD, 0x5A, 0xCA, 0x93, 0xC5, 0x3C, 0x01, 0xE4, 0x99, 0x01, 0x80, - 0x10, 0x42, 0x4C, 0x98, 0x00, 0x7C, 0xF0, 0x0C, 0xC6, 0xD9, 0x26, 0x9A, 0x5F, 0x61, 0x8C, 0x21, - 0xC6, 0x04, 0xA9, 0x2A, 0x0A, 0xB5, 0x8F, 0x2F, 0xBD, 0x1D, 0xE8, 0x76, 0xED, 0x07, 0xCB, 0x38, - 0xA7, 0x76, 0x07, 0x63, 0x4C, 0x4B, 0xA9, 0x8D, 0xB6, 0xCE, 0xF9, 0x18, 0x0F, 0x83, 0xB1, 0x74, - 0xDE, 0x01, 0x63, 0x99, 0x67, 0x9C, 0x31, 0xE7, 0xBD, 0x0F, 0x11, 0x60, 0x74, 0xB1, 0x75, 0xDE, - 0x0B, 0xCE, 0x95, 0x52, 0xE4, 0x4A, 0x47, 0xA5, 0x34, 0xED, 0xB7, 0x09, 0x80, 0x6A, 0xF9, 0xAA, - 0xC8, 0x31, 0x84, 0xBE, 0xED, 0xEC, 0xE0, 0x76, 0x0D, 0xF1, 0x27, 0x24, 0x63, 0xDC, 0x79, 0x4F, - 0xD7, 0x39, 0x33, 0x9A, 0xA6, 0x3E, 0x84, 0x10, 0xC6, 0x18, 0xAD, 0xA5, 0xD6, 0xA6, 0x28, 0x72, - 0xEF, 0xBD, 0xD6, 0xDA, 0x79, 0x7F, 0x79, 0x73, 0x1B, 0x63, 0x34, 0x5A, 0xD5, 0x65, 0x49, 0x22, - 0x65, 0x00, 0x69, 0x18, 0x6C, 0xD7, 0x0F, 0xB3, 0xE9, 0xA4, 0xAE, 0x8A, 0x2C, 0xD7, 0x55, 0x55, - 0x54, 0x65, 0x2E, 0x04, 0x57, 0x4A, 0x52, 0x46, 0x4C, 0x14, 0x53, 0x18, 0x69, 0xCA, 0xC0, 0xF6, - 0xE2, 0xE4, 0x87, 0x7F, 0x0A, 0x29, 0x18, 0x67, 0x64, 0x4F, 0x7A, 0xB8, 0xEB, 0x68, 0xB1, 0xD2, - 0x3E, 0xAA, 0xB5, 0xA4, 0xE9, 0x1C, 0x36, 0x56, 0xA6, 0x2A, 0xA5, 0xD4, 0x0D, 0xB6, 0x6D, 0xFB, - 0xE0, 0x7D, 0xD7, 0x0D, 0xCE, 0xF9, 0xF1, 0xC9, 0x63, 0x0A, 0x03, 0x0C, 0x20, 0x45, 0x1C, 0x06, - 0x6B, 0xAD, 0x23, 0x09, 0xA3, 0xE3, 0xC5, 0x7C, 0xB5, 0xDA, 0x26, 0x48, 0xD3, 0x49, 0x45, 0xB8, - 0xE1, 0xE5, 0xD5, 0x6D, 0xD3, 0x77, 0xD3, 0x49, 0x8D, 0x88, 0x64, 0xC6, 0x21, 0x47, 0xDD, 0x05, - 0xB9, 0xBF, 0x57, 0xD9, 0x1E, 0xDF, 0xA1, 0x9E, 0x1A, 0x00, 0x40, 0x91, 0x67, 0xD3, 0x49, 0x3D, - 0xA9, 0x8B, 0xB2, 0xC8, 0x1E, 0x9E, 0x1D, 0x57, 0x55, 0x99, 0x19, 0xFD, 0xE4, 0xF1, 0xD9, 0x57, - 0xDF, 0x7E, 0xFA, 0xE9, 0xB3, 0xF3, 0x67, 0x2F, 0x2E, 0x84, 0x10, 0x6F, 0x3D, 0x7D, 0xF2, 0xC1, - 0x87, 0x1F, 0xCF, 0xA6, 0x93, 0x27, 0x8F, 0x1E, 0x5C, 0x5E, 0xDD, 0x08, 0x21, 0x86, 0xC1, 0x16, - 0x79, 0x0E, 0x29, 0x49, 0x21, 0x62, 0xC4, 0x10, 0xE3, 0xB4, 0xAE, 0xA5, 0x14, 0xCE, 0x7A, 0x60, - 0x69, 0x3A, 0xA9, 0x29, 0x93, 0x08, 0x21, 0xB2, 0x51, 0xAD, 0x13, 0xD9, 0x3E, 0x9B, 0x60, 0x9C, - 0xC2, 0x07, 0x4B, 0x00, 0x98, 0x18, 0x12, 0x07, 0x2C, 0xD1, 0x7C, 0xE2, 0x28, 0x7F, 0x45, 0x92, - 0x58, 0x71, 0x0C, 0x10, 0x87, 0x4B, 0x31, 0x62, 0x32, 0x5C, 0xF0, 0x2C, 0x33, 0x4A, 0x09, 0x25, - 0x25, 0xB9, 0x39, 0x8E, 0x18, 0x77, 0x82, 0x3C, 0x33, 0x26, 0x53, 0x34, 0x42, 0x40, 0xE0, 0x38, - 0xC1, 0x44, 0x42, 0x12, 0x32, 0xC1, 0xE9, 0x2B, 0x90, 0xFB, 0x52, 0x08, 0xC6, 0xB9, 0xC8, 0xC4, - 0x90, 0x6A, 0xC3, 0xB4, 0x2F, 0x1E, 0xD3, 0x9D, 0x0F, 0xC7, 0xBE, 0xB4, 0x84, 0x7B, 0x40, 0xFE, - 0xFD, 0x10, 0xF6, 0x85, 0x08, 0xF3, 0xFF, 0x5B, 0x45, 0xDE, 0x69, 0x37, 0xDC, 0x7F, 0xD0, 0xE7, - 0x49, 0xDA, 0xD5, 0x31, 0x21, 0x85, 0x0C, 0x3A, 0x14, 0xC1, 0x18, 0x75, 0x84, 0xE9, 0x2A, 0xC0, - 0x3D, 0x45, 0xFC, 0x83, 0xB5, 0x07, 0x5D, 0xA2, 0xFB, 0xF6, 0xBB, 0x6C, 0x7F, 0xCC, 0xE4, 0x95, - 0x9B, 0x46, 0xE9, 0xB4, 0xC4, 0xD9, 0x58, 0x0F, 0xEE, 0x2B, 0x46, 0xB2, 0xA1, 0x4C, 0x69, 0x3F, - 0xDF, 0x73, 0xFF, 0x88, 0x49, 0xD6, 0x96, 0x76, 0xE0, 0xC3, 0xDF, 0x0F, 0x51, 0xEC, 0x70, 0x7E, - 0x87, 0xFC, 0x95, 0xED, 0x3F, 0x57, 0x2B, 0x19, 0x83, 0xFB, 0xFB, 0x1F, 0xFF, 0x72, 0xF0, 0x60, - 0x8C, 0x86, 0x68, 0x8F, 0xE6, 0xB3, 0xF5, 0x7A, 0x7B, 0x79, 0xB3, 0x0C, 0x01, 0x11, 0xF1, 0xB5, - 0x47, 0xA7, 0x84, 0xD5, 0xD1, 0x65, 0x62, 0x9C, 0x90, 0x3E, 0xD8, 0xCF, 0xB2, 0x02, 0xE7, 0x9C, - 0xB0, 0x09, 0x80, 0xB1, 0x83, 0x49, 0x5C, 0x50, 0xEB, 0x7D, 0xF0, 0xF1, 0xC7, 0xEF, 0x7F, 0xF4, - 0x83, 0x7F, 0xF8, 0xF9, 0xB6, 0xED, 0x69, 0xD7, 0x02, 0x06, 0x52, 0xA9, 0x80, 0x96, 0xD6, 0x80, - 0x1C, 0x69, 0xA5, 0xC9, 0x59, 0x37, 0x0C, 0x43, 0x88, 0x68, 0xB4, 0x62, 0x9C, 0x0B, 0x06, 0x44, - 0x46, 0xE9, 0xAC, 0xCB, 0xB5, 0xA2, 0x01, 0x14, 0x48, 0x29, 0x20, 0x6A, 0x25, 0xB4, 0x54, 0x5A, - 0x49, 0xEB, 0x5C, 0x4A, 0x29, 0x62, 0x4C, 0x29, 0xD1, 0xEC, 0x55, 0xA6, 0x75, 0xD8, 0x47, 0x31, - 0x44, 0x44, 0xCE, 0x31, 0xC6, 0xC1, 0x39, 0x06, 0x2C, 0x37, 0x3A, 0x37, 0xAA, 0x1F, 0x1C, 0x63, - 0x90, 0x67, 0x66, 0xBD, 0x8B, 0x82, 0x5A, 0x87, 0x42, 0xF8, 0x60, 0xBD, 0xF7, 0x4A, 0x88, 0xD1, - 0x8E, 0x41, 0x48, 0x9A, 0x9C, 0x4D, 0x88, 0xB4, 0xB5, 0xB2, 0x71, 0x5E, 0x75, 0x6F, 0x8C, 0x12, - 0x23, 0x6D, 0x04, 0x7D, 0xD7, 0x0B, 0xFA, 0xEA, 0x13, 0xB3, 0x6E, 0x60, 0x8C, 0x49, 0x29, 0x33, - 0x23, 0x46, 0xEB, 0x56, 0xCE, 0x95, 0x14, 0x11, 0xB1, 0xEB, 0x06, 0x29, 0x95, 0x56, 0x52, 0xD4, - 0x95, 0xF7, 0xC1, 0x59, 0x97, 0x69, 0x6D, 0xB4, 0x9E, 0x4D, 0x6B, 0x25, 0xA5, 0xD6, 0x6A, 0xBB, - 0x6D, 0xDA, 0xB6, 0xCF, 0x32, 0xBD, 0x38, 0x9A, 0x3F, 0x7A, 0x70, 0x52, 0x96, 0x99, 0xB3, 0x8E, - 0xBE, 0x68, 0x25, 0xA5, 0x56, 0x8A, 0x0B, 0x9E, 0x48, 0x0B, 0x94, 0x8D, 0x9B, 0xC7, 0x1D, 0x6F, - 0x7E, 0xCF, 0x33, 0xA2, 0x9B, 0x8D, 0xED, 0xF7, 0xED, 0xFD, 0xFE, 0x0A, 0x00, 0x18, 0x23, 0x26, - 0x84, 0x10, 0x62, 0xDA, 0x9B, 0x9C, 0xD2, 0x59, 0x84, 0x10, 0xD7, 0x9B, 0x9D, 0x0F, 0x91, 0x98, - 0x8F, 0x4D, 0xDB, 0x37, 0x6D, 0x9F, 0x17, 0x46, 0x70, 0x5E, 0x55, 0x05, 0x62, 0x8C, 0x91, 0x29, - 0xAD, 0xDB, 0xA6, 0x9B, 0x4C, 0xEB, 0xED, 0xAE, 0x81, 0x9E, 0x97, 0x45, 0x5E, 0x21, 0xBE, 0xF9, - 0xC6, 0xE3, 0x4F, 0x3F, 0x7B, 0x71, 0x75, 0xBD, 0x44, 0x8C, 0x4F, 0x1E, 0x3F, 0x14, 0x52, 0x3C, - 0x7B, 0xF6, 0xB2, 0x69, 0xBA, 0x37, 0x9F, 0x3E, 0xAE, 0xAB, 0x2A, 0x86, 0xF8, 0xEA, 0xEA, 0xB6, - 0x2C, 0xF2, 0x49, 0x5D, 0xE6, 0x79, 0xC6, 0xF6, 0xF0, 0xC8, 0xFD, 0x03, 0x3B, 0x04, 0xB8, 0xBA, - 0x2E, 0xC8, 0x56, 0x56, 0x69, 0x35, 0x9F, 0xD5, 0x42, 0x88, 0xF3, 0x97, 0x57, 0xB7, 0xCB, 0xD5, - 0xC3, 0xB3, 0xE3, 0x6F, 0x7D, 0xFD, 0xED, 0x4F, 0x3E, 0x3B, 0x9F, 0xD6, 0xD5, 0xC9, 0x62, 0x4E, - 0x8A, 0xD2, 0x04, 0x4D, 0xAE, 0x36, 0x9B, 0x69, 0x55, 0x35, 0x9D, 0xCB, 0x33, 0x53, 0xCA, 0x6C, - 0xDB, 0x34, 0x47, 0xB3, 0x09, 0x30, 0xCA, 0xC1, 0x23, 0xE7, 0x0C, 0xC7, 0x79, 0x12, 0x86, 0x91, - 0x98, 0xE7, 0x89, 0x30, 0xE8, 0x84, 0x29, 0x7E, 0xA1, 0x58, 0xBB, 0x5B, 0x83, 0x77, 0x2B, 0x7B, - 0x5C, 0xA2, 0xB0, 0x9F, 0x45, 0x61, 0x87, 0xDD, 0x7A, 0x9F, 0x61, 0xF1, 0xB2, 0xCC, 0xB3, 0x4C, - 0x7B, 0x47, 0x2A, 0x8F, 0x91, 0x3E, 0x4B, 0x4A, 0xB1, 0xD7, 0x2E, 0xE4, 0x84, 0xA6, 0x2B, 0x25, - 0x95, 0x96, 0x87, 0x92, 0x25, 0x8D, 0xE8, 0x76, 0x4A, 0x7C, 0x1F, 0x9B, 0x00, 0x00, 0x00, 0x81, - 0xD3, 0x6F, 0x14, 0xCB, 0x0E, 0x2C, 0xFC, 0x7B, 0x87, 0x95, 0x0E, 0x09, 0xD3, 0x61, 0x69, 0x8F, - 0x8F, 0x7D, 0x5F, 0xF2, 0x1F, 0x0D, 0x61, 0x87, 0xFF, 0x8E, 0x09, 0xDF, 0x1E, 0x33, 0xA5, 0x3B, - 0x66, 0x14, 0x74, 0xFA, 0x77, 0x7F, 0xF0, 0xEF, 0x0F, 0xB9, 0x18, 0x00, 0x8C, 0x48, 0x3C, 0xD5, - 0xAB, 0xFB, 0x1B, 0xEB, 0xFE, 0x85, 0xB8, 0x1F, 0xCB, 0xF6, 0x57, 0xE6, 0xEE, 0x5A, 0xDE, 0x5D, - 0x2E, 0x36, 0x86, 0x98, 0x03, 0x74, 0x35, 0xD6, 0x98, 0xFB, 0x38, 0xCE, 0xBE, 0xF8, 0x38, 0x7C, - 0x44, 0xFA, 0x02, 0xE0, 0xF5, 0xC5, 0x8F, 0xBD, 0x8F, 0x88, 0xD1, 0xCD, 0xCF, 0x39, 0x00, 0x68, - 0xAD, 0x33, 0xA3, 0x3E, 0xFC, 0xF0, 0x93, 0xBF, 0x7F, 0xFF, 0xE3, 0x5D, 0xE3, 0xEA, 0xAA, 0xAC, - 0xAA, 0x0A, 0x80, 0x7D, 0xFE, 0xE2, 0xE2, 0xE7, 0x1F, 0x7D, 0x1E, 0x31, 0x19, 0xAD, 0x1F, 0x9E, - 0x2E, 0xCE, 0x4E, 0xE6, 0xDA, 0x68, 0xCE, 0x79, 0x22, 0x29, 0x0F, 0x18, 0x6B, 0xB4, 0x7D, 0xFC, - 0xA2, 0x68, 0x4B, 0x52, 0x3C, 0x90, 0x12, 0x30, 0xCE, 0x03, 0x46, 0xEB, 0x63, 0xDF, 0xD9, 0xBF, - 0xFA, 0xDB, 0x1F, 0xFF, 0xDD, 0x8F, 0x7E, 0xD1, 0x74, 0x03, 0x9D, 0xBA, 0x94, 0x52, 0x49, 0xC9, - 0x39, 0xC7, 0x7D, 0x1C, 0xCF, 0x8D, 0x41, 0x44, 0xC9, 0x05, 0x67, 0x40, 0xB8, 0x15, 0x5D, 0x6E, - 0x2E, 0xC4, 0x30, 0x58, 0xEF, 0x03, 0x90, 0x31, 0x0C, 0x1F, 0xBF, 0x7C, 0xEF, 0xBD, 0x56, 0x4A, - 0x30, 0xE6, 0x83, 0x4F, 0x69, 0x24, 0xDF, 0xE6, 0x46, 0x33, 0x00, 0x25, 0x04, 0x11, 0x56, 0x09, - 0xE0, 0xE0, 0x7C, 0xEC, 0x78, 0x77, 0xC3, 0x30, 0x1A, 0xF9, 0xC5, 0x48, 0x43, 0x14, 0xD6, 0xB9, - 0x22, 0x33, 0x14, 0x31, 0xAD, 0xF7, 0x9C, 0x3A, 0x21, 0x6C, 0xD4, 0x3D, 0xB1, 0xCE, 0x29, 0x29, - 0x29, 0x71, 0x20, 0xBA, 0x3D, 0x65, 0xA2, 0x54, 0x93, 0x52, 0xAB, 0x94, 0x86, 0xAE, 0xB8, 0x14, - 0x45, 0x9E, 0x65, 0x46, 0x0B, 0xC1, 0x89, 0x74, 0x06, 0x9C, 0xC5, 0x84, 0x24, 0x52, 0x4A, 0xC1, - 0x94, 0xFE, 0x9E, 0x65, 0xA6, 0x2A, 0x73, 0xCE, 0x59, 0x3F, 0xD8, 0x10, 0x3C, 0x03, 0x98, 0xCF, - 0xA6, 0x84, 0x3A, 0x69, 0xA5, 0xAC, 0xB3, 0x98, 0xB0, 0x2A, 0xCB, 0x87, 0x0F, 0x8E, 0xE7, 0xB3, - 0x5A, 0x0A, 0x21, 0x85, 0x18, 0xED, 0x1A, 0x8D, 0x51, 0x52, 0x71, 0x4E, 0x3A, 0x71, 0x89, 0xB6, - 0x8A, 0xF1, 0x4E, 0x4D, 0x94, 0x5C, 0x8C, 0xDB, 0x79, 0x42, 0x86, 0xA3, 0x86, 0x25, 0x30, 0x06, - 0x94, 0xAF, 0x1F, 0xFA, 0xE6, 0x98, 0x92, 0xB5, 0xCE, 0x59, 0x4F, 0x8D, 0x22, 0xEF, 0x43, 0x08, - 0x71, 0xDB, 0xB4, 0x4D, 0xD3, 0x0D, 0x83, 0x23, 0x0E, 0xE3, 0xB6, 0xE9, 0x9A, 0xB6, 0x5F, 0xAE, - 0xB6, 0xE4, 0x6C, 0x40, 0x6C, 0x5B, 0xC1, 0x09, 0x39, 0x8D, 0x5C, 0x88, 0xA6, 0x69, 0x79, 0x4A, - 0x65, 0x59, 0x1C, 0x1D, 0xCD, 0x72, 0x63, 0x9A, 0xA6, 0xED, 0xBA, 0xE1, 0xE5, 0xAB, 0xEB, 0x49, - 0x5D, 0xAD, 0xD7, 0xDB, 0x61, 0x18, 0x8A, 0x3C, 0xAB, 0xCB, 0x62, 0x52, 0x17, 0x42, 0x88, 0x7E, - 0xB0, 0x9B, 0x4D, 0xC3, 0x38, 0xCB, 0xF3, 0x7C, 0x8F, 0x36, 0xDC, 0xAD, 0x97, 0xC3, 0x22, 0x3D, - 0x6C, 0xB7, 0x5A, 0x2B, 0x63, 0x14, 0x3D, 0xE1, 0xE4, 0x78, 0x5E, 0x15, 0xF9, 0xE5, 0xD5, 0x8D, - 0x1D, 0xDC, 0x7C, 0x3E, 0x99, 0x4E, 0xEB, 0xBA, 0x2A, 0x8E, 0xE6, 0xD3, 0xA3, 0xF9, 0xB4, 0x1F, - 0xAC, 0x1D, 0xAC, 0x52, 0xB2, 0xAE, 0x4A, 0xA5, 0x55, 0x8C, 0x71, 0x52, 0x95, 0x55, 0x55, 0x1C, - 0xF0, 0xE5, 0x84, 0xD4, 0xFC, 0x19, 0xF7, 0xDD, 0xB1, 0x78, 0x1B, 0xA5, 0xE7, 0xC7, 0x1B, 0xE6, - 0x7E, 0x2C, 0x38, 0x5C, 0xD2, 0x3B, 0x3E, 0xE4, 0xF8, 0xAF, 0xFD, 0xB8, 0xCB, 0x98, 0x97, 0xE0, - 0x3D, 0x08, 0x9B, 0x8F, 0xC6, 0xD2, 0x1C, 0x84, 0x10, 0x59, 0xA6, 0x8D, 0xD1, 0x5A, 0x6B, 0xC1, - 0x19, 0x99, 0x46, 0x32, 0xC6, 0xB4, 0x51, 0xA4, 0x4F, 0x7D, 0x3F, 0xB2, 0x88, 0x11, 0xDE, 0x01, - 0xAA, 0x9A, 0x28, 0xF7, 0xDD, 0xC7, 0x0A, 0xF8, 0x12, 0x48, 0xFF, 0xC5, 0x98, 0xF5, 0x6B, 0x21, - 0x6C, 0x8C, 0xB6, 0x80, 0x29, 0x01, 0xBB, 0x0B, 0x64, 0x29, 0xDD, 0xCF, 0xEC, 0xBE, 0x10, 0xA5, - 0xD3, 0xBD, 0x5F, 0xD2, 0x21, 0x2E, 0xFF, 0xC1, 0x1F, 0xFC, 0x7B, 0x00, 0x92, 0xA0, 0xD9, 0x9F, - 0xFB, 0xDE, 0x59, 0xF6, 0xFE, 0x27, 0x7F, 0x21, 0x9C, 0xA4, 0xBB, 0x48, 0x04, 0xC0, 0xEE, 0xA3, - 0xEF, 0x8C, 0x8D, 0x68, 0x18, 0xDB, 0x07, 0x9A, 0xB1, 0x89, 0x39, 0xBE, 0x42, 0x70, 0xC6, 0x19, - 0x67, 0xC4, 0x61, 0x39, 0x3C, 0x81, 0x0B, 0xC6, 0x00, 0x84, 0x10, 0x52, 0x09, 0xE2, 0x70, 0x32, - 0x80, 0x34, 0x36, 0xBC, 0xEF, 0xB1, 0xEF, 0xEE, 0xE5, 0xC6, 0x87, 0x3B, 0x49, 0x6B, 0x73, 0x73, - 0xBB, 0xBC, 0xBA, 0xBC, 0xFC, 0xF0, 0xD3, 0xEB, 0xC4, 0x55, 0x51, 0x64, 0xD6, 0xDA, 0x66, 0xD7, - 0x0C, 0x2E, 0xBC, 0xB8, 0xB8, 0xAE, 0xCA, 0xF2, 0xC9, 0xC3, 0x93, 0x22, 0x37, 0x67, 0x27, 0x47, - 0x45, 0x99, 0x0B, 0xC1, 0x52, 0x4A, 0xDE, 0xC7, 0x88, 0x29, 0x84, 0x08, 0x00, 0xC4, 0xA8, 0xA0, - 0xA3, 0x40, 0x24, 0x17, 0xEB, 0x84, 0x29, 0x05, 0x44, 0x4C, 0x18, 0x7C, 0x74, 0x3E, 0x7C, 0xF0, - 0xE1, 0xA7, 0x7F, 0xF7, 0xE3, 0x0F, 0xB6, 0x4D, 0x97, 0x18, 0x4B, 0x71, 0x64, 0x1E, 0x73, 0xCE, - 0x7D, 0xC4, 0xB6, 0x1B, 0x28, 0x2E, 0x53, 0x62, 0x41, 0xC5, 0xAC, 0x0F, 0x51, 0x69, 0x45, 0x6A, - 0x4D, 0xD6, 0x79, 0x7A, 0x73, 0x22, 0x16, 0x30, 0x60, 0x04, 0xD3, 0x42, 0xA2, 0x21, 0x6E, 0xC6, - 0x39, 0x0B, 0x31, 0xC4, 0x84, 0x52, 0xC8, 0xE0, 0x63, 0xD7, 0x0F, 0x5C, 0x70, 0x4C, 0x40, 0xBD, - 0x02, 0x17, 0x02, 0x1B, 0x0B, 0xD5, 0xD4, 0x0F, 0x56, 0x49, 0x05, 0x90, 0xA4, 0x94, 0x8C, 0xB1, - 0xC1, 0x3A, 0x1F, 0xA3, 0x92, 0xE2, 0x78, 0x3E, 0xEB, 0x07, 0xBB, 0xD9, 0xB5, 0x34, 0x22, 0x9E, - 0x00, 0x9C, 0xF3, 0x31, 0x22, 0x05, 0x17, 0xC6, 0x98, 0xE0, 0x3C, 0x33, 0xBA, 0x28, 0xB2, 0x18, - 0x91, 0x84, 0xAD, 0xE9, 0x64, 0x69, 0x2A, 0x10, 0x21, 0xF1, 0xBD, 0x47, 0x15, 0xC9, 0xF5, 0xD1, - 0x17, 0x1E, 0x11, 0x23, 0x22, 0x5D, 0xF6, 0x18, 0x51, 0x29, 0x41, 0x96, 0x6E, 0x54, 0x05, 0x73, - 0xCE, 0x31, 0xA5, 0xB2, 0x28, 0xA6, 0xD3, 0xBA, 0xC8, 0x32, 0xAD, 0xA5, 0x75, 0xAE, 0x69, 0xBB, - 0xE9, 0xA4, 0x7E, 0xF4, 0xE0, 0x78, 0x36, 0xAD, 0xF2, 0x2C, 0x4B, 0x98, 0x7A, 0x6B, 0x81, 0x81, - 0x14, 0x82, 0x73, 0x1E, 0x31, 0xF6, 0xBD, 0xBD, 0xC3, 0x31, 0xD2, 0x21, 0xAD, 0x4E, 0x29, 0x21, - 0x01, 0xBB, 0xFB, 0x3B, 0x70, 0xCF, 0xFF, 0xDE, 0xCF, 0xA9, 0x24, 0xEA, 0x03, 0x20, 0x38, 0xE7, - 0xBB, 0x6E, 0x68, 0x49, 0xE1, 0x56, 0x70, 0xC4, 0xD4, 0xF5, 0x03, 0xA9, 0xEE, 0x6C, 0xB6, 0xBB, - 0xC1, 0x3A, 0x00, 0xB6, 0x6B, 0xDA, 0x2C, 0x33, 0x93, 0xAA, 0xF0, 0x21, 0x5E, 0x5F, 0x2F, 0x8F, - 0x17, 0xB3, 0xBA, 0x2A, 0x9D, 0xF3, 0x93, 0xE9, 0x84, 0x52, 0x57, 0x48, 0x18, 0x62, 0xB8, 0xBA, - 0xBA, 0x5D, 0xAD, 0x77, 0x14, 0x5C, 0xAE, 0x6F, 0x56, 0xE7, 0x2F, 0xAF, 0x5E, 0x5D, 0x5D, 0x7F, - 0xED, 0xDD, 0xB7, 0x2F, 0x5E, 0x5D, 0x39, 0xEF, 0xDB, 0xAE, 0x2F, 0xF2, 0x2C, 0x33, 0xA6, 0xEF, - 0x87, 0x4D, 0xD3, 0x22, 0x22, 0x89, 0x3D, 0x1C, 0x6E, 0xF5, 0xBB, 0x7C, 0x01, 0x31, 0xED, 0x69, - 0x92, 0x87, 0x8D, 0x5D, 0x4A, 0x51, 0x55, 0xF9, 0xE2, 0x68, 0x3A, 0x4E, 0x0B, 0xCC, 0xEA, 0x22, - 0x37, 0x65, 0x91, 0x7D, 0xFD, 0xDD, 0x37, 0x19, 0x83, 0xEB, 0xDB, 0x65, 0x66, 0x34, 0x39, 0xC3, - 0x1B, 0xA3, 0x39, 0x87, 0xB2, 0xC8, 0x4F, 0x8E, 0xE7, 0xFD, 0x30, 0x44, 0xF2, 0x6A, 0x13, 0x42, - 0x48, 0xAE, 0x8D, 0x1A, 0xDF, 0x30, 0xDD, 0xC1, 0x61, 0x00, 0x10, 0x43, 0x74, 0x36, 0x50, 0x32, - 0x7B, 0x08, 0x1F, 0x89, 0x04, 0x95, 0x0F, 0x12, 0xC5, 0xA4, 0x3B, 0x13, 0xEE, 0x34, 0xE2, 0x69, - 0x4D, 0xEF, 0xBB, 0x79, 0xFB, 0x75, 0x0D, 0x77, 0x20, 0x11, 0xE3, 0x4C, 0x2A, 0xC1, 0xEF, 0x39, - 0xCF, 0x4A, 0x75, 0xA7, 0x8C, 0x70, 0xA8, 0xA2, 0x00, 0x40, 0xDC, 0xAB, 0x87, 0xC6, 0xA2, 0xE8, - 0x7E, 0x4A, 0x08, 0x77, 0x03, 0xC8, 0xF7, 0xA3, 0xD5, 0xFD, 0xA0, 0x36, 0xC6, 0x32, 0x48, 0x90, - 0x00, 0x71, 0x8C, 0x47, 0xFF, 0xE8, 0xB3, 0xBF, 0xF0, 0xFB, 0xAF, 0xC1, 0xFC, 0x87, 0x98, 0x38, - 0x16, 0xFF, 0x78, 0x17, 0x29, 0xEF, 0xBF, 0x3E, 0xED, 0xB1, 0x80, 0x2F, 0xC4, 0x31, 0x18, 0xA1, - 0xB0, 0x43, 0x8D, 0xFC, 0x85, 0x74, 0x0C, 0xF6, 0x32, 0xF9, 0x87, 0x97, 0x70, 0x6A, 0xFF, 0x8F, - 0x98, 0xD6, 0x5D, 0x81, 0x9A, 0xF6, 0xD8, 0x47, 0x4A, 0x69, 0xBC, 0xD9, 0x85, 0x18, 0xBF, 0xB3, - 0xF1, 0x72, 0x44, 0xBA, 0xE1, 0xF7, 0xB1, 0xF2, 0x4E, 0xA5, 0x9A, 0xA2, 0x4F, 0x9E, 0x67, 0x6D, - 0xD3, 0x9C, 0xBF, 0x7C, 0xE5, 0x43, 0x52, 0x26, 0xE3, 0x52, 0x5C, 0x5E, 0xDF, 0x38, 0x49, 0xF1, - 0xFE, 0x7F, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xEB, 0xA9, 0x6D, 0x9D, 0x17, 0xF9, - 0x83, 0xD3, 0xE3, 0xF9, 0x6C, 0x62, 0xB4, 0x9C, 0xD4, 0x25, 0x63, 0x10, 0x02, 0x3A, 0x1F, 0x86, - 0xC1, 0xB1, 0xBD, 0x07, 0x0F, 0xD5, 0x8F, 0x00, 0x60, 0xAD, 0x1B, 0x17, 0x18, 0x1F, 0xC5, 0x60, - 0x11, 0x21, 0x46, 0x5C, 0xAD, 0x36, 0xEB, 0xCD, 0x8E, 0x92, 0x6D, 0x29, 0x25, 0xDD, 0x7C, 0x74, - 0x26, 0xDE, 0xFB, 0x83, 0xE0, 0x5F, 0xD7, 0xDB, 0x22, 0x33, 0x59, 0x96, 0x61, 0x4A, 0xDD, 0x30, - 0xA4, 0xBD, 0x1E, 0x06, 0x83, 0xC4, 0x39, 0x23, 0x12, 0x89, 0x60, 0x0C, 0x53, 0x52, 0x52, 0x0D, - 0xB6, 0x53, 0x4A, 0x0A, 0xC6, 0x63, 0x8C, 0x42, 0x48, 0x29, 0xA5, 0x75, 0xCE, 0x79, 0x97, 0x00, - 0xA8, 0xF8, 0x1A, 0xAC, 0x4D, 0x90, 0x38, 0xB0, 0x22, 0xCB, 0x18, 0x63, 0x11, 0x31, 0xC6, 0xA8, - 0x94, 0x24, 0x3D, 0x83, 0x10, 0xD1, 0x3A, 0x5F, 0x64, 0x59, 0xEF, 0x5C, 0x44, 0x8C, 0x09, 0xBB, - 0x61, 0x50, 0x52, 0x5A, 0xE7, 0xA8, 0x63, 0xC0, 0x39, 0xE3, 0x5C, 0x72, 0xC6, 0x85, 0xE0, 0x9E, - 0x00, 0x2F, 0x80, 0xBE, 0xB7, 0xE4, 0x1E, 0x26, 0x84, 0x20, 0x3A, 0x52, 0x4A, 0x49, 0x08, 0xA1, - 0xB5, 0x8C, 0x21, 0x48, 0x86, 0x84, 0x69, 0x47, 0x8C, 0x90, 0x80, 0xBA, 0xEA, 0x09, 0x58, 0x88, - 0xE8, 0xFC, 0xA0, 0xA4, 0x34, 0x4C, 0x65, 0x99, 0x01, 0x80, 0xB6, 0x6D, 0x85, 0x94, 0xDE, 0xFB, - 0x2C, 0x33, 0xB3, 0xE9, 0x64, 0x52, 0x17, 0x5A, 0xC8, 0x10, 0x42, 0x9E, 0x4D, 0x67, 0xD3, 0x8A, - 0x25, 0xA0, 0x5E, 0x98, 0x54, 0x42, 0x1B, 0x99, 0x58, 0xE2, 0x3C, 0x97, 0x52, 0x38, 0xEB, 0xFA, - 0xDE, 0x5A, 0xEF, 0x74, 0x50, 0xC1, 0x7B, 0xAD, 0x55, 0xA6, 0x15, 0x22, 0x61, 0x91, 0x4C, 0x70, - 0xC1, 0xC5, 0x21, 0x86, 0xDE, 0x01, 0x0E, 0x1C, 0x00, 0x81, 0xC5, 0x98, 0x12, 0x26, 0xC6, 0x20, - 0xC4, 0x68, 0x07, 0xD7, 0xB4, 0x3D, 0x09, 0x43, 0x5B, 0xE7, 0x11, 0xB1, 0xEF, 0xAD, 0xB5, 0x6E, - 0xBD, 0xDE, 0x0E, 0xD6, 0x01, 0xE7, 0x5D, 0x37, 0x18, 0x25, 0x81, 0xB3, 0x18, 0x62, 0x99, 0x9B, - 0xDC, 0xA8, 0xF6, 0xFF, 0x63, 0xEB, 0xCD, 0x9A, 0x24, 0xBB, 0x92, 0xF4, 0xB0, 0xE3, 0x7E, 0xD6, - 0xBB, 0xC4, 0x92, 0x6B, 0x2D, 0x68, 0xA0, 0xD1, 0x1B, 0xBA, 0x87, 0x33, 0x3D, 0x9C, 0x19, 0x6E, - 0x46, 0x72, 0x86, 0xA4, 0xC4, 0x07, 0xD2, 0x28, 0x93, 0xDE, 0xF4, 0x07, 0x24, 0xD3, 0x33, 0x4D, - 0x7F, 0x4B, 0x4F, 0x92, 0xCC, 0x64, 0x32, 0xA3, 0x89, 0x12, 0xCD, 0x38, 0x22, 0xC7, 0xA6, 0xD5, - 0xEC, 0xE9, 0x1D, 0xDD, 0x0D, 0x34, 0x80, 0xAA, 0x42, 0x56, 0xE5, 0x1A, 0xEB, 0x5D, 0xCE, 0xEA, - 0x7A, 0xF0, 0x1B, 0x91, 0x09, 0x90, 0xF9, 0x50, 0x56, 0x28, 0x64, 0x46, 0x64, 0x44, 0xDC, 0xEB, - 0xC7, 0xFD, 0xF3, 0x6F, 0xD9, 0xF7, 0x4C, 0xEF, 0x02, 0x41, 0xCF, 0x9F, 0x9D, 0x3F, 0xDC, 0x6F, - 0xCE, 0x4F, 0x4F, 0x36, 0xDB, 0x6D, 0xC9, 0xF1, 0xE1, 0x61, 0x1D, 0x62, 0xBC, 0xBC, 0x3C, 0x3B, - 0x3D, 0x5D, 0xF6, 0xA3, 0xBF, 0xBA, 0xBA, 0x7E, 0x73, 0x75, 0xFD, 0xC1, 0xFB, 0x2F, 0x5F, 0xBD, - 0xBA, 0x2A, 0x99, 0x4A, 0x29, 0x7F, 0xFC, 0x87, 0x1F, 0x35, 0x75, 0xD5, 0xF5, 0xC3, 0xCD, 0xED, - 0xBD, 0x35, 0xFA, 0xF2, 0xE2, 0x94, 0x9B, 0x32, 0xDE, 0xB7, 0xF2, 0xED, 0xCA, 0xC3, 0x7B, 0x39, - 0x8C, 0xE1, 0xC7, 0x32, 0x57, 0x8A, 0x00, 0x28, 0xCB, 0x45, 0x7B, 0x7E, 0xB6, 0x00, 0x80, 0x18, - 0xD2, 0x66, 0xBB, 0xFF, 0xEC, 0xF3, 0xD7, 0x3E, 0x44, 0x89, 0x20, 0x48, 0x9C, 0x9E, 0x2C, 0xAA, - 0xCA, 0x0D, 0xE3, 0x68, 0xB4, 0x6B, 0xEB, 0x4A, 0x29, 0xA9, 0x92, 0xD4, 0x52, 0x4A, 0x29, 0x99, - 0x68, 0x91, 0xD2, 0x94, 0x61, 0x5E, 0x68, 0x1A, 0x2A, 0x85, 0x10, 0x39, 0xE7, 0x71, 0x0C, 0xDC, - 0x46, 0xE5, 0x4C, 0x87, 0x98, 0xC4, 0xC7, 0x1A, 0x07, 0x20, 0x72, 0x39, 0x2C, 0x2C, 0xBF, 0x3A, - 0x54, 0x0A, 0xA0, 0x03, 0xE8, 0x7E, 0xA8, 0xC5, 0x04, 0x80, 0x42, 0x02, 0x0A, 0x41, 0x91, 0x8A, - 0x10, 0x42, 0x49, 0x48, 0x49, 0xF0, 0x90, 0x6E, 0xC9, 0xA6, 0x08, 0x88, 0x60, 0x8C, 0x9E, 0x7C, - 0x5D, 0xF9, 0x60, 0xE3, 0x90, 0x07, 0xCE, 0x44, 0x64, 0xFE, 0x3D, 0x09, 0xFA, 0x6A, 0x3F, 0xF5, - 0xB4, 0xE2, 0x1C, 0x07, 0x2A, 0x71, 0x70, 0x94, 0x79, 0xAC, 0x41, 0x45, 0x14, 0x9A, 0x2C, 0x6B, - 0x9E, 0xFC, 0xF8, 0xB1, 0x70, 0x4D, 0xE3, 0x68, 0x79, 0xD2, 0x88, 0x89, 0x69, 0x7B, 0xFB, 0x95, - 0x6D, 0xC0, 0x64, 0x6D, 0x78, 0x78, 0x4D, 0x00, 0x4F, 0xF6, 0x8F, 0xFC, 0x98, 0xC7, 0x77, 0xE1, - 0xB1, 0x8A, 0x3D, 0xBE, 0x24, 0xFC, 0xDA, 0x37, 0x4C, 0x95, 0x0C, 0x0E, 0x15, 0x8E, 0xFF, 0x11, - 0x05, 0x02, 0x4A, 0xC5, 0x9D, 0xD7, 0x93, 0x29, 0xF2, 0xF0, 0x17, 0xC1, 0x9C, 0x80, 0x83, 0x93, - 0x8F, 0x10, 0x42, 0x1B, 0x85, 0x12, 0x52, 0x02, 0x2E, 0x65, 0x78, 0x58, 0xDB, 0xF0, 0x6B, 0x46, - 0x44, 0x63, 0x34, 0x0A, 0xF1, 0xD9, 0xEF, 0xBF, 0xF8, 0xED, 0x17, 0xD7, 0x31, 0x89, 0x58, 0xC4, - 0x7A, 0xB3, 0xEB, 0xFA, 0x61, 0x1C, 0x87, 0xE5, 0x7C, 0x81, 0x44, 0x4E, 0xCB, 0x79, 0x5B, 0x97, - 0x94, 0xAC, 0x92, 0x27, 0xCB, 0x56, 0x00, 0x84, 0x94, 0xFA, 0x7E, 0xF4, 0x31, 0x2B, 0x84, 0xA3, - 0x6D, 0x2E, 0x11, 0xC5, 0x94, 0xC7, 0xC1, 0x33, 0x0E, 0xCD, 0xD7, 0x68, 0x2A, 0x25, 0xA5, 0x42, - 0x85, 0x52, 0xCE, 0xFD, 0xE8, 0x53, 0xCA, 0xB3, 0xA6, 0x11, 0x02, 0x43, 0x8C, 0x59, 0x2B, 0x1E, - 0x73, 0x24, 0x4E, 0xC2, 0xF1, 0xC3, 0x67, 0x25, 0xC6, 0x18, 0xFA, 0xD1, 0x57, 0xCE, 0x31, 0x29, - 0x81, 0xED, 0x76, 0x05, 0x95, 0x29, 0x05, 0x8E, 0x88, 0xC3, 0x25, 0x0B, 0x11, 0xE7, 0x63, 0xE7, - 0x54, 0x94, 0x52, 0x29, 0xE7, 0x98, 0x32, 0x22, 0x32, 0x3C, 0x2F, 0x40, 0x14, 0x22, 0xA9, 0x54, - 0x08, 0xA1, 0xAA, 0x8D, 0x35, 0x3A, 0xC4, 0x04, 0x42, 0xC4, 0x9C, 0x89, 0x04, 0x22, 0x94, 0x42, - 0x08, 0x22, 0x11, 0x19, 0x23, 0x43, 0x02, 0x00, 0xE8, 0xFB, 0x71, 0x1C, 0xFD, 0xBC, 0x6D, 0x52, - 0x56, 0x4C, 0x09, 0xB6, 0x5A, 0xEF, 0xFB, 0x81, 0x94, 0x4A, 0x19, 0xD9, 0x60, 0x6B, 0x18, 0x3D, - 0x00, 0xA4, 0x92, 0x35, 0x4E, 0x4B, 0xA8, 0x72, 0x18, 0xAB, 0x59, 0x0E, 0x9D, 0xA9, 0x68, 0x90, - 0xBC, 0x16, 0x98, 0xEE, 0x55, 0x29, 0x49, 0x88, 0x61, 0xF4, 0x42, 0x40, 0xED, 0xF4, 0xAC, 0x6D, - 0xA4, 0xC4, 0xBE, 0xEB, 0xFB, 0x7E, 0x98, 0x2F, 0x66, 0x27, 0xCB, 0x85, 0xB5, 0x66, 0xDE, 0x36, - 0x8B, 0x79, 0x6D, 0xAD, 0x65, 0x53, 0x2D, 0x00, 0x0C, 0x21, 0x54, 0x95, 0x6B, 0x1A, 0x87, 0x52, - 0x2A, 0x84, 0xB6, 0xAE, 0xB8, 0xA5, 0xEA, 0xFB, 0x31, 0xC6, 0x04, 0x60, 0x0E, 0xE6, 0x9D, 0x2C, - 0xF3, 0x28, 0x90, 0x40, 0x29, 0x2C, 0x54, 0x28, 0x4F, 0xBF, 0x15, 0x02, 0x0B, 0xCF, 0x11, 0x00, - 0x0A, 0x81, 0xC8, 0x85, 0xB3, 0x7F, 0xD8, 0x49, 0x62, 0xBD, 0xD9, 0x1D, 0xBC, 0xD4, 0xE3, 0xBE, - 0x1B, 0xBC, 0xF7, 0x85, 0xA8, 0xE4, 0x52, 0x48, 0xB0, 0xE1, 0x60, 0x88, 0xA9, 0x1F, 0x7C, 0x5D, - 0x39, 0x1F, 0x02, 0x08, 0x51, 0x55, 0x96, 0x88, 0xEE, 0x6E, 0x57, 0x2F, 0x9E, 0x5F, 0xC6, 0x98, - 0x62, 0x88, 0x4D, 0x53, 0x0D, 0x83, 0xAF, 0x9C, 0x13, 0x42, 0x28, 0xAD, 0xEE, 0xEF, 0x56, 0xBB, - 0x5D, 0x67, 0xAC, 0x79, 0xFE, 0xEC, 0x7C, 0xBB, 0xDD, 0xAF, 0x56, 0x1B, 0x67, 0xCC, 0x7C, 0xDE, - 0xDE, 0xDD, 0x3D, 0x28, 0xAD, 0x1F, 0xD6, 0x9B, 0xB3, 0x93, 0x93, 0x8B, 0xB3, 0x13, 0xAD, 0x65, - 0x4C, 0xF9, 0xEE, 0x6E, 0x35, 0x9F, 0x37, 0x55, 0xE5, 0x10, 0x05, 0x80, 0xCC, 0x79, 0xBA, 0xF2, - 0x79, 0x03, 0x73, 0xEC, 0x74, 0x8E, 0x77, 0xCA, 0xD4, 0x25, 0x14, 0x22, 0x2A, 0x28, 0xD1, 0x39, - 0xF3, 0xC1, 0xFB, 0x2F, 0x11, 0x41, 0x2A, 0xF5, 0xEA, 0xD5, 0xD5, 0xC3, 0x6A, 0x8B, 0x9C, 0x7A, - 0xD5, 0x36, 0x00, 0x90, 0x53, 0xB6, 0xC6, 0x84, 0x10, 0xA4, 0x92, 0x8F, 0xBD, 0x18, 0xBF, 0x27, - 0x38, 0xF5, 0xC5, 0x42, 0x50, 0x8C, 0xB9, 0x94, 0xA2, 0xB5, 0x12, 0x05, 0x98, 0x82, 0x0E, 0x87, - 0x80, 0x56, 0xEF, 0xC3, 0x84, 0xA0, 0x4D, 0x12, 0xD1, 0x69, 0x84, 0x94, 0xC7, 0x60, 0x69, 0x44, - 0xDE, 0xC2, 0x19, 0xAD, 0x27, 0xBE, 0x0B, 0x0A, 0x39, 0x7D, 0x16, 0xC4, 0x03, 0x63, 0x16, 0x99, - 0x5D, 0x82, 0xD9, 0x7D, 0x13, 0x25, 0x68, 0xA5, 0x53, 0xCE, 0x28, 0x26, 0x9B, 0x79, 0x22, 0x2A, - 0x4C, 0x2B, 0xE3, 0xFC, 0xDB, 0x63, 0xD7, 0x73, 0x60, 0x2B, 0x1C, 0x9F, 0xB7, 0x1C, 0x52, 0x2F, - 0x0E, 0xE5, 0xE8, 0xB1, 0x26, 0x1C, 0x6B, 0x10, 0x5B, 0x2E, 0x88, 0xC7, 0x07, 0xFA, 0x7A, 0xCB, - 0xC5, 0x30, 0x97, 0x38, 0x16, 0xB2, 0xAF, 0x0F, 0xAD, 0xD3, 0xCF, 0xAA, 0xC7, 0xC6, 0x4B, 0x7C, - 0xFD, 0x69, 0x9E, 0xD6, 0xF2, 0xAF, 0xB5, 0xB8, 0x08, 0x02, 0x0F, 0x50, 0x17, 0xFF, 0x14, 0xAF, - 0x32, 0x1F, 0x6B, 0x30, 0x27, 0x0B, 0xA1, 0x80, 0x29, 0x68, 0x17, 0x40, 0x70, 0x62, 0xC8, 0x23, - 0x84, 0xCF, 0x99, 0x02, 0x00, 0x42, 0xA3, 0x2C, 0x82, 0x62, 0xCE, 0x20, 0x84, 0x02, 0x49, 0x00, - 0xF1, 0xA0, 0x6E, 0x22, 0x24, 0x9C, 0x58, 0x91, 0x20, 0x04, 0xE5, 0xC4, 0x3B, 0x14, 0x79, 0xBF, - 0x5A, 0x5F, 0xDF, 0xAE, 0xAE, 0xEE, 0xF6, 0xBB, 0xA1, 0xDC, 0x3F, 0xAC, 0xBA, 0x6E, 0x98, 0xCF, - 0xE7, 0x75, 0x5D, 0x3F, 0x7F, 0x76, 0x69, 0x8C, 0x42, 0x21, 0xC6, 0x71, 0xA8, 0xAD, 0x7E, 0x71, - 0x79, 0xB6, 0x3C, 0x99, 0x23, 0x42, 0x2E, 0x65, 0xF0, 0x71, 0xBD, 0x1B, 0x4A, 0x29, 0x46, 0x2B, - 0x2B, 0x44, 0x65, 0x0D, 0x00, 0xC4, 0x18, 0xF7, 0xDD, 0xA0, 0x94, 0xAC, 0xB5, 0xE2, 0x93, 0xA2, - 0x30, 0xD2, 0x9F, 0x4B, 0xCC, 0xC9, 0x87, 0x20, 0xA5, 0x34, 0xCE, 0x38, 0x67, 0x41, 0xCA, 0xFB, - 0xD5, 0x7A, 0xDE, 0x36, 0xA5, 0x50, 0x8C, 0x51, 0xE2, 0x74, 0xB4, 0xD5, 0x95, 0x1D, 0xBD, 0x6F, - 0xAA, 0x4A, 0x6B, 0x1D, 0x62, 0x2C, 0xB9, 0xA8, 0x83, 0x87, 0x9C, 0x44, 0x04, 0xC0, 0x61, 0xF4, - 0x56, 0x2B, 0x67, 0x8C, 0x35, 0x5A, 0x21, 0x72, 0xD9, 0x22, 0x22, 0x90, 0x8C, 0xC8, 0x62, 0x2E, - 0x91, 0x55, 0x44, 0xD6, 0x98, 0xF5, 0x6E, 0x8F, 0x24, 0xAC, 0x35, 0x7C, 0xB8, 0xF4, 0xFD, 0xC0, - 0x74, 0x07, 0x89, 0x98, 0x45, 0x16, 0x42, 0x18, 0xA3, 0x01, 0xA0, 0x50, 0x61, 0x91, 0xD0, 0xD4, - 0x45, 0x4E, 0x6F, 0x57, 0x41, 0x00, 0x3F, 0x7A, 0x9E, 0xD8, 0x89, 0x68, 0xF4, 0x01, 0x00, 0x0F, - 0xBA, 0x52, 0xC1, 0x84, 0x49, 0x3A, 0xEC, 0xB0, 0x94, 0x92, 0xD6, 0x72, 0x59, 0x41, 0x91, 0x27, - 0x4A, 0x07, 0x9F, 0xFF, 0xC0, 0xE2, 0x53, 0x8E, 0x6D, 0x46, 0x14, 0x40, 0xCC, 0x53, 0x8D, 0x31, - 0x6A, 0x6D, 0x96, 0x8B, 0xF9, 0x8B, 0xCB, 0x73, 0x01, 0x62, 0xB9, 0x68, 0xD9, 0x1C, 0x2D, 0xA7, - 0x22, 0x11, 0x52, 0xCE, 0xD8, 0x56, 0x95, 0xB3, 0x5C, 0x94, 0x8C, 0x94, 0x4A, 0x2B, 0x94, 0x90, - 0x62, 0xA9, 0x9C, 0xF1, 0xB5, 0x0B, 0x21, 0x29, 0x25, 0x95, 0x96, 0xCC, 0x82, 0x8E, 0x21, 0x5B, - 0xA5, 0x89, 0x94, 0x10, 0x07, 0x66, 0xB5, 0x10, 0x00, 0x42, 0xD1, 0xB4, 0xDC, 0xE4, 0x3D, 0xDA, - 0xC4, 0xDA, 0xCF, 0x79, 0xDF, 0xF5, 0xEB, 0xCD, 0x2E, 0x84, 0x94, 0x4B, 0x09, 0x21, 0x16, 0x22, - 0x4E, 0xD5, 0x74, 0xCE, 0x08, 0x80, 0x31, 0x84, 0x14, 0x73, 0x4C, 0x29, 0xC6, 0xB8, 0xD9, 0xEE, - 0x72, 0x2E, 0x28, 0xB1, 0xF1, 0x55, 0xE5, 0x6C, 0xA1, 0x32, 0x8C, 0xE3, 0xD9, 0xC9, 0xB2, 0xEB, - 0x46, 0x57, 0x19, 0xA5, 0x65, 0x4A, 0xA8, 0xA4, 0x1C, 0x86, 0x7E, 0x31, 0x6F, 0x1F, 0x36, 0xBB, - 0x10, 0x53, 0xF0, 0xF1, 0xF2, 0xE2, 0xE4, 0xE6, 0x76, 0xB5, 0xEF, 0x87, 0x1F, 0x7C, 0xEF, 0xC3, - 0xC5, 0xAC, 0xD9, 0xEE, 0xFB, 0xEB, 0x9B, 0x7B, 0xAD, 0x54, 0x4E, 0xA9, 0xA9, 0x9C, 0x73, 0x96, - 0x97, 0x9E, 0x88, 0xB2, 0xAE, 0x2D, 0xA2, 0x40, 0x94, 0x44, 0x32, 0x04, 0x51, 0x26, 0xBE, 0x6E, - 0x39, 0x9E, 0x8E, 0x8F, 0xF7, 0xC5, 0x13, 0x09, 0x4A, 0x53, 0x57, 0xC7, 0xE1, 0xE8, 0x7B, 0xDF, - 0xFD, 0xE6, 0x27, 0x9F, 0xBE, 0x7A, 0x73, 0x75, 0x6D, 0x9D, 0x6D, 0xDB, 0xBA, 0x9D, 0xD5, 0xDA, - 0x68, 0xA5, 0xA4, 0x75, 0x86, 0x3B, 0xDF, 0x23, 0x2E, 0x29, 0xA5, 0x24, 0x41, 0x2C, 0xDA, 0x53, - 0x5A, 0x71, 0x3A, 0x3D, 0x5F, 0xD2, 0xEC, 0xCD, 0x4D, 0x45, 0x10, 0xD1, 0x38, 0x8E, 0x88, 0xC0, - 0x4D, 0x1C, 0x97, 0x92, 0x98, 0x92, 0x20, 0xC1, 0x52, 0x33, 0x22, 0xC1, 0x00, 0xE8, 0x91, 0x61, - 0xAB, 0x25, 0x00, 0x30, 0xC2, 0x23, 0xD2, 0x21, 0x8E, 0x93, 0x48, 0xA4, 0x9C, 0x33, 0x07, 0xD0, - 0x95, 0x52, 0x4A, 0x61, 0x55, 0x01, 0x80, 0xA0, 0x4C, 0xE5, 0xC0, 0xF2, 0x04, 0x40, 0x41, 0x54, - 0x10, 0xA5, 0x40, 0x12, 0xC4, 0x8B, 0xFF, 0xA7, 0xF9, 0x6E, 0x5C, 0xC2, 0xF0, 0x70, 0x1D, 0x1E, - 0xCA, 0x53, 0xF9, 0x5A, 0x8D, 0x2F, 0x87, 0x9A, 0xFB, 0xD5, 0x59, 0xF2, 0x91, 0xBB, 0xC1, 0xB5, - 0xE4, 0xD1, 0xC3, 0xFE, 0xBF, 0x3C, 0x5A, 0x0A, 0x21, 0x84, 0xFC, 0x1F, 0xFE, 0xC7, 0xFF, 0xE9, - 0x58, 0x7A, 0xE0, 0x49, 0x1B, 0x25, 0x9E, 0x80, 0xEE, 0xD3, 0x9F, 0x00, 0x47, 0x66, 0x06, 0xFF, - 0xB7, 0x10, 0x13, 0x7E, 0xCC, 0x9D, 0x09, 0x1C, 0xC2, 0x8B, 0xC4, 0x01, 0x8C, 0x07, 0x00, 0x79, - 0xC8, 0x3B, 0x61, 0xDE, 0xBF, 0x94, 0x92, 0x3D, 0x42, 0xAD, 0xB5, 0x7E, 0x0C, 0xBB, 0x7D, 0x57, - 0x72, 0x46, 0x9C, 0x0E, 0x61, 0x89, 0x28, 0x51, 0x1E, 0x18, 0x44, 0x02, 0x01, 0x39, 0xCC, 0x86, - 0xF5, 0x10, 0x88, 0xA8, 0x8D, 0xD2, 0x1A, 0x3F, 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xFB, 0xBA, 0xF3, - 0xE5, 0xED, 0xCD, 0xEA, 0xDD, 0xCD, 0xFD, 0xBE, 0xEB, 0x17, 0xCB, 0x65, 0xD3, 0x34, 0x6F, 0xAF, - 0x6F, 0xD7, 0xEB, 0x6D, 0x49, 0x79, 0xDE, 0x56, 0x56, 0xCB, 0xC5, 0x62, 0xF6, 0xEC, 0xF2, 0x0C, - 0x51, 0xEE, 0xF6, 0xC3, 0x7A, 0xDB, 0xDF, 0xDE, 0x6D, 0x56, 0x9B, 0x7D, 0x88, 0x49, 0x6B, 0xC9, - 0xBD, 0x6C, 0xD7, 0xF5, 0x31, 0x3E, 0x4A, 0xB2, 0x63, 0xCA, 0x24, 0x80, 0x8A, 0x48, 0x31, 0x87, - 0x18, 0x47, 0x1F, 0x46, 0x1F, 0x73, 0x21, 0xF6, 0x60, 0x92, 0x92, 0x7B, 0x05, 0x99, 0x73, 0x6A, - 0x5A, 0x97, 0x4B, 0xD9, 0xEE, 0x7A, 0x29, 0x71, 0xD6, 0xD4, 0x4D, 0x5D, 0x49, 0x29, 0x07, 0x1F, - 0xD8, 0xF9, 0x83, 0xA8, 0x28, 0x25, 0x63, 0xCC, 0x1C, 0x1F, 0x1D, 0x62, 0x6C, 0x2A, 0x57, 0x59, - 0x03, 0xAC, 0x1F, 0x2A, 0x39, 0x67, 0x02, 0xC4, 0x9C, 0x73, 0xCA, 0x49, 0x6B, 0xA5, 0xD5, 0x94, - 0xAF, 0x93, 0x72, 0x1E, 0x43, 0xAC, 0x9D, 0x65, 0x5B, 0x7D, 0xB6, 0xAB, 0x56, 0x0A, 0x8D, 0xD1, - 0xFC, 0x11, 0x66, 0xA2, 0xB6, 0x76, 0xFC, 0x29, 0x9D, 0xCC, 0x1A, 0x63, 0x54, 0x37, 0x8C, 0xD3, - 0x59, 0x07, 0x22, 0xA6, 0x1C, 0x63, 0x02, 0x80, 0xDA, 0xB9, 0x5C, 0x32, 0x15, 0xE6, 0xE6, 0x09, - 0x22, 0x62, 0x43, 0x15, 0xA5, 0x50, 0x2B, 0xC9, 0x50, 0xB1, 0x35, 0x06, 0x04, 0x39, 0x6B, 0xFA, - 0xBE, 0xCF, 0x39, 0x57, 0xD6, 0xA6, 0x94, 0x38, 0x5A, 0xD6, 0x28, 0x85, 0x52, 0x92, 0x20, 0x25, - 0xA5, 0x96, 0xD2, 0x1A, 0x6D, 0x94, 0x74, 0xD6, 0x96, 0x92, 0x11, 0xE1, 0xF2, 0xE2, 0xEC, 0xEC, - 0x64, 0x7E, 0xB2, 0x9C, 0x9F, 0x9D, 0x2E, 0x97, 0x8B, 0xB6, 0xAD, 0x2A, 0xAB, 0x75, 0x5D, 0x39, - 0x6B, 0x94, 0x44, 0xE4, 0x89, 0x75, 0x4A, 0x6F, 0x41, 0xC1, 0x47, 0x19, 0xDF, 0xDB, 0x29, 0x25, - 0x86, 0xF0, 0x58, 0x75, 0x10, 0x62, 0xF4, 0x63, 0xF0, 0x3E, 0x70, 0xF6, 0x1A, 0x95, 0x29, 0x7A, - 0x90, 0x2F, 0xCE, 0x69, 0x76, 0x28, 0x13, 0xF5, 0x29, 0xA5, 0xEC, 0x7D, 0xD8, 0xEC, 0x3A, 0x1F, - 0xE2, 0x6A, 0xBB, 0xBF, 0x7B, 0x58, 0x6F, 0x76, 0xFB, 0xD1, 0x87, 0x9C, 0x0B, 0xE3, 0xAD, 0x6D, - 0x5B, 0x2F, 0x16, 0xF3, 0x61, 0xF0, 0xEB, 0xED, 0x4E, 0x08, 0xA1, 0x94, 0xEC, 0xC7, 0x91, 0x48, - 0x74, 0x5D, 0x1F, 0x53, 0xCA, 0xB9, 0xAC, 0x36, 0x5B, 0x21, 0x88, 0x4D, 0x38, 0xB8, 0xBB, 0x31, - 0x46, 0x87, 0x18, 0xEB, 0xBA, 0xCA, 0xA5, 0xD4, 0x75, 0x75, 0x77, 0xBF, 0x9A, 0xCF, 0xDB, 0xC5, - 0x62, 0xF6, 0xE9, 0x67, 0xAF, 0x66, 0x6D, 0xF3, 0x67, 0x7F, 0xF2, 0xB7, 0xEA, 0xCA, 0x2A, 0xA5, - 0x38, 0x90, 0x8D, 0x84, 0x40, 0x04, 0x6B, 0xED, 0x76, 0xD7, 0x69, 0x25, 0xAB, 0xCA, 0x4D, 0x10, - 0x89, 0x10, 0x4A, 0x49, 0x14, 0x82, 0x19, 0xFF, 0x5F, 0xBB, 0x83, 0xF8, 0x53, 0x7B, 0xAC, 0x65, - 0x87, 0x81, 0x88, 0x0F, 0xB9, 0x10, 0x53, 0x4A, 0xF9, 0xF9, 0xE5, 0xF9, 0x72, 0x31, 0x3B, 0x3F, - 0x5B, 0xD6, 0x95, 0x63, 0x2F, 0x39, 0xFE, 0x06, 0xEE, 0xA1, 0xA4, 0x94, 0x39, 0xE5, 0xE0, 0x03, - 0xCB, 0xBC, 0x84, 0x20, 0x46, 0x4E, 0xB4, 0xD1, 0x6C, 0xAE, 0x85, 0x80, 0x85, 0x88, 0x4F, 0xA0, - 0x18, 0x63, 0xCE, 0x85, 0xCB, 0x59, 0x88, 0x31, 0xA6, 0x04, 0x20, 0x4A, 0x21, 0x1F, 0xA3, 0x20, - 0x06, 0x6A, 0x48, 0x69, 0xD9, 0x54, 0xD6, 0x68, 0x75, 0xBC, 0xAF, 0x59, 0xD3, 0xC2, 0x15, 0x21, - 0xA5, 0x34, 0xFA, 0x49, 0xDB, 0x3B, 0x19, 0x06, 0xC8, 0x29, 0xD7, 0x95, 0x6D, 0x23, 0x00, 0x20, - 0x67, 0xF6, 0x07, 0xA4, 0x47, 0x68, 0x88, 0xFB, 0x98, 0xC7, 0x60, 0x0D, 0xE2, 0xDF, 0xFC, 0xF0, - 0x85, 0x52, 0x4A, 0x25, 0x51, 0x1F, 0x4D, 0x0A, 0x0E, 0xF0, 0x68, 0x4E, 0x25, 0x4F, 0xD9, 0x69, - 0xD3, 0xCF, 0x1D, 0xA7, 0xC0, 0x63, 0xD1, 0x62, 0xEA, 0xD8, 0x63, 0x03, 0xF6, 0x58, 0xC8, 0xE0, - 0x48, 0xC8, 0x20, 0x22, 0x05, 0x07, 0x44, 0x0A, 0xE0, 0xF1, 0x09, 0xC4, 0x57, 0xDB, 0xB1, 0xE9, - 0xDA, 0x12, 0xC7, 0x42, 0xF5, 0x08, 0x87, 0x01, 0xD0, 0x93, 0x6F, 0x9B, 0x8A, 0xE1, 0xD3, 0xA5, - 0x24, 0x01, 0x4B, 0x97, 0xA4, 0x94, 0x53, 0x21, 0xCB, 0x39, 0x4B, 0x04, 0x41, 0x74, 0xF5, 0xF6, - 0xEE, 0xE1, 0x61, 0x8B, 0x08, 0x4D, 0x6D, 0xCF, 0xCF, 0x16, 0xA7, 0xA7, 0x4B, 0xEB, 0x2C, 0x1C, - 0x5C, 0xAD, 0xB5, 0x06, 0x7D, 0xF8, 0x4D, 0x72, 0x2E, 0x56, 0x83, 0xD2, 0xEA, 0xEA, 0xDD, 0xED, - 0xE7, 0x5F, 0x5C, 0x5D, 0xDD, 0xED, 0x3F, 0x79, 0x75, 0x33, 0xF8, 0x90, 0x49, 0x34, 0x75, 0x3D, - 0x84, 0xB8, 0xD9, 0xED, 0x86, 0x71, 0xAC, 0x9C, 0x5D, 0xAD, 0xD6, 0xBD, 0x96, 0x20, 0xCE, 0x96, - 0x8B, 0xC5, 0xC9, 0x72, 0xD1, 0x0F, 0xBE, 0xEB, 0x86, 0xCF, 0xBF, 0xBC, 0xF9, 0xFC, 0xD5, 0x55, - 0x5D, 0x55, 0x8B, 0xF9, 0x6C, 0xB5, 0x5E, 0xAD, 0xDB, 0x5A, 0x02, 0x48, 0x84, 0x93, 0xD3, 0x05, - 0xBB, 0xF0, 0x16, 0x22, 0xC6, 0x89, 0x15, 0x41, 0x16, 0x25, 0x97, 0xCC, 0x81, 0x5D, 0x63, 0x08, - 0x39, 0xE6, 0x9C, 0x4B, 0x5D, 0x39, 0x00, 0x0C, 0x31, 0xDF, 0xEE, 0xEF, 0x53, 0x4A, 0x61, 0x1F, - 0x73, 0xE2, 0xD4, 0x4E, 0x77, 0x7E, 0xBA, 0x8C, 0x29, 0xAF, 0x37, 0xDB, 0xDA, 0x59, 0xAB, 0x5B, - 0xBE, 0x56, 0x42, 0x88, 0xDE, 0x87, 0xDA, 0xB9, 0x92, 0xF3, 0xAC, 0xA9, 0x25, 0x42, 0x8C, 0x91, - 0x3F, 0xC5, 0x98, 0xB2, 0x44, 0x29, 0x88, 0x4A, 0x2E, 0x7C, 0x38, 0x20, 0xA0, 0x35, 0x96, 0x25, - 0xEA, 0x56, 0x6B, 0x25, 0x55, 0xCE, 0x89, 0x49, 0x06, 0x52, 0xA2, 0x44, 0x74, 0x86, 0xED, 0x61, - 0x33, 0x22, 0x6E, 0x76, 0x1D, 0xE7, 0x2D, 0xC7, 0x94, 0x78, 0x33, 0x3C, 0xFA, 0x60, 0x8C, 0xE1, - 0x6B, 0x8B, 0x4F, 0xDD, 0x89, 0xF7, 0x2F, 0x91, 0x59, 0x9D, 0x65, 0x72, 0x2E, 0x21, 0x04, 0xA8, - 0x2B, 0x27, 0x04, 0x79, 0xEF, 0x2B, 0xEB, 0xAE, 0xEF, 0x1F, 0x10, 0xA1, 0xA9, 0xA7, 0xA4, 0xB5, - 0xFD, 0x30, 0x02, 0x40, 0x53, 0x59, 0xA1, 0x00, 0x11, 0x72, 0xC8, 0xC4, 0x2D, 0x12, 0xD1, 0xAC, - 0x69, 0x51, 0x4A, 0x89, 0xB8, 0x98, 0xCF, 0xBE, 0xF1, 0xE2, 0xD2, 0x55, 0x66, 0x3E, 0xAF, 0x67, - 0x4D, 0x25, 0x51, 0x2A, 0x25, 0x51, 0x42, 0x4E, 0x44, 0x24, 0x8C, 0x31, 0xA5, 0xE4, 0x7E, 0x08, - 0x29, 0x27, 0x29, 0x65, 0x26, 0x12, 0x25, 0xC9, 0x88, 0x52, 0x4A, 0xA5, 0x55, 0xED, 0x5C, 0x3F, - 0xFA, 0xE0, 0x23, 0x37, 0x2C, 0x39, 0x95, 0x14, 0xD3, 0xFD, 0x6A, 0x5B, 0x39, 0xDB, 0xCE, 0x1A, - 0xA3, 0x54, 0x29, 0x45, 0x00, 0x2F, 0xC8, 0x80, 0x8B, 0x17, 0x08, 0xC1, 0x91, 0x05, 0xEC, 0x6D, - 0x97, 0x73, 0xD9, 0xEF, 0xFB, 0xDD, 0xBE, 0x1F, 0x46, 0xEF, 0x9C, 0xE3, 0x51, 0x28, 0xC4, 0x20, - 0x04, 0x2D, 0x97, 0x73, 0x00, 0xD1, 0x2F, 0x5A, 0x57, 0xBB, 0xD7, 0xAF, 0xAF, 0x76, 0xFB, 0x2E, - 0x97, 0xE9, 0x7D, 0xE8, 0xFA, 0x21, 0x9A, 0x04, 0x20, 0x3E, 0xFD, 0xE2, 0x8D, 0x94, 0xB8, 0x98, - 0xB5, 0x31, 0x24, 0xE3, 0x0C, 0x02, 0xCC, 0xDA, 0xE6, 0xED, 0xBB, 0x9B, 0x6F, 0x7F, 0xE7, 0x43, - 0x96, 0x91, 0xED, 0xF6, 0xFB, 0x6F, 0xBE, 0xFF, 0xF2, 0x4F, 0xFF, 0xE8, 0x07, 0xFB, 0xFD, 0xFE, - 0x77, 0xBF, 0xFB, 0xEC, 0x7B, 0xDF, 0xFB, 0xD6, 0xCD, 0xCD, 0xFD, 0x38, 0x8E, 0x31, 0xC4, 0xE5, - 0x72, 0x5E, 0x4A, 0x71, 0xD6, 0x2C, 0x66, 0x0D, 0x77, 0x43, 0x4C, 0xB8, 0x61, 0x20, 0x1D, 0x10, - 0xAC, 0xD5, 0xA5, 0x1C, 0x97, 0x89, 0xC0, 0xDB, 0x92, 0x52, 0x26, 0xA2, 0x35, 0x93, 0xF2, 0x8F, - 0x15, 0x8D, 0x1B, 0x52, 0x63, 0xF4, 0xB7, 0x3F, 0xFC, 0x46, 0x55, 0x59, 0x5E, 0xB5, 0xA5, 0x9C, - 0x01, 0x80, 0x68, 0x62, 0x6F, 0xF1, 0x77, 0xA6, 0x98, 0x42, 0x0C, 0x39, 0x4D, 0x0B, 0x99, 0x71, - 0xF4, 0x8C, 0x6F, 0x96, 0x44, 0x39, 0x65, 0x29, 0x11, 0x15, 0x08, 0x02, 0xAD, 0x15, 0x63, 0x85, - 0x88, 0xE8, 0xBD, 0x17, 0x42, 0xA4, 0x9C, 0x52, 0xCE, 0x54, 0x38, 0x9E, 0x1D, 0x53, 0x21, 0x40, - 0x74, 0x6C, 0x07, 0x8A, 0x70, 0xEC, 0x98, 0x0E, 0x45, 0x93, 0x4A, 0xA1, 0x94, 0x52, 0x4E, 0x45, - 0x94, 0xC2, 0x5D, 0x03, 0x11, 0x01, 0xA2, 0x94, 0x68, 0x94, 0x94, 0x12, 0x33, 0xB3, 0xC8, 0x00, - 0x8B, 0xA4, 0x42, 0x65, 0x1A, 0x09, 0xA7, 0x82, 0x0B, 0x84, 0x53, 0x23, 0xF6, 0xB5, 0x61, 0x0E, - 0x0E, 0xD3, 0x80, 0xE4, 0x7F, 0x43, 0x40, 0xC4, 0x94, 0x4A, 0x29, 0x59, 0xB0, 0xE1, 0x2D, 0x28, - 0x1F, 0xC2, 0xA1, 0xBA, 0x89, 0x23, 0x94, 0xC6, 0xE5, 0xF0, 0x38, 0x68, 0xFE, 0x67, 0x85, 0x8C, - 0xBF, 0xE7, 0x71, 0x6F, 0xAB, 0x10, 0x8E, 0xEB, 0xA3, 0x47, 0x5C, 0xEB, 0x50, 0x93, 0x04, 0x08, - 0xA0, 0x63, 0x0A, 0xDD, 0x93, 0xD5, 0xE1, 0xB1, 0x76, 0x3D, 0x3D, 0x6A, 0x0E, 0x3C, 0xD8, 0xAF, - 0xB4, 0x8F, 0x88, 0x72, 0xB7, 0xEF, 0x73, 0xCA, 0xC6, 0xEA, 0xD9, 0xAC, 0x2E, 0x39, 0xDC, 0xDC, - 0xDC, 0x2B, 0xA5, 0xC7, 0x61, 0xF4, 0x31, 0xF3, 0xC7, 0x9C, 0x8B, 0x58, 0x6D, 0xFA, 0x5C, 0x68, - 0x36, 0xAB, 0xB5, 0xD6, 0xCE, 0x18, 0x6D, 0x4C, 0x29, 0x19, 0xC4, 0x04, 0x2B, 0x56, 0xCE, 0x3E, - 0xAC, 0xB7, 0x9F, 0x7C, 0xFC, 0xE9, 0x2F, 0x7F, 0xF3, 0xFA, 0x66, 0x33, 0xEC, 0xBA, 0x51, 0x49, - 0x79, 0x79, 0xF9, 0x6C, 0xF4, 0x81, 0xA8, 0xD4, 0x75, 0x7D, 0xB2, 0x98, 0xBD, 0x7D, 0x7B, 0x1D, - 0xC6, 0xB1, 0xAD, 0xAA, 0x59, 0xDB, 0x66, 0xC2, 0x87, 0xCD, 0x3E, 0xA4, 0x3C, 0x0C, 0xE3, 0xA7, - 0x9F, 0xBD, 0x7E, 0x7D, 0x75, 0xB3, 0xEF, 0xFA, 0xC5, 0xAC, 0xCD, 0x39, 0xB5, 0x6D, 0xBD, 0xDF, - 0x75, 0x29, 0xC5, 0x3F, 0xFC, 0xC1, 0x77, 0x88, 0xC8, 0x7B, 0xAF, 0xB5, 0x66, 0xB9, 0xB8, 0x56, - 0x2A, 0xC6, 0x44, 0x82, 0x52, 0x4E, 0xC3, 0x18, 0xB6, 0xBB, 0xCE, 0xFB, 0xA8, 0x94, 0x2A, 0xB9, - 0xC4, 0x94, 0x36, 0xDB, 0xDD, 0xDD, 0xDD, 0x6A, 0xD7, 0xF5, 0x29, 0xE5, 0x93, 0xE5, 0xFC, 0x83, - 0xEF, 0xBC, 0xAC, 0x2A, 0x57, 0x57, 0x6E, 0x3E, 0x6F, 0xFA, 0x7E, 0xD8, 0xED, 0x7B, 0x3E, 0x0C, - 0x47, 0x1F, 0x46, 0x1F, 0xBC, 0x0F, 0xDF, 0xFD, 0xF6, 0x37, 0xC7, 0x61, 0x58, 0xAD, 0x36, 0xFB, - 0xAE, 0x0F, 0x31, 0x21, 0x1C, 0x50, 0x21, 0x10, 0x3E, 0x78, 0xE7, 0x2C, 0x9F, 0x0A, 0x13, 0x07, - 0x42, 0x10, 0xEF, 0x19, 0x23, 0x07, 0xF0, 0xC8, 0x69, 0x8B, 0x4A, 0x00, 0x80, 0xC0, 0xFA, 0x3B, - 0x44, 0xE4, 0x66, 0x8D, 0x04, 0xF5, 0xA3, 0x3F, 0xD4, 0x44, 0xE4, 0x19, 0x93, 0x90, 0xDD, 0xEF, - 0xA8, 0xB2, 0x16, 0x00, 0xB4, 0x52, 0x7C, 0x20, 0x83, 0x10, 0x45, 0x10, 0x77, 0x93, 0x39, 0x67, - 0xEF, 0x43, 0x11, 0xA4, 0x50, 0x32, 0x3A, 0x3D, 0x6B, 0xEB, 0x94, 0x92, 0xB3, 0xA6, 0xF7, 0x41, - 0x69, 0xD5, 0x38, 0x6B, 0x8D, 0x61, 0xD0, 0x42, 0x6B, 0xCD, 0xB7, 0x53, 0x53, 0x39, 0x02, 0x31, - 0xFA, 0xF1, 0xEC, 0x64, 0xF9, 0xEC, 0xD9, 0xD9, 0xF9, 0xF9, 0x72, 0xB1, 0x68, 0x8C, 0x54, 0x88, - 0x02, 0x25, 0x32, 0xD5, 0x0E, 0x90, 0x10, 0x10, 0x89, 0xFC, 0x98, 0x00, 0x68, 0xBA, 0x7B, 0x89, - 0x63, 0xD9, 0x89, 0x6F, 0x9B, 0x94, 0xF3, 0x76, 0xBB, 0x0F, 0x29, 0xC9, 0x03, 0x68, 0xED, 0x43, - 0xDC, 0x77, 0x3D, 0x11, 0x19, 0x33, 0xD1, 0x44, 0x00, 0x40, 0x40, 0xCC, 0xB9, 0x10, 0x95, 0x9C, - 0x0B, 0xE7, 0x46, 0xE3, 0x21, 0x3E, 0x34, 0x97, 0x5C, 0xA6, 0x2D, 0x27, 0x29, 0xA5, 0x72, 0x4E, - 0x1C, 0xA1, 0x06, 0x00, 0x9F, 0x7F, 0xF1, 0xE5, 0x62, 0x31, 0xAB, 0x2A, 0x3B, 0x9B, 0x35, 0xE3, - 0x38, 0xBE, 0x7D, 0x77, 0xC3, 0xCC, 0x7E, 0xAD, 0x95, 0x0F, 0x7D, 0x37, 0x8C, 0x4D, 0xDD, 0xB4, - 0x4D, 0xF5, 0xEB, 0xDF, 0x7E, 0xFE, 0x9D, 0x0F, 0xDF, 0x3B, 0x3F, 0x3B, 0x01, 0x00, 0x57, 0x39, - 0xA5, 0x25, 0xCA, 0x67, 0xFB, 0xFD, 0x7E, 0x36, 0x6B, 0xAD, 0x96, 0x7A, 0x31, 0x5B, 0xAF, 0x36, - 0xDF, 0xFE, 0xF6, 0x07, 0x9B, 0xF5, 0xF6, 0xE1, 0x61, 0x7D, 0x7D, 0x7D, 0xBB, 0x5C, 0xCE, 0xF9, - 0x59, 0x52, 0x8C, 0xC6, 0x9A, 0xCD, 0x76, 0x7B, 0x7E, 0x7E, 0x2A, 0x01, 0xB2, 0x10, 0xC0, 0x46, - 0x95, 0x40, 0x39, 0x97, 0x31, 0x44, 0x8E, 0xDD, 0x62, 0x4E, 0xB2, 0x10, 0x13, 0xFB, 0x1F, 0x11, - 0x63, 0x4C, 0x30, 0xE9, 0xBA, 0x94, 0xD6, 0x00, 0x13, 0xBF, 0xA7, 0x20, 0xE2, 0x72, 0x39, 0x03, - 0x01, 0x6C, 0xFA, 0xCA, 0x66, 0xA2, 0x21, 0x44, 0xC6, 0x10, 0xF9, 0x45, 0xA5, 0x94, 0x48, 0x90, - 0xD6, 0x3A, 0xF8, 0x41, 0x4A, 0xCD, 0x5C, 0x93, 0xA9, 0x07, 0x94, 0xC2, 0x4A, 0xA3, 0xF4, 0x94, - 0x65, 0xEB, 0xC7, 0xB0, 0xDD, 0x6E, 0x05, 0x73, 0xB0, 0x4B, 0xCE, 0xA5, 0xE4, 0x54, 0x48, 0x88, - 0xE0, 0x47, 0x29, 0x51, 0x2A, 0x94, 0x28, 0x6B, 0x6B, 0x58, 0x3D, 0x9E, 0x73, 0x66, 0xE9, 0xED, - 0xB1, 0x34, 0xF0, 0xF5, 0x1F, 0x53, 0x3E, 0x12, 0x6E, 0x78, 0x79, 0x80, 0x70, 0x8C, 0x62, 0x93, - 0x0E, 0x39, 0xD9, 0x9A, 0x72, 0x2E, 0xBC, 0x64, 0xCE, 0x47, 0xBA, 0x3C, 0x30, 0xAB, 0xEC, 0x31, - 0xEB, 0xE3, 0x58, 0x22, 0x73, 0x3E, 0x02, 0x50, 0xC4, 0xD2, 0x1E, 0x21, 0x48, 0x4A, 0x00, 0x90, - 0x44, 0x84, 0x48, 0x14, 0x59, 0x69, 0xF7, 0x18, 0xCA, 0x45, 0x93, 0x82, 0xE2, 0xB1, 0xA5, 0x3D, - 0xCA, 0x16, 0x9F, 0xF4, 0x62, 0xE2, 0xE8, 0xA8, 0x31, 0x15, 0x32, 0xF6, 0xA5, 0x79, 0xBA, 0x92, - 0x9D, 0xCA, 0x16, 0x4C, 0x0B, 0x72, 0xF8, 0x2F, 0xD5, 0xAF, 0xAF, 0x61, 0xFC, 0x38, 0xB5, 0x66, - 0xD3, 0xCF, 0x73, 0xE9, 0xE3, 0xB6, 0x72, 0x1C, 0xFD, 0xCD, 0xDD, 0x46, 0x29, 0xA5, 0x7D, 0xBA, - 0x5F, 0xED, 0xAD, 0x56, 0x25, 0xC3, 0x30, 0x0E, 0x39, 0x97, 0x7D, 0x3F, 0xA6, 0x94, 0x51, 0x88, - 0xC1, 0xC7, 0xA6, 0x76, 0xC6, 0x68, 0x01, 0x03, 0x95, 0x0E, 0x88, 0x9E, 0xBF, 0xB8, 0x68, 0x67, - 0xB3, 0x18, 0xA2, 0xD3, 0x2A, 0xC6, 0xF8, 0x37, 0xBF, 0xFC, 0xE4, 0xE3, 0x4F, 0xDE, 0xAC, 0xB6, - 0xE3, 0xF5, 0xC3, 0x46, 0x1B, 0x5B, 0xD5, 0xD5, 0x72, 0x31, 0xCF, 0xB9, 0x84, 0x18, 0x2B, 0xE7, - 0x4E, 0xE6, 0x7A, 0xF5, 0xB0, 0xA6, 0x52, 0x9A, 0xBA, 0x46, 0xC4, 0xA6, 0x69, 0x56, 0x9B, 0xED, - 0xEB, 0x37, 0x5F, 0x4A, 0x94, 0x39, 0x97, 0x9B, 0xBB, 0x15, 0x5B, 0xA7, 0x8F, 0xE3, 0xC8, 0xB6, - 0x70, 0x5F, 0xBC, 0x7E, 0x73, 0xB2, 0x98, 0x1F, 0x48, 0x7F, 0x88, 0x87, 0x76, 0x29, 0xA4, 0x54, - 0x88, 0x72, 0x2A, 0x21, 0xA6, 0x74, 0x90, 0xB9, 0x0C, 0xA3, 0xE7, 0x17, 0xAC, 0xB5, 0x56, 0x5A, - 0x9D, 0x9D, 0x2E, 0x97, 0xB3, 0xF6, 0xD9, 0xB3, 0xF3, 0xDD, 0xBE, 0x7B, 0x78, 0x58, 0xDD, 0xE4, - 0xCC, 0x26, 0xBA, 0x5D, 0x3F, 0xF4, 0xE3, 0x08, 0x02, 0x9C, 0xB3, 0x8C, 0xCA, 0xEF, 0xF7, 0x5D, - 0xB7, 0xDF, 0x4B, 0x29, 0x59, 0xB1, 0xC8, 0xCA, 0x41, 0x25, 0x65, 0x88, 0xF1, 0x58, 0x3A, 0x61, - 0x02, 0x44, 0x33, 0x5B, 0xA7, 0x1F, 0x97, 0xD0, 0x25, 0x53, 0x8C, 0x11, 0x10, 0x73, 0x4C, 0x23, - 0x00, 0x07, 0x61, 0xE4, 0x9C, 0x8D, 0xD6, 0x46, 0x6B, 0x1F, 0x83, 0xB3, 0x06, 0xA5, 0xC4, 0x42, - 0x5A, 0x21, 0x5F, 0x04, 0xA5, 0x14, 0x2D, 0xE5, 0xE0, 0xBD, 0x91, 0x52, 0x08, 0x42, 0x10, 0x5A, - 0x4A, 0x6E, 0xFE, 0x9D, 0x35, 0x4C, 0x02, 0xD0, 0x4A, 0x8D, 0x3E, 0xF8, 0x18, 0x1B, 0xE7, 0x86, - 0xE2, 0xAD, 0xD1, 0x31, 0xA5, 0x61, 0x0C, 0xE0, 0x44, 0x4A, 0x49, 0x21, 0x38, 0x6B, 0x38, 0xE0, - 0x56, 0x49, 0x99, 0x92, 0x2E, 0x54, 0x8C, 0x92, 0x85, 0x28, 0x84, 0x50, 0x39, 0x7B, 0x71, 0x7E, - 0x72, 0x71, 0xB6, 0xA8, 0x2A, 0xA3, 0x18, 0x5A, 0x98, 0x6C, 0xA0, 0x1F, 0x31, 0xA0, 0x9C, 0x13, - 0x4A, 0xE4, 0x05, 0x45, 0x26, 0x86, 0x44, 0x28, 0x13, 0x89, 0x89, 0x7E, 0xCC, 0x0B, 0x3E, 0x8E, - 0xA3, 0xA2, 0x18, 0xD3, 0x30, 0x7A, 0x89, 0x28, 0x15, 0xE6, 0x5C, 0x62, 0x88, 0x39, 0xE5, 0x10, - 0x13, 0x11, 0x6D, 0xB6, 0xBB, 0xAE, 0x1F, 0x53, 0xCA, 0x8B, 0x45, 0x5B, 0x57, 0x4E, 0x49, 0xA9, - 0x94, 0xEC, 0xFB, 0xF1, 0xFE, 0x61, 0x73, 0x73, 0xBB, 0x1A, 0xBD, 0x4F, 0x39, 0xDD, 0xDF, 0x3F, - 0x30, 0x54, 0xA4, 0x94, 0xF2, 0x21, 0xFA, 0x10, 0xB7, 0xBB, 0xFD, 0x7C, 0xD6, 0x02, 0x40, 0x5D, - 0x57, 0x3F, 0xFC, 0xA3, 0x1F, 0xBC, 0x7E, 0xFD, 0xF6, 0xFE, 0xFE, 0xA1, 0xEB, 0x87, 0x42, 0xE4, - 0x43, 0xF4, 0x61, 0x0D, 0x42, 0xC4, 0x10, 0x7F, 0xF5, 0xDB, 0xCF, 0x5E, 0x3C, 0xDB, 0xFD, 0xED, - 0x1F, 0x7E, 0x64, 0xAD, 0x36, 0x46, 0xCF, 0x67, 0xED, 0x30, 0x8E, 0x4A, 0x29, 0xAD, 0xE4, 0x38, - 0xC6, 0x61, 0x1C, 0xC7, 0x7E, 0x38, 0x3D, 0x99, 0x2B, 0x89, 0xDD, 0xBE, 0x73, 0x5A, 0xCD, 0x9A, - 0x5A, 0x49, 0xB9, 0xEF, 0xFA, 0x13, 0xA3, 0x79, 0x6D, 0x3D, 0x6F, 0x6B, 0x09, 0x53, 0x94, 0x19, - 0x0A, 0x21, 0x10, 0x2A, 0x6B, 0x4A, 0x61, 0x17, 0x99, 0x3C, 0xFA, 0x30, 0xA1, 0x7B, 0x82, 0xA4, - 0x54, 0x3C, 0x2A, 0x32, 0xEA, 0x24, 0x11, 0x98, 0xEC, 0x6D, 0x0C, 0xC7, 0x0C, 0x8B, 0x5C, 0x4A, - 0x8A, 0x69, 0xBF, 0xEB, 0x8C, 0xD5, 0x06, 0x55, 0x4A, 0x49, 0x29, 0xC9, 0x5E, 0x66, 0x47, 0x07, - 0xC0, 0x83, 0xC5, 0x6B, 0x1A, 0x06, 0x0F, 0x00, 0xCE, 0x59, 0xCB, 0xEA, 0x54, 0x60, 0x21, 0x70, - 0x8E, 0x21, 0x5F, 0x5D, 0x5D, 0xA7, 0x9C, 0x6B, 0xE7, 0x0A, 0x95, 0x18, 0x53, 0xDF, 0x8F, 0xC7, - 0x4E, 0x50, 0x29, 0x9B, 0x52, 0x46, 0x05, 0x5A, 0xA2, 0xB3, 0x9A, 0x3D, 0x9A, 0x52, 0x2E, 0xCC, - 0x22, 0xA0, 0x3C, 0x35, 0x95, 0x39, 0x67, 0x10, 0x42, 0x4A, 0x40, 0x40, 0x63, 0x94, 0x31, 0x8F, - 0x36, 0xCE, 0x52, 0x4A, 0x00, 0x7C, 0x42, 0xB6, 0x98, 0x96, 0x8C, 0x78, 0x40, 0xAF, 0x78, 0xDF, - 0x40, 0x07, 0x2E, 0x9B, 0xE0, 0xD2, 0x76, 0x58, 0x2F, 0xF0, 0xED, 0xC3, 0xF9, 0x8C, 0xF0, 0x28, - 0x30, 0x10, 0x44, 0xC0, 0x4F, 0x6A, 0xB4, 0xE6, 0x47, 0xCD, 0xB9, 0x14, 0x0E, 0x18, 0x04, 0x36, - 0xAD, 0x98, 0xF0, 0x7A, 0x64, 0x0C, 0xF5, 0x91, 0x59, 0xF6, 0x95, 0x2A, 0xC6, 0x7F, 0x4E, 0x32, - 0xD1, 0xA7, 0xFF, 0xFA, 0xB4, 0xA1, 0x3A, 0xF4, 0x5B, 0x5F, 0xEF, 0xC2, 0xC4, 0x13, 0x12, 0x05, - 0x08, 0xE2, 0xB6, 0xED, 0xE9, 0x28, 0x0A, 0x00, 0xDE, 0x47, 0xA2, 0x78, 0xF5, 0xEE, 0xFE, 0xDD, - 0xCD, 0xC3, 0x62, 0xDE, 0x7A, 0x1F, 0x72, 0xCA, 0x52, 0xE1, 0x37, 0xDE, 0xBB, 0xCC, 0x5E, 0x0C, - 0x3E, 0x22, 0xCA, 0x7E, 0xE8, 0x11, 0xB1, 0x02, 0x8C, 0xA9, 0xEC, 0xF7, 0x03, 0x08, 0xD0, 0x46, - 0x75, 0xFD, 0xF0, 0xD9, 0x67, 0x5F, 0x9E, 0x9E, 0xCE, 0x3F, 0xF8, 0xE0, 0xBD, 0xAB, 0x77, 0x77, - 0xFF, 0xE1, 0xFF, 0xFB, 0xF5, 0xEB, 0xB7, 0xF7, 0x21, 0x96, 0xBB, 0xF5, 0xB6, 0xA9, 0x6B, 0x76, - 0x94, 0x16, 0x02, 0x4A, 0x2E, 0xEB, 0xF5, 0xE6, 0x36, 0xDE, 0x0E, 0xDD, 0x60, 0x8C, 0xF6, 0x21, - 0xE6, 0x94, 0x2E, 0xCE, 0x4F, 0xFF, 0xFA, 0x3F, 0xFD, 0x6C, 0xB3, 0xD9, 0x4A, 0x29, 0x9D, 0xB5, - 0xAC, 0x31, 0xCA, 0xE3, 0x18, 0x43, 0xA9, 0xE7, 0x6D, 0xDB, 0x36, 0x54, 0xCA, 0xF3, 0xCB, 0x8B, - 0xCB, 0xCB, 0xD3, 0x98, 0x92, 0xCE, 0xBA, 0xAE, 0x2B, 0x22, 0x4A, 0x31, 0x17, 0x11, 0x51, 0xC9, - 0x92, 0xC5, 0xE8, 0x7D, 0x4C, 0xB9, 0x94, 0x62, 0xAD, 0x01, 0xC4, 0x7D, 0x37, 0x28, 0xA5, 0x86, - 0x71, 0xDC, 0x6E, 0x36, 0x46, 0x4B, 0x00, 0xE8, 0xFA, 0xFE, 0x77, 0xBF, 0xFB, 0x6C, 0xB5, 0xD9, - 0x71, 0xF4, 0x06, 0x11, 0x71, 0xC3, 0x55, 0xD7, 0x95, 0x10, 0x6C, 0x42, 0x99, 0xA5, 0x94, 0x77, - 0xF7, 0x0F, 0x6D, 0x5D, 0x31, 0xD0, 0x90, 0x12, 0xC5, 0x94, 0x46, 0x1F, 0xD8, 0x7A, 0x8C, 0xAB, - 0x95, 0xB3, 0x16, 0x00, 0xD8, 0x65, 0x21, 0xE5, 0x1C, 0x73, 0x66, 0xEE, 0x98, 0x96, 0x32, 0x17, - 0x92, 0x12, 0x8D, 0xD6, 0x60, 0x35, 0x8F, 0x30, 0x31, 0x26, 0x29, 0x91, 0xA8, 0x8C, 0xDE, 0x17, - 0x22, 0xAD, 0x75, 0x3F, 0x8C, 0x31, 0x46, 0x21, 0x84, 0x35, 0x1A, 0x04, 0x94, 0x92, 0x25, 0xF2, - 0xF9, 0xCC, 0x4B, 0x06, 0x29, 0x04, 0x85, 0x90, 0x99, 0xB5, 0x20, 0xA5, 0x34, 0x46, 0x1B, 0xAD, - 0x52, 0x2E, 0x08, 0x18, 0x52, 0x72, 0x56, 0x6B, 0x85, 0x5D, 0x3F, 0xFA, 0x90, 0x4A, 0x2E, 0x00, - 0xA2, 0xAD, 0xAB, 0x52, 0x4A, 0x4C, 0xD9, 0x68, 0x4D, 0xEC, 0xE5, 0x6F, 0xAC, 0x52, 0x12, 0x84, - 0x28, 0x85, 0xE6, 0xB3, 0x66, 0x39, 0x6F, 0x95, 0x62, 0x7E, 0x00, 0xA0, 0x9C, 0xC8, 0x77, 0xD3, - 0xC0, 0x00, 0x4C, 0xF5, 0x42, 0x63, 0x74, 0x10, 0x02, 0x62, 0x52, 0x20, 0x32, 0x11, 0xA7, 0xFD, - 0x92, 0x28, 0x25, 0x11, 0x11, 0x69, 0xA3, 0x42, 0x08, 0x2C, 0xDD, 0x4D, 0x69, 0xF2, 0x05, 0xD3, - 0x5A, 0xC5, 0x94, 0xBC, 0x0F, 0x5C, 0x16, 0xBB, 0x7E, 0x78, 0x58, 0x6D, 0x87, 0xD1, 0x4B, 0x89, - 0x02, 0x05, 0x8F, 0x93, 0x29, 0x27, 0x22, 0xEA, 0x3B, 0xDF, 0x0F, 0x03, 0x8F, 0x69, 0xB9, 0x64, - 0x0E, 0x91, 0xCE, 0xB9, 0x74, 0x5D, 0x77, 0x1C, 0xC4, 0xAC, 0x35, 0xDE, 0x87, 0x71, 0xF4, 0x17, - 0xE7, 0x27, 0x55, 0x65, 0xA5, 0xC2, 0xEB, 0x9B, 0x7B, 0x63, 0xCC, 0x6A, 0xBD, 0xED, 0xBA, 0x9E, - 0x6A, 0x5B, 0x55, 0xF6, 0xF7, 0x9F, 0xBF, 0x19, 0x7C, 0xF8, 0x6F, 0xFE, 0xC5, 0x5F, 0x54, 0xD6, - 0xAE, 0xD6, 0xDB, 0xD3, 0xE5, 0x22, 0xE5, 0xEC, 0x7D, 0xC8, 0x39, 0x39, 0xA3, 0x4B, 0xC9, 0x80, - 0xC2, 0x58, 0x5D, 0x72, 0xEE, 0xF6, 0xFD, 0xF2, 0x64, 0x51, 0x3B, 0x8B, 0x00, 0xC3, 0x30, 0x2E, - 0x96, 0x0B, 0x2E, 0x31, 0x3C, 0xA1, 0x4D, 0x37, 0x0E, 0x00, 0xF2, 0xAE, 0x57, 0x29, 0x89, 0x58, - 0x59, 0xC3, 0xC6, 0xD0, 0x0C, 0x81, 0xE5, 0x2C, 0xB4, 0x52, 0xA6, 0x72, 0x4A, 0x49, 0x00, 0x61, - 0xB4, 0x14, 0x02, 0x19, 0x14, 0x8A, 0x29, 0x0D, 0xA3, 0x4F, 0x89, 0x2D, 0xAD, 0x8A, 0xA7, 0x38, - 0x9F, 0x35, 0x52, 0xCA, 0x5C, 0x0A, 0xC3, 0xF3, 0x44, 0x14, 0x63, 0x8C, 0x31, 0xD6, 0x4D, 0x1D, - 0x7D, 0x98, 0xCF, 0x5B, 0x76, 0xEC, 0x41, 0xC4, 0xA1, 0x1F, 0x8D, 0x35, 0x39, 0x07, 0xAD, 0xD4, - 0xBB, 0x77, 0x37, 0xBB, 0x5D, 0x67, 0xAD, 0xF5, 0x21, 0xE6, 0x92, 0xBB, 0x6E, 0x30, 0x4A, 0xA7, - 0x94, 0xD8, 0x19, 0x25, 0xC6, 0x4C, 0xA5, 0xA8, 0x89, 0x74, 0xA9, 0x9D, 0x55, 0x1C, 0xE1, 0x8A, - 0x12, 0x0E, 0xDD, 0xED, 0x11, 0xA2, 0x2A, 0x12, 0xA4, 0x31, 0x4A, 0xA9, 0x49, 0x50, 0xC8, 0x9F, - 0xC8, 0xF1, 0x96, 0xA7, 0x23, 0xDB, 0x96, 0x44, 0x4A, 0x85, 0x55, 0x53, 0xC4, 0x5E, 0x52, 0x02, - 0x50, 0x88, 0xC8, 0xA3, 0x25, 0x3D, 0x99, 0xD5, 0x9E, 0x16, 0x16, 0x5E, 0x41, 0x3E, 0x0D, 0xB8, - 0x16, 0x93, 0xFD, 0x3C, 0x00, 0x4C, 0x5C, 0xFD, 0xC3, 0x9A, 0x95, 0xDF, 0x13, 0x3A, 0x36, 0x58, - 0x24, 0x58, 0xF0, 0x4D, 0x07, 0xC4, 0x8C, 0x9E, 0x04, 0x5B, 0x12, 0x11, 0xFC, 0xF4, 0x27, 0x3F, - 0x7F, 0xF2, 0xFF, 0xA6, 0x49, 0x55, 0x1C, 0x46, 0xD6, 0x23, 0xD9, 0x55, 0x4A, 0x2C, 0xB9, 0x30, - 0xFF, 0x5D, 0x10, 0x1D, 0x86, 0x62, 0x51, 0x26, 0xBD, 0xD1, 0x57, 0xBA, 0x36, 0x22, 0xD2, 0x5A, - 0xDE, 0xDC, 0xAC, 0x7F, 0xF7, 0xD9, 0xDB, 0xB6, 0xA9, 0xAC, 0x31, 0xC3, 0xE8, 0x79, 0xC2, 0x12, - 0x44, 0x1F, 0x7D, 0xF7, 0xFD, 0x93, 0xC5, 0xEC, 0xD5, 0x9B, 0x6B, 0x00, 0x48, 0x29, 0x73, 0xE3, - 0x3A, 0x0C, 0x5E, 0x90, 0x60, 0x3B, 0x91, 0xB6, 0xAD, 0x6A, 0xE7, 0xD6, 0xDB, 0x5D, 0x28, 0xE5, - 0x8B, 0x37, 0xB7, 0xB7, 0xF7, 0xBB, 0x31, 0xF8, 0x94, 0x4A, 0x11, 0xC2, 0x39, 0xA7, 0x24, 0x0A, - 0x21, 0x86, 0x31, 0xF8, 0x61, 0xF0, 0xE3, 0x48, 0x42, 0xD4, 0x4D, 0xE3, 0xC7, 0xB1, 0xEB, 0xFB, - 0x10, 0x22, 0x15, 0xF2, 0x21, 0x5A, 0x37, 0x25, 0x62, 0x71, 0x32, 0xD0, 0xDB, 0xB7, 0x37, 0x29, - 0x65, 0x57, 0x59, 0xAD, 0xE4, 0xF3, 0xCB, 0xF3, 0x3F, 0xF8, 0xE8, 0x5B, 0x75, 0x6D, 0xB5, 0xD6, - 0xF3, 0xB6, 0x96, 0x5A, 0x75, 0xDD, 0xC0, 0x71, 0x1B, 0x24, 0xC8, 0x0F, 0x61, 0x08, 0x61, 0x1C, - 0x03, 0xCF, 0xB9, 0x39, 0x97, 0x92, 0x69, 0xB3, 0xDD, 0xFD, 0xFA, 0x37, 0x9F, 0x8C, 0xA3, 0xCF, - 0x24, 0x62, 0xCA, 0x78, 0x50, 0x14, 0xE4, 0x52, 0x62, 0xCA, 0x21, 0xA5, 0x52, 0xC8, 0x6A, 0xDD, - 0xD4, 0x15, 0x89, 0x89, 0x67, 0x9B, 0x4B, 0x19, 0x87, 0xA1, 0xA9, 0x1C, 0x37, 0x7A, 0x56, 0x6B, - 0x36, 0xDE, 0x91, 0x52, 0xB1, 0x71, 0x33, 0x22, 0x56, 0xCE, 0x86, 0xC8, 0x6B, 0xB7, 0xE9, 0xEC, - 0xE2, 0x1E, 0x8D, 0x2B, 0x35, 0x4C, 0x15, 0x42, 0x00, 0x40, 0x2E, 0xC5, 0xFB, 0xD8, 0xD4, 0xEE, - 0xE2, 0x64, 0xB6, 0xD9, 0xED, 0xA5, 0x54, 0xC3, 0xE8, 0x37, 0xFB, 0x9E, 0x3D, 0x70, 0x84, 0x10, - 0x56, 0x29, 0xBE, 0x26, 0xF6, 0xC3, 0x78, 0x3A, 0x9F, 0x91, 0x28, 0xFD, 0x18, 0x80, 0x45, 0xCF, - 0x07, 0x0E, 0xB7, 0x56, 0x32, 0xC4, 0x24, 0xC4, 0xB4, 0xA4, 0x6F, 0x1B, 0x6B, 0xB5, 0xDC, 0xEC, - 0x06, 0x76, 0xC4, 0x6C, 0x6A, 0x77, 0xBE, 0x5C, 0xE4, 0x92, 0x8D, 0x36, 0xCB, 0xE5, 0x3C, 0xE7, - 0xAC, 0x94, 0x6A, 0x9B, 0xAA, 0xEB, 0x06, 0xAD, 0xE5, 0x72, 0x31, 0xAB, 0x2B, 0x7B, 0x71, 0x76, - 0xBA, 0x58, 0x34, 0x4D, 0xED, 0x8C, 0xD5, 0xEC, 0xB2, 0x70, 0x6C, 0xC7, 0xF8, 0xB4, 0xA3, 0x52, - 0x72, 0x2E, 0x3E, 0x44, 0x76, 0xB8, 0x0B, 0x21, 0xC5, 0x9C, 0x40, 0x40, 0xCE, 0x14, 0x53, 0x64, - 0xAE, 0x55, 0xDF, 0x0D, 0xBC, 0x0B, 0x1E, 0x86, 0x61, 0x18, 0x3C, 0xA2, 0x54, 0x5A, 0x8E, 0xA3, - 0x8F, 0x21, 0x19, 0x63, 0x06, 0xEF, 0x3F, 0x7F, 0xF5, 0xA5, 0xD1, 0xBA, 0x6D, 0xEA, 0xB6, 0xAD, - 0xB4, 0xD2, 0xF7, 0xEB, 0x4D, 0xD7, 0x0F, 0xEB, 0xF5, 0x36, 0xA5, 0xDC, 0x54, 0x4E, 0x29, 0x76, - 0x5E, 0x2B, 0x27, 0x27, 0x0B, 0xEF, 0xA3, 0x0F, 0x21, 0x71, 0xD2, 0x44, 0x2E, 0x5A, 0x2B, 0x00, - 0xE1, 0xAC, 0x53, 0x52, 0x56, 0x95, 0x63, 0xC6, 0x1C, 0x51, 0x89, 0x31, 0x11, 0x51, 0xD7, 0x0D, - 0x5D, 0x3F, 0x38, 0xE7, 0xEA, 0xDA, 0x52, 0xA1, 0x94, 0x8B, 0xB5, 0xEA, 0xBF, 0xFB, 0x97, 0xFF, - 0x54, 0x4A, 0x19, 0x42, 0x38, 0x3D, 0x5D, 0x8C, 0x3E, 0x08, 0x12, 0xDB, 0xCD, 0xB6, 0xAE, 0x9C, - 0x98, 0x90, 0xD9, 0x1C, 0x42, 0x54, 0x4A, 0x5A, 0xE7, 0x38, 0x28, 0x0F, 0xA5, 0x34, 0x5A, 0x1B, - 0xA3, 0x9C, 0xB3, 0x28, 0x25, 0x53, 0xC5, 0xB8, 0xC9, 0x52, 0x4F, 0x42, 0x4E, 0x85, 0x10, 0xEC, - 0xC7, 0xC9, 0x07, 0xDD, 0xE4, 0x6E, 0x25, 0x41, 0xE0, 0x14, 0x52, 0x16, 0x42, 0xF4, 0x21, 0xEC, - 0xBB, 0x0E, 0x04, 0x18, 0x63, 0xFB, 0x7D, 0xB7, 0x58, 0xCE, 0x85, 0x10, 0x6D, 0x5D, 0x91, 0x10, - 0x9B, 0xDD, 0x1E, 0x11, 0xB8, 0x6D, 0x5F, 0xAD, 0xD6, 0x31, 0xA4, 0xAA, 0x76, 0x2C, 0x1F, 0x54, - 0x52, 0xCD, 0xE6, 0xED, 0x38, 0x8E, 0x21, 0xC4, 0xA1, 0xF7, 0x55, 0x6D, 0x57, 0xAB, 0xCD, 0xCD, - 0xCD, 0x3D, 0x22, 0xFA, 0x31, 0xA0, 0xC4, 0xDE, 0xFB, 0x8B, 0xF3, 0x53, 0x09, 0xC8, 0xE9, 0x3C, - 0x85, 0x0A, 0x02, 0xB4, 0x6D, 0x75, 0x76, 0xB2, 0x5C, 0xCC, 0x9B, 0xA6, 0xAE, 0xF8, 0x28, 0x15, - 0xC8, 0xE2, 0x81, 0x49, 0xB3, 0x41, 0x44, 0x39, 0x4F, 0x4B, 0x52, 0xDE, 0x2C, 0xE1, 0x31, 0xCC, - 0xA1, 0x3C, 0xAE, 0x62, 0x0F, 0xDF, 0x3C, 0x79, 0x5E, 0x3D, 0xBD, 0xE5, 0xF9, 0xCF, 0x03, 0x43, - 0x8C, 0xE8, 0xAB, 0x46, 0x5B, 0x87, 0xB9, 0x6E, 0x2A, 0x5E, 0xA5, 0x3C, 0x76, 0x5B, 0x44, 0x07, - 0x1C, 0x8C, 0xA0, 0x7C, 0x45, 0xF3, 0x48, 0xAC, 0x2C, 0xE4, 0xD2, 0x99, 0x26, 0x21, 0xC3, 0xD7, - 0xD5, 0x02, 0xE2, 0x38, 0x5A, 0x3A, 0xAB, 0xCA, 0x81, 0x91, 0x56, 0x0E, 0x0F, 0x7A, 0x74, 0x20, - 0x10, 0x42, 0xB0, 0xB7, 0xC1, 0xC7, 0xBF, 0x7B, 0xF5, 0xE5, 0xDB, 0xFB, 0xEF, 0x7C, 0xF8, 0xB2, - 0xA9, 0xDD, 0x72, 0x5E, 0xB3, 0x2B, 0xF1, 0xB1, 0x28, 0x96, 0x03, 0x45, 0xED, 0xF0, 0x4B, 0x53, - 0x08, 0xE9, 0xF5, 0xD5, 0xDD, 0x6A, 0xB3, 0xEB, 0x47, 0xAF, 0x94, 0x54, 0x88, 0x4C, 0x29, 0xD8, - 0xEE, 0xBA, 0x5F, 0x7D, 0xFC, 0xF9, 0xC9, 0xA2, 0xB9, 0xBC, 0x38, 0xAB, 0x6B, 0x37, 0x9B, 0x35, - 0xDB, 0x5D, 0xF7, 0xEE, 0xFA, 0x7E, 0xBB, 0xEF, 0x97, 0xF3, 0x96, 0x04, 0xA6, 0x22, 0x7A, 0x9F, - 0x6E, 0xEE, 0x6F, 0x5F, 0xBF, 0xBB, 0xBF, 0x7B, 0x58, 0x87, 0x98, 0x16, 0xF3, 0x59, 0xE5, 0xDC, - 0xE8, 0x03, 0x80, 0x44, 0x01, 0x37, 0x77, 0xF7, 0x77, 0x77, 0x0F, 0x28, 0xA0, 0xA9, 0x6A, 0x96, - 0xA9, 0x5E, 0xDF, 0x7C, 0x11, 0x63, 0x7C, 0xFF, 0x1B, 0x2F, 0x25, 0xCA, 0x52, 0xCA, 0x87, 0x1F, - 0xBE, 0xDF, 0xB6, 0x6D, 0x4E, 0xD1, 0x8F, 0xE3, 0x6A, 0xB5, 0xEE, 0xFA, 0x41, 0x08, 0xE1, 0x63, - 0xD4, 0x56, 0x7F, 0xE3, 0xE2, 0xB2, 0x72, 0x36, 0xA7, 0x94, 0x92, 0xB4, 0xD6, 0xCC, 0xE7, 0xCD, - 0x30, 0x04, 0x63, 0x0C, 0x6B, 0x6E, 0x86, 0x31, 0xAC, 0x77, 0xFB, 0x98, 0x98, 0xB1, 0x25, 0xCB, - 0x81, 0x25, 0x1C, 0x63, 0x52, 0x4A, 0x65, 0xF2, 0x63, 0x88, 0x29, 0x67, 0xCB, 0x24, 0x34, 0x29, - 0x79, 0x14, 0x2D, 0x24, 0x98, 0x63, 0xCD, 0xD5, 0x27, 0x95, 0x8C, 0x02, 0x72, 0x4A, 0x4D, 0xED, - 0x66, 0x4D, 0xBD, 0xEB, 0x06, 0x9A, 0x70, 0x5C, 0xA1, 0x95, 0xEE, 0xFA, 0x21, 0xA6, 0x78, 0x7E, - 0x7A, 0xC2, 0x05, 0x28, 0x17, 0x9E, 0x7A, 0xE1, 0x70, 0xCE, 0x89, 0xC3, 0x5A, 0x87, 0xB8, 0xAE, - 0x65, 0x21, 0xB4, 0x92, 0xBC, 0x06, 0xDE, 0x75, 0xBD, 0x20, 0x06, 0x7A, 0x33, 0x5F, 0x67, 0x42, - 0x08, 0xA3, 0x35, 0xBB, 0x7A, 0xB0, 0x86, 0xC5, 0x28, 0xD5, 0x8F, 0xA3, 0xD5, 0x9A, 0x05, 0xEA, - 0x88, 0xC0, 0x26, 0x30, 0x4A, 0xC9, 0x10, 0xB9, 0x92, 0x4A, 0x44, 0x90, 0x12, 0xF8, 0x7A, 0x02, - 0x14, 0x95, 0xB3, 0xF3, 0x83, 0x32, 0xC6, 0x5A, 0x53, 0x57, 0xEE, 0xF9, 0xE5, 0xA9, 0x44, 0x59, - 0x4A, 0x66, 0x12, 0x69, 0xDF, 0x8F, 0xD6, 0xE8, 0xB3, 0xD3, 0x45, 0x3B, 0xAB, 0x2A, 0x67, 0x8D, - 0xD1, 0xDC, 0xFA, 0x3D, 0xBD, 0xCA, 0xA7, 0xB2, 0x8B, 0x12, 0x04, 0x80, 0x83, 0x18, 0x91, 0xB5, - 0x7B, 0x29, 0x67, 0xE2, 0x89, 0x42, 0x50, 0x8A, 0x99, 0x6B, 0x8A, 0x10, 0x22, 0xE5, 0x2C, 0x00, - 0x94, 0x91, 0x25, 0x89, 0x14, 0x79, 0xF5, 0x26, 0xAE, 0xEF, 0x56, 0xF7, 0x0F, 0x0F, 0xFD, 0x30, - 0xA8, 0xD9, 0x4C, 0x1B, 0x15, 0x53, 0x7E, 0x7B, 0x7D, 0xBF, 0xDB, 0xEF, 0x43, 0x48, 0x29, 0xA5, - 0x98, 0xF3, 0xBE, 0xEB, 0x9E, 0x9F, 0x9F, 0xD5, 0xCE, 0x9D, 0x9C, 0x2E, 0xD6, 0x9B, 0xDD, 0xFD, - 0x6A, 0x95, 0x73, 0xD1, 0x4A, 0x02, 0xC8, 0x22, 0xC4, 0xAE, 0x1F, 0x40, 0x88, 0xD1, 0x47, 0x04, - 0x28, 0x0F, 0x0F, 0x5A, 0x6B, 0x25, 0xA5, 0xD6, 0xAA, 0xAE, 0xAB, 0xB3, 0x93, 0x13, 0x10, 0x42, - 0x4A, 0xEC, 0x86, 0xF1, 0xED, 0xF5, 0xAE, 0xAA, 0xDC, 0xE9, 0xC9, 0xF2, 0xF6, 0x6E, 0xF5, 0xBF, - 0xFC, 0x6F, 0xFF, 0xF6, 0xBF, 0xFD, 0x97, 0x7F, 0x61, 0xB4, 0xDA, 0xED, 0xFB, 0xAE, 0xEB, 0x96, - 0xF3, 0xF9, 0x7C, 0xD6, 0x0E, 0xC3, 0x40, 0x44, 0x5A, 0xEB, 0xAA, 0x72, 0xD6, 0xD9, 0x71, 0x18, - 0xF9, 0x36, 0x15, 0x44, 0x25, 0xC6, 0x82, 0x28, 0x48, 0x96, 0xCC, 0x58, 0xB5, 0x14, 0x42, 0x00, - 0x51, 0x8C, 0x89, 0xE4, 0xA4, 0x0F, 0x2B, 0xA5, 0x94, 0xCC, 0xE2, 0x65, 0x22, 0x41, 0x53, 0x11, - 0x10, 0x44, 0x04, 0xA2, 0x08, 0x22, 0x12, 0x2C, 0x6B, 0xCD, 0x45, 0x49, 0xC5, 0x79, 0x74, 0x6D, - 0xED, 0x2A, 0x6B, 0x89, 0x28, 0x95, 0x3C, 0x86, 0xC0, 0x39, 0x7E, 0xA5, 0x14, 0xCE, 0x15, 0x6F, - 0x67, 0x4D, 0xE5, 0x6C, 0xDF, 0x0D, 0xC6, 0x68, 0xEB, 0xCC, 0x76, 0xBB, 0x2D, 0x85, 0x62, 0x48, - 0xDE, 0xFB, 0xED, 0x76, 0xF7, 0xF6, 0xDD, 0xAD, 0x00, 0x11, 0x63, 0x26, 0x12, 0x3E, 0x84, 0x98, - 0xD3, 0xCB, 0xE7, 0xCF, 0x5E, 0xBF, 0x79, 0xCB, 0xAD, 0xB4, 0x0F, 0xA1, 0xA9, 0xDD, 0xC9, 0x62, - 0x7E, 0xB2, 0x9C, 0x31, 0xF7, 0x98, 0x1D, 0xAB, 0x44, 0x81, 0x23, 0x80, 0xCE, 0x97, 0x1C, 0x33, - 0x0A, 0x79, 0x60, 0x9D, 0xDA, 0xB3, 0xA3, 0x58, 0xEA, 0xB1, 0x11, 0x2B, 0xBC, 0x16, 0x78, 0x5A, - 0x4D, 0x8E, 0x05, 0x05, 0x11, 0x15, 0xF2, 0x26, 0x91, 0x8D, 0xBA, 0xBE, 0x2A, 0xAB, 0x14, 0x05, - 0x0E, 0x6D, 0x19, 0x3D, 0x79, 0x00, 0x16, 0x24, 0x30, 0x8C, 0x58, 0xBE, 0x4A, 0x8B, 0x65, 0xA2, - 0x82, 0x10, 0x8F, 0x19, 0xAC, 0x5C, 0x60, 0x8E, 0xF5, 0xEB, 0x49, 0x35, 0x14, 0x4A, 0x49, 0x29, - 0x70, 0xEA, 0xDF, 0x0A, 0x89, 0x42, 0x7C, 0x92, 0x70, 0x97, 0x25, 0xB4, 0x52, 0x6F, 0xAE, 0x6E, - 0x4B, 0xA1, 0x4F, 0x3F, 0xBF, 0xBE, 0x7B, 0xD8, 0xAC, 0xB7, 0xDD, 0xF7, 0xBE, 0xF5, 0x32, 0xA4, - 0xE4, 0x8C, 0x9A, 0xB5, 0xB5, 0x56, 0x92, 0x61, 0x0E, 0xE7, 0xCC, 0x71, 0x0F, 0x4A, 0x44, 0x52, - 0x62, 0xD7, 0x8F, 0xEB, 0x5D, 0xBF, 0x58, 0xCC, 0x2A, 0x67, 0x2F, 0xCE, 0x16, 0xA7, 0x27, 0x73, - 0x40, 0xB4, 0xD6, 0xEC, 0x76, 0xDD, 0xEF, 0x3F, 0xFB, 0xB2, 0x1F, 0xC6, 0xBA, 0xA9, 0xAC, 0x33, - 0x85, 0x4A, 0x55, 0xBB, 0x97, 0x2F, 0x2E, 0xBE, 0xE5, 0x4C, 0x53, 0x3B, 0x6B, 0xCD, 0x6F, 0x3E, - 0x79, 0xFD, 0x93, 0x5F, 0x7C, 0xB2, 0xDB, 0xF5, 0x9C, 0xAE, 0x38, 0x6F, 0xDB, 0x92, 0xF3, 0x6E, - 0xDF, 0x57, 0x95, 0x93, 0x5A, 0x6F, 0xD6, 0x9B, 0xCD, 0xC3, 0x26, 0xF9, 0xC8, 0x73, 0x59, 0xCE, - 0xE9, 0xEE, 0x61, 0xD5, 0xED, 0xF6, 0xF3, 0xB6, 0xD9, 0x6D, 0xF7, 0xDA, 0x18, 0x00, 0xD8, 0x6E, - 0x77, 0xAB, 0xD5, 0x7A, 0x75, 0xB8, 0x94, 0x67, 0x6D, 0x0B, 0x00, 0x95, 0xB3, 0x2F, 0x5E, 0x5C, - 0x9C, 0xB4, 0xEE, 0x1B, 0x1F, 0xBC, 0xFF, 0xC9, 0x6F, 0x7E, 0x45, 0xA5, 0xFC, 0xE3, 0x7F, 0xFA, - 0x4F, 0x86, 0xC1, 0x0B, 0x00, 0xA9, 0x64, 0x4A, 0x29, 0xC6, 0xFC, 0xB0, 0xDA, 0x6C, 0x77, 0x9D, - 0x73, 0x8E, 0xBD, 0xC8, 0x38, 0xC1, 0x60, 0xB3, 0xDE, 0xDD, 0x3D, 0xAC, 0x56, 0xDB, 0xFD, 0xE8, - 0x43, 0x21, 0x91, 0x72, 0x76, 0xC6, 0x20, 0x80, 0xF7, 0x61, 0xF0, 0x81, 0x49, 0x28, 0x29, 0xC5, - 0xDA, 0xD9, 0x94, 0x59, 0xF5, 0x9D, 0x8D, 0x92, 0xA3, 0x0F, 0xCE, 0x36, 0x6C, 0x83, 0x63, 0xB4, - 0x7A, 0xF1, 0xFC, 0xA2, 0xAE, 0xAA, 0x77, 0x37, 0x77, 0x3F, 0xF8, 0xE8, 0xC3, 0x67, 0x17, 0x67, - 0x44, 0x24, 0xA5, 0x0A, 0x21, 0xA6, 0x92, 0xBF, 0x78, 0xF5, 0xE5, 0xCD, 0xDD, 0xC3, 0x30, 0xF8, - 0x03, 0x17, 0x89, 0xD8, 0x5E, 0x5C, 0x6B, 0xE5, 0x43, 0x36, 0x4A, 0x93, 0x10, 0x29, 0xA5, 0x18, - 0x23, 0x4A, 0xDC, 0x0D, 0x5E, 0xCB, 0x1C, 0x53, 0x9C, 0x35, 0x95, 0x92, 0xE8, 0x43, 0x1C, 0x7D, - 0xA8, 0xAC, 0x66, 0x96, 0x90, 0xD6, 0x2A, 0x95, 0x52, 0x59, 0x23, 0x51, 0x76, 0xFD, 0x20, 0xB8, - 0xB2, 0x00, 0x18, 0x2D, 0xA5, 0xC4, 0x61, 0xCC, 0x56, 0x6B, 0x44, 0xC8, 0x53, 0x64, 0x74, 0x40, - 0xAB, 0x2A, 0x6B, 0x06, 0x9F, 0x4A, 0x21, 0x66, 0x96, 0xE7, 0x52, 0x4E, 0x16, 0xF3, 0x59, 0x53, - 0x1B, 0xA3, 0x25, 0x42, 0x4C, 0xA9, 0x72, 0x26, 0xC6, 0x34, 0x9B, 0x35, 0xEC, 0xEC, 0x62, 0x8D, - 0xE6, 0xB9, 0x63, 0x42, 0x55, 0x1E, 0xF9, 0x04, 0xD3, 0xD5, 0x0A, 0x00, 0x50, 0xA6, 0xBD, 0x9B, - 0x36, 0x8A, 0x23, 0x9D, 0xA4, 0x04, 0x4C, 0x98, 0x4B, 0xE2, 0x84, 0x4A, 0x3A, 0xAC, 0xB7, 0x10, - 0x10, 0x14, 0x11, 0x89, 0x10, 0xF3, 0x6A, 0xB3, 0x59, 0x6F, 0xF6, 0x44, 0xC4, 0xA8, 0xE2, 0x6E, - 0xDF, 0xA5, 0x98, 0x86, 0x61, 0xA8, 0x9C, 0x65, 0x4D, 0xD4, 0x69, 0xDB, 0xEC, 0xF6, 0xDD, 0xC9, - 0xC9, 0xFC, 0x87, 0x7F, 0xF8, 0xFD, 0x61, 0x18, 0xFB, 0x7E, 0xB0, 0xD6, 0x18, 0xAD, 0xB7, 0xFB, - 0x2E, 0xA7, 0x88, 0x92, 0x13, 0xAD, 0xF2, 0x18, 0x82, 0xD3, 0x7A, 0xD6, 0x54, 0xCE, 0xB9, 0xAE, - 0x1F, 0x42, 0xCE, 0x0F, 0x9B, 0xED, 0xAB, 0x2F, 0xDF, 0x21, 0xC0, 0x1F, 0xFF, 0xD1, 0xF7, 0x2F, - 0x2F, 0xCF, 0xFE, 0xDD, 0x5F, 0xFE, 0x68, 0xB3, 0xDD, 0x8D, 0x63, 0xB0, 0xCE, 0xDC, 0xDC, 0x3D, - 0xFC, 0xE5, 0x5F, 0xFD, 0xCD, 0x3F, 0xFD, 0x47, 0x7F, 0x2A, 0x88, 0x4E, 0x96, 0x8B, 0xFB, 0x87, - 0xD5, 0xCB, 0xE7, 0x97, 0x23, 0x0B, 0x33, 0x72, 0xC9, 0xA5, 0xD4, 0xB5, 0x93, 0x12, 0x05, 0x09, - 0xA9, 0xB0, 0xEF, 0x26, 0xC1, 0x06, 0x6F, 0x25, 0xE4, 0xC4, 0x14, 0x11, 0x46, 0x2B, 0xDE, 0x03, - 0x3E, 0xC1, 0x64, 0x48, 0x10, 0x1B, 0xAB, 0x10, 0x6F, 0x75, 0x41, 0x4C, 0xB4, 0x55, 0x85, 0x00, - 0x00, 0xD2, 0xEA, 0xCA, 0x6A, 0xE6, 0x55, 0x12, 0x51, 0x8A, 0x25, 0xA4, 0xC4, 0xEC, 0x04, 0x89, - 0xC8, 0x86, 0x9A, 0x39, 0xE5, 0x94, 0xD2, 0xF9, 0xF9, 0x89, 0xB1, 0xBA, 0xE4, 0x62, 0x34, 0xF3, - 0xB4, 0x19, 0x54, 0xC9, 0xEC, 0xFC, 0xF3, 0xEB, 0x8F, 0x3F, 0x8D, 0x31, 0xA6, 0xC2, 0xA2, 0x72, - 0x31, 0x8C, 0xBE, 0xAE, 0xDD, 0xEB, 0x2F, 0xDF, 0xEE, 0xBB, 0xBE, 0xAE, 0x5D, 0x65, 0xED, 0xD9, - 0xC9, 0xA2, 0xA9, 0x9D, 0x35, 0xFA, 0xE8, 0x40, 0x73, 0xDC, 0xF4, 0x89, 0x47, 0x83, 0xB3, 0xC7, - 0x71, 0xEA, 0x38, 0x90, 0x1D, 0xFB, 0xA6, 0xA7, 0x44, 0xFC, 0xC3, 0xD7, 0x53, 0xF0, 0x89, 0x51, - 0xB1, 0xE9, 0x13, 0xE7, 0x4C, 0x6D, 0x22, 0x2A, 0x70, 0xE0, 0x77, 0x1D, 0x1E, 0x8A, 0x41, 0x2D, - 0x38, 0x08, 0x11, 0x88, 0x0E, 0x4A, 0x6E, 0x6E, 0xA2, 0x00, 0x8E, 0x3A, 0xAA, 0xA7, 0x4F, 0x44, - 0x47, 0x1A, 0x0A, 0x62, 0x39, 0xC4, 0x33, 0x72, 0x7F, 0x87, 0xF8, 0x94, 0x68, 0x91, 0x79, 0x76, - 0x9E, 0x6C, 0x1B, 0xA5, 0x10, 0x85, 0x30, 0xE5, 0x2C, 0xE5, 0x54, 0xA1, 0x57, 0xEB, 0xDD, 0x2F, - 0x7F, 0xFB, 0x4A, 0xA1, 0x64, 0xFD, 0xE0, 0xE0, 0xE3, 0xD5, 0xF5, 0xCA, 0x18, 0xA3, 0x4F, 0x66, - 0x77, 0x0F, 0x3B, 0x63, 0x14, 0xDB, 0x2B, 0x02, 0x4A, 0x22, 0xDE, 0x31, 0x01, 0x09, 0xB2, 0x46, - 0x6D, 0xB6, 0x7D, 0x3F, 0x78, 0x6B, 0x8D, 0x44, 0xBC, 0xBF, 0x5F, 0x3B, 0x6B, 0xAC, 0x35, 0x7E, - 0x1C, 0xAB, 0xCA, 0xFD, 0xE9, 0x1F, 0x7F, 0x34, 0xFA, 0x50, 0xA8, 0xEC, 0x76, 0xBD, 0x10, 0xA2, - 0x6D, 0xEA, 0x17, 0xCF, 0xCF, 0x53, 0x4E, 0xEF, 0x6E, 0x1E, 0x3E, 0x7B, 0x75, 0xFD, 0xEB, 0x4F, - 0x5E, 0xAD, 0x37, 0x5D, 0xF0, 0xFE, 0xE5, 0xB3, 0x0B, 0x3E, 0x97, 0x88, 0xA8, 0xAE, 0x5C, 0x88, - 0xE9, 0xE1, 0x7E, 0xCD, 0xE7, 0x7C, 0x5D, 0x39, 0xA5, 0x54, 0x5D, 0xDB, 0xFB, 0x2F, 0xEF, 0xFD, - 0x38, 0x5E, 0x9C, 0x9F, 0x56, 0x95, 0xAB, 0xAB, 0xAA, 0xA9, 0x2B, 0x1F, 0xC2, 0x30, 0x0C, 0xBB, - 0xED, 0xAE, 0x6D, 0xEA, 0x6F, 0xBE, 0xFF, 0x72, 0xD6, 0x36, 0xCB, 0xE5, 0x4C, 0x08, 0x31, 0x9F, - 0x55, 0x6D, 0xD3, 0x7C, 0xF1, 0xC5, 0x17, 0xBF, 0xFD, 0xF9, 0x4F, 0xAA, 0xB6, 0xFE, 0xF1, 0x8F, - 0x7E, 0xF2, 0x0F, 0xFF, 0xFC, 0x2F, 0xB6, 0x63, 0x8F, 0x88, 0xDE, 0x07, 0x1F, 0xE2, 0xFD, 0xC3, - 0xA6, 0xEB, 0xC7, 0xD9, 0xAC, 0xA9, 0x9B, 0xBA, 0xEF, 0x06, 0x36, 0x08, 0xCC, 0x39, 0xDF, 0xAF, - 0x36, 0xD7, 0xB7, 0x0F, 0x25, 0x97, 0x61, 0x0C, 0x8B, 0x79, 0x6B, 0x75, 0xE3, 0x43, 0x00, 0x9C, - 0xDA, 0x28, 0x44, 0x92, 0x08, 0xB5, 0xAB, 0x49, 0x88, 0x98, 0x92, 0x96, 0x32, 0xA5, 0x68, 0x94, - 0x14, 0x40, 0x21, 0x44, 0x67, 0x74, 0xD3, 0x34, 0x82, 0xE8, 0xF9, 0xC5, 0xA9, 0x20, 0x11, 0x17, - 0xB3, 0x45, 0x5B, 0xBF, 0x7B, 0x77, 0xF3, 0xEA, 0xF5, 0xD5, 0xD9, 0xD9, 0xA9, 0x73, 0x56, 0x2A, - 0x35, 0x9B, 0xB5, 0x75, 0x5D, 0x33, 0xE0, 0xC5, 0x44, 0x9E, 0x61, 0x1C, 0x53, 0x9E, 0x3E, 0x18, - 0x51, 0x88, 0xDD, 0x7E, 0x78, 0xA9, 0x6A, 0x8C, 0x61, 0xBB, 0x47, 0xA3, 0xD5, 0xBE, 0xEB, 0x11, - 0xD1, 0x68, 0x1D, 0x62, 0xAA, 0x9C, 0x61, 0x04, 0x23, 0xA5, 0x3C, 0x8A, 0x64, 0xB5, 0xD0, 0x46, - 0x39, 0x63, 0xA4, 0x52, 0x31, 0xA5, 0x83, 0xE3, 0x2B, 0x0A, 0x41, 0x2C, 0x7F, 0x01, 0x00, 0x2A, - 0x59, 0x49, 0x95, 0xA9, 0x78, 0x1F, 0xF8, 0xB0, 0x3D, 0x88, 0xC6, 0x4B, 0x08, 0xC1, 0x39, 0xD3, - 0xB4, 0x35, 0x51, 0x19, 0x87, 0x00, 0x08, 0xCB, 0xC5, 0xAC, 0x76, 0x56, 0x1B, 0xC5, 0xA1, 0x33, - 0xC7, 0x7B, 0xE0, 0x38, 0x05, 0x3C, 0xAE, 0x99, 0x88, 0xB2, 0x98, 0xF2, 0x3D, 0x01, 0x84, 0x0E, - 0x29, 0xE7, 0xCC, 0x69, 0x0B, 0xC6, 0x18, 0x22, 0xD1, 0x75, 0x43, 0x3E, 0x24, 0x01, 0x4A, 0x29, - 0x73, 0x4E, 0x82, 0x28, 0xC5, 0x94, 0x0B, 0x21, 0x42, 0xCE, 0x64, 0xAD, 0x45, 0x80, 0xD5, 0x6A, - 0x53, 0xD7, 0x55, 0xD3, 0xD4, 0xC3, 0x30, 0xCE, 0xDA, 0x06, 0x25, 0x32, 0x34, 0xFE, 0xB0, 0xDA, - 0xFE, 0xF8, 0x27, 0xBF, 0x5C, 0x2E, 0x67, 0xB3, 0xB6, 0x8E, 0x29, 0x85, 0x98, 0xA4, 0x52, 0x5D, - 0xBF, 0x13, 0x00, 0x54, 0x0A, 0x9B, 0xD2, 0x54, 0xCE, 0x59, 0x63, 0x88, 0x28, 0xA6, 0xD4, 0x0D, - 0xA3, 0x9A, 0xD0, 0x52, 0xFC, 0xC9, 0xCF, 0x3F, 0x3E, 0x59, 0xCC, 0x25, 0xB2, 0xED, 0x4F, 0xE1, - 0x69, 0xF4, 0xE7, 0xBF, 0xFE, 0xE4, 0xF2, 0xE2, 0xE4, 0x9F, 0xFD, 0xE3, 0x3F, 0x0B, 0x21, 0x29, - 0x94, 0xEB, 0xD5, 0xE6, 0xE4, 0x64, 0xB1, 0xDF, 0xF7, 0x88, 0xC0, 0x9B, 0xA0, 0xA6, 0xA9, 0x69, - 0xE2, 0x82, 0x61, 0xDF, 0x0D, 0x4A, 0xA1, 0xB3, 0x1A, 0x51, 0x72, 0xE7, 0x72, 0x9C, 0x92, 0x8E, - 0x37, 0x37, 0x22, 0xB2, 0xDF, 0x30, 0x63, 0x20, 0x93, 0x1F, 0x11, 0xC0, 0xF1, 0x1D, 0x2B, 0x85, - 0x24, 0x62, 0x37, 0x8C, 0x39, 0x97, 0xB6, 0xA9, 0xEF, 0x1E, 0xD6, 0x8B, 0x59, 0x2B, 0x25, 0x90, - 0x28, 0x29, 0x17, 0x5E, 0x4D, 0x28, 0x89, 0xCA, 0x18, 0x51, 0x48, 0x22, 0xC6, 0x90, 0xBA, 0x7D, - 0x97, 0x4A, 0x71, 0xCE, 0x71, 0x50, 0x2E, 0x08, 0xA1, 0xA5, 0xFC, 0xF4, 0xB3, 0x37, 0x21, 0x04, - 0x6B, 0x4D, 0xEA, 0x7D, 0xCE, 0x87, 0x48, 0x53, 0x94, 0x9B, 0xCD, 0x4E, 0x00, 0x94, 0x22, 0x94, - 0x9C, 0x46, 0x7E, 0x6E, 0x9C, 0x8F, 0xCE, 0x62, 0xC7, 0xE3, 0xE7, 0x29, 0x86, 0x75, 0x6C, 0xBE, - 0x9E, 0xCE, 0x6B, 0x5F, 0xED, 0x8F, 0x8E, 0x2F, 0x90, 0x4B, 0x8C, 0x20, 0x22, 0x1E, 0x35, 0x27, - 0xF0, 0x8B, 0x48, 0x4C, 0xF3, 0xF5, 0x41, 0x9E, 0xC7, 0x3F, 0xF5, 0x24, 0x34, 0xE4, 0x29, 0xAA, - 0x75, 0x68, 0xD9, 0x88, 0xBE, 0x82, 0xC1, 0x3D, 0x3E, 0xDD, 0xD3, 0x21, 0x0F, 0x88, 0x00, 0xF0, - 0x68, 0xA8, 0xC1, 0xA8, 0x97, 0x04, 0x28, 0x24, 0x38, 0xE8, 0xE3, 0xD1, 0x56, 0x88, 0x4B, 0xA1, - 0x96, 0xAC, 0xBC, 0x81, 0x10, 0xD2, 0xC3, 0x6A, 0xF7, 0xE6, 0xEA, 0x5E, 0x4B, 0x35, 0x9F, 0x35, - 0xB8, 0xEF, 0x4F, 0x4F, 0x66, 0x21, 0x24, 0xA2, 0x72, 0xF7, 0xB0, 0x4D, 0xB9, 0x48, 0x04, 0xE7, - 0xCC, 0xBC, 0xAD, 0x7D, 0x88, 0x0F, 0xEB, 0xBD, 0x56, 0x32, 0x6E, 0x7A, 0x67, 0xB5, 0x31, 0x2A, - 0x67, 0x0A, 0xB1, 0xD4, 0x95, 0x5B, 0xAD, 0x77, 0xE3, 0xE0, 0x15, 0xE2, 0x66, 0xF7, 0x39, 0x9F, - 0x5D, 0xEF, 0xBF, 0x77, 0x79, 0x72, 0x32, 0xD7, 0x46, 0xD7, 0xC6, 0x35, 0x75, 0x35, 0x8E, 0xA1, - 0xAA, 0xEC, 0x6A, 0xBD, 0xFD, 0xE5, 0x6F, 0x3F, 0xFF, 0xCD, 0xA7, 0x5F, 0x0E, 0x63, 0xD8, 0xEE, - 0xFA, 0x10, 0x62, 0xCA, 0xE9, 0xED, 0xCD, 0x3D, 0x9B, 0x99, 0xCC, 0x66, 0xCD, 0xD9, 0xE9, 0x62, - 0xFB, 0xF6, 0x96, 0x88, 0x04, 0x08, 0x6B, 0xB5, 0x52, 0xF2, 0x3B, 0xDF, 0xFA, 0x46, 0xF0, 0x51, - 0xC2, 0x94, 0x7E, 0x14, 0x62, 0x5C, 0xCC, 0xEA, 0xF7, 0x5E, 0x5C, 0x74, 0xDD, 0x90, 0x4B, 0x39, - 0x5D, 0x7E, 0x7F, 0x31, 0x6F, 0x49, 0x90, 0xD6, 0xCA, 0x59, 0x5B, 0xA8, 0x04, 0x1F, 0x6F, 0x6F, - 0x57, 0x9B, 0xDB, 0xEB, 0x5F, 0xFF, 0xF4, 0x47, 0x19, 0xB0, 0x0B, 0xF9, 0xED, 0xD5, 0x5B, 0xD7, - 0x34, 0x39, 0xE6, 0x7E, 0x1C, 0xBB, 0x7E, 0x64, 0xFF, 0x75, 0xA9, 0xA4, 0xF7, 0x9E, 0x1F, 0xB0, - 0xEB, 0x06, 0x22, 0x41, 0x02, 0x18, 0xF1, 0x31, 0x5A, 0x3A, 0xAB, 0x73, 0xCC, 0x07, 0x8C, 0x9B, - 0xA9, 0xD2, 0x85, 0x08, 0x74, 0xA1, 0x92, 0xA3, 0x20, 0x62, 0xB4, 0xDE, 0x1A, 0x59, 0xDB, 0x39, - 0x3B, 0x0E, 0xEF, 0xBB, 0xCE, 0x19, 0xF3, 0xCB, 0x5F, 0xFD, 0x2E, 0xA6, 0x5C, 0x39, 0xFB, 0xFA, - 0xCB, 0xB7, 0x00, 0xE0, 0xAC, 0xDB, 0xEF, 0xBB, 0xDD, 0x6E, 0xE7, 0x63, 0xAA, 0x2A, 0x27, 0x95, - 0x1A, 0xC7, 0x91, 0x0A, 0x59, 0x67, 0xEB, 0xDA, 0x5A, 0xA3, 0x52, 0x8A, 0x4A, 0x4A, 0x33, 0xAA, - 0x18, 0x53, 0x8A, 0x19, 0x62, 0x04, 0x67, 0x95, 0x94, 0x42, 0x50, 0x4C, 0x89, 0xD9, 0xAD, 0x12, - 0x91, 0x33, 0x07, 0x72, 0xCE, 0x39, 0x17, 0x63, 0x14, 0x9F, 0x7A, 0x87, 0x6F, 0x90, 0xB3, 0xB6, - 0x7E, 0xEF, 0xC5, 0xE5, 0xFD, 0x6A, 0x73, 0x73, 0xF7, 0x40, 0x44, 0xAC, 0xD3, 0x67, 0xFE, 0x0E, - 0x00, 0x68, 0xDE, 0xC1, 0x0D, 0xDE, 0x18, 0x33, 0x6B, 0x2A, 0x1E, 0x12, 0x99, 0x8F, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x67, 0xCD, 0xAC, 0xAD, 0x9C, 0xB3, 0x6D, 0x5B, 0x3B, 0x67, - 0xEB, 0xCA, 0x09, 0x12, 0x46, 0x6B, 0xA5, 0x34, 0x0A, 0x51, 0x3B, 0x6B, 0x8C, 0x36, 0x66, 0x92, - 0x67, 0xB1, 0x65, 0x2E, 0x4B, 0xFE, 0x85, 0x60, 0xA4, 0xE8, 0x78, 0x3F, 0x08, 0xA2, 0x22, 0x0E, - 0xA8, 0xD9, 0xE4, 0x93, 0x2D, 0x0A, 0x22, 0xB2, 0x5B, 0xE4, 0xD0, 0x7B, 0x29, 0xA7, 0x35, 0x99, - 0x52, 0xAA, 0x14, 0x24, 0x28, 0x4D, 0xEB, 0xB4, 0xD1, 0xBB, 0x7D, 0xBF, 0xDE, 0xEE, 0xBB, 0xBE, - 0x0F, 0x21, 0x34, 0x55, 0x85, 0x80, 0xE3, 0xE8, 0xEB, 0xBA, 0x66, 0x7F, 0xCA, 0xDD, 0xBE, 0x4B, - 0x29, 0x87, 0x1C, 0x77, 0xFB, 0xFE, 0xE6, 0xF6, 0x9E, 0x84, 0x90, 0x88, 0xBB, 0x7E, 0x28, 0x42, - 0x34, 0x75, 0x55, 0xA6, 0xF6, 0x10, 0xAC, 0xD1, 0x39, 0xA5, 0x87, 0xA1, 0x17, 0x02, 0xA4, 0x92, - 0xB3, 0xB6, 0x96, 0x02, 0x73, 0x2E, 0x4C, 0x56, 0xBA, 0x5F, 0xAD, 0x9D, 0xB5, 0x0A, 0x55, 0x4C, - 0x51, 0x02, 0xB0, 0x7F, 0xF7, 0x5F, 0xFE, 0xD5, 0xDF, 0x7C, 0xE3, 0xF9, 0xE5, 0x77, 0xBF, 0xF5, - 0x5E, 0xD3, 0x54, 0x44, 0xB4, 0xDF, 0xF7, 0x80, 0xC2, 0x58, 0xA5, 0xB5, 0x3D, 0xBA, 0x1B, 0x08, - 0x21, 0xDA, 0xB6, 0xE1, 0xD5, 0x10, 0xDB, 0x2B, 0x1E, 0x41, 0x6B, 0xFE, 0xBF, 0x4F, 0x5D, 0x6E, - 0x60, 0x62, 0xC9, 0x13, 0x15, 0x21, 0xCA, 0x94, 0x29, 0xA7, 0x8D, 0x9A, 0xDA, 0x1C, 0xC2, 0x2C, - 0xE8, 0xFE, 0x61, 0x2D, 0x04, 0xE4, 0x5C, 0x6E, 0x6F, 0xEF, 0xE7, 0xB3, 0x1A, 0x40, 0x65, 0x22, - 0x44, 0xE1, 0x8C, 0x01, 0x01, 0x21, 0x46, 0x29, 0x51, 0x00, 0x6C, 0x76, 0x7B, 0x26, 0x36, 0x9F, - 0x2E, 0x17, 0x4A, 0x29, 0x7E, 0x02, 0x25, 0xE5, 0xCD, 0xDD, 0xC3, 0x9B, 0x37, 0x57, 0x31, 0x17, - 0x56, 0x2C, 0x8D, 0xA3, 0x1F, 0x83, 0x3F, 0x3F, 0x3D, 0xC9, 0x25, 0x87, 0x98, 0x10, 0xA1, 0x94, - 0x34, 0x8E, 0x5E, 0x29, 0xD5, 0x54, 0x6E, 0x36, 0xAB, 0x59, 0x0C, 0x87, 0x07, 0x1C, 0x9D, 0xE8, - 0x91, 0x75, 0x70, 0xC4, 0xA1, 0x0E, 0xE6, 0xA6, 0x47, 0xC2, 0xC4, 0x57, 0xBE, 0xB8, 0xBC, 0x1C, - 0x3B, 0x26, 0x3A, 0x18, 0x69, 0xB0, 0xA1, 0x10, 0xC5, 0x22, 0x40, 0x1C, 0x58, 0x17, 0xE2, 0xE8, - 0x28, 0x4D, 0x44, 0xEC, 0x1A, 0x78, 0xA4, 0xFD, 0xE7, 0x72, 0x5C, 0x68, 0x1E, 0x9F, 0x62, 0x2A, - 0x42, 0xF4, 0xE4, 0xEB, 0x88, 0x57, 0x88, 0xAF, 0x7E, 0x13, 0xE2, 0x93, 0xA1, 0x52, 0x08, 0x71, - 0x30, 0x24, 0x54, 0xC7, 0xC2, 0x0C, 0x20, 0x94, 0x52, 0xC3, 0x18, 0xD7, 0x9B, 0xFD, 0xBE, 0x1B, - 0x47, 0x1F, 0xAF, 0xEF, 0xD6, 0xCB, 0x79, 0x7B, 0x7E, 0xBA, 0xE8, 0xFA, 0x71, 0xD6, 0x36, 0x0F, - 0xEB, 0xAD, 0x0F, 0xE1, 0x64, 0x31, 0x3B, 0x5D, 0xCE, 0x99, 0xBB, 0xA4, 0x95, 0xBE, 0x5F, 0xED, - 0x78, 0x94, 0xD5, 0x4A, 0x96, 0x52, 0xA8, 0xD0, 0x6E, 0xDF, 0x6B, 0xA5, 0xCE, 0xCF, 0x16, 0x12, - 0xE5, 0xDB, 0xEB, 0x7B, 0x29, 0x91, 0x31, 0x66, 0x21, 0xE8, 0xF9, 0xB3, 0xF3, 0x31, 0xA4, 0x42, - 0xA4, 0xA4, 0xDC, 0x6C, 0xF6, 0xF3, 0x79, 0x53, 0x57, 0xEE, 0xD3, 0xCF, 0xBF, 0xFC, 0xEB, 0xBF, - 0xF9, 0xCD, 0xCD, 0xFD, 0x26, 0xA5, 0xE4, 0x43, 0xCC, 0x99, 0xFA, 0xBE, 0x97, 0x52, 0x92, 0xC5, - 0xBA, 0xB1, 0x4A, 0xC9, 0xBE, 0xEF, 0xC7, 0x61, 0x4C, 0x29, 0xF9, 0x10, 0x2E, 0xCE, 0x4F, 0xDB, - 0x97, 0x97, 0x8B, 0x59, 0xA3, 0x50, 0xEA, 0x53, 0x7D, 0x72, 0xB2, 0xD8, 0xEE, 0xF6, 0x0F, 0x0F, - 0x9B, 0x8B, 0xD3, 0xC5, 0x87, 0xEF, 0xBF, 0x18, 0xBC, 0x3F, 0x5D, 0xCE, 0x10, 0x31, 0xA6, 0x54, - 0xA8, 0xB0, 0xE5, 0x5E, 0x4C, 0x69, 0xB5, 0xDA, 0xEE, 0x7A, 0xFF, 0xC9, 0x2F, 0x7E, 0xFC, 0x6F, - 0xFF, 0xCD, 0xFF, 0xDE, 0x85, 0x78, 0x7A, 0x76, 0xB1, 0x98, 0x2F, 0x7E, 0xFB, 0xAB, 0x9F, 0x7F, - 0xF8, 0xFD, 0x1F, 0xA6, 0x9C, 0xFB, 0x7E, 0x2C, 0xA5, 0x9C, 0x9E, 0x2C, 0xEA, 0xCA, 0xED, 0xBA, - 0xDE, 0x8F, 0x51, 0x08, 0x31, 0x8E, 0x61, 0xBD, 0xD9, 0x4B, 0x29, 0x7D, 0x8C, 0x21, 0x44, 0x29, - 0x65, 0x6B, 0x26, 0x97, 0x28, 0x14, 0x10, 0x43, 0x64, 0xB2, 0x18, 0xAF, 0x75, 0x4A, 0xC9, 0x3C, - 0x0B, 0xD4, 0x95, 0x9D, 0x37, 0x93, 0xF3, 0x79, 0xCA, 0x79, 0x18, 0xBD, 0x35, 0x06, 0x40, 0xF8, - 0x98, 0xDA, 0xA6, 0x8E, 0x29, 0x4A, 0xA5, 0x98, 0xC1, 0x1F, 0x53, 0x42, 0x04, 0x14, 0x62, 0x1C, - 0x47, 0x01, 0xC0, 0x04, 0xA9, 0xD2, 0xE5, 0xA1, 0x13, 0x88, 0x00, 0x02, 0x12, 0x26, 0x41, 0x84, - 0x12, 0x34, 0x48, 0x29, 0x31, 0x28, 0x99, 0x52, 0x42, 0x04, 0x25, 0x71, 0xD1, 0x36, 0x31, 0x45, - 0x12, 0xDC, 0x99, 0xCA, 0x10, 0xA6, 0x6E, 0xC5, 0x59, 0x33, 0x0C, 0x41, 0x22, 0xD6, 0x75, 0x35, - 0x0C, 0xBE, 0xAE, 0x2B, 0x29, 0x65, 0x53, 0x57, 0xEF, 0x3D, 0xBB, 0xDC, 0xED, 0xF6, 0xFD, 0x38, - 0x0A, 0x00, 0x56, 0x20, 0x02, 0x08, 0x89, 0x32, 0x0B, 0x31, 0x9B, 0x35, 0x39, 0x95, 0x93, 0xC5, - 0x6C, 0x39, 0x6F, 0xAB, 0xCA, 0x9E, 0x9F, 0x2C, 0x66, 0x6D, 0xDD, 0x36, 0x55, 0xE5, 0x0C, 0x07, - 0x3B, 0x18, 0x29, 0x9D, 0x35, 0xDA, 0x48, 0x6D, 0x14, 0x00, 0x1E, 0xC8, 0xB6, 0xC4, 0x3B, 0xB8, - 0xA3, 0x19, 0xF1, 0xA3, 0x9E, 0xFF, 0x00, 0x31, 0x1C, 0x44, 0xB5, 0x42, 0x22, 0x88, 0x0C, 0x12, - 0x84, 0x40, 0x90, 0x52, 0x56, 0xB5, 0xED, 0x87, 0x91, 0x2F, 0x3E, 0x22, 0x2A, 0x25, 0x73, 0x37, - 0x57, 0xD7, 0x96, 0xF7, 0x65, 0x42, 0x88, 0x87, 0xD5, 0x4A, 0x20, 0x8C, 0xDE, 0xF3, 0x65, 0xBA, - 0xD9, 0xED, 0x77, 0xFB, 0xCE, 0x8F, 0xDE, 0x58, 0x63, 0x95, 0x06, 0x21, 0x4A, 0x29, 0x31, 0xC5, - 0x3E, 0x97, 0x54, 0x0A, 0x02, 0x1A, 0xA5, 0xCF, 0x2F, 0xCF, 0x89, 0x88, 0x4D, 0xA8, 0x42, 0x48, - 0xA9, 0x94, 0x90, 0xB2, 0x02, 0xAC, 0xAA, 0x4A, 0x10, 0x6D, 0xF7, 0x7B, 0x26, 0xC1, 0x00, 0x22, - 0x47, 0x16, 0x4C, 0x8B, 0x3F, 0xA3, 0xB4, 0x92, 0xA2, 0xD0, 0x5F, 0xFF, 0xF8, 0xE7, 0x97, 0x67, - 0x8B, 0xE5, 0xC9, 0x02, 0x40, 0x0C, 0xC3, 0x00, 0x00, 0xCC, 0x9F, 0xE0, 0xF1, 0xF9, 0x48, 0xA9, - 0x53, 0x4A, 0x95, 0xC3, 0xD7, 0xD7, 0xEE, 0x73, 0xC4, 0xAF, 0x88, 0xDE, 0x11, 0x91, 0xF7, 0x9B, - 0xFB, 0x7E, 0x9F, 0x4B, 0x69, 0xAA, 0x6A, 0x18, 0x7D, 0x5D, 0x5B, 0xA5, 0x14, 0x47, 0x10, 0x3A, - 0xA6, 0x04, 0x96, 0xFC, 0xDE, 0xCB, 0x67, 0xDC, 0x3F, 0xE6, 0x4C, 0x9C, 0x59, 0x51, 0x57, 0xAE, - 0xAA, 0x0C, 0xDF, 0x95, 0xCE, 0x59, 0xA3, 0xF5, 0xF4, 0xC6, 0xC2, 0xA4, 0x7C, 0x40, 0x29, 0xB7, - 0xBB, 0xDD, 0x6A, 0xB3, 0x8B, 0x29, 0xFB, 0x10, 0x01, 0x71, 0xDE, 0x36, 0xE7, 0x66, 0x31, 0x78, - 0xDF, 0x34, 0x35, 0x22, 0x0E, 0xC3, 0x58, 0x3B, 0xAB, 0x94, 0x6C, 0x9B, 0x4A, 0x2B, 0x95, 0x33, - 0xA5, 0x18, 0x89, 0xAB, 0xED, 0x57, 0xB0, 0xEC, 0xC7, 0x76, 0x2C, 0x67, 0xAE, 0x2F, 0xC4, 0xED, - 0xE7, 0xC1, 0xB0, 0x48, 0x1C, 0x7A, 0x28, 0xE0, 0x8F, 0xFB, 0xF8, 0x7A, 0xF9, 0x4D, 0x48, 0x93, - 0xE3, 0x92, 0x98, 0x22, 0x07, 0x91, 0x84, 0x10, 0x39, 0x65, 0x6E, 0xC9, 0x88, 0x9D, 0x85, 0x04, - 0x1D, 0x1D, 0x19, 0xC5, 0x34, 0x63, 0x4C, 0xDB, 0x2D, 0xFE, 0x7A, 0xC2, 0xFB, 0x9A, 0x06, 0xDE, - 0xE3, 0xA1, 0x28, 0x60, 0x72, 0x9A, 0xA0, 0x03, 0xD3, 0x1E, 0x01, 0x8E, 0xCC, 0x8B, 0x89, 0x3E, - 0x0B, 0x04, 0x00, 0xEA, 0xF8, 0x8F, 0x4A, 0xE1, 0xEB, 0xAB, 0xBB, 0x57, 0x5F, 0xDE, 0x31, 0xAF, - 0xCF, 0x87, 0x88, 0x08, 0x9B, 0x5D, 0x87, 0x80, 0x9B, 0x7D, 0x0F, 0x00, 0xCF, 0x2F, 0x4F, 0x37, - 0xDB, 0xFD, 0x6E, 0xDF, 0x03, 0x88, 0x93, 0xE5, 0x6C, 0x31, 0x6B, 0x0A, 0x91, 0x52, 0xD2, 0xFB, - 0x38, 0x6B, 0xDD, 0x30, 0x7A, 0x21, 0x08, 0x20, 0x22, 0x62, 0x21, 0x0A, 0x21, 0x55, 0xCE, 0x2C, - 0x16, 0xED, 0x76, 0xD7, 0x35, 0x4D, 0xB5, 0x98, 0x35, 0x46, 0x2B, 0x1F, 0xD3, 0xF3, 0x67, 0x67, - 0xDE, 0x87, 0xBE, 0x5B, 0x2F, 0xE6, 0xCD, 0xCD, 0xDD, 0xEA, 0xFF, 0xFA, 0xF7, 0x3F, 0xBE, 0xBA, - 0x5E, 0x4B, 0xA5, 0xDE, 0xBD, 0xBD, 0x16, 0x00, 0x75, 0x55, 0x39, 0xEB, 0xE6, 0x8B, 0x39, 0x08, - 0x10, 0x85, 0xF6, 0x5D, 0x67, 0xAD, 0xF6, 0xDE, 0x5B, 0x63, 0x4A, 0x29, 0x00, 0x78, 0x32, 0x6B, - 0x3F, 0xF8, 0xC6, 0xB3, 0x90, 0xD2, 0x97, 0x6F, 0x6F, 0x53, 0xCA, 0x37, 0x77, 0x0F, 0xFB, 0x7D, - 0x47, 0x44, 0x0C, 0xAE, 0x9F, 0x9C, 0xCC, 0x39, 0x74, 0x92, 0x84, 0xE0, 0xB4, 0x60, 0x00, 0x08, - 0x31, 0x6D, 0xF7, 0xFD, 0xFF, 0xFD, 0x6F, 0xFE, 0x8F, 0x5F, 0xFE, 0xEC, 0x47, 0x84, 0x80, 0x28, - 0xB7, 0xEB, 0x95, 0x73, 0x6E, 0xBB, 0xBA, 0x4D, 0xFD, 0xBE, 0x2B, 0x18, 0x62, 0x7C, 0xEF, 0xF9, - 0xC5, 0x72, 0xD1, 0x8E, 0x63, 0x70, 0xCE, 0x02, 0xE0, 0x7E, 0xD7, 0xA5, 0x9C, 0xAB, 0xDA, 0xE5, - 0x5C, 0xF6, 0xEB, 0x35, 0xE7, 0x92, 0x71, 0x57, 0x2B, 0xD5, 0xA4, 0xFC, 0x54, 0x49, 0x2A, 0x25, - 0x79, 0x56, 0xAF, 0x9C, 0x15, 0x20, 0x54, 0x65, 0x67, 0x4D, 0xCD, 0x06, 0xF9, 0x21, 0xC6, 0x31, - 0x84, 0x59, 0x5D, 0x23, 0x40, 0x48, 0x79, 0x8C, 0x49, 0xF4, 0x63, 0x4C, 0x21, 0xE7, 0x22, 0x51, - 0x69, 0x25, 0x53, 0x4E, 0x2C, 0x78, 0x00, 0xC0, 0x71, 0x0C, 0x56, 0x2B, 0xAB, 0x4D, 0x29, 0xC5, - 0xC7, 0x28, 0x09, 0x59, 0x98, 0x12, 0x73, 0x3A, 0x1E, 0x95, 0x8C, 0x77, 0x3A, 0x6B, 0x38, 0xF3, - 0x7D, 0x31, 0x6B, 0x47, 0x1F, 0xFA, 0x61, 0x9C, 0xCD, 0x1A, 0x29, 0x65, 0x4A, 0xB9, 0xB1, 0x36, - 0xA6, 0x28, 0x84, 0xA8, 0xEB, 0x0A, 0x40, 0x38, 0xA7, 0x11, 0x71, 0xBB, 0xEB, 0x95, 0xC2, 0xE5, - 0x72, 0x86, 0x12, 0xE5, 0x5E, 0x86, 0xC9, 0xC1, 0xB1, 0x68, 0xAD, 0xAD, 0x56, 0xF3, 0x59, 0xF3, - 0xFC, 0xD9, 0xF9, 0xED, 0xDD, 0x43, 0x53, 0x57, 0xCF, 0x2F, 0x4F, 0x4F, 0x96, 0x73, 0x04, 0xB4, - 0x4E, 0xD7, 0x95, 0xD5, 0x5A, 0xB3, 0xF2, 0x0E, 0x40, 0x68, 0x23, 0xB5, 0xD6, 0x48, 0x90, 0x0E, - 0x96, 0xD9, 0xF8, 0x04, 0xC1, 0x3E, 0xDE, 0x0B, 0x42, 0x3C, 0x7A, 0x45, 0x1D, 0xBC, 0x37, 0x05, - 0x6B, 0x40, 0x29, 0x3D, 0xD2, 0xB3, 0xB9, 0x54, 0x95, 0x83, 0x19, 0x3F, 0x4D, 0xAB, 0x12, 0x16, - 0x0E, 0xE0, 0xE9, 0x72, 0x1E, 0x53, 0xDE, 0x77, 0x5D, 0x08, 0x91, 0x84, 0x98, 0xB7, 0xB3, 0x98, - 0xD2, 0xE0, 0xC3, 0x18, 0x02, 0x95, 0x12, 0x7D, 0x80, 0x22, 0x62, 0x8A, 0xC0, 0x94, 0x73, 0x12, - 0x46, 0x4A, 0x2A, 0xA5, 0x6D, 0x6B, 0x21, 0x70, 0xB3, 0xDB, 0xB2, 0x8B, 0x4B, 0x21, 0x92, 0x88, - 0x46, 0x52, 0x0A, 0x71, 0x1B, 0x93, 0x36, 0x0A, 0x51, 0xB6, 0xAD, 0x96, 0x28, 0xC7, 0x71, 0x04, - 0x00, 0x25, 0x41, 0x6A, 0x23, 0x6B, 0xDC, 0x6D, 0xBB, 0x93, 0xE5, 0x7C, 0x7E, 0x7E, 0xBA, 0xDD, - 0x75, 0xFF, 0xF1, 0x47, 0x3F, 0xFB, 0x67, 0x7F, 0xF1, 0x77, 0xB5, 0x56, 0xCE, 0x39, 0xBE, 0x4B, - 0x63, 0x4C, 0x13, 0x2D, 0xF9, 0xF1, 0xB0, 0x9F, 0xFC, 0xD6, 0x8F, 0x4D, 0xC1, 0x53, 0xB6, 0x54, - 0x79, 0x14, 0x66, 0x1F, 0x5A, 0x09, 0x10, 0xAB, 0xF5, 0xF6, 0xF4, 0x74, 0x59, 0xA8, 0x80, 0x10, - 0xDE, 0xC7, 0x18, 0xB2, 0xD2, 0x52, 0x2B, 0xA5, 0x95, 0xAC, 0x2B, 0x57, 0x57, 0x2E, 0x97, 0x42, - 0xA5, 0xA4, 0x5C, 0x36, 0x9B, 0x9D, 0x20, 0xD1, 0xF5, 0x43, 0x55, 0x39, 0x44, 0x2C, 0x85, 0x9C, - 0x35, 0xA5, 0x08, 0xDE, 0x2A, 0x1E, 0x66, 0xC3, 0x92, 0x4B, 0xB9, 0xBB, 0xBD, 0x7F, 0xFB, 0xF6, - 0x96, 0x39, 0xB7, 0xB5, 0xB3, 0x24, 0xC4, 0x62, 0xD1, 0xEE, 0x76, 0x5D, 0x53, 0x57, 0xFF, 0xF5, - 0x3F, 0xF9, 0xFB, 0x0F, 0x0F, 0x9B, 0xBF, 0xFA, 0xEB, 0x9F, 0x1A, 0xA5, 0xA4, 0x92, 0xE3, 0x18, - 0xF6, 0xBA, 0x17, 0x00, 0x52, 0xB6, 0xDC, 0x6A, 0xB0, 0x1B, 0xCA, 0xB1, 0xCD, 0x3C, 0x36, 0x40, - 0xC7, 0x1E, 0x8B, 0x3B, 0x6E, 0x46, 0x00, 0x8F, 0xAF, 0xFA, 0x89, 0x06, 0xA0, 0x3C, 0xE9, 0xE3, - 0x26, 0x3C, 0x97, 0x2B, 0x22, 0x03, 0x41, 0x29, 0x25, 0xD6, 0x9C, 0x20, 0x62, 0x7E, 0x7C, 0xC0, - 0xA3, 0x8A, 0x40, 0x30, 0x09, 0xAC, 0x10, 0x81, 0x28, 0x04, 0x64, 0xB4, 0x3A, 0xBE, 0x63, 0x93, - 0xAB, 0x0F, 0x9B, 0xB9, 0x02, 0xDB, 0xD2, 0x89, 0x63, 0x51, 0x05, 0x10, 0x88, 0xA2, 0x1C, 0x94, - 0xE1, 0x5F, 0xC5, 0xED, 0x88, 0xB3, 0x61, 0x40, 0x29, 0xB9, 0xDD, 0xF5, 0xBF, 0xFA, 0xED, 0x6B, - 0xE7, 0x2C, 0x1B, 0x1C, 0xB3, 0xB6, 0xD9, 0x59, 0xB3, 0xEB, 0xFA, 0x59, 0x53, 0x9D, 0x9E, 0x2C, - 0xD6, 0x9B, 0x9D, 0xD1, 0xE6, 0x5D, 0xF7, 0xF0, 0xB0, 0xDE, 0x6D, 0x77, 0xC3, 0xB3, 0x8B, 0xE5, - 0xC5, 0xD9, 0x72, 0xD6, 0x36, 0xC6, 0xC4, 0x7E, 0x18, 0x10, 0x90, 0x7B, 0x01, 0x8E, 0x0B, 0x02, - 0x21, 0x50, 0xAB, 0xA6, 0x76, 0x21, 0x44, 0x1F, 0x53, 0x3F, 0xF8, 0x5C, 0xCA, 0xE8, 0xC3, 0x9B, - 0xAB, 0x70, 0x71, 0xB6, 0x20, 0x41, 0x3F, 0xFA, 0xE9, 0x6F, 0xFE, 0xDD, 0x7F, 0xFC, 0xE9, 0x6A, - 0xBD, 0xBD, 0xBC, 0x38, 0xEB, 0xBA, 0xA1, 0xAE, 0x6A, 0x94, 0xDC, 0x35, 0x92, 0x02, 0xF9, 0x70, - 0x77, 0xEF, 0xBD, 0x77, 0xCE, 0x4A, 0x39, 0xBF, 0x5F, 0x6D, 0x24, 0xC2, 0x7C, 0xD6, 0x1A, 0xAD, - 0x4E, 0x4E, 0x5A, 0x21, 0xC4, 0xAB, 0x2F, 0xAF, 0xC7, 0xD1, 0xEF, 0xBB, 0x81, 0xD3, 0xA1, 0x01, - 0xE0, 0xEA, 0xFA, 0x16, 0x11, 0x58, 0x1E, 0x3C, 0x6B, 0x1A, 0x86, 0x00, 0xBB, 0x7E, 0x1C, 0x7D, - 0x18, 0x7D, 0xFA, 0xF5, 0xAF, 0x7E, 0xF1, 0x37, 0x3F, 0xF9, 0xEB, 0x67, 0xCF, 0x5F, 0xE6, 0x18, - 0x52, 0x8A, 0x31, 0x85, 0xD3, 0xD3, 0x8B, 0x9C, 0x13, 0xC4, 0xEE, 0xBD, 0x6F, 0x7C, 0x47, 0x22, - 0xCD, 0x9A, 0x26, 0xE5, 0x1C, 0x73, 0x12, 0x24, 0x94, 0x92, 0x4A, 0xAB, 0x8B, 0xF3, 0xD3, 0x71, - 0xF4, 0x5F, 0xBC, 0xFA, 0x32, 0xE7, 0x89, 0x86, 0x93, 0x79, 0x89, 0x59, 0x48, 0x48, 0x64, 0xAB, - 0xE8, 0xD3, 0xF9, 0x2C, 0xC4, 0x88, 0x88, 0x0A, 0x71, 0xDE, 0xD4, 0x12, 0x85, 0x95, 0x32, 0x1C, - 0x3A, 0x14, 0x6B, 0x4C, 0x2E, 0x25, 0x11, 0xF5, 0x3E, 0xA4, 0x94, 0xD0, 0xD9, 0x94, 0x0B, 0x95, - 0x22, 0x25, 0x29, 0x25, 0x01, 0x05, 0x5F, 0x67, 0xA9, 0xC4, 0x7E, 0xF0, 0xD9, 0x6A, 0x09, 0x50, - 0x40, 0x74, 0x83, 0x57, 0x12, 0xA5, 0xC4, 0x18, 0x12, 0xF3, 0xE6, 0x01, 0x90, 0xC3, 0xC3, 0xF9, - 0xB6, 0xE1, 0x55, 0xD4, 0x62, 0xD6, 0x9C, 0x2C, 0x66, 0x1C, 0xC2, 0x69, 0x8C, 0x46, 0x80, 0x54, - 0xB2, 0x0F, 0xD1, 0x59, 0xCD, 0xAA, 0x72, 0x00, 0x08, 0x21, 0x0A, 0x2D, 0x00, 0x54, 0x8C, 0x49, - 0x6B, 0xD5, 0xB6, 0x4D, 0x4A, 0xB6, 0x4E, 0x29, 0xA6, 0xC4, 0x9E, 0x53, 0x4D, 0xE5, 0x9C, 0x51, - 0x1F, 0x7D, 0xFB, 0x7D, 0x25, 0x55, 0x5D, 0xBB, 0xE5, 0xBC, 0x05, 0x04, 0xF6, 0x7A, 0xD5, 0x46, - 0x4D, 0x94, 0x7D, 0x98, 0x4A, 0x52, 0x11, 0xD3, 0x9E, 0xFE, 0xB8, 0x95, 0xE7, 0x03, 0xF4, 0x78, - 0x3F, 0x1C, 0xBA, 0xB1, 0x69, 0xDF, 0x24, 0x84, 0x90, 0x12, 0x65, 0xC1, 0xC9, 0x27, 0x3A, 0x0A, - 0x16, 0x75, 0x29, 0x25, 0x8D, 0xD6, 0x82, 0x44, 0x08, 0x01, 0x40, 0x68, 0xAD, 0xB8, 0xDF, 0x11, - 0x30, 0x89, 0x4F, 0x8D, 0xD1, 0x75, 0xE5, 0x26, 0x0E, 0x11, 0x1B, 0x2A, 0x10, 0x19, 0xA5, 0xB3, - 0x80, 0x18, 0x63, 0x2E, 0x23, 0x22, 0x0A, 0xCA, 0x28, 0x10, 0x04, 0x31, 0xAB, 0x66, 0xB7, 0xDB, - 0x77, 0xD0, 0x97, 0x52, 0x0E, 0x9C, 0x74, 0xF6, 0xA8, 0x17, 0x5A, 0x49, 0x22, 0x4E, 0xFE, 0x11, - 0x54, 0x08, 0x51, 0xB4, 0x4D, 0xAD, 0x95, 0x24, 0x22, 0x67, 0x6D, 0xCE, 0xB9, 0x76, 0xF6, 0xF2, - 0xFC, 0xF4, 0xE5, 0xF3, 0x33, 0xEF, 0xE3, 0x6E, 0xDF, 0xB3, 0x10, 0xD8, 0x7B, 0x4F, 0x85, 0xA4, - 0x92, 0x4C, 0x0A, 0xE5, 0xFB, 0x13, 0x00, 0xD4, 0x24, 0x53, 0x7D, 0xC4, 0x7A, 0x9E, 0xC0, 0x5E, - 0x07, 0xC6, 0xD3, 0xA1, 0xC0, 0x1D, 0x09, 0xAB, 0xDF, 0xFD, 0xF6, 0xFB, 0x5C, 0x0D, 0x85, 0x10, - 0x31, 0xC6, 0xE0, 0x63, 0x4E, 0x74, 0xC0, 0x79, 0x31, 0xE5, 0x9C, 0x52, 0x2E, 0x99, 0x10, 0xE1, - 0x64, 0x3E, 0x2B, 0xB9, 0xB4, 0x6D, 0xBD, 0xD9, 0xED, 0x72, 0xCC, 0xA7, 0x27, 0xCB, 0x31, 0xA6, - 0x52, 0x4A, 0x55, 0x39, 0x00, 0x01, 0x88, 0x3E, 0x84, 0xA6, 0x72, 0xFD, 0xAE, 0xBB, 0x7A, 0x7B, - 0x7B, 0x7B, 0xB7, 0x92, 0x38, 0x25, 0x24, 0x75, 0xFD, 0x70, 0x75, 0x75, 0x0D, 0x02, 0xBE, 0xF5, - 0xE1, 0x37, 0x16, 0xF3, 0xD9, 0xF5, 0xF5, 0x9D, 0xB5, 0xBA, 0x69, 0x6B, 0x46, 0x45, 0x11, 0x38, - 0x98, 0x4A, 0x4C, 0x15, 0x87, 0x4B, 0xC6, 0xA1, 0x9B, 0x11, 0x07, 0x64, 0xEA, 0xD8, 0x63, 0x1E, - 0xF7, 0xE6, 0xE5, 0x20, 0x63, 0x7A, 0x3A, 0x81, 0x4E, 0xF4, 0x0B, 0x9A, 0x1C, 0xE4, 0x98, 0x7A, - 0x72, 0xF0, 0x58, 0xA6, 0x9C, 0x4B, 0xDF, 0x8F, 0x29, 0x27, 0xD6, 0x4E, 0xB3, 0x3D, 0xAD, 0x94, - 0x12, 0x51, 0x00, 0x16, 0x44, 0x28, 0x99, 0xB1, 0xA0, 0x49, 0xE1, 0x04, 0x6C, 0x6C, 0xC5, 0x4C, - 0xFF, 0xC9, 0xFA, 0x45, 0xF0, 0xE3, 0xE7, 0x9C, 0xF8, 0x8A, 0xE2, 0xF3, 0x1E, 0xA7, 0x7D, 0x28, - 0x32, 0x63, 0x0D, 0x9F, 0xFC, 0xF2, 0xFC, 0xFB, 0xCB, 0xFF, 0xF9, 0x5F, 0xFF, 0x6B, 0xFE, 0xF4, - 0xFF, 0x9F, 0xFF, 0xF0, 0x8B, 0xAE, 0xF7, 0xB3, 0xA6, 0x8E, 0xA9, 0x84, 0x98, 0xBA, 0x6E, 0x38, - 0x59, 0xCE, 0x18, 0xA4, 0x6C, 0xDB, 0x1A, 0x40, 0x48, 0xA9, 0xF6, 0xDD, 0x30, 0x8E, 0xC1, 0x39, - 0x27, 0x00, 0x42, 0x4C, 0x31, 0x66, 0x40, 0x31, 0x6F, 0xEB, 0x9C, 0xCB, 0xBE, 0x1B, 0xB5, 0x56, - 0xD6, 0x6A, 0xE7, 0x6C, 0x53, 0x57, 0x28, 0xA5, 0x73, 0xB6, 0xAA, 0x2B, 0x22, 0xA1, 0x94, 0x0A, - 0x21, 0x19, 0xAD, 0xAB, 0xBA, 0xEA, 0xFB, 0xF1, 0xEA, 0xDD, 0xDD, 0x2F, 0x3E, 0xFE, 0xEC, 0x27, - 0xBF, 0xF8, 0x24, 0xC4, 0xAC, 0x94, 0xDC, 0xED, 0x7A, 0x22, 0xAA, 0x2A, 0xE7, 0x7D, 0xE8, 0x87, - 0x01, 0x41, 0xE4, 0x18, 0xEA, 0xDA, 0xC5, 0x14, 0x87, 0xD1, 0x33, 0xF5, 0xA1, 0x94, 0xEC, 0x8C, - 0xF9, 0xFE, 0x77, 0xBE, 0x79, 0x7A, 0xBA, 0xB8, 0xB9, 0x5B, 0x5F, 0xBD, 0xBB, 0x15, 0x08, 0x31, - 0x04, 0x44, 0xE9, 0x9C, 0xD5, 0x5A, 0xB7, 0x4D, 0xF5, 0xC1, 0xFB, 0x2F, 0x4E, 0x4E, 0xE6, 0xC3, - 0x10, 0x86, 0x61, 0x0C, 0x31, 0x75, 0xFD, 0xE0, 0x7D, 0xD8, 0x77, 0x23, 0x4A, 0x19, 0xC7, 0xDD, - 0xF5, 0xF5, 0xF5, 0xC5, 0xC5, 0xB3, 0x93, 0x93, 0x65, 0x55, 0xB9, 0xBA, 0x69, 0x5E, 0x3C, 0x7F, - 0x96, 0x87, 0xDD, 0xC2, 0xE8, 0xE6, 0xFC, 0x65, 0x55, 0xD9, 0x61, 0xF4, 0xD7, 0xB7, 0x2B, 0xA5, - 0x14, 0xFB, 0x5F, 0x0B, 0x21, 0x46, 0x1F, 0x3E, 0xFF, 0xE2, 0xCD, 0xF5, 0xED, 0x3D, 0x02, 0x56, - 0xCE, 0xA6, 0x54, 0x68, 0xB2, 0xDF, 0x11, 0x4C, 0x95, 0x12, 0x4C, 0xCB, 0xCE, 0xD9, 0x4C, 0xD6, - 0x54, 0xD9, 0x19, 0x2B, 0x11, 0x0B, 0x51, 0x37, 0x8C, 0x85, 0x0A, 0x09, 0x18, 0x43, 0x14, 0x08, - 0xA3, 0x0F, 0xB3, 0xB6, 0xD1, 0x0A, 0x95, 0x92, 0xCE, 0x5A, 0x89, 0x18, 0x52, 0x1A, 0x43, 0xCC, - 0xB9, 0x84, 0x94, 0x0F, 0x90, 0x13, 0x68, 0x2D, 0x63, 0x8C, 0xFD, 0x30, 0x1A, 0xA3, 0x94, 0xC4, - 0x52, 0x88, 0xD1, 0x59, 0x00, 0x28, 0x82, 0x98, 0x59, 0x32, 0xFA, 0xC0, 0x40, 0xF5, 0x18, 0x22, - 0x23, 0x47, 0x25, 0xE7, 0x94, 0x92, 0x44, 0x3C, 0x5D, 0xCE, 0x3E, 0x78, 0xF9, 0x62, 0x3E, 0x6B, - 0x4A, 0x29, 0xD6, 0x18, 0x29, 0xD1, 0x28, 0x05, 0x62, 0x4A, 0xE1, 0x04, 0x10, 0x9C, 0x0B, 0x55, - 0xD7, 0x55, 0xE5, 0x6C, 0x29, 0xD9, 0x39, 0x7B, 0x76, 0xB2, 0xA8, 0xAC, 0x6D, 0x6A, 0xD7, 0xD4, - 0x95, 0xD1, 0xBA, 0x72, 0xC6, 0x59, 0x63, 0x8C, 0x92, 0x6A, 0x52, 0xA5, 0xE0, 0x94, 0xB1, 0x0C, - 0xE2, 0xE0, 0x3E, 0x3A, 0x9D, 0x9C, 0x4F, 0x66, 0x28, 0x98, 0xEC, 0x9E, 0xE0, 0x28, 0x62, 0x43, - 0x96, 0x14, 0x1D, 0x28, 0xD3, 0xC8, 0x76, 0x63, 0xD3, 0x86, 0xAE, 0x30, 0xD5, 0x52, 0x2A, 0x94, - 0x52, 0xE2, 0xC1, 0x6B, 0x57, 0x49, 0xA5, 0x95, 0x44, 0x40, 0x56, 0xE1, 0x30, 0x39, 0x5C, 0x6B, - 0x15, 0x53, 0x4E, 0x29, 0xC5, 0x98, 0x04, 0xD1, 0xC4, 0x2E, 0x9D, 0xEE, 0x34, 0x92, 0x52, 0x09, - 0x21, 0xB4, 0x52, 0xFC, 0xCE, 0x30, 0x57, 0xB2, 0x94, 0x62, 0x8C, 0xAA, 0x6A, 0x27, 0x88, 0x72, - 0xCE, 0x3C, 0x31, 0x38, 0xE7, 0x9A, 0xCA, 0x6A, 0xA9, 0x08, 0xE0, 0xE0, 0xFC, 0xC1, 0xFD, 0x21, - 0x55, 0xCE, 0x5D, 0x9E, 0x9F, 0x28, 0x25, 0xDF, 0x7B, 0x7E, 0x51, 0x4A, 0x79, 0xF5, 0xE6, 0xFA, - 0xF2, 0xFC, 0x84, 0xEF, 0x28, 0x7E, 0x69, 0x13, 0xC1, 0xE2, 0xC9, 0xDF, 0x8F, 0xB8, 0xF5, 0x93, - 0xF2, 0xFD, 0x08, 0x1B, 0x3D, 0xC5, 0x9E, 0x98, 0xCB, 0x2A, 0x04, 0xC4, 0x34, 0x65, 0x57, 0x23, - 0xE2, 0xC1, 0x6A, 0x01, 0xA5, 0x7C, 0x7C, 0xC7, 0xF8, 0x92, 0xE3, 0x08, 0xD4, 0x59, 0x53, 0x0F, - 0xC3, 0x18, 0x52, 0xAA, 0xAC, 0xDD, 0xED, 0xBB, 0x31, 0x04, 0x21, 0x84, 0x54, 0x72, 0xB5, 0xDE, - 0x0A, 0x01, 0xFD, 0x30, 0x7E, 0xF1, 0xFA, 0x6A, 0xB5, 0xDA, 0xAE, 0x56, 0x9B, 0xA6, 0xA9, 0xA5, - 0xC4, 0x97, 0x2F, 0x2F, 0xE7, 0xB3, 0x76, 0x18, 0xBD, 0xB5, 0xA6, 0xEF, 0xC7, 0xBB, 0xBB, 0x07, - 0xEF, 0xBD, 0xAB, 0xEC, 0x72, 0x3E, 0x33, 0x5A, 0x39, 0x6B, 0x9A, 0xA6, 0x52, 0x5A, 0x31, 0xAB, - 0x99, 0x04, 0x70, 0x01, 0xE1, 0x52, 0x5F, 0x0E, 0x66, 0x96, 0x4F, 0x60, 0xB2, 0xE3, 0xAB, 0x11, - 0x4F, 0x2B, 0x32, 0x11, 0x31, 0x52, 0x3C, 0xFA, 0xC8, 0xE9, 0xDD, 0x31, 0x71, 0x86, 0x77, 0xE2, - 0x7E, 0x29, 0xA5, 0x12, 0x42, 0x8A, 0x31, 0x8E, 0x3E, 0x6C, 0x77, 0x5D, 0x3F, 0xFA, 0x18, 0xD3, - 0x6E, 0xDF, 0xE7, 0x42, 0xB9, 0x94, 0x54, 0x32, 0x91, 0x60, 0x0D, 0x53, 0xC8, 0xC9, 0xC7, 0x14, - 0xC2, 0x94, 0x7B, 0x92, 0x52, 0x49, 0x39, 0x33, 0xE6, 0x4F, 0x45, 0xE4, 0x5C, 0x52, 0x2E, 0x39, - 0xE7, 0x10, 0xF8, 0x03, 0x3F, 0x9E, 0x10, 0x8F, 0x8D, 0xBF, 0x98, 0x04, 0x02, 0x30, 0x55, 0x3D, - 0x4E, 0x83, 0x2D, 0x85, 0x66, 0x8D, 0xFB, 0xF8, 0xD3, 0xAB, 0xCF, 0x5E, 0xDF, 0xBE, 0x7C, 0x76, - 0x76, 0xF5, 0xF6, 0x5E, 0x1B, 0xAD, 0xB5, 0x0C, 0x39, 0x0F, 0x63, 0x38, 0x3F, 0x5B, 0x08, 0x21, - 0x62, 0xCA, 0xEB, 0xCD, 0x7E, 0xD6, 0xD6, 0xC6, 0x68, 0xE6, 0xE8, 0x97, 0x03, 0x83, 0x4E, 0x08, - 0x08, 0x21, 0x29, 0xA9, 0x4E, 0x16, 0xB3, 0x10, 0xE3, 0x7A, 0xB3, 0x37, 0x5A, 0xCD, 0xDA, 0x3C, - 0x9B, 0x35, 0x29, 0xE5, 0xD1, 0x07, 0x40, 0x88, 0x31, 0x2D, 0x17, 0x2D, 0x22, 0xFE, 0xFE, 0xF3, - 0x2F, 0x7F, 0xF7, 0xD9, 0x9B, 0xF5, 0x66, 0xA7, 0x95, 0x9A, 0xB7, 0x4D, 0x7F, 0xFB, 0xC0, 0xDC, - 0x2B, 0x25, 0xD5, 0x7E, 0xBF, 0xDF, 0x6C, 0xF7, 0x08, 0xA0, 0x50, 0xBC, 0xF7, 0xFC, 0x72, 0xBD, - 0xDD, 0xD5, 0x95, 0x33, 0xDA, 0x74, 0x5D, 0xEF, 0x9C, 0xFD, 0xE3, 0x3F, 0xF8, 0xDE, 0xE5, 0xF9, - 0xC9, 0xD9, 0xE9, 0xD2, 0x39, 0x73, 0xFF, 0xB0, 0x71, 0xD6, 0x94, 0x92, 0x4F, 0x4F, 0x96, 0xEF, - 0xBD, 0xB8, 0xFC, 0xD9, 0xAF, 0x7E, 0x2B, 0x01, 0xFE, 0xFE, 0xDF, 0xFD, 0x21, 0x77, 0xE9, 0xD6, - 0x9A, 0x9C, 0xCB, 0xED, 0xFD, 0xBA, 0x14, 0x5A, 0xCC, 0x5B, 0xA5, 0x94, 0xD6, 0xFA, 0xF9, 0xE5, - 0xDF, 0x9B, 0xCD, 0x17, 0x45, 0xC8, 0x90, 0x8A, 0xC5, 0xF2, 0x70, 0xF5, 0xDB, 0xFB, 0xF5, 0xAE, - 0xF8, 0xFE, 0xF6, 0xED, 0x6B, 0xFB, 0xE2, 0xA3, 0x5D, 0x5F, 0x83, 0x60, 0xE5, 0xB6, 0x16, 0x00, - 0xFD, 0x30, 0xF6, 0xC3, 0xF8, 0xC5, 0xAB, 0x37, 0xF7, 0xF7, 0xAB, 0xCA, 0x5A, 0xE4, 0xEC, 0xDB, - 0x54, 0xB4, 0x96, 0xB9, 0xE4, 0x10, 0x32, 0x5B, 0xA7, 0x12, 0x09, 0xAD, 0x65, 0x89, 0xB1, 0x1B, - 0x06, 0x67, 0xCC, 0xAC, 0xA9, 0x84, 0xA0, 0x10, 0xA3, 0x0F, 0x41, 0x08, 0x52, 0x52, 0xFB, 0x18, - 0x53, 0xCA, 0x80, 0xA0, 0x8D, 0x0E, 0x21, 0x00, 0x68, 0xDE, 0xE2, 0x03, 0x88, 0x74, 0x50, 0x71, - 0x3B, 0xAB, 0x63, 0x2A, 0x39, 0x8F, 0x46, 0x6B, 0x29, 0x25, 0x20, 0x2A, 0xE5, 0xB5, 0x56, 0xE7, - 0xCB, 0x79, 0x37, 0x8C, 0xDB, 0x5D, 0x07, 0x12, 0x11, 0xC1, 0x80, 0x8A, 0x71, 0x4A, 0xB4, 0xE4, - 0xBF, 0xF4, 0x43, 0x30, 0xDA, 0xB4, 0x75, 0x15, 0x82, 0x4A, 0xA5, 0x84, 0x10, 0x2A, 0x57, 0x19, - 0xAD, 0x63, 0x4A, 0x95, 0xB3, 0xC3, 0x30, 0xB2, 0x64, 0x8F, 0x2D, 0x59, 0x10, 0xB1, 0xA9, 0x1D, - 0x22, 0x4A, 0xE9, 0x2A, 0x67, 0x7C, 0x88, 0x4A, 0x49, 0x67, 0x8D, 0x33, 0x46, 0x4A, 0xA4, 0xC3, - 0xF5, 0x8A, 0x88, 0x4A, 0x4B, 0xD6, 0xE5, 0xE1, 0x63, 0xB0, 0xD5, 0x63, 0xB0, 0xCD, 0xD3, 0x6B, - 0xFC, 0x38, 0x6D, 0x3D, 0xFD, 0xF7, 0xE3, 0x21, 0x7F, 0x2C, 0x76, 0xEC, 0x00, 0x23, 0x84, 0x00, - 0x50, 0x5A, 0x49, 0xAD, 0x25, 0xE7, 0x72, 0x01, 0xA2, 0xD1, 0x3A, 0x1F, 0xAD, 0xE2, 0xA5, 0x64, - 0x0D, 0x06, 0x11, 0x0D, 0x3E, 0x30, 0xEA, 0x7A, 0x58, 0x6E, 0x22, 0x00, 0xF4, 0xE3, 0x20, 0x68, - 0x02, 0xD4, 0xEB, 0xDA, 0xB6, 0x4D, 0x93, 0x72, 0xD9, 0xEF, 0x7B, 0x67, 0x0D, 0x08, 0x31, 0x7A, - 0x41, 0xA5, 0x48, 0x85, 0x75, 0x55, 0xB5, 0x4D, 0xAD, 0x94, 0x4A, 0x75, 0xBD, 0xDB, 0xEF, 0xF7, - 0xDD, 0x40, 0x44, 0xDE, 0x7B, 0x89, 0xCE, 0x3A, 0xAD, 0x8B, 0x18, 0x47, 0x8F, 0x38, 0x0D, 0x41, - 0xF3, 0x59, 0x9B, 0x73, 0x7E, 0x73, 0x75, 0x23, 0x25, 0x5A, 0x6B, 0xA4, 0x52, 0xC3, 0x6E, 0xFF, - 0xF9, 0x17, 0x5F, 0x3E, 0xBB, 0x38, 0x5D, 0x2C, 0xE7, 0xC6, 0x9A, 0x18, 0x53, 0x08, 0x81, 0x4D, - 0x99, 0xC4, 0x21, 0x07, 0x44, 0x7C, 0xD5, 0x1D, 0xF0, 0xD8, 0x6D, 0x1D, 0x4B, 0x15, 0x1D, 0x82, - 0x97, 0x88, 0xFB, 0x1A, 0x2A, 0xA5, 0x94, 0x31, 0x66, 0xDE, 0x81, 0xF2, 0xD0, 0x44, 0xA5, 0x8C, - 0x23, 0x07, 0xEC, 0x14, 0xAE, 0x9A, 0x12, 0x51, 0x2B, 0x49, 0x54, 0xAE, 0xDE, 0xDE, 0x18, 0x6B, - 0xDA, 0xA6, 0xD9, 0x77, 0x3D, 0x02, 0x08, 0x94, 0xC3, 0xE8, 0x99, 0x12, 0xD8, 0x54, 0xEE, 0xEA, - 0xFA, 0x96, 0x2B, 0xCB, 0x3F, 0xFF, 0xAF, 0xFE, 0xE1, 0xAC, 0x6D, 0xBA, 0x7E, 0xF8, 0xF2, 0xED, - 0x8D, 0x00, 0x3C, 0x3B, 0x5D, 0x72, 0xE4, 0xCA, 0xF5, 0xCD, 0xDD, 0xF7, 0x3F, 0xFA, 0x56, 0xD7, - 0x0D, 0xC4, 0xDC, 0x49, 0xAD, 0x00, 0xA5, 0xF7, 0x71, 0x24, 0x6F, 0x8D, 0xD6, 0x5A, 0x23, 0x40, - 0x06, 0xE2, 0x56, 0x52, 0x1C, 0xB6, 0x7C, 0xF4, 0x95, 0x1A, 0x46, 0x44, 0x8F, 0x2F, 0x47, 0x1C, - 0x46, 0x66, 0xA5, 0x54, 0x8C, 0x31, 0xC6, 0xD4, 0x8F, 0xA3, 0x35, 0x5A, 0x29, 0xC5, 0xF6, 0xBC, - 0xBC, 0xFC, 0xE5, 0xC5, 0x85, 0x10, 0x94, 0x53, 0x29, 0x45, 0x74, 0xFD, 0xC0, 0x03, 0x62, 0x95, - 0x32, 0x4A, 0x34, 0x46, 0xB7, 0x75, 0x05, 0x62, 0xC2, 0x7F, 0xF9, 0xF9, 0xF8, 0xAD, 0x1B, 0xC7, - 0x51, 0x29, 0x05, 0x50, 0xE5, 0x29, 0x06, 0x48, 0xF0, 0xEE, 0x3E, 0xE5, 0x5C, 0x0A, 0xA7, 0xCF, - 0x81, 0x25, 0xA3, 0x94, 0x3A, 0x6E, 0x59, 0x0F, 0xA0, 0x04, 0x4E, 0xEC, 0xB3, 0x52, 0x4A, 0x21, - 0xF9, 0xC3, 0xBF, 0xF3, 0xCF, 0xF7, 0xFD, 0xB8, 0xDA, 0x0E, 0xAB, 0x4D, 0xF7, 0x8D, 0xF7, 0x2E, - 0x9A, 0xDA, 0xED, 0xBA, 0xF1, 0xE2, 0x6C, 0xF9, 0xFC, 0xE2, 0xF4, 0x37, 0xBF, 0x7F, 0xB3, 0x5A, - 0xEF, 0xAA, 0xCA, 0xED, 0xF6, 0x03, 0xFB, 0x26, 0x87, 0x18, 0x95, 0x92, 0x24, 0x68, 0xDF, 0x0D, - 0x39, 0xE5, 0x18, 0x53, 0x29, 0xB4, 0xDE, 0xED, 0xDF, 0xDD, 0xAE, 0x4A, 0x29, 0x42, 0xC0, 0x18, - 0x62, 0x8A, 0x39, 0x17, 0xF2, 0xDE, 0xF7, 0x83, 0xF7, 0x21, 0x6A, 0xAD, 0x94, 0x94, 0x77, 0x0F, - 0x9B, 0xFF, 0xF4, 0xB3, 0x8F, 0x7F, 0xFA, 0x8B, 0xDF, 0x0D, 0x63, 0x48, 0x29, 0x87, 0x98, 0x96, - 0xF3, 0x79, 0xED, 0xEC, 0x6A, 0xB3, 0x33, 0x5A, 0x0F, 0x7E, 0x14, 0x42, 0x20, 0x42, 0xCE, 0x09, - 0x05, 0xC4, 0x98, 0xC6, 0x71, 0x9C, 0xCF, 0x66, 0x28, 0x71, 0xBF, 0xEF, 0x2E, 0x2F, 0x4E, 0x3E, - 0xFA, 0xCE, 0x37, 0x67, 0x6D, 0xD5, 0xD4, 0xD5, 0xE8, 0xC3, 0xAB, 0xD7, 0xEF, 0xAE, 0x6F, 0xEE, - 0x4F, 0x4F, 0x16, 0x1F, 0x7D, 0xE7, 0x83, 0x8B, 0xF3, 0xA5, 0x52, 0x6A, 0x3E, 0x6B, 0x9B, 0xA6, - 0xEA, 0x87, 0x91, 0x0F, 0x07, 0x29, 0x25, 0x1B, 0xDA, 0x58, 0x6B, 0x72, 0xCE, 0xD6, 0x9A, 0x94, - 0x4B, 0xDD, 0x2E, 0x8D, 0xAB, 0x62, 0x22, 0x92, 0xF6, 0xF9, 0xD2, 0xDE, 0xDD, 0x5C, 0xE5, 0xB1, - 0x93, 0x94, 0x3F, 0xF8, 0xC1, 0xDF, 0x2E, 0x52, 0xF5, 0xFD, 0xB0, 0x5C, 0xCC, 0x2A, 0x67, 0x7D, - 0x88, 0xDB, 0x5D, 0xFF, 0xF6, 0xDD, 0xED, 0xFD, 0xFD, 0x4A, 0x29, 0x49, 0x02, 0xBA, 0x61, 0x2C, - 0x65, 0xDA, 0xBC, 0x48, 0x89, 0x85, 0x84, 0x8F, 0x01, 0x01, 0x99, 0x0C, 0xE5, 0xAC, 0x71, 0xC6, - 0x4A, 0x39, 0xF9, 0x19, 0xA4, 0xC9, 0x13, 0x00, 0x38, 0xEA, 0x95, 0x7D, 0xF1, 0xFD, 0x18, 0xA4, - 0x44, 0x12, 0x30, 0x0C, 0x9E, 0xD1, 0xA0, 0x61, 0x0C, 0x0C, 0x4B, 0xF0, 0x2E, 0x29, 0x97, 0x52, - 0xD7, 0x56, 0x1E, 0xD0, 0x62, 0x22, 0xF0, 0x31, 0x72, 0xB0, 0x20, 0x90, 0x68, 0xEA, 0x8A, 0x85, - 0x01, 0xE5, 0x00, 0x00, 0xE5, 0x52, 0x88, 0x0A, 0x20, 0xD6, 0x95, 0x6B, 0x6B, 0xC7, 0x8D, 0x89, - 0x9A, 0xC2, 0xC6, 0x49, 0x6B, 0xD9, 0x0D, 0x43, 0xD7, 0x0F, 0x4C, 0x59, 0xB2, 0xD6, 0x2C, 0xE6, - 0x8D, 0xB3, 0xB6, 0x72, 0xC6, 0x1A, 0xAD, 0x95, 0xAA, 0x2B, 0x5B, 0x57, 0xD6, 0x5A, 0x6D, 0xAD, - 0xD6, 0x46, 0x69, 0xA5, 0xB4, 0x56, 0xD6, 0x69, 0xAB, 0x95, 0x54, 0x72, 0x92, 0xA0, 0x1E, 0xC4, - 0x22, 0xB9, 0xE4, 0x94, 0x12, 0xDF, 0x9C, 0x24, 0x1E, 0x17, 0xF6, 0xC7, 0xB2, 0xF5, 0xB4, 0x8A, - 0x3D, 0x8E, 0x99, 0x4F, 0xBF, 0x4F, 0x1C, 0x9A, 0x11, 0x98, 0x62, 0x9B, 0x8F, 0xA8, 0x8C, 0x92, - 0x88, 0x28, 0xC5, 0xC4, 0xC3, 0x28, 0xC4, 0x5B, 0xA0, 0xED, 0x6E, 0xB3, 0xED, 0xC5, 0xC1, 0x56, - 0x81, 0x61, 0x1D, 0x4E, 0x30, 0x50, 0x52, 0x1A, 0xA3, 0x96, 0x8B, 0x45, 0x88, 0x71, 0xB3, 0xD9, - 0x49, 0x29, 0xAD, 0xD1, 0x4D, 0x5D, 0x3D, 0xBF, 0x38, 0x59, 0xCC, 0x6B, 0x86, 0xFC, 0x4A, 0xA1, - 0xAE, 0x1F, 0x01, 0x84, 0xD6, 0x5A, 0x29, 0xE9, 0x9C, 0x45, 0x84, 0xB6, 0xAE, 0x9D, 0xB5, 0x4C, - 0xEC, 0x08, 0x31, 0x30, 0x4E, 0xA4, 0xB5, 0x32, 0xC6, 0x18, 0xA3, 0x2B, 0x6B, 0x87, 0x61, 0x5C, - 0x6D, 0x77, 0xC3, 0x18, 0x6E, 0xEE, 0x36, 0xEB, 0xED, 0x6E, 0xBD, 0xD9, 0xED, 0x77, 0x9D, 0xB3, - 0xDA, 0x1A, 0x7D, 0x8C, 0x05, 0x62, 0xD1, 0xCF, 0xD7, 0xAA, 0x39, 0xCF, 0xDA, 0x4F, 0xFB, 0xD3, - 0x23, 0xEA, 0xAF, 0xB5, 0x36, 0xC6, 0x70, 0xCB, 0x49, 0x44, 0x89, 0xAD, 0x77, 0xD9, 0xC4, 0xC2, - 0x7B, 0x2A, 0x64, 0xB4, 0x9E, 0x7C, 0x0A, 0xA6, 0x9D, 0x09, 0xAC, 0x1E, 0x36, 0x9F, 0x7D, 0xF1, - 0xE6, 0xED, 0xBB, 0x9B, 0x9C, 0xF3, 0x7A, 0xBD, 0xAD, 0x2A, 0x87, 0x08, 0x31, 0xE5, 0xFB, 0xBB, - 0x87, 0xB3, 0xD3, 0x13, 0x00, 0x68, 0xEB, 0xCA, 0x39, 0xFB, 0xAD, 0x6F, 0xBE, 0x77, 0x73, 0xBF, - 0x7A, 0xF5, 0xE6, 0xDD, 0x7E, 0xDF, 0xFF, 0xF2, 0xD7, 0x9F, 0xC6, 0x10, 0x86, 0xDE, 0x6F, 0x36, - 0x3B, 0x94, 0xF8, 0xE7, 0xFF, 0xE8, 0xCF, 0xBE, 0xFD, 0xE1, 0xFB, 0x52, 0xCA, 0xDD, 0xAE, 0x9B, - 0xCF, 0x5B, 0x44, 0xF4, 0x21, 0x70, 0xE7, 0x11, 0x63, 0x46, 0x01, 0xE9, 0x20, 0x9F, 0xA4, 0x89, - 0xA9, 0xCF, 0x1C, 0xD7, 0x09, 0xB3, 0x3F, 0x94, 0x36, 0x12, 0x6C, 0x3A, 0x26, 0x00, 0xE0, 0x2B, - 0x44, 0xFC, 0x10, 0x13, 0xAF, 0xF5, 0x01, 0x60, 0x1C, 0x7D, 0xD7, 0x8D, 0x5D, 0xD7, 0xF7, 0xDC, - 0x80, 0xA5, 0x4C, 0x44, 0x3E, 0x84, 0x5D, 0xD7, 0x97, 0x3C, 0x0D, 0x8F, 0x39, 0xE7, 0x47, 0x54, - 0xEE, 0x10, 0x0C, 0x56, 0x88, 0x38, 0x97, 0x68, 0xDA, 0x9B, 0xE4, 0x92, 0x52, 0xE1, 0xFA, 0xC6, - 0xC3, 0x4D, 0xC9, 0xC5, 0x47, 0xF6, 0xEF, 0x28, 0x62, 0x02, 0x5B, 0xA7, 0xFE, 0xF1, 0x49, 0xFD, - 0x7D, 0x7A, 0xBE, 0x82, 0xFC, 0x07, 0x7F, 0xFE, 0xAF, 0xAE, 0xEF, 0x36, 0xEB, 0x6D, 0x27, 0x25, - 0x10, 0x89, 0xE7, 0x17, 0xA7, 0xCB, 0x45, 0xCB, 0xB5, 0xFC, 0xE5, 0xF3, 0xB3, 0xAE, 0xF7, 0x5D, - 0xEF, 0x97, 0xF3, 0x26, 0xB2, 0x7C, 0x41, 0xEB, 0x87, 0xF5, 0x0E, 0x01, 0xDE, 0x7F, 0xEF, 0x72, - 0xB9, 0x98, 0x35, 0x6D, 0x9D, 0x4B, 0x9E, 0xB7, 0xCD, 0xAC, 0xAD, 0xF7, 0xFB, 0x01, 0x04, 0x1A, - 0xAD, 0x72, 0xA1, 0xF5, 0x7A, 0xBF, 0xEF, 0xC6, 0xAA, 0x72, 0x27, 0x8B, 0x99, 0xB1, 0xE6, 0x6F, - 0x7E, 0xF1, 0xBB, 0x57, 0xAF, 0xDE, 0x3E, 0xAC, 0x76, 0x3C, 0xCF, 0xB3, 0xA5, 0x44, 0x37, 0x0C, - 0xE7, 0x67, 0x8B, 0xF7, 0x5F, 0x3E, 0xEF, 0xFA, 0xDE, 0x68, 0x45, 0xB9, 0x94, 0x94, 0xA5, 0x44, - 0x10, 0x02, 0x01, 0x6E, 0x57, 0xEB, 0x5D, 0xD7, 0xBF, 0xB8, 0x3C, 0x3F, 0x59, 0x2E, 0x9E, 0x5D, - 0x9C, 0x55, 0x95, 0xAD, 0x9C, 0x9D, 0xB5, 0xCD, 0x76, 0xD7, 0x5D, 0x5D, 0xDF, 0xBE, 0x7C, 0x7E, - 0xF1, 0x83, 0xEF, 0x7D, 0x78, 0x76, 0x32, 0x57, 0x4A, 0x5D, 0x9E, 0x9F, 0x2E, 0x97, 0x73, 0x06, - 0x4A, 0x39, 0x16, 0x4C, 0x4A, 0x6C, 0x9B, 0xDA, 0x39, 0x47, 0x44, 0x21, 0xA5, 0x9C, 0x4B, 0x4C, - 0xB9, 0xEB, 0xFB, 0xD5, 0x7A, 0x6B, 0x8C, 0x7A, 0xF9, 0xEC, 0x7C, 0xEE, 0xF0, 0xE1, 0xEE, 0xDA, - 0x77, 0x3D, 0x66, 0xFF, 0xAD, 0xEF, 0xFF, 0xD0, 0xB6, 0x0B, 0xA2, 0xC2, 0xFB, 0x84, 0xFD, 0xBE, - 0x7F, 0xFB, 0xF6, 0xFA, 0xF6, 0xEE, 0x21, 0xA5, 0x84, 0x00, 0x43, 0x88, 0x4A, 0xCA, 0x79, 0x5B, - 0x03, 0xE0, 0x18, 0x02, 0x91, 0xF0, 0x21, 0xF0, 0x98, 0x24, 0x11, 0xB5, 0xD1, 0x46, 0x29, 0xB6, - 0xA8, 0xE6, 0x74, 0x74, 0x00, 0x88, 0x29, 0x73, 0xAD, 0x51, 0x4A, 0xF1, 0xFC, 0x28, 0xA5, 0xAC, - 0x9C, 0x65, 0x2D, 0xB1, 0x75, 0x9A, 0x4B, 0x9E, 0xD1, 0x86, 0xD7, 0xD5, 0xFD, 0xE8, 0xAD, 0xD1, - 0x25, 0xD3, 0xE8, 0x63, 0x3F, 0xF8, 0x18, 0x33, 0x80, 0x88, 0x31, 0xF5, 0x3E, 0x5C, 0x9C, 0x9E, - 0xB4, 0x4D, 0xBD, 0x98, 0xB7, 0x3C, 0x77, 0xB0, 0x7D, 0x05, 0xD3, 0x3E, 0xA4, 0x54, 0x39, 0x25, - 0xA5, 0x25, 0x53, 0x54, 0x7B, 0xEF, 0x83, 0x8F, 0x4C, 0x64, 0x4F, 0x29, 0x73, 0x6B, 0x16, 0x63, - 0x74, 0xD6, 0x31, 0x6B, 0xB4, 0xAE, 0xDC, 0x62, 0xD6, 0x54, 0x95, 0x35, 0x46, 0x59, 0xA3, 0x2B, - 0x67, 0x2B, 0x6B, 0x50, 0xA2, 0x00, 0xE0, 0x90, 0x04, 0x2E, 0x73, 0x88, 0x28, 0xF1, 0xC0, 0x4D, - 0x64, 0x5F, 0xA1, 0x3C, 0x5D, 0x61, 0x54, 0xE8, 0xB0, 0x63, 0x7A, 0xAC, 0x4F, 0xF4, 0x48, 0xA4, - 0x7A, 0x94, 0xA4, 0x4C, 0xE3, 0xD5, 0xD1, 0x7C, 0xE0, 0x78, 0xCA, 0xF3, 0x4F, 0x89, 0x29, 0xBF, - 0x0A, 0x01, 0x14, 0xA2, 0x20, 0x0A, 0x29, 0x31, 0xAB, 0x2B, 0xA7, 0x22, 0x04, 0xE4, 0x94, 0xD8, - 0x0C, 0x2E, 0x84, 0xD8, 0x0F, 0x03, 0xD7, 0x0E, 0xAB, 0xCD, 0xAC, 0xAD, 0x2E, 0x2F, 0xCE, 0xB4, - 0xD6, 0x7C, 0x59, 0x37, 0x75, 0x55, 0x3B, 0x57, 0x3B, 0x67, 0x8C, 0xAE, 0x9D, 0x5D, 0xCC, 0x6A, - 0xA3, 0x14, 0x0A, 0xE1, 0xAC, 0x96, 0x52, 0xF6, 0xC3, 0x18, 0x62, 0xE4, 0x8E, 0xC9, 0x1A, 0x63, - 0xAD, 0xE1, 0x7A, 0xC4, 0xC1, 0x9C, 0xC4, 0x49, 0x4E, 0x08, 0x55, 0xE5, 0x9C, 0xB5, 0x21, 0xA6, - 0xD1, 0x87, 0x94, 0x8A, 0x52, 0x8A, 0x0A, 0x6D, 0x77, 0xDD, 0xFD, 0xC3, 0xE6, 0x93, 0xDF, 0xBF, - 0xF9, 0xDD, 0xEF, 0x5F, 0x6F, 0xF7, 0xFD, 0xE5, 0xF9, 0xA9, 0x56, 0x32, 0xC4, 0xF8, 0xB5, 0x11, - 0x32, 0xA6, 0x94, 0x62, 0x9C, 0xA4, 0x4B, 0x88, 0x47, 0xF3, 0x2D, 0x00, 0x90, 0x07, 0x4B, 0xBD, - 0xE3, 0x97, 0x94, 0x32, 0xC4, 0xB8, 0xEB, 0x7A, 0xA5, 0x25, 0x00, 0x8C, 0xDE, 0xF3, 0xA6, 0xB2, - 0x4C, 0xAD, 0xBD, 0xEA, 0xFB, 0xA1, 0xEF, 0x87, 0xD1, 0x87, 0x94, 0xD2, 0x72, 0x3E, 0x23, 0x21, - 0x9C, 0xB3, 0x24, 0x40, 0x69, 0xE9, 0x47, 0x7F, 0x7E, 0x76, 0xD2, 0xD4, 0x15, 0xCF, 0xAC, 0x28, - 0xE5, 0x4F, 0x7E, 0xFA, 0xF1, 0xCF, 0x7E, 0xF1, 0xBB, 0xFD, 0xBE, 0xBF, 0xBF, 0xDF, 0xB4, 0x6D, - 0xDD, 0xD4, 0x15, 0x08, 0x78, 0xF1, 0xFC, 0xFC, 0xF2, 0xD9, 0xF9, 0x1F, 0xFD, 0xAD, 0xEF, 0x79, - 0x1F, 0x7C, 0x08, 0x27, 0xCB, 0x45, 0xED, 0xEC, 0x76, 0xB7, 0x5F, 0xAD, 0xB6, 0xCC, 0x3A, 0x4C, - 0x29, 0xA5, 0x5C, 0x62, 0xCA, 0xD6, 0x68, 0x2E, 0x64, 0xEC, 0xA6, 0x83, 0x00, 0xB9, 0x90, 0x98, - 0x02, 0x5A, 0xC5, 0x91, 0x23, 0xC6, 0xB7, 0xD2, 0x11, 0x20, 0xCB, 0xA5, 0xE4, 0x5C, 0xF0, 0xD8, - 0x14, 0x09, 0x31, 0x8C, 0xA1, 0x70, 0xDE, 0x28, 0x20, 0x6F, 0x30, 0x73, 0x29, 0x29, 0x15, 0x00, - 0xA1, 0x24, 0x5A, 0x63, 0xB8, 0xB4, 0x6B, 0xAD, 0x39, 0xAA, 0x83, 0x4D, 0x0A, 0x52, 0x4A, 0x25, - 0xA7, 0x9C, 0xA8, 0x64, 0x62, 0xA7, 0xA5, 0x98, 0xCB, 0xBE, 0xEB, 0x52, 0xCA, 0x5A, 0xB1, 0xC6, - 0x9E, 0x65, 0xAA, 0x29, 0xC6, 0x49, 0xAD, 0x0A, 0x07, 0xE0, 0x9F, 0xAF, 0xA3, 0x72, 0xE0, 0xD6, - 0x1E, 0x64, 0x06, 0x42, 0x08, 0x21, 0xFF, 0xC5, 0xBF, 0xFA, 0xEF, 0x77, 0xDD, 0xB8, 0xDA, 0x74, - 0xF3, 0xB6, 0x66, 0xAA, 0xA4, 0x75, 0x46, 0x29, 0xA9, 0xB5, 0xAA, 0x2B, 0xFB, 0xFD, 0xEF, 0xBE, - 0x6F, 0xB4, 0x8A, 0x29, 0xEF, 0xBB, 0xA1, 0x1F, 0x3C, 0x7B, 0x12, 0x9C, 0x9D, 0x2E, 0xDE, 0x7B, - 0x71, 0x3E, 0x9B, 0xD5, 0xF3, 0xB6, 0xAE, 0x6B, 0x17, 0x63, 0x72, 0xC6, 0xF0, 0x2C, 0xB9, 0xDB, - 0x75, 0x29, 0xE7, 0xB6, 0xAD, 0xDF, 0x7F, 0xEF, 0xA2, 0x94, 0xF2, 0xF1, 0xA7, 0xAF, 0xFE, 0xD7, - 0xFF, 0xF3, 0xDF, 0xFF, 0xF2, 0x37, 0x9F, 0x5D, 0x5E, 0x9C, 0x36, 0xB5, 0x8B, 0x29, 0x6D, 0xB6, - 0x1D, 0x09, 0xF0, 0xC1, 0xBF, 0xB8, 0x3C, 0x3B, 0x3F, 0x3B, 0xE1, 0xCB, 0xB4, 0xAA, 0x1C, 0x13, - 0x05, 0x94, 0x52, 0x7F, 0xF4, 0x83, 0x6F, 0xC7, 0x9C, 0x6F, 0xEF, 0xD7, 0xD6, 0x9A, 0xCA, 0x1A, - 0x44, 0x51, 0x0A, 0x59, 0x6B, 0x2B, 0x67, 0x94, 0x56, 0x95, 0x35, 0xE7, 0x67, 0xCB, 0xE7, 0x97, - 0xE7, 0x6D, 0x53, 0x21, 0x22, 0x23, 0xFD, 0x46, 0x6B, 0x6B, 0x0D, 0x4C, 0x42, 0x1F, 0xA1, 0x94, - 0xD2, 0x5A, 0x21, 0x62, 0xCE, 0xC5, 0x68, 0x2D, 0x11, 0xC7, 0x10, 0x76, 0xBB, 0xBE, 0x94, 0xB2, - 0x9C, 0xB7, 0x55, 0xE5, 0x94, 0x88, 0xEB, 0xFB, 0xEB, 0xDD, 0x7A, 0x95, 0xFA, 0xED, 0xCB, 0x6F, - 0x7E, 0xB4, 0x7C, 0xF6, 0x9E, 0x92, 0x40, 0x82, 0xEE, 0xD7, 0xBB, 0xDF, 0x7F, 0x7E, 0x75, 0x7B, - 0xB7, 0xE2, 0xE8, 0x43, 0x76, 0x50, 0x11, 0x42, 0x74, 0xC3, 0x38, 0x7A, 0x6F, 0xAD, 0x71, 0xCE, - 0xA6, 0x98, 0x84, 0x00, 0xAD, 0x95, 0x94, 0x2A, 0x1D, 0x42, 0x31, 0x2B, 0x63, 0x53, 0xC9, 0x5A, - 0x2A, 0x6B, 0xF5, 0x18, 0x42, 0xCA, 0x59, 0x6B, 0x3D, 0x8C, 0xBE, 0xEB, 0x87, 0xC5, 0xAC, 0x71, - 0xCE, 0x4A, 0x89, 0x39, 0x65, 0x21, 0x84, 0xD1, 0xBA, 0x1B, 0x46, 0xBE, 0x76, 0x79, 0x97, 0xD2, - 0x0F, 0x9E, 0xD1, 0xEE, 0xC8, 0x58, 0x3A, 0x89, 0x10, 0x43, 0xDB, 0x34, 0x70, 0x0C, 0xFA, 0x16, - 0x30, 0xFA, 0x10, 0xD3, 0x24, 0x50, 0x67, 0xB2, 0x3E, 0xAF, 0x87, 0x2A, 0x06, 0xC5, 0xCB, 0x14, - 0x98, 0xA2, 0x95, 0x02, 0x21, 0xBC, 0x0F, 0x7D, 0xDF, 0xC7, 0x94, 0x10, 0xA5, 0x44, 0x54, 0x52, - 0x5A, 0x67, 0xDB, 0xA6, 0xB2, 0x46, 0x29, 0x2D, 0x11, 0x59, 0x95, 0xC9, 0x1E, 0x96, 0x28, 0x11, - 0x95, 0x54, 0xD6, 0x1A, 0x0E, 0x4F, 0x61, 0xEF, 0x02, 0x7E, 0x44, 0x1E, 0x4B, 0x27, 0xFF, 0x4F, - 0x26, 0x76, 0x1E, 0x8A, 0x17, 0x1C, 0xBE, 0xF8, 0x38, 0x84, 0xAF, 0xF9, 0x05, 0x4C, 0x86, 0x4E, - 0x53, 0x21, 0x3B, 0x36, 0x6D, 0xC7, 0xF1, 0x05, 0x18, 0x18, 0x3A, 0xD4, 0x85, 0x34, 0xF9, 0xD8, - 0x4C, 0xE7, 0x6D, 0xE5, 0x2C, 0xA0, 0xF0, 0x3E, 0x8E, 0x3E, 0x70, 0xDD, 0x94, 0x52, 0xD6, 0x75, - 0xA5, 0x95, 0x12, 0x42, 0xF4, 0x5D, 0xEF, 0xBD, 0x37, 0xC6, 0x18, 0xAD, 0x8D, 0x36, 0x82, 0x28, - 0xE7, 0x32, 0xF8, 0xE0, 0x43, 0xFA, 0xEE, 0xB7, 0x5E, 0x90, 0x10, 0xEF, 0x6E, 0x1E, 0x4A, 0x29, - 0x56, 0x6B, 0x3C, 0x38, 0x6A, 0xF1, 0x88, 0x1D, 0x42, 0x64, 0xCE, 0x9D, 0x10, 0x64, 0xB4, 0xB1, - 0xC6, 0xB0, 0x98, 0xD1, 0x87, 0xD0, 0x0F, 0x43, 0x29, 0x13, 0x55, 0x38, 0xA6, 0xC4, 0x4C, 0x1A, - 0xAD, 0x75, 0xCC, 0xF9, 0xEA, 0xDD, 0xDD, 0xC3, 0xC3, 0xE6, 0x64, 0xDE, 0x3A, 0x67, 0x00, 0x21, - 0x86, 0xC8, 0x23, 0x63, 0x8C, 0x31, 0x8E, 0x3E, 0xA7, 0xC4, 0xDD, 0x22, 0x4D, 0x9E, 0x0D, 0x13, - 0x13, 0x2A, 0xE7, 0xC4, 0xD3, 0x16, 0x3D, 0x71, 0xF1, 0xE7, 0x23, 0x85, 0xA9, 0x09, 0x29, 0x66, - 0x6B, 0x0D, 0x11, 0x31, 0xFD, 0x8D, 0x07, 0xA9, 0x61, 0xF4, 0x4A, 0x2B, 0x67, 0x4D, 0x08, 0x51, - 0x4A, 0x7C, 0xB8, 0x5F, 0xAF, 0x56, 0xAB, 0x94, 0x72, 0x8C, 0x71, 0xB9, 0x98, 0x2B, 0xAD, 0xEE, - 0xEE, 0x57, 0x9F, 0x7D, 0x71, 0xF5, 0xEE, 0xDD, 0xDD, 0xE7, 0x5F, 0x5C, 0xA5, 0x9C, 0x7D, 0x88, - 0x97, 0xCF, 0xCE, 0xFE, 0xDE, 0xDF, 0xF9, 0xC3, 0xEF, 0x7E, 0xFB, 0xFD, 0xEF, 0x7E, 0xEF, 0x9B, - 0x21, 0x25, 0x67, 0x4C, 0xD7, 0x0F, 0xBB, 0x7D, 0xF7, 0xF2, 0xC5, 0x65, 0x4E, 0xF9, 0xEE, 0x7E, - 0xBD, 0xD9, 0xEE, 0xF7, 0x5D, 0xF7, 0xEE, 0xE6, 0x21, 0xE7, 0x92, 0x73, 0x11, 0x20, 0xDA, 0xA6, - 0xE1, 0xE4, 0x24, 0xC1, 0x50, 0x3A, 0x00, 0x20, 0x16, 0xA2, 0xE3, 0x86, 0x71, 0xB2, 0x01, 0xE0, - 0x0C, 0xC7, 0x27, 0x52, 0x05, 0x66, 0x5B, 0x70, 0xE3, 0x0C, 0x00, 0x39, 0x97, 0x94, 0x12, 0x4A, - 0x34, 0xC6, 0xB0, 0xF1, 0xA9, 0x94, 0xB2, 0x10, 0xA1, 0x44, 0xAD, 0xB5, 0x35, 0xAE, 0x4C, 0xE2, - 0x08, 0xE2, 0xF6, 0xA2, 0x94, 0xA2, 0xB5, 0xCA, 0x39, 0xB3, 0xC9, 0x33, 0xEB, 0x55, 0x52, 0xC9, - 0x2C, 0x9B, 0x8F, 0x31, 0xE5, 0x5C, 0x80, 0x83, 0x07, 0x73, 0xE9, 0x87, 0x61, 0xB3, 0xDD, 0x87, - 0x10, 0x43, 0x88, 0x87, 0xEB, 0x6A, 0x3A, 0x1A, 0x99, 0x63, 0x73, 0x28, 0xAF, 0x4C, 0xD7, 0x20, - 0x22, 0x52, 0x21, 0x66, 0x67, 0x0C, 0x00, 0x2C, 0x17, 0xED, 0x7C, 0x56, 0xB3, 0xF8, 0x86, 0xD7, - 0x1C, 0x0F, 0xAB, 0x7D, 0xCE, 0xD4, 0xD6, 0x15, 0x77, 0x67, 0x77, 0xF7, 0x9B, 0xAE, 0x1F, 0x3F, - 0x78, 0xEF, 0xD2, 0x5A, 0x1D, 0x53, 0x9A, 0x35, 0x95, 0xF7, 0xD1, 0x68, 0xE5, 0xAC, 0x1E, 0xC7, - 0x60, 0x8D, 0xAE, 0x2F, 0xAC, 0x7C, 0x7E, 0x66, 0xAD, 0xDE, 0xED, 0xFB, 0x1F, 0xFD, 0xF4, 0xE3, - 0x9F, 0xFE, 0xF2, 0x93, 0x9B, 0xFB, 0x8D, 0x44, 0xA9, 0x24, 0x0C, 0x63, 0x98, 0xB7, 0xCD, 0xAC, - 0x6D, 0x66, 0xB3, 0x41, 0x10, 0x10, 0x10, 0x00, 0xFE, 0xE6, 0x93, 0xCF, 0xFA, 0x7E, 0x64, 0x73, - 0xA8, 0x6E, 0xE8, 0x9D, 0x73, 0x6D, 0x53, 0x01, 0x80, 0x44, 0xF8, 0xC3, 0xEF, 0x7F, 0x5B, 0x2A, - 0x95, 0x53, 0x92, 0x07, 0xFF, 0x7B, 0xC1, 0xEA, 0xDC, 0x5C, 0x8C, 0x9E, 0xD4, 0xF9, 0x5A, 0xAB, - 0xC7, 0x76, 0x80, 0x63, 0x7D, 0x53, 0xE6, 0x60, 0xCA, 0x94, 0xF2, 0x38, 0x7A, 0x6E, 0x3A, 0x95, - 0x52, 0xCE, 0x18, 0xAD, 0x15, 0x6F, 0x63, 0x73, 0x2E, 0x98, 0xC1, 0x59, 0xC7, 0x63, 0xDA, 0xEA, - 0xEA, 0x8B, 0xF6, 0xFD, 0xEF, 0xED, 0xF7, 0x7D, 0x1F, 0xE8, 0xFE, 0xEA, 0x9D, 0xDB, 0xBF, 0xBB, - 0x30, 0xEA, 0x0E, 0xDC, 0x76, 0x18, 0x53, 0xCC, 0x65, 0x1C, 0x43, 0x0C, 0x5A, 0x22, 0x00, 0x96, - 0x42, 0x31, 0x26, 0x94, 0xB2, 0x1B, 0x47, 0xA9, 0x54, 0x4E, 0xD1, 0xFB, 0x88, 0x12, 0x2A, 0x6B, - 0x00, 0x48, 0xA1, 0xD4, 0x12, 0xA9, 0x50, 0xE5, 0x1C, 0x33, 0xD4, 0xFB, 0xC1, 0x73, 0xFE, 0x1B, - 0x5F, 0xA9, 0x3E, 0x04, 0x63, 0x4C, 0xCA, 0x65, 0xF0, 0xC1, 0x1A, 0xC3, 0x37, 0xF3, 0xCD, 0xC3, - 0x3A, 0xE7, 0xD2, 0x6A, 0xA9, 0x24, 0xF8, 0x10, 0x81, 0x6D, 0x02, 0xF9, 0x30, 0x44, 0x60, 0xFE, - 0x9D, 0xD6, 0x8A, 0x9F, 0x5D, 0x22, 0x94, 0x02, 0x4A, 0x61, 0x8C, 0x29, 0xC6, 0xA8, 0x94, 0x1A, - 0xC7, 0x11, 0x27, 0x89, 0x9C, 0x44, 0x94, 0x31, 0x65, 0x1E, 0x0C, 0xAD, 0x35, 0x0E, 0xAD, 0x92, - 0x0A, 0x11, 0x2D, 0x33, 0x5D, 0xA7, 0x45, 0x7E, 0x41, 0x14, 0xA5, 0x94, 0x43, 0x5A, 0x32, 0x1B, - 0x5E, 0x4A, 0x12, 0x22, 0x44, 0x96, 0xBE, 0xAB, 0x63, 0x09, 0xA2, 0xC2, 0x51, 0x6C, 0x53, 0x43, - 0xF1, 0x9F, 0x4F, 0x52, 0xFC, 0x75, 0xA4, 0x35, 0x4E, 0x03, 0xE3, 0xA1, 0xA2, 0xD1, 0x61, 0x05, - 0x30, 0xAD, 0x01, 0xE8, 0x71, 0xC0, 0x14, 0x07, 0x59, 0xCF, 0xE8, 0x43, 0x08, 0x59, 0x49, 0x4C, - 0x4A, 0xE6, 0x58, 0xD8, 0x8B, 0x01, 0x01, 0x9C, 0xB5, 0x75, 0xE3, 0x46, 0x1F, 0x86, 0x61, 0x04, - 0xA9, 0x52, 0x4E, 0xFD, 0x30, 0xB0, 0x89, 0x2E, 0x6F, 0xDD, 0x95, 0x94, 0x95, 0x75, 0x28, 0xA5, - 0xA0, 0xB2, 0xDB, 0x77, 0x42, 0x08, 0x1F, 0xC4, 0x5F, 0xFD, 0xF8, 0x63, 0x29, 0x55, 0x8C, 0x91, - 0xA8, 0x70, 0x07, 0x04, 0x80, 0xDA, 0xE8, 0x43, 0xFD, 0x2D, 0x21, 0xE4, 0x94, 0x8B, 0x94, 0xC8, - 0x8C, 0x35, 0x21, 0xC4, 0x38, 0xFA, 0x42, 0x24, 0xA8, 0x14, 0x28, 0x29, 0xE7, 0xDD, 0xBE, 0xE3, - 0xDD, 0xF4, 0xA1, 0x00, 0x09, 0xAD, 0xD5, 0xEB, 0xAB, 0x9B, 0xBB, 0x87, 0xF5, 0x3F, 0xF8, 0xD3, - 0x3F, 0xF8, 0xE0, 0x83, 0x17, 0x39, 0x97, 0x14, 0x91, 0x89, 0x29, 0x82, 0x4A, 0x66, 0x2F, 0xA6, - 0x0C, 0x42, 0x08, 0xA5, 0x9E, 0x26, 0x3F, 0x0A, 0x56, 0x95, 0x12, 0x51, 0x29, 0x93, 0x4B, 0x38, - 0xD7, 0x32, 0x89, 0x90, 0x62, 0x56, 0x52, 0x95, 0x52, 0xBC, 0x0F, 0x85, 0x4A, 0x9C, 0x60, 0xEF, - 0xD2, 0xF7, 0x3D, 0x00, 0xDE, 0xDC, 0xDE, 0x9D, 0x9D, 0x9E, 0xEE, 0xB6, 0xBB, 0x87, 0x87, 0xB5, - 0xB6, 0xBA, 0x4D, 0xF9, 0xE5, 0xFB, 0xCF, 0xD6, 0xDB, 0xFD, 0x2F, 0x3E, 0xFE, 0xF4, 0xFE, 0x7E, - 0xCD, 0x89, 0xCF, 0xDD, 0x30, 0x22, 0xE2, 0x9F, 0xFC, 0xF1, 0x47, 0x7F, 0xF6, 0x27, 0x7F, 0xC0, - 0x4B, 0x83, 0x9F, 0xFD, 0xFC, 0xB7, 0x5F, 0x5E, 0xDD, 0xBC, 0x78, 0x7E, 0x79, 0x73, 0xF3, 0x30, - 0x9F, 0xB7, 0xB7, 0xB7, 0xAB, 0xCF, 0x5F, 0x5D, 0x29, 0x2D, 0x67, 0xB3, 0xE6, 0xED, 0xF5, 0x9D, - 0x10, 0x14, 0x42, 0xB4, 0x56, 0x37, 0x4D, 0x9D, 0x4B, 0x29, 0xE2, 0xE8, 0x2A, 0x5E, 0xCA, 0x94, - 0xC3, 0x36, 0x69, 0x0F, 0x88, 0x0A, 0x4D, 0xB6, 0xF5, 0x82, 0xFD, 0xC8, 0x58, 0xC1, 0xC2, 0x6B, - 0xCA, 0x10, 0xE2, 0xE8, 0x7D, 0x9E, 0xCC, 0x4B, 0x26, 0x13, 0x2A, 0xDE, 0x89, 0x3B, 0x65, 0x4B, - 0x2E, 0x79, 0x2C, 0x1C, 0xCA, 0xA7, 0x95, 0x1A, 0x86, 0xF1, 0xF8, 0x53, 0xDC, 0x1A, 0x0F, 0xBD, - 0x67, 0x1E, 0x35, 0x3F, 0x8F, 0x0F, 0x81, 0x59, 0xCA, 0xCE, 0x5A, 0x46, 0x81, 0x78, 0x2F, 0x95, - 0x72, 0x09, 0x21, 0x86, 0x10, 0xD8, 0x7D, 0x23, 0xA5, 0xAC, 0x35, 0x81, 0x60, 0xFC, 0x81, 0x18, - 0xE1, 0xCD, 0x85, 0x84, 0x00, 0x25, 0x81, 0x2B, 0x03, 0x11, 0x29, 0x6B, 0x75, 0x4E, 0x45, 0x08, - 0x71, 0x71, 0xB6, 0xAC, 0x2B, 0x23, 0xA5, 0x6C, 0x6A, 0x6B, 0xB5, 0x56, 0x5A, 0xBE, 0xFE, 0xF2, - 0x76, 0xBD, 0xDD, 0x33, 0xB0, 0x57, 0x39, 0x33, 0x6B, 0xEB, 0xB3, 0xD3, 0x39, 0x00, 0xDC, 0x3D, - 0x6C, 0x52, 0x2A, 0xEF, 0xAE, 0x1F, 0x8C, 0xD1, 0x46, 0x29, 0xAD, 0xA5, 0x94, 0x72, 0xD7, 0x0D, - 0xCE, 0xEA, 0xB6, 0xAE, 0x7E, 0xF9, 0x9B, 0xCF, 0xFE, 0xDF, 0x1F, 0xFD, 0xFC, 0xDD, 0xF5, 0x83, - 0x52, 0xBA, 0x72, 0x95, 0x96, 0x32, 0xE5, 0xE4, 0x63, 0xE4, 0x24, 0x7A, 0x3F, 0xFA, 0x22, 0x68, - 0xD6, 0x34, 0x5D, 0x37, 0x0C, 0x63, 0x60, 0x4B, 0x30, 0x63, 0xB5, 0x73, 0x96, 0x0A, 0xBD, 0xF7, - 0xFC, 0xFC, 0xFF, 0xE7, 0xEA, 0xCD, 0x7E, 0x2D, 0x3B, 0xB3, 0x3C, 0xA1, 0xF5, 0xCD, 0x7B, 0x3A, - 0xC3, 0x1D, 0xE2, 0xC6, 0xE0, 0x08, 0xDB, 0x69, 0x3B, 0xD3, 0x95, 0x43, 0x65, 0x0D, 0x74, 0x4B, - 0x8D, 0xD4, 0xA8, 0xA5, 0x16, 0x4F, 0x88, 0x46, 0xA8, 0x79, 0x42, 0xC0, 0x13, 0xAF, 0xFC, 0x47, - 0xFC, 0x07, 0x3C, 0x80, 0x90, 0x90, 0x90, 0x0A, 0x10, 0x54, 0x95, 0xD4, 0x54, 0xD6, 0x9C, 0xE5, - 0x1C, 0x9C, 0x4E, 0xCF, 0x8E, 0xE9, 0xCE, 0x67, 0xD8, 0x7B, 0x7F, 0xF3, 0x5A, 0x3C, 0xAC, 0x73, - 0x6E, 0x66, 0x11, 0x4F, 0x96, 0xC3, 0x11, 0xBE, 0xF7, 0x9E, 0xBD, 0xBF, 0x6F, 0xAD, 0xDF, 0xF8, - 0xEC, 0xC9, 0xB9, 0x92, 0x2A, 0xE5, 0x7C, 0xB7, 0xDD, 0xB9, 0xC6, 0xAD, 0x56, 0x8B, 0xFB, 0xCD, - 0xAE, 0xE4, 0xE2, 0x7D, 0xDA, 0xEF, 0xE7, 0xFB, 0xED, 0xEE, 0x7B, 0xEF, 0x3E, 0x6D, 0x9C, 0xE3, - 0xEB, 0xFC, 0x20, 0xE0, 0x43, 0x42, 0xA4, 0xB6, 0x75, 0x5C, 0x0A, 0x6D, 0x8C, 0x4E, 0x29, 0x03, - 0x88, 0x94, 0xB2, 0x10, 0x52, 0x18, 0x29, 0x85, 0x38, 0x5B, 0x2F, 0xA4, 0x94, 0x5D, 0xDB, 0xC4, - 0x5C, 0x4B, 0x40, 0xFE, 0xA6, 0x84, 0x71, 0x97, 0xDF, 0x7C, 0x7A, 0xF1, 0x07, 0xFF, 0x22, 0x91, - 0x49, 0xDF, 0xFD, 0x72, 0x75, 0xF3, 0xB9, 0x08, 0x77, 0xC2, 0x74, 0xDF, 0x7B, 0xFC, 0x7E, 0x32, - 0x5D, 0xBB, 0x5C, 0x5F, 0xEF, 0xE3, 0xDB, 0xBB, 0xE9, 0xE5, 0xED, 0x4C, 0x80, 0x5A, 0x49, 0xAC, - 0x07, 0x6F, 0xF7, 0x38, 0x7B, 0xAD, 0x54, 0x48, 0x51, 0x2A, 0x45, 0x48, 0xD6, 0x58, 0x00, 0x28, - 0x48, 0x39, 0x67, 0x6D, 0x14, 0x10, 0xCC, 0x21, 0x2C, 0x17, 0xBD, 0xE1, 0x52, 0x71, 0xA8, 0xD3, - 0x1C, 0x22, 0x6B, 0x20, 0x3A, 0xC7, 0x32, 0x94, 0x5A, 0xAB, 0xB1, 0x87, 0x0C, 0x6F, 0x42, 0xE4, - 0x14, 0x90, 0x9C, 0xB3, 0x73, 0x8E, 0xE1, 0x4B, 0xD7, 0xD8, 0xB6, 0x71, 0xA5, 0x54, 0x20, 0x42, - 0x24, 0xAD, 0x55, 0xCA, 0x75, 0xB5, 0xE8, 0xFB, 0xB6, 0x99, 0x42, 0xF4, 0x3E, 0xA6, 0x9C, 0xE8, - 0xE0, 0x2D, 0xC7, 0x18, 0x53, 0xD3, 0x34, 0x48, 0x18, 0xD3, 0x31, 0xB2, 0xCA, 0x5A, 0x21, 0x44, - 0xDB, 0x36, 0x43, 0xDF, 0x5A, 0xAB, 0x73, 0xAD, 0x4A, 0xC8, 0x12, 0x51, 0xB1, 0xC6, 0x85, 0x48, - 0x6A, 0xAD, 0x0E, 0x95, 0x19, 0x04, 0x00, 0xA4, 0x80, 0x29, 0x6E, 0xA6, 0xD5, 0xE1, 0x61, 0x68, - 0x22, 0xE0, 0xB1, 0xF4, 0x81, 0x31, 0xFC, 0xFD, 0x73, 0xEA, 0x77, 0xF7, 0xF5, 0x11, 0xE3, 0x87, - 0x63, 0x7F, 0xEA, 0x3F, 0xFB, 0xDD, 0x63, 0x0A, 0x3B, 0x1F, 0x73, 0x07, 0xF0, 0x98, 0x87, 0x40, - 0x38, 0xFC, 0x19, 0x22, 0x92, 0xC7, 0x23, 0xD2, 0x19, 0xB3, 0xE8, 0xBA, 0x1C, 0x4B, 0x29, 0xBC, - 0xF4, 0x15, 0xB6, 0x1F, 0x29, 0xA5, 0x32, 0x65, 0x67, 0x1C, 0xC7, 0x46, 0x96, 0x18, 0x01, 0x80, - 0x0E, 0xEF, 0x9B, 0x6C, 0x9A, 0xA6, 0x71, 0xB6, 0x54, 0xE4, 0xAD, 0x44, 0x11, 0x71, 0x1D, 0x72, - 0x29, 0xC5, 0x18, 0xF3, 0xC0, 0x1E, 0x10, 0xA2, 0xB3, 0xB6, 0xD4, 0x92, 0x52, 0xCE, 0xF9, 0x10, - 0xC7, 0x85, 0x88, 0xCC, 0x59, 0xC7, 0x90, 0x58, 0xEE, 0x1F, 0x53, 0x2A, 0xB5, 0x3A, 0x63, 0x01, - 0xE8, 0xFA, 0xE6, 0x0E, 0x88, 0x80, 0xC0, 0x59, 0xB3, 0x5C, 0xF6, 0x5D, 0xD7, 0x1C, 0xE0, 0x7C, - 0x04, 0x44, 0xA4, 0x4A, 0x52, 0x48, 0x3F, 0x7B, 0x22, 0x72, 0xCE, 0x29, 0xA5, 0x38, 0x99, 0xE7, - 0xB8, 0x86, 0xE3, 0x66, 0xBB, 0xDF, 0x4F, 0x33, 0x21, 0x9D, 0x9E, 0xAC, 0x8C, 0x56, 0xDA, 0x18, - 0x6D, 0x20, 0x86, 0xA4, 0x94, 0x8A, 0x3E, 0xDD, 0x6F, 0x76, 0x58, 0x51, 0x69, 0xB5, 0x58, 0x2C, - 0x62, 0xCC, 0xFD, 0x30, 0x90, 0x10, 0x4A, 0x9B, 0x1F, 0xFF, 0xE4, 0x63, 0x6D, 0xF4, 0xF3, 0x67, - 0x17, 0x9F, 0x7F, 0xF9, 0xDD, 0xCF, 0xFE, 0xF6, 0x17, 0xE7, 0x67, 0x27, 0xEB, 0xF5, 0x72, 0xB7, - 0x9B, 0xBE, 0xF8, 0xEA, 0xBB, 0x77, 0x9E, 0x5D, 0xFC, 0xEB, 0x7F, 0xF5, 0xC7, 0xEF, 0xBD, 0xF7, - 0x14, 0x2B, 0x0A, 0x10, 0x57, 0xD7, 0xF7, 0x9F, 0xFC, 0xF2, 0xB7, 0x9B, 0xED, 0xBE, 0x22, 0x3E, - 0x7B, 0xF2, 0x68, 0x9E, 0xFD, 0xD5, 0xD5, 0x8D, 0x0F, 0x71, 0xBD, 0x5E, 0x7D, 0xFB, 0xF6, 0x75, - 0x2D, 0x55, 0x4A, 0x79, 0x7E, 0xB6, 0x5E, 0xAD, 0x16, 0x9C, 0x49, 0xC7, 0x80, 0x9D, 0x16, 0x92, - 0x40, 0x54, 0x24, 0x96, 0xB9, 0x0A, 0x80, 0xC3, 0xBE, 0x59, 0x0A, 0xD3, 0xE8, 0x42, 0x80, 0x52, - 0x4A, 0x2B, 0x25, 0x80, 0x52, 0xAE, 0xA5, 0xD6, 0x5A, 0x6A, 0x2E, 0x78, 0x30, 0x2A, 0x1C, 0x32, - 0xCD, 0x0F, 0x46, 0x11, 0xAD, 0x75, 0x81, 0x2A, 0x84, 0xC8, 0xB9, 0xA4, 0x9C, 0xB7, 0x39, 0xB5, - 0x6D, 0x6B, 0xAD, 0x8D, 0x21, 0xCD, 0x73, 0x30, 0x46, 0x39, 0xE7, 0x90, 0x10, 0x10, 0x98, 0x07, - 0x46, 0x44, 0xE7, 0x6C, 0xA9, 0x25, 0xE7, 0x42, 0x00, 0xC6, 0x18, 0x63, 0x0C, 0x00, 0xB7, 0xFF, - 0x11, 0xCF, 0xE0, 0x6D, 0xD3, 0x20, 0x52, 0xF0, 0x91, 0x17, 0x0B, 0x01, 0x54, 0x6B, 0xE1, 0x27, - 0x36, 0xE7, 0xE2, 0x9C, 0x23, 0xA5, 0x98, 0x31, 0x21, 0x02, 0x9D, 0x72, 0x55, 0x52, 0x71, 0x40, - 0xCD, 0xB3, 0x27, 0x67, 0x2C, 0x28, 0x03, 0x01, 0xD6, 0xE8, 0x1F, 0x7D, 0xFC, 0xFE, 0x97, 0xDF, - 0xBC, 0xBE, 0xBC, 0xDA, 0xCC, 0x3E, 0x5E, 0x5E, 0xC9, 0xA1, 0x6F, 0x99, 0x4E, 0x8F, 0x29, 0x6B, - 0xA5, 0x42, 0x48, 0x52, 0x29, 0x80, 0xEA, 0x43, 0xDA, 0x6C, 0xC7, 0xB6, 0xB1, 0xE3, 0x38, 0xFF, - 0xD9, 0x9F, 0xFF, 0xCD, 0xD7, 0xDF, 0x5D, 0x82, 0x94, 0xCB, 0xE5, 0x82, 0x37, 0x5B, 0x29, 0xC5, - 0xC9, 0x62, 0xB1, 0x1C, 0x06, 0x25, 0x65, 0x8C, 0xF9, 0x9D, 0xA7, 0x8F, 0xEF, 0xB7, 0x3B, 0x00, - 0x98, 0x3D, 0xD7, 0xA0, 0xF6, 0x37, 0x77, 0x9B, 0xB6, 0x6B, 0x72, 0xAE, 0xC1, 0x07, 0xDE, 0xA7, - 0xD6, 0xAB, 0x85, 0x31, 0xBA, 0x22, 0x0E, 0x43, 0xEF, 0xAC, 0x09, 0x31, 0x4D, 0x3E, 0x5C, 0xDF, - 0xDE, 0x97, 0x9C, 0x67, 0x1F, 0x4E, 0xD6, 0x8B, 0xE5, 0x62, 0xB0, 0xD6, 0x08, 0x25, 0xB5, 0x14, - 0x4A, 0x2A, 0x24, 0x72, 0x00, 0xFC, 0x28, 0x0B, 0x29, 0xF8, 0x93, 0x13, 0x42, 0xB0, 0x0E, 0x88, - 0x10, 0x62, 0x4A, 0x5A, 0x2B, 0xA5, 0x75, 0x25, 0xCA, 0xA5, 0x3A, 0xE7, 0xFA, 0xBE, 0x17, 0x52, - 0x48, 0xAD, 0xEF, 0x37, 0x37, 0x6F, 0xFE, 0xEE, 0xCF, 0x5E, 0x3C, 0x7F, 0x71, 0xFF, 0xE5, 0x5F, - 0xDD, 0xCF, 0x71, 0x58, 0xAD, 0x3B, 0xC0, 0xB3, 0x7A, 0xBB, 0x12, 0xDB, 0x15, 0x84, 0x17, 0xE7, - 0x6D, 0x3D, 0xD3, 0x9F, 0x2C, 0x97, 0x7F, 0xF7, 0xCD, 0x1E, 0x11, 0xB0, 0x56, 0x21, 0xA5, 0x20, - 0x28, 0xB5, 0x1E, 0xFB, 0xE1, 0x14, 0x83, 0x17, 0x4A, 0x29, 0x1F, 0x23, 0x11, 0x36, 0xDA, 0xC5, - 0x98, 0x8C, 0xD6, 0x0F, 0x49, 0x5D, 0x0F, 0xB4, 0xA0, 0x73, 0x6E, 0x0E, 0x39, 0xE7, 0xDA, 0x77, - 0x5D, 0x29, 0x79, 0xB3, 0x9B, 0xAC, 0x31, 0x48, 0x90, 0x73, 0x75, 0xCE, 0x68, 0xAD, 0x77, 0x39, - 0xA7, 0x94, 0x38, 0x3D, 0x91, 0x88, 0xAC, 0x31, 0xAB, 0xA1, 0xDB, 0xEE, 0x46, 0x63, 0x8C, 0xB1, - 0x83, 0x0F, 0x51, 0x6B, 0x95, 0x6B, 0x6D, 0x9C, 0x23, 0xA0, 0x90, 0x78, 0x9A, 0x20, 0xA5, 0x35, - 0x2F, 0x77, 0x29, 0xA6, 0xAA, 0x44, 0xDF, 0x34, 0x52, 0x08, 0x86, 0x99, 0xDB, 0xC6, 0x4A, 0x21, - 0x6A, 0xA5, 0x9C, 0x53, 0x45, 0x54, 0x52, 0x28, 0x29, 0x6B, 0xC5, 0xAE, 0x71, 0xD6, 0xE8, 0x87, - 0x03, 0xE8, 0x30, 0x4B, 0x01, 0x3C, 0x74, 0x59, 0x1E, 0xE8, 0xAA, 0x82, 0x0F, 0x11, 0xF2, 0xF4, - 0xCF, 0xB5, 0x17, 0xC7, 0xB7, 0xF4, 0xF0, 0xEF, 0xFF, 0xD9, 0x99, 0x46, 0x0F, 0x75, 0x39, 0x87, - 0x8D, 0xE0, 0x88, 0xC8, 0x1E, 0x36, 0x53, 0x79, 0x88, 0xA8, 0xCE, 0xB5, 0x60, 0xCC, 0xB9, 0x56, - 0x4C, 0x91, 0x85, 0x72, 0xF4, 0x70, 0x02, 0x76, 0xAD, 0x2B, 0xB5, 0x23, 0xA0, 0xED, 0x6E, 0xAC, - 0xB5, 0x96, 0x9C, 0x8F, 0x03, 0x0E, 0x0A, 0x21, 0x52, 0xCE, 0xCE, 0xDA, 0xD9, 0x7B, 0xA6, 0x14, - 0x8D, 0x55, 0x4A, 0x69, 0x6B, 0xB4, 0x10, 0x44, 0x80, 0x42, 0x88, 0xB6, 0x6D, 0x17, 0x4A, 0x11, - 0x00, 0x01, 0x95, 0x5C, 0x52, 0x29, 0x5A, 0xEB, 0x94, 0x92, 0xAA, 0x85, 0x08, 0x72, 0xCE, 0x40, - 0x90, 0x4B, 0xE1, 0x78, 0x4B, 0x1E, 0xF9, 0x2B, 0x56, 0x40, 0xC1, 0xC5, 0x28, 0x88, 0x75, 0x0E, - 0x51, 0x08, 0x30, 0x4A, 0x09, 0x29, 0x87, 0xBE, 0xF7, 0x31, 0xFF, 0xC5, 0x5F, 0xFF, 0xD3, 0xE9, - 0x72, 0xF8, 0xE9, 0x8F, 0x3E, 0x1C, 0xFA, 0xB6, 0x02, 0xE4, 0x5C, 0x0A, 0x22, 0xF7, 0x2D, 0xC4, - 0x90, 0xF0, 0x30, 0xDA, 0x21, 0x03, 0x05, 0xF4, 0x70, 0x38, 0x0A, 0xD1, 0x75, 0x6D, 0xAD, 0xF5, - 0xE6, 0x6E, 0xF3, 0x9B, 0xCF, 0x37, 0x5D, 0xDB, 0x18, 0x63, 0x80, 0xA8, 0x6D, 0xDD, 0xD0, 0x75, - 0x75, 0xF2, 0x5D, 0xD7, 0xF7, 0x5D, 0x63, 0x8C, 0xA9, 0xB5, 0x2E, 0x17, 0xC3, 0xD9, 0xF9, 0xC9, - 0x6E, 0x3F, 0x12, 0x80, 0x73, 0xEE, 0xC9, 0xC5, 0x59, 0xD7, 0xB5, 0xEF, 0xBC, 0x73, 0xF1, 0x5F, - 0x3E, 0xFD, 0xB7, 0x27, 0xAB, 0x85, 0x35, 0xDA, 0x87, 0xF8, 0xFA, 0xCD, 0x55, 0x29, 0xF5, 0xE6, - 0x6E, 0xCB, 0xFF, 0xA3, 0x5F, 0xFD, 0xE6, 0xCB, 0x71, 0x9C, 0x9E, 0xBF, 0xF3, 0xE4, 0x9D, 0xA7, - 0x17, 0x25, 0xA7, 0xEB, 0x9B, 0x5B, 0x56, 0x2C, 0x19, 0xAD, 0xEF, 0xEE, 0xEE, 0x85, 0x94, 0x7D, - 0xDF, 0xAE, 0x56, 0x0B, 0x02, 0x78, 0xF9, 0xEA, 0xED, 0xFA, 0x64, 0xD9, 0xC9, 0x96, 0xD5, 0xE6, - 0x45, 0x1E, 0x2A, 0x11, 0x8E, 0xBE, 0xEF, 0x07, 0x0F, 0x90, 0x7C, 0xF8, 0xA4, 0x78, 0x4A, 0x62, - 0xE0, 0x9F, 0x6F, 0x29, 0xE6, 0x81, 0xB4, 0xD6, 0x3C, 0x09, 0x92, 0x10, 0x31, 0x24, 0x22, 0x62, - 0x13, 0xD8, 0x61, 0x4C, 0xAB, 0xC8, 0x28, 0x46, 0xF0, 0x11, 0x00, 0x4A, 0x2E, 0xDC, 0xBC, 0x71, - 0x4C, 0x64, 0xE1, 0x24, 0x6D, 0x51, 0x91, 0xAC, 0xB5, 0xD3, 0x1C, 0x72, 0x19, 0xF9, 0xD2, 0xE5, - 0x88, 0xA1, 0x94, 0x32, 0xB3, 0x10, 0xB9, 0x94, 0xD3, 0x93, 0x75, 0xC9, 0x15, 0x91, 0x2A, 0x61, - 0x8D, 0x87, 0x43, 0x8B, 0xBF, 0x30, 0x22, 0x92, 0xB2, 0x93, 0x52, 0xE6, 0x9C, 0x63, 0x8C, 0xEA, - 0x3F, 0xFE, 0x37, 0xFF, 0x05, 0x10, 0x49, 0xA9, 0x2E, 0x6F, 0x36, 0x5D, 0xEB, 0xBA, 0xAE, 0x49, - 0xB9, 0xE4, 0x8C, 0xEC, 0x24, 0x70, 0x8D, 0xE1, 0x6E, 0x08, 0xE7, 0x4C, 0xE3, 0xEC, 0xD7, 0x2F, - 0x2F, 0xA7, 0x29, 0x9C, 0xAC, 0x16, 0x27, 0xAB, 0xC5, 0x30, 0x74, 0xF7, 0xDB, 0x91, 0xEB, 0xC2, - 0x94, 0x14, 0xDF, 0xBE, 0xBE, 0xFC, 0xF9, 0xAF, 0xBF, 0xBC, 0xDF, 0x8E, 0xD6, 0x3A, 0xA6, 0x99, - 0x09, 0xA8, 0x14, 0x14, 0x40, 0xCF, 0x2F, 0xCE, 0x5B, 0x67, 0x8C, 0xD1, 0xEF, 0x3C, 0x7B, 0x84, - 0x48, 0x31, 0x95, 0x71, 0x9E, 0xA7, 0x79, 0x8E, 0x29, 0x23, 0x41, 0x4A, 0x79, 0x1C, 0xE7, 0xED, - 0x66, 0x9B, 0x72, 0xE9, 0x9A, 0xA6, 0xB1, 0x01, 0x15, 0x09, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0xEF, 0xDA, 0x93, 0xD3, 0xE5, 0xC9, 0xC9, 0xA2, 0xEF, 0x5A, 0x6B, 0xF4, 0xED, 0xFD, - 0xF6, 0xEA, 0xFA, 0xEE, 0xFA, 0xE6, 0xEE, 0xEA, 0xE6, 0xB6, 0x6D, 0x9A, 0xF3, 0xB3, 0x93, 0xF3, - 0xB3, 0x93, 0xE5, 0xB2, 0x67, 0x16, 0xD5, 0x71, 0x81, 0xA8, 0x10, 0x42, 0x81, 0x10, 0x52, 0x29, - 0x29, 0x95, 0x22, 0xE4, 0x0C, 0x0F, 0x41, 0x04, 0xB3, 0x0F, 0xE3, 0xE4, 0xF7, 0xE3, 0x3C, 0xCE, - 0xDE, 0x58, 0xC3, 0xDD, 0x68, 0xFD, 0xD0, 0x53, 0x09, 0xB7, 0x9B, 0xAD, 0x94, 0xD2, 0x58, 0x7B, - 0xF7, 0xE6, 0xEB, 0xDB, 0xCB, 0x6F, 0xAF, 0x27, 0x1F, 0x51, 0x54, 0x82, 0x39, 0x15, 0x61, 0xDC, - 0xFD, 0xE8, 0xBF, 0xBB, 0xBC, 0x7D, 0x73, 0x79, 0xB3, 0xDB, 0xEF, 0x9E, 0x2F, 0xE5, 0xB3, 0xC1, - 0x8C, 0xC5, 0x14, 0xA9, 0x4B, 0xAD, 0x5A, 0x33, 0x90, 0x51, 0xDA, 0xAE, 0x6D, 0xAC, 0xE9, 0x5A, - 0x87, 0x88, 0x52, 0x82, 0xD6, 0x6A, 0xE8, 0x3B, 0x2C, 0x95, 0x00, 0xA4, 0x92, 0x15, 0x8F, 0x1A, - 0x31, 0x29, 0x62, 0x2A, 0xCE, 0xDA, 0xA6, 0x71, 0xA5, 0xA2, 0x10, 0x42, 0x2B, 0x99, 0x6B, 0xF5, - 0x21, 0xF1, 0x4B, 0xCB, 0xC7, 0x56, 0x45, 0x8C, 0xA9, 0x70, 0x9B, 0x89, 0xB5, 0x5A, 0x6B, 0x3D, - 0xCF, 0x33, 0x56, 0x4A, 0x39, 0x37, 0xCE, 0x71, 0x1C, 0x2E, 0xD3, 0xD2, 0xC4, 0x05, 0x54, 0x42, - 0xB6, 0xAD, 0x6B, 0xDB, 0x86, 0x9B, 0xED, 0x94, 0x80, 0xC6, 0x9A, 0xAE, 0x6D, 0x86, 0xBE, 0x73, - 0xAE, 0xB1, 0xD6, 0x34, 0x8D, 0x95, 0x12, 0x72, 0xA9, 0xB5, 0x20, 0x63, 0x6A, 0x3C, 0x58, 0xB1, - 0xA6, 0x8C, 0x00, 0x58, 0xC3, 0xAC, 0xB5, 0x96, 0x4A, 0x28, 0x25, 0x8D, 0x56, 0x52, 0x88, 0x7A, - 0xAC, 0x6B, 0x64, 0x2E, 0xEB, 0x98, 0xEA, 0xF5, 0x3B, 0x79, 0x24, 0x1C, 0xE1, 0xFC, 0x87, 0xA5, - 0xF2, 0x61, 0x46, 0x7B, 0xD0, 0x5C, 0xE3, 0x51, 0xE4, 0xFF, 0x70, 0x84, 0xFD, 0xFE, 0xD6, 0xC9, - 0xBF, 0x6A, 0x29, 0xB9, 0x54, 0x06, 0xDA, 0x19, 0x66, 0x3A, 0x80, 0x20, 0x48, 0xB9, 0xE6, 0x94, - 0x72, 0x88, 0xB9, 0x1C, 0x91, 0xC1, 0x18, 0x23, 0x01, 0xA4, 0x52, 0xD8, 0x2E, 0x86, 0x88, 0x7C, - 0x3D, 0x94, 0x5A, 0x39, 0x8F, 0x64, 0xD1, 0x37, 0xAD, 0xD3, 0x43, 0xD7, 0x0C, 0x7D, 0xAB, 0x94, - 0xAC, 0x44, 0xA5, 0x54, 0x44, 0xE4, 0xC8, 0x07, 0x36, 0xB9, 0xF0, 0x6B, 0x50, 0x72, 0x49, 0xA9, - 0x64, 0x8E, 0x60, 0x42, 0x4C, 0x29, 0xF1, 0xDB, 0x1B, 0x53, 0xE6, 0xEF, 0x81, 0x53, 0x6A, 0x2B, - 0x91, 0x56, 0x1A, 0x09, 0x4A, 0x2D, 0x7D, 0xD7, 0x78, 0x1F, 0x2F, 0x6F, 0xEF, 0x2F, 0x6F, 0xEE, - 0x5E, 0xBD, 0xBE, 0x26, 0xA2, 0xF3, 0xD3, 0x15, 0x21, 0x85, 0x39, 0xC6, 0x94, 0x4B, 0x41, 0x8E, - 0xA2, 0x07, 0x80, 0x87, 0x9A, 0x30, 0x3A, 0xC6, 0x3D, 0x23, 0x62, 0xD7, 0x36, 0x7C, 0xBC, 0xEF, - 0x76, 0xD3, 0x3C, 0xFB, 0xED, 0x6E, 0x3F, 0x4E, 0x9E, 0x39, 0x3E, 0xAD, 0x75, 0xD3, 0xB8, 0x71, - 0x0E, 0x21, 0x44, 0xBE, 0x18, 0x63, 0x4A, 0x6D, 0xEB, 0x4E, 0xD6, 0xAB, 0x93, 0xF5, 0xB2, 0x6D, - 0x5D, 0xAD, 0xB5, 0xEF, 0x9A, 0xD5, 0x62, 0x40, 0xA2, 0x6F, 0x5F, 0xBE, 0xBD, 0xBC, 0xBA, 0x4D, - 0x29, 0xEF, 0xF7, 0xB3, 0xB5, 0x36, 0xA5, 0xBC, 0xD9, 0xED, 0x39, 0x8D, 0xFA, 0x64, 0xBD, 0xB8, - 0xBE, 0xBE, 0xB9, 0xBA, 0xD9, 0xEC, 0xA7, 0x20, 0x40, 0x74, 0x5D, 0xA3, 0x94, 0xAA, 0x48, 0x52, - 0xC9, 0x77, 0x9E, 0x3D, 0xDE, 0x6C, 0xF6, 0x97, 0x57, 0xB7, 0xC3, 0xD0, 0xAF, 0x16, 0x0B, 0xAD, - 0x15, 0x07, 0xF7, 0x23, 0x1D, 0xB8, 0x1A, 0x3E, 0x1C, 0x1E, 0x24, 0xBD, 0x47, 0xE1, 0x21, 0x83, - 0x1F, 0xA2, 0x1E, 0x57, 0x3E, 0x2E, 0xDC, 0xE0, 0x90, 0x15, 0xAD, 0x8F, 0xCC, 0x06, 0x08, 0xCE, - 0x8F, 0x4C, 0x29, 0xFB, 0x90, 0xC6, 0xE9, 0x10, 0x81, 0x29, 0xA4, 0xC8, 0xA9, 0xE4, 0x52, 0xB8, - 0x6B, 0x8E, 0xAB, 0x13, 0x8D, 0xD6, 0x47, 0x4B, 0xA7, 0x90, 0x52, 0xA6, 0xE3, 0xF6, 0x2D, 0x95, - 0x5C, 0x0C, 0xC3, 0x41, 0x9B, 0x72, 0x78, 0x90, 0x04, 0x67, 0x37, 0x01, 0x08, 0x1E, 0x4D, 0xDA, - 0xCE, 0x11, 0xB0, 0x85, 0x13, 0x52, 0xCA, 0x5C, 0x28, 0xC3, 0xD7, 0x26, 0xCF, 0xD9, 0x9A, 0x29, - 0xD6, 0x4A, 0x18, 0x53, 0xF9, 0xD9, 0x3F, 0xFE, 0xF6, 0xF2, 0x66, 0xEB, 0x9C, 0x79, 0xFB, 0xF6, - 0x0E, 0x80, 0x2E, 0xCE, 0xD7, 0xD6, 0xE8, 0xE5, 0xB2, 0x7B, 0xF1, 0xCE, 0x23, 0x29, 0x44, 0x4A, - 0xE5, 0x8F, 0x7E, 0xFC, 0xA1, 0x0F, 0xE9, 0x64, 0x35, 0x28, 0x25, 0xEE, 0xEE, 0xF7, 0x9C, 0x18, - 0xE1, 0x63, 0xBC, 0xBA, 0xBE, 0xDB, 0x4F, 0x9E, 0x5D, 0x84, 0x44, 0x85, 0x21, 0x83, 0x79, 0xF6, - 0x5D, 0xE3, 0x9E, 0x9C, 0x9F, 0xA6, 0x9C, 0x17, 0x43, 0x7B, 0x7E, 0xB6, 0xF6, 0x3E, 0x8C, 0xF3, - 0x7C, 0xBF, 0xD9, 0xBE, 0xBD, 0xBE, 0xED, 0xDB, 0x46, 0x09, 0x79, 0x7B, 0x7B, 0xA7, 0x95, 0xAA, - 0xB5, 0x56, 0xA2, 0x5A, 0xEA, 0xEB, 0xCB, 0x1B, 0xE7, 0xEC, 0xC5, 0xC5, 0xD9, 0x6A, 0x31, 0x48, - 0x29, 0x37, 0xDB, 0x11, 0x11, 0x9F, 0x3F, 0x7D, 0xAC, 0xB5, 0xCA, 0xA5, 0x9C, 0xAC, 0x96, 0x4D, - 0x6B, 0x4F, 0x4F, 0x96, 0xC6, 0x1A, 0xEE, 0x31, 0x53, 0x5A, 0x09, 0x21, 0x2A, 0x91, 0x40, 0xA1, - 0xA4, 0x44, 0xA4, 0x9A, 0x0B, 0x1E, 0x4C, 0xCB, 0x62, 0xF2, 0xFE, 0xF2, 0xFA, 0x4E, 0x29, 0xE5, - 0x43, 0x88, 0x29, 0x77, 0x7D, 0x77, 0xB6, 0x5E, 0x5A, 0xA3, 0x49, 0x8A, 0xF5, 0xF9, 0xC5, 0xEA, - 0xF4, 0x7C, 0xDF, 0xF4, 0xE0, 0x77, 0x79, 0xDA, 0xDD, 0xFB, 0x9C, 0x62, 0x50, 0x5A, 0xF7, 0xFD, - 0x20, 0xA5, 0x7A, 0xF5, 0xF6, 0x6A, 0x31, 0x74, 0xC6, 0x98, 0x90, 0x52, 0x49, 0x09, 0x94, 0x6B, - 0x14, 0x7D, 0xD4, 0xF6, 0x9F, 0xEA, 0x47, 0xA3, 0x0F, 0x46, 0x49, 0x29, 0x85, 0x52, 0x52, 0x00, - 0xAD, 0x86, 0x1E, 0x09, 0x41, 0x90, 0x14, 0x72, 0xD1, 0x77, 0x07, 0x89, 0x20, 0x70, 0x35, 0xB7, - 0xE6, 0xD6, 0x8C, 0x5C, 0x6A, 0x41, 0x6C, 0xB4, 0xD2, 0x4A, 0x12, 0x62, 0xA9, 0x34, 0xCE, 0xA1, - 0x94, 0xC2, 0xD0, 0x09, 0x11, 0xE9, 0x43, 0x4F, 0x17, 0xB4, 0x8D, 0xB3, 0x56, 0xDB, 0xA3, 0x51, - 0x19, 0x89, 0x50, 0x90, 0x36, 0x76, 0xB3, 0x1F, 0xC5, 0x31, 0x3E, 0x61, 0x39, 0xF4, 0x20, 0xA0, - 0x54, 0xEC, 0xBA, 0xC6, 0x6A, 0xD5, 0xB7, 0x6D, 0x2E, 0x05, 0x88, 0x58, 0xC2, 0xCA, 0x8F, 0x1A, - 0x6B, 0x7C, 0x4A, 0xA9, 0x4A, 0x89, 0x5C, 0x0A, 0x21, 0xD9, 0x03, 0xF6, 0xCC, 0x69, 0x3F, 0xE6, - 0xE1, 0xC5, 0x63, 0x98, 0x44, 0x48, 0x90, 0x52, 0xB2, 0x7A, 0xB6, 0x20, 0xE7, 0x3C, 0x02, 0x07, - 0x5D, 0xC8, 0xCA, 0xC5, 0x39, 0x15, 0x8E, 0x03, 0xD8, 0xC3, 0x75, 0x8D, 0xBF, 0xF3, 0xEE, 0x1C, - 0x07, 0x29, 0x22, 0xE4, 0xD2, 0x72, 0x02, 0x01, 0x02, 0x7E, 0xCF, 0x9A, 0xF7, 0x70, 0xD8, 0x3D, - 0x9C, 0x65, 0x5A, 0x6B, 0x29, 0x92, 0x20, 0x90, 0x42, 0x60, 0x45, 0x21, 0x65, 0x15, 0x07, 0x93, - 0x5D, 0xA9, 0xC8, 0xCD, 0x23, 0x5C, 0x4A, 0x06, 0x40, 0xA5, 0x22, 0x15, 0xAC, 0x58, 0x95, 0x94, - 0x39, 0xE7, 0x0C, 0x82, 0xC7, 0x28, 0x01, 0xD0, 0x1A, 0x33, 0xB4, 0xEE, 0x74, 0xD9, 0x85, 0x94, - 0xAE, 0xEF, 0xB6, 0xA5, 0xA0, 0x54, 0x42, 0x2B, 0x4D, 0x44, 0x58, 0x2B, 0x11, 0x31, 0x6B, 0x39, - 0xCF, 0x5E, 0x2B, 0x45, 0x88, 0xC6, 0x1A, 0x21, 0x44, 0xCE, 0x35, 0xE5, 0x2C, 0x85, 0xC8, 0x15, - 0x79, 0xAB, 0x92, 0x42, 0xB2, 0xDB, 0x11, 0x00, 0x48, 0x4A, 0x29, 0x24, 0xDF, 0x19, 0x25, 0x17, - 0x2C, 0xC8, 0xA1, 0x1A, 0xA5, 0xD6, 0x31, 0xC4, 0xFF, 0xF7, 0x6F, 0x7F, 0x19, 0x53, 0xFE, 0x93, - 0x1F, 0x7F, 0x5F, 0x6B, 0x75, 0x73, 0xB7, 0x2D, 0x88, 0x4F, 0x9E, 0x5C, 0x74, 0x43, 0x57, 0x2B, - 0xC6, 0x90, 0x4B, 0xA9, 0xC6, 0x28, 0x4E, 0xD2, 0x15, 0x42, 0x5A, 0x6B, 0x73, 0x29, 0x46, 0xEB, - 0x45, 0xDF, 0xAD, 0x96, 0x03, 0x03, 0xF9, 0xBC, 0x6C, 0x22, 0x91, 0xB5, 0xE6, 0x64, 0xB5, 0x54, - 0x52, 0x12, 0xD0, 0x7E, 0x9A, 0x41, 0xC0, 0xC5, 0xF9, 0x69, 0xD3, 0x58, 0x29, 0x25, 0xA7, 0x0A, - 0x4A, 0x29, 0x85, 0x90, 0x9F, 0x7E, 0xF6, 0xD5, 0x57, 0x5F, 0xBF, 0xDA, 0xED, 0xE7, 0xB6, 0x6D, - 0xDE, 0xBC, 0xB9, 0x52, 0x5A, 0xF6, 0x5D, 0x7B, 0xB2, 0x5E, 0x22, 0x62, 0xCA, 0xA5, 0xEF, 0x1A, - 0x1F, 0xE2, 0xB3, 0x67, 0x8F, 0x87, 0xC5, 0xC2, 0xCF, 0xA1, 0x20, 0xEE, 0x47, 0x8F, 0x84, 0xCE, - 0x9A, 0xA7, 0x8F, 0x1F, 0xBD, 0x7E, 0x73, 0x1D, 0x43, 0x32, 0x5A, 0x87, 0x90, 0x76, 0xE3, 0x64, - 0x82, 0xEE, 0xBB, 0xA6, 0x69, 0xDC, 0x03, 0x3B, 0xC1, 0x37, 0xD7, 0xC3, 0xC7, 0x44, 0x74, 0x50, - 0x45, 0xB0, 0xAA, 0x9F, 0xE5, 0xE8, 0x29, 0x15, 0x0E, 0x26, 0xD0, 0x5A, 0xB3, 0xC8, 0x9E, 0xFF, - 0x88, 0x31, 0xCA, 0x5A, 0xB3, 0xDB, 0x4F, 0xB9, 0x54, 0x56, 0x99, 0xB1, 0x2C, 0x56, 0x2A, 0x55, - 0x72, 0xE1, 0x93, 0x4E, 0x69, 0xD5, 0x36, 0xCE, 0x1C, 0x2A, 0x5C, 0x8B, 0x10, 0x50, 0x11, 0x9D, - 0xB5, 0x87, 0x9E, 0x0A, 0xE7, 0x34, 0x7F, 0x25, 0x48, 0x24, 0xA8, 0x56, 0x94, 0x52, 0x75, 0xAD, - 0xF6, 0x73, 0xE0, 0x93, 0x91, 0x88, 0x8C, 0x56, 0xDC, 0x8B, 0x28, 0xA5, 0x2A, 0xC7, 0x53, 0x0C, - 0x35, 0x98, 0x43, 0x74, 0xA0, 0xB0, 0xD6, 0x6A, 0x21, 0xE4, 0x30, 0x74, 0x9B, 0xFD, 0x44, 0x00, - 0x42, 0xC8, 0xE5, 0xA2, 0x97, 0x52, 0x74, 0x9D, 0xBB, 0xB9, 0xDD, 0xFD, 0xF6, 0xCB, 0xD7, 0xEF, - 0xBF, 0xFB, 0xF8, 0xE4, 0x64, 0xD1, 0xB6, 0x4E, 0x09, 0xB9, 0x5A, 0xAA, 0xD5, 0x72, 0x48, 0x29, - 0xBD, 0xB9, 0xBC, 0xFD, 0xF4, 0xF3, 0xD7, 0xDF, 0xBD, 0xBE, 0xDE, 0x6C, 0x76, 0xDB, 0xDD, 0x18, - 0x73, 0x26, 0xF8, 0x9D, 0x9F, 0x16, 0xE8, 0x10, 0x5F, 0xFB, 0xE4, 0xD1, 0xE9, 0x6A, 0xE8, 0x1E, - 0x9D, 0xAE, 0x4E, 0xD7, 0xAB, 0x4A, 0xF5, 0x9B, 0x97, 0x6F, 0xEF, 0xEE, 0xB6, 0xAF, 0xAF, 0x6E, - 0xEF, 0x37, 0x3B, 0x6B, 0xCD, 0xD9, 0xE9, 0x89, 0x56, 0xEA, 0xA5, 0x0F, 0xBB, 0x71, 0x3A, 0x59, - 0x2D, 0xCE, 0xCE, 0x4E, 0x90, 0xC8, 0xFB, 0xB0, 0x9F, 0x7C, 0x88, 0x91, 0xDF, 0x58, 0xAD, 0xF4, - 0x34, 0x7B, 0xAD, 0x54, 0x63, 0xAD, 0x0F, 0xF1, 0xFC, 0x6C, 0xAD, 0xB4, 0x8A, 0x29, 0xD7, 0x5A, - 0x59, 0x29, 0xC7, 0x0F, 0x3D, 0x1D, 0xC9, 0x8B, 0x5A, 0x2B, 0x87, 0xD0, 0xB3, 0xA8, 0xD5, 0x87, - 0x68, 0xB4, 0x46, 0xA4, 0xC5, 0x30, 0xE8, 0x18, 0xF5, 0x31, 0xB7, 0x57, 0x49, 0xB5, 0x5C, 0x9F, - 0xAD, 0x96, 0xC3, 0xE8, 0xA3, 0xEC, 0xD7, 0x76, 0x75, 0x0E, 0xDB, 0x1B, 0x42, 0x8A, 0x25, 0xED, - 0xC7, 0xE9, 0xEC, 0xF4, 0x44, 0x62, 0x8D, 0x29, 0x97, 0xCA, 0x3A, 0x40, 0xB9, 0x78, 0xFA, 0xDE, - 0xAB, 0xAF, 0xBF, 0x94, 0xFB, 0xAF, 0xCE, 0x9F, 0x9C, 0xBD, 0x2C, 0xE8, 0x8C, 0x6E, 0x9D, 0x33, - 0xDA, 0xB4, 0xCE, 0x38, 0x6B, 0x46, 0x1F, 0x2C, 0x63, 0x3A, 0xB5, 0xE6, 0x52, 0x9B, 0xC6, 0xED, - 0xA7, 0x59, 0x6B, 0xCE, 0x5F, 0xD7, 0x4A, 0x69, 0x96, 0xBF, 0x32, 0x2A, 0xCF, 0x34, 0xBF, 0xE1, - 0xF3, 0x17, 0xB1, 0x94, 0xC2, 0xAA, 0x77, 0x6B, 0x5D, 0xAD, 0x88, 0x94, 0xF8, 0x99, 0xE6, 0x9F, - 0x64, 0x4C, 0x45, 0xE9, 0x6C, 0xB4, 0xE1, 0x28, 0x6D, 0xAE, 0x10, 0x2E, 0xB5, 0x36, 0xAD, 0x03, - 0x51, 0x6B, 0xA9, 0xCE, 0x1A, 0x21, 0x45, 0x2E, 0xA5, 0xB1, 0xA6, 0xEB, 0x1A, 0x36, 0x48, 0x72, - 0x95, 0x5C, 0xCE, 0x95, 0x9B, 0xDF, 0x84, 0xD0, 0x0C, 0x90, 0x5B, 0xA7, 0xAD, 0xD6, 0x46, 0x69, - 0x63, 0x94, 0xD2, 0x8A, 0x19, 0x71, 0x21, 0x04, 0x00, 0xB2, 0x56, 0xA0, 0x14, 0xAC, 0x5C, 0xE9, - 0xC9, 0xF4, 0x68, 0x95, 0x04, 0xA0, 0x0F, 0xF1, 0xF3, 0xC7, 0x35, 0x92, 0xE8, 0xF7, 0x4E, 0xA5, - 0x07, 0xBD, 0x35, 0xFC, 0x4E, 0xA9, 0x88, 0xF4, 0x80, 0x82, 0x01, 0xC0, 0x43, 0xD7, 0x21, 0x1D, - 0xF9, 0xBB, 0x87, 0xBF, 0x44, 0x4A, 0xA1, 0x8D, 0x16, 0x52, 0x10, 0x81, 0x14, 0x92, 0x04, 0x70, - 0x6B, 0xC6, 0xC3, 0xBE, 0x23, 0x38, 0x67, 0x95, 0x08, 0x11, 0xDB, 0xC6, 0xA5, 0x94, 0x1B, 0x67, - 0x80, 0x7B, 0x3D, 0xA4, 0x44, 0xC4, 0x92, 0xCB, 0xC9, 0x62, 0x78, 0xFA, 0xF8, 0xB4, 0x6D, 0xDD, - 0xD7, 0xAF, 0xAE, 0x36, 0xBB, 0xF1, 0x80, 0x4F, 0x2B, 0x69, 0x94, 0x92, 0x52, 0x21, 0x56, 0x04, - 0x9A, 0x43, 0x80, 0xDF, 0x0B, 0x90, 0x61, 0x48, 0xDE, 0x18, 0x20, 0x80, 0x10, 0x03, 0x3B, 0xB1, - 0xEA, 0x41, 0x7E, 0xC9, 0x9A, 0x55, 0x2C, 0xB5, 0x6A, 0xA3, 0x01, 0xD4, 0x7E, 0x9C, 0x38, 0x10, - 0x38, 0x97, 0xAA, 0x94, 0x02, 0x29, 0x8D, 0xD6, 0x43, 0xDB, 0xFC, 0xFC, 0x57, 0x5F, 0xDC, 0xDE, - 0xEF, 0xFF, 0xF8, 0xC7, 0x1F, 0x6A, 0xAD, 0xC7, 0xFD, 0xF4, 0xF2, 0xD5, 0xDB, 0xA6, 0x69, 0x14, - 0x97, 0x27, 0x24, 0xC4, 0x8A, 0x81, 0x92, 0x89, 0x09, 0x09, 0xB8, 0x5C, 0xB2, 0xEF, 0x1B, 0x6B, - 0x8D, 0xB3, 0xA6, 0xD4, 0xCA, 0xC4, 0x87, 0xD1, 0xAA, 0xE4, 0x12, 0x42, 0x48, 0x31, 0x3D, 0x7F, - 0xF6, 0x18, 0x00, 0xC6, 0xC9, 0xF7, 0x5D, 0x37, 0xF9, 0xB0, 0x9B, 0x66, 0x76, 0xF5, 0x9F, 0x9F, - 0xAE, 0x6B, 0xAD, 0x6F, 0xDE, 0xDE, 0x5C, 0xDF, 0xDC, 0x8F, 0xE3, 0xD4, 0x38, 0xFB, 0xE6, 0xCD, - 0xDB, 0xFB, 0xED, 0xEE, 0xD9, 0xE3, 0x8B, 0xC6, 0x9A, 0x52, 0xF2, 0x34, 0x87, 0xE5, 0x30, 0x0C, - 0x7D, 0xCF, 0x3F, 0xFC, 0x18, 0xF3, 0x7E, 0x9A, 0x63, 0x2E, 0x52, 0xC8, 0xA1, 0x6F, 0x97, 0x43, - 0xFF, 0xE6, 0xF2, 0xE6, 0xE6, 0x6E, 0x1B, 0x62, 0x9C, 0xE7, 0x28, 0x04, 0x58, 0x6B, 0x1E, 0x3F, - 0x3A, 0x7D, 0xF6, 0xE4, 0x1C, 0x04, 0x58, 0x63, 0x1F, 0xAC, 0x45, 0x70, 0xF4, 0x4E, 0x1E, 0xFD, - 0xBF, 0x82, 0xC5, 0x9E, 0x3C, 0xEE, 0x1D, 0x15, 0x82, 0x22, 0xE7, 0x5A, 0x0B, 0xAA, 0xA3, 0x5B, - 0x16, 0x00, 0x22, 0xB7, 0xCE, 0x95, 0x32, 0x4E, 0x73, 0xCE, 0x25, 0xA5, 0x5C, 0x0A, 0x02, 0x88, - 0x52, 0xEA, 0x31, 0x1C, 0x05, 0x08, 0xA1, 0x94, 0x6A, 0xB4, 0x29, 0x95, 0x85, 0x78, 0x20, 0x65, - 0x25, 0x00, 0x63, 0x74, 0xD3, 0x68, 0xA3, 0xF8, 0x70, 0x94, 0x44, 0x94, 0x6B, 0x79, 0xB8, 0xF0, - 0x1E, 0x3D, 0x3A, 0x7B, 0xF5, 0xFA, 0xED, 0x6E, 0x3F, 0x12, 0xD1, 0xF9, 0xE9, 0x1A, 0x11, 0x53, - 0xCA, 0x31, 0xCE, 0xC3, 0xA2, 0x1F, 0xC7, 0x02, 0x00, 0xD6, 0x1A, 0xDE, 0x1D, 0x84, 0x94, 0x15, - 0x49, 0xFF, 0xCB, 0x3F, 0xFD, 0x41, 0x2E, 0xF5, 0x97, 0xBF, 0xF9, 0x16, 0x11, 0x8C, 0xD1, 0x9F, - 0x7F, 0xF5, 0x76, 0xBD, 0xEC, 0x5E, 0xBC, 0x73, 0xF1, 0xC3, 0x1F, 0xBC, 0xFB, 0xF2, 0xF5, 0x8D, - 0x94, 0xA2, 0x56, 0xFC, 0xE6, 0xBB, 0xAB, 0x17, 0xCF, 0xCE, 0x95, 0x91, 0x9F, 0xFC, 0xFA, 0x8B, - 0x7F, 0xFC, 0xC5, 0x17, 0x93, 0x8F, 0x4D, 0xE3, 0x5E, 0xBE, 0xB9, 0x9E, 0xC6, 0xC9, 0x59, 0xDD, - 0x38, 0x17, 0x62, 0x9A, 0xE6, 0x59, 0x80, 0xD0, 0x4A, 0x55, 0x44, 0x09, 0xA2, 0x12, 0x68, 0x29, - 0x19, 0xEA, 0xB2, 0x56, 0x6F, 0xF7, 0xF1, 0xBB, 0x57, 0x57, 0xFB, 0x71, 0xF6, 0x31, 0x2F, 0x97, - 0x4B, 0x29, 0x61, 0xB7, 0xDF, 0x9F, 0xAC, 0x96, 0xEB, 0xD5, 0x42, 0x4A, 0xF1, 0xBD, 0xF7, 0x9F, - 0x3F, 0x79, 0x74, 0x26, 0x95, 0x9C, 0x66, 0x6F, 0x8C, 0x5E, 0x2F, 0x17, 0x29, 0x15, 0xA5, 0xA5, - 0xB1, 0xA6, 0xEF, 0xDA, 0xCD, 0xFD, 0x5E, 0x4A, 0xB9, 0x5A, 0x0D, 0xAE, 0x71, 0x6D, 0xD7, 0x2C, - 0x08, 0x9D, 0x31, 0xC6, 0x18, 0x66, 0x94, 0x63, 0xC9, 0x8C, 0x4D, 0x02, 0x50, 0x4C, 0xF9, 0x7E, - 0xB3, 0xBB, 0xDF, 0xEC, 0x7D, 0x4C, 0x40, 0xD4, 0x75, 0xEE, 0xF4, 0x64, 0xC9, 0x13, 0x7B, 0x4A, - 0xB9, 0xED, 0x9A, 0x52, 0x2B, 0x12, 0x18, 0xAB, 0x87, 0xD5, 0xF2, 0xE3, 0x1F, 0xFC, 0xE0, 0x7E, - 0xF7, 0x0F, 0x85, 0xC4, 0xFA, 0xDD, 0x8F, 0xF7, 0xAF, 0x54, 0xB9, 0x79, 0x0B, 0xB5, 0xC6, 0x14, - 0x77, 0xE3, 0xA8, 0x04, 0x74, 0x8B, 0xB3, 0x5C, 0x6B, 0x0A, 0x21, 0xFA, 0xF4, 0x0E, 0x10, 0x82, - 0xBC, 0xBA, 0xBA, 0x3C, 0x5D, 0x5D, 0x37, 0xCD, 0xD0, 0x36, 0x06, 0x88, 0x9C, 0xD3, 0xC6, 0x9A, - 0xFD, 0xEC, 0xB1, 0x22, 0x4A, 0x41, 0x02, 0xA4, 0x52, 0xC3, 0x62, 0x88, 0x21, 0xB6, 0x4D, 0x23, - 0x04, 0x88, 0xD6, 0x49, 0x21, 0x43, 0x4C, 0x29, 0x07, 0x02, 0xA8, 0xA5, 0x70, 0xB7, 0x2B, 0x41, - 0xE6, 0x57, 0xFB, 0x70, 0xDF, 0x4A, 0x51, 0x10, 0x15, 0xA9, 0x74, 0x4C, 0xF6, 0xAD, 0x95, 0x78, - 0xF5, 0xCB, 0xA5, 0x60, 0x35, 0xA1, 0xC4, 0x52, 0xAA, 0x94, 0xB2, 0x62, 0x76, 0xF6, 0xC0, 0x97, - 0x4B, 0x29, 0x58, 0x0B, 0x5A, 0x4A, 0x35, 0xFA, 0x50, 0x8F, 0x24, 0xA5, 0x54, 0xD2, 0x48, 0x29, - 0x6B, 0x41, 0x00, 0x72, 0xCE, 0x32, 0xC2, 0xC5, 0xCF, 0xA8, 0xD6, 0xCA, 0x28, 0x69, 0xAD, 0x31, - 0x6C, 0x58, 0x21, 0x62, 0xE1, 0xAB, 0x50, 0x82, 0x61, 0x23, 0x02, 0xC2, 0x4A, 0x07, 0x7E, 0xBB, - 0xA2, 0x94, 0xC2, 0x3A, 0xC3, 0x85, 0x52, 0x52, 0x02, 0x5F, 0x1B, 0xF8, 0x7B, 0xEE, 0xC2, 0x87, - 0xE3, 0xEC, 0xFF, 0x27, 0x7E, 0x7D, 0xD8, 0x25, 0x01, 0x0E, 0xCD, 0xB5, 0x0F, 0x53, 0x18, 0x1D, - 0x75, 0x67, 0xFC, 0x07, 0x95, 0x92, 0xD6, 0xEA, 0x69, 0x06, 0x29, 0x45, 0xAE, 0x05, 0x91, 0x78, - 0x9B, 0xE0, 0x69, 0x2F, 0xE6, 0x1C, 0x63, 0xE6, 0x93, 0xB1, 0x69, 0x1A, 0x06, 0xD1, 0xB5, 0xD6, - 0x5A, 0x69, 0xEE, 0x2D, 0x3F, 0x59, 0x2D, 0xCE, 0xCF, 0xD7, 0xF7, 0xA3, 0xFF, 0xF6, 0xF2, 0x8E, - 0x63, 0x5D, 0x85, 0x10, 0x08, 0x58, 0x62, 0xE5, 0xB1, 0x34, 0xA5, 0x54, 0x11, 0x8F, 0xC1, 0x62, - 0x42, 0xB0, 0x60, 0x0A, 0xC8, 0x68, 0xCD, 0x84, 0xA3, 0x35, 0x56, 0x2B, 0xC5, 0x71, 0x8F, 0x87, - 0x9D, 0x86, 0x20, 0x95, 0x6C, 0x94, 0x16, 0x20, 0x0A, 0x56, 0x6B, 0x0D, 0x17, 0x1A, 0x18, 0xA3, - 0x4B, 0x45, 0x86, 0xFB, 0x62, 0x4C, 0x42, 0xC8, 0x2F, 0xBE, 0x79, 0xBD, 0x9F, 0xFC, 0x07, 0xEF, - 0x3E, 0x7D, 0xFE, 0xEC, 0x62, 0xB7, 0x1F, 0xDF, 0x5E, 0x5E, 0x9D, 0x9E, 0xAC, 0xD9, 0xC4, 0x66, - 0xD9, 0xCA, 0x56, 0xB0, 0x62, 0xDD, 0xEE, 0x47, 0x96, 0xF5, 0x31, 0x62, 0x2A, 0x85, 0xC8, 0xB9, - 0x8C, 0xD3, 0xA8, 0xB5, 0x31, 0x5A, 0x0B, 0x21, 0xBC, 0x8F, 0xBF, 0xFD, 0xE2, 0x1B, 0x00, 0xB1, - 0x5A, 0x2F, 0xCC, 0xA4, 0x39, 0x96, 0x2A, 0x84, 0x78, 0x7E, 0xB6, 0xF6, 0x21, 0xBE, 0x79, 0x7B, - 0x13, 0x63, 0x2A, 0xA5, 0x70, 0x54, 0xD1, 0x6A, 0xB9, 0x78, 0xF1, 0xFC, 0xE9, 0x38, 0xCE, 0x4A, - 0x6B, 0x24, 0x91, 0x2B, 0x7D, 0xFD, 0xF2, 0x8D, 0xBB, 0xBA, 0x6D, 0x5B, 0xB7, 0xDD, 0xEE, 0xF9, - 0xEA, 0xED, 0xDA, 0x86, 0x08, 0xFB, 0xBE, 0xFD, 0xEA, 0xDB, 0x37, 0x57, 0x37, 0x9B, 0xDD, 0x3C, - 0x59, 0x7D, 0xA8, 0xE6, 0x70, 0xCE, 0x01, 0x88, 0x9C, 0x6A, 0xD2, 0x1C, 0x41, 0x2E, 0x95, 0x3C, - 0xA6, 0xAA, 0x12, 0x4B, 0xEA, 0x91, 0x5B, 0x1D, 0x88, 0x8F, 0xAD, 0x1A, 0x85, 0x10, 0x4A, 0xE9, - 0xE3, 0x27, 0x48, 0x52, 0x4A, 0x55, 0x2B, 0x22, 0x56, 0xA4, 0x9C, 0x4B, 0x08, 0x71, 0xF2, 0x71, - 0x3F, 0x4E, 0x21, 0x26, 0x10, 0x30, 0x8E, 0x33, 0x00, 0x34, 0x6D, 0x23, 0x08, 0xDA, 0xD6, 0xB1, - 0xF2, 0x09, 0x80, 0x85, 0x44, 0x64, 0x8C, 0x22, 0x02, 0xAC, 0x3C, 0x2B, 0x17, 0xCD, 0x50, 0x06, - 0xA2, 0x38, 0x3E, 0x54, 0x02, 0x44, 0x2E, 0x45, 0x29, 0xC9, 0xF5, 0x86, 0xD6, 0xDA, 0xED, 0x38, - 0x75, 0x4D, 0xE3, 0x43, 0x42, 0x02, 0xA6, 0x4A, 0x9B, 0xA6, 0x71, 0x2E, 0xB0, 0x0D, 0x00, 0x00, - 0x4A, 0x45, 0xCC, 0xD5, 0x18, 0x52, 0xFF, 0xF5, 0x7F, 0xF3, 0xDF, 0x7F, 0xF7, 0xF6, 0x76, 0xF6, - 0xC9, 0x59, 0xC3, 0xF1, 0x81, 0xF3, 0x1C, 0x6F, 0xEE, 0xC6, 0xC9, 0x87, 0x93, 0xD5, 0x82, 0xE9, - 0xB6, 0x47, 0x67, 0x2B, 0x1F, 0xC2, 0xCF, 0xFE, 0xFE, 0xD3, 0xBF, 0xFF, 0xE4, 0x8B, 0xC9, 0xC7, - 0xD9, 0x87, 0xCB, 0xAB, 0xDB, 0x9C, 0xB3, 0x92, 0x0A, 0x40, 0x20, 0x51, 0xCA, 0x65, 0xB7, 0x1B, - 0xAD, 0x35, 0x5C, 0x0F, 0x6E, 0xB5, 0xEE, 0x1B, 0x17, 0x53, 0x9E, 0x7D, 0x78, 0x74, 0xB6, 0xB6, - 0xC6, 0x5C, 0xDF, 0x6E, 0xBE, 0x7B, 0x7D, 0xC9, 0xE2, 0xCF, 0xAE, 0x69, 0xC6, 0x69, 0x46, 0xA4, - 0x8B, 0x47, 0xA7, 0x17, 0xE7, 0x27, 0x27, 0x27, 0xAB, 0x67, 0x4F, 0x1E, 0x59, 0xA3, 0xAD, 0x36, - 0x43, 0xDF, 0xAD, 0x57, 0x0B, 0x29, 0xE5, 0xEC, 0x43, 0x29, 0x95, 0xED, 0x63, 0x5F, 0x7E, 0xFD, - 0xAA, 0x69, 0x9B, 0xF5, 0x6A, 0xC1, 0x5B, 0x7A, 0xDF, 0x3A, 0xAD, 0x15, 0x02, 0xC5, 0x94, 0x73, - 0xAD, 0x2C, 0xA4, 0x44, 0xA4, 0x52, 0x71, 0x3F, 0x4D, 0xAC, 0x11, 0x29, 0xB5, 0xB4, 0xCE, 0x3D, - 0xBE, 0x38, 0xED, 0xFB, 0xA6, 0x6D, 0xDD, 0x6A, 0x35, 0x70, 0x11, 0x96, 0xD5, 0x46, 0x2A, 0xE1, - 0xAC, 0xD6, 0xD6, 0x0C, 0x9D, 0xDB, 0x6C, 0xEE, 0xA7, 0x90, 0x6C, 0xDB, 0x4B, 0x29, 0xD2, 0xBC, - 0x1F, 0xF7, 0x7B, 0xFE, 0x69, 0x12, 0xE1, 0xD9, 0x93, 0xE7, 0xCE, 0x59, 0x2D, 0x85, 0xD2, 0xFA, - 0xDD, 0x1F, 0xFD, 0xD1, 0xF5, 0xE5, 0xDB, 0xEB, 0x6F, 0xBF, 0x6A, 0x17, 0xA7, 0xA5, 0xBF, 0xD0, - 0x52, 0xD0, 0xD1, 0xEB, 0x9F, 0x52, 0x21, 0x80, 0xB6, 0x69, 0xC6, 0xD9, 0xF3, 0x4D, 0x5B, 0x91, - 0x9C, 0xB5, 0xAC, 0xB0, 0x6D, 0x1A, 0xDB, 0x75, 0x6D, 0x8C, 0x1C, 0x7A, 0x21, 0x6B, 0x45, 0x66, - 0xEE, 0x0F, 0x7E, 0x42, 0x00, 0x00, 0xEA, 0x9A, 0x46, 0x48, 0xC9, 0x17, 0xA0, 0x10, 0x02, 0x10, - 0x10, 0xA8, 0x6D, 0x1C, 0x10, 0xB0, 0xB8, 0x29, 0x97, 0x92, 0x73, 0xE1, 0x21, 0xEA, 0xE0, 0x8F, - 0x61, 0x6C, 0xC5, 0xB9, 0xAE, 0x75, 0x8D, 0xB3, 0xBC, 0x26, 0x38, 0x6B, 0xD8, 0x5D, 0xAC, 0xB5, - 0xD4, 0x4A, 0x02, 0x09, 0x63, 0x7E, 0x77, 0x73, 0x2A, 0x25, 0x78, 0x0A, 0x38, 0xEA, 0xCE, 0x19, - 0xBA, 0xE5, 0x10, 0x02, 0xC1, 0xFB, 0x24, 0x96, 0xC3, 0x4F, 0x12, 0x2B, 0x32, 0xB4, 0xE7, 0x9C, - 0x91, 0x52, 0xE0, 0x61, 0x4F, 0x7C, 0x28, 0x63, 0x3D, 0x1C, 0x4C, 0x5C, 0x0A, 0x06, 0xBF, 0x1B, - 0xD7, 0xE0, 0x01, 0xFB, 0xFF, 0xBD, 0x03, 0x4B, 0x3C, 0xFC, 0x7A, 0x98, 0xE9, 0xE8, 0x08, 0x86, - 0x57, 0xC4, 0x5A, 0xAA, 0x10, 0xC2, 0xC7, 0x74, 0x14, 0x13, 0x55, 0xA6, 0x17, 0x6B, 0xA9, 0x3E, - 0xC4, 0x18, 0x33, 0x22, 0xE6, 0x94, 0xE6, 0x69, 0x0E, 0x21, 0x54, 0xAC, 0xAD, 0x73, 0x15, 0xB1, - 0x20, 0x1A, 0xA3, 0xFE, 0xE0, 0xA3, 0x17, 0x9B, 0xFD, 0x7C, 0x75, 0xBB, 0xA9, 0x47, 0x1B, 0xA6, - 0x10, 0x82, 0xF5, 0x04, 0x7C, 0x82, 0x2B, 0xA5, 0x94, 0xD2, 0x47, 0x29, 0x19, 0xF2, 0xCD, 0x27, - 0x84, 0xA8, 0x07, 0xF6, 0x99, 0xB4, 0xD6, 0xB9, 0x94, 0x98, 0xB2, 0x96, 0xCA, 0x5A, 0xCD, 0xC5, - 0x31, 0xAC, 0xF3, 0x20, 0x80, 0x9C, 0x93, 0xB5, 0x96, 0xBF, 0xEC, 0xC5, 0x62, 0x60, 0x34, 0x8D, - 0x8E, 0x7C, 0x2E, 0x73, 0xAC, 0x57, 0x37, 0x77, 0x7F, 0xF5, 0xF7, 0xBF, 0x54, 0x4A, 0x3F, 0x3A, - 0x5F, 0x6F, 0x36, 0x5B, 0x21, 0xE5, 0x93, 0x27, 0xE7, 0xD6, 0x6A, 0x3F, 0x87, 0x52, 0x6A, 0xCC, - 0x99, 0xD9, 0x80, 0xD9, 0x87, 0xC9, 0x87, 0xBB, 0xBB, 0x0D, 0x00, 0xA4, 0x9C, 0x57, 0x8B, 0x05, - 0x1D, 0x12, 0xE2, 0xD4, 0x6E, 0x9C, 0xE7, 0x39, 0xD4, 0x8A, 0x3E, 0x86, 0xED, 0x6E, 0x04, 0x22, - 0xCD, 0xEC, 0x0D, 0x88, 0xBB, 0xFB, 0xED, 0xCB, 0xD7, 0x97, 0xBB, 0xFD, 0xC4, 0x2D, 0xD1, 0x5D, - 0xD7, 0x36, 0x8D, 0xC5, 0x4A, 0x42, 0xC8, 0xEB, 0xDB, 0xFB, 0xCF, 0xBE, 0xFC, 0xE6, 0xDB, 0x97, - 0x6F, 0x2F, 0xAF, 0xEF, 0x27, 0x1F, 0xA6, 0x69, 0xE6, 0x84, 0x9F, 0x8A, 0x78, 0x7D, 0xB3, 0xD9, - 0x4D, 0xF3, 0x76, 0x37, 0x7D, 0xFE, 0xF5, 0xCB, 0x39, 0x44, 0x25, 0x35, 0x1F, 0xDC, 0xA5, 0x20, - 0x2B, 0x2E, 0x41, 0xF0, 0x21, 0x85, 0x52, 0xC8, 0x5C, 0x6B, 0xCE, 0x35, 0xA5, 0x92, 0x2B, 0x0A, - 0x01, 0x0C, 0xC5, 0x1E, 0x04, 0x8C, 0x44, 0x39, 0xD7, 0x18, 0x33, 0x1D, 0x8D, 0xAE, 0x5C, 0x2D, - 0x4A, 0x04, 0x05, 0x31, 0x97, 0xB2, 0x1B, 0xA7, 0xD9, 0xC7, 0xD9, 0x87, 0x10, 0x12, 0xBF, 0x89, - 0xC4, 0xA9, 0xBF, 0x42, 0x5A, 0x6B, 0xB8, 0x81, 0xD8, 0x87, 0xC4, 0x18, 0x1B, 0x03, 0xFF, 0x4A, - 0x6A, 0x36, 0xA5, 0x39, 0xE7, 0xA4, 0x14, 0x74, 0xBC, 0xDB, 0x90, 0x28, 0xA6, 0x14, 0x63, 0x3C, - 0x0A, 0x8F, 0x29, 0xA5, 0xBC, 0x58, 0x2E, 0x80, 0x80, 0x01, 0x38, 0x56, 0x1D, 0x6D, 0xB7, 0xD3, - 0xED, 0xCD, 0x7D, 0x29, 0x75, 0x18, 0x3A, 0x66, 0x45, 0x39, 0x71, 0x13, 0x40, 0xA8, 0x7F, 0xF9, - 0x9F, 0xFC, 0xBB, 0xED, 0x6E, 0x86, 0xA3, 0x32, 0x3B, 0xA6, 0x3C, 0xF4, 0xED, 0xF9, 0xE9, 0xAA, - 0x94, 0x3A, 0xF9, 0x78, 0xB2, 0xEE, 0x67, 0xEF, 0x7F, 0xF3, 0xF9, 0x77, 0xFF, 0xF0, 0x8B, 0x2F, - 0x6E, 0x37, 0xA3, 0x35, 0x6A, 0xBB, 0xDB, 0x85, 0x94, 0x8C, 0x52, 0x5D, 0xDB, 0x00, 0x88, 0x9C, - 0x33, 0xBF, 0x48, 0x6D, 0xD7, 0x48, 0x21, 0xB9, 0x2C, 0x03, 0x4B, 0xE9, 0xBB, 0x76, 0xBD, 0x5A, - 0xAC, 0x97, 0x8B, 0x8F, 0x3F, 0x7A, 0x77, 0xF2, 0xFE, 0x6E, 0xB3, 0x6F, 0x1B, 0x6B, 0xAD, 0x56, - 0x52, 0x9E, 0xAC, 0x17, 0x43, 0xDF, 0x9E, 0xAC, 0x96, 0x5D, 0xDB, 0x9C, 0x9D, 0x2C, 0xD7, 0xAB, - 0x05, 0x6B, 0xCA, 0x9B, 0xE6, 0x90, 0xCA, 0x94, 0x72, 0x9E, 0xA6, 0x59, 0x0A, 0xD9, 0x75, 0x6D, - 0xD7, 0x36, 0x04, 0xA4, 0x94, 0x5A, 0x2E, 0x07, 0xA3, 0xB5, 0x31, 0x0A, 0x24, 0x43, 0xBC, 0x98, - 0x33, 0xE6, 0xC4, 0xBD, 0x2D, 0xC4, 0x23, 0xC9, 0x7E, 0xF2, 0x04, 0xA4, 0xA4, 0x34, 0xC6, 0x3A, - 0xA3, 0xCF, 0x4E, 0x57, 0xEB, 0xD5, 0x82, 0x21, 0x5B, 0x6B, 0x4D, 0xDB, 0x38, 0xE7, 0x0C, 0x2B, - 0x51, 0x41, 0x48, 0x4D, 0xD9, 0x48, 0x9A, 0x52, 0xAD, 0xB9, 0x4A, 0xEB, 0xA8, 0x96, 0x38, 0x6E, - 0x4B, 0xCE, 0x02, 0xC0, 0x6A, 0xD3, 0xAF, 0xD6, 0x5D, 0xD7, 0xD5, 0x30, 0x3D, 0x79, 0xFF, 0xA3, - 0xE1, 0xD9, 0x87, 0x5F, 0xFD, 0xEA, 0x93, 0xE9, 0xEE, 0xED, 0xF0, 0xE8, 0x5D, 0xAF, 0x4F, 0x08, - 0x4B, 0xD7, 0x75, 0xC6, 0x9A, 0x43, 0xD4, 0xCC, 0xA2, 0x67, 0xCC, 0x85, 0xAD, 0x3D, 0x48, 0x22, - 0xA5, 0x2C, 0x79, 0x43, 0xAC, 0xE8, 0x9C, 0xEB, 0xDB, 0xA6, 0x69, 0x9C, 0xB5, 0xA6, 0x69, 0x5C, - 0xAD, 0x58, 0x4B, 0x65, 0xE9, 0x16, 0x00, 0x58, 0x63, 0xDA, 0xD6, 0x09, 0x21, 0x0E, 0x0D, 0xF5, - 0xB5, 0x1A, 0xA3, 0xBB, 0xB6, 0xB1, 0xD6, 0xF2, 0x13, 0xF3, 0x60, 0xF4, 0xEB, 0xDA, 0xA6, 0x69, - 0x1B, 0xAD, 0x65, 0x66, 0x97, 0xB8, 0xD6, 0x42, 0x4A, 0xAC, 0xB8, 0x5C, 0x74, 0x5A, 0xA9, 0xC6, - 0xD9, 0xB6, 0x75, 0x1C, 0x12, 0x77, 0x08, 0x1E, 0x20, 0x2C, 0xA5, 0x7A, 0xCF, 0x7D, 0xAE, 0x07, - 0x34, 0x84, 0xA5, 0x1E, 0x15, 0x2B, 0x63, 0x1F, 0x4C, 0x75, 0x1F, 0x3A, 0xC9, 0x49, 0x70, 0x25, - 0x22, 0x17, 0x2F, 0x0A, 0x21, 0x8C, 0x35, 0x4A, 0xB1, 0x42, 0x4D, 0x1C, 0x36, 0xC4, 0x63, 0x31, - 0x21, 0x1C, 0x3D, 0x6E, 0x6C, 0x80, 0x3E, 0xAE, 0x99, 0xF8, 0xE0, 0x3B, 0x7E, 0x38, 0xD8, 0xE0, - 0x9F, 0x47, 0xF4, 0xB1, 0xB4, 0x8C, 0x41, 0x7D, 0xD6, 0xDC, 0xA6, 0x98, 0x2A, 0x51, 0x4C, 0x39, - 0xA5, 0xC2, 0x24, 0x86, 0x51, 0x06, 0x0F, 0x90, 0x7C, 0x4E, 0xA5, 0x28, 0x2D, 0x79, 0x24, 0x61, - 0x7F, 0xA8, 0x10, 0x22, 0xE6, 0x74, 0x73, 0xBB, 0x79, 0xF7, 0x9D, 0x0B, 0xAB, 0xCD, 0xEB, 0xAB, - 0xDB, 0x10, 0x23, 0x11, 0xF1, 0xD0, 0xC5, 0xC2, 0x5B, 0xAE, 0xD1, 0x06, 0x00, 0xA5, 0x24, 0xD1, - 0xA1, 0x28, 0xB7, 0xD4, 0xC2, 0x94, 0xA2, 0x31, 0x86, 0x43, 0xD5, 0xB4, 0x52, 0x87, 0xBC, 0xE4, - 0xE3, 0xEB, 0xC4, 0x5F, 0xA9, 0xD1, 0x5A, 0x08, 0x2A, 0x15, 0x73, 0x2D, 0x2C, 0xD9, 0x47, 0xA2, - 0x10, 0x52, 0xDF, 0xBB, 0xC5, 0xA2, 0x9B, 0xE6, 0xC0, 0xC3, 0x32, 0x13, 0x9D, 0x43, 0xDB, 0xE6, - 0x52, 0x7E, 0xFD, 0xDB, 0xAF, 0x77, 0xBB, 0xF9, 0xFC, 0x6C, 0x3D, 0x74, 0xED, 0x38, 0xCD, 0x31, - 0xA4, 0xED, 0x6E, 0x3A, 0x3D, 0x5B, 0x2F, 0x86, 0x5E, 0x1C, 0xBC, 0x4A, 0x86, 0x49, 0x46, 0x6E, - 0xCF, 0x7D, 0xF6, 0xE4, 0xA2, 0xED, 0x5A, 0xA3, 0x8D, 0xD2, 0xEA, 0xEC, 0x74, 0xB5, 0x5E, 0x2F, - 0x27, 0xEF, 0x9D, 0xB5, 0x5A, 0x69, 0x24, 0xE4, 0x86, 0x6F, 0x56, 0xAE, 0xDF, 0x6F, 0xF7, 0x57, - 0x57, 0xB7, 0x4A, 0xF2, 0x07, 0x77, 0xD8, 0xFE, 0x62, 0x2A, 0x5F, 0x7F, 0xF7, 0x7A, 0x9C, 0x3D, - 0xFF, 0x18, 0x87, 0xBE, 0x5D, 0x2E, 0x7A, 0x25, 0xD5, 0xE5, 0xCD, 0xBD, 0xF7, 0x29, 0xA6, 0xCC, - 0x95, 0xEC, 0x00, 0x10, 0x52, 0x8E, 0x29, 0x31, 0x5E, 0xC0, 0xD1, 0x47, 0xA5, 0xD4, 0x94, 0xF3, - 0xEC, 0x03, 0x00, 0xD4, 0x8A, 0x5C, 0xAC, 0xE9, 0x43, 0xF4, 0x3E, 0xB2, 0x21, 0x3C, 0xC4, 0xB8, - 0x1F, 0x67, 0x1F, 0x92, 0x0F, 0x31, 0xE7, 0x5A, 0x10, 0x73, 0x2E, 0x0C, 0xEA, 0x8F, 0x5C, 0xBA, - 0x55, 0x2B, 0x08, 0x8E, 0xDB, 0x0B, 0xFB, 0xFD, 0x54, 0x8E, 0x56, 0x16, 0x71, 0xCC, 0x6B, 0xE3, - 0xC0, 0xD1, 0x5C, 0x6A, 0x88, 0x89, 0xE9, 0x66, 0xA9, 0xA4, 0xD2, 0x2C, 0x20, 0xC7, 0x07, 0x50, - 0x85, 0x85, 0x99, 0x31, 0xA5, 0x8A, 0x35, 0x84, 0xB8, 0xD9, 0x8D, 0xD7, 0xB7, 0x1B, 0xD6, 0xF7, - 0xB1, 0xA8, 0xA2, 0x96, 0xF2, 0xED, 0x77, 0x6F, 0x6E, 0x6F, 0x37, 0x84, 0x87, 0xBC, 0xB3, 0x8B, - 0x8B, 0xF3, 0x6E, 0x68, 0x95, 0x92, 0x42, 0xCA, 0x69, 0xF2, 0x44, 0x04, 0x48, 0x15, 0x49, 0x80, - 0xD0, 0x15, 0x69, 0xBD, 0x1A, 0xE6, 0x39, 0x0A, 0x09, 0xA1, 0x64, 0x6B, 0xCD, 0x1C, 0xD2, 0xF8, - 0xE6, 0x2A, 0xA5, 0x98, 0x52, 0xFA, 0xE5, 0x6F, 0x8A, 0x52, 0xD2, 0x6A, 0x53, 0x4A, 0x8D, 0x29, - 0xD6, 0x2C, 0x1B, 0x6B, 0xA4, 0x52, 0x8D, 0xB3, 0x39, 0x97, 0xED, 0x76, 0x8F, 0x88, 0x8D, 0xB3, - 0x55, 0xD7, 0xCD, 0x76, 0x24, 0xAC, 0x5A, 0x9B, 0x39, 0x84, 0xC6, 0x18, 0x29, 0xE4, 0x6A, 0xD1, - 0xFF, 0xE8, 0x07, 0xEF, 0x0D, 0x43, 0x77, 0x7D, 0xB3, 0xE9, 0xDA, 0x86, 0x3D, 0x46, 0x39, 0x97, - 0xE7, 0xCF, 0x2E, 0x38, 0x31, 0xAA, 0x6D, 0x5C, 0xD7, 0xB9, 0x71, 0xF2, 0xAC, 0xE7, 0x00, 0x10, - 0xB5, 0xE0, 0x6E, 0x9C, 0x42, 0x8C, 0x4A, 0xCA, 0xAE, 0x6D, 0x52, 0xCA, 0x6D, 0xEB, 0xDE, 0x7F, - 0xF7, 0x69, 0xCE, 0xA5, 0x22, 0x95, 0x52, 0x41, 0x30, 0xF7, 0xC4, 0xBD, 0x9B, 0x50, 0x89, 0x0E, - 0x9E, 0x87, 0x8A, 0xD3, 0xEC, 0x95, 0x90, 0xAC, 0x36, 0xF2, 0x3E, 0x59, 0x67, 0x59, 0xBA, 0xDE, - 0xBB, 0x36, 0x84, 0x2C, 0xA5, 0xD0, 0x5A, 0xD6, 0x82, 0x42, 0x8A, 0x8A, 0x68, 0xAC, 0xC6, 0x29, - 0x5B, 0x81, 0xEB, 0xD5, 0x52, 0x0A, 0x19, 0x53, 0x76, 0xEF, 0xFF, 0x50, 0x2A, 0x7D, 0xF7, 0xEA, - 0xAB, 0x71, 0x7B, 0x5F, 0xAB, 0x56, 0xB6, 0x3D, 0x79, 0xF1, 0xBD, 0xE5, 0xF9, 0xF9, 0x70, 0xF1, - 0xC2, 0x87, 0xB4, 0xB9, 0xBB, 0x2B, 0xA5, 0x4E, 0xB1, 0x56, 0x83, 0x8F, 0xCE, 0xD6, 0x20, 0x84, - 0xF7, 0xA1, 0x56, 0x6C, 0x1B, 0xD7, 0x34, 0x2E, 0xE7, 0x32, 0x0C, 0x1D, 0x11, 0x29, 0xAD, 0x9C, - 0x52, 0xB9, 0x68, 0x22, 0x1A, 0xBA, 0xA6, 0x22, 0x35, 0xD6, 0x38, 0xDB, 0xCD, 0x5C, 0x10, 0x2D, - 0xE5, 0x1C, 0x52, 0x88, 0x51, 0x4A, 0xB1, 0x1F, 0xFD, 0x6E, 0x9C, 0x91, 0x78, 0x62, 0xE2, 0x83, - 0x8C, 0x8C, 0xD1, 0x4A, 0x4A, 0x26, 0x31, 0x85, 0x14, 0x7C, 0xF8, 0x2A, 0xA5, 0x52, 0x4A, 0x6C, - 0x02, 0x67, 0xBC, 0x26, 0xA5, 0x24, 0x85, 0x40, 0x22, 0x21, 0x45, 0x88, 0xC9, 0x18, 0x0D, 0x44, - 0x88, 0xA2, 0x69, 0x1C, 0xEF, 0x53, 0x4C, 0x96, 0x13, 0x1D, 0x72, 0x05, 0x4A, 0xAE, 0x20, 0x0E, - 0xF6, 0x34, 0x56, 0x13, 0x3F, 0xC8, 0xBC, 0xF2, 0xC1, 0x55, 0x2E, 0xB4, 0x52, 0x24, 0x80, 0x08, - 0x2A, 0x47, 0x7E, 0x1E, 0xA5, 0xDB, 0x87, 0xE3, 0x40, 0x82, 0x10, 0xA0, 0x04, 0x48, 0x90, 0x4A, - 0x02, 0x16, 0xAE, 0x14, 0x11, 0x5A, 0x4A, 0x62, 0x74, 0xFC, 0xD8, 0x4B, 0xC1, 0x6B, 0x2F, 0xA3, - 0x6F, 0x42, 0x82, 0x14, 0x12, 0x25, 0x7B, 0x34, 0x05, 0x48, 0xF1, 0x3B, 0x50, 0x8D, 0xA0, 0x22, - 0xA6, 0x58, 0x4A, 0x45, 0x1F, 0x02, 0xAB, 0xD5, 0x8C, 0x56, 0x4A, 0xAA, 0x98, 0x12, 0xD6, 0xCA, - 0xA1, 0x98, 0xC6, 0x98, 0xDD, 0x38, 0x12, 0x80, 0xB6, 0xA6, 0xD6, 0x5A, 0x6A, 0xE5, 0xFE, 0xE3, - 0x17, 0xCF, 0x2E, 0xDE, 0xB9, 0x38, 0xFB, 0xE5, 0x6F, 0xBF, 0x8E, 0xC7, 0xF2, 0x3A, 0x42, 0x3A, - 0x54, 0x5F, 0x48, 0x89, 0x88, 0x6C, 0xB5, 0xAA, 0x1C, 0x1A, 0x43, 0x58, 0x2B, 0x2A, 0x21, 0x39, - 0xFC, 0x38, 0xA5, 0xE4, 0x53, 0x56, 0x42, 0x94, 0x52, 0x1A, 0xE7, 0x80, 0xFB, 0xF4, 0xC4, 0x01, - 0x0D, 0xC4, 0x43, 0x58, 0x20, 0x69, 0x7D, 0xE8, 0xE2, 0x54, 0x4A, 0x19, 0x63, 0x66, 0xEF, 0xC7, - 0x09, 0x4E, 0x4F, 0x56, 0x8D, 0xF3, 0xA9, 0x20, 0x07, 0x75, 0x08, 0x29, 0x7C, 0xCC, 0x2F, 0x9E, - 0x3D, 0xCE, 0xA5, 0x7E, 0xF3, 0xF2, 0xCD, 0xE5, 0xCD, 0xED, 0x9F, 0xFE, 0xE4, 0xE3, 0x9F, 0xFE, - 0xE8, 0xA3, 0xFB, 0xFB, 0x5D, 0xD3, 0xB8, 0xA1, 0xEF, 0x57, 0xAB, 0x21, 0x84, 0x28, 0x84, 0x98, - 0x26, 0x7F, 0x73, 0x7B, 0xFF, 0xEC, 0xC9, 0x23, 0x76, 0xD7, 0x5E, 0xDF, 0xDC, 0x31, 0xC9, 0x8E, - 0x88, 0x4F, 0x2E, 0xCE, 0xE7, 0xD9, 0x0F, 0x43, 0x77, 0x7B, 0xB7, 0xFD, 0xF4, 0xB7, 0x5F, 0x7D, - 0xFC, 0xE1, 0x7B, 0x52, 0x88, 0xDB, 0xBB, 0xCD, 0xF9, 0xD9, 0xDA, 0x18, 0xFD, 0x83, 0x8F, 0xDE, - 0x7B, 0xF1, 0xEC, 0xF1, 0xE5, 0xD5, 0xED, 0x7E, 0x9C, 0x52, 0xA9, 0x0C, 0x5A, 0x95, 0x52, 0x3E, - 0xFE, 0xE8, 0x83, 0xCF, 0xBF, 0xFE, 0xF6, 0xF2, 0xFA, 0x6E, 0xD1, 0xB7, 0xAB, 0x45, 0x0F, 0x24, - 0x5E, 0xBE, 0xB9, 0x1E, 0x67, 0xCF, 0xE1, 0x51, 0x52, 0x48, 0x1F, 0x63, 0xAD, 0x14, 0x62, 0x44, - 0x24, 0x76, 0x41, 0x18, 0xAD, 0xD9, 0xD3, 0xD1, 0x75, 0x1D, 0xEB, 0x1B, 0x58, 0xFF, 0x8A, 0x88, - 0xB9, 0x62, 0x8C, 0x39, 0xE5, 0xC4, 0x38, 0x17, 0x9F, 0x71, 0x0C, 0x3F, 0x59, 0x63, 0xAC, 0x35, - 0x6D, 0xEB, 0x10, 0x71, 0x9A, 0x3D, 0x22, 0xA9, 0xC9, 0x73, 0x61, 0x58, 0x88, 0x2C, 0xA3, 0x7E, - 0x10, 0x55, 0x88, 0x87, 0xA2, 0x7B, 0x21, 0x44, 0xF0, 0x41, 0x1B, 0x2D, 0x95, 0x4C, 0xA9, 0xCC, - 0x21, 0x1A, 0x63, 0x40, 0x88, 0x5A, 0x8B, 0x14, 0xA2, 0x69, 0x9A, 0x14, 0x53, 0xD3, 0x98, 0xAE, - 0x6D, 0x7D, 0x88, 0x4A, 0x6B, 0x00, 0xC8, 0xB9, 0xDC, 0x6D, 0x76, 0xB3, 0x8F, 0x7D, 0xDF, 0xF6, - 0x7D, 0x7B, 0xB2, 0x5A, 0xCD, 0x3E, 0x2C, 0x97, 0xC3, 0xB7, 0x2F, 0xDF, 0xA4, 0x52, 0x97, 0xD0, - 0xB3, 0x50, 0xB4, 0x54, 0x02, 0x80, 0x6F, 0x5F, 0xBE, 0x41, 0x44, 0xE7, 0xDC, 0xD9, 0xC9, 0xCA, - 0x1A, 0x5D, 0x6A, 0xD5, 0xE5, 0x58, 0x2F, 0xAC, 0xB4, 0x52, 0x19, 0xB1, 0x62, 0xCE, 0x69, 0xBF, - 0xDF, 0x13, 0x90, 0x73, 0x76, 0x31, 0x74, 0x02, 0x60, 0xB3, 0xDD, 0x69, 0x25, 0x4F, 0x96, 0x03, - 0x22, 0x2E, 0x86, 0xAE, 0xE4, 0x62, 0xAD, 0x56, 0x52, 0x79, 0x1F, 0x84, 0x10, 0x8B, 0xAE, 0x6D, - 0x5B, 0x27, 0x41, 0xEC, 0xA7, 0xB9, 0x94, 0x62, 0xB5, 0x06, 0x21, 0xF6, 0xE3, 0xF4, 0x9E, 0x79, - 0xDC, 0x77, 0x2D, 0x12, 0x2D, 0x16, 0x1D, 0xD7, 0x64, 0x20, 0x51, 0xD7, 0x35, 0x6C, 0x52, 0xD1, - 0x5A, 0x29, 0x2D, 0xBB, 0xAE, 0x61, 0xC3, 0x54, 0xCE, 0x39, 0xC4, 0xE8, 0x43, 0x34, 0x5A, 0x39, - 0x37, 0x20, 0xA2, 0x8F, 0x29, 0xE7, 0x8C, 0x88, 0xFC, 0x40, 0x63, 0x4A, 0x52, 0x4A, 0x20, 0x91, - 0x13, 0xC3, 0x0D, 0x12, 0x09, 0x8F, 0x58, 0x63, 0x4D, 0xB9, 0xC4, 0x9C, 0x97, 0x43, 0x9F, 0x4B, - 0x29, 0xB9, 0xF4, 0x5D, 0xB3, 0x5A, 0x76, 0x3C, 0x86, 0x28, 0x25, 0x9D, 0xD5, 0x88, 0x98, 0x73, - 0xE5, 0xAB, 0x40, 0x08, 0x81, 0x95, 0x94, 0xD4, 0x25, 0xC7, 0x9C, 0xB3, 0x36, 0x7A, 0x9E, 0xBD, - 0xEB, 0xDA, 0xF6, 0xD1, 0xD3, 0xC7, 0x5D, 0x17, 0x7E, 0xFE, 0x33, 0xA9, 0x94, 0x70, 0x5D, 0x31, - 0x43, 0xBF, 0xBE, 0x40, 0x82, 0x52, 0x72, 0x4E, 0x29, 0xC6, 0xB0, 0x3E, 0x39, 0x11, 0xED, 0xD0, - 0x3A, 0xB7, 0x9F, 0x66, 0xEF, 0xE3, 0xA3, 0xB3, 0x75, 0xDB, 0x34, 0xBB, 0x69, 0x56, 0x4A, 0xAD, - 0x16, 0x3D, 0x27, 0x79, 0x49, 0x29, 0x7D, 0x88, 0x1C, 0xB1, 0x1D, 0x63, 0x0C, 0x81, 0xA1, 0x2B, - 0x99, 0x4B, 0xA9, 0x48, 0xEC, 0x76, 0x64, 0x33, 0x73, 0x45, 0x64, 0x60, 0xAB, 0x94, 0x62, 0xB4, - 0x33, 0x5A, 0x19, 0xA3, 0x89, 0x30, 0xA4, 0xC8, 0xC6, 0x03, 0x63, 0x14, 0x22, 0x1A, 0xA3, 0xFB, - 0xBE, 0x3D, 0x0C, 0x2C, 0xCE, 0xB2, 0xAF, 0xDB, 0x5A, 0xCB, 0xFE, 0xC4, 0xD9, 0x47, 0x9C, 0x66, - 0x96, 0x01, 0x1B, 0xA3, 0xF1, 0x08, 0x1E, 0x68, 0xAD, 0x38, 0xD9, 0x82, 0x6F, 0x60, 0x63, 0x74, - 0xAD, 0x74, 0x0C, 0x45, 0x31, 0x6C, 0x97, 0x00, 0x20, 0xFE, 0x69, 0xD4, 0x5A, 0xF9, 0xCC, 0x02, - 0x00, 0xA6, 0xDE, 0xE5, 0xA1, 0xB7, 0x9C, 0x79, 0x49, 0x0B, 0x47, 0x39, 0x05, 0xB3, 0x59, 0xFC, - 0x5F, 0xB2, 0x81, 0x41, 0x1E, 0x8A, 0x9C, 0x95, 0xD4, 0x56, 0x4A, 0xE0, 0xB6, 0x44, 0x66, 0x04, - 0x40, 0xC8, 0x4A, 0x28, 0xB8, 0x88, 0xA2, 0x16, 0x26, 0xE0, 0x8E, 0x7C, 0x39, 0x32, 0x39, 0x13, - 0x52, 0x46, 0xA4, 0x5C, 0x8A, 0x94, 0x52, 0x09, 0x23, 0xA5, 0xAC, 0x58, 0xC7, 0xA9, 0x74, 0x6D, - 0xDB, 0x38, 0x77, 0xB7, 0xD9, 0x01, 0x41, 0xAD, 0x18, 0x42, 0xE4, 0x63, 0x45, 0x4A, 0x39, 0xF4, - 0xDD, 0xD9, 0xC9, 0xF2, 0xE5, 0xE5, 0x2D, 0x09, 0x69, 0x8D, 0x14, 0x42, 0xE4, 0x9C, 0xD9, 0xEC, - 0x2E, 0x85, 0xCC, 0xB5, 0x00, 0x1C, 0x2A, 0xDA, 0x78, 0x79, 0xAC, 0x48, 0x42, 0x08, 0x6B, 0x4C, - 0xA9, 0x95, 0xC3, 0xF2, 0x7A, 0x29, 0xB5, 0x56, 0x7C, 0x32, 0x2A, 0x21, 0x39, 0x92, 0x04, 0x0F, - 0x23, 0xCF, 0x41, 0x17, 0xCA, 0x08, 0x5A, 0xC1, 0xC3, 0xDF, 0xA3, 0xA4, 0xCC, 0xB9, 0xDC, 0x6F, - 0xF6, 0xE7, 0xA7, 0x8B, 0xB7, 0xD7, 0x3B, 0xA1, 0x15, 0xD4, 0x9A, 0x4B, 0x19, 0xBD, 0x07, 0x21, - 0x9E, 0x5E, 0x9C, 0x0F, 0x7D, 0x3B, 0x79, 0xFF, 0x4F, 0xBF, 0xFE, 0xE2, 0xFA, 0x76, 0xF3, 0xD3, - 0x1F, 0x7D, 0x64, 0xAD, 0xFD, 0xC5, 0xAF, 0x3E, 0x5B, 0x2D, 0x87, 0xF3, 0xF3, 0xD3, 0xC6, 0x39, - 0x63, 0xF4, 0x07, 0xEF, 0x3F, 0xDF, 0x6E, 0xF7, 0x08, 0xE0, 0x00, 0x7C, 0xDF, 0x6F, 0xB6, 0xFB, - 0xB3, 0x93, 0xF3, 0xE0, 0xD2, 0x67, 0x9F, 0x7F, 0xFD, 0xDD, 0xAB, 0xB7, 0xC3, 0xD0, 0x9D, 0x9F, - 0x9E, 0x7E, 0xF0, 0xDE, 0xF3, 0x71, 0xF6, 0x6D, 0xD3, 0x86, 0x94, 0x37, 0xBB, 0x91, 0xA7, 0x5B, - 0x2D, 0xE5, 0xB7, 0xAF, 0xDE, 0xB4, 0x8D, 0x53, 0x4A, 0xEF, 0xF7, 0x53, 0x48, 0xB1, 0x6D, 0x5A, - 0xAD, 0xD5, 0xD3, 0x8B, 0xB3, 0x9C, 0x72, 0x2A, 0x65, 0xBB, 0xDD, 0xD7, 0x8A, 0xBB, 0x71, 0x26, - 0x80, 0xFD, 0x34, 0x57, 0x44, 0xEE, 0x73, 0x62, 0x18, 0x8B, 0xD5, 0x94, 0xB9, 0x54, 0xAD, 0x4D, - 0x29, 0x75, 0x9A, 0x3D, 0x21, 0x36, 0xAD, 0x23, 0xA2, 0x5C, 0xEA, 0xEC, 0x63, 0xDB, 0x3A, 0x29, - 0x94, 0x52, 0x4A, 0xA3, 0xAE, 0x15, 0x39, 0xC7, 0x62, 0x9C, 0x7C, 0x2A, 0x45, 0x0A, 0xBE, 0x15, - 0xC4, 0x30, 0xB4, 0x6D, 0xD3, 0x30, 0x0B, 0x5F, 0x11, 0xE7, 0x10, 0xB5, 0x92, 0x0C, 0x69, 0x31, - 0x7D, 0x2C, 0x15, 0xA7, 0x36, 0x96, 0xA3, 0x64, 0x9A, 0xB4, 0xD1, 0x9C, 0xF9, 0x9C, 0x4B, 0x05, - 0x10, 0xE3, 0x1C, 0xA4, 0x92, 0xA5, 0x14, 0x09, 0x60, 0xE6, 0xA0, 0xB5, 0x04, 0x40, 0xD7, 0x34, - 0x42, 0xAA, 0xBB, 0xFB, 0x5D, 0x29, 0x85, 0x58, 0x5A, 0x58, 0x2B, 0x2F, 0x34, 0x52, 0x8E, 0xF3, - 0x34, 0x5F, 0x5D, 0xDF, 0x35, 0x8D, 0xCD, 0x39, 0x95, 0xEA, 0x72, 0xC1, 0x2F, 0xBF, 0x7E, 0x39, - 0xFB, 0x60, 0xAD, 0x99, 0xBD, 0x27, 0x82, 0x94, 0xB3, 0x56, 0x6A, 0xE8, 0xBB, 0x10, 0xA3, 0x7E, - 0xF6, 0xF4, 0x6C, 0xB3, 0x9D, 0xA7, 0xC9, 0xFB, 0x29, 0xCC, 0xDE, 0x4F, 0xD3, 0xE4, 0x7D, 0xB0, - 0xC6, 0x70, 0xEF, 0xC3, 0x66, 0xBB, 0x4F, 0x31, 0x29, 0x25, 0x9E, 0x3D, 0x3E, 0xB7, 0x5A, 0x03, - 0xD0, 0x72, 0x68, 0x6F, 0xEE, 0xB6, 0x5D, 0xDB, 0x6A, 0x25, 0xDF, 0x79, 0x72, 0x6E, 0x8C, 0x6E, - 0x1B, 0xD7, 0xB5, 0xCD, 0xA2, 0xEB, 0xBE, 0x7E, 0xF9, 0xE6, 0x7E, 0xB3, 0x2B, 0x54, 0x95, 0x10, - 0x27, 0xEB, 0xE5, 0x7A, 0x35, 0x70, 0x1B, 0x90, 0xD6, 0xBA, 0x12, 0x71, 0xA9, 0xA5, 0x94, 0xB2, - 0x20, 0x59, 0xA3, 0x88, 0x68, 0xF6, 0x51, 0x08, 0x91, 0x52, 0xDE, 0x8F, 0x23, 0x22, 0xDD, 0xDE, - 0x6D, 0xDB, 0xC6, 0xBD, 0xFB, 0xD1, 0x8B, 0xA1, 0x6B, 0x63, 0x3E, 0x34, 0xB6, 0x2A, 0x25, 0x8D, - 0xD5, 0x00, 0xC2, 0x39, 0x2B, 0x95, 0xC4, 0xCA, 0x78, 0x30, 0x70, 0x3A, 0x4A, 0x45, 0x9C, 0x7C, - 0xCC, 0x0C, 0x4B, 0xC6, 0xDC, 0x35, 0x8E, 0x88, 0x52, 0x4A, 0x67, 0x27, 0xCB, 0xA1, 0x6F, 0x19, - 0x09, 0x0A, 0x3E, 0x71, 0xA1, 0x6F, 0xC5, 0xCA, 0x17, 0x91, 0x94, 0x22, 0xE5, 0xDC, 0xDA, 0x3E, - 0xE6, 0xFA, 0xFA, 0x9B, 0x2F, 0x90, 0xC4, 0x38, 0xCF, 0xB6, 0x69, 0x01, 0x6A, 0xD8, 0xED, 0x53, - 0x0C, 0x4D, 0xD3, 0x08, 0xD7, 0x4F, 0xD3, 0x6C, 0xAD, 0xB3, 0xCE, 0x6E, 0x6F, 0x6E, 0x73, 0xC9, - 0xCA, 0xB8, 0x0F, 0x3E, 0xF8, 0xE0, 0x4D, 0xE9, 0xE7, 0x71, 0x6C, 0x9B, 0xA6, 0xEB, 0xDA, 0xE5, - 0xD0, 0xDE, 0xDD, 0xEF, 0xA7, 0xC9, 0x33, 0xB4, 0xB7, 0x5E, 0x2D, 0x88, 0x28, 0xC6, 0xBC, 0x5A, - 0x2D, 0xB0, 0x62, 0x88, 0xD1, 0x5A, 0x5B, 0x4A, 0x09, 0x21, 0xFA, 0x10, 0xB5, 0xD6, 0x5C, 0xC1, - 0xE8, 0xAC, 0x2D, 0x58, 0x63, 0x2A, 0x58, 0x0F, 0x0A, 0x03, 0x73, 0xB4, 0xE6, 0x6A, 0xA5, 0x94, - 0x62, 0xDF, 0xBB, 0x92, 0xA5, 0x96, 0x5C, 0x85, 0x40, 0x3E, 0x92, 0x52, 0xCA, 0x52, 0x0A, 0x44, - 0x7B, 0x0C, 0x1E, 0x08, 0xFC, 0x9D, 0x3A, 0x67, 0x04, 0x88, 0xA1, 0x53, 0xFC, 0x90, 0x09, 0xC1, - 0xC0, 0x10, 0xA3, 0x63, 0x07, 0x4D, 0x06, 0x1E, 0xDB, 0xB4, 0xE8, 0x98, 0x2A, 0x25, 0x84, 0x13, - 0xA2, 0x94, 0x52, 0x52, 0xCE, 0xBC, 0xFC, 0xD5, 0x63, 0xB6, 0x00, 0x10, 0x29, 0x29, 0x19, 0x8E, - 0x04, 0x00, 0x02, 0xA1, 0xA4, 0x96, 0x56, 0x12, 0x41, 0xCE, 0xDC, 0xB6, 0x89, 0x47, 0xE5, 0x86, - 0x00, 0x22, 0x65, 0xAC, 0x32, 0x96, 0x52, 0xD8, 0x7C, 0xF1, 0x0B, 0xEF, 0x83, 0x8F, 0xB1, 0x1F, - 0x86, 0xA6, 0x6B, 0x05, 0x80, 0x6D, 0x1A, 0xB7, 0x58, 0x75, 0xFD, 0x20, 0x95, 0x06, 0xD3, 0x10, - 0x40, 0xC9, 0x51, 0x3C, 0x48, 0xAD, 0x80, 0x40, 0x40, 0x0C, 0x09, 0x0E, 0x37, 0x39, 0x5A, 0x6B, - 0xD8, 0x01, 0xC0, 0x40, 0x9E, 0xB6, 0x06, 0x09, 0x95, 0x52, 0xDA, 0x28, 0xF4, 0x20, 0x89, 0xAC, - 0x31, 0x15, 0xA1, 0x56, 0xFA, 0xE6, 0xD5, 0x15, 0x97, 0xC4, 0xF3, 0x27, 0x2B, 0x25, 0x8B, 0xD4, - 0xD1, 0xE7, 0xC4, 0xEF, 0x5E, 0x2E, 0x85, 0x31, 0xAC, 0xE4, 0x03, 0x09, 0x58, 0x74, 0x1D, 0x01, - 0x69, 0xA9, 0x99, 0xD6, 0x60, 0x9A, 0x8C, 0xD5, 0x00, 0x24, 0x15, 0x86, 0x90, 0x52, 0x96, 0x4A, - 0x5A, 0xAB, 0x1F, 0xDC, 0x05, 0x09, 0x09, 0xB1, 0xC2, 0x51, 0xBE, 0x6B, 0x8C, 0x29, 0xA5, 0xEC, - 0xC7, 0xB9, 0xB1, 0x9A, 0xA7, 0x4F, 0xC6, 0x07, 0x4A, 0x29, 0x21, 0xC6, 0x5A, 0xEB, 0x62, 0x18, - 0x94, 0x52, 0x80, 0x78, 0xBF, 0xDD, 0xFF, 0x2F, 0xFF, 0xFB, 0x5F, 0xBC, 0xFF, 0xE2, 0xE9, 0xBF, - 0xFA, 0x8F, 0x7E, 0xBC, 0xDD, 0xEE, 0xFF, 0xEE, 0x1F, 0x7F, 0xA5, 0x95, 0x22, 0x21, 0xDE, 0x79, - 0x7A, 0x21, 0x85, 0xB4, 0xD6, 0x38, 0xE7, 0xAE, 0x6E, 0x6E, 0x17, 0x8B, 0xDE, 0x87, 0x20, 0x95, - 0x4C, 0xB9, 0xB4, 0x4D, 0x93, 0x73, 0xB9, 0xDF, 0xEE, 0xAC, 0x31, 0x9B, 0xCD, 0x6E, 0xB7, 0x1B, - 0x8D, 0xB1, 0xDF, 0xBD, 0xBA, 0x7C, 0xFE, 0xF4, 0xC2, 0x87, 0xE0, 0x7D, 0x90, 0x42, 0x6E, 0x76, - 0xA3, 0x56, 0x2A, 0xE7, 0x32, 0xCF, 0x5E, 0x0A, 0xB9, 0x5E, 0x9D, 0x5B, 0x6B, 0x57, 0xCB, 0xC5, - 0xED, 0xDD, 0xE6, 0xFA, 0xF6, 0x7E, 0x9A, 0x03, 0x03, 0x61, 0x31, 0x25, 0xDE, 0xB7, 0x8C, 0xD6, - 0xDC, 0x1F, 0xAA, 0xA4, 0xDA, 0x4F, 0x53, 0xD7, 0x34, 0xE3, 0xEC, 0x85, 0x10, 0x7D, 0xEB, 0x5A, - 0x67, 0xA7, 0xC9, 0x8F, 0xE3, 0x6C, 0xAD, 0x25, 0x00, 0x6B, 0xD4, 0x6A, 0x31, 0xE8, 0x43, 0x0E, - 0x07, 0x10, 0xC0, 0x38, 0xCD, 0xDB, 0x71, 0xAA, 0x88, 0x47, 0x2D, 0x9E, 0xF0, 0x31, 0x35, 0xCE, - 0x23, 0xA2, 0x90, 0x0A, 0x2B, 0xB6, 0xD5, 0x4A, 0x29, 0x1A, 0x6B, 0x18, 0xD7, 0xE4, 0x69, 0x40, - 0x4A, 0x09, 0x74, 0xB0, 0x6A, 0x19, 0xAD, 0x6B, 0x9D, 0x84, 0x00, 0x6B, 0x4C, 0x4C, 0x55, 0x08, - 0xA8, 0x58, 0xA7, 0x79, 0x56, 0x4A, 0x72, 0xFA, 0x40, 0xDF, 0x35, 0xDC, 0x9D, 0xF9, 0xE4, 0x64, - 0xBD, 0xDB, 0xEF, 0x6F, 0x6E, 0xEF, 0x40, 0x88, 0xB6, 0x69, 0x7C, 0xC9, 0x97, 0x97, 0xD7, 0x6F, - 0xAF, 0x6E, 0xDE, 0x7D, 0xE7, 0x29, 0x11, 0xDD, 0xDC, 0xDC, 0x6B, 0xAD, 0x17, 0x8B, 0xFE, 0xF1, - 0xC5, 0xF9, 0xCD, 0xED, 0x66, 0xB3, 0xDD, 0x29, 0xAD, 0xA6, 0x79, 0x3E, 0xA0, 0xAE, 0x44, 0x3C, - 0xC7, 0x29, 0x29, 0xF4, 0xD5, 0xCD, 0x36, 0xC5, 0x74, 0x73, 0x77, 0x97, 0x52, 0xF6, 0x21, 0xAC, - 0x57, 0x0B, 0xA9, 0x54, 0x08, 0x31, 0xC6, 0x34, 0x8E, 0x13, 0x1C, 0x9F, 0x2A, 0x21, 0xC4, 0xF9, - 0xE9, 0xAA, 0x6B, 0x9B, 0xDD, 0x38, 0x3E, 0x7B, 0xF2, 0xA8, 0xEF, 0xDA, 0xFB, 0xFB, 0xAD, 0x35, - 0x7A, 0xB5, 0x5E, 0xA6, 0x54, 0xDE, 0x5E, 0xDD, 0xD5, 0x5A, 0xAD, 0x31, 0x5D, 0xD3, 0x34, 0x8D, - 0xEB, 0xBB, 0xC6, 0x18, 0x3D, 0x87, 0x34, 0xCE, 0xA1, 0x56, 0xBC, 0xBB, 0xDF, 0xE5, 0x52, 0xE7, - 0x39, 0x72, 0x7E, 0x29, 0x83, 0x7C, 0xBB, 0xC9, 0x07, 0x1F, 0xAE, 0x88, 0xD6, 0xEB, 0x05, 0x01, - 0x5C, 0xDF, 0x6E, 0xAD, 0x35, 0xEF, 0x3C, 0xBB, 0x58, 0xF4, 0xBD, 0x75, 0xDA, 0x38, 0xAB, 0x0F, - 0xEA, 0x3B, 0xA3, 0x95, 0x42, 0xE0, 0x4E, 0x1A, 0x41, 0x48, 0x5A, 0x6B, 0x8E, 0xA9, 0xA4, 0x83, - 0x04, 0xA9, 0x7A, 0x1F, 0x43, 0x4C, 0xDE, 0xFB, 0xAE, 0xB5, 0xAD, 0x73, 0x15, 0x79, 0x31, 0xB1, - 0x4A, 0x48, 0x42, 0x0A, 0x29, 0x97, 0x52, 0xE4, 0xEF, 0x07, 0x45, 0x91, 0x00, 0x2A, 0xE8, 0x7A, - 0xD4, 0xED, 0xEB, 0x2F, 0x7E, 0x3D, 0x9C, 0x3D, 0xDE, 0xEF, 0x77, 0xFB, 0xDD, 0xFD, 0xB0, 0x3A, - 0x7F, 0xFA, 0xEC, 0xC5, 0x9B, 0x5A, 0x56, 0xEF, 0x7C, 0x78, 0xB7, 0xB9, 0x5B, 0x10, 0x9C, 0x9C, - 0x3D, 0x52, 0xC6, 0xF9, 0x79, 0xCA, 0x39, 0xAD, 0x56, 0x27, 0xCB, 0xD3, 0xB3, 0x71, 0x96, 0xCE, - 0xA8, 0xAE, 0x6D, 0xD8, 0x0A, 0x3B, 0xCD, 0xF1, 0xEC, 0x64, 0xD5, 0x36, 0xAE, 0x6B, 0xDB, 0xAE, - 0x6D, 0x63, 0x4A, 0x5A, 0x1B, 0x67, 0x4D, 0x4C, 0xA9, 0xD4, 0xB2, 0xDF, 0x4F, 0x5A, 0xEB, 0x94, - 0xE3, 0x38, 0xFB, 0xB6, 0x71, 0xAC, 0x4E, 0x98, 0x43, 0xD8, 0xEF, 0xE7, 0xC9, 0x7B, 0x00, 0x32, - 0x46, 0x61, 0x25, 0x29, 0x0F, 0xD6, 0x3C, 0x21, 0x04, 0x2B, 0xBC, 0xD9, 0x8A, 0x5C, 0x0A, 0x5A, - 0xAB, 0xE7, 0xD9, 0x23, 0x12, 0xFB, 0x2E, 0x95, 0x4E, 0x07, 0x8C, 0xBC, 0x56, 0x00, 0xD0, 0xA0, - 0x10, 0xC1, 0x59, 0x7D, 0xA0, 0x0B, 0x4A, 0x71, 0x46, 0xB3, 0x86, 0x80, 0x65, 0x8C, 0x4A, 0x29, - 0x63, 0x14, 0x80, 0xC1, 0x07, 0x7C, 0x9B, 0x48, 0x08, 0xC1, 0x4A, 0x54, 0xEE, 0x12, 0x86, 0x43, - 0xFC, 0xB4, 0xC0, 0x83, 0x20, 0x5F, 0x54, 0x02, 0xAA, 0x28, 0x84, 0x40, 0xA4, 0x5A, 0xB1, 0xD4, - 0x0A, 0xE5, 0xE0, 0xF4, 0xAE, 0x87, 0x3E, 0x47, 0x09, 0x20, 0x80, 0x50, 0xB9, 0x36, 0xDF, 0x5D, - 0x4E, 0x6F, 0xBE, 0x0E, 0xB7, 0xAF, 0xAE, 0xBE, 0xFB, 0xB2, 0x48, 0x55, 0x10, 0x04, 0x80, 0x31, - 0x3A, 0xE7, 0x8A, 0x20, 0x96, 0xA7, 0xA7, 0xAB, 0xF5, 0xAA, 0x94, 0x22, 0x9B, 0xE1, 0xD9, 0x47, - 0x3F, 0x39, 0x7B, 0xF1, 0xFD, 0x52, 0x92, 0x20, 0x3C, 0xCA, 0x47, 0x65, 0xAE, 0xBC, 0xCB, 0x08, - 0xC9, 0xD6, 0xE5, 0x5A, 0xA7, 0xC9, 0xE7, 0x82, 0x15, 0x23, 0x08, 0xD1, 0xB5, 0x6D, 0xA9, 0x34, - 0x0C, 0x3D, 0x0B, 0x02, 0x78, 0xCA, 0x20, 0x44, 0x6B, 0x54, 0xA9, 0x35, 0xE6, 0xC2, 0x16, 0xD4, - 0x94, 0x0A, 0x3B, 0x9F, 0x0B, 0x56, 0xCD, 0xAB, 0xAD, 0xD2, 0xBC, 0xC5, 0x6A, 0x46, 0x67, 0x6A, - 0x9D, 0x43, 0x64, 0xEE, 0x32, 0xE5, 0xA2, 0x4A, 0x15, 0x00, 0x21, 0x46, 0x25, 0x84, 0xED, 0xB4, - 0x35, 0x7A, 0xE8, 0x5B, 0x22, 0x6A, 0x1A, 0x27, 0x85, 0x08, 0x29, 0x0B, 0x01, 0x8D, 0xB3, 0x73, - 0x88, 0x8C, 0x62, 0xD3, 0x31, 0x69, 0x1A, 0x09, 0xEF, 0x36, 0x63, 0x2E, 0x85, 0x38, 0xA1, 0xFB, - 0x68, 0x81, 0x48, 0x39, 0xEF, 0xC6, 0xD1, 0x5A, 0x5B, 0x10, 0x87, 0xA1, 0x8B, 0xA9, 0x7C, 0xF1, - 0xF5, 0xAB, 0xCD, 0x6E, 0xFC, 0x93, 0x9F, 0xFC, 0xE0, 0xC9, 0xC5, 0xF9, 0x76, 0xBB, 0x7F, 0x7B, - 0x7D, 0x77, 0x7B, 0xBB, 0xE5, 0x7B, 0x65, 0xB9, 0x5C, 0x58, 0x6B, 0xFE, 0xE4, 0xA7, 0x3F, 0x7C, - 0x74, 0xB6, 0x46, 0xA4, 0x1F, 0x7D, 0xFC, 0xC1, 0xDB, 0xCB, 0xDB, 0x2F, 0xBF, 0x7A, 0x49, 0x00, - 0x52, 0x8A, 0xBB, 0xBB, 0x7B, 0x9F, 0xD2, 0x34, 0x79, 0x44, 0x7C, 0x73, 0x79, 0xC3, 0xAF, 0x24, - 0x12, 0x4D, 0x93, 0x1F, 0x86, 0x6E, 0xF6, 0xC1, 0x39, 0xBB, 0xE8, 0xBB, 0xFB, 0xCD, 0x6E, 0x31, - 0xF4, 0x67, 0xEB, 0x65, 0xE8, 0xDA, 0xCD, 0x76, 0x94, 0x32, 0x57, 0x44, 0x1F, 0x53, 0xA9, 0xA8, - 0x95, 0xE6, 0x3B, 0x9B, 0xBF, 0xC0, 0x52, 0x51, 0x08, 0xAE, 0x31, 0x54, 0xE7, 0x27, 0xAB, 0xC6, - 0xD9, 0x39, 0x84, 0x9C, 0xF3, 0x72, 0x18, 0x42, 0x0C, 0x73, 0x48, 0x8B, 0xBE, 0x65, 0x9F, 0x03, - 0xD7, 0x89, 0x01, 0xC8, 0xFD, 0x34, 0x85, 0x10, 0x95, 0xE6, 0xF6, 0x29, 0x2E, 0xAC, 0xCB, 0x53, - 0xC5, 0x8A, 0x68, 0x8D, 0x31, 0x46, 0x03, 0x40, 0xDB, 0x3A, 0x09, 0xC0, 0x81, 0xE3, 0x88, 0x35, - 0x85, 0x22, 0x04, 0xB8, 0xC6, 0x02, 0x40, 0x08, 0xC1, 0x13, 0xD4, 0x5A, 0xD8, 0x09, 0xED, 0x9C, - 0x49, 0x6C, 0x05, 0x03, 0x3A, 0x66, 0x64, 0xD6, 0x69, 0x0E, 0xAE, 0xB1, 0xB7, 0x77, 0x9B, 0x71, - 0x9C, 0x9D, 0x73, 0x8F, 0x2F, 0xCE, 0x5F, 0xBF, 0xB9, 0xBA, 0xBC, 0xBC, 0x11, 0x42, 0x20, 0xD0, - 0xE8, 0xC3, 0xFD, 0x66, 0xAB, 0x15, 0x6B, 0xD6, 0x60, 0x37, 0x8E, 0x5F, 0x7F, 0xFB, 0xEA, 0xFC, - 0xFC, 0x44, 0x6B, 0x19, 0x53, 0x94, 0x52, 0x86, 0x10, 0x16, 0xC3, 0x50, 0x73, 0xF9, 0xE5, 0xAF, - 0x3F, 0x5B, 0x2E, 0x16, 0x5A, 0x2B, 0xF5, 0xA3, 0x3F, 0xFE, 0x37, 0x77, 0x9B, 0x4D, 0xCA, 0xF9, - 0x64, 0xBD, 0xEA, 0xBB, 0xD6, 0x87, 0x94, 0x73, 0x0A, 0x21, 0xFA, 0x18, 0x09, 0x88, 0x5B, 0x3C, - 0x80, 0xA0, 0x6F, 0x9B, 0x8B, 0xF3, 0x35, 0x37, 0xD4, 0xC7, 0x94, 0x6F, 0xEE, 0xB6, 0xB3, 0x4F, - 0x31, 0xD7, 0xCD, 0x6E, 0xFC, 0xE6, 0xE5, 0x9B, 0xD7, 0x6F, 0xAF, 0xAD, 0x35, 0x43, 0xDF, 0x2D, - 0x97, 0xFD, 0xD0, 0x77, 0x29, 0xE7, 0xFD, 0x7E, 0xF2, 0x21, 0x4A, 0x29, 0xA7, 0xD9, 0xCF, 0x3E, - 0xB0, 0xA4, 0xA0, 0xEB, 0x9A, 0xB6, 0x6D, 0x94, 0x92, 0xDB, 0xDD, 0x78, 0x7B, 0xB7, 0xD9, 0x8F, - 0x93, 0xB3, 0xF6, 0xEC, 0x64, 0x25, 0x40, 0xDC, 0x6E, 0x76, 0xDF, 0xFF, 0xF0, 0xF9, 0xD3, 0x27, - 0xE7, 0xD6, 0x99, 0xC6, 0x19, 0xA3, 0x15, 0x48, 0x29, 0x95, 0x04, 0x10, 0x52, 0x31, 0x35, 0x21, - 0x98, 0x53, 0x63, 0xD4, 0xE3, 0xC1, 0x5B, 0xE3, 0x63, 0xDE, 0xEE, 0xC6, 0x79, 0x9A, 0x17, 0x8B, - 0xEE, 0xEC, 0x74, 0xE5, 0xAC, 0xE1, 0x04, 0x5E, 0xAD, 0x64, 0x2E, 0x25, 0x1F, 0x22, 0x62, 0x2A, - 0xBF, 0xC0, 0xE9, 0x68, 0xCD, 0x22, 0x80, 0x9C, 0x8B, 0x6B, 0x86, 0xE9, 0xE6, 0xF5, 0xCD, 0xFD, - 0xED, 0xFD, 0xED, 0x35, 0x46, 0xFF, 0xC1, 0x0F, 0x7F, 0x9A, 0x36, 0xD7, 0xFB, 0xFB, 0x9B, 0xD5, - 0x8B, 0xEF, 0xDF, 0xDF, 0x5C, 0xAF, 0xCF, 0xCE, 0xCF, 0x1F, 0x3F, 0xD3, 0x52, 0x7F, 0xFA, 0xF3, - 0xBF, 0xFE, 0xF2, 0xD3, 0x5F, 0x9C, 0x9F, 0x9C, 0x3C, 0xFD, 0xFE, 0x9F, 0x04, 0x52, 0x6D, 0x63, - 0x9D, 0x63, 0xFC, 0xDE, 0x9E, 0x9E, 0xAC, 0xDA, 0xC6, 0x0D, 0x43, 0xB7, 0xE8, 0x3B, 0x38, 0xA8, - 0xA5, 0x8E, 0x5E, 0x42, 0xAD, 0x84, 0x90, 0xDA, 0x98, 0xA6, 0xB1, 0x42, 0x08, 0x4E, 0x6D, 0x65, - 0xDB, 0x6D, 0xCE, 0xC5, 0x19, 0xC3, 0x91, 0x32, 0x00, 0xE0, 0x43, 0xEC, 0xBB, 0xB6, 0x6D, 0xD9, - 0xA7, 0x52, 0x10, 0xB9, 0xF2, 0x47, 0x38, 0xB6, 0x2F, 0x18, 0x56, 0xD9, 0x60, 0x8C, 0xA9, 0x14, - 0xEE, 0xB8, 0x05, 0x56, 0x24, 0x6A, 0xA5, 0x9C, 0xD5, 0x42, 0x08, 0x29, 0x40, 0x49, 0x69, 0x8D, - 0xB6, 0xF6, 0x90, 0x81, 0x25, 0x25, 0x2B, 0x9D, 0x05, 0x2F, 0x71, 0xB9, 0x1E, 0x5A, 0x43, 0x84, - 0x90, 0x0C, 0x81, 0xE5, 0x9C, 0xB9, 0x12, 0xFC, 0xC0, 0x84, 0x62, 0x7D, 0xA0, 0x23, 0xC5, 0xD1, - 0x01, 0xC9, 0x12, 0x22, 0xFE, 0x53, 0x3C, 0x49, 0x21, 0x21, 0x12, 0x20, 0x92, 0x00, 0x12, 0xB6, - 0xAD, 0xAF, 0x3F, 0xFB, 0xEE, 0x3F, 0xFC, 0x6F, 0x9F, 0x7D, 0xFA, 0x8B, 0xCB, 0x9B, 0xBB, 0x04, - 0x4A, 0x6A, 0x33, 0x2C, 0x57, 0x15, 0x20, 0xE5, 0xBA, 0x8F, 0x79, 0x0C, 0x71, 0x9E, 0xFD, 0xDE, - 0xC7, 0x5C, 0xCA, 0xF6, 0xE6, 0xED, 0xAB, 0xCF, 0x7F, 0x25, 0x52, 0xEC, 0xD7, 0x8F, 0x84, 0xB1, - 0x84, 0x15, 0x00, 0x72, 0xAE, 0xE3, 0x34, 0x4F, 0x53, 0x20, 0xA2, 0x9C, 0x4A, 0xCC, 0x99, 0xDB, - 0x42, 0x4B, 0x41, 0xEF, 0x63, 0xCA, 0x19, 0x84, 0xE0, 0x6C, 0x1F, 0x10, 0x72, 0xF6, 0xBE, 0x6D, - 0x9A, 0xB6, 0x71, 0x21, 0x46, 0x1F, 0x52, 0xCC, 0x25, 0xE6, 0x02, 0x02, 0x24, 0x40, 0x2C, 0x55, - 0x2A, 0x59, 0x91, 0xA4, 0x90, 0x20, 0x84, 0xD2, 0x3A, 0xE7, 0x82, 0x88, 0x52, 0x49, 0xAD, 0x35, - 0x10, 0x4C, 0x3E, 0x10, 0x40, 0xDF, 0xB5, 0x7D, 0xE3, 0x8E, 0x1A, 0x76, 0x6A, 0x9D, 0x3D, 0x59, - 0x2F, 0x1B, 0x67, 0x39, 0xC1, 0x89, 0x9D, 0x3D, 0x5A, 0x2B, 0xD6, 0x9D, 0x6B, 0xA5, 0x8C, 0xD2, - 0xD6, 0x68, 0xA3, 0x35, 0x67, 0x96, 0xF2, 0x5F, 0xC5, 0x8A, 0xCD, 0x07, 0x12, 0x56, 0x08, 0x41, - 0x04, 0xB9, 0x30, 0x10, 0x4F, 0x1C, 0x40, 0x94, 0x4B, 0x95, 0x52, 0x94, 0x52, 0xBE, 0x7D, 0xF9, - 0xF6, 0xE2, 0xD1, 0xE9, 0xBB, 0xCF, 0x9F, 0xC4, 0x94, 0xAF, 0x6F, 0x36, 0xDB, 0xED, 0x9E, 0xE1, - 0x8E, 0x57, 0xAF, 0x2F, 0xBF, 0xF8, 0xFA, 0x25, 0x01, 0x6C, 0xF6, 0x13, 0x0F, 0xCE, 0x6F, 0x2F, - 0x6F, 0x63, 0x8C, 0x3F, 0xF8, 0xF0, 0xDD, 0xCF, 0xBE, 0xF8, 0xE6, 0xE6, 0x76, 0xA3, 0xA4, 0xEC, - 0xDA, 0x96, 0xFD, 0xF0, 0x52, 0x48, 0xEB, 0x6C, 0x0C, 0xC1, 0xFB, 0xA0, 0x8D, 0xE6, 0xE4, 0x55, - 0x1F, 0xC2, 0x34, 0x7B, 0x9E, 0x0F, 0xF6, 0xE3, 0xB4, 0x1D, 0xA7, 0x10, 0x73, 0x2A, 0x15, 0x8E, - 0x94, 0x8B, 0xB3, 0x26, 0xE7, 0x5A, 0xB1, 0x76, 0x8D, 0x5B, 0x74, 0xCD, 0xA2, 0x6F, 0xD6, 0x43, - 0x0F, 0x70, 0x40, 0x24, 0x95, 0x94, 0xB9, 0xD6, 0x10, 0xE3, 0xD0, 0xB6, 0x52, 0xCA, 0x71, 0x9C, - 0x53, 0xCE, 0x4A, 0xAA, 0xBB, 0xED, 0x6E, 0xB7, 0x9F, 0xB4, 0xD6, 0xF6, 0xE8, 0xAB, 0x4F, 0x29, - 0x1B, 0x63, 0x9C, 0x73, 0xA3, 0xF7, 0x9C, 0xEE, 0x07, 0x88, 0xBB, 0xFD, 0x28, 0x85, 0xF0, 0x21, - 0xF2, 0x4D, 0x59, 0x0A, 0xA7, 0x8F, 0x1D, 0xF2, 0x5A, 0x4B, 0xAE, 0x31, 0xA6, 0x54, 0x4A, 0x2E, - 0x95, 0x43, 0x05, 0x72, 0x2E, 0xB9, 0x64, 0xAC, 0x15, 0x2B, 0xC3, 0x29, 0x62, 0xBD, 0x5E, 0x4A, - 0x21, 0x89, 0x28, 0x97, 0x12, 0x52, 0x2C, 0xA5, 0x2C, 0x86, 0x5E, 0x48, 0xB1, 0xDB, 0x8F, 0x95, - 0x50, 0x4A, 0x85, 0x87, 0x00, 0x6E, 0x02, 0x20, 0x4E, 0xA3, 0xAD, 0xB9, 0x3C, 0x3A, 0x3F, 0x63, - 0x56, 0x61, 0x1C, 0xE7, 0x52, 0x2A, 0x10, 0x6C, 0x77, 0xFB, 0x9B, 0xDB, 0xFB, 0xC9, 0x07, 0x6D, - 0x8C, 0x1A, 0x16, 0xA7, 0xA5, 0xD6, 0xCD, 0x76, 0x37, 0x8E, 0xE3, 0x83, 0x07, 0xA5, 0x16, 0xCE, - 0xCC, 0x26, 0x05, 0x82, 0x88, 0x62, 0xCA, 0x31, 0x65, 0x70, 0x62, 0x9C, 0xFC, 0xED, 0x66, 0xEF, - 0x7D, 0xB8, 0xB9, 0xDF, 0xD4, 0x72, 0x10, 0xDA, 0xD4, 0x5A, 0x81, 0x44, 0x2E, 0x35, 0x97, 0xC2, - 0x81, 0x62, 0xCB, 0x45, 0x5F, 0x11, 0xDF, 0x5C, 0xDD, 0x6A, 0xA5, 0x38, 0x3A, 0x7D, 0xBD, 0x5A, - 0x18, 0x63, 0x72, 0xC9, 0xB7, 0xF7, 0xE3, 0x34, 0x86, 0x10, 0x62, 0xC1, 0x0A, 0x00, 0xB5, 0x56, - 0x6B, 0xCD, 0x62, 0xE8, 0xB4, 0xD6, 0x3E, 0xC4, 0x5A, 0xB1, 0x71, 0x46, 0x49, 0x35, 0xF4, 0x3A, - 0xA6, 0x0C, 0x40, 0x0F, 0x8B, 0x12, 0x1E, 0x9B, 0xAB, 0xD9, 0x3E, 0x53, 0x11, 0x63, 0x2E, 0x44, - 0x14, 0x53, 0xCA, 0xA5, 0xAE, 0x16, 0x03, 0xCB, 0x5F, 0x89, 0x44, 0xCA, 0xF9, 0xFA, 0x6E, 0x2B, - 0xA5, 0xB0, 0x47, 0x3F, 0x85, 0x56, 0x07, 0xEE, 0xAC, 0x22, 0x15, 0x42, 0xC8, 0x05, 0x11, 0xB5, - 0x36, 0xA7, 0xE7, 0x8F, 0x6B, 0xBB, 0x6C, 0x97, 0x67, 0x17, 0xA7, 0x27, 0xEF, 0xBE, 0xFF, 0xC1, - 0xFF, 0xFC, 0x3F, 0xFE, 0xAF, 0xCF, 0x3F, 0xFA, 0xF1, 0xD0, 0xBA, 0xF5, 0x87, 0x1F, 0xAE, 0xCF, - 0x1F, 0x81, 0xD0, 0x95, 0xA4, 0x52, 0x4A, 0x68, 0xD3, 0x74, 0xCB, 0x29, 0x0B, 0xEB, 0xB4, 0x3A, - 0xDA, 0xD0, 0x18, 0x13, 0x35, 0xC6, 0x38, 0xA7, 0x59, 0x05, 0x6E, 0xAD, 0x96, 0x52, 0xCD, 0xB3, - 0x97, 0x52, 0x19, 0x63, 0x4E, 0x4E, 0x2C, 0x0F, 0x47, 0x5A, 0xE9, 0x39, 0x04, 0xA5, 0x54, 0xEE, - 0x32, 0x10, 0xCD, 0x21, 0xA5, 0x5C, 0x94, 0x52, 0x31, 0xC6, 0xDD, 0x7E, 0x34, 0xC6, 0xF0, 0xD9, - 0x67, 0xAD, 0x22, 0xE2, 0x76, 0x22, 0x28, 0xA5, 0xAC, 0x57, 0xC3, 0xB2, 0xEF, 0x79, 0x8C, 0xDA, - 0x89, 0x71, 0x9A, 0xBD, 0xF7, 0x5E, 0x69, 0x6D, 0x8E, 0x58, 0x7D, 0x2E, 0x25, 0x17, 0xA5, 0xB5, - 0x46, 0x82, 0xAE, 0x6B, 0xC4, 0x31, 0xE8, 0x95, 0xD1, 0x74, 0xFE, 0xD4, 0x58, 0x5C, 0x9A, 0x12, - 0x47, 0x12, 0x03, 0xBB, 0xF4, 0x31, 0x97, 0xD9, 0x87, 0x52, 0x8B, 0x92, 0xCA, 0x54, 0xCC, 0x99, - 0x83, 0x23, 0x85, 0x3E, 0xCC, 0x73, 0x92, 0x89, 0x5D, 0x24, 0xCA, 0x25, 0xB3, 0x3A, 0x14, 0x85, - 0x40, 0x14, 0x48, 0x24, 0x85, 0x40, 0x20, 0x10, 0x86, 0x5E, 0xFD, 0xFA, 0xF2, 0x1F, 0xFE, 0xAF, - 0xEF, 0xAE, 0xB7, 0xF7, 0x53, 0x12, 0x10, 0xC5, 0x3C, 0x4B, 0xA3, 0xDF, 0xDE, 0xDE, 0x03, 0x01, - 0x73, 0x73, 0x48, 0xD8, 0x34, 0x0D, 0x02, 0x3C, 0x7A, 0xFA, 0xD8, 0xEA, 0xB3, 0xEF, 0xBE, 0xFC, - 0xF2, 0xAF, 0x34, 0x25, 0x98, 0x90, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xFF, 0xF2, - 0xFF, 0x78, 0xFE, 0xD5, 0x67, 0x7F, 0xFC, 0x9F, 0xFE, 0x7B, 0xBB, 0x3C, 0xA1, 0x52, 0x40, 0xC0, - 0x72, 0x31, 0xCC, 0x93, 0xAF, 0x88, 0xA5, 0xA2, 0xF7, 0x9E, 0xBB, 0x27, 0x6A, 0xA9, 0x04, 0x14, - 0x53, 0x51, 0x4A, 0xB9, 0xC6, 0xEE, 0xA7, 0x89, 0x4B, 0x43, 0x66, 0xCF, 0xCE, 0x1E, 0x48, 0xA5, - 0x1E, 0x14, 0xAA, 0x00, 0x05, 0x2B, 0xA7, 0x72, 0x17, 0xCC, 0x20, 0x25, 0x22, 0x09, 0x81, 0x42, - 0x08, 0xAB, 0x75, 0xAE, 0xD5, 0x97, 0xE4, 0xAC, 0xD3, 0x4A, 0x13, 0x10, 0x61, 0x4D, 0x89, 0x1A, - 0xE7, 0x94, 0x3A, 0x84, 0xD9, 0xF3, 0x3E, 0xCE, 0xE8, 0x9A, 0x31, 0xA6, 0xD4, 0xEA, 0x77, 0x91, - 0x88, 0x94, 0xD6, 0xB5, 0x22, 0x03, 0x67, 0x5A, 0xE9, 0xD6, 0x39, 0x4F, 0x07, 0x4D, 0x6F, 0xCE, - 0x59, 0x4A, 0x69, 0x94, 0x06, 0x80, 0x4A, 0x08, 0x20, 0x0E, 0x32, 0x62, 0xEE, 0x1D, 0xAE, 0x55, - 0x2A, 0x59, 0x6A, 0x55, 0x5A, 0x9D, 0x9F, 0xAD, 0x25, 0x88, 0xBF, 0xFA, 0xFB, 0x5F, 0x6D, 0xF7, - 0xE3, 0x7B, 0xCF, 0x9F, 0x54, 0xC2, 0x14, 0x33, 0x56, 0x24, 0x80, 0xC5, 0xD0, 0x85, 0x90, 0xFE, - 0x9F, 0xBF, 0xFC, 0x5B, 0x63, 0xF4, 0xC5, 0xA3, 0xD3, 0xC7, 0xE7, 0xA7, 0x3E, 0x44, 0x22, 0xF8, - 0xE6, 0xBB, 0xB7, 0x3F, 0xF8, 0xE8, 0x7B, 0xDB, 0xED, 0x27, 0x97, 0x57, 0xB7, 0xF7, 0x76, 0xC7, - 0xF7, 0x50, 0x08, 0xBD, 0xB3, 0xC6, 0x35, 0x0D, 0xC7, 0x31, 0xA6, 0x5C, 0xA4, 0x94, 0x8D, 0xB5, - 0x44, 0xB4, 0xD9, 0xEC, 0x26, 0x1F, 0xC6, 0x39, 0xD4, 0x5A, 0x1B, 0x67, 0x73, 0x29, 0xCE, 0x35, - 0xCB, 0xA1, 0x65, 0xA2, 0x29, 0xE7, 0xC2, 0x67, 0x16, 0xA7, 0xEF, 0x4E, 0x7E, 0xE2, 0x92, 0x91, - 0xBE, 0xEF, 0x88, 0x60, 0x9A, 0x03, 0xEB, 0x04, 0xBC, 0x0F, 0x5C, 0x3E, 0xDD, 0xB6, 0xB0, 0xE8, - 0xFB, 0xC6, 0xD5, 0xF2, 0x40, 0xE0, 0x54, 0x0C, 0x31, 0x4A, 0xA5, 0x22, 0x73, 0x93, 0x84, 0x9B, - 0xED, 0xEE, 0xFE, 0x7E, 0xDB, 0x38, 0x9B, 0x72, 0x6D, 0xDB, 0xA6, 0x20, 0x18, 0xAD, 0x6B, 0xC5, - 0x4A, 0x58, 0x0B, 0x72, 0xFE, 0xA5, 0x00, 0x91, 0x72, 0xAA, 0x48, 0x15, 0xC9, 0x9A, 0xDA, 0x36, - 0x2E, 0xA6, 0x54, 0x4A, 0x49, 0xB9, 0x8E, 0xD3, 0x7C, 0x7E, 0xBA, 0xFA, 0xDE, 0x7B, 0xCF, 0x9D, - 0x35, 0x2C, 0xA4, 0xAF, 0xB5, 0x8E, 0x63, 0x91, 0x52, 0x12, 0xD2, 0xD0, 0xB7, 0x53, 0xDF, 0x4E, - 0x3E, 0xE6, 0x54, 0x85, 0x3C, 0xF4, 0x2D, 0x29, 0x25, 0xBB, 0xAE, 0x19, 0xBA, 0x56, 0x08, 0xE0, - 0x0E, 0xB0, 0x18, 0xD3, 0x38, 0xCE, 0x31, 0x25, 0x25, 0xE4, 0x72, 0x39, 0x48, 0xA5, 0x72, 0x2D, - 0xEA, 0x3F, 0xFF, 0xAF, 0xFE, 0xBB, 0x94, 0xF3, 0xCD, 0xCD, 0xED, 0x34, 0x4D, 0xEA, 0x98, 0x13, - 0x54, 0x8F, 0x35, 0x2A, 0x92, 0x40, 0x4A, 0x79, 0x7E, 0xB6, 0xFA, 0xC3, 0x8F, 0x3F, 0x38, 0x59, - 0x2D, 0x36, 0xBB, 0xF1, 0xF2, 0x66, 0xF3, 0xE5, 0xB7, 0xAF, 0x6E, 0xEF, 0x36, 0xCC, 0x41, 0xCD, - 0xB3, 0x6F, 0xDB, 0x66, 0xB1, 0xE8, 0x8D, 0xD6, 0x42, 0x8A, 0xC6, 0xD9, 0xB3, 0xD3, 0xD5, 0x62, - 0xE8, 0x84, 0x14, 0x88, 0x6C, 0x5B, 0x83, 0x94, 0x32, 0x08, 0x68, 0x1A, 0x1B, 0x53, 0x7A, 0x7B, - 0x75, 0xB7, 0xDD, 0x4E, 0x3E, 0x84, 0xDD, 0x38, 0x97, 0x52, 0x8C, 0xD5, 0x67, 0x27, 0xCB, 0x61, - 0xE8, 0x52, 0x2A, 0x39, 0x65, 0x00, 0xA1, 0x8D, 0xB2, 0xD6, 0x54, 0x42, 0xAB, 0x8D, 0x38, 0x96, - 0x39, 0x03, 0x40, 0xC9, 0x95, 0xBD, 0x33, 0x5C, 0x34, 0xC9, 0x3D, 0x4F, 0x4C, 0x36, 0x8F, 0xD3, - 0x9C, 0x52, 0x1E, 0xFA, 0xAE, 0x6B, 0x5C, 0x48, 0x69, 0xF6, 0xA1, 0xE4, 0x92, 0x62, 0xAE, 0x15, - 0xE7, 0x90, 0x4A, 0x45, 0x21, 0x24, 0x01, 0xB0, 0x92, 0xA8, 0xD4, 0x1A, 0x42, 0x64, 0xF2, 0x21, - 0xA3, 0xC8, 0xFB, 0xCD, 0xDB, 0x6F, 0xBF, 0x58, 0x3C, 0x7E, 0xF7, 0xF9, 0x07, 0x3F, 0xD8, 0xBC, - 0xFA, 0xE2, 0x1F, 0xFE, 0xC3, 0x9F, 0xFF, 0x67, 0xFF, 0xED, 0xFF, 0xB0, 0x6C, 0xF5, 0xE5, 0xE5, - 0xDB, 0x47, 0x8F, 0x9F, 0x35, 0x8B, 0x33, 0x22, 0x11, 0xC7, 0xFB, 0x79, 0xBF, 0xFB, 0xE8, 0xA3, - 0x3F, 0x18, 0x9E, 0x7D, 0x08, 0x00, 0x42, 0xF1, 0xAE, 0x2D, 0x89, 0x20, 0xC6, 0xEC, 0xDC, 0xC1, - 0x24, 0x6C, 0x8C, 0x6E, 0x1A, 0x6B, 0x79, 0x7F, 0xD0, 0x92, 0x87, 0x26, 0x22, 0xAA, 0x15, 0xAD, - 0xB5, 0x6D, 0xD3, 0x74, 0x6D, 0xA3, 0x8D, 0xD2, 0x4A, 0x35, 0x8D, 0x35, 0x47, 0x3B, 0x11, 0xCB, - 0x26, 0x59, 0x5F, 0x16, 0x42, 0x44, 0x44, 0xF6, 0xB4, 0x61, 0xAD, 0x4A, 0x29, 0xA5, 0x15, 0x67, - 0x47, 0x18, 0x6D, 0x26, 0xEF, 0xF7, 0xB3, 0xA7, 0xDF, 0x29, 0x51, 0x0F, 0x86, 0x38, 0x26, 0x89, - 0xAC, 0xD1, 0xC6, 0x18, 0x6B, 0xEC, 0xEF, 0x25, 0xB0, 0x33, 0x8A, 0x5F, 0x89, 0x80, 0x37, 0xCD, - 0xC3, 0x1E, 0x94, 0x72, 0x29, 0x35, 0xA5, 0x74, 0x20, 0xE9, 0x2A, 0xB2, 0xCF, 0x03, 0x11, 0x73, - 0xA9, 0x88, 0x24, 0x40, 0x80, 0x10, 0xBC, 0xDA, 0x33, 0xBF, 0xCC, 0x73, 0x47, 0xA9, 0x87, 0xB6, - 0x5D, 0x50, 0x76, 0xB9, 0xFB, 0xE6, 0x93, 0xFF, 0xF3, 0x7F, 0xFA, 0xF4, 0xF5, 0x5D, 0x01, 0xC9, - 0x0E, 0xCD, 0x98, 0xA2, 0x00, 0xC8, 0xB5, 0xE6, 0xC2, 0x89, 0xEC, 0x85, 0xF5, 0x56, 0xCB, 0x93, - 0xD3, 0xA7, 0xDF, 0xFB, 0xA8, 0x59, 0x2C, 0xEF, 0xDE, 0xBC, 0xBA, 0xDB, 0x6C, 0x77, 0x9B, 0xFB, - 0xBE, 0x6D, 0xCF, 0xDE, 0xFD, 0xA8, 0xD6, 0xC2, 0x77, 0x78, 0xCE, 0x95, 0x73, 0x4A, 0x58, 0x35, - 0x0A, 0x48, 0x8C, 0x48, 0xE4, 0x5C, 0x7C, 0x88, 0x4D, 0xE3, 0x9A, 0xC6, 0x4D, 0xB3, 0x47, 0xC4, - 0x94, 0x0B, 0xEB, 0x63, 0x41, 0x08, 0xB6, 0xEF, 0x01, 0x1D, 0xF4, 0x1F, 0xCC, 0x18, 0x3C, 0x64, - 0x6F, 0x34, 0xD6, 0x18, 0xCD, 0x17, 0xA1, 0xD0, 0x02, 0xB4, 0x3A, 0x84, 0x38, 0x72, 0x61, 0xC2, - 0x6E, 0xF6, 0x70, 0x38, 0xEB, 0xA1, 0xD4, 0x52, 0x09, 0x4B, 0x2E, 0xA9, 0xE4, 0x8A, 0xC8, 0x9E, - 0x2D, 0xBE, 0x23, 0x85, 0x94, 0x02, 0x64, 0x48, 0xA9, 0x12, 0x59, 0x6B, 0xA7, 0x69, 0x66, 0x62, - 0x8E, 0xAF, 0x6A, 0x00, 0x90, 0x20, 0x38, 0x04, 0x55, 0x49, 0xC5, 0xAA, 0x3A, 0x24, 0xD0, 0x4A, - 0xF1, 0x16, 0xEF, 0xAC, 0xE5, 0x7D, 0xFE, 0xE6, 0x76, 0x73, 0x79, 0x7D, 0x27, 0x84, 0xE4, 0xCE, - 0xBD, 0xBE, 0x73, 0x20, 0x44, 0x88, 0x89, 0xF5, 0x10, 0x39, 0xE7, 0x6F, 0x5E, 0xBE, 0xC5, 0x8A, - 0xE7, 0x67, 0x27, 0xBF, 0xFD, 0xE2, 0x9B, 0x37, 0x97, 0x57, 0xBB, 0xFD, 0x24, 0xE5, 0x21, 0xA6, - 0xDC, 0x18, 0xD3, 0xB6, 0xCD, 0x34, 0xFB, 0x9C, 0xB3, 0x38, 0xFA, 0x52, 0xCC, 0xC1, 0xB9, 0x05, - 0x1C, 0x04, 0xA4, 0x94, 0x5C, 0x2F, 0x06, 0x67, 0xD4, 0x7A, 0xD1, 0x3D, 0x3A, 0x5D, 0xAE, 0x87, - 0x5E, 0x4A, 0x31, 0xF4, 0x1D, 0x10, 0xF4, 0x5D, 0x63, 0xAD, 0x96, 0x52, 0xC4, 0x94, 0x85, 0x50, - 0xCE, 0x59, 0x63, 0x8D, 0x52, 0x32, 0xE7, 0xA2, 0xB5, 0x6A, 0x9B, 0xA6, 0x94, 0x3A, 0xCE, 0x21, - 0x95, 0x22, 0xB5, 0xE2, 0x61, 0x25, 0xE5, 0x12, 0x73, 0x62, 0x62, 0xA7, 0xD6, 0xA2, 0xB4, 0x66, - 0x9D, 0x2D, 0x13, 0xD3, 0xD3, 0x34, 0x57, 0xC4, 0xE5, 0xA2, 0x67, 0x14, 0x92, 0x10, 0x7D, 0x8C, - 0x29, 0x67, 0x16, 0xD3, 0xE4, 0x52, 0xE6, 0x10, 0x59, 0x86, 0x16, 0x53, 0xC9, 0xA5, 0x84, 0x94, - 0x7C, 0x88, 0x40, 0x34, 0xCD, 0x7E, 0xF6, 0xF1, 0xC9, 0xE3, 0x47, 0xEF, 0x3C, 0x7D, 0x4C, 0x40, - 0x48, 0xBF, 0x8B, 0x0E, 0x97, 0x20, 0x99, 0x60, 0x61, 0x95, 0xFB, 0x6E, 0x1C, 0xA5, 0x14, 0x4F, - 0x1F, 0x9F, 0x3D, 0x7E, 0x74, 0xEA, 0xAC, 0x26, 0x80, 0x18, 0x33, 0xAF, 0xBD, 0xDB, 0xDD, 0x7E, - 0xB7, 0x9F, 0xE6, 0xD9, 0x0B, 0x10, 0xC6, 0xE8, 0xD3, 0xB3, 0xF5, 0x7A, 0xBD, 0x10, 0x42, 0x74, - 0x8D, 0xD3, 0x9F, 0x7F, 0xF1, 0xED, 0x34, 0x4D, 0x00, 0xD4, 0x77, 0x1D, 0xE3, 0x76, 0x02, 0x84, - 0x56, 0xD2, 0xFB, 0xA0, 0x95, 0x34, 0xDA, 0xF4, 0x7D, 0x77, 0xB6, 0x5E, 0xEE, 0xA7, 0xF9, 0x6F, - 0xFE, 0xE9, 0xD3, 0xFD, 0x38, 0x7B, 0x1F, 0xE7, 0xE0, 0x87, 0xAE, 0x23, 0x22, 0x1F, 0x23, 0x2F, - 0x47, 0x46, 0x69, 0x29, 0x65, 0xD7, 0x38, 0x0E, 0x14, 0x0B, 0x31, 0xB5, 0x4D, 0x73, 0x9C, 0xB0, - 0x68, 0x3F, 0x8E, 0xA5, 0x54, 0x1F, 0x92, 0x14, 0x62, 0xBB, 0x9B, 0xE6, 0x10, 0x52, 0xCE, 0x21, - 0x84, 0x45, 0xDF, 0x39, 0x7B, 0x08, 0x6E, 0xEF, 0xDB, 0x46, 0x29, 0xB9, 0x18, 0xDA, 0xAE, 0x6B, - 0x08, 0x48, 0x0A, 0xC9, 0xE3, 0x2A, 0xBF, 0xA5, 0xB5, 0x60, 0xCE, 0xA5, 0x3E, 0x78, 0x29, 0x2A, - 0x85, 0x98, 0x43, 0x48, 0x29, 0x97, 0x9C, 0x4B, 0xDF, 0xB5, 0xCE, 0x5A, 0x10, 0xC0, 0x89, 0x80, - 0x39, 0xD7, 0x18, 0x93, 0xD6, 0x5A, 0x6A, 0x4D, 0x88, 0x39, 0x97, 0x89, 0x02, 0x57, 0xE0, 0x70, - 0x6C, 0x4B, 0x29, 0x25, 0xA5, 0x5C, 0x6B, 0x05, 0x11, 0xBA, 0xF3, 0xF7, 0xD4, 0x2F, 0xFF, 0x4E, - 0x52, 0xCD, 0x61, 0xFE, 0xEB, 0x3F, 0xFF, 0xB3, 0xD5, 0xC5, 0x3B, 0xCD, 0xE9, 0x3B, 0xB0, 0x2F, - 0x88, 0xD8, 0x34, 0x6D, 0x4A, 0x15, 0x11, 0x4F, 0x1E, 0x3D, 0x79, 0xF1, 0xF1, 0x1F, 0x9E, 0xBE, - 0xF8, 0x40, 0x48, 0x45, 0x58, 0x53, 0x2E, 0x02, 0x0E, 0xA6, 0xC5, 0xB6, 0x1D, 0x98, 0xAF, 0xA8, - 0x88, 0x42, 0x48, 0xAC, 0x54, 0xA9, 0x72, 0x7C, 0x53, 0xCE, 0x25, 0x1D, 0x4B, 0x16, 0x58, 0xB7, - 0xA5, 0x95, 0x42, 0xC4, 0x63, 0xA2, 0xC0, 0x81, 0x22, 0x34, 0x46, 0xB7, 0xD0, 0xF0, 0x29, 0x16, - 0x53, 0x36, 0x5A, 0x95, 0x52, 0xDB, 0xB6, 0x51, 0x5A, 0xE5, 0x5C, 0xF8, 0x81, 0x63, 0x5E, 0xAD, - 0xEF, 0xDA, 0x39, 0x44, 0x09, 0x87, 0x54, 0x2F, 0x21, 0x84, 0xD1, 0xBA, 0x6D, 0x9C, 0xB3, 0xE6, - 0xA0, 0xCF, 0x06, 0x28, 0xC7, 0x25, 0xFA, 0x41, 0xCF, 0xC5, 0x8C, 0x24, 0x3B, 0x6C, 0x79, 0x8C, - 0x25, 0x24, 0x56, 0x7B, 0x70, 0x39, 0x93, 0xD1, 0x9A, 0x48, 0xF2, 0xC2, 0x48, 0x04, 0x39, 0xA7, - 0x28, 0x72, 0xD7, 0x39, 0x7E, 0x76, 0xAD, 0x35, 0x95, 0x28, 0xE5, 0x2C, 0x4A, 0x61, 0x25, 0x1A, - 0x62, 0x5E, 0xBF, 0xFD, 0xD5, 0x27, 0x3F, 0xFF, 0xCB, 0xDF, 0x5C, 0x6E, 0x48, 0x28, 0x55, 0x3D, - 0x48, 0x51, 0x4A, 0x09, 0xDE, 0x5B, 0xE7, 0x9E, 0x5E, 0x5C, 0xDC, 0xDE, 0xDE, 0x02, 0x55, 0x42, - 0x92, 0x52, 0x74, 0x6D, 0x73, 0x7A, 0x7E, 0xDA, 0xF4, 0x03, 0x81, 0x08, 0xF3, 0x1C, 0xC3, 0x9C, - 0x84, 0xFA, 0xE6, 0xB3, 0x4F, 0x9E, 0xFE, 0xC1, 0x9F, 0xB8, 0xD5, 0x09, 0x54, 0x02, 0x21, 0xBA, - 0x8E, 0x7B, 0x67, 0x22, 0x2F, 0xE6, 0x43, 0xD7, 0x0A, 0x21, 0x6E, 0xEF, 0xB7, 0x0C, 0xC9, 0x79, - 0x1F, 0xAC, 0xB3, 0xC3, 0x62, 0x28, 0xB5, 0x8A, 0x94, 0x39, 0x5F, 0x4C, 0x2A, 0x19, 0x73, 0x49, - 0x29, 0x13, 0x11, 0x96, 0xC3, 0x01, 0xCD, 0x2F, 0x83, 0x90, 0x42, 0x6B, 0xAD, 0xA4, 0xF4, 0x29, - 0x69, 0xA5, 0xD8, 0xC9, 0x5B, 0x4A, 0xD1, 0x4A, 0xF3, 0xD3, 0x93, 0x4B, 0xB5, 0xC6, 0x48, 0xA9, - 0x72, 0x45, 0x00, 0x62, 0x20, 0x6C, 0xBD, 0x58, 0xE4, 0x5A, 0x35, 0x81, 0x92, 0x54, 0x91, 0x32, - 0x16, 0x20, 0xC8, 0xB9, 0x38, 0x6B, 0x8C, 0x35, 0x07, 0x6B, 0x7A, 0xD3, 0x04, 0x1F, 0x95, 0x16, - 0x44, 0x54, 0x25, 0x69, 0xAD, 0x6A, 0xA9, 0x4A, 0x4A, 0xC4, 0x9A, 0x52, 0xE4, 0x62, 0x1F, 0xD6, - 0x91, 0x12, 0xA2, 0x10, 0xE0, 0x7D, 0x20, 0x80, 0xE0, 0xA3, 0xB3, 0x7A, 0x3B, 0xCE, 0xE3, 0x1C, - 0x76, 0xBB, 0xA9, 0x6B, 0xDD, 0xA3, 0xB3, 0x35, 0x5B, 0xCA, 0xB8, 0x5F, 0x23, 0xA6, 0x62, 0x8C, - 0x21, 0x80, 0xBE, 0xEF, 0xC6, 0x71, 0xDE, 0xEE, 0xF7, 0x7D, 0xDF, 0xE5, 0x94, 0x19, 0xED, 0x34, - 0xC6, 0x48, 0x21, 0xCF, 0x4E, 0x4F, 0xA6, 0x69, 0x1E, 0xBD, 0x67, 0x63, 0x53, 0x29, 0x45, 0x0A, - 0x99, 0x72, 0x12, 0x52, 0x34, 0xD6, 0x08, 0x21, 0x00, 0xA4, 0x52, 0x07, 0x1A, 0x45, 0x48, 0x49, - 0x85, 0x7C, 0x08, 0x6D, 0xE7, 0x88, 0xA8, 0xE4, 0x0A, 0xC0, 0xF3, 0x26, 0x32, 0xC5, 0x52, 0x4A, - 0x25, 0x01, 0x42, 0x8A, 0x94, 0xB3, 0xF7, 0x29, 0xA5, 0xB2, 0x58, 0x74, 0x95, 0x20, 0x25, 0x5F, - 0x6B, 0x4D, 0xA5, 0x3A, 0x67, 0x95, 0x94, 0xDE, 0x07, 0x56, 0x14, 0xB1, 0x5C, 0xB4, 0x96, 0xB2, - 0xDD, 0x8D, 0x44, 0xF4, 0xF4, 0xE2, 0xDC, 0xC7, 0x08, 0x44, 0x31, 0x05, 0x22, 0x97, 0x6A, 0x01, - 0x10, 0xDC, 0x37, 0x35, 0x7B, 0x0F, 0x42, 0x5A, 0xA3, 0x89, 0xA8, 0x62, 0x6D, 0x9C, 0xCB, 0xA5, - 0x20, 0xD6, 0x69, 0x8E, 0x3E, 0x84, 0x27, 0x8F, 0xCE, 0x3A, 0xE7, 0x66, 0xEF, 0xF9, 0xFB, 0x52, - 0x5A, 0x12, 0x41, 0x8A, 0x5C, 0x20, 0x57, 0x58, 0x7B, 0xBC, 0x5A, 0x2E, 0x40, 0x40, 0xEB, 0x1C, - 0x33, 0x3F, 0xF6, 0x64, 0xC5, 0x4F, 0x5D, 0xA9, 0x95, 0x45, 0xC2, 0xCE, 0x5A, 0x29, 0xA4, 0xF7, - 0xA1, 0x10, 0xA5, 0x5C, 0x72, 0x2A, 0xBC, 0x75, 0xE9, 0x79, 0x9E, 0x9D, 0xB3, 0x00, 0x10, 0x62, - 0x12, 0x40, 0x56, 0x69, 0x8E, 0xC7, 0x02, 0x82, 0x52, 0xD0, 0x68, 0x98, 0x26, 0xFF, 0x9B, 0x2F, - 0xBF, 0xDB, 0xEE, 0x47, 0x64, 0x43, 0x3F, 0x22, 0x87, 0x99, 0x31, 0xE2, 0x9E, 0x4B, 0x8E, 0x31, - 0x46, 0xE7, 0xAC, 0x35, 0xA5, 0xD6, 0x94, 0x8A, 0x14, 0x62, 0xF6, 0x71, 0x9C, 0x03, 0x11, 0xCE, - 0x3E, 0x28, 0xA5, 0x53, 0x2A, 0x93, 0x0F, 0x04, 0x42, 0x4A, 0xB9, 0xD9, 0xED, 0xBC, 0x0F, 0x00, - 0x60, 0xAD, 0x7E, 0x74, 0x76, 0xD2, 0xF7, 0x2D, 0x1C, 0x33, 0x69, 0x01, 0xA0, 0xEF, 0x1B, 0x67, - 0x8D, 0xE5, 0x94, 0x35, 0xC4, 0x92, 0x0B, 0x53, 0x69, 0x25, 0xD7, 0x5C, 0x0B, 0x11, 0xEF, 0xBC, - 0x2C, 0xD1, 0xAE, 0xA5, 0x94, 0x07, 0x07, 0x0C, 0x63, 0x4C, 0xAC, 0x5A, 0xDE, 0x6C, 0x47, 0x02, - 0x92, 0x4A, 0x22, 0x62, 0xD7, 0x35, 0xA5, 0x62, 0x4A, 0x29, 0x04, 0xE4, 0x9D, 0x5F, 0x08, 0xC1, - 0xD0, 0x26, 0xE7, 0x40, 0x44, 0xE3, 0x4E, 0xDE, 0xFB, 0xE1, 0xD5, 0xCB, 0xDF, 0xAE, 0x16, 0xFD, - 0x57, 0xBF, 0xFD, 0xF4, 0x5F, 0xFC, 0xDB, 0x7F, 0x3F, 0xC6, 0xBA, 0x76, 0xDD, 0xE9, 0xD9, 0x39, - 0x08, 0x35, 0xCD, 0x5E, 0x48, 0x29, 0xA4, 0x39, 0x39, 0x7D, 0x64, 0x17, 0x67, 0x13, 0x6F, 0x4C, - 0x88, 0xCE, 0x1A, 0x6B, 0x6D, 0xDB, 0x36, 0xB5, 0x94, 0x10, 0x13, 0xEB, 0x09, 0xAA, 0x44, 0x3A, - 0xFA, 0x81, 0xF8, 0x2B, 0x64, 0xFD, 0x42, 0x39, 0x34, 0x5D, 0xF2, 0x35, 0x95, 0x89, 0x68, 0xF6, - 0x81, 0xBD, 0xCD, 0x7C, 0x20, 0xCA, 0x22, 0x7D, 0x8C, 0xFC, 0x59, 0x3E, 0x9C, 0x3E, 0x4A, 0x29, - 0x22, 0xE1, 0x7D, 0x6A, 0x1A, 0x63, 0xB4, 0xC6, 0x5A, 0x8D, 0xD6, 0xAB, 0xC5, 0x90, 0x52, 0x39, - 0x84, 0x7B, 0x01, 0x49, 0x25, 0xB4, 0x52, 0xD6, 0x98, 0x7F, 0xDE, 0x8E, 0x05, 0x52, 0x8A, 0x94, - 0x52, 0x88, 0x09, 0xB9, 0x9E, 0x86, 0x28, 0xA5, 0xC4, 0x71, 0x9D, 0x4C, 0x37, 0x36, 0x60, 0x7D, - 0x38, 0x7C, 0x6E, 0xE6, 0xA8, 0xE2, 0x11, 0x87, 0xB0, 0xD6, 0xC4, 0x1F, 0xAE, 0x75, 0xD6, 0x1A, - 0x3D, 0x00, 0x28, 0xA5, 0x42, 0xC9, 0xC6, 0x68, 0x25, 0x45, 0x91, 0xBA, 0xBD, 0xFC, 0xF5, 0xE7, - 0x9F, 0xFC, 0xC5, 0x3F, 0x7C, 0x7B, 0x69, 0x5D, 0x2B, 0x84, 0x08, 0x39, 0x82, 0x90, 0x00, 0xC2, - 0x58, 0xA7, 0x8C, 0x7D, 0xFF, 0x87, 0x3F, 0x91, 0xBF, 0xFE, 0xC5, 0x3C, 0x8D, 0xB3, 0x0F, 0xAE, - 0x6D, 0xDE, 0xFF, 0xF0, 0xC3, 0xD5, 0xC5, 0x13, 0xD7, 0x0F, 0xFB, 0xBB, 0xDB, 0x69, 0xB7, 0x6D, - 0x8C, 0xF1, 0x31, 0x97, 0xE8, 0x77, 0x57, 0x2F, 0x4F, 0x97, 0xA7, 0x84, 0x68, 0x8C, 0x1A, 0x86, - 0x4E, 0x0A, 0x29, 0xB7, 0x3B, 0x31, 0x41, 0x41, 0x4C, 0xA5, 0x2C, 0x87, 0x1E, 0x09, 0xBD, 0x4F, - 0xFD, 0x30, 0x08, 0x01, 0x25, 0x45, 0xAA, 0x45, 0x48, 0x5D, 0x10, 0xA5, 0x44, 0x00, 0x76, 0x02, - 0x1C, 0x12, 0x77, 0x2B, 0xA2, 0x94, 0x0A, 0x80, 0x72, 0xCE, 0x1C, 0x9D, 0x96, 0x73, 0xE6, 0x48, - 0x77, 0x2D, 0x25, 0x72, 0xF4, 0x6E, 0x45, 0xCE, 0x32, 0x38, 0x3C, 0x30, 0x00, 0x21, 0xA5, 0xC3, - 0xA5, 0x82, 0xD8, 0x38, 0xCB, 0x15, 0x9D, 0x95, 0x88, 0x83, 0xCF, 0x72, 0xE4, 0x86, 0x04, 0x91, - 0x32, 0x8B, 0x76, 0x50, 0x08, 0xD1, 0xB5, 0x6D, 0x08, 0x11, 0x40, 0x18, 0xA3, 0x72, 0xC2, 0x0C, - 0xD5, 0x68, 0x29, 0x41, 0x1A, 0x6B, 0xAC, 0xB5, 0xF7, 0xDB, 0x1D, 0xCF, 0xE9, 0x11, 0x93, 0xD2, - 0x8A, 0xC5, 0x89, 0x52, 0xCA, 0xB6, 0x75, 0xC6, 0xE8, 0x14, 0x53, 0x4C, 0xF9, 0x66, 0xB3, 0x35, - 0x7B, 0x7D, 0x7D, 0xB7, 0xED, 0x5B, 0xC7, 0xBD, 0x8B, 0x6D, 0xDB, 0x84, 0x10, 0x2A, 0x52, 0x08, - 0xF1, 0x67, 0x7F, 0xFB, 0x4F, 0x5A, 0xA9, 0xAE, 0x6D, 0xD9, 0xED, 0xC0, 0x9E, 0x47, 0xD6, 0x88, - 0x50, 0x8C, 0x93, 0xF7, 0x87, 0x7C, 0x5B, 0x44, 0x44, 0x04, 0xF9, 0xD0, 0xDB, 0x06, 0x9C, 0xB6, - 0xC6, 0x23, 0xB6, 0x54, 0x8A, 0xD1, 0x18, 0x8E, 0x44, 0x92, 0x42, 0x12, 0x55, 0x56, 0xF0, 0x02, - 0x08, 0x24, 0x64, 0xC1, 0x33, 0xCB, 0x92, 0x67, 0x1F, 0x72, 0xAE, 0xB9, 0x24, 0xA0, 0x76, 0x9E, - 0x3D, 0x11, 0xA5, 0x94, 0xA5, 0x56, 0x46, 0xEB, 0x94, 0x52, 0xCC, 0x19, 0x11, 0x65, 0x91, 0xCE, - 0x39, 0x29, 0xE5, 0xE4, 0x83, 0x00, 0x38, 0x3D, 0x5D, 0xEF, 0xA6, 0x29, 0xE7, 0xB2, 0x5A, 0x2D, - 0x94, 0xD4, 0xB9, 0x14, 0x12, 0xA0, 0x95, 0x02, 0x25, 0x59, 0xEE, 0xDF, 0xF7, 0xBD, 0x94, 0xB2, - 0xD4, 0x62, 0xAC, 0xD1, 0xC6, 0xC4, 0xA3, 0xB0, 0xD9, 0x18, 0x6D, 0x8D, 0x26, 0x38, 0x58, 0x6E, - 0x8D, 0x56, 0xCE, 0x9A, 0x5C, 0x39, 0xC0, 0x4A, 0x4E, 0x53, 0x65, 0xBD, 0xA4, 0x10, 0xB0, 0x1C, - 0xBA, 0x72, 0xEC, 0x52, 0xE2, 0xEB, 0x64, 0x0E, 0xC1, 0x28, 0x75, 0x38, 0x87, 0x31, 0x2B, 0x2D, - 0xA5, 0x51, 0x10, 0x8B, 0xF7, 0xC9, 0x1A, 0x7B, 0x76, 0xBA, 0x26, 0x02, 0x2D, 0xA4, 0x9C, 0x27, - 0xAF, 0xB4, 0x56, 0x4A, 0x1A, 0xA5, 0x32, 0x17, 0xA9, 0xE5, 0x2C, 0x84, 0x70, 0xCE, 0xA5, 0x52, - 0x62, 0xCC, 0x3E, 0x04, 0x86, 0x57, 0x18, 0x28, 0x6D, 0x9B, 0x86, 0x08, 0x26, 0xEF, 0x41, 0x88, - 0xCE, 0x39, 0x21, 0xA5, 0x0F, 0xA1, 0xEB, 0x0E, 0xC2, 0xA8, 0xFD, 0xE4, 0x6F, 0xEE, 0xB6, 0x02, - 0x0E, 0xA9, 0x92, 0x02, 0xA0, 0x6B, 0x9B, 0xD3, 0xF5, 0x32, 0x57, 0x7A, 0x7D, 0x79, 0x35, 0x8E, - 0x93, 0x90, 0xD2, 0x1A, 0x7D, 0x7A, 0xB2, 0x7A, 0xFE, 0xCE, 0xE3, 0x8B, 0xF3, 0xF5, 0x62, 0xE8, - 0x78, 0x3B, 0xB3, 0xC6, 0x34, 0xAD, 0x95, 0x9C, 0xE6, 0x41, 0x40, 0x40, 0x29, 0x1F, 0xF8, 0xEF, - 0x43, 0xE1, 0x4C, 0xC5, 0x94, 0x4A, 0xCC, 0xA5, 0x22, 0x0A, 0x01, 0x52, 0x29, 0xCC, 0x31, 0xC6, - 0xC8, 0xC2, 0x13, 0x6B, 0x74, 0xCA, 0x65, 0xF6, 0x41, 0x4A, 0xD5, 0x36, 0xBA, 0xD4, 0xD2, 0xB5, - 0xAD, 0xF7, 0x7E, 0x1C, 0xE7, 0x8A, 0xB5, 0xEB, 0xFA, 0xA6, 0xD1, 0x00, 0xC4, 0xBE, 0x4B, 0x7D, - 0xC8, 0x14, 0x14, 0xF3, 0xB8, 0xB7, 0xE7, 0xEF, 0x5D, 0xFE, 0xD5, 0xFF, 0x5D, 0x72, 0x02, 0x69, - 0xCE, 0x5F, 0x7C, 0xFF, 0xF6, 0x6E, 0x2B, 0xDB, 0x4C, 0x44, 0x25, 0x85, 0x94, 0x28, 0x55, 0xA2, - 0x18, 0xA3, 0x9F, 0xB7, 0x9B, 0xCD, 0x88, 0xCD, 0xA2, 0x73, 0x87, 0x94, 0x09, 0xA9, 0x42, 0x88, - 0x87, 0x51, 0x11, 0xB1, 0x94, 0xC2, 0xE1, 0x88, 0x6C, 0x62, 0xE1, 0xB0, 0x71, 0xC9, 0x42, 0x36, - 0x29, 0x0B, 0xA2, 0x0F, 0x91, 0xBF, 0x0B, 0x4E, 0x61, 0x16, 0x02, 0x95, 0x94, 0x52, 0x48, 0x56, - 0x36, 0x33, 0x5F, 0x89, 0x88, 0x39, 0x27, 0x6B, 0xD8, 0xBD, 0x21, 0x38, 0x98, 0x89, 0x7D, 0x8E, - 0x8C, 0xD5, 0x4B, 0x21, 0x94, 0x56, 0x84, 0x24, 0x80, 0xB4, 0xD6, 0x46, 0x1B, 0x02, 0xF0, 0x31, - 0xF5, 0x6D, 0xC3, 0x5C, 0x70, 0x29, 0x87, 0xC9, 0xCB, 0x7B, 0x56, 0x66, 0x17, 0xE7, 0x34, 0x4B, - 0xA8, 0x62, 0x4A, 0x7D, 0xD7, 0x71, 0x98, 0x22, 0x83, 0x8C, 0x52, 0x2A, 0xAD, 0x35, 0x1D, 0xE2, - 0x61, 0x91, 0xC3, 0xFA, 0xF9, 0x9F, 0x19, 0xE0, 0x10, 0x04, 0x23, 0x78, 0x63, 0x0C, 0x21, 0x12, - 0x55, 0x65, 0xDB, 0x61, 0xBA, 0xBC, 0xFD, 0xF2, 0x1F, 0x3F, 0x79, 0x79, 0x0D, 0x20, 0xDA, 0xB6, - 0x91, 0xDA, 0xE4, 0xED, 0x36, 0xE7, 0x82, 0xB5, 0x34, 0xAE, 0x99, 0xC7, 0x3D, 0xE9, 0xE6, 0x7B, - 0x7F, 0xF4, 0xA7, 0xB7, 0xDF, 0x7D, 0xE5, 0x9A, 0xD6, 0xB6, 0xDD, 0xFA, 0xF1, 0x13, 0xDB, 0xF5, - 0xCA, 0x35, 0xF3, 0xB8, 0x8B, 0x31, 0x28, 0x6D, 0x18, 0x6F, 0x8E, 0x31, 0xD6, 0x52, 0xB0, 0xB0, - 0x04, 0x49, 0x76, 0x7D, 0x8B, 0x84, 0x25, 0xD7, 0x1A, 0x62, 0xA5, 0x9A, 0x6B, 0x91, 0x52, 0x39, - 0x4D, 0x6F, 0xBF, 0xF9, 0xCC, 0x6A, 0xD1, 0x6A, 0xF1, 0xD5, 0x6F, 0x3F, 0x9B, 0xAB, 0x5E, 0x3C, - 0xFE, 0x5E, 0x46, 0x2A, 0x29, 0x69, 0x6D, 0xA4, 0x54, 0x5A, 0x49, 0x25, 0x44, 0xC8, 0x07, 0x1C, - 0x50, 0x29, 0xC5, 0x88, 0x24, 0x11, 0xA5, 0x52, 0x9D, 0xD6, 0x08, 0x1C, 0x01, 0x22, 0x85, 0x80, - 0x43, 0x54, 0x3F, 0x1E, 0x3C, 0x34, 0x5A, 0x0B, 0x38, 0x74, 0xE5, 0x21, 0x8B, 0xE6, 0x10, 0xAB, - 0x10, 0x0A, 0xA4, 0x8C, 0x39, 0xE7, 0x72, 0x08, 0xB5, 0xD1, 0x42, 0x19, 0xFE, 0xDD, 0x5A, 0x19, - 0xCC, 0x1D, 0xA7, 0xD9, 0x5A, 0xA3, 0xA4, 0x8A, 0x31, 0x01, 0x19, 0x21, 0x0E, 0xD6, 0xA8, 0x93, - 0xF5, 0x6A, 0x9A, 0xE7, 0x10, 0x32, 0x49, 0x80, 0x8A, 0xEC, 0x18, 0xCD, 0xB9, 0x60, 0x55, 0xAC, - 0xAD, 0xE7, 0xB6, 0x01, 0xA5, 0x64, 0x88, 0x71, 0x9C, 0x3C, 0xDF, 0x3A, 0x7D, 0xDF, 0x2E, 0xFA, - 0xEE, 0x64, 0x35, 0x68, 0xA5, 0x78, 0xA5, 0x65, 0x49, 0xB3, 0x73, 0x0E, 0xB1, 0xF2, 0xAA, 0x95, - 0x52, 0x92, 0x52, 0xF6, 0x5D, 0xC7, 0x31, 0xB9, 0x7C, 0xC6, 0x71, 0xE4, 0x7F, 0x4C, 0x89, 0xCF, - 0x85, 0x5A, 0x2B, 0xD5, 0x43, 0xFC, 0x19, 0x81, 0x30, 0xD6, 0x12, 0x51, 0xA9, 0x28, 0x95, 0x92, - 0x1A, 0xFD, 0x94, 0xB4, 0x36, 0x93, 0x0F, 0x4A, 0x2B, 0xA7, 0x35, 0x09, 0x10, 0x42, 0xB1, 0xF1, - 0xE3, 0x7E, 0xB3, 0xEB, 0xBB, 0xF6, 0x7E, 0xBB, 0xD7, 0x5A, 0xB3, 0x2E, 0xBF, 0x69, 0xDB, 0x5C, - 0x78, 0xFF, 0x21, 0x66, 0x8D, 0x9C, 0x73, 0x31, 0x04, 0x63, 0xD4, 0x7A, 0xB5, 0xAC, 0x44, 0xB3, - 0x8F, 0x8B, 0xA1, 0x07, 0x10, 0x24, 0x65, 0x2D, 0x05, 0x08, 0x50, 0x62, 0x2D, 0xD8, 0x18, 0xC7, - 0x81, 0x80, 0x05, 0xAB, 0xD1, 0xC6, 0xC7, 0x38, 0xFB, 0x98, 0x53, 0x8E, 0x31, 0x1B, 0x25, 0xB9, - 0x19, 0x56, 0x0B, 0x81, 0x48, 0x4A, 0x09, 0xD6, 0x5A, 0x1E, 0x7D, 0x78, 0x7A, 0xE8, 0x7B, 0x44, - 0x44, 0xC2, 0x94, 0x33, 0x13, 0x79, 0x77, 0xB7, 0xF7, 0x29, 0xE5, 0xE5, 0xA2, 0x37, 0x4A, 0x3B, - 0x63, 0x72, 0xA9, 0x58, 0xC9, 0x5A, 0xF3, 0x10, 0xAC, 0x6E, 0x1B, 0x63, 0x8D, 0xB1, 0x46, 0x7B, - 0x1F, 0xAC, 0x35, 0x7A, 0x1A, 0xE7, 0xA6, 0x71, 0x00, 0x80, 0xA5, 0xEC, 0x7D, 0xD9, 0x8D, 0x53, - 0x45, 0x6A, 0x9C, 0x35, 0xD6, 0x94, 0x92, 0xF7, 0xE3, 0x44, 0x48, 0x52, 0x49, 0x8E, 0xDA, 0x60, - 0x61, 0xD4, 0x34, 0xCF, 0x39, 0x67, 0xA5, 0xF4, 0x6A, 0xD1, 0x5B, 0x63, 0x42, 0x08, 0x5C, 0xD0, - 0x1D, 0x42, 0xDE, 0x17, 0x7F, 0xBF, 0xD9, 0xA5, 0x92, 0x95, 0x54, 0x40, 0x50, 0x6A, 0xE9, 0xDA, - 0xE6, 0xD4, 0x39, 0x21, 0xC5, 0xCB, 0x97, 0xAF, 0xE6, 0xD9, 0x2B, 0xAD, 0xCE, 0x4F, 0x4F, 0x9E, - 0x5C, 0x9C, 0x19, 0xA3, 0x16, 0x7D, 0xB7, 0xE8, 0xBB, 0xAE, 0x6D, 0x58, 0xE2, 0x4C, 0x40, 0x25, - 0x57, 0xA5, 0x81, 0xB0, 0xE6, 0x52, 0x81, 0xE8, 0x70, 0xB7, 0x08, 0x21, 0xA4, 0x50, 0xA0, 0x72, - 0x2E, 0x21, 0xE5, 0x10, 0xB9, 0x03, 0x97, 0x38, 0x39, 0x64, 0xF6, 0xA9, 0xD6, 0x62, 0xAD, 0xE1, - 0x27, 0xB8, 0x56, 0x34, 0x5A, 0x4B, 0x25, 0x0D, 0x18, 0xEF, 0xFD, 0xED, 0xCD, 0xAD, 0x6D, 0x3B, - 0xA9, 0x4C, 0xA9, 0xD5, 0xFB, 0xC0, 0x65, 0x71, 0x44, 0x54, 0x6A, 0x69, 0x9B, 0xA6, 0x22, 0xEE, - 0xF7, 0x93, 0x6B, 0xDA, 0x2A, 0xCD, 0x17, 0xBF, 0xFC, 0xC7, 0x61, 0xFD, 0xC8, 0x74, 0x4B, 0xC2, - 0x7A, 0xBB, 0xCF, 0x29, 0x95, 0x71, 0xDC, 0xFA, 0xDA, 0xEF, 0x23, 0xC8, 0x52, 0xFC, 0xE6, 0xD6, - 0x08, 0x3D, 0x37, 0x8F, 0x05, 0x10, 0x87, 0xED, 0xF8, 0x10, 0x72, 0x2E, 0x52, 0x0A, 0x86, 0x84, - 0x58, 0x58, 0x24, 0x33, 0xCB, 0xC7, 0x05, 0xE7, 0xF9, 0xB1, 0x6C, 0xED, 0x00, 0x66, 0x1D, 0x90, - 0x78, 0x92, 0x52, 0x3C, 0x38, 0xA5, 0x04, 0xB0, 0x15, 0x96, 0x15, 0xF8, 0xAC, 0x84, 0x30, 0x04, - 0x94, 0x52, 0xA9, 0x48, 0x5A, 0x6B, 0x6B, 0xB4, 0xD6, 0xD2, 0x68, 0xED, 0x40, 0xC8, 0x46, 0x4C, - 0x4A, 0xFB, 0x18, 0x4B, 0xAD, 0x86, 0xD7, 0x28, 0x21, 0xD8, 0x3C, 0x38, 0x87, 0xC0, 0x21, 0x3C, - 0x52, 0x49, 0xAC, 0x58, 0x72, 0x19, 0xE7, 0xC0, 0x5C, 0x8F, 0xD6, 0x12, 0x0C, 0x95, 0x52, 0x09, - 0xA1, 0x6D, 0x1A, 0x00, 0xA8, 0xEA, 0x77, 0x5D, 0xDF, 0x0F, 0xE5, 0x0E, 0xA5, 0x54, 0x38, 0xDA, - 0x26, 0x95, 0x52, 0x40, 0x14, 0x63, 0xE4, 0x80, 0x8A, 0xC2, 0xA9, 0x60, 0x42, 0x9C, 0x88, 0x79, - 0xFE, 0xFC, 0x67, 0x7F, 0xF5, 0xC9, 0xAF, 0xA7, 0x54, 0x9E, 0x3E, 0x79, 0xFA, 0xFC, 0x7B, 0xDF, - 0x1F, 0x96, 0x8B, 0xCB, 0x37, 0xAF, 0xC7, 0xDD, 0xCE, 0x4F, 0xE3, 0xB4, 0xDF, 0x87, 0x94, 0x36, - 0x37, 0x37, 0xCF, 0x3E, 0xFA, 0xFE, 0x8B, 0x9F, 0xAC, 0xAD, 0xD6, 0xE3, 0x7E, 0x5B, 0x08, 0xBA, - 0x76, 0x48, 0x55, 0x5C, 0xBF, 0x79, 0x3B, 0x8E, 0x7B, 0x90, 0xDA, 0x3A, 0x27, 0xA5, 0x12, 0xBA, - 0x49, 0xA9, 0xD4, 0x52, 0xB4, 0x24, 0x21, 0x01, 0x91, 0xA4, 0x50, 0xDA, 0x68, 0x15, 0x13, 0x49, - 0x89, 0x44, 0x6D, 0xD7, 0xEC, 0x93, 0x0F, 0xE3, 0xE6, 0xCD, 0xCB, 0xCF, 0x52, 0xAD, 0xA6, 0x5B, - 0xFC, 0xFC, 0x6F, 0x7E, 0xD6, 0xAE, 0x1E, 0x7F, 0xFF, 0xA7, 0xFF, 0x7A, 0xB9, 0x3E, 0x55, 0x4A, - 0x69, 0x2D, 0x15, 0x88, 0x5A, 0xB9, 0x1E, 0xE5, 0x90, 0x50, 0x54, 0xCA, 0xA1, 0xC0, 0x4D, 0x0A, - 0x40, 0x42, 0x00, 0x50, 0x52, 0x28, 0x21, 0x94, 0x73, 0x3E, 0x26, 0x3E, 0xB9, 0x40, 0x6B, 0x10, - 0x87, 0xFA, 0x6E, 0x00, 0x90, 0x42, 0x58, 0xAD, 0xB5, 0x92, 0xD5, 0x98, 0x78, 0x38, 0x13, 0x0F, - 0xB6, 0xAA, 0x52, 0x6B, 0x89, 0x55, 0x49, 0xD9, 0x3A, 0x97, 0x52, 0xE2, 0x78, 0x52, 0x21, 0x04, - 0xC3, 0x79, 0x0C, 0x29, 0x6A, 0xA9, 0x94, 0x16, 0xB5, 0x52, 0xAD, 0xC5, 0xB9, 0xA6, 0x56, 0x0A, - 0x21, 0xA1, 0xA4, 0x8A, 0x1C, 0x7E, 0x0F, 0x31, 0x67, 0xCE, 0xDE, 0x68, 0xAC, 0x63, 0x88, 0x5D, - 0xD0, 0x41, 0x2B, 0xE7, 0xAC, 0xDA, 0xEE, 0xC6, 0xBB, 0xCD, 0xEE, 0xFA, 0xD6, 0x9D, 0x9F, 0xAE, - 0xD7, 0xCB, 0x81, 0x51, 0xF9, 0x3F, 0xFA, 0xC3, 0x8F, 0xB7, 0xBB, 0xA9, 0x6B, 0xDD, 0x7E, 0x3F, - 0xBF, 0x7E, 0x7B, 0x55, 0x11, 0x9D, 0x73, 0x6D, 0xEB, 0x72, 0xCE, 0x4A, 0x1E, 0xE0, 0x24, 0x01, - 0x04, 0x20, 0xF8, 0xF4, 0xE1, 0x85, 0xD1, 0x18, 0xC3, 0xB6, 0x01, 0x24, 0x94, 0xDC, 0xCF, 0x5D, - 0x0F, 0x9F, 0xA9, 0xD1, 0x7A, 0x9C, 0xC3, 0x6E, 0x9C, 0x4E, 0xD7, 0x4B, 0xA1, 0x24, 0x0B, 0x20, - 0xEE, 0xEF, 0x77, 0xBC, 0x2A, 0x12, 0x40, 0xD7, 0x36, 0xEC, 0x67, 0xB0, 0xD6, 0x72, 0xD6, 0x16, - 0x57, 0x40, 0xB1, 0xF5, 0x35, 0xE7, 0x9C, 0x52, 0x32, 0xC6, 0x22, 0xC0, 0xEC, 0x7D, 0xDF, 0x35, - 0xBF, 0x17, 0x19, 0x82, 0x3C, 0xF8, 0x61, 0x05, 0x5F, 0x83, 0xD6, 0x6A, 0x9E, 0x83, 0x10, 0x42, - 0x38, 0x51, 0x0B, 0x62, 0xAD, 0x21, 0x84, 0x9C, 0xB3, 0x6E, 0x9C, 0x73, 0x76, 0x1C, 0x27, 0x29, - 0x85, 0x51, 0x8A, 0xA3, 0x19, 0xF7, 0xE3, 0x4C, 0x44, 0x48, 0xC8, 0x67, 0x85, 0x4F, 0xB1, 0x96, - 0x42, 0x00, 0x58, 0xC9, 0x68, 0xB5, 0x5E, 0x2D, 0xC7, 0x71, 0xDE, 0x8F, 0x1E, 0x00, 0xAC, 0xB1, - 0x5D, 0xA7, 0xAC, 0x31, 0xCE, 0x39, 0x6B, 0xB5, 0x52, 0x2A, 0xA7, 0x12, 0x42, 0x70, 0xD6, 0x1A, - 0x6B, 0x08, 0x28, 0xA7, 0xAC, 0x53, 0x4E, 0x5A, 0xC9, 0xC6, 0xDA, 0x39, 0xC4, 0xC9, 0x47, 0xA5, - 0x75, 0xA3, 0x15, 0x22, 0xD6, 0x52, 0x42, 0x8C, 0x02, 0x84, 0x6B, 0x9A, 0x5A, 0xD8, 0x07, 0x67, - 0xBC, 0xF7, 0x3C, 0xA6, 0xB7, 0x4D, 0xD3, 0x77, 0x2D, 0x3B, 0x3C, 0xBA, 0xAE, 0xB3, 0xC6, 0x6E, - 0xB6, 0xFB, 0x90, 0x52, 0x39, 0xE0, 0x7C, 0x79, 0xE8, 0x5A, 0x63, 0x8C, 0x16, 0xFA, 0x74, 0xBD, - 0x0A, 0x39, 0x4F, 0xDB, 0x59, 0x0A, 0x69, 0x8D, 0x01, 0xA2, 0xD5, 0x62, 0xB0, 0xD6, 0x74, 0xAD, - 0x63, 0x44, 0x33, 0xE7, 0x82, 0x28, 0x6B, 0xAD, 0x08, 0x54, 0x2B, 0x89, 0x94, 0x85, 0x14, 0xA5, - 0x54, 0x25, 0xA4, 0x54, 0x92, 0x4B, 0x40, 0xA4, 0x10, 0xB9, 0x96, 0x94, 0x2A, 0x0F, 0x35, 0xE2, - 0xD0, 0xD2, 0x56, 0x89, 0x40, 0x2B, 0x29, 0x85, 0x6E, 0x1D, 0x77, 0x9D, 0x1D, 0x6A, 0x84, 0x4A, - 0xC5, 0xD9, 0x87, 0xAB, 0xCB, 0xB7, 0xC3, 0xF2, 0x24, 0x15, 0x0A, 0x61, 0xB2, 0xD6, 0x12, 0xD6, - 0x71, 0xDC, 0x10, 0x28, 0x22, 0x79, 0x4C, 0x74, 0x16, 0xD6, 0x1A, 0x90, 0xEA, 0xE4, 0xE9, 0x8B, - 0x8B, 0xA1, 0xCC, 0xC5, 0x2E, 0xD6, 0xA7, 0xB6, 0x69, 0x43, 0x10, 0xD5, 0x3A, 0x41, 0x55, 0x0B, - 0x14, 0x20, 0x97, 0xCB, 0x45, 0x7C, 0x39, 0x4E, 0x63, 0x8B, 0xCD, 0xE3, 0x10, 0x83, 0x75, 0x36, - 0x84, 0x5C, 0x8A, 0x7F, 0x30, 0x11, 0x12, 0xFD, 0x7F, 0x4C, 0xBD, 0xC9, 0xAF, 0x5D, 0x59, 0x7A, - 0xE5, 0xB7, 0xFB, 0xBD, 0x4F, 0x77, 0xFB, 0xFB, 0x3A, 0x3E, 0x76, 0x41, 0x46, 0x1F, 0xD9, 0x29, - 0x25, 0x57, 0x95, 0xAA, 0xA4, 0x92, 0xA1, 0x42, 0x01, 0x06, 0x8C, 0xAA, 0x91, 0x01, 0x4F, 0x8C, - 0x02, 0x0C, 0xDB, 0x63, 0x0F, 0x6A, 0xE2, 0xB9, 0xFF, 0x28, 0xBB, 0x60, 0xA0, 0x20, 0x97, 0x2C, - 0x59, 0xA9, 0xCC, 0x94, 0x32, 0x32, 0xA3, 0x25, 0x19, 0xEC, 0x5E, 0x7F, 0xDB, 0xD3, 0xEE, 0x7E, - 0x6F, 0x0F, 0xF6, 0x7D, 0x61, 0x05, 0x81, 0x18, 0x90, 0x04, 0x41, 0xDE, 0xF7, 0xCE, 0x77, 0xBE, - 0x66, 0xAD, 0xDF, 0x8A, 0x9C, 0x33, 0x00, 0x81, 0x56, 0xD6, 0x7B, 0xCF, 0x39, 0xF5, 0x3E, 0x22, - 0x04, 0xAD, 0x4D, 0xC3, 0x26, 0x88, 0x30, 0x40, 0x00, 0xD2, 0x8C, 0x09, 0x61, 0x48, 0x3B, 0x32, - 0x7F, 0xF0, 0xF4, 0xC0, 0x94, 0xB7, 0xE4, 0x9C, 0x13, 0x82, 0x7B, 0x8F, 0x62, 0x08, 0x88, 0xE2, - 0x90, 0xF2, 0x44, 0x12, 0xE5, 0x84, 0x10, 0x8A, 0x31, 0x44, 0x50, 0x3B, 0x9F, 0x01, 0xA8, 0xAD, - 0x49, 0xCF, 0x1B, 0xBA, 0x0F, 0x55, 0x8C, 0x31, 0x4A, 0xA8, 0x89, 0xC3, 0x08, 0xC2, 0x10, 0xFC, - 0xA0, 0x4C, 0x2F, 0x15, 0x46, 0x88, 0xD0, 0x44, 0x34, 0x07, 0x09, 0x52, 0xFA, 0xE3, 0x74, 0x99, - 0x26, 0xD0, 0xF4, 0x6E, 0x0B, 0x21, 0xC4, 0x18, 0x0E, 0xB2, 0xD2, 0x7B, 0x85, 0x57, 0x08, 0xC1, - 0x39, 0x8F, 0x30, 0xA6, 0xD4, 0x22, 0x08, 0x23, 0x80, 0x50, 0xCA, 0xF6, 0xDB, 0xBF, 0xFB, 0xCD, - 0xEF, 0xFE, 0x5E, 0x3B, 0x2F, 0x18, 0x3D, 0x7B, 0xF2, 0xEC, 0xE1, 0x27, 0x9F, 0x67, 0x45, 0x39, - 0x39, 0x39, 0x45, 0x08, 0xB5, 0xFB, 0xE6, 0xCB, 0xBF, 0xF9, 0xAB, 0xF7, 0x6F, 0x5F, 0x4B, 0x25, - 0x23, 0x22, 0x11, 0xE1, 0x80, 0xD0, 0x30, 0xA8, 0x08, 0xF5, 0xF8, 0xF8, 0xE1, 0xF6, 0xEE, 0xAE, - 0xD9, 0x6D, 0x01, 0x80, 0x83, 0x52, 0x2E, 0xC6, 0x62, 0x32, 0x67, 0xA3, 0xB9, 0xD6, 0x3A, 0x7A, - 0xE7, 0xF1, 0x81, 0xC2, 0x94, 0xDC, 0x94, 0x59, 0x26, 0xFA, 0x43, 0x54, 0x22, 0xAD, 0x26, 0xD3, - 0x3F, 0xFA, 0xD3, 0xBF, 0x7C, 0xF1, 0x57, 0xFB, 0x6F, 0x5F, 0x7C, 0x7B, 0x7C, 0x7A, 0xF6, 0xA7, - 0xFF, 0xF2, 0x2F, 0x7E, 0xFD, 0xEB, 0xBF, 0xDB, 0xDD, 0xFC, 0x70, 0x74, 0x7A, 0x26, 0x07, 0x89, - 0x31, 0x8A, 0x31, 0xF8, 0x10, 0xE1, 0x41, 0x34, 0xE7, 0x93, 0x29, 0x9E, 0xE6, 0x19, 0x00, 0x40, - 0x1B, 0x0B, 0x63, 0x8A, 0x7A, 0x40, 0x10, 0x21, 0xEB, 0x42, 0xC2, 0x33, 0x10, 0x8C, 0x7F, 0x14, - 0xD3, 0xC1, 0xFB, 0xE8, 0x36, 0x08, 0xE0, 0x90, 0xD8, 0x21, 0x04, 0x27, 0xAF, 0xC5, 0xE1, 0x83, - 0xBD, 0xFF, 0x6D, 0xCE, 0xBB, 0xD1, 0xA8, 0x68, 0x3B, 0x19, 0xFE, 0xC9, 0x25, 0x85, 0x10, 0x1C, - 0x82, 0x77, 0x00, 0xC0, 0x40, 0x10, 0x42, 0xD6, 0xB9, 0x94, 0x56, 0xE3, 0x7D, 0x20, 0x04, 0x1B, - 0x63, 0x5D, 0x04, 0x94, 0x20, 0x9C, 0x78, 0x79, 0xE9, 0x73, 0x06, 0xD1, 0x1E, 0xB6, 0x75, 0xD1, - 0x07, 0xAF, 0x6D, 0xA0, 0x84, 0xA0, 0x10, 0xB4, 0x71, 0x6F, 0x2E, 0xAE, 0x8F, 0xE6, 0x93, 0xC7, - 0xE7, 0xA7, 0x00, 0x40, 0x6B, 0x5D, 0xDD, 0x34, 0xAB, 0x95, 0xED, 0xA5, 0xD4, 0xDA, 0xC4, 0x18, - 0x95, 0x56, 0xDA, 0x64, 0xC6, 0x5A, 0x08, 0x00, 0x25, 0x38, 0xE5, 0x3A, 0xC3, 0x43, 0xBC, 0x1E, - 0x06, 0x00, 0x70, 0x46, 0xD3, 0xF5, 0x82, 0xA0, 0x03, 0xA9, 0xCD, 0x39, 0x07, 0xEF, 0x5D, 0xFE, - 0x84, 0x12, 0x42, 0x50, 0x26, 0x38, 0x26, 0x38, 0x19, 0x5D, 0x37, 0xDB, 0xBA, 0x6E, 0x3B, 0x98, - 0x38, 0xE9, 0x87, 0x1A, 0x1D, 0x22, 0x00, 0x7D, 0x2F, 0xA5, 0x36, 0x21, 0x44, 0xEF, 0x3C, 0xE7, - 0x2C, 0x15, 0x74, 0xAD, 0x35, 0x63, 0x94, 0xA0, 0xC4, 0x40, 0x06, 0x18, 0xA3, 0xBE, 0x1F, 0xF2, - 0xA2, 0xE0, 0xF7, 0xE9, 0xC5, 0x11, 0x80, 0x08, 0x3C, 0x42, 0x44, 0x69, 0x15, 0x01, 0x72, 0xD6, - 0x79, 0xEF, 0xB5, 0xD2, 0xC9, 0x99, 0x93, 0xFC, 0xAD, 0x83, 0xD4, 0x21, 0x46, 0xB5, 0xDE, 0x8D, - 0x46, 0xF6, 0x68, 0x3E, 0x4D, 0x5F, 0xB2, 0x24, 0x22, 0x41, 0x08, 0x31, 0xCA, 0x56, 0x9B, 0x1D, - 0x3C, 0xE4, 0x99, 0x86, 0xA2, 0xC8, 0x8F, 0x16, 0xB3, 0xB6, 0x1F, 0x94, 0xB1, 0x8C, 0x12, 0xC1, - 0x58, 0xF2, 0x90, 0x39, 0x6B, 0x41, 0x8C, 0x79, 0x41, 0x19, 0xA3, 0x3E, 0xAD, 0xD6, 0x9C, 0x4F, - 0x76, 0x38, 0x92, 0xCE, 0x37, 0xBD, 0x52, 0x10, 0x22, 0x21, 0x58, 0x72, 0xFC, 0xA4, 0x2F, 0x76, - 0x72, 0xB1, 0xB9, 0xFB, 0x9C, 0x64, 0x63, 0x8C, 0x73, 0x16, 0x63, 0x92, 0xE2, 0x10, 0x41, 0x84, - 0x6D, 0x3F, 0x68, 0x63, 0x32, 0x21, 0xB4, 0x31, 0xD6, 0x3A, 0x65, 0x4C, 0xB2, 0x7F, 0x43, 0x84, - 0xA4, 0x31, 0x11, 0x80, 0xE9, 0x78, 0xE4, 0x43, 0x68, 0xFB, 0x21, 0xED, 0xC5, 0x12, 0x96, 0xBB, - 0x57, 0x9A, 0x52, 0x32, 0x2A, 0x0B, 0x88, 0x90, 0x75, 0xDE, 0x0F, 0x12, 0x02, 0x90, 0x84, 0xFB, - 0xCE, 0x27, 0xE4, 0x31, 0x44, 0x10, 0x45, 0x10, 0x53, 0x7C, 0x6F, 0xAA, 0x15, 0x09, 0x73, 0x8A, - 0x31, 0xCE, 0xB3, 0xF4, 0x15, 0x0C, 0xC1, 0x7B, 0x69, 0x7C, 0x2E, 0xA8, 0xA0, 0x28, 0xCB, 0xF3, - 0x3C, 0xCF, 0xBC, 0x73, 0x5E, 0x2B, 0xC1, 0xB3, 0xDB, 0xBB, 0x55, 0x3F, 0x0C, 0xCE, 0xD9, 0xA0, - 0x77, 0x14, 0x21, 0x63, 0x06, 0x1B, 0xC4, 0xD0, 0xF4, 0xC6, 0xBA, 0x6A, 0xB2, 0xBC, 0xBE, 0x78, - 0x31, 0x9D, 0x1E, 0x19, 0x96, 0x73, 0x91, 0x63, 0x8C, 0x57, 0xB7, 0x97, 0xB3, 0xA3, 0x49, 0x51, - 0xCE, 0x42, 0x76, 0x86, 0x19, 0xD7, 0x5A, 0x61, 0xC2, 0x28, 0xF2, 0x8C, 0x62, 0x8F, 0xB2, 0x2C, - 0x78, 0x10, 0x8D, 0x0B, 0x9D, 0x0D, 0x47, 0x25, 0x8C, 0x45, 0xC6, 0xFB, 0xBE, 0x1B, 0xA2, 0xCF, - 0xB2, 0x92, 0x52, 0x0A, 0x21, 0x48, 0x53, 0x39, 0xC1, 0x38, 0x78, 0x8F, 0x30, 0x84, 0x00, 0x1A, - 0xE3, 0xEE, 0x9F, 0x4C, 0x14, 0xBC, 0x77, 0xCE, 0x23, 0x8C, 0x5C, 0x62, 0xE6, 0xC6, 0x80, 0x11, - 0xB4, 0x36, 0xA4, 0xD7, 0x75, 0x6A, 0xE0, 0x13, 0x45, 0x2B, 0x09, 0x45, 0xF2, 0x4C, 0x38, 0xE7, - 0x40, 0x8C, 0x10, 0xC1, 0xB6, 0xED, 0xD3, 0x93, 0xA3, 0x8D, 0x71, 0x18, 0x63, 0x84, 0xD3, 0x9F, - 0x91, 0x16, 0xCC, 0xE8, 0xDE, 0x49, 0x93, 0x9E, 0x3A, 0x6D, 0xAC, 0x8A, 0x06, 0x21, 0x18, 0x7C, - 0x70, 0xDE, 0xC7, 0x10, 0x20, 0xC6, 0x94, 0x10, 0xC1, 0x79, 0xC6, 0x59, 0x55, 0x95, 0xDE, 0xFB, - 0x41, 0xEA, 0x24, 0x4D, 0xD0, 0x5A, 0xDF, 0x73, 0xC4, 0x50, 0x08, 0x21, 0xC6, 0xF4, 0x48, 0x03, - 0xE7, 0x0E, 0x40, 0xA4, 0x24, 0x55, 0x33, 0xDA, 0xF6, 0x60, 0xC0, 0x08, 0x21, 0xCA, 0x8A, 0xDB, - 0xDF, 0xFD, 0xEA, 0x57, 0xFF, 0xF7, 0xDE, 0x84, 0xF1, 0xA8, 0x5C, 0x2E, 0x8F, 0x67, 0xC7, 0x4B, - 0xC2, 0x18, 0xE5, 0x7C, 0xC4, 0x8F, 0xBF, 0xFD, 0xC7, 0xDF, 0x0C, 0x7D, 0x8F, 0x19, 0x2F, 0xB3, - 0x4C, 0xB6, 0xF5, 0x6E, 0x75, 0xB7, 0x38, 0x3E, 0x71, 0x11, 0xD4, 0xED, 0x70, 0x74, 0x76, 0x06, - 0x11, 0xFE, 0x87, 0xBF, 0xF9, 0xCF, 0x41, 0x4B, 0x87, 0x88, 0x0D, 0xBA, 0xA4, 0xFC, 0xD1, 0xE7, - 0xBF, 0x8C, 0x54, 0x68, 0xA5, 0x00, 0x88, 0xD1, 0xDA, 0xF0, 0xA3, 0xF8, 0xF6, 0x3E, 0x95, 0x2A, - 0xC5, 0xCA, 0x84, 0x08, 0xFB, 0xF5, 0xF5, 0xE5, 0xAB, 0xAF, 0x82, 0xF5, 0x67, 0x67, 0x0F, 0x96, - 0xD9, 0x31, 0x1B, 0x1D, 0x73, 0x51, 0x58, 0xE7, 0x62, 0x3C, 0x20, 0x4D, 0x8D, 0xF3, 0xFE, 0x60, - 0x08, 0x3D, 0x84, 0x0A, 0x27, 0x5C, 0x5D, 0x6A, 0x66, 0x53, 0x2A, 0x95, 0x8F, 0x11, 0x40, 0x90, - 0x3E, 0xD8, 0x24, 0x3A, 0x07, 0xF7, 0x50, 0x6F, 0x6F, 0x6D, 0x08, 0x21, 0x90, 0xA8, 0x8D, 0xCD, - 0x04, 0xCB, 0x18, 0xBF, 0xBF, 0xF3, 0x42, 0x08, 0x21, 0x21, 0x24, 0x26, 0x3B, 0xFC, 0xA1, 0xAD, - 0x06, 0x59, 0xC6, 0x11, 0x42, 0x52, 0xA9, 0x43, 0x37, 0x87, 0x0E, 0x91, 0xC9, 0x28, 0xD9, 0x0C, - 0x9C, 0xB3, 0xD6, 0x02, 0x10, 0x11, 0x22, 0x79, 0x2E, 0x86, 0x41, 0x69, 0x63, 0x11, 0x82, 0x8C, - 0xD1, 0xA4, 0xF3, 0x4C, 0xCF, 0x51, 0x2A, 0x86, 0x18, 0xE3, 0xF4, 0xA0, 0xA5, 0x77, 0x21, 0x25, - 0x64, 0xB5, 0xD9, 0x9F, 0x1C, 0x2D, 0xC6, 0x65, 0xF1, 0x87, 0xAF, 0x5F, 0x28, 0xAD, 0x83, 0xF7, - 0x98, 0x90, 0x34, 0x48, 0xC6, 0x10, 0xA4, 0x94, 0x21, 0x1C, 0xAA, 0x58, 0x0A, 0xC1, 0x82, 0x10, - 0x06, 0x1F, 0xD2, 0xC8, 0x82, 0x10, 0x74, 0xCE, 0x23, 0x84, 0x21, 0x8C, 0xA9, 0xD1, 0x76, 0xD6, - 0x32, 0xCE, 0x13, 0xD9, 0xD5, 0xC5, 0x10, 0x01, 0x28, 0x8B, 0x1C, 0x41, 0x28, 0xB5, 0xD9, 0xED, - 0x9A, 0xBA, 0xED, 0x22, 0x00, 0xC1, 0xFB, 0x74, 0x90, 0x69, 0xBB, 0x01, 0x00, 0xA0, 0x93, 0x12, - 0xED, 0x7E, 0xD7, 0x9A, 0xD4, 0x64, 0xDE, 0x7B, 0x4E, 0x29, 0xC6, 0x48, 0x69, 0xD3, 0x0F, 0x2A, - 0x5D, 0xBD, 0x11, 0xC6, 0xE9, 0x80, 0x90, 0xCE, 0x4A, 0x84, 0x10, 0x68, 0x0C, 0x04, 0x90, 0x60, - 0x02, 0x10, 0xC2, 0x10, 0x49, 0x29, 0x95, 0x3C, 0x74, 0xF4, 0xE1, 0xB0, 0x14, 0x76, 0x08, 0xA1, - 0xA4, 0x9D, 0xB4, 0xC6, 0xFA, 0xE0, 0xA5, 0x36, 0x5D, 0x3F, 0xA4, 0xBE, 0x2C, 0xA9, 0x58, 0xD2, - 0xB5, 0x02, 0x21, 0x28, 0x95, 0xBE, 0x5B, 0x6F, 0x28, 0x25, 0xF3, 0xD9, 0x38, 0x2D, 0x3D, 0x92, - 0xC4, 0xAF, 0x6D, 0xBB, 0x10, 0x02, 0x86, 0xC8, 0xDA, 0xC4, 0x5C, 0x04, 0xF8, 0xDE, 0x93, 0x4B, - 0xA6, 0xE3, 0xB1, 0x54, 0xCA, 0x5A, 0x1B, 0x62, 0x54, 0xDA, 0x40, 0x88, 0x52, 0x2B, 0x04, 0x00, - 0x0C, 0x11, 0x80, 0x08, 0x84, 0xE0, 0xDE, 0x7B, 0xAD, 0x52, 0x10, 0x16, 0x4C, 0x98, 0xB4, 0x10, - 0x22, 0x84, 0x40, 0x4A, 0x19, 0xEE, 0x99, 0x9F, 0xA9, 0xF4, 0x62, 0x4C, 0x94, 0x52, 0x00, 0xC2, - 0x08, 0xA0, 0xF3, 0x01, 0x22, 0x38, 0x28, 0xDD, 0x0F, 0x52, 0x19, 0xC3, 0x28, 0x2D, 0xB2, 0xEC, - 0x10, 0xC5, 0xC8, 0x68, 0x8C, 0x51, 0x69, 0x93, 0x96, 0x7F, 0x04, 0x23, 0x42, 0x09, 0x44, 0x00, - 0x42, 0xC4, 0x08, 0x71, 0xDE, 0x3B, 0x67, 0x13, 0x27, 0x21, 0xBD, 0x79, 0xB4, 0x4E, 0xCF, 0x32, - 0xA1, 0x28, 0x22, 0x8C, 0x21, 0x80, 0x88, 0x53, 0x6D, 0x20, 0x23, 0x20, 0x58, 0x49, 0x49, 0xA6, - 0x86, 0x06, 0x23, 0xD0, 0x36, 0x9B, 0xBE, 0xDB, 0x78, 0x07, 0xD6, 0xAB, 0xCB, 0xD9, 0xA8, 0x82, - 0xBA, 0xFF, 0xFD, 0x8B, 0x77, 0x0F, 0xCE, 0x16, 0xC6, 0xC7, 0xED, 0xEA, 0x9D, 0x0F, 0x2E, 0x42, - 0x36, 0xDE, 0xCF, 0x20, 0x00, 0xFB, 0xBB, 0xFA, 0xE1, 0xE3, 0x4F, 0x70, 0x70, 0x6D, 0xDD, 0xA8, - 0xED, 0xC5, 0xB8, 0xC0, 0xAD, 0xD6, 0x3C, 0x8B, 0x58, 0x5F, 0x59, 0x0B, 0x78, 0x31, 0x9E, 0x2E, - 0x79, 0xD3, 0xED, 0x06, 0xAB, 0x7D, 0x88, 0xAD, 0xDE, 0x11, 0x21, 0x1C, 0x42, 0xBB, 0xD5, 0xBB, - 0x3D, 0xB4, 0x7D, 0xB3, 0x9D, 0x2E, 0x1F, 0x60, 0x7C, 0x4A, 0x49, 0x15, 0x63, 0x54, 0x7D, 0xCF, - 0x38, 0x77, 0x10, 0x60, 0xC2, 0x95, 0xEC, 0xAA, 0x6A, 0x4C, 0x31, 0x4C, 0x59, 0x70, 0x99, 0xA0, - 0x5A, 0xAB, 0xE5, 0xB8, 0xE8, 0x75, 0x8C, 0x80, 0x02, 0x1F, 0x38, 0x23, 0x8C, 0x12, 0xEF, 0x03, - 0xE7, 0x24, 0xF8, 0x00, 0x00, 0xB4, 0xC6, 0x42, 0x10, 0x33, 0x41, 0x23, 0x60, 0x18, 0x41, 0x21, - 0x18, 0x25, 0xB9, 0xD2, 0x26, 0x35, 0x4D, 0x69, 0x00, 0x4C, 0x9F, 0x83, 0xF3, 0x4E, 0x2A, 0x15, - 0x42, 0xE0, 0x94, 0x11, 0x4C, 0x20, 0x84, 0xD6, 0x5A, 0x00, 0x61, 0x12, 0xD7, 0x10, 0x92, 0x02, - 0x84, 0x0E, 0xDF, 0xC7, 0x3E, 0x84, 0xAA, 0x2A, 0xAB, 0x22, 0x13, 0x9C, 0x51, 0xC6, 0x52, 0xCC, - 0x47, 0x26, 0xD2, 0x4D, 0xDD, 0x03, 0xC0, 0x13, 0xAC, 0xC5, 0xB9, 0xE4, 0x66, 0x65, 0xF7, 0xFA, - 0x75, 0x1C, 0x23, 0x80, 0x30, 0x42, 0x08, 0x92, 0x74, 0x40, 0x0E, 0x12, 0x50, 0x7E, 0xDC, 0x5E, - 0xBE, 0xFC, 0xC3, 0xDF, 0x6E, 0x94, 0x1D, 0x57, 0xA3, 0xB2, 0xA8, 0x96, 0x0F, 0x1E, 0x4D, 0x16, - 0x47, 0x04, 0x43, 0x42, 0xE9, 0xD0, 0x77, 0xFB, 0xBB, 0xAB, 0xF5, 0x7A, 0x13, 0x9C, 0x87, 0x10, - 0xE6, 0x45, 0xFE, 0xE2, 0xAB, 0x7F, 0xAC, 0x66, 0xFF, 0x66, 0x3C, 0x1E, 0x8F, 0xA7, 0xD3, 0xAC, - 0x28, 0xB6, 0x77, 0x37, 0x97, 0x2F, 0xBF, 0xD9, 0xF7, 0x32, 0x46, 0x30, 0x62, 0xEC, 0xF1, 0xF3, - 0x4F, 0xA7, 0xE7, 0xCF, 0xD7, 0xFB, 0xA4, 0x58, 0x8C, 0xC9, 0x76, 0x89, 0x21, 0x82, 0x49, 0x2A, - 0x18, 0x23, 0x63, 0xD4, 0x39, 0x6F, 0xB4, 0xD5, 0x1E, 0x82, 0xBB, 0x8B, 0x9B, 0x9B, 0x0B, 0x92, - 0x8F, 0x10, 0x2D, 0xA4, 0x23, 0xE3, 0xE5, 0x79, 0x0C, 0xC0, 0xB4, 0x2D, 0x23, 0x08, 0x02, 0xE8, - 0x23, 0x00, 0xD1, 0xC5, 0x10, 0x92, 0x71, 0xD5, 0x18, 0x93, 0x82, 0x79, 0x72, 0x21, 0x08, 0x26, - 0x10, 0x22, 0x04, 0xE2, 0x01, 0xA3, 0x16, 0x13, 0xA1, 0x8C, 0x43, 0x08, 0xE1, 0x3D, 0xDD, 0x34, - 0x75, 0xF4, 0x10, 0xA2, 0x41, 0x6A, 0x88, 0x60, 0x55, 0xE4, 0x18, 0x23, 0xEB, 0x28, 0xA3, 0xA4, - 0x1F, 0x74, 0xAA, 0x2F, 0xDE, 0x7B, 0x10, 0xEF, 0x13, 0x8F, 0x7C, 0x48, 0xBC, 0x8A, 0x84, 0xA0, - 0x51, 0xDA, 0x68, 0xE3, 0x38, 0xA4, 0x10, 0x44, 0x04, 0x10, 0x82, 0x30, 0x15, 0x4A, 0x6B, 0xED, - 0x30, 0xC8, 0x3C, 0xCF, 0x38, 0xA7, 0x52, 0x7A, 0xEF, 0x63, 0x0C, 0x11, 0x62, 0xE8, 0xBD, 0x47, - 0x07, 0x72, 0x74, 0x88, 0x31, 0x52, 0x0A, 0xEE, 0x07, 0x79, 0x98, 0xF6, 0x21, 0x20, 0x82, 0x37, - 0xEF, 0xAF, 0x3F, 0x7A, 0xFA, 0x30, 0xE5, 0x07, 0xA6, 0x9B, 0xEC, 0x01, 0x52, 0x82, 0x50, 0xDA, - 0xA8, 0x58, 0xE7, 0x71, 0x1A, 0x99, 0x31, 0xA6, 0x94, 0x86, 0x18, 0xD3, 0x3E, 0x8F, 0x92, 0x43, - 0x6E, 0x08, 0x42, 0x28, 0xA9, 0x47, 0x93, 0xA4, 0x4E, 0x1B, 0xCB, 0x39, 0x6F, 0xDA, 0x46, 0x19, - 0xCB, 0x19, 0xA0, 0x08, 0x0F, 0x83, 0x6C, 0x9A, 0x0E, 0x1C, 0x82, 0xAD, 0x62, 0x99, 0x65, 0x4A, - 0x25, 0xD4, 0x38, 0x38, 0x28, 0xF1, 0x41, 0x2A, 0xE2, 0x58, 0x08, 0x1E, 0xC2, 0x81, 0x72, 0xD9, - 0x76, 0x83, 0x3E, 0x44, 0xE1, 0x81, 0x43, 0x6D, 0x8D, 0x51, 0x2A, 0x4D, 0x09, 0xD2, 0xDA, 0x58, - 0xE7, 0xD3, 0xA5, 0x12, 0x63, 0x32, 0x48, 0xA5, 0x95, 0x52, 0x4A, 0x43, 0x00, 0x21, 0x82, 0x07, - 0xCB, 0xCA, 0xFD, 0xBB, 0x11, 0x21, 0xD4, 0xF5, 0x83, 0x49, 0x0A, 0x20, 0x1F, 0x52, 0xD8, 0x6B, - 0x1A, 0x51, 0xC1, 0x21, 0xF0, 0x2D, 0x26, 0x9A, 0x0B, 0x67, 0xAC, 0xC8, 0xB3, 0x08, 0x00, 0x84, - 0x00, 0x01, 0x94, 0x8C, 0x89, 0xA3, 0xAA, 0x32, 0xE6, 0x00, 0x46, 0x47, 0x18, 0x41, 0x88, 0x0E, - 0xE9, 0xF4, 0x4A, 0x92, 0xA6, 0xEB, 0x07, 0xA9, 0x00, 0x8C, 0xDE, 0xD9, 0x3C, 0x2B, 0x0E, 0x2C, - 0x74, 0x00, 0x52, 0x21, 0x84, 0x08, 0xB5, 0x5D, 0x1F, 0x13, 0x3C, 0x13, 0x23, 0x0C, 0xB1, 0xB1, - 0xD6, 0x69, 0x23, 0x38, 0x95, 0x52, 0x22, 0x8C, 0xF2, 0x2C, 0x8B, 0x31, 0x5A, 0xEB, 0x21, 0x82, - 0xD0, 0x07, 0x6B, 0x65, 0xEA, 0x11, 0x08, 0x84, 0x08, 0x23, 0xA5, 0x0D, 0xC6, 0x28, 0x13, 0x42, - 0x08, 0x9E, 0xCE, 0x3D, 0xE8, 0xDE, 0x4F, 0x8F, 0x30, 0xD4, 0xC6, 0xC4, 0x10, 0x8C, 0x75, 0x9C, - 0xD3, 0xAA, 0xC8, 0x62, 0x04, 0x72, 0x18, 0x1C, 0x65, 0xF1, 0x1E, 0x28, 0x1A, 0x41, 0xB4, 0x5A, - 0xCB, 0x41, 0x61, 0x42, 0xD6, 0x57, 0x17, 0x67, 0x8F, 0x1F, 0xAB, 0xBE, 0xF6, 0xDE, 0xCA, 0x7E, - 0xB7, 0xDD, 0x6E, 0x09, 0xA1, 0xD4, 0xEF, 0x47, 0x25, 0x45, 0x45, 0xD5, 0xB5, 0xDD, 0xE6, 0x8D, - 0x24, 0x98, 0xDC, 0xED, 0x74, 0xD7, 0xB6, 0x01, 0x62, 0xB9, 0xBD, 0xF5, 0x28, 0x1B, 0x06, 0xF5, - 0xF5, 0xD7, 0xDF, 0xCA, 0xF6, 0x12, 0x22, 0x1F, 0x11, 0x17, 0x59, 0xB5, 0x5B, 0x5D, 0x60, 0x14, - 0x1E, 0x3C, 0xFE, 0xC5, 0x37, 0x5F, 0xFF, 0x0E, 0x45, 0x39, 0x1D, 0x71, 0x81, 0x2D, 0x86, 0xE5, - 0xE9, 0x83, 0x63, 0x29, 0xF7, 0x6E, 0xFF, 0x5D, 0x3B, 0xA8, 0xFA, 0xC6, 0x3E, 0x38, 0x9A, 0xD7, - 0xBB, 0x3D, 0x22, 0xB4, 0x6F, 0x1B, 0x29, 0x25, 0x06, 0xB4, 0xCA, 0xB7, 0xBD, 0xD4, 0xDF, 0x7D, - 0xFB, 0x87, 0xF1, 0x78, 0x1C, 0xAA, 0xDC, 0xE9, 0xDC, 0xFA, 0xD5, 0xD0, 0xB7, 0x5C, 0x54, 0x02, - 0x4D, 0x95, 0x31, 0x75, 0xB3, 0x23, 0x84, 0xBB, 0xE6, 0xDA, 0x78, 0xEF, 0x43, 0xA8, 0x26, 0xC7, - 0xAA, 0x6F, 0xBC, 0x07, 0x31, 0x64, 0x9C, 0xC2, 0xA6, 0xED, 0x19, 0xC1, 0x19, 0x03, 0x3E, 0x86, - 0x82, 0x23, 0x17, 0x1C, 0x46, 0x84, 0xE1, 0x40, 0x05, 0x43, 0x90, 0x0E, 0xDA, 0x61, 0x8C, 0x19, - 0xC1, 0x3E, 0xC4, 0x9C, 0x53, 0xC1, 0x69, 0xD7, 0xCB, 0xC0, 0x48, 0x32, 0xFD, 0x92, 0x7B, 0x47, - 0xAE, 0xF7, 0x0E, 0x41, 0x14, 0xE2, 0xA1, 0x0B, 0x8B, 0x31, 0x08, 0x46, 0xBD, 0x4B, 0x26, 0x08, - 0x68, 0x01, 0x00, 0x20, 0x42, 0x88, 0xDC, 0x7D, 0x9B, 0x26, 0x95, 0x46, 0xF7, 0xA4, 0xC3, 0x83, - 0x5C, 0x16, 0x42, 0x48, 0x70, 0x04, 0x89, 0x9F, 0x18, 0xAD, 0xFD, 0xFF, 0x51, 0x88, 0xDA, 0x1A, - 0x10, 0x0F, 0xE9, 0x38, 0x11, 0x44, 0x17, 0x02, 0x27, 0x44, 0x05, 0x74, 0x16, 0xDA, 0xFE, 0xF5, - 0xDF, 0xBF, 0x58, 0x6D, 0xCA, 0x72, 0x54, 0x8D, 0x46, 0x93, 0xC5, 0xD1, 0xC3, 0x8F, 0x3F, 0x17, - 0xC5, 0x8C, 0x40, 0x9F, 0x51, 0xDA, 0x2A, 0x09, 0x63, 0x98, 0x8E, 0x47, 0x17, 0x17, 0x17, 0x75, - 0x53, 0x23, 0x84, 0x6C, 0x5F, 0xF7, 0xDB, 0x95, 0xA0, 0x48, 0x88, 0x0C, 0x01, 0xF0, 0xEA, 0xCB, - 0x5F, 0x2F, 0xE6, 0xF3, 0x46, 0xDD, 0x0E, 0x52, 0xB3, 0x82, 0x9E, 0x3C, 0xFA, 0xA0, 0x95, 0x4E, - 0x2A, 0x85, 0x10, 0xC6, 0x08, 0x7A, 0xEF, 0x23, 0x88, 0x0E, 0x26, 0xE0, 0xEF, 0xC1, 0x42, 0xDB, - 0xB4, 0x83, 0x35, 0x06, 0x13, 0xDE, 0x5E, 0xFD, 0x20, 0x8D, 0x3F, 0x3F, 0xAA, 0x3A, 0x03, 0x35, - 0xD0, 0xDE, 0x1A, 0xE7, 0x1C, 0x04, 0x11, 0x23, 0xD4, 0xB4, 0xBD, 0xF1, 0xDE, 0x7B, 0x3F, 0x2E, - 0x0B, 0x1F, 0x83, 0x52, 0xDA, 0x3A, 0xA7, 0xB5, 0x16, 0xFC, 0xB0, 0x72, 0xF6, 0x31, 0xA6, 0xDB, - 0x65, 0x08, 0x01, 0x22, 0x84, 0x71, 0x02, 0x02, 0x86, 0xB4, 0xDE, 0x4A, 0xE8, 0xB1, 0x44, 0xA0, - 0xCA, 0x31, 0x66, 0x9C, 0x12, 0x82, 0x07, 0x29, 0x21, 0x8C, 0x9C, 0x33, 0xEB, 0x3C, 0x25, 0xB4, - 0x1B, 0x24, 0x8A, 0x88, 0x71, 0x0A, 0x01, 0x3D, 0x80, 0x6E, 0x94, 0x21, 0x94, 0x10, 0x4C, 0x28, - 0xA3, 0x9C, 0xF3, 0xDD, 0xBE, 0xB5, 0xCE, 0x53, 0x8C, 0xB5, 0xB6, 0x94, 0x92, 0x74, 0xAE, 0xA1, - 0x94, 0x11, 0x12, 0x93, 0x6E, 0x96, 0x31, 0xAA, 0xB5, 0x75, 0xCE, 0x21, 0x0F, 0x13, 0x14, 0x28, - 0x84, 0x88, 0x50, 0x52, 0xE1, 0xE8, 0x14, 0x8F, 0xE7, 0x3D, 0x0C, 0x69, 0xB7, 0x4B, 0x69, 0xD7, - 0xAB, 0xF7, 0xD7, 0xAB, 0xA7, 0x0F, 0x8F, 0xFD, 0xFD, 0xCC, 0x98, 0x68, 0x82, 0x09, 0x61, 0x24, - 0x95, 0x4E, 0xEA, 0x4E, 0x00, 0x93, 0xC7, 0xD3, 0x30, 0x4A, 0x93, 0x77, 0x58, 0x1B, 0x4F, 0xEF, - 0xE9, 0x89, 0x31, 0x46, 0x84, 0x71, 0x8C, 0x30, 0x05, 0x44, 0x28, 0xA5, 0x8D, 0x31, 0x19, 0x63, - 0x4A, 0x6B, 0xEF, 0xC8, 0x7E, 0xDF, 0x26, 0x6A, 0x43, 0x04, 0x20, 0x31, 0xF2, 0xD2, 0x93, 0x6E, - 0x0F, 0xBD, 0xD8, 0xE1, 0x3F, 0xE7, 0xFD, 0xD0, 0x0F, 0x08, 0x40, 0xAD, 0x8D, 0x4E, 0x32, 0xD7, - 0x7B, 0x7E, 0x53, 0xFA, 0x4E, 0x3A, 0x1C, 0xE8, 0x23, 0x0C, 0x00, 0xA8, 0x41, 0xC1, 0x5C, 0x60, - 0x84, 0xA4, 0x52, 0x7D, 0xD7, 0xFB, 0xE8, 0x21, 0x04, 0x84, 0x60, 0x74, 0x30, 0xE7, 0x07, 0x6B, - 0x6D, 0x9E, 0x89, 0xE9, 0x64, 0xDC, 0xF5, 0x43, 0x3F, 0x48, 0x89, 0x10, 0x88, 0x31, 0x1D, 0xFD, - 0xA4, 0xD2, 0xDE, 0x7B, 0xC6, 0x18, 0x84, 0xD0, 0x1A, 0xE7, 0x9C, 0x9B, 0x4E, 0x46, 0xB3, 0xD9, - 0x64, 0xBD, 0xDE, 0x78, 0xEF, 0xF3, 0x3C, 0xFB, 0xF1, 0x45, 0xAE, 0x94, 0x22, 0x04, 0x67, 0x19, - 0xB7, 0xCE, 0x33, 0x9E, 0x8D, 0x26, 0x23, 0x63, 0x4C, 0xD2, 0xA5, 0x87, 0x10, 0x88, 0x54, 0x3A, - 0x75, 0xD1, 0x9C, 0x52, 0x00, 0x61, 0x0C, 0x21, 0xA5, 0xE9, 0x18, 0x63, 0x8D, 0x01, 0x31, 0x04, - 0x42, 0x29, 0xE7, 0x38, 0x55, 0xCC, 0x14, 0x0B, 0xC8, 0x28, 0x31, 0x46, 0x53, 0x82, 0x19, 0xE7, - 0x49, 0x86, 0x0E, 0x20, 0x44, 0x08, 0x3B, 0x1F, 0x9C, 0xB3, 0x31, 0xC6, 0x2A, 0xCB, 0x38, 0xA3, - 0xB9, 0xE0, 0x31, 0x02, 0x6B, 0x1C, 0xC6, 0xB8, 0x2C, 0xCB, 0xE4, 0x8C, 0x26, 0x18, 0x0B, 0x46, - 0x8D, 0xB1, 0x4D, 0x1B, 0x33, 0x4E, 0x41, 0x88, 0x10, 0x63, 0xC1, 0x18, 0x00, 0x70, 0xBF, 0xDD, - 0x06, 0xE7, 0xA7, 0xF3, 0x05, 0xC6, 0x24, 0xC6, 0x60, 0x8D, 0x1E, 0xFA, 0xAE, 0x69, 0x36, 0x7D, - 0xD7, 0x44, 0x20, 0xD7, 0x97, 0xAF, 0x5F, 0xBF, 0xFE, 0xDB, 0x7A, 0xD7, 0x14, 0x82, 0xF9, 0x60, - 0x40, 0xF4, 0x93, 0x51, 0xA1, 0xFB, 0x7D, 0x59, 0xE4, 0x79, 0x9E, 0xED, 0x6A, 0x49, 0x00, 0xC2, - 0x64, 0xF4, 0xFB, 0x17, 0x77, 0x37, 0x77, 0x77, 0xF3, 0xE5, 0xB1, 0xD4, 0x6E, 0x32, 0x2A, 0x67, - 0xF3, 0xA3, 0xEB, 0x37, 0x77, 0xCF, 0x3F, 0xF9, 0x67, 0xFB, 0xD5, 0x45, 0xDF, 0xED, 0xD6, 0xB7, - 0x77, 0x47, 0x0F, 0x9E, 0xF2, 0xAC, 0xBC, 0xB9, 0xB9, 0x6D, 0x9B, 0x0B, 0x6B, 0xEA, 0x93, 0x93, - 0x07, 0x79, 0x56, 0x2A, 0xB5, 0x2D, 0x04, 0xA6, 0x30, 0xEE, 0xEA, 0xDA, 0x3A, 0x35, 0xAE, 0xCA, - 0x7A, 0xBF, 0x59, 0x4C, 0xC6, 0x4D, 0xB7, 0xDF, 0xED, 0xF6, 0xBB, 0xA6, 0xE1, 0x4C, 0x30, 0x68, - 0xBB, 0xBA, 0x99, 0x8F, 0x73, 0x21, 0x30, 0xF6, 0xDB, 0xF5, 0x9B, 0x77, 0x05, 0x0B, 0x83, 0x05, - 0x4F, 0x9E, 0x7E, 0xB8, 0xBD, 0x7A, 0x75, 0x71, 0x75, 0x13, 0x63, 0x9C, 0x8D, 0xAA, 0xA3, 0xD3, - 0x67, 0xF5, 0x7E, 0x17, 0xBC, 0x9A, 0x88, 0xA1, 0xED, 0xDA, 0xD9, 0x28, 0x9B, 0x65, 0xF8, 0xC5, - 0x9B, 0x37, 0x56, 0xCA, 0xD1, 0x74, 0xD6, 0xEF, 0x72, 0x2C, 0xE6, 0xC1, 0x49, 0xC1, 0x70, 0x3D, - 0x48, 0x88, 0x45, 0x96, 0x8D, 0x42, 0x84, 0x8C, 0xD2, 0xE4, 0x06, 0xAF, 0x72, 0x16, 0x21, 0xA4, - 0x10, 0x78, 0x46, 0x40, 0x08, 0x08, 0x41, 0x10, 0x01, 0x86, 0x88, 0x50, 0xEC, 0x42, 0x4C, 0x91, - 0x02, 0x94, 0x20, 0x10, 0x81, 0xD2, 0x86, 0x60, 0xEC, 0x7C, 0x04, 0x90, 0x24, 0x51, 0x0E, 0x42, - 0x10, 0x21, 0x96, 0x6E, 0x8E, 0x49, 0xB4, 0x6D, 0x8C, 0x21, 0xF7, 0x6F, 0x8E, 0xB4, 0xAB, 0x0E, - 0x21, 0x24, 0x9A, 0x5B, 0x0A, 0x15, 0xC9, 0x04, 0x03, 0x00, 0x18, 0x6B, 0xB5, 0xB5, 0xD6, 0x3B, - 0x04, 0x11, 0xF0, 0x09, 0x1A, 0x05, 0x18, 0xA1, 0x75, 0xAF, 0x4E, 0x73, 0x68, 0x2F, 0x7E, 0xF3, - 0xE5, 0x9B, 0xB7, 0x59, 0x56, 0x64, 0x22, 0x1B, 0x4F, 0xA7, 0xCF, 0x7F, 0xF1, 0xCF, 0x71, 0x75, - 0x72, 0xB1, 0x55, 0x31, 0x82, 0xA7, 0x22, 0xD2, 0xE0, 0x38, 0xE3, 0x84, 0xC6, 0xA3, 0xC5, 0xF2, - 0xE2, 0xC5, 0x77, 0xD1, 0xC7, 0x2F, 0x7E, 0xF2, 0x0B, 0xE4, 0x35, 0x70, 0x8E, 0xE5, 0x63, 0xAF, - 0x65, 0x90, 0xED, 0xF1, 0xC9, 0xA9, 0x28, 0x27, 0x75, 0x27, 0xA7, 0x34, 0xD2, 0x6A, 0xD1, 0x28, - 0x1F, 0x11, 0xF3, 0x20, 0x42, 0x88, 0x00, 0x21, 0x18, 0x02, 0xA7, 0x65, 0x18, 0x06, 0x80, 0x59, - 0x20, 0xD4, 0x1A, 0xD7, 0x75, 0x43, 0x2B, 0x75, 0x09, 0xF6, 0x97, 0xAF, 0xBF, 0x0E, 0x10, 0x55, - 0xA3, 0x49, 0x59, 0x4D, 0x4C, 0xAF, 0xEA, 0xB6, 0xB7, 0x49, 0x8F, 0x10, 0x82, 0x71, 0x2E, 0xE9, - 0xE9, 0x77, 0x4D, 0x9B, 0x3A, 0x2C, 0xEB, 0x1C, 0x4F, 0x55, 0x0C, 0xC2, 0xD4, 0x78, 0xA6, 0x20, - 0xB8, 0xC4, 0xCE, 0xEF, 0x07, 0x95, 0xBA, 0x95, 0x24, 0xEB, 0x83, 0xF7, 0xD9, 0x28, 0x65, 0x71, - 0x90, 0x4F, 0xF6, 0x83, 0x44, 0x08, 0x32, 0x42, 0xD3, 0xDD, 0x46, 0x6B, 0x8D, 0x11, 0x64, 0x94, - 0xA7, 0xFB, 0x20, 0x21, 0x94, 0x31, 0xAE, 0x94, 0x01, 0x00, 0x68, 0x63, 0xBA, 0xAE, 0x1F, 0x8D, - 0x47, 0x79, 0xC6, 0x9B, 0xAE, 0xB7, 0x1E, 0x12, 0x8C, 0xAC, 0xF3, 0x10, 0x44, 0x42, 0xB0, 0x73, - 0xDE, 0x7B, 0x07, 0x00, 0x34, 0xC6, 0xA5, 0x41, 0x29, 0xC6, 0x00, 0x11, 0x4E, 0x86, 0xD6, 0x94, - 0x4C, 0x04, 0x0F, 0x88, 0xDD, 0x88, 0x20, 0x71, 0x3E, 0x80, 0x10, 0x7D, 0x08, 0xDE, 0x07, 0x42, - 0xC8, 0xCD, 0xDD, 0x06, 0xC4, 0x70, 0x7A, 0x3C, 0xA7, 0x04, 0xFF, 0x38, 0xEE, 0xA4, 0x7B, 0x22, - 0x67, 0x34, 0x84, 0xF0, 0xA3, 0xE3, 0x3D, 0x82, 0x44, 0x58, 0x23, 0x00, 0x00, 0x4A, 0x28, 0xF8, - 0x27, 0x5D, 0x8F, 0x3B, 0x50, 0x12, 0x3D, 0x88, 0x51, 0x1B, 0x13, 0x41, 0x50, 0x5A, 0x49, 0x65, - 0x9C, 0x1D, 0xB4, 0xB1, 0x11, 0xC0, 0x84, 0x53, 0x27, 0x08, 0xFF, 0x78, 0x22, 0x83, 0x10, 0x22, - 0x08, 0x52, 0x0E, 0x09, 0x00, 0x10, 0x45, 0xA0, 0xA4, 0xC2, 0x10, 0x19, 0xE7, 0x7D, 0x8C, 0xF0, - 0x90, 0x83, 0x1B, 0x20, 0x44, 0x07, 0x52, 0x7A, 0x1A, 0x66, 0x53, 0xD8, 0x0C, 0x88, 0x52, 0xE9, - 0xE0, 0xBD, 0xD6, 0x3A, 0xED, 0x1C, 0x11, 0x46, 0x84, 0xE0, 0xA4, 0xB2, 0xAE, 0x0A, 0xE1, 0x1C, - 0x43, 0x08, 0x8D, 0x47, 0x95, 0xF5, 0x4E, 0x1B, 0x83, 0x20, 0x2C, 0xB2, 0xDC, 0x79, 0x8F, 0x11, - 0x62, 0x84, 0x48, 0xA5, 0xC2, 0xC1, 0x6D, 0x8E, 0x30, 0x14, 0xD6, 0xDA, 0xDB, 0xBB, 0x15, 0xA3, - 0xCC, 0x5A, 0x2B, 0x07, 0x80, 0x10, 0xE4, 0x9C, 0xC7, 0x10, 0x53, 0x11, 0x37, 0xC6, 0x72, 0x21, - 0xBC, 0xF7, 0x29, 0xD4, 0x35, 0xFD, 0x93, 0x9D, 0x73, 0x84, 0x51, 0xCA, 0x05, 0x1F, 0x06, 0x69, - 0x7D, 0xF0, 0xDE, 0x32, 0x4A, 0x31, 0xC6, 0x29, 0x37, 0xA4, 0x2A, 0x33, 0x84, 0x90, 0x60, 0x78, - 0x5B, 0xB7, 0x08, 0x42, 0xA5, 0xAD, 0xE0, 0x34, 0x51, 0x62, 0xCA, 0x3C, 0x43, 0x08, 0x6B, 0xE7, - 0x18, 0xE3, 0x98, 0x50, 0xEB, 0xAC, 0x1C, 0x64, 0xBA, 0xE8, 0xE7, 0x19, 0xCF, 0x33, 0x31, 0x1B, - 0x95, 0x31, 0x46, 0xE3, 0x02, 0x88, 0x11, 0x22, 0x50, 0x72, 0x04, 0x11, 0xC2, 0x10, 0xE6, 0x45, - 0x41, 0x08, 0xEE, 0x7A, 0xA9, 0x95, 0x46, 0x5E, 0x7B, 0x8C, 0x8C, 0x51, 0xBA, 0xA5, 0x7D, 0x57, - 0x46, 0x67, 0xAB, 0xF1, 0xE4, 0xB7, 0xBF, 0xF9, 0xFB, 0xCD, 0x66, 0x5B, 0xE6, 0xF4, 0xFD, 0xBB, - 0x97, 0x18, 0x85, 0xB6, 0xDD, 0x38, 0x2F, 0x11, 0xF2, 0xD1, 0x7A, 0x65, 0xCC, 0xD1, 0xEC, 0xEC, - 0xBA, 0x76, 0xEF, 0xAF, 0xEF, 0x3E, 0xF9, 0x70, 0xB9, 0xAD, 0x2F, 0x39, 0x02, 0x57, 0xAB, 0x5D, - 0x08, 0xF4, 0x64, 0xF9, 0xB0, 0xA0, 0x78, 0xBD, 0xEF, 0x06, 0xA5, 0xF3, 0x3C, 0x77, 0xCE, 0x0C, - 0x43, 0x7F, 0x77, 0x7B, 0xB1, 0xA8, 0x8F, 0x1F, 0x9D, 0x3F, 0x5B, 0xAF, 0x56, 0xE3, 0xC9, 0xD2, - 0x7B, 0xFD, 0xD9, 0xA3, 0x9F, 0x41, 0x08, 0xDE, 0xBE, 0xFC, 0x6D, 0x88, 0xB8, 0x6E, 0xF7, 0x18, - 0xFA, 0x1F, 0x5E, 0xBE, 0x76, 0xCE, 0x9D, 0x2C, 0xE7, 0x3A, 0xCF, 0xDA, 0xAE, 0xEF, 0x87, 0x61, - 0x39, 0x1D, 0xB7, 0x9D, 0xE9, 0xFB, 0x0D, 0x09, 0xB1, 0x57, 0xAA, 0xEB, 0x0D, 0xC5, 0xCC, 0x1A, - 0xDB, 0xEE, 0x6B, 0x8E, 0xB1, 0xC7, 0xA8, 0x93, 0xFD, 0x76, 0xFF, 0x0D, 0x0E, 0xE1, 0x3A, 0x04, - 0xC2, 0x29, 0x26, 0x40, 0x77, 0x2D, 0x88, 0x30, 0x46, 0x3F, 0xC8, 0xB8, 0x5D, 0xBD, 0xA8, 0x77, - 0x35, 0x86, 0xE8, 0xD6, 0xED, 0x6D, 0x70, 0x23, 0x3A, 0xFF, 0xC3, 0x97, 0xEF, 0x7B, 0xAD, 0x30, - 0x00, 0x7B, 0xBF, 0x3D, 0x7F, 0xF0, 0xE9, 0xC5, 0xD5, 0x6F, 0x39, 0xA5, 0x03, 0x42, 0x31, 0x40, - 0x2E, 0xA6, 0x63, 0x31, 0x1A, 0x4C, 0x30, 0x5A, 0xE7, 0x59, 0x31, 0x29, 0xC8, 0xAE, 0x33, 0x83, - 0x94, 0x8C, 0xE7, 0x52, 0x69, 0x82, 0x51, 0x41, 0xB9, 0xB1, 0x36, 0x46, 0xAF, 0xA5, 0x66, 0xD0, - 0x31, 0xEA, 0x50, 0xA8, 0x05, 0xF6, 0x04, 0x61, 0x80, 0xBD, 0x05, 0xA2, 0xB3, 0xF9, 0x68, 0x59, - 0x56, 0x19, 0xDF, 0xF6, 0x3E, 0xD3, 0x5E, 0x70, 0xBA, 0xAD, 0x3B, 0x82, 0x62, 0x29, 0x28, 0x67, - 0x08, 0x13, 0x0E, 0x29, 0xCB, 0x18, 0x8E, 0x08, 0x22, 0x9C, 0xD2, 0x61, 0x95, 0xE9, 0x1D, 0x0C, - 0x96, 0x53, 0xD8, 0x3B, 0xE0, 0x01, 0x46, 0xD1, 0x01, 0x00, 0xD3, 0xA2, 0x1A, 0xC2, 0x24, 0x6E, - 0x23, 0x20, 0x18, 0x64, 0xEA, 0x27, 0x8B, 0xF9, 0x4C, 0xBF, 0xFF, 0xAB, 0xF7, 0x97, 0x34, 0x2B, - 0x38, 0xA5, 0xB3, 0xC5, 0xF2, 0xF9, 0xCF, 0xFF, 0x14, 0x56, 0xE7, 0x57, 0x6B, 0x69, 0x9D, 0x47, - 0x08, 0xBF, 0xBA, 0x51, 0x59, 0x3B, 0xCC, 0x97, 0x27, 0x74, 0x34, 0x2D, 0xAF, 0xDE, 0xFD, 0xAD, - 0x52, 0xDA, 0xC5, 0xE2, 0xC1, 0x4F, 0xDA, 0xB6, 0xB5, 0x91, 0xB7, 0x5D, 0x98, 0xE4, 0xF9, 0xE3, - 0xC7, 0x0F, 0xB7, 0x9D, 0xFB, 0xE8, 0x8B, 0x93, 0xCB, 0xDB, 0x0D, 0x55, 0xDD, 0x44, 0x70, 0x14, - 0x6A, 0xE7, 0x06, 0x8A, 0x90, 0xAE, 0xF7, 0xBB, 0x4E, 0x0E, 0xCD, 0xD6, 0x6C, 0x6F, 0xB4, 0x92, - 0x24, 0xAB, 0xE8, 0xC9, 0xC7, 0x48, 0x4C, 0x82, 0xB1, 0x99, 0x1D, 0x9A, 0x77, 0xBF, 0xBB, 0x5A, - 0xAF, 0x33, 0xCE, 0x27, 0xCB, 0x33, 0xCA, 0x45, 0x7B, 0xB3, 0x96, 0x5A, 0xDB, 0x83, 0x62, 0x03, - 0xA3, 0xA4, 0x0D, 0x73, 0x1E, 0x22, 0x50, 0xE4, 0x59, 0x12, 0x5E, 0xC0, 0xFB, 0xB8, 0x80, 0x18, - 0x23, 0x25, 0x98, 0x31, 0xAA, 0xB5, 0x41, 0x10, 0x1A, 0x1F, 0xFC, 0xFD, 0x3A, 0x09, 0x4B, 0x12, - 0xE2, 0xA8, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x22, 0xC8, 0x19, 0xA9, 0x0A, 0xBE, - 0x6F, 0xFB, 0x3C, 0xCB, 0x28, 0xC5, 0x5D, 0xDF, 0x13, 0x8C, 0x8F, 0x97, 0x73, 0x63, 0x8C, 0xB1, - 0x4E, 0x1B, 0xDB, 0xD6, 0xED, 0xA0, 0x34, 0x84, 0x90, 0x51, 0x1A, 0x7C, 0x48, 0x2B, 0x30, 0x1F, - 0x3C, 0x63, 0x24, 0x46, 0x68, 0xAD, 0x65, 0x9C, 0x0D, 0xC3, 0x40, 0x08, 0x11, 0x8C, 0x3A, 0x1F, - 0x7E, 0x54, 0x0B, 0x02, 0x00, 0x10, 0x02, 0xC6, 0xF8, 0x34, 0x38, 0x87, 0x90, 0xF2, 0x53, 0x80, - 0xF3, 0x91, 0x1C, 0xA0, 0x4C, 0x34, 0x61, 0x6F, 0x53, 0x1D, 0x75, 0xDE, 0x41, 0x08, 0x31, 0x44, - 0x11, 0x22, 0x6B, 0xAD, 0x73, 0x16, 0x42, 0xF4, 0xF6, 0xF2, 0xB6, 0x69, 0xE5, 0xF9, 0xE9, 0x62, - 0x34, 0xCA, 0x0F, 0x57, 0x41, 0x84, 0x52, 0x27, 0x94, 0xC6, 0xBA, 0xE0, 0x3D, 0x88, 0x09, 0x44, - 0x7C, 0x38, 0xBC, 0x26, 0x3B, 0x81, 0x31, 0x16, 0x40, 0x18, 0x7C, 0x48, 0x01, 0xDB, 0x49, 0x68, - 0xD9, 0xF5, 0x12, 0x22, 0xD4, 0x76, 0xC3, 0x30, 0x68, 0x00, 0x40, 0x12, 0x63, 0x39, 0xE7, 0x28, - 0x21, 0x10, 0x22, 0xE7, 0x0E, 0x20, 0xDF, 0x24, 0xB2, 0x3B, 0xAC, 0x02, 0x39, 0x0D, 0x3E, 0x80, - 0x08, 0xB4, 0xB3, 0x69, 0x5F, 0x1E, 0x40, 0x4C, 0x86, 0x13, 0xCA, 0x08, 0x67, 0x8C, 0x52, 0x92, - 0xC6, 0xA6, 0x24, 0xFB, 0x80, 0x10, 0x6A, 0xA5, 0xD2, 0xB4, 0x0E, 0x23, 0x24, 0x18, 0x8B, 0x8C, - 0x3B, 0xE7, 0xBD, 0x75, 0x08, 0x42, 0x04, 0x51, 0x70, 0x56, 0x79, 0x73, 0x79, 0x79, 0x83, 0x09, - 0x62, 0x98, 0x00, 0x08, 0x08, 0xC1, 0x52, 0x6B, 0x07, 0x21, 0x23, 0xB8, 0x2A, 0x4B, 0xE7, 0x5C, - 0x91, 0xE7, 0x52, 0xA9, 0x61, 0x50, 0x65, 0x99, 0x59, 0x6B, 0xA3, 0xB7, 0x18, 0x93, 0x18, 0x23, - 0xC1, 0x14, 0xC4, 0x98, 0xB0, 0x2E, 0x10, 0x41, 0x67, 0x6C, 0xD7, 0x77, 0x5A, 0x1B, 0x00, 0x40, - 0x96, 0x09, 0xEF, 0x7D, 0x62, 0x9A, 0x12, 0x84, 0xF1, 0x30, 0x0C, 0x4A, 0x69, 0x9E, 0x3C, 0xCA, - 0x84, 0x78, 0xEF, 0xCB, 0x5C, 0x2C, 0xA7, 0xE5, 0xB8, 0x14, 0x17, 0x77, 0xFB, 0xBE, 0xB7, 0x11, - 0xA0, 0xA6, 0xEB, 0xCB, 0x8C, 0x57, 0xB9, 0xD0, 0xCE, 0x07, 0x1F, 0xF2, 0x4C, 0x18, 0x1F, 0x2A, - 0x46, 0x43, 0x84, 0x11, 0x00, 0x82, 0xC0, 0xA4, 0xCA, 0xAC, 0x0B, 0x94, 0x52, 0x46, 0x70, 0xDA, - 0xC2, 0x3A, 0x1F, 0x72, 0xC1, 0x18, 0xA3, 0x20, 0x06, 0x4E, 0xB1, 0x33, 0xC6, 0x06, 0xA0, 0x31, - 0x26, 0x0C, 0x54, 0x68, 0xE8, 0xF6, 0xEB, 0xD7, 0x17, 0x6F, 0xA5, 0xD6, 0x08, 0x21, 0xCA, 0x59, - 0x31, 0xAE, 0xC6, 0x93, 0xE5, 0xFF, 0xF9, 0x9F, 0xFE, 0xD3, 0xF7, 0x2F, 0xBE, 0xA9, 0x77, 0x2B, - 0xC1, 0xE9, 0xD1, 0x72, 0x8C, 0x30, 0x85, 0xC0, 0xE5, 0x39, 0xE8, 0x07, 0xC5, 0x30, 0x3F, 0x3B, - 0x3E, 0xA5, 0xA4, 0xFC, 0xEE, 0x87, 0x1F, 0xDA, 0x5E, 0xFD, 0xEE, 0xAB, 0xE1, 0xEC, 0xB4, 0x52, - 0xB2, 0xC6, 0x90, 0x8E, 0x47, 0xF3, 0xAF, 0x5E, 0x5C, 0x5C, 0xBE, 0x7F, 0xF3, 0xF9, 0xE7, 0x3F, - 0xDB, 0x6C, 0xD7, 0xE3, 0xF1, 0xA4, 0xEB, 0x87, 0x7D, 0xBD, 0x93, 0x43, 0x1F, 0x40, 0x5C, 0x1E, - 0x3D, 0xD8, 0x6C, 0x36, 0x4F, 0x3E, 0xFA, 0xB9, 0x09, 0x62, 0x7B, 0xFB, 0x3A, 0xEA, 0x7D, 0x26, - 0x44, 0x08, 0xA8, 0xA4, 0x33, 0xE0, 0x9D, 0xD2, 0x3A, 0x42, 0x58, 0xEF, 0xDB, 0xDD, 0xA6, 0x79, - 0x78, 0xFE, 0xA8, 0xCC, 0x46, 0xCA, 0x28, 0xA9, 0xFB, 0xA7, 0xA7, 0x8B, 0x7A, 0xDF, 0x5C, 0xAD, - 0xD7, 0x90, 0x71, 0x67, 0xBD, 0x73, 0x2E, 0x48, 0x43, 0x31, 0x21, 0x02, 0xDF, 0xDC, 0xAE, 0xAB, - 0x3C, 0x17, 0x45, 0x2E, 0x07, 0x45, 0x21, 0xBE, 0xBB, 0xBE, 0x99, 0x94, 0x93, 0x5C, 0xF0, 0xA6, - 0x93, 0x72, 0x70, 0x52, 0xAE, 0xBD, 0x8F, 0xCA, 0xA8, 0x71, 0x91, 0x41, 0x44, 0x9B, 0xBD, 0xB2, - 0xDE, 0x3B, 0x1B, 0x21, 0x25, 0x46, 0xDA, 0x97, 0xDF, 0xFF, 0x03, 0xF4, 0x5E, 0xC3, 0x30, 0x38, - 0x0F, 0x20, 0xAA, 0x8A, 0x51, 0x94, 0xD7, 0x75, 0xD3, 0xB2, 0x7C, 0x5A, 0xD2, 0xE3, 0xEB, 0xD7, - 0xDB, 0x10, 0x28, 0x81, 0xE0, 0x68, 0xF2, 0x8C, 0x4F, 0x0A, 0xA0, 0x9B, 0xBB, 0x5D, 0x9F, 0x8B, - 0xB1, 0x56, 0x7D, 0xDC, 0xBF, 0xA0, 0x24, 0x0C, 0x7D, 0x3D, 0xA8, 0xDE, 0x7A, 0x8F, 0x30, 0xF6, - 0x36, 0x2C, 0x96, 0x53, 0x0A, 0xB0, 0xAA, 0xB1, 0xE7, 0x1C, 0x53, 0x71, 0x3A, 0x5A, 0xC0, 0x18, - 0x9D, 0x7C, 0x7F, 0x34, 0x11, 0x00, 0x58, 0x00, 0x02, 0x8A, 0x62, 0x2C, 0x46, 0x2A, 0x60, 0xC7, - 0x1E, 0x38, 0x27, 0xA9, 0xBE, 0xD6, 0xB2, 0x99, 0x06, 0xE8, 0x6D, 0x40, 0xC1, 0x46, 0x4B, 0x03, - 0x3B, 0x8B, 0x90, 0x33, 0xC2, 0x43, 0x84, 0x21, 0x78, 0xE7, 0x5D, 0xC1, 0xB1, 0xF5, 0xD0, 0x03, - 0xDC, 0xAE, 0xDE, 0x7E, 0x3C, 0x43, 0xAF, 0x57, 0x77, 0x40, 0x8C, 0x38, 0x0C, 0x8B, 0xC5, 0xFC, - 0xB3, 0x9F, 0xFD, 0xD2, 0x20, 0xF1, 0xEA, 0xFB, 0xAF, 0x69, 0x36, 0x1D, 0x8D, 0x67, 0x18, 0xE3, - 0xE0, 0x41, 0x1B, 0xAB, 0xE1, 0xE6, 0xAB, 0x67, 0x0F, 0x9F, 0x05, 0xA5, 0x20, 0xC6, 0x46, 0xEB, - 0xED, 0x60, 0x9B, 0xCE, 0x0F, 0xCE, 0x19, 0xE7, 0x95, 0x63, 0x4F, 0x8E, 0xCF, 0x03, 0xAB, 0xCB, - 0xC9, 0x6C, 0x12, 0x38, 0x6E, 0x56, 0x17, 0xBF, 0xF9, 0xBF, 0x6E, 0x6E, 0x6E, 0x01, 0x04, 0x54, - 0x70, 0xCE, 0x05, 0x80, 0x70, 0xBB, 0xDD, 0x1A, 0xA3, 0x99, 0xC8, 0x91, 0xEE, 0xFD, 0xED, 0x5B, - 0x80, 0xF9, 0xF2, 0xE8, 0xC1, 0x50, 0xAF, 0x7E, 0xF8, 0xE6, 0x0F, 0x26, 0xC4, 0x69, 0x21, 0xCA, - 0xE5, 0xF9, 0xA6, 0xEE, 0x28, 0x25, 0xD3, 0xC9, 0xC8, 0x18, 0x9B, 0x5A, 0xD7, 0x5C, 0x70, 0xE3, - 0x5C, 0xD7, 0x0F, 0xDE, 0x7B, 0x63, 0xCC, 0x41, 0x07, 0x00, 0x00, 0xE7, 0xFC, 0x7E, 0x38, 0x0A, - 0xDE, 0x7A, 0x6B, 0x3D, 0x26, 0xD4, 0x3B, 0x97, 0xEE, 0x89, 0x00, 0xC0, 0xE4, 0xA5, 0x4B, 0x91, - 0xDD, 0x79, 0xC6, 0x87, 0x41, 0x61, 0x4C, 0x38, 0x67, 0x9D, 0x94, 0xD6, 0xBA, 0xBA, 0x6E, 0x8C, - 0x32, 0x31, 0xC6, 0xA2, 0xC8, 0xD3, 0xA1, 0x39, 0x9D, 0xD5, 0x30, 0xC6, 0x29, 0x3A, 0xEB, 0xBE, - 0xC5, 0x83, 0x08, 0x21, 0x29, 0xE5, 0x61, 0x12, 0x83, 0x08, 0x22, 0xE4, 0x9D, 0x43, 0x10, 0x62, - 0x8C, 0x13, 0x72, 0x3E, 0x91, 0xA3, 0x93, 0x11, 0xC7, 0x07, 0x1F, 0xED, 0x7D, 0x85, 0x3D, 0x04, - 0x48, 0x83, 0x10, 0x23, 0x3A, 0xD0, 0xC1, 0x63, 0x8C, 0x11, 0xE3, 0x14, 0xA9, 0x19, 0x30, 0x42, - 0x75, 0xDB, 0xF5, 0xFD, 0xB0, 0x9C, 0x8D, 0xCF, 0xCE, 0x96, 0x69, 0xEF, 0x46, 0x29, 0xD5, 0x3A, - 0x24, 0xFF, 0x9B, 0x09, 0xDE, 0x7B, 0x6F, 0x9C, 0xA3, 0x04, 0x6B, 0x6D, 0x19, 0xA3, 0x8C, 0x52, - 0xEF, 0x5C, 0x22, 0xD0, 0x31, 0xC6, 0x21, 0x00, 0xC9, 0x92, 0xA9, 0x8D, 0xD1, 0xC6, 0x55, 0x65, - 0x11, 0xEF, 0xEF, 0xF4, 0xA9, 0xD0, 0x53, 0x42, 0x08, 0x42, 0x21, 0x51, 0x64, 0xC0, 0x3D, 0xF2, - 0x37, 0xC6, 0x18, 0xA3, 0x60, 0x2C, 0xF8, 0x90, 0x32, 0x44, 0x12, 0x34, 0x31, 0xC6, 0x58, 0x95, - 0x45, 0x9E, 0x89, 0x43, 0x32, 0x61, 0x08, 0x10, 0x41, 0x0C, 0x0F, 0xDD, 0x50, 0x08, 0xCE, 0x19, - 0x1D, 0x5D, 0xF0, 0x29, 0xBD, 0x0C, 0x23, 0xC6, 0x29, 0xBA, 0xCF, 0x3C, 0x84, 0x00, 0x4A, 0xA5, - 0x95, 0xD2, 0x00, 0x41, 0x29, 0x87, 0x51, 0x55, 0xE6, 0xB9, 0x20, 0x94, 0x38, 0xE7, 0x27, 0xE3, - 0x4A, 0x6B, 0xE3, 0x9D, 0x2F, 0x72, 0x61, 0x9D, 0xEB, 0x87, 0x21, 0xC4, 0x58, 0x96, 0x59, 0x26, - 0xF8, 0xA8, 0xCC, 0xB5, 0xD6, 0x11, 0xA6, 0xD5, 0x2E, 0x90, 0x5A, 0x03, 0x10, 0x95, 0xD4, 0xD6, - 0x58, 0x42, 0x30, 0x65, 0x0C, 0x82, 0x03, 0xCC, 0x4A, 0x2B, 0x63, 0x8D, 0x4B, 0x39, 0x0E, 0x03, - 0x00, 0x20, 0x05, 0xB1, 0x78, 0x1F, 0x20, 0x88, 0x94, 0x60, 0xC1, 0x18, 0xC5, 0xF0, 0x6E, 0xDB, - 0x3A, 0x6B, 0x96, 0x23, 0xAA, 0x8C, 0x11, 0x04, 0x2F, 0xC6, 0x8C, 0x31, 0x14, 0x01, 0xD5, 0x9E, - 0x04, 0x80, 0x90, 0xD2, 0x08, 0x45, 0x17, 0x61, 0x37, 0xA8, 0x52, 0x70, 0x82, 0x31, 0x21, 0xA1, - 0x10, 0xD4, 0x5A, 0xE7, 0x02, 0xB4, 0xD6, 0x0A, 0xCE, 0x30, 0x08, 0x5E, 0xB5, 0xD1, 0xC9, 0xBA, - 0xF3, 0x5E, 0xD5, 0xD6, 0xE8, 0x38, 0x5D, 0x00, 0xD8, 0xE8, 0x6E, 0xF5, 0xED, 0x8B, 0xF7, 0x83, - 0x0B, 0x1F, 0x7F, 0xF4, 0x91, 0xC8, 0xAA, 0x37, 0x17, 0xD7, 0x5F, 0x7E, 0xFD, 0x9D, 0xC8, 0xAB, - 0xED, 0xAE, 0x7E, 0xFC, 0xF0, 0xBC, 0x1E, 0x71, 0x4A, 0x62, 0x5E, 0xCD, 0xEE, 0x56, 0xEB, 0xA7, - 0x8F, 0x9F, 0x21, 0x02, 0xD5, 0xF5, 0x9B, 0x4C, 0x54, 0x9B, 0x6D, 0x77, 0x67, 0x6A, 0x35, 0xF4, - 0x4A, 0xAA, 0x7A, 0xAF, 0xF6, 0xBB, 0xAD, 0xD2, 0xDD, 0xD1, 0xFC, 0xF8, 0xF2, 0xF2, 0xE5, 0xED, - 0xFA, 0xAE, 0xC8, 0xF3, 0xD7, 0xEF, 0xDE, 0xBD, 0x7C, 0xFD, 0x6A, 0xB1, 0x38, 0x16, 0x22, 0x13, - 0x3C, 0x43, 0x10, 0x1B, 0x25, 0xB5, 0x1C, 0x8E, 0x1E, 0x7C, 0xF4, 0xEB, 0xBF, 0xFD, 0x2F, 0x39, - 0xF7, 0xB2, 0xBE, 0x78, 0xFC, 0xD1, 0x7F, 0xD5, 0xB5, 0x35, 0xB1, 0xDD, 0x72, 0x7E, 0xD6, 0x6C, - 0xB7, 0x8D, 0xF5, 0xE5, 0x78, 0x72, 0x34, 0x3D, 0x1A, 0x8C, 0x9B, 0x8F, 0x67, 0x94, 0xA1, 0xCD, - 0xEE, 0xA6, 0x2C, 0xA7, 0xD3, 0xD1, 0xF4, 0xEE, 0xF6, 0x36, 0x42, 0x6C, 0x94, 0x8C, 0x11, 0x6D, - 0xB7, 0x1D, 0x9A, 0xC0, 0xB3, 0x93, 0x0A, 0xE3, 0xF8, 0xE4, 0xF4, 0x94, 0x53, 0x72, 0xBB, 0xA9, - 0x27, 0x65, 0x31, 0xAE, 0xC6, 0x55, 0x9E, 0xAF, 0x76, 0x35, 0x0D, 0x01, 0x78, 0xFA, 0xFC, 0xD9, - 0xD3, 0xCB, 0xDB, 0xB7, 0x82, 0x61, 0x6F, 0x0D, 0x70, 0xC1, 0x3B, 0x5C, 0x1B, 0x95, 0xE7, 0x62, - 0x54, 0x8C, 0x42, 0x74, 0x5A, 0x75, 0x08, 0xC6, 0xDD, 0x7E, 0x7F, 0x3C, 0x9F, 0x69, 0xEF, 0x00, - 0x00, 0x46, 0x9A, 0xAE, 0x7E, 0x27, 0x10, 0xBA, 0x59, 0x5F, 0xFE, 0xF6, 0x37, 0xFF, 0x79, 0x3E, - 0x1E, 0x3D, 0x3B, 0x7F, 0xB8, 0x3C, 0x7E, 0xF0, 0x6C, 0x3E, 0xBC, 0xBD, 0x78, 0x05, 0x3D, 0x9C, - 0x23, 0x50, 0x64, 0x9A, 0x16, 0xE0, 0x1F, 0xAF, 0x87, 0x5F, 0xFD, 0xE3, 0x0B, 0x8C, 0x60, 0x55, - 0xE6, 0x1E, 0x38, 0xCA, 0x99, 0xB5, 0x7E, 0x90, 0x9B, 0x4C, 0x88, 0xBE, 0x1F, 0x8C, 0x36, 0x20, - 0xC6, 0x93, 0xC5, 0xF4, 0x64, 0x59, 0x8C, 0x28, 0x30, 0x5A, 0xAF, 0xB6, 0xDB, 0x10, 0x91, 0xE0, - 0xF4, 0xF6, 0xEA, 0xED, 0xD1, 0x72, 0x32, 0x9D, 0xAD, 0x2F, 0xAE, 0x6E, 0x2F, 0xAF, 0x6E, 0xBB, - 0xCE, 0x40, 0x08, 0x19, 0xA7, 0x11, 0x12, 0x88, 0xA1, 0x10, 0x6F, 0x62, 0x40, 0xD5, 0x78, 0x59, - 0x94, 0x8F, 0xBB, 0x38, 0x82, 0x00, 0xBB, 0x00, 0x23, 0x88, 0x84, 0x65, 0x1F, 0x7F, 0xF8, 0xEC, - 0xFF, 0xF9, 0xD5, 0xDF, 0x70, 0x9E, 0x4D, 0x67, 0xF3, 0xA7, 0xCF, 0x1E, 0x2D, 0x4E, 0x9E, 0xB4, - 0x83, 0x7B, 0xF5, 0x0F, 0xFF, 0x47, 0x14, 0x53, 0xC0, 0x33, 0x4B, 0xBF, 0x50, 0x56, 0x06, 0xA3, - 0xAB, 0x2C, 0xBE, 0x7C, 0xF1, 0xBD, 0x58, 0x9E, 0x2F, 0x4F, 0x9F, 0x06, 0x52, 0xEC, 0xB7, 0x9B, - 0x89, 0xD4, 0x52, 0x69, 0x00, 0x01, 0x44, 0x70, 0xDF, 0x6A, 0x57, 0x66, 0x93, 0x71, 0x04, 0xDE, - 0x01, 0x67, 0x76, 0x9B, 0xD5, 0x0F, 0x17, 0x97, 0xD7, 0xB7, 0x6B, 0xCE, 0x18, 0x21, 0x78, 0x32, - 0x9F, 0x23, 0x84, 0x95, 0x8B, 0xFB, 0x4E, 0xE5, 0x1E, 0x8A, 0x2C, 0x83, 0x88, 0xA8, 0xAE, 0xBE, - 0x5D, 0xDF, 0x84, 0x00, 0x10, 0xE5, 0x05, 0x00, 0xCF, 0x3F, 0xFE, 0x9C, 0xCD, 0x1E, 0xBC, 0xBB, - 0xDC, 0x80, 0x18, 0xBC, 0x3F, 0xE8, 0x78, 0x63, 0x04, 0x08, 0x01, 0x8A, 0x31, 0x21, 0x44, 0x29, - 0x35, 0x2A, 0x4B, 0xEF, 0x1D, 0x80, 0x28, 0x61, 0x48, 0x13, 0x71, 0x2C, 0xDD, 0xC2, 0x62, 0x8C, - 0x29, 0xBA, 0x25, 0x41, 0x50, 0x7E, 0x1C, 0xD3, 0xDA, 0x4E, 0x07, 0xE7, 0x76, 0xFB, 0x1A, 0x00, - 0x04, 0x62, 0xA8, 0xB5, 0xDE, 0x6C, 0x7D, 0x42, 0x5F, 0x90, 0x74, 0x79, 0x87, 0x10, 0x42, 0x98, - 0x65, 0xE2, 0x90, 0xCA, 0x0C, 0x91, 0xF3, 0x1E, 0xC4, 0x48, 0x31, 0x46, 0x79, 0x96, 0xB2, 0xE2, - 0x39, 0x67, 0x5A, 0x5B, 0x08, 0x41, 0x88, 0x20, 0x1D, 0x4F, 0xAD, 0xF7, 0x08, 0x42, 0x8C, 0x51, - 0x08, 0x91, 0x10, 0x04, 0x40, 0x44, 0x08, 0x3B, 0xE7, 0x04, 0x67, 0xC9, 0x85, 0x9E, 0x67, 0x5C, - 0x5B, 0x97, 0x89, 0x62, 0x18, 0xB4, 0xF3, 0x49, 0x85, 0x9B, 0x08, 0x25, 0x21, 0x1D, 0x76, 0x28, - 0x4E, 0x00, 0x82, 0xE0, 0x41, 0xBC, 0xB9, 0xDB, 0xF6, 0x83, 0x5A, 0xCC, 0x27, 0xB3, 0xD9, 0xE8, - 0x9E, 0x4E, 0x0E, 0x09, 0xC1, 0x31, 0x52, 0x63, 0x6C, 0x0C, 0x01, 0x00, 0x9C, 0x20, 0xE9, 0x49, - 0xCA, 0x90, 0xE7, 0xF9, 0xE1, 0x66, 0x12, 0x42, 0xEA, 0xC8, 0xBA, 0x6E, 0xA0, 0x84, 0x68, 0xAD, - 0x62, 0xF0, 0x99, 0x60, 0x9D, 0xD4, 0x10, 0x21, 0x04, 0x81, 0xA0, 0x54, 0x6B, 0x03, 0x61, 0x12, - 0xDF, 0x05, 0x7F, 0x6F, 0x6B, 0xA3, 0x84, 0x22, 0x00, 0xAC, 0x75, 0x21, 0x02, 0x00, 0x81, 0xF3, - 0x1E, 0x61, 0x5C, 0xE4, 0x59, 0xDA, 0xBB, 0x23, 0x84, 0xA4, 0x32, 0xCE, 0xBB, 0x34, 0xE4, 0x16, - 0x45, 0xD1, 0xF7, 0x83, 0xEC, 0x65, 0x4A, 0xF2, 0x44, 0xE0, 0x7E, 0x3C, 0x44, 0x30, 0x35, 0x7D, - 0xA9, 0x69, 0x53, 0x83, 0x45, 0x08, 0xE7, 0x82, 0x31, 0x4E, 0xF3, 0x4C, 0x20, 0x84, 0x7D, 0x08, - 0x04, 0x41, 0x04, 0xA2, 0xE0, 0x94, 0x16, 0x59, 0x08, 0x81, 0x60, 0x9C, 0x67, 0x8C, 0x31, 0x96, - 0x36, 0x71, 0x75, 0xD3, 0x10, 0x42, 0x84, 0x38, 0xB0, 0x98, 0x62, 0xF0, 0x10, 0x21, 0x21, 0xB8, - 0xD1, 0xDA, 0xDA, 0x68, 0x8C, 0x85, 0x30, 0x96, 0x65, 0x6E, 0xAC, 0xE7, 0x82, 0x95, 0x79, 0xA6, - 0x95, 0xC6, 0x9F, 0xFE, 0xFC, 0x5F, 0xA7, 0x2F, 0x36, 0x21, 0x98, 0x51, 0x12, 0x62, 0xA4, 0x18, - 0x70, 0x0C, 0x32, 0x86, 0x9D, 0x19, 0xE6, 0xA2, 0x39, 0x9D, 0x6A, 0x0A, 0xF7, 0x47, 0xE3, 0x60, - 0xE4, 0x76, 0x75, 0x73, 0xA9, 0xFA, 0x8D, 0xEC, 0xEE, 0xA0, 0x6B, 0xC6, 0xD5, 0xC4, 0xD8, 0x80, - 0x09, 0x86, 0x10, 0x31, 0x8A, 0x49, 0x22, 0x94, 0x3A, 0xDB, 0x2B, 0x13, 0x23, 0xA0, 0x18, 0xC8, - 0x7A, 0xAD, 0xD7, 0x5F, 0x09, 0x77, 0xD5, 0xAC, 0x5F, 0x62, 0x7B, 0x53, 0x71, 0x95, 0x61, 0xC5, - 0x90, 0xDA, 0xEE, 0x6E, 0xDB, 0xAE, 0xE1, 0x59, 0xFE, 0xD9, 0xA7, 0x9F, 0x8D, 0xAA, 0x49, 0x51, - 0x81, 0xD9, 0xD8, 0x06, 0xEF, 0x8C, 0xEC, 0x9E, 0x3F, 0x3A, 0x3A, 0x3B, 0x1E, 0x03, 0x04, 0x1F, - 0x3D, 0xFA, 0xF0, 0xA3, 0xE7, 0x9F, 0x7E, 0xF2, 0xEC, 0xF1, 0x7A, 0x73, 0xF3, 0xEA, 0x87, 0x57, - 0x08, 0x81, 0xEB, 0x9B, 0x6B, 0x8C, 0x39, 0x20, 0xDC, 0x18, 0x6D, 0x9D, 0x1B, 0xCF, 0x16, 0xDE, - 0x7B, 0x1C, 0xD1, 0x20, 0x35, 0x46, 0x68, 0x54, 0x8D, 0x97, 0xCB, 0x93, 0xBC, 0x1A, 0x53, 0x26, - 0x56, 0x77, 0xD7, 0x9C, 0xF3, 0x5D, 0xBD, 0x6D, 0x9B, 0xFA, 0x8B, 0x9F, 0xFE, 0xE2, 0xE9, 0xC7, - 0x9F, 0xBF, 0x7F, 0xFD, 0xFD, 0xE5, 0xBB, 0x57, 0x5C, 0x94, 0x0F, 0x1F, 0x3D, 0x59, 0x1C, 0x2D, - 0x96, 0x63, 0xF2, 0xC1, 0xE3, 0x79, 0x55, 0x89, 0x47, 0x0F, 0x8F, 0x26, 0xF3, 0xA3, 0xF9, 0xF2, - 0x8C, 0x52, 0x5C, 0x94, 0x65, 0xC6, 0x98, 0xF7, 0xDA, 0xB9, 0x6E, 0x3E, 0x99, 0xEE, 0xF7, 0xE9, - 0x00, 0x12, 0x18, 0x86, 0x65, 0x91, 0x01, 0x84, 0x05, 0x81, 0x1C, 0xA3, 0x3C, 0xCF, 0x8A, 0xB2, - 0x94, 0xCA, 0x4C, 0x46, 0x23, 0x82, 0xF0, 0x6C, 0x34, 0xED, 0x54, 0x33, 0x9E, 0x64, 0x4A, 0x76, - 0x45, 0x96, 0xC9, 0x7E, 0x8B, 0xA0, 0xCF, 0x99, 0xE0, 0x10, 0x0F, 0x52, 0x8F, 0xC7, 0x93, 0x18, - 0x9D, 0x8F, 0xF6, 0xE2, 0x6E, 0x95, 0x14, 0x00, 0xAB, 0xF5, 0xAE, 0x95, 0xBD, 0x31, 0xE1, 0xED, - 0xD5, 0x06, 0x45, 0xC0, 0x29, 0xFD, 0xE8, 0xE9, 0x43, 0xAD, 0xF4, 0x76, 0x57, 0x7F, 0xF0, 0xE8, - 0xC1, 0xE3, 0x07, 0x0F, 0x3A, 0xA9, 0xBC, 0xB5, 0x97, 0xD7, 0x97, 0xDF, 0xBF, 0x7E, 0x35, 0xCA, - 0xB3, 0xD3, 0xA3, 0x99, 0xF7, 0xF6, 0xEA, 0x76, 0xFF, 0xEA, 0xFD, 0x9D, 0x94, 0xFD, 0x6C, 0x5A, - 0x41, 0x18, 0xE7, 0xF3, 0x31, 0x22, 0xD8, 0xFA, 0x68, 0xB4, 0xB5, 0xCE, 0x55, 0xA3, 0xD2, 0xF9, - 0x64, 0x67, 0x33, 0x57, 0x77, 0x3B, 0xA9, 0x0D, 0x80, 0x91, 0x51, 0x4A, 0x30, 0x99, 0x4D, 0xC7, - 0x57, 0xAB, 0xC6, 0x1B, 0x3F, 0xF4, 0xDD, 0xDB, 0x8B, 0x3B, 0xCA, 0x04, 0xA5, 0x94, 0x71, 0xCE, - 0x85, 0xA0, 0x94, 0x30, 0x42, 0x41, 0xC4, 0xD6, 0xF8, 0xB6, 0xD9, 0x75, 0xFB, 0xAB, 0x71, 0x8E, - 0x3E, 0x7D, 0x3C, 0xFD, 0xF8, 0xBC, 0xD8, 0xB4, 0x6E, 0xCC, 0x09, 0xE8, 0x6E, 0x42, 0x8C, 0x55, - 0x99, 0x3F, 0xF9, 0xE0, 0xF1, 0x67, 0x9F, 0x7D, 0x42, 0x31, 0x58, 0x5D, 0xBE, 0x08, 0xAA, 0x1E, - 0x65, 0x21, 0x9A, 0x86, 0x87, 0x56, 0x6B, 0x97, 0x53, 0x80, 0x29, 0xF2, 0xC8, 0x4D, 0xA6, 0x74, - 0xB6, 0x98, 0x19, 0xD3, 0x4E, 0xE6, 0x53, 0xC7, 0x8E, 0xDB, 0x5E, 0xFB, 0xE0, 0x31, 0x04, 0x00, - 0xA0, 0x32, 0xE3, 0x25, 0x0B, 0x6D, 0xD7, 0xF7, 0x5D, 0x77, 0xFD, 0xF2, 0x9B, 0xCD, 0x66, 0xB3, - 0xAD, 0x77, 0x31, 0x06, 0x10, 0xE3, 0xD1, 0xF1, 0xE9, 0x83, 0xCF, 0x7E, 0xA6, 0xE4, 0x60, 0x87, - 0xA1, 0x1D, 0xBA, 0x7E, 0xE8, 0x39, 0x63, 0x65, 0x91, 0xF7, 0xBD, 0xCA, 0xF3, 0x6C, 0x3A, 0x1A, - 0x9D, 0x3C, 0x78, 0xFC, 0xC5, 0x5F, 0xFC, 0xBB, 0x5F, 0x7F, 0x77, 0xB3, 0xAD, 0x7B, 0x67, 0x5D, - 0x9A, 0x2F, 0x22, 0x80, 0x11, 0xC0, 0x84, 0xB4, 0xF7, 0xCE, 0xE5, 0x99, 0x10, 0x42, 0x40, 0xAF, - 0x04, 0xF1, 0x08, 0x61, 0x1F, 0x61, 0xD2, 0x22, 0x39, 0x1F, 0xA5, 0xD6, 0x20, 0x05, 0x09, 0xC7, - 0xC3, 0x49, 0x34, 0xC6, 0x90, 0xE7, 0xC2, 0x59, 0x97, 0xFC, 0xE1, 0x8C, 0x73, 0x74, 0x0F, 0x9E, - 0x4D, 0x61, 0x29, 0xD6, 0x3A, 0x0C, 0xF1, 0x8F, 0x45, 0x30, 0xFD, 0x6A, 0x8A, 0x24, 0x27, 0x08, - 0xC7, 0x10, 0xAD, 0x77, 0x99, 0x10, 0xC6, 0xDA, 0x94, 0xE2, 0x9E, 0x38, 0x71, 0xA9, 0xF9, 0x4A, - 0x9A, 0xE7, 0xB4, 0x9A, 0x06, 0xC9, 0x4C, 0x8E, 0x51, 0xD2, 0x6D, 0x69, 0x63, 0x10, 0xC2, 0xA5, - 0x20, 0x0F, 0xE7, 0x45, 0xF4, 0x8E, 0x31, 0x11, 0x21, 0x0A, 0xF7, 0xB5, 0x35, 0xFE, 0x53, 0x7B, - 0x6C, 0x8C, 0x09, 0xB9, 0x0B, 0x22, 0xC0, 0x18, 0x4B, 0xAD, 0x37, 0x75, 0xD3, 0xF7, 0x92, 0xA5, - 0xC0, 0x0A, 0x00, 0x92, 0x05, 0x0D, 0x02, 0xE4, 0x83, 0x4F, 0xE4, 0x02, 0x08, 0x0E, 0x7E, 0x26, - 0xCE, 0x58, 0x84, 0x30, 0x39, 0xF0, 0x21, 0x04, 0xD6, 0xDA, 0x6D, 0xDD, 0x50, 0x4A, 0x9D, 0xB7, - 0x89, 0x31, 0x6D, 0x5D, 0x08, 0x21, 0x30, 0x42, 0xDC, 0x41, 0x26, 0x82, 0x62, 0x04, 0xF1, 0x5E, - 0x75, 0x90, 0xD2, 0xC3, 0x43, 0x08, 0x11, 0xC0, 0x90, 0xAE, 0x3D, 0x8C, 0x8D, 0x47, 0x55, 0x26, - 0x38, 0x00, 0x80, 0x61, 0x12, 0x63, 0x74, 0xDE, 0x4B, 0x29, 0x11, 0x44, 0x9C, 0xB1, 0xAE, 0x1F, - 0x94, 0xD2, 0xE9, 0x12, 0x45, 0x09, 0x1E, 0x8D, 0x4B, 0x8C, 0x61, 0xB2, 0x00, 0x01, 0x10, 0x09, - 0x82, 0x18, 0xA2, 0xE0, 0x23, 0x00, 0x80, 0x71, 0x92, 0x67, 0x8C, 0x12, 0x82, 0x09, 0x89, 0x31, - 0xC0, 0x08, 0x9C, 0x77, 0x84, 0x90, 0x3C, 0xCB, 0xA4, 0x52, 0x49, 0x95, 0x9D, 0x64, 0xB7, 0xCE, - 0x39, 0xAD, 0x75, 0x8C, 0x21, 0xC1, 0x26, 0xDA, 0xB6, 0xF7, 0xCE, 0x31, 0x46, 0x9D, 0x75, 0x04, - 0x23, 0xC6, 0x68, 0x8C, 0x87, 0x3B, 0x6F, 0x42, 0x8D, 0x62, 0x08, 0x85, 0xC8, 0x20, 0x46, 0xF8, - 0xF3, 0x5F, 0xFC, 0x39, 0x48, 0xFC, 0x2C, 0x4A, 0x40, 0xF4, 0x63, 0x1E, 0x60, 0xF0, 0x1C, 0x03, - 0xEF, 0x41, 0x94, 0x57, 0x37, 0xEF, 0xBE, 0xFF, 0x87, 0x2F, 0x5F, 0xAD, 0xD7, 0xFB, 0xD5, 0xB6, - 0xFF, 0xE1, 0xED, 0x6A, 0x5F, 0x4B, 0xCE, 0xD9, 0xED, 0xED, 0xF5, 0xED, 0xF5, 0xE5, 0xB4, 0x82, - 0xD3, 0x8A, 0x7B, 0x0F, 0x67, 0x25, 0x1B, 0x94, 0x8B, 0x11, 0xE6, 0xA0, 0xE7, 0xC8, 0xC7, 0x10, - 0x73, 0x1A, 0xA2, 0xDC, 0xBB, 0xFA, 0xF5, 0x72, 0x84, 0x79, 0x56, 0x8C, 0x47, 0x65, 0x84, 0x44, - 0x64, 0xC5, 0x72, 0x36, 0x82, 0x18, 0x0C, 0xBA, 0x7F, 0x7C, 0xBA, 0x78, 0xF6, 0xF8, 0x7C, 0x5C, - 0xF2, 0x42, 0x0C, 0x37, 0x37, 0xDF, 0xDD, 0xAC, 0x56, 0x9F, 0x7C, 0xF8, 0xE0, 0xCF, 0xFF, 0xC5, - 0x2F, 0x30, 0xF4, 0xDF, 0xFF, 0xF0, 0xBD, 0x37, 0xE1, 0xDF, 0xFF, 0x9B, 0x7F, 0x5B, 0x15, 0xA2, - 0x9A, 0x9D, 0x7D, 0xF2, 0x93, 0x3F, 0xFE, 0xE1, 0xFB, 0x6F, 0x7E, 0xF8, 0xE1, 0x9D, 0x73, 0xF1, - 0xD1, 0xC3, 0xC5, 0x74, 0x36, 0xA9, 0xDB, 0x96, 0x50, 0xF6, 0xEC, 0xA3, 0xCF, 0x3E, 0x7A, 0xF6, - 0xC1, 0x17, 0xCF, 0x1F, 0x23, 0xCA, 0x03, 0xA4, 0x85, 0x60, 0x14, 0x86, 0x7A, 0xB7, 0xFA, 0xF4, - 0xF3, 0x9F, 0xCF, 0x8F, 0xCE, 0xE4, 0xD0, 0x41, 0x84, 0x97, 0xCB, 0x93, 0x4F, 0x3E, 0xFB, 0x29, - 0xA5, 0xF8, 0x76, 0xB5, 0x9D, 0xCC, 0x16, 0xF3, 0x51, 0x7E, 0x7C, 0xF6, 0x10, 0x42, 0xE9, 0x20, - 0xAF, 0xEB, 0x6D, 0x27, 0x3B, 0x0F, 0x62, 0x5E, 0x09, 0xEF, 0x74, 0x39, 0x12, 0x22, 0x03, 0x21, - 0x28, 0x69, 0xCC, 0x6C, 0x3A, 0xEE, 0x3A, 0x3B, 0xCA, 0xF3, 0xD3, 0xA3, 0x0A, 0xC1, 0x38, 0xAA, - 0x38, 0xC2, 0xE0, 0xFC, 0x7C, 0xF9, 0xFC, 0xE9, 0xF9, 0xA3, 0x07, 0x67, 0x05, 0x13, 0x31, 0x06, - 0x08, 0xF1, 0xC9, 0x7C, 0x0C, 0xA3, 0x69, 0xD5, 0xD0, 0xEB, 0x61, 0xBD, 0xDB, 0x32, 0x80, 0xDE, - 0xBD, 0xBB, 0xEC, 0xB5, 0x3E, 0x5B, 0x1E, 0x45, 0xEF, 0x33, 0x91, 0x3B, 0x6B, 0xEB, 0x7D, 0x37, - 0x19, 0x57, 0x94, 0x51, 0x46, 0xF1, 0x2F, 0x3E, 0xFF, 0xC4, 0x2A, 0xF7, 0x0F, 0xBF, 0xFF, 0x1E, - 0x53, 0xDC, 0xF5, 0x32, 0x42, 0x30, 0x58, 0xC3, 0x39, 0x16, 0x4C, 0xAC, 0xB7, 0x35, 0x25, 0xF8, - 0xD1, 0xD9, 0x59, 0xF0, 0x7E, 0x36, 0x9A, 0x22, 0x00, 0xB5, 0xB5, 0xE3, 0x6A, 0xC2, 0x28, 0xBD, - 0x5B, 0xD7, 0xDF, 0xBF, 0xBE, 0xFD, 0xEA, 0xD5, 0x6D, 0x0C, 0x6A, 0x31, 0x15, 0xD6, 0xC7, 0x10, - 0x41, 0xD3, 0x34, 0x83, 0xEC, 0x87, 0x5E, 0x23, 0x84, 0x57, 0x77, 0xDB, 0xCD, 0xAE, 0x01, 0x20, - 0x42, 0x14, 0xEB, 0x7D, 0x9D, 0x16, 0x40, 0x5D, 0xDB, 0x31, 0xC1, 0x32, 0x46, 0x61, 0x84, 0xCB, - 0xD9, 0x78, 0x54, 0x16, 0x5A, 0x59, 0x88, 0xE0, 0x64, 0x32, 0xAA, 0x8A, 0x22, 0x02, 0x80, 0x31, - 0xE6, 0x99, 0x88, 0x10, 0x65, 0x99, 0xE0, 0x94, 0xCE, 0x67, 0x13, 0x69, 0xF4, 0xE5, 0xE5, 0xAB, - 0xB3, 0x09, 0xC2, 0xA0, 0xD3, 0xFD, 0x96, 0x45, 0xED, 0xD4, 0x96, 0x32, 0x38, 0x9F, 0x8F, 0xCE, - 0x1F, 0x1E, 0x03, 0xBB, 0x1F, 0xA1, 0x9A, 0x13, 0xFD, 0xF8, 0xD1, 0xF1, 0xF3, 0xC7, 0x47, 0xA7, - 0xC7, 0x27, 0xC0, 0x4B, 0xC2, 0xAA, 0x9C, 0xC3, 0x9B, 0xF7, 0xDF, 0x3F, 0x7F, 0x7E, 0x7A, 0x7D, - 0x7B, 0xBD, 0x5F, 0x5D, 0x2E, 0xE6, 0xE3, 0x3C, 0x17, 0x8B, 0x22, 0x32, 0x8A, 0x04, 0xA5, 0x0C, - 0x43, 0x69, 0x83, 0x32, 0x7E, 0xCA, 0x2D, 0x26, 0xF8, 0xC5, 0x8B, 0x57, 0xD6, 0x1A, 0x0C, 0xC2, - 0x6C, 0x32, 0x4E, 0xC8, 0x9B, 0xFD, 0x66, 0x7D, 0xFE, 0xC9, 0xCF, 0x1F, 0x7F, 0xF4, 0x09, 0x41, - 0x91, 0x80, 0x00, 0x01, 0x28, 0xCB, 0x1C, 0x21, 0x98, 0x65, 0x94, 0x10, 0x58, 0x56, 0xF9, 0x9F, - 0xFD, 0x37, 0xFF, 0x76, 0xD5, 0xEE, 0x9A, 0x4E, 0x9E, 0x4C, 0x42, 0x8E, 0xEA, 0x08, 0x08, 0x61, - 0x45, 0x21, 0xD0, 0xA4, 0x40, 0xD1, 0x5B, 0xDD, 0xBC, 0x29, 0x38, 0x01, 0x31, 0x00, 0xD3, 0xF6, - 0xF5, 0x55, 0x34, 0x3B, 0x44, 0xCA, 0x80, 0x18, 0xC1, 0xE8, 0xE0, 0xC6, 0xF5, 0xC1, 0xFB, 0x18, - 0xBC, 0x47, 0x20, 0xC6, 0xA0, 0x61, 0x70, 0x98, 0x90, 0x18, 0x23, 0x46, 0xC8, 0x7B, 0x9F, 0xE7, - 0xF9, 0xBD, 0x1E, 0x38, 0xA6, 0xB4, 0xB1, 0x04, 0x5F, 0x4B, 0x9C, 0x28, 0x8C, 0x0E, 0x26, 0xEC, - 0x14, 0xCB, 0x94, 0x00, 0xD0, 0x8C, 0x62, 0x6B, 0xBD, 0xB1, 0x4E, 0x0E, 0x92, 0x33, 0x96, 0xDC, - 0xD4, 0xCE, 0xB9, 0x10, 0x3C, 0x82, 0x30, 0x86, 0x98, 0xF0, 0xFF, 0x00, 0x46, 0x4A, 0x69, 0x08, - 0x00, 0x63, 0xA2, 0xB4, 0x41, 0x10, 0x2D, 0x66, 0xA3, 0x41, 0x9A, 0xA3, 0xB1, 0x58, 0x66, 0xF6, - 0x66, 0x75, 0xD7, 0x77, 0x1D, 0x62, 0x39, 0x80, 0x28, 0xFA, 0x03, 0x42, 0x19, 0xDC, 0x6B, 0x1A, - 0x0E, 0x13, 0xF2, 0xE1, 0x7F, 0x31, 0xA1, 0xE1, 0xA4, 0xD2, 0xEB, 0x4D, 0x1D, 0x42, 0x28, 0xCB, - 0x9C, 0x60, 0xE4, 0x9C, 0x77, 0xDE, 0x1D, 0x12, 0xB9, 0x7C, 0x60, 0x34, 0xA1, 0x46, 0x63, 0xF2, - 0xEA, 0x6A, 0xEB, 0x52, 0x3D, 0xEA, 0x07, 0xA9, 0x8D, 0x21, 0x98, 0x68, 0xAD, 0x10, 0x44, 0xC6, - 0x46, 0x6D, 0x34, 0x86, 0x08, 0xA7, 0xC0, 0x07, 0x08, 0x41, 0x04, 0x89, 0xE7, 0x99, 0xF4, 0xBD, - 0x04, 0x23, 0xE7, 0x43, 0x48, 0xD2, 0xB9, 0x18, 0xB3, 0x4C, 0x54, 0x45, 0x86, 0x0F, 0x4B, 0x37, - 0x9C, 0x5C, 0x77, 0xE9, 0x64, 0x01, 0x41, 0x0C, 0xDE, 0x5B, 0x6B, 0x10, 0xC6, 0x31, 0x02, 0x04, - 0x01, 0xE7, 0x34, 0x29, 0x1C, 0x21, 0x80, 0x21, 0x78, 0x10, 0x42, 0x08, 0x51, 0x2B, 0x6B, 0x9D, - 0xC3, 0x04, 0xE7, 0x59, 0x0A, 0x5D, 0x45, 0x3F, 0x6E, 0x00, 0x92, 0x48, 0xC8, 0x18, 0xA3, 0xB5, - 0x4E, 0x3F, 0x99, 0xE2, 0x48, 0x52, 0x53, 0x85, 0x31, 0xEE, 0x7B, 0x39, 0x0C, 0xCA, 0x1A, 0xC7, - 0x39, 0x15, 0x82, 0x13, 0x4C, 0x86, 0x41, 0xA6, 0x1D, 0x02, 0xC6, 0x48, 0x19, 0x2B, 0xB5, 0x65, - 0x94, 0xA4, 0x40, 0x35, 0xCE, 0x05, 0xFE, 0xE9, 0x1F, 0xFD, 0x85, 0x0F, 0x41, 0x2A, 0xA9, 0xB5, - 0x3C, 0x1E, 0xF3, 0xE8, 0x4C, 0x70, 0xC3, 0xD9, 0x04, 0x05, 0xD7, 0xA2, 0x20, 0x37, 0xF5, 0xFE, - 0xC5, 0xEB, 0xF7, 0x19, 0x2F, 0xAE, 0x6E, 0x36, 0xFB, 0xBA, 0xAF, 0xEB, 0x3D, 0x86, 0xF8, 0xFC, - 0xE4, 0x78, 0x54, 0xE5, 0x1C, 0x99, 0x69, 0x66, 0x8F, 0x46, 0x6C, 0xC4, 0x10, 0x74, 0x52, 0xC4, - 0xE6, 0xF1, 0xCC, 0x97, 0x44, 0xCE, 0xC4, 0x30, 0xA1, 0xBA, 0xD9, 0xBC, 0x2B, 0xCB, 0x92, 0x64, - 0x33, 0xE5, 0x50, 0xF0, 0x7E, 0x3F, 0xE8, 0xAA, 0xCC, 0x8D, 0x81, 0x9D, 0x36, 0x48, 0xB0, 0xC1, - 0x03, 0x19, 0x7C, 0xA3, 0xA5, 0x34, 0xDD, 0xEB, 0xB7, 0xEF, 0x9B, 0xDE, 0x03, 0x58, 0xBE, 0x78, - 0xB3, 0xAF, 0xFB, 0xA1, 0x2C, 0xCA, 0xE7, 0x0F, 0x1F, 0x5A, 0xBD, 0xFE, 0x7F, 0xBF, 0xFC, 0xFE, - 0xED, 0x6D, 0x7B, 0xF9, 0xFE, 0xDD, 0xF5, 0xC5, 0xC5, 0xE9, 0xD1, 0xFC, 0xE1, 0xD9, 0xBC, 0xE4, - 0xF0, 0xFA, 0x7A, 0xAB, 0x94, 0x5D, 0xCE, 0x96, 0x8B, 0x1C, 0x2C, 0x17, 0x47, 0xBD, 0x45, 0x56, - 0xF6, 0xCF, 0x3F, 0x38, 0x17, 0x82, 0xA2, 0x08, 0xA7, 0xD3, 0x89, 0x28, 0xAA, 0x0F, 0xBF, 0xF8, - 0x13, 0x26, 0x8A, 0x7F, 0xF9, 0x67, 0xFF, 0xF5, 0xD1, 0xF1, 0xC9, 0x0F, 0x2F, 0x5F, 0xA8, 0x76, - 0xD7, 0x6C, 0xDE, 0x7E, 0xF1, 0x6C, 0x79, 0xFE, 0xEC, 0xF3, 0xAB, 0xEB, 0xDB, 0x4D, 0xE3, 0x5E, - 0xBE, 0x7A, 0x3F, 0x28, 0x6D, 0x8C, 0x6F, 0x5B, 0xB9, 0xDD, 0x36, 0xD6, 0xE9, 0xEB, 0xBB, 0x75, - 0xF0, 0xA6, 0xEB, 0xBB, 0xBC, 0xCC, 0x8D, 0xD1, 0x10, 0xC0, 0x4F, 0x3F, 0x3C, 0xF9, 0xFE, 0xCD, - 0x9B, 0xE5, 0x72, 0xB6, 0xD9, 0xEF, 0xF6, 0x4D, 0xFF, 0xE4, 0xF1, 0xD9, 0xF9, 0xF9, 0x71, 0x80, - 0xF1, 0xEA, 0xE6, 0xF6, 0xCD, 0xDB, 0x77, 0x47, 0x8B, 0x19, 0x80, 0x71, 0x5D, 0xD7, 0x3E, 0x42, - 0xA9, 0x06, 0xA9, 0x2D, 0xD0, 0x8E, 0x71, 0x4C, 0x98, 0x18, 0x15, 0xE5, 0x93, 0xF3, 0xF3, 0xF9, - 0x74, 0xDC, 0xB6, 0x03, 0x80, 0xE8, 0xF1, 0xC3, 0xF3, 0x5D, 0x2D, 0x21, 0xA4, 0x6F, 0xDE, 0x6D, - 0xB4, 0x89, 0x8F, 0x1F, 0x1C, 0xED, 0xF7, 0xB5, 0x92, 0x1A, 0xA2, 0xC8, 0x28, 0x7B, 0xB8, 0x38, - 0xFA, 0xFE, 0xF5, 0x3B, 0x8C, 0x00, 0xCF, 0xC4, 0xDB, 0xEB, 0x5B, 0x82, 0xA8, 0x31, 0xB6, 0xEB, - 0x5B, 0x08, 0x28, 0x04, 0xD1, 0x3A, 0xEB, 0x42, 0x74, 0x3E, 0x5A, 0xA3, 0xA6, 0x23, 0x26, 0x65, - 0xD7, 0x69, 0xE7, 0xAD, 0x02, 0x50, 0x61, 0x8C, 0x38, 0xE3, 0xD7, 0xB7, 0xEB, 0xD9, 0x64, 0x3C, - 0x9B, 0x14, 0xF5, 0xBE, 0x56, 0x6A, 0x60, 0x84, 0x3E, 0x7E, 0x70, 0x7C, 0x36, 0x9F, 0x1E, 0xCD, - 0xE7, 0x20, 0x02, 0x67, 0xE3, 0x6E, 0x3F, 0xAC, 0x37, 0xCD, 0xBB, 0xAB, 0x95, 0xF7, 0x60, 0x5C, - 0x95, 0xEF, 0x2E, 0xB6, 0xDF, 0xBE, 0xB8, 0xBE, 0xBA, 0x5D, 0x67, 0x9C, 0x69, 0x63, 0x01, 0xC2, - 0x83, 0xD4, 0x4A, 0x9A, 0x57, 0x3F, 0xDC, 0x02, 0x82, 0x9E, 0x3E, 0x3C, 0xEE, 0xA5, 0x1D, 0x94, - 0xC2, 0xC0, 0x20, 0xA0, 0xF2, 0x8A, 0x48, 0x3B, 0x44, 0xA0, 0xA3, 0x57, 0x47, 0xF3, 0x1C, 0x41, - 0xD7, 0x0D, 0x8D, 0x31, 0x43, 0x2B, 0x9B, 0x22, 0x17, 0x54, 0x64, 0xA7, 0xCB, 0xA2, 0xEF, 0xF7, - 0xB9, 0x60, 0x85, 0xC8, 0x6F, 0xAF, 0xB7, 0x93, 0x6A, 0xBA, 0x5B, 0x77, 0x28, 0x44, 0x12, 0x9D, - 0x6D, 0x57, 0x23, 0xD2, 0x96, 0x78, 0xC8, 0x89, 0xE5, 0x50, 0x93, 0x28, 0x8F, 0x8E, 0x4E, 0xB6, - 0x75, 0xF7, 0xE0, 0xEC, 0xF8, 0xE3, 0x0F, 0x8E, 0x01, 0x88, 0x42, 0xE0, 0x07, 0x67, 0xCB, 0x10, - 0xED, 0xE9, 0x71, 0x7E, 0xFE, 0x70, 0x94, 0x8F, 0xF0, 0x78, 0x91, 0x3D, 0xFA, 0xF0, 0x38, 0xAB, - 0xC4, 0xD1, 0xA3, 0xD9, 0x7C, 0x59, 0x4C, 0x4F, 0xAA, 0xA3, 0x27, 0x8B, 0x41, 0x6D, 0x82, 0x5E, - 0xCD, 0x2A, 0x49, 0x63, 0x6D, 0xD5, 0xBE, 0xC8, 0x60, 0xC5, 0xC3, 0xA3, 0x59, 0xC8, 0x90, 0x56, - 0x7D, 0xCD, 0x43, 0x4D, 0x5C, 0xED, 0xE5, 0x6D, 0x46, 0x71, 0xC1, 0xE8, 0x64, 0xF9, 0xD4, 0x93, - 0x52, 0x2B, 0xE3, 0x01, 0xEC, 0x95, 0x0D, 0x11, 0x02, 0x00, 0x04, 0xC3, 0x10, 0x21, 0xEC, 0x9B, - 0xA8, 0x1B, 0x48, 0xF3, 0xD4, 0x31, 0xA5, 0xCD, 0x3D, 0x88, 0xC0, 0xFB, 0x34, 0x4E, 0x82, 0x10, - 0x42, 0x29, 0x78, 0x0A, 0xA6, 0x41, 0x10, 0x08, 0x4E, 0x09, 0x81, 0x11, 0x00, 0x63, 0x9C, 0xBF, - 0xBF, 0x1E, 0x24, 0x66, 0xA7, 0x71, 0x2E, 0x91, 0x94, 0xB4, 0x31, 0x00, 0xC2, 0x74, 0x05, 0x0E, - 0x2E, 0xA4, 0xF8, 0x2A, 0x88, 0x60, 0xAA, 0x26, 0x31, 0x46, 0x6D, 0xDC, 0xA3, 0x93, 0xC5, 0x67, - 0xCF, 0x1F, 0x52, 0xE8, 0xCB, 0x22, 0xDF, 0x36, 0xC3, 0x59, 0x6E, 0x5F, 0xBF, 0xFA, 0xC6, 0x21, - 0xF6, 0x87, 0xDF, 0xFD, 0xDD, 0xED, 0xF5, 0xFB, 0x6A, 0x72, 0x04, 0x11, 0x8E, 0xDE, 0x23, 0x08, - 0x29, 0x23, 0x00, 0x46, 0x10, 0x0F, 0x71, 0x27, 0x87, 0xB0, 0x2A, 0x08, 0xD3, 0x11, 0x30, 0xFD, - 0x68, 0x9A, 0xBE, 0x69, 0x7A, 0xC6, 0x68, 0x9E, 0x09, 0x70, 0x20, 0x38, 0xC5, 0x54, 0x65, 0x82, - 0x0F, 0xA9, 0x1A, 0x3A, 0xE7, 0xAD, 0x0F, 0x10, 0x22, 0x6B, 0x9D, 0xD2, 0xDA, 0x5A, 0x4F, 0x08, - 0x85, 0x10, 0xF9, 0x10, 0xA5, 0xD4, 0x07, 0x9C, 0x7E, 0x08, 0xE1, 0x3E, 0x5D, 0x14, 0x80, 0x14, - 0xF0, 0x07, 0x78, 0xC2, 0xF5, 0xDC, 0x23, 0xED, 0x84, 0xE0, 0xA3, 0x32, 0x4F, 0x62, 0x31, 0x17, - 0x3C, 0x46, 0xD8, 0x3A, 0x1B, 0x23, 0x50, 0xCA, 0x44, 0x1F, 0x20, 0x8C, 0x5A, 0x5B, 0x78, 0xAF, - 0x59, 0x4B, 0xD8, 0xE7, 0x64, 0x98, 0xF3, 0xCE, 0xD9, 0x14, 0x49, 0x12, 0x40, 0x32, 0x39, 0x94, - 0x45, 0x46, 0x08, 0x02, 0x07, 0x42, 0x67, 0x52, 0xD2, 0xF9, 0xC4, 0x79, 0x56, 0x4A, 0x31, 0xC6, - 0x52, 0xD1, 0x56, 0xDA, 0x40, 0x08, 0x31, 0x4A, 0x6B, 0xC3, 0x40, 0x08, 0xD1, 0xDA, 0x30, 0x4E, - 0x27, 0xD3, 0x31, 0x84, 0x10, 0x61, 0xE2, 0x63, 0x00, 0x31, 0xD1, 0xB7, 0x01, 0xC2, 0x18, 0x13, - 0x9C, 0x12, 0x3F, 0x7C, 0x08, 0x18, 0x63, 0xF8, 0xDF, 0xFD, 0x87, 0xFF, 0xAD, 0xE9, 0x86, 0xE0, - 0x3D, 0x02, 0xBE, 0xC2, 0xFA, 0x93, 0x27, 0x13, 0x0A, 0xBA, 0xBE, 0xAD, 0x09, 0x25, 0xCB, 0xE5, - 0xE2, 0xAF, 0x7F, 0xFB, 0xED, 0xD7, 0xDF, 0xBD, 0x41, 0x80, 0xEC, 0xEB, 0x2D, 0x42, 0x30, 0x46, - 0xFC, 0xB3, 0xCF, 0x3E, 0x81, 0x30, 0x7C, 0xF8, 0xF4, 0xEC, 0xEC, 0x68, 0x9C, 0x51, 0xE4, 0xBD, - 0xBF, 0xDD, 0xEE, 0x20, 0x34, 0x43, 0xDF, 0x44, 0x08, 0x08, 0x81, 0xDA, 0x81, 0xAA, 0x98, 0x18, - 0x07, 0xEB, 0xBA, 0xDF, 0xD7, 0xC3, 0xE9, 0xD9, 0x42, 0xAB, 0x5A, 0x2B, 0x1F, 0x02, 0xD7, 0x16, - 0x4F, 0xE7, 0xA2, 0xED, 0xFB, 0xC1, 0x58, 0x88, 0xB0, 0x10, 0x9C, 0x32, 0x3C, 0x2A, 0x29, 0x03, - 0x26, 0x5A, 0x70, 0xB7, 0x51, 0x18, 0xC5, 0x6E, 0xD0, 0x1F, 0x7F, 0xB8, 0xDC, 0x6C, 0x6E, 0x7D, - 0xCC, 0xFB, 0x81, 0x70, 0xCA, 0xD5, 0xB0, 0x1B, 0x8D, 0x88, 0xB3, 0xE1, 0xC5, 0x9B, 0x8D, 0x1C, - 0xD4, 0xB3, 0xC7, 0x67, 0xFF, 0xE2, 0x8F, 0x3E, 0x0F, 0x01, 0xFD, 0xE6, 0xAB, 0xD7, 0x5D, 0x2C, - 0x9E, 0x3E, 0x79, 0xBC, 0xAF, 0xF7, 0x4D, 0xBB, 0xDF, 0xAE, 0xEF, 0x00, 0xA2, 0x5A, 0xF6, 0xA3, - 0x6A, 0xFC, 0xF8, 0xD9, 0xA7, 0x94, 0xA2, 0xEB, 0x9B, 0xBB, 0x10, 0xDC, 0xDD, 0xDD, 0xFA, 0xF9, - 0x07, 0x4F, 0x9A, 0x7A, 0x73, 0x77, 0x7B, 0x97, 0xD3, 0x81, 0x50, 0xD2, 0xD4, 0xFD, 0x64, 0x2C, - 0xCA, 0x9C, 0x05, 0xE7, 0x39, 0xC3, 0x08, 0xC3, 0x9C, 0x33, 0x86, 0xE3, 0x7A, 0xD7, 0x00, 0x84, - 0x01, 0x88, 0x19, 0xA3, 0x14, 0xFA, 0x46, 0x69, 0x84, 0xB1, 0x33, 0x32, 0xAF, 0x26, 0x45, 0xC1, - 0x87, 0xAE, 0x57, 0x16, 0xB8, 0x60, 0x62, 0xF0, 0x56, 0x7B, 0x08, 0x02, 0xA1, 0x39, 0x42, 0x78, - 0xD0, 0xED, 0xC3, 0x07, 0xC7, 0xD1, 0x85, 0xAB, 0xDB, 0xF5, 0xB4, 0x18, 0xFD, 0xEC, 0xD3, 0xCF, - 0x21, 0x74, 0x5D, 0xDF, 0x0F, 0xDA, 0x79, 0x84, 0x7C, 0x44, 0xCE, 0x05, 0x00, 0x01, 0x85, 0x44, - 0x30, 0xCA, 0x48, 0xD8, 0x6F, 0xEB, 0xFD, 0x7E, 0x37, 0x1A, 0xE7, 0x1F, 0x3E, 0x7F, 0x5E, 0xEF, - 0xF6, 0xB7, 0xBB, 0xF5, 0xF1, 0x72, 0x8E, 0x08, 0x1E, 0x5C, 0x78, 0xF3, 0xFA, 0xE2, 0x78, 0x36, - 0xB5, 0x4A, 0x55, 0xE5, 0xD8, 0xE9, 0x61, 0x36, 0x9D, 0x16, 0xC5, 0xE8, 0xED, 0xD5, 0x7B, 0xAD, - 0x7B, 0x46, 0x19, 0x88, 0xC8, 0x43, 0x68, 0xE5, 0x1E, 0x12, 0x96, 0x8B, 0xF1, 0xF1, 0x72, 0x31, - 0x0C, 0xB6, 0x2C, 0x29, 0x82, 0xA4, 0xEB, 0xFB, 0x76, 0x50, 0x94, 0xE2, 0x51, 0x21, 0x86, 0xC1, - 0x34, 0xDD, 0x70, 0x73, 0xB3, 0xEB, 0xA5, 0x1E, 0xA4, 0xD4, 0xCE, 0x5A, 0xE7, 0x3E, 0x7D, 0xFE, - 0x81, 0x56, 0xFA, 0xFD, 0xED, 0x06, 0x63, 0x7C, 0xB2, 0x9C, 0x64, 0x14, 0x4C, 0x26, 0x73, 0x40, - 0x88, 0xE0, 0xAC, 0x2A, 0xC4, 0xC5, 0xD5, 0xCE, 0x7A, 0xFD, 0xE9, 0x07, 0x4B, 0xC6, 0xF9, 0xAE, - 0x6B, 0x8A, 0x4C, 0x08, 0x92, 0xBF, 0x7C, 0x7F, 0xE5, 0x9D, 0x39, 0x5D, 0x4E, 0x18, 0x23, 0xD1, - 0x75, 0x5D, 0xD7, 0x78, 0x17, 0x30, 0x21, 0x84, 0x33, 0x88, 0x58, 0x59, 0x16, 0x10, 0xE1, 0x2C, - 0xCB, 0xB4, 0x71, 0x7D, 0xA7, 0x66, 0x55, 0x65, 0x6C, 0x70, 0xD6, 0x52, 0x2C, 0xAE, 0x56, 0xFB, - 0xBF, 0xFB, 0xDD, 0x8B, 0x61, 0xE8, 0x7F, 0xFA, 0xE9, 0x93, 0x8C, 0x45, 0xC1, 0xE2, 0x78, 0x3A, - 0x2D, 0xF2, 0xDC, 0x47, 0x5C, 0x66, 0x7C, 0x36, 0xCA, 0x99, 0xC8, 0x9B, 0xED, 0x46, 0x1B, 0x73, - 0x79, 0xF5, 0x6E, 0xBC, 0xAC, 0x10, 0xA7, 0xF5, 0x60, 0x77, 0xDB, 0x66, 0x5B, 0x0F, 0xD2, 0x58, - 0xE8, 0x23, 0x05, 0x71, 0x3A, 0x2B, 0x37, 0x9B, 0x36, 0x02, 0x14, 0x22, 0xE8, 0x07, 0x83, 0x28, - 0x43, 0x08, 0x5B, 0xEB, 0xF2, 0x8C, 0x65, 0x4C, 0x30, 0x96, 0x95, 0x39, 0xBD, 0xBA, 0x7C, 0xB7, - 0x59, 0xAF, 0x04, 0x67, 0x0C, 0xE1, 0xF9, 0x6C, 0xB6, 0x3C, 0x3A, 0xB7, 0x50, 0xC0, 0xE0, 0x1C, - 0xC8, 0x7B, 0x13, 0x43, 0x24, 0xB7, 0x8D, 0x5B, 0xF5, 0x9E, 0x46, 0x19, 0x74, 0x33, 0x80, 0x09, - 0x65, 0x9C, 0x12, 0x48, 0x31, 0x74, 0x3E, 0x26, 0x5B, 0x3E, 0x84, 0x48, 0x70, 0x9A, 0x42, 0xB6, - 0x32, 0x4E, 0xB5, 0xB1, 0xD6, 0xDA, 0x42, 0x30, 0x17, 0x82, 0x0F, 0x81, 0x33, 0x2A, 0xB5, 0x8D, - 0x11, 0x10, 0x0C, 0x29, 0xC1, 0x52, 0x59, 0x1F, 0x62, 0x84, 0x20, 0xE7, 0x34, 0x19, 0xFE, 0x9B, - 0x5E, 0x4A, 0xA5, 0x38, 0x63, 0x4A, 0x4A, 0x80, 0x70, 0xE2, 0x32, 0xDF, 0x1B, 0xBC, 0xD5, 0xB4, - 0xE0, 0x7F, 0xFC, 0xD9, 0x23, 0x0A, 0xD4, 0x97, 0xDF, 0xBF, 0x95, 0x8E, 0x00, 0xC4, 0x97, 0xE1, - 0xF6, 0x76, 0x73, 0x37, 0x3E, 0x7B, 0xF6, 0xE2, 0xE5, 0xAB, 0xF7, 0xEF, 0x5E, 0x62, 0x3E, 0x7A, - 0xF6, 0x93, 0x3F, 0x43, 0x30, 0x6A, 0x6D, 0x9D, 0xF7, 0x49, 0x74, 0x66, 0x8C, 0x4D, 0xD7, 0xCF, - 0x18, 0xE2, 0x81, 0x7A, 0x96, 0xD8, 0x26, 0x87, 0x34, 0x78, 0x87, 0x20, 0x7C, 0xF8, 0xE0, 0xF8, - 0xF4, 0x74, 0x19, 0x62, 0x70, 0xCE, 0x0F, 0x83, 0x22, 0x24, 0x89, 0xDB, 0x08, 0x21, 0x89, 0x00, - 0xEE, 0x63, 0x8C, 0x5A, 0xEB, 0xF5, 0x7A, 0x8B, 0x31, 0x61, 0x82, 0x1B, 0x6D, 0x9B, 0xA6, 0x91, - 0x52, 0x1F, 0xCE, 0x93, 0xA9, 0x78, 0x01, 0x90, 0xBC, 0x69, 0x00, 0x00, 0x8A, 0x11, 0x00, 0x20, - 0x44, 0x18, 0xEE, 0xD5, 0xB6, 0xA3, 0xB2, 0x08, 0x49, 0x63, 0x06, 0x22, 0xC2, 0xD8, 0x1F, 0x62, - 0x1F, 0x12, 0xD2, 0x03, 0x52, 0x82, 0x53, 0x3A, 0x2F, 0x42, 0x08, 0x23, 0xC4, 0x29, 0x46, 0x08, - 0xA6, 0xBF, 0xA8, 0xD1, 0x86, 0x60, 0x6C, 0xAC, 0x8D, 0xF7, 0x59, 0x9C, 0xC9, 0x62, 0x98, 0xD6, - 0x8E, 0x69, 0x15, 0x98, 0x92, 0xF1, 0xE2, 0xFD, 0xA9, 0x37, 0x55, 0xB7, 0xF4, 0x8E, 0x71, 0xCE, - 0x82, 0xC3, 0xB6, 0x8E, 0x48, 0x6D, 0x04, 0xE7, 0x55, 0x55, 0xFA, 0x10, 0x8C, 0xB3, 0xCE, 0xDA, - 0xE0, 0xBC, 0x73, 0x0E, 0x63, 0x2A, 0x84, 0x20, 0x34, 0x21, 0x4F, 0xBC, 0xB1, 0x16, 0x63, 0x0C, - 0xFF, 0xFB, 0xFF, 0xF0, 0x1F, 0x21, 0x00, 0x5E, 0x37, 0x19, 0x27, 0x30, 0xB8, 0x9F, 0x3C, 0x11, - 0xC1, 0x0D, 0x4D, 0xDD, 0xF8, 0x00, 0x29, 0x2F, 0x5F, 0xBE, 0xBD, 0xD9, 0x77, 0x9D, 0x52, 0xEA, - 0x6C, 0x59, 0x2E, 0x17, 0x39, 0x25, 0xA5, 0x73, 0x9E, 0xB3, 0x50, 0x15, 0x23, 0xEB, 0xC3, 0x6A, - 0xB3, 0xDB, 0xD7, 0x3B, 0x69, 0x35, 0x63, 0xC4, 0x19, 0xCD, 0x68, 0xAC, 0x3B, 0x05, 0x10, 0x7F, - 0x78, 0x3A, 0x57, 0x26, 0x5C, 0xDF, 0xDC, 0xCD, 0xC6, 0xA3, 0xF9, 0x38, 0x77, 0x11, 0xB4, 0xAD, - 0x1F, 0x4C, 0x56, 0x15, 0x65, 0xAF, 0xD6, 0x97, 0x77, 0x35, 0x80, 0x18, 0x61, 0x0C, 0x22, 0x60, - 0x8C, 0x64, 0x45, 0xB6, 0x9C, 0xE6, 0x28, 0x28, 0x14, 0xB5, 0xF5, 0xB0, 0xAE, 0x9B, 0x47, 0xE7, - 0x79, 0xDD, 0x74, 0x93, 0xE9, 0x98, 0xC1, 0x7C, 0x54, 0xCD, 0x94, 0x96, 0x77, 0xAB, 0xD5, 0x7E, - 0xEF, 0x01, 0x10, 0x9C, 0xE0, 0x3F, 0xFF, 0x67, 0x5F, 0xD8, 0xA0, 0x3A, 0xE9, 0xDF, 0xDD, 0xAA, - 0x17, 0xAF, 0xDF, 0xCF, 0x66, 0x33, 0x02, 0xFA, 0x93, 0x69, 0xD6, 0xA9, 0x7E, 0xBD, 0x33, 0xD7, - 0xDB, 0x20, 0xB5, 0xF9, 0xE8, 0xE3, 0x9F, 0x6C, 0x36, 0xEB, 0x8B, 0xF7, 0xAF, 0xBF, 0xF9, 0xFA, - 0xB7, 0xA7, 0x47, 0x8B, 0x3F, 0xF9, 0xA3, 0x5F, 0xD2, 0x72, 0xBE, 0xBD, 0x7B, 0x05, 0x5C, 0xB3, - 0x58, 0xCC, 0x4F, 0xE6, 0x0B, 0xE7, 0x6D, 0x91, 0x53, 0x10, 0x83, 0x77, 0x7E, 0x54, 0x8D, 0x87, - 0x7E, 0xB8, 0x7C, 0x7F, 0x29, 0x32, 0xBE, 0x6D, 0x6A, 0x13, 0x70, 0x74, 0x06, 0x44, 0x2F, 0x5D, - 0xFC, 0xEC, 0xF3, 0xA7, 0xCD, 0xBA, 0x61, 0xBC, 0xC8, 0x73, 0x3E, 0x9F, 0xE6, 0x90, 0xE2, 0x77, - 0x97, 0x57, 0x9B, 0x5D, 0xBB, 0xDD, 0xB4, 0x79, 0xC6, 0x95, 0x76, 0x4A, 0xC9, 0xE5, 0x72, 0x32, - 0x9D, 0x8C, 0xBC, 0x73, 0x1F, 0x3C, 0x3C, 0xCB, 0x59, 0xDE, 0xF4, 0xFA, 0xC5, 0xDB, 0x77, 0x5D, - 0x67, 0x84, 0xC8, 0x11, 0x41, 0x11, 0x40, 0x4E, 0xF1, 0x74, 0x5C, 0xCC, 0xAA, 0x8A, 0x20, 0x04, - 0x40, 0x84, 0x00, 0x1C, 0xCD, 0x4B, 0x46, 0x40, 0xA7, 0x2D, 0xA2, 0xA8, 0xEE, 0x87, 0xBA, 0x19, - 0x30, 0xA6, 0xC9, 0x34, 0x33, 0xCA, 0x33, 0x1A, 0x03, 0x88, 0xB0, 0xEF, 0xDA, 0xD1, 0x68, 0x0C, - 0x22, 0xFC, 0xFE, 0xE2, 0x1D, 0x27, 0x80, 0x20, 0x42, 0x09, 0x05, 0xD0, 0x29, 0x35, 0x4C, 0x46, - 0x33, 0x17, 0xA0, 0x94, 0xCA, 0x3B, 0x44, 0x39, 0xDB, 0xED, 0x5A, 0x1F, 0x70, 0x84, 0x04, 0x02, - 0xB0, 0x9C, 0x95, 0xE3, 0x32, 0xCB, 0x04, 0x45, 0x30, 0xBA, 0x68, 0xA5, 0x52, 0x7F, 0xF8, 0xEA, - 0xED, 0x5F, 0xFF, 0xE6, 0xDB, 0x7F, 0xFF, 0x97, 0xFF, 0xAA, 0xC8, 0xB3, 0xBA, 0xEF, 0xBB, 0x5E, - 0x8E, 0xCA, 0xF2, 0xE1, 0xF1, 0x52, 0x3A, 0xF8, 0x9B, 0xAF, 0x7E, 0xC8, 0x8B, 0xC3, 0xF7, 0xD9, - 0xE7, 0xCF, 0xCF, 0xAC, 0xE9, 0x8B, 0x92, 0x9F, 0x1C, 0x97, 0x31, 0x44, 0x6B, 0x71, 0xF4, 0xA0, - 0xCA, 0x98, 0x10, 0xB8, 0x6E, 0x37, 0x83, 0x6C, 0x3D, 0x00, 0x9C, 0x31, 0xC1, 0x73, 0xC2, 0x33, - 0x6B, 0x02, 0xF4, 0xF6, 0xEA, 0x76, 0xB7, 0x6F, 0xFA, 0x56, 0x6A, 0x00, 0x60, 0x2E, 0x44, 0x55, - 0xE6, 0xD6, 0xD8, 0x71, 0x55, 0x0A, 0x91, 0xDD, 0x6D, 0x76, 0x38, 0x7A, 0xE7, 0x83, 0x77, 0x7E, - 0x3E, 0xCB, 0x03, 0x70, 0x4A, 0x69, 0xC6, 0x08, 0x21, 0x74, 0x54, 0x54, 0x10, 0xA3, 0x4E, 0xEA, - 0x10, 0xD0, 0x30, 0xB4, 0x10, 0x63, 0x44, 0xC9, 0xAE, 0xE9, 0x69, 0x04, 0x55, 0x95, 0xDB, 0xE8, - 0x05, 0xA5, 0x08, 0xC2, 0xB6, 0xEB, 0x36, 0xBB, 0x9E, 0x09, 0x6E, 0xAC, 0xD9, 0x6D, 0x9B, 0xAE, - 0xB7, 0x83, 0xD4, 0x79, 0x91, 0x53, 0xCE, 0xAD, 0x71, 0xCB, 0xC5, 0xC4, 0x68, 0x2B, 0x04, 0x2D, - 0x4B, 0xEA, 0xAD, 0xE2, 0x98, 0x5E, 0x5D, 0xDF, 0x4A, 0x27, 0x09, 0xF4, 0x93, 0x7C, 0x7A, 0x32, - 0x9B, 0x4B, 0xA7, 0x38, 0x2D, 0x42, 0xE4, 0xB4, 0x1A, 0xC9, 0x61, 0xB5, 0x97, 0xB1, 0x1C, 0x9D, - 0x44, 0x52, 0x60, 0x9C, 0x2B, 0x69, 0xB4, 0xD1, 0x63, 0xD2, 0xE7, 0x45, 0x71, 0xB5, 0x55, 0x00, - 0x31, 0xCE, 0xF1, 0x38, 0x83, 0x39, 0xF7, 0xCE, 0x29, 0x91, 0x55, 0xAD, 0xE2, 0xB9, 0xE0, 0x75, - 0xEF, 0x36, 0xAD, 0xAD, 0x0A, 0x92, 0x31, 0xBA, 0x6B, 0x55, 0x3F, 0x98, 0x9C, 0x22, 0xE3, 0x03, - 0x67, 0xDC, 0x7B, 0x1F, 0x01, 0x88, 0x00, 0x6D, 0x9A, 0x5E, 0xC9, 0xE1, 0xB3, 0x27, 0x27, 0xB7, - 0xBB, 0x6E, 0xB5, 0xEF, 0x26, 0x39, 0x8F, 0x00, 0x0E, 0xC6, 0x13, 0x82, 0x73, 0x4E, 0x04, 0x25, - 0x9F, 0x2E, 0xF1, 0xFB, 0xBB, 0xBB, 0xA3, 0xE3, 0x65, 0xB7, 0xDF, 0xAD, 0x76, 0x9D, 0x37, 0x9A, - 0x31, 0x72, 0xF4, 0xE8, 0x69, 0x96, 0x91, 0x77, 0xEF, 0xAF, 0xEF, 0x36, 0xC3, 0x74, 0x71, 0xD6, - 0x4A, 0x9B, 0x12, 0x73, 0xDD, 0x61, 0xC2, 0x4A, 0x99, 0x8F, 0x87, 0x36, 0x10, 0x02, 0x98, 0x76, - 0xE7, 0x10, 0x22, 0x4A, 0xA9, 0xB1, 0x16, 0x46, 0x08, 0x43, 0x1C, 0x4D, 0xAA, 0xC5, 0x72, 0x5A, - 0x95, 0x79, 0xD7, 0xF5, 0x29, 0x10, 0x37, 0x19, 0x80, 0x7C, 0x08, 0xDA, 0xF9, 0xE0, 0x7D, 0xDB, - 0xB6, 0x77, 0xAB, 0xCD, 0x64, 0x32, 0xD1, 0xCA, 0xF6, 0xFD, 0xD0, 0x4B, 0x99, 0xA6, 0x67, 0x04, - 0x81, 0xBF, 0x17, 0x6D, 0x24, 0x0D, 0x98, 0xBF, 0x0F, 0x24, 0x06, 0xF7, 0x42, 0xF4, 0x22, 0x13, - 0x94, 0x33, 0xEF, 0x5C, 0x92, 0x89, 0xC4, 0x7B, 0xCF, 0x69, 0x6A, 0x33, 0x05, 0xA7, 0xC9, 0xEA, - 0x60, 0x6D, 0x92, 0xE9, 0xA1, 0x8C, 0xD1, 0x10, 0x93, 0xDB, 0x07, 0xC2, 0x08, 0x7C, 0x08, 0xD6, - 0x58, 0x21, 0x38, 0x26, 0xD8, 0xFB, 0x80, 0x11, 0x1E, 0x8D, 0x4A, 0x6B, 0x8C, 0xF5, 0x2E, 0x85, - 0x07, 0xA6, 0xF8, 0xD5, 0x54, 0x97, 0x95, 0x32, 0x18, 0xE3, 0x2C, 0xE3, 0x29, 0xDE, 0x25, 0x69, - 0xE1, 0xEE, 0xCD, 0x5E, 0x50, 0x08, 0x9E, 0xE7, 0x79, 0xB2, 0x6D, 0xA4, 0x56, 0x8E, 0x12, 0x9A, - 0x54, 0x26, 0x79, 0x96, 0x61, 0x0C, 0x5D, 0x08, 0xA9, 0x9E, 0xC2, 0xFF, 0xF1, 0x7F, 0xFA, 0x5F, - 0x7D, 0x80, 0x24, 0x0E, 0xFB, 0xDD, 0x5D, 0x96, 0x4F, 0x4A, 0xB8, 0x7E, 0xF9, 0xFA, 0x65, 0xB0, - 0x11, 0x63, 0xBA, 0x38, 0x3E, 0x2F, 0x8B, 0x5C, 0x9B, 0x1A, 0x12, 0xCC, 0x29, 0x1D, 0xE4, 0x3E, - 0x78, 0x00, 0x22, 0xC0, 0x10, 0xFA, 0xE0, 0x28, 0x23, 0xB7, 0xAB, 0x3A, 0x13, 0x8C, 0x32, 0xB6, - 0xAF, 0x9B, 0xE5, 0x6C, 0x66, 0x9C, 0xDD, 0x37, 0xAD, 0x10, 0xF0, 0x64, 0x39, 0x33, 0xC6, 0x82, - 0x18, 0x18, 0x65, 0x75, 0xAB, 0xB4, 0x85, 0xBB, 0x5D, 0x0F, 0x62, 0x2E, 0x72, 0xEA, 0x81, 0x69, - 0xFB, 0x20, 0x44, 0xE6, 0x43, 0x94, 0x6A, 0x10, 0x5C, 0x10, 0x4C, 0x18, 0xC3, 0x45, 0xC1, 0xFB, - 0x6E, 0xDB, 0x76, 0xE6, 0xE3, 0xA7, 0x0B, 0x6B, 0x6B, 0xAD, 0x95, 0xB1, 0x78, 0x94, 0x67, 0x45, - 0xC9, 0x08, 0x23, 0xD3, 0x62, 0x42, 0x71, 0x56, 0x14, 0xA3, 0xEB, 0xDB, 0x7A, 0x54, 0x08, 0xC2, - 0x00, 0x0C, 0x7E, 0xDB, 0xCA, 0x49, 0x95, 0xED, 0xB7, 0x2D, 0xE6, 0x78, 0x94, 0xF3, 0x5E, 0xE9, - 0xDE, 0x98, 0xD5, 0xBA, 0xDF, 0xD5, 0x52, 0x88, 0x62, 0x3F, 0xC0, 0x5F, 0xFD, 0xEA, 0xAF, 0x27, - 0x55, 0xF6, 0xDF, 0xFE, 0xE5, 0x2F, 0x21, 0x34, 0x10, 0x16, 0x93, 0xE5, 0x83, 0xFD, 0xE6, 0x7D, - 0x59, 0x10, 0x74, 0x88, 0x66, 0xC0, 0x55, 0x31, 0x61, 0x9C, 0x3A, 0x17, 0xDE, 0xBE, 0xB9, 0x42, - 0x30, 0x5C, 0xAE, 0x37, 0xED, 0x20, 0x19, 0xC9, 0x1E, 0x3F, 0x9C, 0x7B, 0x08, 0x76, 0xB5, 0xE4, - 0x94, 0xBF, 0xF8, 0xFE, 0xA6, 0xCC, 0xD9, 0x93, 0xF3, 0xA3, 0x10, 0x83, 0x87, 0xFE, 0xDD, 0xD5, - 0x45, 0x55, 0x8D, 0x41, 0x0C, 0x10, 0x86, 0x5E, 0xAA, 0xE8, 0xBD, 0xC8, 0x04, 0x44, 0xE4, 0xC1, - 0xD1, 0x94, 0x11, 0x62, 0x02, 0xB8, 0x5A, 0x6D, 0x82, 0x45, 0x8C, 0x8A, 0x2C, 0xA3, 0x79, 0xC6, - 0x40, 0x04, 0x08, 0x46, 0x0C, 0x91, 0x94, 0x4E, 0x6A, 0x53, 0x55, 0x85, 0x96, 0x32, 0xCF, 0x19, - 0x27, 0xF8, 0xEE, 0x6E, 0xCF, 0x0B, 0xB1, 0xDE, 0xB6, 0x01, 0x00, 0xCA, 0x30, 0x63, 0x84, 0x31, - 0x8A, 0x11, 0x2C, 0x05, 0x3F, 0x59, 0x4E, 0x8B, 0x8C, 0x0D, 0x83, 0x7C, 0x73, 0x71, 0xF1, 0xC3, - 0xE5, 0x75, 0x2E, 0xC8, 0x6C, 0x34, 0x51, 0x46, 0xFA, 0x60, 0x9C, 0x77, 0x39, 0x2F, 0x9C, 0xF5, - 0x18, 0xC3, 0x18, 0x90, 0x75, 0xF0, 0xF1, 0x83, 0x93, 0xA3, 0xC5, 0xC9, 0xAF, 0xBF, 0x7C, 0x71, - 0x7B, 0xB7, 0x79, 0x78, 0x76, 0xCA, 0x28, 0x8D, 0x31, 0x8C, 0xCA, 0xEC, 0xE4, 0x78, 0x22, 0x07, - 0x15, 0x82, 0x07, 0x04, 0x30, 0x44, 0x87, 0xC1, 0xDD, 0xAE, 0x37, 0x4A, 0x99, 0xC5, 0x6C, 0x7E, - 0x7E, 0xBE, 0xE8, 0x8D, 0x6E, 0x7A, 0xD9, 0xB6, 0xF6, 0xCB, 0xAF, 0x7F, 0x28, 0x8A, 0xD1, 0xD1, - 0x7C, 0x1E, 0x5C, 0x33, 0x99, 0x89, 0xC5, 0xAC, 0x58, 0x4E, 0xF2, 0xD1, 0x48, 0xB8, 0x00, 0x9D, - 0x03, 0x7D, 0xE3, 0xCA, 0x02, 0xF1, 0x0C, 0xDD, 0xDD, 0xED, 0x94, 0xB3, 0x20, 0x84, 0xD9, 0x74, - 0x64, 0xA4, 0xDB, 0xAE, 0x3B, 0x6D, 0x02, 0xC2, 0xB0, 0x9A, 0x64, 0x59, 0xCE, 0x04, 0xE3, 0xFD, - 0x60, 0xA5, 0xF3, 0xAB, 0xDB, 0x5D, 0x37, 0xD8, 0xE7, 0x8F, 0x4F, 0x8E, 0xC7, 0xE5, 0x6F, 0x7F, - 0xF7, 0xCD, 0x72, 0x36, 0x45, 0x34, 0xBE, 0xBF, 0xBE, 0xA1, 0x84, 0x3F, 0x7B, 0x7A, 0xAA, 0x8C, - 0xBD, 0x5E, 0xED, 0x3C, 0x44, 0x6D, 0x67, 0x12, 0xF0, 0xA3, 0x64, 0xF4, 0xE3, 0x8F, 0x4F, 0xB4, - 0xF7, 0x08, 0xC3, 0x00, 0x22, 0xC5, 0xF8, 0xEA, 0xFD, 0x6A, 0xB7, 0xEB, 0x21, 0xC2, 0x08, 0x63, - 0x1F, 0x41, 0xBD, 0x6F, 0x27, 0x93, 0xEA, 0xDD, 0xC5, 0x4A, 0x19, 0x57, 0x96, 0x39, 0x88, 0x20, - 0xE9, 0xB7, 0xF7, 0xFB, 0x8E, 0x52, 0x3A, 0x9B, 0x54, 0xA3, 0x8A, 0x0B, 0x8E, 0x36, 0xDB, 0xCD, - 0xCD, 0x7A, 0x45, 0x08, 0xA4, 0x84, 0x53, 0x44, 0xCB, 0x9C, 0x16, 0x59, 0xB5, 0xDB, 0x75, 0xB9, - 0xA0, 0xD6, 0x6B, 0x1F, 0x81, 0x10, 0xEC, 0xC1, 0xE9, 0xD1, 0x6C, 0xB1, 0x10, 0x2C, 0xE3, 0x04, - 0x4C, 0x73, 0xDC, 0xD4, 0x5D, 0x00, 0x58, 0xDB, 0x00, 0x10, 0xF0, 0x56, 0x46, 0xE8, 0x45, 0xC1, - 0xA5, 0x72, 0x22, 0x2F, 0x30, 0x80, 0xBD, 0xCD, 0x78, 0x7E, 0xF2, 0xF0, 0xC1, 0x91, 0xB6, 0x6E, - 0xB5, 0x6E, 0x56, 0x5B, 0x3D, 0xAF, 0xC4, 0x6A, 0x2F, 0x09, 0x81, 0xB3, 0x92, 0xEC, 0x5A, 0x0D, - 0x20, 0x72, 0x01, 0x30, 0x0C, 0x07, 0xE3, 0xDF, 0xAF, 0x3B, 0x8E, 0xE1, 0xB4, 0xA0, 0xDE, 0xC7, - 0xEB, 0x5D, 0x97, 0x0B, 0x72, 0x34, 0x1D, 0x0D, 0x52, 0x3D, 0xCE, 0x6A, 0x20, 0xE8, 0xA8, 0x9C, - 0x7C, 0xFD, 0xED, 0x9B, 0xB7, 0xD7, 0x77, 0xB3, 0xD9, 0x1C, 0x61, 0xCA, 0x39, 0x3A, 0x3A, 0xCE, - 0x37, 0x7B, 0x19, 0x62, 0x91, 0x89, 0xF2, 0xF5, 0x4A, 0x5B, 0x63, 0x63, 0x8C, 0x11, 0x00, 0x6D, - 0x1D, 0x67, 0xC4, 0x47, 0xE0, 0xAD, 0x83, 0xE8, 0xE0, 0xCB, 0x61, 0x94, 0xA6, 0x10, 0xCA, 0xD4, - 0xAA, 0xA0, 0x84, 0x01, 0x80, 0x10, 0x12, 0x3C, 0x9D, 0x54, 0x8B, 0xD9, 0x24, 0xCF, 0xB9, 0x36, - 0x8E, 0x11, 0x02, 0x10, 0xB2, 0xDE, 0xC5, 0x08, 0xFB, 0xBE, 0xDF, 0xEF, 0xEB, 0x10, 0x22, 0xC2, - 0x74, 0xB7, 0xAB, 0xBD, 0x73, 0x01, 0x80, 0x10, 0x01, 0x02, 0x00, 0x43, 0xE8, 0x41, 0xDA, 0xFA, - 0x25, 0x87, 0x76, 0x8A, 0xA1, 0x82, 0x00, 0x44, 0x84, 0x20, 0xC2, 0x58, 0x30, 0xC6, 0x29, 0xD5, - 0xCE, 0xFD, 0x98, 0xA6, 0x7A, 0x70, 0x0B, 0x20, 0x04, 0x21, 0x92, 0x2A, 0x49, 0x5E, 0x41, 0xBA, - 0xB7, 0xA6, 0x23, 0x03, 0x46, 0x80, 0x53, 0xD6, 0x0F, 0x03, 0x88, 0x31, 0xC1, 0x72, 0x31, 0x4E, - 0xB8, 0x1C, 0x94, 0xA4, 0xB6, 0xA3, 0x51, 0x89, 0x20, 0xB0, 0xD6, 0x28, 0xA9, 0x7D, 0x08, 0x8C, - 0x51, 0x42, 0x48, 0x72, 0x74, 0x25, 0x59, 0x3F, 0xE7, 0x3C, 0xD5, 0x29, 0x74, 0xEF, 0x19, 0x00, - 0x00, 0x58, 0x6B, 0x19, 0xA5, 0x94, 0x0B, 0x84, 0xF1, 0xD0, 0x77, 0xC3, 0x20, 0x01, 0x88, 0x20, - 0x02, 0x17, 0x22, 0x88, 0x20, 0xCF, 0x33, 0x6D, 0x0C, 0x63, 0x34, 0x86, 0xE0, 0xBC, 0x27, 0xBE, - 0xDF, 0x60, 0x5A, 0x58, 0xDB, 0x76, 0xF5, 0xF6, 0xEA, 0xFD, 0x65, 0x56, 0x90, 0xAC, 0x9A, 0x2E, - 0xA7, 0x05, 0x23, 0x78, 0xDD, 0xF8, 0x6F, 0x7E, 0xFF, 0x1D, 0xA7, 0xBE, 0xEF, 0xE4, 0x64, 0x36, - 0x67, 0x0C, 0x7E, 0xFF, 0xFD, 0xDB, 0x4F, 0x3F, 0x7C, 0x04, 0x20, 0xF2, 0x20, 0x56, 0x79, 0x78, - 0x78, 0x7E, 0x54, 0x56, 0x13, 0x39, 0xB4, 0x65, 0xC9, 0xA4, 0x85, 0xDA, 0x84, 0xA2, 0xAC, 0x9C, - 0x1B, 0x76, 0x8D, 0x72, 0xCE, 0x5A, 0x17, 0x33, 0x0E, 0x06, 0x0D, 0x0B, 0x4E, 0x9C, 0xF7, 0xC3, - 0xD0, 0x60, 0xCE, 0xA5, 0x45, 0xDB, 0x6D, 0x9F, 0x65, 0x46, 0x1B, 0x23, 0x32, 0x01, 0x33, 0xEC, - 0x23, 0x68, 0x9A, 0x8E, 0x10, 0x64, 0x3C, 0xB9, 0xBC, 0xBA, 0xA6, 0x20, 0xB4, 0x43, 0x7B, 0x7C, - 0x54, 0x9C, 0x2C, 0xC7, 0xBB, 0x5D, 0xED, 0x11, 0x1A, 0x47, 0xCA, 0x47, 0x59, 0x8C, 0xD4, 0xA8, - 0xD8, 0x75, 0x9A, 0x51, 0xB6, 0xBB, 0xDD, 0x6F, 0x76, 0xED, 0xC3, 0xF3, 0x69, 0x2F, 0x25, 0x84, - 0x78, 0xE8, 0xD5, 0xCB, 0x37, 0xEF, 0x95, 0xF1, 0xFD, 0xA0, 0x4A, 0xC1, 0x3F, 0x7D, 0xF2, 0x40, - 0x07, 0xFA, 0xFB, 0xFF, 0xF2, 0x65, 0x95, 0x8B, 0xC7, 0xA7, 0xD3, 0xB7, 0x57, 0x97, 0x11, 0x01, - 0x60, 0x6F, 0xA6, 0xF5, 0x40, 0xB2, 0xFC, 0x76, 0x75, 0x25, 0x18, 0x3E, 0x5B, 0x4C, 0x17, 0x8B, - 0xA3, 0xCD, 0xB6, 0xEB, 0x6E, 0x9A, 0x88, 0xA0, 0xB2, 0xA0, 0x28, 0xB2, 0x62, 0x32, 0xF3, 0xA8, - 0x1D, 0x89, 0xD2, 0x39, 0xAA, 0xBD, 0xC1, 0x18, 0xD7, 0xED, 0xD0, 0x19, 0x1D, 0x60, 0xD8, 0x34, - 0x8D, 0x8F, 0x21, 0xCB, 0xC5, 0x78, 0x3C, 0xD9, 0xEF, 0xFA, 0x18, 0x7D, 0x96, 0x73, 0x63, 0x3C, - 0x22, 0x08, 0x33, 0xE1, 0x9C, 0x7F, 0x77, 0xBD, 0xB5, 0xC6, 0x97, 0x65, 0x56, 0xEF, 0x9B, 0xB2, - 0x9C, 0xE4, 0x23, 0x6E, 0x7A, 0xB9, 0x53, 0xCA, 0x68, 0x4F, 0x29, 0xB6, 0x2E, 0x80, 0x88, 0xB2, - 0x9C, 0xD5, 0x7D, 0xBF, 0xBA, 0xDB, 0x5A, 0x6D, 0xAB, 0xAA, 0x04, 0x11, 0xF8, 0x56, 0x39, 0x00, - 0x9B, 0xAE, 0x2D, 0x8B, 0x8C, 0x52, 0x0C, 0x62, 0x14, 0x99, 0xE8, 0x7B, 0x7B, 0x71, 0xB5, 0x9A, - 0x4D, 0xCA, 0x27, 0x67, 0x27, 0x4F, 0x1E, 0x3C, 0x85, 0x40, 0xEC, 0xEB, 0xF5, 0x76, 0xD3, 0x52, - 0x46, 0xA4, 0x76, 0x08, 0x41, 0x5E, 0xE4, 0x0C, 0x19, 0x8C, 0x50, 0x3B, 0x58, 0xE3, 0x1D, 0xA1, - 0xEC, 0x76, 0xB5, 0x7D, 0x70, 0x94, 0x7F, 0xF4, 0x64, 0xBE, 0x98, 0xCD, 0x8B, 0xBC, 0xF0, 0x3E, - 0x58, 0xEB, 0x01, 0x08, 0xCE, 0x1A, 0x1F, 0xF1, 0xC9, 0xD1, 0x24, 0x13, 0x6C, 0xBB, 0xA9, 0x1F, - 0x3F, 0x9A, 0x32, 0xC1, 0xDB, 0x6E, 0x00, 0xD8, 0x3B, 0xEA, 0xE6, 0x02, 0x3F, 0x7F, 0xB6, 0x7C, - 0xFA, 0xE8, 0x58, 0x05, 0x98, 0xE7, 0x86, 0xF3, 0x05, 0xA2, 0x04, 0x82, 0x38, 0x29, 0x38, 0x02, - 0x51, 0xB6, 0x3D, 0xA0, 0xF8, 0xD5, 0xBB, 0x0B, 0xE7, 0xC1, 0x6C, 0x52, 0x46, 0xE7, 0x8C, 0xD7, - 0x93, 0x71, 0xF6, 0xFA, 0xC5, 0xED, 0x68, 0x5C, 0x1D, 0x9F, 0xCE, 0xB5, 0xB6, 0x79, 0x29, 0x94, - 0x54, 0xC6, 0x58, 0x6F, 0x43, 0xDD, 0x69, 0x69, 0xF4, 0x47, 0x1F, 0x9E, 0xDC, 0x6C, 0xFB, 0x77, - 0x37, 0xEB, 0xDD, 0x76, 0xFF, 0xD3, 0x2F, 0x9E, 0x1A, 0x65, 0x2E, 0x57, 0x77, 0x67, 0x67, 0x73, - 0x4E, 0x32, 0x63, 0xC2, 0x9B, 0x8B, 0xD5, 0xA6, 0xED, 0xA4, 0x32, 0x6D, 0xDB, 0x67, 0x5C, 0x60, - 0x4C, 0xFF, 0xF8, 0x4F, 0xFF, 0x24, 0x27, 0x61, 0xBD, 0xBA, 0x33, 0x31, 0x50, 0x86, 0x17, 0xB3, - 0xF2, 0x17, 0x3F, 0x7D, 0x1C, 0x3D, 0xDC, 0x6D, 0x07, 0xE3, 0x1C, 0x02, 0x18, 0x00, 0xD4, 0x4B, - 0xF3, 0xF8, 0x64, 0xF9, 0xD5, 0x77, 0xEF, 0x56, 0x75, 0x4F, 0x29, 0x35, 0xCE, 0xDA, 0xA6, 0x65, - 0x8C, 0x15, 0x19, 0xE5, 0x38, 0x8E, 0x32, 0x54, 0x95, 0xE2, 0xB3, 0x67, 0x5F, 0x40, 0x10, 0x6C, - 0x08, 0x83, 0x72, 0x46, 0xF9, 0x94, 0xFC, 0x52, 0xE6, 0xDB, 0x7F, 0xFC, 0xEA, 0xA5, 0xF3, 0x41, - 0x49, 0x6B, 0xBD, 0x6F, 0x3B, 0xFF, 0x29, 0xA4, 0x77, 0xAB, 0x6F, 0x21, 0xF0, 0x8F, 0x4E, 0x4F, - 0x8F, 0x97, 0xCB, 0x8C, 0xE7, 0x46, 0x35, 0x30, 0xD2, 0x41, 0x21, 0x42, 0x31, 0x8E, 0x99, 0xB7, - 0xED, 0xD0, 0x75, 0x52, 0x6B, 0x00, 0xC1, 0x3C, 0xB3, 0xB1, 0x0F, 0x7A, 0xD0, 0x58, 0x77, 0x67, - 0x93, 0x62, 0x31, 0xCE, 0xA7, 0x65, 0xCE, 0xC3, 0xBE, 0xAE, 0xAF, 0x66, 0x34, 0x32, 0x8A, 0xAB, - 0xBC, 0xF2, 0x20, 0xFB, 0xFE, 0x5A, 0x3D, 0x5E, 0x66, 0x67, 0x53, 0x81, 0x60, 0x90, 0xC6, 0xCC, - 0xC6, 0x82, 0x11, 0x02, 0x00, 0x5A, 0x16, 0xFE, 0xC3, 0xD3, 0x23, 0x91, 0x97, 0x3F, 0xBC, 0x5D, - 0x4D, 0xC6, 0x19, 0x21, 0x73, 0x6B, 0x62, 0x9E, 0x7B, 0x8A, 0xED, 0xFE, 0x76, 0x0B, 0x11, 0xFC, - 0xC9, 0x47, 0xCB, 0xBE, 0x87, 0xD0, 0xF9, 0x00, 0x62, 0x5E, 0x8E, 0xD7, 0x7B, 0xAF, 0x8C, 0x5B, - 0xEF, 0x7A, 0x41, 0x50, 0x60, 0xB8, 0x95, 0x16, 0x02, 0x90, 0x30, 0x73, 0x18, 0x63, 0xE7, 0x0C, - 0x22, 0xD8, 0x07, 0x1F, 0x03, 0x60, 0x98, 0x20, 0x8C, 0x22, 0x08, 0xF5, 0x76, 0x6F, 0x07, 0x79, - 0x7A, 0xBA, 0xAC, 0x26, 0x63, 0xE7, 0x7C, 0x0C, 0x01, 0x42, 0xA4, 0xB5, 0x36, 0xDA, 0x0C, 0x83, - 0x14, 0x3C, 0xDB, 0xED, 0x6A, 0xE3, 0xEC, 0xC1, 0x85, 0x16, 0x0F, 0x53, 0x2A, 0x48, 0xF1, 0x63, - 0x21, 0x26, 0x41, 0x49, 0xE2, 0x33, 0xA6, 0xC9, 0x31, 0x79, 0x9E, 0x1A, 0xD3, 0x87, 0x18, 0x18, - 0x65, 0xF0, 0x90, 0x9B, 0x95, 0x02, 0x56, 0x1C, 0x25, 0x24, 0x04, 0xEF, 0x03, 0x38, 0x80, 0xDA, - 0x11, 0x02, 0x30, 0x42, 0x08, 0x8D, 0x75, 0xCE, 0x0E, 0x82, 0x12, 0xA9, 0x8C, 0x0D, 0x16, 0x61, - 0x8C, 0x30, 0xF2, 0xDE, 0x11, 0x02, 0xF3, 0x3C, 0x53, 0x4A, 0x87, 0x54, 0x44, 0x21, 0xA2, 0x8C, - 0x02, 0x6B, 0x05, 0x17, 0x08, 0x23, 0x6B, 0x2D, 0x00, 0x20, 0xCB, 0x33, 0x8C, 0x50, 0x0A, 0x79, - 0xC8, 0xF3, 0x5C, 0x4A, 0x75, 0x7F, 0xF0, 0xC5, 0x08, 0x21, 0x17, 0x02, 0x0A, 0xEE, 0xFE, 0x8C, - 0x10, 0x11, 0x22, 0x8C, 0x73, 0xA5, 0x15, 0x88, 0x51, 0x0F, 0x03, 0x26, 0xC4, 0x6B, 0x03, 0x11, - 0x0A, 0xD6, 0xC3, 0xFF, 0xFD, 0x3F, 0xFE, 0xCF, 0xAB, 0xED, 0xB0, 0xAB, 0xF7, 0xCE, 0x9B, 0x22, - 0xCF, 0x10, 0x02, 0x0F, 0x1E, 0x9E, 0xDC, 0xDD, 0xDC, 0x6C, 0x36, 0xFB, 0xBA, 0xF5, 0x08, 0x44, - 0xE9, 0xA1, 0xE0, 0xB9, 0x8F, 0x10, 0x00, 0x85, 0x40, 0x3B, 0x5F, 0xCC, 0x82, 0x8B, 0x9D, 0x54, - 0xDA, 0xA8, 0xE5, 0xAC, 0xDC, 0xD6, 0x3D, 0x08, 0x00, 0x00, 0xDF, 0x0D, 0x76, 0xBD, 0x56, 0x93, - 0x49, 0xD9, 0xB6, 0xDD, 0xA8, 0x12, 0x3E, 0x18, 0xAD, 0xFD, 0xB8, 0xE4, 0xCA, 0x04, 0x4A, 0x10, - 0x44, 0xA8, 0x69, 0x34, 0x00, 0x60, 0x5B, 0x0F, 0xBB, 0x7A, 0x60, 0x04, 0x87, 0x08, 0x27, 0xD3, - 0xE9, 0xA8, 0x2A, 0x43, 0x08, 0x20, 0x82, 0x5C, 0xE0, 0x07, 0x67, 0xCB, 0xB6, 0x69, 0x67, 0x55, - 0xC9, 0xB3, 0x7C, 0x3E, 0xCB, 0xCA, 0x9C, 0xE6, 0x5C, 0x78, 0xEF, 0xDB, 0xB6, 0x43, 0x20, 0x16, - 0x79, 0xB9, 0xDA, 0x76, 0x5A, 0xBB, 0xB2, 0x2C, 0xDB, 0xA6, 0x63, 0x04, 0x07, 0x68, 0xEB, 0xAE, - 0x9B, 0x16, 0x23, 0xAD, 0xE5, 0xDB, 0x9B, 0x5B, 0xE7, 0xE3, 0xF1, 0x62, 0xFA, 0x60, 0xB9, 0x68, - 0x3B, 0xF9, 0xEE, 0x66, 0x7F, 0xD7, 0xF9, 0xED, 0xF6, 0xAE, 0xDD, 0xDE, 0x7E, 0xF0, 0xF4, 0x98, - 0x30, 0x94, 0x51, 0x3E, 0x9D, 0x2C, 0xDA, 0x41, 0x5D, 0xDF, 0xDC, 0x6A, 0xA3, 0x7E, 0xF9, 0xF9, - 0xC7, 0x82, 0xE7, 0x5A, 0x69, 0x2E, 0x8A, 0xF5, 0xBE, 0x1D, 0x64, 0x17, 0x82, 0x56, 0x2E, 0x00, - 0x80, 0x96, 0xE3, 0x79, 0xD7, 0x75, 0xBB, 0xB6, 0xC9, 0x32, 0x82, 0x31, 0x0A, 0x10, 0x6E, 0xB7, - 0x6D, 0x74, 0xE1, 0x27, 0x3F, 0x7D, 0xE6, 0xBD, 0xB7, 0xC6, 0x3A, 0x17, 0xBA, 0x41, 0x2A, 0x2D, - 0xEB, 0xBA, 0xC1, 0x18, 0x16, 0x55, 0x51, 0xE4, 0xB9, 0xEC, 0x8D, 0x96, 0x66, 0x3C, 0x2A, 0x10, - 0x0E, 0x10, 0x52, 0xA3, 0xDD, 0x6E, 0xDF, 0x12, 0xCA, 0x22, 0x80, 0xD6, 0xDA, 0x6A, 0x54, 0xE5, - 0xB9, 0xD8, 0x6F, 0x77, 0x22, 0xE3, 0x52, 0x19, 0x04, 0xE0, 0x64, 0x54, 0x44, 0x00, 0xDB, 0xB6, - 0xA7, 0x9C, 0xBD, 0x7A, 0x73, 0x21, 0x38, 0x3F, 0x3D, 0x5D, 0x58, 0x63, 0x36, 0xBB, 0xE6, 0xF4, - 0x68, 0x91, 0x31, 0x94, 0x09, 0x56, 0x66, 0x6C, 0x3E, 0x9D, 0xEF, 0xF6, 0xF2, 0x68, 0x96, 0xAD, - 0x37, 0xBB, 0x76, 0x18, 0xDA, 0x7E, 0x38, 0x3F, 0x3A, 0x1E, 0x55, 0xC5, 0xA8, 0x22, 0xA3, 0x51, - 0x7E, 0xB7, 0x6F, 0xBE, 0x7B, 0x75, 0x39, 0x1E, 0xE5, 0x1F, 0x3C, 0x3A, 0xA7, 0x84, 0x12, 0x4A, - 0xAB, 0xB2, 0x28, 0x84, 0x40, 0x11, 0xBD, 0x7E, 0x7B, 0xCD, 0xA8, 0x8F, 0xC8, 0x01, 0xC4, 0x05, - 0x63, 0x82, 0xD2, 0x7D, 0xDD, 0x8E, 0xC7, 0x79, 0x04, 0xE1, 0x2D, 0x31, 0xC6, 0xEF, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xCD, 0xDB, 0xF7, 0xC6, 0xFA, 0x72, 0x3C, 0x76, 0xD6, 0x4D, - 0x67, 0xC7, 0x4A, 0xEB, 0xC5, 0x14, 0xB5, 0xBA, 0xDF, 0xB5, 0xDA, 0x06, 0x30, 0x48, 0x83, 0x30, - 0xC9, 0x32, 0x4E, 0x09, 0xCE, 0x04, 0x75, 0xC6, 0x09, 0x00, 0x90, 0x8F, 0x2F, 0x7F, 0xB8, 0x59, - 0x6F, 0x5A, 0x91, 0x11, 0xE0, 0xC1, 0x67, 0x9F, 0x3F, 0xAE, 0x1B, 0xD9, 0x4B, 0x35, 0x9F, 0x97, - 0xED, 0x5E, 0x5E, 0x5C, 0xAD, 0x01, 0x44, 0x83, 0x34, 0xC1, 0xF9, 0xF3, 0xB3, 0x85, 0x8C, 0xFE, - 0xFC, 0x78, 0x81, 0x42, 0x98, 0x8D, 0xF3, 0x51, 0x29, 0x10, 0x46, 0x52, 0x45, 0x08, 0x71, 0x08, - 0x5E, 0x5B, 0xCB, 0x38, 0x5A, 0xED, 0xF6, 0x77, 0xB7, 0x3B, 0x10, 0xF1, 0x6C, 0x76, 0x34, 0xF4, - 0xF2, 0xE5, 0xAB, 0xD7, 0x08, 0xBA, 0xB2, 0xAA, 0x26, 0xA3, 0xEC, 0x5F, 0xFD, 0xC9, 0x87, 0xBD, - 0x34, 0x9B, 0xFD, 0x20, 0xA5, 0x25, 0x94, 0xC6, 0x10, 0xAD, 0xF5, 0x93, 0x69, 0x45, 0x31, 0x06, - 0x00, 0xB6, 0x52, 0xF7, 0xDA, 0x5C, 0x5F, 0xDF, 0x8D, 0x73, 0x0C, 0x20, 0x9A, 0x4F, 0xC7, 0x3E, - 0x58, 0xC6, 0x88, 0xE0, 0xD4, 0xB8, 0x78, 0xB7, 0x6E, 0x94, 0xF1, 0x00, 0xA1, 0x61, 0xD0, 0x14, - 0x33, 0xCE, 0x49, 0x55, 0x08, 0x2D, 0xCD, 0xDD, 0x66, 0xFB, 0x9B, 0x2F, 0xBF, 0x93, 0xDA, 0xFC, - 0xF3, 0x5F, 0x7E, 0xCE, 0x09, 0xA2, 0x04, 0xCD, 0x16, 0x55, 0x80, 0xAE, 0xEF, 0xBA, 0x49, 0x35, - 0x2D, 0x45, 0x21, 0x08, 0x8F, 0x31, 0x84, 0x88, 0x9C, 0x0D, 0x0E, 0x18, 0x82, 0x21, 0x40, 0x60, - 0x3C, 0x29, 0x18, 0x45, 0x75, 0x2D, 0x37, 0xAB, 0xC6, 0x33, 0x1C, 0x51, 0xA4, 0x84, 0x3E, 0x3E, - 0x5D, 0x76, 0xFB, 0x66, 0xD7, 0xF4, 0xC7, 0x27, 0x8B, 0xCD, 0x66, 0x3B, 0xAB, 0xCA, 0xC9, 0xAC, - 0x40, 0x98, 0x43, 0xC2, 0x80, 0x83, 0x4A, 0xB9, 0xF1, 0x78, 0xDC, 0x0F, 0x92, 0x22, 0x34, 0x19, - 0x95, 0x57, 0x37, 0x97, 0x10, 0x84, 0xBE, 0x1F, 0xB6, 0xBB, 0xBD, 0x0F, 0xC0, 0x7B, 0x38, 0x19, - 0x4F, 0xFB, 0xA1, 0x0F, 0xCE, 0xAC, 0xEB, 0xDD, 0xD3, 0xA7, 0x4F, 0x8A, 0x2C, 0xEF, 0xBB, 0x1E, - 0x47, 0x47, 0x28, 0x1B, 0xCF, 0x47, 0xDB, 0x0E, 0x78, 0x1D, 0x37, 0xB5, 0x15, 0x04, 0xAD, 0x15, - 0xE8, 0x0D, 0x68, 0x1A, 0xD5, 0x69, 0x77, 0x50, 0x9C, 0xC4, 0xE0, 0x43, 0x74, 0x3E, 0x44, 0x1F, - 0x29, 0xC2, 0x88, 0x00, 0x84, 0x10, 0x88, 0x30, 0x78, 0xCF, 0x28, 0x3D, 0x3E, 0x3B, 0x9A, 0x4D, - 0xC7, 0x21, 0x46, 0xEB, 0x43, 0x3F, 0xC8, 0xAE, 0xEB, 0xD7, 0xEB, 0x5D, 0xCA, 0x73, 0xF0, 0x20, - 0x02, 0x00, 0x7C, 0x08, 0x14, 0xA2, 0xE4, 0xB0, 0xF5, 0x07, 0x93, 0x00, 0x70, 0xDE, 0x13, 0x8C, - 0x12, 0x10, 0x18, 0xC4, 0x98, 0x65, 0x59, 0xDA, 0x79, 0x25, 0x32, 0x7A, 0x72, 0x0E, 0xA4, 0x7B, - 0x28, 0x44, 0x49, 0x79, 0x4B, 0xB4, 0xF1, 0xDD, 0xA0, 0x30, 0x46, 0x93, 0x82, 0x15, 0x9C, 0x00, - 0x94, 0x2C, 0x04, 0x16, 0x04, 0xCF, 0x09, 0xDE, 0x77, 0xCA, 0xC7, 0x43, 0x80, 0x58, 0x4A, 0xF0, - 0x4D, 0x37, 0xD3, 0x2C, 0x13, 0x65, 0x99, 0x19, 0x6D, 0xAC, 0x35, 0x29, 0xFD, 0xAF, 0x28, 0xB2, - 0x24, 0xF4, 0xE5, 0x9C, 0xA7, 0xBD, 0xBE, 0x77, 0x16, 0x53, 0x4A, 0x09, 0x55, 0x5A, 0x32, 0xC6, - 0xAA, 0xD1, 0xB8, 0x6D, 0x3B, 0x63, 0x4C, 0xF0, 0x0E, 0xC4, 0x10, 0x23, 0x48, 0x18, 0x32, 0x91, - 0xE7, 0xCE, 0x59, 0xEF, 0x1C, 0x3A, 0x10, 0x95, 0x00, 0x02, 0x28, 0xC4, 0x08, 0xFF, 0x97, 0xFF, - 0xE1, 0xDF, 0x15, 0x22, 0xEB, 0xDA, 0xDA, 0x5A, 0xF7, 0xD3, 0x8F, 0x1F, 0x42, 0x18, 0xAC, 0x07, - 0xEB, 0x4D, 0xED, 0xBC, 0xAD, 0x78, 0x55, 0xEF, 0x07, 0x8B, 0x8B, 0xD5, 0x00, 0x37, 0xAB, 0xCB, - 0x87, 0xE7, 0xB3, 0xAE, 0xAB, 0x31, 0x05, 0x30, 0xBA, 0x5E, 0x76, 0x9D, 0xF2, 0xDE, 0xF9, 0x57, - 0xAF, 0xEF, 0x3E, 0xFD, 0xF8, 0xA4, 0x6F, 0xBB, 0xAE, 0x73, 0x22, 0xCF, 0xD3, 0xB8, 0x1A, 0xEC, - 0x90, 0xE5, 0x24, 0x13, 0x0C, 0xC3, 0x58, 0x8E, 0x46, 0x4D, 0xD7, 0x01, 0xE0, 0x33, 0x91, 0xBD, - 0x7D, 0xBF, 0x5E, 0xAD, 0xDA, 0xF9, 0x62, 0xDE, 0xB7, 0xCA, 0x59, 0x53, 0xE6, 0x85, 0x72, 0xA1, - 0x28, 0xB2, 0xD3, 0xE5, 0xF8, 0x8F, 0x3E, 0x7D, 0x6A, 0x3D, 0x12, 0x39, 0x93, 0xCA, 0xD7, 0x8D, - 0x0E, 0x21, 0x18, 0x63, 0xB2, 0x9C, 0x5B, 0xA3, 0x19, 0x41, 0xD3, 0x11, 0x27, 0x8C, 0x18, 0x6B, - 0x28, 0x82, 0x39, 0xCB, 0x2F, 0x6F, 0x76, 0xAB, 0x6D, 0x2D, 0x72, 0xDC, 0x0D, 0x83, 0x37, 0xE1, - 0xFC, 0x64, 0x06, 0x00, 0xDC, 0x37, 0xDD, 0xF1, 0x7C, 0xEA, 0x83, 0x7B, 0xFB, 0x7E, 0x23, 0xF2, - 0x5C, 0x46, 0xFA, 0xFB, 0x3F, 0xFC, 0x3E, 0xA3, 0xF0, 0xD9, 0xA3, 0x85, 0x32, 0x6A, 0x36, 0x9D, - 0xAE, 0xB7, 0x7B, 0xA3, 0x1D, 0x46, 0xF4, 0xE8, 0x68, 0x36, 0x1F, 0x8F, 0xDF, 0xBD, 0xBF, 0x69, - 0x9A, 0x6E, 0x32, 0x1D, 0x53, 0x21, 0x9C, 0xD7, 0x82, 0xD3, 0x37, 0xEF, 0x57, 0x9B, 0x7D, 0x37, - 0x1D, 0x4D, 0x31, 0xF2, 0x01, 0x84, 0xD9, 0x78, 0x64, 0x9D, 0xF6, 0xC1, 0x51, 0x46, 0x07, 0x69, - 0x05, 0xE1, 0x22, 0x23, 0xD2, 0xF4, 0x31, 0x22, 0x63, 0x4C, 0x35, 0x2E, 0xB7, 0xBB, 0xFD, 0x68, - 0x54, 0xED, 0xB6, 0xB5, 0x92, 0xBA, 0x2A, 0x0B, 0x8A, 0x71, 0x55, 0x16, 0x56, 0x9B, 0xA6, 0xED, - 0x9B, 0x5E, 0x36, 0xBD, 0x12, 0x5C, 0x50, 0xC6, 0xAD, 0xD1, 0xB3, 0xD9, 0x58, 0x70, 0x96, 0xE7, - 0x99, 0x56, 0x3A, 0x99, 0x75, 0x65, 0x3F, 0x64, 0x99, 0x88, 0x10, 0x69, 0xAD, 0xEA, 0x56, 0x3A, - 0xE7, 0x8A, 0x9C, 0xC5, 0x18, 0x07, 0x29, 0xC7, 0xD5, 0x68, 0x36, 0xAB, 0x50, 0xF0, 0x8C, 0x60, - 0xC6, 0xD9, 0x20, 0xED, 0xB4, 0x1C, 0xCF, 0xA6, 0xD5, 0x7A, 0xBF, 0x26, 0x31, 0x0A, 0x26, 0x08, - 0x45, 0x8B, 0x45, 0xB6, 0xDF, 0x77, 0xD5, 0xB8, 0x02, 0x11, 0x84, 0x80, 0x8B, 0xA2, 0xF0, 0x11, - 0x48, 0xE5, 0xAF, 0xEF, 0xB6, 0x01, 0xC4, 0xA3, 0xC9, 0x64, 0x9C, 0x13, 0xE7, 0xD5, 0xFB, 0xEB, - 0xCD, 0x78, 0x54, 0x94, 0x05, 0x13, 0x9C, 0x31, 0x4A, 0xA7, 0x55, 0x51, 0xD7, 0x1D, 0x20, 0x31, - 0xCB, 0x59, 0xD7, 0x6B, 0x69, 0xA2, 0x76, 0xDC, 0xCB, 0xBB, 0xA1, 0x53, 0xBB, 0xBA, 0x0F, 0x38, - 0x9E, 0x3E, 0x39, 0xDD, 0xEE, 0xDA, 0xB6, 0x93, 0x2C, 0xCB, 0x11, 0x26, 0x55, 0xC1, 0x26, 0x15, - 0xAF, 0x72, 0x3E, 0xCE, 0xB2, 0xEB, 0x77, 0xB7, 0x4D, 0xD3, 0x2F, 0x8F, 0xA6, 0xC7, 0x27, 0xF3, - 0xAB, 0xAB, 0xF5, 0xA0, 0xAC, 0xB6, 0xEE, 0xEE, 0x7A, 0x43, 0x10, 0xA9, 0x07, 0xF5, 0xEC, 0xC9, - 0x93, 0x46, 0x1A, 0xAB, 0x2D, 0x8C, 0x91, 0x50, 0xFC, 0x8B, 0xCF, 0x3E, 0xB8, 0x5B, 0x6F, 0x09, - 0x8C, 0x59, 0x96, 0xFF, 0xF0, 0xF6, 0xBA, 0x28, 0x44, 0x96, 0xD1, 0xE3, 0xA3, 0xE9, 0x76, 0xDF, - 0x7A, 0xFF, 0xFF, 0xF1, 0xF4, 0x26, 0x4B, 0x97, 0x65, 0xE7, 0x79, 0xDE, 0xEA, 0xD7, 0xDA, 0xFD, - 0x3E, 0xFD, 0xDF, 0x66, 0xF3, 0x57, 0x56, 0x5F, 0x60, 0x15, 0x08, 0x90, 0x94, 0x44, 0x5B, 0x94, - 0xC2, 0x52, 0xC8, 0x23, 0x47, 0x28, 0x3C, 0xD3, 0xC0, 0xE1, 0x91, 0x07, 0x1E, 0x38, 0x7C, 0x05, - 0xBE, 0x28, 0x0F, 0x1C, 0xF6, 0xC8, 0xA6, 0x1D, 0xA2, 0x25, 0x8B, 0x00, 0x01, 0x02, 0x20, 0x50, - 0xC8, 0xCA, 0xCA, 0xFC, 0xFB, 0xD3, 0x9F, 0xDD, 0xAE, 0xBD, 0x57, 0xEF, 0x41, 0x32, 0x74, 0x0B, - 0xDF, 0xF4, 0x7B, 0x9E, 0xF7, 0xF9, 0xC7, 0x4F, 0xFF, 0x87, 0xBB, 0xED, 0x30, 0xBA, 0xA7, 0xCD, - 0xC1, 0x07, 0x7B, 0x36, 0x13, 0x21, 0xB0, 0x3F, 0xFF, 0xC9, 0x8D, 0x0B, 0xFA, 0x97, 0x7F, 0xF8, - 0x50, 0xB7, 0x43, 0xD3, 0x8C, 0x8C, 0xF2, 0x49, 0x11, 0x47, 0x42, 0x04, 0x04, 0x07, 0xA5, 0x93, - 0x38, 0x5E, 0xAD, 0xE6, 0x46, 0xEB, 0xD5, 0x54, 0x78, 0xEF, 0x1E, 0xD7, 0x6B, 0x11, 0x25, 0xDE, - 0x81, 0xB6, 0xEB, 0x02, 0x84, 0x5D, 0x3F, 0x36, 0xED, 0x40, 0x08, 0x0D, 0x3E, 0x10, 0x4A, 0x83, - 0x07, 0x21, 0x00, 0xC6, 0xF0, 0xA4, 0xC8, 0x63, 0x4E, 0xF7, 0x87, 0x9D, 0x07, 0x7A, 0x36, 0x9B, - 0x28, 0x63, 0xBD, 0x81, 0x3C, 0x66, 0x49, 0x19, 0x7B, 0xE3, 0x59, 0x00, 0x00, 0x40, 0xA3, 0x4C, - 0x2C, 0x18, 0xA1, 0x88, 0x61, 0xD4, 0x76, 0xB2, 0xAA, 0x07, 0x42, 0x05, 0xA1, 0xD8, 0x38, 0x75, - 0x3C, 0x1D, 0xD2, 0x38, 0xEB, 0x8C, 0x66, 0x9C, 0x21, 0x02, 0xCB, 0x2C, 0x5E, 0x95, 0xF9, 0xE5, - 0xD9, 0x52, 0x6A, 0xF5, 0xF8, 0xB4, 0x4F, 0xB2, 0x58, 0x2B, 0x35, 0x6A, 0x95, 0x16, 0x59, 0x70, - 0x2E, 0x63, 0x7C, 0x56, 0x2E, 0xD5, 0xA0, 0xAD, 0xB3, 0xBD, 0x1C, 0x4E, 0x4D, 0x9B, 0x08, 0xA6, - 0xF5, 0x78, 0xA8, 0xAA, 0xB2, 0x9C, 0x8D, 0xE3, 0xB8, 0xD9, 0xEC, 0xE3, 0x38, 0x8D, 0x39, 0x3B, - 0xB4, 0xC7, 0x00, 0xF8, 0xA1, 0x0E, 0xA3, 0xB6, 0xAB, 0x59, 0x96, 0x27, 0xE2, 0xC3, 0xED, 0x13, - 0x40, 0x20, 0x89, 0x05, 0x46, 0x78, 0x3E, 0x2F, 0xB3, 0x2C, 0xD1, 0x1A, 0x38, 0x07, 0x46, 0x0B, - 0xD7, 0x95, 0xC7, 0x98, 0x29, 0x07, 0x94, 0xB1, 0x10, 0x40, 0xEB, 0x5C, 0x16, 0x73, 0x08, 0xB1, - 0xF5, 0xC1, 0xAA, 0xCE, 0x38, 0x60, 0x02, 0x29, 0x33, 0x11, 0x27, 0x49, 0x92, 0x17, 0x84, 0x92, - 0xC3, 0xE1, 0x78, 0x38, 0xD4, 0xC6, 0x98, 0x44, 0xD0, 0x76, 0xD0, 0xE6, 0x63, 0x87, 0xE6, 0x63, - 0x2A, 0xE5, 0x23, 0xA0, 0x06, 0x01, 0x25, 0x84, 0x10, 0xA4, 0x94, 0x71, 0xE1, 0x1F, 0xFB, 0x71, - 0x94, 0x52, 0xC1, 0x79, 0x00, 0x80, 0x60, 0xFC, 0x9F, 0x47, 0x07, 0xFE, 0xF3, 0xA6, 0x53, 0x00, - 0x00, 0x05, 0x47, 0x08, 0x2E, 0xB9, 0x22, 0x24, 0x00, 0x0F, 0x32, 0xE6, 0x03, 0x50, 0xAD, 0x16, - 0xBD, 0x89, 0x61, 0x40, 0xBD, 0xD4, 0x1E, 0x00, 0xED, 0x5C, 0xC4, 0xC0, 0x34, 0xFD, 0x38, 0xCF, - 0x0B, 0x01, 0x80, 0xBD, 0x02, 0xCD, 0x80, 0x31, 0x26, 0x79, 0x9E, 0x20, 0x08, 0x3E, 0x4A, 0x44, - 0xD6, 0x58, 0xC6, 0x89, 0x10, 0x02, 0x42, 0xE4, 0x9D, 0xA3, 0x8C, 0x5A, 0x6B, 0x3F, 0xA2, 0xC8, - 0xDE, 0x79, 0x88, 0x90, 0xB1, 0x1F, 0xB7, 0x91, 0xB1, 0x77, 0xDE, 0xBB, 0x8F, 0x56, 0x86, 0x73, - 0xCE, 0x0D, 0x83, 0x56, 0xA3, 0x4E, 0x12, 0x11, 0xC7, 0x0C, 0x06, 0xAB, 0x6D, 0x80, 0x88, 0x76, - 0x9D, 0xC4, 0x08, 0xE1, 0x3F, 0xF9, 0xE6, 0xF3, 0x80, 0x80, 0xF5, 0xE6, 0x62, 0x31, 0xA9, 0x4E, - 0x87, 0xA6, 0x6B, 0xDA, 0xBA, 0x15, 0x49, 0xDC, 0xFB, 0xA0, 0x8D, 0x31, 0xD0, 0x31, 0xCE, 0x66, - 0x65, 0xF1, 0x72, 0x95, 0x08, 0x4A, 0x56, 0xCB, 0x45, 0x1C, 0x89, 0xBC, 0x48, 0x85, 0x10, 0xC1, - 0xFB, 0xC3, 0xFE, 0x44, 0x39, 0x27, 0x14, 0x22, 0x8C, 0x8B, 0x9C, 0x67, 0x99, 0xA8, 0x9B, 0x81, - 0x61, 0x20, 0x04, 0xC9, 0xF2, 0x54, 0x30, 0x64, 0x9C, 0x1B, 0x94, 0x21, 0x88, 0xAC, 0x37, 0xC7, - 0xCD, 0xBE, 0x09, 0x00, 0x24, 0x49, 0x34, 0xC8, 0x71, 0x39, 0xCB, 0x2E, 0xCE, 0x16, 0x67, 0xB3, - 0x72, 0x5A, 0xA4, 0x9F, 0xBE, 0xB8, 0x7C, 0x71, 0xB6, 0x6C, 0xDA, 0xE1, 0x79, 0x7B, 0xEC, 0x7A, - 0x69, 0xAD, 0xC9, 0x53, 0x1A, 0x80, 0xA9, 0xDB, 0x36, 0x8A, 0x99, 0xB1, 0xEE, 0xDD, 0xFB, 0x67, - 0x1F, 0xA0, 0x0D, 0xA1, 0x1F, 0x14, 0x22, 0x68, 0x73, 0xD8, 0x54, 0x5D, 0x73, 0x7E, 0x36, 0x7D, - 0xF3, 0xFA, 0x22, 0xCF, 0xD9, 0x34, 0x8F, 0x39, 0xA7, 0x51, 0xCC, 0x38, 0xA3, 0x5A, 0xE9, 0xE0, - 0x5D, 0x96, 0x45, 0x79, 0x16, 0x29, 0x35, 0x08, 0xCE, 0x3E, 0xBF, 0xB9, 0x2A, 0xB3, 0x24, 0x00, - 0xD0, 0xC9, 0xEE, 0x50, 0x57, 0x01, 0xC1, 0xD7, 0x57, 0x0B, 0xCE, 0x89, 0x52, 0x4E, 0x69, 0xAD, - 0x9D, 0xC3, 0x04, 0x63, 0x82, 0xEA, 0xB6, 0x8A, 0x22, 0x11, 0x20, 0x7D, 0xF7, 0xE1, 0x01, 0xA0, - 0x40, 0x31, 0x44, 0x04, 0x6D, 0xB6, 0x07, 0x29, 0xA5, 0x31, 0x16, 0x20, 0xB4, 0xDF, 0xD7, 0x87, - 0x63, 0x0B, 0x60, 0x38, 0x35, 0xAD, 0x1C, 0xF4, 0xA9, 0x6A, 0x21, 0x04, 0x8B, 0xE5, 0xDC, 0x07, - 0x28, 0xA5, 0xE9, 0x87, 0x91, 0x12, 0xC8, 0x30, 0x56, 0x83, 0x12, 0x9C, 0x3D, 0xEF, 0xAB, 0xE7, - 0x7D, 0x15, 0x31, 0x0E, 0x01, 0x50, 0xDA, 0xC8, 0x61, 0xD4, 0xDA, 0xAD, 0xD7, 0xC7, 0x88, 0xF3, - 0xAE, 0x97, 0xC3, 0xA8, 0xD4, 0xA8, 0xD7, 0xDB, 0x83, 0x31, 0x96, 0x32, 0xB6, 0xDD, 0x1F, 0xA7, - 0x65, 0x3C, 0x9D, 0x24, 0x75, 0xDD, 0x6D, 0xF6, 0x55, 0x00, 0xA1, 0xAE, 0xDB, 0xD3, 0xA9, 0x19, - 0x47, 0x43, 0x19, 0xC9, 0xF3, 0x98, 0x52, 0xE2, 0xAD, 0x1B, 0xC6, 0x31, 0x89, 0x39, 0xE7, 0x10, - 0x61, 0x40, 0x31, 0xC0, 0x18, 0xB6, 0x8D, 0x9C, 0xE4, 0xE9, 0xD9, 0x6C, 0x8A, 0x00, 0xD9, 0x1E, - 0x3A, 0x1E, 0x47, 0x83, 0x32, 0x71, 0xC4, 0x66, 0x65, 0xBC, 0xDB, 0xAD, 0x27, 0x79, 0x92, 0xA4, - 0x45, 0x1C, 0xA5, 0x69, 0x1E, 0x07, 0x04, 0x86, 0x71, 0x44, 0x14, 0x42, 0x02, 0x03, 0x85, 0xD6, - 0x1B, 0x08, 0x5C, 0x26, 0xF0, 0x74, 0xBE, 0xEA, 0x5B, 0xD0, 0x1C, 0x76, 0xBB, 0x43, 0x63, 0x3C, - 0x28, 0xF3, 0xC2, 0x07, 0xDF, 0x0F, 0xA3, 0xF7, 0xC0, 0x59, 0xA3, 0xB5, 0xD1, 0x72, 0x7C, 0x73, - 0xB1, 0x88, 0x63, 0x71, 0x6C, 0x46, 0x11, 0x45, 0xE7, 0xCB, 0x22, 0x2F, 0xA2, 0xEA, 0xD4, 0x34, - 0xA7, 0x2E, 0x8E, 0xC4, 0xDD, 0x87, 0xCD, 0xC7, 0x12, 0x0C, 0x23, 0x70, 0xB5, 0x98, 0xFC, 0xFE, - 0x87, 0xDB, 0xF3, 0x45, 0x5E, 0xA4, 0xA1, 0x48, 0xA9, 0xD2, 0xEA, 0xED, 0xFB, 0xC7, 0x2F, 0xDE, - 0xBC, 0xEA, 0x07, 0xFB, 0xE1, 0x61, 0x33, 0xCD, 0xA3, 0xAE, 0x97, 0xA7, 0xB6, 0xAF, 0x5A, 0x59, - 0x77, 0x83, 0xF5, 0xF0, 0xD4, 0x0C, 0x93, 0x32, 0x7B, 0xF7, 0xE3, 0x8F, 0xC7, 0xAA, 0xC9, 0x92, - 0x08, 0x23, 0xBF, 0xD9, 0xB7, 0x45, 0x11, 0x3F, 0xAE, 0xF7, 0xFD, 0xA8, 0x6C, 0xF0, 0x1F, 0xEE, - 0xD6, 0xC7, 0xBA, 0x9D, 0x4E, 0xA6, 0x52, 0x8E, 0x55, 0xDD, 0x61, 0x4C, 0x20, 0xC0, 0x75, 0xD3, - 0x8D, 0xC3, 0x70, 0xAC, 0xBA, 0xDF, 0xBE, 0xBD, 0x3F, 0xB6, 0xA3, 0x76, 0x00, 0x01, 0xA8, 0x8C, - 0x97, 0xA3, 0x1E, 0x95, 0x81, 0x18, 0x13, 0x4C, 0x3E, 0x36, 0x99, 0xE2, 0x28, 0xC2, 0x84, 0xF8, - 0x10, 0xBA, 0xAE, 0xC3, 0x84, 0xA6, 0x91, 0xB8, 0x79, 0x75, 0x9E, 0xA4, 0x3C, 0x8D, 0x85, 0xB1, - 0xC1, 0x5A, 0x57, 0x57, 0x7D, 0xDD, 0x0C, 0xDB, 0x5D, 0x3D, 0x2A, 0x03, 0x21, 0xD1, 0x06, 0xC4, - 0x51, 0xC4, 0x38, 0x9B, 0x94, 0x79, 0xC4, 0x45, 0x92, 0x88, 0x8F, 0x32, 0x50, 0x22, 0xA8, 0x56, - 0xC3, 0xA8, 0xC6, 0x32, 0xCD, 0xE6, 0x79, 0x66, 0x47, 0x07, 0x01, 0x7D, 0x78, 0xDA, 0xDF, 0xDE, - 0x6D, 0xDF, 0xBE, 0x7D, 0x7C, 0x5A, 0x57, 0x9B, 0x6D, 0xF3, 0xBC, 0x3E, 0xC8, 0x41, 0x13, 0x4C, - 0xE3, 0x34, 0xD2, 0x4E, 0x3F, 0x6D, 0xF7, 0x4F, 0x87, 0xE3, 0xC3, 0xF3, 0x4E, 0x2B, 0xCF, 0x45, - 0x3C, 0x2A, 0xA0, 0x34, 0xAC, 0x9B, 0x31, 0x80, 0xD0, 0x74, 0xB2, 0xC8, 0xA2, 0xE5, 0x7C, 0xBA, - 0x9A, 0xCD, 0x1E, 0x37, 0xFB, 0x34, 0x4B, 0x8E, 0x55, 0xDD, 0x76, 0xB2, 0xE9, 0x3B, 0xA9, 0x07, - 0x00, 0xBD, 0x1A, 0xAD, 0x36, 0x6E, 0xBD, 0x3D, 0x3E, 0xAF, 0xB7, 0x75, 0x5D, 0x6D, 0x77, 0xBB, - 0x3C, 0x86, 0xAF, 0x57, 0xE2, 0x7A, 0x9E, 0xCC, 0x8A, 0x28, 0x8B, 0xA0, 0x20, 0x36, 0x63, 0x7D, - 0x91, 0x38, 0x4A, 0x8C, 0x20, 0x88, 0x04, 0x5D, 0xA4, 0x29, 0xC2, 0x54, 0x10, 0x20, 0xE5, 0xD0, - 0xB4, 0x7D, 0x70, 0xD6, 0x2A, 0xAD, 0x95, 0xF6, 0x21, 0x20, 0x04, 0xEB, 0x41, 0x79, 0xEF, 0x39, - 0xA5, 0x18, 0x42, 0x4A, 0x08, 0xC5, 0x88, 0x52, 0x22, 0x28, 0xA5, 0x04, 0x07, 0x1F, 0xDC, 0x3F, - 0x36, 0xB4, 0x7C, 0x00, 0x30, 0x12, 0x82, 0x62, 0xFC, 0x31, 0xD3, 0xFB, 0xD1, 0x1B, 0x67, 0x94, - 0x7E, 0x44, 0x85, 0x29, 0x26, 0x11, 0x0E, 0xDA, 0xFA, 0x65, 0x6C, 0x63, 0xFB, 0xDC, 0xD5, 0x1B, - 0xE2, 0xE5, 0xA9, 0x3E, 0xAC, 0xB7, 0x3B, 0x37, 0x36, 0x45, 0x0A, 0x38, 0x26, 0x00, 0x50, 0x88, - 0x91, 0x73, 0x6E, 0xC9, 0x5B, 0xB9, 0x7B, 0x7F, 0xDC, 0x3F, 0x3B, 0x53, 0xC9, 0xFE, 0x40, 0x42, - 0x1F, 0x0B, 0x06, 0x49, 0xDC, 0xF5, 0xC3, 0xC7, 0xD0, 0x17, 0x0C, 0x9A, 0xA0, 0x10, 0x02, 0x34, - 0x46, 0x07, 0x48, 0x30, 0x21, 0x3E, 0x00, 0x8C, 0xA0, 0x36, 0xCE, 0x18, 0xF3, 0x91, 0xEC, 0x1F, - 0x95, 0x82, 0xFF, 0xB8, 0x85, 0x62, 0xAD, 0x36, 0x10, 0x04, 0x84, 0x21, 0x67, 0x1C, 0x13, 0x98, - 0xA6, 0x09, 0x41, 0x3E, 0x78, 0x03, 0x20, 0x87, 0x08, 0x7F, 0xE4, 0x53, 0x84, 0xE0, 0xF0, 0x7F, - 0xF8, 0xEF, 0xFE, 0x5B, 0xE5, 0x8D, 0x52, 0xC3, 0x24, 0x8B, 0x47, 0x25, 0x47, 0x63, 0x01, 0xC0, - 0xBD, 0xF6, 0xEB, 0xFD, 0x71, 0x31, 0x9B, 0x86, 0xE0, 0x09, 0xC6, 0x99, 0x38, 0x63, 0xAE, 0xE5, - 0x04, 0xDA, 0xE0, 0x21, 0x05, 0x52, 0x39, 0x6D, 0x6D, 0xC4, 0x99, 0x1E, 0xC7, 0xFB, 0xA7, 0xDD, - 0x6C, 0x9A, 0x47, 0x82, 0x61, 0xE8, 0x29, 0xA3, 0x20, 0x20, 0x35, 0x1A, 0x44, 0x10, 0x44, 0x50, - 0xCA, 0x0E, 0x42, 0x22, 0x84, 0x30, 0xD6, 0x57, 0x75, 0x0B, 0x20, 0x40, 0xD0, 0x77, 0xFD, 0x98, - 0x25, 0x62, 0x3E, 0x9B, 0xCC, 0xF2, 0x92, 0x40, 0xE2, 0xAC, 0x33, 0xC6, 0x37, 0xED, 0x50, 0x77, - 0x7D, 0x08, 0xFE, 0x6C, 0x35, 0x59, 0x2E, 0x52, 0x1F, 0x3C, 0x20, 0x1F, 0x61, 0x44, 0x68, 0x6D, - 0xF0, 0x21, 0xEC, 0x76, 0xDD, 0xFE, 0xD8, 0x45, 0x31, 0x8F, 0x22, 0xDF, 0xB5, 0x1B, 0x84, 0xD8, - 0xCB, 0x8B, 0xCB, 0x24, 0x4E, 0x76, 0xFB, 0xE3, 0x20, 0xA5, 0x31, 0x76, 0x3A, 0x9F, 0xF4, 0xBD, - 0x9C, 0x97, 0xF9, 0x72, 0x31, 0x35, 0xDA, 0x20, 0x4C, 0xBC, 0x07, 0x83, 0x1C, 0xD5, 0xA8, 0x37, - 0xBB, 0x63, 0xD3, 0xB4, 0xBB, 0xBA, 0xE1, 0x22, 0x9D, 0xCF, 0x26, 0x7D, 0xDF, 0x63, 0x84, 0x05, - 0xE7, 0x00, 0x06, 0x6B, 0x83, 0xB5, 0xCA, 0xD8, 0x71, 0x34, 0xA3, 0x1C, 0x4C, 0x2B, 0xFD, 0xF3, - 0xE6, 0xD4, 0xB6, 0xCD, 0x24, 0x4F, 0x30, 0x82, 0x93, 0x32, 0xD9, 0x9F, 0xBA, 0x38, 0x12, 0x4A, - 0x6B, 0x6D, 0xA0, 0x52, 0x2A, 0x89, 0x28, 0x8F, 0x84, 0x73, 0xBE, 0xEB, 0xDB, 0x24, 0x89, 0xB2, - 0x38, 0x36, 0xD6, 0x31, 0x4E, 0x5E, 0x5D, 0xCD, 0xBE, 0xBA, 0xB9, 0x2C, 0xB3, 0x54, 0x8E, 0x36, - 0xCB, 0xB2, 0xBF, 0xFD, 0xD5, 0xF7, 0xFF, 0xEF, 0x2F, 0xFF, 0x58, 0xE6, 0x99, 0xEC, 0x3A, 0xCE, - 0x71, 0x59, 0x64, 0x67, 0xCB, 0xD2, 0x07, 0x03, 0x3C, 0x22, 0x94, 0x6C, 0xF6, 0xD5, 0xFB, 0xDB, - 0xCD, 0xAC, 0x2C, 0x8B, 0x32, 0xFE, 0xE6, 0xEB, 0xEB, 0xFD, 0xFE, 0xF4, 0xC9, 0xEB, 0x15, 0x46, - 0x64, 0x7B, 0xE8, 0x5C, 0xF0, 0x83, 0x1C, 0x9D, 0xF1, 0x08, 0xC1, 0xE3, 0xB1, 0x93, 0xFD, 0x38, - 0x9D, 0xA4, 0x2C, 0xE2, 0x4D, 0xDB, 0x51, 0xCC, 0xCE, 0x57, 0xB3, 0x58, 0x90, 0xAE, 0x6B, 0x04, - 0xA3, 0xAF, 0x5F, 0x5E, 0xE7, 0x91, 0x18, 0x07, 0xA9, 0x94, 0x69, 0x3B, 0x87, 0x18, 0x6F, 0x47, - 0x23, 0x47, 0x17, 0xC7, 0x8C, 0x11, 0xD3, 0xF7, 0x43, 0x99, 0xAF, 0xAA, 0xBA, 0x7B, 0x77, 0x7B, - 0xCF, 0x39, 0x2C, 0x4A, 0x36, 0x9B, 0xA7, 0x08, 0x84, 0xFB, 0xDB, 0x0D, 0x0E, 0xE0, 0x9B, 0x2F, - 0x5F, 0x72, 0x46, 0xA1, 0x83, 0x12, 0x2D, 0x7E, 0xFB, 0xF7, 0xFF, 0x00, 0xBD, 0xD2, 0x7A, 0xA8, - 0x3B, 0xD9, 0x49, 0x95, 0xC4, 0xBC, 0x57, 0x03, 0x22, 0x98, 0x73, 0xE6, 0x82, 0xFF, 0xF4, 0xD5, - 0xD5, 0x3C, 0x9B, 0xFC, 0x70, 0xBB, 0xA6, 0x11, 0x9E, 0xCE, 0xB2, 0x69, 0xCE, 0x13, 0x41, 0xAA, - 0xC3, 0xDE, 0xE8, 0x90, 0xC4, 0xF9, 0x20, 0xC7, 0x38, 0xE1, 0xDE, 0xD9, 0x3C, 0x8F, 0x9D, 0x0E, - 0x52, 0x5B, 0xA5, 0xDA, 0x61, 0xEC, 0x23, 0x11, 0xBB, 0x00, 0xD3, 0x74, 0xB9, 0xDD, 0x56, 0xFD, - 0xA0, 0x39, 0x23, 0x89, 0x20, 0x84, 0xF1, 0xA7, 0x43, 0xD5, 0xCB, 0xE1, 0xF5, 0xD5, 0x4A, 0xD9, - 0xF0, 0xB8, 0x3E, 0x4E, 0xF2, 0x38, 0x4D, 0xE8, 0x87, 0x0F, 0x4F, 0x7D, 0x2B, 0xCF, 0x96, 0xD9, - 0xF9, 0xE5, 0xA2, 0xCC, 0xE3, 0xCD, 0xB6, 0x56, 0x4A, 0xBF, 0xBD, 0x7B, 0xFE, 0xE3, 0xED, 0x61, - 0x90, 0xB2, 0xCC, 0xF3, 0x4F, 0x5E, 0x5E, 0xFC, 0xE1, 0xED, 0x8F, 0x82, 0x8B, 0x57, 0xD7, 0x97, - 0x6D, 0xDB, 0xBC, 0xBA, 0xBE, 0xE8, 0x07, 0x59, 0xF5, 0x5D, 0x9A, 0x24, 0x04, 0xC1, 0x51, 0x0E, - 0x69, 0x96, 0x9F, 0xAA, 0x7A, 0x18, 0xC7, 0x28, 0x89, 0xBC, 0x0F, 0x82, 0x73, 0x08, 0xA0, 0x35, - 0x56, 0x44, 0x62, 0x18, 0x47, 0x4A, 0x70, 0x99, 0x67, 0xC0, 0xFB, 0x2C, 0x15, 0x01, 0xFA, 0x3F, - 0xBC, 0xBD, 0x3F, 0x5B, 0x4D, 0xE7, 0x93, 0xAC, 0x28, 0xF3, 0xB6, 0x92, 0xC1, 0x78, 0x67, 0xB5, - 0xB6, 0x61, 0x32, 0x99, 0xDD, 0x3E, 0x6E, 0x11, 0x41, 0x8C, 0xA1, 0x58, 0x50, 0xA5, 0xF4, 0xEE, - 0x70, 0xFA, 0xEC, 0xF3, 0xAB, 0x2C, 0x13, 0xCE, 0x58, 0x0A, 0xB1, 0x56, 0x76, 0xB3, 0x3E, 0xF5, - 0xA3, 0x25, 0x94, 0xE9, 0x41, 0x21, 0x14, 0xEE, 0x9E, 0x9E, 0x3D, 0x46, 0x84, 0xA0, 0x9F, 0xFD, - 0xEC, 0x53, 0xCE, 0xB9, 0xA0, 0xCC, 0x58, 0xD7, 0xF7, 0x63, 0x91, 0x27, 0x84, 0x11, 0x6B, 0x1D, - 0x08, 0x10, 0x23, 0xE4, 0x03, 0x50, 0x83, 0x3A, 0x9D, 0xDA, 0xAA, 0x92, 0x9C, 0xB1, 0xCF, 0x3E, - 0x39, 0x4F, 0xD3, 0x28, 0x78, 0x2F, 0xC7, 0x51, 0x19, 0x1D, 0x02, 0xDA, 0x1E, 0xAA, 0xA6, 0xED, - 0x8A, 0x49, 0xEE, 0x3C, 0x90, 0xF5, 0xF0, 0xFA, 0xFA, 0xBC, 0x69, 0xDA, 0xAE, 0x6B, 0xE3, 0x58, - 0xB4, 0xED, 0x48, 0x48, 0x38, 0x5B, 0x64, 0x2F, 0xAF, 0xAE, 0x3A, 0x39, 0x4A, 0xE5, 0xB4, 0x0D, - 0xBF, 0xFE, 0xDD, 0xF7, 0xC3, 0x68, 0xFA, 0xB1, 0xBF, 0xBA, 0xBC, 0x7C, 0xF5, 0xE2, 0x6B, 0xC1, - 0xE2, 0x3C, 0x21, 0x52, 0x8E, 0x00, 0xD1, 0x38, 0xCB, 0x29, 0x41, 0xBD, 0xD4, 0x0F, 0xBB, 0xAE, - 0x6D, 0xBB, 0x56, 0x0E, 0x0A, 0x30, 0x8C, 0x49, 0x44, 0x7C, 0x16, 0xC7, 0xDA, 0x58, 0x8A, 0xA0, - 0x10, 0x54, 0x1B, 0x0B, 0x11, 0x62, 0x8C, 0x1D, 0x1A, 0xB9, 0xAD, 0x3A, 0x6D, 0x5D, 0x1E, 0x8B, - 0x00, 0xE0, 0xC7, 0xA9, 0x45, 0xEF, 0x1C, 0xC4, 0x84, 0x52, 0xE2, 0x3D, 0x30, 0x6A, 0x5C, 0x4C, - 0x32, 0x4E, 0xD0, 0x38, 0x0E, 0x08, 0xB9, 0x05, 0xEF, 0x7F, 0xF3, 0xBB, 0x5F, 0x2B, 0xE3, 0xF3, - 0x2C, 0x01, 0x08, 0x0C, 0xDA, 0x12, 0x4C, 0x21, 0x08, 0xD6, 0xD9, 0xE5, 0xF9, 0x37, 0x1E, 0xA5, - 0x2C, 0x48, 0x33, 0x1C, 0x1F, 0x1E, 0xEE, 0x94, 0x73, 0x8B, 0xB3, 0xF2, 0x70, 0xAC, 0x19, 0x25, - 0xD3, 0x32, 0x8B, 0xF2, 0xAB, 0x6C, 0xF2, 0x7A, 0xD4, 0x1A, 0x43, 0xDF, 0x1C, 0x1F, 0x09, 0xCF, - 0x18, 0xF6, 0x45, 0x12, 0x46, 0x1B, 0x9C, 0x77, 0x30, 0x00, 0x4A, 0x79, 0x3D, 0xD0, 0x46, 0x9A, - 0x58, 0xB0, 0x51, 0x1B, 0xE7, 0x3D, 0x25, 0x14, 0xF8, 0x40, 0x31, 0x54, 0xDA, 0xE6, 0x69, 0x64, - 0x8C, 0x8E, 0x38, 0x81, 0x98, 0x6A, 0x07, 0xED, 0x50, 0x19, 0x3B, 0x7A, 0x94, 0x32, 0x4A, 0x80, - 0x0F, 0x52, 0x9B, 0x28, 0x8A, 0xE0, 0xBF, 0xFD, 0xB7, 0xFF, 0xA6, 0xED, 0x07, 0x04, 0xBD, 0x35, - 0x23, 0x61, 0xF4, 0xC3, 0xFD, 0x73, 0x08, 0x80, 0x31, 0xDE, 0x77, 0x5D, 0x14, 0xC7, 0x09, 0x67, - 0x11, 0x67, 0x71, 0x7A, 0x2E, 0x90, 0x62, 0x0C, 0x41, 0x10, 0x10, 0x25, 0x9D, 0xD4, 0x1E, 0xF8, - 0x2C, 0x89, 0xCE, 0xE7, 0x65, 0xC4, 0x89, 0x37, 0x61, 0x1C, 0x0D, 0xA5, 0x08, 0x04, 0xF7, 0xE1, - 0x6E, 0xC7, 0x38, 0x17, 0x82, 0x64, 0x69, 0x2C, 0x07, 0x67, 0x9D, 0xC5, 0x08, 0x6A, 0xE7, 0x06, - 0xA9, 0x8C, 0xB7, 0xCE, 0x99, 0xA2, 0xC8, 0x9A, 0xAE, 0x4D, 0x85, 0xD8, 0xEC, 0x8E, 0x45, 0x9C, - 0x2E, 0xCA, 0x12, 0x11, 0x1A, 0x09, 0xF1, 0xC3, 0xFB, 0x87, 0xB2, 0x48, 0x16, 0xF3, 0x6C, 0x90, - 0xA3, 0x76, 0x76, 0x18, 0x75, 0x2F, 0x47, 0x00, 0x91, 0x75, 0x7E, 0xB5, 0x28, 0x39, 0xA7, 0x5A, - 0xF9, 0x0F, 0xF7, 0x7B, 0xA5, 0x0D, 0x02, 0xA3, 0x1A, 0x87, 0x2C, 0xCF, 0x39, 0x67, 0x59, 0x12, - 0x89, 0x88, 0x00, 0x08, 0xE7, 0xAB, 0xB9, 0x51, 0x9A, 0x53, 0x0C, 0x03, 0x30, 0xCE, 0x0F, 0x83, - 0x72, 0xC6, 0x23, 0x8C, 0x38, 0x44, 0x93, 0x22, 0x35, 0x56, 0x0F, 0x63, 0xD8, 0x9F, 0x7A, 0x08, - 0x11, 0x8F, 0xC8, 0x74, 0x99, 0x69, 0xA3, 0xA8, 0xA0, 0x9C, 0xF1, 0xF5, 0xE3, 0x6E, 0x50, 0xF2, - 0xF9, 0x79, 0x57, 0xD7, 0xBD, 0xB6, 0x76, 0x77, 0x18, 0x4E, 0xA7, 0x7E, 0x39, 0x2F, 0xCE, 0x26, - 0x31, 0xC2, 0xFE, 0x0F, 0x3F, 0x3E, 0x43, 0x84, 0x94, 0x32, 0x94, 0x90, 0x34, 0x89, 0xB6, 0xFB, - 0x26, 0xCB, 0x13, 0x35, 0x2A, 0x84, 0x01, 0x65, 0x84, 0x22, 0xCA, 0x44, 0xF4, 0xF3, 0x9F, 0xBC, - 0xFE, 0xF6, 0xD3, 0x2B, 0x6D, 0x5D, 0xD3, 0x0F, 0xA3, 0xF1, 0x18, 0x63, 0x04, 0x11, 0xA6, 0x28, - 0x4F, 0x44, 0x77, 0x38, 0x06, 0x67, 0xA3, 0x38, 0x3E, 0x36, 0x15, 0xC2, 0x10, 0x04, 0xC8, 0x04, - 0x77, 0xDE, 0xEF, 0xD6, 0xD5, 0x72, 0x39, 0x3D, 0x3F, 0x9F, 0x75, 0xAD, 0xD4, 0xCE, 0x4A, 0xA9, - 0xBB, 0x6E, 0x0C, 0x00, 0x88, 0x48, 0x20, 0x08, 0x97, 0x8B, 0x3C, 0x4B, 0xC5, 0xA8, 0x4C, 0x55, - 0xC9, 0xDD, 0xB1, 0x76, 0x2E, 0x18, 0xE7, 0x0F, 0x4D, 0xB7, 0x9C, 0xCD, 0x31, 0x70, 0x0C, 0x81, - 0x44, 0xF0, 0x17, 0x97, 0x67, 0x79, 0xC4, 0x87, 0x41, 0x05, 0x1F, 0x08, 0x66, 0x84, 0xB1, 0x5E, - 0x8E, 0xB5, 0x54, 0x00, 0x82, 0xB3, 0x55, 0x01, 0x10, 0x7B, 0xDE, 0x54, 0xEB, 0xCD, 0xF3, 0xDD, - 0xDD, 0xE3, 0xE7, 0x6F, 0xCE, 0x31, 0x42, 0xDB, 0xFD, 0xE9, 0x69, 0xB3, 0x07, 0x16, 0xBE, 0x7E, - 0x71, 0x7E, 0xBE, 0x9A, 0x55, 0x95, 0x44, 0x54, 0xC0, 0xE2, 0xEA, 0x6F, 0xFE, 0xFA, 0xFF, 0x18, - 0xC6, 0x61, 0x18, 0x95, 0x1C, 0x86, 0x7E, 0x18, 0x63, 0xCE, 0x13, 0xC1, 0x85, 0x60, 0x75, 0xDB, - 0xBD, 0x7A, 0xB9, 0xFA, 0xC9, 0x97, 0x5F, 0x10, 0x2C, 0x3E, 0x3C, 0x6C, 0x10, 0x06, 0x10, 0xF8, - 0xBC, 0x4C, 0xE6, 0x93, 0x48, 0x10, 0x40, 0x39, 0x62, 0x3C, 0xEE, 0x8E, 0xBD, 0xB1, 0x0A, 0x01, - 0x47, 0x18, 0x6D, 0x6B, 0x19, 0x67, 0x02, 0x78, 0x9F, 0xA4, 0x59, 0x1A, 0x73, 0x00, 0xE9, 0xED, - 0xDD, 0xEE, 0xFE, 0xEE, 0x99, 0x47, 0x11, 0xA3, 0x78, 0x31, 0x2B, 0xA7, 0xCB, 0xE5, 0xFF, 0xF3, - 0x9F, 0x7E, 0xF3, 0x93, 0xCF, 0x6F, 0xF4, 0xA8, 0x4E, 0xBD, 0xC6, 0x18, 0x9D, 0x4E, 0xD5, 0xA4, - 0xCC, 0x38, 0x85, 0x20, 0xD8, 0xBC, 0xC8, 0x7A, 0x39, 0xA6, 0x89, 0x40, 0x00, 0x1C, 0xF7, 0xB5, - 0x23, 0xEC, 0x3F, 0xFC, 0xDD, 0xEF, 0x8D, 0x75, 0xB2, 0x1F, 0x97, 0xB3, 0x62, 0xB3, 0x3F, 0x71, - 0x4A, 0x62, 0x21, 0xBC, 0xB3, 0xDF, 0x7C, 0xF1, 0x29, 0xC2, 0x68, 0xBD, 0x3F, 0xCA, 0x61, 0xC8, - 0xB3, 0x58, 0x76, 0x12, 0x20, 0x32, 0x8C, 0x43, 0x1C, 0x89, 0x71, 0x1C, 0x99, 0x10, 0x9C, 0x52, - 0x3D, 0xEA, 0x61, 0x1C, 0x93, 0x24, 0x06, 0x10, 0x02, 0x10, 0x9C, 0xB5, 0x91, 0xE0, 0x45, 0x96, - 0x44, 0x82, 0x57, 0x4D, 0xFF, 0xC7, 0xF7, 0xF7, 0xE7, 0x67, 0xB3, 0xC5, 0x24, 0xCF, 0x04, 0xDB, - 0x6D, 0x4E, 0x49, 0x12, 0x5D, 0x5E, 0xAC, 0x10, 0x66, 0xC6, 0x5A, 0x2E, 0x68, 0x08, 0xD0, 0x78, - 0x87, 0x60, 0xB8, 0xBB, 0x7F, 0x2E, 0xCB, 0x2C, 0x89, 0x88, 0xD2, 0xCE, 0x59, 0x7B, 0xB1, 0x9A, - 0xB4, 0x9D, 0xEC, 0xA4, 0x8E, 0x05, 0x1B, 0x46, 0x73, 0xB1, 0x98, 0x3C, 0x3C, 0x6F, 0x44, 0xC4, - 0x10, 0x41, 0xD3, 0xD5, 0x44, 0x8F, 0xE6, 0x69, 0x7D, 0x34, 0xD6, 0xF7, 0x83, 0x72, 0xD6, 0x15, - 0x45, 0xE6, 0x21, 0xC8, 0xD3, 0x88, 0x53, 0x0A, 0x21, 0x98, 0x4D, 0x53, 0xAD, 0xB5, 0xE9, 0xF4, - 0xD0, 0x29, 0xA9, 0xBC, 0xB6, 0xEA, 0x69, 0xBD, 0xA3, 0x14, 0x5F, 0x5F, 0x2E, 0xC6, 0xD1, 0x6C, - 0x0E, 0x95, 0x32, 0x16, 0x00, 0xAC, 0x4D, 0xC8, 0x12, 0x11, 0x45, 0xAC, 0xA9, 0xFB, 0xF9, 0x24, - 0x27, 0x18, 0x25, 0x11, 0xF7, 0xCE, 0x4C, 0xCA, 0x14, 0x43, 0xD0, 0x0D, 0x46, 0xEB, 0xA1, 0x69, - 0x1A, 0xE9, 0xE0, 0x74, 0xB2, 0x18, 0x4C, 0x88, 0x23, 0xF2, 0xE2, 0x6C, 0x99, 0xC7, 0xC9, 0xB4, - 0xCC, 0x31, 0x62, 0x59, 0x9E, 0x01, 0x08, 0x46, 0xED, 0xAD, 0xB1, 0x45, 0x91, 0xEF, 0x8E, 0xF5, - 0xED, 0x87, 0x5B, 0x63, 0x41, 0xDD, 0x75, 0x08, 0xE0, 0x97, 0xD7, 0x17, 0x45, 0xCA, 0x41, 0xF0, - 0x79, 0x9E, 0xDC, 0x3F, 0x1F, 0x31, 0x65, 0x87, 0xD6, 0x3E, 0x6E, 0x0E, 0xBB, 0x46, 0x05, 0xC4, - 0xCE, 0xA6, 0xF9, 0xB1, 0xE9, 0x3E, 0xE6, 0x54, 0x4F, 0xED, 0x18, 0x30, 0x59, 0x4D, 0x53, 0x67, - 0x6D, 0x44, 0xC2, 0x3C, 0x81, 0x8C, 0xD1, 0x34, 0x42, 0x11, 0xB5, 0x3F, 0xFC, 0xF8, 0xE1, 0xFD, - 0xC3, 0x6D, 0x91, 0x72, 0xE7, 0x81, 0x09, 0xF8, 0xF9, 0xD0, 0xF8, 0x00, 0x9F, 0x37, 0x07, 0xAB, - 0xC7, 0x2F, 0x3E, 0xFB, 0xA2, 0x2C, 0xA6, 0xCF, 0xEB, 0x8D, 0xD6, 0x6E, 0x18, 0x7A, 0x84, 0x01, - 0xC6, 0x68, 0x34, 0x3A, 0x8A, 0x04, 0x84, 0x28, 0xCB, 0xE2, 0xE5, 0xE2, 0x02, 0x89, 0x95, 0x53, - 0x0D, 0x27, 0x8C, 0x53, 0x63, 0xD5, 0x7A, 0xD4, 0xAA, 0x6E, 0x65, 0xDD, 0x0E, 0x08, 0x11, 0x00, - 0xA1, 0x88, 0x52, 0x11, 0x4D, 0x07, 0x30, 0x95, 0xCA, 0x25, 0x82, 0xC2, 0x10, 0x38, 0x76, 0x49, - 0x24, 0x66, 0x93, 0xE4, 0xE5, 0x12, 0x29, 0x47, 0xA5, 0x94, 0x7F, 0xF8, 0xE1, 0x51, 0x6A, 0x5A, - 0xC4, 0x16, 0xD2, 0x44, 0x24, 0xF3, 0x5E, 0x0E, 0x75, 0x3B, 0x44, 0x51, 0x94, 0x46, 0x18, 0xFE, - 0xFC, 0xCF, 0xBF, 0x0B, 0x08, 0x75, 0x4D, 0x13, 0x51, 0x2A, 0x65, 0x27, 0xE5, 0xB8, 0x9C, 0xCF, - 0x23, 0xC1, 0x11, 0xC6, 0x56, 0x99, 0xB3, 0xC5, 0x12, 0x63, 0x38, 0x5A, 0xBC, 0x9C, 0x26, 0x71, - 0x44, 0x95, 0xD3, 0x7F, 0xFC, 0x70, 0x8F, 0x09, 0xD5, 0x5A, 0x7E, 0x72, 0x7D, 0x99, 0xF2, 0x58, - 0x49, 0xA3, 0xAD, 0x3F, 0xD6, 0xBD, 0x10, 0xFC, 0x6C, 0x9E, 0xA7, 0x82, 0x6A, 0x67, 0x05, 0xA7, - 0xC6, 0xB8, 0xAA, 0x91, 0x75, 0xD3, 0xED, 0x4F, 0xAD, 0xB5, 0xDE, 0x68, 0x7B, 0xAC, 0x4F, 0x3C, - 0x22, 0xDA, 0x29, 0x84, 0xE1, 0x2C, 0x4F, 0xA6, 0x93, 0xC9, 0x17, 0xAF, 0x5E, 0x7B, 0xFF, 0x51, - 0xE2, 0xB5, 0x00, 0x05, 0x11, 0x63, 0x6B, 0x7D, 0x7D, 0xEA, 0x8A, 0x22, 0xB2, 0xC6, 0x40, 0x80, - 0x9C, 0x0F, 0x75, 0x3D, 0x54, 0xD5, 0xE9, 0xEA, 0x72, 0x9E, 0xE5, 0x93, 0x87, 0x75, 0xF5, 0xBC, - 0x3E, 0x8E, 0xCA, 0x6E, 0x77, 0xFB, 0xB3, 0x59, 0xF1, 0xF5, 0xD7, 0xAF, 0xE3, 0x9C, 0x4B, 0xA5, - 0xFB, 0xD1, 0x38, 0xEB, 0x77, 0x9B, 0x0A, 0x41, 0xA0, 0xB4, 0xF5, 0xCE, 0xD6, 0x4D, 0xAB, 0x46, - 0x53, 0x94, 0x79, 0x19, 0x47, 0xCB, 0x79, 0x91, 0xA5, 0x11, 0x40, 0x60, 0x5E, 0x66, 0xD3, 0x49, - 0xDA, 0xF6, 0x32, 0x4E, 0xB9, 0xD4, 0xBA, 0xEE, 0x47, 0x17, 0x42, 0x00, 0xC8, 0x18, 0x57, 0xD5, - 0x75, 0xCA, 0x10, 0xF4, 0xAE, 0xEB, 0x47, 0x88, 0x70, 0x59, 0x64, 0x59, 0xC4, 0x21, 0x44, 0x4D, - 0x3B, 0xF4, 0xDD, 0x58, 0xD7, 0x1D, 0x61, 0xE8, 0xFD, 0xFB, 0x35, 0xC1, 0x34, 0xCF, 0xA3, 0x5F, - 0xFF, 0xFE, 0xC7, 0x6E, 0x50, 0x6D, 0x37, 0x2C, 0x17, 0x53, 0x41, 0xE9, 0xBF, 0xF8, 0x8B, 0x3F, - 0x01, 0x1E, 0xF4, 0x5A, 0x59, 0x08, 0x9A, 0xA6, 0x1F, 0x07, 0xB9, 0x9C, 0x15, 0x79, 0x1E, 0x41, - 0xEB, 0x4F, 0xFB, 0x06, 0x11, 0xB4, 0x3B, 0xD6, 0x88, 0xC0, 0x8F, 0xAE, 0x06, 0x40, 0x70, 0x1C, - 0x4C, 0x91, 0x46, 0x8C, 0x33, 0xA3, 0x20, 0x21, 0x42, 0x8E, 0x63, 0x24, 0x20, 0x82, 0x20, 0x00, - 0xD8, 0x4B, 0x13, 0x00, 0x8A, 0x04, 0xB3, 0xD6, 0x2D, 0x96, 0xF9, 0x64, 0x92, 0xF4, 0xBD, 0xDC, - 0x3C, 0xEF, 0x43, 0x40, 0x1E, 0xC0, 0xAB, 0xC5, 0xA2, 0x48, 0x53, 0x6B, 0xEC, 0xD9, 0xBC, 0x48, - 0x23, 0xB1, 0x3E, 0x54, 0xAD, 0x54, 0x21, 0xF8, 0x4E, 0x0E, 0x49, 0x92, 0x5A, 0xEF, 0x86, 0xC1, - 0x18, 0xEF, 0xAE, 0x2F, 0x66, 0x45, 0xC6, 0x29, 0x05, 0xCF, 0xEB, 0xED, 0xDB, 0xB7, 0x77, 0x10, - 0x82, 0xB6, 0x55, 0xCA, 0x04, 0x00, 0xDD, 0x77, 0x5F, 0x7E, 0x29, 0x47, 0x93, 0xE7, 0xB9, 0xD1, - 0x83, 0x34, 0xCE, 0x8B, 0xE9, 0xFF, 0xFE, 0xBF, 0xFD, 0xAF, 0x55, 0x2B, 0xBF, 0xFC, 0xE4, 0x05, - 0x41, 0x3E, 0x8D, 0x23, 0x63, 0xDD, 0x38, 0x8E, 0x1E, 0x00, 0xCA, 0xC9, 0x67, 0x37, 0xAF, 0x8C, - 0x01, 0x94, 0x26, 0x8D, 0x6C, 0x29, 0xA7, 0x5A, 0x83, 0x32, 0xA7, 0x67, 0x8B, 0xD4, 0x6A, 0xED, - 0xAD, 0x09, 0xD8, 0x1F, 0xAB, 0x8A, 0x00, 0x7F, 0xB6, 0x98, 0xFE, 0xF0, 0xE1, 0xF6, 0xEA, 0xEC, - 0x62, 0x94, 0x6A, 0x75, 0x3E, 0xDF, 0x1D, 0x76, 0xF3, 0xE5, 0x59, 0x92, 0x65, 0x77, 0x3F, 0x3E, - 0x8E, 0xBD, 0x3D, 0x54, 0x83, 0x20, 0xFE, 0xE5, 0xE5, 0xE5, 0xDB, 0xA7, 0x6D, 0x37, 0xA8, 0x7F, - 0xF7, 0xDF, 0xFC, 0xCB, 0x7F, 0x78, 0xFB, 0x50, 0x4B, 0xFD, 0xB4, 0x5E, 0x73, 0x4E, 0x31, 0x46, - 0x22, 0xA2, 0x51, 0x44, 0x8C, 0xF6, 0x3F, 0xBE, 0xDF, 0xBC, 0x38, 0x9F, 0xA5, 0x82, 0x22, 0x42, - 0xF7, 0x8D, 0xB4, 0xDE, 0x88, 0x48, 0x74, 0xED, 0x30, 0xC9, 0x62, 0x42, 0xC9, 0xEF, 0xFE, 0xF0, - 0x63, 0xDD, 0x4A, 0x35, 0xA8, 0xD5, 0x7C, 0x3A, 0x6A, 0x9D, 0x97, 0x19, 0x40, 0xC8, 0x1A, 0x35, - 0xB6, 0xF2, 0xD4, 0x74, 0x88, 0xE0, 0x8F, 0x5E, 0xD7, 0xD9, 0xE5, 0x2A, 0x68, 0xCB, 0x29, 0x0F, - 0x20, 0x08, 0x46, 0xE5, 0x30, 0x0E, 0x6A, 0x0C, 0xC1, 0x73, 0xC6, 0x28, 0xC6, 0x93, 0x3C, 0x4B, - 0xD3, 0xE4, 0x97, 0xBF, 0x7B, 0xDB, 0x0F, 0xC3, 0x6A, 0x96, 0xBF, 0xB9, 0xBA, 0x2A, 0xF3, 0x82, - 0x09, 0x5A, 0xB7, 0xD2, 0x03, 0x50, 0xB7, 0x52, 0x1B, 0x97, 0xA5, 0x09, 0x41, 0x60, 0x92, 0x27, - 0x93, 0x3C, 0xF1, 0x2E, 0x68, 0x2D, 0xBB, 0x5E, 0x11, 0x0C, 0xD3, 0x94, 0x6B, 0xE7, 0x42, 0x08, - 0xC6, 0x2A, 0xC6, 0x85, 0x1A, 0xEC, 0xD9, 0xA2, 0x70, 0xC1, 0x41, 0x8A, 0xBA, 0x76, 0x30, 0xC6, - 0x1A, 0x00, 0x1E, 0x9E, 0x77, 0xDA, 0x85, 0xBE, 0x57, 0xCF, 0x0F, 0xDB, 0x72, 0x9A, 0x62, 0x8C, - 0x27, 0x65, 0xDE, 0x37, 0xFD, 0x7C, 0x5E, 0x9E, 0xAF, 0x26, 0xC1, 0x5A, 0x02, 0xE0, 0xD5, 0xF9, - 0xEA, 0xFD, 0xE3, 0xA6, 0xEB, 0xCD, 0x38, 0x0C, 0x94, 0x40, 0x42, 0x48, 0x39, 0xCD, 0x95, 0x55, - 0xE3, 0x68, 0xB4, 0xF6, 0x6D, 0x37, 0xEC, 0x76, 0x95, 0xD2, 0xA6, 0x97, 0xEA, 0x93, 0x97, 0x57, - 0xCE, 0x99, 0xAB, 0xB3, 0xF2, 0xE5, 0xF9, 0x2C, 0x8E, 0xE2, 0x63, 0xAD, 0x8C, 0x1E, 0x00, 0xC2, - 0x71, 0x1C, 0xE5, 0xF9, 0xE4, 0x69, 0xB7, 0xF5, 0xCE, 0x7A, 0x67, 0xC7, 0x71, 0xE4, 0x9C, 0x97, - 0x65, 0xAE, 0x75, 0xA8, 0xAA, 0xFE, 0x6E, 0x53, 0x03, 0x80, 0x6E, 0xCE, 0x8B, 0xCD, 0xF1, 0x04, - 0x00, 0xB8, 0x5F, 0x1F, 0x3E, 0xDC, 0xDF, 0x7E, 0xFB, 0xC5, 0xAB, 0xFF, 0xF2, 0xBB, 0x2F, 0x18, - 0x65, 0xCA, 0xFB, 0xE5, 0x7C, 0x7E, 0xAC, 0xE5, 0xBF, 0xFF, 0xD5, 0xAF, 0xD3, 0x28, 0xCA, 0xCA, - 0x73, 0x07, 0x85, 0x96, 0x4D, 0x96, 0xE5, 0xB5, 0xB4, 0x5A, 0xF6, 0x7E, 0xD8, 0x13, 0x3E, 0x29, - 0x17, 0xD7, 0x2C, 0xF4, 0x18, 0x0E, 0x84, 0x38, 0x63, 0xB4, 0xE0, 0x68, 0x51, 0xE4, 0xC7, 0xBA, - 0x73, 0xC1, 0x6F, 0x0F, 0xDB, 0xBE, 0xEB, 0x76, 0xA7, 0xAE, 0x53, 0x5E, 0x3B, 0xF8, 0x31, 0x74, - 0xCD, 0x29, 0x9D, 0x4E, 0xCB, 0x32, 0xCF, 0xEE, 0xEF, 0x77, 0xFD, 0x30, 0xA4, 0x49, 0x32, 0xC9, - 0xF3, 0xE7, 0xF5, 0xC6, 0x03, 0x5F, 0x4C, 0x8A, 0xC3, 0xA1, 0xC9, 0x52, 0x8A, 0x80, 0xFE, 0x67, - 0xFF, 0xE4, 0xAF, 0xBC, 0xB1, 0x69, 0x12, 0x3F, 0x3D, 0xBD, 0xFF, 0xF0, 0xF0, 0xB0, 0x3B, 0xF6, - 0x10, 0xA1, 0x00, 0x61, 0xDF, 0x8F, 0x59, 0x9E, 0x83, 0xE0, 0x03, 0x08, 0x6F, 0x3E, 0xFD, 0xFA, - 0xEA, 0xE2, 0xE6, 0xD0, 0x18, 0x02, 0xF5, 0x79, 0xA1, 0xDE, 0x5C, 0x4F, 0x04, 0xB1, 0xCF, 0xBB, - 0xE7, 0xBA, 0xF7, 0x88, 0x24, 0xA3, 0xFA, 0x98, 0x92, 0xF0, 0x67, 0x17, 0x6F, 0xA4, 0x54, 0x3F, - 0xDC, 0x77, 0x82, 0xF3, 0x17, 0xAB, 0xB2, 0xEF, 0x3B, 0xF8, 0xAF, 0xFF, 0xD5, 0x3F, 0xDF, 0x57, - 0x35, 0x84, 0x62, 0x35, 0xC9, 0xEB, 0xC3, 0x36, 0x8D, 0x93, 0x3C, 0x2F, 0x10, 0x0C, 0x08, 0x41, - 0xEF, 0x82, 0x94, 0xE3, 0x74, 0xB9, 0xC2, 0xF1, 0x74, 0x38, 0xBC, 0x2F, 0xF2, 0x5C, 0x3B, 0xB3, - 0x3D, 0xEC, 0x57, 0xCB, 0x99, 0x77, 0xC8, 0x68, 0xD5, 0x36, 0x03, 0xC5, 0xEC, 0xD4, 0xF4, 0x65, - 0x91, 0x41, 0x84, 0x47, 0x35, 0x2A, 0x35, 0x00, 0xE0, 0x05, 0xA7, 0x59, 0x1C, 0x61, 0x04, 0xCE, - 0x57, 0xB3, 0xE7, 0x6D, 0x75, 0xF7, 0xB8, 0xF5, 0x0E, 0x3C, 0x6D, 0xD7, 0x69, 0x1A, 0x13, 0xC6, - 0xB2, 0x84, 0x7C, 0xF6, 0xE2, 0x7C, 0x3E, 0x5B, 0x1A, 0x1B, 0x92, 0x18, 0x3A, 0xD5, 0x31, 0x2E, - 0x06, 0xD5, 0xEF, 0x8E, 0x2D, 0x04, 0x64, 0x3E, 0xCB, 0xD3, 0x88, 0x8F, 0x63, 0x17, 0x8B, 0xD8, - 0x7A, 0xD4, 0xF7, 0x6D, 0xD7, 0x55, 0xCB, 0xD5, 0x42, 0x69, 0x56, 0xB7, 0x3D, 0x40, 0xE4, 0x57, - 0xBF, 0x7B, 0x9C, 0x96, 0xF1, 0xA7, 0xAF, 0xA7, 0x88, 0x60, 0xA9, 0x74, 0xD5, 0xEB, 0xCD, 0xB6, - 0xF2, 0xC1, 0xCB, 0x5E, 0x39, 0xEB, 0x02, 0x08, 0x38, 0x84, 0xBB, 0xFB, 0x35, 0xA6, 0x2C, 0x89, - 0xC5, 0xC5, 0x62, 0x4A, 0x30, 0xF6, 0xC1, 0x71, 0x4E, 0x08, 0xC2, 0x1E, 0x02, 0x67, 0xFC, 0x72, - 0x91, 0x8B, 0x48, 0x4C, 0xCB, 0xD4, 0x79, 0x3F, 0x2A, 0x87, 0x00, 0x98, 0xCD, 0x12, 0xCE, 0x91, - 0x1A, 0x95, 0xD1, 0xD6, 0x58, 0xB3, 0xDE, 0xD6, 0x75, 0x33, 0x14, 0x79, 0xEC, 0x8C, 0x67, 0x94, - 0x26, 0x82, 0xBB, 0xE0, 0xD2, 0x88, 0x71, 0xC2, 0xE3, 0x98, 0x01, 0xE8, 0xD6, 0xFB, 0xA3, 0x86, - 0x50, 0xDB, 0x81, 0x63, 0x42, 0x80, 0x30, 0x2E, 0x78, 0x08, 0x7A, 0xA9, 0xFA, 0x6E, 0xE0, 0x14, - 0x9F, 0xAD, 0xCA, 0xAA, 0x3A, 0xC4, 0x54, 0x9C, 0x2A, 0xE9, 0x82, 0xEB, 0x86, 0x91, 0x30, 0xB4, - 0xDB, 0x57, 0x8C, 0xB3, 0xAE, 0x1B, 0xBC, 0x87, 0x00, 0x02, 0x3D, 0x9A, 0x53, 0xAD, 0x56, 0xAB, - 0xE5, 0x97, 0x9F, 0x9E, 0x71, 0x0E, 0x08, 0x42, 0x94, 0xD2, 0xB7, 0x3F, 0xEE, 0x7E, 0x78, 0xFF, - 0x94, 0x25, 0xF1, 0x7C, 0x5A, 0x50, 0x4A, 0x29, 0x85, 0xDF, 0x7D, 0xF3, 0xFA, 0x74, 0xAC, 0x31, - 0xC4, 0xB3, 0xB2, 0x04, 0x1E, 0xBC, 0xFD, 0xF0, 0x94, 0x46, 0x7C, 0x3E, 0x2D, 0x0E, 0x75, 0xD7, - 0xC9, 0xB1, 0x69, 0x65, 0x40, 0xC8, 0x79, 0x87, 0x10, 0xE9, 0xE4, 0xB8, 0x39, 0xD4, 0x65, 0x1E, - 0xE7, 0x31, 0x8D, 0x18, 0x7A, 0xF3, 0xFA, 0xE2, 0x70, 0x38, 0xFD, 0xDD, 0x6F, 0xBE, 0xE7, 0x04, - 0x7F, 0x76, 0xF3, 0xE2, 0xD8, 0x0C, 0x87, 0x53, 0xF5, 0x27, 0x5F, 0x7D, 0x3D, 0x9B, 0x09, 0x44, - 0xF0, 0xED, 0x87, 0x47, 0x91, 0x4E, 0x0C, 0x2D, 0x86, 0xEA, 0x07, 0xAD, 0x34, 0xF6, 0x70, 0x3E, - 0x2F, 0x39, 0x27, 0xCE, 0x7B, 0x63, 0x8C, 0x54, 0xF6, 0xE1, 0xF9, 0x84, 0x00, 0x79, 0x71, 0x75, - 0xF1, 0xF8, 0xB4, 0x8B, 0x12, 0x06, 0xA9, 0x30, 0x46, 0x5D, 0x9C, 0xE7, 0x0C, 0xB3, 0x51, 0xE9, - 0xE0, 0x40, 0x12, 0xF3, 0x77, 0xEF, 0x7F, 0x18, 0x86, 0x66, 0x39, 0x9F, 0x18, 0xA3, 0xE7, 0xF9, - 0x0C, 0x7B, 0x18, 0xA0, 0xA9, 0x95, 0xE3, 0x31, 0x4F, 0xA2, 0x08, 0x04, 0x30, 0x99, 0x2D, 0xF7, - 0xBB, 0xAD, 0x6E, 0x87, 0x71, 0xF4, 0x3F, 0xDC, 0x6F, 0x7E, 0xF6, 0xED, 0x57, 0x65, 0x9E, 0x9E, - 0xBA, 0xF1, 0x87, 0xBB, 0xC7, 0xC3, 0xE1, 0xB4, 0x9C, 0x97, 0x91, 0x40, 0xCE, 0x39, 0x84, 0x09, - 0x67, 0x7C, 0x1C, 0xE5, 0xBC, 0xC8, 0x28, 0x66, 0xCD, 0xA0, 0x87, 0x71, 0x7C, 0xFF, 0xB0, 0xC9, - 0x92, 0xF4, 0xE7, 0xDF, 0x7E, 0x4A, 0x08, 0xEE, 0x65, 0x1F, 0x20, 0x54, 0xC6, 0x7D, 0x78, 0xFF, - 0x78, 0x38, 0x55, 0x87, 0xAA, 0xBD, 0xBA, 0x98, 0x23, 0x84, 0xB5, 0x36, 0xC0, 0xBA, 0x43, 0xD5, - 0x5A, 0xEF, 0x28, 0xA7, 0xD3, 0xF9, 0x04, 0x04, 0x40, 0x00, 0xEC, 0x5A, 0x99, 0xC6, 0x11, 0x44, - 0xB0, 0x69, 0xFA, 0x32, 0x4F, 0x95, 0xB5, 0x1E, 0x06, 0x8A, 0xB0, 0x77, 0xBE, 0xC8, 0xD3, 0x41, - 0xE9, 0x87, 0xE7, 0xFD, 0x27, 0xD7, 0x97, 0xCB, 0xE9, 0x74, 0x7B, 0x3C, 0x26, 0x59, 0xFC, 0xB4, - 0x39, 0x3D, 0xAE, 0xF7, 0x08, 0x63, 0xA5, 0xB5, 0xE0, 0x3C, 0x13, 0xEC, 0xAB, 0x37, 0xAF, 0xBD, - 0xD3, 0x6D, 0xD7, 0x0D, 0xE3, 0x18, 0x3C, 0x40, 0x18, 0x9D, 0x9F, 0xCD, 0x9A, 0x56, 0x17, 0x45, - 0x01, 0x83, 0xF4, 0xC1, 0x37, 0x9D, 0x86, 0x88, 0x58, 0xAB, 0xCE, 0x2F, 0xA7, 0xA7, 0x7D, 0x17, - 0x82, 0xCF, 0xCA, 0xB8, 0x6E, 0x7A, 0x00, 0xF1, 0xB1, 0x6E, 0xAB, 0x53, 0x33, 0x99, 0xE6, 0xD6, - 0x39, 0x6F, 0x0C, 0x67, 0x2C, 0x12, 0x22, 0x89, 0x19, 0x82, 0x70, 0x90, 0xEA, 0xFC, 0x6C, 0x56, - 0xE6, 0xC9, 0x72, 0x36, 0x7B, 0x7F, 0xF7, 0x8C, 0x02, 0x78, 0x71, 0x7D, 0xEE, 0x80, 0xD5, 0x5A, - 0xF5, 0xD2, 0x3A, 0xEB, 0xDF, 0xBE, 0xBB, 0xD7, 0xD6, 0x0E, 0xC3, 0xF8, 0xE5, 0xA7, 0xAF, 0xE2, - 0x34, 0x92, 0x43, 0x6D, 0x95, 0xEE, 0x3A, 0x35, 0x2B, 0x8A, 0x34, 0x11, 0x71, 0x92, 0x9F, 0x9D, - 0x9D, 0x99, 0x51, 0xFE, 0xF1, 0xDD, 0xED, 0xDB, 0x0F, 0xCF, 0x75, 0x3B, 0x70, 0x8E, 0x09, 0x46, - 0x21, 0xF8, 0x2C, 0x8F, 0x04, 0xE3, 0x82, 0xC7, 0x98, 0xD0, 0xF9, 0x2C, 0x97, 0x7D, 0xF7, 0xE3, - 0xED, 0xD3, 0x30, 0xBA, 0xCD, 0xA1, 0x69, 0x46, 0xF5, 0xE9, 0x8B, 0xE9, 0xD7, 0x37, 0x17, 0x4F, - 0xEB, 0x43, 0x51, 0x14, 0x9D, 0xC6, 0xFB, 0xAA, 0x6D, 0xBA, 0xF5, 0x72, 0x96, 0x46, 0xF9, 0x05, - 0x01, 0x08, 0x3B, 0x9B, 0x67, 0x09, 0xA6, 0xCC, 0x5B, 0xD3, 0xB5, 0xBD, 0xB1, 0x76, 0x77, 0x38, - 0x5A, 0x63, 0x8B, 0x34, 0x72, 0xD8, 0x2C, 0xA7, 0xD9, 0x17, 0x37, 0x57, 0xF7, 0x8F, 0x07, 0x6D, - 0x00, 0x67, 0xA4, 0xEB, 0xFB, 0x6E, 0x30, 0x87, 0xA6, 0xB3, 0xC6, 0x49, 0xA5, 0xFB, 0x61, 0x4C, - 0x22, 0x5E, 0xD5, 0xF5, 0xD9, 0xF9, 0x82, 0x50, 0x7C, 0x7F, 0xB7, 0x57, 0xC6, 0x10, 0x88, 0x20, - 0x80, 0xC6, 0x3A, 0xCE, 0x99, 0x73, 0x0E, 0x53, 0x86, 0x91, 0x4F, 0x13, 0xF1, 0xE6, 0x93, 0x4F, - 0x57, 0x93, 0x62, 0x94, 0xF5, 0x8F, 0xB7, 0xB7, 0x77, 0xCF, 0xA7, 0xBA, 0x1B, 0xFA, 0x5E, 0x2E, - 0x66, 0xE5, 0xC5, 0x72, 0xF1, 0xE3, 0xC3, 0x96, 0x32, 0xE2, 0x43, 0xF8, 0xE4, 0xD5, 0xD5, 0x5F, - 0xFE, 0xFC, 0x2F, 0x18, 0xA5, 0xCB, 0x69, 0xC6, 0x51, 0x7D, 0x7B, 0xFB, 0xF6, 0xC7, 0x0F, 0xDB, - 0xE7, 0xE3, 0x09, 0x11, 0x5A, 0xE6, 0x2B, 0x88, 0x08, 0x00, 0x56, 0xC4, 0xB1, 0x1C, 0xD5, 0x72, - 0x36, 0xE7, 0xAC, 0xB0, 0x66, 0x64, 0x04, 0x17, 0x69, 0x0E, 0xFF, 0xEC, 0xBB, 0x6F, 0xF6, 0x75, - 0xFB, 0xC5, 0x17, 0xDF, 0xCA, 0xE3, 0x63, 0x96, 0xA4, 0xC1, 0xFB, 0x24, 0x4B, 0x9F, 0x9E, 0x37, - 0x54, 0x90, 0xA7, 0xA7, 0xCD, 0xAB, 0xEB, 0x97, 0x17, 0xAF, 0xBF, 0x7A, 0xF7, 0xF6, 0x1F, 0xBC, - 0x96, 0x9C, 0xD2, 0x49, 0x11, 0x71, 0x8A, 0x3C, 0x20, 0xCA, 0x20, 0xE7, 0xF5, 0xE5, 0x2A, 0x47, - 0x18, 0xED, 0x0E, 0x9D, 0x32, 0x6E, 0x7F, 0xEC, 0x5C, 0xD0, 0x71, 0x4C, 0x26, 0x93, 0x7C, 0xBB, - 0x6F, 0x82, 0x0B, 0x4D, 0xDD, 0x08, 0xCE, 0xBE, 0x78, 0xFD, 0x8A, 0x53, 0xF2, 0x9B, 0x3F, 0xDE, - 0x3E, 0x6E, 0xF7, 0xFF, 0xF4, 0x4F, 0xBF, 0xBD, 0xBA, 0x58, 0x4C, 0x33, 0x66, 0xCD, 0xB0, 0x3F, - 0x9E, 0x1C, 0x40, 0x65, 0x59, 0x3A, 0x6B, 0x39, 0x47, 0x4A, 0x8F, 0x01, 0x20, 0x18, 0x2C, 0x0C, - 0xEE, 0x74, 0xAC, 0x43, 0x50, 0x45, 0x9E, 0xD9, 0x80, 0xDA, 0xEE, 0x84, 0x11, 0x9C, 0xCF, 0x2F, - 0x7B, 0xA9, 0x95, 0xF6, 0x71, 0x1A, 0x65, 0x19, 0x2F, 0x52, 0x61, 0x1C, 0xF8, 0xFE, 0xED, 0x43, - 0xDF, 0xEB, 0x40, 0xC9, 0xD3, 0xFA, 0xB8, 0xDB, 0x1E, 0x03, 0xC0, 0x22, 0x8A, 0x40, 0x70, 0x6A, - 0x1C, 0x9E, 0xD6, 0x07, 0x8C, 0xA8, 0x52, 0xF2, 0xE5, 0xC5, 0xD9, 0xD5, 0xD5, 0xC2, 0x5A, 0x2B, - 0x38, 0x1D, 0xB5, 0xED, 0xFA, 0x11, 0x00, 0xE0, 0xAC, 0x7B, 0x79, 0x79, 0xB1, 0x98, 0x4D, 0x0F, - 0xC7, 0x26, 0xCB, 0x73, 0x82, 0x3C, 0x46, 0xA0, 0xEA, 0x46, 0x65, 0xCC, 0xD9, 0x22, 0x67, 0x18, - 0x40, 0x6F, 0x76, 0xFB, 0x2A, 0xC9, 0x84, 0xD3, 0x8E, 0x11, 0x9A, 0xA6, 0xD1, 0x30, 0x8C, 0x8B, - 0x45, 0x5E, 0x35, 0xBD, 0x1C, 0x4D, 0x92, 0x44, 0x65, 0x11, 0x11, 0x81, 0xAB, 0xAE, 0x0F, 0x01, - 0x74, 0x8D, 0x7C, 0x7C, 0xD8, 0x2B, 0xE3, 0xF2, 0x2C, 0x61, 0x18, 0xCD, 0xCA, 0x5C, 0x59, 0xD7, - 0x75, 0xBD, 0xEC, 0x7A, 0x29, 0xC7, 0xBA, 0xED, 0xE2, 0x38, 0x3A, 0xD5, 0x6D, 0xD5, 0xF6, 0x1F, - 0x43, 0xA7, 0x04, 0x23, 0xCE, 0xC9, 0xC5, 0x22, 0xFF, 0xE4, 0xF5, 0x3C, 0x4E, 0xE2, 0xF9, 0x62, - 0xB1, 0x3B, 0xD5, 0x4F, 0x9B, 0x13, 0x04, 0x70, 0x31, 0x9D, 0xFD, 0xF2, 0x57, 0xEF, 0x8C, 0x72, - 0x93, 0x2C, 0x0D, 0x00, 0xDC, 0x5C, 0x2F, 0xCF, 0x17, 0x93, 0xC3, 0xA9, 0xAD, 0x3B, 0x29, 0xB8, - 0x90, 0x83, 0xF5, 0x21, 0x24, 0x82, 0x75, 0x52, 0x1E, 0x4E, 0xAD, 0x07, 0x21, 0x00, 0xF8, 0x51, - 0x24, 0xAE, 0xEA, 0xEE, 0xF6, 0x71, 0xF3, 0xE6, 0xE6, 0x7A, 0x5E, 0xC6, 0x4D, 0xDD, 0x31, 0x42, - 0x26, 0x79, 0x64, 0x8C, 0x9D, 0x96, 0xD9, 0xBC, 0x4C, 0x36, 0xC7, 0xBA, 0x95, 0x03, 0xE3, 0x62, - 0x39, 0x9B, 0x18, 0xDF, 0x5A, 0x6F, 0xBB, 0x7E, 0x70, 0x28, 0x7B, 0xDC, 0x8C, 0x67, 0xE5, 0x38, - 0xCB, 0x92, 0xC5, 0x74, 0xB2, 0x3F, 0x35, 0xA3, 0x52, 0x72, 0xD0, 0x01, 0x80, 0xD3, 0xB1, 0xD9, - 0x6C, 0xDB, 0xC9, 0x6C, 0x36, 0x99, 0x66, 0xBB, 0xDD, 0x41, 0x7B, 0xDC, 0xF5, 0x0E, 0x83, 0x21, - 0x2B, 0x72, 0xA5, 0x54, 0x5E, 0xA4, 0x01, 0x62, 0x02, 0xE1, 0xAC, 0x48, 0xFA, 0xA1, 0x7E, 0xFF, - 0xFE, 0xDD, 0x27, 0x2F, 0x5F, 0xAE, 0x26, 0x33, 0x33, 0x68, 0xE3, 0xFD, 0xA0, 0xE5, 0xC7, 0xE6, - 0xF6, 0xE8, 0xB5, 0xE0, 0x2C, 0xE1, 0x7C, 0x12, 0xCF, 0x7E, 0xF7, 0xFD, 0xAD, 0x0D, 0xE0, 0xA7, - 0x3F, 0xFD, 0xEC, 0x69, 0x5D, 0x1D, 0xAA, 0xF6, 0xF1, 0x69, 0xF3, 0x17, 0x3F, 0x7D, 0xFD, 0xE6, - 0x66, 0x36, 0x0C, 0x63, 0xDF, 0xF6, 0xCE, 0x3B, 0x00, 0xC9, 0x7A, 0x7D, 0x3A, 0x9D, 0x1C, 0x00, - 0x98, 0x30, 0x3A, 0x8C, 0xEA, 0xC3, 0xD3, 0xF6, 0x93, 0x97, 0x97, 0x9C, 0xD2, 0x00, 0x03, 0xA1, - 0x04, 0x84, 0xB0, 0x98, 0x4F, 0x9E, 0x9E, 0x37, 0xFF, 0xE7, 0xBF, 0xFF, 0xC5, 0xF5, 0xF5, 0x0A, - 0x06, 0xEF, 0x4D, 0xB8, 0xB9, 0x3A, 0x13, 0x82, 0xA5, 0x19, 0xDF, 0x9D, 0x6A, 0x63, 0x7C, 0x96, - 0xE7, 0xD9, 0x2C, 0x8F, 0x63, 0xF1, 0xFD, 0x1F, 0xEE, 0x18, 0x65, 0x87, 0xDD, 0x3E, 0x62, 0x22, - 0x04, 0x7F, 0xEA, 0xC7, 0xA6, 0xED, 0x10, 0x00, 0x08, 0x42, 0x8A, 0x21, 0xC4, 0x28, 0x4F, 0x0B, - 0x10, 0xA0, 0x1C, 0x07, 0x4C, 0x69, 0x3F, 0xA8, 0xFD, 0xB1, 0xAD, 0xDB, 0x66, 0x36, 0x9D, 0x70, - 0x46, 0x31, 0x89, 0x38, 0x46, 0xD7, 0xAB, 0xE9, 0x76, 0xB7, 0x39, 0x9C, 0xAA, 0x51, 0x6B, 0xC1, - 0x79, 0x00, 0xF0, 0xC5, 0xD5, 0x25, 0x46, 0x38, 0xCD, 0xCA, 0x79, 0x49, 0x1E, 0xD6, 0xFB, 0x71, - 0xD4, 0xBB, 0xC3, 0x89, 0x73, 0xFA, 0xE2, 0x7A, 0xF1, 0xF0, 0xB8, 0x25, 0x84, 0x20, 0x08, 0x45, - 0x14, 0x25, 0x49, 0x72, 0xFF, 0xF8, 0x14, 0x27, 0x91, 0x73, 0xBE, 0xAE, 0x1B, 0x84, 0x30, 0xA1, - 0x18, 0x06, 0x3F, 0x2D, 0xB3, 0x34, 0x89, 0xCB, 0x34, 0x2D, 0x8A, 0x0C, 0x22, 0x8F, 0x31, 0x41, - 0x08, 0x66, 0x89, 0xA8, 0xAB, 0x9E, 0x47, 0x02, 0x23, 0xB0, 0xD9, 0x35, 0x08, 0x60, 0x6B, 0x2C, - 0xC6, 0x20, 0xE2, 0x98, 0x51, 0xAC, 0x9C, 0x81, 0x00, 0xB6, 0x9D, 0x1C, 0x06, 0x95, 0xA5, 0x05, - 0xE3, 0x91, 0xB6, 0x8E, 0x51, 0x9A, 0x08, 0x56, 0xD5, 0x4D, 0xD3, 0xAB, 0xF5, 0x66, 0x1F, 0x9C, - 0x71, 0xDE, 0x3B, 0xE7, 0x18, 0x27, 0x71, 0xC4, 0xCF, 0xE6, 0xB3, 0xEF, 0xBE, 0x7D, 0xF3, 0xFA, - 0x66, 0xD9, 0xF7, 0x6A, 0xB7, 0xDE, 0xBF, 0x7B, 0xFF, 0xDC, 0x4B, 0x1B, 0x90, 0x80, 0x98, 0x0B, - 0xA2, 0x9D, 0xF3, 0xCE, 0x43, 0x65, 0xDD, 0xFA, 0x78, 0x7C, 0x78, 0x7A, 0x3F, 0x8C, 0x43, 0x91, - 0xC5, 0x01, 0xE0, 0xB3, 0xC5, 0xC5, 0xCD, 0x8B, 0xD5, 0xFE, 0xD0, 0x2D, 0x26, 0x53, 0x82, 0x91, - 0x35, 0x12, 0x04, 0xDB, 0x76, 0x9A, 0x51, 0xFC, 0xF5, 0x17, 0xE7, 0x67, 0xF3, 0x22, 0x12, 0xE2, - 0x7E, 0xD3, 0x34, 0xED, 0x30, 0x0C, 0x6A, 0x7B, 0xA8, 0x9F, 0x36, 0x95, 0xF7, 0x30, 0x58, 0x53, - 0x4E, 0xA6, 0x16, 0x80, 0xE3, 0xE9, 0xB8, 0xD9, 0x6C, 0xAD, 0x1F, 0x03, 0x04, 0xAF, 0xAE, 0x5F, - 0xCB, 0x61, 0x7C, 0x7C, 0x5A, 0x5F, 0x9D, 0x5F, 0xC4, 0x22, 0x9A, 0x4F, 0xD2, 0x0F, 0xF7, 0x4F, - 0xF7, 0xDB, 0x7D, 0x91, 0xC5, 0x71, 0x1C, 0x4F, 0xA7, 0x53, 0x81, 0xA1, 0xD1, 0x2A, 0x8E, 0xE3, - 0x87, 0xED, 0x7E, 0xD0, 0xAE, 0x6D, 0xDA, 0x97, 0x57, 0x8B, 0x48, 0xC4, 0x3F, 0xDC, 0x3E, 0x43, - 0x48, 0x37, 0xDB, 0xED, 0xF9, 0x6A, 0x31, 0x9F, 0x94, 0x67, 0xF3, 0x29, 0xA3, 0x18, 0x21, 0x60, - 0x94, 0xAA, 0x8E, 0xA7, 0xC9, 0x6C, 0x8A, 0x09, 0xD1, 0xCA, 0x42, 0x48, 0xB4, 0xD1, 0x72, 0x94, - 0xA3, 0x72, 0xD3, 0xB2, 0xC8, 0xB3, 0xCC, 0x68, 0x15, 0x73, 0xCA, 0x28, 0x86, 0x3F, 0xFB, 0xC9, - 0xD7, 0x5C, 0xC4, 0x67, 0x2F, 0x3E, 0x37, 0xA3, 0x54, 0x7D, 0x1D, 0x9C, 0xC5, 0x18, 0x76, 0xB2, - 0x75, 0xDE, 0x55, 0xA7, 0xFA, 0xE5, 0x27, 0x5F, 0xEF, 0xF6, 0xFB, 0x9C, 0x0E, 0x84, 0x52, 0xC6, - 0xA2, 0xD5, 0x2C, 0x1B, 0xE4, 0xC0, 0x98, 0xE0, 0x9C, 0x23, 0xE4, 0x31, 0x45, 0xEB, 0x6D, 0x95, - 0x16, 0xB1, 0xB1, 0xB6, 0xE9, 0xC7, 0x38, 0x11, 0x08, 0x38, 0xEB, 0xFD, 0xF6, 0xD0, 0x61, 0x1A, - 0x1D, 0x9E, 0x36, 0x6A, 0xD4, 0x59, 0x9A, 0x2F, 0xCA, 0x2C, 0x8E, 0xE3, 0x4A, 0xDA, 0x9B, 0x8B, - 0x42, 0x30, 0xD8, 0x34, 0xFD, 0xE6, 0xB0, 0xAD, 0x1B, 0x8D, 0x30, 0x0F, 0x90, 0x8A, 0x88, 0x22, - 0x1C, 0x8C, 0x35, 0x9C, 0xD1, 0xCB, 0xF3, 0x09, 0x0A, 0xBA, 0x6F, 0xEA, 0x00, 0x82, 0x73, 0x46, - 0x8D, 0x75, 0x12, 0x33, 0x4C, 0xB8, 0xB1, 0x7A, 0xB5, 0xBA, 0x84, 0x48, 0x50, 0x86, 0xD2, 0x34, - 0x23, 0x98, 0x62, 0x2A, 0xEA, 0x46, 0x0E, 0x52, 0x52, 0x81, 0xD7, 0xFB, 0xAE, 0x1F, 0xD4, 0xDB, - 0xB7, 0x0F, 0xC7, 0x63, 0xBF, 0x5A, 0xCD, 0xD4, 0x28, 0x09, 0x81, 0x18, 0x23, 0x42, 0x09, 0x08, - 0x48, 0x50, 0x12, 0x0B, 0xA2, 0xB5, 0x6F, 0x3A, 0xD9, 0x4B, 0xD5, 0xC9, 0x71, 0x31, 0x9B, 0x7F, - 0xF9, 0xE6, 0x55, 0x5D, 0x35, 0x45, 0x39, 0xE9, 0x47, 0xBD, 0x3F, 0x9E, 0xEA, 0xA6, 0xE1, 0x14, - 0x1B, 0x17, 0x12, 0x41, 0x23, 0x8A, 0x6F, 0xAE, 0x67, 0x79, 0x16, 0x05, 0x60, 0x29, 0x44, 0x71, - 0xC4, 0x20, 0x0C, 0x36, 0x58, 0xEB, 0xDD, 0xE3, 0xFA, 0xD4, 0x4A, 0x13, 0x27, 0xE9, 0xE3, 0xE3, - 0x46, 0x3B, 0x33, 0x99, 0x15, 0x49, 0xC4, 0x63, 0x41, 0x01, 0x80, 0x4D, 0x37, 0x76, 0x5D, 0x27, - 0x18, 0xB9, 0x5C, 0xCE, 0xB8, 0x60, 0xB7, 0xF7, 0xDB, 0xBE, 0x1B, 0xF2, 0x34, 0xDE, 0x6E, 0x4F, - 0xD6, 0x3A, 0x63, 0xCD, 0xE6, 0xD4, 0x40, 0x08, 0xFF, 0xE5, 0x5F, 0x7D, 0xE3, 0xB4, 0x79, 0xF9, - 0x72, 0x91, 0xA5, 0xD1, 0xC3, 0x87, 0xA7, 0xFB, 0xA7, 0x9D, 0xF2, 0x61, 0xBB, 0x6E, 0x11, 0xC6, - 0xCB, 0x79, 0x39, 0xCD, 0xF3, 0x80, 0xF0, 0xC5, 0x72, 0x12, 0xB4, 0xA7, 0x44, 0x9C, 0x9A, 0xE1, - 0x79, 0x77, 0x74, 0xCE, 0xC7, 0x91, 0x18, 0xB4, 0xDD, 0xEE, 0x4F, 0xCB, 0xF9, 0xB4, 0x69, 0xDB, - 0x10, 0x40, 0xF0, 0x8E, 0x31, 0xDA, 0xF6, 0xC3, 0xA0, 0xD4, 0xC7, 0xC6, 0xC4, 0xC5, 0x6A, 0xF6, - 0x6F, 0xFE, 0xF9, 0xCF, 0xFF, 0xAF, 0xBF, 0xF9, 0x65, 0x2F, 0x35, 0xC2, 0x38, 0x12, 0xDC, 0x3B, - 0x27, 0x44, 0x24, 0x95, 0x12, 0x11, 0x1A, 0xB4, 0x89, 0x84, 0x30, 0xA3, 0x6D, 0xFB, 0x2A, 0x38, - 0x53, 0x96, 0xE9, 0x64, 0xF9, 0xBA, 0x69, 0x36, 0x93, 0xD8, 0x67, 0x2C, 0x26, 0x98, 0x1C, 0x9B, - 0x56, 0x6B, 0x1B, 0x09, 0x61, 0x8C, 0xC5, 0x18, 0x61, 0x4C, 0x5A, 0xA9, 0x4F, 0x4D, 0x5B, 0x4B, - 0x30, 0x9D, 0xAF, 0x64, 0xB3, 0xBD, 0xBB, 0x7F, 0x4A, 0xD3, 0xA4, 0x2C, 0xF3, 0xAB, 0x57, 0x97, - 0x52, 0x4A, 0x88, 0x88, 0x53, 0x6A, 0x9A, 0x27, 0xC0, 0xD9, 0xE3, 0x71, 0x73, 0xBE, 0x5C, 0x08, - 0xC6, 0x38, 0x67, 0xCE, 0x8C, 0xA3, 0xB2, 0x72, 0xEC, 0x4D, 0x70, 0x69, 0xC4, 0x3F, 0x7F, 0xFD, - 0x89, 0x77, 0xE1, 0x71, 0x77, 0x88, 0xD3, 0xE8, 0xE2, 0xAC, 0x1C, 0x47, 0x65, 0x8D, 0x01, 0x01, - 0xE8, 0x31, 0x40, 0x0A, 0xFE, 0xF0, 0xFD, 0xC3, 0xEA, 0x2C, 0xB9, 0xBA, 0x9C, 0x06, 0x0F, 0xFA, - 0x46, 0xDD, 0x3F, 0xB4, 0x6D, 0xA7, 0x27, 0xD3, 0xC9, 0x60, 0xAC, 0xF3, 0x2E, 0x4D, 0x22, 0x6B, - 0x4C, 0x08, 0xBE, 0x1D, 0xB4, 0x94, 0x43, 0x08, 0x30, 0x49, 0xE2, 0x0F, 0xF7, 0xF7, 0xAF, 0x2F, - 0x16, 0x82, 0x92, 0x24, 0x8A, 0x83, 0x0F, 0x98, 0x82, 0x28, 0x65, 0xB2, 0x1F, 0x05, 0x13, 0x08, - 0x11, 0x0F, 0x03, 0xE2, 0xCC, 0x07, 0x14, 0x30, 0x7A, 0xFF, 0xEE, 0x6E, 0x59, 0x96, 0xB7, 0xF7, - 0xEB, 0x63, 0xA3, 0x9C, 0xD5, 0x18, 0x05, 0x39, 0x8E, 0xCE, 0xDA, 0x69, 0x91, 0xB7, 0x52, 0x79, - 0x00, 0xDB, 0xAE, 0x2F, 0x8A, 0xF2, 0x79, 0xBB, 0xFB, 0x58, 0x4E, 0xCA, 0xF3, 0x32, 0x8E, 0x62, - 0x42, 0x69, 0x9E, 0xC4, 0xDE, 0xC8, 0xFD, 0xE1, 0xA0, 0x8C, 0x1D, 0xD5, 0x38, 0x9D, 0xCE, 0xA2, - 0x28, 0xB9, 0x5C, 0x2E, 0x7D, 0x00, 0x91, 0x88, 0x28, 0x72, 0x87, 0xBA, 0x36, 0xD6, 0x20, 0x1C, - 0x28, 0xC6, 0xFB, 0x63, 0x95, 0x66, 0xB1, 0x33, 0xA6, 0x6D, 0x07, 0x07, 0x50, 0x96, 0xA6, 0x7D, - 0xDF, 0x52, 0xCE, 0x62, 0x1E, 0xD5, 0x75, 0x73, 0xAC, 0xAA, 0xEB, 0x57, 0x97, 0x9C, 0x93, 0xA1, - 0x6E, 0xF3, 0x24, 0x16, 0x9C, 0xE5, 0x79, 0x5E, 0x37, 0xDD, 0x38, 0xAA, 0xB2, 0xCC, 0x38, 0xC7, - 0xF3, 0x69, 0x99, 0x26, 0xE9, 0xC3, 0x7A, 0x83, 0x08, 0x16, 0x8C, 0x39, 0xEB, 0x87, 0x4E, 0xA5, - 0x51, 0x22, 0x65, 0xA3, 0x3D, 0x42, 0x84, 0xE4, 0x19, 0x47, 0x20, 0x18, 0x8F, 0x4F, 0xB5, 0x1E, - 0x46, 0x9B, 0xA6, 0xB1, 0xB3, 0xA6, 0xEF, 0xDB, 0xC9, 0x74, 0xEA, 0xB4, 0xF4, 0x56, 0x1F, 0xAB, - 0xE6, 0x54, 0x55, 0x51, 0xCC, 0xD4, 0xA8, 0x92, 0x28, 0x7A, 0x71, 0xB5, 0xFA, 0xF2, 0xD3, 0xCB, - 0xC5, 0xBC, 0xA8, 0x1B, 0xA9, 0x95, 0xC5, 0x58, 0x38, 0x13, 0xEA, 0x5E, 0x87, 0xE0, 0xDB, 0x7E, - 0x50, 0xC6, 0x4D, 0x8A, 0xC4, 0x7A, 0xDF, 0x74, 0x5D, 0xDB, 0x9C, 0x42, 0xC0, 0x5D, 0xDF, 0x30, - 0x0A, 0x9B, 0xAE, 0xBB, 0x3C, 0x3F, 0xBF, 0x98, 0xA6, 0x18, 0xFB, 0x38, 0x49, 0x1C, 0xC0, 0xC6, - 0xDB, 0x59, 0x0A, 0xB1, 0xE9, 0x0F, 0xA7, 0xCE, 0x41, 0x12, 0xC5, 0xF1, 0xD9, 0xE5, 0xD5, 0xA1, - 0x71, 0xBF, 0xFE, 0xED, 0x7B, 0x4E, 0x19, 0x0E, 0x1E, 0x40, 0x40, 0xB9, 0x78, 0xDA, 0x35, 0x55, - 0xD3, 0x2D, 0x67, 0xD3, 0xE3, 0x61, 0x9D, 0x97, 0xE9, 0x67, 0xAF, 0xAF, 0xB9, 0xA0, 0xCA, 0xFA, - 0x61, 0x0C, 0xD7, 0xB3, 0x58, 0x60, 0x74, 0x68, 0xC6, 0xF5, 0xF6, 0x88, 0x19, 0x3E, 0xD4, 0x55, - 0x9E, 0x15, 0x4D, 0x37, 0x26, 0x71, 0x02, 0x00, 0xD8, 0x56, 0xAD, 0xF5, 0x80, 0x21, 0x38, 0x2F, - 0x63, 0xED, 0x40, 0x92, 0x14, 0x94, 0x45, 0x4A, 0xAB, 0xAE, 0x6E, 0xAC, 0x19, 0x30, 0x46, 0x6A, - 0xD4, 0x18, 0x51, 0x67, 0xC7, 0x3C, 0x4B, 0xAC, 0xB5, 0xBB, 0xC3, 0x91, 0xB2, 0x08, 0x41, 0xD4, - 0x76, 0x6D, 0xD3, 0xB6, 0x65, 0x39, 0xEB, 0x65, 0x1F, 0x31, 0x92, 0x44, 0xD1, 0xF6, 0x78, 0xA8, - 0xDB, 0x16, 0xFF, 0xFC, 0xBB, 0xAF, 0xB2, 0x98, 0xBB, 0xA1, 0xD6, 0x6A, 0x54, 0xDA, 0x88, 0x24, - 0x4A, 0xF2, 0x34, 0x4B, 0x29, 0x67, 0xFE, 0xE6, 0xE6, 0x05, 0xE6, 0x42, 0xB6, 0xFB, 0x44, 0xA0, - 0xAB, 0xF3, 0x89, 0x56, 0xAE, 0x48, 0x92, 0x38, 0x62, 0x55, 0x2D, 0xD7, 0xBB, 0x0A, 0x23, 0xDC, - 0x74, 0xE3, 0xFD, 0xFD, 0x56, 0x2B, 0x27, 0x18, 0x4B, 0x22, 0xE4, 0x83, 0x1D, 0x8D, 0xAF, 0xAA, - 0xC6, 0xFB, 0x00, 0x41, 0x38, 0x5B, 0xCD, 0xA9, 0x07, 0xF3, 0x69, 0x31, 0x2B, 0xB3, 0x8B, 0xE5, - 0x64, 0x56, 0xE6, 0x0C, 0xFB, 0x71, 0xB4, 0x4F, 0xDB, 0xD3, 0x2F, 0x7F, 0xFB, 0x16, 0x23, 0xF2, - 0xF5, 0x97, 0x6F, 0xA2, 0x88, 0xC5, 0x82, 0x47, 0x9C, 0x4F, 0xB2, 0x4C, 0x50, 0x8A, 0x20, 0xB2, - 0x56, 0x7B, 0x3F, 0x54, 0xED, 0x30, 0x0C, 0xE1, 0xCB, 0xAB, 0x09, 0x23, 0xE0, 0xD4, 0x39, 0x11, - 0xA5, 0x69, 0x59, 0x58, 0x2D, 0xD5, 0x60, 0x07, 0xE9, 0x8B, 0x24, 0xFD, 0x70, 0xFF, 0xFC, 0xB4, - 0x3E, 0xDC, 0xDE, 0xAD, 0x1F, 0x9F, 0x4E, 0x84, 0x92, 0x28, 0x16, 0x71, 0xCC, 0x36, 0xCF, 0x9B, - 0x3C, 0x8B, 0xA7, 0xD3, 0xEC, 0x27, 0x5F, 0xDF, 0x5C, 0x5D, 0x2F, 0x19, 0x67, 0x8C, 0x0B, 0xEB, - 0x5C, 0x70, 0x4E, 0xCA, 0xF1, 0x71, 0xB3, 0x0F, 0x10, 0x6F, 0xF7, 0xC7, 0x32, 0xCF, 0x07, 0xE5, - 0x1E, 0xB7, 0x87, 0x00, 0xC0, 0xDD, 0xE3, 0xD3, 0xEE, 0xB0, 0xE7, 0x9C, 0x69, 0xA3, 0x7B, 0x29, - 0x2F, 0x57, 0xD3, 0x2C, 0x61, 0xDE, 0xA1, 0xF5, 0xB6, 0xB5, 0xC6, 0x24, 0x11, 0xD2, 0xC6, 0x6C, - 0x0E, 0xF5, 0xDB, 0xF7, 0xEB, 0x61, 0x30, 0x8C, 0xF1, 0xF3, 0xB3, 0x79, 0xF0, 0x7E, 0xB7, 0xAF, - 0x82, 0xF7, 0x87, 0x63, 0xDD, 0x74, 0xE3, 0x38, 0x2A, 0x0F, 0x40, 0x14, 0xF1, 0x45, 0x99, 0x4E, - 0x27, 0x69, 0x39, 0xCB, 0x29, 0xA3, 0xB3, 0x59, 0x51, 0xCE, 0xCA, 0x8B, 0x8B, 0xE5, 0xE5, 0xC5, - 0xE5, 0x72, 0x35, 0x7B, 0x71, 0xBD, 0xBC, 0xB9, 0xB9, 0xFA, 0xFA, 0x9B, 0x4F, 0x16, 0x8B, 0x32, - 0x8D, 0x93, 0xBE, 0xED, 0xDA, 0xBE, 0xFF, 0xCD, 0xEF, 0x1E, 0xF4, 0x68, 0x29, 0xA7, 0x0F, 0xCF, - 0x8D, 0x55, 0x5A, 0xF7, 0xE3, 0xE1, 0xD0, 0x6E, 0x36, 0xC7, 0xAF, 0xDE, 0xBC, 0xB0, 0xC6, 0xFD, - 0xDD, 0xEF, 0x3F, 0xFC, 0x70, 0xF7, 0x6C, 0x6C, 0xC0, 0x18, 0xE4, 0x59, 0x74, 0xFF, 0xB4, 0x01, - 0x10, 0x3A, 0xEF, 0xDB, 0xAE, 0x57, 0x46, 0xA7, 0x69, 0x3C, 0x2A, 0xCD, 0xA3, 0x14, 0x52, 0xE1, - 0x31, 0xD7, 0x4A, 0x7D, 0xF9, 0xFA, 0xF2, 0xD7, 0x7F, 0x78, 0xB7, 0xDE, 0x9E, 0x8A, 0xA2, 0x00, - 0x21, 0xAC, 0x16, 0xD3, 0x24, 0x4E, 0x9E, 0xF6, 0x6D, 0x33, 0x58, 0xCE, 0x69, 0x51, 0xE6, 0xA7, - 0xAA, 0xA3, 0x8C, 0x42, 0x84, 0x7E, 0x80, 0xAC, 0x12, 0x22, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0xF7, 0xFB, 0x77, 0x3F, 0xFB, 0xCB, 0xFF, 0x7A, 0x90, 0x32, 0x47, 0x5B, 0x46, 0xF8, - 0x7A, 0xD3, 0x54, 0x4D, 0xBF, 0xDE, 0x37, 0xFD, 0xA0, 0xF2, 0x49, 0x52, 0xD7, 0xDD, 0x38, 0x9A, - 0x41, 0x1B, 0x29, 0x25, 0x89, 0x0A, 0x80, 0x58, 0x4E, 0x87, 0x00, 0xBC, 0xB2, 0x1E, 0x41, 0x90, - 0x94, 0x17, 0x34, 0xCA, 0xEB, 0xD3, 0x3E, 0x38, 0x9B, 0x24, 0xE2, 0x54, 0xB5, 0x00, 0x40, 0x04, - 0xC2, 0xA9, 0x3A, 0x79, 0x60, 0x11, 0x41, 0x9C, 0x47, 0xC3, 0xA0, 0x42, 0x00, 0x2F, 0xAF, 0x5F, - 0x50, 0x22, 0x0E, 0x55, 0xD3, 0x8F, 0x3A, 0x4E, 0x12, 0x65, 0xFD, 0xE9, 0xA4, 0x8E, 0x27, 0xE5, - 0x3C, 0xA0, 0x98, 0x58, 0x1B, 0xD6, 0xBB, 0xEE, 0xDD, 0xED, 0x13, 0x15, 0xAC, 0x93, 0xEE, 0xC3, - 0x87, 0xAD, 0xB5, 0x61, 0x31, 0xCF, 0x29, 0x21, 0xDB, 0x63, 0x1B, 0x40, 0x68, 0xDA, 0x6E, 0xBF, - 0xAF, 0x20, 0x42, 0x79, 0x96, 0x54, 0x75, 0xC7, 0x39, 0xD7, 0xDA, 0x10, 0x82, 0x30, 0x42, 0xF7, - 0x4F, 0x87, 0xB6, 0xD3, 0xDA, 0xD8, 0x5F, 0xFF, 0xE1, 0x7D, 0x37, 0xEA, 0xE7, 0xCD, 0xE9, 0xC3, - 0xDD, 0xB6, 0x1B, 0xB4, 0x75, 0x16, 0x01, 0x3C, 0x0C, 0xD6, 0xFB, 0x00, 0xAC, 0x5B, 0x4C, 0xCB, - 0x49, 0x99, 0xDD, 0xDD, 0x6D, 0x28, 0xA6, 0x20, 0xF8, 0xAE, 0x97, 0xC3, 0xA8, 0xB9, 0xE0, 0x8C, - 0xB2, 0xBB, 0xC7, 0xCD, 0x7A, 0x77, 0x18, 0x95, 0x31, 0xD6, 0x22, 0x44, 0xE4, 0x20, 0x01, 0x80, - 0x94, 0x12, 0x35, 0xF6, 0x04, 0x63, 0x82, 0xD0, 0x7E, 0xBF, 0x31, 0x2E, 0xB8, 0x00, 0xF2, 0x34, - 0x66, 0x94, 0x77, 0x5D, 0x57, 0x4C, 0xE6, 0x65, 0x39, 0x69, 0x9B, 0xD3, 0xDD, 0xC3, 0xFD, 0x76, - 0xB7, 0x07, 0x10, 0x47, 0xB1, 0xD8, 0xED, 0xAB, 0x56, 0x6A, 0xCC, 0x30, 0x44, 0x81, 0x32, 0xC2, - 0x62, 0xDA, 0xF6, 0x43, 0x00, 0x01, 0x13, 0x6C, 0x3D, 0xE0, 0x9C, 0xF7, 0xBD, 0x0C, 0xCE, 0x2E, - 0x56, 0x73, 0x29, 0x65, 0x5B, 0x77, 0x3E, 0x84, 0x58, 0xF0, 0xD9, 0x34, 0xB9, 0xBE, 0x9C, 0x17, - 0x85, 0x48, 0xD3, 0x48, 0x30, 0xC6, 0x08, 0x2A, 0x8B, 0x54, 0x10, 0x36, 0x8E, 0x8A, 0x46, 0x78, - 0xB1, 0x48, 0xF3, 0x49, 0x44, 0x05, 0x0E, 0x30, 0x64, 0x93, 0x08, 0x51, 0xC8, 0x63, 0x7E, 0xB1, - 0x9C, 0x40, 0x68, 0x0F, 0x87, 0xE3, 0x66, 0xB3, 0x89, 0x05, 0x86, 0x08, 0x59, 0x63, 0x39, 0x45, - 0x04, 0xE3, 0xC7, 0xE7, 0xCD, 0xA0, 0xD4, 0xB4, 0x88, 0x13, 0xC1, 0x3F, 0xBB, 0xB9, 0xCA, 0x52, - 0x56, 0xD7, 0xED, 0x7E, 0xDF, 0x3C, 0x6D, 0xF7, 0x4A, 0x2B, 0xA5, 0x1D, 0xA5, 0xC4, 0x39, 0x87, - 0x10, 0xEC, 0xBA, 0xBE, 0x6B, 0x3B, 0x86, 0x41, 0xDB, 0x75, 0x21, 0x80, 0x37, 0x2F, 0x57, 0xE7, - 0x8B, 0xF2, 0x93, 0x97, 0x97, 0x69, 0x14, 0xBF, 0x3C, 0xBF, 0x3A, 0x9F, 0x16, 0xC0, 0x39, 0x39, - 0xDA, 0xBA, 0x19, 0x86, 0x71, 0x5C, 0x4C, 0x72, 0xAD, 0xC6, 0x87, 0xC7, 0x83, 0x32, 0xD8, 0x07, - 0x2C, 0x47, 0x23, 0x07, 0x63, 0x1D, 0xE6, 0x34, 0x13, 0x34, 0x32, 0xD6, 0x7B, 0x80, 0xAC, 0xD1, - 0xC1, 0xD9, 0x24, 0x8A, 0x3E, 0xC2, 0x66, 0x59, 0x9C, 0x67, 0x29, 0x9D, 0x4E, 0x12, 0xEF, 0xE0, - 0xE1, 0xB0, 0xF7, 0x4E, 0x6B, 0x3D, 0x2E, 0x17, 0xCB, 0x97, 0x97, 0xE7, 0x8B, 0x69, 0x19, 0x82, - 0x7F, 0x7C, 0x5A, 0x1F, 0x8F, 0x4D, 0x12, 0x45, 0x10, 0x62, 0x39, 0x28, 0x63, 0x83, 0x1A, 0x87, - 0xDB, 0xBB, 0x7B, 0x4E, 0xE8, 0xCD, 0xCB, 0xEB, 0x34, 0x61, 0x82, 0xE2, 0x32, 0x15, 0x45, 0x9A, - 0x21, 0x88, 0xE2, 0x24, 0x6B, 0xFB, 0xDE, 0x7B, 0xA3, 0x8D, 0x7B, 0xDE, 0x1D, 0x62, 0x11, 0x2D, - 0x26, 0x39, 0x82, 0x3E, 0x89, 0x44, 0x24, 0xA2, 0xFD, 0xA9, 0x6E, 0xFB, 0xEE, 0x69, 0xBB, 0xDD, - 0x57, 0xA7, 0xF5, 0xFE, 0x00, 0x10, 0x86, 0xFF, 0xF3, 0xFF, 0xF8, 0xEF, 0xCE, 0x57, 0xA5, 0x32, - 0x76, 0xBD, 0xDD, 0x73, 0x42, 0x86, 0x61, 0x80, 0x18, 0x2A, 0xE5, 0x10, 0x84, 0xDA, 0x38, 0x84, - 0x08, 0x0A, 0x90, 0x40, 0xC8, 0x90, 0x4D, 0x58, 0x98, 0x4D, 0x57, 0x00, 0x80, 0xE7, 0x5D, 0xE5, - 0x3C, 0x2E, 0xCB, 0x92, 0x12, 0x6C, 0xF4, 0x80, 0x08, 0xEB, 0xFB, 0xFE, 0x54, 0x3D, 0xFE, 0xFD, - 0x1F, 0xD7, 0x3A, 0x40, 0x80, 0x51, 0xB0, 0xE6, 0x6C, 0x36, 0xFD, 0xF4, 0xE6, 0xE5, 0xD0, 0x28, - 0xCE, 0x59, 0xC4, 0xE9, 0x66, 0x77, 0x20, 0x14, 0x97, 0x65, 0x7A, 0xFF, 0x7C, 0x7C, 0x5A, 0x1F, - 0x5E, 0x5D, 0xA4, 0xD7, 0x17, 0x33, 0xED, 0x08, 0xA1, 0xA2, 0xED, 0xBD, 0x87, 0x74, 0x7B, 0x38, - 0x31, 0x04, 0x66, 0xB9, 0xE0, 0x1C, 0x19, 0x7D, 0xA2, 0x34, 0x75, 0x3E, 0xC0, 0x30, 0x76, 0x5D, - 0x2D, 0x15, 0x1E, 0xF4, 0xD8, 0xC9, 0x1E, 0x7A, 0xC4, 0x68, 0x74, 0x76, 0x31, 0xEF, 0xA5, 0xED, - 0xFB, 0xA1, 0x28, 0x52, 0xAB, 0xFD, 0x62, 0x9A, 0x9C, 0x86, 0x61, 0x57, 0xD5, 0x5A, 0xEB, 0xE3, - 0xBE, 0x92, 0xFD, 0x88, 0x30, 0xBF, 0x38, 0x5B, 0x60, 0x04, 0x8D, 0x33, 0xDE, 0xFB, 0xBA, 0x69, - 0xCA, 0x24, 0x05, 0x10, 0xAE, 0x0F, 0xD5, 0xE1, 0xD4, 0x4D, 0x8B, 0xFC, 0xCB, 0x37, 0x37, 0xC7, - 0xBA, 0xE3, 0x82, 0x1F, 0xAA, 0xF6, 0x78, 0x3C, 0xCE, 0x67, 0x93, 0x61, 0x18, 0x29, 0xC1, 0xA3, - 0xD2, 0x59, 0xC4, 0xCA, 0x24, 0x7A, 0xD8, 0x1E, 0xCA, 0x2C, 0xF9, 0xE2, 0xE5, 0x62, 0x34, 0xAA, - 0x1B, 0xAD, 0x1C, 0x24, 0x44, 0x28, 0xCF, 0x72, 0xAD, 0x54, 0x96, 0x47, 0xFB, 0xFD, 0x09, 0x40, - 0x64, 0x9D, 0x3D, 0x54, 0x15, 0x44, 0x14, 0x43, 0x18, 0x20, 0x78, 0xF5, 0xEA, 0xEC, 0x7A, 0x31, - 0x0D, 0x20, 0xB4, 0x72, 0xE8, 0x3A, 0xED, 0x03, 0xF2, 0xDE, 0x1B, 0xE7, 0xA2, 0x28, 0x26, 0x18, - 0x1B, 0xE3, 0xBA, 0xBA, 0xE5, 0x02, 0x83, 0x10, 0xB8, 0xA0, 0x45, 0x2E, 0xAC, 0xE9, 0x1F, 0x1F, - 0x0F, 0x0C, 0xD3, 0x43, 0xDB, 0x1D, 0x9B, 0x6E, 0x9E, 0x89, 0x2F, 0x5E, 0x5D, 0xB4, 0xD2, 0x27, - 0x22, 0x3E, 0x5B, 0xAC, 0xEE, 0xD7, 0xEB, 0x53, 0x23, 0x47, 0xE3, 0x9D, 0x73, 0xCE, 0x59, 0xAD, - 0x8D, 0xF5, 0x80, 0x51, 0xBA, 0xDE, 0x1D, 0x2E, 0xCF, 0x96, 0x14, 0x03, 0xC6, 0xA3, 0xF3, 0x8B, - 0xCB, 0x5E, 0x0E, 0x8F, 0xDB, 0xD3, 0xC3, 0xF3, 0xFA, 0xB3, 0xAB, 0xE5, 0xA2, 0x4C, 0xFF, 0xEF, - 0xBF, 0xFD, 0xF5, 0xB4, 0x28, 0x00, 0x80, 0x9F, 0xBF, 0x79, 0xBD, 0x9A, 0x17, 0x9D, 0x1A, 0xFE, - 0xE3, 0xDF, 0xBD, 0x5B, 0x2E, 0x8A, 0x38, 0x25, 0x01, 0x50, 0xD9, 0x8D, 0x8B, 0x92, 0x7F, 0xB8, - 0x7D, 0xE0, 0xD9, 0x62, 0xBE, 0xB8, 0xBC, 0xFD, 0xFD, 0x5F, 0xFF, 0xEB, 0xBF, 0xFA, 0xE2, 0xF6, - 0x41, 0x6A, 0xEF, 0x4F, 0xC7, 0xFE, 0xE2, 0xC5, 0x65, 0x9E, 0x85, 0xBE, 0xE9, 0x07, 0xE9, 0xEB, - 0x5A, 0xFB, 0xE0, 0xA2, 0xA4, 0xD0, 0x16, 0x0E, 0xF5, 0x26, 0x49, 0xE3, 0xC7, 0x4D, 0x75, 0xAA, - 0x9A, 0xC5, 0x6C, 0x1E, 0x15, 0xB3, 0xB6, 0xDE, 0x31, 0x8A, 0x2F, 0xCE, 0x17, 0x79, 0x9E, 0xEC, - 0xAA, 0x36, 0xA6, 0x28, 0x66, 0x81, 0xA0, 0x00, 0x11, 0xC4, 0x98, 0x95, 0x69, 0x3E, 0x2A, 0xD5, - 0xF7, 0xC3, 0x74, 0x3A, 0xF3, 0x0E, 0x9C, 0xAA, 0x46, 0x29, 0x1D, 0x20, 0xEC, 0xA4, 0xA6, 0x84, - 0x3B, 0xE7, 0xA8, 0xC0, 0x59, 0xC2, 0xA6, 0x45, 0xEA, 0x9C, 0xDF, 0x6D, 0x77, 0x8F, 0x9B, 0xC3, - 0xA0, 0xD4, 0x8B, 0xB3, 0x19, 0x40, 0x30, 0x66, 0x78, 0x56, 0x4E, 0xAA, 0x4A, 0x8D, 0x56, 0x3F, - 0x6D, 0xF6, 0x93, 0x22, 0x87, 0x10, 0xCC, 0xCB, 0xDC, 0x05, 0x68, 0xAD, 0x2D, 0xCA, 0xD2, 0x9A, - 0xD1, 0x6A, 0xC5, 0x19, 0xEB, 0x95, 0xFD, 0xF1, 0xF6, 0x69, 0xB5, 0x9A, 0xC6, 0xB1, 0xC8, 0x62, - 0x91, 0x66, 0x6C, 0xD0, 0xF6, 0xB0, 0xAB, 0x17, 0xB3, 0xC9, 0xF3, 0xBE, 0x62, 0x51, 0x6A, 0xE5, - 0xF0, 0xA7, 0xDF, 0xDC, 0x8C, 0xCE, 0xFE, 0xDD, 0xAF, 0xDE, 0x0D, 0x83, 0x52, 0xD6, 0x29, 0x35, - 0x4E, 0xA7, 0xB9, 0xE0, 0x94, 0x10, 0xFA, 0xB8, 0xDD, 0x37, 0x4D, 0xE7, 0x5D, 0x88, 0x45, 0x74, - 0xB7, 0xDE, 0xC9, 0x61, 0x9C, 0x4F, 0xA7, 0x10, 0x41, 0x0C, 0x81, 0x20, 0xB8, 0xED, 0xDA, 0x7D, - 0xD3, 0xCE, 0xA7, 0x93, 0xB2, 0xC8, 0x39, 0x13, 0x71, 0x3A, 0xF9, 0xF0, 0xFE, 0xDD, 0x6C, 0x3A, - 0x3B, 0x5B, 0xCC, 0xB7, 0xDB, 0xED, 0x47, 0x4E, 0x68, 0xD4, 0xDA, 0xFB, 0x90, 0xA5, 0x1C, 0x62, - 0xD4, 0xC9, 0x61, 0x3E, 0xCB, 0x61, 0x70, 0x5C, 0x70, 0x07, 0x90, 0xF3, 0x60, 0xEC, 0x07, 0x1F, - 0x10, 0xE7, 0x74, 0xEC, 0x3B, 0xE8, 0x5C, 0x39, 0xCF, 0xF5, 0x30, 0xD6, 0x75, 0xFF, 0xCF, 0xFE, - 0xFC, 0xAB, 0x59, 0x96, 0x4A, 0x39, 0x1C, 0x9A, 0xC1, 0x79, 0x4B, 0x09, 0xD4, 0xCA, 0x00, 0x48, - 0x8C, 0xC5, 0x3E, 0x20, 0xCA, 0x41, 0x14, 0x11, 0x08, 0x3C, 0x12, 0xEC, 0x78, 0x68, 0xFB, 0x7E, - 0x28, 0x26, 0x85, 0x1A, 0x35, 0x40, 0x30, 0x66, 0x74, 0x39, 0x9B, 0x04, 0xEF, 0xBD, 0xF3, 0x8B, - 0x45, 0x99, 0xC4, 0x82, 0x13, 0xD1, 0x34, 0xED, 0x30, 0x8C, 0x7D, 0xD7, 0x10, 0x4C, 0x63, 0xCE, - 0xBA, 0xBE, 0xAB, 0xFB, 0xE6, 0x58, 0xB7, 0x11, 0x17, 0x75, 0xDD, 0x9F, 0x9D, 0x2F, 0xD2, 0x34, - 0x46, 0x18, 0x72, 0xC6, 0x3E, 0xEE, 0x17, 0x20, 0x8C, 0x30, 0xC1, 0x46, 0xAB, 0x5E, 0xAA, 0xFA, - 0x20, 0x8D, 0x0A, 0xC6, 0x2B, 0xEB, 0x6C, 0x96, 0x44, 0x5F, 0x7C, 0xF6, 0x5A, 0x20, 0xCC, 0x10, - 0xEF, 0xA4, 0x62, 0x8C, 0x0C, 0xAA, 0x5F, 0xEF, 0x8E, 0x1E, 0x84, 0xB6, 0x1B, 0xB2, 0x24, 0x22, - 0x94, 0x34, 0x9D, 0x8C, 0x38, 0x27, 0x84, 0x51, 0x22, 0x7C, 0xF0, 0xA3, 0x32, 0xDE, 0xDB, 0x22, - 0x67, 0x69, 0x9E, 0x58, 0x17, 0xA4, 0xB4, 0xBB, 0xFD, 0xC9, 0x6A, 0x47, 0x88, 0x35, 0x76, 0xDC, - 0x1F, 0x95, 0x36, 0x3E, 0x4F, 0xE9, 0xCD, 0xF5, 0x72, 0x39, 0x9B, 0x36, 0xED, 0x30, 0x18, 0x8F, - 0x31, 0xC3, 0x04, 0x1C, 0x0E, 0x07, 0xAF, 0x8D, 0x32, 0xE6, 0x77, 0xEF, 0x1E, 0x10, 0x66, 0xD6, - 0xD9, 0xF7, 0xF7, 0x4F, 0x93, 0x3C, 0xFB, 0xFC, 0xE6, 0xE5, 0xFE, 0x74, 0x48, 0xE2, 0x68, 0xBE, - 0x58, 0x4C, 0xCB, 0x49, 0x2C, 0x92, 0x57, 0x2F, 0x5F, 0x5B, 0x67, 0x0F, 0xA7, 0x1D, 0x42, 0x4C, - 0x0E, 0x63, 0x7D, 0xB8, 0xED, 0xDB, 0x26, 0x00, 0x96, 0xA5, 0x05, 0xA5, 0xFC, 0xEE, 0x79, 0x53, - 0x96, 0x85, 0xD1, 0x5A, 0x99, 0x51, 0x2B, 0xB3, 0x98, 0x9F, 0x93, 0x1F, 0x7E, 0x7C, 0xD8, 0xEF, - 0x4F, 0xB3, 0x79, 0x6C, 0x94, 0x6B, 0x1B, 0xBD, 0xD9, 0x1E, 0xAD, 0x77, 0xC3, 0x68, 0x9A, 0x5A, - 0x41, 0x04, 0x09, 0x42, 0x11, 0x27, 0x08, 0xFA, 0xCF, 0x6F, 0x32, 0x42, 0x48, 0x33, 0x1C, 0x29, - 0x61, 0x59, 0x42, 0x93, 0x24, 0x21, 0x8C, 0xC4, 0x1C, 0x3B, 0x97, 0x36, 0x7D, 0x7B, 0x52, 0xCF, - 0x08, 0xF5, 0x9F, 0x7F, 0x7E, 0x65, 0x90, 0xB0, 0x2E, 0x18, 0xA5, 0x5E, 0x2E, 0x16, 0xB2, 0x95, - 0x2E, 0xF8, 0x6E, 0x90, 0x6F, 0x3F, 0xEC, 0xA5, 0xD2, 0x11, 0x87, 0xBB, 0x8A, 0xF5, 0x83, 0x89, - 0x63, 0x3A, 0x2D, 0xCB, 0xC7, 0x67, 0xA9, 0x6D, 0x60, 0x91, 0xF9, 0xFB, 0xB7, 0x0F, 0x5D, 0xD7, - 0x5E, 0x9E, 0x9F, 0x67, 0x11, 0x47, 0x10, 0xC0, 0x1E, 0x45, 0x2C, 0x43, 0x88, 0x1A, 0x2B, 0xA5, - 0x54, 0x51, 0x54, 0xAE, 0xF2, 0xB4, 0xD5, 0x68, 0x81, 0xD1, 0x0F, 0x6F, 0xFF, 0xB0, 0x5F, 0x1F, - 0xAF, 0xAF, 0x2F, 0x3C, 0x02, 0x01, 0x85, 0xA6, 0xAD, 0xCC, 0x18, 0x30, 0x0A, 0xDD, 0x38, 0xBE, - 0x58, 0x14, 0x5C, 0x70, 0xF0, 0xEA, 0xA2, 0x6B, 0xC7, 0x63, 0x63, 0x22, 0x4E, 0xB3, 0x8C, 0x74, - 0xCA, 0x3E, 0x3D, 0x1F, 0xE6, 0x59, 0x91, 0xC6, 0x51, 0xD3, 0x36, 0xA3, 0x94, 0x82, 0xE0, 0xCF, - 0x5E, 0x5E, 0xA6, 0x69, 0x1A, 0x82, 0x1D, 0xC7, 0xD1, 0x59, 0x3B, 0x9F, 0x4E, 0xBA, 0xB6, 0x61, - 0x04, 0x71, 0x04, 0x10, 0xC7, 0x45, 0x84, 0xB5, 0xEA, 0x9D, 0x51, 0xC3, 0x10, 0xFA, 0x21, 0xDF, - 0x1E, 0x2B, 0x26, 0x18, 0xE5, 0x6C, 0x52, 0xE6, 0xB2, 0x1F, 0xF3, 0x32, 0x39, 0x1D, 0xEB, 0x61, - 0xD4, 0x1F, 0x27, 0x6B, 0x40, 0x80, 0xC6, 0x98, 0xC1, 0x38, 0x82, 0xB1, 0x55, 0x1A, 0x05, 0x72, - 0xFF, 0xBC, 0x7B, 0xDA, 0x6C, 0xE3, 0x2C, 0xF1, 0x1E, 0x30, 0x4A, 0xE5, 0xA8, 0x8D, 0xF3, 0xC3, - 0xE0, 0x37, 0xBB, 0x6E, 0x91, 0xE3, 0x9B, 0x17, 0x17, 0x51, 0x8C, 0xA3, 0x38, 0xA2, 0x44, 0x28, - 0x95, 0x5E, 0x2C, 0xE7, 0x10, 0x82, 0xBF, 0xFE, 0x9B, 0xDF, 0xD4, 0xC7, 0xFA, 0xDB, 0xCF, 0x2F, - 0x49, 0x84, 0x0B, 0x4C, 0x12, 0x2E, 0x6E, 0x1F, 0x1F, 0xEF, 0x9E, 0x36, 0x84, 0x8A, 0x28, 0x8A, - 0x4E, 0x7D, 0x6F, 0xAC, 0x3D, 0xB6, 0x72, 0x31, 0x99, 0x18, 0xEB, 0x3E, 0xA2, 0x83, 0xC6, 0xC3, - 0xD5, 0x74, 0xFE, 0x8B, 0xBF, 0xFB, 0xD5, 0x30, 0x2A, 0xE7, 0xEC, 0x2C, 0x4D, 0xFE, 0xF4, 0xAB, - 0x4F, 0xFE, 0xC3, 0xAF, 0x7E, 0x5B, 0x4E, 0xE6, 0x84, 0x90, 0x57, 0xAF, 0x2E, 0x38, 0x63, 0x6D, - 0xD7, 0xBC, 0xF9, 0x3C, 0xFE, 0xFE, 0x47, 0x4A, 0x29, 0x0A, 0xC0, 0x12, 0x86, 0x96, 0x0B, 0x66, - 0x7D, 0xB4, 0xBA, 0xBA, 0xF9, 0xEE, 0x4F, 0x96, 0xBF, 0xF8, 0xDB, 0x5F, 0x7D, 0xFB, 0xDD, 0x8D, - 0xA1, 0x8C, 0x24, 0x32, 0x66, 0xEC, 0xEA, 0xF5, 0x32, 0xE5, 0x18, 0xD8, 0x26, 0x66, 0xE4, 0xE1, - 0x59, 0x75, 0xDD, 0x78, 0x7E, 0x79, 0x56, 0xCC, 0xCF, 0x7E, 0xF3, 0x8B, 0xFF, 0xB8, 0x9C, 0x97, - 0xA7, 0xB6, 0x2F, 0x0B, 0x61, 0x9D, 0x4B, 0xCA, 0x89, 0x1C, 0x0E, 0x10, 0xF8, 0xD9, 0x62, 0x85, - 0xA8, 0xD8, 0x1E, 0xAB, 0xE0, 0x1D, 0x20, 0x2C, 0xCB, 0x33, 0x82, 0x21, 0xE3, 0x42, 0x8F, 0x1A, - 0x53, 0xC4, 0xB0, 0x68, 0xFA, 0xE1, 0xFE, 0x61, 0x93, 0xC4, 0x29, 0x42, 0xF8, 0x67, 0xDF, 0x7D, - 0xF9, 0xE1, 0x7E, 0x7B, 0xF7, 0xF0, 0x3D, 0xE3, 0xBC, 0x2C, 0xB3, 0xBA, 0x6D, 0x9D, 0x8F, 0xFB, - 0x41, 0xEB, 0x51, 0x5F, 0x9F, 0x2F, 0x0F, 0xCD, 0xC8, 0x38, 0x1A, 0x94, 0xDE, 0x1F, 0xDB, 0xB2, - 0x14, 0x8B, 0xD5, 0x02, 0x41, 0xD5, 0xB5, 0xDD, 0xB4, 0x48, 0xF3, 0x2C, 0x8F, 0x04, 0x7B, 0x7E, - 0x7C, 0x5A, 0x2E, 0x17, 0xDA, 0x3A, 0x8A, 0x70, 0x00, 0x24, 0xCF, 0x59, 0x14, 0xF1, 0x68, 0x30, - 0xE5, 0x37, 0xAF, 0x27, 0x93, 0xCC, 0x68, 0xD0, 0x77, 0x92, 0x00, 0x94, 0x0A, 0x3A, 0x7D, 0x73, - 0xD6, 0xF6, 0x43, 0x92, 0xF2, 0x41, 0x19, 0x63, 0x6D, 0xD3, 0xB5, 0x79, 0x96, 0x7D, 0xF6, 0xC9, - 0xCB, 0x76, 0x1C, 0xEB, 0xAA, 0xCE, 0x93, 0x94, 0x52, 0x88, 0x09, 0xA4, 0x0C, 0x9F, 0x9D, 0x65, - 0x5C, 0xD0, 0xC3, 0xA1, 0x1D, 0x3A, 0x35, 0x5A, 0x1D, 0x40, 0xB9, 0x98, 0x4C, 0x9F, 0x9E, 0x37, - 0xD6, 0xE8, 0x46, 0x1A, 0x82, 0xD1, 0x6A, 0x3A, 0xBD, 0xBE, 0x5C, 0x05, 0x8F, 0xB4, 0x0D, 0x4D, - 0x5D, 0x7D, 0x7A, 0x73, 0xFE, 0xE9, 0xCD, 0xBC, 0xEF, 0x54, 0xCC, 0x0A, 0x4A, 0x67, 0xD6, 0xC1, - 0x1F, 0x1F, 0x36, 0x75, 0x33, 0x20, 0x00, 0x18, 0xC1, 0x1A, 0xE2, 0x49, 0x92, 0xDF, 0x3D, 0xAE, - 0xD5, 0xAE, 0xC9, 0x53, 0xE6, 0x02, 0x00, 0x84, 0xF5, 0x6D, 0xD7, 0x9C, 0x5C, 0x1E, 0xF3, 0x2C, - 0xE5, 0xA6, 0xEF, 0x5F, 0x5E, 0x9F, 0x2F, 0x7F, 0x3A, 0xCD, 0x12, 0x21, 0x7B, 0x0D, 0x29, 0x5F, - 0x2D, 0x23, 0x42, 0x89, 0x33, 0xEE, 0xF1, 0x79, 0xED, 0x4C, 0x30, 0xDA, 0xBE, 0xBD, 0xDF, 0x58, - 0xAB, 0x5F, 0x5D, 0xCF, 0xEB, 0xBA, 0x8D, 0xB3, 0x58, 0x8D, 0x3A, 0x00, 0x38, 0x8E, 0x2E, 0x4A, - 0xE3, 0xE6, 0xD4, 0xCC, 0x27, 0xF9, 0x3E, 0xD4, 0x84, 0xE0, 0xCB, 0xB3, 0xB9, 0x0F, 0x60, 0xB9, - 0x98, 0xCB, 0xAA, 0x05, 0x41, 0xC7, 0x71, 0x98, 0x16, 0x45, 0x2F, 0x43, 0xDB, 0x5B, 0x15, 0x60, - 0x40, 0xEC, 0xEA, 0xE2, 0x2A, 0x8E, 0x44, 0x51, 0xB4, 0x5C, 0x08, 0x6D, 0x8C, 0x57, 0xC1, 0x28, - 0xE8, 0xA1, 0x6E, 0xEB, 0x1E, 0x53, 0x26, 0x62, 0x01, 0x02, 0xF4, 0x84, 0x4C, 0xCE, 0x4B, 0x6C, - 0x7D, 0xD3, 0x0D, 0x8C, 0x11, 0xC1, 0xD9, 0xDD, 0xD3, 0x16, 0x04, 0xC0, 0x19, 0x8F, 0x38, 0x4F, - 0xA0, 0x90, 0x52, 0x3F, 0x6E, 0xAA, 0xBB, 0xC7, 0x0D, 0x63, 0x2C, 0xCB, 0x12, 0x1F, 0x82, 0x33, - 0x96, 0x0B, 0x26, 0x78, 0x84, 0x61, 0xE0, 0x9C, 0xE4, 0x79, 0x16, 0x73, 0x7A, 0x38, 0xD6, 0xBF, - 0x7B, 0xFB, 0x60, 0x5C, 0x10, 0x82, 0x66, 0x79, 0x7C, 0x76, 0x5E, 0x7A, 0x63, 0x3C, 0xCC, 0x47, - 0x75, 0x7C, 0x78, 0xDE, 0x6F, 0x0F, 0xD5, 0xFE, 0xD8, 0x72, 0xFA, 0xBD, 0xD1, 0x1A, 0xD3, 0xE8, - 0xFC, 0xFC, 0x65, 0x1C, 0x51, 0x4E, 0xA9, 0xF1, 0x26, 0x2F, 0xCA, 0x6F, 0x10, 0xE2, 0x51, 0xF6, - 0xC3, 0xDD, 0x73, 0x51, 0xCE, 0x30, 0x66, 0x49, 0x42, 0x9F, 0xB6, 0xFB, 0xFE, 0x78, 0xE8, 0xB4, - 0xB9, 0x7F, 0x3E, 0xE4, 0xA9, 0xF8, 0xE5, 0xEF, 0x7E, 0x3D, 0x9F, 0xCE, 0xE6, 0xB3, 0x65, 0x00, - 0x38, 0x11, 0x71, 0xDD, 0xE9, 0x7F, 0xF8, 0xFE, 0xBD, 0x32, 0xF6, 0xF3, 0x37, 0x5F, 0x7D, 0xFA, - 0xFA, 0xCD, 0xEB, 0x17, 0x04, 0x22, 0xA8, 0x95, 0x32, 0x1A, 0x11, 0x12, 0x19, 0xAB, 0xF1, 0x4F, - 0x7F, 0x72, 0x03, 0x20, 0xBC, 0x7F, 0xD8, 0x7F, 0xB8, 0xDD, 0xB5, 0x9D, 0x3A, 0x56, 0xF5, 0xE1, - 0x58, 0xC7, 0x31, 0x3F, 0x9C, 0xDA, 0xBE, 0x37, 0x4A, 0x1B, 0x46, 0x7D, 0x00, 0x63, 0x37, 0xC8, - 0xAA, 0x1D, 0x02, 0xD0, 0x6D, 0x2B, 0x23, 0x11, 0x85, 0xE0, 0x94, 0x91, 0xB5, 0xEC, 0xDE, 0xDE, - 0xEE, 0xFF, 0xBF, 0x5F, 0x7E, 0xFF, 0xB0, 0x3E, 0x68, 0x1D, 0x30, 0x25, 0x71, 0x9C, 0xB6, 0x4D, - 0xE7, 0xAC, 0x69, 0xA5, 0x14, 0x09, 0x9D, 0xCD, 0x93, 0xA2, 0xE0, 0x69, 0x26, 0x48, 0xCC, 0x09, - 0x06, 0xC7, 0xA6, 0xF3, 0x1E, 0x16, 0x69, 0x62, 0x74, 0xB0, 0x1E, 0x5B, 0x80, 0x1F, 0xB6, 0x95, - 0xF5, 0x21, 0x89, 0x45, 0xC2, 0xE9, 0xA0, 0xC6, 0xED, 0xA9, 0xDD, 0xD7, 0xFD, 0xF3, 0xA1, 0x5A, - 0x1F, 0xFB, 0x63, 0xA3, 0x06, 0xE5, 0xBD, 0x85, 0xBB, 0x93, 0x6C, 0xA5, 0xC3, 0xD0, 0x5F, 0x2C, - 0x27, 0x45, 0x16, 0x9D, 0x1A, 0x89, 0xBD, 0x32, 0xAA, 0xA9, 0x1A, 0x29, 0xD5, 0xD0, 0x76, 0xE3, - 0xA7, 0xAF, 0x5E, 0x30, 0x4C, 0x4F, 0xA7, 0x91, 0xB2, 0x28, 0x00, 0x72, 0x75, 0x3E, 0x85, 0x10, - 0x07, 0x88, 0xB5, 0x76, 0x08, 0xE2, 0xEB, 0xB3, 0x95, 0x1A, 0xD5, 0x1F, 0x7F, 0xBC, 0x9B, 0x4D, - 0x8A, 0x6F, 0x3F, 0x7B, 0x45, 0x69, 0xE2, 0x00, 0x6A, 0x8E, 0x7B, 0x0A, 0xCC, 0x7C, 0x56, 0x9C, - 0x9A, 0x56, 0x0D, 0x27, 0x86, 0x21, 0x70, 0x3E, 0x89, 0x84, 0x60, 0x10, 0x38, 0x17, 0x47, 0xAC, - 0xCC, 0x45, 0xDB, 0xC8, 0xDD, 0xB1, 0x3E, 0x56, 0xED, 0x24, 0xCF, 0x81, 0x0B, 0x7D, 0x3F, 0x60, - 0x08, 0x8D, 0x52, 0x49, 0x9C, 0x1E, 0x9B, 0xB1, 0x9C, 0xA4, 0xCB, 0x59, 0xD9, 0x34, 0x9D, 0xD1, - 0x5A, 0x08, 0xFC, 0xE6, 0xC5, 0x95, 0x60, 0xC9, 0x87, 0x87, 0xE7, 0x2C, 0x4E, 0x08, 0xC5, 0x4D, - 0xD3, 0xAA, 0x61, 0x3C, 0x1E, 0x9B, 0x69, 0x1A, 0x57, 0x75, 0x47, 0x09, 0xFD, 0x27, 0x3F, 0x7D, - 0xE9, 0x80, 0xFD, 0x70, 0xBF, 0xBF, 0xBF, 0x3F, 0x9C, 0xEA, 0xF6, 0xF6, 0x76, 0xBB, 0xDB, 0x77, - 0x08, 0xC3, 0xB3, 0xD5, 0xF4, 0xEA, 0x72, 0x19, 0x82, 0x3F, 0x9D, 0x3A, 0xAB, 0xD4, 0x30, 0x8E, - 0x9B, 0x7D, 0x15, 0x30, 0xC5, 0x88, 0xDC, 0x3F, 0x3E, 0xB5, 0x9D, 0xF4, 0x20, 0x1C, 0xAB, 0x06, - 0x42, 0xB0, 0x39, 0xD4, 0x04, 0xA1, 0xFD, 0xA9, 0x3A, 0xBF, 0x7A, 0x79, 0xD8, 0x3E, 0x57, 0x75, - 0x13, 0xC5, 0xC9, 0x97, 0x9F, 0xBC, 0xF8, 0x57, 0xFF, 0xC5, 0xCF, 0x7E, 0xFF, 0xEE, 0xEE, 0x3F, - 0xFD, 0xE6, 0xFB, 0xC5, 0x62, 0xF5, 0x93, 0xEF, 0xFE, 0x6C, 0x92, 0xD3, 0xBA, 0xD9, 0xDA, 0xB1, - 0x0A, 0xC6, 0xF4, 0xCA, 0x42, 0x84, 0x2E, 0xAF, 0xA6, 0xCE, 0x48, 0x04, 0xE9, 0x62, 0x9E, 0xE6, - 0xDC, 0x0C, 0xF5, 0xDD, 0xC5, 0x45, 0xCA, 0x08, 0xB0, 0x66, 0x78, 0x75, 0x9E, 0x7B, 0x67, 0x09, - 0x04, 0xCE, 0xA8, 0xA6, 0xE9, 0x1D, 0xC4, 0xC7, 0xD3, 0x68, 0x8C, 0x0E, 0x48, 0x38, 0x5B, 0x4D, - 0x67, 0xC2, 0x38, 0x3F, 0x9D, 0xA5, 0x8B, 0xCB, 0x15, 0x8F, 0xE6, 0xDB, 0xDD, 0xCE, 0x7B, 0x54, - 0x94, 0xD3, 0x80, 0x28, 0x26, 0xAC, 0xDA, 0x6F, 0x9F, 0x1F, 0x36, 0x14, 0x53, 0x00, 0xE0, 0xDD, - 0xFD, 0xAE, 0xEB, 0x06, 0x6D, 0xFD, 0xFB, 0xF7, 0x5B, 0x00, 0x21, 0x63, 0x14, 0x22, 0x54, 0xD7, - 0xDD, 0xF1, 0xD8, 0xD6, 0xDD, 0xA0, 0x8C, 0xF5, 0x21, 0x6C, 0xF6, 0xC7, 0x51, 0xE9, 0xE0, 0xBD, - 0xF3, 0xBE, 0xE9, 0x86, 0x61, 0xB4, 0x9D, 0xD4, 0x8B, 0x69, 0x39, 0x9B, 0x24, 0x88, 0x12, 0x88, - 0x08, 0x15, 0xD8, 0xF9, 0x60, 0x47, 0x4F, 0x30, 0xE6, 0x2C, 0x2C, 0x66, 0x49, 0x99, 0xA5, 0x7A, - 0xD4, 0xD7, 0xE7, 0xAB, 0xD5, 0xA2, 0xC0, 0x84, 0x6D, 0x76, 0xA7, 0xBC, 0xE0, 0x16, 0x90, 0xED, - 0xAE, 0x99, 0x16, 0x29, 0x86, 0xE8, 0x58, 0x75, 0x51, 0xC4, 0x41, 0x08, 0x94, 0x62, 0xEF, 0x82, - 0x0F, 0x80, 0x32, 0x02, 0x43, 0x58, 0xCD, 0xCB, 0x2C, 0x62, 0x9C, 0x90, 0xED, 0xA1, 0x81, 0x18, - 0xAE, 0x96, 0x79, 0xD3, 0x48, 0x29, 0xC7, 0xC3, 0xA9, 0xDD, 0x57, 0x7D, 0x5D, 0x0F, 0xBB, 0x6D, - 0x9D, 0xE7, 0x59, 0x31, 0xCD, 0xA6, 0xD3, 0x82, 0x22, 0x54, 0x66, 0xEC, 0xCB, 0xCF, 0xAE, 0xA7, - 0x45, 0x51, 0x64, 0xD9, 0x3F, 0xFD, 0xF9, 0x57, 0xF3, 0x69, 0x52, 0xE4, 0x49, 0xCC, 0xA9, 0xB6, - 0x36, 0xA2, 0x60, 0x39, 0x89, 0x77, 0x87, 0x4A, 0x8D, 0xF6, 0x7C, 0x5E, 0xCE, 0xA7, 0x45, 0x9E, - 0xB2, 0x17, 0x97, 0x93, 0x32, 0x8D, 0x2E, 0x17, 0xE5, 0xF5, 0x59, 0x9E, 0x70, 0x76, 0xFF, 0xB4, - 0x33, 0xD6, 0xBE, 0xB8, 0x9A, 0x9D, 0xAF, 0xA6, 0x57, 0x67, 0x8B, 0xC5, 0xB4, 0x7C, 0x7A, 0xDA, - 0x49, 0xD9, 0x5F, 0xAC, 0x32, 0x65, 0xED, 0x64, 0x52, 0x9C, 0x2D, 0x56, 0xCF, 0xEB, 0x36, 0x00, - 0x34, 0x68, 0xD3, 0x49, 0xD5, 0x76, 0xC3, 0xC3, 0xC3, 0x3E, 0x40, 0x7C, 0x71, 0xB9, 0x58, 0xCD, - 0x27, 0x4D, 0xDF, 0xDD, 0x3E, 0xAC, 0x47, 0xA5, 0x16, 0xD3, 0xC9, 0x76, 0x7F, 0x94, 0xBD, 0x2A, - 0x26, 0xD9, 0xFD, 0xFD, 0x66, 0x1C, 0xF5, 0x20, 0x07, 0xEF, 0xFC, 0x7C, 0x3A, 0x35, 0x4A, 0xC3, - 0x00, 0x8B, 0x24, 0x59, 0x4C, 0x0A, 0xA3, 0xEC, 0xF3, 0xF3, 0x5E, 0x29, 0xED, 0x02, 0x7A, 0x5E, - 0x1F, 0x76, 0xA7, 0x4A, 0x79, 0x6B, 0x83, 0x03, 0x88, 0x1A, 0x1B, 0x20, 0x20, 0x4A, 0x99, 0x0F, - 0x1F, 0x9E, 0xC7, 0x41, 0x77, 0xED, 0x78, 0x7B, 0xF7, 0x7C, 0xFF, 0xB8, 0x11, 0x82, 0x03, 0x88, - 0xFA, 0x56, 0x9E, 0x6A, 0x79, 0xDA, 0x57, 0xDA, 0x58, 0x40, 0x10, 0xE3, 0x22, 0x38, 0xFF, 0xB1, - 0xFB, 0xDB, 0xF6, 0xE3, 0x7A, 0x7F, 0xDA, 0xD7, 0xCD, 0xA1, 0xEE, 0x06, 0xE3, 0xF3, 0x49, 0x02, - 0x29, 0xFA, 0x68, 0x65, 0x3E, 0x6F, 0x0E, 0x84, 0x92, 0x43, 0xDD, 0x00, 0x08, 0x3B, 0x39, 0x48, - 0x39, 0x36, 0x9D, 0x74, 0xCE, 0x2B, 0x65, 0x5B, 0x69, 0x46, 0xEB, 0xAC, 0x73, 0xA3, 0x36, 0xC7, - 0xBA, 0x9D, 0x96, 0x65, 0x56, 0x4C, 0xA2, 0xA8, 0x0C, 0x01, 0x12, 0x82, 0x9B, 0xAE, 0x2F, 0xB2, - 0xDC, 0xFB, 0xA0, 0xB4, 0xA7, 0x98, 0x6E, 0xF7, 0x55, 0x27, 0xD5, 0xD3, 0xF6, 0x74, 0xF7, 0xB4, - 0x3B, 0x54, 0xB2, 0x1F, 0x95, 0x36, 0xC3, 0xF9, 0x62, 0xCE, 0x44, 0x4C, 0x18, 0xAD, 0xBB, 0xBE, - 0xAA, 0x07, 0xCE, 0xA2, 0x38, 0x9B, 0xB6, 0x83, 0xF3, 0x80, 0x50, 0x22, 0xCA, 0x24, 0xAF, 0xAB, - 0xB6, 0xED, 0xBA, 0x63, 0xD5, 0xD6, 0x9D, 0x62, 0x4C, 0x7C, 0xF1, 0xE9, 0x97, 0x6D, 0xD3, 0x0C, - 0x4A, 0x87, 0x78, 0x01, 0x30, 0xE6, 0xA1, 0x02, 0xC0, 0x30, 0xEC, 0xE0, 0xFF, 0xF2, 0x3F, 0xFD, - 0xF7, 0xBB, 0x43, 0xFD, 0xFD, 0x8F, 0x0F, 0xFB, 0xAA, 0xA9, 0xDA, 0x61, 0x54, 0x9A, 0x52, 0x7E, - 0xB6, 0x8A, 0xE5, 0xA0, 0xBE, 0x7F, 0xBB, 0x4E, 0x12, 0xFA, 0xC5, 0x27, 0xD3, 0x61, 0x18, 0xA5, - 0x52, 0x6F, 0x5E, 0x5C, 0xDD, 0xBC, 0xB8, 0x4A, 0x78, 0x2C, 0x04, 0x33, 0xCE, 0x76, 0xA3, 0x46, - 0x04, 0x3B, 0x6B, 0x21, 0xC4, 0xC6, 0x04, 0xA3, 0x64, 0xD3, 0x8D, 0x7D, 0x6F, 0xFB, 0xBE, 0x9B, - 0x2F, 0x0A, 0xCC, 0x88, 0xB1, 0x7E, 0x3E, 0xCD, 0x0B, 0xCE, 0x20, 0xF0, 0x49, 0xC6, 0xB3, 0x3C, - 0x1D, 0x8C, 0xFA, 0xFE, 0xF7, 0x1F, 0xB0, 0xE7, 0x8C, 0xF2, 0x7D, 0x35, 0x54, 0xBD, 0x36, 0x01, - 0x01, 0x60, 0xEB, 0x6A, 0xDB, 0xF4, 0x26, 0x49, 0x32, 0x67, 0xAD, 0x73, 0xDE, 0xF9, 0x70, 0xBE, - 0x2C, 0xF3, 0x4C, 0x5C, 0x9D, 0x17, 0x31, 0x47, 0xC6, 0x04, 0x17, 0x50, 0x73, 0xA8, 0xAD, 0x1C, - 0xE6, 0xCB, 0xB9, 0x0A, 0xA0, 0x6F, 0xF7, 0x80, 0xB0, 0xB6, 0xEF, 0x10, 0xF4, 0xD3, 0xC9, 0xF2, - 0x78, 0x90, 0x49, 0x46, 0x26, 0xF9, 0xC4, 0x06, 0x98, 0x26, 0x74, 0x3A, 0x15, 0x2E, 0x60, 0xA5, - 0x3D, 0xA5, 0x28, 0x62, 0xA4, 0xDE, 0xF7, 0xFB, 0xAA, 0xD5, 0x1E, 0x5D, 0x9C, 0x15, 0xFD, 0xF1, - 0xD4, 0x0E, 0x84, 0x32, 0x4A, 0x5C, 0x43, 0x78, 0x78, 0xDA, 0xD6, 0xDB, 0x43, 0x73, 0xBD, 0x2A, - 0xEC, 0xE8, 0x08, 0x61, 0x80, 0x50, 0x67, 0x87, 0x2C, 0x8B, 0x94, 0x03, 0xC1, 0x03, 0x6B, 0x1C, - 0x08, 0xFE, 0xE1, 0x71, 0xF7, 0xFA, 0xF5, 0x45, 0x44, 0x99, 0x0D, 0xFE, 0xF6, 0xFE, 0xFE, 0x72, - 0xB5, 0xDA, 0x1D, 0xAB, 0x63, 0xD7, 0x2F, 0x56, 0x93, 0xEA, 0xD8, 0x56, 0x55, 0xBB, 0x98, 0x67, - 0x45, 0x19, 0x2F, 0x67, 0xF3, 0xE0, 0xC9, 0xDD, 0xDD, 0x23, 0xC6, 0xB8, 0x1F, 0x54, 0x31, 0x89, - 0x8D, 0x52, 0x4D, 0x3D, 0xCE, 0x67, 0xF9, 0xDD, 0xE3, 0xEE, 0x4F, 0xBF, 0xBD, 0x81, 0xC0, 0xEF, - 0x4E, 0x95, 0x31, 0x7E, 0xBD, 0xA9, 0x29, 0xC5, 0x59, 0x9A, 0x74, 0xFD, 0x00, 0x81, 0xBF, 0xB8, - 0x98, 0x8F, 0x83, 0x1B, 0x86, 0x76, 0xB9, 0x2C, 0x82, 0x37, 0x75, 0x3B, 0x68, 0xED, 0x9D, 0xC5, - 0xD5, 0x51, 0x2A, 0xAD, 0x29, 0x25, 0x10, 0xC1, 0x62, 0x22, 0x70, 0x60, 0x88, 0xB0, 0x9B, 0xAB, - 0xD9, 0xB4, 0x2C, 0x02, 0xE4, 0x66, 0x6C, 0xAD, 0x83, 0x6A, 0x54, 0x88, 0xD0, 0xC5, 0x2C, 0xDF, - 0x57, 0x8D, 0xB5, 0x36, 0x2B, 0x4A, 0x1C, 0x2F, 0xFA, 0xF6, 0x3D, 0x85, 0x92, 0x04, 0x6E, 0x0D, - 0xD4, 0x44, 0x9B, 0x20, 0x60, 0x38, 0xF5, 0x6D, 0x83, 0x20, 0x03, 0x40, 0xBB, 0x7E, 0x30, 0xDA, - 0x27, 0xF3, 0x8C, 0x20, 0x88, 0xBC, 0xF1, 0xDE, 0x69, 0x63, 0xAD, 0x85, 0xCB, 0x79, 0x71, 0x6C, - 0x3A, 0x69, 0xB1, 0xEC, 0xD4, 0xAB, 0x17, 0xD7, 0x6F, 0xDF, 0x57, 0x17, 0x67, 0x98, 0xB2, 0xE8, - 0xFE, 0x51, 0x96, 0x25, 0xE9, 0xA5, 0xAD, 0xEA, 0x5E, 0x8D, 0xED, 0xE5, 0x6A, 0xA1, 0x03, 0xDE, - 0x1F, 0xEA, 0xFD, 0xB6, 0xAA, 0x4F, 0x2D, 0x65, 0xEC, 0x8B, 0x2F, 0x3E, 0x49, 0x53, 0x32, 0x48, - 0x29, 0xDB, 0x91, 0x32, 0x9A, 0x67, 0x99, 0xB3, 0x9E, 0x12, 0x58, 0x94, 0x31, 0x0C, 0xE8, 0xF1, - 0xE1, 0x74, 0xB7, 0xDE, 0x4E, 0xCA, 0x02, 0x23, 0xB4, 0xDB, 0x1F, 0x44, 0x92, 0x96, 0x59, 0x9C, - 0xA5, 0xA2, 0x69, 0xFA, 0xDD, 0xA9, 0xBD, 0x3C, 0x3F, 0xB3, 0x5A, 0x47, 0x82, 0xCC, 0xE6, 0x13, - 0xC1, 0xE8, 0x38, 0x0E, 0xF3, 0x49, 0x66, 0x46, 0xF5, 0xF8, 0xF4, 0x14, 0x47, 0xE4, 0xEC, 0xAC, - 0x84, 0xCE, 0xCF, 0xCA, 0x05, 0xC5, 0x34, 0x4B, 0x89, 0x54, 0x76, 0x7F, 0xA8, 0x08, 0x8B, 0x1B, - 0xE9, 0x81, 0x77, 0x89, 0x60, 0xC6, 0xFA, 0xDD, 0xA9, 0x3E, 0x1C, 0x6A, 0x1E, 0xD1, 0xA2, 0x88, - 0xBB, 0x61, 0xBC, 0xBA, 0x98, 0x05, 0x1B, 0xAC, 0x35, 0x49, 0x12, 0xA5, 0x9C, 0xAE, 0xB7, 0xBB, - 0x61, 0xF0, 0xD3, 0xF9, 0xDC, 0x01, 0x7B, 0x3C, 0xB5, 0x55, 0x33, 0xEC, 0x8F, 0x95, 0xF3, 0x20, - 0x12, 0x3C, 0x8D, 0xA3, 0x38, 0xE2, 0x2E, 0xF8, 0xD9, 0x3C, 0xC7, 0x1E, 0x46, 0x0C, 0x11, 0x4A, - 0xAC, 0xF3, 0xF3, 0xB3, 0xD4, 0x18, 0x1D, 0x20, 0xB0, 0x2E, 0x0C, 0xA3, 0x62, 0x9C, 0x9B, 0xD1, - 0xBE, 0xFD, 0xFE, 0x69, 0xBB, 0x3D, 0x5C, 0x5F, 0x5C, 0x20, 0x08, 0x4F, 0x4D, 0x8F, 0x31, 0x0A, - 0xC1, 0xCD, 0xA7, 0x25, 0xC1, 0x70, 0x31, 0x4B, 0xD4, 0xA8, 0xF7, 0x75, 0x37, 0x29, 0xD3, 0xE5, - 0xBC, 0xEC, 0x07, 0x83, 0x10, 0x1D, 0xA4, 0x7A, 0xDA, 0x57, 0x55, 0x7D, 0xEA, 0xFA, 0x46, 0x6A, - 0xF0, 0xF2, 0xEC, 0x0C, 0x05, 0x64, 0xBD, 0x8F, 0x62, 0xDE, 0xF6, 0x6D, 0x2F, 0xD5, 0xF6, 0x50, - 0x3F, 0x6F, 0x8E, 0x37, 0x2F, 0x2E, 0x5E, 0x9C, 0x4F, 0x17, 0x8B, 0xCC, 0x21, 0x5F, 0x1D, 0xA5, - 0x36, 0x5E, 0x8D, 0xEA, 0xEE, 0xE1, 0x99, 0x70, 0x92, 0x24, 0xA2, 0x3E, 0xF4, 0x18, 0xE3, 0x2F, - 0xDE, 0x5C, 0xCF, 0xE7, 0xA5, 0x33, 0x5E, 0x4A, 0xFD, 0xE2, 0xF2, 0x4C, 0xF6, 0xFD, 0x72, 0x3E, - 0x31, 0xCE, 0xAF, 0x37, 0x87, 0xCD, 0xEE, 0x38, 0x9B, 0x95, 0x10, 0x85, 0xAA, 0x3B, 0x58, 0x6B, - 0x16, 0xCB, 0x49, 0x00, 0xE8, 0xEE, 0xF1, 0x04, 0x2C, 0x49, 0x63, 0x5E, 0xE4, 0x3C, 0x8D, 0x12, - 0x0C, 0xF1, 0x2F, 0x7E, 0xF5, 0xF7, 0x83, 0xD2, 0xD7, 0x2F, 0xCE, 0x79, 0xC4, 0x9B, 0xB6, 0x27, - 0x91, 0xE8, 0x4E, 0xED, 0x30, 0xA8, 0xE5, 0xD5, 0x19, 0x81, 0xE8, 0xB8, 0x3B, 0xA6, 0x79, 0xB4, - 0x58, 0x4C, 0x02, 0x80, 0x5D, 0x3D, 0x08, 0x42, 0x29, 0xA7, 0x3F, 0x7C, 0x78, 0x36, 0xC6, 0x2E, - 0x16, 0x25, 0xC1, 0x28, 0x8E, 0xF8, 0xF3, 0xE3, 0xDE, 0x5A, 0x77, 0xEA, 0x3A, 0xC1, 0x99, 0x1A, - 0x4D, 0x96, 0x25, 0xCE, 0xB8, 0x8F, 0x37, 0x04, 0x00, 0x7C, 0x78, 0xDA, 0x12, 0x2E, 0x8C, 0x31, - 0x93, 0x22, 0x61, 0x18, 0x9E, 0x9F, 0x5D, 0x30, 0x9E, 0x0F, 0xC3, 0x10, 0x11, 0x5B, 0x64, 0x0C, - 0x23, 0x7C, 0x38, 0x9D, 0x16, 0xB3, 0x02, 0x04, 0xB4, 0xD9, 0x57, 0x00, 0x80, 0x53, 0xD3, 0x2E, - 0x26, 0x05, 0xC6, 0xB0, 0xEB, 0x86, 0x51, 0xAB, 0x7E, 0x1C, 0x77, 0x87, 0x8A, 0x33, 0x31, 0x5F, - 0x5D, 0x11, 0x16, 0xA9, 0xBE, 0x82, 0x98, 0xA4, 0xE5, 0xB2, 0x5C, 0x5C, 0x04, 0xEF, 0x37, 0xEF, - 0x7E, 0x7B, 0xFB, 0xFE, 0x6D, 0x9A, 0x17, 0xFB, 0xEA, 0x04, 0x20, 0x9D, 0x4C, 0x4A, 0xC1, 0x58, - 0x2B, 0x47, 0x4E, 0x09, 0x80, 0x30, 0x16, 0x9E, 0x21, 0x29, 0x47, 0xBD, 0xD9, 0x9E, 0xC8, 0xED, - 0xC3, 0x2E, 0x8B, 0xE3, 0x6F, 0x3F, 0x7F, 0x33, 0x8C, 0xFA, 0x77, 0xEF, 0xEE, 0x1F, 0xF7, 0xB5, - 0x32, 0xBA, 0x97, 0x87, 0x51, 0xF9, 0xB3, 0x39, 0xA1, 0x14, 0x5A, 0x0F, 0x94, 0xF2, 0x5F, 0xDD, - 0x7C, 0x76, 0xBE, 0xBA, 0x94, 0xD2, 0x34, 0x7D, 0x67, 0x8C, 0xEE, 0x07, 0x75, 0xAA, 0x25, 0xA6, - 0x74, 0x94, 0xC3, 0xA4, 0xCC, 0x84, 0x10, 0x79, 0x22, 0xCA, 0x69, 0xBE, 0x38, 0xC3, 0x8F, 0x0F, - 0x78, 0x96, 0x97, 0x79, 0x96, 0x29, 0x6B, 0x93, 0x58, 0x4C, 0x52, 0x4C, 0x31, 0x82, 0x38, 0x3C, - 0x3E, 0xEE, 0xE2, 0x88, 0x7E, 0xF6, 0xFA, 0x42, 0xF0, 0xD8, 0x6A, 0x10, 0xA7, 0x7D, 0xD6, 0xF5, - 0x93, 0x49, 0x16, 0xBC, 0x6D, 0xFA, 0x3C, 0x04, 0xF4, 0xF0, 0x78, 0x6C, 0x7B, 0xE9, 0x3C, 0xFC, - 0xEE, 0xCB, 0xCB, 0x4F, 0x6F, 0x16, 0xBD, 0x1A, 0xEB, 0x7A, 0x0C, 0x01, 0x76, 0x43, 0xBF, 0x5C, - 0x94, 0xD3, 0x62, 0xD5, 0x54, 0x5D, 0xC4, 0xE8, 0xCB, 0x49, 0xF6, 0xB0, 0x03, 0xEF, 0x9F, 0x76, - 0xE7, 0x67, 0xC5, 0xB4, 0x28, 0x84, 0x48, 0x62, 0xDE, 0x4C, 0xE7, 0x91, 0x77, 0x28, 0xCF, 0x12, - 0x11, 0x61, 0xED, 0xD4, 0x60, 0x34, 0x22, 0xD6, 0xDA, 0x10, 0x78, 0x9A, 0x4C, 0x48, 0x3C, 0x9F, - 0x21, 0x84, 0xA7, 0x45, 0xEA, 0xCE, 0x22, 0xA3, 0x5C, 0x96, 0x64, 0x9B, 0x0D, 0x56, 0xBD, 0x5C, - 0x7E, 0x96, 0x13, 0x8A, 0xBC, 0x71, 0x10, 0x33, 0xA9, 0xAD, 0xD6, 0x56, 0xE9, 0x2C, 0x2D, 0x33, - 0xEB, 0x3C, 0x80, 0x80, 0x0B, 0xDE, 0x77, 0x8D, 0x48, 0x18, 0xA6, 0x78, 0x31, 0x2B, 0x8E, 0x55, - 0x7B, 0x7D, 0x7D, 0x15, 0xBC, 0xB7, 0x50, 0x33, 0x06, 0x41, 0x00, 0x4C, 0xD0, 0xD7, 0xAF, 0x57, - 0x79, 0x1A, 0x53, 0xC6, 0x10, 0x26, 0x55, 0x55, 0xA9, 0x71, 0x28, 0xA7, 0x05, 0xC2, 0xBC, 0x3A, - 0xEE, 0x05, 0x86, 0x57, 0xAB, 0xC9, 0xED, 0xFA, 0x10, 0x73, 0xE2, 0x94, 0xBE, 0x7F, 0xDA, 0x62, - 0x46, 0x9C, 0x35, 0xAF, 0xAF, 0x26, 0x0E, 0xD0, 0x77, 0x77, 0xCF, 0x52, 0x8E, 0xB2, 0xD7, 0x3E, - 0x40, 0x88, 0x00, 0xA3, 0xBE, 0x95, 0xD2, 0x5B, 0xAF, 0x54, 0x38, 0xB5, 0x3D, 0x45, 0x70, 0x3A, - 0xCB, 0xD4, 0x80, 0xDB, 0x76, 0x78, 0x79, 0x75, 0xF1, 0xE2, 0x7A, 0x42, 0x11, 0xBF, 0xBC, 0x9C, - 0x61, 0x84, 0x36, 0x07, 0x43, 0x59, 0x34, 0x4D, 0x11, 0xA3, 0x64, 0x7B, 0x94, 0x98, 0x90, 0x9B, - 0xEB, 0xD5, 0xBC, 0x8C, 0x4F, 0x8D, 0x14, 0x71, 0xE2, 0xE1, 0xB6, 0xAF, 0x4F, 0xC0, 0x49, 0xC8, - 0xB3, 0x3F, 0xBE, 0x7B, 0x12, 0xA5, 0xA0, 0x08, 0x5A, 0xDD, 0x3C, 0x6D, 0xBB, 0x2C, 0x8F, 0x29, - 0x23, 0x09, 0xC6, 0x26, 0xB8, 0x61, 0x34, 0xC6, 0x98, 0xE3, 0x6E, 0x87, 0x30, 0xCE, 0xF3, 0xD8, - 0x28, 0x0D, 0x9D, 0x8A, 0xB2, 0x98, 0x70, 0x58, 0xA4, 0x69, 0x33, 0xF0, 0x88, 0xAB, 0x32, 0x9D, - 0x0C, 0x8A, 0x26, 0xC2, 0xF4, 0x6D, 0x6D, 0x2C, 0xAC, 0xAB, 0xF6, 0x27, 0xDF, 0xDC, 0x24, 0x71, - 0xF4, 0xFD, 0x0F, 0xB7, 0xF3, 0x59, 0x0A, 0x11, 0xF0, 0xC0, 0x53, 0x26, 0x36, 0xBB, 0xD3, 0xE6, - 0xD9, 0x85, 0xE0, 0xF3, 0x3C, 0xDE, 0x3D, 0x1E, 0xF1, 0x0B, 0xDA, 0x4B, 0x75, 0xAA, 0x9A, 0xB3, - 0xC5, 0x24, 0xCF, 0x92, 0x24, 0x13, 0xE4, 0x40, 0x6F, 0x1F, 0xB7, 0x97, 0xAB, 0x85, 0x71, 0x5E, - 0x37, 0x6D, 0x12, 0x47, 0x6D, 0x3F, 0x1A, 0xEB, 0xB5, 0x71, 0xF7, 0x8F, 0xEB, 0x34, 0x16, 0xA3, - 0xA6, 0x00, 0x09, 0x6F, 0xDB, 0xB2, 0x8C, 0xB7, 0xFB, 0x3E, 0x89, 0xC8, 0xD5, 0xCB, 0xEB, 0x5E, - 0x8E, 0x90, 0x24, 0x2F, 0x5F, 0x9F, 0xB5, 0x55, 0x85, 0x38, 0xDD, 0x4B, 0x3D, 0x8C, 0x63, 0x3A, - 0x2D, 0x08, 0xE4, 0x4C, 0x04, 0x4A, 0x51, 0xD3, 0xF4, 0x20, 0x40, 0x82, 0xC0, 0xE5, 0xCB, 0x65, - 0x39, 0xCB, 0xA0, 0xF7, 0x78, 0x5F, 0x01, 0x0F, 0xA3, 0x48, 0x78, 0x18, 0x75, 0x5D, 0xAF, 0x95, - 0x13, 0x71, 0x5E, 0x94, 0x91, 0x1C, 0xEC, 0xC3, 0xE3, 0x76, 0xBD, 0xDD, 0xCC, 0x97, 0xF3, 0xAF, - 0xBF, 0xBA, 0xD9, 0x6C, 0x8E, 0x18, 0x22, 0xA3, 0xED, 0xBB, 0xF7, 0x8F, 0x93, 0x49, 0x31, 0x0E, - 0x6A, 0x35, 0x2F, 0xA1, 0x67, 0xAA, 0x69, 0xA8, 0xC0, 0xBF, 0xFF, 0xED, 0x7E, 0x50, 0xDA, 0x84, - 0xD0, 0x0F, 0x23, 0x8B, 0x85, 0x1A, 0xD5, 0x62, 0x35, 0x9B, 0x9E, 0x4F, 0xF2, 0x49, 0x0A, 0x35, - 0x7E, 0x5A, 0x1F, 0xB4, 0x55, 0xC7, 0xBA, 0x4B, 0x93, 0x28, 0x4B, 0x92, 0x83, 0x54, 0xBB, 0x43, - 0x13, 0x20, 0xC8, 0xB3, 0x74, 0xBD, 0x93, 0x55, 0xA3, 0x38, 0xA3, 0x55, 0xD5, 0x2B, 0x33, 0x5E, - 0x5E, 0xCD, 0x31, 0x8A, 0xAD, 0x35, 0x69, 0xCC, 0xCB, 0x34, 0x95, 0x83, 0x74, 0xD6, 0x1F, 0xAB, - 0x53, 0x37, 0x0C, 0xCE, 0x81, 0xE3, 0xF1, 0x24, 0x87, 0x3E, 0x00, 0x8F, 0x11, 0x92, 0x72, 0x74, - 0x30, 0x80, 0x00, 0xB2, 0x2C, 0x62, 0x0C, 0xDD, 0xDC, 0x9C, 0x4D, 0xA7, 0x29, 0xB4, 0xEE, 0xEA, - 0xCF, 0xBE, 0x01, 0x08, 0x20, 0x4C, 0xE2, 0x98, 0x53, 0x04, 0x84, 0x88, 0xF4, 0x60, 0x41, 0xCE, - 0x18, 0xE3, 0xDF, 0xBF, 0x7F, 0xDE, 0x9F, 0x2A, 0x00, 0x01, 0x66, 0xE4, 0xFE, 0xE9, 0x51, 0xBB, - 0xB1, 0xC8, 0xE3, 0xFB, 0x87, 0x35, 0xE3, 0x5C, 0x8F, 0x6E, 0x54, 0x8A, 0x44, 0x38, 0x45, 0x1C, - 0x32, 0xF0, 0xF4, 0xB4, 0x16, 0x09, 0x79, 0x79, 0xB3, 0x9C, 0x4E, 0xE7, 0x3F, 0xFE, 0x70, 0xD7, - 0xB6, 0x92, 0x69, 0xD3, 0x76, 0x03, 0xA1, 0x38, 0x04, 0xBF, 0xD9, 0x1D, 0xB9, 0x60, 0xC6, 0xDA, - 0xD3, 0xA9, 0xB5, 0xD6, 0xE6, 0x65, 0x0E, 0x03, 0x81, 0x00, 0xBD, 0x7A, 0xB9, 0xEA, 0x86, 0x41, - 0x08, 0x7A, 0x7F, 0xBB, 0x2F, 0xB3, 0xF4, 0x6C, 0x35, 0x3D, 0xD5, 0xED, 0xB1, 0x6E, 0x9D, 0xB1, - 0x10, 0x86, 0xAE, 0x97, 0xCE, 0x07, 0x63, 0xAC, 0xB3, 0x6E, 0x3A, 0xC9, 0x92, 0x88, 0xFF, 0xF8, - 0xB0, 0xC9, 0xB3, 0x14, 0x95, 0xE9, 0xF9, 0x6A, 0x2A, 0x88, 0x93, 0xF2, 0xD0, 0xF5, 0x43, 0x32, - 0xCF, 0x01, 0xF6, 0xCA, 0x38, 0xE7, 0xDD, 0xE9, 0x54, 0x97, 0x45, 0x31, 0x29, 0xD2, 0xBA, 0x6D, - 0x16, 0xB3, 0x1C, 0x43, 0x74, 0x3C, 0xB5, 0x71, 0x92, 0x44, 0x84, 0xC5, 0x59, 0x32, 0x9D, 0xCC, - 0x64, 0xD7, 0x9F, 0xCF, 0x92, 0xF9, 0xC5, 0xEB, 0xBA, 0x3A, 0x9C, 0x76, 0xDB, 0xD9, 0x34, 0x75, - 0x41, 0x3D, 0x1F, 0xEB, 0x87, 0xCD, 0x7A, 0x7D, 0x3C, 0x5C, 0x52, 0x9C, 0x45, 0xD1, 0xE5, 0xD9, - 0x6A, 0x3E, 0xCD, 0x4E, 0xB5, 0x3C, 0x5F, 0x4E, 0x7D, 0x70, 0x4D, 0xD7, 0xE5, 0x09, 0xF6, 0x1E, - 0xC7, 0x09, 0xA4, 0x94, 0xC3, 0xFF, 0xEA, 0x2F, 0xFF, 0x9C, 0x12, 0x42, 0x09, 0xC3, 0x10, 0x4E, - 0xF2, 0x74, 0x73, 0xAC, 0x7E, 0xF1, 0xDB, 0x5F, 0x27, 0x09, 0xD2, 0x06, 0x10, 0x02, 0x9C, 0x85, - 0x37, 0xAF, 0x5F, 0xCD, 0x27, 0xB3, 0x51, 0xFA, 0x53, 0x55, 0x9D, 0x9D, 0x4F, 0x77, 0xC7, 0x7A, - 0x7B, 0x68, 0xFB, 0xAE, 0xB7, 0xCE, 0x1B, 0xA3, 0x7D, 0x00, 0x10, 0x92, 0xE0, 0x5D, 0x96, 0x65, - 0x22, 0x82, 0x3F, 0xFB, 0xE6, 0xC5, 0x62, 0x32, 0xB1, 0x1A, 0x3A, 0xFF, 0xFF, 0xB3, 0xF4, 0x1E, - 0x3B, 0xB7, 0x65, 0x59, 0x76, 0xDE, 0xF2, 0x6B, 0x6D, 0xBF, 0x8F, 0xFD, 0xED, 0x75, 0x61, 0x33, - 0x23, 0x2D, 0xAA, 0x2A, 0x59, 0x44, 0xA9, 0x23, 0x02, 0xEC, 0x48, 0x20, 0x28, 0x40, 0xCF, 0xAB, - 0x9E, 0x20, 0x40, 0x82, 0x24, 0x8A, 0x60, 0x95, 0x32, 0x23, 0x33, 0x32, 0xE2, 0xC6, 0x35, 0xBF, - 0x3B, 0x6E, 0xFB, 0xE5, 0x8D, 0x1A, 0xA1, 0x87, 0x98, 0x8D, 0x39, 0xC7, 0xFC, 0xC6, 0x87, 0x7D, - 0xB4, 0x00, 0x40, 0x4A, 0x70, 0x5B, 0x65, 0x84, 0x40, 0xAD, 0x34, 0x00, 0xD0, 0x25, 0x9F, 0xE5, - 0x4C, 0x4A, 0x6B, 0x6D, 0xF4, 0x31, 0x28, 0x63, 0xA4, 0x34, 0x52, 0x9A, 0xA6, 0x29, 0xDB, 0xBA, - 0x62, 0x9C, 0xC5, 0xE8, 0x5F, 0x5F, 0xB5, 0xC7, 0xCB, 0xD8, 0x0D, 0x72, 0x1A, 0xCD, 0x30, 0x2C, - 0x9F, 0x9E, 0x8E, 0x6D, 0x5D, 0x08, 0x02, 0x1C, 0x48, 0xEF, 0x5E, 0xED, 0xF7, 0xAB, 0x82, 0xF3, - 0x0C, 0x11, 0x68, 0x9C, 0x9E, 0x95, 0x75, 0xC6, 0x35, 0x75, 0xA1, 0x6D, 0x78, 0x7A, 0x3C, 0x12, - 0x8C, 0xCA, 0x3C, 0x9B, 0x95, 0x26, 0x8C, 0x44, 0x08, 0x5E, 0x4E, 0x7D, 0xDF, 0xCD, 0xAB, 0x55, - 0x2E, 0x72, 0x8E, 0x09, 0xC9, 0x05, 0x5F, 0xD5, 0xC5, 0x76, 0x53, 0x50, 0x4C, 0xBC, 0x75, 0x34, - 0xC1, 0x60, 0x82, 0xD6, 0x32, 0xE3, 0xCC, 0xF8, 0x88, 0x79, 0x7E, 0x3A, 0xCC, 0x11, 0x80, 0x4E, - 0x2E, 0x59, 0x96, 0x63, 0x9A, 0xB2, 0x02, 0x0F, 0xD3, 0x34, 0x0C, 0x06, 0x41, 0x78, 0xB3, 0x6D, - 0x21, 0x48, 0xED, 0x7A, 0x35, 0x2F, 0x73, 0xCE, 0x79, 0x99, 0xE7, 0xC6, 0x99, 0x08, 0x62, 0x95, - 0x0B, 0xEB, 0xBC, 0x31, 0x76, 0xEE, 0xEC, 0x5F, 0xBE, 0xFF, 0xE1, 0xE6, 0xFE, 0x2A, 0xC6, 0xF8, - 0xF1, 0xE3, 0x03, 0xE5, 0xB8, 0xE0, 0xB4, 0xCA, 0x8B, 0xF5, 0xEE, 0x76, 0x9A, 0xE6, 0xC7, 0xA7, - 0xCF, 0x7F, 0x7F, 0xFF, 0x58, 0x94, 0xD9, 0xDB, 0x57, 0x1B, 0xCE, 0xD8, 0x0F, 0x3F, 0x1F, 0x06, - 0x69, 0x20, 0x84, 0x5A, 0xB9, 0x5C, 0x90, 0xD7, 0xF7, 0x1B, 0x42, 0xC9, 0x38, 0x4E, 0x99, 0x60, - 0x21, 0xB8, 0x63, 0xA7, 0x62, 0x08, 0x37, 0xBB, 0x46, 0x8E, 0x96, 0x53, 0xF1, 0x87, 0xDF, 0xBE, - 0xAB, 0x32, 0x96, 0x22, 0x04, 0x3C, 0xC4, 0x20, 0x46, 0x2D, 0xAE, 0xEF, 0xDE, 0xF6, 0x2F, 0x3F, - 0x6B, 0x63, 0x08, 0x87, 0x55, 0x96, 0x1D, 0x4F, 0x5D, 0x9D, 0x31, 0x4E, 0xE9, 0xF5, 0x8E, 0x7D, - 0x7C, 0xF9, 0xFE, 0xFB, 0x1F, 0x9F, 0x2A, 0x41, 0x68, 0xBD, 0x19, 0xB5, 0x43, 0x66, 0x4E, 0xDE, - 0x74, 0x83, 0x3B, 0x0D, 0x26, 0x02, 0xF0, 0xD5, 0xBB, 0xA6, 0xEF, 0xF4, 0xE9, 0x2C, 0x31, 0x25, - 0x9C, 0xA5, 0x2A, 0xA7, 0x09, 0x61, 0xA9, 0xA3, 0x9C, 0xE5, 0xCD, 0xAE, 0xA6, 0x59, 0xAE, 0x54, - 0xBF, 0xBF, 0x7E, 0x7B, 0x3C, 0xE9, 0x9B, 0x35, 0xA6, 0x90, 0x5D, 0x06, 0x09, 0xB0, 0x36, 0xD2, - 0xFF, 0xEB, 0x0F, 0xC3, 0x6F, 0x7E, 0xFF, 0x0D, 0x23, 0xE1, 0x70, 0xEC, 0x20, 0x88, 0x55, 0x2D, - 0xBE, 0xFF, 0xDB, 0x71, 0xB3, 0x59, 0x1F, 0x5F, 0x3A, 0x98, 0xB0, 0xB1, 0x76, 0xBF, 0x5D, 0x2B, - 0xA5, 0xC6, 0x69, 0xFE, 0xE6, 0xAB, 0x57, 0x21, 0xC6, 0x97, 0x43, 0xC7, 0x38, 0xBD, 0xBD, 0x5A, - 0x69, 0xA9, 0x16, 0xE5, 0x5E, 0x4E, 0x13, 0x25, 0x04, 0x80, 0x88, 0x10, 0xBC, 0xBF, 0xBE, 0x86, - 0x30, 0x6A, 0x1B, 0x67, 0x65, 0xAF, 0xB7, 0x6D, 0x7F, 0x39, 0x57, 0x65, 0x29, 0xB5, 0x5D, 0x94, - 0xA9, 0xCA, 0x6C, 0xBF, 0x59, 0x29, 0xA5, 0xD7, 0xEB, 0xD5, 0xAF, 0xBE, 0xBE, 0x09, 0x4E, 0x9F, - 0xCF, 0x43, 0xD7, 0x8F, 0x3E, 0xC4, 0x84, 0x30, 0xE3, 0x84, 0xE7, 0xDC, 0x68, 0x8B, 0x21, 0xDE, - 0x6E, 0x6B, 0x82, 0x10, 0xC1, 0xA1, 0xCA, 0xD8, 0x24, 0x2D, 0x13, 0x94, 0x11, 0x9C, 0x53, 0xA1, - 0xA5, 0xEB, 0x47, 0x65, 0x12, 0xF0, 0x31, 0x90, 0x08, 0x00, 0xA4, 0xDD, 0x28, 0x61, 0x8C, 0xD3, - 0x74, 0x61, 0x82, 0x71, 0x91, 0x11, 0x8E, 0xF2, 0xAC, 0xA4, 0x58, 0xFC, 0xDB, 0x9F, 0xFF, 0xEA, - 0x43, 0x2A, 0xCA, 0x02, 0xA7, 0x28, 0x28, 0x2E, 0xAB, 0xA2, 0xAC, 0x50, 0x08, 0x61, 0xE8, 0xD4, - 0x65, 0x9C, 0xB4, 0x77, 0xC7, 0x63, 0xDF, 0x6C, 0x5B, 0x4A, 0x31, 0x42, 0x10, 0x81, 0xB4, 0x6E, - 0xEA, 0x3A, 0x2F, 0x9F, 0x9F, 0x3B, 0x67, 0x0C, 0xC6, 0x68, 0x56, 0x4E, 0x69, 0x57, 0xE6, 0x1C, - 0xA1, 0x84, 0x28, 0x3D, 0x5D, 0xE6, 0x18, 0xE2, 0xA6, 0x2D, 0xAA, 0xB2, 0xC8, 0x38, 0xBF, 0xB9, - 0xA9, 0xBB, 0xE1, 0xDC, 0xD6, 0x95, 0xB7, 0xBF, 0x54, 0xB0, 0xA6, 0x79, 0x94, 0x80, 0xE0, 0x63, - 0x37, 0x8E, 0xB3, 0x74, 0xD6, 0x3D, 0x1F, 0xCF, 0x08, 0xA2, 0x57, 0xB7, 0x57, 0xD7, 0xDB, 0x76, - 0x5C, 0x46, 0x51, 0x65, 0x08, 0x12, 0xAD, 0x55, 0x59, 0xF1, 0xD7, 0xFB, 0x2D, 0x8E, 0xC0, 0xDA, - 0x38, 0x2B, 0xF9, 0x72, 0xEC, 0x94, 0x0E, 0xD7, 0x57, 0xAB, 0x69, 0x9C, 0xCA, 0x9A, 0x73, 0x41, - 0xDB, 0xB2, 0xD8, 0xAD, 0xD6, 0xDA, 0x44, 0x69, 0x6C, 0x37, 0xCC, 0x9F, 0x9E, 0x8E, 0x88, 0xC2, - 0x2C, 0x17, 0xC6, 0x99, 0x69, 0x18, 0xD6, 0x6D, 0x1B, 0x01, 0x4A, 0x20, 0x05, 0x90, 0x8C, 0xF4, - 0x77, 0x37, 0x9B, 0x18, 0x43, 0x7F, 0x39, 0xDE, 0xDE, 0xDE, 0xC8, 0xC5, 0x76, 0xA7, 0x0E, 0x33, - 0x74, 0xEE, 0x16, 0x44, 0xA8, 0xC8, 0x08, 0xC6, 0x28, 0x44, 0x44, 0x39, 0x57, 0xD3, 0x12, 0x5C, - 0x58, 0xB5, 0x15, 0x27, 0x34, 0x02, 0xE4, 0x23, 0x6C, 0xDB, 0x8C, 0xD2, 0x18, 0x53, 0x82, 0x08, - 0xA7, 0x98, 0x18, 0x42, 0xD6, 0x58, 0x1F, 0xD2, 0xE5, 0x3C, 0x8E, 0xA3, 0x5D, 0xB4, 0x3B, 0x0F, - 0x63, 0xF1, 0x0B, 0xF5, 0xC5, 0x69, 0x08, 0xF1, 0x5F, 0x7F, 0x78, 0x4F, 0x08, 0xFD, 0x1F, 0xFE, - 0xE3, 0x9F, 0x7E, 0xF3, 0xEB, 0xFB, 0x69, 0x92, 0x08, 0xE2, 0xB1, 0x1F, 0x30, 0x86, 0x45, 0x59, - 0xA4, 0x04, 0x96, 0x49, 0x79, 0x1F, 0x12, 0x40, 0x98, 0xE0, 0x45, 0xD9, 0x65, 0xD1, 0x55, 0x91, - 0x31, 0xC2, 0x9E, 0x5F, 0x06, 0x9B, 0xAC, 0xD3, 0x3E, 0x25, 0x48, 0x30, 0xBE, 0xD9, 0x35, 0xAF, - 0x6E, 0x76, 0xEB, 0xA6, 0xB6, 0xCE, 0x2D, 0x5A, 0x8F, 0xE3, 0xBC, 0x98, 0xF8, 0xFE, 0xE7, 0x8F, - 0x84, 0xD2, 0xDB, 0x6D, 0x63, 0x9C, 0xCF, 0xF2, 0x4C, 0x2E, 0x8B, 0xD4, 0x16, 0x20, 0xD8, 0x8F, - 0xDD, 0xB8, 0x98, 0x3C, 0x47, 0xFB, 0xED, 0x3A, 0x46, 0x20, 0x18, 0xC3, 0x77, 0xD7, 0x57, 0x00, - 0x00, 0x25, 0x15, 0xC2, 0xB8, 0x1B, 0xC7, 0x55, 0x53, 0xBC, 0xDA, 0xEF, 0x86, 0x45, 0xBF, 0x9C, - 0xC7, 0x65, 0x31, 0x75, 0x2D, 0xBA, 0x5E, 0x0F, 0x53, 0xEC, 0xE7, 0xF9, 0xE7, 0x4F, 0x1F, 0x8D, - 0x8B, 0x0F, 0xCF, 0x7D, 0x48, 0x48, 0x2A, 0xED, 0xAC, 0x29, 0xCA, 0xCA, 0x87, 0x60, 0x8C, 0x0A, - 0x31, 0x42, 0x48, 0x7E, 0xFF, 0xAB, 0x6F, 0xEA, 0x22, 0x9B, 0xA5, 0xD3, 0x1E, 0xFC, 0xEB, 0xF7, - 0xEF, 0x83, 0x0F, 0x75, 0x99, 0x75, 0xFD, 0x32, 0x4C, 0x7A, 0x98, 0x8C, 0x34, 0xAE, 0xEF, 0x66, - 0xA9, 0xFD, 0xA7, 0xA7, 0xF3, 0xCB, 0xA9, 0x7F, 0x3A, 0x74, 0x8F, 0x2F, 0xFD, 0x34, 0xEB, 0x45, - 0x59, 0xEB, 0xBD, 0xB6, 0xE1, 0xF3, 0xD3, 0xE9, 0x74, 0x1E, 0xB4, 0x0B, 0xA3, 0xB4, 0x08, 0x51, - 0x08, 0x60, 0x9E, 0x15, 0x10, 0x12, 0xC6, 0x58, 0x5B, 0xF0, 0xC3, 0xB9, 0x2B, 0xCB, 0x2C, 0xCF, - 0xB2, 0x18, 0x03, 0xC6, 0xF8, 0xC3, 0xC7, 0x8B, 0x54, 0xEE, 0xEF, 0xEF, 0x1F, 0x2F, 0xFD, 0x0C, - 0x00, 0xBC, 0x74, 0x73, 0x04, 0x50, 0x1B, 0xDB, 0x4F, 0xFA, 0xF3, 0xC3, 0xD9, 0xBA, 0xB4, 0x48, - 0xEB, 0x9C, 0x4F, 0x08, 0x56, 0x55, 0x89, 0x19, 0x09, 0x09, 0x8C, 0xA3, 0x54, 0x36, 0x3C, 0x7E, - 0x3A, 0xA6, 0x18, 0x41, 0x00, 0x01, 0x24, 0x2E, 0x68, 0x9E, 0x65, 0x11, 0x02, 0x17, 0x02, 0x13, - 0xB8, 0xAE, 0xD8, 0x76, 0x9D, 0x11, 0x02, 0x8B, 0x82, 0x41, 0x1C, 0x38, 0x4E, 0xDF, 0x7E, 0xF1, - 0x6A, 0xD5, 0xE6, 0xEB, 0xA6, 0x6C, 0xCB, 0x22, 0xCF, 0x98, 0x60, 0x88, 0x61, 0x46, 0x00, 0x1D, - 0x47, 0x33, 0x2F, 0x66, 0x9C, 0x16, 0xE7, 0xC3, 0xBC, 0xA8, 0xB6, 0xC9, 0xAB, 0x3C, 0x5B, 0xAD, - 0x2A, 0x40, 0x82, 0x75, 0x66, 0xB7, 0xDF, 0xAC, 0x56, 0x75, 0x2E, 0x44, 0x02, 0x78, 0x5A, 0x66, - 0xC6, 0x81, 0x89, 0x76, 0x7B, 0xD5, 0xFE, 0xC3, 0x1F, 0xBF, 0x1C, 0x26, 0xF5, 0xE9, 0xB1, 0xAF, - 0x9A, 0x02, 0xE2, 0x18, 0x93, 0x0F, 0xDE, 0xE6, 0x19, 0xE3, 0x9C, 0x9F, 0xFB, 0x59, 0x19, 0x17, - 0xBC, 0x1F, 0xA7, 0xB9, 0xAA, 0xCA, 0xEB, 0x9B, 0x9A, 0x51, 0xB0, 0x6E, 0xAB, 0x2F, 0xBF, 0xBC, - 0xBB, 0xBD, 0xAD, 0x61, 0x0A, 0xCE, 0xAA, 0x84, 0x91, 0xC8, 0xF8, 0xAC, 0xFC, 0xE3, 0x61, 0x38, - 0x1C, 0x3F, 0x12, 0x62, 0x94, 0xC1, 0x1F, 0x3E, 0x7D, 0xD6, 0xA6, 0x07, 0x31, 0x96, 0xDC, 0xBC, - 0xFF, 0xF0, 0xF4, 0xFE, 0xF9, 0xA2, 0x8D, 0x3B, 0x9D, 0x54, 0x53, 0x30, 0xCC, 0xAC, 0x55, 0xF6, - 0xC3, 0xA7, 0x11, 0x0B, 0x16, 0x83, 0x4F, 0x29, 0x60, 0x0C, 0x7F, 0xFA, 0x30, 0xCC, 0x32, 0xE6, - 0x02, 0xEE, 0xF6, 0xF5, 0xE7, 0x17, 0x39, 0xCF, 0x96, 0x73, 0x4A, 0x30, 0x81, 0x00, 0xC7, 0x94, - 0x94, 0x01, 0x4F, 0x0F, 0x03, 0x8A, 0x0E, 0xA1, 0xEC, 0xE5, 0xF9, 0x10, 0x62, 0xA0, 0x94, 0x7F, - 0x7A, 0x18, 0x23, 0xCC, 0x5E, 0xBD, 0xDA, 0x41, 0xA0, 0x63, 0x8C, 0x8C, 0xF2, 0x71, 0x9A, 0xF2, - 0x62, 0xAD, 0x16, 0xA5, 0x26, 0xE9, 0xBC, 0xF3, 0xDE, 0xEF, 0x77, 0x6B, 0x6D, 0xAC, 0x10, 0xAC, - 0xAE, 0x72, 0x6B, 0x03, 0xA6, 0xB4, 0xC8, 0x78, 0x59, 0xF0, 0x73, 0x3F, 0x66, 0x8C, 0x49, 0x65, - 0x42, 0x88, 0x4D, 0x5B, 0x7E, 0xF7, 0xED, 0xAB, 0xFB, 0xEB, 0x75, 0x4A, 0xF0, 0x78, 0x1E, 0xCA, - 0x3C, 0xBB, 0xD9, 0xB6, 0x21, 0x84, 0xB6, 0xAD, 0xCF, 0xDD, 0x90, 0x40, 0x2A, 0x84, 0xA8, 0xCA, - 0x22, 0x45, 0xB0, 0xAA, 0xCB, 0x52, 0xF0, 0xFF, 0xEB, 0xFF, 0xFE, 0x7F, 0x3F, 0x3D, 0x9C, 0x12, - 0x40, 0xB3, 0xB6, 0xE3, 0xB0, 0x38, 0xEF, 0xE7, 0x69, 0x59, 0x16, 0xED, 0x23, 0xE8, 0xFA, 0xB9, - 0x1F, 0x97, 0xC3, 0xA9, 0x53, 0x5A, 0x5B, 0xEB, 0xFA, 0x7E, 0x90, 0x52, 0x9D, 0xCE, 0xA3, 0x92, - 0x12, 0x63, 0x38, 0xCD, 0x76, 0x1C, 0x24, 0xE1, 0xC4, 0x79, 0x3F, 0x0C, 0x43, 0x37, 0x1D, 0x27, - 0x6B, 0xBA, 0x41, 0xFF, 0xFC, 0xF1, 0xF3, 0xB9, 0xEB, 0x53, 0x82, 0xE3, 0xA4, 0x01, 0xC0, 0x98, - 0x32, 0xEB, 0x7C, 0x5B, 0xE7, 0x9B, 0x55, 0xCD, 0x38, 0x90, 0x52, 0x41, 0x4C, 0x7C, 0x8A, 0x52, - 0x19, 0xE7, 0x7D, 0x82, 0x20, 0xA6, 0x88, 0x20, 0x64, 0x8C, 0xA6, 0x10, 0x21, 0x22, 0x08, 0xD8, - 0xED, 0xBE, 0xC1, 0x84, 0x7E, 0x7A, 0x38, 0x4A, 0xA5, 0x5F, 0xCE, 0x97, 0xDD, 0xAA, 0x4D, 0x30, - 0x76, 0x43, 0x97, 0x92, 0xBB, 0xB9, 0x2A, 0x31, 0x02, 0x18, 0x21, 0x4C, 0x93, 0x51, 0x36, 0x06, - 0x64, 0x6C, 0x0C, 0x31, 0x20, 0x8A, 0x37, 0x9B, 0xE6, 0xCD, 0xED, 0x5E, 0x1B, 0xF3, 0xD7, 0x1F, - 0x3E, 0x6E, 0x9A, 0xBA, 0xCA, 0xB8, 0xD6, 0x46, 0x70, 0x9A, 0x71, 0x2E, 0x72, 0xB1, 0x18, 0xCD, - 0x73, 0x02, 0x31, 0xF4, 0x29, 0x70, 0x8E, 0xA1, 0xC5, 0x4A, 0xD9, 0x84, 0x41, 0x84, 0x29, 0x41, - 0xE8, 0x42, 0xCC, 0x73, 0xAE, 0xB4, 0xB3, 0x1E, 0x4C, 0x8B, 0x1C, 0x95, 0x3C, 0x5D, 0x86, 0x45, - 0x1B, 0xEF, 0x7D, 0x5D, 0x97, 0x08, 0x42, 0x4C, 0xF9, 0x6A, 0xBD, 0x79, 0x39, 0x9E, 0xCB, 0xAA, - 0x28, 0xCA, 0x0C, 0xC2, 0x10, 0xA3, 0x23, 0x04, 0xD5, 0x55, 0x01, 0x09, 0x74, 0xCE, 0x10, 0x8C, - 0x10, 0xC2, 0x31, 0x01, 0x44, 0xB1, 0x28, 0xE8, 0x66, 0xDD, 0xDE, 0xBF, 0xBA, 0x66, 0x02, 0x13, - 0x84, 0x31, 0x41, 0xDE, 0x3A, 0x10, 0x80, 0x9E, 0x15, 0x27, 0x28, 0x67, 0xC2, 0x6A, 0x4F, 0x10, - 0x24, 0x08, 0x53, 0x48, 0x8E, 0x4F, 0x27, 0x35, 0x2B, 0x46, 0x08, 0x26, 0x04, 0xF8, 0x84, 0x10, - 0xDA, 0x6F, 0xD7, 0x6D, 0x9B, 0x27, 0x80, 0xCB, 0x5C, 0x48, 0xA9, 0x9A, 0x36, 0x27, 0x18, 0x6E, - 0x57, 0xD5, 0xCD, 0x76, 0x7D, 0xBB, 0x6F, 0xFF, 0xF4, 0x87, 0x3B, 0x1F, 0x5D, 0xF4, 0xB6, 0xCA, - 0xC4, 0xD4, 0x0F, 0x20, 0x85, 0xC7, 0x97, 0xD3, 0xE9, 0x3C, 0x58, 0xE7, 0xFB, 0x71, 0x51, 0xC6, - 0x3E, 0x1D, 0x2E, 0x52, 0xDB, 0xBC, 0x28, 0x29, 0x23, 0x88, 0x40, 0x42, 0x52, 0x96, 0xA1, 0x3C, - 0x67, 0x29, 0x81, 0x79, 0xD1, 0x00, 0xA4, 0x2A, 0xE7, 0x30, 0x86, 0xB2, 0xC8, 0xAD, 0x94, 0x20, - 0x85, 0x82, 0xA2, 0xAB, 0xCD, 0xEA, 0xF7, 0xDF, 0xBE, 0x2E, 0x38, 0x2B, 0x72, 0x7E, 0xB5, 0xDB, - 0xD4, 0x45, 0x96, 0xE7, 0x82, 0x60, 0x0C, 0x12, 0x44, 0x08, 0x3B, 0xEB, 0x8B, 0x8C, 0xAF, 0xDA, - 0x0A, 0x45, 0x04, 0xFF, 0xF4, 0xC7, 0x3F, 0xA6, 0x18, 0x52, 0xF0, 0x55, 0x55, 0x86, 0x10, 0x18, - 0x45, 0xDB, 0x55, 0xAD, 0x6D, 0xFC, 0x7F, 0xFE, 0xFC, 0x67, 0xCE, 0x2C, 0xE7, 0xE2, 0x32, 0xBA, - 0xFD, 0xAA, 0xB9, 0xB9, 0xD9, 0xFD, 0xDB, 0xF7, 0x0F, 0x5A, 0xD9, 0xFB, 0x9B, 0x9B, 0xC4, 0x8A, - 0x9F, 0xDF, 0xFF, 0x74, 0x77, 0xB3, 0xF7, 0x31, 0xBD, 0xFF, 0xF9, 0x23, 0x82, 0xA0, 0x2A, 0xCB, - 0xED, 0x66, 0xF5, 0xCD, 0x9B, 0xBB, 0x61, 0x9A, 0x1F, 0x0F, 0x47, 0xCE, 0x73, 0xAD, 0x96, 0xEF, - 0xBE, 0x7C, 0xEB, 0x9C, 0x4B, 0x29, 0x51, 0xCE, 0xBA, 0x7E, 0x70, 0xD6, 0x46, 0xEF, 0x31, 0xE3, - 0x3E, 0x05, 0x91, 0x0B, 0x6B, 0x43, 0xD7, 0x0F, 0x5A, 0x9B, 0x37, 0xAF, 0x6F, 0xAC, 0xB3, 0x98, - 0xE0, 0xFE, 0xD2, 0xD7, 0x75, 0x5D, 0xD7, 0x45, 0x4A, 0x10, 0x26, 0xD0, 0xD4, 0xD9, 0xA6, 0x6D, - 0x20, 0xA0, 0xF3, 0x30, 0x79, 0x6B, 0x52, 0xF2, 0x77, 0xB7, 0x2B, 0xEF, 0xBC, 0x32, 0xEE, 0xE1, - 0xB1, 0xEB, 0x46, 0xB9, 0xDB, 0xE5, 0xD2, 0x6A, 0xE3, 0xE2, 0xF1, 0xB9, 0xA3, 0x94, 0x96, 0x55, - 0x16, 0x42, 0x9A, 0x26, 0x89, 0x31, 0x74, 0x3E, 0x68, 0x6B, 0x39, 0x23, 0x2C, 0x17, 0x08, 0xA6, - 0xBB, 0x57, 0x7B, 0x8C, 0xA0, 0x73, 0x91, 0x67, 0xE2, 0xE9, 0xC3, 0x23, 0xC1, 0xE9, 0xF7, 0xDF, - 0x7D, 0xE1, 0xBC, 0xDD, 0x6D, 0x4A, 0xA3, 0xFD, 0xF1, 0x3C, 0x77, 0xFD, 0x64, 0xAC, 0xAF, 0xF2, - 0xAC, 0xBF, 0x8C, 0xFF, 0xE1, 0xDF, 0xFF, 0xFE, 0x87, 0x8F, 0x07, 0xE3, 0xEC, 0xAF, 0xBF, 0xB8, - 0x29, 0xDA, 0xFA, 0x2F, 0x3F, 0xFD, 0x5C, 0xE7, 0x95, 0x56, 0xAE, 0xEB, 0x94, 0x73, 0xC0, 0xC7, - 0x64, 0x9C, 0xE7, 0x1C, 0x29, 0xAD, 0x53, 0x08, 0xAF, 0x6E, 0x37, 0xC1, 0x7B, 0xCA, 0x30, 0x82, - 0x38, 0xCB, 0x58, 0xD1, 0xB0, 0xCD, 0x6A, 0x6D, 0xAC, 0xB6, 0xDA, 0x45, 0xEB, 0xBB, 0x69, 0x2C, - 0x57, 0x85, 0x77, 0x16, 0x63, 0xD4, 0xD4, 0x05, 0x82, 0xF8, 0xF1, 0xE1, 0x1C, 0x02, 0x30, 0xD6, - 0x61, 0x04, 0x67, 0xB9, 0x28, 0xE5, 0xC7, 0x59, 0x4E, 0xF3, 0x72, 0xEA, 0x16, 0xE3, 0xE2, 0xAE, - 0xC9, 0xBE, 0xFD, 0x7A, 0x5D, 0x56, 0xC8, 0x39, 0x8D, 0x12, 0x5E, 0x57, 0x6B, 0xC1, 0xB2, 0x10, - 0xE6, 0x71, 0xD0, 0x98, 0x52, 0x17, 0xAC, 0xE0, 0xB4, 0x9B, 0x74, 0xDF, 0xAB, 0xAB, 0x75, 0x96, - 0x17, 0xD7, 0x4F, 0x2F, 0xF3, 0xDB, 0x1B, 0x06, 0xA1, 0x20, 0xC4, 0x4B, 0x3B, 0x9D, 0xBA, 0xB8, - 0xDE, 0x97, 0xFF, 0xFB, 0xFF, 0xF9, 0x3D, 0xB0, 0xCB, 0xEF, 0xBE, 0xBD, 0x2A, 0x5B, 0xF4, 0xBF, - 0xFC, 0xAF, 0x3F, 0x8F, 0x33, 0xDC, 0xEE, 0xF2, 0xF3, 0x79, 0x29, 0x0A, 0x4C, 0x30, 0x1A, 0x97, - 0xF0, 0x74, 0x58, 0x6E, 0xF6, 0xC5, 0x1F, 0x7F, 0x77, 0xF5, 0xBF, 0xFD, 0x1F, 0xCF, 0xD6, 0xD8, - 0x4D, 0x4B, 0xF7, 0x9B, 0x7C, 0x9E, 0x81, 0x09, 0x69, 0xB5, 0x12, 0xC1, 0x38, 0x04, 0xD0, 0x34, - 0xBB, 0xBC, 0x10, 0x2C, 0x17, 0xCF, 0x87, 0x71, 0x9C, 0xE5, 0xDD, 0xFD, 0xA6, 0x2C, 0xF0, 0x66, - 0x5D, 0x3A, 0x8F, 0x16, 0x9D, 0xDA, 0x32, 0xEB, 0x2F, 0xE7, 0xA1, 0x57, 0x4A, 0x86, 0x53, 0xBF, - 0xAC, 0xAA, 0xAA, 0x2A, 0x8B, 0x6E, 0x9C, 0x09, 0x41, 0xDE, 0xBB, 0xA2, 0xCC, 0xB5, 0x76, 0x0C, - 0x13, 0xE3, 0x74, 0x95, 0x0B, 0xC6, 0x98, 0x8B, 0x00, 0x40, 0x7C, 0x73, 0xB5, 0xAD, 0x0B, 0xE8, - 0x5D, 0xE8, 0x47, 0x8D, 0x90, 0xC8, 0x04, 0xE5, 0x8C, 0x58, 0x67, 0x21, 0x24, 0x7F, 0xFF, 0xF1, - 0xC3, 0xF5, 0xF5, 0x9E, 0xC2, 0x58, 0x96, 0xA4, 0x2C, 0x9B, 0x55, 0xDB, 0x3C, 0x3F, 0xBC, 0x3C, - 0x3C, 0x1F, 0xE7, 0x59, 0x19, 0xEF, 0xAF, 0x6E, 0xB6, 0x2F, 0x2F, 0x27, 0xE7, 0x2D, 0xC6, 0x98, - 0x50, 0x4E, 0x19, 0xA5, 0x94, 0xC4, 0xE0, 0x18, 0x45, 0x94, 0xA6, 0x57, 0x77, 0xB7, 0x30, 0x86, - 0x2C, 0xE3, 0xCE, 0xC6, 0x14, 0x03, 0x23, 0x04, 0x63, 0x8A, 0x11, 0xCA, 0xCA, 0x7C, 0x91, 0xF6, - 0x6F, 0x3F, 0xFC, 0xF4, 0x97, 0x1F, 0xDF, 0x87, 0x84, 0xA3, 0x8F, 0xAB, 0x55, 0x91, 0x89, 0xBC, - 0x2E, 0x0A, 0x8C, 0xB1, 0xF5, 0xC0, 0x7A, 0x08, 0x61, 0xF8, 0xE6, 0xDD, 0xDE, 0x69, 0xA3, 0x94, - 0xC5, 0x08, 0x25, 0x08, 0xB4, 0x33, 0xE7, 0x73, 0xDF, 0x8F, 0x73, 0x56, 0x08, 0xE3, 0x3C, 0x21, - 0xE4, 0x8B, 0xB7, 0xB7, 0x72, 0x51, 0xD6, 0xC5, 0x9A, 0x07, 0x0F, 0x01, 0x2F, 0x1A, 0x27, 0xCD, - 0xD3, 0xE3, 0x11, 0x02, 0xD2, 0xD6, 0xE5, 0x20, 0xD5, 0xF5, 0x55, 0xEE, 0xBD, 0xB4, 0xCE, 0x17, - 0x59, 0x31, 0xCF, 0xDE, 0x85, 0x58, 0xE5, 0x55, 0x51, 0x14, 0x52, 0x8F, 0x59, 0x91, 0x79, 0x97, - 0xD6, 0x75, 0xB9, 0x59, 0x95, 0xA7, 0x7E, 0x50, 0x0A, 0x66, 0x98, 0x0D, 0xE3, 0xF0, 0x7C, 0x3A, - 0x7D, 0xFD, 0xD5, 0x2B, 0x9E, 0xF1, 0x8F, 0x0F, 0x2F, 0xDD, 0xA2, 0x29, 0x4D, 0x8B, 0x9C, 0x6E, - 0xAF, 0x76, 0xB7, 0x57, 0xEB, 0x55, 0x59, 0x42, 0x84, 0x16, 0x69, 0x53, 0x04, 0xD6, 0x7A, 0x4C, - 0x90, 0xD2, 0x6E, 0x9A, 0x95, 0xD4, 0x76, 0x9E, 0x66, 0x08, 0x80, 0x77, 0x96, 0x31, 0x06, 0x00, - 0x6A, 0xAA, 0xFC, 0x7A, 0xBB, 0x71, 0x09, 0xB9, 0x94, 0x10, 0xB2, 0x9C, 0x21, 0x0C, 0xA1, 0x52, - 0x9A, 0x51, 0x0A, 0x29, 0x09, 0x31, 0x28, 0xAD, 0x2F, 0xC7, 0x8E, 0xE7, 0x9C, 0x30, 0x81, 0x11, - 0x89, 0x29, 0x38, 0x67, 0x28, 0xE5, 0xBF, 0x18, 0xD9, 0x52, 0x48, 0xD6, 0x98, 0x2C, 0x2B, 0x57, - 0x75, 0xC3, 0x08, 0x20, 0x18, 0x21, 0x80, 0x0F, 0xCF, 0xE3, 0x7E, 0xBB, 0xC1, 0x18, 0x6A, 0xB5, - 0x58, 0x6F, 0x8D, 0x0D, 0x55, 0x59, 0x16, 0x45, 0xC6, 0x39, 0x9F, 0xE5, 0x84, 0x29, 0xD3, 0xCE, - 0x40, 0x8C, 0x9D, 0xB1, 0x0F, 0x9F, 0xCF, 0x79, 0xC6, 0x36, 0xAB, 0xD6, 0x99, 0x50, 0x55, 0x05, - 0x17, 0x51, 0x2E, 0x2F, 0x10, 0x40, 0xBD, 0x44, 0xAD, 0x03, 0xA6, 0xF0, 0xE5, 0xD8, 0x85, 0x94, - 0x10, 0x21, 0xD6, 0xC4, 0x22, 0xCF, 0x7F, 0x31, 0x57, 0x41, 0x88, 0x8B, 0xB2, 0x32, 0xDA, 0xD5, - 0x55, 0x56, 0x57, 0xFC, 0xE9, 0xE9, 0x80, 0x08, 0xC9, 0xCA, 0x0C, 0x42, 0xE4, 0x4C, 0xCC, 0x19, - 0xDE, 0xD4, 0xAB, 0xCD, 0x6A, 0x1D, 0x63, 0x8A, 0xDE, 0x0A, 0x4A, 0xF2, 0x9C, 0x2F, 0xCB, 0xA2, - 0x94, 0xE1, 0x59, 0x41, 0x18, 0x81, 0x29, 0x09, 0xC1, 0x62, 0x8A, 0x87, 0x73, 0xFF, 0xE1, 0xE3, - 0x03, 0x84, 0x60, 0xB3, 0x6E, 0x30, 0x86, 0xFD, 0x20, 0xE1, 0xAF, 0xBF, 0xFE, 0xC6, 0x39, 0x97, - 0x67, 0x82, 0x31, 0x1C, 0x62, 0xE0, 0x94, 0xC2, 0xE8, 0xAF, 0xF6, 0x3B, 0x63, 0x74, 0x8A, 0x0A, - 0xB3, 0xF4, 0xF9, 0xE5, 0xB4, 0x5E, 0x5D, 0xB9, 0x58, 0xD9, 0xC8, 0x5B, 0x91, 0x9E, 0x0F, 0x87, - 0xC3, 0x79, 0xB8, 0x5C, 0x4E, 0x59, 0xC6, 0x63, 0x8C, 0x9C, 0xB2, 0xAB, 0xDD, 0xA6, 0x29, 0xC5, - 0xEB, 0xFB, 0x9B, 0xBF, 0xFE, 0xFD, 0xE1, 0xD0, 0x0D, 0x94, 0x60, 0x1F, 0xFC, 0xFD, 0x7E, 0x7D, - 0x77, 0x75, 0xAD, 0x8C, 0xED, 0xA7, 0xD9, 0x38, 0x2F, 0xE5, 0xA2, 0xA5, 0x34, 0xD6, 0xB4, 0xEB, - 0x6D, 0x53, 0x17, 0xD3, 0x22, 0x13, 0x80, 0x4F, 0xCF, 0xCF, 0x10, 0x80, 0xD7, 0xF7, 0xF7, 0x00, - 0x46, 0x63, 0x0D, 0xC6, 0xB8, 0xAA, 0xCA, 0xCB, 0x79, 0x90, 0x52, 0x5F, 0xDF, 0x6C, 0x05, 0xA7, - 0x55, 0xC1, 0x37, 0x6D, 0xAD, 0xBB, 0x0B, 0x04, 0x98, 0x66, 0x99, 0xB3, 0x6E, 0x99, 0xE5, 0xAC, - 0xCC, 0x28, 0xF5, 0x7E, 0xDF, 0x70, 0x8A, 0x3F, 0x3F, 0x9F, 0x16, 0x69, 0x7F, 0x01, 0xBB, 0x94, - 0xB6, 0xDA, 0xE8, 0x37, 0xAF, 0x6E, 0x63, 0x0C, 0xFD, 0x38, 0x23, 0x8C, 0x10, 0x82, 0xCE, 0xDA, - 0xF5, 0xA6, 0xD9, 0x6D, 0xDA, 0xEE, 0xD2, 0x8B, 0x8C, 0xE5, 0x4D, 0x31, 0x0D, 0x23, 0x4A, 0x69, - 0x1A, 0x25, 0x23, 0x18, 0x63, 0x34, 0x8C, 0x66, 0x5A, 0x54, 0x99, 0x31, 0x4A, 0xE9, 0x30, 0x6B, - 0x6F, 0xC3, 0x7F, 0xFA, 0x0F, 0xFF, 0x7C, 0x1A, 0x96, 0x8C, 0xB3, 0xCD, 0xBA, 0xFC, 0xEB, 0x87, - 0xCF, 0x9F, 0x3F, 0xBF, 0xAC, 0xDB, 0xC6, 0x87, 0xF8, 0xEB, 0x2F, 0x5E, 0x77, 0xA3, 0xFC, 0xFB, - 0xC7, 0xC3, 0xCD, 0xF5, 0xF6, 0x78, 0x3E, 0x49, 0xAD, 0x36, 0x75, 0xF9, 0xF6, 0x76, 0x17, 0x9C, - 0xB7, 0x3E, 0x30, 0x41, 0x21, 0x84, 0xEB, 0x55, 0x75, 0x7B, 0xBD, 0x39, 0x9E, 0x0F, 0x6D, 0x53, - 0x2F, 0x8B, 0xE1, 0x0C, 0x1C, 0x86, 0x29, 0x81, 0xA0, 0x94, 0x49, 0x91, 0x28, 0xE5, 0xA4, 0xB6, - 0xC6, 0xD8, 0xE4, 0x7D, 0x5D, 0x55, 0x8C, 0x31, 0x0C, 0x43, 0xC6, 0x89, 0x54, 0x6A, 0x8E, 0x8A, - 0x00, 0xD4, 0x06, 0x6F, 0x0A, 0xCC, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x70, 0xBA, - 0x6A, 0x51, 0x4A, 0xDE, 0x07, 0x53, 0x72, 0xCA, 0x30, 0x1F, 0xA5, 0x43, 0x28, 0x9E, 0x8E, 0x33, - 0x80, 0x40, 0x07, 0x17, 0x21, 0xC1, 0x48, 0xBF, 0xBA, 0xDE, 0x3B, 0x8B, 0xCF, 0x83, 0xCA, 0x98, - 0xDC, 0xB6, 0x3B, 0x80, 0x79, 0xB7, 0xCC, 0xA7, 0x8B, 0xBE, 0xBF, 0xDF, 0x15, 0x19, 0x78, 0x78, - 0x59, 0xAE, 0x76, 0x59, 0x4D, 0xFC, 0x7F, 0xFB, 0xE1, 0xF0, 0x78, 0x56, 0xF7, 0x77, 0x37, 0x8B, - 0x74, 0x09, 0xC5, 0xE8, 0x16, 0x29, 0xE5, 0xD3, 0xD1, 0xB4, 0x8D, 0x78, 0x75, 0x53, 0x9E, 0xCE, - 0xFD, 0x5F, 0xFE, 0x36, 0x31, 0x82, 0x9A, 0x92, 0x59, 0x1D, 0xBB, 0xD1, 0x15, 0x15, 0xA5, 0x04, - 0x06, 0x9F, 0x56, 0xEB, 0x86, 0x10, 0xBA, 0x4C, 0x3A, 0x84, 0xE4, 0x63, 0x2C, 0x6B, 0xF2, 0xE6, - 0xF5, 0x0A, 0x41, 0xC0, 0x45, 0xF5, 0xF1, 0xE1, 0x58, 0x95, 0x02, 0x04, 0x15, 0x22, 0x20, 0x28, - 0x7B, 0x7C, 0x1E, 0x62, 0x00, 0x39, 0x63, 0x2F, 0xA7, 0x71, 0x98, 0x15, 0x22, 0x28, 0xF9, 0xB8, - 0xDF, 0xAE, 0x16, 0x69, 0x86, 0x49, 0x72, 0x8A, 0xBE, 0x7D, 0xFB, 0xFA, 0x3C, 0x4A, 0x80, 0x61, - 0x51, 0xE4, 0x75, 0xC9, 0x93, 0x93, 0x31, 0x40, 0x2E, 0x2A, 0x96, 0x09, 0x4A, 0x41, 0xB0, 0x06, - 0x21, 0xB4, 0x6A, 0x57, 0x4A, 0xDB, 0xAA, 0xAC, 0xCF, 0xA7, 0xC7, 0xAC, 0xC2, 0xB7, 0x57, 0x57, - 0x20, 0x82, 0xCF, 0x9F, 0x9E, 0xBC, 0x8D, 0x8B, 0x54, 0xEF, 0x1F, 0xCE, 0xDB, 0xED, 0x76, 0x1C, - 0xFB, 0x59, 0x29, 0x1F, 0x82, 0x31, 0xA1, 0xA8, 0x0A, 0x0A, 0xD3, 0xAF, 0xBE, 0xBA, 0xDF, 0x6E, - 0xEA, 0x90, 0x1C, 0x67, 0xE5, 0xD0, 0x2B, 0x42, 0x40, 0x59, 0x88, 0x71, 0xD2, 0x84, 0xA2, 0x18, - 0x22, 0x42, 0x88, 0x10, 0x9C, 0x12, 0x92, 0xCB, 0xFC, 0xE1, 0xD3, 0xE3, 0xF3, 0x61, 0x68, 0xAA, - 0xAC, 0xAE, 0x0B, 0x8C, 0xB9, 0xF3, 0x1E, 0x93, 0xB4, 0xDD, 0xAD, 0x13, 0x80, 0x08, 0x43, 0x60, - 0xEC, 0xE5, 0x32, 0xD4, 0x75, 0xDD, 0xB4, 0x65, 0xDF, 0x8D, 0xEB, 0xA6, 0x9C, 0x94, 0xB4, 0x20, - 0x61, 0x04, 0x43, 0xF4, 0xFB, 0xF5, 0x1A, 0x02, 0xFC, 0xAF, 0xDF, 0xFF, 0x8D, 0x42, 0x2C, 0xB0, - 0xBB, 0xA8, 0x20, 0x8A, 0xFA, 0xCD, 0x6D, 0xDD, 0x5F, 0xE4, 0xF3, 0xD3, 0x78, 0x7B, 0xBB, 0xF1, - 0x00, 0xC5, 0x30, 0x3B, 0x3B, 0x63, 0x8C, 0x28, 0x11, 0xD6, 0x25, 0x84, 0x0B, 0xA3, 0x1C, 0x63, - 0xB1, 0x28, 0x79, 0x4C, 0x68, 0x9E, 0x64, 0x88, 0x71, 0x31, 0x2A, 0x46, 0xB0, 0x5D, 0x6F, 0x9B, - 0xA2, 0xE6, 0x14, 0x84, 0x08, 0x9C, 0x0B, 0x52, 0x4E, 0x36, 0x3A, 0x44, 0xA0, 0xE0, 0xA4, 0xCE, - 0xF9, 0xA6, 0xAE, 0xB5, 0xF6, 0xE3, 0xA2, 0xAC, 0x8B, 0xCB, 0x62, 0xA4, 0x32, 0x45, 0x99, 0x59, - 0xEF, 0x9C, 0x0F, 0x10, 0xC2, 0xA6, 0xAE, 0x11, 0xC2, 0x3E, 0x04, 0xCE, 0xE8, 0xD3, 0xE3, 0x61, - 0x9E, 0x97, 0xB6, 0x29, 0xF3, 0x8C, 0x8A, 0xAC, 0x84, 0x10, 0x16, 0x39, 0x7C, 0x7E, 0x1A, 0x9A, - 0xAA, 0x28, 0xCB, 0xCC, 0xFA, 0xE8, 0x5C, 0x60, 0x9C, 0x20, 0x04, 0xAC, 0xD1, 0x2E, 0x06, 0xED, - 0x55, 0x96, 0x67, 0xB3, 0x5C, 0x9C, 0xF7, 0x21, 0x41, 0x04, 0x21, 0xA5, 0x1C, 0x84, 0x98, 0xE7, - 0x59, 0x51, 0x94, 0x20, 0x25, 0xCE, 0x58, 0x8A, 0xB1, 0xC8, 0x8B, 0x5F, 0x2C, 0x9C, 0x04, 0x42, - 0x6F, 0x9D, 0x75, 0x5E, 0x2F, 0x7E, 0xDD, 0x36, 0xF3, 0x3C, 0x6B, 0x6B, 0x98, 0xA0, 0x84, 0xA2, - 0x10, 0xC1, 0x38, 0x2B, 0x17, 0xC0, 0xAE, 0x69, 0x63, 0x80, 0x4A, 0x7B, 0xCA, 0x48, 0x88, 0xC1, - 0x7A, 0x73, 0x77, 0x55, 0x46, 0xBD, 0x1C, 0x0E, 0x97, 0xAB, 0xAB, 0xAB, 0x87, 0x97, 0xA7, 0xCB, - 0xA0, 0xDA, 0x32, 0x5B, 0xAF, 0xEA, 0x3C, 0xCB, 0x39, 0xA1, 0x79, 0x91, 0x11, 0x46, 0x95, 0x72, - 0xCA, 0x78, 0xED, 0x1C, 0x82, 0x70, 0x1C, 0x27, 0xEF, 0xDD, 0xDB, 0x57, 0x5B, 0x88, 0xD1, 0x2C, - 0xCD, 0x34, 0x59, 0x44, 0x20, 0x85, 0x88, 0x53, 0x0E, 0x02, 0xE0, 0x04, 0x12, 0x14, 0x08, 0xE5, - 0x31, 0xC2, 0xFD, 0x6E, 0x53, 0xD6, 0x55, 0xF0, 0xEE, 0x97, 0x3A, 0x7F, 0x6D, 0x6D, 0x51, 0x54, - 0x87, 0xC3, 0x81, 0x12, 0xBC, 0xDD, 0x6C, 0xA6, 0x79, 0x16, 0x42, 0xC0, 0x77, 0xAF, 0x5F, 0x1B, - 0x6D, 0x29, 0x25, 0x9C, 0xD3, 0xA2, 0xC8, 0x82, 0x0F, 0xD6, 0xC8, 0xCD, 0xBA, 0x2A, 0x45, 0x41, - 0x29, 0x7B, 0xFF, 0x7C, 0x09, 0x11, 0x6D, 0x77, 0xAF, 0x10, 0x02, 0xD3, 0xD8, 0x37, 0x05, 0xF9, - 0xEB, 0xFB, 0x8F, 0x4E, 0x2F, 0x22, 0xE3, 0x84, 0xD0, 0xE7, 0xC3, 0xE9, 0x5F, 0xFE, 0xE1, 0x8F, - 0xAB, 0x4A, 0xCC, 0x6A, 0x0A, 0x11, 0xFF, 0xF9, 0x87, 0x8F, 0xB3, 0x54, 0xD6, 0x98, 0x77, 0xF7, - 0xFB, 0xBB, 0xAB, 0x5D, 0x4C, 0xCC, 0x38, 0xAB, 0x8C, 0x1E, 0xE7, 0xC5, 0x87, 0xF8, 0x72, 0x38, - 0x64, 0x9C, 0xBF, 0x7B, 0xF7, 0x0E, 0xC1, 0xE4, 0x83, 0x8B, 0x10, 0x9E, 0xCF, 0x1D, 0x4C, 0x90, - 0x10, 0x5C, 0x56, 0xB9, 0x73, 0x0E, 0x23, 0x04, 0x31, 0xF2, 0x3E, 0x69, 0xA5, 0xAD, 0xD1, 0x57, - 0xD7, 0x5B, 0x08, 0x61, 0x46, 0x71, 0x23, 0x22, 0x04, 0x90, 0xF2, 0xF2, 0x7C, 0x5E, 0x46, 0x69, - 0x10, 0x4C, 0xD3, 0x3C, 0xBF, 0x7E, 0x75, 0x65, 0xAC, 0x7D, 0x39, 0x8D, 0x21, 0x24, 0x46, 0x90, - 0x0B, 0xE9, 0xF9, 0x74, 0xAA, 0x0A, 0xD1, 0xD6, 0xCD, 0xF1, 0x72, 0x71, 0xCE, 0x6F, 0x56, 0x0D, - 0xA3, 0xF8, 0x74, 0xEA, 0xAA, 0xAA, 0xFC, 0xE2, 0xED, 0xDD, 0x4F, 0x1F, 0x3E, 0x67, 0x82, 0x15, - 0x25, 0xDF, 0x6D, 0xEA, 0xA1, 0x9F, 0xC7, 0x69, 0xA1, 0x94, 0xFD, 0xFD, 0xC7, 0xC7, 0x3C, 0x13, - 0xFF, 0xF8, 0xFB, 0x6F, 0x9E, 0x4F, 0xE7, 0xAE, 0x9B, 0x10, 0x64, 0x6F, 0xEE, 0xF7, 0xC1, 0x9B, - 0xAA, 0x6C, 0xD6, 0x4D, 0xF3, 0xE3, 0xE7, 0xE7, 0x9F, 0x3E, 0x7C, 0xDE, 0xB4, 0xE5, 0xFE, 0x6A, - 0x7B, 0x3A, 0x76, 0x84, 0x90, 0x80, 0xD8, 0xA5, 0xEB, 0xAB, 0x42, 0xA4, 0xE8, 0x9F, 0x8F, 0x97, - 0x6F, 0xDE, 0x5C, 0xBF, 0xBE, 0xDE, 0x8E, 0xF3, 0x62, 0x43, 0x80, 0x08, 0xCA, 0xC5, 0xEC, 0xB6, - 0xEB, 0xA6, 0xCE, 0x10, 0x0C, 0x08, 0xA1, 0x0F, 0x0F, 0xC7, 0x7F, 0xF8, 0xFD, 0xBB, 0x51, 0xEA, - 0x84, 0x7C, 0x91, 0x89, 0xB1, 0x73, 0x20, 0x81, 0x2C, 0xC7, 0x30, 0x05, 0xE3, 0x89, 0x36, 0x20, - 0x9A, 0x0E, 0x13, 0x74, 0xB5, 0xDF, 0x56, 0x79, 0x3A, 0xCF, 0x87, 0x9C, 0x63, 0x37, 0x2F, 0x88, - 0xE7, 0x8B, 0x1A, 0x09, 0x02, 0xDE, 0xD3, 0xCF, 0xCF, 0xC3, 0xB0, 0x8C, 0xC3, 0xE4, 0xFB, 0xDE, - 0x57, 0x39, 0xDA, 0x6C, 0x73, 0x1D, 0x82, 0xA0, 0xE0, 0x7E, 0x5B, 0xFA, 0x08, 0x32, 0x81, 0x97, - 0x45, 0xA3, 0x10, 0x02, 0xE6, 0x4C, 0x08, 0x63, 0x3D, 0xA3, 0x84, 0x30, 0x5C, 0x94, 0xB5, 0xD5, - 0xFA, 0xE9, 0xA9, 0xDF, 0xBE, 0xFA, 0xA6, 0x2E, 0x05, 0x42, 0x49, 0x4A, 0xED, 0x23, 0x20, 0x48, - 0xFD, 0xF5, 0xCF, 0x7F, 0x9E, 0x16, 0xF0, 0x87, 0xEF, 0xAE, 0x8E, 0xA7, 0xF9, 0xE3, 0xC3, 0xD0, - 0xF5, 0xD6, 0x2A, 0x50, 0x15, 0x18, 0x02, 0x38, 0xCE, 0x9E, 0x32, 0xC4, 0x19, 0xC1, 0x04, 0x31, - 0x46, 0x9F, 0x9F, 0x87, 0x32, 0x67, 0x99, 0x40, 0x4D, 0x5B, 0x32, 0xC1, 0x09, 0x72, 0xF7, 0xD7, - 0xAD, 0x8B, 0x69, 0x98, 0x2D, 0x67, 0x60, 0x92, 0x4B, 0x5D, 0xAD, 0xE7, 0xC9, 0x9C, 0xCF, 0xD2, - 0xBA, 0x00, 0x21, 0xD4, 0x2E, 0x30, 0x4E, 0x17, 0x69, 0x08, 0x66, 0xD3, 0xB0, 0x68, 0xE5, 0x00, - 0x22, 0x5F, 0x5E, 0x6F, 0x00, 0x80, 0x11, 0xD1, 0xCD, 0xBA, 0x7E, 0x3C, 0x9E, 0x29, 0x81, 0x29, - 0x25, 0x67, 0x74, 0xD3, 0x6E, 0x46, 0x69, 0xB6, 0xAB, 0x6A, 0xDD, 0x56, 0x09, 0x24, 0x82, 0xA1, - 0xF3, 0xD1, 0x19, 0x63, 0xDC, 0xBC, 0xDF, 0x97, 0x14, 0x50, 0x82, 0xD8, 0xC3, 0xC3, 0x67, 0xE7, - 0xED, 0xB4, 0x78, 0xA9, 0xDD, 0x7E, 0xB7, 0xB7, 0xC1, 0x1D, 0x4E, 0x47, 0xAD, 0xBC, 0x0D, 0x10, - 0x20, 0x78, 0xB5, 0xAE, 0xFE, 0xF4, 0xDB, 0x6F, 0x2E, 0xFD, 0x1C, 0x93, 0x0B, 0x3E, 0xF9, 0x08, - 0x19, 0xA3, 0xC3, 0x2C, 0x09, 0x25, 0xDE, 0xF9, 0x5F, 0x70, 0x9C, 0x3C, 0xCF, 0xE7, 0x59, 0xFD, - 0xEA, 0xCB, 0xDB, 0x75, 0x5D, 0x8C, 0x93, 0xBD, 0xBB, 0x5E, 0x9F, 0x7B, 0x75, 0xBE, 0x0C, 0x94, - 0x93, 0xF5, 0x9A, 0x53, 0x4A, 0x09, 0x42, 0x11, 0x84, 0x79, 0x58, 0xF6, 0xBB, 0x15, 0x40, 0x00, - 0x41, 0x2C, 0x17, 0x49, 0x08, 0x9E, 0x97, 0x65, 0x56, 0xD6, 0x45, 0x78, 0x3E, 0x1E, 0xBF, 0x7C, - 0x75, 0x23, 0x6D, 0xD4, 0xDE, 0x62, 0x8C, 0x86, 0xE3, 0x53, 0x6F, 0x42, 0x5E, 0xD4, 0x95, 0x80, - 0x39, 0x2F, 0x94, 0x8C, 0xCA, 0x48, 0xCC, 0x90, 0xD6, 0xDA, 0x3B, 0x09, 0x23, 0xE6, 0x59, 0x56, - 0x94, 0x3C, 0xE3, 0xED, 0xF3, 0xF3, 0x85, 0x92, 0x40, 0x05, 0xA1, 0x84, 0x1B, 0xAB, 0x19, 0xA5, - 0xC7, 0xD3, 0xA5, 0x2E, 0x37, 0xF3, 0x32, 0x6A, 0x6B, 0xEA, 0x52, 0xAC, 0xEA, 0xD5, 0xA5, 0x5B, - 0xCA, 0x92, 0x63, 0x1C, 0xBF, 0x7C, 0xBB, 0xC3, 0x90, 0xEB, 0x65, 0x94, 0xF3, 0xF2, 0xE3, 0xE7, - 0x91, 0x32, 0xEC, 0x62, 0xEC, 0x87, 0x39, 0xC6, 0x58, 0x55, 0xA5, 0x73, 0x1E, 0x60, 0x48, 0x29, - 0xC9, 0xF2, 0x1C, 0x21, 0x8C, 0x08, 0xB1, 0xDA, 0x64, 0x9C, 0xC4, 0x60, 0x18, 0x67, 0x55, 0x25, - 0x32, 0xC1, 0x53, 0xC2, 0xC7, 0x73, 0xAF, 0xA4, 0xE3, 0x94, 0x10, 0x0C, 0xFB, 0x41, 0x4E, 0x93, - 0xD6, 0xD6, 0x15, 0x39, 0x2F, 0x0B, 0xC1, 0xB3, 0x1C, 0xE3, 0x00, 0x90, 0x05, 0x20, 0x50, 0xC6, - 0x6C, 0x70, 0xFD, 0x20, 0x9F, 0x9E, 0x2E, 0xFB, 0xAB, 0x35, 0x65, 0x34, 0x13, 0x19, 0x42, 0x10, - 0x04, 0xC4, 0x09, 0x05, 0x28, 0xFA, 0xE0, 0x87, 0x41, 0x73, 0x91, 0x6D, 0x9A, 0x7A, 0x19, 0x14, - 0x08, 0x10, 0x40, 0xF4, 0x74, 0x38, 0x87, 0xE0, 0x04, 0xC7, 0xDE, 0x87, 0xA6, 0xA9, 0xBC, 0x8F, - 0xF3, 0x62, 0xEB, 0xAA, 0x01, 0x09, 0x06, 0x00, 0x00, 0x8C, 0x52, 0x1B, 0x29, 0xF5, 0xBB, 0xD7, - 0xD7, 0x9B, 0x36, 0xCF, 0x32, 0x16, 0xAC, 0xF9, 0xF9, 0xE7, 0x9F, 0xCB, 0x22, 0xFF, 0xE6, 0x8B, - 0xD7, 0x4A, 0xEB, 0x08, 0x40, 0x02, 0x28, 0xC4, 0x64, 0x43, 0x34, 0xD6, 0x69, 0xE7, 0x84, 0x60, - 0x56, 0x87, 0xD3, 0x79, 0x00, 0x29, 0x06, 0x67, 0x43, 0x8C, 0xBF, 0xF9, 0xEE, 0x1D, 0xC1, 0x84, - 0x40, 0xB4, 0x2C, 0xF3, 0x7A, 0xB5, 0xC5, 0x00, 0x81, 0xE0, 0xA6, 0x65, 0x50, 0xD6, 0x31, 0x8C, - 0x57, 0x4D, 0x85, 0x30, 0x75, 0x1E, 0x30, 0x46, 0x4F, 0xC3, 0x84, 0x21, 0x20, 0x18, 0x65, 0x22, - 0xA3, 0x08, 0xDE, 0xDF, 0x5F, 0x51, 0xCA, 0x83, 0xF3, 0xF0, 0x3F, 0xFF, 0xA7, 0xFF, 0x68, 0x8C, - 0x7D, 0x7E, 0x3C, 0x9D, 0x2F, 0x5D, 0x9E, 0xF1, 0xE8, 0x03, 0xC2, 0x20, 0x85, 0xD8, 0x54, 0x05, - 0xCF, 0xEA, 0x88, 0x73, 0xB3, 0x4C, 0xC9, 0x0F, 0x84, 0x67, 0x31, 0xE2, 0x9F, 0x3E, 0x3D, 0x02, - 0x08, 0xF7, 0x6D, 0x35, 0x6A, 0xE7, 0xBC, 0x17, 0x8C, 0xDF, 0x5D, 0x5F, 0xF7, 0x97, 0x97, 0xED, - 0xA6, 0x98, 0x95, 0xEF, 0x27, 0xC3, 0x28, 0xDC, 0xD6, 0x59, 0x55, 0x94, 0x00, 0x62, 0xE7, 0x51, - 0xD7, 0x5F, 0x8C, 0xD3, 0xB3, 0x34, 0xFD, 0x38, 0x69, 0xAD, 0xCA, 0xB2, 0xA0, 0x84, 0x51, 0xCA, - 0x20, 0x48, 0x08, 0x63, 0x80, 0x92, 0x35, 0x9A, 0x31, 0xD1, 0x34, 0xCD, 0xB2, 0x2C, 0x87, 0x97, - 0x97, 0xCD, 0x76, 0x03, 0x00, 0x24, 0x84, 0xCC, 0xD3, 0x4C, 0x19, 0xC9, 0xF3, 0x6C, 0xEA, 0xFA, - 0x9B, 0x7D, 0x93, 0x0B, 0x21, 0xB5, 0x97, 0x26, 0xF8, 0x44, 0x18, 0x8E, 0x7D, 0x7F, 0xB9, 0xBB, - 0xB9, 0x06, 0x08, 0x8C, 0xB3, 0x46, 0x10, 0xF9, 0x10, 0x1E, 0x1E, 0x5F, 0xDA, 0xB6, 0x62, 0x8C, - 0xCA, 0x45, 0xCF, 0x6A, 0x69, 0x9B, 0xA6, 0xEB, 0x06, 0x08, 0x22, 0x48, 0xE0, 0xFE, 0xE6, 0xA6, - 0x2A, 0xF2, 0x53, 0xDF, 0x5B, 0x6B, 0x76, 0xDB, 0xFA, 0x8B, 0x57, 0xD7, 0x04, 0xA5, 0x6F, 0x7E, - 0x75, 0xE7, 0x42, 0xB8, 0x5C, 0xA6, 0x4C, 0xF0, 0xA6, 0xAC, 0x86, 0xD9, 0x98, 0x45, 0x1B, 0xE9, - 0x5F, 0xCE, 0x87, 0xFD, 0x6E, 0xED, 0x0D, 0x4A, 0x09, 0x2E, 0xDA, 0x28, 0x63, 0x08, 0x27, 0xE7, - 0xF3, 0xA0, 0xA4, 0x7A, 0xE9, 0xC6, 0xB2, 0x6A, 0xA3, 0x57, 0x55, 0x21, 0xBC, 0x75, 0x94, 0xF3, - 0x7F, 0xFC, 0xED, 0x57, 0xEF, 0x3F, 0x3C, 0x28, 0x65, 0x00, 0x84, 0x84, 0x92, 0x18, 0x63, 0x5E, - 0xAD, 0x8E, 0xE7, 0xC3, 0xAA, 0x66, 0x94, 0x30, 0xA9, 0xF4, 0x6F, 0x7F, 0xFD, 0xAA, 0x1F, 0x96, - 0xF5, 0x36, 0xDB, 0x34, 0x15, 0xC5, 0xCC, 0x7B, 0x0B, 0x41, 0x8C, 0x21, 0x14, 0x75, 0x73, 0x1E, - 0xA4, 0x99, 0xBB, 0x4C, 0x70, 0x4E, 0xD9, 0x7C, 0x79, 0x38, 0x4F, 0x63, 0xD5, 0xAC, 0x9D, 0x99, - 0x07, 0x39, 0x07, 0xEF, 0x11, 0xE4, 0x0F, 0x27, 0xF5, 0x74, 0x18, 0x9B, 0x8A, 0xD9, 0x10, 0x95, - 0x46, 0x97, 0x5E, 0x55, 0x15, 0x25, 0x38, 0x5E, 0xAD, 0x0B, 0xEF, 0xD3, 0x6C, 0x4C, 0x2E, 0xE8, - 0x38, 0x78, 0xC6, 0xE0, 0xFD, 0x55, 0x0E, 0x93, 0x97, 0x96, 0x42, 0x9C, 0x9A, 0x2A, 0x4B, 0x09, - 0x1F, 0xCF, 0x4B, 0x40, 0xEC, 0xCD, 0xEB, 0x7B, 0x80, 0x30, 0x46, 0x70, 0x38, 0x1D, 0xB2, 0xA2, - 0xBA, 0xB9, 0xDB, 0x0B, 0x30, 0x4C, 0xA7, 0x97, 0x8F, 0x9F, 0xFA, 0x0F, 0x4F, 0xCB, 0x65, 0x94, - 0xD7, 0xBB, 0x0D, 0xA7, 0xEC, 0x78, 0xEA, 0x8B, 0x22, 0x93, 0x8B, 0x87, 0x30, 0xB6, 0x15, 0x57, - 0xD6, 0xA7, 0x18, 0x09, 0xA5, 0x59, 0x93, 0x45, 0x6D, 0xAF, 0x37, 0x1B, 0x07, 0x82, 0xB3, 0x8A, - 0x42, 0x5F, 0x16, 0xB9, 0x4D, 0x31, 0x24, 0xCB, 0xB3, 0xCC, 0x39, 0xE0, 0x23, 0xD0, 0x36, 0x55, - 0x65, 0xF5, 0xF1, 0xE1, 0x28, 0xA5, 0x47, 0x09, 0x4E, 0x52, 0x13, 0x42, 0xEA, 0x22, 0x8F, 0x06, - 0x58, 0xE7, 0x5F, 0xED, 0x73, 0xE7, 0xCD, 0xBA, 0x59, 0x75, 0xB3, 0x99, 0x74, 0xBC, 0x74, 0x5D, - 0x55, 0x35, 0xCF, 0x2F, 0x4F, 0x45, 0x59, 0xE5, 0x59, 0xB6, 0x69, 0x6A, 0xA5, 0xCD, 0x38, 0x4F, - 0x09, 0xA4, 0x69, 0x1A, 0x9D, 0xF3, 0xB7, 0xD7, 0xDB, 0xFB, 0x9B, 0x2D, 0x86, 0x70, 0xD3, 0x34, - 0xC7, 0x73, 0x37, 0xC9, 0x29, 0x86, 0xB0, 0xD9, 0x54, 0xAC, 0xA8, 0xDE, 0x7F, 0xF8, 0x6C, 0xAD, - 0x2D, 0xF2, 0xA2, 0x1F, 0x55, 0x9E, 0xF3, 0xDF, 0x7C, 0x75, 0xE7, 0x8D, 0xFD, 0xF0, 0x78, 0xC9, - 0xB3, 0x5C, 0x4A, 0x87, 0x19, 0x2E, 0x8A, 0xFC, 0xC3, 0xA7, 0x93, 0x0B, 0x2E, 0x84, 0xF0, 0x9B, - 0x6F, 0xDF, 0x3C, 0x3D, 0x9F, 0x87, 0x51, 0x52, 0xC6, 0xF6, 0xEB, 0x7A, 0xDB, 0x96, 0x84, 0xD2, - 0xAF, 0xDF, 0xEC, 0x10, 0x66, 0x38, 0x79, 0x4A, 0x90, 0x0D, 0x0E, 0x21, 0xA2, 0xB4, 0x03, 0x18, - 0x30, 0xCC, 0x7C, 0x70, 0x8B, 0x31, 0xBB, 0x4D, 0xD5, 0x8F, 0xF3, 0x38, 0x2A, 0x46, 0xA9, 0x56, - 0xFE, 0x32, 0xC8, 0xCB, 0xF9, 0x70, 0xBD, 0xDD, 0x40, 0x46, 0x13, 0x08, 0x3E, 0x38, 0x2F, 0x65, - 0xE2, 0x34, 0x2F, 0x18, 0x41, 0xDC, 0x48, 0x4B, 0x10, 0x49, 0x29, 0xC5, 0x04, 0x07, 0xD9, 0x43, - 0x08, 0x11, 0x00, 0x28, 0xC5, 0xB2, 0x2C, 0x7C, 0x88, 0xCE, 0x24, 0xC1, 0x19, 0xA1, 0xF0, 0xD4, - 0x8D, 0xDB, 0xDD, 0x56, 0x60, 0x3C, 0x8E, 0x63, 0x82, 0x99, 0x33, 0x26, 0x26, 0x7F, 0x73, 0xD5, - 0x16, 0x39, 0xF3, 0x11, 0x40, 0x88, 0x32, 0x8E, 0x18, 0x63, 0x46, 0x07, 0x46, 0x10, 0x46, 0x48, - 0xE9, 0x80, 0x31, 0xEC, 0x86, 0xF9, 0x32, 0x4C, 0xC6, 0xB9, 0x71, 0x5C, 0x12, 0x48, 0xD6, 0x7B, - 0xEB, 0x42, 0x96, 0x09, 0x48, 0x09, 0x44, 0xB8, 0xAD, 0xB3, 0xFD, 0x2A, 0xA7, 0x18, 0xB8, 0x98, - 0x60, 0x4C, 0xDE, 0x7A, 0xE3, 0x03, 0x13, 0x19, 0x61, 0x34, 0xC6, 0x80, 0x10, 0x98, 0x47, 0xFB, - 0xF7, 0x1F, 0x1E, 0x67, 0xA3, 0x29, 0xC6, 0x82, 0x60, 0x4C, 0x39, 0x17, 0x2C, 0xCF, 0xE9, 0x34, - 0x4D, 0xD6, 0xFA, 0xD5, 0x2A, 0x2B, 0x6B, 0xF1, 0xE9, 0xF9, 0xA4, 0x8C, 0xE6, 0x9C, 0x17, 0x45, - 0xC1, 0x08, 0x4E, 0x21, 0xAE, 0xAA, 0x62, 0x59, 0x06, 0x1F, 0x91, 0xF6, 0x08, 0x27, 0x52, 0x15, - 0xD5, 0xE5, 0x3C, 0x7E, 0x7E, 0x78, 0xBE, 0xBB, 0xBD, 0xA2, 0x98, 0xDC, 0xDE, 0xEC, 0x21, 0x0A, - 0xDF, 0xFF, 0xED, 0xBD, 0xD6, 0x6E, 0xB3, 0x5D, 0x33, 0x46, 0x11, 0xC6, 0x65, 0xC6, 0xEA, 0x26, - 0x27, 0x94, 0x3A, 0xE7, 0xF3, 0x8C, 0x20, 0x80, 0x42, 0xF0, 0x00, 0x62, 0x84, 0x21, 0xA3, 0x88, - 0x11, 0x1C, 0x5C, 0x50, 0xC6, 0xC8, 0x45, 0x41, 0x48, 0xBA, 0xCB, 0x62, 0x83, 0x8F, 0x29, 0x41, - 0x08, 0x10, 0x46, 0x54, 0xB0, 0x14, 0x53, 0x46, 0xF9, 0x38, 0x4B, 0x84, 0x11, 0xA1, 0x58, 0x2A, - 0xD5, 0x54, 0x05, 0x42, 0x89, 0x53, 0xC2, 0x10, 0xE4, 0x98, 0x01, 0x00, 0x7C, 0x70, 0x4A, 0x19, - 0x1F, 0x93, 0x36, 0x8E, 0x50, 0x0E, 0x52, 0x22, 0x84, 0xAC, 0x9A, 0x5A, 0x1B, 0x37, 0x2F, 0x5A, - 0x30, 0x7A, 0x7B, 0xBD, 0x59, 0xD7, 0x79, 0x2E, 0x04, 0xFC, 0x9F, 0xFF, 0xA7, 0xFF, 0x11, 0x21, - 0x18, 0x00, 0x98, 0xA6, 0xC5, 0x1A, 0x9B, 0x82, 0x7F, 0xFC, 0xFC, 0x10, 0x9C, 0xCF, 0x33, 0x21, - 0xB2, 0x12, 0x42, 0x2C, 0xC7, 0x43, 0xD5, 0x08, 0x69, 0x7C, 0x55, 0x57, 0x2E, 0xC2, 0xBA, 0xAA, - 0xE6, 0x49, 0x5F, 0x26, 0xB7, 0xCC, 0x0B, 0xC1, 0x30, 0x05, 0x1B, 0x9C, 0x03, 0x30, 0x2E, 0xDA, - 0x43, 0x48, 0xFF, 0xF8, 0x9B, 0x57, 0xAB, 0x22, 0xEF, 0x27, 0xA7, 0x8D, 0xFA, 0xF9, 0xE3, 0x53, - 0x59, 0x55, 0xFD, 0xD0, 0x53, 0xC1, 0x40, 0x4C, 0x5D, 0xD7, 0x6D, 0xD6, 0x4D, 0x3F, 0x4A, 0x00, - 0x11, 0x80, 0x89, 0x20, 0xC2, 0x28, 0x71, 0xDE, 0x48, 0x65, 0xB7, 0xDB, 0xBD, 0xE0, 0xB4, 0xEF, - 0xFB, 0x3C, 0xCF, 0x94, 0x36, 0x6D, 0xDB, 0x28, 0x29, 0x7D, 0x70, 0x04, 0x22, 0x46, 0x71, 0x5D, - 0xE4, 0xD3, 0x2C, 0xAD, 0x8F, 0xFD, 0xB4, 0x5C, 0x5F, 0x6D, 0x6E, 0x6F, 0x37, 0xF3, 0x2C, 0x97, - 0xF1, 0x97, 0x37, 0x4B, 0xB0, 0x48, 0x4D, 0x08, 0xEE, 0x86, 0x41, 0x70, 0xC1, 0x19, 0xAB, 0xAA, - 0x62, 0x1C, 0x86, 0x6F, 0xBE, 0xBC, 0x67, 0x9C, 0x78, 0xE7, 0xAE, 0x77, 0xEB, 0xD5, 0xBA, 0x5D, - 0xE4, 0x12, 0x62, 0x1A, 0x86, 0x69, 0xB5, 0xAA, 0xAE, 0xDB, 0xB6, 0x2A, 0xC8, 0xF1, 0x32, 0xCC, - 0x52, 0x57, 0x65, 0xB1, 0xDF, 0xD6, 0xC7, 0xD3, 0xC4, 0xA9, 0x28, 0x72, 0x41, 0x09, 0x67, 0x22, - 0x1A, 0x6B, 0xED, 0x02, 0x9B, 0xBA, 0xEA, 0x87, 0xF9, 0xE9, 0xD4, 0x7D, 0x7C, 0x3E, 0x50, 0x24, - 0x7E, 0xF8, 0xF1, 0x87, 0xDD, 0xB6, 0xFE, 0xF5, 0xD7, 0x6F, 0x56, 0x4D, 0x31, 0x9B, 0x18, 0x13, - 0x66, 0x2C, 0x83, 0x30, 0x39, 0x6B, 0xAB, 0x42, 0x2C, 0xCB, 0xD2, 0x75, 0x43, 0x42, 0xB1, 0x9B, - 0xDD, 0xCB, 0xCB, 0xCB, 0x3F, 0xFD, 0xE1, 0x0B, 0x9A, 0x21, 0x6F, 0xC2, 0xAA, 0xCE, 0x9F, 0x4F, - 0xFD, 0xF5, 0xAE, 0x2D, 0x32, 0xAA, 0x94, 0x4E, 0x31, 0x70, 0x21, 0x7C, 0x70, 0x8B, 0x9A, 0x04, - 0x27, 0xD1, 0xE7, 0x56, 0x9B, 0x18, 0xDD, 0x2F, 0x99, 0x2F, 0xC6, 0x62, 0x56, 0xC6, 0x03, 0x8F, - 0x43, 0xF8, 0xF0, 0xF0, 0xF0, 0xF1, 0xF9, 0x54, 0x67, 0x3C, 0x04, 0x65, 0x62, 0x9C, 0x15, 0x98, - 0x54, 0x50, 0xDA, 0x7E, 0xFB, 0xAE, 0xD1, 0xCA, 0x7E, 0xFF, 0xE3, 0x58, 0x16, 0x62, 0xD3, 0x52, - 0x67, 0xDC, 0x6E, 0xC5, 0xB3, 0x8A, 0x1D, 0x9E, 0x07, 0x51, 0x6D, 0x43, 0x72, 0x5E, 0x2F, 0xB7, - 0xB7, 0x5B, 0x97, 0x04, 0x63, 0x9C, 0x10, 0x72, 0x3E, 0x4F, 0x98, 0x0A, 0x8C, 0x11, 0x0C, 0xB1, - 0x5D, 0xB7, 0x6D, 0x5D, 0x46, 0xDD, 0x2F, 0xD3, 0xC5, 0xCA, 0xF1, 0xF1, 0xE8, 0x44, 0x96, 0x8F, - 0xF3, 0x98, 0xB3, 0xAC, 0xCE, 0x6B, 0x1F, 0xE1, 0x38, 0x2D, 0xDF, 0x7D, 0xFD, 0x0A, 0x21, 0x82, - 0x10, 0x74, 0xDE, 0x53, 0x26, 0x10, 0x80, 0x6D, 0x55, 0x94, 0xB9, 0x38, 0x8F, 0xFD, 0xCB, 0xF3, - 0x63, 0x95, 0x97, 0x75, 0x5B, 0x5A, 0xA7, 0x17, 0xA5, 0x0E, 0xDD, 0xC1, 0x04, 0x40, 0x59, 0xA1, - 0x94, 0x05, 0x10, 0x82, 0x04, 0x08, 0xCE, 0x1F, 0x0F, 0x17, 0xC1, 0xF9, 0xF5, 0x6E, 0xB5, 0xCC, - 0x6A, 0x5D, 0x50, 0x65, 0x8E, 0xC7, 0xD3, 0x5C, 0x97, 0x25, 0xCF, 0x57, 0x5A, 0x83, 0x53, 0x37, - 0x94, 0x45, 0xAE, 0xB5, 0xCC, 0x28, 0x4B, 0x88, 0x42, 0x14, 0x39, 0xB5, 0x94, 0x11, 0xE9, 0xC8, - 0xF9, 0x38, 0x01, 0x10, 0x57, 0x4D, 0xBD, 0xDB, 0xAE, 0x93, 0x0F, 0x8C, 0x90, 0x7E, 0x1C, 0x12, - 0x4D, 0x28, 0x19, 0x67, 0x82, 0xF1, 0xFE, 0xE7, 0x4F, 0x87, 0xCD, 0x7A, 0xF5, 0xD5, 0xBB, 0x7B, - 0x88, 0x60, 0x51, 0xF0, 0xB1, 0x3F, 0x8D, 0xD3, 0x72, 0x99, 0x83, 0x60, 0xE5, 0x3C, 0xBB, 0x3C, - 0x67, 0x10, 0xC2, 0x4F, 0x4F, 0xE7, 0x79, 0x99, 0xEB, 0xB2, 0xFA, 0xEE, 0xDB, 0xAF, 0x9E, 0x5E, - 0x9E, 0xAD, 0xB1, 0xDB, 0x6D, 0x9B, 0x71, 0x36, 0x8E, 0xCB, 0xBB, 0xBB, 0xED, 0xB7, 0x6F, 0xB6, - 0xB3, 0xD4, 0x04, 0x93, 0x65, 0xD1, 0x90, 0x80, 0xBC, 0xE0, 0x8B, 0x0C, 0xDD, 0x30, 0x61, 0x84, - 0xAA, 0x2A, 0xF7, 0x21, 0x40, 0xF8, 0x8B, 0x48, 0x16, 0x56, 0x65, 0x61, 0xA4, 0x07, 0x08, 0x2A, - 0x35, 0x69, 0x65, 0x8D, 0x55, 0x2E, 0x78, 0xAD, 0x2C, 0xF4, 0xC9, 0xC2, 0xE4, 0xA3, 0x69, 0xCB, - 0xAA, 0xAD, 0xB6, 0x8C, 0x71, 0x90, 0xA0, 0x75, 0x1A, 0x40, 0x5F, 0x95, 0xC5, 0x3C, 0x0D, 0x18, - 0x44, 0x80, 0x78, 0xD3, 0xB6, 0x14, 0x91, 0xF3, 0xE5, 0xF4, 0xF9, 0xF9, 0x31, 0x2B, 0xAB, 0xA6, - 0x59, 0x4D, 0xFD, 0x50, 0xE6, 0xB9, 0x56, 0x56, 0x70, 0x9E, 0x67, 0x8C, 0x52, 0x31, 0x4D, 0x7D, - 0x51, 0x97, 0xC7, 0xC3, 0x04, 0x40, 0x64, 0x8C, 0x2B, 0x6D, 0xF3, 0x9C, 0x4B, 0x6D, 0x38, 0x63, - 0x08, 0xA2, 0xAA, 0xCE, 0xDB, 0x9C, 0xD9, 0x18, 0xA5, 0xD3, 0xC6, 0x99, 0xE7, 0xA7, 0xB3, 0x60, - 0xC2, 0xB9, 0xD8, 0x8D, 0x33, 0x40, 0xE9, 0xE6, 0x6A, 0x57, 0x66, 0xFC, 0xE5, 0xF1, 0x54, 0xB6, - 0x94, 0xA2, 0x74, 0x38, 0x49, 0x9E, 0x89, 0x79, 0xD2, 0x55, 0x5D, 0x1A, 0xE7, 0x10, 0x42, 0xAB, - 0xA6, 0x81, 0x00, 0x26, 0x04, 0x3F, 0xFE, 0xFC, 0xA4, 0xA5, 0x52, 0x2E, 0x70, 0x21, 0x78, 0x46, - 0x00, 0x08, 0x31, 0x00, 0x29, 0xD5, 0x6A, 0x5D, 0x50, 0x8E, 0x3E, 0x7C, 0x7E, 0x01, 0x00, 0x42, - 0x08, 0xAB, 0x9C, 0x5C, 0x6F, 0x4B, 0xA5, 0xFD, 0xB8, 0x18, 0x42, 0x08, 0x67, 0x82, 0x02, 0x81, - 0x31, 0x89, 0x28, 0x26, 0xEF, 0x39, 0x11, 0xBF, 0xFA, 0xEA, 0x75, 0x96, 0x0B, 0x44, 0xD0, 0xB0, - 0x2C, 0xC6, 0x38, 0x63, 0x6D, 0x88, 0x71, 0xB5, 0xAE, 0x92, 0x0F, 0xDE, 0xF9, 0x69, 0xD6, 0x3C, - 0xE3, 0x42, 0x08, 0xAB, 0x0D, 0x02, 0x30, 0x21, 0xA8, 0x8C, 0x9B, 0x87, 0xC9, 0xBA, 0x88, 0x18, - 0xE6, 0x84, 0x50, 0x02, 0x63, 0x08, 0x14, 0xD3, 0x71, 0x94, 0x52, 0x1A, 0x84, 0xB0, 0xB1, 0xB6, - 0x59, 0x57, 0xC1, 0x87, 0xFE, 0x32, 0xAD, 0x56, 0x15, 0x17, 0xCC, 0xBA, 0x88, 0x11, 0x98, 0xE6, - 0x19, 0x12, 0xEC, 0x9C, 0xB5, 0x56, 0x5B, 0xE3, 0x8D, 0xF4, 0x4D, 0x99, 0x79, 0x1F, 0xC7, 0x45, - 0x97, 0x05, 0xAF, 0x2B, 0x81, 0x10, 0x24, 0x84, 0x10, 0x42, 0x20, 0x22, 0x9C, 0x32, 0xEF, 0xA2, - 0x75, 0xF1, 0x9B, 0x37, 0x37, 0xEB, 0x3A, 0x83, 0xFF, 0xFC, 0x4F, 0xFF, 0x9C, 0x09, 0xCA, 0x05, - 0xC3, 0x8C, 0x41, 0x84, 0x39, 0xC7, 0x4A, 0xC9, 0xFE, 0x74, 0xEE, 0x4E, 0x67, 0x10, 0xE2, 0x66, - 0xB7, 0x25, 0x24, 0x36, 0x6D, 0x09, 0x21, 0xC8, 0x84, 0xA8, 0xAB, 0x42, 0x5A, 0xBB, 0x28, 0xC3, - 0x39, 0x9F, 0x46, 0xF5, 0x7C, 0x18, 0x3E, 0x3F, 0x74, 0x72, 0x19, 0x95, 0xD6, 0x3E, 0x84, 0xDD, - 0xB6, 0xF9, 0xDD, 0xAF, 0x5F, 0x3F, 0x7D, 0x3A, 0x1D, 0x4E, 0xFD, 0x7E, 0xB7, 0xFA, 0xFC, 0x72, - 0xA1, 0x5C, 0x58, 0xA3, 0xDE, 0xBD, 0xBA, 0x39, 0x9C, 0xFB, 0x97, 0xE3, 0xF1, 0xD5, 0xCD, 0x0E, - 0x11, 0x62, 0x5D, 0x34, 0xD6, 0x44, 0x1F, 0x39, 0xA7, 0x5D, 0x3F, 0xC6, 0x94, 0x04, 0xCF, 0xCA, - 0x5C, 0x20, 0x84, 0xBA, 0x61, 0xB4, 0xCE, 0xB5, 0x6D, 0xA3, 0x94, 0xA2, 0x14, 0x5B, 0x6D, 0x9B, - 0x2A, 0x4F, 0x09, 0x18, 0xEB, 0xC6, 0x69, 0xB9, 0xBD, 0xB9, 0xFA, 0xFA, 0x8B, 0x57, 0x52, 0xEB, - 0x45, 0x29, 0x39, 0xA9, 0x45, 0xEA, 0x49, 0xAA, 0x10, 0x43, 0x08, 0xC1, 0x87, 0x70, 0xB5, 0xDD, - 0xC7, 0x98, 0x6E, 0x77, 0xCD, 0x37, 0x6F, 0x5F, 0xED, 0x77, 0x4D, 0xF0, 0x1E, 0x40, 0x30, 0x4C, - 0xB3, 0x07, 0xA0, 0xAC, 0x79, 0x51, 0x08, 0x6D, 0x0D, 0x63, 0xC2, 0x2D, 0xFA, 0xE3, 0xCF, 0x0F, - 0x8C, 0x32, 0xE7, 0x43, 0x53, 0x17, 0xEB, 0x75, 0xF5, 0xF8, 0xD4, 0x6D, 0x56, 0x6D, 0x59, 0x50, - 0x84, 0x30, 0xCF, 0x28, 0x82, 0xF1, 0x7A, 0xBB, 0x4D, 0x01, 0x7F, 0x7A, 0x7C, 0xA1, 0x9C, 0x13, - 0xC6, 0xE4, 0xEC, 0x96, 0x79, 0x12, 0x1C, 0x29, 0x27, 0x3F, 0x3E, 0x8F, 0xF3, 0x1C, 0x7C, 0x08, - 0x08, 0x61, 0xE7, 0xF4, 0xAA, 0xCD, 0x09, 0xC1, 0x00, 0xA0, 0x42, 0x64, 0x45, 0x41, 0x4F, 0xDD, - 0x78, 0x3C, 0x9C, 0xFF, 0xF8, 0xDB, 0xB7, 0x9C, 0x23, 0x84, 0xA0, 0xF3, 0x21, 0xC4, 0x44, 0x31, - 0x0B, 0xC1, 0x4E, 0xF3, 0xCC, 0x39, 0x56, 0xDA, 0xA6, 0xE4, 0xB5, 0x9C, 0x8B, 0x8C, 0xD7, 0xE5, - 0xCD, 0xB2, 0x4C, 0x90, 0x60, 0x8C, 0x69, 0x4A, 0xBF, 0x98, 0x36, 0x31, 0xE3, 0x88, 0x60, 0x08, - 0xA2, 0x1F, 0x26, 0x1D, 0x01, 0x30, 0x6E, 0xB1, 0x4E, 0x2D, 0xCA, 0xBA, 0x10, 0x4E, 0x97, 0xDE, - 0x18, 0xDB, 0x4F, 0xDE, 0xDA, 0xF0, 0xE6, 0xCD, 0xFA, 0xC3, 0x87, 0x7E, 0x5D, 0x21, 0x0A, 0x63, - 0x56, 0x97, 0xEB, 0xED, 0xFA, 0xE3, 0x87, 0xC3, 0xF1, 0xB2, 0xDC, 0xEE, 0xF3, 0x8C, 0xE1, 0x00, - 0x48, 0xD5, 0x94, 0xCE, 0x46, 0xE3, 0x92, 0xF7, 0xA8, 0x5D, 0xAF, 0x51, 0x72, 0x82, 0x61, 0x9E, - 0x55, 0x59, 0x46, 0x8D, 0xBA, 0xBC, 0xDA, 0x5E, 0x19, 0x0D, 0x47, 0xA9, 0x18, 0xC5, 0x08, 0x80, - 0x32, 0x2F, 0x42, 0x00, 0x2E, 0x44, 0x42, 0x30, 0x02, 0x11, 0x13, 0xAC, 0x16, 0x63, 0x6D, 0x80, - 0x10, 0x38, 0x6B, 0xEE, 0xAE, 0x76, 0xF3, 0x62, 0x84, 0xA0, 0x31, 0x45, 0xCE, 0x58, 0x02, 0x50, - 0xCB, 0x61, 0x94, 0xC7, 0x6E, 0x98, 0x08, 0xC9, 0x70, 0x96, 0x8F, 0xE3, 0x4C, 0x31, 0xD5, 0x26, - 0x3A, 0x9F, 0x18, 0x43, 0xCE, 0xBB, 0xB2, 0xA0, 0x0D, 0x4F, 0xC7, 0xF3, 0x24, 0x0D, 0x8A, 0x3E, - 0x48, 0x65, 0x10, 0xE1, 0x09, 0xB3, 0xEB, 0x7D, 0x8D, 0xA2, 0xC6, 0x00, 0x23, 0x2A, 0x16, 0x39, - 0x40, 0xE0, 0x16, 0x65, 0xEA, 0xA6, 0x5C, 0x95, 0x15, 0x40, 0x7C, 0x92, 0x8E, 0x62, 0xF2, 0xE1, - 0xC3, 0x13, 0xE5, 0x62, 0x5A, 0x66, 0x48, 0xD2, 0xF3, 0xF3, 0x31, 0x25, 0x92, 0xA2, 0xA3, 0x04, - 0xBD, 0x7E, 0xFD, 0x66, 0xDD, 0xB4, 0x31, 0xBA, 0xD3, 0x65, 0x80, 0x71, 0x16, 0x82, 0x7E, 0x7E, - 0x9E, 0x08, 0xE5, 0xCE, 0xC7, 0x3C, 0xCF, 0x87, 0x71, 0xB9, 0xF4, 0x1D, 0xC2, 0xB8, 0xAE, 0x5A, - 0x82, 0xB1, 0xB5, 0x3A, 0x04, 0x7F, 0x7F, 0xBB, 0x7B, 0x75, 0xBD, 0xDA, 0xD6, 0x35, 0x02, 0x28, - 0xE3, 0xF0, 0xD3, 0x73, 0x57, 0xE4, 0x79, 0x5B, 0xB3, 0x97, 0x73, 0xE7, 0x63, 0x24, 0x84, 0x5A, - 0x1B, 0x20, 0x88, 0x55, 0x55, 0x3A, 0xEF, 0x83, 0x8B, 0x59, 0x29, 0xFA, 0x61, 0xCA, 0x0A, 0x61, - 0xA4, 0x6D, 0xD6, 0xD7, 0x34, 0x2B, 0x29, 0x9C, 0xB4, 0x96, 0x00, 0xA6, 0xA1, 0xEB, 0xA3, 0x89, - 0x8B, 0x56, 0x2F, 0x97, 0x4B, 0x4C, 0xF4, 0xDD, 0xED, 0xFD, 0xAF, 0xBE, 0xB8, 0xAE, 0x4A, 0x21, - 0x95, 0x61, 0x9C, 0x52, 0x8C, 0x18, 0x26, 0x52, 0x69, 0x84, 0x49, 0x51, 0x95, 0x5A, 0x9B, 0xC5, - 0xC9, 0x7E, 0x99, 0xAD, 0x76, 0xE3, 0x30, 0xF9, 0x90, 0x9A, 0x36, 0xDF, 0xD6, 0x9B, 0x14, 0x81, - 0x0F, 0x88, 0x51, 0xBA, 0xC8, 0x91, 0x10, 0xAA, 0xA4, 0x0D, 0xC1, 0x69, 0xE3, 0x2E, 0xDD, 0xF8, - 0x72, 0xE9, 0x7C, 0x88, 0x77, 0xB7, 0x37, 0xC3, 0xB8, 0x20, 0x8E, 0xBE, 0xB8, 0xD9, 0x55, 0x65, - 0xB9, 0x18, 0xD9, 0xF7, 0x1D, 0xE7, 0xA2, 0xAD, 0x8A, 0xBE, 0x9F, 0xFF, 0xFA, 0xC3, 0x87, 0x90, - 0xE2, 0x97, 0x6F, 0x5F, 0x97, 0x05, 0xFB, 0xEB, 0xDF, 0x3E, 0xDE, 0xDF, 0xD5, 0x4A, 0x4B, 0x9F, - 0x68, 0xB0, 0x28, 0x04, 0x50, 0x14, 0x99, 0x34, 0x1A, 0xA4, 0x48, 0x29, 0x25, 0x4C, 0x64, 0x39, - 0xAB, 0xAB, 0xDC, 0xCE, 0xEA, 0xD8, 0x4D, 0xCF, 0xC7, 0x3E, 0xC4, 0x28, 0x04, 0x46, 0x08, 0x20, - 0x42, 0x38, 0x01, 0x59, 0xCE, 0x00, 0x00, 0xD3, 0xAC, 0x00, 0x80, 0x4D, 0x8E, 0x20, 0xB4, 0xB3, - 0x41, 0xA7, 0x5E, 0xA5, 0xE8, 0xD7, 0xAB, 0x55, 0x59, 0x96, 0x7D, 0x3F, 0x3A, 0x6D, 0xDF, 0xBD, - 0xBA, 0xBF, 0xBB, 0xBA, 0xC6, 0x08, 0x9D, 0xBA, 0xF1, 0x74, 0xBE, 0x00, 0x04, 0x08, 0xC6, 0xF3, - 0x24, 0x95, 0xD4, 0x44, 0xB0, 0x94, 0x62, 0x4A, 0x69, 0xD5, 0x56, 0x31, 0xC4, 0x84, 0x31, 0x42, - 0x90, 0x12, 0xE2, 0x63, 0x42, 0x08, 0x05, 0x17, 0xF2, 0x22, 0x47, 0x08, 0x2D, 0xB3, 0x22, 0x9C, - 0x69, 0x29, 0x83, 0x33, 0xAB, 0x3A, 0xF7, 0xDE, 0xCF, 0xD2, 0x5D, 0xBA, 0x79, 0xBD, 0x59, 0x59, - 0xE3, 0x10, 0x04, 0x4D, 0xC9, 0x61, 0xF2, 0x11, 0x22, 0x41, 0xA9, 0x10, 0x2C, 0x26, 0x30, 0x1B, - 0x77, 0x1E, 0x26, 0x25, 0x95, 0xD3, 0x4E, 0x2A, 0x5D, 0x64, 0x99, 0x32, 0x06, 0x82, 0xD4, 0xD6, - 0xA2, 0x69, 0xCA, 0x65, 0x31, 0x00, 0x41, 0x6B, 0x9D, 0x60, 0xBC, 0x2A, 0xF2, 0xA2, 0x28, 0x51, - 0x82, 0x9C, 0x13, 0xF8, 0xA7, 0x7F, 0xF8, 0x23, 0x42, 0x6C, 0x5E, 0x54, 0x5D, 0x57, 0xE3, 0xB8, - 0x24, 0x10, 0xF7, 0xD7, 0x2D, 0x04, 0x49, 0x4E, 0x63, 0x5D, 0x32, 0x2E, 0x04, 0x82, 0x04, 0x84, - 0xC8, 0x18, 0x09, 0x21, 0x5A, 0xEB, 0x00, 0x46, 0x46, 0x6B, 0x4A, 0x60, 0x5D, 0x97, 0xED, 0x7A, - 0x7D, 0x38, 0xAA, 0xBF, 0xBF, 0x7F, 0x10, 0x9C, 0x97, 0xA5, 0xD0, 0x6A, 0x42, 0x61, 0x3E, 0x0D, - 0xF2, 0xF1, 0xB1, 0x47, 0x18, 0xED, 0xB7, 0x4D, 0x3F, 0xCA, 0x37, 0xAF, 0xF7, 0x97, 0xB3, 0x9C, - 0xA4, 0xEC, 0xFB, 0x61, 0xBB, 0xAA, 0x29, 0xA3, 0x11, 0x82, 0x65, 0x9E, 0xD7, 0x6D, 0x3B, 0x8E, - 0x53, 0x3F, 0x8C, 0x22, 0xCB, 0x10, 0xC0, 0x9C, 0xE3, 0x45, 0x4A, 0x65, 0x1C, 0xC6, 0x28, 0xCF, - 0x85, 0xD6, 0x26, 0x2F, 0xF8, 0xBB, 0xD7, 0xEB, 0xF3, 0x45, 0x7D, 0xFC, 0x74, 0xDA, 0xAC, 0x1B, - 0xCA, 0x98, 0x5A, 0xDC, 0xFD, 0xED, 0x96, 0x60, 0xE4, 0x43, 0x30, 0xCA, 0x60, 0x04, 0x1F, 0x4F, - 0x97, 0x65, 0x51, 0xBF, 0x64, 0x14, 0x6D, 0xD5, 0x5C, 0xC6, 0xF1, 0x9F, 0x7F, 0xFF, 0xDB, 0xDF, - 0xFF, 0xFA, 0x9D, 0x75, 0xFA, 0xC3, 0xA7, 0xE7, 0xBC, 0x16, 0xBF, 0x14, 0x49, 0x57, 0x75, 0x6E, - 0xAC, 0xD6, 0xD6, 0x31, 0x4C, 0x97, 0x69, 0x66, 0x94, 0xE6, 0x9C, 0xA6, 0x98, 0x56, 0xEB, 0x8D, - 0xD6, 0x1A, 0x21, 0xE8, 0xA2, 0xB5, 0x4A, 0x39, 0x17, 0xEA, 0xB2, 0x5A, 0xAD, 0x4A, 0xAD, 0xED, - 0x22, 0x95, 0xB4, 0x1A, 0x02, 0x5C, 0x17, 0x05, 0x08, 0xD8, 0xB8, 0xE8, 0xBD, 0x0D, 0x20, 0x85, - 0x08, 0xA4, 0x8E, 0xE3, 0xAC, 0x63, 0xF4, 0x21, 0xBA, 0xB2, 0xC8, 0x30, 0x82, 0x11, 0x00, 0xA3, - 0x3C, 0x67, 0x04, 0x22, 0x10, 0xBD, 0xDB, 0x6D, 0x9A, 0xE8, 0x92, 0x0F, 0xEE, 0xD4, 0x8D, 0x65, - 0x91, 0x1B, 0x6B, 0xA7, 0x69, 0x1A, 0xA6, 0xE5, 0xEB, 0x2F, 0x76, 0xAF, 0x6F, 0xB6, 0x45, 0xCE, - 0x21, 0x88, 0x59, 0x5E, 0xCC, 0xD2, 0x63, 0x8C, 0x20, 0x80, 0x00, 0x22, 0x17, 0x1D, 0x48, 0x10, - 0x21, 0x08, 0x11, 0xC4, 0x18, 0x07, 0x97, 0xA6, 0xC5, 0xB6, 0xAB, 0x2A, 0x26, 0xE3, 0x9D, 0x56, - 0xD6, 0x3C, 0x3F, 0xBE, 0x70, 0x9E, 0xCD, 0xCA, 0x60, 0x12, 0x1E, 0x9E, 0x3B, 0x2E, 0xC8, 0xF3, - 0x61, 0x49, 0xC1, 0xDD, 0xEE, 0x38, 0xCF, 0xCB, 0xD7, 0x6F, 0x6E, 0xFE, 0xFE, 0xE3, 0xD3, 0x30, - 0xCA, 0x52, 0x20, 0x6B, 0xA2, 0xC8, 0xB9, 0x36, 0xE1, 0xD2, 0xE9, 0xED, 0xBE, 0x5E, 0x46, 0x4B, - 0x21, 0xAD, 0x1B, 0x9E, 0x67, 0x80, 0xB0, 0xBC, 0x5E, 0x55, 0x88, 0xF0, 0xAF, 0xEF, 0xEF, 0x86, - 0x61, 0x41, 0x90, 0x2C, 0xA3, 0xD4, 0x4A, 0x49, 0x25, 0xAD, 0x0F, 0x94, 0x92, 0xCB, 0x65, 0xF4, - 0x31, 0x15, 0x79, 0x26, 0x32, 0xEA, 0x9D, 0x03, 0x31, 0x15, 0x45, 0xD6, 0x14, 0xE5, 0xE1, 0xD4, - 0x65, 0x99, 0xB0, 0xCE, 0xE6, 0x79, 0x56, 0xE6, 0x39, 0x81, 0x29, 0xCB, 0x98, 0xD6, 0x53, 0x2E, - 0x32, 0x0F, 0xA0, 0xF3, 0x91, 0x12, 0xD6, 0xF5, 0x1D, 0xE3, 0xD9, 0xF3, 0xE1, 0x90, 0x30, 0x6E, - 0xB8, 0x80, 0x76, 0x81, 0x84, 0x4B, 0xE3, 0xA5, 0x32, 0xCE, 0xBB, 0xF5, 0xAA, 0xB9, 0xB9, 0xBF, - 0x8A, 0x31, 0x38, 0x2B, 0xAF, 0xAF, 0xD6, 0x84, 0x8A, 0xA7, 0xE7, 0x67, 0x65, 0x4C, 0x88, 0xA8, - 0xEF, 0x86, 0x2A, 0x13, 0xD6, 0xE3, 0xCF, 0x8F, 0x47, 0xEF, 0x9C, 0xF5, 0x31, 0x2B, 0xD9, 0xAA, - 0xAD, 0x21, 0x84, 0x43, 0x3F, 0x2F, 0x06, 0x0B, 0x9E, 0x56, 0xA5, 0x68, 0x8A, 0x76, 0x5C, 0xDC, - 0xF9, 0x72, 0xEE, 0x87, 0xCB, 0xDB, 0xBB, 0xED, 0x22, 0xF5, 0xCF, 0x4F, 0x67, 0x65, 0xC3, 0xAA, - 0xAD, 0x8F, 0x97, 0xBE, 0x2A, 0xCA, 0xD5, 0x7A, 0xD5, 0x75, 0xBD, 0x36, 0x86, 0x53, 0x4A, 0x08, - 0x59, 0xE4, 0xF2, 0xC5, 0xAB, 0xBB, 0xAF, 0xEF, 0x57, 0x04, 0x51, 0x65, 0x62, 0x59, 0x30, 0x80, - 0x62, 0x3F, 0x48, 0x1F, 0x42, 0x04, 0x01, 0x80, 0x34, 0x4C, 0x8A, 0x51, 0x7E, 0xE9, 0x7B, 0xC1, - 0x58, 0xBB, 0xAA, 0xA7, 0x71, 0x66, 0x5C, 0x58, 0xA3, 0x9B, 0xF5, 0x2A, 0x6F, 0xEE, 0xAD, 0xF3, - 0xE3, 0xF9, 0xD3, 0xED, 0xF5, 0x1A, 0x63, 0x48, 0x29, 0xCC, 0x8B, 0x3C, 0xC5, 0x98, 0xA2, 0x5F, - 0x17, 0x42, 0x7B, 0x1F, 0x7C, 0x04, 0x3E, 0x38, 0x1F, 0x4E, 0x97, 0x09, 0x42, 0x90, 0x09, 0x6E, - 0xAD, 0x47, 0x08, 0x61, 0x8C, 0x43, 0x8C, 0x09, 0x24, 0x1F, 0x3C, 0xA2, 0x78, 0xB5, 0x69, 0x08, - 0x44, 0x18, 0xA1, 0x61, 0x1E, 0x28, 0xE5, 0xC1, 0x45, 0x82, 0x09, 0x86, 0x10, 0x42, 0x18, 0x40, - 0x20, 0x10, 0x1F, 0xFB, 0xE1, 0xD3, 0xC3, 0x81, 0x33, 0x3C, 0x2F, 0x16, 0x22, 0x68, 0x8C, 0x97, - 0xDA, 0x6E, 0xB6, 0xB5, 0xB7, 0x09, 0xE0, 0xB4, 0x5B, 0xD5, 0x4D, 0x2E, 0x2E, 0xFD, 0x58, 0x96, - 0xF9, 0x32, 0xA9, 0x53, 0x37, 0xBE, 0x1C, 0xBB, 0x3F, 0x7E, 0xF7, 0x9D, 0xB1, 0x43, 0x4A, 0x20, - 0x86, 0xB0, 0xC8, 0xA9, 0x59, 0x97, 0x9F, 0x3E, 0x4C, 0x18, 0xD3, 0x10, 0x22, 0xA7, 0x70, 0xB3, - 0x2D, 0x2F, 0xDD, 0x42, 0x28, 0x73, 0x21, 0x7E, 0xF9, 0x6E, 0x47, 0x18, 0xA7, 0x9C, 0x9F, 0x0E, - 0x1D, 0xF2, 0x01, 0xA3, 0xF4, 0xD2, 0x8D, 0x84, 0xD1, 0x3D, 0x27, 0x81, 0xD1, 0x59, 0xC9, 0x7A, - 0x55, 0xEF, 0x77, 0xFB, 0xF9, 0xF2, 0x8C, 0x50, 0x3A, 0x0F, 0xF2, 0xB2, 0x38, 0x08, 0x61, 0xD3, - 0x34, 0xD3, 0xBC, 0x08, 0x46, 0xDB, 0xAA, 0xAC, 0xF2, 0xCA, 0x99, 0x64, 0x5D, 0xE8, 0xFA, 0x71, - 0x9A, 0x67, 0xEB, 0xFC, 0x38, 0x2E, 0xD6, 0xD9, 0xA2, 0xC8, 0x56, 0x75, 0x49, 0x48, 0xCA, 0xAA, - 0xA2, 0x2E, 0x73, 0xEF, 0xC2, 0xA9, 0x9B, 0x31, 0x46, 0x00, 0x41, 0xEF, 0x3C, 0xF8, 0x65, 0x6B, - 0x2E, 0x72, 0x8C, 0x90, 0x77, 0x3E, 0xC4, 0x54, 0x97, 0x0C, 0x25, 0x63, 0x55, 0x20, 0x1C, 0x4E, - 0xD2, 0x8F, 0xA3, 0x82, 0x08, 0xBF, 0x3C, 0x9F, 0x57, 0x65, 0xC6, 0x84, 0x50, 0x5A, 0xF1, 0x8C, - 0x03, 0x80, 0xCA, 0x22, 0xAF, 0x4B, 0x51, 0x14, 0xD9, 0x71, 0x18, 0x8D, 0xB5, 0x53, 0x3F, 0x5A, - 0x17, 0x18, 0xE3, 0xC1, 0x5B, 0xEF, 0x42, 0x4C, 0x01, 0x24, 0x98, 0x00, 0xAC, 0xAA, 0x3C, 0x46, - 0x0F, 0x21, 0xCE, 0x33, 0x76, 0xB5, 0x5D, 0x23, 0x48, 0x00, 0x04, 0xF0, 0xBF, 0xFB, 0xF7, 0xFF, - 0xEE, 0xE5, 0xD8, 0x4F, 0xD3, 0x72, 0x7B, 0x7B, 0x25, 0xA5, 0xB6, 0xC6, 0xB4, 0xAB, 0x92, 0x51, - 0x04, 0x53, 0xC0, 0x98, 0x4C, 0xA3, 0x3C, 0x9E, 0x3A, 0x8C, 0xD0, 0xEB, 0xFB, 0x7D, 0x4A, 0x9E, - 0x32, 0xCE, 0x39, 0x2B, 0x32, 0x7A, 0xB5, 0x5D, 0x11, 0x92, 0x21, 0x8C, 0x20, 0x4A, 0x8B, 0x72, - 0x08, 0x81, 0x55, 0x93, 0x4D, 0x8B, 0xC1, 0x24, 0x3A, 0x6F, 0x9F, 0x9F, 0xBA, 0xD3, 0x65, 0xE4, - 0xC8, 0x7D, 0x78, 0x98, 0x22, 0x00, 0x98, 0xD0, 0xF3, 0xB9, 0xC7, 0x28, 0x3A, 0xEF, 0xB5, 0x71, - 0x59, 0xC6, 0x72, 0x91, 0x71, 0x46, 0x0F, 0xE7, 0x6E, 0xB3, 0x69, 0xEF, 0xAE, 0xD7, 0x65, 0x5E, - 0x76, 0xA3, 0x7C, 0x3A, 0x9E, 0x97, 0x79, 0x89, 0xD1, 0x21, 0x04, 0x39, 0x27, 0x9C, 0x55, 0xDE, - 0xCB, 0xB6, 0x11, 0x6F, 0x6F, 0xDF, 0xE4, 0x22, 0x53, 0xCE, 0xFD, 0xDB, 0xF7, 0x3F, 0x2B, 0x65, - 0x72, 0x0E, 0x6F, 0x77, 0x5B, 0x00, 0x52, 0xDB, 0x94, 0xD6, 0xFB, 0x87, 0xA7, 0x97, 0xA6, 0xC9, - 0xAD, 0xF6, 0xC7, 0x61, 0xAA, 0xCA, 0xFA, 0x4F, 0xBF, 0xFB, 0x4D, 0x53, 0x17, 0xC3, 0xD4, 0x8F, - 0x52, 0xB9, 0x94, 0xB4, 0x33, 0x08, 0x23, 0x39, 0xEB, 0x79, 0x5E, 0x30, 0x45, 0x6A, 0xD6, 0x8C, - 0x73, 0xCE, 0xC8, 0x32, 0x0C, 0xF7, 0x57, 0xFB, 0xC7, 0xC3, 0x39, 0x58, 0xDB, 0xAE, 0x0A, 0x0F, - 0x93, 0x35, 0xA1, 0xCC, 0xB3, 0x61, 0x50, 0xEB, 0xB6, 0x39, 0x77, 0x5D, 0x44, 0x20, 0x80, 0x58, - 0x88, 0xBC, 0x14, 0x6C, 0x1C, 0x64, 0x59, 0xD5, 0x4F, 0x87, 0xE3, 0xAB, 0x9B, 0xFD, 0xF1, 0xD4, - 0x61, 0x4C, 0x11, 0xA1, 0xF3, 0x22, 0x11, 0x46, 0x8B, 0x54, 0xDE, 0x79, 0x84, 0x10, 0xC2, 0xC4, - 0x1A, 0x5D, 0x97, 0xF9, 0x6E, 0xDD, 0x8E, 0xB3, 0x9C, 0xA5, 0x8E, 0x21, 0x52, 0x82, 0x04, 0x67, - 0xCF, 0xC7, 0x8B, 0x73, 0x56, 0x30, 0xF2, 0xDF, 0xFF, 0xBB, 0x5F, 0xBF, 0xBE, 0xDB, 0x1D, 0x2E, - 0x3D, 0x24, 0xF8, 0x78, 0xE9, 0x63, 0x82, 0x4E, 0x87, 0xAE, 0x5F, 0xDA, 0x4D, 0x15, 0x7D, 0x0C, - 0x31, 0x02, 0x0C, 0x53, 0x02, 0x46, 0x9A, 0xF5, 0xBA, 0xB5, 0xD6, 0xB1, 0x8C, 0x95, 0x79, 0xE6, - 0x8C, 0xC9, 0xCA, 0xEC, 0x78, 0xB8, 0x2C, 0x52, 0xAE, 0xB6, 0x2B, 0xAB, 0x67, 0xA5, 0x96, 0x97, - 0xF3, 0xF4, 0x74, 0x1C, 0xBF, 0xFD, 0x62, 0x43, 0x09, 0x98, 0x26, 0xC7, 0x38, 0xC6, 0x84, 0x7C, - 0x7E, 0xEC, 0x61, 0x0A, 0x85, 0xC0, 0x4A, 0x27, 0x1F, 0x50, 0x5E, 0x09, 0x84, 0xA0, 0x33, 0xB0, - 0xAC, 0x2A, 0x39, 0xCD, 0x08, 0xB9, 0x3C, 0xA7, 0x94, 0x80, 0xBB, 0x9B, 0x6B, 0xE3, 0x38, 0x66, - 0x9C, 0x41, 0x04, 0x01, 0xF2, 0xCE, 0x5E, 0xCE, 0x97, 0x94, 0x22, 0x00, 0xE8, 0xD4, 0x8D, 0x3C, - 0x13, 0x20, 0xC4, 0x5C, 0x50, 0x2E, 0xF8, 0x2C, 0x95, 0xD2, 0xFA, 0x7E, 0xBF, 0x0D, 0x31, 0x11, - 0x46, 0x19, 0xC3, 0xBF, 0x28, 0x60, 0x39, 0x23, 0x55, 0x59, 0x10, 0x82, 0xEF, 0x76, 0x2D, 0xC1, - 0xC1, 0x1A, 0x17, 0x22, 0x59, 0x94, 0xFE, 0xFB, 0xA7, 0x67, 0xA3, 0xCD, 0xFD, 0xFD, 0x2B, 0x3B, - 0x0E, 0x4E, 0xCB, 0x10, 0x03, 0x20, 0x8C, 0x72, 0x5E, 0x35, 0x65, 0xCE, 0x79, 0x59, 0x62, 0x04, - 0x61, 0x51, 0x67, 0x84, 0xD0, 0xBE, 0x9B, 0x53, 0x8A, 0x80, 0xC2, 0x59, 0xEA, 0xEE, 0x3C, 0x69, - 0x65, 0x10, 0xA4, 0xF3, 0x3C, 0xA4, 0xE0, 0x66, 0x03, 0x8A, 0x22, 0x6F, 0xEB, 0xBA, 0xEF, 0x47, - 0x42, 0xD8, 0x87, 0xCF, 0x0F, 0x18, 0xC7, 0xAF, 0x5E, 0xDF, 0xAF, 0xEA, 0xFA, 0xE7, 0xC7, 0xEE, - 0xE9, 0xE9, 0x20, 0x8D, 0xDC, 0xB6, 0xD5, 0xE3, 0xD3, 0x01, 0x73, 0x6E, 0x7C, 0xD4, 0x0E, 0x78, - 0x67, 0xDA, 0x66, 0xC5, 0x28, 0x7D, 0x3E, 0x3C, 0x53, 0x4A, 0x84, 0xC8, 0x9D, 0xF3, 0x84, 0x92, - 0x7F, 0xFA, 0xEE, 0x8B, 0xB7, 0x57, 0xC5, 0xE7, 0xA7, 0x91, 0x67, 0xA5, 0x10, 0xE4, 0xE5, 0x78, - 0x82, 0x10, 0x74, 0xE3, 0x4C, 0x28, 0x6E, 0xAA, 0xF2, 0x87, 0x9F, 0x1E, 0x78, 0xC6, 0x30, 0x46, - 0x65, 0xBD, 0x55, 0x73, 0xBF, 0x48, 0x59, 0x94, 0xAB, 0xEB, 0xFD, 0x86, 0xE4, 0xCD, 0xA7, 0x8F, - 0xEF, 0x8D, 0x9C, 0xB6, 0x9B, 0x15, 0x86, 0x20, 0xC1, 0x04, 0x52, 0xBC, 0xDA, 0xAF, 0x12, 0x00, - 0xCB, 0x22, 0xEB, 0x82, 0x63, 0x8C, 0x08, 0xC6, 0x45, 0x59, 0x3C, 0x3D, 0x1C, 0x42, 0x70, 0x59, - 0x26, 0x9C, 0x8F, 0x82, 0xB3, 0x42, 0x88, 0x7E, 0x54, 0xDA, 0x1A, 0xA3, 0x2D, 0xC2, 0x08, 0x00, - 0x88, 0x08, 0xCE, 0x0A, 0x86, 0x50, 0x04, 0x09, 0x68, 0x6B, 0xB3, 0x3C, 0x43, 0x30, 0x36, 0x45, - 0x65, 0xAC, 0xEB, 0xA7, 0x71, 0xB7, 0xDD, 0x1D, 0x2F, 0xFD, 0x30, 0x2D, 0x75, 0x59, 0x9C, 0x4F, - 0x5D, 0xBB, 0x2E, 0x87, 0x7E, 0x4A, 0x30, 0xF6, 0x27, 0x59, 0x54, 0x6C, 0xBD, 0x6D, 0x18, 0x2F, - 0x39, 0x4E, 0xCF, 0x4F, 0x87, 0x14, 0x88, 0x36, 0x76, 0x59, 0x64, 0xDB, 0x6C, 0x33, 0x5E, 0x77, - 0xDD, 0x39, 0x24, 0x75, 0x3C, 0xF5, 0x5F, 0xBD, 0xDD, 0x8B, 0x1C, 0x17, 0x65, 0xD3, 0x56, 0x39, - 0x8C, 0x11, 0x51, 0x1C, 0x11, 0x1A, 0x87, 0x65, 0x1A, 0xA4, 0x54, 0x12, 0x63, 0x6A, 0x12, 0x6A, - 0x9A, 0xA2, 0x2D, 0x44, 0x41, 0x82, 0x8A, 0x70, 0x9C, 0x5C, 0x74, 0x0E, 0xCC, 0xCA, 0x0B, 0x4A, - 0xB3, 0x06, 0xC4, 0x70, 0xB5, 0xCE, 0x9D, 0xB3, 0xC1, 0x48, 0x2A, 0xB2, 0xC4, 0xB3, 0x8C, 0x73, - 0xC1, 0xE9, 0xA2, 0x54, 0x4A, 0x00, 0x41, 0xA0, 0xB5, 0x53, 0xD2, 0xC5, 0x04, 0xCF, 0xE7, 0x6E, - 0x98, 0x16, 0x63, 0x75, 0x9E, 0x67, 0x00, 0x21, 0x4A, 0x31, 0x0A, 0xFE, 0x6E, 0x5B, 0x0E, 0x36, - 0xC2, 0x04, 0x8C, 0x8B, 0xE3, 0xAC, 0xDB, 0x4D, 0xBB, 0x4C, 0xD2, 0x19, 0xE3, 0x63, 0xC2, 0x84, - 0x52, 0x82, 0xD7, 0x4D, 0x7D, 0x3C, 0x75, 0x94, 0x52, 0x90, 0xE2, 0xAA, 0x44, 0x45, 0x46, 0xA4, - 0x92, 0x8C, 0x17, 0xD2, 0xF8, 0xEE, 0x2C, 0x71, 0x0A, 0xCA, 0x2D, 0x0E, 0x35, 0x8B, 0x72, 0xC3, - 0x30, 0x20, 0x14, 0x6F, 0xAF, 0xF7, 0xBF, 0x58, 0x13, 0xAB, 0x32, 0x3B, 0x9D, 0x4F, 0xFD, 0xD0, - 0xC7, 0x08, 0x40, 0x02, 0x21, 0x78, 0x00, 0xC0, 0x22, 0x6D, 0x8C, 0xA9, 0xAA, 0x32, 0xA3, 0x1D, - 0xC6, 0x10, 0x42, 0x50, 0xD6, 0x05, 0x8A, 0x70, 0x55, 0x97, 0x10, 0x41, 0x22, 0x4D, 0x9C, 0xC7, - 0xFE, 0x7A, 0xBB, 0x3A, 0x1E, 0xCF, 0x4D, 0x5D, 0xAC, 0xF6, 0x79, 0x02, 0x31, 0x7A, 0x67, 0xB4, - 0x7D, 0xFF, 0xF1, 0xA5, 0x6D, 0x56, 0x84, 0xE7, 0x31, 0xB8, 0xA6, 0xA9, 0x6E, 0x76, 0x9B, 0x76, - 0xD5, 0x5A, 0xEF, 0x30, 0x02, 0x29, 0x82, 0x18, 0x13, 0x42, 0x08, 0x80, 0x14, 0xAC, 0xFB, 0xEB, - 0x4F, 0x4F, 0x59, 0x51, 0x20, 0x9A, 0x8A, 0x8C, 0xE7, 0x39, 0x5F, 0xAF, 0x57, 0xF7, 0xF7, 0xD7, - 0xDD, 0xE1, 0x38, 0x8C, 0x16, 0x60, 0xBA, 0xDD, 0x54, 0xE7, 0xD3, 0xA9, 0xCA, 0xC5, 0x28, 0x81, - 0x57, 0x96, 0x62, 0xB4, 0xAB, 0xB3, 0x9F, 0x1E, 0x0E, 0xD6, 0xC5, 0xBA, 0xAE, 0x19, 0x23, 0x9F, - 0x1F, 0x1F, 0xCF, 0xBD, 0x32, 0xC6, 0x20, 0x08, 0xA3, 0x4F, 0x80, 0x20, 0x6B, 0xE2, 0x3C, 0xF6, - 0xFB, 0x4D, 0xFB, 0xCF, 0xDF, 0xFD, 0x3E, 0x63, 0x1C, 0x11, 0x9C, 0x92, 0xFB, 0xFA, 0xBE, 0xF9, - 0xF0, 0xF0, 0xFC, 0x5F, 0xFE, 0xEB, 0x4F, 0x75, 0x91, 0x6D, 0xB6, 0x6D, 0x8A, 0xC1, 0x5B, 0xB7, - 0xFA, 0xE6, 0x75, 0x44, 0x29, 0x78, 0xF8, 0xFB, 0x3F, 0xFC, 0xE3, 0x6E, 0xBD, 0x19, 0xC7, 0xF3, - 0x0F, 0x3F, 0x3F, 0xC4, 0x14, 0x67, 0xA5, 0xC6, 0x59, 0xFA, 0xE0, 0x19, 0xC3, 0x10, 0x42, 0x29, - 0x0D, 0x80, 0x29, 0xCB, 0x8B, 0x79, 0x96, 0xE3, 0xE8, 0x29, 0x86, 0x1F, 0x1E, 0x0E, 0x29, 0x26, - 0x42, 0xF0, 0xE7, 0xE7, 0x53, 0x5E, 0x8A, 0x2C, 0x2B, 0xA7, 0xC5, 0x00, 0x08, 0xDF, 0x7F, 0x7E, - 0x72, 0x3E, 0x60, 0x4A, 0x94, 0xF1, 0x26, 0x8B, 0x78, 0xDD, 0x7A, 0x1F, 0xAD, 0xB5, 0x77, 0x77, - 0x37, 0xD3, 0x3C, 0xBB, 0x14, 0x28, 0x82, 0x04, 0x42, 0x63, 0x14, 0x42, 0x98, 0x60, 0x7A, 0x3C, - 0x75, 0x57, 0xBB, 0x8D, 0xB5, 0x46, 0x19, 0x4D, 0x30, 0xEE, 0xC6, 0xE5, 0xE9, 0xE5, 0x82, 0x08, - 0x8A, 0x31, 0x41, 0x10, 0x63, 0x8C, 0xBB, 0x56, 0xFC, 0xC3, 0x6F, 0x7E, 0x03, 0x52, 0x2A, 0x72, - 0xF6, 0xFD, 0x8F, 0x0F, 0x2F, 0x97, 0x7E, 0x18, 0x97, 0x10, 0x22, 0xE7, 0x9C, 0x51, 0x46, 0x29, - 0x36, 0xCA, 0x20, 0x82, 0x16, 0x6D, 0x8D, 0x8B, 0xCE, 0xBA, 0xBA, 0xCE, 0x2E, 0xFD, 0xE8, 0x9C, - 0xE7, 0x2E, 0xD3, 0xCA, 0x6B, 0xA5, 0xC4, 0xA2, 0xBD, 0x4F, 0x98, 0xB3, 0x69, 0xEE, 0xBD, 0xF3, - 0x31, 0x41, 0xEB, 0x43, 0x70, 0xC9, 0x27, 0x10, 0x5C, 0x10, 0x19, 0xFA, 0xF8, 0x30, 0x70, 0x86, - 0xA7, 0xD9, 0x21, 0x90, 0xAA, 0x8C, 0x86, 0x18, 0x19, 0x23, 0x9B, 0x6D, 0x11, 0x13, 0xF6, 0x36, - 0x41, 0x80, 0xBC, 0x8F, 0x4A, 0xB9, 0xC7, 0xE7, 0x79, 0xBF, 0x2D, 0x0A, 0xB1, 0x48, 0x2B, 0xB9, - 0xC8, 0x09, 0x42, 0x65, 0x59, 0x41, 0x4C, 0x9C, 0x0F, 0x8C, 0xD0, 0xD9, 0x18, 0xC2, 0xE9, 0x30, - 0x2C, 0x8C, 0x33, 0x80, 0x50, 0x48, 0x96, 0x71, 0xA1, 0x95, 0x46, 0x04, 0x06, 0x17, 0xFB, 0x7E, - 0x74, 0x21, 0x20, 0x8C, 0x16, 0xE9, 0x52, 0x8C, 0x37, 0xFB, 0x35, 0xE7, 0xA4, 0x1F, 0xE7, 0xA6, - 0xA0, 0x82, 0xE3, 0xA6, 0xAC, 0x7D, 0x84, 0x08, 0xD2, 0x4D, 0x5B, 0x6C, 0x9A, 0x92, 0xAC, 0x8A, - 0x90, 0x92, 0x52, 0xBA, 0x2C, 0x73, 0x63, 0xDC, 0x28, 0xF5, 0xE7, 0x97, 0x6E, 0x6B, 0x98, 0x55, - 0xD2, 0xA7, 0x14, 0x31, 0x11, 0x82, 0xA1, 0x04, 0x01, 0x00, 0x84, 0x91, 0xB6, 0x6D, 0x42, 0x15, - 0x84, 0x10, 0x97, 0x23, 0x39, 0xBE, 0x9C, 0xF7, 0xAB, 0x66, 0x9E, 0xA5, 0x55, 0xD1, 0x1B, 0xBF, - 0x2C, 0x6E, 0xD3, 0x96, 0xE3, 0x38, 0x81, 0x18, 0x60, 0x5A, 0xAA, 0x12, 0xF6, 0x99, 0x08, 0xC9, - 0x4F, 0xB3, 0xDA, 0xEF, 0x76, 0x10, 0x93, 0xA7, 0x6E, 0x62, 0xC9, 0x4B, 0xE9, 0x62, 0xF4, 0x31, - 0xC4, 0x2A, 0xE3, 0x6D, 0x55, 0x3C, 0x9D, 0xBB, 0xFD, 0x6E, 0x57, 0x15, 0xA5, 0xD6, 0xD6, 0xDA, - 0xDC, 0x07, 0xC0, 0x21, 0x3A, 0x5D, 0x46, 0xA9, 0xBC, 0x0F, 0x16, 0x61, 0xF4, 0x0B, 0x0F, 0x4B, - 0x28, 0x7E, 0x7A, 0x39, 0x6D, 0xD6, 0xDB, 0x7A, 0x45, 0xA5, 0x76, 0x79, 0x51, 0x7C, 0xF3, 0xBB, - 0x7F, 0x7A, 0x7A, 0x78, 0x3A, 0x7C, 0xFF, 0xDF, 0xAA, 0x32, 0xDB, 0x5F, 0x6F, 0xF7, 0x9B, 0x66, - 0xBF, 0x6D, 0x42, 0x08, 0xDD, 0x30, 0xAD, 0xDB, 0x52, 0x1A, 0x8B, 0x41, 0xEA, 0xFA, 0xF1, 0x7A, - 0xDF, 0x78, 0xEF, 0xFE, 0xF2, 0xB7, 0x0F, 0x9B, 0x75, 0x83, 0x3C, 0xD4, 0xC6, 0x43, 0x8C, 0x20, - 0x46, 0xCA, 0x39, 0x1F, 0xA3, 0xB1, 0x9E, 0x67, 0xC2, 0xBA, 0x10, 0x43, 0x88, 0x3E, 0x8C, 0xE3, - 0x32, 0x4C, 0xF3, 0xF3, 0xE1, 0x92, 0x00, 0xBC, 0xBB, 0xDB, 0x12, 0x1C, 0xC0, 0x0D, 0x5E, 0x94, - 0x12, 0x5C, 0x3C, 0xBE, 0x1C, 0x42, 0x84, 0x84, 0x50, 0x63, 0xDC, 0x7A, 0xD3, 0x2C, 0xCB, 0xD4, - 0x54, 0x39, 0x61, 0x24, 0x17, 0x62, 0xB3, 0xA9, 0x2E, 0xC3, 0x78, 0x38, 0x9F, 0x9B, 0x92, 0xAF, - 0x77, 0xCD, 0xB2, 0x18, 0x40, 0x52, 0x2E, 0x56, 0x18, 0x65, 0x97, 0xBE, 0xEB, 0xC6, 0xC1, 0x19, - 0x95, 0xE7, 0x62, 0xB7, 0xAB, 0x8B, 0x8C, 0x6D, 0x36, 0xFB, 0xA9, 0xEF, 0x59, 0x91, 0x05, 0x00, - 0x8D, 0x71, 0x57, 0xFB, 0x7A, 0xDF, 0xB2, 0x4B, 0x8F, 0x44, 0xD5, 0x3C, 0xBF, 0x4C, 0x04, 0x06, - 0x63, 0x16, 0xE7, 0x09, 0x26, 0x62, 0xB7, 0x2B, 0x29, 0x42, 0xD1, 0xF8, 0xEB, 0x5D, 0xF5, 0xF1, - 0x14, 0xB4, 0xB6, 0x04, 0xFB, 0x42, 0xD4, 0x53, 0x70, 0xCB, 0x6C, 0xA9, 0x27, 0x2C, 0x6B, 0x9E, - 0x1E, 0x5F, 0x00, 0x4A, 0x43, 0x3F, 0xC7, 0x18, 0x33, 0x21, 0x9A, 0xB6, 0x4A, 0x21, 0xAE, 0xDF, - 0xDE, 0x2C, 0x8B, 0xE2, 0x19, 0xAA, 0xAB, 0x72, 0x5C, 0xAC, 0xF5, 0x6E, 0xEC, 0xC6, 0x18, 0x53, - 0x58, 0xA4, 0xB3, 0x16, 0xE4, 0x39, 0xCF, 0xC5, 0xF9, 0x34, 0xA4, 0x90, 0xAA, 0xA6, 0xD0, 0xC6, - 0x6A, 0x65, 0xEF, 0xAF, 0xB6, 0xC7, 0x53, 0x37, 0x2B, 0xB3, 0x16, 0xC2, 0xE8, 0x78, 0x19, 0xD5, - 0xAA, 0xCD, 0x04, 0x4E, 0x01, 0xBA, 0x6E, 0x32, 0xD6, 0xEA, 0x76, 0x25, 0x4A, 0x5E, 0x3F, 0x1D, - 0x21, 0x21, 0x0C, 0x22, 0x84, 0x20, 0x9C, 0x67, 0xAB, 0xB5, 0x39, 0x77, 0xF3, 0xFD, 0xCD, 0xBE, - 0xC8, 0xEB, 0xCB, 0x65, 0xD0, 0xDA, 0x00, 0x08, 0x16, 0xA9, 0xB8, 0x10, 0x84, 0x89, 0x2A, 0xCF, - 0xB6, 0x6D, 0x69, 0xB4, 0x31, 0xD6, 0xBE, 0x7B, 0x7D, 0xAF, 0xAC, 0xEE, 0x07, 0xD5, 0x34, 0x3B, - 0x69, 0x0C, 0x2E, 0x73, 0xF2, 0x7A, 0x5F, 0x3F, 0xBD, 0x74, 0xDA, 0x9A, 0xED, 0x26, 0x1B, 0x87, - 0x5E, 0x29, 0x9B, 0xE7, 0x62, 0x18, 0xE6, 0xBA, 0xC9, 0xB4, 0x8E, 0xC6, 0x68, 0xE7, 0xDD, 0x6F, - 0xBF, 0x7E, 0xCB, 0x68, 0xF6, 0xF3, 0xC7, 0xE3, 0xFB, 0x8F, 0x4F, 0xFF, 0xE5, 0xBF, 0xFE, 0x55, - 0x2A, 0xA3, 0x8C, 0xFE, 0xF8, 0xF9, 0x49, 0x2E, 0x3A, 0x86, 0xB8, 0x6E, 0x6B, 0xC6, 0x88, 0x77, - 0xF1, 0xA7, 0x9F, 0x1F, 0xA5, 0x4D, 0x3F, 0xBE, 0x3F, 0x12, 0x2C, 0x22, 0x40, 0xFB, 0x5D, 0xBB, - 0xDB, 0x14, 0x18, 0x43, 0x02, 0x80, 0x60, 0x3C, 0xA4, 0xB4, 0xAE, 0x6A, 0x41, 0xD0, 0xF5, 0xA6, - 0x3C, 0xF4, 0x8B, 0x71, 0x01, 0x22, 0x30, 0xCF, 0xB2, 0xEF, 0xE6, 0x73, 0x3F, 0xB4, 0x65, 0x09, - 0x11, 0xB1, 0x3E, 0x42, 0x88, 0xA6, 0x59, 0x96, 0x82, 0xFF, 0xE6, 0xEB, 0xAF, 0x7D, 0x84, 0xA7, - 0x7E, 0x34, 0xD6, 0x77, 0xC3, 0xB4, 0x2C, 0x52, 0x08, 0x74, 0xBD, 0x6B, 0x9A, 0xBA, 0xF8, 0xF0, - 0xF1, 0xF4, 0xFC, 0x74, 0x60, 0x8C, 0xB7, 0x6D, 0xCB, 0x38, 0x23, 0x34, 0x0F, 0x9E, 0x5C, 0xCE, - 0xDD, 0x22, 0x97, 0x97, 0x73, 0xFF, 0x72, 0x1E, 0x45, 0xC1, 0x21, 0x22, 0x72, 0xD1, 0x10, 0x21, - 0xC2, 0x28, 0x42, 0x28, 0xCB, 0x32, 0x4A, 0x29, 0x48, 0x00, 0xC4, 0x04, 0x00, 0xE8, 0x86, 0x69, - 0x9C, 0x96, 0x49, 0xAB, 0x98, 0xC2, 0xA6, 0xAE, 0xAF, 0xD6, 0x5B, 0x29, 0xD5, 0x62, 0xAD, 0x89, - 0x09, 0x23, 0x8C, 0x31, 0xC5, 0x24, 0x2B, 0xCA, 0x76, 0xB7, 0xDB, 0xD7, 0x55, 0x96, 0x65, 0x62, - 0x1A, 0xFA, 0xFD, 0xF5, 0x7E, 0x7F, 0xB5, 0x32, 0xDA, 0xF8, 0x90, 0x04, 0xE3, 0x31, 0x42, 0x08, - 0x61, 0x53, 0x97, 0x79, 0x26, 0x52, 0xF4, 0xDE, 0x07, 0x6D, 0xAD, 0xD2, 0x92, 0x33, 0x08, 0x63, - 0xD8, 0x6F, 0x9B, 0xAB, 0x4D, 0xFD, 0xC5, 0xDD, 0xEE, 0x9F, 0xFF, 0xF0, 0x05, 0x42, 0xA8, 0xEB, - 0xE7, 0x7E, 0x5A, 0x3E, 0x3D, 0x5F, 0xEA, 0x5A, 0x30, 0x4A, 0x05, 0xE7, 0xD6, 0xB8, 0xF5, 0xBA, - 0x94, 0xD2, 0x38, 0x1F, 0xE7, 0x45, 0x01, 0x08, 0x21, 0x00, 0x9C, 0x63, 0x4A, 0x89, 0xB3, 0xDE, - 0x18, 0x97, 0x00, 0x48, 0x20, 0x1D, 0x4E, 0x43, 0xDF, 0xCF, 0x98, 0x41, 0xE3, 0x9C, 0xB7, 0x0E, - 0xA6, 0x30, 0x8E, 0xB3, 0x54, 0x1E, 0x61, 0x94, 0x92, 0x43, 0x29, 0x7E, 0xF8, 0xBC, 0x28, 0x1D, - 0x9D, 0x4D, 0x6D, 0x89, 0x53, 0x82, 0x65, 0x21, 0xB6, 0xDB, 0x3A, 0x04, 0xEB, 0x5D, 0x00, 0x00, - 0x06, 0x17, 0xBD, 0x4F, 0x97, 0xCB, 0x40, 0x19, 0x25, 0x04, 0x6E, 0xB6, 0xEB, 0xD5, 0x7A, 0x35, - 0x2B, 0x33, 0x0F, 0x0B, 0x40, 0xF0, 0x74, 0xEA, 0x7F, 0x11, 0x93, 0x8C, 0xD3, 0x6C, 0xBD, 0xCF, - 0xCA, 0xF2, 0xE1, 0xF1, 0x19, 0x13, 0x66, 0xBD, 0x87, 0x08, 0x97, 0x55, 0x91, 0x62, 0xC8, 0xB9, - 0x38, 0x0F, 0x4B, 0x3F, 0x2E, 0x87, 0x73, 0x0F, 0x11, 0x3E, 0x9C, 0xFA, 0x71, 0x5E, 0x9C, 0x07, - 0xFD, 0x28, 0x87, 0x79, 0x59, 0xB4, 0x6A, 0xEB, 0x7C, 0xB5, 0xA9, 0x06, 0x2D, 0x6F, 0x6F, 0x76, - 0xBB, 0x4D, 0x83, 0x11, 0x72, 0x11, 0x58, 0xEF, 0x43, 0x82, 0x31, 0x24, 0x00, 0x60, 0x56, 0x8A, - 0xAA, 0x64, 0xDE, 0xFA, 0xC3, 0x61, 0x9C, 0x16, 0x7D, 0x3C, 0x5E, 0xB4, 0xB5, 0xC3, 0xA2, 0xC7, - 0x45, 0x8F, 0x83, 0x4A, 0x09, 0x33, 0x26, 0xAC, 0xF5, 0x75, 0x59, 0xDF, 0x5E, 0xDD, 0xAC, 0xDA, - 0x6A, 0xBD, 0x6A, 0xDB, 0x66, 0xC5, 0x18, 0x2B, 0xAB, 0x66, 0x7B, 0x75, 0xF7, 0xFA, 0xEE, 0x1A, - 0x27, 0xF5, 0x78, 0x7C, 0xE4, 0x3C, 0xAF, 0x44, 0xA1, 0xB5, 0x11, 0x19, 0x82, 0x00, 0x1A, 0x13, - 0x29, 0x82, 0x29, 0x18, 0x42, 0x50, 0x91, 0xE5, 0x4A, 0xCE, 0xBF, 0xFE, 0xE2, 0xEA, 0x6A, 0xDB, - 0x70, 0x41, 0xDA, 0x2A, 0x63, 0xD0, 0xB7, 0x55, 0x89, 0xB1, 0x48, 0x88, 0x6A, 0xEB, 0x3F, 0x7C, - 0xFA, 0x0C, 0x00, 0xC4, 0x08, 0x58, 0x1F, 0x2F, 0xFD, 0x94, 0x67, 0x05, 0xC6, 0xF0, 0xDC, 0x4D, - 0x98, 0xF0, 0xB2, 0xAC, 0x44, 0xD9, 0x9E, 0x5E, 0x9E, 0x7E, 0xF5, 0x87, 0x7F, 0x91, 0xE7, 0x4F, - 0xFB, 0x0A, 0x7F, 0xF9, 0xF6, 0xCD, 0x97, 0xF7, 0xD7, 0x99, 0x20, 0xBF, 0x9C, 0x81, 0x38, 0x25, - 0x9C, 0x33, 0x4E, 0x59, 0x59, 0x66, 0x77, 0xD7, 0xDB, 0xEB, 0xAB, 0x0D, 0x63, 0xD4, 0x99, 0xB8, - 0xDF, 0x6D, 0x18, 0xE7, 0x4C, 0x70, 0x1F, 0xE2, 0xF3, 0xE3, 0xF1, 0x70, 0xEE, 0x21, 0x86, 0x4A, - 0x5B, 0x6D, 0x9C, 0xB5, 0xC1, 0x39, 0x0F, 0x31, 0x14, 0x22, 0x83, 0x10, 0x22, 0x08, 0xA7, 0x59, - 0x2B, 0xEB, 0x09, 0xC1, 0x0F, 0xCF, 0x97, 0xE0, 0xE3, 0x34, 0x2F, 0xC3, 0x6C, 0x16, 0x69, 0x3F, - 0x7C, 0xFC, 0x1C, 0x7C, 0x2C, 0x72, 0xEA, 0x9D, 0x7B, 0x39, 0x0D, 0x09, 0x02, 0xE7, 0xE3, 0x22, - 0x2D, 0x23, 0xB8, 0xAD, 0xF3, 0x14, 0x63, 0x5E, 0x70, 0x8C, 0x41, 0xD3, 0x54, 0x55, 0x59, 0x1A, - 0x6D, 0xBF, 0x7C, 0xBB, 0xDB, 0x6E, 0xF9, 0x77, 0x5F, 0xBF, 0xFB, 0xD5, 0xD7, 0x77, 0xCE, 0x4A, - 0x6D, 0x8C, 0x33, 0x29, 0x00, 0x68, 0x23, 0x3C, 0x5F, 0xE6, 0x45, 0xD9, 0xCB, 0xF1, 0xA0, 0xC6, - 0xE1, 0x78, 0x99, 0x62, 0x74, 0x4D, 0x5D, 0xC5, 0x60, 0xF3, 0x2C, 0xE7, 0x2C, 0x0B, 0x2E, 0x2E, - 0xE3, 0xD2, 0x5D, 0xA6, 0x18, 0xE3, 0xE1, 0xD8, 0xF5, 0xE3, 0xF8, 0x72, 0x1C, 0xFE, 0xF2, 0xD7, - 0x9F, 0x30, 0x84, 0x97, 0x7E, 0x96, 0x32, 0x50, 0xCA, 0xA4, 0x36, 0x52, 0x49, 0xA5, 0x6D, 0x02, - 0xC0, 0xFB, 0xA8, 0xA5, 0x15, 0x94, 0x82, 0x04, 0x86, 0x69, 0xB1, 0xC6, 0x2B, 0x69, 0x17, 0x6D, - 0x20, 0x82, 0x19, 0xE5, 0x4D, 0x51, 0x34, 0x6D, 0x53, 0xE6, 0x02, 0x13, 0x3A, 0x2F, 0x5A, 0x6B, - 0x27, 0x17, 0x9D, 0x67, 0x8C, 0x40, 0xF8, 0x72, 0x38, 0x57, 0x45, 0x8E, 0x21, 0x3A, 0x74, 0xA3, - 0xD1, 0xD6, 0x3B, 0x1B, 0x42, 0x14, 0x04, 0x6A, 0xD9, 0xCB, 0x90, 0xB4, 0xF7, 0x00, 0x42, 0x04, - 0x63, 0xC4, 0x4E, 0x5A, 0x44, 0x28, 0x9E, 0xC6, 0x81, 0xE3, 0x74, 0x7F, 0x7B, 0xBB, 0x28, 0xD3, - 0xF7, 0xBD, 0x94, 0x6A, 0x9A, 0x25, 0x04, 0x20, 0xC5, 0xE0, 0x9D, 0x45, 0x04, 0x8F, 0x93, 0x34, - 0x26, 0xFC, 0xEE, 0x57, 0xDF, 0x7D, 0xF3, 0xEA, 0xFA, 0xDD, 0xAB, 0xAB, 0xDB, 0xAB, 0xCD, 0x66, - 0xB3, 0xD9, 0xAC, 0x77, 0x59, 0x56, 0x34, 0x75, 0xDD, 0xD4, 0x0D, 0xE3, 0x39, 0xFC, 0x97, 0x7F, - 0xFA, 0x66, 0x1C, 0xD4, 0x30, 0xEB, 0xFB, 0xFB, 0x35, 0xE3, 0xA8, 0xBB, 0xCC, 0x10, 0x53, 0x8A, - 0x11, 0xC6, 0xF0, 0xCD, 0xDB, 0x77, 0xDF, 0xFF, 0xF5, 0xA9, 0xCA, 0xD3, 0xEB, 0x9B, 0x5B, 0x42, - 0x2A, 0x63, 0xFD, 0xE7, 0xE7, 0xD3, 0xD3, 0xCB, 0xCB, 0xF1, 0x7C, 0xB8, 0xBF, 0xDE, 0xB5, 0x4D, - 0xB9, 0x48, 0x35, 0xCF, 0x92, 0x13, 0xF6, 0xED, 0xD7, 0xEF, 0x38, 0x67, 0xE3, 0xAC, 0xBA, 0x71, - 0x76, 0x09, 0x50, 0xCA, 0xB5, 0x36, 0x55, 0x91, 0x55, 0x05, 0xAE, 0x0A, 0xD1, 0x75, 0x27, 0x39, - 0x8D, 0xBB, 0xCD, 0xF6, 0x3C, 0x5C, 0x28, 0x26, 0xC6, 0x9A, 0xC3, 0x49, 0x76, 0x8B, 0x36, 0xC6, - 0x42, 0x98, 0x38, 0x25, 0x04, 0x23, 0xE7, 0x42, 0x5B, 0xD7, 0xE7, 0x61, 0xE2, 0x9C, 0x9F, 0x2F, - 0xFD, 0xD7, 0xAF, 0xF7, 0xFB, 0xED, 0x55, 0x96, 0x37, 0xC3, 0xBC, 0xF4, 0xE3, 0x30, 0xCF, 0x13, - 0x00, 0x31, 0x84, 0x74, 0x7F, 0x53, 0xA7, 0x18, 0x21, 0x24, 0xBB, 0x55, 0x3B, 0x0E, 0x13, 0x44, - 0x6C, 0xB3, 0x5B, 0x69, 0xB3, 0x44, 0x18, 0x87, 0x61, 0x9E, 0x26, 0x17, 0x13, 0xEE, 0xC7, 0xFF, - 0x7F, 0x68, 0x8D, 0x05, 0xFB, 0x9B, 0xDB, 0xAE, 0x7B, 0xB2, 0x5A, 0x95, 0x65, 0x0E, 0x11, 0x92, - 0x8B, 0x66, 0x8C, 0x12, 0x84, 0xB4, 0x54, 0xC3, 0x38, 0x59, 0xE7, 0x42, 0x0A, 0x77, 0xFB, 0x16, - 0x06, 0x68, 0x7C, 0x1C, 0xE6, 0x99, 0x95, 0x39, 0x4C, 0xC8, 0x59, 0x87, 0x10, 0xBA, 0xBA, 0xBA, - 0x65, 0x9C, 0xDF, 0x6D, 0xF2, 0x60, 0x34, 0x13, 0xB4, 0xAA, 0x32, 0x48, 0x60, 0x0C, 0xC1, 0x19, - 0x97, 0x30, 0x52, 0xD2, 0x29, 0x15, 0xBE, 0xFF, 0xE1, 0xC3, 0xBA, 0xA9, 0xEB, 0x4A, 0x0C, 0xE3, - 0xBC, 0x28, 0xB3, 0x6D, 0xAB, 0xBB, 0xFD, 0xEA, 0xF5, 0xF5, 0x1A, 0x00, 0xD4, 0x36, 0x19, 0x84, - 0xD0, 0x18, 0x6F, 0x6C, 0x50, 0xDA, 0xAD, 0x56, 0x15, 0xC1, 0xC0, 0x58, 0x0B, 0x20, 0x32, 0xCE, - 0x3C, 0x1E, 0x3A, 0x80, 0x62, 0x88, 0xA1, 0xEB, 0xF5, 0xDF, 0x7E, 0xF8, 0xBC, 0x5E, 0x97, 0x75, - 0x53, 0xF4, 0xBD, 0x2C, 0xDB, 0x92, 0xC0, 0x94, 0x12, 0x54, 0xD2, 0x20, 0x00, 0x01, 0xC5, 0x98, - 0xD2, 0x69, 0x18, 0x9A, 0x26, 0x5B, 0x94, 0x53, 0x8B, 0x45, 0x20, 0xCC, 0x72, 0x02, 0x08, 0xAC, - 0xB7, 0xD5, 0x32, 0xC9, 0x79, 0xD4, 0x97, 0xC1, 0xDF, 0xBD, 0xDD, 0xF4, 0xA7, 0x29, 0xE7, 0x10, - 0x02, 0x78, 0xE9, 0x4C, 0x5D, 0xA1, 0xAA, 0xE6, 0x10, 0x12, 0xE3, 0xC0, 0x34, 0xBA, 0xB2, 0x10, - 0x7D, 0x3F, 0x32, 0x46, 0x40, 0x4C, 0xBB, 0xCD, 0xBA, 0xA8, 0x0A, 0x65, 0xA3, 0x33, 0xDE, 0x3B, - 0x13, 0x01, 0x8C, 0x09, 0x32, 0x8C, 0x32, 0xCE, 0xA4, 0x36, 0x09, 0xC2, 0x87, 0xC7, 0xA7, 0x2C, - 0x2B, 0xF2, 0x9C, 0x07, 0x1F, 0x04, 0xE7, 0x19, 0x27, 0x85, 0x10, 0xEF, 0x1F, 0x5E, 0x8C, 0x35, - 0x14, 0x13, 0x2E, 0x38, 0xC2, 0x60, 0x9E, 0x15, 0xA5, 0x2C, 0xC6, 0xC8, 0x19, 0xFE, 0xE6, 0xDD, - 0x4D, 0x5B, 0x14, 0x3C, 0x2F, 0x28, 0x49, 0x14, 0x83, 0xBA, 0xCA, 0x52, 0xCA, 0x4E, 0xA7, 0xA9, - 0x2C, 0xD0, 0xB2, 0x38, 0xCE, 0x29, 0x04, 0x40, 0x14, 0x74, 0x59, 0xBA, 0x4F, 0x9F, 0x4E, 0x8B, - 0x8C, 0xED, 0xAA, 0xEC, 0xC7, 0xC9, 0x1A, 0x6F, 0x9C, 0x9F, 0x95, 0xAE, 0xCA, 0x9A, 0x50, 0xEA, - 0x8C, 0x69, 0xEB, 0x55, 0xDB, 0x34, 0x6D, 0xC9, 0x31, 0x8E, 0x4C, 0xD0, 0x22, 0xE3, 0x14, 0x01, - 0xEB, 0xBC, 0xB3, 0x61, 0x99, 0x2E, 0xF3, 0x74, 0x0E, 0x10, 0x62, 0xCC, 0x9A, 0xB2, 0x06, 0x18, - 0xEA, 0x20, 0xBD, 0xC1, 0x6A, 0xF6, 0x3E, 0x18, 0x51, 0xD0, 0xDD, 0xAE, 0x1A, 0x7B, 0xAD, 0xA4, - 0xDA, 0x6C, 0x1A, 0x4A, 0xF0, 0xF9, 0x32, 0x12, 0x42, 0x8A, 0x4C, 0xF8, 0xC0, 0x23, 0x10, 0xE7, - 0xCB, 0xA5, 0xBA, 0x7A, 0xF3, 0xF4, 0xF0, 0x11, 0x98, 0x09, 0xC2, 0xF4, 0x74, 0x38, 0x24, 0xDA, - 0x2D, 0x89, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xD5, 0x6D, 0x5B, 0xB4, 0x57, 0x0F, - 0x1F, 0xFE, 0x76, 0x1E, 0xA6, 0xA2, 0xA8, 0xBE, 0xFE, 0xF5, 0x1F, 0x78, 0x92, 0xFB, 0x75, 0xB9, - 0xC0, 0x5D, 0x03, 0xCE, 0xD7, 0x9B, 0xEC, 0x78, 0x99, 0xC6, 0x49, 0x95, 0x4D, 0xDD, 0x77, 0x87, - 0x22, 0x2F, 0x10, 0x84, 0xD6, 0x39, 0x42, 0x10, 0xC6, 0xA9, 0xAA, 0x2B, 0xEF, 0x1D, 0xC6, 0x38, - 0xC6, 0x64, 0x5D, 0xBC, 0xB9, 0x6E, 0x3F, 0x3D, 0x1F, 0x1F, 0x3E, 0x9F, 0x21, 0x84, 0xCA, 0xBA, - 0xE0, 0x2C, 0x46, 0x44, 0x99, 0xE0, 0x9C, 0x17, 0x82, 0xC5, 0x18, 0xCA, 0x32, 0x8F, 0x21, 0x08, - 0x41, 0x1F, 0x0F, 0xDD, 0x22, 0xED, 0xFD, 0x5D, 0x7B, 0xEC, 0xC6, 0xDD, 0x66, 0xE5, 0x8C, 0x63, - 0x94, 0xAC, 0xDB, 0x22, 0xA6, 0x24, 0x38, 0x05, 0x20, 0x44, 0x17, 0x94, 0x0D, 0xE7, 0x61, 0x5C, - 0x94, 0x4D, 0x29, 0x61, 0x10, 0x53, 0x8C, 0x79, 0x91, 0x5F, 0xEF, 0xAB, 0xB6, 0xCC, 0x86, 0xD9, - 0xB6, 0xED, 0x55, 0x93, 0xE7, 0xD3, 0x70, 0x71, 0xD1, 0x81, 0xC0, 0xBA, 0x7E, 0xEA, 0x47, 0x59, - 0x95, 0xB0, 0xCE, 0xB9, 0x4D, 0xD0, 0x78, 0xD0, 0x0D, 0x0A, 0x62, 0x54, 0x66, 0x28, 0x98, 0x79, - 0x91, 0x8E, 0x67, 0x1B, 0xE7, 0xE6, 0xAB, 0x2D, 0xAD, 0xCB, 0xAD, 0x35, 0xE8, 0xE5, 0xF0, 0xD2, - 0x8F, 0x23, 0x43, 0xD9, 0xD5, 0x7E, 0xFF, 0xF9, 0xF9, 0x45, 0x5B, 0xEB, 0x5C, 0xA8, 0x8A, 0xE2, - 0xFE, 0x6A, 0x63, 0xAD, 0xCB, 0x8A, 0x4C, 0x2A, 0xDB, 0xAE, 0xEA, 0xA7, 0xC3, 0xCB, 0x8F, 0x1F, - 0x1E, 0x31, 0xC6, 0x08, 0xA1, 0xAB, 0x75, 0x5B, 0x16, 0xB9, 0xF7, 0xBE, 0x28, 0x85, 0x73, 0x8E, - 0x60, 0x4C, 0x18, 0xD1, 0xDA, 0x30, 0xC6, 0x00, 0x48, 0x79, 0x2E, 0x04, 0x63, 0x18, 0x13, 0xA5, - 0x4D, 0xD7, 0x8F, 0xC1, 0x87, 0x04, 0x40, 0x51, 0xB2, 0xBF, 0xBF, 0x7F, 0x7E, 0xF7, 0xE6, 0xFE, - 0xF1, 0xA5, 0xF3, 0x09, 0x28, 0xA9, 0x08, 0x8C, 0x5F, 0xBC, 0x6A, 0xB7, 0x8D, 0xF8, 0xE1, 0xE7, - 0xE7, 0xD9, 0xF9, 0x10, 0x5D, 0x91, 0x91, 0xBB, 0xFD, 0xFE, 0x2F, 0x3F, 0x3E, 0x42, 0x9C, 0xD7, - 0x05, 0xA5, 0x38, 0x6A, 0x8D, 0x8C, 0x67, 0x31, 0xE1, 0xBE, 0xBF, 0x00, 0x90, 0xF6, 0xDB, 0xCD, - 0xD3, 0xF3, 0xD3, 0xCD, 0x7E, 0xA3, 0xD4, 0xD2, 0x4F, 0x8B, 0x52, 0xFA, 0x8B, 0xB7, 0x5F, 0x5D, - 0xEF, 0xAE, 0x09, 0xB0, 0x79, 0x4E, 0x43, 0x0C, 0xCF, 0xC7, 0xA9, 0xAC, 0x6A, 0x0C, 0x01, 0xA5, - 0x78, 0x56, 0x26, 0xA5, 0x88, 0x7F, 0xF5, 0xCD, 0x0D, 0x84, 0xE9, 0xF5, 0xFD, 0x2E, 0x2F, 0x09, - 0xC1, 0x50, 0x08, 0xBE, 0xDD, 0xAD, 0x8B, 0x8C, 0x34, 0x55, 0x61, 0x55, 0x7C, 0xF7, 0xEA, 0xFA, - 0xED, 0xED, 0xEE, 0x74, 0x1C, 0xC7, 0xD9, 0x18, 0xE7, 0x0F, 0xE7, 0x33, 0x44, 0x68, 0xB3, 0xD9, - 0x5C, 0xFA, 0x4E, 0x29, 0x6D, 0x5C, 0x38, 0x9D, 0xFB, 0xD7, 0xAF, 0xEE, 0x7C, 0x4C, 0xE3, 0x34, - 0x23, 0x84, 0x66, 0x39, 0x9F, 0x2F, 0x03, 0x42, 0x68, 0x5E, 0x96, 0x75, 0x5B, 0x72, 0xCE, 0xE7, - 0x51, 0x2D, 0xF3, 0xC5, 0x7B, 0x3B, 0xCC, 0x23, 0x25, 0xC4, 0xA7, 0x38, 0x2C, 0x53, 0xC6, 0xD9, - 0xFD, 0xED, 0x55, 0xC5, 0xE9, 0xD5, 0xAA, 0xE1, 0x8C, 0x73, 0x42, 0x6F, 0xF6, 0x1B, 0x00, 0x60, - 0x55, 0x88, 0xB6, 0x2A, 0xEF, 0xAE, 0x76, 0x77, 0x37, 0xD7, 0x88, 0x8A, 0x9F, 0x1F, 0x4F, 0xE3, - 0x22, 0xE7, 0x45, 0x0A, 0x4E, 0xBC, 0xF7, 0x21, 0x81, 0xC7, 0xC3, 0x10, 0x22, 0xE4, 0x94, 0xDC, - 0x5C, 0x6F, 0x56, 0xDB, 0x86, 0x30, 0x02, 0x10, 0xD2, 0xCE, 0xCE, 0x4A, 0x43, 0x42, 0x16, 0x63, - 0x13, 0x06, 0x4C, 0x88, 0xE7, 0xE7, 0x23, 0xA1, 0x54, 0xCA, 0x29, 0xCB, 0xAB, 0xE0, 0xBD, 0x35, - 0x7A, 0x91, 0xCB, 0xE9, 0x74, 0x81, 0x08, 0x10, 0x82, 0xA5, 0x92, 0x4A, 0xE9, 0x22, 0x23, 0xDA, - 0xBA, 0xBB, 0xEB, 0xD5, 0xF5, 0x76, 0xF5, 0xE1, 0xA5, 0x53, 0x3E, 0x66, 0x82, 0xE5, 0x59, 0xAE, - 0xB5, 0x5D, 0x16, 0xC5, 0x18, 0x8B, 0x29, 0x54, 0x65, 0xEE, 0xB5, 0xC7, 0x30, 0xCD, 0x6A, 0xE9, - 0xC7, 0xB1, 0xEF, 0x26, 0x6B, 0x1C, 0x84, 0x40, 0x2E, 0x0A, 0x82, 0x84, 0x18, 0xBC, 0xBE, 0xD9, - 0x13, 0x04, 0x6F, 0xAF, 0x57, 0x5A, 0xEB, 0xA6, 0xCC, 0xBF, 0x7A, 0x75, 0x9B, 0xF1, 0x1C, 0x20, - 0x16, 0x02, 0x18, 0xA7, 0x65, 0x1C, 0x25, 0x48, 0x29, 0x26, 0x68, 0xB4, 0x1F, 0x97, 0xF9, 0x70, - 0xBE, 0x18, 0xE7, 0xA5, 0x75, 0xA7, 0x61, 0xCA, 0x0A, 0x21, 0xF2, 0x0C, 0x00, 0xB0, 0x5A, 0x95, - 0x77, 0xD7, 0xF5, 0xBB, 0x2F, 0xF7, 0x84, 0x20, 0x82, 0x60, 0x5E, 0x65, 0x65, 0x53, 0x54, 0x95, - 0x90, 0x52, 0x07, 0xEF, 0x57, 0xFB, 0xFA, 0xF0, 0x72, 0xD8, 0x6E, 0xCA, 0x22, 0xE3, 0x84, 0x10, - 0x00, 0xE2, 0xB4, 0x18, 0x1F, 0xED, 0xEB, 0xFB, 0x3A, 0x44, 0x78, 0x3C, 0xCC, 0x8B, 0x0A, 0x18, - 0xA3, 0x10, 0x02, 0x26, 0xD0, 0xBA, 0x18, 0x13, 0xA0, 0x14, 0x0A, 0x4E, 0x18, 0x46, 0x2E, 0x00, - 0x65, 0x42, 0x4A, 0x40, 0x64, 0xA4, 0x6D, 0x85, 0x92, 0x56, 0x70, 0x92, 0x0B, 0xFA, 0xF1, 0xF1, - 0x02, 0x12, 0x7A, 0x7E, 0x39, 0x8A, 0x4C, 0x6C, 0x76, 0x2B, 0xC2, 0xA8, 0x31, 0x76, 0x1C, 0x17, - 0xEB, 0xFC, 0xE9, 0x72, 0xF9, 0xA5, 0x93, 0xD6, 0x39, 0xE7, 0x43, 0x70, 0x3E, 0x28, 0x29, 0xA9, - 0xE0, 0x97, 0x7E, 0xE4, 0x9C, 0xAD, 0xD7, 0xF5, 0x76, 0x53, 0x12, 0x0A, 0x01, 0x84, 0x45, 0x91, - 0x19, 0x6D, 0x41, 0x8A, 0xEF, 0xEE, 0xAF, 0x1F, 0x5E, 0xFA, 0x71, 0x32, 0x46, 0x1B, 0x67, 0x2C, - 0x44, 0xFE, 0xE9, 0xF9, 0x72, 0xE9, 0xCE, 0xCE, 0xDA, 0x97, 0xE3, 0x80, 0x11, 0x7A, 0x79, 0x79, - 0x9E, 0xC6, 0xC1, 0x78, 0x33, 0x2E, 0xF2, 0x78, 0x9E, 0xAC, 0x4F, 0x11, 0xA6, 0xE3, 0x65, 0xE2, - 0x22, 0x23, 0x94, 0x0E, 0xA3, 0xF2, 0x3E, 0xAD, 0xD6, 0x5B, 0xC2, 0x78, 0x3F, 0xAB, 0x9F, 0x3E, - 0x7C, 0x9E, 0xFE, 0x3F, 0x9A, 0xEE, 0x6B, 0x57, 0xB3, 0x23, 0x4D, 0x13, 0x73, 0x78, 0xB3, 0xEC, - 0xEF, 0xB7, 0xCB, 0x9D, 0x4C, 0xB2, 0x58, 0xC5, 0x62, 0x57, 0x75, 0xCF, 0x4C, 0x0B, 0x1A, 0x08, - 0x3A, 0xD2, 0xA9, 0xEE, 0x5B, 0x3A, 0x19, 0xA0, 0x31, 0x18, 0xA8, 0xBB, 0x7A, 0xBA, 0x48, 0x26, - 0xD3, 0x6E, 0xF3, 0xBB, 0xE5, 0xC3, 0x1B, 0x1D, 0xA4, 0x74, 0x0F, 0x11, 0x40, 0xBC, 0x9F, 0x79, - 0x62, 0x99, 0x43, 0x0C, 0xA7, 0x4B, 0x77, 0xEA, 0xE6, 0x4B, 0xBF, 0x08, 0x0A, 0xCB, 0x42, 0x60, - 0x42, 0x8C, 0x37, 0x94, 0xE3, 0xA6, 0x2E, 0xB4, 0x9B, 0x9F, 0x8F, 0xE7, 0xB6, 0xAA, 0xEF, 0xF7, - 0xBB, 0xED, 0xA6, 0x06, 0x10, 0xEB, 0x25, 0xC2, 0x0C, 0xAA, 0x4A, 0x32, 0x4E, 0xAC, 0x32, 0x4A, - 0xC5, 0xA2, 0x5C, 0x53, 0xCC, 0x11, 0x62, 0x93, 0x0A, 0xD6, 0xAA, 0xFE, 0x7A, 0x92, 0xED, 0x7E, - 0xB3, 0x3D, 0x4C, 0xC3, 0x70, 0xB9, 0x5E, 0x76, 0xFB, 0xBD, 0x28, 0xEB, 0xEE, 0x72, 0x64, 0x94, - 0xD5, 0x75, 0x85, 0x11, 0x7D, 0x7B, 0xBB, 0x99, 0xA7, 0x65, 0xBD, 0xBB, 0x3D, 0x3E, 0x7F, 0xFD, - 0xF8, 0xE9, 0xCB, 0x38, 0xCF, 0x29, 0x87, 0x45, 0x19, 0x6B, 0xCC, 0x38, 0x2D, 0x0F, 0x77, 0x7B, - 0xE3, 0x96, 0xDD, 0xB6, 0x2D, 0x04, 0x6F, 0x9B, 0x22, 0xE7, 0x94, 0x11, 0x48, 0x30, 0x1B, 0x6F, - 0x87, 0x49, 0x01, 0x00, 0xB7, 0x9B, 0xFA, 0xBB, 0xC7, 0xC3, 0x7E, 0x55, 0x39, 0x63, 0x61, 0x02, - 0xA5, 0x64, 0x4D, 0x5D, 0x6A, 0x63, 0x00, 0xCC, 0xF3, 0x34, 0x97, 0x25, 0x87, 0x28, 0x0D, 0xB3, - 0x82, 0x10, 0x15, 0x25, 0xDE, 0x6C, 0x6A, 0xE7, 0xEC, 0x5F, 0x7F, 0x7A, 0xF8, 0x87, 0xEF, 0xEF, - 0x1F, 0x6F, 0xB6, 0x9B, 0x55, 0x5D, 0x57, 0x42, 0x10, 0xBE, 0xDB, 0xAC, 0x9A, 0xB2, 0x6C, 0xAB, - 0x4A, 0x72, 0xC6, 0x28, 0x32, 0xCA, 0xEC, 0x1B, 0x49, 0x09, 0x64, 0x14, 0x63, 0x8C, 0x52, 0x46, - 0xD7, 0x6B, 0xFF, 0xFE, 0xF3, 0x07, 0x13, 0x80, 0x0F, 0x41, 0x5B, 0x7D, 0x3C, 0x8F, 0x28, 0x87, - 0x4D, 0x2B, 0x28, 0xE1, 0x97, 0x4E, 0x2D, 0xB3, 0xED, 0xBA, 0x41, 0xCD, 0x0B, 0xA3, 0x99, 0x61, - 0x9C, 0x73, 0x06, 0x6C, 0xE5, 0xCD, 0xB8, 0x2C, 0x76, 0x59, 0xD2, 0x3C, 0x0E, 0xBF, 0x7D, 0x7C, - 0x4A, 0x08, 0xBD, 0x7D, 0x78, 0x93, 0x01, 0x52, 0x46, 0x21, 0x00, 0x00, 0x00, 0x9C, 0xF1, 0xC7, - 0xBB, 0x03, 0xC2, 0x30, 0xA4, 0xE8, 0x63, 0x10, 0x82, 0x5F, 0xFB, 0x81, 0x51, 0x2E, 0x04, 0x3F, - 0x1C, 0xD6, 0x30, 0x03, 0xE7, 0x7C, 0xCE, 0xB9, 0x90, 0xCC, 0x5A, 0x6F, 0xAC, 0xFB, 0x56, 0x0D, - 0x18, 0xA7, 0x39, 0x82, 0x64, 0xB4, 0x53, 0xDA, 0x9D, 0x2F, 0x3D, 0xC2, 0x68, 0xB7, 0x59, 0x55, - 0x25, 0x07, 0xD9, 0x58, 0x3B, 0x41, 0x04, 0x6E, 0xB7, 0x4D, 0x3F, 0x4C, 0xCE, 0xC7, 0xA9, 0x1F, - 0xCA, 0xB2, 0xDA, 0xEF, 0x77, 0x1F, 0xBE, 0x7E, 0xB0, 0x31, 0x6D, 0x57, 0x07, 0x82, 0x13, 0x48, - 0x38, 0x03, 0x9A, 0x20, 0x26, 0x84, 0x2A, 0x1D, 0xA7, 0x25, 0x6F, 0xD6, 0x5B, 0xE7, 0xD3, 0xA2, - 0x34, 0xC1, 0x64, 0xBD, 0xDE, 0x2C, 0x6A, 0xF1, 0xDE, 0x05, 0x1F, 0xEE, 0x0F, 0xFB, 0xDD, 0xE6, - 0xB0, 0xDE, 0xDC, 0x0A, 0x21, 0xE7, 0x69, 0x9C, 0xE7, 0x79, 0x54, 0xEE, 0xE9, 0xD8, 0x2B, 0x6D, - 0x16, 0x6D, 0xB4, 0xB5, 0xD3, 0xBC, 0x28, 0xED, 0x42, 0x82, 0x44, 0x08, 0x56, 0xD5, 0xB2, 0x2C, - 0xEA, 0x79, 0x9E, 0xC6, 0xC5, 0x10, 0x2E, 0x62, 0xF0, 0xBB, 0x55, 0x43, 0x09, 0x8B, 0x01, 0x5B, - 0xE3, 0xFE, 0xE3, 0xEB, 0xF1, 0x7C, 0xEE, 0xEE, 0xEE, 0xDF, 0xDA, 0x10, 0x10, 0x42, 0x37, 0xBB, - 0x83, 0xF3, 0x3E, 0xA4, 0xE4, 0xD4, 0x54, 0x57, 0xE5, 0xA2, 0xF4, 0xB5, 0x1F, 0xEE, 0xEE, 0x6E, - 0xBA, 0x61, 0xFC, 0xA6, 0x83, 0x37, 0x15, 0x87, 0xC9, 0xE5, 0xE8, 0x7E, 0xF9, 0xF5, 0xC3, 0x7A, - 0xBD, 0x12, 0x04, 0xE6, 0x8C, 0x5E, 0x8E, 0xD7, 0xD5, 0xAA, 0x46, 0x38, 0x8C, 0xB3, 0xE2, 0x8C, - 0xF9, 0xA0, 0x40, 0x20, 0xDF, 0xDD, 0x6D, 0xB5, 0x8F, 0xCB, 0xEB, 0x78, 0x77, 0xD8, 0x08, 0xCE, - 0xE2, 0xF5, 0x7A, 0xD8, 0xB6, 0x20, 0x03, 0x6D, 0xC3, 0xCB, 0x79, 0x44, 0x54, 0x9C, 0xCE, 0x2F, - 0x29, 0xE5, 0x9C, 0x93, 0x35, 0x20, 0x84, 0xE0, 0x43, 0x68, 0x9B, 0x6A, 0xBB, 0x6A, 0x6F, 0x76, - 0x87, 0x45, 0xE3, 0x8A, 0x50, 0x80, 0x7C, 0x37, 0x8C, 0xE3, 0xB4, 0x00, 0x98, 0x5D, 0x48, 0x19, - 0x00, 0x8C, 0xD0, 0xEB, 0xCB, 0x39, 0xA6, 0x94, 0x12, 0x34, 0xC6, 0x0E, 0xFD, 0xA8, 0xF5, 0x64, - 0xF4, 0x74, 0x38, 0xDC, 0xBF, 0xFB, 0xEE, 0x50, 0x55, 0x45, 0xF0, 0xB6, 0x1F, 0x7A, 0x4A, 0x49, - 0x4E, 0x71, 0xBD, 0x56, 0xFF, 0xF8, 0xC7, 0xC7, 0xE7, 0xCB, 0xB0, 0xDE, 0x6D, 0x25, 0x23, 0x4D, - 0xC3, 0xAD, 0x0B, 0x00, 0x64, 0xCA, 0x68, 0x55, 0xF2, 0x61, 0x9C, 0x9C, 0xAD, 0xEE, 0xEF, 0x6F, - 0xBC, 0x31, 0x3E, 0x92, 0x00, 0xFC, 0xF1, 0xD4, 0x17, 0x52, 0x14, 0x15, 0x9F, 0x86, 0x45, 0xCA, - 0xC2, 0x38, 0x0D, 0x11, 0x24, 0x18, 0xFF, 0xDB, 0x7F, 0x9C, 0x41, 0x84, 0x9C, 0xF2, 0xD7, 0xD3, - 0x20, 0xB8, 0xF4, 0x61, 0xF4, 0xC1, 0x77, 0xFD, 0xD0, 0x14, 0xF4, 0xC7, 0x1F, 0x1E, 0x8E, 0xE7, - 0xA3, 0xB1, 0x0E, 0x13, 0x18, 0x73, 0xB6, 0xC7, 0x1E, 0x53, 0x02, 0x31, 0xB8, 0x76, 0x13, 0xA5, - 0xE8, 0xE6, 0xCD, 0x0D, 0x48, 0xA1, 0x59, 0x15, 0xB2, 0x94, 0x75, 0x55, 0xDE, 0xED, 0xDB, 0x94, - 0x61, 0xD9, 0xB4, 0xE3, 0x30, 0x34, 0x92, 0x03, 0x88, 0x42, 0xF4, 0x24, 0xED, 0xC7, 0x51, 0xBF, - 0x9E, 0x2F, 0x84, 0x51, 0xCA, 0x49, 0x51, 0x60, 0xEC, 0x98, 0x32, 0xF9, 0xE5, 0x75, 0xB4, 0x2E, - 0xAE, 0x56, 0xDC, 0x87, 0x94, 0x73, 0x0E, 0x21, 0xC7, 0x10, 0xAB, 0xB6, 0xA8, 0x4B, 0x9A, 0x1C, - 0xA8, 0x2A, 0x36, 0x99, 0xA0, 0x8C, 0x86, 0x30, 0x8F, 0xC3, 0x52, 0x95, 0x1C, 0x23, 0xC4, 0x28, - 0x59, 0xB4, 0x29, 0x2A, 0xF1, 0xAD, 0xDA, 0x25, 0x04, 0x31, 0xF3, 0x3C, 0xCF, 0x3A, 0x43, 0xA8, - 0x8D, 0xCE, 0x19, 0x40, 0x08, 0x31, 0xC6, 0x94, 0x12, 0xEF, 0x03, 0x21, 0xB8, 0x6E, 0x8A, 0xD3, - 0xEB, 0x69, 0x9E, 0x67, 0x4A, 0x10, 0x04, 0x49, 0x72, 0xD2, 0x94, 0x55, 0xC9, 0xE8, 0xBA, 0x6A, - 0xCA, 0x46, 0xFE, 0x06, 0x9C, 0x37, 0x11, 0xE6, 0x38, 0xCE, 0x53, 0x55, 0x53, 0xDD, 0x79, 0x4E, - 0xA2, 0x72, 0xA1, 0xBF, 0x0C, 0x6D, 0xC3, 0xDE, 0x7F, 0xEC, 0x62, 0x42, 0xC6, 0xFA, 0xE8, 0x95, - 0x2C, 0x88, 0xB9, 0xC4, 0x94, 0x73, 0xCA, 0x79, 0x51, 0x76, 0xB5, 0x2E, 0xB5, 0xB1, 0x31, 0x81, - 0x52, 0x8A, 0x87, 0xBB, 0xDB, 0x0C, 0xC8, 0x38, 0x2F, 0xC3, 0xF0, 0xDC, 0x36, 0xF5, 0x9B, 0xBB, - 0x1B, 0xEB, 0x96, 0x69, 0x36, 0xDE, 0xFB, 0x7E, 0x54, 0x84, 0x30, 0xEF, 0x13, 0xA7, 0x68, 0x55, - 0x17, 0x2E, 0x92, 0xA7, 0xAF, 0xE7, 0xF3, 0x75, 0xB8, 0x76, 0xDD, 0xB6, 0x6D, 0x9D, 0xB5, 0xB9, - 0x4E, 0xE3, 0x14, 0xAE, 0x57, 0x1B, 0x93, 0xB7, 0xD6, 0x72, 0x86, 0x71, 0xB2, 0x75, 0x53, 0x97, - 0x75, 0x63, 0x5D, 0x2A, 0x65, 0x31, 0x0C, 0x03, 0x84, 0xB0, 0xDD, 0x94, 0x54, 0x4D, 0x28, 0xF7, - 0x11, 0x3E, 0x12, 0x26, 0x0A, 0x81, 0xC7, 0xA1, 0x47, 0xBC, 0x99, 0x17, 0xFD, 0xD7, 0x9F, 0xDE, - 0xFC, 0xE5, 0xA7, 0x1F, 0xFE, 0xFB, 0x2F, 0xFD, 0xA7, 0xE7, 0xAE, 0x24, 0x29, 0x65, 0xD8, 0x0D, - 0x33, 0x4A, 0xC1, 0x38, 0x9B, 0x52, 0xDA, 0x6F, 0xAA, 0xC7, 0xFB, 0x4D, 0xD3, 0x36, 0x10, 0x00, - 0xC2, 0xD8, 0xC7, 0xA7, 0x17, 0x4E, 0x49, 0x7A, 0x89, 0x52, 0x16, 0xDA, 0x46, 0xCA, 0xA9, 0x94, - 0x4C, 0x70, 0x9A, 0x52, 0x22, 0x08, 0x06, 0xE3, 0x1B, 0x29, 0xFE, 0xE1, 0xCF, 0x8F, 0x6A, 0x89, - 0x18, 0xE0, 0x98, 0x93, 0x52, 0xAB, 0x04, 0x23, 0x44, 0x68, 0x55, 0x17, 0x94, 0xC2, 0x87, 0xC3, - 0xF4, 0xFE, 0xF3, 0x71, 0xB7, 0x2A, 0xEE, 0xF6, 0x5B, 0x8C, 0x48, 0x5B, 0xC9, 0x18, 0x92, 0xC9, - 0x11, 0x51, 0x4C, 0x30, 0x64, 0x09, 0xA6, 0x04, 0x08, 0x26, 0x6D, 0x55, 0x57, 0x65, 0x81, 0x40, - 0x96, 0x3F, 0x93, 0xF3, 0xCB, 0xEB, 0xF1, 0x7A, 0x79, 0x79, 0xED, 0x5C, 0x08, 0xBB, 0xDD, 0xFA, - 0x7C, 0xBE, 0x6E, 0xF7, 0x87, 0xBA, 0x2C, 0x00, 0x08, 0x31, 0x65, 0x8C, 0x13, 0x82, 0xF9, 0xD2, - 0x69, 0x4C, 0x53, 0x4A, 0x28, 0xB8, 0xE5, 0x61, 0x5F, 0x95, 0x6D, 0xA5, 0x96, 0x05, 0x44, 0x88, - 0x11, 0x6C, 0xAB, 0x18, 0x69, 0xBD, 0x2C, 0xF6, 0x66, 0xDF, 0xCC, 0xCB, 0xFC, 0xFD, 0x0F, 0xF7, - 0xEB, 0xA6, 0xC1, 0x10, 0x65, 0x04, 0xDF, 0x7D, 0x77, 0x4B, 0x10, 0xD0, 0x4A, 0x95, 0x45, 0xDD, - 0x0F, 0x43, 0x37, 0xCC, 0x98, 0x20, 0x65, 0xF5, 0xB9, 0x9F, 0xA4, 0x94, 0xCB, 0xB2, 0x2C, 0xC6, - 0x9D, 0x2E, 0x53, 0x5B, 0xF2, 0xFD, 0xBA, 0xC9, 0x00, 0x3C, 0xBF, 0x5E, 0x33, 0x80, 0x04, 0xC3, - 0xD3, 0xB9, 0x67, 0x9C, 0x62, 0x82, 0xF3, 0x62, 0xCA, 0x42, 0x30, 0x8E, 0x00, 0x42, 0xFD, 0x30, - 0x1B, 0xE3, 0xB8, 0xE4, 0x84, 0xF2, 0xA9, 0xBB, 0x4E, 0x8B, 0xED, 0xE7, 0xCB, 0xBA, 0x81, 0xFE, - 0x1A, 0xB6, 0xFB, 0xFD, 0x61, 0x7F, 0xFF, 0xEB, 0x87, 0x57, 0x02, 0xC9, 0xC3, 0xED, 0x83, 0x60, - 0xD5, 0x94, 0x74, 0xBB, 0xDD, 0xFC, 0xFA, 0xF1, 0xB4, 0xDB, 0x57, 0xC7, 0xCB, 0x25, 0x45, 0x2F, - 0xE5, 0x66, 0x19, 0xA7, 0xBE, 0x1B, 0x04, 0x27, 0x65, 0xD5, 0xFE, 0xFD, 0xF7, 0xDF, 0x36, 0x6D, - 0xF5, 0xF6, 0xFE, 0x56, 0x6B, 0x27, 0x8A, 0xE2, 0xF5, 0xD8, 0xE7, 0x0C, 0x63, 0x06, 0xD1, 0xAB, - 0x75, 0x53, 0x20, 0x18, 0xD7, 0xAD, 0xB8, 0xDD, 0x55, 0x98, 0xE1, 0xF3, 0x79, 0x79, 0x38, 0x6C, - 0xAD, 0x0B, 0x75, 0xDD, 0xE2, 0x77, 0xDF, 0x1D, 0xAE, 0xDD, 0x04, 0x20, 0x1A, 0xA6, 0xD1, 0x87, - 0x94, 0x32, 0x28, 0x28, 0x5D, 0xD7, 0xED, 0xA2, 0x5C, 0x3F, 0xCE, 0xC7, 0xD3, 0x88, 0x10, 0x5D, - 0x94, 0x6A, 0xDA, 0x95, 0xB1, 0x1E, 0x13, 0xE6, 0x83, 0xEF, 0xFA, 0xAB, 0xD1, 0x06, 0x62, 0x72, - 0xB3, 0xDB, 0x55, 0x65, 0x29, 0x05, 0x2B, 0x0B, 0xD1, 0x0F, 0xBD, 0xB3, 0xFE, 0xCF, 0x7F, 0xFE, - 0x73, 0x53, 0x17, 0xE7, 0xF3, 0xC5, 0xDA, 0x40, 0x18, 0xBB, 0x5E, 0xAF, 0xEB, 0xB6, 0x41, 0x84, - 0x21, 0x08, 0x62, 0xF4, 0x31, 0x46, 0x08, 0xE1, 0xDB, 0x87, 0xFB, 0x71, 0x52, 0x20, 0x02, 0x0C, - 0xE9, 0x75, 0x54, 0xEB, 0xBA, 0xFC, 0xE1, 0xF1, 0x16, 0x13, 0xF8, 0xF6, 0xE1, 0x66, 0x9E, 0x17, - 0x08, 0x93, 0x75, 0x69, 0x52, 0xFE, 0xF7, 0xDF, 0xDF, 0x2B, 0xB3, 0xCC, 0xCB, 0x64, 0xAC, 0xB6, - 0xCE, 0xFB, 0x10, 0x19, 0x21, 0xDF, 0xDF, 0xED, 0x10, 0xC4, 0xEB, 0xF5, 0x96, 0xF2, 0x42, 0xEB, - 0xF8, 0xE9, 0xD3, 0x57, 0x6B, 0x5D, 0x02, 0x40, 0x6B, 0x37, 0x8E, 0x4B, 0x8C, 0x71, 0x1C, 0x97, - 0x79, 0x56, 0x39, 0xE7, 0x10, 0xA3, 0x73, 0x0E, 0x41, 0x3C, 0xF4, 0x17, 0x00, 0xD0, 0xCD, 0xCD, - 0x63, 0x8C, 0xB9, 0x28, 0x56, 0xF7, 0xF7, 0xEF, 0x76, 0xBB, 0xDB, 0x94, 0x41, 0xDB, 0x6C, 0xEF, - 0x76, 0x6B, 0x90, 0xB2, 0xCE, 0xB4, 0xEB, 0x2F, 0x88, 0x60, 0xEB, 0x02, 0x42, 0x44, 0x6B, 0xBD, - 0x6E, 0xC4, 0x7F, 0xFD, 0xCF, 0x3F, 0xDC, 0xDF, 0xAC, 0xD6, 0xAB, 0xC2, 0xAA, 0xE5, 0x7C, 0xE9, - 0x8D, 0xF3, 0x5C, 0x30, 0x4C, 0x18, 0x46, 0x28, 0x81, 0x08, 0xA9, 0xF0, 0x09, 0x58, 0xE3, 0xA6, - 0xD9, 0x5A, 0x17, 0x62, 0x02, 0xCF, 0xC7, 0xEE, 0xEB, 0xEB, 0x25, 0x03, 0x28, 0x18, 0x3B, 0x77, - 0x7D, 0x08, 0x51, 0x08, 0x72, 0xD8, 0xB7, 0x4F, 0xAF, 0xD7, 0xFF, 0xF9, 0xFE, 0x6B, 0xCA, 0xB1, - 0x6D, 0x4B, 0xE7, 0xC3, 0xA2, 0xCC, 0xF9, 0xD4, 0xCB, 0x52, 0xCC, 0xCB, 0x32, 0x4D, 0xB3, 0x51, - 0x3A, 0xA7, 0x94, 0x73, 0x5E, 0x66, 0x65, 0x4C, 0xC8, 0x08, 0xA5, 0x98, 0x42, 0x48, 0x4A, 0xBB, - 0x1C, 0x43, 0x74, 0x0E, 0x82, 0x2C, 0x04, 0xDB, 0x6E, 0xB7, 0x82, 0x53, 0xC6, 0xF0, 0xD0, 0x0F, - 0x6A, 0x31, 0x08, 0x02, 0x8C, 0x70, 0xCA, 0x30, 0xC6, 0xB4, 0x2C, 0x3E, 0xA5, 0x5C, 0x57, 0xF4, - 0x7A, 0x31, 0x87, 0x5D, 0x9D, 0x33, 0x1C, 0x07, 0x55, 0x15, 0x6C, 0xBB, 0xDF, 0x9F, 0x2F, 0x93, - 0xD2, 0x3E, 0x67, 0x60, 0xB4, 0x33, 0xC6, 0x53, 0x42, 0x18, 0xE5, 0xC6, 0x45, 0x2E, 0xE9, 0xBC, - 0x68, 0xAD, 0x94, 0x10, 0x08, 0x42, 0x30, 0x5C, 0xE7, 0xAA, 0x12, 0xDE, 0x07, 0x26, 0x48, 0x08, - 0x31, 0xA7, 0xBC, 0x5A, 0x37, 0x10, 0xC1, 0x1C, 0xB2, 0x73, 0x9E, 0x53, 0x54, 0x4B, 0x96, 0x20, - 0x68, 0x9A, 0x2D, 0xC1, 0x48, 0x30, 0xEE, 0x4C, 0xF0, 0x21, 0x5D, 0xAF, 0x7D, 0x0C, 0xFE, 0x9F, - 0xFE, 0xF4, 0xC3, 0x7F, 0xFC, 0xF6, 0x55, 0x48, 0x51, 0xCA, 0x02, 0x62, 0xEA, 0x7C, 0x4C, 0x89, - 0xCC, 0xCB, 0x7C, 0xED, 0xA6, 0x63, 0x37, 0xB9, 0x10, 0xA5, 0x20, 0xDE, 0xC7, 0x10, 0xF3, 0xF1, - 0x32, 0x42, 0x08, 0x76, 0x9B, 0x75, 0xCE, 0x59, 0x19, 0x83, 0xF1, 0x37, 0xDE, 0xBA, 0x8B, 0x09, - 0x1A, 0x67, 0xFB, 0xBE, 0xD3, 0x7A, 0x06, 0x39, 0x73, 0xCE, 0xE6, 0xC5, 0xFC, 0xF2, 0xFB, 0xA7, - 0x45, 0xBB, 0x45, 0x29, 0x84, 0x21, 0xA7, 0x0C, 0x61, 0xA8, 0xB4, 0x45, 0x88, 0xC0, 0x0C, 0x82, - 0x0F, 0x87, 0xCD, 0xEE, 0x66, 0xB7, 0xDB, 0xAC, 0xF7, 0x18, 0xD2, 0x79, 0xB1, 0x19, 0xA4, 0xE0, - 0x0D, 0xA3, 0x70, 0xDD, 0xC8, 0x4D, 0xC3, 0x01, 0x84, 0x9C, 0x33, 0xAB, 0x17, 0x42, 0x32, 0x15, - 0x10, 0xA0, 0x44, 0x08, 0x91, 0x82, 0x97, 0xD5, 0xC6, 0x5B, 0x15, 0x32, 0xAE, 0x9B, 0x4D, 0x48, - 0x64, 0xB5, 0x3D, 0x04, 0xDB, 0x3F, 0x1C, 0xDA, 0x62, 0xFD, 0xE6, 0xE9, 0xB5, 0x5F, 0x15, 0x14, - 0x82, 0x84, 0x8A, 0x75, 0x77, 0x7A, 0x82, 0x20, 0xF7, 0xE3, 0x72, 0xBB, 0x5B, 0xFD, 0xF1, 0xED, - 0x9E, 0x31, 0xFC, 0xF4, 0x72, 0xFE, 0xFB, 0xC7, 0xD7, 0x59, 0x5B, 0x63, 0x9C, 0xF5, 0xD1, 0xFA, - 0x34, 0x2E, 0xFE, 0x78, 0xEA, 0xAD, 0x0F, 0xFD, 0xA8, 0x27, 0x65, 0x16, 0x63, 0x87, 0x7E, 0xCC, - 0x40, 0x0F, 0xCB, 0xF4, 0xEB, 0x2F, 0xC7, 0x61, 0x34, 0xCF, 0xA7, 0xFE, 0xF9, 0xD4, 0xBD, 0x9E, - 0x87, 0xAF, 0x2F, 0xD7, 0x97, 0x53, 0xD7, 0xF5, 0x4B, 0xF0, 0x49, 0x32, 0x7E, 0xB3, 0x5D, 0x1D, - 0xD6, 0x1B, 0x82, 0x28, 0x41, 0x44, 0x2F, 0xFE, 0xDA, 0x2B, 0xE7, 0xD3, 0xF1, 0x38, 0x1E, 0x4F, - 0xF3, 0xEB, 0xEB, 0xEC, 0x42, 0x9E, 0x17, 0xE7, 0x5D, 0x84, 0x08, 0x35, 0x95, 0x54, 0x46, 0x8D, - 0xCA, 0xDC, 0xDF, 0xDF, 0x4A, 0xCA, 0xDB, 0xBA, 0x52, 0xD6, 0x50, 0xCE, 0xF6, 0x9B, 0xED, 0x66, - 0xDD, 0x4E, 0xD3, 0x04, 0x12, 0xF8, 0xEE, 0xF1, 0x6E, 0xB3, 0x5D, 0xE5, 0x04, 0xB9, 0xC4, 0xB2, - 0xE4, 0xAB, 0xF5, 0xCE, 0x85, 0x9C, 0x12, 0x48, 0x99, 0x00, 0x00, 0xBE, 0x7B, 0x7B, 0x0F, 0x61, - 0x6C, 0xEB, 0xAA, 0x6D, 0x6A, 0xC6, 0xA8, 0xAC, 0x8A, 0xEF, 0xBF, 0xBB, 0xC9, 0x20, 0x51, 0x4A, - 0x00, 0x88, 0x39, 0xFB, 0x97, 0xF3, 0xEB, 0xAC, 0xBA, 0x4B, 0x3F, 0x3F, 0x1D, 0x7B, 0xE3, 0xE3, - 0xF3, 0xF9, 0x7A, 0xED, 0x17, 0x6D, 0x22, 0x21, 0x6C, 0x59, 0xA6, 0xAA, 0x60, 0xB7, 0x7B, 0xB6, - 0x5D, 0xA3, 0xAE, 0xD7, 0xB3, 0xF2, 0xE7, 0x6E, 0x99, 0x95, 0xE6, 0x9C, 0xC9, 0x42, 0x5A, 0xE7, - 0xAD, 0x71, 0x98, 0x51, 0x63, 0xAC, 0xD6, 0x0E, 0x42, 0x38, 0xCD, 0x6A, 0x9C, 0x96, 0x04, 0x40, - 0x0C, 0x40, 0xF2, 0x8A, 0x20, 0x74, 0xEE, 0xA6, 0x9C, 0x20, 0x2D, 0xB6, 0x55, 0xB5, 0x01, 0x61, - 0xD9, 0xB6, 0xF2, 0xB0, 0xDE, 0x5B, 0x97, 0xE6, 0x79, 0x6A, 0xAA, 0x86, 0x52, 0x1E, 0x33, 0x92, - 0x42, 0xBC, 0xBE, 0x76, 0x77, 0x2B, 0xF6, 0xE5, 0xF9, 0x7A, 0x58, 0x37, 0xD3, 0xB2, 0x3C, 0x1E, - 0x76, 0xC6, 0x85, 0x73, 0x77, 0x7D, 0xF7, 0x70, 0x2B, 0xB8, 0xB0, 0x3E, 0x11, 0xCC, 0xBB, 0x7E, - 0x28, 0x8B, 0xB2, 0x94, 0xFC, 0x61, 0x5B, 0x7E, 0xFF, 0xB8, 0xBD, 0xBF, 0x6D, 0x82, 0xF7, 0x6A, - 0x59, 0x30, 0x04, 0x9B, 0xBA, 0x44, 0x30, 0x11, 0x06, 0xA2, 0xD7, 0xF8, 0x70, 0xA8, 0x01, 0x00, - 0xD6, 0x98, 0x79, 0x56, 0x6D, 0xDB, 0x6C, 0x57, 0xAB, 0x75, 0x59, 0x7F, 0xF9, 0x7A, 0xFE, 0xFD, - 0xD3, 0xE9, 0xC3, 0xA7, 0x67, 0x08, 0x11, 0xC8, 0xB0, 0x90, 0x05, 0x2B, 0x37, 0x65, 0xDD, 0xCC, - 0x8B, 0xD2, 0xC6, 0xF4, 0x43, 0x37, 0x4D, 0xE3, 0xBB, 0x77, 0xDF, 0x33, 0xC6, 0x16, 0xB5, 0x18, - 0x63, 0x42, 0xF4, 0x7F, 0x7F, 0xFF, 0x7B, 0x37, 0xCD, 0x00, 0x30, 0xA3, 0xB5, 0xB1, 0xDA, 0x18, - 0x5B, 0x55, 0x92, 0x31, 0x62, 0xAD, 0x2B, 0x0B, 0xE9, 0x9D, 0x0D, 0xCE, 0x49, 0x5E, 0x50, 0x4C, - 0xAE, 0x7D, 0xD7, 0x56, 0xC5, 0xB6, 0x5E, 0x2F, 0x8B, 0x29, 0x84, 0xBC, 0xDD, 0xB5, 0xD6, 0x6B, - 0x46, 0x71, 0xDF, 0x8D, 0x3E, 0x47, 0x4C, 0x91, 0xF6, 0xE1, 0x74, 0x3E, 0x83, 0xEC, 0x72, 0xCE, - 0x5C, 0xCA, 0xB6, 0xAD, 0xAA, 0x82, 0xDE, 0xDF, 0xEE, 0x7F, 0x78, 0xFB, 0x6E, 0xBF, 0xBB, 0x79, - 0x73, 0xFF, 0xD0, 0xD4, 0x72, 0xB5, 0xC1, 0x75, 0x4D, 0xEE, 0x6F, 0x37, 0x10, 0x61, 0xAD, 0xDD, - 0xF1, 0xD4, 0x89, 0x42, 0xE4, 0x9C, 0xAE, 0x97, 0x2E, 0x23, 0x4C, 0x09, 0x4B, 0x29, 0x7C, 0x7B, - 0x02, 0x04, 0x67, 0x09, 0xA1, 0x39, 0x27, 0xAD, 0x97, 0xF5, 0x6A, 0x9B, 0x52, 0xFC, 0xF5, 0xD7, - 0xBF, 0x3F, 0x3D, 0x3F, 0xF5, 0x7D, 0x3F, 0x4D, 0xC3, 0xC7, 0xAF, 0x5F, 0x12, 0x70, 0x36, 0x04, - 0x1F, 0x40, 0x0A, 0x11, 0x23, 0xFA, 0xF6, 0x7E, 0xFD, 0x5F, 0xFE, 0xE1, 0x91, 0x52, 0xE2, 0x42, - 0xD6, 0xDA, 0xF5, 0xDD, 0x80, 0x29, 0xB2, 0x31, 0x69, 0xED, 0x60, 0xCE, 0xA7, 0x6B, 0x6F, 0x7D, - 0x9C, 0x16, 0xDD, 0x0D, 0xE3, 0xF9, 0x3A, 0x40, 0xCC, 0xB4, 0x35, 0xD6, 0x79, 0x4E, 0xF1, 0xBA, - 0x91, 0x29, 0x43, 0x1F, 0x61, 0x0C, 0xF6, 0xCD, 0xDD, 0x9E, 0x60, 0x94, 0x40, 0x72, 0x3E, 0x18, - 0x6B, 0x1F, 0x1E, 0xF6, 0xD6, 0x04, 0xEF, 0xA3, 0xF3, 0xB1, 0x5D, 0xD7, 0x29, 0x06, 0xEB, 0xDC, - 0xA2, 0x3C, 0xA5, 0x94, 0x31, 0xD6, 0x75, 0x63, 0x4A, 0xF9, 0x74, 0x1A, 0xAF, 0xA3, 0x1E, 0xC6, - 0xE5, 0xF8, 0x7A, 0x5D, 0xB4, 0xE5, 0x42, 0x6A, 0x1B, 0x8C, 0x09, 0x00, 0x82, 0xEB, 0xE9, 0xCA, - 0x05, 0x5F, 0xAD, 0x2A, 0x42, 0xA9, 0x36, 0x41, 0x1B, 0x7F, 0xED, 0x66, 0x88, 0x30, 0x17, 0x88, - 0x12, 0xE8, 0x5C, 0xD2, 0x3A, 0x00, 0x00, 0x8B, 0x82, 0x5A, 0x6B, 0x43, 0x48, 0x75, 0x53, 0x2C, - 0x8B, 0x3A, 0x5F, 0x67, 0x4C, 0x48, 0x5D, 0xD7, 0xC6, 0x38, 0x08, 0xF2, 0x7A, 0xDD, 0x30, 0x4E, - 0x00, 0x84, 0x10, 0xC2, 0xB2, 0x14, 0x6D, 0x5D, 0x94, 0x95, 0x64, 0x04, 0x57, 0x85, 0x68, 0x9A, - 0x82, 0x09, 0xCC, 0x18, 0xE9, 0x7B, 0xC5, 0x25, 0x33, 0xCA, 0x70, 0x4E, 0xBF, 0x11, 0x09, 0xC1, - 0xC7, 0xAA, 0x10, 0xEB, 0xF5, 0x7A, 0x9A, 0x4D, 0x21, 0x8B, 0x45, 0x29, 0xAD, 0xAD, 0x0B, 0xC1, - 0xB9, 0x30, 0x4D, 0xBE, 0x94, 0xFC, 0xDF, 0xDF, 0x7F, 0xA2, 0x84, 0x5A, 0xA3, 0x97, 0x65, 0x56, - 0x5A, 0x1D, 0xCF, 0x27, 0x29, 0x4B, 0x00, 0x90, 0x2C, 0x2A, 0x84, 0xD0, 0x7E, 0xD3, 0x68, 0x63, - 0xAC, 0x0F, 0x19, 0xE4, 0x6F, 0x9F, 0xB0, 0xCD, 0x8B, 0xFA, 0xE6, 0x53, 0x60, 0x8C, 0x94, 0x31, - 0xCE, 0x39, 0x00, 0x00, 0x84, 0x08, 0x22, 0xB4, 0x59, 0xAF, 0x87, 0x69, 0xB2, 0x3E, 0x42, 0x84, - 0x18, 0x63, 0x3E, 0x84, 0xC3, 0xA6, 0xF9, 0xE7, 0xBF, 0xFC, 0x50, 0x49, 0xBE, 0xAA, 0x9B, 0xBB, - 0xFD, 0x5E, 0xB0, 0xF2, 0xF1, 0xEE, 0xF1, 0xCD, 0xED, 0x5D, 0x5D, 0xB5, 0x85, 0x28, 0x05, 0x25, - 0x87, 0x4D, 0xF5, 0xF6, 0x6E, 0xC5, 0x71, 0xBE, 0xBD, 0x69, 0x21, 0x41, 0xCB, 0x32, 0x63, 0xC6, - 0x09, 0x25, 0xEB, 0x9D, 0xA4, 0x9C, 0xAC, 0x77, 0xAD, 0x2C, 0x59, 0x8E, 0xA1, 0x2C, 0x28, 0x24, - 0x25, 0x65, 0x70, 0x53, 0xE9, 0xD5, 0x5A, 0x12, 0x2A, 0x2F, 0xBD, 0xF9, 0xFE, 0x96, 0x6F, 0xB7, - 0x37, 0x1A, 0xDF, 0x74, 0xA7, 0xE7, 0xE3, 0xD7, 0xDF, 0x23, 0x29, 0x5C, 0xC8, 0xBF, 0xFE, 0xFD, - 0x5F, 0xAB, 0x32, 0xF6, 0xE3, 0xB4, 0x6A, 0x9A, 0xB6, 0x6E, 0x3F, 0x3C, 0x1D, 0x33, 0x4E, 0xDD, - 0x55, 0x4D, 0x8B, 0xB6, 0x36, 0x5A, 0x9B, 0x87, 0x51, 0xA7, 0x9C, 0x43, 0xCC, 0xB3, 0x32, 0x8B, - 0xD6, 0xE3, 0x38, 0xE7, 0x1C, 0x09, 0x05, 0xFB, 0x3D, 0x57, 0x66, 0xB1, 0x0E, 0x68, 0xED, 0x63, - 0x8C, 0x8C, 0x92, 0x98, 0x13, 0x22, 0xE4, 0xDA, 0x4D, 0xA5, 0x28, 0xBE, 0xFF, 0xEE, 0xCD, 0xC7, - 0x2F, 0xAF, 0x31, 0xA2, 0x7E, 0x74, 0xC6, 0xA7, 0x8C, 0xE0, 0xA4, 0x6C, 0x37, 0xAA, 0xE3, 0x65, - 0x5C, 0x66, 0x45, 0x19, 0x19, 0x16, 0xFD, 0x7C, 0xBC, 0x4E, 0xCB, 0xAC, 0xBD, 0x87, 0xD1, 0x76, - 0xC3, 0xF4, 0xF7, 0x0F, 0x5F, 0x5E, 0xCF, 0xD7, 0x94, 0x48, 0x21, 0xCB, 0xC3, 0x7E, 0x4B, 0x08, - 0x46, 0x84, 0x40, 0x88, 0x7D, 0x08, 0xC6, 0x98, 0x55, 0xDB, 0x70, 0x4E, 0xAD, 0x71, 0x20, 0x41, - 0x00, 0xE0, 0xF3, 0xCB, 0xF5, 0xEB, 0x4B, 0xFF, 0x7A, 0xBA, 0x52, 0x4A, 0x2B, 0x29, 0xD7, 0xAB, - 0xCA, 0x1A, 0x35, 0x4F, 0xEA, 0x78, 0x1C, 0xBE, 0xC5, 0x14, 0x90, 0xC1, 0xD8, 0x2F, 0xC3, 0xB0, - 0x9C, 0xCF, 0xC3, 0xE5, 0xDC, 0x7D, 0xF8, 0xFA, 0x12, 0x21, 0xF1, 0x1E, 0x0C, 0x83, 0xE1, 0x52, - 0x40, 0x84, 0x42, 0xCC, 0x42, 0x8A, 0xB6, 0xE1, 0x82, 0xB8, 0xA6, 0xA4, 0xB3, 0xD6, 0x85, 0x08, - 0xD6, 0xD9, 0x0F, 0x4F, 0x33, 0xC2, 0x94, 0x30, 0xF1, 0x72, 0x3A, 0x52, 0x4C, 0x05, 0x67, 0x19, - 0xA1, 0x45, 0x99, 0x6F, 0x19, 0x13, 0x00, 0x88, 0x31, 0x86, 0x18, 0x66, 0x00, 0x63, 0x4C, 0x3E, - 0x04, 0x90, 0x61, 0x55, 0x14, 0x18, 0x4B, 0xE5, 0x0B, 0x8E, 0x81, 0x60, 0x71, 0xDD, 0x56, 0x9C, - 0x42, 0xE7, 0x35, 0x02, 0x46, 0x72, 0xD8, 0x36, 0x35, 0x24, 0xF4, 0xF1, 0xE1, 0xE0, 0xED, 0xB2, - 0x6E, 0x85, 0x10, 0xAD, 0x10, 0x4D, 0x59, 0x8A, 0x7D, 0x5B, 0x65, 0x00, 0x37, 0xEB, 0x46, 0x1B, - 0xB7, 0x6E, 0x1A, 0xE3, 0xD2, 0xBA, 0x2E, 0x2E, 0x5D, 0xBF, 0x68, 0xBD, 0xAA, 0x9B, 0xF5, 0xAA, - 0x39, 0xAC, 0xA5, 0xD1, 0xF3, 0x6F, 0x9F, 0x8E, 0xC3, 0x38, 0xBF, 0x7B, 0xB8, 0xF3, 0x1E, 0x58, - 0x17, 0xCE, 0xD7, 0x7E, 0x98, 0xD4, 0x38, 0xCE, 0xC4, 0x58, 0x07, 0x21, 0x3A, 0x9F, 0x3A, 0x98, - 0xD0, 0x5F, 0x7E, 0xFC, 0x99, 0x22, 0xA2, 0x6D, 0x84, 0x88, 0x16, 0x85, 0x30, 0xDE, 0x60, 0x02, - 0x9B, 0x5A, 0x0A, 0xD9, 0xDC, 0xDE, 0xEF, 0x9C, 0x73, 0xD3, 0xC4, 0x52, 0x4E, 0x45, 0x51, 0x2B, - 0x6D, 0xB2, 0x9F, 0x75, 0x80, 0x19, 0x78, 0xE3, 0xCD, 0xB9, 0xBB, 0x18, 0xEB, 0x24, 0x17, 0xC7, - 0xD3, 0x13, 0x02, 0xB9, 0x6D, 0xEA, 0x75, 0x5B, 0x2F, 0x6A, 0xC1, 0x98, 0x50, 0xCA, 0xBC, 0xB7, - 0x21, 0x04, 0x8C, 0x68, 0x0C, 0xA1, 0x2A, 0x85, 0x36, 0x66, 0x5D, 0x71, 0x4A, 0xB0, 0x04, 0x4D, - 0x21, 0x48, 0x48, 0xEE, 0xDA, 0xF5, 0xE3, 0xA4, 0x43, 0x08, 0x4C, 0xF2, 0xD9, 0xFA, 0x18, 0x52, - 0xDB, 0x14, 0xEB, 0xB6, 0x26, 0xB4, 0x90, 0x55, 0xED, 0xED, 0xFC, 0xE6, 0x6E, 0xAF, 0x6D, 0x7C, - 0x7E, 0xE9, 0x08, 0x21, 0x1F, 0x3F, 0x7F, 0x5A, 0xB4, 0x82, 0x38, 0x6E, 0x37, 0x35, 0x22, 0x28, - 0x46, 0x70, 0xFF, 0xD0, 0x82, 0x1C, 0xC7, 0x49, 0x7F, 0x3C, 0x5E, 0x32, 0x84, 0x20, 0x85, 0x45, - 0x2F, 0x8C, 0x4B, 0x90, 0x13, 0x48, 0x2E, 0x83, 0x0C, 0x00, 0x30, 0xC6, 0xFC, 0xF9, 0xA7, 0xBF, - 0x08, 0xCE, 0xCF, 0xE7, 0xF3, 0x34, 0x2F, 0xCE, 0x79, 0xE7, 0xF4, 0x34, 0x99, 0xBA, 0xE1, 0x2F, - 0xAF, 0x47, 0x59, 0x94, 0xBB, 0xB6, 0xBC, 0x3F, 0x34, 0x4D, 0x2B, 0xCC, 0xA2, 0x8F, 0xE7, 0xBE, - 0x1B, 0x66, 0x48, 0x44, 0x4E, 0x09, 0x31, 0xD6, 0x0D, 0xC3, 0xB5, 0x5B, 0x6C, 0x00, 0x04, 0xC3, - 0xED, 0x6E, 0x93, 0xBC, 0xF3, 0xC1, 0xCD, 0xB3, 0xCA, 0x00, 0x4D, 0x43, 0xCF, 0x09, 0x32, 0x2E, - 0x3C, 0xDC, 0x6E, 0xDE, 0xDC, 0xAC, 0x57, 0xED, 0x16, 0x40, 0x5C, 0x30, 0x08, 0x01, 0xFE, 0xF5, - 0xE3, 0x55, 0x70, 0x4C, 0x09, 0xA6, 0x94, 0xBC, 0xFF, 0xF0, 0x62, 0xAD, 0x2F, 0xA4, 0xB8, 0x39, - 0xAC, 0x8D, 0x35, 0xF3, 0xA2, 0x28, 0xA7, 0x87, 0x87, 0xED, 0x32, 0xEA, 0x97, 0xD7, 0x4E, 0x4A, - 0x82, 0x4C, 0x28, 0x9A, 0xCA, 0x3A, 0x3F, 0xF4, 0x23, 0x41, 0x98, 0x23, 0x3C, 0x4E, 0x9A, 0x73, - 0x52, 0xAD, 0x1B, 0xB3, 0xA8, 0x72, 0xB5, 0xF1, 0xCE, 0x77, 0xBD, 0x76, 0x1E, 0x3C, 0xBE, 0x7D, - 0x30, 0xC6, 0x9C, 0x2F, 0x97, 0x18, 0x3D, 0xC8, 0x19, 0x49, 0x70, 0x77, 0x53, 0xF8, 0x10, 0x9B, - 0xA6, 0x4E, 0x21, 0x30, 0x82, 0xBE, 0x3E, 0x1F, 0x83, 0xB3, 0x08, 0x24, 0x46, 0x80, 0xF1, 0x7E, - 0xE8, 0xC7, 0xB2, 0x64, 0xDB, 0x4D, 0xDD, 0x36, 0xF5, 0x38, 0xCC, 0x9B, 0x8D, 0x74, 0x36, 0x6C, - 0x37, 0x0D, 0x42, 0x28, 0xE5, 0x5C, 0x08, 0xF6, 0x6D, 0x20, 0x9B, 0x20, 0xD2, 0x8F, 0x73, 0x0A, - 0x29, 0x26, 0x60, 0xB5, 0xEF, 0xC6, 0x59, 0x08, 0xC6, 0x29, 0x8D, 0x10, 0x12, 0x42, 0x11, 0xA2, - 0x21, 0x44, 0xEB, 0xF3, 0x34, 0x2A, 0x98, 0x63, 0x55, 0x97, 0x18, 0xD3, 0x87, 0xDB, 0xF6, 0xF5, - 0x32, 0xB4, 0x4D, 0xAD, 0x8D, 0x5D, 0x92, 0x87, 0x10, 0x7A, 0x97, 0x8A, 0xAA, 0x60, 0x82, 0x2F, - 0x4B, 0xCA, 0x00, 0x3A, 0x1F, 0x7E, 0xFD, 0xF4, 0xE2, 0x9C, 0x53, 0xD6, 0x02, 0x00, 0x00, 0x00, - 0xD6, 0xA7, 0x42, 0xF2, 0x65, 0xD1, 0x3E, 0x44, 0xC2, 0x08, 0x25, 0x14, 0x21, 0x4A, 0x08, 0x8D, - 0x31, 0x16, 0x45, 0x99, 0x01, 0x1A, 0xE7, 0xD1, 0x18, 0x53, 0x55, 0x0D, 0x44, 0x98, 0x51, 0x2C, - 0x28, 0x9A, 0xA7, 0x99, 0x31, 0x16, 0x62, 0xEC, 0x86, 0x25, 0x67, 0x30, 0x2E, 0xF6, 0x3A, 0x0C, - 0x8C, 0x42, 0xEF, 0x33, 0x42, 0x40, 0x70, 0xBA, 0x5D, 0xB5, 0xB2, 0xDA, 0xA6, 0x1C, 0x9C, 0x33, - 0x80, 0xC9, 0x7A, 0xD3, 0x82, 0x1C, 0xAD, 0x77, 0x19, 0x82, 0x0F, 0xFF, 0xF3, 0x98, 0x21, 0x0C, - 0x31, 0x54, 0xB5, 0x8C, 0xA1, 0x7F, 0x7A, 0x9E, 0x7F, 0xFC, 0xE1, 0xBB, 0x60, 0xC7, 0x75, 0x23, - 0x5F, 0xCE, 0x9A, 0x49, 0xE2, 0xE8, 0xEE, 0xF8, 0x7A, 0x8C, 0x76, 0x34, 0xCE, 0xD5, 0x72, 0x73, - 0x7A, 0x7D, 0xEA, 0xA7, 0xF9, 0x3F, 0xFD, 0x24, 0x28, 0x29, 0x8A, 0xA2, 0x18, 0x97, 0x29, 0xA6, - 0xB0, 0x4C, 0xB9, 0x9F, 0x4D, 0x08, 0x51, 0x4A, 0x1A, 0x82, 0xAB, 0x1B, 0x1A, 0x63, 0xC4, 0xC0, - 0xDF, 0xDE, 0xAF, 0x5E, 0xCF, 0xB3, 0xF7, 0x2E, 0x85, 0x25, 0x39, 0x76, 0x7D, 0xD1, 0x31, 0x01, - 0x08, 0x19, 0xC6, 0x04, 0x12, 0x80, 0x08, 0xA2, 0x89, 0x79, 0xE3, 0x1F, 0x6E, 0xB6, 0xBB, 0xF5, - 0xE6, 0xFF, 0xFE, 0x6F, 0x7F, 0xEB, 0x86, 0xF1, 0x1F, 0x7F, 0xFA, 0x11, 0x40, 0x70, 0xEE, 0xE7, - 0xF5, 0x6A, 0xE5, 0xA3, 0x8D, 0x39, 0x1B, 0xEB, 0xB7, 0x4D, 0xE1, 0xBC, 0xC1, 0x2C, 0x8B, 0x88, - 0x8C, 0xB1, 0xE6, 0x3C, 0x47, 0x45, 0x7D, 0xE2, 0x31, 0x0B, 0x46, 0xB8, 0xB1, 0xE0, 0x92, 0x74, - 0x37, 0xD9, 0xB2, 0xE4, 0x4D, 0xC3, 0x9C, 0xF1, 0x53, 0x3F, 0xB4, 0xED, 0x0A, 0x41, 0xFC, 0xFC, - 0xE5, 0xEC, 0x8C, 0x8F, 0x08, 0xBF, 0x9C, 0x8E, 0x10, 0x02, 0x6B, 0x83, 0xE4, 0xB8, 0x29, 0xE4, - 0xB6, 0x29, 0x6D, 0xB0, 0x3E, 0xA6, 0xB2, 0x96, 0xAB, 0x5D, 0x93, 0x63, 0x46, 0x00, 0x4E, 0xE3, - 0x72, 0xBE, 0x0E, 0x21, 0x24, 0x1F, 0xBF, 0xAD, 0x3A, 0x41, 0xEA, 0x53, 0xF2, 0x19, 0x63, 0x82, - 0x20, 0xA8, 0xAB, 0x22, 0xE7, 0x24, 0x4B, 0xA2, 0x94, 0xFA, 0x7A, 0xD4, 0x05, 0x67, 0x39, 0xA3, - 0x0F, 0x5F, 0x55, 0x55, 0x60, 0x65, 0x3D, 0x80, 0x8A, 0xD2, 0xD0, 0x54, 0x35, 0xC1, 0x68, 0x98, - 0x16, 0x08, 0x90, 0x10, 0x22, 0xA6, 0xA0, 0xB5, 0x75, 0x2E, 0xE4, 0x04, 0x08, 0xC1, 0xAB, 0x75, - 0x93, 0x62, 0xF4, 0x3E, 0xE8, 0x0C, 0x19, 0xA3, 0x29, 0xA7, 0xDD, 0x8A, 0x57, 0x1C, 0x87, 0x9C, - 0xB4, 0x9E, 0xAB, 0x92, 0x03, 0xE0, 0xDA, 0xA6, 0xDE, 0x54, 0xC5, 0x30, 0x4D, 0xB2, 0xA4, 0xC1, - 0x86, 0xBB, 0x43, 0x35, 0xCE, 0x29, 0x27, 0xD4, 0x34, 0x8D, 0xF5, 0x91, 0xE3, 0x44, 0x31, 0x1D, - 0x66, 0x87, 0x31, 0x29, 0x64, 0x11, 0xA2, 0x2A, 0x18, 0xAE, 0x38, 0xDA, 0xD5, 0xBB, 0x77, 0x6F, - 0x36, 0x2A, 0xC4, 0xF7, 0xAF, 0xE3, 0xFB, 0xDF, 0x7E, 0x81, 0x10, 0xFC, 0xF8, 0xDD, 0xDD, 0xB9, - 0xEB, 0xB5, 0xB3, 0xCB, 0xE2, 0x73, 0x02, 0x94, 0xE1, 0x94, 0x23, 0x31, 0x26, 0x18, 0x6D, 0xEF, - 0xB6, 0xBB, 0x7F, 0xFE, 0x87, 0x9F, 0x33, 0x64, 0x8C, 0x53, 0x1F, 0x01, 0x22, 0x62, 0xB3, 0xDD, - 0xFD, 0x53, 0xF3, 0xC7, 0x69, 0x5A, 0x40, 0x02, 0x52, 0x08, 0x0A, 0x17, 0xE5, 0xF4, 0xC3, 0x6D, - 0x15, 0x63, 0xF1, 0xAF, 0x7A, 0x26, 0x39, 0xD1, 0x6C, 0x9D, 0xF7, 0x7F, 0xFE, 0xD3, 0x63, 0x44, - 0xE8, 0x78, 0xBA, 0xBE, 0xD5, 0x7B, 0xC6, 0xE8, 0x6A, 0x53, 0x9F, 0x5F, 0x7B, 0xA3, 0x7D, 0x21, - 0xB9, 0x3F, 0x5A, 0x63, 0x6C, 0x06, 0xF0, 0x74, 0x9A, 0xFE, 0xF0, 0xDD, 0xE3, 0xEB, 0xE5, 0x92, - 0x40, 0xA8, 0x0B, 0x99, 0x42, 0x7E, 0x7E, 0x59, 0x08, 0xCB, 0x09, 0xC4, 0xE0, 0xA8, 0x8F, 0xC9, - 0x98, 0xD8, 0xCF, 0x81, 0x50, 0x08, 0x12, 0xFC, 0xF2, 0x74, 0xD9, 0xAC, 0xD6, 0x0F, 0x77, 0xF7, - 0x04, 0x22, 0x1B, 0xF3, 0x7A, 0x53, 0x60, 0xDC, 0x5C, 0xCE, 0x73, 0x70, 0xE6, 0xF1, 0x61, 0x55, - 0x14, 0xE9, 0xF7, 0x8F, 0xE3, 0x75, 0x9A, 0x1E, 0xEE, 0xB7, 0xCE, 0x05, 0x10, 0x91, 0xB6, 0x76, - 0x31, 0xA6, 0x69, 0x8A, 0xF5, 0xBA, 0xEE, 0xE7, 0xA1, 0x10, 0xA2, 0x1B, 0x26, 0x4C, 0x78, 0xBD, - 0xDA, 0x78, 0x63, 0x96, 0xE9, 0x82, 0x10, 0x72, 0xDE, 0xEE, 0xF7, 0xB7, 0x29, 0xE5, 0xD3, 0xF9, - 0xA8, 0xAD, 0x0D, 0x39, 0x5A, 0xAB, 0x01, 0xF0, 0x82, 0xE1, 0x65, 0xD6, 0x8F, 0x6F, 0xF6, 0xDB, - 0x75, 0x9B, 0x83, 0x5B, 0xA6, 0x31, 0x46, 0xF3, 0xFA, 0xDC, 0x03, 0x8C, 0xB5, 0xB6, 0xDB, 0x1D, - 0x14, 0x82, 0xFF, 0xF6, 0xFB, 0x69, 0x9C, 0x16, 0x59, 0x0A, 0x41, 0xF1, 0x70, 0x9D, 0xBF, 0x3B, - 0x80, 0x28, 0x48, 0x59, 0x6C, 0x32, 0x20, 0x29, 0x47, 0x8E, 0x93, 0xA0, 0x74, 0xD3, 0xCA, 0xDB, - 0xC3, 0xBA, 0xA9, 0x57, 0x41, 0xC5, 0x71, 0x9C, 0x26, 0x9D, 0x72, 0x46, 0x4D, 0x5D, 0xA4, 0x9C, - 0xB4, 0xD6, 0xD3, 0xB7, 0x7B, 0x8B, 0xD1, 0x38, 0x2B, 0x0C, 0x51, 0x48, 0x31, 0x01, 0xD0, 0x8D, - 0x53, 0xD7, 0x2F, 0x94, 0xB1, 0xE8, 0x63, 0x4C, 0xB2, 0x1F, 0xD4, 0xE1, 0xF6, 0x1B, 0x87, 0x92, - 0x58, 0x29, 0x13, 0x40, 0xAF, 0xAF, 0x1D, 0x25, 0x08, 0x93, 0x1E, 0xE6, 0xCC, 0x28, 0x2D, 0xAA, - 0x02, 0x13, 0x52, 0x71, 0x11, 0x53, 0xC6, 0x98, 0xDC, 0xDD, 0xDD, 0x50, 0x8A, 0x09, 0x44, 0xCB, - 0xE2, 0x21, 0x04, 0x08, 0x82, 0x98, 0x80, 0x28, 0x58, 0x51, 0xF0, 0xA6, 0xA8, 0x65, 0x41, 0x10, - 0x81, 0xBF, 0x7D, 0x7C, 0x09, 0x11, 0x7C, 0xFA, 0xFC, 0x72, 0xD8, 0x35, 0x9B, 0x55, 0x9D, 0x12, - 0xAC, 0xCA, 0x02, 0x13, 0x4C, 0x20, 0x0A, 0x21, 0x7A, 0x67, 0xB9, 0xE0, 0x08, 0x21, 0xC6, 0x28, - 0xC8, 0x20, 0xC6, 0x54, 0x17, 0xC5, 0xFF, 0xF2, 0x4F, 0x3F, 0x2D, 0xB3, 0xFE, 0xF5, 0xFD, 0xF3, - 0xB5, 0x9F, 0x96, 0xC5, 0xCC, 0x39, 0x11, 0x8C, 0xB7, 0x6D, 0xD2, 0x5A, 0x43, 0x08, 0xB5, 0x56, - 0x08, 0x93, 0x94, 0xB0, 0x36, 0x01, 0xA4, 0xD0, 0x56, 0xB5, 0xB1, 0x6E, 0xB3, 0x6E, 0x10, 0x42, - 0x5F, 0xBF, 0xBE, 0x5A, 0xEF, 0x9B, 0xAA, 0x12, 0x9C, 0x3F, 0x3F, 0x3F, 0xC7, 0x94, 0x33, 0x00, - 0x08, 0x22, 0x84, 0x10, 0x61, 0x82, 0xA7, 0xCC, 0x05, 0x93, 0x5C, 0x30, 0x8E, 0x86, 0x71, 0x09, - 0x31, 0xB4, 0x6D, 0x39, 0x4E, 0x06, 0x42, 0x68, 0xAD, 0x06, 0x00, 0x00, 0x90, 0x8D, 0x51, 0xD3, - 0x34, 0xE4, 0x9C, 0x01, 0x00, 0xD6, 0x1A, 0x67, 0xCD, 0xB6, 0xAD, 0x04, 0xE3, 0xD6, 0x3A, 0x90, - 0x01, 0x44, 0xA4, 0xEB, 0x47, 0x8C, 0x09, 0x44, 0x60, 0x5A, 0x94, 0xD6, 0xFA, 0xEE, 0xB0, 0xA6, - 0x94, 0x28, 0xE3, 0xCE, 0xBD, 0x66, 0x8C, 0x34, 0x05, 0xE7, 0x52, 0x7A, 0x95, 0x9F, 0x9F, 0x4F, - 0x21, 0xC5, 0x45, 0xF9, 0x4B, 0x37, 0x13, 0x4E, 0xA6, 0xF9, 0xFF, 0x0B, 0x07, 0x04, 0xE3, 0x98, - 0xC5, 0xCB, 0x79, 0xE6, 0x8C, 0x8E, 0x16, 0x87, 0x18, 0x46, 0x5B, 0x33, 0x8D, 0x74, 0xFF, 0x9E, - 0x20, 0xB3, 0xBD, 0x7D, 0x44, 0x29, 0x1D, 0xDA, 0xEE, 0xE6, 0x7F, 0xDD, 0x30, 0x80, 0x1F, 0x6F, - 0x2A, 0x48, 0x72, 0x4E, 0x66, 0xD5, 0xF2, 0x59, 0xF9, 0xFF, 0xF4, 0x97, 0x07, 0x00, 0xBC, 0x52, - 0xE1, 0xF8, 0xDA, 0xDD, 0xDD, 0x35, 0xC3, 0x10, 0x18, 0x0C, 0x6F, 0x6F, 0xA1, 0xB5, 0x31, 0x45, - 0x52, 0x11, 0xB8, 0x5B, 0x71, 0x97, 0xCB, 0xBE, 0x9B, 0xFE, 0xC7, 0xDF, 0xBE, 0x38, 0x9F, 0xD6, - 0xAB, 0x82, 0x33, 0x52, 0x97, 0xCD, 0x75, 0x98, 0x18, 0x86, 0xD6, 0xC5, 0x73, 0xD7, 0xB5, 0x75, - 0x05, 0x10, 0x84, 0x29, 0x6E, 0x56, 0x72, 0x98, 0xC6, 0xE7, 0xD7, 0x63, 0x51, 0xC8, 0xB7, 0x77, - 0xBB, 0x10, 0xE3, 0xC7, 0xCF, 0xD7, 0x0C, 0xFC, 0x8F, 0x3F, 0x3C, 0x2C, 0x0A, 0xE7, 0x24, 0xBC, - 0x55, 0x90, 0x42, 0x0C, 0xC0, 0x30, 0xE8, 0x59, 0xFB, 0x55, 0x5B, 0x63, 0x0C, 0xB4, 0xF3, 0x85, - 0xA3, 0x04, 0x81, 0xBA, 0xAE, 0x05, 0x15, 0xA7, 0xD7, 0x4B, 0x3F, 0x2C, 0x00, 0xA2, 0x5F, 0x3F, - 0x7F, 0x9A, 0x94, 0xFE, 0xF9, 0x87, 0x7B, 0x2A, 0xC9, 0x62, 0x1D, 0xC0, 0xB1, 0x59, 0x17, 0xB3, - 0x86, 0x12, 0xCA, 0xAA, 0x14, 0x31, 0x04, 0xAB, 0x83, 0x10, 0xBC, 0xAC, 0x2B, 0xE7, 0x03, 0x84, - 0x10, 0x33, 0x5C, 0xD7, 0xB2, 0xAE, 0x0B, 0x46, 0xF1, 0x38, 0xCE, 0x9B, 0xB6, 0x6A, 0xCA, 0x6A, - 0xB5, 0x6E, 0x66, 0x6D, 0xFA, 0x69, 0x2A, 0xB8, 0xF0, 0x11, 0xBC, 0xFF, 0xFD, 0xB3, 0xF5, 0xE1, - 0xE5, 0x38, 0xF4, 0x83, 0x29, 0x4B, 0xF9, 0xE6, 0xB0, 0xE9, 0x27, 0xB5, 0x69, 0xD7, 0x39, 0xE5, - 0x69, 0x51, 0x10, 0x42, 0xE4, 0x73, 0x51, 0x49, 0x4A, 0x89, 0x36, 0x53, 0xCA, 0xD9, 0x5B, 0x97, - 0xAE, 0x63, 0x51, 0x4A, 0x90, 0x52, 0x0E, 0x4E, 0x51, 0xE4, 0x9C, 0x65, 0x02, 0x75, 0x53, 0x4C, - 0x21, 0x12, 0x42, 0xA6, 0x71, 0xE4, 0x38, 0x49, 0x26, 0x4E, 0xDD, 0x98, 0x61, 0xB2, 0x73, 0x00, - 0x29, 0x5F, 0xAF, 0xA3, 0xB6, 0xB6, 0x90, 0x6C, 0x18, 0x35, 0xC1, 0x14, 0x22, 0x74, 0xBB, 0xDF, - 0xF8, 0x98, 0x6F, 0x0F, 0x05, 0xE5, 0xE8, 0xA1, 0x68, 0x63, 0x88, 0xBB, 0x4D, 0xBD, 0xAD, 0x0B, - 0x4E, 0xD3, 0x97, 0xD7, 0xA7, 0xFE, 0x32, 0x21, 0x4A, 0x7F, 0xFE, 0xC3, 0x4D, 0x25, 0x58, 0x4C, - 0xF9, 0x3A, 0x69, 0x2E, 0x98, 0xF3, 0xF1, 0xD4, 0xF5, 0x65, 0x21, 0xE0, 0xFF, 0xF9, 0x7F, 0xFC, - 0x6F, 0xDF, 0xDD, 0xEF, 0x09, 0x26, 0x39, 0x81, 0x51, 0x99, 0x98, 0x53, 0x08, 0x91, 0x60, 0xEC, - 0x43, 0x4E, 0x39, 0xBF, 0x1C, 0xCF, 0x4F, 0xCF, 0xE7, 0x1F, 0x7F, 0xB8, 0x87, 0x19, 0x94, 0x85, - 0xA0, 0x82, 0x13, 0x02, 0x30, 0xA6, 0xAF, 0x4F, 0x2F, 0xA5, 0xE0, 0x00, 0x86, 0x0C, 0x01, 0x16, - 0x4C, 0x7B, 0x07, 0x10, 0xF2, 0x3E, 0x54, 0x85, 0x28, 0xEB, 0x02, 0x03, 0x58, 0x0A, 0x06, 0x21, - 0xE8, 0x7A, 0xFD, 0xE5, 0xEB, 0xD9, 0x2C, 0x76, 0xB7, 0xD9, 0x28, 0x1B, 0x73, 0x76, 0x05, 0x4B, - 0x18, 0xA2, 0xE7, 0x97, 0x11, 0x63, 0x4C, 0x49, 0xC6, 0x18, 0x0B, 0x51, 0x9C, 0xCE, 0xC3, 0x79, - 0xB2, 0x46, 0xAB, 0x90, 0x33, 0x21, 0x6C, 0xB7, 0xD9, 0x1C, 0xB6, 0x4D, 0x74, 0x7A, 0xBD, 0xAB, - 0xB8, 0x80, 0xD3, 0x64, 0x95, 0x72, 0x14, 0x23, 0xA5, 0xCC, 0x76, 0xD7, 0xC6, 0x04, 0x62, 0x8A, - 0x7F, 0xF8, 0xE1, 0x2E, 0x65, 0xB0, 0x68, 0xC3, 0x39, 0xBD, 0x9E, 0xC7, 0x79, 0x52, 0x42, 0xF2, - 0x9C, 0xA1, 0xE0, 0xE8, 0x7F, 0xFC, 0xEB, 0xFB, 0x0F, 0x9F, 0x5E, 0x28, 0x2F, 0x21, 0x04, 0x5A, - 0x4D, 0x94, 0x09, 0xC6, 0xC4, 0xFD, 0xDD, 0x3D, 0x42, 0x40, 0x9B, 0x59, 0x1B, 0x15, 0x73, 0x0E, - 0x21, 0x04, 0xE7, 0x41, 0x0A, 0x31, 0x84, 0x3F, 0xFD, 0x70, 0xBF, 0x6E, 0xAA, 0x45, 0x29, 0xAD, - 0x34, 0xA5, 0xB8, 0xA8, 0x0A, 0xCA, 0x18, 0xC8, 0x40, 0x29, 0xB7, 0xD8, 0x70, 0x68, 0xAB, 0xFF, - 0xF6, 0xFF, 0xFC, 0x92, 0x00, 0x7A, 0xF7, 0xF6, 0xE6, 0xE5, 0xE9, 0xF4, 0xE7, 0x1F, 0xDF, 0x7E, - 0x79, 0x39, 0x95, 0x42, 0xEC, 0xF7, 0xEB, 0xBF, 0xFC, 0x7C, 0xDF, 0x75, 0xD7, 0xDD, 0xBA, 0xAE, - 0x0B, 0x36, 0xCE, 0x06, 0x41, 0x3E, 0x5E, 0xCD, 0xF1, 0xD8, 0x05, 0x1F, 0x20, 0x21, 0x2F, 0xE7, - 0x4E, 0x72, 0x7E, 0xEE, 0x06, 0xC6, 0x48, 0x5D, 0xCA, 0x4B, 0x37, 0xBD, 0x7B, 0x3C, 0xBC, 0x9C, - 0x86, 0x73, 0x3F, 0x33, 0x41, 0x11, 0x84, 0xEB, 0x55, 0xBB, 0xD9, 0xD6, 0x97, 0xEB, 0x80, 0x31, - 0x46, 0x04, 0x52, 0x08, 0x32, 0x04, 0xCE, 0x87, 0x69, 0x54, 0x18, 0x13, 0xCE, 0x28, 0xA2, 0x78, - 0xEC, 0xC7, 0x42, 0xB2, 0xA6, 0xAD, 0xBA, 0xD3, 0xD8, 0xAC, 0x1B, 0x17, 0xE2, 0x32, 0x2F, 0x75, - 0x29, 0x33, 0x04, 0x19, 0x40, 0xBD, 0x58, 0x42, 0xA9, 0x77, 0x69, 0x9E, 0xF5, 0xAC, 0xD4, 0xDD, - 0x61, 0xF3, 0xF8, 0xE6, 0x40, 0x30, 0x76, 0xDE, 0xC9, 0x92, 0x61, 0x88, 0x42, 0x4A, 0x29, 0xC5, - 0x9C, 0x72, 0x0A, 0xF1, 0xD3, 0x97, 0xA7, 0x45, 0x39, 0x59, 0x08, 0xEF, 0xE3, 0x38, 0xA8, 0xAA, - 0x14, 0xB7, 0x87, 0xB5, 0x5A, 0x4C, 0x51, 0x70, 0x00, 0x40, 0xF0, 0x49, 0xCA, 0x42, 0x08, 0x52, - 0x57, 0xA5, 0xD6, 0xF6, 0xFD, 0xE7, 0x97, 0xEB, 0xB0, 0x74, 0xFD, 0xB0, 0xDF, 0xB6, 0x82, 0x92, - 0x90, 0xA1, 0xF5, 0x00, 0x13, 0xE6, 0x9D, 0x2B, 0x8A, 0x32, 0xE5, 0x5C, 0xD2, 0x64, 0xAD, 0x1F, - 0xE6, 0x49, 0x0A, 0xD2, 0xAE, 0x9A, 0xE7, 0x97, 0x1E, 0x60, 0x08, 0xA2, 0xAF, 0xCB, 0x72, 0x9C, - 0x4D, 0x02, 0x30, 0xE7, 0x44, 0x30, 0x09, 0xC1, 0x31, 0xC6, 0xB5, 0xD6, 0x94, 0xA0, 0xA6, 0x2A, - 0xB5, 0xD1, 0x84, 0xE0, 0x14, 0x63, 0xCE, 0xD9, 0xFA, 0x10, 0x33, 0x40, 0x88, 0x33, 0xC6, 0xBD, - 0x37, 0x8C, 0xA2, 0x42, 0xF2, 0x45, 0x19, 0x4A, 0xE5, 0x34, 0x4D, 0x55, 0xC1, 0x1E, 0x0E, 0x37, - 0x8C, 0x52, 0x4A, 0xD0, 0xE9, 0x72, 0x05, 0x10, 0x72, 0x46, 0xAD, 0x73, 0x29, 0x67, 0xC1, 0x58, - 0xCE, 0x69, 0xBB, 0x2E, 0x73, 0xCA, 0x75, 0xDD, 0x68, 0x6D, 0x01, 0x04, 0x82, 0x51, 0x42, 0x80, - 0xF3, 0x7E, 0x56, 0xCB, 0xD3, 0xCB, 0x79, 0x9C, 0x2D, 0x21, 0x68, 0xB3, 0x6B, 0xBB, 0x6E, 0xC2, - 0x18, 0x71, 0x4E, 0x9D, 0xF5, 0xDE, 0x27, 0x88, 0x68, 0x06, 0x89, 0x89, 0xBA, 0x59, 0xDF, 0xDC, - 0xDD, 0x3F, 0x0E, 0xDD, 0xB5, 0x7F, 0xF9, 0xD7, 0xC3, 0xED, 0x1D, 0x65, 0x75, 0x05, 0x9E, 0x4C, - 0xBC, 0xCE, 0x01, 0x8F, 0xD7, 0x28, 0x05, 0x69, 0x1B, 0xD1, 0x56, 0x92, 0x73, 0xC6, 0x68, 0x91, - 0x92, 0x82, 0x28, 0x97, 0xE5, 0x8D, 0x0B, 0x13, 0x00, 0x65, 0x34, 0x21, 0x44, 0x8D, 0x91, 0x3A, - 0x0F, 0xEE, 0x74, 0xD1, 0x8F, 0x37, 0xE2, 0xA7, 0x3F, 0xFC, 0xF0, 0xE5, 0x69, 0xFC, 0xF0, 0xF2, - 0xF5, 0xE3, 0x93, 0x75, 0x36, 0x34, 0xA5, 0x90, 0xB2, 0x2A, 0x04, 0xDD, 0x6D, 0x57, 0xC1, 0x07, - 0x8C, 0xB1, 0xE4, 0xB4, 0xAE, 0xE4, 0xE5, 0xDA, 0x2F, 0x8B, 0x32, 0xCE, 0x85, 0x08, 0x19, 0xE3, - 0x1F, 0x3F, 0x1F, 0xD7, 0xAB, 0xB6, 0x9F, 0x26, 0x21, 0xE5, 0x76, 0x55, 0x34, 0x25, 0x99, 0xB4, - 0xED, 0xC6, 0x9E, 0x61, 0x08, 0x11, 0x49, 0x19, 0x0D, 0x93, 0xA3, 0x54, 0x2C, 0xB3, 0xA9, 0x2A, - 0x71, 0x77, 0xB7, 0x8B, 0xDE, 0x31, 0x8E, 0x2B, 0xC9, 0x09, 0xC0, 0xDD, 0x75, 0x9C, 0xE6, 0x05, - 0x12, 0x7C, 0xBE, 0x5E, 0xD6, 0xAB, 0x42, 0x72, 0xE1, 0x6C, 0xDC, 0x6E, 0x9A, 0xBB, 0x9B, 0xDD, - 0xC7, 0x8F, 0xCF, 0x98, 0xD2, 0xB6, 0x69, 0x97, 0xC5, 0xA4, 0x18, 0xA2, 0x8F, 0x6D, 0x53, 0x63, - 0x02, 0x95, 0xB6, 0x84, 0x82, 0xF5, 0xAA, 0x64, 0x94, 0x2E, 0xDA, 0x64, 0x08, 0x38, 0x47, 0x20, - 0x67, 0x90, 0xD1, 0xA4, 0x6C, 0x5D, 0x96, 0x5A, 0x2D, 0x75, 0x59, 0xC9, 0xAA, 0xD0, 0xD6, 0xCD, - 0x4A, 0x3D, 0x3D, 0x5F, 0xDE, 0x7F, 0x78, 0x65, 0x04, 0x15, 0x42, 0xC4, 0x84, 0x16, 0x13, 0x0E, - 0xFB, 0xCD, 0xE9, 0x7C, 0xEA, 0xC7, 0xA9, 0xAE, 0x2A, 0xCE, 0x49, 0xCE, 0x59, 0xDB, 0x00, 0x20, - 0x04, 0x20, 0x75, 0xD7, 0x81, 0x32, 0xCA, 0x19, 0x2D, 0x38, 0xF7, 0xC1, 0xED, 0x0F, 0x2D, 0x25, - 0x78, 0x99, 0x16, 0xEF, 0xA2, 0x94, 0x45, 0x0C, 0xBE, 0xE4, 0x58, 0x19, 0x8F, 0x09, 0x29, 0x0B, - 0xC1, 0x29, 0xF2, 0xCE, 0x5E, 0x87, 0x21, 0x02, 0x28, 0x05, 0x87, 0x10, 0x46, 0x17, 0x00, 0x04, - 0x9C, 0x53, 0x26, 0xF9, 0x30, 0x2D, 0x45, 0xD1, 0xDE, 0xAE, 0x1B, 0x8C, 0xC9, 0xB8, 0x2C, 0x35, - 0x47, 0xDD, 0x68, 0xBF, 0x9E, 0x15, 0x4E, 0xEA, 0x4F, 0xDF, 0xBF, 0x09, 0x31, 0x74, 0xE3, 0x70, - 0xBC, 0x2C, 0x65, 0x21, 0xA5, 0xE4, 0xDD, 0xB4, 0x7C, 0xF3, 0x87, 0xF1, 0xFF, 0xFE, 0x5F, 0xFE, - 0x3A, 0x4C, 0xF6, 0x3C, 0xCC, 0xBF, 0xBE, 0xFF, 0xE2, 0x42, 0xBA, 0xF4, 0xD3, 0xCB, 0xF1, 0x9C, - 0x40, 0xBE, 0x0E, 0xD3, 0xD0, 0x8F, 0xB3, 0x56, 0xBF, 0x7F, 0xF9, 0x5A, 0xCA, 0xB2, 0x2C, 0x04, - 0xA5, 0x54, 0x2D, 0xF6, 0xDA, 0x4F, 0xDA, 0x99, 0x1C, 0x43, 0xDD, 0x36, 0xA2, 0xA8, 0x28, 0x61, - 0x4D, 0x51, 0x79, 0xED, 0x82, 0x77, 0x7A, 0x54, 0x66, 0xB2, 0x95, 0x10, 0x1C, 0xE3, 0x60, 0xBC, - 0x60, 0x1C, 0x02, 0xB4, 0x5D, 0xD5, 0x0F, 0x0F, 0xBB, 0x76, 0x23, 0xF7, 0xFB, 0x76, 0xBF, 0x6F, - 0x09, 0x23, 0xFB, 0xDB, 0xCD, 0xFE, 0x66, 0x05, 0x41, 0xE4, 0x05, 0x59, 0x94, 0x1A, 0xA6, 0x89, - 0x20, 0xE8, 0x63, 0x26, 0x84, 0xEC, 0xD6, 0xAB, 0xFD, 0x66, 0xF3, 0x78, 0xD7, 0x80, 0x6C, 0x19, - 0x05, 0x45, 0x41, 0xC6, 0x49, 0x9F, 0xCF, 0x3D, 0x86, 0x80, 0x12, 0x1C, 0x02, 0xAA, 0xCA, 0x52, - 0x96, 0x05, 0x25, 0xEC, 0xCB, 0x97, 0xEB, 0xE7, 0x8F, 0x67, 0xCE, 0x48, 0x8E, 0x20, 0xBA, 0x48, - 0x31, 0xE1, 0x82, 0xA5, 0x0C, 0x7E, 0xFD, 0xF5, 0xE9, 0xB0, 0x5D, 0x31, 0x8A, 0xCE, 0xDD, 0x82, - 0x10, 0x8C, 0x21, 0x84, 0x10, 0x76, 0xDB, 0x75, 0x55, 0x17, 0xDD, 0xF8, 0xEA, 0xBD, 0xF3, 0xC1, - 0xC5, 0xE0, 0xEA, 0x52, 0x96, 0x05, 0x8F, 0xD1, 0x97, 0x92, 0xE5, 0x90, 0x53, 0x4C, 0xD3, 0xAC, - 0x9D, 0x0F, 0x00, 0x82, 0xFD, 0x6E, 0x9D, 0x52, 0x76, 0x2E, 0x0C, 0x83, 0x72, 0xD6, 0x4A, 0xC1, - 0x4F, 0xDD, 0xF4, 0xD7, 0x9F, 0xEE, 0xF7, 0xAB, 0xBA, 0x1F, 0x15, 0x13, 0xFC, 0x76, 0x55, 0xAE, - 0xEB, 0xEA, 0x76, 0x5F, 0x23, 0x90, 0x5F, 0x5E, 0xAF, 0x7D, 0xBF, 0xBC, 0xBC, 0xAA, 0x97, 0xAF, - 0xA3, 0xD1, 0xEE, 0xB5, 0xEB, 0x27, 0x35, 0xC6, 0x0C, 0x8B, 0xB2, 0x46, 0x28, 0x07, 0xA7, 0x52, - 0x06, 0xEB, 0xBA, 0x2E, 0x0B, 0x19, 0x42, 0x74, 0x21, 0x76, 0xB3, 0x5E, 0xB4, 0xB1, 0xCE, 0xBF, - 0x7B, 0xBC, 0x1B, 0xC6, 0x65, 0xE8, 0x07, 0xC6, 0xB0, 0xD1, 0x06, 0x13, 0x94, 0x72, 0x86, 0x00, - 0xA4, 0x94, 0x29, 0x67, 0xC3, 0x30, 0x83, 0x9C, 0x01, 0x00, 0x8C, 0x13, 0x4A, 0xB0, 0x37, 0x9E, - 0x50, 0x72, 0xB9, 0xF4, 0xC6, 0x3A, 0x88, 0x00, 0x04, 0x20, 0x43, 0x38, 0x8D, 0x4B, 0xCA, 0x39, - 0xC6, 0xE4, 0xAC, 0xAF, 0xDB, 0xA2, 0x90, 0x64, 0xBD, 0x96, 0x39, 0x03, 0xEF, 0xD3, 0x34, 0x2A, - 0xAD, 0xAC, 0x75, 0xD6, 0xFB, 0xA0, 0x66, 0x6B, 0x8C, 0x23, 0x8C, 0x12, 0x46, 0xB5, 0x32, 0xC3, - 0xA8, 0xAE, 0xDD, 0x42, 0x28, 0x69, 0x9A, 0x0A, 0x02, 0xA8, 0x9D, 0xC3, 0x98, 0x58, 0xEB, 0x01, - 0xC0, 0x31, 0x81, 0x14, 0xF3, 0xEB, 0xF1, 0xEA, 0x43, 0xDC, 0xAC, 0x9A, 0x42, 0xF2, 0x6B, 0x3F, - 0xE5, 0x94, 0x8D, 0x71, 0x8C, 0x49, 0xCA, 0xB8, 0xD6, 0x1A, 0x82, 0x9C, 0x21, 0x40, 0x10, 0x30, - 0x94, 0xBB, 0x61, 0xF4, 0x21, 0x28, 0xA5, 0x43, 0xC8, 0x31, 0xE5, 0x9C, 0x62, 0x51, 0xF0, 0xA2, - 0x28, 0x21, 0x11, 0x4A, 0xCD, 0x10, 0xC2, 0x0C, 0x80, 0x35, 0x06, 0x42, 0x10, 0x53, 0xCC, 0x29, - 0x21, 0x88, 0x9D, 0xB5, 0x19, 0x66, 0x65, 0x9C, 0xD2, 0x8E, 0x52, 0x01, 0x21, 0x01, 0x39, 0x63, - 0x42, 0x11, 0x44, 0x8C, 0x7E, 0x5B, 0xE9, 0xE5, 0x5A, 0x1B, 0x29, 0x58, 0x29, 0x25, 0xA6, 0x42, - 0xC8, 0xEA, 0xF3, 0xD7, 0x2F, 0xB3, 0x52, 0x21, 0xC6, 0x59, 0xDB, 0xEB, 0x30, 0x29, 0x6D, 0x84, - 0x90, 0xC7, 0xEB, 0x60, 0x5C, 0x48, 0x19, 0x0D, 0xE3, 0xA4, 0xB5, 0x45, 0x18, 0x5D, 0xBB, 0x71, - 0x18, 0x97, 0x6F, 0x60, 0xFA, 0xF1, 0x3A, 0x1A, 0x1F, 0x20, 0x84, 0xCE, 0x85, 0x0C, 0xA0, 0x60, - 0x94, 0x52, 0x52, 0xD6, 0x7C, 0x9E, 0x8D, 0xB6, 0x01, 0x42, 0x50, 0xD5, 0x2B, 0xCE, 0xAB, 0xA1, - 0xBF, 0x2E, 0xC3, 0xC7, 0xC7, 0x3B, 0x81, 0x11, 0xC7, 0xF6, 0xC9, 0x86, 0x4E, 0x7B, 0x71, 0xEA, - 0xC1, 0xCB, 0x79, 0x11, 0x1C, 0x08, 0x01, 0xBF, 0xBC, 0x5E, 0xFB, 0x71, 0x99, 0x8C, 0x7D, 0x3A, - 0xBD, 0xC4, 0x9C, 0x5F, 0xCE, 0xC7, 0x4F, 0xCF, 0x27, 0x41, 0xA9, 0x31, 0xC3, 0x38, 0x6B, 0x46, - 0x4B, 0xC1, 0xA1, 0x2C, 0x73, 0x21, 0x57, 0xD1, 0x51, 0x84, 0x5C, 0x51, 0xE2, 0x77, 0x6F, 0x6F, - 0xDF, 0x1C, 0xE4, 0xF7, 0x77, 0xEB, 0xF5, 0xBA, 0x7D, 0x73, 0xBF, 0x95, 0x94, 0xDF, 0xEC, 0x5B, - 0x0C, 0x32, 0xA7, 0x18, 0x81, 0x1C, 0xFC, 0xC2, 0x45, 0x02, 0x30, 0x3E, 0xDE, 0xED, 0x1F, 0x1F, - 0xF6, 0x55, 0x45, 0x0F, 0xAB, 0xFA, 0xC7, 0x77, 0x77, 0xBB, 0x4D, 0xFD, 0x78, 0xB3, 0x8D, 0x01, - 0x71, 0xC1, 0x01, 0x88, 0x6A, 0x54, 0x04, 0xE1, 0x61, 0x74, 0x82, 0xD2, 0x1C, 0x6C, 0x21, 0xF0, - 0x62, 0x82, 0xD1, 0xCE, 0x1A, 0x3B, 0x0C, 0xB3, 0x75, 0x21, 0x23, 0x08, 0x39, 0xE5, 0x05, 0x87, - 0xD9, 0xDF, 0x3D, 0x1C, 0x36, 0xDB, 0x75, 0x55, 0x17, 0x6F, 0xDF, 0xDE, 0x96, 0x52, 0x20, 0x80, - 0x64, 0x59, 0x59, 0x1B, 0x4E, 0xE7, 0x6E, 0x98, 0x26, 0x67, 0x6C, 0xDB, 0x96, 0x31, 0xA5, 0xAE, - 0x9F, 0x3F, 0x3E, 0x1D, 0x5D, 0xF0, 0xFB, 0x4D, 0xF3, 0xE5, 0xE9, 0x05, 0x33, 0xCC, 0x28, 0x3B, - 0x5E, 0xFB, 0x61, 0x52, 0x2F, 0xA7, 0x2B, 0xA7, 0x1C, 0xE6, 0x14, 0x43, 0xB2, 0x2E, 0x12, 0x4A, - 0x8D, 0xB5, 0xB3, 0xD2, 0x45, 0x21, 0xDB, 0xB6, 0x3A, 0x5D, 0x7A, 0x26, 0x59, 0xCA, 0x30, 0x02, - 0xB4, 0xA8, 0x25, 0xE5, 0xB8, 0x6A, 0x6B, 0x00, 0x81, 0xD2, 0x56, 0x1B, 0x97, 0x12, 0x48, 0x31, - 0x95, 0x25, 0x4F, 0x11, 0xC4, 0x18, 0x29, 0xC6, 0x84, 0x90, 0x69, 0x9A, 0x0B, 0xC9, 0x29, 0x46, - 0x3E, 0x64, 0xE3, 0xC2, 0xF9, 0x3A, 0x0D, 0xD3, 0x92, 0x01, 0xF6, 0x21, 0xF8, 0x14, 0xC6, 0x69, - 0xC9, 0x08, 0x26, 0x88, 0x74, 0x88, 0x36, 0x26, 0x00, 0x91, 0x75, 0xCE, 0x3A, 0x8B, 0x28, 0x24, - 0x84, 0x74, 0x93, 0x32, 0x2E, 0x41, 0x04, 0x11, 0x82, 0xF3, 0xA2, 0x39, 0x45, 0xE3, 0x30, 0x7E, - 0xF8, 0x72, 0xAC, 0x0A, 0x7C, 0x77, 0xD8, 0x71, 0x2E, 0xFF, 0xFE, 0xFE, 0x8B, 0xF6, 0x20, 0x67, - 0x1C, 0x62, 0x9C, 0x94, 0xF6, 0x3E, 0x2C, 0xDA, 0x12, 0x8C, 0xF1, 0x61, 0xB7, 0x1E, 0x46, 0xF5, - 0xFE, 0xD3, 0xD3, 0xD7, 0xD7, 0xF3, 0xAC, 0x4C, 0xC8, 0xE8, 0xF3, 0xF3, 0x29, 0x24, 0x00, 0x20, - 0x94, 0x82, 0x33, 0x46, 0x56, 0xEB, 0xA6, 0x28, 0xE5, 0x38, 0x0D, 0xCB, 0xB2, 0x8C, 0x8B, 0x0A, - 0x29, 0x32, 0x86, 0xBE, 0xF1, 0xB0, 0x08, 0x61, 0x1F, 0x00, 0xC8, 0x84, 0x12, 0xD6, 0x54, 0xD5, - 0x76, 0xDB, 0x60, 0x84, 0x19, 0x26, 0x20, 0x26, 0x08, 0xA1, 0xD1, 0x6E, 0x9C, 0xEC, 0x30, 0xDB, - 0x71, 0x5C, 0x7C, 0x06, 0xC6, 0xBA, 0x45, 0xE9, 0xE7, 0xCF, 0xA7, 0xF1, 0xA2, 0xAC, 0xCB, 0x21, - 0x01, 0xED, 0xA3, 0x28, 0x24, 0xA3, 0x08, 0x40, 0xF0, 0xEE, 0xCD, 0xFD, 0x5F, 0x7F, 0xFE, 0xE1, - 0xF6, 0x66, 0xCD, 0x49, 0xAA, 0x6B, 0x9E, 0x73, 0x16, 0x42, 0x20, 0x4C, 0x56, 0x9B, 0xB6, 0x2C, - 0xEA, 0x9C, 0xC1, 0xCD, 0xDD, 0x81, 0x30, 0x36, 0x2D, 0xF6, 0xE5, 0xE5, 0x1A, 0x53, 0x3C, 0x5F, - 0xC6, 0xF5, 0xBA, 0xDE, 0xEE, 0xDA, 0xC5, 0xDA, 0x0C, 0x91, 0xB1, 0x1E, 0x22, 0xE8, 0x9D, 0x0B, - 0x31, 0xBD, 0x9E, 0x3A, 0x40, 0xF0, 0x34, 0x8C, 0x00, 0xC2, 0x0C, 0x61, 0x53, 0x95, 0x84, 0x44, - 0x17, 0xEC, 0x37, 0x6D, 0x26, 0xA5, 0x44, 0x29, 0xFE, 0xF1, 0xDD, 0xDD, 0xD7, 0x97, 0x33, 0x45, - 0x19, 0xE6, 0x8C, 0x29, 0xDA, 0xEF, 0xDB, 0xAA, 0x96, 0xDA, 0x2C, 0x0F, 0x37, 0xBB, 0x10, 0xE2, - 0xE5, 0x7A, 0x19, 0xC7, 0x85, 0x60, 0xB4, 0x69, 0x38, 0x93, 0xEC, 0xC7, 0x1F, 0xEE, 0x9A, 0x92, - 0x0B, 0xC1, 0xD7, 0xEB, 0x6A, 0x9C, 0xFB, 0x6D, 0x53, 0x2B, 0x13, 0x21, 0xE2, 0x7F, 0x7F, 0xFF, - 0xF5, 0xC3, 0xD7, 0xF3, 0x38, 0xA9, 0x98, 0x51, 0x37, 0xCE, 0x1F, 0x9F, 0x9E, 0x3F, 0xBD, 0x74, - 0xA3, 0xB6, 0x75, 0x5D, 0x5B, 0x6F, 0x94, 0xD1, 0xD3, 0x62, 0x18, 0xE7, 0xD6, 0xF9, 0x79, 0x59, - 0x76, 0x9B, 0xD5, 0x64, 0x1C, 0xC2, 0xB8, 0x1F, 0xA6, 0xBB, 0xBB, 0x83, 0xD1, 0xEE, 0xF5, 0x7C, - 0xDE, 0x6C, 0x1B, 0x1F, 0x42, 0xCE, 0x29, 0x65, 0x18, 0x43, 0x36, 0xDA, 0xAC, 0xD6, 0x95, 0xD6, - 0xA6, 0x6C, 0x4A, 0x21, 0x59, 0x59, 0x17, 0x29, 0xA5, 0x14, 0x93, 0xF3, 0x3E, 0x85, 0xE4, 0x63, - 0x0A, 0x21, 0x72, 0x4E, 0x8D, 0xB6, 0x00, 0xE4, 0x65, 0x36, 0xCE, 0x85, 0x71, 0x5C, 0x0A, 0x41, - 0x1F, 0xEE, 0x57, 0x87, 0xDB, 0xF6, 0xB0, 0x6F, 0x28, 0x86, 0x4D, 0x23, 0x8D, 0xB1, 0x21, 0x44, - 0x46, 0xC9, 0xC7, 0x4F, 0xC7, 0x18, 0x13, 0x63, 0xD4, 0x1A, 0x13, 0x42, 0xD8, 0xEE, 0xD7, 0xCE, - 0xC7, 0x94, 0xF2, 0x6E, 0xBB, 0xB6, 0xC6, 0x4D, 0xB3, 0xC2, 0x14, 0x1B, 0xE3, 0x7C, 0x48, 0x00, - 0x43, 0x6B, 0x83, 0x8F, 0x89, 0x10, 0x92, 0x33, 0x50, 0x4A, 0x37, 0x4D, 0x21, 0x05, 0x3F, 0x5D, - 0x07, 0x84, 0x60, 0xCE, 0x49, 0xCA, 0x62, 0x5E, 0x66, 0x6B, 0x15, 0xC6, 0xA8, 0x29, 0x28, 0xC2, - 0x48, 0x19, 0xA3, 0x8D, 0x0D, 0x29, 0x69, 0x6B, 0xBD, 0xF7, 0xD6, 0x39, 0x8A, 0x71, 0x51, 0xD6, - 0xD3, 0x34, 0x3B, 0xAB, 0x39, 0x97, 0x10, 0x02, 0x90, 0x53, 0x88, 0x11, 0x42, 0x48, 0x30, 0xF6, - 0x31, 0xE6, 0x1C, 0x33, 0x00, 0x19, 0xE2, 0xB2, 0x5A, 0xA5, 0x94, 0x21, 0x84, 0x08, 0x61, 0xC6, - 0x05, 0x21, 0xC4, 0x59, 0xEB, 0x43, 0x4A, 0x10, 0x21, 0x04, 0x56, 0xB5, 0x4C, 0x19, 0xAF, 0xB7, - 0xB7, 0xC3, 0x70, 0x2D, 0x04, 0xBB, 0xDD, 0xAD, 0x53, 0x8A, 0x4F, 0xC7, 0x73, 0x4C, 0x29, 0xA4, - 0xD4, 0x34, 0x6B, 0xA5, 0x15, 0x00, 0x80, 0x10, 0x4C, 0x09, 0x1E, 0xA6, 0xE5, 0xDB, 0x59, 0x2D, - 0x8B, 0xC2, 0xD8, 0xE0, 0xBD, 0x5F, 0x8C, 0xCD, 0x00, 0x40, 0x84, 0x18, 0xC1, 0x82, 0xD1, 0x79, - 0x31, 0x14, 0xE3, 0x7E, 0x50, 0x39, 0xE5, 0x14, 0x23, 0x26, 0xB8, 0x2A, 0x1B, 0x6B, 0xBC, 0xA4, - 0x79, 0xE8, 0x5F, 0x21, 0x4A, 0xDE, 0x99, 0x7E, 0x72, 0x2E, 0x96, 0x21, 0xA1, 0x59, 0xEB, 0xE0, - 0x23, 0xC6, 0xF0, 0x3C, 0xD8, 0xD3, 0xC5, 0x2B, 0x03, 0x5E, 0x4F, 0xD3, 0xEB, 0xD9, 0x53, 0x02, - 0x86, 0xC9, 0x5E, 0xBA, 0x70, 0xEE, 0x47, 0xE3, 0xF4, 0xCB, 0x69, 0xD6, 0xDE, 0x09, 0x9A, 0x97, - 0xC5, 0x0A, 0xBE, 0xFA, 0xFA, 0x72, 0x89, 0x04, 0x5B, 0x17, 0xBD, 0x27, 0x97, 0x6E, 0x1E, 0x86, - 0x79, 0x9C, 0x96, 0x53, 0x3F, 0xC7, 0x94, 0xA3, 0xCB, 0xD7, 0xEE, 0xF2, 0xEB, 0xC7, 0x97, 0x98, - 0xE1, 0xA4, 0xD4, 0xEB, 0x75, 0xBA, 0x3D, 0xEC, 0xC6, 0xD1, 0x7C, 0xFC, 0x7C, 0xBC, 0xDB, 0xD7, - 0x21, 0xE5, 0x6B, 0xA7, 0x39, 0x13, 0xDD, 0xE0, 0x16, 0xA5, 0x36, 0xEB, 0x02, 0xE7, 0xFC, 0xFD, - 0x9B, 0xB7, 0x87, 0xC3, 0xCD, 0x66, 0xDD, 0x6C, 0x77, 0xED, 0x30, 0xCC, 0x2E, 0x38, 0x08, 0x53, - 0x21, 0xC4, 0x38, 0x1B, 0x00, 0x21, 0x40, 0xD8, 0x19, 0x4F, 0x39, 0x4D, 0xC1, 0x57, 0x45, 0x25, - 0x45, 0x05, 0x11, 0xE1, 0x82, 0x3B, 0x1F, 0x12, 0xC8, 0x77, 0x37, 0x1B, 0x97, 0x12, 0x13, 0x54, - 0x14, 0x5C, 0x08, 0xCE, 0x38, 0xED, 0xBB, 0xE1, 0xD2, 0x8D, 0xA7, 0x6E, 0x08, 0xD1, 0x3F, 0xDC, - 0x6D, 0xAA, 0x42, 0x9C, 0xAF, 0x03, 0xC4, 0x70, 0x98, 0x96, 0xCB, 0x75, 0xB4, 0xCA, 0x37, 0x65, - 0xB1, 0xAA, 0xEB, 0x9C, 0x41, 0x3F, 0x2D, 0x31, 0xE5, 0xCF, 0x4F, 0xA7, 0x41, 0xE9, 0xD3, 0x79, - 0x9A, 0x95, 0x49, 0x00, 0xD4, 0x75, 0x91, 0x73, 0x56, 0xDA, 0x14, 0xFB, 0x09, 0x8A, 0x00, 0x00, - 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x18, 0x67, 0x66, 0x35, 0x3B, 0xE7, 0x57, 0xAB, 0xAA, 0xAE, - 0x4B, 0xE7, 0xFC, 0xA5, 0x1B, 0x42, 0xF0, 0x00, 0x82, 0xF5, 0xBA, 0xF4, 0x21, 0x21, 0x80, 0xCA, - 0x42, 0xCC, 0x8B, 0xDA, 0x6E, 0xDB, 0x18, 0xC2, 0xF1, 0xD8, 0xC7, 0x0C, 0x28, 0xA3, 0xA7, 0xCB, - 0xB5, 0x28, 0x64, 0x4C, 0xC1, 0x85, 0x20, 0x4A, 0xB6, 0x3B, 0x6C, 0x79, 0x21, 0x98, 0xE0, 0x37, - 0x87, 0x6D, 0x5D, 0x16, 0x65, 0x59, 0x96, 0x65, 0x49, 0x05, 0x3F, 0x5D, 0x06, 0x42, 0xA8, 0xB1, - 0x8E, 0x33, 0xAE, 0xB5, 0x31, 0xDA, 0x50, 0x84, 0x9D, 0x8B, 0xD6, 0x04, 0x2E, 0x84, 0x60, 0x9C, - 0x51, 0x76, 0xBA, 0x4E, 0x2F, 0xA7, 0x73, 0xDB, 0x36, 0x29, 0x84, 0x94, 0x53, 0x5D, 0x0B, 0xE3, - 0x03, 0x21, 0x38, 0xC5, 0x84, 0xDB, 0xB2, 0x9E, 0x95, 0xE9, 0x26, 0x45, 0xB9, 0xC8, 0x10, 0x66, - 0x00, 0xC6, 0x69, 0x68, 0x57, 0x8D, 0x5A, 0xB4, 0xB5, 0xD6, 0x47, 0x4F, 0x09, 0x89, 0x31, 0x5A, - 0x6B, 0x11, 0xC6, 0xC6, 0x7A, 0x98, 0xC1, 0xCD, 0xBE, 0x81, 0x08, 0x38, 0xEB, 0x01, 0xC8, 0xDD, - 0x30, 0x7E, 0xF8, 0xF2, 0xF2, 0x74, 0x7C, 0x55, 0x66, 0xBE, 0x76, 0x83, 0xB5, 0x21, 0xF8, 0x9C, - 0x00, 0x9C, 0x16, 0xF3, 0xF2, 0x32, 0x84, 0x10, 0xA6, 0x59, 0x19, 0xED, 0x7D, 0xCA, 0xDA, 0xB8, - 0x9C, 0xE0, 0x3C, 0xCD, 0x00, 0x00, 0x6D, 0x93, 0x77, 0x81, 0x0B, 0x5A, 0x16, 0xFC, 0xF1, 0xF1, - 0xAE, 0x59, 0x6D, 0x62, 0xC8, 0x39, 0x26, 0x00, 0x72, 0x53, 0x56, 0x98, 0x50, 0x59, 0xC8, 0x69, - 0x32, 0x2E, 0x04, 0xAD, 0x74, 0x55, 0x49, 0x4C, 0xA8, 0xF3, 0xDE, 0x07, 0xA7, 0xB4, 0x02, 0x39, - 0xDD, 0x3F, 0xEC, 0x05, 0xA7, 0x84, 0xC1, 0x6B, 0x37, 0x0C, 0xDD, 0xEC, 0xBD, 0x8F, 0x31, 0x86, - 0x10, 0x01, 0x00, 0x8C, 0x91, 0x7E, 0x9C, 0xC6, 0x41, 0x51, 0x42, 0x94, 0x52, 0x31, 0x86, 0x77, - 0x6F, 0xEE, 0x94, 0x35, 0x93, 0x52, 0x39, 0x67, 0x08, 0x53, 0x25, 0xF1, 0x77, 0x77, 0x6B, 0xA3, - 0x67, 0x4C, 0xD0, 0x5F, 0x7F, 0xFC, 0xEE, 0xDD, 0xE3, 0x2D, 0x40, 0xA0, 0x6E, 0xCA, 0x9B, 0xC3, - 0x7A, 0xBB, 0x2E, 0xDF, 0xBE, 0x3D, 0x20, 0xC2, 0xF6, 0xFB, 0xF5, 0xFE, 0xB0, 0xAD, 0xEB, 0xB2, - 0x28, 0xC4, 0xAA, 0x29, 0xF4, 0x64, 0xE7, 0x29, 0xFA, 0xE0, 0x43, 0xF2, 0x31, 0x44, 0x1F, 0xD3, - 0xA4, 0x86, 0x6E, 0x9A, 0x23, 0x80, 0xCE, 0x85, 0xBB, 0xBB, 0x83, 0x0F, 0xEE, 0xDC, 0xF5, 0xC3, - 0x62, 0x84, 0x14, 0x00, 0xA2, 0x9C, 0xFC, 0x30, 0x8E, 0x2E, 0x84, 0x42, 0x16, 0x00, 0xD3, 0x7E, - 0x18, 0x0F, 0xDB, 0x86, 0x32, 0xF6, 0x7A, 0xBE, 0x96, 0x52, 0x52, 0x82, 0x37, 0xAB, 0xF6, 0xEF, - 0xEF, 0x3F, 0xDD, 0x1E, 0xB6, 0x8C, 0xD1, 0xCB, 0x79, 0xF4, 0x3E, 0x32, 0xC6, 0x32, 0xC8, 0xD6, - 0x38, 0x1F, 0x22, 0x00, 0x80, 0x60, 0x04, 0x31, 0xF4, 0xC6, 0xF8, 0x10, 0x97, 0x59, 0xE7, 0x0C, - 0xB4, 0x71, 0xDE, 0xBB, 0xDD, 0xB6, 0xC6, 0x28, 0x4B, 0x4E, 0x60, 0x4C, 0x95, 0xA4, 0xEB, 0x9A, - 0xDE, 0x6E, 0xDB, 0xBB, 0x7D, 0x43, 0x28, 0x20, 0x14, 0x07, 0x1F, 0x31, 0xC9, 0x8C, 0x41, 0x59, - 0x32, 0x26, 0x28, 0x21, 0x78, 0xBB, 0xAD, 0xB8, 0x60, 0x10, 0xA0, 0xA2, 0x28, 0x28, 0x25, 0x94, - 0x52, 0x21, 0xB8, 0x94, 0xEC, 0xF9, 0xEB, 0x89, 0x10, 0x9C, 0x33, 0x48, 0x29, 0xA7, 0x94, 0x33, - 0x00, 0x29, 0xA7, 0x14, 0x73, 0x08, 0x01, 0x62, 0xB8, 0x2C, 0xAA, 0xAC, 0xAA, 0x10, 0x22, 0x42, - 0x19, 0x82, 0x84, 0x40, 0xCE, 0x31, 0xD6, 0x4D, 0x6D, 0xBC, 0x63, 0x94, 0xD6, 0x55, 0x99, 0x53, - 0x82, 0x18, 0x2D, 0x5A, 0x43, 0x08, 0xDB, 0xB6, 0x11, 0x82, 0x42, 0x04, 0x18, 0xA7, 0x9C, 0xD3, - 0x71, 0x1C, 0x87, 0x71, 0xC4, 0x18, 0x23, 0x08, 0xAC, 0x77, 0x21, 0x86, 0x94, 0x12, 0x04, 0x30, - 0xE6, 0x04, 0x21, 0x74, 0x3E, 0x38, 0x1F, 0x28, 0x15, 0x20, 0x27, 0x6B, 0x14, 0x21, 0x4C, 0x16, - 0xB5, 0x52, 0x33, 0x04, 0x29, 0x04, 0x47, 0x99, 0xD0, 0x5A, 0x97, 0x05, 0xC5, 0x10, 0x51, 0xCA, - 0x31, 0x46, 0xCB, 0x32, 0x2F, 0xCB, 0x2C, 0x19, 0xFF, 0x7A, 0x3C, 0x87, 0x98, 0x38, 0xE3, 0x10, - 0x82, 0x18, 0xA3, 0x0F, 0x5E, 0x0A, 0x56, 0x08, 0xB6, 0x28, 0x1D, 0x62, 0x38, 0x5E, 0x7B, 0x6B, - 0xE3, 0xA2, 0x0D, 0x00, 0x80, 0x12, 0xDC, 0x0F, 0x43, 0xBB, 0xAA, 0x63, 0x8C, 0x82, 0x73, 0x02, - 0x91, 0xF1, 0x61, 0x9C, 0x4D, 0x4C, 0x29, 0xC4, 0x9C, 0x40, 0xB6, 0xD6, 0x57, 0x55, 0xDB, 0x75, - 0x97, 0xF5, 0xF6, 0x9E, 0xD0, 0xE2, 0xF7, 0xDF, 0x3F, 0x4A, 0x2E, 0x57, 0xEB, 0x52, 0x2D, 0x97, - 0xD3, 0xB5, 0x77, 0x21, 0x53, 0x0A, 0x7D, 0xC8, 0xCB, 0x92, 0xBC, 0x07, 0x18, 0x61, 0xEF, 0x01, - 0xC1, 0xA0, 0x92, 0x84, 0x60, 0x7A, 0xBC, 0x68, 0xA3, 0xB3, 0xF7, 0x68, 0x5C, 0x62, 0x51, 0x96, - 0x42, 0x34, 0xDA, 0xE6, 0x6E, 0xB6, 0x9F, 0x5E, 0x2F, 0x4F, 0xAF, 0xCF, 0x31, 0x25, 0x8C, 0x99, - 0x0B, 0x5E, 0x96, 0xE2, 0xDA, 0x2F, 0xB3, 0x0D, 0xDB, 0x6D, 0xB3, 0x5E, 0x8B, 0xD7, 0xEB, 0x79, - 0xB3, 0x6F, 0x17, 0xAD, 0x7F, 0xFD, 0xF0, 0xBC, 0xDF, 0xDF, 0x72, 0x88, 0x97, 0x6F, 0x7D, 0xE1, - 0x94, 0x08, 0x25, 0x55, 0x25, 0x19, 0x95, 0xDD, 0xA4, 0x73, 0x36, 0x97, 0xEB, 0xAB, 0x77, 0x00, - 0xE0, 0xE2, 0xD3, 0xD3, 0x05, 0x64, 0x58, 0x96, 0x42, 0x16, 0xEC, 0xF9, 0xB5, 0x2F, 0x8B, 0x02, - 0xC4, 0xE4, 0x42, 0x30, 0xDA, 0x81, 0x0C, 0xA4, 0x60, 0x14, 0xA1, 0x9C, 0x50, 0x59, 0x54, 0xC6, - 0xDA, 0x65, 0x36, 0x39, 0xC1, 0xE7, 0xAF, 0x57, 0x8C, 0xB0, 0xD1, 0xFE, 0xD3, 0xD7, 0xEB, 0xB2, - 0x18, 0x4C, 0x19, 0x15, 0x54, 0xD6, 0x85, 0xAC, 0x24, 0xC0, 0xF0, 0xD3, 0xE7, 0xD7, 0xD5, 0xAA, - 0x2C, 0x38, 0xED, 0xC7, 0xB9, 0xEB, 0x67, 0xEF, 0xE3, 0x38, 0xEB, 0xF3, 0x75, 0x2A, 0x4A, 0xC1, - 0x28, 0x7E, 0x3E, 0x1E, 0x9F, 0x5E, 0x07, 0x6B, 0xC3, 0xD3, 0xA9, 0x9B, 0xB5, 0x63, 0x8C, 0x85, - 0x98, 0xB5, 0x75, 0x10, 0xC2, 0x18, 0x22, 0xE3, 0xCC, 0x85, 0xA0, 0x16, 0x43, 0x28, 0x89, 0x31, - 0x8D, 0xE3, 0xDC, 0x75, 0x23, 0x80, 0x08, 0xE4, 0x8C, 0x31, 0x8E, 0x31, 0xE5, 0x98, 0x53, 0x4A, - 0x3E, 0xC4, 0x94, 0x01, 0xC8, 0x30, 0x86, 0xF8, 0xAD, 0x25, 0x1D, 0x63, 0x8C, 0x31, 0xA6, 0xF8, - 0xCD, 0x01, 0xCB, 0xED, 0xAA, 0x12, 0x82, 0x05, 0x1F, 0x72, 0x4C, 0x6A, 0x36, 0xDD, 0x75, 0xC8, - 0x20, 0x6F, 0xDB, 0x4D, 0x2D, 0x18, 0x82, 0xA0, 0xAA, 0x8A, 0x18, 0x3C, 0xA7, 0x44, 0x6B, 0x7B, - 0xBC, 0x8C, 0x20, 0x67, 0xCE, 0xD0, 0xA8, 0xB5, 0xF7, 0x11, 0x61, 0x3C, 0x2B, 0xBD, 0x6A, 0x8B, - 0x0C, 0x81, 0xF7, 0x7E, 0xBB, 0xAA, 0x4A, 0xC9, 0xCB, 0x4A, 0x52, 0x46, 0xAA, 0xBA, 0xD8, 0xB4, - 0xAB, 0x10, 0x12, 0xBE, 0xDD, 0xEF, 0x7D, 0x0C, 0xC6, 0x7A, 0x6D, 0x2D, 0x63, 0x0C, 0x02, 0xE0, - 0x9D, 0x33, 0xD6, 0xCE, 0xF3, 0x52, 0x96, 0x22, 0xE6, 0xA4, 0x94, 0xC5, 0x88, 0x86, 0x10, 0xCB, - 0xB2, 0x20, 0x84, 0x38, 0xEF, 0xC6, 0x59, 0x75, 0xDD, 0x64, 0xBD, 0x33, 0xD6, 0x61, 0x0A, 0x79, - 0x81, 0x7D, 0x74, 0xD7, 0x6E, 0x20, 0x88, 0x38, 0x97, 0x4E, 0xD7, 0x69, 0xD1, 0xBE, 0x1B, 0xE6, - 0xCB, 0x30, 0xBE, 0x9E, 0x3B, 0x63, 0x1D, 0x22, 0xC4, 0xDA, 0x40, 0x28, 0x8D, 0x29, 0xCA, 0x82, - 0x07, 0x00, 0x84, 0x94, 0x87, 0x9B, 0x36, 0xC5, 0x2C, 0x6B, 0x39, 0x4D, 0x36, 0x86, 0xA4, 0x8D, - 0x7B, 0x7A, 0x3A, 0x4E, 0x93, 0x02, 0x99, 0x18, 0x1B, 0x2E, 0xFD, 0xF0, 0xCB, 0xFB, 0xAF, 0xFD, - 0x30, 0x6B, 0x1D, 0x3E, 0x7D, 0x3A, 0x2E, 0xDA, 0x34, 0x4D, 0xA9, 0x94, 0xF6, 0x3E, 0x5C, 0xAE, - 0x7D, 0x86, 0x70, 0x98, 0xD5, 0x34, 0x2B, 0xC6, 0xA5, 0x5A, 0x74, 0xCA, 0xD9, 0x68, 0x67, 0x8C, - 0xA3, 0x8C, 0x2C, 0xB3, 0x12, 0x05, 0x4B, 0x31, 0x75, 0xC3, 0xE4, 0xBC, 0x47, 0x08, 0x11, 0x8A, - 0xB5, 0x35, 0x84, 0x62, 0xC9, 0xE0, 0xED, 0x56, 0x3C, 0xDE, 0xD6, 0x08, 0x3A, 0x29, 0xF0, 0x4F, - 0x3F, 0x7E, 0xDF, 0x16, 0xA5, 0x2C, 0x4A, 0x51, 0x15, 0x4C, 0x96, 0x43, 0x37, 0x6E, 0xB7, 0x35, - 0xE7, 0x52, 0x08, 0x59, 0x08, 0x09, 0x32, 0xA2, 0x8C, 0x2E, 0xD6, 0xBC, 0xBE, 0xF6, 0x8C, 0x15, - 0x43, 0xDF, 0x0F, 0x7A, 0x91, 0x3C, 0x69, 0x65, 0x65, 0x19, 0x30, 0xF1, 0x37, 0x87, 0xFB, 0xCD, - 0xA6, 0xDE, 0x6E, 0x57, 0x08, 0x21, 0x46, 0xF1, 0xED, 0x6E, 0xE5, 0x42, 0x0A, 0x29, 0x32, 0x42, - 0x16, 0x6D, 0x7C, 0x4C, 0x9C, 0x12, 0x90, 0x41, 0x82, 0x90, 0x0B, 0x51, 0x70, 0xF6, 0xFC, 0x72, - 0x0A, 0x21, 0xCE, 0xF3, 0xB2, 0x69, 0xDB, 0x8F, 0x5F, 0x5F, 0x5C, 0x08, 0x42, 0xC8, 0x71, 0x9C, - 0x31, 0xC6, 0x6D, 0x53, 0xCD, 0xD3, 0x82, 0x29, 0xC1, 0x14, 0x6B, 0x65, 0x62, 0x88, 0x18, 0x64, - 0x6F, 0x9C, 0xF3, 0xDE, 0xDB, 0xA0, 0x17, 0x83, 0x29, 0xAE, 0x1A, 0xB9, 0x6A, 0x64, 0x21, 0xE8, - 0x66, 0xD5, 0x4A, 0x81, 0xD7, 0x4D, 0xD9, 0x96, 0x94, 0x92, 0xB4, 0xDF, 0xAD, 0x72, 0x4E, 0xE3, - 0xB0, 0x74, 0x97, 0x31, 0x82, 0xD4, 0x5D, 0x26, 0x6D, 0xFC, 0x38, 0x28, 0x1F, 0x02, 0x65, 0x58, - 0x4A, 0x86, 0x29, 0x09, 0x19, 0x8C, 0xC3, 0x3C, 0x8C, 0x4A, 0x29, 0x8F, 0x08, 0x29, 0xEB, 0x02, - 0x63, 0xD4, 0xAE, 0xEB, 0x94, 0xD2, 0x30, 0xCE, 0x94, 0x90, 0xE0, 0xC3, 0x3C, 0x2F, 0x20, 0x03, - 0x84, 0xE1, 0xF5, 0x3A, 0x50, 0x82, 0xAD, 0xF3, 0x5A, 0x29, 0x63, 0x6C, 0x53, 0x17, 0xA7, 0x6E, - 0xE4, 0x52, 0x66, 0x98, 0x01, 0x48, 0x52, 0x4A, 0x4C, 0x28, 0xC2, 0xF0, 0x78, 0x3E, 0x43, 0x04, - 0xA5, 0xE4, 0x8C, 0x32, 0x21, 0x69, 0x51, 0x30, 0x42, 0x60, 0xD3, 0x54, 0x10, 0x61, 0x67, 0x03, - 0xC2, 0xD8, 0x3B, 0x17, 0x42, 0x40, 0x18, 0xA5, 0x9C, 0x30, 0x46, 0x10, 0x81, 0xFC, 0x0D, 0xAD, - 0xC2, 0x28, 0xE7, 0x94, 0x41, 0xCA, 0x20, 0x53, 0xC6, 0x30, 0x46, 0x29, 0x58, 0xE7, 0xDD, 0xDD, - 0xDD, 0x77, 0x00, 0xA4, 0x14, 0xFD, 0xAA, 0xE2, 0xFB, 0x55, 0xB5, 0x5B, 0x55, 0x4A, 0xA9, 0xE3, - 0xE5, 0x1A, 0x53, 0x0C, 0xC1, 0x8F, 0x8B, 0x02, 0x00, 0x62, 0x8C, 0x72, 0xCE, 0x5C, 0x14, 0x08, - 0x21, 0x63, 0x6D, 0xCE, 0x20, 0xE5, 0x84, 0x10, 0xD0, 0xD6, 0x61, 0x42, 0x16, 0x65, 0x18, 0x21, - 0x6D, 0x83, 0x62, 0x0A, 0xDE, 0xE5, 0x10, 0x03, 0xA3, 0x24, 0x84, 0x04, 0x73, 0x0E, 0xD1, 0x59, - 0x9F, 0x00, 0x00, 0xD6, 0xF9, 0x18, 0x53, 0x59, 0xB6, 0x88, 0xF2, 0xED, 0x8A, 0x46, 0xFD, 0x9A, - 0x12, 0x05, 0x19, 0x09, 0x16, 0x63, 0xF4, 0x84, 0xC9, 0x69, 0xF1, 0xD6, 0x26, 0x63, 0x72, 0x8C, - 0x10, 0x61, 0x08, 0x51, 0x06, 0x39, 0xC7, 0x94, 0x01, 0x44, 0x5D, 0x6F, 0xAA, 0x42, 0x70, 0x46, - 0xE7, 0xC9, 0xEC, 0xB7, 0x35, 0x25, 0x04, 0x80, 0xAC, 0xB4, 0x8D, 0x90, 0x32, 0x06, 0x31, 0x8A, - 0x9C, 0x4B, 0x63, 0xB5, 0xF3, 0xC6, 0x79, 0xDF, 0xAE, 0xDA, 0x87, 0x9B, 0xF6, 0x7C, 0x1E, 0xC6, - 0x79, 0xFA, 0xFC, 0xF5, 0x92, 0x23, 0xFA, 0xF2, 0xF5, 0x24, 0x8B, 0x3A, 0x3A, 0x9F, 0x62, 0x82, - 0x18, 0xF6, 0xFD, 0x92, 0x21, 0x0C, 0x01, 0x60, 0x94, 0x27, 0x15, 0xA6, 0x79, 0xA4, 0x94, 0xED, - 0xDB, 0x0A, 0x60, 0x3A, 0x2B, 0xC7, 0x28, 0xA5, 0x84, 0x28, 0xAD, 0x63, 0x8C, 0x7F, 0xFC, 0xC3, - 0x1B, 0xA5, 0xEC, 0xDF, 0x7F, 0xFB, 0x92, 0x01, 0x24, 0x84, 0xDE, 0xEE, 0x37, 0xAB, 0x75, 0x93, - 0x42, 0x8C, 0x11, 0x7E, 0xFE, 0x7A, 0x7C, 0x7A, 0xBD, 0x18, 0x1B, 0x8D, 0xB6, 0xE7, 0x4B, 0xD7, - 0x8F, 0xDA, 0xDA, 0xAC, 0x8C, 0x25, 0x0C, 0x2D, 0x8B, 0x7E, 0x3D, 0xF6, 0x2F, 0x2F, 0x3D, 0x65, - 0x9C, 0x12, 0xA4, 0x94, 0xFD, 0xC3, 0x1F, 0xDF, 0x2D, 0xD3, 0xF2, 0x72, 0xBC, 0x5A, 0x17, 0x62, - 0x4C, 0x21, 0x24, 0x48, 0x10, 0x63, 0xF4, 0xE3, 0xE7, 0xD7, 0x7E, 0x34, 0x92, 0x0B, 0xB5, 0xA8, - 0xC5, 0xB8, 0xB6, 0xAE, 0xBD, 0x73, 0xE7, 0x6E, 0x19, 0x47, 0x43, 0x30, 0x0E, 0x21, 0x70, 0x82, - 0xB9, 0x60, 0xF3, 0xB4, 0xF8, 0x10, 0x21, 0x42, 0xF9, 0xFF, 0x4F, 0x57, 0x29, 0x45, 0xC2, 0x30, - 0xC1, 0xD8, 0xFB, 0xA8, 0xB5, 0xA5, 0x0C, 0xA7, 0x0C, 0x95, 0xB1, 0xDA, 0x1A, 0xC1, 0xB9, 0xB1, - 0xD6, 0x18, 0x67, 0x8D, 0x6D, 0xDB, 0x42, 0x08, 0x2C, 0x39, 0x9B, 0xE6, 0x59, 0x2B, 0x37, 0x8F, - 0x6E, 0x9A, 0xF5, 0x38, 0x2D, 0xE3, 0xBC, 0x40, 0x00, 0x0A, 0x0A, 0x97, 0xA9, 0x8B, 0x31, 0xCF, - 0xB3, 0xAB, 0xAB, 0xDA, 0xB8, 0xA0, 0xAD, 0xC5, 0x04, 0x23, 0x08, 0x27, 0x3D, 0x12, 0x8A, 0x7E, - 0x78, 0xFB, 0xB6, 0xA9, 0xAA, 0x42, 0xB2, 0xB7, 0xF7, 0x07, 0xE7, 0x52, 0x53, 0xD5, 0x65, 0x21, - 0x73, 0x0A, 0x31, 0xA6, 0x69, 0xD6, 0x00, 0xA6, 0x71, 0xD2, 0x4D, 0x53, 0xE2, 0xFB, 0xC3, 0x76, - 0x31, 0x66, 0xB5, 0xAA, 0xB4, 0x71, 0x04, 0x63, 0x84, 0x50, 0x06, 0x79, 0x1A, 0x47, 0xC6, 0x68, - 0x59, 0x14, 0x09, 0x80, 0x71, 0x50, 0xD3, 0xA2, 0x65, 0x51, 0x3B, 0x17, 0x86, 0x61, 0xCC, 0x00, - 0xF8, 0x10, 0xBA, 0xEB, 0x68, 0xAC, 0x93, 0xA5, 0x34, 0xDE, 0x43, 0x9C, 0x53, 0x8C, 0x5C, 0x88, - 0x5A, 0x36, 0xCE, 0xA5, 0xCF, 0xAF, 0xAF, 0x19, 0xE4, 0x94, 0x63, 0x3F, 0xCE, 0x29, 0xE5, 0x9C, - 0xF3, 0xA8, 0x8C, 0x75, 0x5E, 0x29, 0xF3, 0xE1, 0xD3, 0xD3, 0xF3, 0xD3, 0xB9, 0xA8, 0x8A, 0xE0, - 0xBC, 0x52, 0xD6, 0xDA, 0x30, 0x0E, 0x3A, 0xE7, 0x1C, 0xA3, 0xCB, 0x31, 0xAE, 0x76, 0x6D, 0x0C, - 0x99, 0x11, 0x96, 0x01, 0x48, 0x31, 0x7B, 0x1F, 0x8B, 0x82, 0x51, 0x86, 0x5E, 0x5E, 0xCE, 0xF7, - 0x0F, 0x37, 0xCE, 0xF8, 0x9C, 0x53, 0xB3, 0xAE, 0xD7, 0xEB, 0x3A, 0x84, 0xE0, 0x43, 0xB4, 0xCE, - 0x07, 0xEF, 0xEB, 0x55, 0x75, 0x7A, 0xED, 0x9C, 0x0F, 0x39, 0x25, 0xE7, 0x1C, 0x24, 0x38, 0xC3, - 0xCC, 0x39, 0x59, 0x66, 0x57, 0x55, 0x25, 0xCC, 0x71, 0xB5, 0x2A, 0x42, 0x48, 0x9B, 0xA6, 0x09, - 0xDE, 0x11, 0x04, 0xFB, 0x59, 0xF7, 0xA3, 0xC2, 0x98, 0xA1, 0xCC, 0xC7, 0xC1, 0x7C, 0xFC, 0x72, - 0x8E, 0x19, 0xF8, 0x10, 0xFB, 0x61, 0xD2, 0xCA, 0x3F, 0x3D, 0x5F, 0x94, 0xD2, 0x5F, 0x3E, 0x5F, - 0x17, 0x85, 0x8C, 0x57, 0xCA, 0x85, 0x65, 0x36, 0x31, 0xF8, 0x61, 0x9E, 0x3F, 0xBF, 0x5E, 0x5D, - 0x08, 0x4F, 0xC7, 0x59, 0x69, 0x47, 0x41, 0x51, 0x0B, 0xF9, 0xCB, 0x6F, 0x9F, 0x97, 0x45, 0xE5, - 0x94, 0x21, 0x84, 0x4D, 0xC1, 0x09, 0xA5, 0x55, 0x29, 0x61, 0xF6, 0xFD, 0x68, 0x4A, 0x29, 0x30, - 0x40, 0xD7, 0x61, 0x7A, 0xF7, 0xDD, 0x9B, 0x42, 0xD2, 0x10, 0xCC, 0x66, 0xD7, 0x70, 0x41, 0x64, - 0x51, 0xEC, 0x0E, 0xEB, 0x94, 0x7D, 0xDD, 0x14, 0xD3, 0xA4, 0x40, 0xCA, 0xE3, 0xA4, 0x00, 0xC8, - 0x10, 0xC1, 0x6F, 0x9F, 0xA4, 0xD6, 0x95, 0x2C, 0x0A, 0x3E, 0x8D, 0xCA, 0x85, 0xE8, 0x43, 0x1A, - 0xC7, 0xC5, 0x87, 0xE4, 0xAD, 0x77, 0xCE, 0x19, 0xE3, 0x86, 0xC1, 0x62, 0x8C, 0x5F, 0xCF, 0x83, - 0xF3, 0x3E, 0xC5, 0xA8, 0x9D, 0xF7, 0x31, 0xC5, 0x08, 0x42, 0xCA, 0x80, 0x62, 0x6B, 0x5D, 0x77, - 0x5D, 0x5C, 0x48, 0xD6, 0x87, 0x61, 0x58, 0xBA, 0x6E, 0xBA, 0x9E, 0xA7, 0x0C, 0x61, 0x30, 0x2E, - 0xA6, 0x94, 0x00, 0x98, 0x95, 0x41, 0x14, 0x59, 0xEB, 0x6F, 0x1F, 0x6E, 0x11, 0x82, 0xF5, 0xAA, - 0xDE, 0xED, 0x37, 0x9B, 0x6D, 0xDB, 0xB4, 0x35, 0x00, 0x70, 0x1C, 0x67, 0x98, 0x01, 0x17, 0xAC, - 0x92, 0xF2, 0x74, 0xED, 0x25, 0x67, 0x21, 0x44, 0x8C, 0x11, 0x40, 0xC8, 0x27, 0x64, 0x9D, 0xA7, - 0x94, 0x84, 0x10, 0x21, 0xA2, 0xCE, 0x98, 0xA6, 0x6E, 0x73, 0xCE, 0x21, 0x84, 0x94, 0xB2, 0xB3, - 0x8E, 0x52, 0x12, 0x7C, 0x60, 0x5C, 0xF8, 0x90, 0xD5, 0xA2, 0x63, 0x8C, 0x29, 0x65, 0x00, 0x33, - 0xC6, 0x14, 0x42, 0x48, 0x08, 0x26, 0x18, 0x21, 0x04, 0x52, 0xCA, 0x52, 0x72, 0x00, 0x72, 0xDB, - 0x14, 0xA5, 0x64, 0xCB, 0xA2, 0x04, 0x23, 0x31, 0xB8, 0x94, 0x81, 0x14, 0x32, 0xDA, 0xB9, 0x2C, - 0x98, 0xA0, 0x6C, 0xBB, 0xAE, 0x31, 0x04, 0x2F, 0xA7, 0x6E, 0x5A, 0x94, 0xE0, 0x9C, 0x50, 0xDC, - 0x0D, 0x73, 0x59, 0x14, 0x92, 0x51, 0x6D, 0xED, 0xA2, 0x96, 0x14, 0x83, 0x36, 0x1A, 0x63, 0xBC, - 0xAA, 0x2B, 0xEB, 0x9C, 0x94, 0x32, 0xE5, 0x4C, 0x30, 0x72, 0xCE, 0x41, 0x08, 0x05, 0x63, 0xD7, - 0x7E, 0x56, 0xD6, 0x53, 0x80, 0xB4, 0xF5, 0x4D, 0x4B, 0x0F, 0x3B, 0xFE, 0x7A, 0x31, 0x10, 0x00, - 0x08, 0x80, 0x64, 0xF8, 0x87, 0xC7, 0xED, 0x6C, 0x51, 0x81, 0x07, 0x81, 0x5E, 0xDB, 0xAA, 0x22, - 0x88, 0x54, 0x32, 0x17, 0x12, 0xC7, 0xEC, 0x4F, 0x9D, 0x41, 0x18, 0x03, 0x08, 0x11, 0x84, 0xC1, - 0x27, 0x1F, 0xB2, 0x33, 0x89, 0x33, 0x4A, 0x31, 0xF1, 0x11, 0xDF, 0xDF, 0xAD, 0x2A, 0x4E, 0xFE, - 0xF1, 0x2F, 0x7F, 0x7A, 0xB8, 0xBB, 0x79, 0xF7, 0x78, 0x7F, 0xD8, 0x6D, 0xDA, 0xA6, 0x79, 0x7B, - 0xBF, 0x7B, 0x7B, 0x7F, 0x38, 0xB4, 0x1B, 0x2E, 0xA4, 0x36, 0xE1, 0x74, 0x1E, 0xDA, 0xAA, 0x41, - 0x10, 0x7F, 0x7D, 0x7A, 0x7D, 0x3D, 0x4D, 0xC7, 0xEB, 0xB4, 0xDF, 0xDD, 0x8C, 0xC3, 0xB4, 0x5E, - 0x55, 0x9B, 0xCD, 0x9A, 0x11, 0x52, 0x95, 0xD2, 0x87, 0x8C, 0x08, 0x9E, 0x66, 0xDB, 0xF5, 0x0B, - 0x97, 0xEC, 0x32, 0x1B, 0xAF, 0x15, 0x86, 0xFE, 0x3A, 0x4E, 0xE7, 0x73, 0x97, 0x72, 0xF0, 0x21, - 0xC5, 0xE8, 0x8C, 0xB3, 0x18, 0x93, 0xAA, 0x92, 0x54, 0x30, 0x21, 0xC5, 0xE5, 0x3A, 0x60, 0x84, - 0xDA, 0xBA, 0xCC, 0x39, 0x2B, 0xAB, 0x5F, 0x5F, 0xCF, 0x19, 0x64, 0x6D, 0x1C, 0xA3, 0x38, 0xF8, - 0x18, 0x52, 0x2E, 0x8B, 0x72, 0x98, 0xA6, 0xB6, 0xA9, 0xEA, 0xAA, 0x70, 0xD6, 0x0D, 0x93, 0xBA, - 0xF6, 0x8A, 0x12, 0x8A, 0x11, 0xDA, 0x6E, 0xD6, 0xCE, 0xFA, 0xA2, 0x92, 0xC3, 0x38, 0x5B, 0xAB, - 0x19, 0x43, 0xD3, 0x6C, 0xCA, 0x92, 0x53, 0x8C, 0xAD, 0xCD, 0x42, 0xCA, 0x94, 0x82, 0xD6, 0x16, - 0x00, 0xB4, 0x6D, 0x5B, 0xEB, 0xF3, 0xF1, 0xDA, 0x39, 0xE7, 0x01, 0x00, 0x8C, 0x12, 0x82, 0x61, - 0x48, 0xA9, 0x2C, 0x8B, 0x14, 0x23, 0xC1, 0x24, 0xE7, 0x1C, 0x43, 0x62, 0x94, 0x22, 0x0C, 0x25, - 0x25, 0xAB, 0xBA, 0x38, 0xF7, 0x63, 0xCC, 0xA9, 0xA9, 0x1B, 0x63, 0xCD, 0x3C, 0x4F, 0x8C, 0x71, - 0xE7, 0xC2, 0xAC, 0x94, 0x8F, 0x51, 0x4A, 0x2A, 0x24, 0x65, 0x38, 0x48, 0x0A, 0x86, 0x39, 0x58, - 0xE3, 0x87, 0x59, 0xC7, 0x14, 0x09, 0x41, 0x94, 0xC0, 0x55, 0x53, 0x2C, 0x4A, 0x0F, 0x93, 0xCB, - 0x09, 0xC8, 0xB2, 0x7C, 0xBD, 0x2E, 0xCE, 0xE7, 0xF5, 0xA6, 0xD1, 0xDA, 0xCD, 0xCA, 0xDC, 0x6C, - 0x36, 0x3F, 0xFF, 0xF0, 0x27, 0x8C, 0x0A, 0x21, 0x24, 0xA5, 0x0C, 0x23, 0x26, 0x44, 0x55, 0x88, - 0x92, 0x73, 0x9E, 0x32, 0xB8, 0xBD, 0xDD, 0x59, 0x17, 0xC7, 0x71, 0x5A, 0x8C, 0x35, 0x2E, 0xE0, - 0x52, 0x0A, 0xEB, 0x82, 0xF7, 0xBE, 0x2C, 0xE5, 0xA2, 0xCC, 0xA5, 0xEB, 0xA6, 0x69, 0xC8, 0x10, - 0x16, 0xB2, 0x1A, 0xA6, 0xD1, 0x5B, 0x3F, 0xCE, 0x93, 0x90, 0x0C, 0x61, 0x32, 0x4C, 0x43, 0x88, - 0x3E, 0x82, 0x44, 0x29, 0xC9, 0x09, 0xB4, 0x4D, 0x19, 0x63, 0x38, 0x9D, 0x7A, 0x6B, 0x5D, 0x4A, - 0x09, 0x02, 0xBC, 0xA8, 0x48, 0x09, 0x5D, 0xAD, 0x6B, 0xE3, 0xBC, 0xCF, 0xD9, 0x79, 0x3F, 0x4D, - 0x0B, 0x26, 0xDC, 0x58, 0xAD, 0x94, 0x31, 0xDA, 0x2A, 0xA5, 0x43, 0xCA, 0xDE, 0xC5, 0xD3, 0xA9, - 0x5B, 0x94, 0x4D, 0x31, 0x85, 0x10, 0x52, 0x8A, 0xD6, 0x58, 0x63, 0xC3, 0xB2, 0x98, 0xE0, 0x43, - 0x3F, 0xCE, 0x55, 0x5D, 0x61, 0x88, 0xB6, 0x9B, 0x7A, 0xB7, 0xAE, 0xDF, 0xBD, 0xDD, 0x5A, 0xED, - 0x2E, 0xC3, 0x74, 0xB9, 0xF6, 0xD3, 0xAC, 0x10, 0xC2, 0x4A, 0x59, 0x80, 0xA0, 0x56, 0x9A, 0x09, - 0xEE, 0x5D, 0x38, 0x9F, 0xFB, 0x94, 0x93, 0xD1, 0x26, 0x04, 0xB7, 0xDD, 0xDD, 0x10, 0x26, 0x41, - 0x74, 0x37, 0x87, 0xED, 0x3F, 0xFC, 0xE9, 0xFB, 0xA6, 0xAE, 0x0F, 0xB7, 0xEB, 0xB7, 0x6F, 0x6E, - 0xA3, 0x87, 0x10, 0x30, 0xA5, 0xFC, 0x34, 0xDB, 0x61, 0xD2, 0x8B, 0x4A, 0xCF, 0xC7, 0x69, 0x99, - 0xE3, 0x6E, 0xD5, 0xCE, 0xCE, 0x4F, 0xB3, 0xA1, 0x8C, 0xEE, 0x6F, 0x76, 0x9F, 0xBF, 0x5C, 0xFA, - 0x69, 0xC6, 0x14, 0x8E, 0x2A, 0x68, 0x93, 0xAC, 0xD3, 0x00, 0x62, 0x18, 0x53, 0x21, 0xD8, 0x4B, - 0xB7, 0x58, 0x1B, 0x32, 0x20, 0x31, 0x82, 0x0C, 0xE8, 0x6E, 0x55, 0x75, 0x57, 0xF5, 0x7A, 0x1E, - 0x0F, 0x9B, 0x56, 0xCF, 0x33, 0xA3, 0x59, 0x19, 0xEF, 0x9C, 0xCF, 0x29, 0x5A, 0x9F, 0xBD, 0x8F, - 0x29, 0x26, 0x00, 0x41, 0x55, 0x88, 0x87, 0xFB, 0xCD, 0xCD, 0x4D, 0xBD, 0xBF, 0x6B, 0x9B, 0x4D, - 0xF3, 0xE6, 0xBB, 0x87, 0xED, 0x61, 0x2D, 0x4B, 0xF1, 0xF6, 0xF1, 0xE6, 0xE6, 0x66, 0x7B, 0x73, - 0xBB, 0xBA, 0xBB, 0x5B, 0x13, 0x8C, 0xBC, 0x0B, 0x4A, 0x99, 0xED, 0xA6, 0xBC, 0xDF, 0x6F, 0xA6, - 0x79, 0x99, 0x17, 0x37, 0x2D, 0x1A, 0x42, 0xE0, 0x7C, 0x34, 0x26, 0xC4, 0x10, 0x09, 0xC1, 0x31, - 0x26, 0xCE, 0x29, 0x61, 0x14, 0x61, 0x78, 0xBE, 0xF4, 0x97, 0xEB, 0xAC, 0x8D, 0x83, 0x08, 0xCD, - 0xCA, 0x3F, 0x9F, 0xFA, 0x61, 0xD2, 0x5A, 0xB9, 0xF3, 0x79, 0x5E, 0x94, 0x45, 0x18, 0xC5, 0x94, - 0xF4, 0x62, 0x21, 0x44, 0x3E, 0xA4, 0x9C, 0x22, 0x21, 0x38, 0xFA, 0x14, 0x7C, 0xA0, 0x9C, 0x84, - 0x10, 0x43, 0x4C, 0xC3, 0x30, 0x41, 0x88, 0x30, 0x21, 0xFD, 0x30, 0x82, 0x0C, 0x39, 0xA7, 0x87, - 0x9B, 0x1D, 0xA5, 0xB8, 0xEB, 0x47, 0x4E, 0x48, 0xCA, 0xC9, 0x87, 0x88, 0x10, 0x0C, 0x31, 0x02, - 0x00, 0x64, 0xC1, 0xA7, 0x45, 0x87, 0x10, 0x8D, 0xB1, 0x29, 0x01, 0x67, 0xBD, 0x60, 0x5C, 0xF0, - 0xB2, 0x1F, 0xFA, 0x7E, 0x18, 0x63, 0xCC, 0x10, 0x82, 0x94, 0x30, 0xA5, 0x4C, 0xF0, 0xE2, 0xEB, - 0xD7, 0xE7, 0x10, 0x02, 0x67, 0x2C, 0xE5, 0x8C, 0x10, 0x86, 0x10, 0x10, 0x4C, 0xBC, 0xF7, 0x00, - 0x00, 0x42, 0x48, 0x4C, 0x19, 0x21, 0x08, 0x00, 0xD8, 0x6E, 0xEA, 0xBA, 0x12, 0xA5, 0xA0, 0xCE, - 0x85, 0x92, 0x73, 0x82, 0x31, 0x01, 0xC1, 0x7B, 0x13, 0x42, 0xD2, 0x1E, 0x14, 0x52, 0x1A, 0xE7, - 0xFB, 0x49, 0x3D, 0xDC, 0xEE, 0xBD, 0x0F, 0x04, 0xE3, 0xDD, 0x6E, 0xD5, 0x36, 0x55, 0x8A, 0x31, - 0x86, 0x88, 0x11, 0x4A, 0x29, 0x41, 0x08, 0x73, 0x06, 0xF1, 0xDB, 0x26, 0x44, 0x4E, 0xF3, 0xB2, - 0x50, 0x82, 0x62, 0x0C, 0xD6, 0x05, 0x0C, 0xC9, 0x69, 0x98, 0x00, 0x00, 0xAB, 0x5A, 0x50, 0x82, - 0x01, 0x89, 0x55, 0x49, 0xAD, 0xC9, 0x8C, 0x22, 0x63, 0xD3, 0x8F, 0x6F, 0xF7, 0x37, 0x87, 0xFD, - 0x32, 0x5F, 0x09, 0x58, 0xFE, 0xF8, 0xEE, 0x4F, 0x45, 0xB5, 0xDA, 0xAD, 0x2A, 0x4A, 0x79, 0x46, - 0xD8, 0x7A, 0xB4, 0x5B, 0xB7, 0xEB, 0x8A, 0x13, 0x9C, 0xAF, 0x57, 0x03, 0x00, 0xA0, 0x94, 0xB4, - 0x8D, 0x58, 0xD7, 0xAC, 0xAE, 0xE5, 0x6E, 0x53, 0xED, 0xDB, 0xF2, 0xFB, 0xC7, 0x37, 0xEB, 0xF5, - 0x1A, 0x21, 0x60, 0x8D, 0x85, 0x00, 0xE8, 0xD1, 0x30, 0x4A, 0x73, 0x4E, 0x8C, 0xD5, 0xAB, 0x76, - 0xDD, 0xB6, 0x75, 0x59, 0x16, 0xB7, 0xFB, 0xFD, 0x38, 0xF4, 0x82, 0x72, 0x4C, 0x88, 0x94, 0x75, - 0x3F, 0x0C, 0x08, 0x66, 0xC1, 0xD9, 0x64, 0xE6, 0x94, 0x03, 0x63, 0x66, 0x9A, 0x43, 0x0C, 0x71, - 0xDD, 0x96, 0x05, 0x27, 0x11, 0xE4, 0xE0, 0x5C, 0x21, 0x28, 0x23, 0xD9, 0xF8, 0xC4, 0x99, 0x34, - 0xCA, 0xFA, 0x10, 0x10, 0x86, 0x08, 0xE3, 0xF5, 0xAA, 0xFD, 0xF5, 0xFD, 0xF3, 0x38, 0x2D, 0xFB, - 0x7D, 0x5B, 0x48, 0x59, 0x0A, 0xD6, 0x36, 0xC5, 0xF5, 0x72, 0x89, 0xD1, 0xBD, 0x7B, 0x3C, 0xFC, - 0xF4, 0xFD, 0x9B, 0x79, 0x5E, 0xDE, 0xDC, 0xEF, 0x87, 0x71, 0x06, 0x10, 0xFE, 0xF0, 0xDD, 0xE3, - 0x2F, 0xEF, 0x3F, 0xFA, 0x10, 0x52, 0x4A, 0x10, 0x91, 0xA6, 0x5D, 0x2F, 0x6A, 0xF2, 0xD1, 0x95, - 0x75, 0x09, 0x21, 0xBC, 0x5E, 0x87, 0xA2, 0x10, 0x52, 0x92, 0x9B, 0x9B, 0xCD, 0xE1, 0x66, 0xBF, - 0x5A, 0x37, 0x6D, 0x5B, 0x8A, 0x42, 0x18, 0xEB, 0x11, 0xCA, 0xE3, 0x38, 0x75, 0xC3, 0xB2, 0x5D, - 0xD5, 0x9C, 0x93, 0xCB, 0xB8, 0x0C, 0xB3, 0xB2, 0x56, 0x13, 0x4C, 0x39, 0xA5, 0x10, 0x24, 0xC6, - 0x05, 0xCC, 0x89, 0x62, 0x72, 0xB9, 0x8E, 0x8B, 0x36, 0x75, 0x59, 0x16, 0x42, 0x80, 0x14, 0x6F, - 0xD6, 0xD5, 0x75, 0x50, 0x00, 0x42, 0x63, 0x2D, 0xC6, 0xD4, 0x39, 0xFB, 0x6D, 0x9D, 0x9E, 0x60, - 0x08, 0x20, 0x20, 0x08, 0x73, 0x41, 0xC6, 0xC5, 0x2C, 0x8B, 0xF5, 0xDE, 0xC7, 0x04, 0x31, 0x84, - 0x31, 0x65, 0x42, 0x18, 0x41, 0x50, 0x72, 0x5A, 0x95, 0x85, 0xB5, 0x3E, 0x24, 0x34, 0xCE, 0x66, - 0xD1, 0x66, 0x54, 0xC6, 0xDA, 0x28, 0xB9, 0x30, 0x46, 0x79, 0x9F, 0x7F, 0x7A, 0xFB, 0x96, 0x20, - 0x3A, 0x2B, 0x73, 0xE9, 0x26, 0xE7, 0xC3, 0xB9, 0x1B, 0x7E, 0xFB, 0xFC, 0x72, 0x19, 0x96, 0x4B, - 0x3F, 0x64, 0x04, 0x39, 0x17, 0x95, 0xAC, 0x10, 0x46, 0xB3, 0x32, 0x8B, 0x76, 0xB0, 0x2E, 0xEB, - 0xBA, 0x12, 0x8C, 0x91, 0x9C, 0xD1, 0xB4, 0xD8, 0x65, 0x51, 0x45, 0x21, 0xAC, 0x33, 0x00, 0x20, - 0xC6, 0x88, 0xE4, 0xEC, 0xF5, 0x78, 0x6E, 0xDA, 0xBA, 0xA9, 0x2B, 0xC6, 0xD0, 0x38, 0x4E, 0x08, - 0x21, 0x84, 0x71, 0x8A, 0xD0, 0x3B, 0xDF, 0xAE, 0x0A, 0x00, 0x40, 0x4C, 0x81, 0x33, 0xC6, 0x18, - 0x0B, 0x3E, 0xE9, 0x59, 0x11, 0xC1, 0x30, 0x63, 0x29, 0x26, 0xA5, 0xD4, 0xE5, 0xDC, 0xAF, 0x57, - 0xFB, 0x79, 0x9E, 0xAC, 0x33, 0x37, 0xFB, 0xB5, 0x14, 0x12, 0x62, 0x7C, 0x3E, 0x77, 0xD7, 0xEE, - 0x8A, 0x31, 0xB9, 0xBF, 0xD9, 0xE7, 0x94, 0xAA, 0x5A, 0x10, 0x42, 0x40, 0xC4, 0xBB, 0xDD, 0xEA, - 0x7A, 0xBD, 0x3A, 0x17, 0x20, 0xA1, 0x8C, 0x90, 0xA6, 0x16, 0xF0, 0xDB, 0x70, 0x5D, 0xB4, 0xFF, - 0xFD, 0x6F, 0xBF, 0xD4, 0x4D, 0xC5, 0x08, 0xD3, 0xCA, 0x61, 0x82, 0x9A, 0xB6, 0x8C, 0x31, 0xA4, - 0x98, 0xA7, 0x59, 0xF7, 0xC3, 0x74, 0xD8, 0x35, 0x8C, 0x92, 0xAE, 0x9B, 0x6E, 0x1E, 0x7E, 0xF8, - 0xE7, 0x7F, 0xFA, 0xD3, 0xDD, 0x86, 0xFC, 0xCB, 0xBF, 0xFD, 0x7B, 0x21, 0x4B, 0xE7, 0x20, 0xC6, - 0x8E, 0x12, 0x04, 0x32, 0x9E, 0x16, 0xBB, 0xCC, 0x7A, 0x53, 0x4A, 0x88, 0xF1, 0xFF, 0xF5, 0x2F, - 0x7F, 0x53, 0xC6, 0x4A, 0x46, 0x7E, 0xFE, 0xFE, 0xFE, 0xEB, 0x45, 0xAD, 0xDA, 0x8A, 0x92, 0x2C, - 0x0B, 0xA1, 0x94, 0xBE, 0xBF, 0xDF, 0x65, 0x10, 0x52, 0x16, 0xF3, 0x34, 0xFC, 0xFE, 0xFB, 0xE7, - 0x9C, 0xD1, 0xB6, 0x95, 0x29, 0xE7, 0xCF, 0xAF, 0x5D, 0x0C, 0x29, 0xC6, 0x20, 0x38, 0x26, 0x98, - 0xAC, 0x9B, 0x02, 0x03, 0x48, 0x45, 0xD1, 0xD6, 0xF4, 0x72, 0x3E, 0x6D, 0xD6, 0xAD, 0xB6, 0xA9, - 0x1F, 0xA7, 0x3F, 0xFD, 0xF8, 0xF8, 0x70, 0xBF, 0x1B, 0xE7, 0xC5, 0xF9, 0x58, 0xB7, 0x75, 0xD7, - 0xF5, 0x85, 0x2C, 0x10, 0x00, 0x97, 0x7E, 0x98, 0x67, 0x0B, 0x31, 0xCE, 0x00, 0x62, 0x4C, 0xAC, - 0x31, 0x94, 0x90, 0xB2, 0xAE, 0x60, 0xF2, 0x6D, 0x53, 0x5A, 0x1F, 0x57, 0x05, 0xDF, 0xB5, 0xD5, - 0xBF, 0xFD, 0xFB, 0x07, 0xC0, 0xF0, 0x6F, 0x1F, 0x5E, 0x43, 0xF0, 0x43, 0xAF, 0x28, 0x86, 0x5C, - 0xD0, 0x10, 0xD2, 0x6E, 0x57, 0x53, 0xCE, 0xA6, 0x51, 0x7B, 0x17, 0x9C, 0x0B, 0x94, 0x62, 0xC6, - 0x88, 0xD5, 0xB6, 0x90, 0x62, 0x5A, 0x0C, 0x25, 0x48, 0x6B, 0x1B, 0x12, 0x28, 0x0B, 0x91, 0x01, - 0x80, 0x20, 0x8B, 0x82, 0x33, 0x41, 0x01, 0x84, 0x39, 0x65, 0x4A, 0x30, 0x46, 0x18, 0x20, 0x64, - 0xAD, 0xCF, 0x19, 0x58, 0xEB, 0x01, 0xC6, 0xCE, 0xF9, 0xA2, 0x90, 0x18, 0x23, 0xAD, 0x2D, 0x04, - 0x00, 0x21, 0x04, 0x53, 0x6C, 0x9B, 0x22, 0xC4, 0x34, 0xF7, 0x53, 0x37, 0xCC, 0xC6, 0xA5, 0x10, - 0x93, 0x64, 0x64, 0xD3, 0x56, 0xDA, 0xB9, 0x4B, 0x3F, 0x23, 0x8C, 0x41, 0x4E, 0x9C, 0x51, 0x84, - 0xF0, 0x7F, 0xFD, 0xCF, 0x3F, 0x77, 0x43, 0xA7, 0xCC, 0xD2, 0x75, 0x66, 0x5C, 0xDC, 0xA2, 0x74, - 0xCE, 0xB1, 0x2A, 0x4A, 0xC2, 0x58, 0xF0, 0xB6, 0x14, 0xCC, 0x87, 0xE4, 0x63, 0x8A, 0x31, 0x84, - 0x10, 0x01, 0x84, 0x39, 0x03, 0x8C, 0x60, 0xCC, 0x19, 0x64, 0x80, 0x50, 0x86, 0x10, 0x51, 0x82, - 0xF6, 0xFB, 0x66, 0xDF, 0x4A, 0x63, 0x73, 0x5D, 0x54, 0x2E, 0xE4, 0x65, 0xE8, 0x10, 0x46, 0xB3, - 0xC3, 0xB3, 0x0E, 0xFB, 0x4D, 0x9D, 0xA2, 0x4B, 0x21, 0x14, 0x85, 0x78, 0xFF, 0xF9, 0x49, 0x0A, - 0xB9, 0x5B, 0x37, 0xFD, 0x38, 0x0D, 0xC3, 0x88, 0x31, 0x46, 0x08, 0x3A, 0xEF, 0x21, 0x84, 0xC6, - 0x85, 0x4A, 0xCA, 0xBB, 0xC3, 0x5E, 0x0A, 0x81, 0x10, 0x86, 0x00, 0x22, 0x0C, 0x72, 0xB2, 0xCE, - 0x8E, 0x9F, 0x8E, 0xE3, 0x3C, 0xDB, 0x7F, 0xFE, 0xF9, 0x91, 0x60, 0x8B, 0x49, 0xC4, 0xD8, 0x9B, - 0x94, 0x5F, 0x4E, 0x3E, 0x46, 0x7C, 0x7F, 0xD8, 0x56, 0x3C, 0xDF, 0xAC, 0x6F, 0xAC, 0x4B, 0x52, - 0xC8, 0xE3, 0xE5, 0x92, 0x72, 0xE4, 0xA2, 0xC8, 0x08, 0x52, 0x4E, 0x09, 0x81, 0x98, 0x90, 0x14, - 0xD3, 0xE9, 0xDC, 0xA5, 0x9C, 0x29, 0x23, 0x20, 0x01, 0x6F, 0x16, 0xCE, 0x38, 0xCA, 0x01, 0x00, - 0xB0, 0xD9, 0xDD, 0x1E, 0x2F, 0x97, 0x79, 0x9E, 0x63, 0x86, 0x6D, 0x2B, 0x9B, 0xA2, 0xB8, 0x5E, - 0xF4, 0xDD, 0xE3, 0x21, 0x86, 0x18, 0x53, 0x4A, 0x29, 0xD5, 0x75, 0x2D, 0x24, 0x1F, 0x2E, 0x57, - 0x3D, 0x4D, 0x83, 0xC9, 0x19, 0xD2, 0x8F, 0x9F, 0x3F, 0x1F, 0xD6, 0xB2, 0xAA, 0x8B, 0xA7, 0xD3, - 0x85, 0x90, 0xFC, 0xF4, 0x34, 0x3D, 0xDC, 0xDC, 0x10, 0x18, 0x04, 0x83, 0x8C, 0xB3, 0xD9, 0x00, - 0x86, 0x42, 0x4A, 0x61, 0x52, 0xAA, 0x28, 0xDA, 0xA1, 0x37, 0x9C, 0xB3, 0x9B, 0xC3, 0x56, 0x6B, - 0x93, 0x52, 0xD2, 0x2E, 0xBE, 0x9E, 0xE7, 0xC3, 0xAE, 0xE1, 0x04, 0x70, 0xC1, 0x8E, 0xE7, 0x81, - 0x12, 0x52, 0x70, 0xC6, 0x38, 0x66, 0x18, 0xA7, 0x94, 0xF7, 0xFB, 0x03, 0x41, 0x68, 0x9C, 0xB4, - 0x8F, 0x09, 0x24, 0x8F, 0x29, 0xCA, 0x00, 0xFC, 0xF2, 0xFB, 0x57, 0xCE, 0xCB, 0x71, 0x59, 0x2E, - 0xD7, 0xCB, 0x6A, 0x55, 0xBD, 0x7B, 0xF7, 0xC6, 0x6A, 0x3B, 0x4D, 0xEA, 0xCD, 0xDD, 0xAE, 0x2E, - 0x79, 0x55, 0xC9, 0x18, 0x5D, 0x88, 0x5E, 0x94, 0x55, 0xCA, 0x28, 0x38, 0x1F, 0x53, 0xEC, 0xBB, - 0xEB, 0xE5, 0x75, 0xCC, 0x20, 0xF6, 0x93, 0x5A, 0xD5, 0x1B, 0x4C, 0xBE, 0xA1, 0x69, 0x14, 0xE4, - 0xF8, 0xDD, 0xE3, 0x0D, 0x2B, 0x85, 0x1A, 0x4C, 0x37, 0xCE, 0x4F, 0xCF, 0xD7, 0x61, 0x9C, 0x77, - 0xEB, 0x76, 0x98, 0x97, 0xBB, 0xDD, 0x1A, 0xE4, 0x1C, 0x52, 0xDE, 0x6D, 0x56, 0xFF, 0xF2, 0xB7, - 0x5F, 0x72, 0x86, 0xD6, 0x19, 0xC6, 0x78, 0x2D, 0x45, 0x4A, 0x39, 0xA6, 0x98, 0x72, 0x8E, 0xC9, - 0x71, 0x46, 0x2B, 0x21, 0x72, 0x4E, 0xCA, 0x04, 0x00, 0x60, 0x53, 0xD5, 0x85, 0x14, 0x5A, 0xCF, - 0x19, 0x78, 0x0C, 0xB1, 0x52, 0xAE, 0x69, 0x0A, 0x65, 0x9D, 0xB6, 0x51, 0x16, 0xC5, 0xB5, 0x5F, - 0xCA, 0x42, 0x52, 0x9C, 0x09, 0x44, 0x77, 0xDB, 0x4D, 0xCE, 0x59, 0xC8, 0x72, 0x18, 0x27, 0xCA, - 0x88, 0x32, 0xCE, 0xF8, 0x14, 0x62, 0x04, 0x20, 0x72, 0x46, 0x24, 0x17, 0x82, 0xF3, 0xCD, 0xAA, - 0x3A, 0x5D, 0x4E, 0xBF, 0x7D, 0x7A, 0x82, 0x77, 0x37, 0x07, 0xC9, 0x59, 0x8C, 0x61, 0x56, 0xC6, - 0x47, 0xE4, 0x9D, 0x5B, 0xAF, 0xAB, 0x6F, 0xBA, 0x16, 0xA5, 0x74, 0x18, 0x27, 0x63, 0x2C, 0x17, - 0xA2, 0x94, 0x05, 0xA3, 0x40, 0x29, 0x9D, 0x21, 0x52, 0x8B, 0xF9, 0x7F, 0x59, 0x7A, 0x8F, 0x25, - 0xCB, 0xB2, 0xEC, 0x4C, 0x6F, 0xEB, 0xBD, 0x8F, 0x3E, 0xE7, 0x4A, 0x77, 0x0F, 0xE1, 0x21, 0x32, - 0xB3, 0x2A, 0x4B, 0xA0, 0x0A, 0x20, 0x80, 0x26, 0x8D, 0x34, 0xA3, 0xF5, 0x94, 0xC3, 0x1E, 0x70, - 0xC6, 0x07, 0xE0, 0x43, 0xD2, 0x38, 0xE1, 0x80, 0x66, 0xB4, 0x46, 0xA3, 0x40, 0xA0, 0x80, 0x94, - 0x11, 0x19, 0x11, 0x2E, 0xAF, 0x3A, 0x72, 0x6B, 0xC1, 0x41, 0xF2, 0x29, 0xD6, 0xB2, 0x5F, 0x7C, - 0x3F, 0xC2, 0xD8, 0x79, 0x5F, 0xE4, 0x19, 0x82, 0x30, 0xCB, 0x99, 0xB7, 0xAE, 0x2A, 0x73, 0xA3, - 0xED, 0xA2, 0xB4, 0x10, 0x0C, 0x40, 0x88, 0x31, 0x9E, 0xA6, 0x85, 0x51, 0x66, 0x7D, 0x34, 0xC6, - 0x8B, 0x4C, 0x54, 0x85, 0x40, 0x00, 0x03, 0x00, 0x21, 0x00, 0x8C, 0x41, 0xC6, 0xB0, 0xF5, 0x60, - 0x9C, 0x97, 0xA2, 0xE4, 0xFF, 0xE9, 0x0F, 0x5F, 0x43, 0x48, 0x3E, 0xDE, 0x1F, 0x7E, 0xFA, 0xF0, - 0xB9, 0xAA, 0x8B, 0x32, 0xE3, 0x8B, 0xB4, 0xC3, 0x24, 0x73, 0x2E, 0x6E, 0x6E, 0xD6, 0x10, 0x86, - 0x61, 0x9A, 0xA5, 0xD2, 0x10, 0xE2, 0xAC, 0xC8, 0x30, 0x22, 0xE7, 0xC3, 0x89, 0x10, 0x1C, 0x63, - 0x04, 0x00, 0xD4, 0x75, 0x3E, 0x8C, 0xA3, 0xD2, 0x06, 0x44, 0xF0, 0x0F, 0x7F, 0xFA, 0xD3, 0xBB, - 0x3F, 0xFC, 0xC3, 0xBF, 0xFC, 0xD7, 0xFF, 0xE3, 0xDC, 0x1F, 0xB2, 0x62, 0x93, 0x82, 0x11, 0x14, - 0x02, 0x00, 0x10, 0x82, 0x3E, 0xA6, 0x32, 0x2F, 0x1A, 0xC1, 0x2F, 0xCA, 0x3E, 0x9E, 0x96, 0xBE, - 0x9F, 0x9D, 0x1C, 0xAC, 0xB1, 0xDD, 0xF6, 0xC5, 0xEB, 0x17, 0xDB, 0xE0, 0x35, 0xE3, 0x02, 0x82, - 0x84, 0x09, 0x12, 0x82, 0x41, 0x52, 0xC1, 0xD4, 0xFF, 0xFC, 0xE1, 0xDE, 0xF9, 0x18, 0xBC, 0xEB, - 0xFB, 0xE9, 0xD4, 0xCF, 0x31, 0xC2, 0x52, 0x90, 0xF5, 0xA6, 0xF6, 0x1E, 0x58, 0xA5, 0x6F, 0x6F, - 0xD6, 0x65, 0x55, 0x7E, 0xB8, 0x7F, 0x5A, 0x55, 0xA2, 0x2C, 0x0B, 0x6B, 0xDC, 0x7A, 0xD5, 0xBE, - 0x79, 0xB3, 0x9D, 0x67, 0x89, 0x29, 0x8E, 0x00, 0x00, 0x88, 0x01, 0x82, 0x63, 0xBF, 0x40, 0x04, - 0x2F, 0xE3, 0xF2, 0xF9, 0xF3, 0x31, 0x45, 0xF0, 0xEB, 0x36, 0x2A, 0xC2, 0x08, 0x01, 0x90, 0x09, - 0xE1, 0xB4, 0x2C, 0x72, 0x5E, 0x94, 0xD5, 0x6E, 0xDD, 0x22, 0x00, 0x5C, 0xF0, 0x59, 0x2E, 0xC6, - 0x69, 0xC1, 0x20, 0xA5, 0x90, 0x20, 0x4A, 0xC6, 0xD8, 0xB2, 0xCA, 0xEA, 0xAE, 0xBD, 0x5C, 0x86, - 0xA7, 0xA7, 0x8B, 0xF3, 0xDE, 0x3B, 0x0F, 0x21, 0xF6, 0xDE, 0x2A, 0x65, 0xFA, 0x41, 0x4B, 0x65, - 0x32, 0x41, 0x04, 0xE7, 0x00, 0xA0, 0xBA, 0xC9, 0x05, 0x23, 0x31, 0xFA, 0x2C, 0xE3, 0x79, 0x91, - 0x01, 0x90, 0x22, 0x00, 0x97, 0x7E, 0x0E, 0x2E, 0x26, 0x04, 0x8D, 0x73, 0x72, 0xB1, 0x10, 0x00, - 0x4C, 0xA9, 0x75, 0x1E, 0x83, 0xE4, 0x7C, 0x74, 0xCE, 0x13, 0xC6, 0x40, 0x4A, 0x0C, 0xC3, 0xAB, - 0xAB, 0x15, 0xA1, 0x64, 0xD5, 0x35, 0x1F, 0x7E, 0xFA, 0x72, 0xEE, 0x17, 0x08, 0x61, 0xC6, 0x28, - 0x82, 0x89, 0x30, 0xB6, 0x5A, 0x57, 0x18, 0xA3, 0xF5, 0xAA, 0x4A, 0x29, 0x20, 0x98, 0xD6, 0xEB, - 0x26, 0x86, 0x44, 0x09, 0x76, 0xCE, 0x3F, 0x1F, 0xFA, 0x51, 0xFA, 0xFB, 0xFB, 0xD3, 0xAA, 0x6D, - 0xB4, 0x92, 0xD3, 0xAC, 0x0F, 0xA7, 0x1E, 0x61, 0x1C, 0x12, 0xB4, 0xD6, 0x01, 0x10, 0x21, 0xC2, - 0x9C, 0x92, 0x6F, 0xBF, 0xDA, 0x26, 0x04, 0x86, 0x5E, 0x7A, 0xE7, 0x7F, 0xFA, 0x74, 0x84, 0x10, - 0xB6, 0x95, 0xD8, 0xAF, 0xAB, 0x32, 0x2F, 0xE7, 0xC5, 0x04, 0x1F, 0xEB, 0x9C, 0x46, 0x88, 0x74, - 0x60, 0x77, 0x4F, 0xCF, 0xFB, 0x6D, 0x47, 0x31, 0xD2, 0x52, 0x4A, 0xAD, 0x13, 0x44, 0x5A, 0x19, - 0x21, 0x84, 0x71, 0x66, 0x9A, 0x97, 0xFD, 0x7A, 0x85, 0x10, 0x7A, 0x3A, 0x9D, 0x76, 0xAB, 0x2E, - 0xE7, 0x3C, 0xCF, 0x72, 0x08, 0x51, 0x4C, 0x20, 0xCB, 0x72, 0x63, 0x2D, 0x42, 0x11, 0xE2, 0x65, - 0x5E, 0x46, 0xE7, 0x53, 0x57, 0xD4, 0x9B, 0x66, 0xFD, 0x74, 0x78, 0x94, 0x7A, 0xD1, 0xC1, 0x29, - 0x1F, 0x7C, 0x4C, 0x6D, 0x93, 0x21, 0x88, 0xFF, 0xF8, 0xF6, 0x36, 0xA7, 0x75, 0x08, 0xE9, 0xEE, - 0xF1, 0x71, 0x52, 0x2A, 0x01, 0xCC, 0x29, 0xF3, 0xC1, 0xF3, 0x8C, 0x86, 0xE8, 0xBA, 0x75, 0x6B, - 0x75, 0x70, 0xD6, 0x11, 0x02, 0x39, 0x63, 0x45, 0x2E, 0x70, 0x8A, 0x14, 0x23, 0xE3, 0xAD, 0xB5, - 0xE0, 0xFE, 0xE9, 0x74, 0xEC, 0x7B, 0x4C, 0x39, 0x22, 0x61, 0xBD, 0x2A, 0x72, 0x91, 0x3F, 0x3D, - 0xF6, 0xEF, 0x6E, 0xAF, 0xA7, 0x45, 0x36, 0xAB, 0x2E, 0x85, 0x50, 0x55, 0x05, 0xC2, 0x54, 0x4F, - 0x63, 0x9E, 0xE7, 0xF7, 0xC7, 0xE1, 0xF9, 0xE9, 0x29, 0xA5, 0xD0, 0xE4, 0x05, 0xC2, 0xC0, 0x85, - 0x40, 0x29, 0x26, 0x28, 0x51, 0x42, 0x60, 0xC4, 0xCA, 0x78, 0x6D, 0x6D, 0x4A, 0x10, 0x11, 0x47, - 0x19, 0x77, 0x21, 0xC4, 0x10, 0xC6, 0x8B, 0xC2, 0x94, 0x77, 0x95, 0xB8, 0x7F, 0xE8, 0x57, 0x5D, - 0xFB, 0xE5, 0x79, 0x70, 0x21, 0x6D, 0x37, 0xAD, 0xA0, 0xB8, 0xC8, 0xD9, 0xE1, 0xD4, 0x3F, 0x3C, - 0xF5, 0x6D, 0x53, 0x56, 0x79, 0x26, 0xA5, 0x2A, 0x32, 0xBE, 0xDD, 0x6D, 0x31, 0x0C, 0x55, 0x59, - 0x12, 0x82, 0xC7, 0x69, 0xC1, 0x04, 0x30, 0xCE, 0xC7, 0x51, 0x3D, 0x3E, 0x3D, 0x5F, 0xE6, 0x65, - 0xBF, 0x5F, 0x13, 0x0C, 0x09, 0x61, 0x5A, 0x1B, 0xAD, 0xF5, 0x6E, 0x55, 0x33, 0x04, 0x43, 0xF0, - 0xD3, 0xA4, 0xEA, 0xB6, 0xA9, 0x9B, 0x26, 0x25, 0x64, 0x8C, 0x69, 0xBA, 0x96, 0x32, 0x88, 0x92, - 0x1F, 0xA6, 0xE1, 0x78, 0x9C, 0xBA, 0xB2, 0x2B, 0x38, 0x62, 0x1C, 0x41, 0x1C, 0x63, 0x00, 0x00, - 0xE0, 0xA2, 0xE3, 0x00, 0x44, 0xEB, 0x80, 0x5A, 0xB4, 0x55, 0x2E, 0xCF, 0x98, 0x92, 0x7A, 0xB8, - 0xC8, 0xFB, 0xC3, 0xD0, 0xAD, 0x3A, 0xA3, 0xF4, 0xF7, 0xBF, 0x7C, 0xEE, 0xEA, 0x7A, 0x58, 0x24, - 0x21, 0x74, 0x55, 0x88, 0xA7, 0xF3, 0x90, 0x09, 0x16, 0x53, 0x84, 0x18, 0xBE, 0x5A, 0x77, 0xCF, - 0x97, 0x51, 0xF0, 0xCC, 0x28, 0x99, 0x00, 0x58, 0xAF, 0x36, 0x5A, 0x2F, 0x08, 0xC3, 0x59, 0x2A, - 0x00, 0x22, 0xA7, 0xDC, 0x7A, 0x7F, 0x9A, 0x15, 0x21, 0xB4, 0x2E, 0x0B, 0x63, 0xFD, 0xBA, 0x69, - 0x18, 0xC1, 0x45, 0x26, 0x20, 0x4C, 0xC3, 0x30, 0x67, 0x42, 0xB8, 0x10, 0x86, 0x79, 0x5E, 0xA4, - 0x21, 0x3C, 0xF3, 0x31, 0x4D, 0xD3, 0xF0, 0xEE, 0xE5, 0x15, 0x42, 0x40, 0x2A, 0x4B, 0xB9, 0x58, - 0xB7, 0xC5, 0xB2, 0x0C, 0xF0, 0xEB, 0xB7, 0xAF, 0x9E, 0x4F, 0x83, 0x77, 0xBE, 0xA9, 0x33, 0xE3, - 0x20, 0xC2, 0x58, 0xAB, 0x85, 0x62, 0x08, 0x31, 0x98, 0x17, 0xED, 0x5D, 0x88, 0x31, 0x62, 0x42, - 0x29, 0xA5, 0x8C, 0xE2, 0x4C, 0x50, 0xA9, 0xF4, 0xB2, 0x68, 0x21, 0x78, 0x56, 0xE4, 0xC1, 0x7B, - 0x67, 0x5C, 0x55, 0x66, 0x31, 0x44, 0xC1, 0x88, 0xD2, 0x16, 0x62, 0x24, 0x38, 0x33, 0xD6, 0x86, - 0x10, 0x72, 0xC1, 0x11, 0x61, 0x97, 0x49, 0x7B, 0xE7, 0x38, 0x13, 0x29, 0x25, 0x63, 0xCC, 0xCD, - 0xA6, 0xBE, 0xD9, 0x6F, 0x95, 0x0F, 0x20, 0x39, 0x4A, 0xD9, 0xD3, 0x61, 0xFC, 0xF6, 0xAB, 0x57, - 0xB7, 0xFB, 0xEE, 0xFF, 0xFD, 0xEE, 0xD3, 0xF7, 0x9F, 0xEE, 0x1E, 0x0E, 0xC7, 0xAF, 0x6E, 0x5F, - 0xFE, 0xA7, 0x3F, 0x7E, 0xF5, 0x7F, 0xFE, 0xDF, 0xFF, 0x32, 0x2B, 0xDF, 0xD6, 0x55, 0x53, 0x67, - 0x45, 0xC6, 0x33, 0x21, 0x3E, 0x7E, 0xB9, 0x53, 0xC6, 0x65, 0x79, 0xC6, 0x05, 0xC3, 0x00, 0x9C, - 0x8E, 0xFD, 0x2C, 0x15, 0xA3, 0xB8, 0xAD, 0xF3, 0xC5, 0x98, 0x18, 0xFD, 0x9F, 0xDE, 0xBF, 0xDD, - 0xAF, 0x37, 0x1F, 0x4E, 0xF6, 0xCB, 0x97, 0xFF, 0xD8, 0xED, 0x6E, 0x5E, 0xBD, 0x7A, 0x7F, 0xEE, - 0x1F, 0x1F, 0x1F, 0xEE, 0xFB, 0xCB, 0x40, 0x29, 0xE9, 0xBA, 0xAE, 0x16, 0x78, 0xDD, 0x94, 0x9F, - 0x9F, 0x2E, 0x10, 0x91, 0x6F, 0xDE, 0xBC, 0x1C, 0x86, 0xE9, 0xCB, 0xD3, 0xE5, 0xE6, 0x66, 0x6F, - 0xB5, 0xD2, 0xD6, 0x32, 0x46, 0x31, 0x86, 0x10, 0xA1, 0x10, 0x41, 0x56, 0xAD, 0x3E, 0x7F, 0xFC, - 0x81, 0x31, 0x5C, 0x35, 0x55, 0xC6, 0x98, 0xE0, 0xE8, 0xCB, 0xC3, 0xE1, 0x78, 0x1E, 0x71, 0x0C, - 0x8C, 0xF1, 0x71, 0x92, 0xAB, 0xA6, 0x7A, 0xF7, 0xF2, 0xEA, 0x2F, 0xDF, 0xFD, 0x34, 0x29, 0xFB, - 0xED, 0xDB, 0xEB, 0xAC, 0x62, 0x5D, 0x59, 0xC3, 0xC8, 0xE7, 0x65, 0x5A, 0xD4, 0xA2, 0x7D, 0xB0, - 0xC6, 0x8A, 0x9C, 0xF2, 0x9C, 0xFD, 0x0A, 0xDE, 0x5B, 0x16, 0x73, 0x3E, 0x4D, 0x8B, 0x34, 0x21, - 0x24, 0x88, 0x00, 0x42, 0xD8, 0x1A, 0x2B, 0xA7, 0x05, 0x02, 0xF0, 0xEA, 0xC5, 0x8E, 0x10, 0xEA, - 0xB4, 0xE7, 0x19, 0xC7, 0x08, 0xF2, 0x8C, 0x26, 0x08, 0x61, 0x8A, 0x5D, 0x57, 0x19, 0xAD, 0xCB, - 0xB2, 0x80, 0x21, 0x98, 0x10, 0x10, 0x82, 0x10, 0x40, 0x1F, 0xFD, 0xF1, 0xF0, 0xAC, 0x54, 0x1C, - 0xC7, 0xC5, 0xC7, 0x68, 0x5C, 0x34, 0xC6, 0x6F, 0x56, 0x75, 0x08, 0x2E, 0xA5, 0x48, 0x21, 0x7A, - 0x75, 0xBD, 0x2D, 0x0B, 0x9E, 0x10, 0x80, 0x18, 0xCD, 0xC3, 0x94, 0x20, 0xF0, 0x09, 0x10, 0xC2, - 0x9C, 0x0F, 0x80, 0xA0, 0xC3, 0x73, 0x3F, 0x8E, 0xD2, 0x85, 0x88, 0x31, 0x29, 0x04, 0x59, 0xB4, - 0x0B, 0x21, 0x6C, 0xB6, 0xDD, 0x66, 0xD5, 0x14, 0x82, 0x94, 0x45, 0x2E, 0x95, 0xE2, 0x99, 0xF0, - 0xDE, 0x3B, 0xEB, 0x52, 0x4A, 0x84, 0x40, 0x08, 0x92, 0x77, 0x09, 0x42, 0xA4, 0x94, 0x31, 0xDA, - 0x62, 0x0A, 0x63, 0x08, 0xEB, 0x75, 0x8D, 0x30, 0x81, 0x20, 0x11, 0x8A, 0xBC, 0x0B, 0x94, 0x61, - 0x08, 0x50, 0xD7, 0xD6, 0x6A, 0x31, 0xF7, 0x8F, 0xFD, 0x24, 0x8D, 0x36, 0x7E, 0x9A, 0xAC, 0x56, - 0x73, 0x00, 0xC8, 0xB8, 0x94, 0x33, 0xFC, 0xFE, 0x55, 0xCD, 0x38, 0x0C, 0x8E, 0x4C, 0x8A, 0x3D, - 0x9C, 0x2E, 0xCF, 0xCF, 0x0F, 0x4D, 0xCE, 0xCA, 0x9C, 0x39, 0x1F, 0x05, 0xC1, 0x08, 0x42, 0x46, - 0x31, 0xE3, 0xE4, 0xF9, 0x22, 0xCF, 0xA3, 0xDC, 0xAE, 0x3B, 0x6B, 0x2C, 0x06, 0x89, 0x10, 0x92, - 0x52, 0x1C, 0x17, 0xA5, 0x9D, 0x17, 0x9C, 0x5E, 0xC6, 0xB9, 0x29, 0x4B, 0x6D, 0x0C, 0xC1, 0xE8, - 0xFD, 0xED, 0x6B, 0x82, 0xF0, 0xBC, 0xC8, 0x71, 0x5E, 0x20, 0x42, 0xEB, 0xD5, 0xEA, 0x97, 0x2F, - 0x77, 0x79, 0xCE, 0x42, 0x34, 0x00, 0xB9, 0x17, 0x9B, 0xED, 0xED, 0xD5, 0xCB, 0xC7, 0xE7, 0x7E, - 0x98, 0x06, 0x08, 0xD3, 0xF3, 0x65, 0x50, 0xDE, 0x72, 0x0E, 0x37, 0x2B, 0x3A, 0x2F, 0xF1, 0xCF, - 0x5F, 0xFF, 0x21, 0xBA, 0xE4, 0xAC, 0xFB, 0x72, 0x3C, 0x2A, 0xE3, 0xB4, 0xB6, 0x59, 0x26, 0xBA, - 0xBA, 0x0C, 0xC1, 0x1F, 0xCE, 0xFD, 0xD5, 0xBE, 0x93, 0x8B, 0x16, 0x22, 0x27, 0x04, 0x78, 0xE7, - 0x09, 0x45, 0x20, 0x25, 0x82, 0xF0, 0x8B, 0x57, 0x57, 0x5A, 0xD9, 0xE3, 0xF1, 0xFC, 0x7C, 0x19, - 0xCE, 0x97, 0x79, 0xBB, 0xCB, 0xEA, 0x22, 0x8B, 0x20, 0x35, 0x65, 0x1D, 0xB4, 0x43, 0x0C, 0x03, - 0x8A, 0xAC, 0xB1, 0x08, 0xC3, 0xB2, 0xC8, 0xA3, 0xD5, 0x5C, 0x54, 0xE3, 0x34, 0x07, 0xAF, 0xAB, - 0x4C, 0x58, 0xE9, 0x12, 0xC2, 0x4D, 0x5D, 0x6A, 0x2D, 0xB5, 0xF5, 0x65, 0x55, 0x27, 0x6F, 0x53, - 0x84, 0x19, 0xA7, 0xDA, 0x6B, 0xE3, 0x7D, 0x55, 0xB6, 0x18, 0x05, 0x08, 0x08, 0x45, 0xD8, 0x1A, - 0x13, 0x7C, 0x04, 0x09, 0xD5, 0x4D, 0xFB, 0xE3, 0xE7, 0x07, 0xE3, 0x5C, 0x59, 0x64, 0xDA, 0x06, - 0x84, 0x20, 0x42, 0xD0, 0x68, 0x9D, 0xE5, 0x59, 0x53, 0x37, 0xC3, 0xD0, 0x6B, 0x63, 0x8D, 0x09, - 0x10, 0xC6, 0xDD, 0xBA, 0xC5, 0x10, 0x0C, 0xA3, 0x4D, 0x04, 0x7B, 0x67, 0x38, 0x25, 0x09, 0x02, - 0x65, 0x8C, 0xB1, 0x4E, 0x1B, 0x93, 0xE7, 0xCC, 0xBB, 0x20, 0x38, 0x80, 0x11, 0xE6, 0xF9, 0x06, - 0x21, 0xE6, 0xAC, 0xBC, 0xBE, 0xB9, 0x41, 0x29, 0x0D, 0xE3, 0xA4, 0xAD, 0xDB, 0x5D, 0x5F, 0x7B, - 0x23, 0xEB, 0x2A, 0x47, 0x30, 0x09, 0xC1, 0x96, 0x59, 0x0F, 0xA7, 0xB3, 0x52, 0x2A, 0x46, 0x9F, - 0x65, 0x59, 0x82, 0x08, 0x91, 0x84, 0x11, 0x84, 0x18, 0x88, 0x82, 0x16, 0xB9, 0x40, 0x00, 0x20, - 0x80, 0x94, 0xB4, 0x45, 0x59, 0xDE, 0x3F, 0xF4, 0xFF, 0xF6, 0xFD, 0x3D, 0x88, 0xBE, 0x6B, 0x4A, - 0x82, 0x90, 0x5A, 0xE6, 0x04, 0x31, 0x22, 0x28, 0xE3, 0x40, 0x30, 0x02, 0x31, 0x75, 0x4A, 0x2D, - 0x0E, 0x5C, 0xEF, 0x6F, 0xFA, 0xD3, 0x13, 0xE3, 0x39, 0x21, 0x5C, 0xCA, 0x51, 0x9A, 0xA5, 0xAA, - 0x4B, 0xEF, 0x43, 0x99, 0x95, 0x1F, 0x1F, 0x0E, 0xA7, 0x71, 0xC4, 0x10, 0x35, 0x65, 0xD1, 0xB5, - 0x8D, 0x92, 0x7A, 0x9E, 0xA7, 0xDD, 0x76, 0x2F, 0x38, 0xB3, 0x46, 0x87, 0x98, 0x8C, 0xF5, 0x10, - 0x63, 0x6D, 0xEC, 0xF3, 0xF9, 0xBC, 0x48, 0x55, 0x97, 0x85, 0xE0, 0xA2, 0x2C, 0xC4, 0xA2, 0x96, - 0x8C, 0x17, 0x55, 0x55, 0x08, 0x06, 0x30, 0xE7, 0x1C, 0x13, 0x6A, 0xAD, 0xFD, 0x55, 0xB5, 0x55, - 0x4A, 0x59, 0x17, 0xF2, 0x5C, 0x48, 0x65, 0x9C, 0xF5, 0x08, 0x21, 0x00, 0x40, 0x55, 0x66, 0xDB, - 0x6D, 0xE3, 0x9D, 0x17, 0x19, 0x27, 0x94, 0x64, 0xB9, 0x70, 0xCE, 0x61, 0x8C, 0x56, 0xEB, 0x26, - 0xCB, 0x28, 0x86, 0x50, 0x29, 0x45, 0x28, 0x4E, 0x10, 0x78, 0xE7, 0xAD, 0xF3, 0xE3, 0xA2, 0xD7, - 0xAB, 0xB2, 0x2A, 0xEB, 0xF3, 0xB8, 0x20, 0x04, 0x40, 0x02, 0x52, 0x29, 0x6B, 0x4D, 0x2E, 0xB2, - 0xB6, 0xCA, 0xCF, 0xC3, 0x34, 0x4C, 0xF2, 0xC5, 0xA6, 0xD5, 0xCA, 0x22, 0xCC, 0x5E, 0xED, 0xD6, - 0x9F, 0xEF, 0x9F, 0xF6, 0xDB, 0xEE, 0xBB, 0x0F, 0x9F, 0x31, 0x46, 0xDF, 0xBC, 0xBE, 0x7E, 0x3E, - 0x0F, 0x89, 0x90, 0xA2, 0x28, 0x2E, 0xFD, 0xE0, 0xAC, 0xCF, 0x18, 0x05, 0x20, 0x4D, 0xD3, 0x72, - 0x38, 0xF5, 0x10, 0x21, 0xCE, 0x88, 0x5C, 0x14, 0x42, 0x68, 0xD5, 0xD5, 0xD3, 0x32, 0x33, 0x46, - 0x52, 0x82, 0xA5, 0x10, 0x6F, 0xAE, 0xF7, 0xBF, 0x3C, 0x3C, 0xDE, 0xDD, 0x7F, 0x5E, 0x5D, 0xBD, - 0xC5, 0x88, 0x2B, 0x39, 0x2D, 0x3A, 0xDD, 0x7D, 0xFE, 0x64, 0x3D, 0xE8, 0xDA, 0x36, 0x13, 0xEC, - 0xE9, 0xE9, 0xF4, 0xE9, 0xE1, 0x68, 0xAD, 0x63, 0x98, 0x68, 0x6D, 0xCE, 0xC3, 0x52, 0x95, 0xF9, - 0xF3, 0xF3, 0x73, 0x84, 0xB4, 0x28, 0x5B, 0xEF, 0x02, 0x84, 0xC9, 0x18, 0x15, 0x12, 0x0E, 0x11, - 0x49, 0x65, 0x00, 0xC2, 0x53, 0xDF, 0x23, 0x90, 0xD4, 0xA2, 0x12, 0x04, 0x75, 0x95, 0x33, 0x46, - 0xCB, 0xB2, 0x88, 0x31, 0xAE, 0xBB, 0x6E, 0x5A, 0xA6, 0xC7, 0xE3, 0x69, 0xBF, 0x6D, 0x77, 0xBB, - 0xEA, 0x6A, 0xBB, 0x4E, 0x81, 0x3F, 0x3E, 0xCF, 0xD3, 0xA2, 0x17, 0x69, 0xAC, 0xF3, 0xF3, 0xF2, - 0x6B, 0x94, 0x22, 0x69, 0x6D, 0x1F, 0xEF, 0x8F, 0x59, 0x59, 0x94, 0x55, 0x86, 0x30, 0x98, 0xC6, - 0x85, 0x09, 0x1E, 0x13, 0x90, 0x8B, 0x72, 0x31, 0x06, 0xE3, 0x8A, 0xBC, 0xFC, 0xE1, 0xC3, 0x1D, - 0xA2, 0x28, 0x17, 0x3C, 0xF8, 0x10, 0x52, 0x7C, 0x7A, 0x3A, 0x2F, 0x4A, 0xB9, 0x10, 0x8E, 0xC7, - 0x5E, 0x4A, 0x4D, 0xB8, 0x38, 0x9F, 0x86, 0xD3, 0xA5, 0x0F, 0x31, 0x11, 0x8C, 0x09, 0x61, 0x79, - 0x91, 0x4F, 0xD3, 0xE2, 0xAD, 0x17, 0x9C, 0xBF, 0x7F, 0xFB, 0xAA, 0xA9, 0xB8, 0x77, 0x76, 0xD3, - 0x36, 0x6D, 0x55, 0xB6, 0xED, 0x0A, 0x43, 0xEA, 0x8C, 0x39, 0x1D, 0x07, 0x17, 0xC2, 0x30, 0x2C, - 0x00, 0xA0, 0xB9, 0x97, 0xD1, 0x45, 0x18, 0xD2, 0xBA, 0xAB, 0x36, 0xEB, 0x26, 0x78, 0xED, 0x9D, - 0xE6, 0x8C, 0x46, 0x90, 0xB6, 0xEB, 0xF2, 0xDD, 0x8B, 0x0D, 0x0C, 0x61, 0x9A, 0xE4, 0x30, 0x2C, - 0x97, 0xD3, 0xA0, 0x94, 0x3E, 0x9E, 0x86, 0xD3, 0x65, 0x58, 0x16, 0xF9, 0x7C, 0x7F, 0xCE, 0x33, - 0xEE, 0x82, 0xF7, 0x3E, 0x7E, 0xB9, 0x3B, 0x3D, 0x3D, 0x5F, 0xAA, 0x92, 0x65, 0x45, 0x06, 0x12, - 0xF0, 0xC9, 0x3B, 0x6F, 0x13, 0x4A, 0x2C, 0x63, 0x10, 0x02, 0x4A, 0xB1, 0x73, 0x6E, 0x5E, 0x16, - 0x51, 0xF0, 0xB2, 0x2A, 0xCA, 0x82, 0xD7, 0x05, 0xCF, 0x33, 0x7A, 0x1E, 0x34, 0x25, 0xEC, 0xEB, - 0xDB, 0xEB, 0xFE, 0x3C, 0x04, 0x97, 0x0E, 0xC7, 0x71, 0xD2, 0xBE, 0x5B, 0xEF, 0xCA, 0x9C, 0x73, - 0x0A, 0xDA, 0xBA, 0x14, 0x8C, 0x68, 0xA3, 0x52, 0xF4, 0x82, 0xA2, 0x98, 0x22, 0x40, 0x2C, 0x26, - 0x64, 0xAC, 0x7D, 0x77, 0xB3, 0xA7, 0x18, 0x48, 0xA5, 0xDE, 0x5C, 0x77, 0xC7, 0xCB, 0x98, 0x40, - 0x0C, 0x21, 0x64, 0x94, 0x58, 0xE7, 0x04, 0xA3, 0x6F, 0x5E, 0x5C, 0x39, 0xE7, 0x39, 0x67, 0x31, - 0x06, 0x10, 0x23, 0x65, 0xEC, 0xD4, 0x0F, 0xC6, 0x6A, 0x8C, 0x30, 0x86, 0xE8, 0xCD, 0xCD, 0xB6, - 0x64, 0xF9, 0x79, 0x50, 0xD2, 0x5A, 0x1F, 0x54, 0x5B, 0xC5, 0x7E, 0x32, 0x82, 0xC7, 0xED, 0x8A, - 0xF4, 0xBD, 0x8F, 0x11, 0xEE, 0x57, 0xBB, 0xE0, 0x81, 0x0D, 0x71, 0x5C, 0xA4, 0x32, 0xB6, 0x6E, - 0xCA, 0xD5, 0xBA, 0x3B, 0x9E, 0xFA, 0x98, 0x22, 0x26, 0x64, 0x18, 0x65, 0xDB, 0xD4, 0xAF, 0x5E, - 0x5C, 0x2F, 0xD6, 0xF5, 0xD3, 0xAC, 0x9D, 0x8F, 0x00, 0x38, 0x1F, 0x9D, 0x0B, 0x65, 0x25, 0xBA, - 0xAE, 0xA9, 0xCB, 0x5F, 0xDB, 0x1F, 0x74, 0x5E, 0x16, 0xA5, 0x9D, 0xD6, 0x1A, 0xC0, 0xE4, 0x82, - 0x9B, 0x17, 0x75, 0x19, 0x26, 0xB9, 0xA8, 0xF1, 0xD2, 0x6B, 0xE3, 0x8E, 0xFD, 0xF9, 0x74, 0xEC, - 0x31, 0x22, 0x14, 0x93, 0xAC, 0xC8, 0xA4, 0x54, 0xE3, 0x22, 0x9F, 0x4E, 0x52, 0xCA, 0x18, 0xDD, - 0xE8, 0xAC, 0x36, 0xC6, 0x27, 0x08, 0x30, 0x23, 0xC1, 0x06, 0x6F, 0xAC, 0x37, 0x81, 0x42, 0x31, - 0x5C, 0x86, 0x18, 0x3C, 0x21, 0x84, 0x53, 0x9A, 0x67, 0x62, 0xB3, 0xAA, 0xBA, 0x3A, 0xDB, 0xAE, - 0xEA, 0xAB, 0x7D, 0xD3, 0x94, 0x39, 0x48, 0xB1, 0x5B, 0x55, 0x59, 0x21, 0x8A, 0x42, 0xAC, 0x56, - 0xD5, 0x7A, 0x53, 0x97, 0x85, 0xD0, 0xCE, 0x2D, 0xE3, 0x82, 0x31, 0xE5, 0x22, 0x77, 0x56, 0x11, - 0x18, 0x08, 0x21, 0x10, 0xA1, 0x69, 0x96, 0xFD, 0x20, 0x17, 0xA9, 0x83, 0xF3, 0x18, 0x25, 0x0C, - 0x61, 0x53, 0xAC, 0x45, 0xB1, 0x59, 0x94, 0xC3, 0x10, 0x74, 0x6D, 0x0B, 0x83, 0xD3, 0x1E, 0xF0, - 0xA2, 0x0A, 0xDE, 0x51, 0xCE, 0x17, 0xAD, 0xAC, 0xB6, 0x00, 0xF2, 0x8C, 0x33, 0xAB, 0x55, 0x08, - 0x71, 0x9C, 0xA5, 0xF1, 0xE0, 0xD8, 0x2F, 0x77, 0x0F, 0x17, 0x90, 0x90, 0x35, 0xD6, 0x38, 0x7F, - 0xE9, 0xE7, 0xE7, 0x43, 0x9F, 0x70, 0x32, 0xDE, 0x5B, 0xEF, 0x44, 0x8E, 0x9B, 0x75, 0xBD, 0xAA, - 0xAB, 0x42, 0xB0, 0xB6, 0x29, 0xDB, 0xBA, 0x5A, 0x94, 0xBD, 0x7D, 0xF5, 0x62, 0xB7, 0xD9, 0x60, - 0x88, 0xAB, 0xB2, 0xF2, 0x31, 0x95, 0xE5, 0x26, 0xE3, 0x14, 0xA5, 0xB8, 0xEA, 0x36, 0xC6, 0xFB, - 0x45, 0x4A, 0x80, 0x20, 0xE7, 0xC2, 0x58, 0x27, 0x95, 0x62, 0x4C, 0x60, 0x8C, 0xDA, 0xBA, 0xDA, - 0xAC, 0xD6, 0xE7, 0xF3, 0xF0, 0x2B, 0xD8, 0xBA, 0xAA, 0xBA, 0x61, 0xE8, 0x8D, 0x5E, 0x42, 0x8C, - 0x21, 0x24, 0x69, 0x6C, 0xDB, 0x56, 0x10, 0xE2, 0xDD, 0xBA, 0x6D, 0xF3, 0xAC, 0xAB, 0x6B, 0x88, - 0xF9, 0xDD, 0xC3, 0x53, 0x93, 0x67, 0x4A, 0x1B, 0x6D, 0x2C, 0x86, 0x08, 0x03, 0x00, 0xAD, 0x35, - 0x21, 0xC6, 0xB2, 0xCC, 0x30, 0x84, 0x00, 0xC0, 0x32, 0x13, 0xC1, 0x07, 0x88, 0x60, 0x55, 0x66, - 0x05, 0xA3, 0xDA, 0xB8, 0x2A, 0xCF, 0x83, 0xF3, 0xFD, 0x65, 0x42, 0x08, 0x82, 0x98, 0xA4, 0x54, - 0xB9, 0xE0, 0x14, 0x21, 0xE7, 0x9C, 0x71, 0x96, 0x21, 0xB4, 0xDB, 0x76, 0x52, 0xDA, 0xA6, 0xAA, - 0x4E, 0xFD, 0x80, 0x11, 0xDC, 0x75, 0x75, 0xC6, 0xC4, 0xA7, 0xFB, 0x47, 0x04, 0x62, 0x8A, 0x91, - 0x53, 0x5C, 0xE6, 0xB9, 0x31, 0xBA, 0x9F, 0x26, 0xEB, 0x3C, 0x42, 0xF0, 0x3C, 0x2E, 0x9F, 0x1E, - 0xCF, 0xA5, 0x60, 0x04, 0x06, 0x44, 0xD1, 0x5F, 0x7E, 0xFC, 0xC5, 0x79, 0x7F, 0xB5, 0x6D, 0x3F, - 0xDE, 0x1D, 0x8D, 0xF5, 0x6F, 0xDF, 0xBC, 0xFC, 0xF4, 0xE5, 0xBE, 0x1F, 0x47, 0x4C, 0x59, 0x88, - 0x51, 0x70, 0x1C, 0xBC, 0x9F, 0x16, 0xD5, 0xB6, 0xF5, 0xE5, 0x7C, 0x69, 0xCA, 0xAC, 0x6B, 0xEA, - 0xBE, 0x1F, 0x5F, 0xDF, 0x6C, 0x21, 0x44, 0xE3, 0x30, 0xBE, 0xB9, 0xD9, 0x1B, 0xE7, 0x3E, 0xDE, - 0x3D, 0x0A, 0x4E, 0xAE, 0xF6, 0xD7, 0x97, 0xD9, 0x25, 0x2C, 0xE4, 0x74, 0x7A, 0x3E, 0x1C, 0x08, - 0xE1, 0x55, 0x2E, 0xA6, 0x71, 0xF2, 0x3E, 0xFC, 0xFD, 0xDF, 0x7C, 0xB5, 0xD9, 0xD4, 0x98, 0xE2, - 0xFB, 0xFB, 0xE3, 0xF3, 0xE9, 0xE4, 0x8C, 0xB6, 0xDE, 0xAD, 0xAF, 0xDF, 0x14, 0x8C, 0x5C, 0xDD, - 0xDC, 0xFC, 0xFC, 0xE1, 0xCB, 0xA2, 0x42, 0x55, 0x6F, 0x8F, 0xE7, 0x1E, 0x40, 0x60, 0xED, 0xE2, - 0x5C, 0x08, 0xD6, 0xC5, 0x94, 0xE6, 0x59, 0x32, 0x42, 0xEA, 0x32, 0x5F, 0x35, 0xD5, 0x7E, 0xB7, - 0xC9, 0x33, 0x36, 0x4C, 0xF3, 0xD5, 0x8B, 0xF7, 0xAF, 0x6E, 0xBF, 0xE2, 0x2C, 0x37, 0x0A, 0x0E, - 0x93, 0x53, 0x11, 0x9D, 0x2F, 0x97, 0x10, 0x62, 0x8C, 0x81, 0x32, 0x3C, 0x4E, 0x4B, 0x5E, 0x08, - 0x6B, 0x2D, 0x17, 0xCC, 0x1A, 0x13, 0xBC, 0x2B, 0x8B, 0xDC, 0x5A, 0x2B, 0x17, 0xE3, 0x9D, 0xF7, - 0x21, 0xC8, 0x59, 0x6E, 0xDA, 0xFA, 0xE9, 0xD4, 0x4B, 0x6D, 0xDA, 0x3A, 0x2B, 0x32, 0xEE, 0x43, - 0x3C, 0x3C, 0x9F, 0x8F, 0xC7, 0x73, 0x5B, 0x17, 0x29, 0x46, 0x00, 0x61, 0x8A, 0x70, 0xEA, 0x25, - 0xA6, 0x84, 0x72, 0x86, 0x30, 0x19, 0x86, 0x39, 0x17, 0x39, 0x42, 0x08, 0x41, 0x58, 0x64, 0xA2, - 0x5B, 0xD5, 0xCE, 0xAB, 0xE0, 0x42, 0x53, 0x94, 0x82, 0x32, 0xA5, 0x7C, 0x48, 0xA1, 0x1F, 0x86, - 0xE0, 0xC2, 0x22, 0x35, 0xE1, 0x64, 0x77, 0xDD, 0x3C, 0x3E, 0x8E, 0xF3, 0x6C, 0xAA, 0x2A, 0xB7, - 0xCA, 0x4F, 0x93, 0x16, 0x8C, 0xE7, 0x9C, 0xD4, 0x15, 0x07, 0x10, 0x5F, 0xEF, 0xB7, 0xCE, 0x79, - 0x0A, 0xD2, 0x6A, 0xDB, 0xB8, 0x18, 0x29, 0x41, 0x55, 0x5B, 0x61, 0x04, 0xBD, 0x8B, 0x3E, 0xF8, - 0x79, 0x94, 0x20, 0x61, 0x46, 0x08, 0x26, 0x58, 0x69, 0x0B, 0x21, 0xA8, 0xDB, 0x1C, 0xC3, 0xB8, - 0x59, 0x97, 0x94, 0x10, 0x42, 0xA0, 0x9C, 0xA5, 0x5C, 0x64, 0x7F, 0x19, 0xBC, 0x71, 0xC1, 0x04, - 0xB5, 0xE8, 0xB2, 0xCE, 0x09, 0x65, 0x28, 0x41, 0x46, 0x70, 0x59, 0xF1, 0xD5, 0xAA, 0x5E, 0x35, - 0x45, 0x55, 0xF0, 0x10, 0xDC, 0xB9, 0x9F, 0x9D, 0x73, 0xD2, 0xD8, 0x0F, 0x5F, 0xEE, 0x53, 0x30, - 0x82, 0x23, 0x8A, 0x61, 0x46, 0x19, 0x04, 0xF0, 0x74, 0x19, 0x18, 0x61, 0xEB, 0xBA, 0x4C, 0x00, - 0x73, 0xC6, 0x8E, 0xA7, 0xE3, 0xBA, 0xA9, 0xCB, 0x3C, 0xFB, 0xEE, 0xC3, 0x2F, 0xFB, 0x55, 0xF5, - 0x70, 0xEC, 0x63, 0x8C, 0x14, 0xE3, 0x10, 0x13, 0xC5, 0x68, 0x94, 0xFA, 0xD5, 0xBE, 0x03, 0x20, - 0x49, 0xA9, 0x31, 0x8C, 0xD3, 0x3C, 0xA7, 0x14, 0x4F, 0xFD, 0x00, 0x40, 0x2C, 0xF2, 0xCC, 0x3A, - 0x53, 0x64, 0x05, 0xA5, 0xF9, 0xF1, 0x32, 0xDC, 0x1F, 0x07, 0xEB, 0x96, 0xEB, 0x1D, 0xF8, 0xF2, - 0xBC, 0x48, 0xE3, 0x43, 0x4C, 0xC6, 0x23, 0x00, 0xC8, 0xDB, 0x57, 0xBB, 0xA6, 0xDA, 0x32, 0x51, - 0x60, 0x42, 0x43, 0x04, 0x6D, 0x5D, 0x67, 0x82, 0x1D, 0x4E, 0x97, 0xD3, 0xE5, 0xF2, 0xCD, 0x57, - 0x2F, 0x08, 0x86, 0xDA, 0xBA, 0xA2, 0xC8, 0xEF, 0x1E, 0x9F, 0xA4, 0xB5, 0xF3, 0xAC, 0x28, 0xE3, - 0xDE, 0x07, 0x04, 0xC0, 0x7E, 0xB7, 0x22, 0x14, 0x73, 0xCE, 0x31, 0x82, 0x65, 0x99, 0xAF, 0xD7, - 0x5D, 0x3F, 0xCC, 0x77, 0x0F, 0xBD, 0x35, 0x21, 0xC6, 0x70, 0x19, 0x97, 0x69, 0xD1, 0xCE, 0x25, - 0x6D, 0x3C, 0xC1, 0x44, 0x9B, 0x78, 0xEA, 0x55, 0x5D, 0x55, 0x20, 0xA1, 0x61, 0x99, 0x17, 0xE3, - 0x94, 0xF5, 0xE7, 0xB3, 0xC4, 0x08, 0x4B, 0xA5, 0x09, 0x4C, 0xD6, 0x3B, 0xE5, 0x92, 0x31, 0xFE, - 0x74, 0x1E, 0x95, 0xF1, 0xA7, 0xF3, 0x0C, 0x21, 0x38, 0x0E, 0xA3, 0xD4, 0xFA, 0xD0, 0xAB, 0xF3, - 0x6C, 0xCF, 0xA3, 0x1C, 0x67, 0xDD, 0x8F, 0xF3, 0x2C, 0xF5, 0xB2, 0x2C, 0x30, 0x05, 0x4E, 0xA9, - 0xC8, 0x04, 0xC4, 0xC8, 0x79, 0xEF, 0xBD, 0xD7, 0xCA, 0xCC, 0xB3, 0x62, 0x04, 0xBD, 0xBC, 0xD9, - 0x96, 0x75, 0x89, 0x30, 0xBA, 0x0C, 0x83, 0xF3, 0x8A, 0xB1, 0xBC, 0x9F, 0xF5, 0x38, 0x2E, 0xD6, - 0xBA, 0x71, 0x9E, 0xAF, 0x37, 0xCD, 0x7E, 0xBD, 0xA1, 0xAC, 0xB4, 0x1E, 0x39, 0x0F, 0x8D, 0x0B, - 0x5C, 0x64, 0x4D, 0xC9, 0x73, 0x41, 0x82, 0x51, 0x2A, 0xC8, 0x61, 0xBE, 0x18, 0x37, 0xF7, 0x63, - 0x2F, 0xE5, 0x32, 0x4D, 0xE3, 0xBC, 0xC8, 0x79, 0x94, 0x65, 0x59, 0x70, 0x4E, 0x09, 0x11, 0x8B, - 0x76, 0xE7, 0x61, 0xF6, 0x31, 0x65, 0x99, 0x90, 0xCA, 0x30, 0xC1, 0xA5, 0xB2, 0x77, 0x5F, 0xCE, - 0xC1, 0xFB, 0x65, 0xD1, 0xCA, 0x9A, 0xF3, 0xB9, 0xE7, 0x0C, 0x36, 0x95, 0x30, 0x6A, 0x41, 0x30, - 0x54, 0x55, 0x99, 0x09, 0x41, 0x29, 0x9B, 0x67, 0x13, 0x13, 0x9A, 0x17, 0x9D, 0xE7, 0x45, 0x5D, - 0xD7, 0xC9, 0xFB, 0x10, 0xC2, 0xE1, 0x70, 0x20, 0x9C, 0xBC, 0xB8, 0x59, 0x6D, 0xDA, 0x7A, 0xB3, - 0xEE, 0xAC, 0xB3, 0x59, 0x5E, 0xB6, 0x4D, 0x99, 0x33, 0x0C, 0x13, 0xD0, 0xC6, 0x58, 0x17, 0xAD, - 0x73, 0x82, 0x67, 0x72, 0x99, 0xFB, 0xF1, 0x82, 0x31, 0x32, 0xD6, 0x8D, 0x52, 0x85, 0x18, 0xEB, - 0xA6, 0x56, 0x4A, 0x56, 0x82, 0x96, 0x65, 0x96, 0x40, 0x7A, 0xEC, 0xA7, 0x75, 0xD7, 0xF8, 0x90, - 0x06, 0xA9, 0x53, 0xF0, 0xB8, 0xA9, 0x2B, 0x6B, 0x2D, 0x84, 0xA9, 0xCA, 0x85, 0x54, 0x9A, 0x63, - 0xC4, 0x09, 0xA2, 0x8C, 0x60, 0x4A, 0xDA, 0xB2, 0xDC, 0xAE, 0x6A, 0xA9, 0x95, 0x94, 0x06, 0x45, - 0xC0, 0x19, 0x99, 0x95, 0xC9, 0x05, 0x8F, 0x00, 0x44, 0x1F, 0x57, 0x6D, 0x8B, 0x09, 0xD2, 0xDA, - 0xD6, 0x19, 0x6B, 0xCA, 0xDC, 0xF9, 0xA8, 0x8D, 0xAF, 0x9A, 0x1A, 0xA4, 0xF0, 0xE2, 0x7A, 0x95, - 0x10, 0x7F, 0x7C, 0x3A, 0x7A, 0xE7, 0x32, 0x2E, 0xFE, 0xF8, 0xBB, 0x6F, 0xFE, 0xEE, 0xF7, 0x5F, - 0x57, 0x65, 0x09, 0x80, 0x17, 0x1C, 0x73, 0xC6, 0x9B, 0xA6, 0x32, 0xDE, 0x78, 0x6B, 0xBE, 0x7D, - 0xF3, 0x62, 0xBD, 0xAE, 0x46, 0xA7, 0xC7, 0x45, 0x27, 0x1F, 0x42, 0x88, 0x8B, 0xD2, 0x6F, 0x5F, - 0xBF, 0x08, 0xDE, 0x9D, 0xCE, 0x17, 0x21, 0x78, 0x8C, 0x89, 0x11, 0x2A, 0x18, 0xC9, 0x84, 0x58, - 0xB5, 0x8D, 0x96, 0x2A, 0xA7, 0xE8, 0xEB, 0x77, 0xAF, 0x9F, 0x8F, 0x67, 0x82, 0xD0, 0xE1, 0x32, - 0xF6, 0xFD, 0x70, 0xB3, 0x59, 0x17, 0x65, 0xF5, 0x4F, 0xFF, 0xFE, 0x43, 0x55, 0x96, 0xEB, 0xBA, - 0x00, 0x44, 0x88, 0x62, 0x6D, 0xCC, 0x32, 0x5C, 0x9E, 0x9A, 0xBA, 0xF8, 0xED, 0xBB, 0x57, 0x52, - 0x49, 0x00, 0xD2, 0xB7, 0xEF, 0x5F, 0x59, 0x97, 0x86, 0x59, 0xA3, 0xE8, 0xCA, 0xA2, 0xF8, 0xE3, - 0x6F, 0xDE, 0x7F, 0xFB, 0xD5, 0xED, 0xEE, 0xF6, 0x8F, 0xCA, 0xA6, 0xAA, 0xDB, 0x43, 0x56, 0x3C, - 0x9F, 0xFA, 0xDD, 0xEE, 0xAA, 0x60, 0x28, 0xAA, 0xD1, 0xC8, 0x21, 0x06, 0xFF, 0xD5, 0xCB, 0x6D, - 0x8A, 0x7E, 0xB5, 0xAE, 0x5F, 0xED, 0xB6, 0xD7, 0x9B, 0x75, 0x91, 0xE5, 0x79, 0x96, 0xC5, 0x10, - 0x31, 0x21, 0x65, 0xDD, 0xA5, 0x94, 0x8F, 0x8D, 0x68, 0x52, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, - 0x41, 0x54, 0x1D, 0x8E, 0x63, 0x02, 0xE2, 0xD3, 0xE7, 0xFB, 0x61, 0x9A, 0xA6, 0x79, 0x3A, 0x9E, - 0x8F, 0x59, 0x5E, 0x70, 0x8A, 0x29, 0x23, 0x52, 0x19, 0x67, 0x1D, 0x25, 0x18, 0x42, 0x34, 0xF4, - 0xD3, 0xCD, 0x66, 0xE5, 0x9C, 0x03, 0x08, 0x69, 0x6D, 0xC7, 0x71, 0xA1, 0x9C, 0xB4, 0x05, 0x1F, - 0xC6, 0x79, 0x56, 0xEA, 0xC5, 0xAE, 0x6B, 0xDB, 0xF2, 0x32, 0xC8, 0x61, 0x5E, 0xF6, 0xDB, 0xE6, - 0x66, 0xBF, 0xFA, 0xB5, 0xF6, 0x0C, 0x12, 0x08, 0x3E, 0x12, 0xC6, 0x7C, 0x88, 0x45, 0xDD, 0x68, - 0xE3, 0x87, 0x61, 0x0A, 0x21, 0x06, 0x17, 0x28, 0xA1, 0x18, 0xE3, 0x61, 0x1C, 0x01, 0x88, 0x08, - 0x41, 0xEF, 0x7D, 0x04, 0xE1, 0x70, 0xEC, 0xC7, 0x59, 0x61, 0x82, 0xFA, 0x71, 0xC1, 0x18, 0x63, - 0x44, 0x17, 0x69, 0x2F, 0xFD, 0x8C, 0x30, 0xC6, 0x18, 0x49, 0xE3, 0x22, 0x00, 0x21, 0x00, 0x67, - 0xFC, 0x38, 0x29, 0x00, 0x90, 0xB3, 0x41, 0x64, 0xE4, 0xEA, 0xBA, 0x0B, 0x20, 0x38, 0xE7, 0x29, - 0x46, 0x84, 0x62, 0x9E, 0x33, 0x84, 0x20, 0x80, 0x69, 0xB7, 0x5F, 0x97, 0x15, 0xCF, 0x2B, 0x61, - 0x4C, 0x2C, 0x4A, 0x4E, 0x70, 0x2A, 0x0A, 0xEA, 0xAC, 0x8B, 0x3E, 0x8E, 0xBD, 0xEA, 0xCF, 0x8B, - 0x54, 0xF6, 0xEE, 0xE1, 0xAC, 0xA5, 0xA5, 0x58, 0x18, 0x99, 0x82, 0x4F, 0x97, 0x93, 0x54, 0x4B, - 0x98, 0x67, 0xAD, 0x94, 0x92, 0x4A, 0x5F, 0xFA, 0x19, 0xC0, 0x24, 0x32, 0x9C, 0x17, 0xE2, 0xC5, - 0xCB, 0xAD, 0xB1, 0x5E, 0x69, 0x33, 0x4E, 0x92, 0x51, 0x18, 0x9D, 0xE3, 0x84, 0xF9, 0x10, 0x87, - 0x45, 0x43, 0x80, 0xAA, 0xA2, 0x60, 0x14, 0x4D, 0x4A, 0xF3, 0x0C, 0x12, 0x94, 0xD6, 0x6D, 0x3B, - 0x2C, 0x8A, 0x53, 0x92, 0x62, 0x98, 0x94, 0xAB, 0xAB, 0x82, 0x60, 0x44, 0x31, 0x1E, 0xA5, 0x6A, - 0xAB, 0x32, 0xCF, 0x18, 0x04, 0x89, 0x51, 0xC4, 0x48, 0xD2, 0xD6, 0x0B, 0x86, 0x09, 0x01, 0x14, - 0x13, 0xA3, 0xB5, 0x76, 0x6E, 0xDB, 0xE4, 0x85, 0xA0, 0x9F, 0x9F, 0xCF, 0x04, 0x27, 0x0C, 0xC1, - 0x2F, 0x9F, 0x07, 0x63, 0x82, 0xD4, 0x49, 0xE9, 0xB8, 0x5D, 0x55, 0xFF, 0xF8, 0xFB, 0x37, 0x20, - 0x66, 0x54, 0x74, 0xF3, 0xA2, 0x86, 0xF1, 0x12, 0xBD, 0xB7, 0xCE, 0x9E, 0xFB, 0xE1, 0xF1, 0x70, - 0xEC, 0x9A, 0x4A, 0x50, 0xAE, 0x94, 0x4E, 0x09, 0x4C, 0x8B, 0x9A, 0x66, 0xE9, 0x7D, 0x30, 0xC6, - 0x11, 0x84, 0xEB, 0x22, 0xCF, 0xB2, 0x5C, 0x29, 0x2B, 0xA5, 0x81, 0x00, 0xA6, 0x04, 0xA4, 0x34, - 0x18, 0xE2, 0xA6, 0x6C, 0x04, 0xA3, 0xF3, 0xA2, 0x94, 0xB2, 0x8B, 0xF2, 0x31, 0x25, 0xEB, 0x42, - 0x0C, 0x09, 0x43, 0xA8, 0xB4, 0x87, 0x88, 0x22, 0xCC, 0xC6, 0x71, 0xBE, 0xF4, 0xF3, 0xB9, 0x9F, - 0xC7, 0xC9, 0x40, 0x44, 0xA4, 0xB6, 0xC3, 0xAC, 0x22, 0x04, 0x36, 0xF8, 0xC5, 0x78, 0x80, 0xD0, - 0xAC, 0xCD, 0x71, 0xD0, 0x93, 0xB4, 0x36, 0xB8, 0xC5, 0xE8, 0xCB, 0xAC, 0x67, 0xE5, 0xA4, 0x76, - 0xD6, 0x27, 0xE3, 0x62, 0x02, 0x29, 0x06, 0xAF, 0x8C, 0xD6, 0xC6, 0x1A, 0x6D, 0x83, 0x75, 0xE7, - 0x61, 0x9A, 0x95, 0x81, 0x10, 0x27, 0x00, 0xAD, 0x8E, 0x87, 0xA7, 0xE7, 0x59, 0xCE, 0x88, 0x31, - 0x14, 0x5D, 0x95, 0xA1, 0xCB, 0xA0, 0x3F, 0x7C, 0x3E, 0x86, 0x18, 0x77, 0x9B, 0x2E, 0x58, 0xD3, - 0x16, 0x30, 0xE7, 0xAC, 0x6D, 0x37, 0x87, 0xCB, 0xF2, 0x74, 0x3C, 0x1B, 0xA3, 0xF3, 0x9C, 0x01, - 0x60, 0x19, 0x4D, 0x52, 0x4E, 0xC1, 0xF5, 0xC6, 0x5E, 0xFA, 0x59, 0x6A, 0x6D, 0x29, 0xC6, 0x4A, - 0xEA, 0x0F, 0x1F, 0xEF, 0xBC, 0x4F, 0x8C, 0x88, 0x18, 0xD1, 0xE9, 0x3C, 0x4C, 0xD2, 0x0C, 0x8B, - 0xFE, 0x55, 0x29, 0x5A, 0xB4, 0x75, 0xC1, 0xE7, 0x05, 0x9D, 0x46, 0xC9, 0x72, 0x0E, 0x10, 0x02, - 0x10, 0x1A, 0x1B, 0x08, 0x63, 0xDE, 0x04, 0xEB, 0x5C, 0x04, 0x51, 0x69, 0x5D, 0x70, 0x2E, 0x38, - 0xF2, 0xDE, 0x69, 0x63, 0x9A, 0xBA, 0x00, 0x29, 0x72, 0x26, 0xBC, 0xB5, 0x31, 0x46, 0x9E, 0x17, - 0xA2, 0xC8, 0x43, 0xF4, 0x52, 0x5B, 0xE7, 0x2C, 0x21, 0x38, 0xCF, 0x39, 0x80, 0x11, 0x91, 0x90, - 0x7C, 0x30, 0xCA, 0x68, 0x2B, 0xB5, 0xD6, 0xD6, 0x79, 0xE7, 0x7C, 0x0C, 0xAE, 0xA9, 0x2B, 0x1F, - 0xE2, 0xAC, 0x54, 0x5D, 0x66, 0x37, 0xBB, 0xDD, 0x34, 0xCE, 0x7D, 0xDF, 0xA7, 0x18, 0x8B, 0x2C, - 0x5B, 0x16, 0x89, 0x09, 0x73, 0xDE, 0x8F, 0x52, 0xD7, 0x65, 0x19, 0x9C, 0xC6, 0x45, 0x96, 0x69, - 0x63, 0x19, 0x06, 0x94, 0xE0, 0x59, 0xEA, 0x9B, 0x4D, 0xC3, 0x19, 0x7D, 0xEE, 0xC7, 0xDD, 0x7E, - 0xA7, 0x95, 0x5A, 0x96, 0x05, 0x00, 0xB0, 0x6B, 0x4B, 0x63, 0x3D, 0x48, 0x80, 0x50, 0xC2, 0x19, - 0xBD, 0x0C, 0x73, 0x55, 0x14, 0xAF, 0xAE, 0xD6, 0xD6, 0x3B, 0x63, 0xDC, 0xD5, 0xAA, 0xAE, 0xAB, - 0xC2, 0x07, 0x40, 0x09, 0x2E, 0x73, 0x01, 0x93, 0xF7, 0xC1, 0x5B, 0x1F, 0xBC, 0xD6, 0x19, 0x67, - 0x65, 0x55, 0xBE, 0xBB, 0x7D, 0x6D, 0xAC, 0x4D, 0x29, 0x32, 0x8C, 0x6E, 0xF6, 0x5B, 0x90, 0x60, - 0x56, 0x30, 0x1C, 0xCD, 0xEF, 0xDE, 0xBF, 0xBE, 0xD9, 0x77, 0xB3, 0xB1, 0x29, 0xF9, 0x08, 0xC0, - 0x66, 0xB7, 0x72, 0x31, 0xBD, 0x7D, 0xFF, 0x1A, 0xA6, 0xA4, 0x8C, 0x62, 0x14, 0x5B, 0xE3, 0x05, - 0x25, 0x8C, 0xA2, 0x97, 0xD7, 0xBB, 0x2C, 0x13, 0xA7, 0xCB, 0x25, 0x67, 0xF8, 0xF5, 0x8B, 0xAB, - 0x1F, 0x7E, 0x79, 0x38, 0x0F, 0xD3, 0xAF, 0xAF, 0xDF, 0xAA, 0x2A, 0xFE, 0xF8, 0xED, 0x37, 0x77, - 0x8F, 0x87, 0x18, 0xC1, 0x1F, 0x7E, 0xFB, 0x9E, 0xE5, 0x4D, 0xD6, 0xBE, 0x8C, 0x31, 0x0C, 0xA7, - 0x2F, 0x02, 0x83, 0xD7, 0x37, 0x7B, 0x46, 0x49, 0x2E, 0xF8, 0xCB, 0x5D, 0xF7, 0x78, 0x38, 0x3B, - 0x54, 0x07, 0xE7, 0xDB, 0x8C, 0xFE, 0xE9, 0x77, 0xDF, 0x76, 0x4D, 0xDB, 0xFB, 0xE2, 0xC3, 0xC3, - 0x69, 0xE9, 0x8F, 0x34, 0xE9, 0xF9, 0xF8, 0x85, 0x04, 0x79, 0xBB, 0x29, 0xB6, 0x5D, 0x96, 0x0B, - 0xF1, 0xE2, 0x6A, 0xFF, 0xF6, 0xC5, 0x55, 0x29, 0x48, 0xB7, 0xEA, 0x36, 0x5D, 0x23, 0x08, 0xBC, - 0x7F, 0xEE, 0x9F, 0xCF, 0xE3, 0xE3, 0xF1, 0xFC, 0x70, 0x18, 0x7F, 0xF9, 0x7C, 0x30, 0xC6, 0x4D, - 0xE3, 0x64, 0xB4, 0x3C, 0x1E, 0x9F, 0x2F, 0x97, 0x13, 0x04, 0x61, 0xB7, 0xCA, 0x94, 0x01, 0x5C, - 0xE4, 0x55, 0xC1, 0x42, 0xF2, 0x52, 0x1A, 0x6B, 0xC3, 0x34, 0x49, 0x6F, 0xC3, 0x76, 0xD5, 0xEC, - 0x76, 0xDD, 0x0F, 0x1F, 0xEF, 0xCB, 0xBA, 0x02, 0x08, 0x3E, 0x3F, 0x1C, 0xAB, 0x82, 0x16, 0x05, - 0x5D, 0x96, 0xB9, 0xCC, 0xB3, 0xBA, 0xCA, 0xA5, 0xB6, 0xFD, 0xA4, 0x08, 0x82, 0x28, 0x25, 0x65, - 0xFC, 0x65, 0x94, 0x2E, 0x04, 0x0C, 0xD1, 0x30, 0xCA, 0x79, 0x51, 0x08, 0x13, 0x17, 0xD2, 0xE7, - 0xCF, 0xF7, 0x8C, 0x12, 0x04, 0x91, 0xB3, 0x2E, 0xCF, 0x85, 0x54, 0xF2, 0xBB, 0xEF, 0x3F, 0xCF, - 0x8B, 0x36, 0xC6, 0x0E, 0x93, 0x24, 0x8C, 0xF4, 0x93, 0xEE, 0x07, 0x69, 0x63, 0x78, 0x3C, 0xF6, - 0x82, 0x67, 0x52, 0x59, 0xE7, 0x02, 0x23, 0x98, 0x12, 0x9A, 0x71, 0xF1, 0x7C, 0xEA, 0x8D, 0xF7, - 0x2E, 0xF8, 0x69, 0x91, 0xCA, 0x58, 0x65, 0x34, 0xE1, 0xE0, 0x7A, 0xD7, 0xCE, 0xFD, 0x62, 0x94, - 0x9F, 0x46, 0xF5, 0xE5, 0xD3, 0x51, 0x4B, 0x6B, 0x7D, 0x04, 0x18, 0x08, 0xC1, 0x18, 0x23, 0x5A, - 0x2B, 0x88, 0x40, 0x04, 0xE9, 0xF4, 0x7C, 0x64, 0x0C, 0xC5, 0x18, 0x09, 0x25, 0xD3, 0xB8, 0xCC, - 0x4B, 0x50, 0xD6, 0xF5, 0xFD, 0x7C, 0xE9, 0xD5, 0x38, 0x5B, 0x86, 0xD8, 0x22, 0xFD, 0x38, 0x4B, - 0x84, 0xD0, 0xE3, 0xE3, 0x39, 0x26, 0xD8, 0xF7, 0xFD, 0x24, 0xED, 0x22, 0xED, 0x79, 0x98, 0xAD, - 0xF5, 0xC3, 0xB8, 0x38, 0x6B, 0xDB, 0x75, 0xB3, 0xDD, 0xB5, 0x55, 0x29, 0x72, 0x8E, 0xBD, 0x4D, - 0x94, 0xB2, 0x04, 0xD2, 0xB4, 0x68, 0x84, 0x49, 0xB0, 0x3A, 0x17, 0x62, 0xB2, 0xEE, 0x3C, 0x4D, - 0x4D, 0x9E, 0x95, 0x45, 0x09, 0x11, 0x98, 0xA5, 0x2B, 0x04, 0x45, 0x18, 0x6E, 0xB7, 0xDD, 0xED, - 0xD5, 0x4A, 0x7B, 0xD0, 0xB5, 0x45, 0x55, 0x08, 0x4C, 0x61, 0x9E, 0x27, 0x8C, 0x93, 0xB7, 0x1E, - 0x82, 0x18, 0x93, 0x4B, 0x29, 0x9D, 0x27, 0xD9, 0x95, 0xD9, 0x4D, 0x57, 0x41, 0x00, 0x16, 0xAD, - 0x8C, 0xB3, 0x5D, 0x53, 0xBE, 0x7F, 0xBD, 0xCF, 0x04, 0xDD, 0xAE, 0xAA, 0x17, 0xFB, 0xCA, 0x38, - 0xB7, 0xEB, 0xDA, 0x8C, 0x94, 0xC7, 0x8B, 0xEE, 0xC7, 0xF9, 0xE3, 0x97, 0xCF, 0xF3, 0xB2, 0x68, - 0xAD, 0xFB, 0x71, 0xB4, 0xD6, 0xDB, 0x10, 0xCA, 0x3C, 0xEF, 0x87, 0x59, 0x1B, 0x15, 0x13, 0xD0, - 0xD6, 0xDB, 0x5F, 0x8F, 0x10, 0x42, 0x30, 0x81, 0xAA, 0xA8, 0xCA, 0x22, 0x7F, 0x78, 0x3A, 0x40, - 0xCC, 0xBC, 0x0F, 0x97, 0x7E, 0xC6, 0x18, 0x07, 0xEB, 0x62, 0x08, 0x79, 0x59, 0x14, 0x65, 0x1E, - 0x43, 0x98, 0x66, 0x29, 0x04, 0x9B, 0x16, 0x07, 0x01, 0x30, 0xD6, 0x73, 0x91, 0x43, 0x88, 0x97, - 0x45, 0x2A, 0x6D, 0x21, 0x80, 0x2E, 0x00, 0x1F, 0x13, 0xC2, 0xD8, 0x86, 0xA8, 0xAD, 0x23, 0x18, - 0x86, 0x00, 0x7C, 0x00, 0xB3, 0xB2, 0xF3, 0x6C, 0x43, 0x04, 0x79, 0x96, 0x85, 0x98, 0x8C, 0x09, - 0x3E, 0x04, 0xCE, 0x31, 0x44, 0x58, 0x6A, 0xF7, 0xAB, 0x99, 0x26, 0xB5, 0x8A, 0x20, 0x58, 0x1B, - 0xAD, 0x72, 0x52, 0x1B, 0xEB, 0x63, 0x3F, 0x48, 0x17, 0xD2, 0x3C, 0x6B, 0x1F, 0x22, 0x65, 0x54, - 0x2A, 0xAB, 0x17, 0x59, 0x09, 0x9E, 0x65, 0xE4, 0xD4, 0x0F, 0xD6, 0xB9, 0x97, 0xDB, 0x1A, 0x01, - 0xCF, 0x19, 0xE0, 0x18, 0x52, 0x96, 0x7F, 0x79, 0x7A, 0x32, 0x6E, 0xC1, 0x30, 0x6C, 0x57, 0x19, - 0x22, 0x7E, 0x5C, 0x06, 0xEF, 0x4D, 0x3F, 0x5F, 0x9A, 0x92, 0x1C, 0xCF, 0xF3, 0x69, 0xB4, 0x21, - 0x44, 0x2D, 0xCD, 0xE1, 0x78, 0x01, 0x90, 0xBC, 0x7F, 0xFF, 0xBB, 0xBC, 0xA8, 0x94, 0x52, 0xD3, - 0x34, 0x69, 0xE3, 0x66, 0x65, 0xC6, 0x79, 0xAC, 0xAA, 0xC2, 0x3B, 0xBD, 0x5A, 0x15, 0x6D, 0xC3, - 0x39, 0xC3, 0xCA, 0xD8, 0x14, 0xD3, 0x30, 0x2E, 0x45, 0x21, 0x78, 0x9E, 0xA9, 0x45, 0x2B, 0x65, - 0x28, 0xC7, 0x9C, 0x65, 0x21, 0x60, 0x6D, 0x62, 0x3F, 0x4D, 0x21, 0x86, 0x10, 0xE2, 0x30, 0xCF, - 0xCA, 0x8C, 0x18, 0xA9, 0x8C, 0xC7, 0xD3, 0x68, 0x20, 0x82, 0xE3, 0x38, 0x58, 0x6B, 0x86, 0x79, - 0xFE, 0xF9, 0xD3, 0x43, 0x4A, 0xE9, 0xF1, 0x70, 0x7A, 0x78, 0x38, 0x14, 0x79, 0xB1, 0xDE, 0x6E, - 0x42, 0x70, 0x5D, 0xDB, 0x32, 0x4A, 0x67, 0xA5, 0x2F, 0xC3, 0x98, 0x42, 0xB4, 0xCE, 0x01, 0x08, - 0xEB, 0xAA, 0x14, 0x94, 0x65, 0x02, 0x21, 0xE0, 0x04, 0x25, 0x4D, 0x51, 0x2A, 0x6D, 0xAC, 0xB1, - 0xFD, 0x30, 0x66, 0x42, 0x14, 0x99, 0x98, 0xE7, 0x09, 0xC7, 0x98, 0x10, 0x4C, 0x7F, 0xF8, 0xFA, - 0xED, 0x22, 0xCD, 0xAB, 0xEB, 0xDD, 0x8B, 0xFD, 0x2A, 0x84, 0xB8, 0x6A, 0x2B, 0xA9, 0x35, 0x67, - 0xAC, 0x10, 0xEC, 0xD5, 0x6E, 0xF5, 0x78, 0xEC, 0x21, 0x84, 0x18, 0x23, 0x0C, 0x20, 0xA7, 0x44, - 0x19, 0xFB, 0x9B, 0xB7, 0x2F, 0x85, 0x60, 0xE3, 0xA8, 0xDA, 0x22, 0x23, 0x30, 0x09, 0xC6, 0xE6, - 0x59, 0x5F, 0x5F, 0x5F, 0x33, 0x46, 0x43, 0x0C, 0x52, 0x4B, 0x02, 0x11, 0x67, 0xE4, 0xF1, 0x3C, - 0xDD, 0xBE, 0x7C, 0xD5, 0xB5, 0x45, 0x70, 0xCA, 0xAB, 0x69, 0xB7, 0x2E, 0x0B, 0xC1, 0x5E, 0x5E, - 0xD5, 0x9B, 0x36, 0xFB, 0xF3, 0xEF, 0x5F, 0x7F, 0xF3, 0xD5, 0xCE, 0xF8, 0x90, 0x67, 0x7C, 0x53, - 0x67, 0xB7, 0x2F, 0xBA, 0x22, 0x67, 0x57, 0xFB, 0x8E, 0x12, 0xDA, 0x8F, 0x93, 0xB3, 0x36, 0xB9, - 0x14, 0x13, 0xA2, 0x18, 0xDF, 0xBE, 0xD8, 0x63, 0x04, 0x7F, 0xF9, 0xFC, 0x90, 0x0B, 0xBE, 0x5F, - 0xD5, 0xA3, 0x4D, 0x01, 0x17, 0xA7, 0xD3, 0xE9, 0x7A, 0xD7, 0xFD, 0xE6, 0xDD, 0xAB, 0xDB, 0xDB, - 0xD7, 0x37, 0x37, 0x57, 0xB9, 0x60, 0xEB, 0xF5, 0x26, 0x22, 0x72, 0x75, 0xFB, 0xBB, 0xEF, 0xBF, - 0xFF, 0x1E, 0x27, 0xFD, 0xFA, 0xAA, 0x60, 0x98, 0x9C, 0x4E, 0x17, 0x82, 0x51, 0x5B, 0x95, 0xFB, - 0x6D, 0x33, 0xF4, 0xD3, 0xD5, 0xFE, 0x6A, 0xD3, 0x35, 0xB7, 0x37, 0xDB, 0x2F, 0x0F, 0x87, 0xE7, - 0x09, 0xFC, 0xD3, 0xBF, 0xFE, 0x6B, 0x16, 0xC7, 0x4D, 0x9B, 0x3B, 0x35, 0x55, 0x19, 0xD3, 0xDA, - 0xF8, 0x18, 0x3E, 0x7E, 0xFE, 0xAC, 0xF4, 0xA4, 0xE4, 0x72, 0x3C, 0x1E, 0x87, 0xC5, 0xE1, 0x72, - 0x6F, 0x03, 0xB4, 0xC6, 0x00, 0xE0, 0x18, 0xC3, 0x3E, 0x38, 0xCE, 0x59, 0x4C, 0x69, 0x91, 0xF6, - 0x3C, 0xF4, 0x4A, 0x9B, 0x4B, 0x7F, 0x99, 0xE5, 0x52, 0x66, 0x74, 0xD5, 0x75, 0xDA, 0x03, 0x08, - 0x92, 0x33, 0x6A, 0xE8, 0x67, 0xC2, 0x48, 0x80, 0xE9, 0xCD, 0xCD, 0xCE, 0xB9, 0xF0, 0xFB, 0x6F, - 0xDE, 0x7C, 0xBA, 0x3F, 0x5C, 0xFA, 0x11, 0x81, 0x88, 0x10, 0x14, 0x19, 0xA5, 0x30, 0x39, 0x1F, - 0x01, 0x22, 0x9C, 0x32, 0xA5, 0x7D, 0x4C, 0x70, 0xD5, 0x16, 0x20, 0xC5, 0x0F, 0x5F, 0x8E, 0x21, - 0x22, 0x42, 0xC9, 0xE1, 0xD8, 0x8B, 0x2C, 0x4F, 0x29, 0x26, 0x00, 0x11, 0x45, 0xA7, 0xF3, 0xB1, - 0xCE, 0x05, 0xE7, 0x84, 0x70, 0x56, 0xE5, 0x85, 0x36, 0xE6, 0x32, 0xF5, 0x5D, 0xD7, 0x12, 0x82, - 0x2F, 0xC3, 0x32, 0xCE, 0x66, 0x9A, 0xCD, 0xB8, 0xE8, 0xB2, 0xC8, 0x29, 0x85, 0xE7, 0x49, 0x62, - 0x84, 0x28, 0xC5, 0x5A, 0x69, 0xE7, 0xA2, 0xF1, 0x61, 0xD1, 0xD6, 0x58, 0x27, 0x38, 0x9E, 0x17, - 0x79, 0xBA, 0x4C, 0x94, 0xD3, 0xCD, 0xB6, 0xBA, 0xDA, 0x75, 0x6A, 0x76, 0x9F, 0x3E, 0x5F, 0x04, - 0xE7, 0xB3, 0x54, 0xC7, 0xCB, 0xC2, 0x18, 0xBD, 0x9C, 0x67, 0x6B, 0xB4, 0x71, 0xE1, 0x74, 0x9C, - 0xBE, 0xFC, 0xFC, 0xAC, 0x95, 0x95, 0x8B, 0x3A, 0x9E, 0xE6, 0x94, 0xC0, 0x78, 0x91, 0x6A, 0x36, - 0xCE, 0x79, 0x65, 0x82, 0x76, 0xE1, 0xD2, 0xCF, 0x5C, 0xF0, 0x3C, 0x2F, 0xAF, 0x36, 0x1B, 0x63, - 0x4D, 0x82, 0x78, 0x96, 0x2A, 0x21, 0x46, 0x08, 0x24, 0x04, 0x01, 0x44, 0x7C, 0x4A, 0x5A, 0x6A, - 0xCA, 0x68, 0x82, 0x40, 0x2E, 0xCA, 0x1A, 0xE7, 0x7D, 0x2C, 0xCB, 0x3C, 0x17, 0x99, 0x73, 0x41, - 0x69, 0x29, 0x04, 0xCB, 0x05, 0x79, 0xB1, 0xEB, 0x62, 0x8A, 0x9C, 0x65, 0xC7, 0xCB, 0x50, 0x67, - 0xE2, 0x66, 0xB3, 0x6A, 0x9A, 0x72, 0x9E, 0x66, 0x02, 0xE0, 0x76, 0xD5, 0x0C, 0xB3, 0xBA, 0xD9, - 0xAC, 0x10, 0xC4, 0x3E, 0x31, 0x2E, 0xA8, 0x94, 0xB2, 0x2A, 0xF3, 0x42, 0xA0, 0xF3, 0xA5, 0xE7, - 0x59, 0x9E, 0xF1, 0x44, 0x38, 0x26, 0x8C, 0x73, 0xC6, 0xDF, 0xBC, 0xD8, 0x5C, 0x5D, 0xAD, 0x6E, - 0x6E, 0x6E, 0xAE, 0xAF, 0xF6, 0xD7, 0xBB, 0xD5, 0xBB, 0xD7, 0xAF, 0xDA, 0xA6, 0xBA, 0xDA, 0xAD, - 0x5E, 0xBC, 0xBA, 0xAE, 0xDB, 0xFA, 0xAB, 0xF7, 0x2F, 0xBB, 0xB6, 0x9B, 0xA4, 0xF5, 0xC1, 0x6B, - 0xAB, 0x94, 0xD2, 0x6F, 0x5F, 0xBD, 0x20, 0x18, 0x10, 0x14, 0x67, 0x29, 0x6D, 0x08, 0xDA, 0x58, - 0x65, 0x0C, 0xC5, 0xA0, 0xC8, 0x32, 0x6D, 0x9C, 0xF5, 0x5E, 0x88, 0x7C, 0x59, 0x24, 0xC6, 0x68, - 0x5A, 0xE4, 0xE3, 0xE1, 0x59, 0x1A, 0x57, 0x35, 0x6B, 0xC1, 0x88, 0xB7, 0xF6, 0x7A, 0xB7, 0x2E, - 0x84, 0x68, 0xDB, 0xBC, 0x29, 0xF3, 0x5D, 0xDB, 0x6C, 0xBB, 0x6A, 0xDD, 0xE6, 0x2F, 0xAF, 0xB6, - 0x75, 0xCE, 0x95, 0xB2, 0x79, 0x9E, 0x25, 0x88, 0xCE, 0xE7, 0x01, 0x42, 0x40, 0x08, 0x46, 0x00, - 0x24, 0x08, 0x7D, 0x88, 0x18, 0x21, 0x82, 0x51, 0x59, 0x70, 0x4A, 0x90, 0x92, 0x8E, 0x53, 0x6C, - 0x5C, 0x24, 0x94, 0x95, 0x79, 0xB6, 0x2C, 0xCA, 0x5A, 0x0F, 0x21, 0xF2, 0x21, 0x42, 0x84, 0x9D, - 0x07, 0x09, 0x80, 0x77, 0x37, 0xDD, 0xC3, 0x61, 0x40, 0x98, 0x94, 0x9C, 0x30, 0x0C, 0x46, 0x69, - 0x74, 0x0C, 0x88, 0x20, 0x98, 0x20, 0x15, 0x6C, 0x5A, 0x94, 0x75, 0x8E, 0x72, 0xE6, 0xA4, 0x2E, - 0x38, 0x45, 0x10, 0x1D, 0xCF, 0x3D, 0x13, 0x6C, 0x5D, 0x12, 0xEF, 0xAC, 0x73, 0x9E, 0x13, 0x2C, - 0x18, 0xA5, 0x82, 0x5A, 0xAF, 0x9C, 0x0D, 0x6D, 0x27, 0x8C, 0xF3, 0xDA, 0xB8, 0x3A, 0x17, 0x1C, - 0xA6, 0x4D, 0x93, 0x1F, 0x2F, 0xF3, 0xE3, 0xC5, 0xF8, 0x08, 0xCE, 0x97, 0x45, 0x4A, 0xD3, 0x36, - 0xF5, 0xBB, 0x77, 0xBF, 0xDB, 0xAC, 0xB6, 0xE3, 0x70, 0x19, 0xA7, 0x29, 0x46, 0xB3, 0xDA, 0xD6, - 0x84, 0x20, 0xC1, 0x38, 0xC1, 0x00, 0xA4, 0x50, 0x70, 0x1A, 0x8C, 0xC7, 0x0C, 0x47, 0x90, 0xBC, - 0x8F, 0xAB, 0x55, 0x4B, 0x10, 0x31, 0x52, 0x59, 0xE3, 0xD5, 0xAC, 0x53, 0x48, 0x08, 0x11, 0x6B, - 0x62, 0x3F, 0x19, 0xE7, 0xC3, 0x38, 0x8C, 0x08, 0x13, 0x65, 0x9D, 0x75, 0xE3, 0x65, 0x98, 0x13, - 0x00, 0x8B, 0xD4, 0x87, 0xD3, 0xD9, 0x58, 0x67, 0x7D, 0x78, 0x78, 0x3E, 0x46, 0x88, 0x28, 0xA5, - 0xF3, 0xBC, 0x18, 0xEB, 0x09, 0xA5, 0x88, 0x33, 0x9E, 0x67, 0x6D, 0xC3, 0x23, 0x4A, 0x59, 0x8E, - 0x76, 0x9B, 0x7C, 0xD5, 0x55, 0x94, 0x91, 0x90, 0x20, 0x48, 0x80, 0x42, 0x2F, 0x08, 0x0A, 0xCE, - 0xFA, 0x10, 0xCA, 0x8C, 0x3F, 0x9F, 0x7B, 0x84, 0x50, 0x5B, 0x96, 0x10, 0x41, 0xA5, 0xAD, 0x75, - 0x0E, 0x0B, 0x8E, 0x5E, 0xED, 0xD6, 0xBB, 0x55, 0x8B, 0x41, 0xFA, 0xFB, 0x3F, 0xFE, 0xD6, 0x58, - 0xB7, 0x5A, 0xD5, 0x8B, 0x31, 0x30, 0x86, 0xAE, 0x2A, 0xAA, 0x8C, 0x2C, 0x8B, 0xF2, 0x21, 0x31, - 0xC6, 0x0F, 0xE7, 0x61, 0xB7, 0x5B, 0xED, 0xB6, 0xEB, 0x75, 0x53, 0x57, 0x79, 0x16, 0x62, 0xF4, - 0x3E, 0x54, 0x05, 0x83, 0x88, 0xBC, 0x7F, 0xF7, 0x55, 0xDD, 0x75, 0x55, 0x55, 0xA5, 0x94, 0xA6, - 0x69, 0xA4, 0x84, 0xD6, 0x55, 0x4E, 0x08, 0xDE, 0x74, 0xC5, 0xDF, 0xFC, 0xF6, 0x65, 0x5B, 0xD2, - 0x8C, 0x82, 0xBA, 0xE4, 0xAF, 0xAE, 0x1B, 0x90, 0x82, 0xD4, 0x6E, 0xE8, 0x07, 0x63, 0xE2, 0xB0, - 0xB8, 0xA3, 0x2C, 0x71, 0xB0, 0x94, 0x44, 0x82, 0xD1, 0xA6, 0xCD, 0xBA, 0x4A, 0x34, 0x39, 0xAB, - 0x0B, 0xDE, 0x14, 0xE2, 0x7A, 0xDB, 0x6C, 0x56, 0xC5, 0xDB, 0x57, 0x9B, 0x6D, 0x57, 0x9F, 0x8F, - 0x97, 0x52, 0xF0, 0x57, 0xD7, 0xFB, 0x08, 0xB1, 0xB1, 0xAE, 0xDB, 0xBC, 0xA8, 0x32, 0x7A, 0xBD, - 0xBB, 0xE2, 0x3C, 0xFF, 0xFD, 0x6F, 0xDE, 0x20, 0x94, 0xAA, 0xB2, 0xBC, 0x4C, 0x52, 0xB4, 0xAF, - 0xFE, 0xF2, 0xCF, 0xFF, 0x0D, 0xBA, 0xD3, 0xEF, 0xBE, 0xDA, 0x62, 0x0E, 0x30, 0xC1, 0x5D, 0x5B, - 0x8A, 0x8C, 0x6C, 0xDA, 0xB2, 0xA9, 0x8B, 0xAB, 0xDD, 0x2A, 0x81, 0x98, 0x97, 0x1D, 0x01, 0x7E, - 0xD6, 0xFE, 0xBC, 0xB8, 0x1C, 0xBB, 0x55, 0x5D, 0xCC, 0x72, 0xD1, 0xC6, 0x0E, 0xD3, 0x0C, 0x31, - 0x94, 0x52, 0xBA, 0xE0, 0x2E, 0xE3, 0xBC, 0x68, 0xA5, 0x3C, 0x2A, 0xF7, 0xBF, 0xB9, 0x4C, 0xCB, - 0x77, 0xFF, 0xFE, 0xAF, 0xF3, 0x3C, 0xC4, 0x14, 0xB5, 0x31, 0x94, 0x53, 0x91, 0xB1, 0xCD, 0xBA, - 0xC2, 0x31, 0x0A, 0x46, 0xCF, 0xE3, 0x62, 0xAD, 0xDE, 0x6D, 0x6B, 0xED, 0x3C, 0xC2, 0xE4, 0x70, - 0x38, 0xED, 0xBA, 0x0C, 0x42, 0x8C, 0x20, 0xA8, 0x72, 0x4E, 0x00, 0x68, 0x0B, 0xE1, 0x7C, 0xF8, - 0xED, 0xFB, 0xDB, 0xBF, 0xFC, 0xC7, 0x4F, 0x4D, 0x5B, 0x31, 0x42, 0xA4, 0x52, 0x75, 0xDB, 0x9C, - 0x8E, 0x03, 0x4C, 0x89, 0x60, 0x8A, 0x11, 0xB4, 0x21, 0x3A, 0x6B, 0x9D, 0xF7, 0x52, 0x59, 0x6B, - 0x7D, 0x04, 0x30, 0x46, 0x68, 0x8C, 0xB6, 0x2E, 0x71, 0x46, 0xB3, 0x2C, 0xB3, 0xCE, 0x18, 0xA5, - 0x8A, 0x8C, 0xF2, 0x8C, 0x81, 0x08, 0x33, 0x41, 0x4E, 0x97, 0xCB, 0xB4, 0xA8, 0xDD, 0xA6, 0x95, - 0x4A, 0x2F, 0xDA, 0x66, 0x19, 0x5F, 0x16, 0xFD, 0x87, 0x6F, 0x6E, 0x8B, 0x9C, 0xB7, 0x25, 0x52, - 0xC6, 0x39, 0x17, 0x38, 0xA3, 0xA7, 0xCB, 0x88, 0x30, 0x4A, 0x10, 0x9D, 0x87, 0xB1, 0xA9, 0xC4, - 0x9B, 0xD7, 0x7B, 0x42, 0x71, 0x59, 0xB0, 0x97, 0x37, 0x1D, 0xC3, 0xA8, 0x2A, 0xF2, 0xC7, 0xC7, - 0x49, 0x08, 0xE1, 0xBC, 0xFF, 0xE5, 0xCB, 0x61, 0xBF, 0x6F, 0x7E, 0xFB, 0xCD, 0x2B, 0x6D, 0x9D, - 0x5C, 0x8C, 0x0F, 0x41, 0x4B, 0x87, 0x08, 0x39, 0x9D, 0x67, 0x6B, 0x7D, 0x08, 0x41, 0x2D, 0xCE, - 0xBA, 0xE8, 0x7C, 0x02, 0x10, 0x4D, 0xB3, 0x51, 0xDA, 0x2A, 0xE3, 0x09, 0xE5, 0xB9, 0xC8, 0x96, - 0x65, 0x11, 0x9C, 0x34, 0x55, 0x75, 0xF7, 0xF8, 0xE4, 0xBC, 0xA7, 0x08, 0x3B, 0x0F, 0xA4, 0xD4, - 0x31, 0x06, 0xA3, 0x5D, 0x0C, 0x11, 0x81, 0x84, 0x10, 0x9C, 0x66, 0x5D, 0xE4, 0x42, 0x2D, 0x32, - 0x85, 0x54, 0xE5, 0xE2, 0x66, 0xBF, 0xDE, 0x6F, 0xDA, 0xA6, 0xE0, 0x39, 0xA3, 0x45, 0x91, 0x21, - 0x80, 0x36, 0x75, 0xBE, 0x6E, 0x72, 0x91, 0x57, 0x3E, 0x84, 0xFE, 0x72, 0x21, 0x18, 0x52, 0x4E, - 0xCB, 0x9C, 0x0C, 0x93, 0xB2, 0x2E, 0x06, 0xBB, 0x2C, 0x8B, 0xD9, 0x74, 0x75, 0xF4, 0xCE, 0x28, - 0x05, 0x10, 0x8F, 0x21, 0x25, 0x98, 0x6C, 0x48, 0xEF, 0x5F, 0xBF, 0xB8, 0xD9, 0x75, 0xEB, 0xAE, - 0x6B, 0x9B, 0x2E, 0x02, 0xA6, 0x74, 0x48, 0x09, 0x2A, 0x65, 0x3F, 0x7D, 0x79, 0x7E, 0x7C, 0xEE, - 0xCF, 0x97, 0xC9, 0x85, 0xD0, 0x0F, 0x1A, 0x51, 0x26, 0x72, 0xD1, 0xB5, 0xC5, 0xBA, 0x2D, 0x5E, - 0xBD, 0x58, 0xEF, 0xB7, 0xCD, 0x7E, 0xDB, 0x5E, 0x6D, 0x5B, 0x84, 0x31, 0x48, 0xA9, 0xA9, 0x8A, - 0x4C, 0x08, 0x0C, 0x20, 0x4C, 0xE9, 0x38, 0x4C, 0x00, 0x00, 0xCE, 0xD8, 0x76, 0xDD, 0xF4, 0xFD, - 0xB0, 0xDB, 0x6E, 0x12, 0x44, 0x00, 0x80, 0x14, 0xE3, 0xEB, 0xAB, 0x6D, 0x5B, 0x15, 0x18, 0xC0, - 0x10, 0xA2, 0xD6, 0x4E, 0xA9, 0xE5, 0x3C, 0x0C, 0xC6, 0x5A, 0x04, 0x71, 0x59, 0xE7, 0x37, 0x9B, - 0xD5, 0xCD, 0xBE, 0xDB, 0x6D, 0xCA, 0xBB, 0x87, 0x93, 0xB6, 0xBE, 0x2C, 0xB3, 0x14, 0x03, 0x84, - 0xBF, 0xCE, 0x7C, 0xE0, 0xB2, 0xE4, 0x52, 0xDB, 0xAE, 0xC9, 0x82, 0x8F, 0x29, 0xA6, 0x97, 0xFB, - 0xCD, 0x8B, 0xDD, 0xAA, 0x6B, 0x8A, 0x65, 0x96, 0xC6, 0xD8, 0x32, 0x17, 0xDA, 0xF8, 0x08, 0x00, - 0x44, 0x54, 0x4A, 0x95, 0x09, 0x66, 0xB4, 0x9D, 0xA4, 0xA2, 0x18, 0x76, 0x35, 0xBB, 0xF4, 0x32, - 0x02, 0x50, 0xD5, 0x42, 0x64, 0x59, 0x5E, 0x30, 0x8C, 0x52, 0xB3, 0xAA, 0xAA, 0xB6, 0x32, 0xCE, - 0x95, 0x8C, 0x7A, 0x6B, 0x16, 0xA5, 0x13, 0x44, 0x29, 0xF9, 0xCB, 0x30, 0x65, 0x9C, 0xB5, 0x55, - 0x4E, 0x18, 0x66, 0xA2, 0x8A, 0xC9, 0x39, 0xE7, 0x52, 0x02, 0xCF, 0xBD, 0x26, 0x18, 0x39, 0xA7, - 0xF3, 0x9C, 0x57, 0x25, 0x3F, 0xF7, 0x6A, 0x98, 0x97, 0x75, 0x57, 0x94, 0x9C, 0xB6, 0x55, 0x76, - 0xBD, 0xA9, 0x36, 0xAB, 0x1B, 0x42, 0x8B, 0xC3, 0xD3, 0xC3, 0xE9, 0x74, 0x80, 0x28, 0xEE, 0xF7, - 0x5D, 0x96, 0x21, 0xC1, 0x08, 0x63, 0x2C, 0xC6, 0xB8, 0x48, 0x15, 0x7D, 0x2C, 0xB3, 0xFC, 0x3C, - 0x4C, 0x4A, 0xDB, 0xFD, 0x6E, 0x93, 0x53, 0xF6, 0xE5, 0xEE, 0xC0, 0x19, 0x95, 0x8B, 0xCE, 0x72, - 0x16, 0x22, 0x42, 0x00, 0xA6, 0x14, 0xAC, 0x8B, 0x8C, 0xB3, 0x32, 0xE7, 0x65, 0x91, 0x7B, 0x6F, - 0xBC, 0x4B, 0xFD, 0x1C, 0xAC, 0x4F, 0x82, 0xE1, 0xE3, 0x65, 0x9C, 0x16, 0x67, 0x8C, 0xAD, 0xCA, - 0xF2, 0xFD, 0xED, 0x6B, 0x65, 0xA4, 0x35, 0x36, 0xF8, 0x24, 0x44, 0xF6, 0xF0, 0x74, 0xB0, 0x56, - 0x69, 0xAD, 0x7E, 0xFE, 0xFC, 0x04, 0x49, 0xA4, 0x8C, 0x23, 0xC6, 0x78, 0x86, 0x6F, 0x6E, 0x36, - 0x55, 0x41, 0x2B, 0x81, 0x42, 0xD4, 0x75, 0x9E, 0xDD, 0x5C, 0xBD, 0x8E, 0xC1, 0x4F, 0x8B, 0x7C, - 0xFF, 0xF6, 0x4D, 0x4A, 0x69, 0x59, 0x96, 0xEB, 0xEB, 0xEB, 0xF5, 0x7A, 0x8D, 0xFF, 0xF3, 0xFF, - 0xF4, 0xDF, 0xD5, 0x4D, 0x6B, 0xE5, 0xF2, 0xE7, 0xDF, 0x7F, 0x2D, 0xB5, 0xB7, 0x4A, 0x41, 0x8C, - 0x42, 0x4C, 0xEF, 0xDE, 0xBC, 0xCC, 0x8B, 0xC2, 0x58, 0x67, 0x6C, 0xA8, 0x9A, 0x35, 0xC6, 0x69, - 0xBB, 0x6D, 0xAF, 0xAE, 0x77, 0xEB, 0x75, 0x55, 0x08, 0x86, 0x30, 0x70, 0x3E, 0x36, 0x55, 0xD1, - 0xD4, 0xCD, 0xD5, 0xFE, 0x7A, 0xB7, 0xDF, 0x5B, 0xEB, 0x11, 0x4C, 0xCE, 0x48, 0x6B, 0x34, 0xA6, - 0xF8, 0x9B, 0xDB, 0x9B, 0xD7, 0x57, 0xDD, 0xCB, 0x6D, 0x63, 0x94, 0x1A, 0xC6, 0x45, 0x29, 0x7B, - 0x38, 0x8D, 0x77, 0x8F, 0xE7, 0x2F, 0xCF, 0xFA, 0xC3, 0xA7, 0xC3, 0xC3, 0xD3, 0x30, 0x8C, 0x6A, - 0xD6, 0x54, 0x86, 0xEC, 0x72, 0xB8, 0xAF, 0x72, 0x34, 0xCC, 0xEA, 0xF9, 0x38, 0xDC, 0xDD, 0x1F, - 0x62, 0xF2, 0x59, 0x4E, 0x0A, 0xC1, 0xD6, 0x6D, 0xB1, 0xDD, 0xE4, 0x8C, 0x41, 0xC1, 0xF0, 0x66, - 0xDD, 0xEC, 0x37, 0x55, 0x80, 0xE4, 0xD3, 0xF3, 0x12, 0xCC, 0x42, 0x79, 0x86, 0x28, 0x73, 0xEA, - 0x12, 0x23, 0x5A, 0xB5, 0x19, 0xF4, 0xCA, 0x3A, 0xF0, 0x34, 0xC2, 0xC7, 0xC3, 0x29, 0x03, 0xCB, - 0xFF, 0xFC, 0x3F, 0xFE, 0xED, 0xB1, 0x3F, 0x9F, 0x2F, 0x17, 0x88, 0x00, 0x00, 0xC1, 0x04, 0x47, - 0x19, 0x76, 0xC6, 0xCE, 0x52, 0x51, 0x82, 0x54, 0x10, 0xFF, 0xFE, 0xE3, 0xA7, 0x41, 0xBA, 0x4F, - 0x5F, 0x3E, 0x6F, 0xEA, 0xE2, 0x78, 0x3E, 0x73, 0x46, 0xBD, 0x8F, 0xA7, 0x7E, 0x18, 0xE7, 0x65, - 0x96, 0xEA, 0xE3, 0xDD, 0xA9, 0x6B, 0xBB, 0x5C, 0xD0, 0xC8, 0x57, 0x93, 0x5C, 0x86, 0xD3, 0x5D, - 0x5E, 0x55, 0x56, 0x1B, 0x6B, 0xF5, 0xDD, 0xF3, 0x39, 0x21, 0x78, 0x3E, 0x0F, 0x46, 0x9B, 0x4D, - 0x57, 0x63, 0x08, 0x8D, 0x31, 0xE3, 0xB2, 0x6C, 0x56, 0x15, 0x84, 0xF0, 0x7C, 0x3A, 0x0F, 0xD3, - 0x54, 0x64, 0xD9, 0xC7, 0xBB, 0xA7, 0x17, 0xBB, 0x4E, 0x6B, 0xFB, 0xA7, 0x6F, 0x5E, 0xFF, 0xDB, - 0x0F, 0x9F, 0x6E, 0xF6, 0x3B, 0x4C, 0xF9, 0x7F, 0xFC, 0xF0, 0xB1, 0xCC, 0x45, 0x8C, 0x81, 0x63, - 0x02, 0x40, 0xB2, 0xCE, 0xBD, 0xB9, 0xDA, 0x4D, 0xB3, 0xDC, 0x74, 0x35, 0x04, 0x50, 0x70, 0x11, - 0x00, 0x98, 0x66, 0x45, 0x08, 0x09, 0x31, 0x40, 0x08, 0x08, 0xC5, 0x8B, 0x94, 0x9B, 0xF5, 0x6A, - 0x51, 0xCA, 0x39, 0xDB, 0x36, 0x65, 0x59, 0x08, 0x6D, 0x1C, 0x86, 0x48, 0x1A, 0x93, 0x40, 0xCA, - 0x58, 0xE6, 0xAC, 0x1B, 0x97, 0x45, 0x1B, 0x17, 0x42, 0xEC, 0xAA, 0xEC, 0x72, 0x99, 0x87, 0x69, - 0x68, 0x6B, 0xDE, 0x95, 0x02, 0x03, 0xF4, 0xE5, 0xF1, 0xE4, 0x7C, 0xF0, 0xDE, 0x43, 0x0C, 0x32, - 0xCE, 0xEB, 0x92, 0x15, 0x39, 0x16, 0x9C, 0x32, 0xCC, 0x82, 0x73, 0x4D, 0x99, 0x39, 0x93, 0x0E, - 0xA7, 0xE9, 0xD7, 0xA7, 0xE0, 0x74, 0x19, 0xAF, 0x36, 0x9B, 0xA1, 0x9F, 0xE7, 0x45, 0xD6, 0x55, - 0x5E, 0x66, 0x59, 0x88, 0x7E, 0xD6, 0x56, 0x6B, 0x23, 0x17, 0x9D, 0x12, 0x88, 0x09, 0x68, 0x1B, - 0x44, 0xC6, 0x21, 0x46, 0x4A, 0x79, 0xE7, 0x7C, 0x5D, 0xE7, 0xB9, 0xE0, 0x4D, 0xDD, 0xD4, 0xF5, - 0xEA, 0xF5, 0xCB, 0xFD, 0x8B, 0x5D, 0xFD, 0xFE, 0xF6, 0x6A, 0xB7, 0xED, 0x9A, 0xBA, 0x9C, 0xA6, - 0x99, 0x52, 0xE2, 0xBC, 0x9F, 0x66, 0xE5, 0x7C, 0xC8, 0x19, 0x9E, 0x26, 0xED, 0x43, 0xAA, 0x33, - 0xEE, 0xAC, 0xD5, 0x46, 0x37, 0x55, 0x05, 0x01, 0x18, 0x86, 0x19, 0x04, 0x10, 0x7D, 0x74, 0x2E, - 0xED, 0x76, 0x9B, 0xED, 0xAA, 0x59, 0xAF, 0x3A, 0xCE, 0x05, 0x04, 0x28, 0xC5, 0x50, 0xD7, 0xA5, - 0x4F, 0xD6, 0xFA, 0x88, 0xA9, 0x68, 0x9A, 0x3C, 0x45, 0xDD, 0xAD, 0x3A, 0x9E, 0x97, 0x72, 0x91, - 0x28, 0x21, 0x84, 0x58, 0x5E, 0xE4, 0xDE, 0xA7, 0xD7, 0xD7, 0x37, 0x6D, 0xDE, 0xF5, 0x93, 0x12, - 0x22, 0x3F, 0xF5, 0xE6, 0xEE, 0xE9, 0xF2, 0xE5, 0xE1, 0xF1, 0xD4, 0x0F, 0x00, 0x26, 0x17, 0xA2, - 0xF3, 0xB1, 0xC8, 0x2B, 0x80, 0xD0, 0xE3, 0xF3, 0xC5, 0x79, 0x1F, 0x82, 0x1F, 0x2E, 0xE3, 0x3C, - 0x69, 0x8C, 0xC9, 0xE3, 0xF3, 0xE5, 0xC3, 0xE7, 0x67, 0x88, 0x28, 0x63, 0xEC, 0xF5, 0xD5, 0xE6, - 0xD5, 0xF5, 0xFA, 0xE5, 0xF5, 0x6A, 0xD3, 0x55, 0xCB, 0x2C, 0x27, 0xA9, 0x01, 0x42, 0xEF, 0x5F, - 0x5F, 0xBF, 0x7F, 0xF3, 0x1A, 0x42, 0xD8, 0xB4, 0x75, 0x53, 0x17, 0x82, 0xE1, 0xEB, 0x55, 0xE9, - 0xAC, 0x3F, 0x9E, 0x47, 0xEB, 0xC2, 0xA2, 0xD4, 0xC3, 0xA1, 0xFF, 0xFC, 0x74, 0x3C, 0x9D, 0xA7, - 0x59, 0x1A, 0x65, 0xDC, 0xBC, 0xE8, 0xE3, 0x65, 0xD4, 0xCE, 0x85, 0x98, 0x36, 0x9B, 0xCA, 0x5A, - 0x2F, 0x95, 0xB1, 0xD6, 0x01, 0x04, 0x04, 0xC7, 0xB9, 0xC0, 0x9C, 0x73, 0x63, 0x9C, 0x36, 0x0E, - 0x00, 0xF0, 0xCD, 0x9B, 0x17, 0xDF, 0xBC, 0x7B, 0xBB, 0x6E, 0x4A, 0xC1, 0x88, 0x52, 0x5A, 0x30, - 0x9A, 0x0B, 0xAA, 0x8C, 0xF3, 0x21, 0xC5, 0x10, 0x43, 0x8C, 0x8C, 0xE0, 0x49, 0x3A, 0x82, 0x11, - 0x4C, 0xC1, 0x79, 0x1F, 0x01, 0x12, 0x1C, 0x5F, 0x2E, 0x33, 0x42, 0xD1, 0x5A, 0x6B, 0x8D, 0xB5, - 0x46, 0x39, 0xA7, 0xCB, 0x9C, 0x0B, 0x04, 0xA2, 0x77, 0x01, 0x42, 0x2E, 0x58, 0x5E, 0x8A, 0xAC, - 0x40, 0xC9, 0x25, 0x1F, 0xC3, 0x79, 0x92, 0x31, 0x61, 0x08, 0xA2, 0xD4, 0xDA, 0x27, 0x42, 0x10, - 0xB8, 0x5A, 0x67, 0x84, 0x60, 0x4C, 0xE0, 0xA2, 0xCC, 0x30, 0x2D, 0x8C, 0x72, 0x92, 0x10, 0x80, - 0x69, 0xDD, 0xE5, 0xEB, 0xD5, 0x55, 0x4C, 0xFC, 0x7C, 0x3E, 0x68, 0x3D, 0x09, 0xC1, 0x5E, 0xBF, - 0xEA, 0x60, 0x8C, 0x7A, 0x36, 0x4D, 0x99, 0x7F, 0xBE, 0xBB, 0x77, 0xC1, 0x0E, 0xE3, 0x52, 0xE5, - 0x45, 0x3F, 0x4B, 0x96, 0x61, 0x81, 0x49, 0x95, 0x97, 0x3F, 0xFD, 0x7C, 0xBF, 0xDE, 0xB4, 0x04, - 0x21, 0xA3, 0x35, 0x44, 0x90, 0xD1, 0x0C, 0xA4, 0xB8, 0x28, 0x59, 0x56, 0x85, 0x5C, 0x34, 0x81, - 0x88, 0x10, 0x22, 0x97, 0x79, 0x9C, 0x4D, 0xD7, 0xB6, 0x11, 0x3A, 0xEB, 0x4D, 0x57, 0xE7, 0x29, - 0x81, 0x97, 0x37, 0xAF, 0xF7, 0xDB, 0xCD, 0x34, 0x8C, 0x9C, 0xB2, 0xB2, 0x6C, 0x18, 0x81, 0x10, - 0xC2, 0x65, 0x91, 0x95, 0xE0, 0x87, 0x93, 0xC2, 0x98, 0x5A, 0xE3, 0xAC, 0x31, 0x6D, 0x55, 0x25, - 0xEB, 0xE7, 0x69, 0x06, 0x29, 0x22, 0x00, 0x20, 0x26, 0x9C, 0x65, 0x14, 0x13, 0x8C, 0xE1, 0xFE, - 0xC5, 0x55, 0xF4, 0x5A, 0x08, 0xBA, 0x5A, 0x35, 0xED, 0xBA, 0xCE, 0x0A, 0x86, 0xFF, 0x87, 0x7F, - 0xF8, 0xFB, 0xAA, 0x5A, 0xE5, 0x0C, 0x79, 0x9F, 0x8C, 0xB5, 0x29, 0x85, 0x94, 0x52, 0xD3, 0x14, - 0x65, 0x95, 0xCD, 0x8B, 0x0C, 0x11, 0x54, 0x55, 0xB5, 0xBB, 0xDA, 0x76, 0x8D, 0xD8, 0xED, 0xD6, - 0xD1, 0xDA, 0xCB, 0xE9, 0xB9, 0xAC, 0x45, 0x4C, 0x89, 0x11, 0x9A, 0xA2, 0xDB, 0xAD, 0x5B, 0x46, - 0x71, 0x88, 0x21, 0x7A, 0xCB, 0x08, 0x22, 0x04, 0x2B, 0x39, 0x96, 0x79, 0x5E, 0x66, 0xF9, 0xF1, - 0x70, 0xB9, 0x8C, 0x6E, 0x98, 0x34, 0x44, 0x6C, 0x91, 0x7A, 0x94, 0x6A, 0x94, 0x91, 0x94, 0xD7, - 0x90, 0xD7, 0xD3, 0xD8, 0x9F, 0xFB, 0x91, 0x16, 0x5D, 0xD0, 0x73, 0xF0, 0x8A, 0xE2, 0x70, 0xB8, - 0x4C, 0xD3, 0xA2, 0x52, 0x0A, 0x21, 0x84, 0x4F, 0x9F, 0x9F, 0x87, 0x7E, 0x32, 0xC6, 0xFD, 0xF8, - 0xE1, 0xF1, 0xE9, 0x38, 0x59, 0x17, 0x2F, 0xF3, 0x32, 0x2A, 0xCD, 0xB3, 0x7C, 0x51, 0x21, 0xCB, - 0x00, 0x4A, 0x61, 0x31, 0xA1, 0x62, 0xA1, 0x6E, 0xD6, 0xE3, 0x2C, 0x31, 0xC2, 0xFF, 0xF4, 0xEF, - 0x77, 0x09, 0x91, 0x5F, 0x3E, 0x7C, 0xF7, 0xED, 0xB7, 0x5F, 0x49, 0x29, 0xA7, 0xE1, 0x6C, 0x9C, - 0x8B, 0x09, 0x49, 0x65, 0x97, 0x79, 0x3E, 0x9E, 0x2E, 0x8F, 0xC7, 0xD3, 0x65, 0x1C, 0xBD, 0xF7, - 0xF3, 0xAC, 0x1F, 0x2F, 0xF2, 0xC3, 0x2F, 0x1F, 0xBF, 0xFE, 0xED, 0x1F, 0xA7, 0xCB, 0x73, 0x55, - 0x8A, 0xE3, 0xA5, 0x27, 0x14, 0x33, 0x91, 0xEB, 0x40, 0x59, 0xD1, 0xAD, 0xAF, 0x5E, 0xBF, 0xBD, - 0x69, 0x73, 0x81, 0xBE, 0xFF, 0xF1, 0x67, 0xCA, 0xF3, 0xFD, 0xCD, 0xED, 0xD4, 0x9F, 0xC6, 0xFE, - 0x84, 0x30, 0xFE, 0x75, 0xED, 0x91, 0x33, 0x3A, 0x8E, 0xF2, 0x70, 0x1E, 0xBB, 0xA6, 0x2C, 0x33, - 0x3A, 0x4C, 0x32, 0x01, 0xB0, 0xCC, 0x6A, 0x91, 0xE6, 0xDD, 0x9B, 0x57, 0x4A, 0x5B, 0x41, 0xF1, - 0x9F, 0x7F, 0x73, 0xFB, 0xD5, 0xED, 0xCD, 0x7F, 0xFB, 0xEB, 0x8F, 0x52, 0xB9, 0xAB, 0xCD, 0xEA, - 0xD3, 0xDD, 0x23, 0xC1, 0xE0, 0xF7, 0x5F, 0xBD, 0xB4, 0xD6, 0xE5, 0x42, 0x7C, 0xFF, 0xE3, 0x87, - 0x3F, 0xFF, 0xEE, 0xED, 0x2F, 0x5F, 0x8E, 0xDE, 0x9A, 0x8C, 0x52, 0x6D, 0xFD, 0xF1, 0xD2, 0x1B, - 0x65, 0xB3, 0x3C, 0x07, 0x10, 0x7A, 0xEB, 0x28, 0xC1, 0x18, 0xA5, 0xCD, 0xBA, 0xCB, 0xB3, 0xEC, - 0xE1, 0xE9, 0x39, 0xE3, 0x0C, 0x01, 0xA8, 0x74, 0xE8, 0xEA, 0x4A, 0x1B, 0x35, 0xCF, 0x0B, 0x80, - 0xB4, 0x29, 0x72, 0xA5, 0x6D, 0x08, 0xBE, 0x2C, 0x78, 0x95, 0x65, 0x20, 0x06, 0x00, 0x52, 0x5D, - 0x12, 0x04, 0xD3, 0xBA, 0x2C, 0x8A, 0xBC, 0xBC, 0xDA, 0x76, 0xAF, 0xF7, 0xEB, 0x9B, 0x5D, 0xFB, - 0xF6, 0xE5, 0xAE, 0xCC, 0xC8, 0x8B, 0x6D, 0xB3, 0x6E, 0xCA, 0x75, 0x27, 0x60, 0x02, 0x04, 0xE1, - 0x77, 0xB7, 0xFB, 0x26, 0xCF, 0xB6, 0xEB, 0xB2, 0x2E, 0x05, 0x21, 0x90, 0x31, 0xB0, 0x5D, 0xD5, - 0xC6, 0x69, 0x29, 0x7D, 0xF4, 0x08, 0x44, 0x80, 0x50, 0x32, 0xD6, 0xBC, 0xB8, 0x5A, 0x63, 0x08, - 0x63, 0x82, 0xC6, 0x05, 0x17, 0x02, 0xE3, 0x14, 0x21, 0x0C, 0x31, 0x4C, 0x10, 0xE6, 0x82, 0xFF, - 0xF9, 0xF7, 0xBF, 0xBF, 0xD9, 0xDF, 0xD4, 0x55, 0x0D, 0x01, 0x48, 0x09, 0x46, 0x00, 0xF3, 0x2C, - 0xCB, 0x33, 0xBE, 0x5A, 0x17, 0x45, 0xC1, 0x29, 0x45, 0x4D, 0x9B, 0x21, 0x04, 0xAA, 0x4A, 0x50, - 0xCE, 0x21, 0xC4, 0x9C, 0x80, 0xE0, 0xBD, 0x73, 0x21, 0x7A, 0x47, 0x11, 0x68, 0xEB, 0xA6, 0xEB, - 0x9A, 0xBA, 0x2A, 0x31, 0xCD, 0x01, 0x44, 0xC6, 0x25, 0xA9, 0xBD, 0x31, 0x26, 0x13, 0xD9, 0xCB, - 0x9B, 0x1B, 0x00, 0xE3, 0xE9, 0xD2, 0x1F, 0x4E, 0xC3, 0xA6, 0xED, 0x60, 0x0A, 0x4F, 0x87, 0xA1, - 0x9F, 0xF4, 0xCF, 0x9F, 0x8F, 0xDA, 0x06, 0x4A, 0x60, 0x3F, 0x8D, 0x65, 0x29, 0xAE, 0x77, 0x9B, - 0xE4, 0x93, 0x71, 0x30, 0x44, 0xE8, 0x3C, 0x98, 0x75, 0x78, 0x3C, 0x1E, 0x1F, 0x9E, 0x0F, 0x59, - 0x46, 0xD7, 0xAB, 0x6A, 0x9A, 0x15, 0x67, 0x3C, 0x41, 0xA8, 0xAC, 0x45, 0x18, 0x00, 0x00, 0x8F, - 0x87, 0x13, 0x21, 0x30, 0x01, 0xBC, 0x48, 0x63, 0x8C, 0x33, 0xDE, 0xF7, 0xB3, 0x7C, 0x78, 0xBA, - 0x28, 0x65, 0x8D, 0x75, 0xC3, 0xBC, 0xC4, 0x08, 0xAB, 0x2A, 0x7F, 0x79, 0xB3, 0xDB, 0xAC, 0x9A, - 0xAA, 0xCC, 0x02, 0x88, 0x28, 0xC5, 0x14, 0x4C, 0x08, 0x96, 0xA4, 0x58, 0x72, 0xFA, 0xE5, 0xF1, - 0x38, 0x2E, 0x0B, 0xC1, 0x58, 0x6A, 0x3B, 0x2C, 0xD2, 0x05, 0x90, 0x67, 0x5C, 0x19, 0x67, 0x7D, - 0xF8, 0xB5, 0x3E, 0x0C, 0x11, 0xD2, 0xDA, 0x80, 0x14, 0xDA, 0xAE, 0x5C, 0x37, 0x55, 0xD7, 0xE4, - 0x42, 0xB0, 0x73, 0xBF, 0xAC, 0xDA, 0x92, 0x12, 0x4A, 0x31, 0x8C, 0x31, 0x55, 0x45, 0x51, 0xE7, - 0x99, 0xB7, 0x8A, 0x71, 0xFC, 0x78, 0xB8, 0x18, 0xEB, 0x6D, 0x08, 0x54, 0xE4, 0x39, 0xA7, 0x5A, - 0x6B, 0xEB, 0x43, 0x5B, 0x30, 0x8C, 0xB0, 0x32, 0xAE, 0x2A, 0xC8, 0xBA, 0xE3, 0xDE, 0x5A, 0x2A, - 0xCA, 0xE3, 0x65, 0xC2, 0x14, 0x7A, 0x1F, 0x52, 0x4A, 0xB9, 0x60, 0x8C, 0x20, 0x41, 0x45, 0x74, - 0x20, 0x7A, 0xD7, 0x54, 0x4D, 0x48, 0x91, 0x50, 0x6C, 0x9D, 0xEB, 0x07, 0x85, 0x08, 0xA7, 0x82, - 0x11, 0xC2, 0x73, 0x21, 0x62, 0xB2, 0x31, 0x21, 0x84, 0x00, 0x45, 0xDE, 0xDA, 0x90, 0x02, 0x14, - 0x8C, 0x8C, 0x93, 0x6E, 0xDB, 0x15, 0x26, 0x2C, 0x2F, 0x44, 0xD3, 0x14, 0xC1, 0x47, 0x84, 0x68, - 0x96, 0x45, 0x21, 0xC2, 0x66, 0x9B, 0xEF, 0xF7, 0x75, 0x55, 0x31, 0xC1, 0x49, 0x59, 0x65, 0x31, - 0x79, 0x23, 0x75, 0x0A, 0x31, 0x25, 0xD0, 0x4F, 0xF2, 0x57, 0xCA, 0xF1, 0xB7, 0x5F, 0xBF, 0xEA, - 0x07, 0x05, 0x62, 0xAC, 0x8A, 0x4C, 0x2F, 0x0A, 0xA4, 0x84, 0x31, 0x6D, 0xDB, 0xFA, 0xF9, 0xD4, - 0x4B, 0xA9, 0x09, 0x84, 0x10, 0x42, 0x80, 0x51, 0x51, 0x17, 0x65, 0x55, 0x7D, 0xFF, 0xD3, 0x17, - 0x84, 0x21, 0x4C, 0x49, 0x49, 0xBD, 0xAA, 0x3B, 0xC6, 0x32, 0x8C, 0xF0, 0x65, 0x98, 0x61, 0x0A, - 0x4F, 0xC7, 0x3E, 0x41, 0x52, 0x66, 0x8C, 0x12, 0x58, 0x08, 0xDA, 0x54, 0xA5, 0xB1, 0xBE, 0xA9, - 0x4A, 0x0C, 0x60, 0x5D, 0x88, 0x3A, 0xCF, 0x63, 0xC0, 0x19, 0x2F, 0x38, 0xC2, 0xD6, 0x84, 0xED, - 0xF6, 0x4A, 0x1B, 0x9F, 0xE5, 0x14, 0x13, 0xC8, 0x05, 0xBB, 0xF4, 0x87, 0xA6, 0x2D, 0x42, 0xB0, - 0x7A, 0x99, 0x38, 0x8B, 0xF0, 0x7F, 0xFF, 0xDF, 0xFE, 0x0B, 0x04, 0x78, 0x1C, 0x2E, 0xD3, 0x70, - 0x4C, 0x30, 0x44, 0x90, 0x28, 0xCD, 0x18, 0x25, 0xC3, 0xD4, 0xBB, 0xE0, 0x37, 0xAB, 0x2B, 0xE7, - 0xA0, 0x8F, 0x81, 0x73, 0xCC, 0x05, 0x43, 0x08, 0x4B, 0xB9, 0x60, 0x82, 0x9C, 0xF6, 0xD1, 0xFB, - 0x61, 0xEA, 0xDB, 0x3A, 0x63, 0x3C, 0x8B, 0x11, 0xC6, 0x18, 0x31, 0xA2, 0x2E, 0x84, 0x14, 0x42, - 0x9D, 0x57, 0x18, 0x93, 0xFB, 0xC7, 0x7B, 0x6B, 0x03, 0x40, 0xF8, 0xFE, 0xF1, 0x58, 0xE4, 0x3C, - 0xB1, 0xFA, 0xE9, 0xD8, 0x27, 0xB7, 0x50, 0x96, 0x5D, 0xA6, 0x19, 0x42, 0xF4, 0xF5, 0xD7, 0xBF, - 0xF3, 0x6A, 0x9C, 0xE7, 0x0B, 0x49, 0x8E, 0x50, 0xEC, 0xA3, 0xDB, 0x6D, 0x4B, 0x18, 0x60, 0x88, - 0xA1, 0xCC, 0x39, 0xE1, 0xF8, 0x87, 0x1F, 0x0F, 0x4D, 0x57, 0x71, 0xC1, 0xFB, 0xF3, 0xB8, 0xDA, - 0xAC, 0x77, 0x57, 0xEF, 0x3F, 0xFC, 0xFC, 0x5D, 0x59, 0xA0, 0x4D, 0xD9, 0x8C, 0x2E, 0xCF, 0x33, - 0x9A, 0xE7, 0xC5, 0x77, 0x3F, 0x7D, 0xB2, 0xEA, 0x72, 0xB3, 0xCE, 0x81, 0xD8, 0xFE, 0xCB, 0x5F, - 0xBF, 0x7B, 0xF7, 0xE6, 0xAA, 0xA0, 0x17, 0x4C, 0xB3, 0xD3, 0x71, 0xB1, 0x11, 0xC7, 0xE4, 0xBE, - 0xDA, 0x96, 0x65, 0x8E, 0xBE, 0x3F, 0x9A, 0x9C, 0xB1, 0x55, 0x91, 0x9F, 0xCE, 0xEA, 0x2F, 0xDF, - 0x7F, 0xBE, 0x7D, 0xF3, 0xE6, 0xF5, 0xBB, 0xDF, 0xFD, 0xF0, 0x97, 0xFF, 0xCB, 0x3A, 0xE7, 0xA3, - 0x8D, 0xDE, 0x5D, 0xBD, 0x78, 0x93, 0x48, 0x83, 0x09, 0xA5, 0x94, 0x7D, 0xFE, 0xE1, 0x9F, 0x08, - 0x06, 0x57, 0x2F, 0x6E, 0xA5, 0xC5, 0x21, 0xC5, 0x2F, 0x3F, 0xFD, 0xB3, 0xE0, 0x22, 0x84, 0x88, - 0x00, 0x20, 0x18, 0x33, 0x4E, 0x62, 0x08, 0x00, 0x13, 0x02, 0xD1, 0xBA, 0x2B, 0xB5, 0x73, 0x87, - 0xE3, 0x50, 0x54, 0x19, 0xC5, 0xF4, 0xFD, 0xED, 0xCB, 0xFF, 0xE7, 0x2F, 0x7F, 0xFD, 0xC7, 0x6F, - 0xDF, 0x5D, 0x6D, 0xDA, 0xBF, 0xFE, 0x74, 0x37, 0x4B, 0x1D, 0x13, 0x78, 0x73, 0xFB, 0xF2, 0xDF, - 0xBE, 0xFF, 0xF1, 0xEF, 0xBE, 0x7D, 0xEF, 0x93, 0x7B, 0x7C, 0xBE, 0x7C, 0xFC, 0xF4, 0x28, 0x32, - 0xDA, 0xB6, 0xF9, 0x2F, 0x77, 0xC7, 0x57, 0xBB, 0x6E, 0x5A, 0x5C, 0x44, 0xD8, 0x5A, 0x07, 0x21, - 0xB6, 0x21, 0x9C, 0x4E, 0x97, 0xDB, 0x9B, 0xF5, 0xDB, 0xDB, 0x3D, 0x17, 0xAC, 0x2C, 0x8A, 0xBB, - 0xA7, 0xC3, 0xE3, 0x73, 0x0F, 0x23, 0x48, 0x09, 0x54, 0x55, 0x51, 0xE7, 0x1C, 0xC2, 0x24, 0xA5, - 0x05, 0x90, 0xBC, 0x7E, 0xB5, 0xD1, 0xCA, 0x46, 0xA0, 0xBB, 0x2E, 0x3F, 0x9F, 0x66, 0x63, 0x1C, - 0xA3, 0xF0, 0xFE, 0xF1, 0xB0, 0x68, 0xFB, 0xB7, 0xBF, 0xFD, 0x36, 0x17, 0x19, 0xE7, 0x84, 0x52, - 0xC2, 0x28, 0x00, 0x08, 0x46, 0x1F, 0x83, 0x8F, 0x01, 0xF8, 0x3C, 0xC7, 0x3E, 0x44, 0xA3, 0x81, - 0xF3, 0x01, 0x24, 0x50, 0x35, 0xB9, 0xB3, 0xD6, 0x3A, 0x47, 0x29, 0xCE, 0x32, 0x92, 0xE5, 0xEC, - 0xFE, 0x7E, 0xBA, 0xBF, 0x9F, 0x31, 0x45, 0xC6, 0xD9, 0xE4, 0x42, 0xDB, 0x55, 0xFD, 0x22, 0xC7, - 0xC9, 0x3C, 0x1D, 0xA6, 0x69, 0xD1, 0x10, 0x86, 0x14, 0x22, 0xC2, 0x90, 0x52, 0xF6, 0xB7, 0x7F, - 0xFE, 0x7D, 0x25, 0x8A, 0x71, 0x90, 0xCE, 0x5B, 0x04, 0xC1, 0x65, 0x32, 0xE3, 0xA2, 0x10, 0xF4, - 0x9C, 0xD3, 0xAE, 0xCD, 0x9B, 0x32, 0xA3, 0x04, 0xF8, 0x68, 0xAC, 0x8B, 0x04, 0x63, 0xCE, 0x98, - 0x5C, 0x6C, 0xF2, 0x36, 0x13, 0x22, 0x04, 0x9F, 0xBC, 0x5B, 0x75, 0x9D, 0x71, 0x38, 0x01, 0x3C, - 0x8E, 0x8B, 0xB2, 0x4E, 0x70, 0xAE, 0x8D, 0x4E, 0x20, 0x41, 0xE8, 0x9B, 0x66, 0x45, 0x29, 0xC9, - 0x33, 0x06, 0x53, 0x3C, 0x1C, 0x7B, 0xBD, 0xCC, 0xC3, 0xD0, 0x3F, 0x1C, 0x87, 0xA2, 0x5D, 0x61, - 0xD1, 0x8E, 0xFD, 0xA1, 0xE0, 0x2E, 0x45, 0xFF, 0xCD, 0xED, 0xEB, 0xB2, 0x2C, 0x8F, 0x87, 0x3E, - 0xCB, 0x2B, 0x63, 0xFD, 0xB4, 0xC8, 0xAA, 0x6D, 0x7F, 0xFA, 0xF8, 0x39, 0xCF, 0x79, 0x53, 0x65, - 0x31, 0x85, 0x61, 0x36, 0xD3, 0xA4, 0xBD, 0x57, 0x6D, 0x5B, 0x7B, 0x17, 0x9C, 0xF7, 0x5A, 0xA9, - 0xAE, 0x2D, 0x62, 0x80, 0xD6, 0x7A, 0xC6, 0xE9, 0xC3, 0xE1, 0x64, 0xBD, 0xDF, 0x6F, 0xD6, 0x20, - 0x44, 0x4A, 0x45, 0x08, 0xAE, 0x29, 0x33, 0x00, 0x52, 0xC6, 0xA8, 0x10, 0x54, 0x4A, 0xC9, 0x33, - 0x66, 0x5C, 0x3C, 0x3C, 0x3D, 0xED, 0xB6, 0xAB, 0x92, 0x8B, 0xF3, 0x65, 0xBC, 0x3F, 0x8D, 0xFB, - 0xDD, 0x75, 0x9E, 0x15, 0x4F, 0x87, 0x67, 0xE3, 0x9C, 0x10, 0xC2, 0x7B, 0xBB, 0x28, 0xC5, 0x38, - 0xD5, 0x4A, 0x97, 0x45, 0x06, 0x40, 0xE2, 0x0C, 0x63, 0x0C, 0x44, 0xCE, 0x01, 0x00, 0x04, 0xA2, - 0xD5, 0xAA, 0x3D, 0x9D, 0x67, 0x4A, 0xC8, 0xBA, 0x2B, 0x04, 0xC7, 0x2E, 0xC4, 0x60, 0x3C, 0x23, - 0x78, 0x9A, 0xE4, 0x71, 0x94, 0xA7, 0x5E, 0x7A, 0xE7, 0x98, 0x60, 0x98, 0x72, 0x02, 0xEC, 0x65, - 0x98, 0x8C, 0x0D, 0xAB, 0x92, 0x1F, 0x07, 0x0D, 0x10, 0x6E, 0x0A, 0x22, 0x04, 0x4A, 0xC1, 0x69, - 0x87, 0x18, 0xCF, 0x30, 0xD0, 0x9B, 0xA6, 0x28, 0xCB, 0x9C, 0x72, 0x56, 0x14, 0xB9, 0x52, 0xA0, - 0xEF, 0x15, 0x26, 0xA8, 0xEF, 0x67, 0xA9, 0xA5, 0x0B, 0x21, 0x84, 0x08, 0x12, 0x4A, 0x20, 0xB6, - 0x6D, 0x4E, 0x29, 0x76, 0x36, 0x48, 0x69, 0xAA, 0x5C, 0x40, 0xE0, 0x66, 0xA9, 0x11, 0x00, 0x82, - 0x21, 0x80, 0x29, 0xC6, 0x04, 0x02, 0x62, 0xA3, 0xDD, 0xEF, 0xBB, 0xA9, 0x5F, 0xA6, 0x51, 0x7B, - 0x9F, 0xB4, 0x73, 0x98, 0xA0, 0xB2, 0xE4, 0x94, 0xE0, 0xAA, 0xCA, 0x8A, 0x42, 0x20, 0x84, 0x18, - 0xA5, 0xCE, 0x5A, 0x90, 0x12, 0x41, 0xE8, 0xA7, 0x8F, 0xCF, 0x2E, 0xC0, 0x5A, 0xF0, 0x77, 0xB7, - 0x7B, 0x88, 0x61, 0xB0, 0x0E, 0x01, 0x1C, 0x22, 0x00, 0x09, 0x52, 0x4A, 0x03, 0x80, 0xC7, 0x73, - 0xAF, 0x94, 0xE4, 0x94, 0x02, 0x84, 0xCA, 0xAA, 0xB2, 0xCE, 0x21, 0x84, 0x97, 0x65, 0xA6, 0x14, - 0x3D, 0x3E, 0x9D, 0x36, 0xAB, 0x6D, 0x5D, 0x14, 0xF3, 0x3C, 0x5C, 0x26, 0xD9, 0x56, 0x35, 0x63, - 0xE0, 0xF9, 0x3C, 0xA4, 0x44, 0x28, 0x01, 0x65, 0x4E, 0x95, 0xF6, 0x79, 0x9E, 0x2B, 0xE7, 0xC6, - 0x69, 0x21, 0x28, 0x65, 0x82, 0xA7, 0x04, 0x29, 0x67, 0x04, 0xE1, 0xAB, 0x6D, 0xC3, 0x29, 0x8E, - 0xD1, 0x1B, 0x9F, 0x9A, 0xA6, 0x34, 0x46, 0x79, 0x0F, 0x43, 0x32, 0xDE, 0x2D, 0x52, 0xDA, 0x18, - 0x53, 0x48, 0x00, 0xFE, 0xAF, 0xFF, 0xCB, 0x7F, 0x4E, 0xC9, 0x6B, 0xB5, 0xFC, 0xF0, 0xF1, 0x93, - 0x0D, 0x5E, 0x70, 0x06, 0x02, 0xAE, 0xCA, 0xC2, 0x26, 0xBF, 0xDB, 0xAE, 0x51, 0xC2, 0x87, 0xE7, - 0x11, 0x20, 0x74, 0xEC, 0xC7, 0xDD, 0xA6, 0x76, 0x21, 0x94, 0x25, 0x6B, 0x4A, 0x56, 0x70, 0xAE, - 0xAC, 0xFE, 0xE9, 0xE3, 0x01, 0x02, 0x6C, 0xAC, 0xBA, 0xDA, 0x34, 0xD3, 0x2C, 0x77, 0xEB, 0x15, - 0x23, 0xB4, 0x69, 0xAA, 0x18, 0x82, 0x31, 0x7E, 0x5A, 0x96, 0xF3, 0xE4, 0xDA, 0xDD, 0x9B, 0xFE, - 0xF4, 0x98, 0x97, 0xDD, 0xFD, 0xD3, 0xE3, 0x4F, 0x3F, 0xFE, 0xF5, 0xE5, 0xA6, 0xBD, 0xCC, 0xA6, - 0xDB, 0xBF, 0x6E, 0xDB, 0x6E, 0x38, 0x3D, 0xE7, 0x9C, 0x4D, 0xF3, 0xF9, 0x7A, 0x57, 0x83, 0x94, - 0x10, 0x8A, 0x10, 0x44, 0x39, 0x9B, 0xE0, 0xD3, 0x76, 0x53, 0x24, 0x08, 0x16, 0xED, 0x41, 0x42, - 0x52, 0xD9, 0xA1, 0x9F, 0xBF, 0xFD, 0x9B, 0xBF, 0xFB, 0xF2, 0xF1, 0x63, 0x5D, 0x62, 0x80, 0xD0, - 0xCF, 0x9F, 0x1E, 0xB3, 0x72, 0x75, 0xFB, 0xFA, 0xF6, 0x97, 0xBB, 0xE7, 0x92, 0x9A, 0x3F, 0xBE, - 0xEF, 0x4E, 0xC3, 0x3C, 0xBA, 0x4E, 0x1A, 0xD0, 0xA0, 0xC7, 0x2A, 0x57, 0x8C, 0xE1, 0xC0, 0xBE, - 0xF2, 0x3E, 0xE0, 0xF9, 0xC7, 0x2A, 0xAF, 0xB2, 0xA6, 0xFA, 0xF9, 0xA4, 0x70, 0x48, 0xDB, 0x92, - 0xE5, 0x8C, 0xFF, 0xD7, 0xFF, 0x78, 0x7E, 0xF3, 0xFE, 0x3D, 0x12, 0xED, 0x97, 0x8F, 0x3F, 0x3E, - 0x3D, 0x3F, 0xDE, 0x5C, 0xB7, 0x2E, 0x10, 0x1B, 0xC5, 0x97, 0x5F, 0x7E, 0x8A, 0x5E, 0x96, 0x55, - 0x39, 0x2F, 0xE6, 0xF6, 0xFA, 0xBA, 0xAA, 0xCA, 0x7E, 0x56, 0xE7, 0x69, 0xC9, 0x88, 0xA5, 0x8C, - 0x06, 0xE7, 0x11, 0x48, 0xD6, 0x78, 0x00, 0x40, 0x5E, 0xF2, 0x3C, 0x67, 0xC9, 0x01, 0x90, 0x20, - 0xCF, 0x58, 0x51, 0x96, 0x00, 0xA6, 0xB1, 0xBF, 0xC4, 0x14, 0x6F, 0xB6, 0xDD, 0x38, 0xEA, 0xE0, - 0xD3, 0xC3, 0x79, 0x2C, 0x84, 0xF8, 0xE3, 0x6F, 0xDE, 0x3C, 0x1E, 0xCF, 0xDE, 0xDB, 0x3F, 0x7D, - 0xFB, 0xFE, 0xEE, 0x72, 0x51, 0xCA, 0x9C, 0x8E, 0x67, 0xCE, 0x31, 0x44, 0x10, 0x63, 0x72, 0x3A, - 0x0E, 0xE3, 0xE2, 0x08, 0x63, 0x45, 0xC6, 0x5F, 0xBF, 0xDA, 0xFE, 0xF4, 0xF3, 0xE7, 0xDB, 0xEB, - 0xCD, 0xCD, 0xD5, 0x6A, 0x9C, 0x75, 0x84, 0x00, 0xC1, 0x44, 0x10, 0x28, 0x8A, 0x0C, 0x41, 0x84, - 0x21, 0x82, 0x10, 0x79, 0x1B, 0x6D, 0xF0, 0x10, 0x22, 0x1F, 0xC3, 0x22, 0x25, 0x04, 0x80, 0x09, - 0x34, 0x5D, 0x16, 0x8C, 0x98, 0x49, 0xD1, 0x06, 0xAB, 0xB4, 0x26, 0x88, 0x80, 0x08, 0xB4, 0xB4, - 0x19, 0x81, 0x75, 0xC3, 0xCA, 0x5A, 0x80, 0x84, 0x38, 0x13, 0x84, 0x20, 0xE3, 0xBC, 0x33, 0xA6, - 0xE9, 0x72, 0x6D, 0xDC, 0x34, 0x6B, 0x82, 0x18, 0xA6, 0x48, 0x2D, 0x32, 0x2F, 0x8B, 0xBA, 0xAC, - 0xCE, 0xA7, 0x79, 0x96, 0xAE, 0x6B, 0xF3, 0xB6, 0xCE, 0xB2, 0x8C, 0x04, 0x0F, 0x94, 0x74, 0x90, - 0xC4, 0x7F, 0xFE, 0xEB, 0x47, 0x88, 0x49, 0x04, 0xF4, 0xE7, 0x8F, 0x4F, 0x4A, 0x2E, 0x99, 0xA0, - 0x6D, 0xD7, 0x7C, 0xF5, 0xF6, 0x4D, 0x9E, 0x61, 0xBD, 0x04, 0xAD, 0xF5, 0xE1, 0x7C, 0xC1, 0xB4, - 0x78, 0x3A, 0x9E, 0x10, 0x26, 0xC6, 0x5A, 0x63, 0x54, 0x57, 0x57, 0xBF, 0xFB, 0xEA, 0x05, 0x02, - 0x29, 0xC1, 0x00, 0x60, 0xC2, 0x10, 0x2B, 0xE5, 0x31, 0x04, 0x6D, 0x9D, 0x87, 0x90, 0xAC, 0x56, - 0x9C, 0xE1, 0x10, 0x71, 0x3F, 0x5B, 0xEB, 0x22, 0x65, 0xDC, 0x5A, 0x57, 0x64, 0xDC, 0x79, 0x43, - 0x39, 0x45, 0x18, 0x0D, 0xA3, 0xC4, 0x8C, 0x16, 0x22, 0x0B, 0xDE, 0x64, 0x9C, 0x71, 0x9A, 0xC5, - 0x14, 0xE5, 0x32, 0x98, 0x00, 0x4D, 0xA0, 0xD3, 0xE5, 0x7E, 0xBB, 0xA2, 0x55, 0x55, 0x10, 0x9A, - 0x05, 0x17, 0x19, 0x65, 0xC3, 0x38, 0xF7, 0xBD, 0x1C, 0xA6, 0x25, 0x2F, 0x4B, 0xF8, 0xAB, 0x2E, - 0x1D, 0x7C, 0x82, 0x50, 0xE9, 0x30, 0x4D, 0x4B, 0x5D, 0x52, 0x08, 0xA0, 0xD4, 0x9E, 0x12, 0x0C, - 0x60, 0x4C, 0x31, 0x70, 0xC6, 0x20, 0x44, 0x8F, 0x87, 0x8B, 0x0F, 0x6E, 0xBB, 0x69, 0x28, 0x46, - 0x29, 0xA6, 0xCB, 0xA8, 0x85, 0x60, 0xBB, 0x55, 0xB3, 0xCC, 0xB2, 0xAD, 0x72, 0x4A, 0xD9, 0xBC, - 0x4C, 0x30, 0x79, 0x88, 0xC8, 0xB9, 0x9F, 0x32, 0x8E, 0x33, 0x2E, 0x8E, 0x97, 0x25, 0x21, 0xBC, - 0x5E, 0x6D, 0x2F, 0x97, 0xF3, 0xA2, 0x35, 0x21, 0x74, 0x98, 0xC6, 0xB2, 0x28, 0x7C, 0x08, 0x42, - 0x70, 0x46, 0xB1, 0x0F, 0x3E, 0x06, 0x5F, 0x55, 0x99, 0x36, 0x36, 0xC6, 0xC0, 0x33, 0xE6, 0xAC, - 0x63, 0x54, 0x50, 0xCC, 0xDB, 0xA6, 0x22, 0x28, 0x41, 0x08, 0x05, 0x27, 0x65, 0xC6, 0x30, 0xA6, - 0x9C, 0x67, 0x0F, 0x87, 0xE7, 0xFB, 0x87, 0xA7, 0xF3, 0x65, 0x5A, 0xB4, 0x45, 0x28, 0xD5, 0x25, - 0xBB, 0x4C, 0x36, 0xE3, 0x6C, 0x55, 0xE7, 0x2E, 0x61, 0x0C, 0xC1, 0xF3, 0xB9, 0x8F, 0x09, 0xBE, - 0x7B, 0xB1, 0x3E, 0x9E, 0xFA, 0xAB, 0xFD, 0x7E, 0xD3, 0xE2, 0xAA, 0xCC, 0x09, 0x11, 0x98, 0x11, - 0x25, 0xB5, 0x31, 0x86, 0x72, 0x86, 0x08, 0x39, 0x9F, 0xC7, 0x45, 0x69, 0x08, 0xF1, 0xF9, 0xB8, - 0x04, 0x1F, 0xCB, 0x2A, 0x93, 0x72, 0x11, 0x1C, 0x9F, 0x2F, 0x12, 0x93, 0xAC, 0xA9, 0x45, 0xD7, - 0x94, 0xA7, 0x73, 0xFF, 0x7C, 0xBC, 0xAC, 0x57, 0x35, 0x63, 0xB4, 0x2E, 0xC4, 0x34, 0xCB, 0x10, - 0xBC, 0x28, 0x33, 0x25, 0x8D, 0xB5, 0x00, 0x41, 0x7C, 0x19, 0x86, 0x97, 0xFB, 0x6E, 0x96, 0x7A, - 0x98, 0x15, 0x04, 0x10, 0x23, 0xC8, 0x28, 0x69, 0x6A, 0x51, 0xE4, 0x14, 0x62, 0x44, 0x09, 0x58, - 0xB5, 0x0D, 0x8C, 0x18, 0x46, 0x68, 0x9D, 0x85, 0x28, 0x39, 0x1B, 0x7E, 0x9D, 0x19, 0x8C, 0x11, - 0x02, 0x80, 0xCA, 0x22, 0x67, 0x14, 0x13, 0x42, 0x08, 0xA1, 0x94, 0xD0, 0x18, 0x62, 0x4C, 0xD1, - 0x58, 0x8D, 0x71, 0x62, 0x94, 0xF5, 0xD3, 0x9C, 0x17, 0x0D, 0x01, 0xD0, 0xA8, 0xC9, 0x86, 0x54, - 0x95, 0xF5, 0xBC, 0xCC, 0xDA, 0xDA, 0x7E, 0x9C, 0x9A, 0x8A, 0x53, 0xC2, 0x96, 0x59, 0x13, 0xCE, - 0x86, 0x45, 0x5B, 0xE7, 0xEA, 0xBA, 0xD6, 0xCB, 0xA2, 0x94, 0xA3, 0x8C, 0x58, 0xE7, 0x57, 0x5D, - 0x53, 0x14, 0x58, 0x14, 0x79, 0x08, 0xE4, 0xFE, 0xCB, 0x53, 0x08, 0xBE, 0xAC, 0xB2, 0x9B, 0x57, - 0xE5, 0xE1, 0xF9, 0xA8, 0xA4, 0x17, 0x8C, 0x6A, 0xE7, 0x71, 0x5B, 0xF2, 0x4C, 0xF0, 0x8F, 0x77, - 0xA7, 0xC3, 0x45, 0x5A, 0x0F, 0xFA, 0xD1, 0x68, 0x07, 0xB6, 0xDB, 0x75, 0x00, 0x58, 0x4A, 0xB3, - 0xCC, 0xCE, 0xBA, 0xB4, 0x28, 0x85, 0x11, 0x2C, 0xF3, 0xFC, 0x7C, 0x1A, 0x31, 0x40, 0x05, 0xE7, - 0x31, 0xC4, 0xAE, 0x5E, 0x39, 0x17, 0x73, 0x91, 0xED, 0xD7, 0xAB, 0x3C, 0xCB, 0xBA, 0xB6, 0xDC, - 0x6E, 0xD7, 0x8C, 0x52, 0x8C, 0x51, 0x0C, 0x3E, 0x44, 0x8B, 0x52, 0x74, 0x30, 0x9F, 0x43, 0xB6, - 0xBF, 0xDA, 0x0E, 0xC3, 0x00, 0xCC, 0xF3, 0x3F, 0xFC, 0xCD, 0x0D, 0x44, 0x09, 0x01, 0xD7, 0xD4, - 0x6D, 0x00, 0x64, 0x39, 0x7F, 0x6E, 0x9B, 0x9A, 0x67, 0x59, 0x0A, 0x6A, 0x51, 0x4A, 0x29, 0x13, - 0x43, 0xD4, 0xDA, 0x49, 0xE5, 0x9A, 0x26, 0x7B, 0x7A, 0x1E, 0x95, 0xF1, 0x7D, 0x2F, 0x6D, 0x08, - 0x75, 0xB7, 0xD1, 0x36, 0x9D, 0x0F, 0x5F, 0x52, 0x82, 0x21, 0xA4, 0x10, 0x41, 0x46, 0xB1, 0xD6, - 0xF6, 0xA6, 0xC5, 0xDF, 0xBE, 0x5D, 0xF5, 0xF3, 0xA4, 0xAC, 0xB3, 0xA0, 0xE6, 0x79, 0x87, 0xF5, - 0x2F, 0x57, 0x2B, 0xBA, 0x6F, 0x57, 0xC5, 0xEA, 0x76, 0x3E, 0xFE, 0xB0, 0xAB, 0x21, 0x67, 0xF1, - 0xA7, 0x4F, 0xD3, 0x9A, 0x81, 0x4D, 0x09, 0xBD, 0xB3, 0xD1, 0xA7, 0xE0, 0x5D, 0x89, 0x25, 0xC0, - 0xA5, 0x9C, 0xFB, 0xEB, 0x6D, 0x65, 0x41, 0xFE, 0xE3, 0x87, 0x87, 0x65, 0x1E, 0x9C, 0x33, 0x42, - 0x50, 0x82, 0x71, 0x53, 0xB7, 0xCA, 0xE8, 0xCF, 0x9F, 0x3F, 0xFE, 0xFE, 0xCF, 0xFF, 0xFD, 0xC3, - 0xFD, 0x67, 0x42, 0x40, 0x7F, 0x99, 0x29, 0x45, 0x31, 0x25, 0x8C, 0x60, 0x02, 0x10, 0x63, 0x64, - 0x95, 0xB7, 0xD6, 0x73, 0xCE, 0x21, 0x22, 0x18, 0xA1, 0xE8, 0x83, 0x73, 0xD1, 0x59, 0x6D, 0x4C, - 0x30, 0x0E, 0x14, 0x65, 0x66, 0x43, 0xD8, 0xB4, 0xE5, 0xAB, 0xEB, 0x55, 0x4A, 0x71, 0xBB, 0x5A, - 0xFF, 0xCB, 0xBF, 0xFF, 0x90, 0x97, 0x45, 0xF0, 0x6E, 0xB7, 0x69, 0xDF, 0xBC, 0xBC, 0xBE, 0xD9, - 0xAD, 0xCE, 0x97, 0x25, 0xA6, 0xFF, 0xDF, 0xCF, 0xBA, 0x7D, 0x7D, 0x0D, 0xA3, 0x2F, 0x44, 0xB6, - 0xED, 0xBA, 0xBE, 0x57, 0xFD, 0x20, 0xA7, 0x71, 0x01, 0x20, 0x85, 0x08, 0xA6, 0xC9, 0x7C, 0xFC, - 0xF4, 0x3C, 0x4C, 0xFA, 0xE9, 0x30, 0xDD, 0x3F, 0xF5, 0x8B, 0xF1, 0xE7, 0xCB, 0xDC, 0x0F, 0xF3, - 0xF1, 0x38, 0x5F, 0x2E, 0xCA, 0xC8, 0xF8, 0xF8, 0x3C, 0x06, 0x40, 0x4E, 0x97, 0xC9, 0xD9, 0x50, - 0x55, 0x85, 0xB5, 0x71, 0x9C, 0x55, 0xB3, 0x29, 0x19, 0x47, 0x59, 0x26, 0xEE, 0x1F, 0xFA, 0x2F, - 0xF7, 0xE7, 0x7E, 0xD2, 0x97, 0x51, 0x8D, 0xD2, 0xCD, 0x4A, 0x3F, 0xF7, 0x0B, 0x24, 0x99, 0x73, - 0x4E, 0x6A, 0xE3, 0x5C, 0xD0, 0xC6, 0x42, 0x8C, 0x7C, 0x02, 0xD6, 0xC1, 0x4F, 0x77, 0xA7, 0x63, - 0xAF, 0x3E, 0xDD, 0x5D, 0xA4, 0xB6, 0x87, 0xF3, 0x32, 0x4B, 0xC3, 0x05, 0x2D, 0x73, 0x11, 0xA2, - 0xFF, 0xF1, 0xA7, 0x3B, 0xC1, 0x79, 0xC6, 0xE8, 0x7A, 0xD3, 0xBD, 0xB8, 0xB9, 0xBA, 0x5C, 0x8E, - 0xC1, 0x2E, 0x8B, 0x4E, 0xF7, 0x4F, 0xCF, 0x11, 0x10, 0x69, 0x3C, 0x44, 0xD8, 0x87, 0x80, 0xE0, - 0xAF, 0x34, 0x44, 0xB9, 0x5D, 0x6F, 0x31, 0x4A, 0xC3, 0x30, 0xC9, 0x45, 0x5F, 0xCE, 0x53, 0xF4, - 0xA0, 0xA9, 0x9B, 0x3C, 0x63, 0x00, 0x82, 0x10, 0x23, 0x82, 0x84, 0x73, 0x96, 0x67, 0x4C, 0x70, - 0x5A, 0x57, 0x19, 0xE7, 0xF0, 0x78, 0x3E, 0x01, 0x08, 0x31, 0x06, 0x0F, 0x0F, 0xA7, 0x53, 0x3F, - 0xFB, 0x18, 0xEF, 0x1F, 0x4F, 0xE3, 0xB8, 0x00, 0x10, 0x11, 0xC6, 0x21, 0x44, 0xC1, 0x99, 0x35, - 0x13, 0xC3, 0xFE, 0x6A, 0xDB, 0xAC, 0xBA, 0x9A, 0x50, 0x0A, 0x09, 0x9A, 0x17, 0x23, 0x95, 0x85, - 0x28, 0x69, 0x6B, 0x89, 0xA0, 0xE3, 0x22, 0x33, 0xC1, 0x39, 0xA7, 0xCE, 0xFB, 0xBB, 0xFB, 0x03, - 0x00, 0x28, 0xCB, 0x84, 0xD6, 0x66, 0x98, 0x35, 0x26, 0x8C, 0xE0, 0x14, 0xBC, 0x23, 0x14, 0x11, - 0x8C, 0xDA, 0xBA, 0xE2, 0x9C, 0x10, 0x04, 0x63, 0x0C, 0x84, 0x30, 0x82, 0xE9, 0x38, 0xCB, 0x2C, - 0xA3, 0xD6, 0x3A, 0x82, 0x31, 0x63, 0x58, 0x19, 0xB5, 0x48, 0x13, 0x43, 0x22, 0x04, 0xB7, 0x4D, - 0xC9, 0x79, 0x09, 0x71, 0x9E, 0x30, 0x3D, 0x9E, 0x4E, 0xF3, 0x32, 0x0B, 0x2E, 0xF6, 0xDB, 0x9D, - 0x36, 0x46, 0x5B, 0x9B, 0x52, 0x04, 0x00, 0x84, 0x10, 0x17, 0xA5, 0xB4, 0x75, 0x00, 0x44, 0x42, - 0x10, 0xA5, 0xC4, 0xFB, 0x18, 0x42, 0x0C, 0x21, 0x32, 0x4E, 0x42, 0x88, 0xD3, 0x2C, 0x4F, 0xE7, - 0x51, 0x1A, 0x37, 0x4C, 0xFA, 0xFE, 0x79, 0x1C, 0x27, 0x79, 0x3A, 0x0F, 0x08, 0xA6, 0xCD, 0x3A, - 0xCB, 0x73, 0x7A, 0xEE, 0x17, 0x04, 0xE1, 0x76, 0xDD, 0x22, 0x8C, 0x8A, 0x9C, 0xEF, 0xD7, 0x0D, - 0xA7, 0x2C, 0x78, 0x13, 0xA2, 0x2B, 0x73, 0x41, 0x10, 0x5C, 0x75, 0xC5, 0x8B, 0xAB, 0xCE, 0x49, - 0x2F, 0x97, 0x70, 0x7F, 0x3F, 0xF7, 0x97, 0xF9, 0xCB, 0xE7, 0x27, 0x63, 0xDC, 0x34, 0x2E, 0x29, - 0x85, 0x98, 0xA2, 0xC8, 0x38, 0x17, 0x34, 0xCF, 0xE8, 0xAB, 0x57, 0x9B, 0xCD, 0xA6, 0x02, 0x28, - 0x69, 0xAD, 0x79, 0xCE, 0xAB, 0xAA, 0xA4, 0x18, 0x4D, 0x72, 0x36, 0xD6, 0xEE, 0xB7, 0xAD, 0xD3, - 0xCE, 0x85, 0x74, 0x38, 0x0E, 0x08, 0x41, 0x88, 0xF0, 0xAF, 0xA0, 0xDD, 0x94, 0x92, 0xD4, 0xE6, - 0xDD, 0xDB, 0xFD, 0xB6, 0xAD, 0x9E, 0x2F, 0x03, 0xE1, 0xD4, 0x7B, 0x57, 0xE4, 0x54, 0x70, 0xBA, - 0xEA, 0x0A, 0x46, 0x10, 0xE7, 0x84, 0xE7, 0xC2, 0xB9, 0x20, 0xB5, 0x9D, 0x16, 0x15, 0x22, 0x30, - 0xDA, 0x51, 0x8C, 0xA6, 0x59, 0x3D, 0x1C, 0x2F, 0xCA, 0x99, 0x2F, 0xCF, 0xE7, 0x49, 0x2A, 0x0C, - 0x63, 0x3F, 0xCD, 0xCE, 0x87, 0xE7, 0x73, 0xFF, 0xD3, 0xA7, 0xFB, 0x90, 0xBC, 0x75, 0xEE, 0xEE, - 0xE9, 0x64, 0x5D, 0x4C, 0x00, 0x70, 0xCE, 0x8C, 0xD2, 0x00, 0x42, 0x00, 0x09, 0xA7, 0x4C, 0x70, - 0x51, 0x97, 0xD5, 0xCB, 0xAB, 0x6D, 0x59, 0x64, 0x8C, 0x70, 0xCE, 0x08, 0x23, 0xB4, 0x6B, 0x1A, - 0xA3, 0x0C, 0x88, 0xA9, 0xED, 0x1A, 0x84, 0x20, 0xA7, 0xB8, 0x69, 0x0A, 0x8C, 0x40, 0x84, 0xE8, - 0xD2, 0xCB, 0x71, 0x98, 0xBC, 0x5D, 0xBA, 0xB6, 0xB8, 0xBE, 0xAA, 0x21, 0x00, 0x4C, 0xF0, 0x4D, - 0xB7, 0x2E, 0xB2, 0xB2, 0x69, 0x4B, 0x7C, 0xB5, 0xEE, 0x08, 0x11, 0x2A, 0x60, 0x2A, 0x4A, 0x6B, - 0x6D, 0xDD, 0xB4, 0xDB, 0xF5, 0x2A, 0xE7, 0xF4, 0x87, 0x9F, 0x3F, 0xF6, 0xC3, 0x48, 0x09, 0x6B, - 0xEB, 0x2C, 0xCB, 0xC4, 0x6E, 0xB5, 0xD9, 0x75, 0xAB, 0x97, 0x57, 0xFB, 0x4D, 0xDB, 0x70, 0x8C, - 0xAB, 0xB2, 0x43, 0x11, 0xAC, 0xEB, 0x72, 0xD5, 0x66, 0xEB, 0xAE, 0x04, 0xC0, 0xD4, 0x65, 0x16, - 0x63, 0x08, 0xD1, 0xCF, 0xF3, 0xEC, 0xBD, 0x29, 0x0A, 0xD6, 0xD4, 0x8C, 0x67, 0xC5, 0xDD, 0xD3, - 0x18, 0xA7, 0x2F, 0x94, 0x98, 0xF7, 0xB7, 0xF5, 0xAA, 0x2B, 0x84, 0x48, 0x57, 0xBB, 0x6A, 0x73, - 0xF3, 0xED, 0xC3, 0xC3, 0x49, 0x08, 0x88, 0x68, 0xB6, 0x4C, 0x53, 0x4C, 0x98, 0x67, 0x7C, 0x18, - 0xA7, 0x7E, 0x50, 0x11, 0x02, 0x80, 0x80, 0xB1, 0x78, 0xD6, 0xE1, 0xDC, 0x4F, 0x98, 0x52, 0x08, - 0xE2, 0x6A, 0x7B, 0x83, 0x60, 0xF2, 0xD6, 0x5C, 0x86, 0x05, 0x53, 0x4C, 0x39, 0xFF, 0xC7, 0xB7, - 0x2B, 0x39, 0xCD, 0xDF, 0xEC, 0x79, 0x89, 0x46, 0x88, 0xC8, 0x6F, 0x76, 0x2D, 0x48, 0xA0, 0x00, - 0x0F, 0x7F, 0x7A, 0x49, 0xAE, 0x36, 0xDB, 0x7E, 0xB2, 0xCB, 0xF1, 0x61, 0x9C, 0x1F, 0x5D, 0x0A, - 0xFB, 0x96, 0x77, 0x25, 0xBD, 0xCA, 0xBC, 0xB2, 0x6E, 0x71, 0x08, 0xC4, 0xA0, 0x83, 0x74, 0xCE, - 0x3F, 0xF7, 0xFA, 0xDD, 0x4B, 0xBE, 0x2A, 0x80, 0x91, 0x0B, 0x8B, 0xF2, 0x6F, 0x5F, 0xE7, 0xBF, - 0xB9, 0xDD, 0xBD, 0x7F, 0xB9, 0xDB, 0x74, 0xAB, 0xB2, 0x2C, 0x1F, 0xCF, 0x32, 0x2F, 0x1B, 0x22, - 0xCA, 0xCF, 0x1F, 0xBE, 0x23, 0x10, 0x20, 0x84, 0x94, 0x76, 0x84, 0x20, 0xCA, 0xB0, 0x52, 0x16, - 0xC4, 0x84, 0x09, 0x65, 0x04, 0x03, 0x00, 0x9C, 0xF7, 0xE7, 0xD3, 0x79, 0xD5, 0xD4, 0x79, 0xC6, - 0x86, 0x71, 0x5A, 0x94, 0xEB, 0xEA, 0xE2, 0xE1, 0x78, 0xDE, 0xAE, 0xEA, 0xAE, 0xC8, 0x94, 0xB1, - 0x99, 0xC8, 0x67, 0x65, 0x36, 0xDB, 0xCD, 0x32, 0x2B, 0x82, 0x08, 0x08, 0x48, 0x29, 0xF7, 0x78, - 0x1C, 0xAC, 0x0F, 0xBF, 0x46, 0x0A, 0xEB, 0xBA, 0x6A, 0x4A, 0x71, 0x3A, 0x8C, 0xCE, 0xC5, 0x90, - 0xE0, 0x87, 0x4F, 0x4F, 0x2E, 0x00, 0x4A, 0x71, 0xD7, 0x94, 0xFD, 0x28, 0x9F, 0x4F, 0x63, 0x4C, - 0x60, 0x56, 0xEE, 0xD3, 0xDD, 0xC1, 0x27, 0xC8, 0x28, 0x5F, 0x66, 0xCD, 0x18, 0x0B, 0x29, 0x41, - 0x88, 0xCA, 0xB2, 0xB8, 0x7B, 0x3A, 0x1F, 0xCF, 0x63, 0x4A, 0x20, 0x04, 0x38, 0x8E, 0x0B, 0x45, - 0x28, 0x2F, 0x73, 0x08, 0x01, 0xC7, 0xB4, 0x5B, 0xB5, 0x9F, 0x1F, 0x0E, 0x90, 0x88, 0x08, 0x00, - 0x65, 0x14, 0x22, 0xD4, 0x8F, 0x72, 0x92, 0xE6, 0xE1, 0xF1, 0xAC, 0x94, 0xE9, 0x7B, 0xE5, 0xBC, - 0xEF, 0x47, 0x3D, 0x4E, 0xDA, 0x5A, 0xBF, 0xCC, 0x26, 0x2B, 0xF2, 0xBB, 0xFB, 0x53, 0x55, 0x66, - 0xDA, 0xB8, 0x8F, 0x9F, 0x8F, 0xCE, 0x47, 0x1F, 0x93, 0xB5, 0xA9, 0x2A, 0x8A, 0xB6, 0xC9, 0xD6, - 0x6D, 0x0D, 0x63, 0x58, 0xB5, 0xB5, 0x71, 0x71, 0x9E, 0x5D, 0xD7, 0x6E, 0xA6, 0x69, 0x44, 0x08, - 0x20, 0x84, 0x0F, 0x97, 0xC9, 0x18, 0x6D, 0x8C, 0xF1, 0xCE, 0x59, 0xAB, 0x41, 0x02, 0x31, 0x24, - 0x6B, 0xD5, 0x22, 0x15, 0x23, 0x74, 0xB7, 0xED, 0x36, 0xAB, 0x0E, 0x40, 0x7C, 0x3A, 0xFF, 0x7F, - 0x55, 0xBD, 0xC7, 0xAE, 0x6D, 0xD9, 0x95, 0x5D, 0x3B, 0xBD, 0x59, 0x76, 0xFB, 0x63, 0xAF, 0x8B, - 0x08, 0x06, 0xF5, 0x10, 0xFF, 0x35, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x4D, 0x32, - 0xA5, 0x44, 0x02, 0x0F, 0xD0, 0xDF, 0xAB, 0x2A, 0x15, 0x5E, 0x3E, 0x20, 0xA1, 0x64, 0xF2, 0x31, - 0x48, 0x86, 0xB9, 0x71, 0x8F, 0xDB, 0x6E, 0xB9, 0xE9, 0x9D, 0x0A, 0x97, 0x2A, 0x68, 0x7E, 0xC4, - 0x18, 0x7D, 0x00, 0xB3, 0xB7, 0x36, 0xE5, 0x0C, 0x2E, 0xD7, 0xB9, 0x6D, 0xDB, 0x4A, 0x88, 0xB6, - 0x91, 0xEB, 0x5E, 0x0A, 0x01, 0x7C, 0x72, 0x5D, 0x5F, 0xED, 0x76, 0x3D, 0xE7, 0x98, 0x4B, 0x11, - 0x7C, 0xD6, 0xC6, 0x0A, 0x41, 0xD6, 0xAB, 0x86, 0x60, 0x9C, 0x62, 0x0C, 0xC1, 0x71, 0x46, 0xD7, - 0xAB, 0x66, 0xB7, 0x6E, 0xA5, 0xE4, 0xDA, 0x38, 0xA7, 0x43, 0x0A, 0x69, 0x1C, 0x97, 0xAF, 0x9E, - 0x47, 0x5E, 0xD1, 0x94, 0x8B, 0xA8, 0xAA, 0x9C, 0x63, 0x29, 0x08, 0x23, 0x24, 0x38, 0x3D, 0x5F, - 0x46, 0x88, 0xA0, 0x75, 0x4E, 0x1B, 0x9B, 0x52, 0xC4, 0x20, 0xD5, 0x95, 0xE0, 0x5C, 0x3A, 0xEB, - 0xAC, 0xD5, 0x31, 0x04, 0x63, 0x1C, 0x84, 0x58, 0xC8, 0xEA, 0x7C, 0x9D, 0x9C, 0xF3, 0x04, 0xC1, - 0x65, 0xD1, 0xC6, 0xB9, 0xD7, 0xF3, 0xE0, 0x7C, 0x6C, 0x1B, 0x49, 0x30, 0xD2, 0x26, 0x40, 0x88, - 0x9D, 0xCF, 0xE7, 0x71, 0x5E, 0xD4, 0x8C, 0x08, 0xEF, 0xEA, 0xF6, 0xB0, 0xDB, 0x4D, 0xF3, 0xAC, - 0x8D, 0xA9, 0x9B, 0x16, 0x22, 0x34, 0xCD, 0x13, 0xC6, 0x58, 0x56, 0x8D, 0xB5, 0xC6, 0x07, 0x0F, - 0x0B, 0x34, 0xC6, 0xC5, 0x9C, 0x8D, 0x0D, 0x21, 0xE6, 0x61, 0x52, 0xDA, 0x58, 0xE7, 0x03, 0x21, - 0x38, 0xC4, 0x38, 0x2E, 0xDA, 0x5A, 0x0F, 0x21, 0x1C, 0xC6, 0x69, 0xD1, 0x2E, 0x67, 0x9C, 0x52, - 0xF9, 0xF0, 0xB0, 0x6D, 0x6A, 0xB6, 0x5A, 0xF5, 0xFB, 0x75, 0x57, 0x73, 0x0A, 0x4B, 0xC1, 0x10, - 0x4A, 0x4E, 0xFB, 0x8A, 0xC6, 0x18, 0xDF, 0xCE, 0x53, 0x23, 0x64, 0xF2, 0x65, 0x56, 0xD1, 0x45, - 0x62, 0x9C, 0x3F, 0x9E, 0x47, 0x00, 0x91, 0x10, 0xE2, 0x3A, 0xE8, 0x18, 0xCB, 0x38, 0x9A, 0xE0, - 0x1D, 0x2C, 0x40, 0x4A, 0xC1, 0x19, 0x39, 0x9F, 0xAF, 0xA0, 0x94, 0xF5, 0xAA, 0xFB, 0xF8, 0xE1, - 0xB6, 0x6B, 0x44, 0x2D, 0xF9, 0xBA, 0xAD, 0xFE, 0xF5, 0x5F, 0xBE, 0x6F, 0x6B, 0x21, 0x28, 0x85, - 0x10, 0x5E, 0x86, 0x59, 0x6B, 0x77, 0x38, 0x6C, 0x29, 0xA5, 0xA7, 0xD3, 0x35, 0xA6, 0x88, 0x30, - 0x7E, 0x77, 0xB3, 0xFD, 0x7F, 0xFF, 0xFD, 0x07, 0x04, 0x51, 0x0C, 0x71, 0xDD, 0x37, 0xB5, 0x64, - 0x31, 0x96, 0x69, 0x72, 0xE3, 0x6C, 0xE6, 0xD9, 0x86, 0x58, 0xCE, 0x97, 0x19, 0x22, 0x84, 0x39, - 0xD1, 0xC6, 0xE7, 0x92, 0x4B, 0x06, 0x21, 0xE6, 0x90, 0x73, 0x29, 0x65, 0x52, 0xF6, 0xED, 0x32, - 0x13, 0x8C, 0x2A, 0xC1, 0x11, 0x46, 0x05, 0x96, 0xAF, 0x2C, 0x10, 0x1B, 0x83, 0x76, 0x61, 0xD1, - 0xAE, 0x92, 0xD5, 0xE5, 0x3A, 0x9F, 0xC7, 0xD9, 0xC5, 0x68, 0x8C, 0x19, 0xE7, 0xA5, 0x40, 0x68, - 0xBD, 0x75, 0x3E, 0x22, 0xC4, 0x10, 0xC2, 0x5D, 0x53, 0x4B, 0x29, 0x31, 0x42, 0x7D, 0xDB, 0x3C, - 0xDC, 0xED, 0x56, 0x9D, 0xDC, 0xF4, 0x92, 0x10, 0xB4, 0xE9, 0x6B, 0x4C, 0x49, 0x2C, 0x25, 0xB9, - 0xD0, 0xD6, 0xF4, 0xE1, 0x71, 0xDF, 0xB7, 0xAD, 0x10, 0x22, 0xA6, 0xEC, 0x4C, 0x9C, 0x16, 0x3D, - 0x6B, 0x13, 0x62, 0xC6, 0xDF, 0x7C, 0x78, 0x6F, 0x5C, 0x9C, 0x8D, 0xF1, 0x21, 0x5B, 0xEB, 0x9C, - 0x35, 0xB5, 0xC0, 0xAF, 0x97, 0x61, 0xD1, 0x1E, 0x42, 0xF4, 0xEE, 0x61, 0xDB, 0x55, 0x72, 0xBF, - 0xBF, 0xEF, 0x37, 0xB7, 0x6E, 0x3E, 0x6B, 0x63, 0x8D, 0xF3, 0x99, 0x77, 0xA7, 0x71, 0x1E, 0x86, - 0x61, 0x98, 0xCD, 0xB4, 0xCC, 0xBF, 0x3E, 0xBF, 0xBE, 0x1D, 0x87, 0xE3, 0x79, 0x18, 0xA7, 0x51, - 0x2B, 0x3D, 0x2F, 0x66, 0x9A, 0x97, 0xE7, 0xB7, 0x6B, 0xE2, 0x37, 0xC3, 0xE2, 0xBB, 0x7E, 0x5F, - 0x00, 0x36, 0xCB, 0x17, 0x29, 0xD9, 0xA2, 0xDC, 0x38, 0x6A, 0x9F, 0x59, 0x80, 0x3B, 0x08, 0x91, - 0xB1, 0x51, 0x2D, 0x3A, 0x38, 0x75, 0xFB, 0xEE, 0xBB, 0xE1, 0xFC, 0x64, 0x8D, 0x5D, 0x6F, 0x6A, - 0xC6, 0xC9, 0xE5, 0x32, 0x43, 0xCC, 0x01, 0xA2, 0x29, 0xA5, 0x52, 0xA0, 0x94, 0xB2, 0x6A, 0x36, - 0x76, 0xB9, 0xFC, 0xCB, 0x07, 0x36, 0xCF, 0xDA, 0x26, 0xB8, 0xDB, 0x6E, 0x7E, 0xB7, 0xC7, 0x29, - 0xAA, 0x0C, 0x90, 0x10, 0xB0, 0xE2, 0x25, 0x5A, 0xF3, 0xF2, 0xF6, 0xE5, 0xAA, 0xAE, 0x10, 0xD1, - 0x3F, 0xFD, 0xF0, 0xFA, 0x7A, 0xD1, 0x14, 0x7B, 0x6D, 0xA3, 0x76, 0xD0, 0x99, 0xC8, 0x50, 0x38, - 0xEB, 0xF8, 0x34, 0xC4, 0x5C, 0xF2, 0xCB, 0x65, 0x38, 0xAA, 0xF8, 0xFF, 0x7F, 0x99, 0x6B, 0xAA, - 0x1F, 0x0E, 0x78, 0xD1, 0x0E, 0xA3, 0xD3, 0x6F, 0x3F, 0xCA, 0x4A, 0x50, 0xEF, 0x34, 0x82, 0xE8, - 0xE1, 0xFE, 0xC1, 0x67, 0xE7, 0x12, 0x6A, 0xD6, 0x8F, 0xE3, 0xE9, 0xA9, 0x22, 0x69, 0xBB, 0x96, - 0x10, 0x22, 0xC6, 0x08, 0x63, 0xC4, 0xEA, 0x00, 0x21, 0x28, 0x00, 0x72, 0x8E, 0x85, 0x20, 0x36, - 0x26, 0xA5, 0x74, 0x2D, 0x05, 0x41, 0x04, 0x82, 0xB8, 0x18, 0x7F, 0xB3, 0xDB, 0x68, 0xAF, 0x9B, - 0xAA, 0xFA, 0xE3, 0xEF, 0xBF, 0x75, 0x5A, 0xB7, 0x6D, 0xEF, 0x42, 0xDE, 0x6E, 0x57, 0x10, 0xA4, - 0xA6, 0xAA, 0xB4, 0xB6, 0xCE, 0xC7, 0xE3, 0x75, 0xB8, 0xCE, 0x36, 0xE5, 0x8C, 0x71, 0x59, 0x6F, - 0xBB, 0x5A, 0xA2, 0x79, 0x34, 0xC3, 0x64, 0x4E, 0xD7, 0x85, 0x71, 0xD9, 0x77, 0x4C, 0x08, 0x4A, - 0x28, 0x7C, 0x7E, 0xBE, 0x2A, 0x15, 0x31, 0xA6, 0xEB, 0xD5, 0x8A, 0x60, 0x8C, 0x09, 0xAE, 0x05, - 0x0B, 0xDE, 0xE6, 0x94, 0x53, 0x0A, 0x7D, 0x27, 0x6F, 0x76, 0xFD, 0x7F, 0xFC, 0xF0, 0x19, 0x53, - 0x22, 0x2A, 0xD1, 0x36, 0xCD, 0x30, 0x2D, 0x4A, 0x5B, 0x46, 0x98, 0xB7, 0xFE, 0xF8, 0x36, 0xDE, - 0x1C, 0x0E, 0x6F, 0xD7, 0x01, 0x00, 0x2C, 0xAB, 0x2A, 0x17, 0x60, 0x94, 0x63, 0x8C, 0x7A, 0xEF, - 0x43, 0x4C, 0x29, 0xE5, 0x9C, 0x00, 0x40, 0xA8, 0x40, 0x04, 0x31, 0xA4, 0x8C, 0x0E, 0x83, 0xB6, - 0x3E, 0xC6, 0x18, 0xD7, 0xEB, 0x7A, 0x18, 0x55, 0x06, 0xB9, 0x92, 0x0C, 0x63, 0x8C, 0x31, 0x3E, - 0x1E, 0xE7, 0x79, 0xB6, 0x7D, 0x5F, 0xCB, 0x8A, 0xD5, 0x55, 0x25, 0x44, 0x7D, 0x3C, 0xCD, 0x08, - 0x89, 0x71, 0x9A, 0xB5, 0x31, 0x10, 0xC3, 0xEB, 0xB8, 0xCC, 0x6A, 0x49, 0x29, 0x41, 0x00, 0xAD, - 0xB3, 0x29, 0x85, 0xBE, 0x6F, 0x9B, 0x5A, 0x78, 0xE7, 0xC6, 0x59, 0x0B, 0xCA, 0x41, 0x41, 0x25, - 0x17, 0xC1, 0x19, 0x42, 0x50, 0x34, 0x14, 0x80, 0xD4, 0xB5, 0x6D, 0x01, 0x44, 0x3B, 0x7F, 0x1E, - 0xC6, 0xC9, 0x18, 0xEB, 0xCB, 0x70, 0x5D, 0xDA, 0xAE, 0x8E, 0x29, 0x33, 0x4E, 0xBB, 0x4E, 0x0C, - 0xC3, 0x94, 0x53, 0xE1, 0x94, 0x56, 0x92, 0x3B, 0xE7, 0x4B, 0x49, 0x6D, 0x53, 0x77, 0x6D, 0x6D, - 0x8D, 0x2F, 0x00, 0x48, 0xCE, 0x2E, 0x97, 0x29, 0x95, 0x4C, 0x18, 0x2E, 0x20, 0xBD, 0xBC, 0x5E, - 0xAD, 0x8D, 0x10, 0x23, 0x6B, 0xDD, 0x34, 0x29, 0xEF, 0x33, 0xC6, 0xD0, 0xF9, 0xB8, 0x28, 0x57, - 0x37, 0x55, 0xF0, 0x4E, 0x70, 0xDA, 0x54, 0xB2, 0x12, 0x2C, 0xFA, 0xA8, 0x8D, 0xCB, 0x39, 0x19, - 0x63, 0x40, 0x29, 0x39, 0x17, 0x84, 0xD0, 0xA2, 0x94, 0x76, 0x1E, 0x82, 0x6C, 0xAD, 0xF3, 0x31, - 0xC5, 0x18, 0x20, 0x80, 0xDE, 0x47, 0x46, 0x60, 0x29, 0x60, 0x5C, 0xAC, 0xF2, 0xFE, 0x7C, 0x1D, - 0x08, 0xA3, 0x82, 0x11, 0x88, 0xA8, 0x94, 0xD2, 0x7B, 0xEF, 0xBC, 0xAD, 0xAA, 0xFA, 0xE9, 0xE5, - 0xB9, 0x80, 0xC2, 0x85, 0x2C, 0x00, 0x12, 0x82, 0x21, 0xCC, 0xDE, 0x05, 0x8C, 0x71, 0x86, 0xC0, - 0x18, 0x4B, 0x09, 0xD9, 0x6D, 0xD6, 0x7D, 0x23, 0x2B, 0x41, 0x3F, 0xDE, 0xEF, 0xFF, 0xCB, 0xF7, - 0xDF, 0x76, 0x75, 0x45, 0x09, 0x62, 0x84, 0xBC, 0x9D, 0xAE, 0xDA, 0x7A, 0xCA, 0x58, 0x4C, 0x05, - 0x16, 0x20, 0x04, 0x2B, 0x39, 0xAF, 0x9A, 0x0A, 0x41, 0x88, 0x0A, 0xBC, 0xDB, 0xEF, 0x4E, 0xE7, - 0x63, 0x29, 0x00, 0x41, 0x88, 0x51, 0x21, 0x10, 0x61, 0xC4, 0x43, 0x42, 0xCA, 0x25, 0x17, 0xB3, - 0xB1, 0x6E, 0x58, 0xA6, 0x98, 0x32, 0x63, 0x82, 0x51, 0x4E, 0x29, 0x5C, 0x77, 0x92, 0x62, 0x7A, - 0xD8, 0x1D, 0x52, 0x28, 0x2F, 0x2F, 0x67, 0x8C, 0xE8, 0xAA, 0xED, 0x57, 0x4D, 0x5B, 0x62, 0xAC, - 0x04, 0x0B, 0xCE, 0x11, 0x4C, 0xAC, 0xD5, 0x21, 0xE6, 0xF7, 0x1F, 0xEE, 0x0B, 0x8C, 0xB7, 0x87, - 0xFE, 0x7E, 0xBF, 0x9D, 0x67, 0x73, 0x3E, 0x8F, 0x10, 0x00, 0xA5, 0xDD, 0x66, 0xB5, 0x1E, 0x07, - 0x05, 0x11, 0x46, 0x00, 0xBD, 0x1C, 0x47, 0x17, 0xE0, 0xF1, 0xA2, 0x20, 0x20, 0x05, 0xC2, 0xB7, - 0xF3, 0x8C, 0x30, 0xD5, 0xDA, 0x39, 0x1B, 0xAC, 0xF5, 0xCB, 0x62, 0x0B, 0x28, 0x10, 0xA1, 0xF3, - 0x75, 0x51, 0x2E, 0x6A, 0xE3, 0x86, 0x59, 0x2F, 0xDA, 0xF9, 0x18, 0x05, 0x63, 0x8C, 0xE0, 0x59, - 0xD9, 0x59, 0xEB, 0xE3, 0x75, 0x32, 0xDE, 0x29, 0x6D, 0x84, 0xA0, 0x9C, 0xF2, 0x71, 0xD6, 0xDA, - 0xD8, 0x61, 0x5E, 0x20, 0xCA, 0x82, 0x13, 0x29, 0xEB, 0x98, 0xD3, 0x30, 0xCF, 0xE3, 0xA2, 0x5E, - 0x4F, 0x97, 0xC5, 0xDA, 0xF3, 0xB0, 0x8C, 0xB3, 0xF6, 0x21, 0x62, 0x4C, 0x16, 0xA5, 0xB5, 0xB1, - 0x82, 0x55, 0xAB, 0xAE, 0x82, 0x10, 0x2C, 0xC6, 0x22, 0x02, 0x0F, 0xFB, 0x75, 0xD7, 0x8B, 0x94, - 0x93, 0xB5, 0x41, 0x6B, 0x37, 0x4D, 0xF3, 0x30, 0x2A, 0x6D, 0x5D, 0x4C, 0xF9, 0x72, 0x9D, 0xF1, - 0xBB, 0xDB, 0xC3, 0xBF, 0xFD, 0xFB, 0x7F, 0xD8, 0x10, 0x38, 0xE7, 0xE3, 0x38, 0x50, 0x98, 0x18, - 0x81, 0xCA, 0x78, 0x8A, 0xD9, 0x37, 0x1F, 0x6E, 0x0F, 0xDB, 0x86, 0x00, 0x96, 0x7C, 0xF0, 0x80, - 0xAA, 0x65, 0x9E, 0xB5, 0x4D, 0xAC, 0xBD, 0x1C, 0x9F, 0x9D, 0x1E, 0xB5, 0x75, 0xCA, 0xDA, 0x97, - 0xE3, 0x15, 0x63, 0x14, 0x52, 0x2A, 0xB0, 0x8C, 0x93, 0xBD, 0x0C, 0xDA, 0x85, 0x68, 0x5C, 0x84, - 0x10, 0x5A, 0x63, 0xB4, 0x0E, 0x54, 0xF6, 0x3F, 0xFD, 0xED, 0x4F, 0xDE, 0xEA, 0xE7, 0xE7, 0x71, - 0x99, 0x15, 0x46, 0x88, 0x75, 0xDF, 0x24, 0x48, 0x4F, 0x2F, 0x3F, 0x6E, 0xF7, 0xEF, 0x86, 0xF1, - 0xF2, 0xF0, 0xE1, 0xBB, 0xA6, 0x6D, 0x8E, 0x2F, 0x6F, 0x8C, 0x00, 0x0C, 0xC1, 0x62, 0x9C, 0x0F, - 0xC9, 0xBB, 0xF0, 0xB5, 0x82, 0x90, 0x73, 0xA1, 0x18, 0x6C, 0x6F, 0x3F, 0x61, 0xF5, 0xF9, 0xC0, - 0x15, 0xA7, 0x84, 0xB2, 0xAA, 0xE0, 0x3E, 0x47, 0x73, 0xD3, 0x39, 0x08, 0xC0, 0x7E, 0xDF, 0x3F, - 0x1F, 0x4F, 0x6F, 0xB3, 0xBA, 0xAA, 0x34, 0x7B, 0x36, 0x59, 0xF7, 0x76, 0x99, 0xEF, 0xD7, 0x14, - 0x80, 0x82, 0x11, 0x5E, 0x4C, 0x5C, 0x2C, 0x70, 0x3E, 0x3E, 0x8F, 0x5E, 0x47, 0x84, 0x90, 0xFE, - 0xFC, 0x66, 0x17, 0x9B, 0x7F, 0xF7, 0x48, 0x7E, 0xF3, 0xBE, 0xFA, 0xF3, 0x2F, 0x9A, 0xE2, 0x94, - 0x10, 0xFE, 0x72, 0x36, 0x32, 0xBA, 0x21, 0xD1, 0xD3, 0x58, 0x40, 0xC1, 0xC6, 0xBB, 0xBE, 0x95, - 0x57, 0x8D, 0xD7, 0x2D, 0xF9, 0xA7, 0xEF, 0xDF, 0xAF, 0x56, 0x2B, 0x41, 0x70, 0xD7, 0x56, 0xDE, - 0x05, 0x1F, 0xD2, 0x30, 0xAA, 0xA6, 0xA6, 0x94, 0xE2, 0x59, 0x19, 0x6B, 0x03, 0xA3, 0xAC, 0xAE, - 0xF9, 0xEF, 0xFE, 0xF0, 0x5E, 0x48, 0xB1, 0xEE, 0xAB, 0xDD, 0xA1, 0x5F, 0xF7, 0xD5, 0xC7, 0x77, - 0xF7, 0x5D, 0x57, 0x4B, 0x29, 0x08, 0xC3, 0xDB, 0xC3, 0xEA, 0xF9, 0xF4, 0xF6, 0xE3, 0xAF, 0x5F, - 0xB6, 0xDB, 0xF5, 0xAA, 0x16, 0x21, 0x85, 0xA7, 0xE3, 0xC5, 0xFB, 0x14, 0x63, 0x7A, 0xFF, 0xFE, - 0x36, 0x07, 0xFB, 0xF2, 0x7A, 0x7D, 0x7E, 0x5B, 0xAC, 0xF3, 0x77, 0x87, 0x5D, 0x4E, 0x65, 0x9E, - 0xF4, 0x30, 0xAA, 0x45, 0x59, 0xED, 0x63, 0x53, 0x57, 0x08, 0xA2, 0x18, 0x63, 0x4A, 0x19, 0x40, - 0x40, 0x29, 0x8D, 0x21, 0xBE, 0x7F, 0x77, 0xC8, 0xA0, 0x84, 0x10, 0xAF, 0xD3, 0xB2, 0x68, 0x7B, - 0x77, 0xD8, 0xEC, 0xB7, 0xFD, 0x75, 0x5E, 0x40, 0x29, 0x95, 0x14, 0x10, 0x82, 0xA6, 0xE2, 0xA3, - 0x72, 0x42, 0x4A, 0xEF, 0x22, 0x65, 0xF2, 0xED, 0xED, 0xFA, 0xFC, 0x72, 0xED, 0xFA, 0x7E, 0x9A, - 0x74, 0x4C, 0x65, 0xBB, 0xEB, 0x11, 0x22, 0x39, 0xC3, 0x0C, 0x40, 0x08, 0x01, 0x80, 0x52, 0x72, - 0xA1, 0x9C, 0x14, 0x00, 0x8D, 0x0E, 0xCE, 0x86, 0x5A, 0x52, 0x2E, 0x08, 0x17, 0xF4, 0x7A, 0x55, - 0x21, 0x14, 0xA5, 0x4D, 0x2E, 0xA5, 0xE4, 0x92, 0x52, 0x3E, 0x5E, 0xCC, 0xCB, 0xDB, 0x7C, 0xBA, - 0x9C, 0xCF, 0xD7, 0x93, 0x8F, 0xB9, 0xE4, 0xE8, 0x43, 0x39, 0x0D, 0x53, 0x4A, 0x91, 0x33, 0x6E, - 0x9D, 0x4D, 0x39, 0x48, 0xC1, 0xD7, 0xAB, 0x6E, 0xBF, 0xE9, 0xA6, 0x69, 0x89, 0x39, 0xDC, 0xDD, - 0xB6, 0x9B, 0xB5, 0x5C, 0x6D, 0x2A, 0x82, 0x09, 0xC5, 0x25, 0x65, 0x5B, 0x20, 0x9A, 0x17, 0x9D, - 0x4B, 0x0E, 0x29, 0x9D, 0x86, 0x51, 0x5B, 0xDF, 0x76, 0x2D, 0x28, 0x45, 0x69, 0x43, 0x99, 0xB8, - 0x9C, 0x87, 0x98, 0xC2, 0x6E, 0xD7, 0x31, 0x86, 0x4B, 0x8E, 0x4A, 0x69, 0x08, 0xC2, 0x6E, 0xDB, - 0x0F, 0xB3, 0x1D, 0xC6, 0x85, 0x73, 0x69, 0xAC, 0xFB, 0xF1, 0xE7, 0x2F, 0x10, 0x64, 0x42, 0xC9, - 0x4F, 0x3F, 0xBF, 0x09, 0xCE, 0xAD, 0x8F, 0x8B, 0x72, 0xB9, 0x40, 0xE7, 0xBC, 0xB1, 0xDE, 0x87, - 0xC8, 0x18, 0x1D, 0xA7, 0x79, 0xD1, 0x46, 0x70, 0x46, 0x10, 0x96, 0x14, 0xEF, 0xB7, 0x9D, 0xAC, - 0xC4, 0xF3, 0xCB, 0x11, 0x63, 0x48, 0x08, 0x42, 0x25, 0x63, 0x4C, 0x0A, 0x42, 0xB1, 0xA0, 0x49, - 0x1B, 0x8C, 0x60, 0x4A, 0xF9, 0x2B, 0x49, 0xB1, 0xAB, 0x25, 0xE3, 0x34, 0xC4, 0x88, 0x20, 0x34, - 0x36, 0x16, 0x04, 0x21, 0x82, 0x31, 0x15, 0xAD, 0x55, 0x29, 0x80, 0x33, 0xA1, 0xB5, 0xCA, 0x39, - 0xA7, 0x94, 0x2E, 0xC3, 0x35, 0x95, 0x1C, 0x7C, 0xF0, 0xCE, 0x85, 0xE8, 0xB5, 0x56, 0x3E, 0xF8, - 0xAF, 0x40, 0xED, 0xF7, 0xB7, 0xBB, 0x7F, 0xFD, 0xC3, 0xB7, 0x37, 0xDB, 0xDD, 0x7E, 0xB5, 0x7E, - 0x7F, 0x7B, 0xFB, 0xE1, 0xEE, 0xBE, 0xE6, 0xB5, 0x73, 0x11, 0x63, 0xBC, 0xDF, 0xB4, 0xB7, 0xDB, - 0xD6, 0x68, 0xE7, 0x7C, 0x08, 0x21, 0xCE, 0x8B, 0xDE, 0xAC, 0x6B, 0xC1, 0x89, 0x5A, 0x54, 0x2D, - 0xA5, 0xF3, 0x81, 0x40, 0x54, 0x52, 0x52, 0xDA, 0xC6, 0x54, 0xAC, 0x0B, 0x42, 0xD4, 0x8C, 0x31, - 0x2E, 0x57, 0xA5, 0xA0, 0x5C, 0xCA, 0x69, 0x98, 0xC7, 0x79, 0x36, 0xD6, 0x87, 0x94, 0xDA, 0xBA, - 0xDE, 0x6F, 0xBA, 0x5D, 0xD7, 0x6C, 0x9A, 0x0E, 0xC4, 0xB2, 0xE9, 0x6B, 0x0C, 0x1C, 0x86, 0x68, - 0xD5, 0xAC, 0x50, 0x41, 0x6A, 0xD1, 0xCE, 0x59, 0x3D, 0xAB, 0x1C, 0x13, 0xA1, 0x74, 0x18, 0x67, - 0x59, 0xB1, 0x79, 0x99, 0x39, 0x67, 0xC6, 0x86, 0x9C, 0x81, 0xA0, 0xF4, 0x3C, 0xCC, 0x8C, 0xA3, - 0xFB, 0x9B, 0x5D, 0x57, 0xD7, 0xDE, 0x85, 0xAA, 0xA2, 0x21, 0xD9, 0xAA, 0x22, 0x29, 0x03, 0xC1, - 0x04, 0xA5, 0x18, 0xC2, 0xFC, 0xE9, 0xE3, 0xED, 0x6E, 0xD7, 0x85, 0x18, 0x4F, 0xD7, 0x49, 0x19, - 0x9F, 0x53, 0xD6, 0x8B, 0x75, 0x2E, 0x36, 0xB5, 0x00, 0x00, 0xCE, 0x4A, 0x2F, 0xC6, 0x41, 0x04, - 0x53, 0x2E, 0xFB, 0x4D, 0x4F, 0x09, 0x1E, 0xA7, 0x85, 0x52, 0x42, 0x08, 0xC6, 0x08, 0xCE, 0xB3, - 0xA5, 0x84, 0x9E, 0x87, 0x09, 0x14, 0x80, 0x31, 0x9A, 0x16, 0xC5, 0x28, 0x4A, 0xA9, 0x4C, 0xB3, - 0xD6, 0xD6, 0x18, 0xE7, 0x53, 0xCA, 0xAB, 0xBE, 0x6B, 0xAA, 0x4A, 0x69, 0x5B, 0x00, 0x98, 0x17, - 0x13, 0x62, 0x44, 0x10, 0xF9, 0x98, 0x66, 0x65, 0x6B, 0x29, 0x0B, 0xC0, 0x4D, 0x25, 0x56, 0x7D, - 0xA7, 0xEC, 0x9C, 0xB2, 0x4D, 0x3E, 0x69, 0xEB, 0x03, 0xC8, 0xCA, 0x6A, 0xE3, 0xBC, 0x36, 0x96, - 0x30, 0xEA, 0x42, 0xC4, 0x9B, 0xB6, 0x31, 0x21, 0x3E, 0x3C, 0x7E, 0xBA, 0x3D, 0xAC, 0x36, 0xEB, - 0x1D, 0xCA, 0xF1, 0xFE, 0xF1, 0x3D, 0x82, 0xEC, 0xE1, 0xEE, 0x70, 0xB3, 0xEB, 0xB3, 0x8F, 0x9C, - 0x30, 0x6B, 0x9D, 0xB2, 0x0E, 0x34, 0x7B, 0x40, 0xC5, 0xE9, 0xE9, 0xEF, 0x0C, 0x86, 0x5C, 0xCA, - 0x30, 0xAB, 0x45, 0xDB, 0x97, 0xD3, 0x85, 0x71, 0xA2, 0x8C, 0x1B, 0x46, 0x13, 0x13, 0x38, 0x9E, - 0x67, 0x00, 0x11, 0x25, 0x14, 0x61, 0x32, 0x8E, 0xD7, 0x4A, 0xCA, 0xEB, 0xA8, 0x51, 0x32, 0x9B, - 0x4E, 0x9E, 0xCE, 0x23, 0x26, 0x62, 0x9A, 0x35, 0x13, 0x5D, 0xD3, 0xAD, 0x9E, 0x3F, 0xFF, 0xB9, - 0xA9, 0xD7, 0x08, 0xB3, 0xBB, 0xC7, 0x0F, 0xBF, 0x7E, 0xFE, 0x91, 0x42, 0xD7, 0xD5, 0x08, 0x12, - 0xA4, 0x5C, 0xB4, 0x3E, 0x22, 0x84, 0x9D, 0x77, 0x10, 0xC4, 0x92, 0x52, 0x0A, 0xA1, 0xED, 0x37, - 0xD9, 0x5B, 0xB5, 0x2C, 0x4D, 0x53, 0xE9, 0xC4, 0x18, 0xE7, 0xA7, 0x51, 0x69, 0x17, 0x6B, 0x49, - 0xAE, 0xA3, 0xB9, 0x8C, 0xD7, 0xD3, 0xE2, 0x05, 0x17, 0x87, 0xAA, 0x50, 0x60, 0x4F, 0x53, 0xA9, - 0x39, 0x69, 0x24, 0x41, 0x08, 0x7B, 0x1F, 0x66, 0xE3, 0xCF, 0xCA, 0xD6, 0x92, 0x19, 0x97, 0xBA, - 0x8A, 0x72, 0x86, 0xB9, 0x80, 0xCA, 0xE4, 0x1F, 0x9E, 0x0C, 0x27, 0x84, 0x40, 0x3B, 0x2D, 0x81, - 0x42, 0x58, 0xB1, 0xFA, 0x6A, 0xEA, 0x55, 0xBF, 0xF2, 0x85, 0xBF, 0x0E, 0x0E, 0x92, 0x56, 0x6B, - 0xF3, 0xE5, 0xCB, 0xD3, 0xA0, 0xD2, 0x38, 0xDB, 0xA6, 0xA9, 0xEF, 0xEE, 0x37, 0xD6, 0xFA, 0xEB, - 0x34, 0x0B, 0x4A, 0x08, 0x82, 0x8C, 0x50, 0x4A, 0xD0, 0xA7, 0x87, 0xDD, 0xA7, 0x87, 0xC3, 0xFB, - 0xC7, 0xED, 0x38, 0x2D, 0x25, 0x27, 0x21, 0x49, 0xB0, 0xCE, 0xEB, 0xA0, 0x96, 0x65, 0x1C, 0x47, - 0x88, 0xB2, 0xF5, 0xCE, 0x87, 0x00, 0x61, 0xD9, 0xAD, 0x7B, 0x46, 0x30, 0x40, 0x45, 0x69, 0xB5, - 0xEE, 0xDA, 0xC3, 0xCD, 0x7A, 0x1A, 0x17, 0x49, 0x50, 0x0A, 0xCE, 0x39, 0x50, 0xB7, 0xDD, 0xA6, - 0x6F, 0xDF, 0xDD, 0x6D, 0xBA, 0xB6, 0x0E, 0x3E, 0x0C, 0xD3, 0xB2, 0x68, 0x27, 0x6B, 0xAE, 0xB5, - 0x79, 0xBB, 0x4C, 0x21, 0x46, 0x8C, 0x21, 0xC6, 0xD8, 0x19, 0xBF, 0xEA, 0x1B, 0x1F, 0xC3, 0x75, - 0x9C, 0xAD, 0xF3, 0x25, 0xE7, 0x79, 0x31, 0x08, 0x14, 0xEB, 0xA2, 0x0F, 0xD9, 0x87, 0x38, 0x29, - 0x7D, 0xBB, 0x5B, 0x6B, 0xE3, 0xEA, 0xA6, 0x09, 0x31, 0xE7, 0x02, 0x9D, 0x0F, 0xA9, 0x24, 0x6D, - 0x1C, 0x61, 0x62, 0x9E, 0x95, 0xB5, 0x7E, 0x9E, 0x2D, 0x22, 0x04, 0x21, 0xB4, 0xCC, 0x6A, 0x1C, - 0x16, 0x21, 0x44, 0xDB, 0xD4, 0x84, 0xE0, 0xB7, 0xD7, 0xE1, 0x32, 0x2E, 0xCA, 0x78, 0x8C, 0x91, - 0x10, 0xFC, 0x7C, 0x9E, 0xAD, 0x0B, 0x29, 0xA7, 0xBA, 0xA9, 0x04, 0x67, 0x20, 0x17, 0x42, 0x40, - 0x01, 0xF9, 0xED, 0x3C, 0xC5, 0x94, 0x8D, 0xF5, 0xA8, 0xB8, 0xDF, 0x7D, 0x5A, 0xBF, 0x0D, 0x4E, - 0x69, 0x87, 0x31, 0x32, 0xCE, 0xDE, 0xAC, 0xE9, 0xBF, 0xFC, 0xA6, 0xCD, 0x48, 0x04, 0x57, 0x30, - 0x44, 0x08, 0x94, 0x7F, 0xFA, 0x6E, 0xBF, 0xDB, 0xB6, 0x9C, 0x02, 0xC1, 0xD0, 0x78, 0x1D, 0x7C, - 0x8A, 0xB3, 0xF2, 0xC7, 0xD3, 0x14, 0x73, 0x84, 0x08, 0x4C, 0x7A, 0xD1, 0xCA, 0x8E, 0x93, 0x46, - 0x18, 0xF5, 0x5D, 0xBD, 0x2C, 0xFA, 0x97, 0x5F, 0x9E, 0x52, 0x8A, 0x00, 0xC2, 0x1C, 0xE2, 0x76, - 0xD7, 0x32, 0x86, 0x28, 0x2D, 0x84, 0x62, 0x65, 0xD3, 0xF9, 0x3C, 0x61, 0x8C, 0x30, 0x2E, 0x7F, - 0xFD, 0xF1, 0xE7, 0x69, 0x5E, 0x38, 0x67, 0xD7, 0x41, 0x51, 0x4A, 0xA5, 0x94, 0x8B, 0xB2, 0x3E, - 0xE5, 0x71, 0x52, 0x31, 0x97, 0x9C, 0x4B, 0x4E, 0xA9, 0x16, 0x1C, 0x94, 0x1C, 0x63, 0xB8, 0xDB, - 0xAE, 0x18, 0x01, 0x6F, 0xA7, 0x41, 0x2B, 0xED, 0xBD, 0x37, 0xC6, 0x70, 0xC9, 0x30, 0x86, 0xDE, - 0x07, 0x59, 0x89, 0x58, 0xD0, 0xA8, 0x4C, 0x4A, 0x09, 0x02, 0x54, 0x0A, 0xB8, 0xD9, 0x75, 0x29, - 0xE5, 0x69, 0xD6, 0x10, 0x41, 0x42, 0x89, 0xD1, 0x2E, 0xE5, 0x1C, 0x53, 0xB6, 0xD6, 0xE5, 0x52, - 0x4A, 0x29, 0x52, 0x56, 0xA5, 0x00, 0x67, 0xAD, 0x0F, 0xDE, 0x58, 0xEB, 0x82, 0x4F, 0x29, 0x41, - 0x00, 0x4A, 0xC9, 0x39, 0x67, 0xCE, 0x29, 0xC8, 0x05, 0x40, 0x70, 0xBB, 0x5D, 0xFD, 0xEE, 0xFD, - 0x47, 0x35, 0x59, 0x6D, 0x42, 0xCA, 0x60, 0x9A, 0x4C, 0x4A, 0x59, 0xBB, 0xF0, 0xE5, 0xF9, 0xCD, - 0x87, 0xA0, 0x8D, 0xB7, 0x3E, 0xED, 0x36, 0xFD, 0xE3, 0xCD, 0x86, 0x52, 0xF8, 0xED, 0xC7, 0x1B, - 0x81, 0x31, 0xA7, 0x78, 0xBB, 0xEE, 0x40, 0x86, 0x52, 0xD6, 0x08, 0x02, 0xA5, 0x54, 0xD3, 0x54, - 0x04, 0x23, 0x8C, 0xD9, 0x6A, 0xBD, 0x89, 0x21, 0x1D, 0xCF, 0x63, 0x08, 0xC1, 0x3A, 0x37, 0xCC, - 0x0B, 0xA3, 0xE8, 0x0F, 0xDF, 0xDE, 0x13, 0x4C, 0x5B, 0x29, 0x36, 0x0D, 0xE7, 0x94, 0x5E, 0xC6, - 0xD9, 0x85, 0xE0, 0xBD, 0x0F, 0xD1, 0x13, 0x8A, 0x29, 0xC6, 0x31, 0x84, 0xED, 0xBE, 0x43, 0x04, - 0xC4, 0xE2, 0x79, 0x25, 0x4E, 0xC7, 0xB1, 0x00, 0xC0, 0x28, 0x22, 0x10, 0xC2, 0x08, 0xB5, 0x72, - 0x31, 0x64, 0x63, 0xED, 0x76, 0xDD, 0xFC, 0xE6, 0xFD, 0xED, 0xC3, 0xCD, 0xFE, 0xF1, 0xB0, 0x5B, - 0xF5, 0x62, 0xBF, 0xAD, 0xF7, 0xEB, 0xF6, 0xC3, 0xC3, 0x81, 0x61, 0x96, 0x9D, 0x23, 0xB8, 0xDC, - 0xDE, 0x6D, 0x8D, 0x35, 0xD7, 0xEB, 0x84, 0x09, 0x4A, 0x19, 0x74, 0x9D, 0xAC, 0x1B, 0x11, 0x63, - 0x59, 0x94, 0xE1, 0x8C, 0x39, 0xE7, 0x63, 0x4C, 0xDA, 0xF9, 0x5C, 0x0A, 0x25, 0x98, 0x73, 0xD2, - 0xD4, 0xF2, 0xAB, 0x3A, 0x32, 0xA5, 0x14, 0x42, 0xA4, 0x94, 0x5A, 0x1B, 0x53, 0xCA, 0xCE, 0x39, - 0x84, 0xB2, 0x60, 0x94, 0x62, 0xC2, 0x19, 0xD3, 0xD6, 0x10, 0x02, 0x53, 0x4A, 0x87, 0xDD, 0x8A, - 0x51, 0x74, 0xBE, 0x0E, 0x29, 0xE7, 0x59, 0x2F, 0xB3, 0xD6, 0x84, 0x16, 0xC6, 0xA1, 0x35, 0xC1, - 0x78, 0x3F, 0x19, 0x7B, 0xBC, 0x4E, 0x21, 0x96, 0x92, 0x10, 0x82, 0x88, 0x72, 0x92, 0x13, 0x7C, - 0x7D, 0x1D, 0x6D, 0xF0, 0x00, 0xA2, 0xCB, 0x65, 0x62, 0x82, 0x62, 0x42, 0xA6, 0x49, 0xE1, 0xDF, - 0x7F, 0xFF, 0xCD, 0xCD, 0xDD, 0xA3, 0x56, 0xE6, 0xFE, 0xE6, 0x66, 0xDD, 0xF5, 0xAB, 0x55, 0x4F, - 0x38, 0xE1, 0x04, 0x1B, 0x65, 0xAC, 0xF1, 0x9C, 0x8A, 0x69, 0x31, 0x93, 0x32, 0xDE, 0x5B, 0x9F, - 0xD1, 0xE7, 0x9F, 0xFF, 0x6E, 0xD5, 0xB0, 0x58, 0x37, 0x2E, 0x7A, 0x36, 0x2E, 0x95, 0x84, 0x40, - 0x0E, 0x21, 0x2A, 0x13, 0x0A, 0x80, 0x08, 0x41, 0xCA, 0xD8, 0x30, 0xD9, 0x49, 0xD9, 0x65, 0x36, - 0x94, 0x89, 0x4F, 0xBF, 0xF9, 0xA3, 0xD1, 0x7A, 0xB3, 0xDE, 0xAE, 0x7B, 0x49, 0x45, 0x07, 0x20, - 0xBD, 0x5E, 0x87, 0x55, 0x03, 0xD7, 0x37, 0xBF, 0xE9, 0xE1, 0xB4, 0x16, 0x09, 0xB4, 0x1F, 0xFE, - 0xFA, 0xE7, 0x7F, 0xFB, 0xDB, 0x0F, 0x7F, 0xFA, 0x97, 0x7B, 0xB9, 0x6F, 0xF1, 0x5F, 0x3E, 0x0F, - 0x1C, 0x95, 0xEF, 0xEE, 0xFA, 0x49, 0x85, 0x69, 0xD1, 0x31, 0xFC, 0xE3, 0x02, 0xDF, 0x6F, 0xF6, - 0x35, 0x50, 0xFB, 0x26, 0xF5, 0xD8, 0xFF, 0x38, 0xD1, 0x6F, 0x6F, 0x5B, 0x7D, 0xFD, 0x8C, 0x70, - 0xBE, 0x5F, 0x77, 0x46, 0xEB, 0xDF, 0x3F, 0x88, 0x9A, 0x63, 0x88, 0x50, 0x8B, 0xCD, 0x68, 0x0B, - 0x84, 0x64, 0xBF, 0x2E, 0x08, 0x85, 0x04, 0x22, 0xA2, 0x65, 0xB1, 0xE1, 0x77, 0xB7, 0x7C, 0xD7, - 0xF1, 0xBF, 0xBE, 0xD8, 0xD9, 0xC4, 0x49, 0xC7, 0x97, 0x73, 0xC4, 0x08, 0x3C, 0xEE, 0xB9, 0x89, - 0x99, 0x32, 0xA8, 0x0C, 0xB8, 0x4C, 0x6E, 0x0A, 0xE0, 0xE7, 0xA7, 0x25, 0xA7, 0xFC, 0xEB, 0xCB, - 0xE9, 0xF9, 0xF4, 0xC2, 0x05, 0x57, 0x8B, 0x8F, 0xF6, 0x4A, 0x91, 0x9B, 0xE7, 0xC5, 0x7B, 0x0F, - 0x52, 0xAC, 0x24, 0xDB, 0xAD, 0xEA, 0xFD, 0xBA, 0xFA, 0xE6, 0xE3, 0xCD, 0xFD, 0xFD, 0xFA, 0xC3, - 0xC3, 0x6E, 0xD3, 0x37, 0x39, 0x06, 0x88, 0x0A, 0x22, 0x50, 0x4A, 0x0A, 0x60, 0xC1, 0x04, 0x1B, - 0xED, 0xEB, 0x9A, 0x04, 0xEF, 0x17, 0x65, 0x4F, 0xC7, 0xE5, 0xF5, 0xF9, 0x5A, 0x62, 0x71, 0x36, - 0x68, 0xE5, 0x8C, 0xF6, 0x52, 0x8A, 0xBE, 0x6D, 0x39, 0xC1, 0xEB, 0xB6, 0x69, 0x2B, 0x79, 0xB3, - 0xDF, 0x34, 0x55, 0xBD, 0xEA, 0xAA, 0x75, 0x5F, 0x7D, 0x85, 0xE2, 0x57, 0x95, 0xDC, 0x6F, 0x57, - 0xEB, 0xAE, 0x86, 0xA5, 0x5C, 0xC7, 0x19, 0x42, 0x40, 0x10, 0x14, 0x82, 0xCD, 0xB3, 0x66, 0x8C, - 0x4E, 0x4A, 0xFF, 0xFA, 0x7C, 0xDE, 0x6F, 0xB7, 0x31, 0xC5, 0x02, 0xA0, 0x10, 0x5C, 0x99, 0xE0, - 0x7C, 0x00, 0x10, 0x7D, 0x75, 0x17, 0x0D, 0xB3, 0xEE, 0x9A, 0x6A, 0xB3, 0xEE, 0xCE, 0x83, 0x9A, - 0x16, 0xB5, 0x28, 0x0B, 0x20, 0x48, 0x09, 0x58, 0x1B, 0x76, 0xDB, 0xF5, 0x7A, 0xB3, 0x1A, 0x27, - 0x45, 0x29, 0x13, 0x9C, 0xC5, 0x98, 0x28, 0xC7, 0x31, 0xA6, 0x10, 0x0B, 0x82, 0x90, 0x32, 0x8C, - 0x09, 0xB6, 0x2E, 0xA6, 0x94, 0x9D, 0x4F, 0x21, 0xC6, 0xAE, 0x97, 0xFB, 0xFD, 0x0A, 0x41, 0x74, - 0x3E, 0x0F, 0x18, 0x63, 0x4A, 0x51, 0xB7, 0xC2, 0x9F, 0xBF, 0x1C, 0x73, 0xB6, 0x75, 0x2D, 0x7F, - 0xFB, 0xAE, 0xD2, 0x6A, 0xF1, 0xC1, 0xDF, 0xEC, 0xF0, 0xDB, 0x39, 0xFC, 0xD7, 0xEF, 0xAB, 0xDF, - 0x7D, 0xAA, 0x29, 0xC2, 0x75, 0xB7, 0xE1, 0x0C, 0xDF, 0x1E, 0xAA, 0x4D, 0x4F, 0xA5, 0x20, 0x18, - 0x33, 0x98, 0x32, 0x0C, 0x69, 0x98, 0x97, 0xBF, 0xFD, 0x72, 0x55, 0xC6, 0x63, 0x82, 0xA6, 0x69, - 0xA9, 0x6A, 0x02, 0x11, 0xF0, 0xA1, 0x28, 0x6D, 0x9C, 0x4B, 0x31, 0xC4, 0x71, 0x5C, 0x08, 0x46, - 0x29, 0x84, 0xCB, 0x65, 0xF4, 0x21, 0x4C, 0x83, 0x2E, 0x39, 0x0A, 0x86, 0x84, 0xE4, 0x29, 0x03, - 0x42, 0x11, 0xA1, 0xE8, 0xF5, 0x78, 0x24, 0x18, 0xF5, 0x2B, 0xB1, 0x68, 0xF7, 0x76, 0x9A, 0x41, - 0x01, 0x10, 0x82, 0x54, 0x8A, 0xB1, 0x5E, 0x72, 0x52, 0x09, 0xCE, 0x39, 0xDD, 0x74, 0xD5, 0xFD, - 0xCD, 0xED, 0xC7, 0xC7, 0xDB, 0x86, 0xB3, 0xF7, 0x0F, 0x7B, 0x00, 0x8B, 0xF3, 0x0E, 0x13, 0x6C, - 0x9C, 0x8B, 0x31, 0x52, 0x4A, 0xAA, 0x9A, 0xFA, 0x5C, 0x0A, 0x00, 0x31, 0xE5, 0x98, 0xC3, 0xAA, - 0x16, 0x0F, 0xFB, 0x1E, 0x21, 0x18, 0x42, 0x7A, 0x38, 0x6C, 0x26, 0xA5, 0xBD, 0x8F, 0x39, 0x27, - 0x8C, 0x11, 0x97, 0x42, 0x56, 0x9C, 0x10, 0x3C, 0x2F, 0x1A, 0x42, 0x08, 0x41, 0x19, 0xC6, 0xB1, - 0xAA, 0xDB, 0x18, 0x82, 0x0F, 0x36, 0xE7, 0x02, 0x00, 0x24, 0x04, 0x53, 0x4A, 0x4B, 0xCE, 0x8C, - 0x12, 0x0C, 0xD1, 0xAA, 0xA9, 0xDE, 0xDD, 0xDD, 0x23, 0xCC, 0x6D, 0x88, 0xE7, 0xCB, 0xD9, 0x87, - 0xD8, 0xD4, 0x0D, 0xA1, 0x98, 0x61, 0xF0, 0x72, 0x3C, 0x4D, 0x4A, 0x1B, 0x1F, 0xCF, 0xC3, 0xEC, - 0x43, 0x3C, 0x0D, 0xF3, 0x7A, 0xD5, 0x56, 0x92, 0x5B, 0x1D, 0x18, 0xE5, 0x08, 0x40, 0x42, 0x68, - 0x55, 0xB5, 0x55, 0x8D, 0x05, 0xA7, 0x6D, 0xDB, 0x69, 0xE3, 0x38, 0x17, 0x31, 0x80, 0xE3, 0x75, - 0x3A, 0x0D, 0x63, 0x88, 0x61, 0x9A, 0x97, 0x55, 0x57, 0x7F, 0xFF, 0xEE, 0xE1, 0x76, 0xD3, 0x82, - 0x94, 0xFA, 0xA6, 0x62, 0x94, 0xBC, 0x5D, 0x46, 0x65, 0x7D, 0x55, 0xD7, 0x00, 0xE2, 0xB7, 0xEB, - 0x78, 0xBA, 0x0E, 0x25, 0xE5, 0x0C, 0x12, 0x00, 0xE5, 0xF9, 0xE5, 0x34, 0x29, 0x7D, 0x7F, 0x73, - 0x28, 0x29, 0x6D, 0xB7, 0x9B, 0x87, 0xDB, 0xDB, 0x5A, 0x48, 0xC9, 0xE4, 0xA6, 0x6B, 0x2B, 0xCE, - 0x08, 0x61, 0xB5, 0xAC, 0x18, 0xE1, 0x29, 0xE6, 0xE7, 0xD7, 0xF3, 0xE9, 0x3C, 0x45, 0x5F, 0xA2, - 0x4F, 0x18, 0x92, 0xAE, 0xAA, 0x6F, 0x77, 0xFD, 0xCD, 0x76, 0x7D, 0xBD, 0x4E, 0xAF, 0xA7, 0xE9, - 0x7C, 0x5D, 0x9C, 0x0B, 0x9C, 0xD2, 0x65, 0xD2, 0xA5, 0xC0, 0x46, 0xF0, 0xC3, 0x76, 0x65, 0x6D, - 0xD8, 0xF4, 0x2D, 0xC1, 0xF8, 0x32, 0x29, 0x29, 0xE9, 0x61, 0xDB, 0x34, 0x95, 0x24, 0x18, 0x59, - 0x1B, 0x86, 0x49, 0x9F, 0xC7, 0xA5, 0x64, 0x40, 0x30, 0xA4, 0x04, 0x7E, 0x7C, 0xB7, 0xAF, 0x05, - 0xF9, 0xF8, 0xB0, 0xBE, 0xDD, 0x36, 0xEF, 0xEE, 0xB7, 0x7D, 0xC3, 0x6F, 0x6E, 0xDA, 0xD5, 0xAA, - 0x2A, 0x39, 0x3A, 0x6F, 0x8D, 0xD7, 0x4C, 0x52, 0xCA, 0x40, 0x8E, 0xA1, 0x69, 0x99, 0x90, 0x04, - 0x11, 0x58, 0x0A, 0x2A, 0x25, 0xBF, 0x9E, 0xCF, 0x31, 0x64, 0xEF, 0xD3, 0x79, 0x98, 0xE6, 0xC5, - 0x2E, 0xCA, 0x87, 0xF8, 0x75, 0xD3, 0x80, 0x98, 0x0A, 0x80, 0xD0, 0x68, 0xD7, 0xB5, 0x6D, 0x5B, - 0x4B, 0xFC, 0xFE, 0xF1, 0x5D, 0x2C, 0xD2, 0x5A, 0x1D, 0xCD, 0xA2, 0x97, 0x71, 0x18, 0xA7, 0x97, - 0xD7, 0xA7, 0xE1, 0x7A, 0x99, 0x86, 0x6B, 0xCA, 0x9E, 0x35, 0xDB, 0xB7, 0xD3, 0x65, 0x5E, 0x66, - 0xCA, 0x48, 0x48, 0xF1, 0x74, 0x3A, 0xF6, 0x5D, 0x1B, 0x42, 0x98, 0xB5, 0x01, 0x05, 0x74, 0x35, - 0x83, 0x10, 0x1A, 0xE3, 0x73, 0xCE, 0x05, 0x42, 0x4E, 0x69, 0x88, 0x59, 0x19, 0x7B, 0xB3, 0x5D, - 0xAD, 0x57, 0xEB, 0x0F, 0xDF, 0xFE, 0xFE, 0x2F, 0x7F, 0xFA, 0x37, 0x9C, 0xFD, 0xE3, 0xBA, 0x7B, - 0x7E, 0xBB, 0xAC, 0xAB, 0x24, 0x80, 0xF3, 0x09, 0xCC, 0xB3, 0x8E, 0x89, 0xEC, 0xFB, 0x6A, 0x59, - 0xC6, 0x9F, 0x5E, 0x96, 0xE8, 0xEC, 0xA7, 0x2D, 0xFA, 0x7E, 0x4F, 0xFE, 0xD7, 0xE7, 0xF1, 0x3A, - 0x07, 0x49, 0x90, 0xB1, 0x1E, 0x14, 0xFF, 0x61, 0xDF, 0xFE, 0xE1, 0xDD, 0xEA, 0x32, 0x2F, 0x48, - 0xEE, 0x36, 0x02, 0x3D, 0xA2, 0x1F, 0x0F, 0xDB, 0x36, 0x8B, 0x9B, 0x93, 0xA3, 0x71, 0xF8, 0xF1, - 0x6E, 0x4B, 0xEE, 0x0E, 0x5B, 0x14, 0x0D, 0x4A, 0x3E, 0x79, 0x4B, 0x60, 0xAC, 0xEB, 0x6A, 0xD4, - 0x61, 0xDB, 0xD3, 0x93, 0x72, 0x67, 0x1D, 0x5F, 0xA6, 0x78, 0xD5, 0x31, 0xE4, 0x84, 0x12, 0xB6, - 0x21, 0xFF, 0x72, 0xB6, 0x88, 0x22, 0xED, 0x53, 0x57, 0x97, 0x02, 0xE1, 0xAA, 0xA3, 0x94, 0xA2, - 0xA7, 0x37, 0x37, 0xAA, 0xEC, 0x22, 0x46, 0xB4, 0x7E, 0x7D, 0x55, 0x08, 0x94, 0x9B, 0x5D, 0x17, - 0xA3, 0xA3, 0x1C, 0x54, 0xF5, 0x6E, 0x1C, 0x06, 0x49, 0x4A, 0x55, 0x89, 0xB6, 0x6B, 0x10, 0x2C, - 0x31, 0xFA, 0x55, 0x5F, 0xF5, 0x35, 0x69, 0x1A, 0x76, 0x1D, 0x14, 0xA4, 0x48, 0x3B, 0xFF, 0xF4, - 0x74, 0x81, 0xA4, 0x5C, 0x66, 0x35, 0x4E, 0x86, 0x10, 0x7C, 0xBE, 0x2E, 0x7F, 0xFB, 0xF1, 0x95, - 0x31, 0x02, 0x31, 0x34, 0x36, 0x2E, 0x3A, 0x00, 0xCC, 0x5C, 0x48, 0xB9, 0x80, 0x10, 0x13, 0x17, - 0x54, 0x48, 0xB1, 0xCC, 0x2E, 0x86, 0x18, 0x82, 0x8F, 0x31, 0x59, 0x1F, 0xAF, 0x93, 0x76, 0x3E, - 0x18, 0xEB, 0x43, 0x4C, 0x8B, 0x36, 0x5F, 0x69, 0x4D, 0x31, 0xA5, 0xBE, 0xAD, 0xFB, 0x55, 0x75, - 0xB3, 0xDF, 0xAE, 0x9A, 0x86, 0x62, 0x94, 0x53, 0xDE, 0x74, 0xCD, 0xF1, 0x32, 0x5C, 0x86, 0x71, - 0xDD, 0x77, 0x7D, 0xD3, 0x0E, 0xF3, 0x42, 0x29, 0x8F, 0x21, 0x1D, 0x76, 0x3D, 0xC2, 0x08, 0x13, - 0x9C, 0x52, 0x1A, 0xE6, 0x25, 0xF8, 0xB0, 0xEA, 0xBA, 0xBF, 0x7F, 0x7E, 0x9D, 0xE6, 0x45, 0x5B, - 0xCB, 0x19, 0x4E, 0x39, 0xA7, 0x98, 0xB7, 0xAB, 0xB6, 0xAA, 0x24, 0x63, 0x94, 0x4B, 0x9A, 0x72, - 0xC6, 0x18, 0x09, 0x29, 0xAD, 0xF6, 0xDE, 0x45, 0x6D, 0x9C, 0x77, 0xA1, 0x96, 0x12, 0x21, 0x54, - 0x0A, 0xE4, 0x15, 0x1D, 0x86, 0x25, 0xE5, 0xDC, 0xD4, 0x32, 0xF9, 0x3C, 0x0C, 0x8B, 0x0D, 0x46, - 0x48, 0x52, 0x42, 0xC0, 0x28, 0xC5, 0x90, 0xBF, 0x7B, 0x5F, 0x7F, 0xFF, 0xA1, 0x21, 0x14, 0x6A, - 0xBD, 0xFC, 0xF3, 0x77, 0x0D, 0x04, 0x19, 0x02, 0xFC, 0xFD, 0x43, 0x95, 0x52, 0x10, 0x15, 0xDF, - 0x6E, 0x1B, 0x4E, 0x52, 0x5B, 0x11, 0xC9, 0x82, 0xE4, 0x8C, 0x92, 0x42, 0x10, 0x2B, 0x21, 0xD9, - 0xE8, 0x36, 0xB7, 0xBC, 0xED, 0xB9, 0x73, 0x7E, 0xD5, 0x11, 0x8A, 0xD1, 0x30, 0x58, 0x88, 0x92, - 0x0F, 0x85, 0x10, 0x0A, 0x61, 0xBE, 0xB9, 0xED, 0xDA, 0x5A, 0x20, 0x00, 0x6C, 0x44, 0x84, 0x22, - 0xB5, 0x18, 0x58, 0x52, 0x25, 0xD8, 0xF5, 0x3C, 0x41, 0x08, 0x5D, 0x0A, 0xC7, 0xF3, 0x9C, 0x73, - 0xC6, 0x10, 0x9E, 0xAF, 0x83, 0xD2, 0xBE, 0x6F, 0xEA, 0x56, 0xD2, 0xF7, 0x0F, 0xDB, 0xDD, 0xBA, - 0xFF, 0x70, 0xB7, 0xFB, 0xE7, 0xDF, 0x7E, 0xBC, 0xD9, 0xF4, 0x1F, 0xEE, 0x77, 0xF7, 0x87, 0xED, - 0xED, 0xBE, 0xBB, 0x59, 0x0B, 0x46, 0xE0, 0x3C, 0xEB, 0x71, 0x56, 0x9B, 0xF5, 0x0A, 0x20, 0x18, - 0x53, 0xA4, 0x94, 0x50, 0x82, 0x11, 0xCA, 0x25, 0x16, 0x42, 0x50, 0xF0, 0x9E, 0x62, 0xF8, 0xFE, - 0x6E, 0x0F, 0x21, 0x88, 0x29, 0xC6, 0x5C, 0xCE, 0xC3, 0xA4, 0x8D, 0xF3, 0x31, 0x53, 0x46, 0xFA, - 0xBE, 0x4D, 0x29, 0xC7, 0x18, 0x62, 0x48, 0x8C, 0x52, 0x08, 0xA0, 0x76, 0xBE, 0xAA, 0x1B, 0xEF, - 0xBD, 0xF7, 0xAE, 0x80, 0xAF, 0xB4, 0x63, 0x10, 0x62, 0x4C, 0x29, 0x15, 0x00, 0x08, 0x41, 0xEB, - 0xB6, 0xDE, 0xAC, 0xD6, 0x08, 0xF3, 0x90, 0x81, 0xF5, 0xC9, 0x58, 0xD7, 0xB7, 0xED, 0x66, 0xD5, - 0xE5, 0x9C, 0x8D, 0x35, 0xEB, 0x75, 0x5B, 0x40, 0x96, 0x15, 0xA7, 0x8C, 0x12, 0x4A, 0x10, 0xC2, - 0x6A, 0xB1, 0xE3, 0x62, 0xDB, 0xAE, 0x91, 0x75, 0xF5, 0x76, 0x1A, 0x00, 0x84, 0xA5, 0x24, 0x67, - 0x4C, 0x5D, 0x55, 0xE3, 0x62, 0x00, 0xC0, 0x25, 0x03, 0x6D, 0xFD, 0xB2, 0xE8, 0xBA, 0x6E, 0x32, - 0x00, 0xFB, 0x5D, 0x7B, 0xB3, 0xD9, 0x01, 0x80, 0x8D, 0xB1, 0x82, 0x53, 0x00, 0x80, 0x0B, 0x9E, - 0x71, 0x12, 0x52, 0x8E, 0x19, 0x2F, 0xC6, 0x5D, 0xA7, 0x39, 0xBA, 0xC0, 0x28, 0x79, 0xBB, 0xCC, - 0x29, 0xFA, 0xB6, 0x62, 0xF7, 0xFB, 0x9B, 0x8A, 0x71, 0x82, 0x70, 0x55, 0x57, 0x6F, 0xC7, 0xE3, - 0x62, 0x8C, 0xF5, 0x56, 0x7F, 0xED, 0xF7, 0x52, 0x1E, 0x73, 0x7A, 0x7B, 0x3B, 0x2F, 0xD6, 0xFE, - 0xF4, 0x74, 0x3C, 0x0D, 0xF6, 0xE5, 0x34, 0xA6, 0x0C, 0x25, 0x17, 0x10, 0x63, 0x21, 0x24, 0xC6, - 0xA4, 0xEF, 0xE4, 0x7A, 0xDD, 0x72, 0x46, 0xEB, 0x8A, 0x8F, 0x93, 0xE2, 0x8C, 0x31, 0x8C, 0x28, - 0x46, 0x94, 0x60, 0x8C, 0x11, 0x67, 0x04, 0x94, 0xB2, 0x6A, 0x44, 0x5D, 0x53, 0x08, 0xD0, 0xED, - 0x76, 0x6B, 0x8C, 0x39, 0x5E, 0xE7, 0x94, 0x0A, 0xA7, 0xE4, 0xE1, 0x6E, 0x43, 0x29, 0xEA, 0x1A, - 0xDA, 0x4A, 0xD6, 0x56, 0xD5, 0x32, 0x9B, 0xAE, 0xAD, 0x82, 0x8B, 0x39, 0x17, 0xAD, 0x7C, 0x53, - 0x8B, 0x52, 0x60, 0xD7, 0x49, 0x2E, 0x28, 0xA1, 0x50, 0xD6, 0x22, 0xF8, 0x94, 0x73, 0xC2, 0x18, - 0x4C, 0x83, 0x72, 0x21, 0x26, 0x5C, 0x42, 0xC8, 0x5F, 0x0B, 0x73, 0x08, 0x82, 0xEB, 0xB4, 0xFC, - 0xF2, 0xE5, 0xB4, 0x59, 0xB5, 0x10, 0xE5, 0x61, 0x98, 0x0B, 0x2C, 0xD1, 0x87, 0xBA, 0xAA, 0x20, - 0x44, 0x97, 0x71, 0x22, 0x11, 0x94, 0xD5, 0xBA, 0x39, 0x9E, 0x5E, 0x46, 0xA7, 0x08, 0x61, 0x00, - 0x02, 0x6F, 0x6D, 0xD3, 0xC8, 0x55, 0x5D, 0x55, 0xAB, 0x5B, 0x9B, 0xF1, 0xE9, 0x72, 0x2E, 0x25, - 0x2B, 0xAD, 0x9A, 0xCD, 0xDD, 0xCD, 0xFD, 0x87, 0xB7, 0xA7, 0xBF, 0x6B, 0x63, 0x00, 0x00, 0x84, - 0x91, 0xE3, 0x79, 0x24, 0x04, 0x43, 0x04, 0x8D, 0x09, 0x02, 0x12, 0xE3, 0x42, 0x8C, 0xFE, 0xFD, - 0xED, 0xB6, 0x11, 0xEC, 0xF1, 0xDB, 0x7F, 0xBA, 0x5E, 0x4F, 0xFB, 0x1A, 0xDE, 0x1E, 0x56, 0xA5, - 0xB8, 0x3F, 0x3E, 0x22, 0x52, 0x32, 0x6A, 0xD8, 0x37, 0x1B, 0xE8, 0x63, 0x20, 0xEC, 0xF8, 0x83, - 0xFE, 0x34, 0x2E, 0xB2, 0x2D, 0x2F, 0x7F, 0xFC, 0x7E, 0x87, 0x5C, 0xF8, 0x32, 0x4C, 0xE7, 0x39, - 0x75, 0x92, 0x29, 0x9F, 0x0F, 0x1B, 0xF9, 0xFB, 0xBB, 0xBC, 0xE9, 0x01, 0x41, 0x99, 0xA3, 0x8D, - 0xE5, 0x8F, 0xE5, 0xF2, 0xD7, 0xB2, 0x7A, 0x77, 0xA4, 0x1F, 0xE6, 0xE1, 0xB4, 0x29, 0x9F, 0x9F, - 0xC7, 0x78, 0x77, 0x53, 0x3D, 0x9F, 0x4E, 0x8B, 0x8A, 0xEF, 0xB6, 0x02, 0xE3, 0xE6, 0x7F, 0xFC, - 0xE7, 0xD3, 0xFB, 0x77, 0x8D, 0xF5, 0xE0, 0xCF, 0xAF, 0xF3, 0x4F, 0xA7, 0x42, 0x10, 0x3C, 0xEC, - 0xF1, 0xDB, 0x35, 0x61, 0x00, 0x3E, 0x6D, 0xF3, 0x92, 0xF0, 0xEC, 0xCA, 0xA8, 0x22, 0xE7, 0x60, - 0x56, 0x05, 0x42, 0xE0, 0x63, 0xF9, 0xE5, 0xA7, 0x18, 0x3C, 0x20, 0x34, 0x33, 0xEA, 0x2A, 0x01, - 0xB7, 0x1D, 0x6C, 0xEB, 0x15, 0xC6, 0x28, 0xC6, 0x58, 0x10, 0x34, 0x26, 0x42, 0x10, 0xA7, 0x69, - 0xA1, 0x92, 0x25, 0xEF, 0xBB, 0x5E, 0x70, 0x0C, 0x4A, 0x0A, 0xE7, 0xC1, 0xFA, 0x9C, 0x5F, 0xBE, - 0x0C, 0xF8, 0x8D, 0xE4, 0x5C, 0x96, 0xC9, 0xFC, 0xF6, 0xBB, 0xFD, 0xB8, 0x58, 0x6B, 0xB3, 0xF6, - 0xC9, 0xDA, 0x38, 0x6B, 0x3F, 0x8D, 0x2F, 0x5D, 0x5F, 0xAB, 0xC5, 0x61, 0x42, 0x08, 0x26, 0x4D, - 0x25, 0x8D, 0x73, 0x8C, 0x11, 0x51, 0xD3, 0x79, 0xD6, 0xD3, 0x62, 0x82, 0x8B, 0x08, 0x43, 0x6B, - 0x3D, 0xE3, 0x14, 0x61, 0x84, 0x31, 0x82, 0x00, 0xB5, 0xAC, 0xB2, 0x3A, 0x1A, 0x6F, 0xB7, 0xDB, - 0x5E, 0x2D, 0xD6, 0x84, 0x70, 0x7E, 0x1B, 0x00, 0x80, 0xBB, 0xF5, 0x6A, 0xB7, 0xED, 0x38, 0x41, - 0x00, 0xC4, 0x9B, 0x6D, 0xF5, 0xDF, 0xFF, 0xE7, 0x9F, 0xD6, 0x5D, 0x3B, 0x8C, 0xCB, 0xB4, 0x18, - 0xC1, 0x2B, 0x29, 0x65, 0x57, 0x57, 0x97, 0x59, 0x05, 0x1F, 0x5D, 0x88, 0xA0, 0x14, 0x2E, 0xD8, - 0x4F, 0xCF, 0xAF, 0xC6, 0xDA, 0xC7, 0xDB, 0xC3, 0xDD, 0xCD, 0x81, 0x31, 0x72, 0xBD, 0x5C, 0x38, - 0x67, 0x5C, 0xF2, 0x98, 0xF2, 0xA2, 0x14, 0x13, 0x14, 0x22, 0x2E, 0x04, 0xBB, 0x5E, 0xE6, 0xAA, - 0x6D, 0x64, 0x25, 0x3E, 0xFF, 0xFA, 0xA2, 0x94, 0x0F, 0x3E, 0x75, 0x7D, 0x2D, 0x24, 0xC9, 0x05, - 0x40, 0x08, 0x05, 0xC5, 0xCF, 0x2F, 0xC3, 0xFD, 0xED, 0xCA, 0x07, 0x57, 0x72, 0xF9, 0x70, 0x2F, - 0x61, 0x30, 0x42, 0xE4, 0x5E, 0x74, 0xEF, 0xF7, 0xF4, 0xA7, 0x57, 0x35, 0x3B, 0xF7, 0xE9, 0x63, - 0xBD, 0x65, 0xF0, 0xBA, 0xE0, 0xFF, 0xE7, 0x9F, 0x9A, 0x61, 0x72, 0x3E, 0x80, 0xCD, 0x96, 0xCE, - 0xCB, 0x15, 0x12, 0x92, 0xC3, 0xC8, 0x44, 0x6B, 0x03, 0x08, 0xCE, 0x4A, 0x01, 0x49, 0x9D, 0x5B, - 0x94, 0x09, 0x25, 0x97, 0x31, 0xFC, 0xFE, 0x83, 0x30, 0x2E, 0xFC, 0xFB, 0x5F, 0x26, 0x4C, 0xD0, - 0x7E, 0x4F, 0xAF, 0x03, 0x70, 0xDE, 0x3F, 0x3C, 0xD4, 0xF7, 0x77, 0xDD, 0xF1, 0x65, 0x94, 0x92, - 0x7E, 0xEA, 0x7A, 0xAD, 0x46, 0x86, 0x20, 0x86, 0xC5, 0xE8, 0xB0, 0xDB, 0xEE, 0x52, 0xC9, 0x12, - 0x64, 0x18, 0xE1, 0xC7, 0xF7, 0x0F, 0x20, 0xFB, 0x94, 0xBC, 0x94, 0x92, 0x12, 0x5C, 0x32, 0xA0, - 0x94, 0x29, 0xED, 0x09, 0x02, 0x25, 0x05, 0xAB, 0xE7, 0x10, 0x01, 0x44, 0xC4, 0x3B, 0x7F, 0xC9, - 0x8E, 0x30, 0x52, 0x55, 0xF0, 0x8E, 0x35, 0x7D, 0xD7, 0xC7, 0xD4, 0x5D, 0x86, 0x6E, 0xB1, 0xE1, - 0x78, 0x1E, 0xB5, 0x51, 0xAB, 0x5A, 0x2E, 0xCA, 0xE7, 0x90, 0xBA, 0xBE, 0xA6, 0x8C, 0x09, 0xCE, - 0x67, 0xE5, 0x5E, 0xCF, 0x97, 0x5A, 0xD0, 0x5A, 0xB0, 0xD9, 0x38, 0x08, 0x60, 0x0C, 0x41, 0x2B, - 0x23, 0x18, 0x8D, 0x21, 0xB9, 0x10, 0x4B, 0x01, 0x29, 0x25, 0x63, 0x74, 0x8C, 0x11, 0x43, 0x98, - 0x4A, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0xA5, 0x14, 0x08, 0xA1, 0x75, 0x81, 0x6F, 0x39, 0x23, - 0x34, 0x15, 0x94, 0x12, 0xA0, 0xA2, 0xFA, 0xB0, 0xDD, 0x0B, 0x10, 0x9C, 0x35, 0xD6, 0xFB, 0x61, - 0x5E, 0xA4, 0xA4, 0x00, 0x94, 0xE3, 0xF9, 0x3A, 0xCF, 0x6E, 0xBB, 0xED, 0x01, 0x04, 0xA0, 0x00, - 0x58, 0xE0, 0xA4, 0xAC, 0x09, 0xBE, 0x40, 0x00, 0x11, 0xC8, 0xD1, 0xCB, 0xAA, 0x53, 0x9E, 0xFF, - 0xF2, 0xFC, 0x74, 0xB7, 0xDB, 0x96, 0x12, 0x2A, 0x81, 0x0E, 0xBB, 0xD5, 0xEB, 0x79, 0x96, 0x5C, - 0x40, 0x88, 0x31, 0x13, 0x39, 0xA6, 0xE7, 0xD3, 0xD8, 0x4A, 0x16, 0x53, 0x76, 0x3E, 0x12, 0x8A, - 0x73, 0x41, 0x11, 0x64, 0xAD, 0x67, 0x49, 0x49, 0xC5, 0x99, 0xF3, 0x65, 0xDD, 0xB5, 0x1F, 0xEE, - 0x36, 0x4D, 0xC5, 0x43, 0xC4, 0xBF, 0x7C, 0x7E, 0x5D, 0xAC, 0xCD, 0x00, 0x0E, 0xF3, 0x62, 0x9D, - 0xDF, 0x6D, 0x5B, 0x08, 0x20, 0xE7, 0xAC, 0xAA, 0x25, 0x63, 0x74, 0x7F, 0xD3, 0x82, 0x82, 0x66, - 0xED, 0x66, 0x9D, 0xC6, 0x69, 0xFC, 0xF8, 0xEE, 0xA6, 0x6B, 0x1B, 0x63, 0xDC, 0xB4, 0x98, 0xBE, - 0xEB, 0x8C, 0x71, 0x9C, 0xB2, 0xDF, 0x7E, 0x7A, 0x98, 0x66, 0x43, 0x10, 0x61, 0x8C, 0x8E, 0xE3, - 0x90, 0x0B, 0xC4, 0x84, 0x11, 0x92, 0x16, 0xAD, 0x42, 0x4C, 0x92, 0x33, 0x6F, 0xE2, 0xCD, 0xCD, - 0x6E, 0x98, 0x97, 0xF3, 0xB8, 0x20, 0x04, 0x41, 0x49, 0x9F, 0xEE, 0x36, 0x29, 0xA7, 0xEB, 0xAC, - 0x71, 0x23, 0xBF, 0x4C, 0x17, 0xE7, 0xFC, 0xEF, 0xBF, 0x7B, 0xCC, 0x09, 0x8D, 0xA3, 0x0D, 0x29, - 0xC9, 0x0A, 0x4B, 0x8A, 0x34, 0x42, 0x6A, 0xB4, 0x98, 0x62, 0xC2, 0xB0, 0x5A, 0x0C, 0x93, 0x54, - 0x08, 0x89, 0x40, 0x16, 0x9C, 0x52, 0x42, 0x31, 0x63, 0xE8, 0x00, 0x9E, 0x3E, 0x5F, 0x65, 0x55, - 0x1B, 0x1D, 0x52, 0x4E, 0xDF, 0x7C, 0xD8, 0x1C, 0xB6, 0xF2, 0xE9, 0x55, 0x63, 0x02, 0x77, 0xDB, - 0xDE, 0x28, 0xEB, 0x62, 0xFA, 0xF5, 0xE5, 0x88, 0x08, 0xC2, 0x08, 0x67, 0x88, 0x79, 0xD0, 0xE7, - 0x9E, 0x78, 0x2A, 0x1A, 0x97, 0x8A, 0x60, 0xA8, 0x60, 0xE1, 0x12, 0xC1, 0xB4, 0x2A, 0x00, 0x9C, - 0x8E, 0x2F, 0x8C, 0x12, 0xCE, 0x69, 0xD5, 0xED, 0xCE, 0x97, 0xA3, 0xF7, 0x8E, 0x57, 0xB5, 0xD1, - 0xEA, 0xAB, 0x29, 0xA8, 0x64, 0x50, 0x4A, 0xF9, 0xD7, 0x6F, 0xB8, 0x09, 0xE5, 0x32, 0xE9, 0xBB, - 0x4D, 0xFB, 0xC7, 0xC7, 0x1D, 0xAF, 0xD7, 0xCF, 0xA7, 0xEB, 0x43, 0x13, 0xBE, 0x5D, 0x99, 0x9A, - 0xC4, 0x35, 0xF1, 0x92, 0x97, 0x94, 0x9D, 0xB3, 0x7A, 0x57, 0x25, 0xC4, 0xC9, 0xD3, 0xF1, 0x0D, - 0xB2, 0xDE, 0xBB, 0xF0, 0x58, 0x9D, 0x1F, 0xB7, 0x38, 0x25, 0x77, 0xBB, 0x15, 0x77, 0x3B, 0x5E, - 0x91, 0xF2, 0x70, 0x4B, 0x36, 0x2D, 0x3A, 0x6A, 0xEB, 0x53, 0xB2, 0x2E, 0x80, 0x22, 0xDE, 0xF5, - 0x0C, 0x8A, 0xEE, 0x3F, 0x8E, 0xD8, 0xCE, 0xBF, 0xEC, 0x2B, 0xBD, 0x62, 0xB1, 0xE6, 0x5E, 0x7B, - 0xE6, 0x8A, 0xFC, 0xF1, 0xA4, 0xD6, 0xDB, 0xCD, 0x64, 0x20, 0x00, 0x59, 0x85, 0x94, 0x8B, 0xFE, - 0x75, 0x20, 0x92, 0xC1, 0xDB, 0x75, 0x19, 0x54, 0x19, 0xAF, 0xB9, 0xA9, 0xE1, 0xD3, 0x35, 0x11, - 0x02, 0x85, 0x2C, 0xB3, 0x01, 0xCE, 0x17, 0xC6, 0x10, 0x43, 0xA0, 0xE2, 0x4C, 0x99, 0xC4, 0x28, - 0xC2, 0x10, 0xC6, 0x98, 0x09, 0x2E, 0x6D, 0x25, 0x0A, 0xC0, 0x39, 0x17, 0x17, 0xE2, 0xAC, 0x33, - 0x84, 0x14, 0x66, 0x53, 0x4B, 0xD2, 0x76, 0x22, 0x45, 0xC7, 0x29, 0xF2, 0xD6, 0x3F, 0x7D, 0xB9, - 0x1E, 0x2F, 0x6A, 0x98, 0x4C, 0x2A, 0x80, 0x70, 0x9E, 0x63, 0xAC, 0x24, 0xCF, 0x10, 0xBA, 0x08, - 0xE6, 0xC9, 0x11, 0x84, 0x73, 0x49, 0x18, 0x81, 0xAA, 0x12, 0x29, 0xE7, 0x52, 0xC0, 0x6A, 0xD5, - 0xD4, 0x8D, 0x04, 0x20, 0x57, 0x4D, 0x05, 0x09, 0x36, 0x3A, 0x2C, 0x8B, 0x1D, 0x06, 0x05, 0x21, - 0xC4, 0x14, 0x53, 0x8A, 0x8D, 0xF5, 0x31, 0x46, 0x8C, 0x51, 0x4C, 0x25, 0xE5, 0xA2, 0xB4, 0xF1, - 0x31, 0x8E, 0xB3, 0x52, 0xC6, 0x19, 0xEB, 0x7D, 0x48, 0x97, 0x61, 0xD6, 0xCE, 0x10, 0x82, 0x63, - 0x49, 0xB3, 0xD6, 0x84, 0x94, 0x9B, 0x4D, 0xCF, 0x30, 0xBB, 0xCE, 0x9A, 0x33, 0x78, 0xD8, 0x6F, - 0x09, 0x86, 0x2F, 0xC7, 0xCB, 0xB0, 0x98, 0xD7, 0xF3, 0xF5, 0xF1, 0x66, 0xBB, 0xEE, 0xEB, 0xF3, - 0x30, 0x0B, 0x4E, 0xF7, 0xEB, 0xFE, 0xB0, 0x59, 0x13, 0x0C, 0xCF, 0x97, 0x6B, 0xD7, 0xAF, 0x08, - 0x15, 0xD6, 0x58, 0x1F, 0xBD, 0x8F, 0x71, 0x99, 0x14, 0xA5, 0xD0, 0xDA, 0xA0, 0x54, 0x60, 0x8C, - 0x54, 0x95, 0x44, 0x10, 0x71, 0x81, 0x72, 0x06, 0x6D, 0xC3, 0x9D, 0x8B, 0xE3, 0x64, 0xBF, 0x7D, - 0xEC, 0x6B, 0x81, 0x0F, 0x87, 0xAA, 0x17, 0xF8, 0x71, 0x0B, 0x1A, 0x49, 0xB7, 0x15, 0x58, 0xB7, - 0x19, 0xC0, 0xC2, 0x10, 0xB0, 0xDA, 0x27, 0x10, 0x21, 0x2A, 0xB8, 0x64, 0x1D, 0x32, 0xAD, 0xF8, - 0xE9, 0x6A, 0x78, 0x05, 0xDB, 0x8E, 0x65, 0xA7, 0x1A, 0x01, 0x95, 0x76, 0xC1, 0xA4, 0x82, 0x50, - 0x82, 0x30, 0x17, 0x84, 0x90, 0x8F, 0x79, 0xB1, 0x46, 0x5F, 0x86, 0xCC, 0x18, 0xAD, 0x65, 0x0C, - 0x10, 0x66, 0x0C, 0x61, 0xF1, 0xD6, 0x45, 0x0C, 0xCB, 0xBF, 0xFE, 0x41, 0x0A, 0x86, 0xAE, 0xD7, - 0x31, 0xC4, 0x80, 0x09, 0x4B, 0xCE, 0x1D, 0xD6, 0xFD, 0xB6, 0xAF, 0x39, 0xA3, 0x94, 0x8A, 0x4A, - 0xB0, 0x56, 0xCA, 0x8A, 0x92, 0xBE, 0xE1, 0x84, 0xF0, 0x14, 0x0B, 0x28, 0xD0, 0xF9, 0x80, 0x28, - 0x4D, 0x00, 0x68, 0x9B, 0x6C, 0x08, 0xB9, 0x64, 0x2A, 0xE8, 0x34, 0xCD, 0xC3, 0x34, 0x23, 0x02, - 0x17, 0x63, 0x62, 0x0C, 0x8B, 0xB5, 0xE7, 0x41, 0x69, 0x13, 0x43, 0x02, 0xA0, 0x94, 0x9C, 0x72, - 0xDF, 0x4A, 0x6D, 0xDD, 0xB2, 0x18, 0xCE, 0x64, 0x2E, 0x45, 0xD6, 0x12, 0x13, 0x7A, 0xB3, 0xDB, - 0xCF, 0xF3, 0xF2, 0xF4, 0x7A, 0xFA, 0xF8, 0x70, 0x8B, 0x21, 0x08, 0x29, 0x02, 0x88, 0x63, 0x8C, - 0x5F, 0x55, 0x58, 0xA0, 0x00, 0xEF, 0x63, 0x2E, 0xB0, 0x14, 0x50, 0x4A, 0xF9, 0x6A, 0x8A, 0xF8, - 0xC7, 0x0C, 0xFB, 0xBF, 0x1F, 0x82, 0xE8, 0x6E, 0xBF, 0x5F, 0x94, 0x8A, 0x19, 0xF4, 0x9B, 0x03, - 0x28, 0x05, 0xE5, 0x68, 0x96, 0x69, 0xD1, 0xC6, 0x78, 0x8F, 0x10, 0x9C, 0x16, 0xFD, 0xF9, 0xF5, - 0x0C, 0x20, 0x32, 0xD6, 0x1B, 0x6B, 0x0B, 0x04, 0x31, 0x15, 0xE7, 0xD3, 0xA2, 0xFD, 0xAC, 0x5C, - 0xCA, 0xE5, 0x32, 0x6A, 0xE3, 0x02, 0x00, 0x20, 0x16, 0x90, 0x4B, 0x4A, 0x39, 0x84, 0xE8, 0x39, - 0x06, 0x4A, 0xCD, 0x4D, 0xDB, 0x4B, 0x29, 0xCE, 0xC3, 0x15, 0x40, 0xE0, 0xBD, 0x3B, 0x5D, 0x06, - 0x59, 0x37, 0x21, 0x16, 0x97, 0xA1, 0xF1, 0x01, 0x63, 0x32, 0xCD, 0x73, 0x4A, 0x51, 0x32, 0x2A, - 0x38, 0xE7, 0x8C, 0x7E, 0xB8, 0xDB, 0x2F, 0x8B, 0x79, 0x3D, 0x4D, 0x7F, 0xF9, 0xF9, 0x65, 0x36, - 0xEE, 0x78, 0x9D, 0x86, 0xC5, 0xA6, 0x0C, 0x38, 0xA3, 0x94, 0x10, 0x00, 0x60, 0xCC, 0x69, 0x18, - 0xE7, 0xF3, 0x79, 0x40, 0x10, 0xAD, 0xDB, 0x6E, 0xBF, 0x6E, 0x38, 0x01, 0xF7, 0xFB, 0x76, 0xD5, - 0x72, 0x90, 0xF3, 0xD3, 0xEB, 0x79, 0xD1, 0xEE, 0xF9, 0xED, 0xF2, 0x7C, 0x1C, 0x08, 0xC6, 0x25, - 0x17, 0x29, 0xAB, 0x75, 0xDF, 0x43, 0x98, 0x9C, 0xF7, 0x5D, 0xDF, 0x87, 0x50, 0x16, 0xAD, 0x21, - 0x2A, 0xD6, 0x39, 0xCE, 0x18, 0xE7, 0x74, 0x9A, 0xCD, 0xDB, 0xF9, 0x1A, 0x72, 0x41, 0xA0, 0xAC, - 0x1A, 0x06, 0x72, 0x9A, 0x26, 0xAB, 0x4D, 0x30, 0x36, 0xBC, 0x5E, 0x17, 0x59, 0x89, 0xC3, 0x76, - 0xFB, 0x97, 0xBF, 0x3F, 0x17, 0x00, 0xD6, 0xEB, 0x66, 0xBB, 0x92, 0xC7, 0xF3, 0x32, 0x8C, 0x76, - 0x98, 0xCC, 0xB4, 0xB8, 0x71, 0xB6, 0x97, 0xF3, 0x24, 0x18, 0x36, 0x8B, 0x45, 0x10, 0x46, 0x1F, - 0x09, 0x46, 0x39, 0x44, 0x41, 0xE1, 0xAA, 0x6B, 0x04, 0x67, 0x5C, 0x92, 0x87, 0x43, 0xBF, 0x5F, - 0xB3, 0x10, 0x03, 0x17, 0xE4, 0xBB, 0x6F, 0xEE, 0xEF, 0x6F, 0x36, 0x5C, 0xD0, 0x71, 0x9E, 0xB5, - 0xB2, 0x4C, 0x70, 0x5C, 0xD7, 0x1D, 0x22, 0x92, 0x03, 0xBB, 0xAE, 0xD0, 0xA8, 0xE2, 0xE6, 0xF6, - 0x23, 0xE6, 0x8D, 0x73, 0x11, 0x95, 0x60, 0x8C, 0x3A, 0x9E, 0x4E, 0xCA, 0xCC, 0x84, 0x10, 0x65, - 0xDC, 0xE1, 0xFE, 0xD3, 0x97, 0xCF, 0x7F, 0xBF, 0x7F, 0xFC, 0xB0, 0x8C, 0x97, 0x92, 0xA3, 0x0B, - 0x81, 0x89, 0x86, 0x52, 0xB6, 0x92, 0xF0, 0xBF, 0x7D, 0x4B, 0x7F, 0x78, 0xB1, 0xDB, 0xBE, 0x7E, - 0xDC, 0x34, 0x77, 0x77, 0x77, 0xFF, 0xEB, 0xF3, 0x40, 0xCC, 0xE7, 0xDF, 0x6D, 0xA2, 0x76, 0xA1, - 0xAB, 0x49, 0xDB, 0xF0, 0xCB, 0xF8, 0xD6, 0x89, 0xBC, 0x6E, 0x45, 0x48, 0xE9, 0xAF, 0xAF, 0xCB, - 0xCB, 0x92, 0xB6, 0x15, 0xDB, 0x70, 0xD5, 0x55, 0xEE, 0xA2, 0x67, 0x4E, 0x59, 0x4C, 0x38, 0x66, - 0xB0, 0x59, 0x8B, 0x1F, 0x5E, 0xC7, 0xC9, 0x2D, 0x10, 0x41, 0x89, 0xC9, 0x4A, 0x70, 0x8E, 0x80, - 0xC9, 0xF0, 0xDF, 0x7E, 0x7C, 0x7E, 0xA8, 0xA7, 0x6E, 0x55, 0xFF, 0xED, 0xC5, 0x50, 0x06, 0x7C, - 0x4E, 0xBF, 0x7D, 0x7F, 0xB3, 0x38, 0x4F, 0x71, 0xBE, 0xED, 0x44, 0xC8, 0x71, 0xBD, 0xDD, 0xBE, - 0x5C, 0xA7, 0xB3, 0x4E, 0x00, 0xA1, 0xC7, 0x1E, 0xDC, 0x08, 0x78, 0xD3, 0x22, 0x42, 0xF0, 0x64, - 0x31, 0x67, 0x68, 0xD6, 0x65, 0x9C, 0xF3, 0xB6, 0xC7, 0x14, 0x63, 0xC9, 0xC1, 0x77, 0xF7, 0x1D, - 0xA1, 0xE4, 0xF9, 0x68, 0x30, 0x28, 0x9C, 0x21, 0x8C, 0x80, 0xF5, 0xC5, 0xD8, 0x9C, 0x53, 0x36, - 0xC6, 0xB9, 0x90, 0x66, 0x15, 0x19, 0xAB, 0x1E, 0x1F, 0xB6, 0x18, 0x2A, 0x67, 0x13, 0x26, 0xBD, - 0xD6, 0xE8, 0xE5, 0xE5, 0x24, 0x1A, 0xA9, 0xB5, 0x0B, 0x05, 0x54, 0xAD, 0x0C, 0xCE, 0xC6, 0x18, - 0x9B, 0x55, 0xF5, 0xFC, 0x32, 0x4A, 0xC9, 0xFF, 0xB1, 0x96, 0x31, 0x34, 0xCA, 0xC7, 0x98, 0x08, - 0x25, 0x25, 0x67, 0xA3, 0x7D, 0x01, 0x19, 0x63, 0x68, 0x5D, 0xC0, 0x04, 0x69, 0x6D, 0x11, 0x42, - 0x8C, 0x11, 0x21, 0xA9, 0xE0, 0x94, 0x71, 0x8A, 0x30, 0x4C, 0x29, 0x79, 0x17, 0x29, 0x25, 0x29, - 0xA5, 0x04, 0x0A, 0x80, 0xA0, 0x6E, 0x2A, 0xAB, 0xFD, 0x34, 0xAB, 0x52, 0x40, 0xDD, 0x54, 0xDE, - 0xC7, 0xD3, 0x79, 0x2C, 0xB0, 0x84, 0x9C, 0x16, 0xE5, 0xBA, 0xAE, 0xA6, 0x94, 0x7E, 0xFB, 0x78, - 0x97, 0x52, 0x26, 0x18, 0x6B, 0x63, 0x84, 0xA4, 0xDE, 0xFB, 0x4A, 0xF2, 0x02, 0xD0, 0x38, 0xA9, - 0x9C, 0xCB, 0x7E, 0xD3, 0xE7, 0x1C, 0x31, 0xC2, 0xC7, 0xD3, 0xA5, 0x5D, 0x1F, 0x10, 0xC1, 0xA5, - 0x00, 0x46, 0xD0, 0xF1, 0x32, 0x42, 0x00, 0x39, 0x85, 0x9C, 0x42, 0x00, 0xC2, 0x38, 0xE9, 0xD3, - 0x71, 0xC1, 0xB0, 0xDC, 0xEE, 0xFB, 0xC7, 0x7B, 0xDA, 0x37, 0xF8, 0xF5, 0xD5, 0x34, 0x82, 0x3C, - 0xEC, 0xD9, 0x3F, 0x7F, 0xD3, 0x31, 0x18, 0xEF, 0xF6, 0x14, 0xE4, 0xBC, 0xE9, 0x05, 0x67, 0x69, - 0x5D, 0xF3, 0xD1, 0xC6, 0x45, 0xFB, 0x71, 0x0C, 0x3E, 0x7A, 0x65, 0xCD, 0x68, 0x81, 0xD2, 0xDE, - 0xB9, 0xB4, 0xE8, 0x38, 0xD9, 0xE8, 0x5C, 0x80, 0x39, 0x42, 0x84, 0x5E, 0x8F, 0x7A, 0x9C, 0x3C, - 0xE7, 0x72, 0x5A, 0xD4, 0x62, 0x54, 0x2B, 0x90, 0x37, 0x56, 0x5B, 0x5D, 0x02, 0x9B, 0x2D, 0xCC, - 0x40, 0x33, 0xE2, 0x67, 0x65, 0x19, 0xF5, 0x9B, 0x35, 0x93, 0xB2, 0xBC, 0xBB, 0x43, 0x6B, 0xE2, - 0x4F, 0xE7, 0xEC, 0x13, 0xB6, 0xD6, 0xFF, 0xFA, 0xE5, 0x55, 0x32, 0x68, 0xF4, 0xF4, 0x7A, 0x7E, - 0xBB, 0x2C, 0x1A, 0x14, 0x60, 0xAC, 0xF6, 0xC9, 0xFA, 0xA0, 0x17, 0x67, 0x67, 0xE5, 0x8F, 0xE7, - 0xA5, 0x14, 0xF0, 0xE5, 0xF9, 0x12, 0x12, 0x0A, 0xC9, 0xBF, 0x1C, 0xAF, 0xF3, 0x62, 0x7C, 0x8C, - 0xD7, 0xD1, 0xE6, 0x52, 0x52, 0x4C, 0xB1, 0x64, 0x29, 0x00, 0x48, 0x69, 0x9A, 0x17, 0x46, 0xD1, - 0xEB, 0x49, 0xBD, 0x9E, 0xE7, 0xEB, 0x64, 0x2F, 0xA3, 0x19, 0x26, 0xDD, 0xB7, 0x52, 0x72, 0x8C, - 0x30, 0xCE, 0x10, 0x42, 0x08, 0x9A, 0xAA, 0x6E, 0xAA, 0xEA, 0xE9, 0xF9, 0xF4, 0x8F, 0x6F, 0x29, - 0xA5, 0xCC, 0xDA, 0x03, 0x80, 0x52, 0x4A, 0x08, 0x21, 0xE7, 0x62, 0xD7, 0x48, 0x82, 0x89, 0x0F, - 0x11, 0x61, 0x88, 0x00, 0xA8, 0x04, 0x2B, 0x00, 0xFC, 0x9F, 0x34, 0x06, 0x20, 0x00, 0x6D, 0xC5, - 0x01, 0x00, 0xFF, 0xF5, 0xB7, 0xB7, 0x37, 0xEB, 0xE6, 0xF6, 0xB0, 0xED, 0xD6, 0x07, 0x1F, 0x43, - 0x8C, 0xB9, 0xE4, 0x64, 0xB4, 0x5A, 0xB4, 0x9A, 0x95, 0x0E, 0x31, 0x2A, 0xEB, 0xAE, 0xD3, 0x62, - 0x9D, 0x23, 0x98, 0x72, 0xCE, 0x10, 0xC6, 0x00, 0x40, 0x63, 0x3D, 0x26, 0x2C, 0xE5, 0xEC, 0x43, - 0xD4, 0x36, 0xFA, 0x90, 0x39, 0xE7, 0x21, 0x85, 0xEB, 0x34, 0x59, 0xEF, 0x5D, 0xB0, 0xA0, 0x24, - 0xEF, 0x43, 0x21, 0x1C, 0x40, 0x68, 0xCC, 0x5C, 0x60, 0x66, 0x9C, 0x9F, 0xCE, 0xE7, 0xA6, 0x6E, - 0x0A, 0xE2, 0xDA, 0x3A, 0x88, 0x59, 0xCA, 0x0E, 0x81, 0x12, 0x63, 0x14, 0x82, 0x09, 0x86, 0xDF, - 0x2E, 0x43, 0x23, 0x30, 0x86, 0x68, 0x98, 0xF4, 0x4F, 0xCF, 0x67, 0xE3, 0xE2, 0xA4, 0x35, 0x66, - 0x8C, 0x31, 0x36, 0xCC, 0x4B, 0x57, 0x4B, 0x4A, 0xD0, 0xB4, 0x18, 0xAD, 0xBD, 0xB7, 0x89, 0x20, - 0xCC, 0x10, 0x89, 0x3E, 0x86, 0x10, 0x05, 0xC5, 0x08, 0x94, 0xF3, 0x75, 0xB2, 0xDE, 0x09, 0x41, - 0xFB, 0x96, 0x71, 0x0E, 0xF6, 0xDB, 0x36, 0xA5, 0x3C, 0x4E, 0xF3, 0xA2, 0xED, 0xA2, 0x2D, 0xA6, - 0xB0, 0x69, 0x65, 0xBF, 0x6E, 0x00, 0x28, 0x39, 0x07, 0x90, 0xB3, 0xB3, 0x69, 0xD5, 0x49, 0x50, - 0xD2, 0xF5, 0x32, 0x0F, 0xCA, 0xEE, 0xD7, 0x55, 0x5B, 0xF1, 0x52, 0xB0, 0xB5, 0xC1, 0xE7, 0x32, - 0x1B, 0x0F, 0x20, 0xB8, 0x2A, 0x5B, 0x73, 0x51, 0x4A, 0xD6, 0xDE, 0x69, 0xE3, 0x31, 0x82, 0x7F, - 0xFE, 0xFB, 0x6B, 0xCC, 0x38, 0xE7, 0xA2, 0x9D, 0x87, 0x18, 0x2E, 0xDA, 0xC6, 0x94, 0x00, 0x84, - 0x18, 0x22, 0xA5, 0x2C, 0x80, 0x70, 0xD1, 0x56, 0x2F, 0x1E, 0x23, 0x42, 0x28, 0x9B, 0x67, 0x43, - 0x71, 0xB1, 0xCE, 0xFF, 0xFC, 0xEB, 0xF5, 0x78, 0x5A, 0x56, 0x6D, 0x9F, 0x63, 0x99, 0x26, 0x9D, - 0x63, 0x5E, 0x75, 0x8D, 0x31, 0xF6, 0x7A, 0x99, 0xF0, 0xBE, 0x97, 0xF7, 0x8F, 0xDF, 0x82, 0x12, - 0x7F, 0x7E, 0x7A, 0x06, 0x6C, 0x9B, 0x21, 0x9C, 0x17, 0xBB, 0x67, 0xE6, 0xB1, 0xCD, 0x93, 0x36, - 0x9F, 0x5F, 0x4E, 0x94, 0x30, 0x17, 0xE2, 0x66, 0x7F, 0xEF, 0xBC, 0x47, 0x08, 0xE4, 0x18, 0x82, - 0x1E, 0x22, 0xC0, 0x9F, 0xF6, 0x62, 0xDD, 0xF2, 0x10, 0xE2, 0x6F, 0x6E, 0x24, 0xA7, 0x30, 0x64, - 0xFE, 0x5F, 0xBE, 0x59, 0xED, 0xD6, 0x9B, 0x9F, 0x07, 0xF8, 0xFA, 0xF2, 0xAB, 0xC4, 0xE9, 0x6E, - 0x55, 0xF6, 0x1B, 0xE1, 0x83, 0xF9, 0x65, 0x98, 0x01, 0x32, 0x18, 0xE7, 0x5F, 0xCE, 0xD0, 0x25, - 0xD8, 0xF0, 0x78, 0xD8, 0xD4, 0x14, 0x24, 0x81, 0xD5, 0xAB, 0x72, 0x2E, 0x62, 0x8E, 0xB1, 0x0B, - 0xC5, 0x97, 0x72, 0x9C, 0xA6, 0x51, 0xC7, 0xAA, 0xE2, 0x02, 0x40, 0x0C, 0xF0, 0x0F, 0x27, 0xF8, - 0x9F, 0x4F, 0x69, 0x72, 0xA3, 0xAC, 0x5C, 0xD3, 0x88, 0xB3, 0x4A, 0xBB, 0xAE, 0xF6, 0x01, 0xED, - 0x65, 0x72, 0x09, 0xFC, 0xE5, 0x69, 0x12, 0xBC, 0x7A, 0x1B, 0xA2, 0x07, 0xF9, 0xA4, 0xFD, 0x2F, - 0xAF, 0xCA, 0x7A, 0xB8, 0x68, 0xBF, 0xED, 0xF8, 0xA6, 0x65, 0x1C, 0xC4, 0xFB, 0x03, 0x92, 0x1C, - 0xD4, 0x92, 0xEA, 0x00, 0xB4, 0xC9, 0x35, 0x2F, 0x8C, 0x62, 0xE7, 0xF2, 0xC3, 0xCD, 0xDD, 0x7F, - 0xFE, 0x72, 0x4D, 0xA9, 0xC4, 0x98, 0x11, 0x86, 0x00, 0x40, 0xE7, 0x0A, 0x2C, 0x25, 0xE5, 0x5C, - 0x00, 0xC8, 0x05, 0xF8, 0x00, 0x1A, 0x49, 0xEE, 0x1E, 0x3E, 0x60, 0xBE, 0x62, 0xDD, 0x3D, 0xA4, - 0xF5, 0xAF, 0x5F, 0x3E, 0x07, 0x6F, 0x39, 0xC3, 0x10, 0x15, 0x8C, 0x51, 0x0C, 0x69, 0x9E, 0x74, - 0xCA, 0x25, 0x86, 0x94, 0x4A, 0x81, 0x05, 0x40, 0x50, 0xCE, 0xA3, 0x1E, 0xAE, 0x3A, 0xA6, 0x82, - 0x19, 0x59, 0x16, 0x5B, 0x72, 0x29, 0x08, 0x62, 0x8C, 0x85, 0xE0, 0x5A, 0x87, 0x18, 0x32, 0x28, - 0x00, 0x00, 0x18, 0x42, 0xCC, 0x39, 0x41, 0x04, 0x73, 0x2E, 0x94, 0x51, 0xCA, 0x08, 0x80, 0xC0, - 0x5A, 0x07, 0x10, 0x4E, 0xA5, 0x5C, 0x2F, 0xB3, 0x73, 0x51, 0x1B, 0x4B, 0x08, 0x01, 0x00, 0x20, - 0x84, 0xB8, 0x60, 0x18, 0xE3, 0x65, 0xD6, 0x2E, 0x44, 0xC2, 0xD8, 0x69, 0x58, 0x10, 0x02, 0xF7, - 0xBB, 0xBE, 0xE2, 0x3C, 0xC6, 0xB4, 0xDB, 0xAD, 0x77, 0x3D, 0xC7, 0xB8, 0xF8, 0x04, 0xC6, 0xD9, - 0x60, 0x82, 0x57, 0xAD, 0x68, 0x2A, 0x51, 0x0A, 0x80, 0x20, 0xCB, 0xBA, 0x49, 0x05, 0xBE, 0xBE, - 0xBC, 0xF6, 0xFD, 0xE6, 0x74, 0x3E, 0x5E, 0x87, 0x89, 0x61, 0x4C, 0x50, 0x98, 0x75, 0xEA, 0x7B, - 0x5E, 0x4B, 0x5C, 0x51, 0xF0, 0x9B, 0xF7, 0x55, 0x57, 0x11, 0x01, 0xD3, 0xB2, 0xD8, 0xAA, 0x66, - 0xFB, 0x2D, 0x6F, 0x78, 0xE1, 0x38, 0xA4, 0x0C, 0xAF, 0xE3, 0x22, 0x2A, 0x6A, 0xBD, 0xD3, 0x4E, - 0x29, 0xE7, 0x42, 0x04, 0x5A, 0xC5, 0xF3, 0x68, 0x06, 0x95, 0x9F, 0xCE, 0xE1, 0xDD, 0x01, 0xE4, - 0x18, 0x21, 0x14, 0x00, 0xC1, 0xCB, 0x14, 0x87, 0x31, 0xEC, 0x6A, 0x72, 0x19, 0xDD, 0x5F, 0x9F, - 0x23, 0x24, 0x6C, 0x58, 0xAC, 0xCF, 0x89, 0x62, 0x34, 0x0C, 0xCB, 0x75, 0xD4, 0x29, 0x17, 0x48, - 0x79, 0x46, 0x01, 0x66, 0x95, 0x62, 0x58, 0xE6, 0x50, 0x73, 0xE2, 0x73, 0x06, 0x29, 0x7B, 0xEB, - 0x7F, 0x79, 0x1E, 0x23, 0xC2, 0x31, 0x41, 0x63, 0x73, 0xCA, 0x68, 0xD6, 0xF3, 0x55, 0xB9, 0xC5, - 0x82, 0x75, 0xDF, 0xE8, 0xA0, 0xB9, 0x00, 0xDA, 0xCC, 0x4F, 0xE7, 0x81, 0x0B, 0x1C, 0x52, 0x29, - 0x00, 0x87, 0xE8, 0x52, 0x86, 0x42, 0x50, 0x00, 0xE2, 0xCB, 0xDB, 0xC5, 0xF9, 0xB4, 0xDB, 0xB6, - 0xC3, 0x30, 0x4D, 0xB3, 0x0D, 0x31, 0x1A, 0xE3, 0xBC, 0x8F, 0x21, 0x04, 0x1F, 0x8A, 0x75, 0x69, - 0xB3, 0x5E, 0x6D, 0x56, 0x9D, 0xAC, 0x45, 0xDF, 0x4A, 0x4A, 0xA8, 0x31, 0xB1, 0xA9, 0x2B, 0xCE, - 0x79, 0x55, 0x71, 0xC9, 0xD8, 0xFB, 0xDB, 0xFB, 0xB7, 0xE3, 0x79, 0x98, 0x14, 0xE7, 0x7C, 0x52, - 0xBA, 0x14, 0xA8, 0x8C, 0x8B, 0x31, 0x41, 0x88, 0x28, 0x21, 0x15, 0xA7, 0x30, 0xE7, 0xC5, 0xF9, - 0x98, 0xD2, 0x57, 0x4A, 0xAD, 0x0B, 0x11, 0xFE, 0xE3, 0x9A, 0x04, 0x00, 0x80, 0xDB, 0x4D, 0xFB, - 0x78, 0xE8, 0x9A, 0x5A, 0x3C, 0xDC, 0xAC, 0x41, 0x01, 0x8B, 0x8E, 0x6F, 0xE7, 0x61, 0x9A, 0x67, - 0x1F, 0x62, 0x88, 0xB1, 0x00, 0xE0, 0xBD, 0x4D, 0x39, 0xEF, 0x76, 0xFB, 0xD3, 0xE5, 0x62, 0xAC, - 0x05, 0x10, 0x00, 0x00, 0x18, 0xC7, 0xD6, 0xBA, 0x18, 0x0B, 0xA1, 0x24, 0x84, 0x00, 0x0A, 0x70, - 0xDE, 0x11, 0x8C, 0xB5, 0x9E, 0x73, 0xC9, 0xCA, 0x38, 0xAD, 0x0D, 0x67, 0x74, 0x9A, 0x66, 0x46, - 0x59, 0x06, 0x04, 0x12, 0x96, 0xA3, 0x8E, 0x29, 0xD5, 0x75, 0xFD, 0xF2, 0xF2, 0xD2, 0x34, 0x0D, - 0xA1, 0xDC, 0x06, 0x4F, 0x10, 0x2C, 0x29, 0x96, 0x92, 0x4A, 0xF6, 0xAB, 0x55, 0x4F, 0x29, 0x9A, - 0x97, 0x79, 0xBF, 0x69, 0x0E, 0xEB, 0x95, 0xF5, 0xF9, 0xBA, 0x18, 0x80, 0x50, 0x53, 0x57, 0x94, - 0x10, 0x17, 0xE2, 0xF1, 0x3A, 0xE6, 0x52, 0x56, 0xB5, 0xFC, 0x4A, 0xD3, 0xAB, 0x65, 0x55, 0x57, - 0xD5, 0x6E, 0xB3, 0xA6, 0x94, 0x0D, 0xB3, 0xBE, 0x8C, 0xCB, 0xDB, 0x79, 0x3A, 0x0D, 0x0A, 0x02, - 0x98, 0x01, 0xD0, 0xD6, 0xA6, 0x14, 0x08, 0x81, 0x04, 0x43, 0x21, 0x69, 0xD3, 0x0A, 0x88, 0xC9, - 0x3C, 0xAB, 0x7E, 0xD5, 0x1E, 0xDF, 0x86, 0x65, 0xD1, 0x9B, 0x4D, 0xB7, 0xDD, 0x34, 0xDB, 0x4D, - 0xFB, 0xE1, 0xDD, 0x76, 0xB5, 0x6A, 0xA5, 0x64, 0x8C, 0xE3, 0xA6, 0xAD, 0x6B, 0x8E, 0x00, 0x2C, - 0xCE, 0x86, 0xBE, 0x91, 0x93, 0xF6, 0x31, 0x45, 0x9F, 0x32, 0x27, 0xE4, 0x9B, 0xC7, 0x9E, 0x53, - 0x24, 0x18, 0x5D, 0xAF, 0xAB, 0xCD, 0xA6, 0x9D, 0x97, 0x10, 0x52, 0x28, 0x00, 0x68, 0x1B, 0x94, - 0x32, 0xCE, 0x07, 0x8A, 0xF1, 0x30, 0x1A, 0x63, 0x52, 0x8C, 0x71, 0x18, 0xF5, 0xFE, 0x6A, 0xF4, - 0xC4, 0x7C, 0x00, 0x00, 0x03, 0x78, 0x49, 0x44, 0x41, 0x54, 0xD0, 0xBF, 0x9D, 0x17, 0x6B, 0x83, - 0x94, 0xE2, 0xE9, 0xF9, 0xD2, 0xD4, 0xDC, 0x58, 0xDF, 0x37, 0xF5, 0xED, 0x7E, 0x3B, 0x4C, 0xE1, - 0x32, 0xA8, 0x69, 0xB1, 0xD7, 0xC9, 0x12, 0x84, 0xEE, 0x6E, 0x56, 0x4E, 0x5B, 0xFC, 0x78, 0xB3, - 0x22, 0x04, 0x39, 0x50, 0x4D, 0xD3, 0x70, 0xB8, 0xFB, 0xD6, 0x2F, 0x43, 0x4C, 0xF9, 0x3A, 0x9C, - 0x42, 0x88, 0xA7, 0xEB, 0xDC, 0xF6, 0x5B, 0x8C, 0x51, 0x2E, 0x80, 0x32, 0x51, 0x11, 0x20, 0x85, - 0xBC, 0x9C, 0x7E, 0xFD, 0x70, 0xBB, 0xDB, 0x54, 0xF4, 0xD3, 0x8E, 0xFC, 0xFE, 0xB1, 0x79, 0xD8, - 0xB0, 0x4D, 0x8B, 0x18, 0x15, 0x87, 0x8E, 0x45, 0x28, 0xFF, 0xFD, 0xD7, 0x10, 0xE7, 0x9F, 0xB6, - 0x0D, 0x52, 0xAE, 0x6C, 0x57, 0xD8, 0x86, 0x00, 0x4A, 0x79, 0x99, 0xED, 0x97, 0x6B, 0x76, 0x11, - 0x57, 0x04, 0x31, 0x02, 0x32, 0x30, 0x00, 0x82, 0xFF, 0xEF, 0xB3, 0xFF, 0xFB, 0x51, 0x45, 0x54, - 0x06, 0x05, 0x16, 0x67, 0x95, 0xB3, 0x31, 0x23, 0x1B, 0x9C, 0xCF, 0x40, 0x54, 0xDB, 0xE2, 0xED, - 0xA0, 0xCA, 0x0F, 0x2F, 0x11, 0x13, 0xCB, 0x25, 0x0D, 0x11, 0x28, 0x1B, 0x62, 0xCA, 0x10, 0x51, - 0xED, 0xE1, 0xEB, 0xC5, 0xCC, 0x09, 0xBD, 0xCD, 0xC5, 0x04, 0x8C, 0xE4, 0x23, 0xC0, 0xD5, 0x97, - 0x97, 0xD7, 0x79, 0xF6, 0x82, 0x82, 0xEF, 0x1F, 0x6B, 0x26, 0xC4, 0x71, 0xD4, 0x7F, 0x7E, 0x8E, - 0x4F, 0x43, 0x5A, 0xC9, 0x32, 0x2F, 0xF9, 0x34, 0x67, 0x4A, 0x61, 0x2C, 0x10, 0x22, 0x54, 0x57, - 0xDC, 0xF8, 0xFC, 0xF4, 0x3A, 0xC9, 0x8A, 0x31, 0x06, 0x53, 0x81, 0xC3, 0x14, 0x41, 0x01, 0x04, - 0xA3, 0x90, 0x20, 0x21, 0xD8, 0x38, 0x9F, 0x01, 0x6E, 0x05, 0x4C, 0x09, 0x2E, 0x0E, 0x0E, 0xE7, - 0x23, 0x84, 0xE0, 0x7A, 0xFA, 0x52, 0x0A, 0xE4, 0x9C, 0xC4, 0x10, 0xA7, 0xD1, 0xA4, 0x94, 0x7D, - 0xCC, 0xCE, 0x27, 0x6F, 0xA3, 0x10, 0xD4, 0x87, 0xAC, 0xB4, 0x07, 0xA5, 0x74, 0x9D, 0x2C, 0x19, - 0xB6, 0x75, 0x35, 0xCE, 0x26, 0x84, 0xD4, 0xAF, 0x1A, 0xC6, 0x99, 0xD1, 0xC1, 0xB9, 0xA0, 0x94, - 0x57, 0xDA, 0x96, 0x52, 0x52, 0x29, 0xB3, 0x72, 0xD6, 0xC5, 0xCB, 0xB0, 0x20, 0x04, 0x3E, 0x7F, - 0x39, 0x5D, 0x86, 0x99, 0x50, 0x0A, 0x00, 0xF2, 0x2E, 0x60, 0x82, 0x11, 0x82, 0x8C, 0x61, 0xC6, - 0x48, 0x4E, 0x69, 0xB3, 0xAA, 0x83, 0x77, 0x5D, 0x25, 0xDA, 0x9A, 0x6D, 0xD6, 0x75, 0x55, 0x51, - 0x6B, 0x5C, 0x2D, 0x19, 0x23, 0x84, 0x60, 0x7C, 0x7F, 0x7F, 0x58, 0xF5, 0x8D, 0x36, 0x26, 0xC3, - 0x82, 0x28, 0x8B, 0xDE, 0x3F, 0x1E, 0x36, 0xBB, 0x8D, 0xBC, 0x5E, 0xD5, 0xFE, 0xB0, 0x6F, 0xDB, - 0x2A, 0x25, 0xD7, 0xD4, 0x31, 0x46, 0x28, 0x45, 0x03, 0xA1, 0xCF, 0xD1, 0x03, 0x90, 0x9B, 0x1A, - 0xC7, 0x84, 0x19, 0x49, 0x30, 0xE7, 0x77, 0x37, 0x82, 0xF3, 0x32, 0x8E, 0x0B, 0x28, 0x09, 0x20, - 0x76, 0x7B, 0x10, 0xB5, 0xC8, 0x28, 0xC7, 0xCB, 0xA4, 0x01, 0xC5, 0x29, 0xE7, 0xF3, 0xE0, 0xDE, - 0x2E, 0xAA, 0x20, 0xC0, 0x38, 0x8C, 0x3E, 0xCE, 0x4B, 0x9C, 0x6C, 0x06, 0x10, 0x42, 0x04, 0x0F, - 0x6D, 0x79, 0x3B, 0x15, 0xCA, 0xC4, 0x30, 0x87, 0xB7, 0x93, 0xBF, 0xDD, 0xB1, 0x14, 0x92, 0x4D, - 0x45, 0xD4, 0x7C, 0x98, 0x03, 0xA1, 0xB0, 0xA9, 0xE9, 0xBC, 0xA4, 0xE7, 0xB3, 0x75, 0x11, 0xDB, - 0x84, 0x66, 0x6B, 0x18, 0xF6, 0x18, 0x97, 0x51, 0x15, 0x82, 0xA1, 0x8B, 0x7E, 0xB6, 0x25, 0x66, - 0xA2, 0x94, 0xF3, 0x91, 0x74, 0x7D, 0x35, 0xA9, 0xD0, 0x76, 0x9B, 0xEB, 0x38, 0x87, 0x08, 0xEA, - 0xA6, 0xFA, 0xE6, 0xE3, 0x3B, 0xE3, 0xCC, 0x75, 0xD4, 0xCE, 0x59, 0x90, 0x93, 0x0F, 0xA0, 0xAB, - 0x2B, 0x6B, 0x0B, 0x63, 0x28, 0x94, 0x80, 0x29, 0x8B, 0xCE, 0x84, 0x68, 0xB9, 0xA4, 0x84, 0x22, - 0x4A, 0x90, 0xB5, 0x8A, 0x32, 0x48, 0x08, 0xD8, 0xF4, 0x14, 0xC2, 0x3C, 0x2B, 0x9F, 0x0A, 0xD1, - 0x1E, 0x4C, 0x2A, 0x14, 0x88, 0xDA, 0xBE, 0x26, 0x18, 0x60, 0x84, 0x25, 0xE7, 0x14, 0x93, 0xA6, - 0xAE, 0x10, 0x2A, 0x14, 0x63, 0x4E, 0xB9, 0xB1, 0x8E, 0x73, 0xA9, 0x6D, 0xF0, 0x31, 0x95, 0x02, - 0x20, 0xA1, 0xFB, 0xDD, 0x01, 0x40, 0x24, 0x08, 0x5E, 0x77, 0x0D, 0xC6, 0x64, 0x58, 0x34, 0x82, - 0x90, 0x53, 0x12, 0x62, 0x8E, 0x39, 0xA7, 0x5C, 0xCA, 0xFF, 0x89, 0x64, 0xDB, 0x55, 0xDD, 0x37, - 0x32, 0xF8, 0x02, 0x60, 0x41, 0x08, 0x7D, 0x79, 0x1B, 0x7F, 0x7A, 0x7A, 0x89, 0x31, 0x7A, 0x1F, - 0xB8, 0xAC, 0xDA, 0xBA, 0xEA, 0x6B, 0x31, 0x8C, 0x63, 0x4E, 0x31, 0x97, 0x12, 0x52, 0xC4, 0x08, - 0x37, 0x6D, 0x6D, 0x9D, 0x73, 0xCE, 0x97, 0x52, 0x28, 0xA3, 0x29, 0x06, 0x6B, 0x8D, 0x10, 0x3C, - 0xE7, 0x64, 0xAD, 0x91, 0x52, 0x84, 0x18, 0x1F, 0x6E, 0x36, 0x1F, 0x6F, 0x77, 0xC7, 0x8B, 0x8A, - 0x09, 0x9C, 0x87, 0xD9, 0x5A, 0x0B, 0x21, 0xE0, 0xB2, 0x2A, 0x25, 0x41, 0x44, 0x98, 0x6C, 0x08, - 0x25, 0xDB, 0x9E, 0x31, 0x0A, 0x61, 0xC9, 0x5D, 0xCB, 0x29, 0x01, 0x5D, 0x5B, 0xE5, 0x12, 0x21, - 0xF2, 0xAB, 0x46, 0xE4, 0x8C, 0x5C, 0xC2, 0xC6, 0xF9, 0x5C, 0x40, 0x08, 0x3E, 0xE5, 0x32, 0x2B, - 0x15, 0x62, 0x02, 0x00, 0xC6, 0x98, 0x63, 0x2E, 0xA3, 0x32, 0xCE, 0xC7, 0x94, 0x4B, 0x25, 0xE5, - 0x0F, 0x3F, 0x7D, 0x79, 0xBB, 0x4E, 0xE7, 0x69, 0x01, 0x05, 0xB6, 0x75, 0x25, 0x44, 0x65, 0xAD, - 0x15, 0x8C, 0x5E, 0xC6, 0x45, 0x69, 0x5B, 0x20, 0x50, 0xD6, 0x86, 0x94, 0xD6, 0xAB, 0xA6, 0xEF, - 0x24, 0x84, 0x65, 0x99, 0xF5, 0xCB, 0xCB, 0x59, 0xAB, 0xF8, 0xF2, 0x32, 0x8D, 0xA3, 0xA1, 0x0C, - 0x23, 0x84, 0x21, 0x44, 0x6D, 0xDB, 0x3E, 0xDC, 0xEF, 0xD7, 0xEB, 0xDE, 0xEA, 0xA5, 0x91, 0xD0, - 0xD8, 0x70, 0x1C, 0x16, 0x82, 0xD0, 0x7E, 0x2D, 0x25, 0x17, 0x7D, 0x5B, 0x73, 0xCE, 0xA7, 0xC9, - 0x20, 0x4A, 0x9E, 0x5F, 0x27, 0x82, 0xE1, 0xA2, 0x0D, 0xA6, 0x58, 0x5B, 0xBF, 0x28, 0x5B, 0x55, - 0x94, 0x60, 0x12, 0x52, 0xD9, 0x6C, 0xDA, 0x79, 0x31, 0xA7, 0x51, 0x35, 0x82, 0x7D, 0x4D, 0xBC, - 0x39, 0x33, 0xC6, 0x64, 0x0C, 0xA9, 0xAA, 0x19, 0x15, 0xD5, 0xAC, 0xEC, 0xCB, 0xDB, 0x95, 0x32, - 0xE4, 0xBC, 0x7F, 0x39, 0x5E, 0x38, 0xA7, 0xD3, 0xA4, 0x57, 0xAB, 0xEA, 0x7F, 0x03, 0x1E, 0x8C, - 0xFD, 0x5B, 0xC8, 0xB2, 0x7A, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, - 0x60, 0x82 + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x01, 0x10, + 0x08, 0x02, 0x00, 0x00, 0x00, 0x02, 0xBA, 0xF5, 0xB7, 0x00, 0x00, 0x01, + 0x1C, 0x69, 0x43, 0x43, 0x50, 0x49, 0x43, 0x43, 0x20, 0x70, 0x72, 0x6F, + 0x66, 0x69, 0x6C, 0x65, 0x00, 0x00, 0x28, 0x91, 0x63, 0x60, 0x60, 0xE2, + 0xC9, 0x49, 0xCE, 0x2D, 0x66, 0x12, 0x60, 0x60, 0xC8, 0xCD, 0x2B, 0x29, + 0x0A, 0x72, 0x77, 0x52, 0x88, 0x88, 0x8C, 0x52, 0x60, 0xBF, 0xC3, 0xC0, + 0xC8, 0x20, 0xC9, 0xC0, 0xCC, 0xA0, 0xC9, 0x60, 0x99, 0x98, 0x5C, 0x5C, + 0xE0, 0x18, 0x10, 0xE0, 0xC3, 0x80, 0x13, 0x7C, 0xBB, 0x06, 0x54, 0x0D, + 0x04, 0x97, 0x75, 0x41, 0x66, 0xE1, 0x56, 0x87, 0x15, 0x70, 0xA5, 0xA4, + 0x16, 0x27, 0x03, 0xE9, 0x3F, 0x40, 0x1C, 0x97, 0x5C, 0x50, 0x54, 0xC2, + 0xC0, 0xC0, 0x18, 0x03, 0x64, 0x73, 0x97, 0x97, 0x14, 0x80, 0xD8, 0x19, + 0x40, 0xB6, 0x48, 0x52, 0x36, 0x98, 0x5D, 0x03, 0x62, 0x17, 0x01, 0x1D, + 0x08, 0x64, 0x4F, 0x00, 0xB1, 0xD3, 0x21, 0xEC, 0x25, 0x60, 0x35, 0x10, + 0xF6, 0x0E, 0xB0, 0x9A, 0x90, 0x20, 0x67, 0x20, 0xFB, 0x0C, 0x90, 0xED, + 0x90, 0x8E, 0xC4, 0x4E, 0x42, 0x62, 0x43, 0xED, 0x05, 0x01, 0xE6, 0x64, + 0x23, 0x12, 0x5D, 0x4D, 0x04, 0x28, 0x49, 0xAD, 0x28, 0x01, 0xD1, 0x9E, + 0x11, 0x0C, 0x0C, 0xA0, 0x30, 0x85, 0x88, 0x22, 0xC2, 0x0A, 0x21, 0xC6, + 0x2C, 0x06, 0xC4, 0xC6, 0x0C, 0x0C, 0x4C, 0x4B, 0x10, 0x62, 0xF9, 0x8B, + 0x18, 0x18, 0x2C, 0xBE, 0x02, 0xC5, 0x27, 0x20, 0xC4, 0x92, 0x66, 0x32, + 0x30, 0x6C, 0x6F, 0x65, 0x60, 0x90, 0xB8, 0x85, 0x10, 0x53, 0x59, 0xC0, + 0xC0, 0xC0, 0xDF, 0xC2, 0xC0, 0xB0, 0xED, 0x7C, 0x72, 0x69, 0x51, 0x19, + 0xD4, 0x6A, 0x29, 0x20, 0x3E, 0xCD, 0x78, 0x92, 0x39, 0x99, 0x75, 0x12, + 0x47, 0x36, 0xF7, 0x37, 0x01, 0x7B, 0xD1, 0x40, 0x69, 0x13, 0xC5, 0x8F, + 0x9A, 0x13, 0x8C, 0x24, 0xAC, 0x27, 0xB9, 0xB1, 0x06, 0x96, 0xC7, 0xBE, + 0xCD, 0x2E, 0xA8, 0x62, 0xED, 0xDC, 0x38, 0xAB, 0x66, 0x4D, 0xE6, 0xFE, + 0xDA, 0xCB, 0x87, 0x5F, 0x1A, 0xFC, 0xFF, 0x0F, 0x00, 0xEE, 0x93, 0x53, + 0x96, 0xD2, 0xC6, 0x80, 0x56, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, + 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01, 0xD2, 0xDD, + 0x7E, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9C, + 0x8C, 0xBD, 0x59, 0x8F, 0x2C, 0x4B, 0x92, 0x1E, 0x66, 0x8B, 0x7B, 0x44, + 0xE4, 0x52, 0x55, 0x67, 0xB9, 0x4B, 0x77, 0x4F, 0x37, 0x1B, 0x33, 0xC4, + 0x50, 0xE4, 0x48, 0xE0, 0x22, 0x3D, 0x09, 0xD0, 0x0B, 0xFF, 0x90, 0x20, + 0x40, 0xBF, 0x50, 0x7A, 0xD0, 0x83, 0x1E, 0x28, 0x90, 0x18, 0x0C, 0xC5, + 0x6D, 0x7A, 0x7A, 0x99, 0x5E, 0xEE, 0x72, 0xEE, 0xA9, 0x25, 0x33, 0x23, + 0xC2, 0xDD, 0xCC, 0xF8, 0x60, 0xEE, 0x1E, 0x9E, 0x59, 0x75, 0x87, 0x8C, + 0x0B, 0x9C, 0x5B, 0x95, 0x15, 0xE9, 0xAB, 0xD9, 0x67, 0x8B, 0x9B, 0x99, + 0xE3, 0xBF, 0xFD, 0xF7, 0xBF, 0x8E, 0x81, 0xA7, 0x21, 0x0C, 0x43, 0x08, + 0x44, 0x06, 0x06, 0x80, 0x00, 0x06, 0x06, 0x44, 0x04, 0x06, 0x80, 0x06, + 0x80, 0xA2, 0x62, 0x06, 0x4B, 0xCA, 0xA6, 0x06, 0xFE, 0x20, 0x12, 0x00, + 0x22, 0x02, 0x82, 0x88, 0x02, 0x00, 0x31, 0x83, 0x19, 0x22, 0x20, 0xA0, + 0x9A, 0x31, 0xA3, 0x88, 0x8A, 0x28, 0x02, 0x02, 0x82, 0xAA, 0x65, 0xD1, + 0x94, 0xC5, 0xCC, 0x0C, 0x90, 0x11, 0x89, 0x31, 0x30, 0x1D, 0x77, 0x23, + 0x12, 0x8A, 0xE8, 0x92, 0x72, 0xCE, 0x62, 0x06, 0x59, 0x54, 0xD4, 0xB2, + 0xA8, 0x88, 0x8C, 0x43, 0x18, 0x62, 0x48, 0x59, 0x97, 0x94, 0xD7, 0x24, + 0x22, 0x06, 0x00, 0x6A, 0x60, 0x3E, 0x44, 0x00, 0x33, 0x33, 0x03, 0x30, + 0x10, 0x53, 0x33, 0x00, 0x40, 0x00, 0x30, 0x00, 0x35, 0x43, 0x00, 0x42, + 0x44, 0x34, 0x00, 0x40, 0x44, 0x44, 0x04, 0x00, 0x33, 0x55, 0x45, 0x05, + 0x30, 0x03, 0x55, 0x53, 0x50, 0x53, 0x34, 0xF3, 0x17, 0x20, 0x30, 0x02, + 0xC2, 0x92, 0x14, 0xC0, 0x54, 0xB1, 0x4E, 0x14, 0xCC, 0x3B, 0x03, 0x50, + 0x33, 0x30, 0x33, 0x00, 0x00, 0x34, 0x33, 0x66, 0x9A, 0x22, 0xA5, 0xAC, + 0x63, 0x24, 0x44, 0xBC, 0xDF, 0xC7, 0xFB, 0x5D, 0xFC, 0x7C, 0x5A, 0x3F, + 0xBD, 0xAC, 0x7F, 0xF6, 0x71, 0x8F, 0x08, 0x39, 0xDB, 0xFB, 0xBB, 0x29, + 0x32, 0x8E, 0x43, 0xD8, 0xEF, 0x06, 0x42, 0xF8, 0x0F, 0xBF, 0xFE, 0xFE, + 0xEF, 0x3F, 0x9D, 0x0D, 0xB0, 0xB4, 0x02, 0x65, 0xC5, 0x11, 0x4B, 0x5F, + 0x88, 0x10, 0x03, 0xAF, 0x49, 0xCD, 0x00, 0x11, 0xC4, 0x4C, 0x0D, 0x08, + 0xC0, 0xCC, 0xD4, 0x20, 0x30, 0x12, 0x62, 0x12, 0x43, 0xAC, 0x03, 0xF1, + 0x5D, 0x00, 0x20, 0x84, 0xE3, 0x14, 0x10, 0x21, 0x12, 0x25, 0xB5, 0x25, + 0xC9, 0x18, 0x29, 0x89, 0x9D, 0x66, 0xF1, 0x4E, 0xB0, 0x4C, 0xE8, 0xF6, + 0xF9, 0xB1, 0x3F, 0xF8, 0xE7, 0xBE, 0x70, 0x08, 0x86, 0x4E, 0x0A, 0x65, + 0x81, 0xB7, 0xC7, 0xAC, 0x2D, 0x0B, 0x12, 0xDA, 0xFF, 0xFA, 0x57, 0x3F, + 0xFD, 0xF0, 0xB0, 0xB3, 0x8D, 0x4C, 0xD0, 0xCA, 0x03, 0x21, 0x04, 0x66, + 0xEA, 0x7B, 0xF4, 0xBF, 0xD6, 0x76, 0x4C, 0x55, 0x45, 0xC4, 0xCC, 0x44, + 0x24, 0xA5, 0x9C, 0x52, 0xF6, 0x77, 0x98, 0xC9, 0x0C, 0x54, 0xD5, 0x1B, + 0x42, 0x44, 0x44, 0x62, 0x46, 0x22, 0x24, 0x22, 0xFF, 0x6E, 0x25, 0x06, + 0xF3, 0xD7, 0x54, 0xCB, 0xAF, 0xDE, 0x38, 0x33, 0x0D, 0x31, 0x0E, 0x31, + 0x72, 0x0C, 0x56, 0xFE, 0x0C, 0xC8, 0x64, 0x66, 0xE8, 0xE3, 0x56, 0x53, + 0x55, 0x2B, 0x34, 0x53, 0x17, 0x84, 0xEA, 0xCF, 0xE6, 0xFF, 0x99, 0xA9, + 0xB5, 0x47, 0x4D, 0x45, 0x54, 0x54, 0x24, 0x4B, 0x16, 0x55, 0x55, 0x11, + 0x55, 0xB1, 0xBE, 0xDF, 0x7E, 0xA6, 0x21, 0x10, 0x07, 0x66, 0x66, 0x22, + 0xF2, 0x61, 0x23, 0x02, 0x11, 0x02, 0x00, 0x33, 0x77, 0x24, 0x5A, 0xE6, + 0x82, 0x88, 0xF5, 0xB5, 0xDB, 0x3F, 0xF9, 0x42, 0xF9, 0x4C, 0xEB, 0x1A, + 0x3A, 0x19, 0x03, 0x00, 0xA8, 0x9A, 0x88, 0x00, 0x80, 0xAA, 0xFA, 0xD7, + 0x89, 0xA8, 0xDB, 0x88, 0xB2, 0x86, 0x65, 0xC5, 0x14, 0xFB, 0xD5, 0xB3, + 0xD6, 0x0A, 0x42, 0xB7, 0xA4, 0x00, 0x60, 0xAA, 0xEA, 0x0D, 0xB6, 0x31, + 0x38, 0x13, 0x22, 0x12, 0x21, 0x6D, 0x8B, 0x86, 0x18, 0x23, 0x85, 0x10, + 0x42, 0x08, 0x60, 0x96, 0x25, 0xAB, 0x9A, 0x8A, 0x22, 0x51, 0x99, 0x3A, + 0x02, 0x21, 0x31, 0x13, 0x22, 0x70, 0x60, 0x55, 0x45, 0x44, 0x55, 0x93, + 0xAC, 0x59, 0x44, 0x6B, 0xBB, 0x3E, 0xF7, 0x35, 0x6B, 0xCA, 0x92, 0xB2, + 0xCE, 0xAB, 0xA4, 0xAC, 0x00, 0xE0, 0x6F, 0x88, 0x99, 0x81, 0x31, 0x11, + 0x18, 0x1C, 0xA6, 0x18, 0x44, 0x0C, 0x41, 0x35, 0x18, 0x98, 0xCD, 0x6B, + 0x4A, 0x59, 0x08, 0x31, 0x04, 0x8E, 0x81, 0x54, 0x35, 0x57, 0x6E, 0x4E, + 0xA2, 0x60, 0x80, 0x8E, 0x5E, 0x75, 0x83, 0x22, 0x33, 0x33, 0x49, 0x99, + 0x1E, 0x82, 0xA9, 0x19, 0x88, 0xA8, 0x99, 0x11, 0x11, 0x33, 0x13, 0x62, + 0x36, 0x33, 0x30, 0x42, 0x12, 0x55, 0x33, 0x03, 0x84, 0x94, 0xD5, 0xD4, + 0x04, 0x11, 0x32, 0x22, 0x82, 0xAA, 0x8D, 0x43, 0x58, 0xD7, 0xEC, 0x7C, + 0xC0, 0x8C, 0x00, 0x10, 0x03, 0x02, 0x80, 0xA8, 0x99, 0x59, 0x60, 0x1A, + 0x02, 0xEF, 0x86, 0x70, 0x59, 0xF3, 0xE7, 0xE7, 0xD9, 0x00, 0xB4, 0x42, + 0x58, 0xE5, 0x24, 0x50, 0x6B, 0xB0, 0x50, 0xFE, 0x87, 0x80, 0xB4, 0x2D, + 0x2C, 0x38, 0xA3, 0x21, 0x56, 0x2E, 0xB0, 0x02, 0x7B, 0x00, 0x08, 0x58, + 0x3E, 0x22, 0x44, 0x03, 0x13, 0x01, 0xE7, 0xD8, 0x9E, 0x51, 0xCD, 0x77, + 0x14, 0xC0, 0xBF, 0xE4, 0x7B, 0xED, 0xAB, 0xBF, 0x66, 0x8D, 0x81, 0x86, + 0x40, 0x3E, 0xE0, 0x6F, 0x1E, 0x2F, 0x29, 0x9B, 0xAA, 0x9D, 0xE6, 0x7C, + 0x37, 0xC5, 0x25, 0xA5, 0x4F, 0x4F, 0x97, 0x7F, 0xF4, 0xF5, 0xC3, 0x6E, + 0x8A, 0x08, 0xB8, 0xAE, 0xD9, 0x87, 0x15, 0x08, 0xD5, 0x40, 0xB5, 0xEF, + 0x07, 0x9D, 0x57, 0xD4, 0x6C, 0x00, 0x78, 0xD8, 0x87, 0x39, 0xE9, 0x9A, + 0xD5, 0x87, 0x82, 0x08, 0x81, 0x49, 0xD5, 0x88, 0x48, 0x54, 0x6F, 0x90, + 0xC7, 0x67, 0x95, 0xD5, 0x98, 0x70, 0x88, 0x24, 0x62, 0x00, 0x36, 0x46, + 0x0A, 0x4C, 0x97, 0x35, 0xC3, 0x3F, 0x80, 0x61, 0x3F, 0xF2, 0xF4, 0xEF, + 0x3B, 0x8A, 0xF9, 0xE8, 0x0A, 0xD8, 0x76, 0x7F, 0x35, 0x33, 0x44, 0xD8, + 0x0F, 0x0C, 0x00, 0x97, 0x25, 0xFD, 0xE5, 0x9F, 0xBD, 0xFB, 0xF8, 0xB0, + 0x47, 0xA2, 0xBA, 0xD0, 0xD8, 0xB8, 0xBA, 0x71, 0xCE, 0xCD, 0xD7, 0x5F, + 0xF7, 0xBE, 0x71, 0x14, 0x80, 0x88, 0x81, 0x15, 0x6E, 0x44, 0xC4, 0xC6, + 0x48, 0x44, 0x88, 0x88, 0x8E, 0x02, 0x1B, 0x4F, 0x9A, 0x33, 0x9B, 0xF9, + 0x76, 0xF7, 0x80, 0x02, 0x60, 0x0E, 0x1F, 0x26, 0xEA, 0xFB, 0x88, 0x00, + 0x2A, 0x6A, 0x60, 0x8C, 0xE4, 0x82, 0x71, 0xA3, 0xEE, 0x7E, 0x1D, 0x6E, + 0xC0, 0xCB, 0x51, 0xD2, 0x29, 0x50, 0x4D, 0xC4, 0x85, 0x75, 0xEB, 0xCB, + 0x7A, 0x94, 0x6F, 0x92, 0xC0, 0xFF, 0x35, 0xD8, 0x56, 0xC3, 0x79, 0xC4, + 0x57, 0xC2, 0x51, 0x06, 0x00, 0x9C, 0xA5, 0xDB, 0x77, 0xDB, 0xE7, 0xFD, + 0xF4, 0x37, 0xD0, 0x69, 0x2D, 0x97, 0xC6, 0xA1, 0x76, 0x8D, 0x0D, 0xDD, + 0x36, 0x51, 0x54, 0xF7, 0xA2, 0x1F, 0x52, 0x83, 0xBF, 0x9B, 0xA1, 0x96, + 0xF6, 0xAF, 0x24, 0x25, 0xF4, 0xAF, 0xF5, 0x20, 0x5B, 0x65, 0x24, 0x32, + 0x23, 0x21, 0x67, 0x71, 0x09, 0x82, 0x66, 0x40, 0x84, 0x01, 0x99, 0x98, + 0x52, 0xCA, 0xFE, 0x3E, 0xB9, 0x9A, 0x83, 0x8E, 0xAA, 0x80, 0x08, 0xAA, + 0x2A, 0xD9, 0x88, 0x8C, 0x18, 0x31, 0x10, 0x31, 0x89, 0x88, 0xAB, 0x3E, + 0xDE, 0x42, 0x8C, 0x26, 0xA2, 0xF3, 0x92, 0xB2, 0x28, 0x02, 0x89, 0x2A, + 0x00, 0x89, 0x2A, 0x33, 0xBE, 0x3F, 0xEE, 0xA6, 0x81, 0x55, 0xE1, 0x30, + 0x85, 0x00, 0x00, 0x6A, 0x36, 0xAF, 0x79, 0x5E, 0xB3, 0x99, 0x21, 0x20, + 0x11, 0x8A, 0x9A, 0x28, 0x21, 0xE0, 0x30, 0x30, 0x63, 0x25, 0x4A, 0x40, + 0x22, 0x64, 0x26, 0x66, 0x72, 0x79, 0x04, 0x08, 0xCC, 0x6C, 0x66, 0x43, + 0x0C, 0x95, 0xEC, 0x74, 0x4D, 0x19, 0x01, 0x62, 0x0C, 0xCC, 0xA4, 0x6A, + 0xE3, 0x10, 0x53, 0x96, 0x9C, 0x33, 0x13, 0x89, 0x64, 0x04, 0x18, 0x42, + 0x58, 0x53, 0xCE, 0xA2, 0xCE, 0x18, 0xAE, 0x7F, 0x31, 0xA1, 0x9A, 0x69, + 0x52, 0x01, 0x33, 0x73, 0xA0, 0x35, 0x00, 0x24, 0xC4, 0x79, 0xC9, 0x48, + 0xC8, 0x84, 0x43, 0xA0, 0x71, 0xE0, 0x94, 0x35, 0x67, 0xAD, 0x7A, 0x0C, + 0x98, 0x0B, 0x5E, 0x30, 0x74, 0x75, 0x69, 0xDB, 0x0C, 0x13, 0x03, 0xBA, + 0x92, 0xF9, 0x58, 0x36, 0xBA, 0x51, 0xDA, 0x35, 0x7F, 0x8B, 0x98, 0x56, + 0xD6, 0x42, 0x44, 0x04, 0x53, 0xF3, 0xDD, 0x05, 0xFF, 0x1F, 0x21, 0x10, + 0xA1, 0x54, 0x4E, 0x70, 0x8A, 0xCA, 0x62, 0x77, 0xBB, 0x80, 0x00, 0xF7, + 0xFB, 0xE1, 0xBB, 0xE7, 0x65, 0x49, 0xB2, 0x1B, 0x82, 0xA8, 0x9D, 0x97, + 0x7C, 0xBF, 0x8B, 0x31, 0xD0, 0xFB, 0xFB, 0xDD, 0x10, 0x99, 0x10, 0xE7, + 0x25, 0xAD, 0x29, 0x13, 0x96, 0x15, 0x86, 0xAA, 0x7F, 0xA9, 0xFA, 0x40, + 0x8A, 0x24, 0x44, 0x80, 0x35, 0xAB, 0x19, 0xF8, 0x3B, 0x60, 0x80, 0x05, + 0x3A, 0x31, 0x04, 0x54, 0x35, 0x31, 0xC0, 0x6E, 0x06, 0x8D, 0x3A, 0x09, + 0xF1, 0xB2, 0xCA, 0x10, 0xF8, 0x38, 0x05, 0x00, 0x38, 0xEC, 0xE2, 0xB7, + 0x8F, 0x17, 0x35, 0xAB, 0xBA, 0xDE, 0x7F, 0x2F, 0x96, 0x35, 0xF6, 0x28, + 0xEA, 0x09, 0x18, 0xA0, 0x61, 0x13, 0x12, 0xD8, 0xBF, 0x09, 0x6A, 0xF0, + 0xE5, 0xFD, 0xF4, 0xD5, 0xFD, 0x78, 0x9A, 0x57, 0xC4, 0xE9, 0x2F, 0x7E, + 0xF6, 0x9E, 0x98, 0xFD, 0xAF, 0xCE, 0x87, 0x4D, 0x29, 0xB8, 0x69, 0xFF, + 0xC7, 0x9E, 0x0A, 0x46, 0x5A, 0xA9, 0xAE, 0x70, 0x54, 0xDD, 0x97, 0xBA, + 0x39, 0x00, 0xD4, 0xE4, 0x6A, 0x6D, 0x11, 0x09, 0xB1, 0x12, 0x42, 0x0F, + 0x64, 0x6D, 0x7D, 0x4A, 0x17, 0x8E, 0x86, 0xA5, 0x6D, 0x00, 0x04, 0x35, + 0x73, 0xF1, 0x85, 0x4C, 0x9B, 0xC6, 0x89, 0x05, 0x30, 0x1A, 0x7E, 0xB9, + 0x12, 0xA4, 0x66, 0x66, 0x0A, 0x88, 0x0D, 0x37, 0x6F, 0x56, 0xAF, 0xC9, + 0xB9, 0x9B, 0x59, 0x23, 0x56, 0xA2, 0xBD, 0x82, 0x98, 0x32, 0xEB, 0x5E, + 0x51, 0xF2, 0xA5, 0xEB, 0x61, 0xA8, 0x6B, 0xBC, 0xBC, 0xC6, 0x48, 0x02, + 0x8A, 0x8D, 0x06, 0xEA, 0xBA, 0x88, 0x6E, 0x8D, 0xFB, 0xCB, 0x0D, 0x10, + 0x7B, 0x9C, 0xDA, 0x7A, 0xB7, 0x4D, 0x07, 0xEB, 0xF5, 0x3E, 0x27, 0xC8, + 0x0A, 0x76, 0x7A, 0x03, 0x82, 0xDD, 0x6B, 0x00, 0x00, 0xCC, 0x1C, 0x63, + 0x40, 0xC0, 0x3C, 0x27, 0x30, 0x13, 0x71, 0x25, 0x4B, 0x95, 0x0B, 0xF7, + 0x10, 0xD1, 0x18, 0x23, 0x31, 0x8A, 0xAB, 0x44, 0x84, 0x44, 0x18, 0x63, + 0x30, 0x53, 0x22, 0x70, 0x51, 0x01, 0x08, 0x84, 0x40, 0xC4, 0x0E, 0x91, + 0xAE, 0x1E, 0x91, 0x9A, 0xA9, 0x11, 0xE1, 0x18, 0x78, 0x05, 0xDD, 0x8D, + 0x31, 0x8B, 0x70, 0x92, 0xE3, 0x6E, 0xB8, 0x3F, 0x8C, 0xC7, 0xFD, 0x48, + 0x84, 0x29, 0x49, 0x00, 0x00, 0x55, 0x5B, 0x4D, 0x7C, 0xE9, 0x09, 0xC0, + 0xC4, 0xCC, 0x4C, 0xC4, 0x62, 0x20, 0x53, 0x32, 0x2A, 0xD8, 0x1F, 0x03, + 0x23, 0x60, 0x0C, 0x1C, 0x22, 0x6F, 0xAB, 0xC9, 0xE4, 0x52, 0xB1, 0x49, + 0x1A, 0x51, 0x73, 0xE9, 0xA0, 0x85, 0x10, 0x41, 0x0D, 0xDC, 0x32, 0x5D, + 0xD7, 0x0C, 0x00, 0xBB, 0x29, 0xBE, 0x9C, 0x97, 0x4F, 0x9F, 0x4F, 0x44, + 0xA8, 0x66, 0xEB, 0x9A, 0x2F, 0xCB, 0xCA, 0x44, 0xCE, 0x36, 0x2E, 0xFF, + 0x44, 0x9C, 0xB4, 0x60, 0x88, 0x01, 0x11, 0x52, 0x96, 0xA5, 0x70, 0x3E, + 0x8A, 0x9A, 0x96, 0x9F, 0x9B, 0x99, 0xE9, 0x32, 0x6A, 0xE3, 0x84, 0x4D, + 0x81, 0x2A, 0x54, 0x85, 0x6E, 0x21, 0x3B, 0x04, 0x10, 0x16, 0x95, 0xCA, + 0x75, 0x4C, 0x43, 0x2C, 0x64, 0x0F, 0x68, 0xB6, 0x69, 0xCE, 0x1B, 0x7B, + 0x20, 0x8A, 0xEA, 0x17, 0xF7, 0xE3, 0x18, 0xF9, 0xE9, 0xBC, 0x66, 0xC6, + 0x35, 0xAB, 0xA8, 0xD3, 0x3B, 0xEE, 0x06, 0x06, 0x83, 0xE3, 0x3E, 0x8A, + 0x9A, 0x9A, 0x89, 0xC2, 0x9A, 0xF5, 0xB8, 0x0B, 0x5F, 0xDC, 0x4F, 0xFB, + 0x29, 0x1E, 0x76, 0x71, 0x37, 0x06, 0x33, 0x43, 0x84, 0x24, 0xF2, 0xC3, + 0xCB, 0xFC, 0x7C, 0x59, 0x09, 0x29, 0x9B, 0x12, 0xFA, 0x14, 0x8A, 0x58, + 0x6B, 0x24, 0xE4, 0xF4, 0xB7, 0x66, 0x55, 0xB3, 0x21, 0x10, 0x02, 0x24, + 0x05, 0x30, 0xC8, 0x62, 0x4C, 0x98, 0xC4, 0x7A, 0x24, 0x21, 0x44, 0x40, + 0xAC, 0xDA, 0x25, 0xAC, 0x59, 0x5F, 0xE6, 0x44, 0x08, 0xEF, 0xEF, 0x26, + 0xFF, 0x55, 0x14, 0x7A, 0x3E, 0x80, 0xBA, 0x5C, 0x6F, 0x3D, 0x58, 0x4D, + 0x8A, 0xC2, 0x6F, 0xFE, 0xC5, 0xF6, 0xEB, 0x2D, 0x53, 0xB9, 0xFA, 0x61, + 0x7A, 0x18, 0x79, 0xBF, 0x8B, 0xEF, 0xEE, 0xA7, 0xFD, 0x34, 0xEE, 0xA6, + 0x51, 0xAB, 0x2E, 0xD6, 0x56, 0xB2, 0xFD, 0x6A, 0xD7, 0xEA, 0xD8, 0xEB, + 0xA7, 0xD7, 0x7A, 0x0A, 0x93, 0x81, 0x76, 0xA2, 0x08, 0xAA, 0x22, 0x60, + 0x48, 0x06, 0x4D, 0x7F, 0x6A, 0xCD, 0x6A, 0x9B, 0x86, 0xB6, 0xD6, 0x10, + 0x31, 0x30, 0x0D, 0x21, 0xC2, 0x15, 0x03, 0x6F, 0xAC, 0x0E, 0x75, 0x7A, + 0x06, 0xC5, 0x61, 0x51, 0x7E, 0x2D, 0x64, 0x54, 0xF1, 0x4B, 0xB5, 0xD9, + 0x6B, 0x52, 0xD5, 0xA2, 0xA2, 0xB0, 0x82, 0x6D, 0x5A, 0x0F, 0x5A, 0xAF, + 0x06, 0x11, 0xE1, 0xF6, 0xE2, 0xF5, 0x1C, 0x7B, 0xDB, 0xDD, 0x3F, 0xE9, + 0xF1, 0xAB, 0xEA, 0x3B, 0xDB, 0xDE, 0xDC, 0x40, 0xB3, 0xA1, 0x81, 0x6E, + 0xEB, 0xD9, 0x10, 0xB1, 0xFF, 0xCA, 0x0D, 0xF4, 0xB4, 0x01, 0xF4, 0x6D, + 0x22, 0x01, 0x02, 0x98, 0xB6, 0x06, 0x4A, 0x17, 0x65, 0x39, 0x00, 0xDA, + 0xEC, 0x1C, 0x13, 0xFB, 0xC1, 0xF4, 0x1D, 0xF9, 0x87, 0x4C, 0x80, 0x82, + 0xD9, 0x14, 0x15, 0xD7, 0x25, 0xDB, 0x50, 0xB6, 0x8C, 0x10, 0x98, 0x89, + 0x18, 0x99, 0xC9, 0xD4, 0x88, 0x89, 0x08, 0x89, 0x10, 0x31, 0x00, 0x40, + 0xD5, 0x69, 0xCB, 0xD8, 0x98, 0xB9, 0xAE, 0x06, 0x18, 0x21, 0x12, 0x32, + 0x53, 0x0C, 0x7C, 0x9E, 0x93, 0xA8, 0xAD, 0x8B, 0xAE, 0x49, 0xD2, 0x50, + 0x1C, 0x0D, 0xCC, 0xA1, 0xB4, 0xD2, 0x3F, 0x02, 0x86, 0x00, 0xA6, 0xA0, + 0xAE, 0x1B, 0x81, 0x4D, 0x43, 0x8C, 0x81, 0x8A, 0x9E, 0x0B, 0x48, 0xEC, + 0x32, 0x10, 0xDC, 0xD8, 0x7F, 0x0D, 0xD2, 0x11, 0xDD, 0x69, 0xA2, 0x56, + 0xA1, 0xC7, 0xCC, 0x22, 0x10, 0x11, 0x1D, 0xF7, 0xA3, 0x81, 0xA9, 0xDA, + 0x5E, 0x0D, 0xDF, 0x01, 0x33, 0x01, 0x20, 0x21, 0x64, 0xD1, 0xCF, 0xCF, + 0x17, 0x03, 0x5B, 0xD6, 0xBC, 0x66, 0xC9, 0xA2, 0x66, 0x38, 0x46, 0xDE, + 0x8D, 0x43, 0x8C, 0xAE, 0xF1, 0x15, 0x05, 0x5F, 0xD5, 0x88, 0x10, 0x17, + 0x48, 0x49, 0x0B, 0x54, 0x55, 0x14, 0xF3, 0x55, 0xD5, 0x5E, 0xC0, 0x00, + 0x18, 0x80, 0x98, 0x6B, 0x13, 0x65, 0xD1, 0xB5, 0xC1, 0x5C, 0xC7, 0xCE, + 0x76, 0xAB, 0xAA, 0x5D, 0x3D, 0x66, 0x76, 0xB7, 0x8B, 0x6A, 0xF6, 0xF9, + 0xB4, 0x9E, 0x17, 0x89, 0x8C, 0x91, 0x5D, 0xC5, 0x45, 0x00, 0xCB, 0x6A, + 0x7B, 0xC2, 0x2C, 0xF6, 0x7C, 0x49, 0x4B, 0x52, 0x05, 0x58, 0xB3, 0x1C, + 0xA7, 0xF1, 0xEB, 0xF7, 0x87, 0x94, 0x95, 0xD0, 0x15, 0x07, 0xFC, 0xDB, + 0xDF, 0xFF, 0xF0, 0xDD, 0xE7, 0xCB, 0x22, 0x9A, 0xC5, 0x39, 0xC7, 0xE9, + 0xBB, 0xF0, 0x40, 0xED, 0xE7, 0x4A, 0xDA, 0x21, 0xE0, 0x9A, 0xD5, 0xED, + 0x11, 0x9F, 0xA3, 0xCA, 0xED, 0x08, 0xB5, 0xFB, 0x0E, 0x02, 0x44, 0xA6, + 0xC3, 0x14, 0xC6, 0x81, 0xD7, 0x94, 0x01, 0x70, 0x59, 0x15, 0x00, 0x68, + 0x23, 0x63, 0x43, 0x84, 0xA2, 0x4E, 0xBE, 0x52, 0x8C, 0x10, 0x8A, 0x06, + 0xE4, 0x0B, 0x62, 0x86, 0x08, 0x0A, 0x80, 0x70, 0xCD, 0x2A, 0xBD, 0x23, + 0x46, 0x4D, 0x3F, 0x1E, 0xC7, 0x2F, 0x1E, 0xF6, 0x1F, 0xDF, 0x1D, 0x86, + 0x21, 0x6E, 0x84, 0x5F, 0x99, 0xCD, 0x99, 0xDF, 0x1D, 0x40, 0x00, 0x57, + 0x38, 0xD8, 0x2F, 0x2F, 0x74, 0x2A, 0x49, 0x6F, 0xC7, 0x99, 0x19, 0x02, + 0x9A, 0x9A, 0xE1, 0x86, 0x14, 0x88, 0xC5, 0x0F, 0xEB, 0xAA, 0x13, 0x12, + 0xBA, 0xAA, 0x95, 0x55, 0x9D, 0x08, 0x88, 0x50, 0x64, 0x63, 0x57, 0x42, + 0x9C, 0xC6, 0xB1, 0xB9, 0xD2, 0x5C, 0x43, 0x0C, 0x21, 0xB4, 0xE5, 0xB6, + 0x6B, 0x43, 0xAC, 0xB8, 0x88, 0x2B, 0xDC, 0xF8, 0x14, 0xDC, 0x31, 0xA2, + 0xE5, 0xBF, 0x8D, 0xE5, 0x6E, 0x98, 0xDF, 0xAC, 0x89, 0x42, 0x24, 0x72, + 0x1D, 0x0F, 0x7C, 0x48, 0x6D, 0x3C, 0xDD, 0xCB, 0x6A, 0xC6, 0xB5, 0x11, + 0x64, 0x66, 0xE8, 0x40, 0xA1, 0x5F, 0x46, 0x00, 0x70, 0xD7, 0x21, 0x22, + 0x42, 0x9D, 0x42, 0xE5, 0x7C, 0x6D, 0x20, 0xE2, 0xAD, 0x83, 0xD5, 0xDE, + 0x8B, 0x38, 0x2A, 0x9A, 0x97, 0x2B, 0xFE, 0x0D, 0x8C, 0x6E, 0x90, 0x08, + 0x08, 0xC0, 0xAE, 0xB0, 0xD2, 0xE7, 0xAB, 0x1D, 0x06, 0xDF, 0x20, 0x63, + 0x2F, 0x15, 0xCC, 0x9A, 0x7A, 0x01, 0x88, 0xC0, 0x40, 0x08, 0x20, 0xAA, + 0x54, 0x76, 0x1F, 0x10, 0x49, 0xCD, 0x02, 0x32, 0x12, 0x19, 0x29, 0x62, + 0x71, 0x0E, 0x78, 0x0B, 0xCC, 0x08, 0x40, 0x66, 0x26, 0xB2, 0xAD, 0x2D, + 0x00, 0xB8, 0x66, 0x87, 0x00, 0x84, 0x34, 0x84, 0xA0, 0x83, 0x9D, 0xE6, + 0xD5, 0xD4, 0x44, 0x6D, 0x5E, 0xF3, 0x9A, 0x24, 0x8B, 0x46, 0x33, 0x22, + 0x0C, 0xA5, 0x2D, 0x02, 0x46, 0x72, 0x07, 0x0D, 0x00, 0x28, 0x18, 0x16, + 0x53, 0x4B, 0x00, 0x00, 0x71, 0x88, 0x01, 0xB0, 0xAC, 0x8E, 0x01, 0x60, + 0x0C, 0xDC, 0x1B, 0xF0, 0x00, 0x37, 0x6C, 0x61, 0x08, 0x44, 0x7C, 0x4B, + 0xD0, 0x6D, 0x21, 0xA6, 0xA9, 0x88, 0x47, 0x42, 0x24, 0xA6, 0x03, 0xF3, + 0x34, 0x0D, 0x22, 0x9A, 0x45, 0xCE, 0x97, 0xF5, 0xBB, 0xC7, 0xD3, 0x65, + 0x4E, 0xAA, 0xB4, 0xE6, 0x8C, 0x04, 0x31, 0xF0, 0x61, 0x8A, 0xEE, 0xFE, + 0x77, 0x0C, 0x50, 0xB5, 0x94, 0x57, 0x77, 0x09, 0x6E, 0xC2, 0xAE, 0x91, + 0x4D, 0x27, 0xC0, 0x7B, 0x56, 0xE9, 0x41, 0xC2, 0xAC, 0xA9, 0x42, 0x3E, + 0xDA, 0x46, 0x00, 0x0D, 0xCD, 0x5C, 0x55, 0x2F, 0xE6, 0xAA, 0x98, 0x5D, + 0x2E, 0xE2, 0xCE, 0xB8, 0xAC, 0x30, 0x20, 0x22, 0x00, 0x12, 0xA8, 0x82, + 0x88, 0xCD, 0x49, 0x44, 0x4D, 0x2A, 0x25, 0x29, 0xC0, 0x2A, 0x3A, 0x2F, + 0x39, 0x38, 0xE8, 0x03, 0x3E, 0x9D, 0xE6, 0x3F, 0x7E, 0x3A, 0x0F, 0x81, + 0x46, 0x24, 0x51, 0x49, 0xE2, 0xBE, 0xF3, 0xD6, 0x51, 0xF5, 0xD0, 0xBC, + 0x56, 0x56, 0x6C, 0x1B, 0xD0, 0xEB, 0xA7, 0x70, 0x11, 0x00, 0x00, 0xC4, + 0x80, 0xBB, 0x18, 0x76, 0x03, 0xDF, 0xED, 0xA2, 0x81, 0x1D, 0xF7, 0xC3, + 0x79, 0x4E, 0x88, 0x05, 0x9E, 0xAA, 0xA0, 0xC6, 0xD2, 0x62, 0x93, 0xDE, + 0xB5, 0x4B, 0x02, 0x73, 0x12, 0xF4, 0x81, 0x80, 0x99, 0x1B, 0x69, 0x50, + 0x4D, 0x8E, 0xD6, 0xA3, 0x99, 0x0D, 0x81, 0x76, 0x91, 0xD7, 0x2C, 0x3F, + 0xFB, 0xE2, 0xFE, 0xCF, 0x3E, 0x1E, 0xF7, 0xBB, 0x21, 0xC4, 0xD8, 0x2F, + 0x75, 0xFB, 0xC1, 0x9D, 0x3E, 0x4D, 0xB9, 0x78, 0x6B, 0x86, 0xDB, 0xCB, + 0x15, 0x39, 0xA4, 0x3A, 0xF5, 0xCB, 0x90, 0x0B, 0x7C, 0xA3, 0x31, 0x13, + 0x56, 0x83, 0xC8, 0x7F, 0x20, 0x2E, 0xDC, 0xE0, 0x5E, 0x00, 0xAB, 0x6A, + 0x04, 0x11, 0xAA, 0xBA, 0x1F, 0x07, 0xC7, 0x21, 0x12, 0x91, 0x4B, 0x78, + 0xB3, 0xE2, 0x05, 0xEF, 0x21, 0xF5, 0x86, 0x5A, 0xD0, 0xB6, 0xF1, 0xB4, + 0x17, 0x0A, 0x8A, 0x99, 0xB9, 0x41, 0x60, 0x55, 0x81, 0xE9, 0x15, 0xA5, + 0x2A, 0xBC, 0x5D, 0x9F, 0x02, 0x03, 0x73, 0x7D, 0x99, 0x2A, 0xAB, 0x5B, + 0xE7, 0x37, 0xF4, 0xAF, 0xAB, 0xAA, 0x3B, 0x67, 0xA0, 0xA3, 0x52, 0xC7, + 0x7D, 0x5F, 0xBA, 0x86, 0x62, 0x8D, 0x7D, 0xAE, 0x7D, 0xFC, 0xDA, 0x4F, + 0x04, 0x5D, 0x37, 0x47, 0xE8, 0xBD, 0xC3, 0xE0, 0xFE, 0x44, 0x00, 0x20, + 0xDF, 0x91, 0xD2, 0xEF, 0x15, 0x0C, 0x35, 0x16, 0xE8, 0xA6, 0xEC, 0x4E, + 0x77, 0xEC, 0x24, 0x59, 0xBF, 0x5F, 0x76, 0xAD, 0x77, 0xFB, 0xC0, 0x8A, + 0x67, 0x9C, 0x8A, 0x29, 0x56, 0xBD, 0xE7, 0x80, 0x88, 0x46, 0x00, 0x68, + 0x06, 0x4C, 0x68, 0xD5, 0xBF, 0x49, 0xAD, 0x35, 0x77, 0x11, 0x98, 0x19, + 0x11, 0x98, 0x75, 0xDE, 0x12, 0xDF, 0x32, 0x55, 0x04, 0x22, 0xC6, 0x18, + 0x78, 0x3F, 0xC6, 0x94, 0x34, 0x04, 0x3A, 0xEE, 0x87, 0xBB, 0xFD, 0x80, + 0x88, 0x39, 0x0B, 0x22, 0x04, 0x3F, 0x7A, 0xE4, 0xD7, 0xB4, 0x05, 0xA0, + 0x60, 0x6C, 0x98, 0xB2, 0x22, 0xAC, 0x29, 0x13, 0x11, 0xC5, 0x40, 0x31, + 0x84, 0x21, 0xB0, 0xAB, 0x72, 0x3D, 0x81, 0xDE, 0x50, 0x30, 0x34, 0x1F, + 0x56, 0xA7, 0x32, 0xA8, 0x36, 0x9B, 0x0F, 0x89, 0x30, 0x65, 0xCD, 0xAA, + 0x03, 0xC2, 0x9C, 0x65, 0x5E, 0xD3, 0x10, 0xE2, 0x34, 0xC4, 0xC8, 0xCC, + 0x8C, 0x7F, 0xFF, 0xCD, 0xD3, 0xB2, 0x66, 0x44, 0xD8, 0x4F, 0xC3, 0x6E, + 0x8A, 0x86, 0x38, 0xAF, 0x89, 0x10, 0x0D, 0x60, 0x4D, 0x32, 0xAF, 0x59, + 0xD5, 0x10, 0x01, 0x0C, 0xAD, 0x03, 0x1E, 0x2B, 0x44, 0x58, 0x97, 0xB8, + 0xA3, 0xD0, 0xEB, 0x11, 0x82, 0x3B, 0x4C, 0xCC, 0xA0, 0x1E, 0x6D, 0xA1, + 0x0B, 0xB7, 0xF6, 0xBA, 0x0F, 0xBE, 0x9E, 0x21, 0xC0, 0x69, 0x16, 0x42, + 0x18, 0x02, 0xB9, 0xF3, 0x7D, 0xCD, 0x9B, 0x8B, 0xC1, 0x00, 0xD4, 0xE0, + 0xBC, 0x0A, 0x34, 0x34, 0x32, 0x30, 0xB3, 0x71, 0x08, 0x31, 0xD0, 0xB2, + 0xE6, 0x1F, 0x9E, 0x2F, 0x4F, 0x97, 0x64, 0x00, 0xAB, 0x68, 0x64, 0x9C, + 0x22, 0x9B, 0xA9, 0xF8, 0xC9, 0xC7, 0x8D, 0x5D, 0xB0, 0x3D, 0xAE, 0x6D, + 0x00, 0x20, 0x10, 0xA0, 0x81, 0xAB, 0x46, 0xDB, 0xF2, 0xF6, 0xD3, 0x71, + 0x3C, 0x62, 0xC4, 0xBB, 0x5D, 0xF8, 0xEA, 0x61, 0x6F, 0x00, 0x97, 0x94, + 0x22, 0xB3, 0x59, 0x4A, 0xA2, 0x8C, 0x75, 0xC6, 0x15, 0xA0, 0x6A, 0xC3, + 0x45, 0x2D, 0x04, 0x28, 0xA8, 0x5A, 0xF5, 0x11, 0x6C, 0xAF, 0x36, 0x8F, + 0x54, 0x5D, 0x11, 0xC7, 0x40, 0x03, 0xB3, 0xAF, 0xDE, 0x4D, 0x3F, 0xFF, + 0xFA, 0xDD, 0x6E, 0x0C, 0x6A, 0xC0, 0xBC, 0x91, 0x0F, 0x76, 0x46, 0x47, + 0x4A, 0x09, 0x00, 0x62, 0x8C, 0x6F, 0x8C, 0xF9, 0x35, 0xBD, 0x99, 0x39, + 0xC9, 0x8A, 0x5E, 0x59, 0x19, 0x00, 0xD5, 0x1A, 0x36, 0x54, 0x54, 0x25, + 0x2A, 0x00, 0x4B, 0xD5, 0x0B, 0xE5, 0x3D, 0xAA, 0x9A, 0x9A, 0xA9, 0xF5, + 0x98, 0x0D, 0x08, 0x91, 0x39, 0x86, 0xC8, 0xCC, 0x3E, 0xC8, 0x9C, 0x33, + 0x54, 0xF6, 0xB0, 0xEA, 0xB1, 0xEE, 0xB5, 0x0C, 0xEF, 0xD5, 0xAE, 0xB4, + 0x9E, 0xC2, 0x96, 0x04, 0x28, 0x1B, 0x6D, 0x6F, 0x7A, 0xDC, 0xA6, 0xC5, + 0x98, 0xAF, 0x91, 0x21, 0x35, 0xF1, 0x83, 0x6D, 0x61, 0xBD, 0xD3, 0x36, + 0x59, 0x6F, 0xBF, 0xE9, 0xAA, 0x9D, 0x7A, 0x64, 0xAE, 0x7C, 0xF5, 0x5D, + 0xB8, 0x2D, 0xDB, 0xBA, 0x2B, 0xC7, 0x66, 0x58, 0x4C, 0x51, 0x73, 0x5D, + 0x6B, 0xD3, 0x79, 0x6F, 0xE9, 0xAA, 0x0C, 0xC0, 0x4D, 0x76, 0x55, 0xAB, + 0xBA, 0x45, 0x73, 0x62, 0x16, 0xE7, 0x7A, 0x47, 0x83, 0x75, 0x38, 0xD8, + 0xD4, 0x82, 0x1E, 0xB9, 0x7A, 0x20, 0xC3, 0xEE, 0x05, 0x33, 0xAB, 0xC6, + 0x31, 0x82, 0x47, 0x26, 0x54, 0xD1, 0xE3, 0xC3, 0x31, 0x8F, 0x6A, 0xE8, + 0x46, 0xDB, 0xBA, 0xEB, 0x7E, 0xED, 0xEC, 0xF0, 0xBA, 0x88, 0x44, 0x45, + 0x22, 0x30, 0x11, 0x11, 0x9A, 0xC1, 0x38, 0xC4, 0x18, 0x58, 0xD4, 0x54, + 0x15, 0x11, 0x82, 0x37, 0xA9, 0x56, 0x24, 0x11, 0x34, 0x9F, 0xA8, 0x81, + 0xBB, 0xA5, 0x11, 0x51, 0xD4, 0x0C, 0x34, 0x18, 0x60, 0x60, 0x04, 0x20, + 0xC6, 0x1E, 0xA4, 0x5E, 0x53, 0x67, 0xE7, 0xE3, 0x00, 0xA8, 0x5A, 0xB1, + 0x7F, 0xA0, 0x06, 0x92, 0xD5, 0x17, 0x31, 0x67, 0x11, 0x51, 0x15, 0xCD, + 0x22, 0xA2, 0x46, 0x80, 0x43, 0x1C, 0x95, 0x70, 0x8C, 0xE1, 0xDD, 0x71, + 0x4A, 0x59, 0xA6, 0x21, 0x12, 0xE1, 0xF9, 0xB2, 0xFA, 0xF9, 0xAB, 0xF7, + 0xB5, 0x24, 0xC9, 0x6A, 0x6A, 0x2E, 0xEE, 0x5C, 0xC3, 0x28, 0xFA, 0x54, + 0x03, 0x35, 0x2B, 0x4E, 0x5C, 0xB4, 0x57, 0x9E, 0xE6, 0x1E, 0x6F, 0xB5, + 0x90, 0xD4, 0x95, 0xDB, 0x08, 0x71, 0x6B, 0xAD, 0xC3, 0x41, 0x50, 0xB3, + 0x25, 0x17, 0x39, 0x4C, 0x08, 0x06, 0xC5, 0x61, 0x4F, 0xDB, 0xD6, 0x22, + 0x23, 0x26, 0x35, 0x26, 0xCC, 0x62, 0xCB, 0x9A, 0x52, 0xC2, 0xF3, 0x92, + 0x1E, 0x4F, 0xAB, 0x01, 0x10, 0xE1, 0x92, 0x64, 0x49, 0x30, 0x04, 0x3A, + 0x4E, 0x7C, 0x5A, 0x44, 0xD5, 0xCA, 0x59, 0xD3, 0xAB, 0x9D, 0xF3, 0x1E, + 0xD1, 0xDC, 0x4F, 0x68, 0x04, 0x80, 0x00, 0x0A, 0xDB, 0xDE, 0x3B, 0x75, + 0x68, 0x25, 0x0D, 0x42, 0x73, 0xF2, 0x00, 0x04, 0x33, 0x63, 0xC4, 0x35, + 0xCB, 0x79, 0xC9, 0xA5, 0xA1, 0x8A, 0x4E, 0xED, 0x37, 0x32, 0x00, 0xC7, + 0x83, 0x1F, 0x53, 0xF7, 0x9A, 0x67, 0xB7, 0x7D, 0xCB, 0xCC, 0xC0, 0x98, + 0x30, 0x65, 0xFB, 0xC5, 0x97, 0xFB, 0x5F, 0x7C, 0xFD, 0x6E, 0xB7, 0x1B, + 0x01, 0x20, 0xBC, 0xE5, 0x7F, 0x69, 0x54, 0x71, 0x43, 0x1E, 0x8D, 0x0D, + 0x6E, 0x3F, 0x51, 0x13, 0xC9, 0xAA, 0x9A, 0x53, 0x6E, 0xEA, 0x58, 0x73, + 0xF9, 0x57, 0x08, 0x35, 0x33, 0xAC, 0x2A, 0x9E, 0x6F, 0xFC, 0xD6, 0xB7, + 0xB7, 0xE8, 0x24, 0x5E, 0x08, 0x00, 0x21, 0x84, 0x10, 0x43, 0x70, 0xB0, + 0x20, 0xA2, 0x9C, 0x73, 0xCF, 0x72, 0xF0, 0xCA, 0x8E, 0xC3, 0xAA, 0x25, + 0xB5, 0x17, 0xDA, 0x50, 0xB1, 0xD2, 0x52, 0x3F, 0xF2, 0xD7, 0x94, 0x8F, + 0xC5, 0xE8, 0xBD, 0x72, 0xEA, 0xBD, 0xFE, 0x4A, 0x0F, 0x07, 0x66, 0x26, + 0x02, 0x88, 0x57, 0x1E, 0xFA, 0xA6, 0x3F, 0xD6, 0x17, 0xB4, 0x90, 0x00, + 0x40, 0x19, 0x05, 0x16, 0xDD, 0x0D, 0x0C, 0x04, 0x4A, 0x9C, 0x00, 0x02, + 0xBA, 0x75, 0xD8, 0x81, 0x5A, 0xD9, 0x64, 0x47, 0x59, 0x9F, 0x95, 0x76, + 0x13, 0x29, 0xD3, 0x6C, 0xE7, 0xE5, 0x05, 0x28, 0x37, 0x31, 0xBB, 0xC1, + 0xF4, 0x5B, 0xBB, 0xDC, 0x2F, 0x26, 0xB4, 0xA3, 0x64, 0xAC, 0x67, 0xC9, + 0xD5, 0x8F, 0xE1, 0x76, 0x6E, 0x60, 0x0F, 0xB9, 0xA0, 0xFE, 0xAC, 0xF9, + 0xAD, 0xC5, 0xF4, 0x6E, 0x37, 0x89, 0xD8, 0xA2, 0x55, 0x88, 0x0C, 0x02, + 0x8E, 0x10, 0x45, 0xC5, 0x9D, 0x54, 0x58, 0x3B, 0x0D, 0xB5, 0xA1, 0xA2, + 0x4D, 0x0C, 0x81, 0xC1, 0x2C, 0x67, 0xF5, 0x61, 0xB1, 0x6B, 0xA5, 0x08, + 0x43, 0xE4, 0xFD, 0x34, 0x4E, 0x63, 0x64, 0xA6, 0x10, 0x36, 0x31, 0xD2, + 0x04, 0xD7, 0x0D, 0xA5, 0x6A, 0x75, 0x21, 0x15, 0x03, 0x4D, 0xA1, 0x39, + 0x3F, 0x00, 0x40, 0xD5, 0x96, 0x75, 0x71, 0xFB, 0x7B, 0x5E, 0x12, 0x20, + 0x30, 0xD1, 0x30, 0x04, 0x37, 0x1B, 0x43, 0x08, 0x5F, 0x7D, 0xB8, 0x5B, + 0x53, 0x5E, 0xB3, 0xA4, 0x2C, 0x04, 0x18, 0x02, 0x9F, 0xE6, 0x74, 0x99, + 0x73, 0x0C, 0x94, 0x44, 0xB3, 0xA8, 0x99, 0x49, 0x39, 0x8F, 0xC3, 0x06, + 0x49, 0x57, 0xEB, 0x02, 0xD0, 0xA3, 0x58, 0xED, 0xBA, 0x8B, 0xB5, 0xA9, + 0x1E, 0x8D, 0x5E, 0x6B, 0x6B, 0x3B, 0xE5, 0xFA, 0x1D, 0xC0, 0x2D, 0xCB, + 0xF9, 0xA3, 0x08, 0x68, 0x40, 0xC5, 0x57, 0x8F, 0x59, 0x0C, 0x10, 0xEF, + 0x77, 0x61, 0x49, 0x9A, 0x45, 0x10, 0x80, 0x10, 0x4E, 0x4B, 0x66, 0x84, + 0x35, 0xEB, 0x10, 0xD9, 0x9D, 0x65, 0x50, 0xBD, 0x5D, 0xBB, 0x81, 0x01, + 0xF0, 0xB4, 0xA4, 0x02, 0x54, 0x55, 0x64, 0xDD, 0x32, 0x06, 0x42, 0xF5, + 0x58, 0xBD, 0x1A, 0x8D, 0xFF, 0xB5, 0x6A, 0x80, 0x43, 0x20, 0x26, 0xFA, + 0x7C, 0x5A, 0xD6, 0x2C, 0x1E, 0x08, 0x92, 0x45, 0xB5, 0x5A, 0x58, 0xAF, + 0xE9, 0xEF, 0x4D, 0x0B, 0xEF, 0x2D, 0xB6, 0x84, 0xA2, 0x99, 0xAA, 0x4E, + 0x91, 0x10, 0x71, 0xCD, 0x72, 0x18, 0xE9, 0x27, 0x1F, 0x0E, 0x87, 0xC3, + 0xA4, 0x9D, 0xA7, 0xB9, 0xFF, 0x7A, 0xDD, 0xE2, 0x22, 0xAE, 0xDC, 0xE2, + 0xB8, 0x89, 0xF6, 0x2A, 0x92, 0x1C, 0x8A, 0x2F, 0xD0, 0xCC, 0x3C, 0x82, + 0x48, 0xAA, 0x5D, 0xD9, 0x24, 0xA5, 0xF9, 0xE1, 0x36, 0x02, 0x12, 0x54, + 0xD0, 0x53, 0x34, 0x56, 0x35, 0xE3, 0xF2, 0x5E, 0xA7, 0x9B, 0x39, 0xAF, + 0x1A, 0x21, 0x19, 0x5B, 0x60, 0x6E, 0xF1, 0x59, 0xD5, 0x0B, 0xD1, 0x14, + 0x87, 0x2D, 0xE2, 0xA1, 0x19, 0x16, 0x95, 0xC3, 0xCD, 0xAE, 0x0F, 0x3D, + 0xDB, 0x4F, 0xDE, 0x78, 0x59, 0xC3, 0x4E, 0xFD, 0x7F, 0x93, 0x48, 0xDE, + 0x5C, 0xD2, 0x36, 0xFD, 0xF6, 0xB3, 0xDB, 0x8C, 0xCD, 0x3F, 0xD6, 0x3E, + 0xF7, 0xA7, 0x12, 0x46, 0x81, 0x66, 0xD7, 0x4D, 0x7C, 0xF3, 0xA9, 0x79, + 0xA8, 0x6B, 0x18, 0xC7, 0xCD, 0x18, 0xDE, 0x84, 0x1B, 0x55, 0xCD, 0x39, + 0x97, 0x48, 0x94, 0x36, 0x12, 0x03, 0xC9, 0x1B, 0x84, 0x79, 0xC7, 0xFD, + 0x48, 0x6E, 0x1A, 0xBC, 0x41, 0x7F, 0x5F, 0x4C, 0x66, 0x42, 0x40, 0x33, + 0xA5, 0x2E, 0xFC, 0x4D, 0x4C, 0x97, 0x35, 0xA9, 0xDA, 0x34, 0x45, 0x57, + 0xA6, 0x9A, 0x26, 0x6D, 0xAF, 0x62, 0x44, 0xAA, 0x1D, 0xEA, 0xCB, 0x62, + 0x15, 0x40, 0xBA, 0x19, 0x55, 0x45, 0xC4, 0xBF, 0x98, 0x55, 0x87, 0xC0, + 0x88, 0x28, 0xA2, 0xC1, 0x17, 0x05, 0x01, 0x10, 0x81, 0x7D, 0x77, 0x11, + 0x63, 0x44, 0x26, 0xF4, 0x60, 0x54, 0x35, 0x8D, 0x81, 0x87, 0x18, 0x63, + 0x64, 0x8F, 0x3F, 0xC4, 0xCE, 0x7C, 0xE8, 0x57, 0xBC, 0xF5, 0x87, 0x88, + 0x88, 0x94, 0xB3, 0xB4, 0xCF, 0xDD, 0x31, 0xB1, 0x7D, 0x17, 0xEC, 0xB2, + 0xA4, 0xC0, 0x64, 0x06, 0x39, 0x4B, 0x8C, 0x61, 0x1A, 0xA2, 0x47, 0x75, + 0xC4, 0xC0, 0xAE, 0xFE, 0xB2, 0x12, 0x79, 0x88, 0x0E, 0x40, 0x60, 0xDA, + 0x8D, 0x31, 0x67, 0x0D, 0x4C, 0x80, 0x78, 0x5E, 0x72, 0x15, 0x5C, 0x00, + 0x9D, 0xFF, 0xBE, 0x8D, 0x81, 0xEA, 0x02, 0x34, 0x3A, 0xAA, 0x82, 0xBA, + 0x70, 0xA7, 0x95, 0x65, 0x79, 0x03, 0x1F, 0xCA, 0xC2, 0xB9, 0xE5, 0x7A, + 0xFD, 0xB9, 0x13, 0x4E, 0xF9, 0x5A, 0xD1, 0x12, 0x8A, 0x34, 0x43, 0x80, + 0x79, 0x95, 0x55, 0x8C, 0x09, 0x91, 0x60, 0x8C, 0x9C, 0xB3, 0x3C, 0xAD, + 0x62, 0x6A, 0x0A, 0x90, 0x45, 0x77, 0x03, 0xA7, 0xAC, 0x86, 0x48, 0x84, + 0x77, 0xBB, 0xE1, 0x30, 0x19, 0xBF, 0xC0, 0x79, 0x95, 0x94, 0x8B, 0xB2, + 0x7D, 0xC3, 0x12, 0x57, 0x74, 0x0F, 0xD5, 0x72, 0xDE, 0xCC, 0x42, 0x00, + 0xF7, 0xDC, 0x1B, 0x12, 0xE2, 0x14, 0x79, 0x8A, 0x7C, 0x5A, 0xD2, 0x69, + 0x4E, 0x39, 0xF0, 0xDD, 0x3E, 0x22, 0xF2, 0xA7, 0xE7, 0x45, 0xB5, 0x28, + 0x98, 0x37, 0x24, 0xFE, 0xDF, 0x7C, 0xEA, 0x9B, 0xE5, 0x1C, 0x2A, 0x06, + 0xFA, 0x27, 0x3F, 0xFF, 0x70, 0x9E, 0x97, 0xF3, 0x9C, 0x7E, 0xF9, 0x93, + 0x77, 0xEF, 0xEE, 0xF7, 0xF6, 0xFA, 0xB0, 0xA0, 0xFB, 0xAE, 0xF3, 0x43, + 0xB1, 0x9B, 0x6C, 0x6B, 0xB0, 0x0F, 0xA7, 0x6C, 0xD4, 0x03, 0x00, 0xAA, + 0xA2, 0x66, 0xB9, 0xC6, 0x92, 0x42, 0xAF, 0xD9, 0xA1, 0xB9, 0xB1, 0x66, + 0x65, 0xE6, 0x0D, 0xDB, 0x51, 0x45, 0x19, 0x09, 0xF8, 0x4A, 0x91, 0x31, + 0x33, 0x37, 0x92, 0x88, 0x83, 0xDB, 0xF8, 0xCD, 0x80, 0x72, 0xB7, 0x4F, + 0x1F, 0x62, 0x7A, 0x25, 0x9C, 0xD4, 0xA0, 0x46, 0x87, 0x69, 0x77, 0x78, + 0x7D, 0x35, 0x24, 0x0F, 0x44, 0x81, 0x62, 0xBF, 0x80, 0x4B, 0x93, 0xFA, + 0xC2, 0x9B, 0x0B, 0xD2, 0x2C, 0xB8, 0x37, 0x57, 0xD8, 0xC7, 0xCC, 0x4C, + 0x37, 0xB6, 0x8D, 0x7F, 0xDE, 0x83, 0x85, 0xA3, 0x98, 0x2F, 0xA9, 0xDB, + 0x92, 0xA5, 0x1D, 0x42, 0x06, 0x02, 0x00, 0xB5, 0x6D, 0xD8, 0x37, 0x58, + 0xD6, 0xD6, 0xF9, 0x3A, 0xEC, 0xCE, 0x55, 0x10, 0x04, 0x8F, 0xA7, 0xEB, + 0xE2, 0x8D, 0xAD, 0x93, 0xAA, 0x37, 0x22, 0xF6, 0x15, 0x9B, 0x83, 0xDB, + 0x7C, 0x44, 0xE4, 0x6F, 0x30, 0xB1, 0x87, 0xE3, 0xFA, 0xAC, 0x45, 0xDC, + 0x8B, 0x62, 0x60, 0x50, 0x14, 0xA0, 0x6B, 0xE1, 0x77, 0x83, 0x65, 0xB5, + 0x2F, 0x17, 0x73, 0x57, 0x6E, 0x3B, 0x28, 0x48, 0x65, 0xE0, 0xB1, 0x0A, + 0x66, 0x44, 0x9A, 0x05, 0x40, 0x20, 0x8B, 0x06, 0x30, 0x53, 0x04, 0xF2, + 0x10, 0x1C, 0x30, 0x53, 0x60, 0xC6, 0x18, 0x38, 0x30, 0x31, 0xA1, 0x99, + 0x8D, 0x31, 0x86, 0x40, 0x88, 0xE0, 0x6E, 0xA9, 0x7E, 0x7D, 0xDB, 0xC4, + 0x7A, 0x2C, 0xF3, 0x87, 0xC8, 0x10, 0x21, 0x25, 0x11, 0x91, 0x10, 0x78, + 0x18, 0x62, 0x95, 0xCC, 0x98, 0xB3, 0x4E, 0xE3, 0x30, 0xC4, 0xE8, 0x7E, + 0x5D, 0xD3, 0xC1, 0x00, 0x86, 0x21, 0xB6, 0x98, 0xEF, 0x2C, 0xA6, 0x49, + 0x53, 0x96, 0x25, 0xE5, 0xE7, 0xF3, 0x9A, 0xB2, 0x88, 0x1A, 0x21, 0x30, + 0xB3, 0xB3, 0x32, 0xD5, 0x00, 0x8A, 0x1B, 0x59, 0x51, 0x9D, 0xFE, 0xDB, + 0xBF, 0xFD, 0x5F, 0xCB, 0x9E, 0xB6, 0x95, 0xA9, 0x51, 0xB2, 0xFD, 0xAB, + 0x1B, 0x35, 0xBD, 0x82, 0xB1, 0xB2, 0x7F, 0xE8, 0xD1, 0x93, 0x57, 0xB2, + 0xC2, 0xB3, 0x08, 0xD6, 0xAC, 0xA5, 0x59, 0x85, 0x35, 0xCB, 0x65, 0xA5, + 0x25, 0x89, 0x19, 0xA8, 0xD9, 0x14, 0x79, 0x8A, 0x01, 0x0F, 0x08, 0x00, + 0x4B, 0x92, 0x4B, 0xCA, 0x97, 0x25, 0xFB, 0xFB, 0x4E, 0x0D, 0x3F, 0x62, + 0xE0, 0xF5, 0x53, 0x40, 0xF3, 0xC8, 0xA9, 0xCE, 0x82, 0x86, 0xEA, 0x7A, + 0x0F, 0xEE, 0xDB, 0x06, 0x64, 0xC6, 0xBB, 0x5D, 0x1C, 0x23, 0xCF, 0xAB, + 0x24, 0xF1, 0x9D, 0x42, 0xC4, 0x6B, 0x6A, 0x78, 0x53, 0xFB, 0xAB, 0x73, + 0xEF, 0xC8, 0x14, 0xC0, 0xF4, 0x30, 0x86, 0xAF, 0x1E, 0xA6, 0xFD, 0x34, + 0x7C, 0xF9, 0x6E, 0xFF, 0xF9, 0x09, 0x7E, 0xF2, 0xE1, 0xEE, 0xFD, 0xBB, + 0xC3, 0x6B, 0x43, 0xF8, 0x6A, 0xE9, 0xBA, 0x5F, 0x55, 0x04, 0x0C, 0x10, + 0x88, 0xCA, 0x21, 0x3F, 0x68, 0x0D, 0x26, 0x2D, 0xA3, 0x77, 0x52, 0xD6, + 0x6A, 0xCE, 0xD4, 0xA0, 0x39, 0x7F, 0xA1, 0x77, 0x60, 0xD5, 0x1F, 0x80, + 0xAA, 0xE6, 0xD2, 0x74, 0x15, 0xA8, 0xF6, 0x60, 0x73, 0x2D, 0x63, 0xD1, + 0xC3, 0xFC, 0x28, 0xD0, 0x44, 0x45, 0xA5, 0x04, 0x37, 0xF5, 0x0D, 0xDE, + 0x32, 0xBC, 0x23, 0x88, 0x6D, 0x46, 0x86, 0x75, 0x4F, 0xED, 0xDD, 0xD4, + 0x8A, 0xD1, 0x5F, 0x06, 0xD0, 0xF9, 0xA4, 0xAE, 0xB7, 0xEC, 0x56, 0xD2, + 0xB7, 0xC5, 0xEF, 0x7F, 0x00, 0xC7, 0x50, 0xF3, 0xF3, 0xC4, 0xE2, 0xF6, + 0xEE, 0x7D, 0x67, 0x55, 0x9D, 0xDD, 0xE2, 0x66, 0x91, 0xB7, 0xF8, 0x27, + 0xF4, 0x43, 0x5C, 0x33, 0x50, 0x53, 0x54, 0x28, 0x51, 0x41, 0xD0, 0xB8, + 0xB2, 0x2E, 0x66, 0x41, 0xB3, 0x7A, 0xE2, 0xA1, 0x66, 0x00, 0xE6, 0x5E, + 0x86, 0x12, 0xDC, 0x5F, 0x5E, 0xED, 0x24, 0xDF, 0x6B, 0x3A, 0xB9, 0xA2, + 0x10, 0x57, 0x0C, 0xA9, 0x84, 0xF5, 0xAB, 0xBB, 0x38, 0xAB, 0xDD, 0x91, + 0x55, 0x44, 0x2C, 0x89, 0x22, 0x52, 0x64, 0x66, 0x22, 0x35, 0x23, 0xD8, + 0x16, 0xBC, 0x07, 0x90, 0x9B, 0x96, 0x5D, 0x33, 0x41, 0x40, 0xBC, 0x05, + 0x38, 0x20, 0x26, 0x40, 0x83, 0x0C, 0x62, 0x4A, 0x48, 0x66, 0x96, 0x44, + 0xC1, 0x2C, 0xB4, 0x48, 0x47, 0x87, 0x64, 0x00, 0x33, 0xE3, 0x2A, 0x28, + 0x98, 0xC9, 0x97, 0x21, 0x20, 0x02, 0x93, 0x89, 0x20, 0x80, 0xB9, 0x75, + 0xD9, 0x62, 0x5E, 0xFA, 0x2D, 0xE9, 0x7F, 0x66, 0xE6, 0x18, 0xAD, 0x0F, + 0xC5, 0xF6, 0x1F, 0x3C, 0x0A, 0xCE, 0xCC, 0xCC, 0xC8, 0x0C, 0x44, 0x44, + 0xB2, 0x35, 0xA1, 0xA5, 0x22, 0x22, 0x96, 0xB2, 0x5C, 0xE6, 0xF5, 0xB2, + 0xE4, 0x65, 0xCD, 0xA7, 0x25, 0x03, 0x40, 0x64, 0x22, 0x35, 0x42, 0x90, + 0xEA, 0x2B, 0x32, 0x0F, 0x10, 0xB0, 0xED, 0xC0, 0x0F, 0xA1, 0x66, 0x4D, + 0xD5, 0x35, 0xAF, 0xC1, 0xE8, 0x60, 0x55, 0xC3, 0xEA, 0xA4, 0x1E, 0x54, + 0x0B, 0xE6, 0x6A, 0xF0, 0x58, 0xB5, 0x2E, 0xBA, 0x8E, 0xEF, 0xC7, 0x02, + 0x61, 0xA0, 0x06, 0x00, 0x46, 0xF5, 0xFC, 0xDF, 0xAC, 0x1C, 0x12, 0x11, + 0x41, 0x60, 0x8A, 0x4C, 0x77, 0xBB, 0x78, 0x9C, 0xE2, 0x7E, 0x8A, 0x2F, + 0x97, 0xF5, 0x34, 0x27, 0x40, 0xF8, 0x70, 0xB7, 0xBB, 0xDB, 0x0D, 0x4F, + 0xE7, 0xC5, 0xD4, 0x3E, 0xBD, 0x2C, 0xCF, 0xE7, 0x35, 0x89, 0x25, 0xD1, + 0xE6, 0x48, 0x70, 0xC0, 0x69, 0x34, 0x07, 0xD7, 0xFD, 0x56, 0xB6, 0xA9, + 0x52, 0x71, 0x23, 0x2B, 0x60, 0x84, 0x94, 0xF5, 0x87, 0xB4, 0x42, 0xC9, + 0x13, 0x81, 0x1F, 0x4E, 0xEB, 0xB8, 0x12, 0x00, 0xDE, 0xEF, 0xE2, 0x92, + 0xD5, 0x63, 0x6B, 0x6F, 0xB6, 0xE6, 0xAA, 0xE5, 0x8E, 0x50, 0x9A, 0x6E, + 0x5E, 0x98, 0x81, 0xF0, 0xA7, 0xEF, 0xF7, 0x3F, 0xFB, 0xF2, 0x6E, 0x1A, + 0x63, 0x4A, 0xF9, 0xB0, 0x1B, 0xF6, 0xFB, 0xB1, 0xB9, 0x3C, 0x6E, 0x9E, + 0xC6, 0xB7, 0x5A, 0xFC, 0xEE, 0xEE, 0xB6, 0x57, 0x50, 0x40, 0x55, 0x50, + 0xF3, 0x98, 0x37, 0x28, 0xF4, 0xDA, 0xA2, 0x49, 0x4B, 0xE4, 0x64, 0xD3, + 0x37, 0xAB, 0xE3, 0x13, 0x81, 0x7C, 0xAE, 0x58, 0x02, 0x2C, 0x70, 0xCB, + 0x14, 0x6B, 0x5C, 0xAA, 0x66, 0x28, 0x9B, 0x57, 0xDE, 0xC7, 0x4D, 0x88, + 0x4C, 0x8C, 0x88, 0x21, 0x04, 0x00, 0x48, 0x29, 0xAB, 0x8A, 0xBB, 0x40, + 0x5E, 0xCB, 0xFF, 0xEB, 0x19, 0x58, 0xCF, 0xB7, 0x3D, 0x84, 0xB5, 0x85, + 0x2A, 0x3C, 0x56, 0x85, 0x8F, 0xE1, 0xDB, 0x7C, 0xDE, 0xF3, 0x9E, 0xCF, + 0xB1, 0xE7, 0xDB, 0x9B, 0x95, 0x07, 0x17, 0x4E, 0xE6, 0x27, 0xAD, 0xE5, + 0xE5, 0x66, 0xBE, 0xF4, 0x88, 0xD6, 0x0F, 0x6F, 0x73, 0x35, 0x21, 0xA2, + 0x01, 0x91, 0x99, 0x92, 0x82, 0x2A, 0x5C, 0xED, 0x29, 0x14, 0x51, 0x5D, + 0xA0, 0xAF, 0x92, 0x5C, 0x3D, 0xD9, 0x52, 0x1F, 0xF6, 0x1B, 0x84, 0x07, + 0x70, 0x8B, 0x62, 0xDD, 0x1C, 0xAB, 0x19, 0x07, 0xD8, 0xB2, 0x71, 0x40, + 0xD1, 0x1D, 0x9C, 0xDB, 0xEE, 0xA8, 0xF9, 0x18, 0x89, 0x91, 0x19, 0x5D, + 0xA7, 0xE9, 0x9B, 0xB5, 0x6A, 0x59, 0x77, 0x5A, 0xF3, 0xA6, 0xFA, 0x19, + 0x18, 0x21, 0x98, 0x16, 0x5B, 0xB4, 0xFB, 0x93, 0x01, 0x80, 0x65, 0x68, + 0x81, 0x06, 0x59, 0x35, 0x10, 0x12, 0xD5, 0x4C, 0xC3, 0x61, 0x88, 0xCE, + 0x55, 0x66, 0xEE, 0x92, 0xC0, 0x61, 0x08, 0x84, 0xC5, 0xCF, 0x22, 0x92, + 0x11, 0x91, 0xB0, 0x24, 0xD6, 0x4C, 0x53, 0x78, 0x1D, 0xB3, 0xF7, 0x7A, + 0xF2, 0xCD, 0x39, 0xD2, 0x8E, 0x99, 0x01, 0x00, 0x80, 0x55, 0xB5, 0x42, + 0x27, 0x70, 0x40, 0x33, 0x13, 0x31, 0x55, 0x53, 0xD5, 0x35, 0xCB, 0x65, + 0x4E, 0xF3, 0x2A, 0x29, 0x0B, 0x22, 0x70, 0xDD, 0xAF, 0x94, 0x35, 0x10, + 0xED, 0xC6, 0xC0, 0x88, 0xE7, 0x25, 0x99, 0x15, 0x3D, 0xA5, 0xF4, 0x0E, + 0x1E, 0xC7, 0xEF, 0x30, 0x67, 0x60, 0x25, 0xF0, 0x75, 0x5B, 0xB5, 0xBA, + 0x57, 0x4E, 0x85, 0x85, 0x44, 0x8B, 0x9A, 0x85, 0x84, 0x58, 0xB3, 0x3F, + 0x00, 0x00, 0x5A, 0xE4, 0xBD, 0x56, 0x9C, 0x02, 0x33, 0x31, 0x55, 0xB3, + 0xC3, 0x34, 0x0C, 0x01, 0x4F, 0x73, 0xAA, 0xFB, 0x08, 0xAA, 0xBA, 0x1F, + 0xC3, 0x61, 0x0C, 0x6B, 0x96, 0x31, 0xF2, 0xFD, 0x3E, 0x3E, 0x1C, 0xA6, + 0xBB, 0xC3, 0x38, 0x0E, 0x1C, 0x98, 0x08, 0xE1, 0x30, 0x45, 0xF7, 0x9D, + 0x3D, 0xDC, 0xED, 0xBE, 0x78, 0x77, 0xF8, 0xFD, 0x77, 0xCF, 0x4F, 0xE7, + 0xF5, 0xB4, 0x4A, 0xA5, 0xB4, 0x1A, 0xA5, 0xEA, 0xB4, 0xF1, 0x8A, 0x86, + 0x10, 0xAF, 0xA4, 0xE4, 0x6B, 0x3D, 0xA2, 0x89, 0x01, 0x03, 0x58, 0xB2, + 0x8A, 0x02, 0x11, 0x1C, 0xA7, 0x30, 0x04, 0xFA, 0x7C, 0x5E, 0x45, 0x00, + 0xDE, 0x42, 0xB1, 0x37, 0x7F, 0xA8, 0x5E, 0x67, 0x54, 0xB5, 0x77, 0x87, + 0xF8, 0xB3, 0x2F, 0xEF, 0xC6, 0xC1, 0x13, 0x24, 0xC3, 0x34, 0x21, 0x22, + 0xF5, 0x61, 0x01, 0x37, 0xCF, 0xC6, 0xF9, 0xF5, 0x5F, 0x67, 0x50, 0x57, + 0xB8, 0xB8, 0x7A, 0xAC, 0xA0, 0x7A, 0xD0, 0x5A, 0x7C, 0xA9, 0xB5, 0xD4, + 0x91, 0xEA, 0xAB, 0xED, 0x47, 0xB5, 0x31, 0xBF, 0x6A, 0xE7, 0xD2, 0xBC, + 0x52, 0x79, 0x9A, 0x2E, 0xC6, 0x44, 0xA5, 0x23, 0x02, 0x30, 0xCD, 0xB9, + 0x4B, 0x12, 0xF8, 0x91, 0x61, 0xBF, 0x5E, 0x99, 0x37, 0x19, 0xB8, 0x43, + 0x9F, 0xC2, 0xCC, 0x45, 0x1B, 0xDB, 0x30, 0x60, 0x3B, 0xE7, 0xBD, 0x06, + 0xBE, 0x2B, 0xD3, 0xAC, 0x6F, 0xB0, 0x3E, 0x7E, 0xB8, 0xE7, 0x86, 0x2A, + 0x60, 0xA7, 0xE2, 0xF5, 0x2C, 0x66, 0x1D, 0x46, 0xD4, 0xFE, 0xAA, 0x16, + 0xE2, 0xDD, 0x12, 0x10, 0xD0, 0x76, 0xF8, 0xEE, 0xE6, 0x3F, 0x36, 0x63, + 0xAD, 0x8D, 0xA8, 0x7C, 0xBF, 0x7E, 0x8E, 0xD8, 0xA2, 0xCC, 0x60, 0x8B, + 0x30, 0xEC, 0xE1, 0xE6, 0x66, 0xFC, 0x08, 0x25, 0x76, 0xCF, 0xE5, 0x4B, + 0x49, 0x06, 0x54, 0x75, 0x26, 0x6A, 0x7B, 0x11, 0x23, 0x11, 0x31, 0x02, + 0x84, 0x50, 0x12, 0x4C, 0x8B, 0x0C, 0xE8, 0x65, 0x71, 0x7D, 0x7F, 0x0B, + 0x06, 0x36, 0x43, 0x24, 0xC3, 0xE2, 0x70, 0x28, 0xC7, 0xCF, 0x95, 0x3F, + 0x0A, 0x05, 0x3A, 0x08, 0xAA, 0xA8, 0x7A, 0x80, 0x14, 0x06, 0x06, 0x20, + 0x46, 0x22, 0x0A, 0x4C, 0x43, 0xE4, 0xE8, 0x90, 0x59, 0x08, 0xD0, 0x7C, + 0x10, 0x66, 0x40, 0x88, 0x6A, 0xBA, 0x2C, 0xC9, 0xCC, 0x86, 0x18, 0x00, + 0x80, 0x70, 0x1D, 0xC6, 0xE1, 0x66, 0xA1, 0xFB, 0x9F, 0xFB, 0x2D, 0xEC, + 0x68, 0xAE, 0xFD, 0xB1, 0x1C, 0x29, 0x98, 0xD9, 0x9A, 0xA4, 0x44, 0xC1, + 0x22, 0x66, 0xD1, 0x2C, 0xB2, 0x26, 0x51, 0x35, 0x24, 0x1A, 0x62, 0x18, + 0x62, 0x08, 0xCC, 0x6B, 0xCA, 0x4B, 0x12, 0xE7, 0x58, 0x77, 0xE0, 0x9A, + 0x29, 0xF8, 0x1A, 0xE2, 0x96, 0x2F, 0xE6, 0x1E, 0x64, 0xF0, 0xC5, 0x6E, + 0xB1, 0x06, 0x9B, 0x02, 0xE7, 0x3F, 0xD6, 0xA4, 0xC1, 0xBA, 0x35, 0xAE, + 0x98, 0xC7, 0x40, 0x00, 0x10, 0x03, 0x99, 0xC1, 0x61, 0x8A, 0x6B, 0xD6, + 0xE7, 0xCB, 0x8A, 0x48, 0x1E, 0x76, 0xBC, 0x1F, 0xC3, 0xBB, 0xE3, 0x2E, + 0x65, 0xFD, 0xE9, 0x87, 0xC3, 0xFD, 0x61, 0xBC, 0x2C, 0xF9, 0xB2, 0xE6, + 0xBF, 0xFD, 0xC3, 0xE3, 0x9C, 0xC4, 0xD4, 0x3E, 0xDE, 0x8D, 0xBF, 0xF8, + 0xEA, 0xE1, 0x3C, 0xAF, 0x66, 0x96, 0x3C, 0x28, 0x3F, 0x06, 0xA6, 0xE4, + 0x41, 0x24, 0x00, 0xF0, 0xFE, 0x7E, 0xFF, 0x93, 0x2F, 0xEE, 0xFD, 0x58, + 0x6D, 0x3F, 0xC5, 0xDF, 0x7E, 0xF3, 0x74, 0xFA, 0xD3, 0x53, 0x4B, 0x07, + 0xAD, 0x8E, 0x36, 0x37, 0xB8, 0x8A, 0x22, 0xB2, 0x91, 0x69, 0x23, 0xA3, + 0xEA, 0x9A, 0x69, 0x9C, 0xD9, 0xAD, 0x79, 0xB5, 0xB6, 0x00, 0xB2, 0x18, + 0x88, 0x7D, 0xCA, 0x2B, 0x23, 0xE4, 0xAB, 0xA3, 0x36, 0x9F, 0x70, 0x61, + 0x81, 0x6B, 0x7D, 0xB4, 0xB1, 0x06, 0x20, 0x00, 0x33, 0x25, 0x93, 0x8F, + 0x0F, 0xBB, 0xFB, 0xBB, 0x9D, 0xA8, 0x79, 0xAA, 0x6F, 0xCE, 0x19, 0x51, + 0x1B, 0x18, 0xBD, 0x7E, 0x9A, 0x06, 0xD1, 0x3C, 0xE2, 0xAF, 0x11, 0xC1, + 0x2D, 0xC0, 0x16, 0x0C, 0x05, 0x15, 0xC8, 0x1A, 0x1D, 0xF7, 0xAA, 0x4A, + 0x8F, 0x62, 0xE0, 0x31, 0x28, 0xF5, 0x5B, 0x9D, 0xD5, 0x09, 0x58, 0x33, + 0x5A, 0x3C, 0x51, 0x86, 0x39, 0x00, 0x82, 0xE4, 0x9C, 0x52, 0x0D, 0xD3, + 0xB9, 0x1E, 0xE1, 0xAB, 0x81, 0xBF, 0x6D, 0xD9, 0xB7, 0xF1, 0x34, 0x04, + 0x69, 0x03, 0x83, 0xA2, 0xCD, 0x97, 0x0F, 0xAB, 0xB3, 0x1D, 0xB5, 0x7A, + 0xFF, 0x1A, 0x16, 0xF4, 0x3F, 0xF4, 0x0F, 0x55, 0x9B, 0x0C, 0xAA, 0xF0, + 0x70, 0x14, 0x6E, 0x46, 0x43, 0xEF, 0x8C, 0xEE, 0xB5, 0xB3, 0xD6, 0xBD, + 0x93, 0xB1, 0xB9, 0x30, 0xF7, 0x00, 0x8A, 0xF2, 0x59, 0xD3, 0xAF, 0x01, + 0x5E, 0xCD, 0xF7, 0x0A, 0x95, 0xCA, 0xC1, 0x3F, 0x3A, 0xBE, 0x28, 0x98, + 0xD6, 0x1E, 0x7A, 0x14, 0xDB, 0x16, 0x04, 0x50, 0x55, 0x91, 0x10, 0x80, + 0xAA, 0x66, 0x6D, 0xC5, 0xE9, 0x0D, 0xE6, 0xAA, 0x8F, 0xBF, 0xE9, 0x0B, + 0xC2, 0xC4, 0x21, 0xF0, 0x10, 0x03, 0x31, 0x22, 0x62, 0x55, 0xC7, 0xA0, + 0xF7, 0x75, 0x6C, 0x00, 0x62, 0x6D, 0x77, 0x3C, 0x3A, 0xD7, 0x88, 0xC8, + 0x8A, 0x8D, 0x58, 0xE5, 0x3D, 0xA0, 0xE7, 0xCB, 0xAB, 0x39, 0x96, 0xC1, + 0xBC, 0x26, 0x00, 0x20, 0xE6, 0xE0, 0xE9, 0x93, 0x81, 0x39, 0x78, 0xF6, + 0x80, 0x19, 0x11, 0xC5, 0x10, 0xD0, 0x03, 0x73, 0x91, 0xDC, 0xB3, 0x40, + 0x8C, 0x81, 0xD8, 0xCC, 0x2E, 0x97, 0x65, 0x59, 0x92, 0x0F, 0x83, 0x5F, + 0x85, 0xC5, 0xBE, 0x5E, 0xB5, 0x7E, 0xED, 0xAA, 0x23, 0xA3, 0x0C, 0xCB, + 0x6D, 0x10, 0x35, 0x10, 0x55, 0xDF, 0x87, 0x94, 0xF3, 0x92, 0x64, 0x1A, + 0xE2, 0x71, 0x3F, 0xAD, 0x29, 0x2F, 0xAB, 0xFB, 0x92, 0x32, 0x82, 0x85, + 0x40, 0x4B, 0xCA, 0x29, 0xE9, 0x65, 0xCD, 0x4E, 0x2A, 0x4C, 0x3E, 0x5A, + 0x8F, 0xFC, 0xAE, 0xEA, 0x71, 0x51, 0x92, 0x9C, 0xA0, 0xAE, 0xC4, 0x4B, + 0x33, 0xD1, 0xAA, 0x8D, 0xE2, 0xC6, 0x0E, 0x18, 0xD8, 0xFD, 0x7E, 0xF8, + 0xEA, 0xDD, 0xFE, 0xB8, 0x8B, 0xBB, 0x29, 0x46, 0xA6, 0x18, 0x3C, 0x69, + 0x01, 0x3E, 0x3D, 0x5E, 0x96, 0x35, 0x3D, 0x9E, 0x16, 0x66, 0xFE, 0xF2, + 0x61, 0xB7, 0x1B, 0xA3, 0x19, 0x88, 0xEA, 0x6E, 0x8A, 0x1F, 0xDF, 0x1D, + 0x54, 0xF5, 0xFD, 0xDD, 0x74, 0x9A, 0xF3, 0xB2, 0x26, 0x02, 0x98, 0xC6, + 0xF0, 0x70, 0x37, 0x95, 0xEC, 0x7D, 0x40, 0x24, 0x3A, 0xEE, 0xC7, 0x21, + 0x9E, 0xBF, 0x7D, 0x3C, 0xC7, 0x39, 0x3D, 0xDC, 0xED, 0x86, 0x18, 0x92, + 0x08, 0x00, 0xC4, 0xC8, 0xEE, 0xD9, 0xC8, 0x62, 0xD4, 0xD0, 0xB4, 0xB0, + 0x93, 0xEF, 0x56, 0xDD, 0xCD, 0x6B, 0xBE, 0x82, 0x62, 0x79, 0xBD, 0xED, + 0x6A, 0x81, 0x26, 0xA2, 0xAB, 0x64, 0xCD, 0xE5, 0x18, 0xDD, 0xDF, 0x04, + 0xA8, 0x86, 0x76, 0x51, 0xDF, 0x1C, 0x36, 0x37, 0xE9, 0x0E, 0x88, 0x30, + 0x04, 0xDA, 0x8F, 0x61, 0xCD, 0xCA, 0xC8, 0x53, 0x60, 0x44, 0x0C, 0xCC, + 0xBE, 0x57, 0xFF, 0x4D, 0xA5, 0xE6, 0x46, 0xFB, 0xF0, 0x2D, 0xB8, 0x21, + 0x8F, 0x26, 0x7E, 0x1B, 0x3D, 0xC0, 0x2B, 0xC0, 0xEA, 0xB1, 0xA0, 0x9D, + 0x78, 0xB6, 0xD7, 0x5C, 0x25, 0x64, 0x26, 0x62, 0x2A, 0x02, 0xAC, 0x70, + 0x4E, 0x70, 0xDD, 0xC6, 0xFD, 0x15, 0x39, 0x4B, 0x8D, 0x7D, 0xBD, 0xF2, + 0x81, 0xF4, 0xFF, 0xD6, 0x10, 0x87, 0xCD, 0x4B, 0x50, 0x36, 0x02, 0x3D, + 0x03, 0x08, 0xDA, 0xEA, 0xB4, 0x59, 0x34, 0x6C, 0xAA, 0xB1, 0xA2, 0x75, + 0x71, 0x1D, 0x7D, 0x6A, 0x00, 0xC4, 0xCD, 0xB7, 0x7A, 0x5C, 0xA6, 0xF2, + 0x54, 0xE3, 0x01, 0x4B, 0x8A, 0x4B, 0xF9, 0x9B, 0x03, 0x16, 0x80, 0xE7, + 0x33, 0xDC, 0x7C, 0xDD, 0x79, 0xBD, 0x39, 0x18, 0x9D, 0x7A, 0x7D, 0xF7, + 0xAE, 0x03, 0x2A, 0xAB, 0x38, 0xB7, 0x8D, 0xFB, 0x8A, 0xFA, 0x50, 0x57, + 0xEC, 0xCA, 0xD7, 0x68, 0x5E, 0x05, 0xA4, 0xF0, 0x48, 0x5B, 0xFF, 0xAB, + 0x89, 0xB4, 0xB3, 0x26, 0x05, 0xC3, 0x42, 0x0D, 0x66, 0xA8, 0x02, 0x66, + 0x9E, 0x10, 0x74, 0x05, 0x9A, 0x3E, 0x3C, 0x66, 0x42, 0x42, 0x66, 0xBE, + 0x3A, 0x67, 0x70, 0x9B, 0xCE, 0x0C, 0x3B, 0xF4, 0x70, 0x7E, 0xBD, 0xD6, + 0x86, 0x80, 0xB0, 0xC5, 0xEE, 0x15, 0xE2, 0xC1, 0x62, 0x2F, 0x22, 0x07, + 0x34, 0x00, 0x66, 0x51, 0x35, 0x30, 0x0B, 0xFE, 0x07, 0x55, 0x13, 0x34, + 0x52, 0x9C, 0x86, 0x48, 0xA5, 0xDA, 0x06, 0x06, 0xF0, 0xB2, 0x3C, 0x2D, + 0x07, 0x18, 0xA7, 0x71, 0xD8, 0x4D, 0xA3, 0x9F, 0x5D, 0xFA, 0x6B, 0x6F, + 0xA2, 0xD8, 0xCD, 0x7C, 0x6E, 0xA8, 0xDC, 0xAC, 0x54, 0x1D, 0x80, 0x72, + 0xFA, 0x00, 0x81, 0xD9, 0x41, 0x9A, 0x88, 0x76, 0xD3, 0x18, 0x43, 0x89, + 0x6C, 0xCE, 0x84, 0x43, 0xE4, 0xC0, 0xB4, 0xA4, 0x6C, 0x49, 0xC7, 0x18, + 0x34, 0xD8, 0x69, 0x4E, 0x52, 0x63, 0x0A, 0xAC, 0x1E, 0x5C, 0x7A, 0xDB, + 0xE8, 0x5B, 0xED, 0x90, 0xEF, 0x63, 0x2E, 0x06, 0x97, 0xD7, 0xED, 0xE9, + 0x85, 0xB3, 0xD5, 0x0C, 0x7B, 0x9B, 0x06, 0xFE, 0xE5, 0xD7, 0xF7, 0x3F, + 0xFF, 0xEA, 0x3E, 0x04, 0x16, 0x55, 0x33, 0x08, 0x81, 0x01, 0x2C, 0x25, + 0x19, 0x23, 0x01, 0x84, 0x9F, 0x8C, 0xF1, 0x87, 0xE7, 0x8B, 0xAA, 0x66, + 0xD1, 0xDD, 0x6E, 0xF0, 0x58, 0xF2, 0x65, 0x4D, 0xCC, 0xF4, 0xE1, 0x61, + 0xFF, 0xE5, 0x7B, 0x5C, 0x96, 0xFC, 0xBB, 0x6F, 0x3E, 0x7F, 0xFF, 0xF9, + 0xF4, 0xEE, 0xB8, 0x13, 0x53, 0x4F, 0x95, 0x67, 0x53, 0x55, 0xFD, 0xF2, + 0xDD, 0x01, 0x11, 0x3F, 0xBF, 0xCC, 0xE7, 0x79, 0x05, 0x30, 0x53, 0x7B, + 0x39, 0xCD, 0x44, 0xF4, 0xE1, 0x7E, 0x1F, 0x88, 0xBF, 0x7D, 0xBA, 0x9C, + 0x2E, 0xE9, 0x92, 0x04, 0x3B, 0xE3, 0x4F, 0x0D, 0x3C, 0x10, 0xDA, 0xB6, + 0x4C, 0xED, 0x37, 0x3C, 0x5C, 0xED, 0xF3, 0xC6, 0x5A, 0x95, 0xBD, 0xC0, + 0x75, 0x85, 0x2D, 0x25, 0x1A, 0xCA, 0x69, 0x9F, 0x13, 0x62, 0x07, 0x46, + 0xD6, 0x94, 0x76, 0x22, 0x04, 0x83, 0x69, 0xE0, 0x87, 0xFD, 0x30, 0x46, + 0xFE, 0xEE, 0xE9, 0x62, 0x08, 0x9F, 0x9E, 0xCE, 0x5F, 0x9E, 0x8F, 0xC7, + 0xC3, 0xCE, 0x8A, 0x5F, 0xEC, 0x47, 0x75, 0xB1, 0x1B, 0x89, 0x05, 0x84, + 0x08, 0xE4, 0xF4, 0x5A, 0xB8, 0xB4, 0xF6, 0xEB, 0x1E, 0x86, 0xDE, 0x3E, + 0xFD, 0x31, 0x67, 0x6B, 0x99, 0x54, 0xC7, 0x00, 0xED, 0xB5, 0xD2, 0x8F, + 0x47, 0xC0, 0x18, 0x00, 0x6A, 0xD5, 0x5F, 0xD5, 0xCB, 0x44, 0x49, 0xDE, + 0x4E, 0xFD, 0x7A, 0x34, 0xE9, 0xE1, 0xAC, 0xFF, 0xC1, 0xCC, 0x00, 0x89, + 0x8A, 0x3E, 0x55, 0x60, 0xA9, 0xC9, 0x96, 0x9B, 0x46, 0xDE, 0x52, 0x87, + 0xAD, 0xA8, 0xB2, 0x15, 0x26, 0xEC, 0xAD, 0x2D, 0x6B, 0x03, 0x70, 0x31, + 0x59, 0x31, 0x10, 0x91, 0x88, 0x89, 0x55, 0xB4, 0x5F, 0x96, 0x26, 0x86, + 0x6F, 0xF3, 0x22, 0xB0, 0xED, 0xB0, 0xE7, 0x33, 0x6C, 0x31, 0xE1, 0x1D, + 0xAF, 0xB5, 0xA1, 0x37, 0x1F, 0x0A, 0x78, 0x14, 0x5E, 0x61, 0x13, 0xAA, + 0xF9, 0x06, 0xB5, 0x97, 0x42, 0x2B, 0x1E, 0xAA, 0xDD, 0x68, 0xA9, 0x39, + 0x2C, 0xAE, 0x14, 0x14, 0x03, 0x03, 0xDD, 0xFA, 0xDA, 0xA6, 0x59, 0xD3, + 0xA0, 0x5D, 0x4F, 0x06, 0x51, 0x15, 0x11, 0x3F, 0x2A, 0x84, 0x0D, 0x88, + 0xA1, 0x69, 0x13, 0x45, 0x9F, 0x80, 0xEB, 0x5E, 0x10, 0xDC, 0x67, 0xE4, + 0xE7, 0x16, 0x08, 0xD8, 0x8A, 0x41, 0xF4, 0x1B, 0x2A, 0xA6, 0x88, 0x10, + 0x98, 0x56, 0x55, 0x11, 0x0D, 0x0D, 0xE4, 0x54, 0xCD, 0x2B, 0x40, 0x4D, + 0xE3, 0xB0, 0xDB, 0x0D, 0x88, 0x14, 0xDD, 0xC1, 0x53, 0xF7, 0xA7, 0x84, + 0xE4, 0x94, 0xA5, 0x2C, 0x8B, 0xF6, 0x0F, 0xAB, 0x60, 0xAF, 0x7E, 0x28, + 0x78, 0x9F, 0x55, 0xD7, 0x35, 0x01, 0xA0, 0xAA, 0x02, 0x82, 0xAA, 0xAD, + 0x49, 0xCA, 0xF6, 0x54, 0x5C, 0x57, 0xB5, 0xCB, 0x9A, 0x53, 0x2E, 0xF1, + 0x24, 0x5A, 0x77, 0x64, 0x1C, 0x82, 0x2E, 0x39, 0x89, 0x33, 0x7F, 0x23, + 0xAF, 0x32, 0xD3, 0xB6, 0xD4, 0x8D, 0x57, 0xCB, 0x90, 0x0D, 0x44, 0x9B, + 0xD8, 0x05, 0x46, 0x54, 0x83, 0x21, 0x10, 0x21, 0xFC, 0xE4, 0xC3, 0xF1, + 0xE7, 0x5F, 0xDF, 0x87, 0x10, 0xCA, 0x01, 0x04, 0x33, 0x00, 0x88, 0x68, + 0xCE, 0xC2, 0x4C, 0x77, 0x43, 0x1C, 0x22, 0x1F, 0xF6, 0xC3, 0x9A, 0x64, + 0xF4, 0xCC, 0x2C, 0xDA, 0xA8, 0x79, 0x5E, 0xD2, 0xBA, 0x66, 0x00, 0xFC, + 0xE2, 0xE1, 0xB8, 0xA6, 0xE4, 0x11, 0x4C, 0xDF, 0x3E, 0x3E, 0xEF, 0xA7, + 0xE1, 0xC3, 0xFD, 0x3E, 0x25, 0xC9, 0xA2, 0x5F, 0xBD, 0x3B, 0xFC, 0xF4, + 0xE3, 0x5D, 0x8C, 0x94, 0xB2, 0xCC, 0x4B, 0x1A, 0x86, 0x10, 0x43, 0x38, + 0x32, 0xBD, 0xBB, 0xDB, 0xDD, 0xED, 0x87, 0xE7, 0xF3, 0xF2, 0x78, 0x5A, + 0x5F, 0xE6, 0xF4, 0x32, 0x27, 0x57, 0x0D, 0xDC, 0x51, 0x99, 0xB5, 0x2E, + 0xD7, 0x2B, 0x03, 0x10, 0x7B, 0xD5, 0xBC, 0x6C, 0xB0, 0x2F, 0xDE, 0xC6, + 0x57, 0x95, 0x04, 0x4B, 0xCC, 0x2D, 0x56, 0x24, 0x81, 0xE2, 0x82, 0xE9, + 0xB4, 0x0F, 0x40, 0x26, 0x0C, 0x8C, 0x29, 0xEB, 0xC0, 0x24, 0x6A, 0x4F, + 0xA7, 0xC5, 0xD4, 0x54, 0x74, 0x49, 0xFA, 0xF4, 0x72, 0x19, 0x86, 0x10, + 0x98, 0x1B, 0xF7, 0xC2, 0x8F, 0x3C, 0xAF, 0xD4, 0x10, 0xAB, 0x3C, 0xE3, + 0xC8, 0xDF, 0x81, 0xB2, 0x6E, 0x0B, 0x08, 0x1D, 0x7B, 0xE3, 0xB5, 0x0A, + 0x80, 0x55, 0x03, 0xED, 0xC9, 0xD7, 0x7F, 0xF1, 0x9D, 0x52, 0xB5, 0x66, + 0x6A, 0x03, 0x02, 0x80, 0x80, 0x81, 0xEA, 0x56, 0x84, 0x0B, 0xAE, 0x2C, + 0x50, 0xEC, 0x53, 0xB2, 0x6B, 0xE3, 0x9B, 0x00, 0x41, 0x40, 0xDB, 0x0C, + 0xBB, 0xEA, 0xDC, 0xAB, 0x86, 0xB9, 0xEB, 0x6E, 0x1E, 0x4B, 0xD1, 0x1D, + 0xDC, 0x6F, 0x14, 0xDE, 0x8D, 0x0E, 0xD5, 0xAB, 0xA8, 0x5C, 0xC9, 0x0C, + 0x68, 0xDD, 0x61, 0x2D, 0xDF, 0xD5, 0x00, 0xD3, 0x97, 0x86, 0x98, 0x54, + 0x44, 0x45, 0x0A, 0x1B, 0x20, 0x32, 0xF1, 0xDB, 0x47, 0xA2, 0x6F, 0x6D, + 0xC2, 0x15, 0xA3, 0x35, 0x89, 0x62, 0x1E, 0x32, 0x52, 0x16, 0xA9, 0xAD, + 0xED, 0xAB, 0x8C, 0x02, 0x57, 0xE3, 0xEA, 0x59, 0x0A, 0x54, 0xDA, 0xC1, + 0xCA, 0xE4, 0x58, 0x8A, 0x74, 0x5D, 0x49, 0xDC, 0xCE, 0xF9, 0xB8, 0xB1, + 0x37, 0x00, 0x20, 0x66, 0x11, 0xFF, 0x1E, 0x0B, 0x79, 0x34, 0x46, 0x49, + 0xFF, 0x68, 0x06, 0x82, 0xA7, 0x94, 0x99, 0x82, 0x12, 0x52, 0xB3, 0xA7, + 0xAA, 0x55, 0x5C, 0xC6, 0x09, 0x00, 0x48, 0x66, 0x80, 0xAD, 0x1A, 0x00, + 0xFA, 0x01, 0x82, 0x6F, 0xB1, 0x88, 0x65, 0xB1, 0x9C, 0x55, 0xD4, 0x3C, + 0xD7, 0x12, 0x87, 0x48, 0xC7, 0xFD, 0x18, 0x42, 0xB1, 0x69, 0x63, 0x0C, + 0x8D, 0xCA, 0xB7, 0xD5, 0x2B, 0x5A, 0x6D, 0x1F, 0xF1, 0xFE, 0x86, 0xC2, + 0xD5, 0x7E, 0xBD, 0xF9, 0xD9, 0x29, 0xCF, 0x01, 0x42, 0xB4, 0x14, 0x4A, + 0x34, 0x05, 0x35, 0x4B, 0x59, 0xD6, 0xEC, 0x85, 0x11, 0xCD, 0x00, 0x54, + 0x41, 0xFC, 0x30, 0x4B, 0x2C, 0x5D, 0xC7, 0x73, 0x12, 0xFA, 0x59, 0xA2, + 0x11, 0x22, 0xF5, 0x27, 0x79, 0x3D, 0x23, 0xB5, 0x9D, 0x28, 0x27, 0x3B, + 0x2E, 0x76, 0x6C, 0x8A, 0x1C, 0x03, 0x65, 0xD1, 0x35, 0x6B, 0x16, 0x65, + 0xA2, 0x87, 0xFD, 0x70, 0xB7, 0x1B, 0xBE, 0xFC, 0x70, 0x0C, 0x21, 0xF8, + 0x6E, 0x90, 0x4B, 0x65, 0x00, 0x55, 0x9B, 0x97, 0x84, 0x88, 0xD3, 0xC8, + 0x44, 0xB8, 0xDF, 0x0D, 0x43, 0xD4, 0xD3, 0x79, 0x21, 0x26, 0x0F, 0x99, + 0x89, 0x81, 0x9F, 0x4F, 0xF3, 0xA7, 0xC7, 0x33, 0x13, 0x85, 0x40, 0xBB, + 0xB1, 0x84, 0x8F, 0x4C, 0x03, 0x7F, 0xF9, 0xEE, 0xE0, 0xC5, 0x73, 0xA6, + 0x31, 0xBA, 0xFB, 0xDA, 0x2B, 0xC9, 0x9D, 0xCE, 0x6B, 0xCA, 0xC2, 0xE4, + 0x0E, 0x69, 0x00, 0xC0, 0x87, 0xE3, 0x44, 0x84, 0x31, 0xD0, 0xFB, 0xBB, + 0xF1, 0xB7, 0xDF, 0x3E, 0x9F, 0x57, 0x19, 0x03, 0xDF, 0xEF, 0x82, 0x01, + 0xCC, 0x49, 0x0A, 0x55, 0x11, 0x3E, 0x9D, 0x1D, 0xCF, 0xCB, 0x2E, 0x94, + 0x4D, 0x2E, 0x92, 0xCD, 0xFA, 0x7D, 0xEA, 0x01, 0xA2, 0xBD, 0xDC, 0x73, + 0x82, 0x57, 0x2A, 0xA1, 0x42, 0xDB, 0x4D, 0xFD, 0xD0, 0x9C, 0x11, 0x11, + 0x56, 0x91, 0x35, 0xCB, 0x9A, 0x65, 0xA8, 0xA7, 0x4B, 0xA7, 0xCB, 0x1A, + 0x1F, 0xCF, 0xEF, 0x1F, 0xF6, 0x56, 0xA3, 0xC0, 0x6E, 0x4E, 0x78, 0xFA, + 0x95, 0xEF, 0xFB, 0xD2, 0x8E, 0x93, 0x1D, 0x40, 0x37, 0x22, 0xAE, 0x6F, + 0x62, 0x3D, 0xA8, 0xDA, 0x5E, 0xEB, 0x6D, 0xB7, 0x32, 0xDC, 0x6A, 0xC1, + 0x75, 0x9F, 0xD2, 0x46, 0x5D, 0xD5, 0x12, 0xF2, 0xF9, 0xA8, 0xDD, 0xB4, + 0xDF, 0xAB, 0x7B, 0xB7, 0xB0, 0xD2, 0xB5, 0xD9, 0xAD, 0xDB, 0x46, 0xE3, + 0x56, 0x93, 0xBD, 0x2B, 0xF5, 0x2A, 0x21, 0x79, 0xFA, 0xFA, 0x8D, 0xFC, + 0xBE, 0x99, 0x3B, 0x00, 0x9A, 0xA1, 0x9F, 0x4B, 0x50, 0xD5, 0x15, 0x9D, + 0xD1, 0x9C, 0x2E, 0x25, 0x8B, 0x31, 0x11, 0x33, 0x02, 0x98, 0xA7, 0x08, + 0x95, 0xC1, 0x21, 0x78, 0xC1, 0x85, 0x7A, 0x30, 0xCA, 0x14, 0x4C, 0x3D, + 0xE7, 0xA9, 0xBA, 0xBD, 0xA0, 0xEA, 0x6B, 0x7A, 0xA5, 0x25, 0xF4, 0x0C, + 0x78, 0xAB, 0x20, 0x17, 0x0C, 0x2D, 0x01, 0x0D, 0x2D, 0x90, 0x00, 0xAB, + 0x73, 0xD9, 0x17, 0xD2, 0xE3, 0x27, 0xFC, 0xFC, 0xA2, 0xAE, 0x24, 0x56, + 0x5D, 0xB3, 0x90, 0xCA, 0x9B, 0x5B, 0xAF, 0x25, 0x11, 0x15, 0xDA, 0xF6, + 0x61, 0x55, 0x24, 0x55, 0x55, 0xA4, 0x94, 0xCF, 0x9B, 0xE7, 0x15, 0x11, + 0xA7, 0x69, 0x60, 0xCF, 0xEA, 0xF1, 0xD4, 0xA2, 0xC0, 0x60, 0x5C, 0xD1, + 0xDF, 0x33, 0xBE, 0x4B, 0xDB, 0xE5, 0x7F, 0xBE, 0x70, 0x35, 0xD0, 0x01, + 0xA0, 0x55, 0xF1, 0xB3, 0xEC, 0xE9, 0xFC, 0xA6, 0x06, 0x18, 0x00, 0x20, + 0x30, 0x7E, 0x78, 0x38, 0xDC, 0xDD, 0xED, 0xA9, 0x09, 0xEB, 0xBA, 0x1F, + 0xAF, 0x07, 0xFD, 0xFA, 0x93, 0x1F, 0x5B, 0xBB, 0x1B, 0xAD, 0xCD, 0x0C, + 0x72, 0x96, 0x94, 0x24, 0x65, 0x71, 0x77, 0xFE, 0x65, 0x4E, 0x59, 0x34, + 0x65, 0x75, 0x8D, 0xD4, 0x37, 0xCC, 0x0C, 0x44, 0x5D, 0x14, 0xA2, 0xAF, + 0x7D, 0x51, 0xF2, 0xCD, 0x00, 0x20, 0x9B, 0x7A, 0xF8, 0x03, 0xBB, 0x7B, + 0x6B, 0xE3, 0xE2, 0x9B, 0x03, 0x23, 0x84, 0x7A, 0xA2, 0x04, 0x60, 0x4C, + 0xC8, 0xC4, 0x3F, 0xFB, 0x78, 0xDC, 0x8D, 0xF1, 0xBB, 0xC7, 0xF3, 0x77, + 0x8F, 0x97, 0xC0, 0xF4, 0xB0, 0x1F, 0x0E, 0x53, 0x7C, 0xB8, 0x9B, 0xEE, + 0x0E, 0x63, 0x1B, 0x73, 0xCE, 0xE2, 0xC0, 0x37, 0xCF, 0x89, 0x99, 0x77, + 0xD3, 0x90, 0xB3, 0x40, 0x39, 0x11, 0x85, 0x21, 0x06, 0xA7, 0x74, 0x46, + 0x78, 0x7C, 0xB9, 0x7C, 0xF3, 0xFD, 0xB3, 0x2A, 0x0C, 0x91, 0x43, 0xA0, + 0x94, 0xC5, 0xD7, 0x6B, 0x45, 0xBC, 0x3B, 0x4C, 0x97, 0x79, 0x4D, 0x39, + 0x0F, 0x31, 0x4C, 0x31, 0xAC, 0x59, 0xD4, 0xCC, 0xE3, 0x9B, 0x99, 0x30, + 0x8B, 0x9E, 0xE7, 0xF5, 0x80, 0x23, 0x80, 0x89, 0xEA, 0x10, 0x79, 0x4D, + 0x34, 0x46, 0xFA, 0xC5, 0x17, 0x77, 0xDF, 0x3D, 0x5D, 0xC6, 0xC8, 0xD3, + 0x10, 0x00, 0xE0, 0x3D, 0xE1, 0x65, 0x4D, 0x81, 0x38, 0x06, 0x5A, 0xD3, + 0xF3, 0x49, 0xE5, 0x5A, 0xA8, 0x14, 0x31, 0x8A, 0x00, 0xA5, 0xAE, 0x8D, + 0x4B, 0x4D, 0xB8, 0x75, 0xA2, 0x95, 0x18, 0x06, 0xB3, 0xE6, 0x3B, 0x39, + 0x4C, 0x21, 0x8B, 0xAE, 0x09, 0xAA, 0x1D, 0x0A, 0x8D, 0xC1, 0x72, 0x76, + 0x87, 0x43, 0xA1, 0xA3, 0xAC, 0x6A, 0x66, 0x43, 0x0C, 0x39, 0x0B, 0x20, + 0x30, 0xB3, 0x67, 0x9B, 0x79, 0x58, 0x43, 0x37, 0x98, 0x2B, 0xF4, 0xB4, + 0x2A, 0x5D, 0xFB, 0x61, 0x74, 0x56, 0x43, 0x51, 0x8E, 0xB6, 0x98, 0xAF, + 0x0E, 0x62, 0xAE, 0x30, 0xA2, 0xB2, 0x3E, 0xBA, 0x2F, 0xB3, 0xCD, 0x88, + 0xF0, 0x3A, 0x98, 0xD1, 0x55, 0x81, 0x62, 0x31, 0x55, 0xFD, 0xA8, 0x6A, + 0x3F, 0xD4, 0xAC, 0xA8, 0x0D, 0xDC, 0x1D, 0x11, 0x8C, 0xB6, 0x0F, 0x01, + 0x6A, 0xAC, 0x8D, 0xD5, 0x3F, 0xBB, 0x9B, 0x09, 0x15, 0xB4, 0xF5, 0x4B, + 0x86, 0xCD, 0x4D, 0x53, 0x7A, 0xBC, 0x26, 0xF8, 0x32, 0x7D, 0xB7, 0xD3, + 0xA9, 0x1C, 0xA7, 0x58, 0x67, 0x1C, 0x82, 0xA7, 0xD6, 0x95, 0xC8, 0xEA, + 0xAE, 0x2C, 0x5A, 0x29, 0x0B, 0x65, 0xDA, 0xF4, 0x22, 0xD7, 0xAC, 0x40, + 0xCD, 0xC8, 0x4A, 0x7A, 0x5A, 0x57, 0xEC, 0xA4, 0x47, 0xAE, 0xD7, 0x70, + 0x56, 0x46, 0x02, 0x1B, 0x63, 0x76, 0x2B, 0xBA, 0x2D, 0xF2, 0xD6, 0x91, + 0x99, 0x9A, 0xB9, 0x1A, 0x55, 0x42, 0x15, 0x09, 0xA1, 0x46, 0x08, 0x6F, + 0xDB, 0x57, 0x5A, 0xC3, 0xAA, 0xEE, 0x17, 0x14, 0xB3, 0x72, 0x34, 0xE8, + 0x28, 0xB3, 0x95, 0x09, 0x40, 0x64, 0xAC, 0x55, 0x1E, 0x53, 0x92, 0x9C, + 0x44, 0xEB, 0xF9, 0xB5, 0x7B, 0x5D, 0x89, 0x48, 0xD5, 0x10, 0xC5, 0xBD, + 0xF3, 0x88, 0x68, 0xA8, 0x4D, 0xFE, 0x99, 0x3B, 0x09, 0xAB, 0xC6, 0x58, + 0xA7, 0x00, 0x00, 0xA0, 0x0A, 0x2A, 0x25, 0x3F, 0x29, 0x06, 0x52, 0x83, + 0x30, 0xC4, 0xF0, 0xD5, 0xC7, 0xFB, 0x62, 0xC8, 0x49, 0xF9, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xFD, 0x7E, 0x44, 0xBC, 0xF2, 0x6E, + 0xF6, 0x44, 0x89, 0xAF, 0xA1, 0xF8, 0xD5, 0xD3, 0x90, 0xBE, 0x2D, 0xE8, + 0xCD, 0xB7, 0x10, 0x01, 0x91, 0x0C, 0xF2, 0x9A, 0x73, 0x4A, 0x92, 0xB3, + 0xA6, 0xAC, 0x73, 0x4A, 0xAA, 0x66, 0xEE, 0xDE, 0x6E, 0xCE, 0xCD, 0xC2, + 0x75, 0xE5, 0x7F, 0xD8, 0x31, 0x70, 0x83, 0xDA, 0xBA, 0x9D, 0x8A, 0x35, + 0xCB, 0xC7, 0x6A, 0x64, 0xAB, 0x1F, 0xE5, 0x50, 0xD1, 0x52, 0x01, 0x10, + 0x0E, 0x53, 0xFC, 0x70, 0xB7, 0x7B, 0x7F, 0xBF, 0x9B, 0xD7, 0x3C, 0x0D, + 0xFC, 0xD3, 0x0F, 0x07, 0x33, 0xBB, 0xDB, 0x8F, 0xEF, 0xEE, 0xF7, 0x43, + 0x64, 0x04, 0x70, 0xAF, 0x70, 0x4A, 0x92, 0x72, 0x39, 0x8E, 0x00, 0xF0, + 0x55, 0xD6, 0x2C, 0x72, 0x59, 0x64, 0x88, 0xBC, 0xDF, 0x8D, 0xE0, 0x09, + 0x55, 0x09, 0x5E, 0xCE, 0xCB, 0x9F, 0x3E, 0xBD, 0x98, 0xC1, 0x71, 0x37, + 0xDC, 0x1D, 0x46, 0x04, 0x78, 0x3E, 0x2F, 0x43, 0x0C, 0x44, 0x88, 0x24, + 0xB8, 0x66, 0x27, 0x38, 0x51, 0x13, 0xD1, 0x94, 0x4A, 0x28, 0x97, 0xA7, + 0x8B, 0x7A, 0x45, 0x18, 0x00, 0x18, 0x63, 0x58, 0xD6, 0x3C, 0xAF, 0x19, + 0x00, 0x54, 0x2D, 0x46, 0xFA, 0xFA, 0xDD, 0x5E, 0xCC, 0xEE, 0x76, 0xE3, + 0x38, 0x04, 0x35, 0xFB, 0xF6, 0x87, 0x97, 0x18, 0x78, 0xCD, 0x3A, 0x27, + 0xA9, 0xE7, 0x62, 0x55, 0x4E, 0x42, 0x71, 0x3B, 0x05, 0x42, 0x83, 0x32, + 0x79, 0xC4, 0x92, 0x2E, 0xEB, 0xB2, 0xDD, 0x4A, 0x2A, 0x78, 0x01, 0x04, + 0x55, 0x33, 0xB0, 0x31, 0xD0, 0x87, 0xE3, 0xF4, 0xE9, 0x79, 0x36, 0x16, + 0x0F, 0xF0, 0x2A, 0x47, 0xE7, 0x1E, 0x6F, 0x44, 0xF0, 0x7E, 0x37, 0x00, + 0xD8, 0xD3, 0x79, 0xCD, 0x6A, 0x94, 0xF5, 0xB2, 0xE4, 0x18, 0x39, 0xE5, + 0x12, 0xEC, 0xE3, 0x16, 0x56, 0xCE, 0xF9, 0xCD, 0xB3, 0xCB, 0x1E, 0xCB, + 0xD0, 0xC3, 0x5C, 0x41, 0x99, 0x59, 0xB7, 0xE4, 0x84, 0x1A, 0x81, 0x85, + 0xC5, 0x58, 0xBB, 0x89, 0x8D, 0xDA, 0x78, 0x12, 0x00, 0x4D, 0x19, 0xA8, + 0xB8, 0xF7, 0xA0, 0x80, 0x5A, 0xC3, 0xC7, 0x46, 0x99, 0x3D, 0x6B, 0x01, + 0x01, 0xE8, 0xAD, 0x33, 0xE5, 0x8D, 0x87, 0x8A, 0xEB, 0xBA, 0xBD, 0x63, + 0xCD, 0xD2, 0x2E, 0xC4, 0x54, 0x49, 0xDA, 0x00, 0xC9, 0x4D, 0x05, 0xCF, + 0x7F, 0x52, 0x44, 0xFE, 0x31, 0xEC, 0xB8, 0x42, 0xB4, 0x2B, 0xF7, 0x66, + 0x87, 0x98, 0x45, 0xBF, 0x44, 0x0F, 0x7C, 0xC5, 0x66, 0xDC, 0xA1, 0x96, + 0x9A, 0x39, 0x45, 0xD1, 0xF6, 0x8C, 0x45, 0x77, 0x24, 0x29, 0x02, 0x75, + 0x3E, 0xA9, 0x37, 0x7A, 0x2F, 0x60, 0xF4, 0x2A, 0xB3, 0x18, 0x0A, 0x1E, + 0x17, 0xCE, 0xEE, 0xDF, 0xF7, 0xBF, 0x79, 0x39, 0xD7, 0x3E, 0x2B, 0xC0, + 0xCC, 0xC8, 0x8F, 0x3A, 0xB0, 0xD2, 0x9A, 0x6D, 0x23, 0x6D, 0x13, 0xAD, + 0xE0, 0xB5, 0x1D, 0x32, 0xB4, 0xC6, 0x3D, 0xB6, 0xC6, 0x6D, 0xC9, 0x05, + 0x40, 0xA1, 0xD4, 0x34, 0xF1, 0x1C, 0x34, 0x55, 0x25, 0xCA, 0xE3, 0x34, + 0xC4, 0x18, 0xBC, 0x3C, 0x92, 0x87, 0x98, 0xA9, 0x42, 0x8C, 0x2C, 0x22, + 0x49, 0xB4, 0x78, 0x70, 0x00, 0x8A, 0xA7, 0xB0, 0x13, 0x6D, 0x5E, 0x71, + 0x15, 0x6B, 0x59, 0x9A, 0x21, 0xB0, 0x99, 0x65, 0xB5, 0x70, 0x7F, 0xB7, + 0x3B, 0x1E, 0xA6, 0x37, 0x14, 0xE5, 0x8E, 0x62, 0x7A, 0x38, 0xBB, 0x91, + 0x3F, 0xAF, 0x5E, 0x06, 0x4F, 0xAF, 0xF3, 0x6C, 0x87, 0xCD, 0xC9, 0xE7, + 0xF4, 0x43, 0xE8, 0x05, 0xF8, 0xD7, 0x24, 0x88, 0xB8, 0x1B, 0x23, 0x13, + 0x5E, 0x52, 0x16, 0x31, 0x3F, 0x43, 0x04, 0x44, 0xF3, 0x83, 0xB6, 0xEA, + 0xAE, 0x86, 0x52, 0xA3, 0xE2, 0x4A, 0x56, 0x6F, 0xD2, 0xB5, 0xD1, 0x8B, + 0x47, 0x8D, 0x15, 0xF5, 0xBB, 0x73, 0x7F, 0x82, 0x21, 0xE0, 0x79, 0x49, + 0x63, 0xE4, 0xFD, 0x14, 0x10, 0x60, 0x3F, 0xC6, 0x35, 0x49, 0x56, 0x4B, + 0x59, 0x11, 0x20, 0x04, 0x5E, 0x96, 0xE4, 0xC7, 0x17, 0x6B, 0xCA, 0x6B, + 0x12, 0x66, 0x02, 0x33, 0x51, 0x63, 0x00, 0x33, 0x9B, 0xC6, 0x38, 0xC4, + 0xE0, 0x48, 0x27, 0xA2, 0xEB, 0x9A, 0x1F, 0x4F, 0xF3, 0xB7, 0x9F, 0xCF, + 0x31, 0xD0, 0xDD, 0x6E, 0x8C, 0x81, 0x73, 0x29, 0x1A, 0x0A, 0x29, 0xCB, + 0x7E, 0x1A, 0x02, 0xB3, 0xAA, 0x0E, 0x91, 0xDD, 0xE7, 0xE8, 0xD7, 0x14, + 0x78, 0x85, 0x6B, 0x55, 0x53, 0x85, 0x35, 0x0B, 0x31, 0xE1, 0x79, 0x39, + 0xE1, 0x8A, 0x88, 0x8F, 0x2F, 0xF3, 0x7E, 0x8A, 0x63, 0x0C, 0x04, 0x38, + 0x8C, 0x3C, 0xC4, 0x70, 0xD8, 0x8F, 0x00, 0xF0, 0xE9, 0xF1, 0xE4, 0xAA, + 0xFE, 0x0F, 0x2F, 0x33, 0x41, 0xC9, 0x90, 0x2E, 0x47, 0xED, 0x08, 0x1E, + 0x88, 0xE9, 0x55, 0x73, 0x73, 0xA9, 0x9D, 0x58, 0x82, 0xFB, 0xF7, 0x23, + 0x2F, 0xC9, 0xC5, 0x1A, 0xA0, 0x47, 0x95, 0x9A, 0x05, 0xA6, 0xDD, 0x3E, + 0x8E, 0x31, 0x1C, 0x77, 0xC3, 0xE9, 0xB2, 0x10, 0xC2, 0xFD, 0x7E, 0x70, + 0xE0, 0xF3, 0x78, 0x3D, 0x5F, 0xF6, 0xFB, 0xFD, 0x38, 0x45, 0x7E, 0x39, + 0xAF, 0x66, 0x40, 0x04, 0xAA, 0xEA, 0x4A, 0xD9, 0xE5, 0xB2, 0x1E, 0x8F, + 0x53, 0x2B, 0x98, 0xF5, 0x63, 0x74, 0xD2, 0x7F, 0x42, 0x44, 0xA1, 0x38, + 0x28, 0xAA, 0x1C, 0x6F, 0xAC, 0x4D, 0x9E, 0xEF, 0x0E, 0xBE, 0xC9, 0xFD, + 0x17, 0x7D, 0x29, 0x3D, 0x2C, 0x81, 0x39, 0x14, 0x6A, 0x35, 0xE8, 0x63, + 0x45, 0x5E, 0x63, 0x19, 0xA0, 0xB6, 0xEC, 0x58, 0x37, 0xDA, 0x9B, 0xBA, + 0xF4, 0x7A, 0x9C, 0xD5, 0xEB, 0xD4, 0xE9, 0x1A, 0xBD, 0xBE, 0x06, 0x00, + 0x9B, 0x2E, 0xE0, 0x5A, 0x15, 0xB6, 0x52, 0x5D, 0x68, 0xC5, 0xA8, 0x35, + 0x73, 0xA3, 0x4C, 0x3B, 0x06, 0xA9, 0x12, 0xE4, 0xDA, 0x46, 0xD9, 0x74, + 0x43, 0xF7, 0xD9, 0xB5, 0xBF, 0xD6, 0xB4, 0xF0, 0x3A, 0x8A, 0x5A, 0x1D, + 0xC8, 0x00, 0x88, 0xAA, 0xB2, 0x0D, 0x66, 0x66, 0x62, 0x46, 0x1B, 0x33, + 0xF7, 0xED, 0xBF, 0xF1, 0xB4, 0x59, 0x40, 0xC5, 0x65, 0x28, 0x39, 0xAD, + 0x3E, 0x48, 0x8F, 0x13, 0x68, 0x96, 0x63, 0x99, 0x0D, 0xA0, 0x56, 0xEC, + 0x0E, 0x4C, 0x00, 0x28, 0x2A, 0xEE, 0xBA, 0x12, 0x54, 0xAB, 0xB6, 0xEC, + 0x75, 0xEF, 0x60, 0x56, 0xCA, 0x33, 0xDF, 0x2C, 0xB5, 0xEB, 0x34, 0x2D, + 0xD4, 0x59, 0x24, 0xDB, 0x30, 0xC4, 0x10, 0x88, 0x09, 0x10, 0x3C, 0xC7, + 0xC3, 0x13, 0xB3, 0x6A, 0x3D, 0x1F, 0x34, 0x05, 0x42, 0xCB, 0x39, 0x9B, + 0x81, 0xB9, 0x12, 0xDC, 0x80, 0xB5, 0x84, 0x31, 0x97, 0x0D, 0x72, 0xE7, + 0x9B, 0x9B, 0xAB, 0x81, 0x49, 0xCD, 0x72, 0x36, 0x51, 0x0B, 0xC7, 0xC3, + 0xA8, 0xDD, 0x8A, 0xFF, 0xD8, 0xD3, 0x4B, 0x9E, 0xF6, 0xF2, 0x0D, 0xA1, + 0x34, 0x41, 0xE8, 0x3F, 0x7B, 0xA8, 0xD0, 0xCD, 0x8E, 0x32, 0xF3, 0x61, + 0x3F, 0x12, 0xE2, 0x92, 0xF2, 0xBC, 0xA4, 0xA0, 0xBC, 0x27, 0xCC, 0x52, + 0x06, 0xED, 0xF0, 0xB7, 0x66, 0xB7, 0xAB, 0x6B, 0xEC, 0x0C, 0x38, 0x99, + 0xE0, 0xCD, 0x08, 0xAF, 0x7B, 0xB7, 0xAD, 0xE3, 0x82, 0x83, 0xC5, 0xA2, + 0x02, 0x80, 0x94, 0xF5, 0xF1, 0xE4, 0x39, 0xEA, 0xB6, 0x26, 0x0D, 0x8C, + 0x7E, 0x32, 0x3A, 0x2F, 0x89, 0x08, 0xB3, 0xC8, 0x40, 0x21, 0x67, 0x51, + 0x31, 0x55, 0x1D, 0x63, 0xC8, 0xA2, 0xCB, 0xBA, 0xBE, 0xBF, 0x3F, 0x88, + 0x2A, 0x11, 0x86, 0x40, 0xD5, 0x9C, 0x81, 0x71, 0x08, 0xC3, 0xC2, 0xFB, + 0x31, 0x1E, 0xA6, 0x98, 0x55, 0x2F, 0xCB, 0x2A, 0xCA, 0xC7, 0xDD, 0x68, + 0xB1, 0x88, 0xB2, 0x58, 0x42, 0x31, 0xE1, 0x34, 0x2F, 0xEB, 0x9A, 0xE7, + 0x55, 0xD4, 0x8C, 0x09, 0xD1, 0xC0, 0x85, 0x8F, 0x73, 0xE9, 0xE3, 0xCB, + 0x12, 0x43, 0x39, 0x74, 0x17, 0x31, 0x65, 0x1B, 0x06, 0x9E, 0x06, 0x2F, + 0x39, 0x83, 0x58, 0x0E, 0xB6, 0xF0, 0xFB, 0xA7, 0xCB, 0xE3, 0x29, 0x21, + 0x96, 0x88, 0x1F, 0xAA, 0x25, 0x04, 0xC6, 0x40, 0xA2, 0x36, 0x46, 0x5E, + 0xB3, 0x9C, 0xE7, 0x62, 0x5E, 0xBD, 0xBF, 0x9F, 0xE6, 0x35, 0xE7, 0xAC, + 0x63, 0xA4, 0x35, 0x4B, 0x73, 0xE0, 0x02, 0xC2, 0x71, 0x17, 0xFF, 0xC9, + 0x3F, 0xFA, 0x62, 0x1A, 0xE2, 0xBC, 0xA6, 0x4F, 0x8F, 0xF8, 0xEE, 0x6E, + 0xB7, 0x1F, 0xE3, 0x92, 0xB2, 0x88, 0x26, 0xD1, 0xDF, 0x7D, 0xF7, 0x6C, + 0xA6, 0x87, 0x89, 0xCF, 0x97, 0xF4, 0xF4, 0xB2, 0x80, 0x17, 0xB4, 0x32, + 0x18, 0x23, 0x7F, 0xF5, 0xEE, 0x10, 0x98, 0xC6, 0x31, 0x86, 0x10, 0xBC, + 0x6E, 0xE7, 0xEB, 0xC5, 0xEF, 0x0D, 0x96, 0x9E, 0x33, 0xFB, 0xC4, 0xEC, + 0x4A, 0x1E, 0x9E, 0x09, 0x07, 0xD5, 0xB9, 0x89, 0xD6, 0x45, 0x60, 0xF8, + 0xFF, 0x4C, 0xE4, 0xFF, 0xFD, 0xFF, 0xFE, 0x86, 0x90, 0x38, 0xF0, 0xFF, + 0xFC, 0xCF, 0xFF, 0x59, 0x0C, 0x41, 0x3C, 0x16, 0xAC, 0x5C, 0xD6, 0x51, + 0x37, 0xFB, 0xE6, 0x29, 0xC5, 0xB8, 0x37, 0xFB, 0xB1, 0x91, 0x68, 0xC9, + 0x76, 0x24, 0xAA, 0x5E, 0x5F, 0x6C, 0xCB, 0xD2, 0x1C, 0x13, 0xE5, 0x5B, + 0x1D, 0xD8, 0x16, 0x4F, 0xBC, 0x7A, 0x0C, 0x27, 0x5B, 0x29, 0x13, 0x5A, + 0xD4, 0x1A, 0x55, 0x43, 0x03, 0xB3, 0xAD, 0xA2, 0x96, 0x93, 0xC7, 0x36, + 0x97, 0xCA, 0xDE, 0xED, 0x20, 0xD2, 0xFF, 0xD4, 0x47, 0x87, 0xF9, 0xB3, + 0xB1, 0x52, 0x95, 0xC1, 0x15, 0x5D, 0xCC, 0x4A, 0x4D, 0x03, 0x44, 0xD9, + 0x56, 0xB5, 0xFF, 0xA1, 0x65, 0x47, 0x02, 0x80, 0xBB, 0x9B, 0x7B, 0x5F, + 0x29, 0xA0, 0x87, 0x4A, 0x58, 0x1B, 0x61, 0xD1, 0xA4, 0x5A, 0xD5, 0xD3, + 0xD2, 0xD4, 0xC6, 0xCE, 0x4C, 0xC4, 0xC4, 0xCC, 0x08, 0xC0, 0x2A, 0x90, + 0x72, 0xD2, 0x62, 0x2C, 0xDD, 0x18, 0x6A, 0x57, 0x28, 0xD6, 0x93, 0x41, + 0x9B, 0xA6, 0x59, 0xC9, 0xB8, 0x8C, 0x61, 0x18, 0xC7, 0xE8, 0x41, 0x61, + 0x29, 0x1B, 0x36, 0x30, 0x31, 0x08, 0x81, 0x09, 0x90, 0x88, 0x8C, 0xA0, + 0x94, 0xAF, 0x54, 0x8F, 0x47, 0xAB, 0xFA, 0x5E, 0x39, 0x7D, 0xAF, 0x9E, + 0x13, 0x33, 0xF3, 0xFC, 0x2A, 0x6D, 0x4B, 0x0D, 0x44, 0xC8, 0x8A, 0x41, + 0x45, 0x95, 0x84, 0xF8, 0x75, 0x45, 0xB2, 0x5B, 0x7A, 0xAD, 0x6B, 0xB1, + 0xE5, 0xBB, 0xBF, 0x41, 0x4E, 0x88, 0x66, 0xE6, 0x61, 0xBC, 0xCC, 0xE6, + 0xB1, 0x3C, 0x7D, 0x01, 0x06, 0x00, 0x60, 0xA2, 0xC3, 0x7E, 0xDC, 0xDB, + 0x90, 0xB2, 0x2C, 0x6B, 0xBE, 0xCC, 0x69, 0x4D, 0x59, 0xCC, 0xB2, 0xA8, + 0x4B, 0x0A, 0x0F, 0x49, 0xDD, 0xF6, 0xAC, 0x91, 0x19, 0xF4, 0xD6, 0xC4, + 0xC6, 0x39, 0xBD, 0xEA, 0x5E, 0x81, 0x14, 0xA0, 0xE4, 0x12, 0x95, 0xCD, + 0x5E, 0x12, 0xA4, 0x3C, 0x67, 0xD5, 0xFD, 0x10, 0x62, 0x88, 0xBB, 0x29, + 0xBE, 0xBB, 0xDB, 0x21, 0xA0, 0x8F, 0x61, 0x59, 0xB3, 0x88, 0x8E, 0x43, + 0xF0, 0x08, 0x8C, 0x94, 0xF3, 0xC3, 0x71, 0x1F, 0x02, 0x9F, 0xE7, 0x55, + 0xC5, 0xC6, 0xB1, 0x16, 0x04, 0x4F, 0xB2, 0xA6, 0x6C, 0x00, 0xF7, 0xFB, + 0x51, 0xCC, 0x1E, 0x4F, 0x0B, 0x23, 0x4D, 0x43, 0x64, 0x46, 0x11, 0x34, + 0xC4, 0x10, 0x48, 0xC1, 0x96, 0x39, 0xCF, 0xCB, 0x9A, 0xC4, 0xCE, 0x97, + 0x75, 0xCD, 0xE2, 0xAA, 0x93, 0x97, 0x04, 0x10, 0x05, 0xB7, 0x25, 0xCD, + 0x20, 0x04, 0x9A, 0x06, 0x0E, 0x44, 0xA2, 0x16, 0x23, 0x07, 0xA2, 0x61, + 0x08, 0x2E, 0x00, 0x9C, 0x76, 0xCE, 0x73, 0x7A, 0xB9, 0x24, 0xAC, 0x12, + 0x82, 0x08, 0x22, 0xF3, 0x61, 0x0A, 0x87, 0x69, 0xB8, 0x3F, 0x0C, 0x31, + 0x84, 0xC7, 0x97, 0xF9, 0xF1, 0x34, 0x4B, 0x24, 0x33, 0x18, 0x23, 0xDF, + 0xED, 0x86, 0x2F, 0x1E, 0x76, 0x63, 0x0C, 0x6B, 0x96, 0x1F, 0x9E, 0x2F, + 0x39, 0x2B, 0x96, 0x42, 0x00, 0xF0, 0x93, 0x0F, 0x25, 0xCD, 0x28, 0x06, + 0xFE, 0xC9, 0x17, 0xF7, 0xBE, 0x92, 0x07, 0x1D, 0x55, 0x8D, 0x09, 0x76, + 0x63, 0xFC, 0xF4, 0x74, 0x5E, 0xCA, 0x35, 0x25, 0xBE, 0x68, 0xA6, 0x6A, + 0x81, 0xE9, 0xFE, 0x38, 0x71, 0xE0, 0x1D, 0x95, 0x18, 0xC3, 0x9E, 0x70, + 0x7B, 0x43, 0xA6, 0x27, 0x86, 0xB6, 0x71, 0x0D, 0xC5, 0xDC, 0xD0, 0xC0, + 0x16, 0x49, 0xD0, 0xB1, 0x23, 0x20, 0x78, 0xF2, 0x44, 0x8B, 0x5D, 0x1E, + 0xC6, 0xF8, 0xCD, 0x37, 0x3F, 0xA8, 0xC8, 0xAF, 0x7F, 0xFF, 0xFD, 0x2A, + 0xF8, 0xAF, 0xFF, 0xB7, 0x7F, 0xA5, 0xF3, 0x6A, 0x7D, 0x9A, 0x1E, 0xB4, + 0xF6, 0xDB, 0x89, 0x25, 0xF5, 0x0A, 0xD1, 0x8D, 0x82, 0x60, 0xE6, 0x45, + 0x9F, 0x0A, 0x36, 0xF9, 0x5D, 0x13, 0xDB, 0xCD, 0x34, 0x1D, 0xE9, 0xDE, + 0x90, 0x31, 0xB8, 0xFD, 0xE7, 0x9C, 0xE4, 0xEE, 0xB7, 0x92, 0xE8, 0x66, + 0x48, 0x7A, 0x45, 0xA2, 0x66, 0xD8, 0xB9, 0x56, 0x5E, 0xF3, 0x45, 0x2F, + 0xCB, 0x37, 0xE8, 0x79, 0xA5, 0x07, 0xB4, 0x4F, 0xE8, 0xDA, 0xB4, 0xEC, + 0x95, 0xD0, 0xFE, 0xEB, 0xED, 0xB7, 0xED, 0xDF, 0xA2, 0x71, 0x3A, 0x05, + 0xD5, 0xF5, 0x6A, 0xA0, 0xD8, 0xE1, 0xA3, 0x56, 0xE3, 0xD0, 0xD9, 0x27, + 0x84, 0x40, 0x84, 0x8C, 0xA4, 0xA6, 0x04, 0x8C, 0x08, 0x48, 0x18, 0x63, + 0x90, 0xD5, 0xA0, 0xE2, 0xE8, 0x16, 0xEB, 0x0C, 0x35, 0xDC, 0xB6, 0x0E, + 0x8C, 0xBA, 0x12, 0x6F, 0xAD, 0xCD, 0xFA, 0x14, 0xAC, 0x34, 0xF7, 0x36, + 0x98, 0xE7, 0x38, 0x06, 0x0E, 0x14, 0x42, 0x20, 0x40, 0x35, 0x65, 0xA4, + 0x32, 0x87, 0x92, 0x35, 0x51, 0x7C, 0x4A, 0x56, 0x8A, 0xF9, 0xD4, 0xD2, + 0x45, 0x00, 0xAA, 0x62, 0xA5, 0x12, 0x30, 0x10, 0x90, 0x82, 0xAB, 0x66, + 0x18, 0x9E, 0x5E, 0x2E, 0x77, 0x87, 0x69, 0x9A, 0xDE, 0x06, 0xA6, 0x1F, + 0xDB, 0x92, 0x26, 0x67, 0x6E, 0xF0, 0xF8, 0xE6, 0x87, 0x10, 0x18, 0x11, + 0xFC, 0x9E, 0x99, 0x5E, 0x34, 0xF9, 0xCC, 0xDD, 0x9B, 0x7E, 0xD8, 0x89, + 0xDF, 0xCA, 0xB1, 0xA4, 0x9C, 0xB3, 0xA6, 0x24, 0x6A, 0x46, 0x28, 0x9E, + 0x71, 0xED, 0xFD, 0x15, 0x83, 0xBE, 0x0C, 0x60, 0x1B, 0x89, 0x55, 0x53, + 0xFF, 0xF5, 0x29, 0xF5, 0xF6, 0x57, 0x57, 0x0F, 0x15, 0x92, 0xA9, 0x13, + 0xC5, 0xFD, 0x7E, 0x74, 0xB1, 0x10, 0x03, 0x89, 0xDA, 0x9C, 0xF2, 0xBA, + 0x66, 0x44, 0x10, 0xB3, 0x58, 0xCA, 0xF2, 0x62, 0x60, 0xBA, 0xCC, 0xEB, + 0xBA, 0xA6, 0x8B, 0xDA, 0x79, 0xC6, 0xAC, 0xEA, 0xC7, 0x27, 0x4E, 0x23, + 0x2F, 0xF3, 0x32, 0xAF, 0x62, 0x0A, 0xC7, 0x63, 0x9C, 0xC6, 0x30, 0x2F, + 0x39, 0x65, 0x19, 0x62, 0x40, 0xC4, 0x65, 0xCD, 0x97, 0x79, 0x5D, 0x92, + 0x9C, 0x1C, 0xC5, 0x0C, 0xCC, 0x40, 0x08, 0xC6, 0x18, 0xC0, 0xEC, 0xBC, + 0xE6, 0x35, 0xAB, 0x1A, 0x20, 0x00, 0x33, 0xBD, 0x3F, 0xC6, 0xDD, 0x18, + 0xE6, 0x94, 0x55, 0x15, 0x98, 0x72, 0x96, 0x61, 0x08, 0xF3, 0x9C, 0x45, + 0xF5, 0xF3, 0xF3, 0x2C, 0xA2, 0x81, 0xC9, 0xED, 0x17, 0x87, 0xA4, 0x18, + 0x08, 0x11, 0xCE, 0x4B, 0xBA, 0x2C, 0xE9, 0xDD, 0xDD, 0xC4, 0x04, 0x53, + 0x64, 0x3F, 0x90, 0xBE, 0xDB, 0x8F, 0x22, 0x2A, 0x82, 0xB3, 0xA5, 0xCB, + 0x9C, 0xA6, 0xC8, 0x3C, 0x86, 0x87, 0xE3, 0x34, 0xC4, 0x90, 0x92, 0xEC, + 0x77, 0x83, 0xB9, 0xA8, 0xC8, 0xEA, 0x67, 0xD3, 0x29, 0xA5, 0x9C, 0x95, + 0x99, 0x88, 0xF9, 0xFD, 0xFD, 0x8E, 0x08, 0x5E, 0xCE, 0x8B, 0x3C, 0x5E, + 0x3C, 0x4A, 0xD1, 0xCC, 0x98, 0x60, 0x3F, 0x45, 0xD7, 0xE1, 0x4B, 0xD1, + 0x85, 0x6B, 0x8B, 0xE9, 0x35, 0x84, 0xF5, 0x0C, 0xD9, 0x50, 0x4C, 0xA4, + 0x84, 0x34, 0xB6, 0x37, 0xB7, 0x76, 0xBC, 0xFE, 0x52, 0xAD, 0x2C, 0x66, + 0x66, 0x21, 0xF2, 0x6F, 0x7E, 0xF3, 0xFB, 0x65, 0x5E, 0x01, 0x20, 0xC4, + 0xE1, 0x3F, 0xFD, 0xED, 0xDF, 0x3F, 0xDC, 0x1F, 0xFF, 0xC5, 0x5F, 0xFD, + 0x85, 0x57, 0xF7, 0x21, 0xDA, 0x82, 0xD8, 0x5D, 0x5C, 0x03, 0x34, 0xBB, + 0x06, 0xDF, 0x68, 0xBF, 0xB1, 0x59, 0xD1, 0xC2, 0x0A, 0x1F, 0x23, 0x61, + 0x83, 0x86, 0x9E, 0x60, 0xDE, 0x60, 0x01, 0x6F, 0xD5, 0xA0, 0x15, 0xD6, + 0xAD, 0xD3, 0xEF, 0x3D, 0x65, 0x8A, 0x88, 0x6A, 0x46, 0x40, 0xAF, 0x51, + 0xE6, 0xA6, 0x8B, 0x1B, 0xF6, 0x81, 0x57, 0xB0, 0x5B, 0x3E, 0x84, 0x0E, + 0xF3, 0x3A, 0xB8, 0x7C, 0x05, 0x64, 0xE5, 0x5F, 0xAD, 0xBF, 0x40, 0xA9, + 0xDB, 0x82, 0x8D, 0x55, 0xCA, 0x5F, 0xF4, 0xAA, 0x05, 0x05, 0x57, 0x85, + 0x37, 0x25, 0x91, 0x89, 0x62, 0x08, 0xED, 0xCF, 0x49, 0x84, 0x4B, 0x59, + 0x7D, 0xCA, 0x22, 0xCD, 0x97, 0x0F, 0x8D, 0xBB, 0x01, 0xB1, 0xFF, 0xF5, + 0xC6, 0x3D, 0xDA, 0x26, 0x8E, 0x80, 0x48, 0x1E, 0xD3, 0x8F, 0x88, 0x71, + 0x08, 0x66, 0x16, 0x98, 0x43, 0xA8, 0xD7, 0x8B, 0x10, 0xB9, 0x2D, 0x5F, + 0xCA, 0x0A, 0x79, 0xB6, 0xA6, 0x8B, 0xA7, 0x0D, 0x78, 0x7B, 0xB1, 0x04, + 0x4D, 0xA7, 0x51, 0x50, 0x2F, 0xAC, 0x28, 0x6A, 0xE1, 0x32, 0xA7, 0xDD, + 0x34, 0xFC, 0xD8, 0xC9, 0xFA, 0xCD, 0x06, 0x6C, 0x42, 0xF5, 0xBF, 0xFB, + 0x69, 0xBA, 0x9B, 0x27, 0x24, 0xA9, 0x4A, 0x2B, 0x6B, 0xEB, 0xAD, 0x4D, + 0x13, 0xC5, 0x18, 0x96, 0x35, 0xD1, 0x65, 0x79, 0xCE, 0x73, 0x3B, 0x48, + 0xF3, 0xA0, 0x5E, 0xDF, 0x8A, 0xBA, 0xBB, 0xC5, 0x2C, 0x50, 0xBB, 0x22, + 0x05, 0x00, 0x17, 0xD3, 0xAF, 0x8E, 0x17, 0x5C, 0x51, 0x2F, 0x85, 0x21, + 0x0B, 0xC5, 0xAC, 0x59, 0x44, 0x35, 0x86, 0x30, 0xCF, 0x29, 0x1E, 0x99, + 0x90, 0x02, 0xE1, 0x02, 0xB0, 0x2C, 0x19, 0x00, 0xE3, 0x9E, 0xBD, 0xD8, + 0xD9, 0xA7, 0xA7, 0x93, 0xAA, 0x11, 0x53, 0x20, 0x7C, 0x3A, 0x2D, 0x4F, + 0xA7, 0xE5, 0xB8, 0x1B, 0x86, 0xC8, 0x81, 0xF9, 0xB2, 0xA4, 0x4F, 0xCF, + 0xCB, 0x14, 0xF9, 0x8B, 0x87, 0x5D, 0x8C, 0xFC, 0xE9, 0xE9, 0xE2, 0x97, + 0xE6, 0xDD, 0x23, 0xCE, 0x6B, 0x9A, 0x86, 0xF8, 0xF1, 0xFD, 0x21, 0x25, + 0x3D, 0xEE, 0xD7, 0x6F, 0x7F, 0x38, 0xBD, 0x5C, 0x12, 0x11, 0x06, 0x2E, + 0x00, 0x04, 0x08, 0x81, 0x49, 0xC4, 0xB2, 0x2A, 0x13, 0x8A, 0x99, 0x5F, + 0xD7, 0xC6, 0x4C, 0x59, 0x75, 0x39, 0xCD, 0xF7, 0x30, 0x5D, 0x96, 0xB5, + 0x5C, 0x00, 0xEA, 0x87, 0x32, 0x5B, 0xF9, 0x5E, 0x04, 0x80, 0x94, 0x75, + 0x49, 0x0A, 0x00, 0x29, 0xCB, 0xBB, 0xE3, 0xF4, 0xC5, 0xFB, 0xC3, 0xD3, + 0x69, 0x51, 0xB5, 0x87, 0xE3, 0x94, 0x52, 0xFE, 0xFE, 0xF1, 0xEC, 0x0A, + 0xE3, 0x65, 0xCD, 0xF7, 0x87, 0x71, 0x8C, 0x41, 0xCD, 0xC6, 0x21, 0x88, + 0xEA, 0xF9, 0x69, 0x1D, 0x86, 0xB0, 0xA6, 0x2C, 0xA5, 0x08, 0xBD, 0x57, + 0x4C, 0x32, 0x11, 0xCB, 0x59, 0x72, 0x56, 0x50, 0x18, 0x87, 0xB0, 0x1B, + 0x71, 0x49, 0xF9, 0x34, 0x27, 0x26, 0x5C, 0x96, 0xA4, 0x35, 0xC6, 0x91, + 0x6A, 0x02, 0xCA, 0x6B, 0xAE, 0xEB, 0x3F, 0xBC, 0xA6, 0x39, 0x93, 0x66, + 0x2F, 0x5C, 0x97, 0x36, 0x6E, 0x13, 0xD2, 0x2C, 0x92, 0x85, 0xD8, 0x88, + 0x49, 0x55, 0x19, 0xF0, 0x3F, 0xFC, 0xC7, 0x5F, 0x49, 0xCE, 0xC7, 0xC3, + 0xF4, 0xD5, 0xFB, 0xC3, 0x30, 0xC6, 0xBF, 0xF9, 0x4F, 0xBF, 0x35, 0x80, + 0x7F, 0xF1, 0xCF, 0xFE, 0x9C, 0x91, 0x5C, 0xC7, 0xB4, 0x3E, 0x22, 0xBC, + 0xBA, 0x82, 0x7F, 0xCC, 0x3E, 0x40, 0x2C, 0x06, 0xA4, 0x75, 0x27, 0x51, + 0xD4, 0x8A, 0x87, 0xD6, 0x49, 0xBD, 0x96, 0x82, 0x57, 0x00, 0xE4, 0xDE, + 0xAA, 0x7A, 0xF4, 0xD4, 0xD9, 0x04, 0xAE, 0x6B, 0x30, 0xA0, 0x9A, 0x54, + 0xD3, 0x56, 0xB7, 0xAF, 0xF7, 0x42, 0xFD, 0x06, 0x5E, 0x1B, 0x88, 0xBC, + 0xEE, 0xB1, 0xAC, 0x73, 0x67, 0xF3, 0xB6, 0xF7, 0x3B, 0x20, 0xF3, 0x8B, + 0x3B, 0xEB, 0xE7, 0xED, 0xB4, 0xD9, 0x8A, 0x9E, 0x5B, 0xE2, 0x31, 0xDD, + 0x96, 0xB4, 0xED, 0xEB, 0x9E, 0x56, 0xD3, 0x95, 0x1D, 0x2B, 0x11, 0x30, + 0x6B, 0x4A, 0xA2, 0x02, 0x00, 0x9E, 0x26, 0xE5, 0x05, 0xFF, 0x20, 0x83, + 0xB6, 0x43, 0x08, 0x75, 0x6D, 0x4C, 0xB1, 0xE6, 0x97, 0xDE, 0xE8, 0xB0, + 0xAF, 0x57, 0xBE, 0x3A, 0x11, 0x36, 0x33, 0xCE, 0xBD, 0x13, 0x88, 0x28, + 0x62, 0x66, 0x4A, 0xA4, 0x1C, 0x88, 0x89, 0x11, 0xA9, 0x9D, 0xE1, 0x5A, + 0x43, 0x76, 0xC3, 0x52, 0x70, 0xBB, 0x5B, 0x04, 0x57, 0xC7, 0x10, 0x51, + 0xEA, 0xED, 0x09, 0x0E, 0xD4, 0x81, 0x08, 0xBD, 0x1A, 0x86, 0x5D, 0x97, + 0x40, 0xFA, 0x31, 0xE2, 0xF0, 0xA7, 0x8F, 0x33, 0x84, 0x6B, 0xF2, 0xBD, + 0x21, 0x88, 0x0E, 0x50, 0x2D, 0x65, 0x41, 0x40, 0xE6, 0xB2, 0x85, 0x1E, + 0x46, 0x63, 0x06, 0xCC, 0xB8, 0xDF, 0x0D, 0x84, 0x38, 0x2F, 0x29, 0x65, + 0x5D, 0x92, 0xAC, 0x39, 0x8B, 0x00, 0x22, 0x0E, 0x91, 0xDB, 0xB5, 0x49, + 0x35, 0x7C, 0xE4, 0x4A, 0xD8, 0xFA, 0x6E, 0x35, 0x8D, 0xAC, 0xF5, 0xE6, + 0x62, 0xA9, 0x85, 0xD7, 0xFA, 0x68, 0x00, 0x40, 0x0C, 0x3E, 0xBF, 0x2C, + 0x44, 0xEB, 0xFD, 0x7E, 0x18, 0x22, 0x23, 0xE2, 0x10, 0x43, 0x0C, 0x7C, + 0xBA, 0xAC, 0x22, 0xFA, 0x7C, 0x5A, 0x42, 0x20, 0x55, 0xBD, 0x2C, 0x39, + 0x30, 0xDD, 0x1D, 0x26, 0x4F, 0x9C, 0xAC, 0x96, 0x08, 0x8A, 0xEA, 0x9A, + 0x85, 0x11, 0xDD, 0xFE, 0xFD, 0xF6, 0xF3, 0x69, 0x4D, 0xE2, 0xD7, 0x0C, + 0x1F, 0x76, 0xE3, 0x71, 0x3F, 0xC6, 0xC8, 0x00, 0x46, 0x48, 0xF7, 0xC7, + 0xE9, 0xEE, 0x30, 0xFD, 0xFA, 0xF7, 0x9F, 0x1C, 0x14, 0x00, 0x60, 0x1A, + 0x82, 0x7A, 0x49, 0x00, 0x80, 0x40, 0xCC, 0x4C, 0x8F, 0x2F, 0x33, 0x22, + 0x1C, 0xA6, 0x21, 0x06, 0x3A, 0x5D, 0x52, 0x60, 0xBC, 0x84, 0xA4, 0x66, + 0x6B, 0x12, 0x3F, 0xAC, 0x44, 0xAC, 0xE7, 0xE0, 0x80, 0x00, 0xB6, 0x26, + 0x8B, 0x01, 0x77, 0x03, 0x8B, 0x5A, 0x16, 0xCB, 0xA2, 0xFB, 0x71, 0x38, + 0xEE, 0x47, 0xCF, 0xD9, 0xFB, 0xE6, 0xD3, 0x73, 0x16, 0xBD, 0xDB, 0x8F, + 0xE7, 0x25, 0x1D, 0xA6, 0x21, 0x67, 0xFD, 0xD5, 0x1F, 0x7E, 0x00, 0x83, + 0x69, 0x60, 0x44, 0x18, 0x62, 0x88, 0x6B, 0x32, 0x00, 0x53, 0x5B, 0xB3, + 0x1C, 0xF7, 0x23, 0x13, 0xE6, 0x2C, 0x22, 0x5C, 0x63, 0x71, 0xE0, 0xB8, + 0x1B, 0x76, 0x63, 0x7C, 0x39, 0x2F, 0xAA, 0x16, 0x03, 0xBD, 0x3B, 0x4E, + 0xD3, 0x18, 0x45, 0x94, 0x08, 0x55, 0x4B, 0xCC, 0x44, 0x4F, 0x1B, 0x37, + 0xFF, 0x5A, 0x2D, 0x66, 0xE0, 0x1F, 0x88, 0x48, 0xCE, 0x1E, 0xE3, 0xA9, + 0x5E, 0xD3, 0xB5, 0xD7, 0xEC, 0xAA, 0x33, 0xD8, 0xE6, 0x35, 0x4F, 0x63, + 0xAC, 0x46, 0x27, 0xEC, 0x77, 0xC3, 0xBF, 0xFA, 0x9F, 0xFE, 0xFC, 0x3F, + 0xFF, 0xDD, 0x1F, 0x7F, 0xFA, 0xF1, 0xFE, 0x79, 0xCE, 0x21, 0x4E, 0xDF, + 0x7C, 0xFB, 0xF8, 0x7F, 0x7D, 0xFE, 0x77, 0x7F, 0xF5, 0x97, 0xBF, 0xF8, + 0xEA, 0x8B, 0xF7, 0x00, 0x90, 0x92, 0xA2, 0xC9, 0xCD, 0xC9, 0x43, 0x03, + 0x82, 0x1B, 0x52, 0xF4, 0x13, 0x24, 0x67, 0x6F, 0xAD, 0xB7, 0x93, 0xA8, + 0x2A, 0xA1, 0x1F, 0x80, 0x81, 0xE1, 0xD5, 0xB1, 0xF8, 0x8F, 0x11, 0xB3, + 0x55, 0x0F, 0x6C, 0x93, 0xAC, 0x55, 0xEF, 0x00, 0x33, 0x75, 0xA7, 0x90, + 0x02, 0x60, 0x3B, 0x0F, 0x30, 0xE8, 0x03, 0xA7, 0xEB, 0x08, 0xC1, 0xFD, + 0xEB, 0xBD, 0x67, 0xC6, 0x7F, 0x68, 0x8E, 0xFF, 0x86, 0xF8, 0x9B, 0xAF, + 0xA4, 0x56, 0x0A, 0xBB, 0xE6, 0xA9, 0x4E, 0x5D, 0xA9, 0x3C, 0xE6, 0x97, + 0x58, 0x20, 0x22, 0xD4, 0x72, 0x3E, 0xAF, 0x6D, 0xD0, 0x1A, 0x58, 0x5E, + 0xC2, 0xD7, 0xDC, 0x91, 0x8F, 0x88, 0x66, 0x29, 0x67, 0xBC, 0x7A, 0x02, + 0x9B, 0x81, 0x94, 0x4B, 0x12, 0x51, 0xAC, 0x5C, 0x4F, 0xD8, 0x92, 0xEA, + 0xA8, 0x96, 0xB4, 0x29, 0x23, 0x27, 0x02, 0xB5, 0xEA, 0xFC, 0x74, 0x77, + 0x8A, 0xAB, 0x5D, 0x36, 0xCF, 0x2B, 0x11, 0x0D, 0x43, 0x2B, 0x33, 0x61, + 0xE5, 0x9A, 0x62, 0x44, 0xBF, 0x1A, 0xB9, 0x60, 0x94, 0x97, 0x12, 0x50, + 0x00, 0x2C, 0x17, 0xAA, 0x5D, 0x55, 0xFD, 0x2F, 0x8C, 0x5D, 0xB2, 0xB8, + 0xA0, 0xDA, 0x68, 0x44, 0x84, 0x66, 0xFC, 0xBF, 0xFF, 0x1F, 0xFF, 0xE7, + 0x30, 0xB0, 0x87, 0xAC, 0xDF, 0xEC, 0x65, 0x07, 0x0D, 0x1B, 0x70, 0xB4, + 0xE7, 0x66, 0xA7, 0x5F, 0x7F, 0x72, 0xB5, 0xCA, 0x85, 0x15, 0x51, 0x44, + 0xFD, 0x94, 0xAD, 0xD8, 0x16, 0x56, 0x1C, 0xFC, 0x7E, 0x6B, 0xEF, 0x38, + 0x04, 0x42, 0xCA, 0xF5, 0x94, 0xE0, 0xDD, 0x71, 0x0A, 0x4C, 0x6B, 0x12, + 0x00, 0x34, 0x30, 0x31, 0x54, 0xAF, 0xDC, 0x52, 0x47, 0x60, 0xE5, 0x2E, + 0x4B, 0x2C, 0xC1, 0xB4, 0x56, 0x5C, 0x03, 0xD6, 0xE1, 0xD7, 0x96, 0x6E, + 0xE8, 0xD1, 0x09, 0x6A, 0x9E, 0x43, 0x1A, 0x03, 0x79, 0x64, 0xAC, 0x88, + 0x64, 0xB5, 0xAC, 0xB6, 0xD4, 0xDB, 0x36, 0x2F, 0x4B, 0x4E, 0x59, 0x63, + 0xE4, 0xF3, 0x9C, 0x1E, 0x4F, 0xCB, 0x79, 0xC9, 0x81, 0x28, 0x30, 0x89, + 0x68, 0x0C, 0x9C, 0x44, 0xDC, 0xEB, 0x7F, 0x59, 0x52, 0xCA, 0x1A, 0x02, + 0x1F, 0xA6, 0xF8, 0xC5, 0xC3, 0x7E, 0xBF, 0x1B, 0x90, 0x70, 0x9E, 0x93, + 0x88, 0xFA, 0xE5, 0x4F, 0x31, 0x86, 0xC3, 0x34, 0x1C, 0xA6, 0xC8, 0x4C, + 0xD3, 0x10, 0x01, 0x6C, 0x0C, 0x61, 0x18, 0x82, 0x59, 0x11, 0x72, 0x58, + 0x6F, 0xB7, 0xCB, 0x59, 0xD7, 0x2C, 0xA9, 0x9C, 0x72, 0xE0, 0xE9, 0xB2, + 0x2E, 0x29, 0xAB, 0x9A, 0x17, 0xBA, 0xAC, 0x76, 0x90, 0x1B, 0x3A, 0x06, + 0x06, 0x81, 0x29, 0x04, 0x1A, 0x23, 0x7F, 0x78, 0x38, 0x8C, 0x63, 0xC8, + 0x59, 0x2F, 0x4B, 0x3A, 0x5D, 0x56, 0xD7, 0x55, 0x01, 0x31, 0xA5, 0xFC, + 0xED, 0xE3, 0x39, 0x8B, 0x81, 0x59, 0xCA, 0x22, 0x62, 0xD3, 0x18, 0xC6, + 0x21, 0xAC, 0xAB, 0x9C, 0xE7, 0xA4, 0x66, 0xE7, 0x39, 0x8D, 0x91, 0xD9, + 0x73, 0xD5, 0xCC, 0x76, 0x53, 0x64, 0x26, 0x55, 0xF5, 0x6B, 0xBB, 0xEE, + 0xF6, 0xC3, 0x57, 0x1F, 0x8E, 0x1F, 0x3F, 0xDC, 0xB9, 0x6B, 0x4C, 0xA4, + 0xA4, 0xB6, 0x94, 0x93, 0xB5, 0x57, 0x4E, 0x52, 0xDF, 0x63, 0x11, 0x59, + 0xD7, 0xE4, 0xB7, 0x8E, 0xFA, 0xB7, 0x52, 0x96, 0x9C, 0x05, 0x10, 0x03, + 0x33, 0xB4, 0x52, 0x4E, 0x06, 0x6A, 0xB2, 0xAE, 0xB2, 0xAE, 0x49, 0xD5, + 0xD6, 0x94, 0xFD, 0x64, 0x23, 0x04, 0x7E, 0x79, 0x3E, 0xFD, 0xEE, 0x77, + 0x7F, 0x0C, 0x31, 0xFE, 0xE7, 0x5F, 0xFF, 0xFE, 0xC3, 0xFB, 0xFB, 0xFF, + 0xF8, 0xEB, 0x6F, 0xD4, 0x8C, 0x99, 0x53, 0x96, 0x5F, 0xFD, 0xF6, 0x8F, + 0x97, 0xCB, 0x72, 0xDC, 0x4F, 0x93, 0x67, 0xBC, 0xD6, 0xC2, 0xF6, 0x8D, + 0x1A, 0x7B, 0x00, 0x2A, 0x14, 0x52, 0xAB, 0x91, 0x42, 0xE1, 0xEA, 0x7A, + 0xB7, 0x4E, 0xD5, 0xCE, 0xB0, 0xC2, 0x53, 0x3F, 0x91, 0x62, 0x4A, 0xF6, + 0xB2, 0xBC, 0xB2, 0xD1, 0x66, 0x17, 0x60, 0x73, 0x5D, 0x42, 0xB9, 0x5B, + 0xB3, 0x96, 0x75, 0x40, 0x24, 0xA4, 0x76, 0x5D, 0xF9, 0x16, 0x91, 0xEB, + 0x49, 0x7D, 0x85, 0x79, 0x4B, 0x86, 0x5F, 0xAD, 0x9A, 0x56, 0x07, 0x50, + 0xC3, 0xAF, 0xAE, 0x92, 0x10, 0x1A, 0xFF, 0x38, 0x12, 0x35, 0x0F, 0xE1, + 0x36, 0x66, 0x00, 0x73, 0xB2, 0x30, 0x33, 0xC3, 0xE2, 0x42, 0xAA, 0x81, + 0xC2, 0x0D, 0xB6, 0xB4, 0xDC, 0x9C, 0x52, 0x1E, 0x70, 0x47, 0x57, 0xAD, + 0x14, 0x5F, 0x5B, 0xDA, 0x56, 0x2F, 0x70, 0x40, 0x84, 0x9C, 0xC5, 0xA5, + 0xB8, 0x6A, 0x0B, 0x72, 0x53, 0x44, 0x04, 0x24, 0x66, 0xE2, 0x1A, 0x0F, + 0x48, 0x44, 0x8C, 0x88, 0x7E, 0x96, 0x55, 0x1A, 0x21, 0x40, 0x08, 0x1C, + 0x98, 0xD9, 0xD4, 0xC0, 0x20, 0x7B, 0x45, 0x42, 0x44, 0x22, 0x1C, 0x86, + 0x18, 0xEA, 0x55, 0x92, 0x0D, 0x23, 0xB4, 0xB8, 0xA0, 0x6A, 0x49, 0xB8, + 0x57, 0x76, 0xA5, 0x2F, 0xBD, 0x15, 0xFD, 0x6E, 0xAB, 0x7E, 0x8C, 0x88, + 0x61, 0x08, 0x81, 0x3C, 0xE8, 0x81, 0xB4, 0x5F, 0x9D, 0x7E, 0x11, 0xFB, + 0x50, 0xE0, 0x37, 0x51, 0xAC, 0x7F, 0xAC, 0x93, 0x02, 0x0D, 0x47, 0x6B, + 0xD5, 0x8A, 0x10, 0x02, 0xD5, 0xC2, 0x07, 0xE5, 0x3E, 0x1B, 0x1F, 0xA7, + 0x9A, 0xAD, 0x6B, 0x62, 0xE6, 0xC3, 0x7E, 0x08, 0x01, 0x1F, 0x5F, 0x16, + 0x97, 0xD8, 0xA7, 0x39, 0x37, 0x63, 0xDE, 0xC1, 0x9E, 0xA8, 0x5C, 0xC5, + 0xA6, 0x60, 0x8C, 0xE8, 0x59, 0x35, 0xC3, 0x18, 0x88, 0xD0, 0x83, 0x21, + 0x3C, 0xC8, 0x96, 0x08, 0xB3, 0xD8, 0x9A, 0xCB, 0x25, 0xB7, 0x06, 0x40, + 0x04, 0x8C, 0xB4, 0x26, 0x05, 0xC4, 0xAC, 0xFA, 0xFD, 0xD3, 0xC5, 0x15, + 0x10, 0x87, 0x2F, 0x42, 0xCC, 0xAA, 0x91, 0xF9, 0xF1, 0x65, 0xF1, 0x2B, + 0x4E, 0xD3, 0xCB, 0x92, 0xC4, 0x44, 0x14, 0x10, 0xB2, 0x5A, 0x0C, 0x7C, + 0xB7, 0x1F, 0x96, 0x94, 0xCD, 0x60, 0x08, 0x8C, 0x80, 0x6B, 0x89, 0x95, + 0x05, 0x33, 0x38, 0x2F, 0xEB, 0xD9, 0xC3, 0x38, 0x10, 0xA6, 0x31, 0x12, + 0x62, 0x60, 0x56, 0x12, 0x0F, 0xF7, 0x57, 0xB5, 0x79, 0x4D, 0x62, 0x36, + 0x30, 0x06, 0xA2, 0x21, 0xB2, 0x78, 0x6A, 0x05, 0x19, 0x98, 0x89, 0xE8, + 0x30, 0x04, 0xEF, 0x48, 0xD5, 0xB2, 0xE8, 0x92, 0xB2, 0x47, 0x87, 0xF8, + 0x42, 0x53, 0x2D, 0x7E, 0x05, 0x60, 0xBB, 0x61, 0x20, 0x84, 0x25, 0xE7, + 0x7D, 0x88, 0x0F, 0x87, 0x89, 0x98, 0x10, 0xC9, 0x43, 0x46, 0x8E, 0xBB, + 0x21, 0x04, 0x1A, 0x42, 0xC8, 0x22, 0x97, 0x25, 0x7F, 0xB8, 0x67, 0x33, + 0x23, 0x42, 0x11, 0x45, 0xC0, 0x40, 0xE4, 0x81, 0x1D, 0x06, 0x36, 0xC4, + 0xF0, 0xF9, 0xF9, 0xF2, 0x74, 0x9A, 0xEF, 0xF6, 0x93, 0xB3, 0x4C, 0x0C, + 0xC1, 0xDF, 0x01, 0x00, 0xBF, 0x83, 0xD9, 0x4B, 0xCE, 0x79, 0x64, 0xF6, + 0x9A, 0x64, 0x1C, 0x02, 0x73, 0xC9, 0xB8, 0x6C, 0x87, 0xEB, 0x8D, 0x52, + 0xCC, 0x2C, 0xE7, 0xBC, 0x2C, 0x39, 0x67, 0x41, 0x44, 0x11, 0x22, 0xC4, + 0xAC, 0x96, 0x52, 0x36, 0x33, 0x8F, 0x5F, 0x09, 0xA1, 0xE4, 0x39, 0xB9, + 0x69, 0x23, 0xA2, 0x39, 0x17, 0xFF, 0x40, 0x4A, 0x42, 0x84, 0x31, 0x0C, + 0xBF, 0xFF, 0xC3, 0x37, 0x6B, 0x86, 0x7F, 0xF3, 0xD7, 0x7F, 0xF7, 0xF1, + 0xC3, 0xC3, 0x92, 0xF4, 0xF3, 0xD3, 0x09, 0x89, 0x5E, 0x5E, 0x5E, 0x7E, + 0xF9, 0x8B, 0x9F, 0x7D, 0x7C, 0xFF, 0xF0, 0x87, 0x6F, 0x7F, 0xF8, 0xD3, + 0x37, 0xDF, 0x7F, 0xF9, 0xF1, 0xFE, 0x2F, 0xFF, 0xE2, 0xE7, 0x77, 0xC7, + 0x83, 0xE7, 0xBE, 0xF4, 0xD1, 0xFB, 0x8D, 0xFC, 0xB0, 0x44, 0x8A, 0x15, + 0x08, 0x73, 0x6C, 0x6A, 0x6A, 0x54, 0xCA, 0x59, 0xD5, 0x42, 0xE4, 0xC0, + 0x8C, 0x82, 0x54, 0x83, 0xEC, 0x0B, 0x2B, 0x5B, 0x45, 0xAB, 0xC6, 0x0B, + 0xC5, 0x90, 0xBA, 0x65, 0x29, 0x6F, 0xD4, 0x21, 0xCE, 0xD5, 0x11, 0x2C, + 0xBE, 0xA3, 0x46, 0xF6, 0x45, 0x73, 0x70, 0x14, 0xA4, 0xEA, 0x54, 0x69, + 0x9C, 0xD2, 0x31, 0x08, 0xB5, 0x1F, 0xE0, 0x95, 0xE3, 0x0C, 0x2A, 0x8A, + 0x15, 0xBF, 0xA0, 0xF5, 0x1F, 0xDE, 0xB0, 0xDF, 0x2D, 0x0F, 0x56, 0x16, + 0xAE, 0x05, 0x2D, 0x3B, 0xCD, 0x02, 0x4C, 0xEB, 0x25, 0x2E, 0xC5, 0x65, + 0xE9, 0x03, 0x20, 0x66, 0xCF, 0x53, 0x51, 0xC0, 0xC0, 0xEC, 0xD7, 0x7A, + 0x4B, 0xC5, 0x17, 0x66, 0x1E, 0x8A, 0xCF, 0x0B, 0xB0, 0x66, 0x3B, 0xD1, + 0x56, 0x08, 0xCB, 0x90, 0x01, 0x4D, 0x09, 0xB0, 0x79, 0x00, 0xCC, 0x4A, + 0x54, 0x66, 0x4A, 0x89, 0xC7, 0x01, 0xFC, 0x16, 0x18, 0xE6, 0x66, 0x30, + 0xB9, 0x58, 0x72, 0xA1, 0xEE, 0xCA, 0xA7, 0xD5, 0x24, 0xA7, 0x3A, 0x53, + 0xF4, 0x3A, 0x0B, 0x4D, 0xC9, 0xAC, 0xC3, 0xAE, 0xB0, 0x1B, 0x02, 0x79, + 0xBC, 0x92, 0xAE, 0xEA, 0x55, 0xC0, 0xCD, 0xC0, 0x9D, 0x7C, 0x76, 0x2D, + 0xBE, 0xCC, 0xD4, 0x89, 0xC6, 0xEC, 0x4A, 0x32, 0xD3, 0xF5, 0x35, 0x79, + 0xED, 0x5F, 0xBC, 0xB6, 0x3D, 0xFD, 0x63, 0x22, 0x72, 0x50, 0xF7, 0xC2, + 0x19, 0x22, 0xA5, 0x8B, 0xCB, 0x65, 0x15, 0xB1, 0xD3, 0xE5, 0xB2, 0xA6, + 0x6C, 0x80, 0x59, 0x15, 0x14, 0x96, 0xB4, 0x22, 0x82, 0x5A, 0xB9, 0xDB, + 0x2E, 0x12, 0x0D, 0x81, 0x00, 0xD1, 0x55, 0xB6, 0xDD, 0x14, 0xEF, 0xF7, + 0xE3, 0x6E, 0x8A, 0x08, 0x70, 0x7F, 0xB7, 0x53, 0xAF, 0xE5, 0x0F, 0xB0, + 0xAE, 0x32, 0xAF, 0xE9, 0xFB, 0xA7, 0xF3, 0xBC, 0xE4, 0x35, 0x77, 0xA7, + 0xFB, 0xF5, 0x7C, 0x7A, 0x49, 0x3A, 0xAF, 0x79, 0x37, 0x84, 0x35, 0x4B, + 0x0C, 0x34, 0xC6, 0x30, 0x44, 0x56, 0xB3, 0xCB, 0x9C, 0x96, 0x2C, 0xE3, + 0x10, 0x98, 0xF0, 0xE5, 0xB2, 0xCE, 0xAB, 0x7A, 0x1C, 0x36, 0x02, 0x64, + 0xD1, 0xD3, 0xB2, 0x1E, 0xA6, 0xE8, 0x45, 0xD3, 0x00, 0x40, 0x55, 0x3C, + 0x92, 0x20, 0x8B, 0x8A, 0xD9, 0x69, 0x4E, 0x39, 0xEB, 0x57, 0xEF, 0x0F, + 0xF3, 0x9A, 0xC7, 0x01, 0x98, 0xC9, 0xC0, 0xBE, 0xFB, 0x74, 0x12, 0x55, + 0x42, 0xF4, 0x1A, 0x1E, 0x81, 0x79, 0x4E, 0x39, 0x08, 0x21, 0x96, 0xD8, + 0x24, 0x2F, 0x70, 0x10, 0x03, 0x0D, 0x4C, 0x2A, 0x7A, 0xDC, 0x0D, 0xC7, + 0xFD, 0xF8, 0xFD, 0xE3, 0xD9, 0x0C, 0xB8, 0x17, 0x38, 0xE0, 0x58, 0x0F, + 0x84, 0xF8, 0xEE, 0x38, 0x8E, 0x43, 0x78, 0x7C, 0x99, 0xA3, 0xE7, 0x45, + 0x11, 0x22, 0x22, 0x33, 0x0D, 0x43, 0x98, 0xA6, 0x61, 0x27, 0xE2, 0xBA, + 0xCF, 0x65, 0x5E, 0x73, 0x96, 0x69, 0x1A, 0x52, 0xCA, 0x22, 0x1A, 0x63, + 0xF0, 0x1A, 0x4D, 0x0B, 0xD3, 0x71, 0x3F, 0x8E, 0x31, 0x22, 0x40, 0x56, + 0x4D, 0x39, 0xC7, 0x18, 0x22, 0x91, 0xAA, 0x0D, 0x43, 0x30, 0xB0, 0x9C, + 0x35, 0xC6, 0xE0, 0xF8, 0x15, 0xA3, 0x6F, 0x25, 0xF8, 0xBD, 0x76, 0xBD, + 0x92, 0x52, 0xEB, 0xE1, 0x61, 0xE5, 0x08, 0x5D, 0xD7, 0xBC, 0x2C, 0x49, + 0x3C, 0x1B, 0xB1, 0x16, 0x7F, 0xF7, 0x8C, 0xDF, 0x2C, 0xCA, 0x80, 0xA4, + 0x2D, 0x61, 0x11, 0x44, 0x8C, 0x89, 0x32, 0x88, 0x97, 0x61, 0x59, 0x2D, + 0x4F, 0xD3, 0xF0, 0xD7, 0xFF, 0xFE, 0xBF, 0xFC, 0x9B, 0x7F, 0xF7, 0x2B, + 0x95, 0xFC, 0xF9, 0xE9, 0xE5, 0x1F, 0xFF, 0xE2, 0xCB, 0x6F, 0x1F, 0x2F, + 0x77, 0xC7, 0xBD, 0xE4, 0x84, 0x48, 0x4F, 0x4F, 0xCF, 0xEF, 0xEE, 0x8F, + 0x87, 0xDD, 0xA8, 0x39, 0x7F, 0xF3, 0xCD, 0xE7, 0xF9, 0x32, 0x7F, 0xF5, + 0xE5, 0x87, 0xAF, 0xBE, 0xFC, 0x70, 0x7F, 0x77, 0x20, 0x22, 0x11, 0x05, + 0x28, 0x97, 0x15, 0x62, 0xBD, 0x29, 0xBC, 0xEA, 0xFC, 0x2D, 0x9C, 0xB6, + 0x70, 0xA9, 0x8F, 0x2C, 0xAB, 0x42, 0x06, 0x35, 0x23, 0xC0, 0x88, 0x01, + 0x4A, 0xF6, 0x40, 0xC1, 0xBD, 0x1B, 0x41, 0xDD, 0x54, 0x1B, 0xA8, 0xF1, + 0xAC, 0x1B, 0xC2, 0xF9, 0x17, 0x14, 0xCC, 0x4A, 0x84, 0x94, 0x7F, 0x40, + 0xB0, 0x45, 0x10, 0xF4, 0xF1, 0x9C, 0x3D, 0x2A, 0x81, 0x95, 0xCE, 0x5A, + 0x65, 0x91, 0xEB, 0x1E, 0xAF, 0x40, 0x07, 0x11, 0xCB, 0xC5, 0xF7, 0x1B, + 0x5E, 0x39, 0xDE, 0x5D, 0xD7, 0x69, 0xAA, 0x1F, 0xBC, 0x46, 0xB1, 0x2B, + 0x08, 0xAB, 0x2F, 0x43, 0xB5, 0x04, 0x6B, 0x7B, 0x44, 0x4C, 0x1E, 0x8F, + 0x6A, 0x66, 0x08, 0x30, 0x0E, 0x83, 0xA8, 0xE6, 0x9C, 0x03, 0x23, 0x53, + 0x09, 0xC7, 0xC7, 0x9A, 0xA7, 0x85, 0x08, 0x5C, 0xAE, 0xE4, 0x43, 0x53, + 0xF3, 0x7B, 0xC2, 0x01, 0xA1, 0x95, 0xB6, 0x8F, 0x91, 0x01, 0x01, 0xD0, + 0x88, 0x30, 0xC4, 0x20, 0xA2, 0x29, 0xE7, 0x10, 0x02, 0x11, 0xA8, 0x34, + 0xC5, 0xB0, 0x5C, 0x15, 0xAA, 0x9D, 0xD7, 0xAB, 0xAD, 0x19, 0xB8, 0x2F, + 0xD2, 0x0F, 0xC8, 0xC8, 0x5A, 0xE2, 0x8A, 0x5E, 0xCF, 0x25, 0xAC, 0x29, + 0x13, 0x33, 0x98, 0x18, 0x40, 0x0C, 0xC6, 0xF5, 0x2A, 0xC6, 0x8A, 0x62, + 0xE6, 0x52, 0x1D, 0x00, 0x44, 0xCC, 0x2C, 0x57, 0xC7, 0xA1, 0x21, 0x51, + 0x0C, 0x01, 0xAE, 0x31, 0xAB, 0x35, 0xDD, 0xEF, 0x0A, 0x16, 0x2F, 0x80, + 0xC3, 0x27, 0x30, 0x53, 0x8C, 0x1E, 0x60, 0x51, 0x72, 0xD9, 0x98, 0x39, + 0x30, 0x8B, 0x64, 0x8F, 0x98, 0x55, 0xB3, 0x7D, 0x18, 0x76, 0x63, 0x74, + 0xE7, 0xC6, 0x0F, 0x8F, 0xE7, 0x24, 0xA2, 0x6A, 0x29, 0xC9, 0x38, 0x06, + 0x26, 0x72, 0xE5, 0xE2, 0xFD, 0xC3, 0xBE, 0xAA, 0xE9, 0x08, 0x60, 0x97, + 0xCB, 0x1A, 0x89, 0x99, 0x68, 0x8C, 0x9C, 0x72, 0xFE, 0xE1, 0x79, 0x9E, + 0x93, 0xF2, 0xF5, 0x29, 0xBB, 0xEF, 0x8D, 0x93, 0xAF, 0x17, 0x41, 0x44, + 0xC0, 0x2C, 0x7E, 0x3F, 0x88, 0x30, 0xD3, 0x5D, 0xE4, 0x35, 0x6B, 0xCA, + 0x25, 0x3B, 0x03, 0xB1, 0x08, 0x75, 0x42, 0x04, 0xC3, 0xEF, 0x9F, 0xCE, + 0x53, 0x0C, 0x00, 0xB0, 0x8A, 0x78, 0x42, 0x28, 0x81, 0x4B, 0x78, 0x19, + 0xA6, 0xE1, 0x70, 0x1C, 0x98, 0x69, 0x8C, 0xC1, 0x35, 0x84, 0xCB, 0xBC, + 0x9E, 0xE6, 0xD5, 0x45, 0xF9, 0x79, 0x4D, 0x84, 0x5E, 0xF3, 0x03, 0xE2, + 0x40, 0x4B, 0x12, 0x44, 0x1C, 0x23, 0x65, 0xD1, 0x77, 0xC7, 0x69, 0x1A, + 0xC2, 0xE7, 0x97, 0x59, 0xCC, 0x2D, 0x6B, 0x30, 0xB3, 0x18, 0xC8, 0xB3, + 0x35, 0x4B, 0xB9, 0x3B, 0x35, 0x04, 0x18, 0x03, 0x0F, 0x81, 0xCF, 0x73, + 0x5A, 0xD6, 0x7C, 0xB7, 0x1F, 0x08, 0x51, 0x6A, 0x64, 0x03, 0x11, 0x8F, + 0x63, 0xF4, 0xF8, 0x1F, 0x51, 0x71, 0xB5, 0x68, 0xB7, 0x1B, 0xF6, 0xBB, + 0xE1, 0x74, 0xB2, 0x18, 0x78, 0x18, 0x02, 0x18, 0x9C, 0xE7, 0xF5, 0x34, + 0x2F, 0x39, 0xDB, 0x1A, 0xF3, 0x61, 0x3F, 0x5D, 0xE6, 0xF5, 0xB2, 0xAC, + 0x88, 0x28, 0x59, 0x60, 0xC5, 0xE3, 0x7E, 0xF4, 0x94, 0x06, 0x55, 0x13, + 0x55, 0xE6, 0xA2, 0x3B, 0xAB, 0x6A, 0xCE, 0x42, 0x14, 0xFB, 0x95, 0x74, + 0x13, 0x58, 0x04, 0x10, 0x21, 0x67, 0x4D, 0x29, 0x7B, 0xE6, 0x19, 0x00, + 0xA8, 0x6A, 0xF2, 0xF3, 0x50, 0xC4, 0xF3, 0xBC, 0xC4, 0x18, 0x48, 0xC0, + 0x5D, 0x6C, 0x6C, 0xE8, 0x7E, 0xAA, 0x94, 0x25, 0xAD, 0x39, 0xAB, 0x9B, + 0xF6, 0x06, 0x48, 0x7F, 0xFF, 0xC7, 0xEF, 0xFE, 0xEF, 0xFF, 0xE7, 0xDF, + 0x32, 0x0D, 0x4F, 0x2F, 0x2F, 0x5F, 0x7F, 0xF5, 0xFE, 0xDD, 0xC3, 0xF1, + 0x37, 0x7F, 0xFC, 0x74, 0x38, 0xEC, 0x41, 0x25, 0x06, 0x3C, 0xEC, 0x06, + 0x53, 0xFD, 0xE2, 0xFD, 0x7D, 0x5E, 0xD7, 0x65, 0x1A, 0x44, 0xF5, 0x9B, + 0x6F, 0x3F, 0x7F, 0xFB, 0xFD, 0xE3, 0xF1, 0xB8, 0xFB, 0xE5, 0x2F, 0x7E, + 0xFA, 0xFE, 0xE1, 0xDE, 0x0B, 0x54, 0x41, 0xDD, 0xAF, 0xA6, 0x3C, 0x99, + 0xBD, 0xC6, 0x25, 0x88, 0x31, 0x28, 0x08, 0x22, 0x32, 0x21, 0xBA, 0x83, + 0x58, 0xCD, 0x4A, 0x91, 0x0E, 0xD8, 0xC0, 0xE6, 0x9A, 0x72, 0x4A, 0xDC, + 0xC6, 0x2B, 0xFF, 0x3D, 0x22, 0x1A, 0x01, 0x6A, 0xFB, 0xAA, 0x91, 0x47, + 0xB5, 0x59, 0x3D, 0x5D, 0xAD, 0xE6, 0xE9, 0xD6, 0x9A, 0x33, 0xAF, 0xBA, + 0x42, 0xA7, 0x37, 0x03, 0xEC, 0x35, 0xB5, 0x7E, 0x14, 0x9D, 0xCA, 0x79, + 0x7D, 0xA9, 0x5F, 0x3F, 0x52, 0xBB, 0x6D, 0xCA, 0xD9, 0xBD, 0x37, 0xD3, + 0x6A, 0x9B, 0x0D, 0x8E, 0xD5, 0xD3, 0xA8, 0xDC, 0x6D, 0x15, 0x39, 0x78, + 0xFD, 0x30, 0x62, 0x22, 0x26, 0x44, 0x18, 0x30, 0x2C, 0x0B, 0x22, 0x89, + 0x2A, 0x96, 0xE2, 0x48, 0x56, 0x4A, 0x78, 0xC5, 0x2E, 0xC1, 0xA3, 0x95, + 0x17, 0xD7, 0x1A, 0xEB, 0xDB, 0xD8, 0x87, 0x19, 0xDD, 0x29, 0xE6, 0xB7, + 0xE2, 0x04, 0x00, 0x04, 0x90, 0x2C, 0x02, 0x8A, 0x25, 0xC9, 0x89, 0xA0, + 0x5A, 0xCD, 0xFD, 0x94, 0x0B, 0x4A, 0x97, 0x1B, 0x39, 0x01, 0x6B, 0x1E, + 0xBB, 0x07, 0x70, 0x7B, 0xA1, 0xC0, 0xA2, 0x91, 0x65, 0xCF, 0x1B, 0xF0, + 0x02, 0x4F, 0x55, 0xB7, 0x12, 0x31, 0x22, 0x2A, 0x09, 0x13, 0x06, 0x49, + 0x64, 0x5D, 0x73, 0x4A, 0xB9, 0x64, 0x95, 0x0F, 0x21, 0x56, 0x76, 0xBD, + 0xC9, 0x8A, 0xC0, 0xAE, 0x5E, 0x6D, 0x2F, 0xC0, 0x7B, 0x59, 0xA4, 0xAA, + 0xAE, 0x88, 0xB9, 0x58, 0xF2, 0x8C, 0x9D, 0x69, 0x8C, 0x31, 0x70, 0xCA, + 0xE5, 0xBA, 0x4C, 0x72, 0xFF, 0x06, 0xA1, 0xA8, 0x7E, 0xF5, 0xE1, 0x0E, + 0xB1, 0x5C, 0x9E, 0xE8, 0x90, 0xBA, 0xAC, 0x69, 0x37, 0x0D, 0x7E, 0xB5, + 0x75, 0xED, 0x08, 0xC7, 0x71, 0xF0, 0xAE, 0x39, 0x84, 0x8F, 0xEF, 0x0E, + 0xFF, 0x03, 0xC0, 0xEF, 0xBE, 0x7D, 0x5E, 0x92, 0xF8, 0xB1, 0x60, 0xE0, + 0xE2, 0x96, 0x13, 0xBF, 0xAB, 0xDC, 0xCC, 0x0C, 0x22, 0x93, 0xDF, 0x44, + 0xE7, 0x39, 0xEA, 0xAE, 0x30, 0x67, 0x91, 0xE7, 0x4B, 0x2A, 0x3A, 0x51, + 0x15, 0xA8, 0x84, 0x58, 0x2A, 0x53, 0x13, 0x6A, 0x56, 0x53, 0xCB, 0xC5, + 0x07, 0x6A, 0x84, 0x98, 0x92, 0xBE, 0xD8, 0x42, 0x88, 0xBB, 0x29, 0x0C, + 0x43, 0x50, 0x95, 0xCB, 0x65, 0x59, 0xB2, 0x44, 0x26, 0x00, 0x58, 0x45, + 0x09, 0x91, 0x09, 0x87, 0xC8, 0xFB, 0x71, 0xD8, 0xEF, 0xE2, 0xBC, 0xE6, + 0xE7, 0xF3, 0xAA, 0xAA, 0xC7, 0xDD, 0x10, 0x03, 0xCF, 0x6B, 0x56, 0xD5, + 0x35, 0xE5, 0xF3, 0x92, 0x44, 0x94, 0x18, 0x2D, 0x03, 0x00, 0x10, 0x13, + 0xA2, 0x31, 0x53, 0xE0, 0x00, 0x06, 0xBB, 0x31, 0xCC, 0x4B, 0x32, 0x33, + 0x44, 0x3A, 0x5D, 0xD6, 0xC3, 0x6E, 0xF0, 0x80, 0x0F, 0x2D, 0xF5, 0xB9, + 0x8A, 0x1F, 0xDD, 0x0C, 0x44, 0x6C, 0xBF, 0x8B, 0x66, 0x96, 0xB3, 0x1E, + 0x0E, 0x93, 0x16, 0x7C, 0xB2, 0x21, 0xF2, 0x18, 0x03, 0x98, 0x78, 0xA9, + 0xA4, 0xC0, 0xB4, 0x9F, 0x06, 0x00, 0x18, 0x62, 0xF0, 0x68, 0xC9, 0x65, + 0xCD, 0x39, 0x8B, 0x19, 0xDC, 0x1D, 0x77, 0x66, 0x7A, 0x3E, 0x2F, 0x59, + 0xF4, 0xB2, 0xA4, 0x94, 0xF2, 0xD7, 0x1F, 0xEF, 0xA1, 0x5A, 0x67, 0xBE, + 0xC3, 0x29, 0x65, 0x0F, 0x18, 0x46, 0xC3, 0x5C, 0xBD, 0x7B, 0x8D, 0x79, + 0x08, 0x49, 0x4D, 0x93, 0x28, 0xA0, 0x04, 0x26, 0x37, 0x18, 0x6A, 0x69, + 0x0A, 0x23, 0x04, 0x43, 0xF0, 0x9B, 0xA2, 0x55, 0xED, 0x70, 0x18, 0xFF, + 0xFA, 0xAF, 0xFF, 0x46, 0x52, 0x4E, 0x26, 0xA2, 0xF2, 0xB3, 0xAF, 0x3F, + 0x20, 0xDA, 0x65, 0x5E, 0xEE, 0xEE, 0xEF, 0xC7, 0x61, 0x37, 0x0D, 0x61, + 0x1A, 0x07, 0x04, 0x41, 0x10, 0xAF, 0x6C, 0x35, 0xAF, 0x19, 0x10, 0x41, + 0xE0, 0xD3, 0x0F, 0xCF, 0x4F, 0x4F, 0xA7, 0xFF, 0xE5, 0x5F, 0xFE, 0xD3, + 0xBB, 0xE3, 0x31, 0xE7, 0x8C, 0x08, 0x9E, 0xD2, 0x56, 0xAD, 0xC3, 0xCA, + 0xAB, 0xD7, 0xD2, 0xDB, 0xB1, 0x85, 0x09, 0x03, 0x85, 0x92, 0x46, 0x5F, + 0x45, 0xBE, 0x07, 0xA4, 0x02, 0x76, 0xEE, 0x76, 0x28, 0x59, 0xD1, 0x85, + 0x67, 0x3A, 0x4C, 0xB9, 0x82, 0x18, 0x76, 0xD3, 0x1F, 0xA0, 0x5E, 0xB4, + 0xD7, 0x8E, 0xF6, 0x0A, 0x98, 0xE2, 0x66, 0xB8, 0x22, 0x20, 0x02, 0x2A, + 0x1A, 0x60, 0xF1, 0x38, 0xB5, 0x76, 0x6E, 0xB4, 0xB0, 0xD7, 0x6E, 0x9C, + 0x0A, 0x73, 0x6E, 0x59, 0xC1, 0x66, 0x39, 0x03, 0x6C, 0x75, 0xDD, 0xBB, + 0x46, 0xEC, 0x3A, 0xCB, 0xA7, 0x5B, 0x07, 0x8F, 0x7B, 0x29, 0xF6, 0x6C, + 0x08, 0x61, 0xF0, 0xEB, 0x85, 0x10, 0x11, 0x81, 0x18, 0x87, 0x21, 0x10, + 0xA1, 0x7B, 0x95, 0x62, 0x64, 0x04, 0x58, 0x56, 0x6D, 0x3A, 0xB8, 0xBB, + 0x23, 0xE8, 0x55, 0xA8, 0x8D, 0x8F, 0x99, 0x88, 0x10, 0xA1, 0x7A, 0xC0, + 0xC0, 0xA5, 0x85, 0xD6, 0x04, 0x35, 0x33, 0xCD, 0x52, 0xEC, 0x64, 0xF5, + 0x50, 0x7E, 0x93, 0x36, 0xA8, 0x36, 0x47, 0x00, 0x68, 0xC1, 0xA3, 0x6D, + 0xE3, 0x00, 0xAC, 0xE6, 0xA8, 0x77, 0x11, 0x24, 0xCC, 0x61, 0x08, 0x7E, + 0x70, 0x89, 0xCE, 0xEA, 0x39, 0x4B, 0xCA, 0x12, 0x03, 0x23, 0x92, 0x8A, + 0x99, 0xA9, 0xA8, 0xE5, 0x2C, 0xAA, 0x8A, 0x84, 0x21, 0xD0, 0x38, 0xC6, + 0x18, 0xD9, 0x15, 0xA1, 0xAD, 0xBF, 0xEB, 0x55, 0xEE, 0x77, 0xE5, 0x66, + 0xD7, 0x1D, 0x25, 0xD7, 0x35, 0xA9, 0x99, 0x1B, 0x83, 0x50, 0x15, 0x1F, + 0x2E, 0x57, 0xD7, 0x11, 0x22, 0x84, 0x40, 0xCC, 0x94, 0x45, 0x55, 0x8C, + 0x88, 0xA6, 0x29, 0x56, 0xCF, 0x20, 0x22, 0xE2, 0x6E, 0x37, 0xF6, 0x52, + 0xCB, 0x1F, 0x22, 0x24, 0x2A, 0x27, 0x59, 0x81, 0xF9, 0xCB, 0x0F, 0xB8, + 0x9F, 0x86, 0x25, 0xE5, 0x1F, 0x9E, 0x2F, 0xDF, 0x7E, 0x3E, 0xAF, 0x59, + 0xA6, 0x21, 0xEC, 0x86, 0xF0, 0x32, 0x27, 0xBF, 0xBD, 0x6D, 0x8A, 0xEC, + 0x94, 0xE0, 0x46, 0xAE, 0xAA, 0xAD, 0x59, 0x5F, 0x2E, 0x8B, 0xB7, 0x20, + 0xAA, 0xE0, 0x57, 0x67, 0x16, 0x92, 0xF4, 0xCB, 0x7A, 0xDA, 0x1D, 0x9D, + 0xE5, 0xA4, 0xD4, 0xCC, 0xC4, 0xC5, 0x6A, 0xB6, 0x25, 0xE5, 0x65, 0x0D, + 0x81, 0xED, 0xB8, 0x1F, 0xC1, 0x40, 0xD7, 0x4C, 0x84, 0x49, 0x0C, 0x00, + 0x99, 0xF0, 0x30, 0xC5, 0x0F, 0xF7, 0x7B, 0x2F, 0xD9, 0x38, 0x0D, 0x51, + 0xC5, 0x2E, 0x4B, 0x42, 0x84, 0xE7, 0xF3, 0x0C, 0x80, 0xA2, 0x10, 0x39, + 0xA4, 0x24, 0x29, 0x79, 0x74, 0x08, 0x7B, 0x6C, 0x84, 0x07, 0xDF, 0x13, + 0xC2, 0xFB, 0xE3, 0xEE, 0xC3, 0xC3, 0x7E, 0x4D, 0x32, 0x0C, 0x4C, 0x44, + 0xDF, 0x7F, 0x7E, 0x11, 0xD5, 0x2C, 0x9A, 0x92, 0xC4, 0x58, 0xDC, 0xC3, + 0x8D, 0x76, 0x99, 0x69, 0x5E, 0xD6, 0x79, 0x49, 0xF7, 0xC7, 0x9D, 0x64, + 0x5F, 0x7F, 0x03, 0xB0, 0x61, 0x88, 0x5F, 0x8C, 0x83, 0xBF, 0x96, 0xB3, + 0x8C, 0x63, 0xA0, 0x7A, 0x46, 0x96, 0x73, 0x06, 0xB0, 0x2C, 0x32, 0xC4, + 0x70, 0x77, 0x9C, 0x98, 0xE9, 0xE5, 0xB4, 0xBC, 0x9C, 0x97, 0x18, 0x78, + 0x08, 0xCC, 0x84, 0xD6, 0xD5, 0x41, 0xF4, 0x12, 0x26, 0x2F, 0xE7, 0x79, + 0x4D, 0xE2, 0x27, 0xBF, 0xDE, 0x26, 0x22, 0xC4, 0x10, 0x54, 0xD5, 0x80, + 0x52, 0xCE, 0x59, 0x8C, 0x99, 0x45, 0xD4, 0x53, 0xD0, 0xCE, 0x75, 0x6D, + 0x63, 0xE0, 0x21, 0xFA, 0x05, 0x87, 0x08, 0x02, 0xCC, 0xFC, 0xC7, 0x3F, + 0x7D, 0xF7, 0x9B, 0xDF, 0xFE, 0xF1, 0xAB, 0xF7, 0xF7, 0xFF, 0xFF, 0xDF, + 0xFD, 0xE1, 0xCF, 0x7F, 0xF9, 0xF5, 0x71, 0x37, 0x7D, 0xF7, 0xE9, 0x05, + 0x89, 0x43, 0xE0, 0x87, 0xFB, 0xE3, 0xDD, 0x61, 0x42, 0x30, 0x42, 0x3C, + 0x9F, 0x66, 0x2D, 0xF5, 0x8F, 0x0B, 0xB7, 0xC6, 0x18, 0xB3, 0xC8, 0xAF, + 0x7E, 0xFD, 0xBB, 0xFF, 0xF1, 0x9F, 0xFE, 0xE3, 0xCA, 0xC9, 0x56, 0x63, + 0x90, 0xAC, 0x53, 0xC8, 0x3A, 0x8B, 0x01, 0xBD, 0xCC, 0x3C, 0x11, 0x51, + 0x43, 0x31, 0xD7, 0x1C, 0x9C, 0x3F, 0xFC, 0x14, 0x9F, 0x90, 0x7A, 0x0F, + 0x4D, 0x71, 0x13, 0xAB, 0x5F, 0x3D, 0x70, 0x93, 0xE9, 0x59, 0xE8, 0x1D, + 0x8A, 0x51, 0xDB, 0x13, 0xFC, 0xF6, 0x6B, 0x65, 0xE2, 0x96, 0x4F, 0x80, + 0xC4, 0xED, 0x6E, 0x5D, 0x28, 0x46, 0xE6, 0xAD, 0xC7, 0xEB, 0xEA, 0xDC, + 0x13, 0x36, 0x14, 0xF3, 0xD3, 0x52, 0x30, 0xB3, 0x7A, 0x1B, 0xAD, 0xBF, + 0x6D, 0x57, 0xB7, 0xEC, 0xDE, 0xAA, 0x95, 0xAF, 0x1A, 0x27, 0x40, 0x2C, + 0xA5, 0x2B, 0x7B, 0xCC, 0xB4, 0x7A, 0x87, 0x98, 0xFA, 0x7D, 0xB7, 0x35, + 0x21, 0xDF, 0x1F, 0x57, 0x29, 0x42, 0xF5, 0xF4, 0x5B, 0xF7, 0x54, 0x10, + 0x04, 0xC4, 0x37, 0x00, 0xB4, 0x9E, 0xCF, 0x94, 0x10, 0x0A, 0xC5, 0x16, + 0x1D, 0x52, 0x1E, 0x22, 0xAA, 0xB6, 0x3B, 0xD6, 0xC9, 0x9A, 0x01, 0xFA, + 0xAB, 0x35, 0xE2, 0x8A, 0xDA, 0x84, 0xDB, 0x88, 0x09, 0x31, 0x7C, 0xFC, + 0x70, 0x87, 0x08, 0xEB, 0x9A, 0x2F, 0xF3, 0x5A, 0xE5, 0x18, 0x21, 0x60, + 0x4A, 0x69, 0x59, 0xD2, 0x65, 0x4D, 0x08, 0x38, 0x8D, 0xB1, 0xA9, 0x70, + 0x6E, 0x7A, 0x10, 0x5D, 0xD5, 0xC6, 0x7B, 0x73, 0xD5, 0x7A, 0x55, 0xB6, + 0x47, 0x34, 0x66, 0x0C, 0x91, 0xE7, 0x39, 0x65, 0xD1, 0xC7, 0x97, 0x8B, + 0x9A, 0x21, 0x20, 0x13, 0xEE, 0xC6, 0x38, 0x4D, 0x03, 0x13, 0x7A, 0x85, + 0x6F, 0x00, 0x8B, 0x81, 0x62, 0x18, 0xDA, 0xAC, 0xDA, 0xFD, 0x11, 0xAD, + 0xDF, 0x5E, 0x82, 0x59, 0xBD, 0xEC, 0xA0, 0x2C, 0x74, 0x08, 0xC7, 0x03, + 0x8E, 0x39, 0x8C, 0x91, 0xF7, 0x63, 0xFC, 0xE6, 0xF3, 0x29, 0x8B, 0x7E, + 0xF9, 0x6E, 0x4F, 0x4F, 0x97, 0xF3, 0x92, 0x93, 0x1F, 0x25, 0x5B, 0x69, + 0xF0, 0xB2, 0xE4, 0x97, 0x39, 0xA9, 0x9A, 0xC7, 0x6E, 0x72, 0x6B, 0x1C, + 0xAB, 0x33, 0x1F, 0x4B, 0xAA, 0x84, 0x1F, 0x1E, 0x88, 0x0B, 0xDE, 0x72, + 0x04, 0x01, 0x0A, 0x10, 0xD8, 0x53, 0x47, 0xC9, 0xC3, 0x6E, 0x10, 0x3C, + 0x49, 0x01, 0x01, 0xF4, 0x30, 0x05, 0x46, 0x98, 0x86, 0x30, 0xC4, 0x30, + 0x4D, 0x71, 0x59, 0xF3, 0xE9, 0xB2, 0x64, 0x11, 0x22, 0x3C, 0xCF, 0x49, + 0x54, 0x87, 0x18, 0x3C, 0xCA, 0xDF, 0x6B, 0x01, 0xCD, 0x4B, 0x5E, 0x53, + 0x1E, 0x87, 0x90, 0xB2, 0x0E, 0x91, 0x5D, 0x27, 0x72, 0x99, 0x34, 0x46, + 0x1E, 0xC7, 0x18, 0x98, 0x87, 0x2F, 0x1F, 0x56, 0xD7, 0x4A, 0xCA, 0xE8, + 0xAE, 0x96, 0x5D, 0x44, 0x5E, 0xCE, 0xCB, 0xF3, 0x69, 0xB9, 0x2C, 0xD9, + 0x4B, 0x3C, 0xC4, 0xC0, 0xFB, 0x69, 0x18, 0x47, 0x8C, 0x31, 0x20, 0x92, + 0x9A, 0x86, 0x00, 0x35, 0x58, 0x1F, 0x96, 0x79, 0x75, 0xD7, 0xD2, 0x71, + 0x37, 0xC5, 0x81, 0x89, 0x28, 0xE7, 0x7C, 0x99, 0xD3, 0xB2, 0xE6, 0xAC, + 0x32, 0xC6, 0x80, 0x88, 0xF3, 0x92, 0xFC, 0x14, 0x72, 0x1C, 0x82, 0x19, + 0x88, 0x9A, 0xA8, 0x2D, 0xAB, 0x88, 0x9A, 0xCF, 0x1D, 0xCB, 0x21, 0x5D, + 0x71, 0x23, 0x2C, 0x6B, 0x26, 0x84, 0x21, 0x84, 0x25, 0xE5, 0x24, 0x12, + 0x98, 0x44, 0xF5, 0x3C, 0x67, 0x26, 0x1C, 0x23, 0xA7, 0x1C, 0x62, 0x70, + 0x59, 0x28, 0xD3, 0x34, 0xFC, 0xE1, 0x0F, 0x7F, 0xCA, 0x49, 0x3E, 0x3D, + 0x9F, 0x8E, 0x87, 0x09, 0x11, 0x9F, 0xCE, 0xF3, 0x9F, 0xBE, 0x7F, 0xDC, + 0xED, 0xA6, 0xC3, 0x6E, 0x22, 0x66, 0x62, 0x9E, 0x22, 0xA7, 0x94, 0x55, + 0x35, 0x46, 0x4E, 0x97, 0x25, 0x84, 0xC0, 0xC4, 0xBE, 0xD0, 0x88, 0xF8, + 0xEB, 0xDF, 0xFC, 0xE9, 0x27, 0x5F, 0x7F, 0xFC, 0xE2, 0xE3, 0x07, 0x3F, + 0xD6, 0x80, 0x4E, 0xF9, 0x29, 0x6C, 0x59, 0xB6, 0xCB, 0x29, 0x84, 0x02, + 0x73, 0x8B, 0x38, 0x75, 0x65, 0x01, 0x4A, 0xCC, 0xBF, 0x9A, 0x1A, 0x81, + 0x9B, 0x26, 0xB6, 0x1D, 0x5E, 0x6E, 0xF9, 0x46, 0xE2, 0xAC, 0x04, 0x57, + 0x68, 0xD5, 0x63, 0x03, 0xFE, 0xD8, 0xAF, 0x4E, 0x52, 0x25, 0xDA, 0xA3, + 0xD9, 0xBF, 0x88, 0x56, 0xCA, 0xB5, 0x13, 0x54, 0x06, 0xED, 0x4C, 0xC8, + 0x4D, 0x44, 0xBD, 0xC9, 0x5F, 0x85, 0x8D, 0x01, 0xA4, 0xFB, 0xF8, 0xE6, + 0x05, 0xEC, 0x73, 0x8F, 0xAF, 0x91, 0x11, 0xBB, 0x07, 0xC0, 0x72, 0xCE, + 0x4C, 0xCC, 0x25, 0x2A, 0x4A, 0x3D, 0x1C, 0xA3, 0x59, 0x69, 0xBE, 0x1A, + 0x8C, 0x68, 0x58, 0x2E, 0x60, 0xAC, 0x42, 0xFD, 0x8A, 0xBB, 0x01, 0xD1, + 0xCC, 0x23, 0x2A, 0x10, 0x19, 0x98, 0xB7, 0xC8, 0x61, 0x37, 0x39, 0x89, + 0xA9, 0x89, 0x9A, 0x2D, 0x0E, 0x0C, 0xB6, 0x29, 0xDF, 0x3E, 0x7E, 0xF3, + 0x56, 0x47, 0xDB, 0xCE, 0x75, 0x54, 0x4E, 0x52, 0xCA, 0xB7, 0xC2, 0x65, + 0x5E, 0x87, 0xC0, 0xCB, 0x9A, 0x3E, 0x3F, 0x5F, 0xFC, 0xE2, 0x48, 0xD7, + 0x1E, 0x93, 0x88, 0x88, 0x82, 0xC1, 0x34, 0x06, 0x3F, 0x9E, 0xD8, 0x4D, + 0x43, 0x8C, 0xE5, 0x16, 0x81, 0x37, 0xBA, 0x7B, 0x65, 0xCC, 0x43, 0x35, + 0x24, 0xEB, 0x36, 0x94, 0x6D, 0x55, 0x35, 0x0F, 0x1A, 0x4C, 0xA2, 0x84, + 0x94, 0x72, 0xF6, 0xE8, 0x50, 0x00, 0x24, 0xA6, 0x10, 0xC8, 0xCC, 0x52, + 0xCA, 0x5B, 0x42, 0xE9, 0x8F, 0x84, 0x08, 0xDD, 0xF4, 0x6B, 0x66, 0x5E, + 0x96, 0x2E, 0xAD, 0x19, 0x10, 0x3C, 0xE5, 0x22, 0x86, 0xE0, 0xF2, 0xE6, + 0xDD, 0x71, 0xF7, 0xF9, 0xE5, 0xB2, 0x1B, 0xE3, 0x71, 0x3F, 0x7C, 0x7A, + 0x3A, 0xFF, 0xF0, 0xBC, 0x10, 0x61, 0x56, 0x45, 0x65, 0x00, 0xBB, 0xAC, + 0x19, 0xAC, 0xC4, 0xA9, 0xD5, 0x92, 0x38, 0x1B, 0x48, 0xD7, 0xDE, 0x41, + 0x51, 0xD7, 0xE4, 0x76, 0xC6, 0x95, 0xC7, 0x17, 0x3D, 0x46, 0x4C, 0xED, + 0xF1, 0x34, 0xA7, 0x2C, 0x4F, 0xE7, 0xE5, 0xEB, 0xF7, 0xC7, 0xFB, 0xE3, + 0xEE, 0xB2, 0xAC, 0x00, 0x91, 0x10, 0xA7, 0x18, 0xC6, 0x21, 0xB8, 0xCB, + 0x3C, 0x30, 0x05, 0x66, 0x35, 0xB8, 0xAC, 0x79, 0x37, 0x84, 0xF3, 0x92, + 0x4F, 0xF3, 0x7A, 0xB7, 0x1B, 0x03, 0xB3, 0xA8, 0x39, 0xB6, 0x9C, 0xE6, + 0x75, 0xCD, 0xB2, 0x1B, 0xE3, 0xC7, 0x87, 0xBD, 0x99, 0xFD, 0xF1, 0xFB, + 0x67, 0x97, 0x57, 0x7E, 0xB6, 0xE6, 0x11, 0x09, 0xE3, 0xB8, 0xE5, 0x48, + 0xB4, 0x15, 0xF0, 0x05, 0x9F, 0x97, 0x9C, 0xB3, 0x4E, 0x63, 0x5C, 0xD6, + 0x34, 0xC6, 0x00, 0x88, 0xBA, 0xA6, 0xC0, 0x14, 0x63, 0x31, 0xCF, 0x19, + 0x6B, 0x0C, 0xB7, 0x6F, 0xD0, 0x18, 0x9D, 0xC9, 0x87, 0x48, 0x00, 0xF0, + 0xF4, 0x7C, 0x46, 0xC4, 0xCB, 0x9C, 0x9E, 0xCF, 0x0B, 0x31, 0x0D, 0x51, + 0xC6, 0xC0, 0x00, 0x30, 0xCF, 0xAB, 0x07, 0xF7, 0x1A, 0x60, 0xCE, 0xD9, + 0xD4, 0x88, 0x9B, 0x12, 0xED, 0xF8, 0x85, 0x84, 0xB8, 0x8A, 0x02, 0x80, + 0x5F, 0xFE, 0x40, 0x84, 0x48, 0xC1, 0x15, 0x69, 0x03, 0x1C, 0x07, 0x1B, + 0x82, 0x07, 0xC1, 0x09, 0xB3, 0x9F, 0x66, 0x20, 0x33, 0xBD, 0xBB, 0xDF, + 0xAF, 0x29, 0x5D, 0x96, 0x35, 0x04, 0x7A, 0xFF, 0x70, 0xB7, 0x9F, 0xA6, + 0x0F, 0xEF, 0xEE, 0x63, 0x8C, 0xD3, 0x6E, 0x1C, 0x86, 0xB8, 0x9B, 0x06, + 0x22, 0x10, 0xD1, 0xDD, 0x34, 0x10, 0xE3, 0x30, 0x0E, 0xA7, 0xD3, 0x05, + 0x01, 0x2D, 0x86, 0x94, 0x73, 0x0C, 0x71, 0x59, 0xD3, 0xE5, 0xB2, 0x94, + 0xB2, 0xC8, 0x9D, 0x8B, 0x0B, 0x11, 0x81, 0x0C, 0x3C, 0xE5, 0xDA, 0x40, + 0xC5, 0xAA, 0xC7, 0x93, 0x90, 0xB7, 0x4C, 0x9A, 0x9A, 0x07, 0xE3, 0xA1, + 0x09, 0x4D, 0x35, 0xC0, 0x5E, 0x9B, 0x80, 0x76, 0xEA, 0xD5, 0x99, 0x1D, + 0xFF, 0xB0, 0xBE, 0xD3, 0xB3, 0xC3, 0xA6, 0x49, 0xC1, 0x2D, 0xFC, 0x21, + 0x80, 0x55, 0x42, 0x03, 0xC7, 0xBA, 0x6B, 0x2D, 0xAC, 0x62, 0xE8, 0x55, + 0x8C, 0x67, 0x8D, 0x12, 0x69, 0x6F, 0x14, 0xF3, 0xCB, 0xB6, 0x1C, 0xA2, + 0xDB, 0xB1, 0x95, 0xD6, 0xBB, 0x94, 0xBE, 0x0E, 0xCE, 0x4A, 0x88, 0xB0, + 0x99, 0xB9, 0x55, 0x23, 0x62, 0x88, 0xD2, 0x22, 0xDA, 0x54, 0xF5, 0xE6, + 0x9E, 0x76, 0x31, 0xAF, 0x00, 0xB9, 0x9D, 0x08, 0x97, 0x1E, 0x15, 0x88, + 0xA8, 0xD8, 0xCF, 0x84, 0x00, 0xE0, 0x17, 0xC1, 0x79, 0x54, 0x85, 0x98, + 0x20, 0x20, 0x0E, 0x7E, 0xB9, 0xC1, 0xE6, 0xB9, 0x73, 0xCC, 0x69, 0x90, + 0x57, 0xD7, 0xBD, 0x14, 0xE7, 0x68, 0x33, 0xDD, 0x10, 0xD3, 0x75, 0x33, + 0x02, 0x3F, 0xE7, 0x51, 0xD5, 0xF0, 0xED, 0xA7, 0x67, 0x77, 0x75, 0x3F, + 0x9D, 0x16, 0xAB, 0xC7, 0x4C, 0x6E, 0xDF, 0x22, 0xE2, 0xC0, 0x8C, 0x08, + 0xA2, 0xBA, 0x9F, 0xC6, 0xB1, 0x5E, 0x3D, 0xD9, 0x1D, 0xBD, 0x77, 0x9D, + 0x5E, 0x03, 0xF3, 0x26, 0x2E, 0xB6, 0x24, 0x2C, 0xD0, 0x52, 0xD6, 0x46, + 0x9C, 0x6D, 0xCE, 0x97, 0x25, 0x67, 0xF7, 0x1F, 0x41, 0x16, 0x7D, 0x4A, + 0xB3, 0xA3, 0xA7, 0xFB, 0x89, 0x43, 0xF0, 0xFC, 0x19, 0x77, 0x43, 0x7A, + 0xEE, 0xEE, 0x95, 0xD7, 0xA0, 0xDF, 0x0C, 0x27, 0xBE, 0x10, 0xC0, 0xCC, + 0x72, 0x96, 0xE7, 0x97, 0xCB, 0xB2, 0x9E, 0xA6, 0x71, 0x18, 0x86, 0x60, + 0x6A, 0xA7, 0xCB, 0x6A, 0x06, 0xC7, 0xDD, 0xF0, 0x72, 0x59, 0xBE, 0x7F, + 0x9A, 0x5F, 0x2E, 0xAB, 0xA8, 0x79, 0x1C, 0x59, 0xCC, 0x4A, 0x88, 0x6B, + 0x2E, 0x70, 0xDB, 0x66, 0x85, 0x35, 0x08, 0xE9, 0x7A, 0x8A, 0x20, 0xDB, + 0x81, 0x98, 0x75, 0xAE, 0x61, 0xBC, 0x2C, 0x79, 0x5E, 0x65, 0x8C, 0x6C, + 0x66, 0xCB, 0x9A, 0xE7, 0x35, 0x79, 0x38, 0xC8, 0x34, 0xC6, 0x9C, 0xC5, + 0xEF, 0xFD, 0x66, 0x2F, 0x81, 0x1F, 0xF8, 0xB0, 0x1F, 0x7D, 0xD7, 0xF6, + 0x63, 0x34, 0x80, 0x79, 0x4D, 0x97, 0x35, 0x47, 0x26, 0x55, 0x20, 0xB2, + 0xFD, 0x2E, 0x9E, 0x97, 0xB4, 0xA6, 0xCC, 0x44, 0x31, 0xF2, 0xBC, 0xA4, + 0x69, 0x08, 0x87, 0x9D, 0x7B, 0x30, 0x7C, 0x0D, 0xCB, 0xDD, 0xDD, 0xBD, + 0xA0, 0x76, 0x3B, 0x37, 0xE7, 0xEC, 0xCB, 0xEB, 0x81, 0xC4, 0x38, 0xC4, + 0xC3, 0x6E, 0x40, 0x80, 0x10, 0x18, 0x09, 0x89, 0xAF, 0x8E, 0xFF, 0xDB, + 0x62, 0xBA, 0xCD, 0x1E, 0x07, 0x56, 0x91, 0xC7, 0xA7, 0xF3, 0x79, 0x5E, + 0x45, 0xF5, 0xE5, 0x9C, 0x10, 0x31, 0x25, 0x41, 0x80, 0xE3, 0x34, 0x04, + 0xA6, 0x94, 0x32, 0x18, 0x5C, 0xE6, 0xD5, 0x31, 0xD7, 0xFD, 0x6E, 0x46, + 0xE0, 0x71, 0x70, 0x25, 0xE2, 0xCC, 0x00, 0x0C, 0xD6, 0x2C, 0xD1, 0x0D, + 0x52, 0xAF, 0x63, 0x0E, 0xA5, 0xB6, 0x72, 0x2E, 0xD7, 0xB5, 0x02, 0xF8, + 0x0D, 0x29, 0x88, 0xCC, 0x94, 0xD3, 0xFA, 0x5F, 0xFE, 0xF6, 0xB7, 0xC4, + 0xFC, 0xF3, 0x3F, 0xFB, 0xE2, 0xE1, 0xEE, 0xF0, 0xF1, 0xFD, 0x91, 0x38, + 0x7C, 0xFD, 0xE5, 0x87, 0x87, 0x87, 0x43, 0x88, 0xE1, 0x72, 0x99, 0xC1, + 0xEF, 0x91, 0xD8, 0x8F, 0xCB, 0x9A, 0x52, 0x36, 0x0F, 0x64, 0xFD, 0xFC, + 0xF4, 0xB4, 0xDB, 0xEF, 0x86, 0x71, 0xF8, 0xF4, 0xE9, 0x31, 0x8B, 0x7D, + 0x7E, 0x7C, 0xF9, 0xE5, 0x2F, 0x8A, 0xDB, 0xE5, 0x95, 0xF3, 0xDB, 0x6A, + 0x00, 0x44, 0x27, 0x7D, 0xFE, 0x2B, 0x67, 0x6F, 0xD2, 0x63, 0x49, 0x92, + 0xA4, 0x89, 0x89, 0x88, 0xAA, 0x9A, 0xD9, 0x5B, 0x7D, 0x89, 0x25, 0x23, + 0x97, 0xC8, 0xAA, 0xEC, 0xDA, 0xBA, 0xBA, 0xD1, 0x8D, 0x1E, 0x0E, 0x38, + 0xC3, 0x03, 0x81, 0x41, 0x1F, 0xF9, 0x23, 0x88, 0x39, 0x10, 0x73, 0xE2, + 0xFC, 0x3D, 0x5E, 0x78, 0x22, 0x88, 0x26, 0x06, 0x43, 0x0E, 0x7A, 0xAB, + 0xAA, 0xAC, 0xCC, 0xCA, 0xCA, 0x25, 0x22, 0x63, 0x0F, 0x5F, 0xDE, 0x6E, + 0x66, 0xBA, 0x88, 0xF0, 0x20, 0xAA, 0xF6, 0xCC, 0x9F, 0x47, 0x15, 0x01, + 0xBE, 0x2A, 0x44, 0xBA, 0x3F, 0xB7, 0x55, 0x55, 0x54, 0xF4, 0x93, 0xED, + 0x93, 0xE2, 0x82, 0x11, 0x39, 0x96, 0x31, 0x97, 0xAC, 0x20, 0x11, 0xF1, + 0xD6, 0x14, 0x86, 0xE6, 0x6C, 0x6A, 0x0D, 0xD2, 0x70, 0x77, 0xB1, 0xFD, + 0xE9, 0xCF, 0x58, 0x78, 0x4E, 0x64, 0x35, 0x5F, 0x74, 0x20, 0x2F, 0xCC, + 0x24, 0x8C, 0x47, 0x9D, 0x40, 0x77, 0xD9, 0x8D, 0x00, 0xB2, 0x8F, 0x78, + 0xA4, 0xCE, 0x78, 0x78, 0x9F, 0x41, 0x14, 0x0B, 0x6E, 0x3A, 0xD5, 0x62, + 0x98, 0xC9, 0x64, 0x90, 0xEE, 0xCE, 0xFE, 0xF0, 0x88, 0x08, 0xA5, 0x6B, + 0x3D, 0x62, 0x8A, 0xA2, 0x00, 0x11, 0x73, 0x46, 0x0A, 0xB0, 0x48, 0x0C, + 0x29, 0xC4, 0x98, 0x8E, 0x94, 0x01, 0xA8, 0xE5, 0xFE, 0x88, 0x68, 0xEE, + 0xB9, 0x92, 0x58, 0x29, 0xFC, 0x0D, 0x0A, 0x0B, 0x13, 0x33, 0x03, 0xAB, + 0x5B, 0x8B, 0x11, 0x40, 0x90, 0x44, 0x12, 0x03, 0xD1, 0x10, 0xA2, 0x84, + 0x82, 0x78, 0x8E, 0x53, 0x36, 0x18, 0xB9, 0x77, 0xB3, 0xDF, 0x55, 0x90, + 0x94, 0x18, 0x4A, 0xCF, 0x1C, 0x54, 0x9F, 0xDD, 0xB5, 0x3E, 0xED, 0x8F, + 0x10, 0x0F, 0x01, 0x34, 0xC2, 0xA5, 0x9C, 0x7F, 0x95, 0x33, 0xCE, 0xDA, + 0xCA, 0xA9, 0x6E, 0xC1, 0x72, 0xEE, 0x1D, 0x50, 0x3A, 0xD6, 0xA3, 0xA3, + 0x5D, 0xEE, 0x8E, 0x5E, 0x43, 0x44, 0x29, 0xCD, 0xDF, 0xAA, 0xCA, 0x6A, + 0xC2, 0x07, 0x91, 0xB2, 0xB9, 0xA8, 0x59, 0x2F, 0x21, 0x26, 0x1F, 0xD2, + 0xBE, 0x0B, 0xCE, 0xE4, 0x96, 0x4E, 0xD3, 0xC6, 0xA9, 0x3F, 0x5B, 0x8B, + 0xB3, 0x0C, 0x19, 0x24, 0x41, 0xFC, 0x80, 0x75, 0x39, 0x16, 0x11, 0x63, + 0x0C, 0x19, 0xDA, 0x6E, 0x0F, 0x9B, 0x5D, 0x17, 0x36, 0x0C, 0x22, 0x3E, + 0xB1, 0x08, 0x74, 0xDE, 0x1C, 0xBA, 0xE0, 0x43, 0xAC, 0x9C, 0x71, 0x56, + 0xD5, 0x54, 0x6C, 0xFB, 0x58, 0xC6, 0x29, 0x6F, 0x2F, 0xE3, 0x09, 0x1E, + 0x3D, 0x3F, 0x64, 0xB2, 0xAB, 0x11, 0x62, 0x27, 0x3C, 0x76, 0x8D, 0x8B, + 0x0C, 0x84, 0xE2, 0x23, 0x80, 0x80, 0x21, 0x3C, 0x74, 0xC1, 0x59, 0x53, + 0x3B, 0xCB, 0x9C, 0x87, 0xA6, 0xAE, 0x9D, 0x0E, 0x09, 0x11, 0x59, 0x4B, + 0x67, 0x8B, 0xA9, 0xB3, 0xC6, 0x87, 0xD8, 0xFA, 0xA8, 0xFA, 0x82, 0x27, + 0x72, 0x31, 0x9F, 0x88, 0x48, 0x76, 0x3C, 0x11, 0x3A, 0x43, 0x29, 0x72, + 0x5D, 0xB9, 0xB3, 0x05, 0xCE, 0x26, 0xB5, 0x88, 0x30, 0x83, 0x31, 0x26, + 0x84, 0xD8, 0xF0, 0x40, 0x75, 0x8A, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x7B, 0xDF, 0xD4, 0xCE, 0x14, 0xCA, 0x1A, 0x50, 0xBA, 0x74, + 0xE6, 0xDE, 0xC7, 0xED, 0xBE, 0xAB, 0x9C, 0x3D, 0x9B, 0x4F, 0x00, 0xD1, + 0xFB, 0x90, 0x58, 0x0C, 0xA1, 0x73, 0x56, 0x7D, 0xB7, 0x27, 0x3B, 0xD0, + 0x30, 0x47, 0xA8, 0xF9, 0x07, 0x44, 0x4D, 0xED, 0x42, 0x4C, 0xB1, 0xE7, + 0xDA, 0x19, 0x40, 0x30, 0x89, 0x34, 0xE8, 0x31, 0x6C, 0x30, 0x5A, 0xDB, + 0x80, 0x5A, 0x5D, 0xA8, 0xA9, 0x92, 0x02, 0x0C, 0x62, 0x0A, 0x56, 0xB0, + 0xD6, 0x48, 0xF6, 0x54, 0xA1, 0xC2, 0x1A, 0x63, 0xA8, 0xAE, 0xAC, 0xA6, + 0xF8, 0x77, 0x3E, 0x36, 0x95, 0xB5, 0xD6, 0xA8, 0xD6, 0xB0, 0xD6, 0xC6, + 0xD8, 0xA7, 0x18, 0x7F, 0xFD, 0x8B, 0x9F, 0x4C, 0x26, 0xD5, 0x72, 0x3E, + 0x4D, 0x2C, 0xCB, 0xC5, 0xDC, 0x5A, 0xE3, 0x9C, 0xF1, 0xDE, 0xC7, 0x10, + 0xC8, 0x18, 0x67, 0xED, 0x61, 0xDF, 0xEE, 0xF7, 0xAD, 0x20, 0xD6, 0x75, + 0xD5, 0xC7, 0xD0, 0xF6, 0x7D, 0xDB, 0xF5, 0xD6, 0xDA, 0x5D, 0xDB, 0x27, + 0x96, 0xEB, 0xDB, 0x2D, 0xB3, 0xF6, 0xB9, 0x85, 0xC1, 0x1B, 0x5D, 0x16, + 0xA9, 0x2E, 0xD3, 0x1C, 0x72, 0x1C, 0xD6, 0x9B, 0xBE, 0x75, 0x36, 0x5B, + 0x04, 0x86, 0x4C, 0x08, 0x25, 0x46, 0x00, 0x88, 0x54, 0x08, 0x1D, 0x75, + 0xD4, 0x28, 0xA7, 0xF3, 0xDE, 0x71, 0x57, 0xC1, 0xFF, 0xDF, 0x8F, 0x1C, + 0xAB, 0x44, 0x8F, 0x9F, 0xF2, 0x0D, 0x96, 0x0A, 0x02, 0x18, 0x9E, 0x73, + 0x58, 0x59, 0xC3, 0xDE, 0x93, 0xD2, 0xC8, 0x8C, 0xC4, 0xF2, 0xA4, 0x04, + 0xF7, 0x70, 0x9F, 0x0C, 0xE5, 0x97, 0x05, 0x25, 0x15, 0x91, 0x2E, 0xE5, + 0x5D, 0x00, 0xA3, 0xFD, 0x39, 0x1B, 0xDA, 0x20, 0x49, 0x95, 0x3B, 0x8B, + 0x48, 0x0C, 0x31, 0xA6, 0x04, 0xDA, 0x24, 0x21, 0x33, 0x4A, 0x65, 0xF2, + 0x5B, 0x16, 0x1E, 0xE7, 0xC7, 0xA9, 0x94, 0x12, 0x11, 0x31, 0x31, 0x28, + 0xA1, 0x8F, 0x0C, 0x20, 0x41, 0x1F, 0x3E, 0x71, 0x69, 0x08, 0x3C, 0xD2, + 0x1B, 0x22, 0x52, 0x98, 0x3A, 0xB2, 0xF5, 0x86, 0x38, 0x2A, 0x51, 0xCA, + 0x15, 0xB6, 0x80, 0xAC, 0x24, 0x50, 0xB9, 0xAF, 0x5B, 0x7E, 0x7B, 0x40, + 0xEB, 0x43, 0x1A, 0x65, 0xFC, 0xA3, 0x00, 0x7A, 0x1F, 0xA5, 0x2C, 0x54, + 0x16, 0x38, 0x74, 0x21, 0x25, 0xC6, 0x09, 0x86, 0x10, 0x45, 0x34, 0x36, + 0x93, 0x43, 0x8A, 0x58, 0x0C, 0xF8, 0x13, 0x14, 0xA6, 0xFA, 0xAE, 0xA4, + 0xFC, 0xE6, 0x81, 0x23, 0x42, 0xCD, 0x1D, 0x57, 0x31, 0xD1, 0xD6, 0x4D, + 0xCC, 0x61, 0x73, 0xF0, 0x52, 0x50, 0x26, 0x11, 0xC6, 0xC4, 0x9E, 0xB0, + 0x76, 0x56, 0x47, 0x38, 0xC4, 0x24, 0x02, 0xAA, 0xD7, 0x26, 0x4D, 0x5D, + 0x55, 0x16, 0x00, 0x4E, 0x04, 0xE8, 0xFE, 0xE2, 0xB4, 0xC6, 0x5C, 0x9C, + 0xCD, 0x27, 0x4D, 0xFD, 0xF6, 0x6A, 0x7D, 0xB5, 0x3A, 0x44, 0xE6, 0xC8, + 0x62, 0x89, 0x8C, 0xC1, 0x69, 0x53, 0x69, 0x56, 0x4A, 0x1F, 0x52, 0x4C, + 0x3C, 0x72, 0x75, 0x21, 0xA2, 0x0C, 0xB2, 0x7F, 0x57, 0x57, 0x0E, 0x57, + 0xD6, 0x6F, 0x04, 0x11, 0x6A, 0x4B, 0x21, 0x89, 0x21, 0x28, 0xE1, 0x2C, + 0x11, 0x80, 0x3E, 0x32, 0x82, 0x54, 0x40, 0x95, 0xB3, 0xB6, 0xD0, 0x45, + 0xA8, 0xE7, 0x5E, 0xEB, 0x81, 0x10, 0xD1, 0x98, 0xDC, 0xF2, 0xDA, 0x59, + 0xD3, 0xF5, 0x21, 0xC4, 0x34, 0xAD, 0xAD, 0x0F, 0x1C, 0x22, 0xF7, 0x21, + 0xB6, 0x7D, 0xE8, 0x7C, 0x4C, 0x2C, 0x0F, 0xCF, 0xA6, 0xCE, 0x1A, 0xEB, + 0x0C, 0x33, 0x1B, 0xC2, 0xD2, 0x01, 0xEF, 0x88, 0xB9, 0xD4, 0x67, 0x34, + 0xB8, 0xA5, 0x14, 0x09, 0xF6, 0x7D, 0x4C, 0x89, 0x7B, 0x0E, 0xCE, 0x98, + 0xBA, 0x76, 0x4E, 0xCB, 0xE2, 0x41, 0xB2, 0x85, 0x7D, 0xBF, 0xDA, 0x11, + 0x00, 0x00, 0xAC, 0xB5, 0xFA, 0x0D, 0x11, 0x4D, 0x26, 0x95, 0x4E, 0x56, + 0xDB, 0x05, 0x40, 0x40, 0xD0, 0x04, 0x57, 0x8E, 0x88, 0xCA, 0x4D, 0x1C, + 0x23, 0xC7, 0xC4, 0xCE, 0x1A, 0x61, 0xD6, 0xFA, 0x36, 0x2E, 0x9D, 0xAB, + 0x09, 0x73, 0x46, 0xBB, 0xB3, 0x66, 0x0C, 0x9F, 0x95, 0x44, 0x47, 0x84, + 0x26, 0x8D, 0x43, 0x84, 0xBA, 0x72, 0x9D, 0x8F, 0xAA, 0x24, 0x00, 0x05, + 0x89, 0xCE, 0xCF, 0x16, 0x31, 0xA6, 0xBA, 0x72, 0xCC, 0x3C, 0x9F, 0xCF, + 0xE6, 0xF3, 0xC9, 0xB3, 0xE7, 0xAF, 0x74, 0x15, 0x5B, 0xC2, 0xBA, 0xAE, + 0x44, 0x7C, 0x88, 0x0C, 0x48, 0x21, 0xA6, 0x10, 0x0F, 0x5D, 0xE7, 0x91, + 0xEC, 0x66, 0xB3, 0xEB, 0x43, 0x48, 0x89, 0x4D, 0x66, 0xAC, 0x2D, 0x00, + 0xA7, 0xE4, 0x46, 0x1D, 0x69, 0x79, 0x64, 0xE0, 0x0B, 0x2E, 0xCB, 0x49, + 0x7F, 0x2E, 0x16, 0x5F, 0xF6, 0xA7, 0xE4, 0xE0, 0x99, 0x00, 0x90, 0x88, + 0xF2, 0x62, 0x65, 0x46, 0x75, 0x66, 0x26, 0x83, 0xD9, 0x03, 0x84, 0x1F, + 0x26, 0xFB, 0xBE, 0x2F, 0x87, 0xC3, 0x37, 0xA7, 0x20, 0x4E, 0xEE, 0x68, + 0x9A, 0x91, 0x25, 0x90, 0x0D, 0xBD, 0xE1, 0xF0, 0x61, 0x65, 0x0D, 0xB7, + 0x28, 0xC9, 0x78, 0x92, 0x99, 0x28, 0x54, 0xCD, 0xE9, 0xD1, 0x04, 0xBA, + 0xD7, 0x72, 0x1A, 0xDF, 0x30, 0x4B, 0xAC, 0x46, 0x19, 0x34, 0xED, 0x0B, + 0x8A, 0x8D, 0x9C, 0xF5, 0x63, 0x91, 0xF7, 0xE3, 0x63, 0x0B, 0x88, 0x80, + 0x72, 0x1E, 0x30, 0xA7, 0x98, 0x92, 0x70, 0x89, 0x7D, 0x71, 0xF6, 0xD1, + 0xEB, 0x10, 0x0F, 0x86, 0xCC, 0x40, 0x76, 0x8D, 0x08, 0x59, 0xF9, 0xC8, + 0xF8, 0xE1, 0xB3, 0x80, 0x01, 0x40, 0x8A, 0x40, 0x26, 0xC3, 0x52, 0x55, + 0x23, 0x47, 0xAD, 0x96, 0x75, 0xF7, 0xD1, 0xA0, 0xE6, 0x01, 0x3C, 0xE9, + 0xFB, 0x0B, 0x47, 0x06, 0x43, 0xC6, 0x1A, 0x43, 0x48, 0x5A, 0x9C, 0x21, + 0x00, 0x16, 0x71, 0xC8, 0x80, 0xCE, 0x9E, 0x20, 0x45, 0x19, 0xD6, 0x1A, + 0x00, 0x0C, 0x21, 0x22, 0x21, 0x91, 0x05, 0x38, 0x9A, 0xA3, 0xAC, 0x76, + 0x9C, 0x21, 0xAD, 0xB6, 0x39, 0xD9, 0x31, 0xA0, 0x30, 0xB7, 0xE8, 0x6B, + 0x69, 0x75, 0x28, 0x94, 0x5D, 0xA6, 0xF7, 0xD1, 0xFB, 0x18, 0x62, 0xDA, + 0x1C, 0xBA, 0x7D, 0xEB, 0xDB, 0x2E, 0x6A, 0xEA, 0x03, 0x96, 0x4D, 0x53, + 0x63, 0x25, 0x88, 0xA0, 0x69, 0x76, 0xD6, 0x18, 0xF5, 0x85, 0xEB, 0x7E, + 0x32, 0xC6, 0x14, 0x45, 0x7F, 0x9C, 0xE0, 0xBE, 0xA2, 0x55, 0x01, 0x26, + 0x4D, 0xF5, 0xF4, 0x93, 0x07, 0x67, 0xCB, 0xE9, 0xDB, 0xAB, 0xED, 0xD5, + 0xA6, 0xDD, 0xE7, 0x2E, 0x76, 0xBE, 0xE4, 0xCA, 0x01, 0x97, 0x62, 0xF2, + 0x32, 0xD3, 0x23, 0xC9, 0x1A, 0xFD, 0xA2, 0xFB, 0x83, 0x14, 0xD7, 0x22, + 0x20, 0xCC, 0x6A, 0x0B, 0x00, 0xAD, 0x0F, 0x83, 0xBA, 0x53, 0xF1, 0xD3, + 0x74, 0x72, 0x63, 0x68, 0xB5, 0x6D, 0xD7, 0xFB, 0x76, 0x31, 0xA9, 0x97, + 0xB3, 0x7A, 0x36, 0x69, 0x90, 0x30, 0xC5, 0x94, 0x54, 0xF1, 0x29, 0x57, + 0x6B, 0x62, 0x6D, 0x6D, 0xA8, 0xC4, 0xD6, 0xCE, 0xF2, 0xAE, 0xED, 0x99, + 0x4B, 0x4D, 0xBB, 0x31, 0x21, 0x72, 0x4C, 0x3C, 0x9D, 0xD4, 0x06, 0xD1, + 0x38, 0x6D, 0x74, 0x46, 0x31, 0x26, 0xEF, 0x63, 0x4C, 0xA2, 0xE9, 0xB2, + 0x22, 0x6C, 0xAD, 0x49, 0x29, 0xF9, 0x90, 0x82, 0x8F, 0x37, 0xDB, 0xB6, + 0xA9, 0xAC, 0xFA, 0xE6, 0x8D, 0xCD, 0xEF, 0x68, 0x2D, 0x0D, 0xB9, 0x32, + 0xC3, 0xB8, 0x9D, 0xAE, 0xAB, 0x32, 0x74, 0xBA, 0x73, 0xAA, 0x91, 0x08, + 0x00, 0xF3, 0x49, 0x0D, 0x93, 0x8C, 0xDE, 0x13, 0x73, 0x5D, 0xD9, 0x22, + 0xFA, 0x94, 0x12, 0x87, 0x24, 0x84, 0x60, 0x1C, 0x18, 0x44, 0x4E, 0xC2, + 0x9C, 0x8C, 0xA1, 0x04, 0x32, 0x70, 0x16, 0x09, 0x80, 0x35, 0x46, 0x69, + 0x3F, 0x7B, 0x1F, 0x43, 0x4C, 0x21, 0x26, 0x16, 0xD8, 0xB7, 0x5E, 0xA1, + 0x25, 0x11, 0x58, 0x6B, 0xD6, 0x9B, 0xCD, 0xD9, 0x7C, 0xF2, 0xD3, 0x2F, + 0x3E, 0x57, 0x02, 0xA2, 0xD9, 0x6C, 0xF2, 0xF6, 0xDD, 0x55, 0x4C, 0xC9, + 0x18, 0x2D, 0x9F, 0x60, 0x86, 0x40, 0x31, 0xC5, 0x98, 0x42, 0x8C, 0x29, + 0xC9, 0x6A, 0xB3, 0x25, 0x34, 0x68, 0xA8, 0xF3, 0x29, 0xC6, 0x84, 0x00, + 0xFB, 0x5D, 0xDB, 0x76, 0x61, 0x70, 0xE0, 0x40, 0x31, 0x43, 0x8E, 0x99, + 0x52, 0xB9, 0xBF, 0xC5, 0xA0, 0x21, 0x44, 0x19, 0x27, 0xA1, 0x4C, 0x9E, + 0x88, 0xA0, 0x32, 0xD3, 0x38, 0x15, 0x60, 0x01, 0x90, 0xEC, 0xE7, 0x2E, + 0xE0, 0x72, 0x48, 0x73, 0x81, 0xBB, 0x3A, 0x2B, 0x57, 0x06, 0xDD, 0x33, + 0x24, 0x47, 0xF2, 0x73, 0xA2, 0xC5, 0x46, 0xA9, 0xB2, 0xC7, 0xE5, 0x7B, + 0x47, 0xFA, 0xF4, 0x9F, 0x71, 0x14, 0x73, 0xA4, 0xC2, 0x78, 0x84, 0xDA, + 0xF2, 0x46, 0xAB, 0x97, 0x54, 0x31, 0x24, 0x02, 0xC9, 0xF4, 0xDC, 0x23, + 0xD0, 0x97, 0x55, 0xF9, 0x9D, 0x0C, 0x76, 0xBE, 0x47, 0xC2, 0x31, 0x46, + 0x24, 0x7A, 0x17, 0x11, 0x1E, 0x53, 0x71, 0xC9, 0x50, 0xE9, 0x85, 0x20, + 0x20, 0x99, 0x25, 0x51, 0x32, 0x3D, 0xE6, 0xB1, 0xA1, 0x4D, 0xC1, 0x31, + 0x77, 0x14, 0xEA, 0xA8, 0x5D, 0x00, 0x00, 0x21, 0xDD, 0xD9, 0x12, 0x0A, + 0x46, 0x00, 0x25, 0x64, 0x1B, 0x7C, 0xEB, 0x9A, 0xC8, 0x91, 0xBF, 0xD1, + 0x2C, 0x99, 0x0C, 0x2F, 0x41, 0x4A, 0x5E, 0x41, 0x12, 0x2E, 0x65, 0x9C, + 0x38, 0xD6, 0x0B, 0x08, 0x00, 0x84, 0xA0, 0x3C, 0xF4, 0xB5, 0xA6, 0xB2, + 0x21, 0xB2, 0x80, 0xA4, 0x6C, 0x84, 0x22, 0x40, 0x14, 0x26, 0x1A, 0xD2, + 0x46, 0x8E, 0xC5, 0x77, 0x19, 0xCD, 0x95, 0x7D, 0x23, 0xB7, 0xC5, 0x24, + 0x8C, 0x31, 0xB5, 0x9D, 0xDF, 0x1E, 0xBA, 0xB6, 0x8B, 0x02, 0x70, 0xE8, + 0xBC, 0x0F, 0x49, 0x53, 0x2E, 0x92, 0xF0, 0xA4, 0xB2, 0xCE, 0x19, 0x25, + 0x8F, 0x15, 0x90, 0xA6, 0xB2, 0x8B, 0x69, 0x6D, 0x9D, 0x69, 0x6A, 0x67, + 0x88, 0x54, 0x73, 0x9B, 0xE2, 0xE2, 0x39, 0x19, 0x9D, 0xFB, 0xB2, 0x32, + 0xDE, 0x5B, 0x96, 0xB3, 0xA6, 0xA9, 0xEC, 0xC3, 0xF3, 0xA9, 0x8F, 0xBC, + 0x6F, 0xFD, 0xED, 0xB6, 0x3D, 0xF4, 0x51, 0x57, 0x94, 0x7E, 0x18, 0x80, + 0x48, 0xBB, 0x94, 0xE3, 0x20, 0xDB, 0x83, 0x08, 0x96, 0x4B, 0x1D, 0x65, + 0xCC, 0x19, 0x24, 0xC2, 0x10, 0x53, 0xE5, 0x88, 0x59, 0x9C, 0xA1, 0x90, + 0x12, 0x96, 0x02, 0x16, 0x03, 0xC4, 0x0C, 0x6D, 0x88, 0x88, 0xD8, 0xFB, + 0x83, 0x46, 0xF7, 0xAC, 0x21, 0x67, 0x0D, 0x02, 0x86, 0x94, 0x52, 0x60, + 0x4B, 0xE4, 0x9C, 0x45, 0x00, 0x4B, 0x58, 0x39, 0xB3, 0xDA, 0x29, 0x08, + 0x93, 0xD6, 0x07, 0x15, 0xCA, 0x10, 0x79, 0xDF, 0x79, 0x4B, 0xD4, 0xF5, + 0xA1, 0x72, 0xC6, 0x1A, 0x64, 0x16, 0x63, 0x20, 0xB1, 0x26, 0xD5, 0x2A, + 0xC1, 0xA6, 0x15, 0x11, 0x1F, 0x62, 0x8C, 0x69, 0x77, 0xE8, 0x29, 0xEF, + 0x60, 0x32, 0x2E, 0x9B, 0xD5, 0xF8, 0xC0, 0x48, 0x49, 0xC1, 0xC9, 0x00, + 0x0E, 0xAF, 0x9C, 0x87, 0x42, 0xF3, 0xE9, 0x2A, 0x37, 0x6D, 0x6A, 0x3D, + 0xBD, 0x76, 0x06, 0x89, 0x44, 0xA4, 0xED, 0x7C, 0xD7, 0x07, 0x75, 0x75, + 0x19, 0x43, 0xD6, 0x88, 0x49, 0x18, 0xA2, 0x72, 0x21, 0x20, 0xE7, 0xD3, + 0x73, 0xF5, 0xA8, 0x56, 0x7F, 0xE8, 0x6D, 0xB4, 0x46, 0xEA, 0xD0, 0xFB, + 0x10, 0xB2, 0x83, 0x0C, 0x11, 0x8D, 0x41, 0x22, 0x20, 0x42, 0x02, 0x5C, + 0x2E, 0x26, 0x0F, 0xFE, 0xE6, 0x57, 0x93, 0xC9, 0xA4, 0xEB, 0xFC, 0xED, + 0xDB, 0xAB, 0xAB, 0x9B, 0x75, 0x8A, 0xA9, 0xA9, 0xEA, 0x7D, 0xD7, 0x69, + 0xA9, 0x40, 0xE5, 0x1C, 0x20, 0xEE, 0xF6, 0x2D, 0x12, 0xF9, 0x3E, 0x74, + 0xDE, 0x4F, 0x9A, 0x46, 0x12, 0x9F, 0x9F, 0x2D, 0x6E, 0xD7, 0x1B, 0x6D, + 0x63, 0xF1, 0xE2, 0xD5, 0xFB, 0x43, 0xDB, 0xD5, 0x55, 0x75, 0xDC, 0xD8, + 0x4A, 0xAE, 0xC5, 0x51, 0x28, 0x40, 0x11, 0x95, 0xAE, 0xCF, 0x3B, 0x8B, + 0x36, 0x8F, 0x82, 0x31, 0x4E, 0x08, 0x32, 0x29, 0x31, 0x0F, 0x59, 0x60, + 0xC3, 0x45, 0xFE, 0x3F, 0x34, 0xD4, 0xBD, 0x63, 0x3E, 0x70, 0x00, 0x0F, + 0x83, 0x2F, 0x0A, 0x77, 0x0A, 0xD6, 0xC8, 0x67, 0x8C, 0x4D, 0x84, 0x72, + 0xF2, 0x1D, 0xB8, 0x37, 0x92, 0xD2, 0xE1, 0x5D, 0x32, 0x62, 0x39, 0x2E, + 0xE1, 0x62, 0xFD, 0x1D, 0xA1, 0xDC, 0x50, 0xE6, 0x36, 0x76, 0x39, 0x8D, + 0x65, 0xFD, 0x68, 0x43, 0x8F, 0x15, 0x99, 0xE4, 0xDA, 0xC7, 0xF2, 0x80, + 0x05, 0x3A, 0x1D, 0xDB, 0x00, 0x83, 0x00, 0x1F, 0x73, 0xE1, 0x74, 0xCC, + 0x01, 0x72, 0xB5, 0xB3, 0x8C, 0xDA, 0x30, 0x1D, 0x6F, 0x57, 0xCA, 0x06, + 0xF0, 0xAE, 0x17, 0x27, 0xBB, 0x77, 0xA4, 0x38, 0x01, 0x54, 0xD9, 0x89, + 0x26, 0x9A, 0x31, 0x03, 0xA2, 0x0E, 0x17, 0x21, 0x69, 0x4D, 0x67, 0x2E, + 0xC9, 0x14, 0x61, 0x66, 0x5B, 0xAE, 0x70, 0x04, 0x21, 0x59, 0x34, 0x45, + 0x24, 0x6A, 0x53, 0x00, 0x48, 0x89, 0xD9, 0x0A, 0xA1, 0x02, 0x5A, 0x74, + 0xD6, 0x8A, 0x00, 0x0B, 0xF7, 0x7D, 0x74, 0x4E, 0xEB, 0x60, 0xEF, 0xD8, + 0x95, 0x0A, 0xC7, 0x24, 0x93, 0xDF, 0x43, 0x4C, 0xDC, 0x1D, 0x7C, 0x08, + 0x49, 0x4B, 0x08, 0x2B, 0x67, 0x2A, 0x67, 0xCF, 0xE6, 0xB5, 0x21, 0xA3, + 0xC4, 0x8B, 0x44, 0x64, 0x88, 0x00, 0xA1, 0xEB, 0xBD, 0xAE, 0x61, 0xAD, + 0xF5, 0xB3, 0xC6, 0x80, 0x28, 0xBE, 0x13, 0x64, 0x48, 0x09, 0x35, 0x23, + 0x57, 0x07, 0x73, 0x9C, 0x39, 0x75, 0x32, 0xC7, 0xE3, 0x5F, 0x05, 0xD1, + 0x18, 0xB3, 0x98, 0x37, 0x20, 0xF0, 0xF0, 0x7C, 0xF6, 0xE8, 0x62, 0xB6, + 0xDA, 0xB6, 0x3E, 0xF0, 0xA4, 0xC9, 0x29, 0xA3, 0xD7, 0xDB, 0xC3, 0x66, + 0xDF, 0x33, 0x83, 0x21, 0x24, 0x1A, 0x12, 0x17, 0x8F, 0x03, 0x53, 0xC2, + 0xD7, 0x65, 0xAA, 0x18, 0xDA, 0x2E, 0x46, 0x61, 0x67, 0xC8, 0x19, 0xA5, + 0xBA, 0x02, 0x4D, 0x08, 0x32, 0x44, 0x96, 0x90, 0x08, 0x62, 0x04, 0x11, + 0x41, 0xC2, 0xDB, 0x5D, 0x7B, 0xE8, 0x3C, 0x22, 0xCE, 0x26, 0xD5, 0xAC, + 0x71, 0x9D, 0x8F, 0xBD, 0x8F, 0x8B, 0x69, 0x2D, 0xAD, 0x3F, 0x5F, 0x4C, + 0xAA, 0xCA, 0x2A, 0x4E, 0xC4, 0x42, 0x8A, 0xA0, 0xE5, 0xB5, 0x49, 0xD8, + 0x10, 0x3D, 0x38, 0x9F, 0x22, 0x40, 0xDB, 0x79, 0xE7, 0xEC, 0xCC, 0x50, + 0x8C, 0x09, 0x04, 0x42, 0x4C, 0xD6, 0x90, 0xB5, 0xD6, 0x5A, 0xDA, 0xEF, + 0xFB, 0x7D, 0xE7, 0x63, 0x64, 0x22, 0x6C, 0x1A, 0x0B, 0x58, 0xD5, 0xCE, + 0x19, 0x32, 0xDA, 0x9E, 0x30, 0x69, 0x7B, 0x54, 0xFC, 0x00, 0x16, 0x93, + 0xE2, 0x5B, 0xD5, 0xF6, 0x51, 0xE3, 0x01, 0xD4, 0x63, 0x26, 0x93, 0x8A, + 0x08, 0x0F, 0x6D, 0x1F, 0x63, 0xAA, 0x9C, 0x35, 0x5A, 0xC2, 0x19, 0x53, + 0x4C, 0x29, 0xB2, 0x0C, 0xA6, 0xB7, 0xB3, 0x26, 0x2B, 0x8D, 0x82, 0x75, + 0xF4, 0xB2, 0xCC, 0x62, 0x99, 0x04, 0x44, 0xCB, 0xEC, 0xFB, 0x90, 0x54, + 0x8B, 0xA9, 0x21, 0x5C, 0x2C, 0x19, 0x10, 0x4E, 0x93, 0xCA, 0x05, 0xB4, + 0xDB, 0x6D, 0xBB, 0x3B, 0xF4, 0x7D, 0xD7, 0xFB, 0x90, 0x42, 0x48, 0x21, + 0xC4, 0xBE, 0xEF, 0x3B, 0x1F, 0x7C, 0x88, 0x9C, 0xB8, 0x25, 0xBF, 0x6F, + 0xBB, 0x10, 0xD2, 0xE5, 0xC5, 0x19, 0x19, 0x43, 0x64, 0xD6, 0x9B, 0xBD, + 0x88, 0x34, 0x4D, 0xAD, 0x31, 0x74, 0x32, 0xF4, 0xE8, 0xE1, 0x99, 0xB3, + 0x2E, 0x0D, 0xB4, 0xCC, 0x28, 0xCA, 0x97, 0x9C, 0xD7, 0x30, 0x8C, 0xAC, + 0xB5, 0x91, 0x6C, 0x9C, 0x08, 0xBF, 0x4E, 0x01, 0x64, 0x14, 0x46, 0x52, + 0x92, 0x45, 0x3F, 0xB8, 0xF2, 0xD5, 0xE2, 0xC9, 0x16, 0xEC, 0x5D, 0xE5, + 0xF5, 0xC1, 0xCD, 0x75, 0xB0, 0xE5, 0xB2, 0x0C, 0xA9, 0xFE, 0x81, 0x8C, + 0x21, 0x86, 0x7E, 0xA4, 0x20, 0xA2, 0x1D, 0x1D, 0x47, 0xB4, 0xD8, 0x70, + 0xFF, 0x6A, 0xE5, 0x57, 0x1C, 0x54, 0xED, 0x90, 0xD2, 0x35, 0x5A, 0xCA, + 0x47, 0xE3, 0x11, 0x4A, 0xCF, 0x97, 0x9C, 0xAB, 0x85, 0x32, 0x34, 0x45, + 0x19, 0x2C, 0xEE, 0x93, 0xEB, 0x0F, 0xA2, 0x82, 0x72, 0xDC, 0xE6, 0x41, + 0x2D, 0xCB, 0xE1, 0x85, 0x86, 0xF2, 0xFB, 0xD1, 0xD2, 0x1B, 0x3C, 0x2D, + 0x05, 0x0C, 0x82, 0x80, 0x10, 0x00, 0x09, 0x30, 0x89, 0x02, 0x60, 0x00, + 0x18, 0x52, 0xDE, 0x8E, 0x19, 0x1E, 0x23, 0x23, 0x1D, 0x33, 0x5F, 0x76, + 0xB9, 0x82, 0xE4, 0x01, 0x32, 0x06, 0x9D, 0xB5, 0xC6, 0x12, 0x14, 0x79, + 0x4B, 0xC2, 0x29, 0x25, 0xCB, 0xCA, 0x97, 0x3F, 0x52, 0xCD, 0x38, 0x54, + 0xBE, 0x12, 0x02, 0x80, 0x8F, 0xE9, 0xD0, 0x07, 0x24, 0xAC, 0x6C, 0x2E, + 0x47, 0xF0, 0x31, 0x4A, 0xB6, 0xFE, 0xF2, 0x40, 0x0C, 0x33, 0xC7, 0x2C, + 0x9A, 0x52, 0x0B, 0x02, 0x31, 0xA5, 0xC8, 0x1C, 0x42, 0x3A, 0x74, 0xE1, + 0xD0, 0xF9, 0x98, 0x52, 0xED, 0x6C, 0x64, 0x61, 0xE6, 0x59, 0x5D, 0xCD, + 0x67, 0x75, 0x5D, 0xD9, 0x4A, 0x4C, 0x4C, 0xC9, 0x1A, 0x63, 0x8D, 0xF1, + 0x21, 0x22, 0x54, 0x95, 0x63, 0x75, 0x06, 0x1B, 0x43, 0x08, 0xC8, 0x2C, + 0xD6, 0x92, 0x73, 0x94, 0x93, 0x83, 0x4B, 0x58, 0xE2, 0x24, 0xAC, 0x73, + 0xA2, 0xF2, 0x87, 0x0F, 0x96, 0x92, 0xE2, 0x52, 0x5D, 0xC1, 0x93, 0xA6, + 0x9A, 0x4D, 0xEB, 0x12, 0xBB, 0x80, 0xDE, 0x87, 0x8B, 0xE5, 0xE4, 0xD0, + 0x87, 0x97, 0xEF, 0x37, 0x9B, 0xBD, 0x57, 0x2D, 0x86, 0x47, 0x9D, 0x08, + 0x88, 0x47, 0xC9, 0x50, 0x79, 0xD0, 0xBC, 0x6F, 0x7B, 0x7C, 0x77, 0xAD, + 0x8B, 0x04, 0x10, 0x20, 0x02, 0x43, 0xA8, 0xCB, 0x29, 0x81, 0x20, 0x83, + 0x35, 0xD4, 0x85, 0x04, 0x20, 0x5D, 0x88, 0xBD, 0xCF, 0xC4, 0x41, 0x5D, + 0x88, 0x21, 0x24, 0x63, 0x68, 0x31, 0xAD, 0x2B, 0x6B, 0x26, 0xB5, 0xED, + 0x7C, 0x8C, 0x89, 0x0C, 0xA2, 0x18, 0x14, 0x91, 0x89, 0xB5, 0x86, 0xD0, + 0x1A, 0xAA, 0x9C, 0xBD, 0xDD, 0x04, 0x1F, 0xFA, 0xDA, 0x99, 0xAA, 0x32, + 0x48, 0x60, 0x88, 0x7C, 0x48, 0x22, 0x90, 0x12, 0x8A, 0xF2, 0xFC, 0x1A, + 0x9C, 0xD4, 0xD5, 0xA4, 0x71, 0x33, 0xCA, 0x16, 0xFA, 0xB0, 0x1B, 0xAB, + 0x1B, 0x60, 0x2C, 0x22, 0x70, 0x6C, 0x47, 0x98, 0x8F, 0xC9, 0x83, 0x56, + 0x92, 0x17, 0x45, 0x24, 0xC6, 0x08, 0x80, 0x75, 0xED, 0x58, 0x64, 0xBF, + 0xEF, 0xD6, 0xBD, 0x57, 0x0A, 0xEE, 0xBC, 0x72, 0x25, 0x97, 0xAC, 0xDA, + 0x63, 0x9D, 0x75, 0x01, 0x05, 0x23, 0x7B, 0x3F, 0x89, 0x58, 0x42, 0x63, + 0x8C, 0x66, 0x53, 0x6B, 0x81, 0x1E, 0x40, 0x4E, 0xB5, 0x24, 0xC2, 0xDA, + 0x12, 0x0A, 0xDC, 0xDC, 0xAC, 0x5E, 0xBC, 0x7E, 0x6F, 0xC9, 0x6A, 0x2F, + 0x1C, 0x16, 0xE9, 0xBD, 0xF7, 0x7D, 0xB8, 0x59, 0x6D, 0x94, 0x6B, 0x73, + 0x36, 0x9B, 0xCE, 0x27, 0xF5, 0xEE, 0x6A, 0xB5, 0xDD, 0xEE, 0x7D, 0x88, + 0x1F, 0x7F, 0xFC, 0xD8, 0x26, 0x11, 0xE9, 0x63, 0x8C, 0x29, 0x39, 0x63, + 0xA8, 0xAE, 0xAA, 0xB6, 0xF3, 0x3F, 0xF9, 0xEC, 0x49, 0x5D, 0xBB, 0xAE, + 0xF3, 0x48, 0x24, 0x23, 0x03, 0x33, 0x8B, 0x01, 0x0C, 0x58, 0xEC, 0x14, + 0x55, 0x9D, 0x48, 0x4B, 0xD9, 0xAD, 0x20, 0x2B, 0xC4, 0xD1, 0x1A, 0x3F, + 0x11, 0xB0, 0xA2, 0x1A, 0xE5, 0xBE, 0x16, 0x28, 0xA9, 0x6B, 0x23, 0xE1, + 0x2C, 0xC0, 0x24, 0x8F, 0x12, 0x28, 0xED, 0xEB, 0xB0, 0xCE, 0x0B, 0xB6, + 0x29, 0x74, 0x82, 0x3A, 0x51, 0x02, 0xC0, 0x49, 0x4E, 0xB4, 0x12, 0x1F, + 0x43, 0x87, 0x2C, 0x23, 0x27, 0x94, 0x96, 0x93, 0x95, 0x59, 0xF8, 0xC0, + 0xA6, 0x3E, 0x3C, 0x7C, 0x5E, 0xB0, 0x98, 0xEF, 0x85, 0xAA, 0x3D, 0xE5, + 0x38, 0x3E, 0x27, 0xA2, 0x32, 0x5C, 0x65, 0x8C, 0x1A, 0x86, 0x83, 0x07, + 0x1B, 0x70, 0x34, 0x8C, 0x65, 0x68, 0xC6, 0x22, 0x01, 0xC0, 0x90, 0x0B, + 0x27, 0x58, 0x98, 0x80, 0x14, 0x6A, 0x99, 0xBC, 0xB4, 0x8F, 0xAC, 0xAB, + 0x19, 0xF2, 0xE9, 0xCD, 0x75, 0x37, 0x22, 0x30, 0x64, 0x40, 0xA0, 0xD2, + 0x5D, 0x90, 0x50, 0x91, 0x13, 0x33, 0x47, 0x4E, 0x1A, 0x34, 0xB7, 0x31, + 0x8F, 0x4B, 0x49, 0x6E, 0x80, 0x6C, 0x82, 0xAA, 0x6C, 0x33, 0x03, 0x8A, + 0x84, 0xC8, 0x5D, 0x17, 0x92, 0xCB, 0xDA, 0x57, 0xD3, 0x85, 0x6A, 0xE7, + 0x8C, 0x25, 0x6B, 0x8D, 0x73, 0xB9, 0xE2, 0xB2, 0xED, 0xFC, 0x66, 0xD7, + 0x2A, 0x15, 0x8E, 0x3A, 0x6E, 0x00, 0x21, 0x44, 0xEE, 0x7D, 0x36, 0xE4, + 0xB4, 0xA3, 0x90, 0xB3, 0x14, 0x12, 0x7B, 0x1F, 0xAD, 0xA1, 0xBA, 0x72, + 0xDD, 0xA1, 0x6F, 0xFB, 0xB6, 0xB2, 0x46, 0xDD, 0xF9, 0x31, 0x46, 0x74, + 0x36, 0xA6, 0xD4, 0x87, 0xB8, 0x98, 0x4E, 0x34, 0xC5, 0x5F, 0x8D, 0x4A, + 0xEF, 0x23, 0x95, 0xBE, 0xD3, 0x38, 0x32, 0x97, 0x3E, 0x28, 0xA0, 0x83, + 0x6E, 0x95, 0x5C, 0x14, 0x95, 0x77, 0xAC, 0x18, 0x93, 0x73, 0xEA, 0x69, + 0x44, 0x24, 0x30, 0xC6, 0x4C, 0x1A, 0x9C, 0x34, 0x6E, 0x5A, 0xBB, 0x97, + 0xEF, 0xD7, 0xEF, 0x56, 0x07, 0x73, 0x2F, 0x4B, 0xCE, 0x00, 0x22, 0xA2, + 0x31, 0xC8, 0x02, 0x29, 0x71, 0x76, 0x11, 0x03, 0x22, 0x8A, 0xB2, 0xB6, + 0x6A, 0x8E, 0x9E, 0xB1, 0xD9, 0xC4, 0x8E, 0x1C, 0x91, 0x00, 0x05, 0x0D, + 0x61, 0x53, 0xD9, 0x43, 0x17, 0x34, 0xC1, 0xB2, 0xF3, 0x51, 0xCB, 0xD7, + 0xBA, 0x3E, 0x26, 0xE6, 0xF5, 0xB6, 0xD5, 0x98, 0x49, 0x65, 0xCD, 0xBE, + 0x0B, 0x93, 0xDA, 0x89, 0x48, 0x88, 0xC9, 0x5A, 0xC3, 0x22, 0x7D, 0x48, + 0xAB, 0x5D, 0x77, 0x36, 0xAB, 0x2B, 0x67, 0x7C, 0x48, 0x6D, 0x1F, 0x34, + 0xD7, 0x17, 0x11, 0xF7, 0x6D, 0x3F, 0x9B, 0x54, 0x3B, 0x9F, 0x79, 0xD0, + 0x42, 0x4C, 0xB1, 0xA4, 0xAA, 0x6A, 0x9C, 0x4D, 0xDF, 0x94, 0x4B, 0xF7, + 0x07, 0x0D, 0xD5, 0x43, 0x5E, 0x21, 0xA2, 0x74, 0x89, 0xAE, 0xB2, 0x9A, + 0xEA, 0x35, 0x88, 0x5A, 0xC1, 0x49, 0x20, 0x25, 0xBE, 0x3C, 0x69, 0x9C, + 0x35, 0xA6, 0xEF, 0xC3, 0xBE, 0xED, 0x7A, 0x1F, 0x8A, 0x5D, 0x50, 0x1C, + 0x9A, 0x03, 0x7E, 0x38, 0x9A, 0x4B, 0x47, 0xF3, 0x04, 0xD5, 0xB0, 0xA5, + 0xCC, 0x6A, 0x09, 0x9A, 0x02, 0xA2, 0x9E, 0x75, 0x10, 0x6B, 0xB0, 0xEF, + 0xFA, 0x97, 0x6F, 0xAF, 0x6F, 0x57, 0x5B, 0x4E, 0x89, 0x10, 0xAB, 0xCA, + 0x7A, 0x1F, 0x99, 0x79, 0xB7, 0x3F, 0xB4, 0x9D, 0xDF, 0xB7, 0x7D, 0xD7, + 0x7B, 0x01, 0x30, 0xC6, 0x32, 0x43, 0xD3, 0xD4, 0xD6, 0xD9, 0x10, 0xE2, + 0x7A, 0xBD, 0x5D, 0x2E, 0x66, 0x7D, 0xDF, 0x5B, 0x6B, 0x43, 0xD0, 0x0E, + 0x7B, 0xD6, 0x87, 0x10, 0x62, 0x1C, 0x01, 0x05, 0x80, 0xA3, 0xFF, 0xE8, + 0xE8, 0xFC, 0xC4, 0x0F, 0xE9, 0xB2, 0xE1, 0xCB, 0x61, 0xBD, 0x9D, 0x60, + 0x37, 0xC5, 0x02, 0x78, 0x57, 0x2A, 0x06, 0x40, 0x34, 0xA0, 0xF7, 0x3B, + 0xA0, 0x0C, 0x46, 0x19, 0xA8, 0x23, 0xA3, 0xEC, 0xF8, 0xF7, 0xD1, 0x71, + 0x32, 0xE2, 0x47, 0x24, 0xCA, 0x8D, 0x42, 0x98, 0x07, 0x9D, 0x52, 0x50, + 0xC9, 0x48, 0x2F, 0x14, 0xE6, 0x2E, 0x80, 0xE2, 0xB3, 0xCE, 0x5C, 0x6B, + 0x45, 0x0B, 0xC0, 0xA8, 0xA5, 0xCB, 0x48, 0x7F, 0x0D, 0x2E, 0x2A, 0x22, + 0x73, 0x17, 0x07, 0x7D, 0x08, 0xF1, 0x8D, 0x34, 0xE6, 0x71, 0x64, 0xB9, + 0x3C, 0xEB, 0x09, 0x68, 0x18, 0x36, 0xB0, 0x11, 0x62, 0xBD, 0xB3, 0x3C, + 0x01, 0x8A, 0x17, 0x0F, 0x8E, 0x9E, 0xA8, 0x92, 0x0F, 0x74, 0xC7, 0x9B, + 0x96, 0xCF, 0xCA, 0x65, 0x61, 0xBA, 0xAC, 0x4A, 0x55, 0xC1, 0x00, 0x3C, + 0x59, 0x62, 0xE4, 0x98, 0x52, 0xA1, 0x27, 0x60, 0x4B, 0x54, 0xEA, 0xC8, + 0x45, 0x13, 0xF6, 0x20, 0xB7, 0x0D, 0x2D, 0xEF, 0x45, 0x40, 0x31, 0xA5, + 0x83, 0x88, 0x09, 0xC9, 0x50, 0xAE, 0xD1, 0x6E, 0x1A, 0x37, 0x9B, 0xD5, + 0xCE, 0x39, 0x65, 0x92, 0xE2, 0x94, 0xB4, 0x66, 0x65, 0xBD, 0x6D, 0x7B, + 0x1F, 0x75, 0xC7, 0x2E, 0x04, 0x46, 0x12, 0x93, 0x28, 0x09, 0x45, 0x01, + 0x53, 0x18, 0x13, 0x1F, 0xFA, 0x00, 0x00, 0x29, 0x71, 0xDB, 0x87, 0xED, + 0xA1, 0x27, 0xA2, 0xE5, 0xAC, 0x46, 0x22, 0x67, 0xC8, 0x5A, 0x23, 0x20, + 0x21, 0x26, 0x11, 0x26, 0x32, 0xD9, 0x50, 0xD7, 0x8C, 0xF9, 0x8C, 0x8C, + 0x78, 0x98, 0x9B, 0x61, 0x04, 0xEF, 0x57, 0x1A, 0x8C, 0x27, 0x52, 0xC3, + 0xD5, 0x9D, 0x0F, 0x9C, 0xA4, 0x4E, 0xAE, 0x69, 0xD0, 0x39, 0x04, 0x40, + 0x6B, 0x31, 0x25, 0x14, 0xC1, 0xE9, 0xA4, 0x7A, 0xFA, 0xD1, 0x39, 0x21, + 0xD6, 0x95, 0x5D, 0xEF, 0xFB, 0xD5, 0xB6, 0x53, 0x7E, 0x5E, 0x16, 0x10, + 0x10, 0x9B, 0xCB, 0xDA, 0x44, 0x15, 0x69, 0x16, 0x77, 0x01, 0x66, 0xEE, + 0x83, 0x88, 0x88, 0x76, 0x07, 0x61, 0x56, 0xEE, 0x1D, 0x04, 0x12, 0x0B, + 0xD9, 0x95, 0xA6, 0xD5, 0xC3, 0xD6, 0x1A, 0x6B, 0xA8, 0xF5, 0x41, 0xCD, + 0x73, 0x4D, 0xDD, 0x08, 0x91, 0x63, 0x4A, 0xFB, 0x36, 0xC4, 0xC8, 0x9C, + 0xEB, 0xE8, 0x25, 0x29, 0x59, 0x01, 0xA7, 0xF5, 0xAE, 0x0B, 0x21, 0xCD, + 0x26, 0x15, 0xB3, 0xEC, 0x0E, 0xBD, 0x21, 0x6A, 0xEA, 0x8C, 0xB7, 0x3B, + 0x1F, 0x7D, 0x48, 0x3E, 0x64, 0x48, 0x18, 0x42, 0x72, 0x36, 0x97, 0xBE, + 0x2A, 0x3D, 0x4E, 0x49, 0x24, 0x2E, 0x14, 0x60, 0x00, 0x29, 0xA5, 0x43, + 0xE7, 0x99, 0xB9, 0xED, 0x63, 0x4A, 0x69, 0x36, 0xAD, 0x6B, 0x67, 0xA7, + 0x93, 0x5A, 0x4B, 0x56, 0xC7, 0x80, 0x9C, 0x88, 0xB4, 0xBC, 0x30, 0x46, + 0x00, 0xC0, 0xA6, 0x76, 0x88, 0xB0, 0x3B, 0x74, 0x2C, 0xE0, 0x4C, 0xEE, + 0x4B, 0x36, 0x9A, 0x8E, 0x81, 0xDA, 0xF3, 0xB8, 0xC7, 0x98, 0xD2, 0x4B, + 0x12, 0x00, 0x41, 0x14, 0x8E, 0x41, 0xEF, 0x43, 0x0C, 0x1E, 0x39, 0xFD, + 0xE1, 0xDB, 0xE7, 0xF3, 0xF9, 0x5C, 0xEB, 0x19, 0x97, 0xCB, 0xF9, 0x76, + 0xBB, 0x4B, 0x21, 0xF6, 0x3E, 0x84, 0x18, 0x57, 0xAB, 0x2D, 0x00, 0xF9, + 0x98, 0xF6, 0x87, 0x2E, 0xA5, 0xE4, 0x9C, 0x8B, 0x91, 0x7B, 0xBF, 0x07, + 0x91, 0x07, 0x0F, 0x2E, 0x42, 0x88, 0x29, 0xF2, 0x66, 0xB3, 0x27, 0xA2, + 0x10, 0x82, 0x88, 0xA4, 0xC4, 0xFB, 0x83, 0xA4, 0xC4, 0xEB, 0xCD, 0xAE, + 0x6C, 0x5A, 0x90, 0xCB, 0xB5, 0x91, 0x11, 0xAD, 0xDA, 0x17, 0x59, 0xEB, + 0x28, 0xF3, 0xFE, 0x48, 0x93, 0x0C, 0x12, 0x32, 0xAC, 0x40, 0xCC, 0x08, + 0x69, 0xA4, 0x74, 0x06, 0xC4, 0xA4, 0x75, 0x4B, 0x34, 0x28, 0xC8, 0x1C, + 0x35, 0x3C, 0xAE, 0xE4, 0xA3, 0x27, 0x69, 0xAC, 0x11, 0xC6, 0x8A, 0x22, + 0xC3, 0xAE, 0x8C, 0x39, 0x80, 0xCB, 0x36, 0x90, 0x17, 0x79, 0x2A, 0xE4, + 0xF8, 0xEA, 0x29, 0x2B, 0x41, 0xB3, 0x3B, 0x2B, 0x1C, 0x4B, 0x5B, 0x1F, + 0x35, 0xE2, 0xA5, 0x90, 0xBE, 0x0E, 0x8A, 0x03, 0xEE, 0x66, 0x96, 0xD2, + 0x3D, 0x15, 0x2C, 0xA2, 0x0B, 0x5D, 0xED, 0x95, 0x6C, 0xD8, 0xDE, 0xC7, + 0xA9, 0x63, 0x68, 0x96, 0xDF, 0xE1, 0xEE, 0xCB, 0x0D, 0x28, 0x61, 0xAC, + 0xBF, 0x60, 0xA4, 0xD4, 0x4E, 0x14, 0x99, 0x1E, 0x93, 0xFB, 0x79, 0x18, + 0x63, 0x4C, 0xEE, 0x43, 0x3A, 0xBC, 0x97, 0x4A, 0xEC, 0x00, 0x41, 0xCA, + 0x45, 0xF4, 0x39, 0x73, 0xFE, 0x16, 0xAB, 0x31, 0xC9, 0x12, 0xB5, 0x64, + 0xBC, 0xB0, 0x4E, 0xAA, 0xB9, 0x88, 0x29, 0x57, 0x1D, 0xDC, 0xF1, 0x9D, + 0x63, 0xA6, 0x85, 0x03, 0x91, 0xDC, 0x97, 0x4B, 0x93, 0xDF, 0xE7, 0xF3, + 0xC9, 0xE5, 0xF9, 0xAC, 0xAA, 0x9C, 0x96, 0x89, 0xC6, 0x98, 0x7A, 0x1F, + 0x0F, 0x6D, 0x7F, 0xBB, 0x69, 0xBB, 0x10, 0x63, 0xCA, 0xC4, 0x47, 0xDA, + 0x63, 0x4C, 0x97, 0xB7, 0x00, 0x0C, 0x05, 0x46, 0x7D, 0xE0, 0x94, 0x7C, + 0x5D, 0x19, 0x1F, 0x93, 0x69, 0x95, 0x2B, 0x31, 0x47, 0x10, 0x11, 0x21, + 0x96, 0x70, 0xDE, 0xB4, 0xD1, 0x92, 0x54, 0x00, 0xC0, 0x18, 0x53, 0xD7, + 0x07, 0x4D, 0x5F, 0x68, 0x6A, 0xA7, 0xB3, 0x39, 0x54, 0x7F, 0x8D, 0x07, + 0x62, 0x50, 0x67, 0x32, 0x8A, 0xA2, 0xEA, 0x5C, 0xD6, 0x35, 0x59, 0x6B, + 0xB4, 0xF5, 0x59, 0xDB, 0xF9, 0x94, 0x4C, 0xAE, 0x9F, 0x60, 0x61, 0x81, + 0x10, 0x63, 0x08, 0x69, 0x39, 0xAB, 0x45, 0x60, 0x3E, 0x71, 0x21, 0xA6, + 0x98, 0x24, 0x69, 0x90, 0x1B, 0x10, 0x04, 0x38, 0x81, 0x26, 0xA6, 0x0A, + 0x80, 0xBA, 0xBD, 0x43, 0xE4, 0x10, 0xD3, 0x70, 0x40, 0x52, 0x4E, 0x77, + 0xED, 0x6B, 0x57, 0xFC, 0xC4, 0x5C, 0xAA, 0xD2, 0x10, 0x40, 0xC9, 0x66, + 0x61, 0x54, 0x54, 0x77, 0xE8, 0x42, 0x4C, 0xEC, 0xA3, 0x92, 0x46, 0x08, + 0x92, 0x86, 0x8C, 0x05, 0x73, 0xCF, 0x1F, 0xD8, 0x77, 0x21, 0xB1, 0x10, + 0x02, 0x8B, 0xB8, 0xCE, 0xEB, 0x9A, 0xAA, 0x9C, 0x0D, 0x29, 0x55, 0x8E, + 0xBA, 0x3E, 0xED, 0x3B, 0x3F, 0x9B, 0x54, 0xD3, 0x49, 0xED, 0x2C, 0xA9, + 0x07, 0x2D, 0x44, 0xD6, 0x66, 0x97, 0x2C, 0xE2, 0x8C, 0x09, 0x31, 0x71, + 0x62, 0x6B, 0xCD, 0x7A, 0xDB, 0xEE, 0x0E, 0x7D, 0xCA, 0xAD, 0x2C, 0x84, + 0x77, 0xFD, 0x9E, 0x7C, 0x8C, 0xBC, 0x5C, 0xC8, 0xE0, 0x29, 0x2B, 0xFB, + 0xB0, 0x14, 0xB9, 0xC9, 0xC0, 0xAB, 0xAA, 0xDC, 0x1C, 0xC0, 0x87, 0xA4, + 0xF4, 0x2C, 0x3A, 0x65, 0x03, 0x70, 0x80, 0xC2, 0x81, 0xA3, 0xE3, 0x6D, + 0x08, 0x2B, 0x6B, 0x20, 0x73, 0x45, 0x41, 0x55, 0xB9, 0xB6, 0xED, 0x56, + 0xEB, 0x0D, 0x21, 0x34, 0x4D, 0x7D, 0x75, 0xB3, 0x79, 0xF3, 0xE6, 0xEA, + 0xB3, 0xCF, 0xAA, 0xC9, 0xB4, 0x41, 0xA4, 0xD9, 0x74, 0xD2, 0xB7, 0x1D, + 0x13, 0x32, 0x80, 0x0F, 0x69, 0xBB, 0x6F, 0x9B, 0x66, 0xA2, 0xD0, 0x4C, + 0x2F, 0xE8, 0xBD, 0xEF, 0xFB, 0x5E, 0x44, 0xCE, 0xCE, 0x96, 0xCC, 0xEC, + 0x83, 0xEF, 0xFB, 0x1E, 0x91, 0x00, 0x50, 0x2B, 0xAB, 0xCE, 0xCE, 0x96, + 0xFB, 0x7D, 0xBB, 0xDE, 0xEC, 0x43, 0x0C, 0xD9, 0x86, 0x2D, 0x99, 0x01, + 0x39, 0x6E, 0x39, 0x2C, 0xB2, 0xE2, 0x86, 0x2A, 0x50, 0x12, 0x00, 0x8E, + 0x2D, 0x2C, 0x8F, 0xCA, 0xA2, 0x98, 0x46, 0x88, 0x38, 0x14, 0xD1, 0x80, + 0x66, 0xA2, 0xA2, 0x60, 0x31, 0x5D, 0x86, 0xFE, 0xBE, 0x43, 0x81, 0x63, + 0xD6, 0x4E, 0x79, 0xB5, 0xAB, 0x96, 0x53, 0x1A, 0x30, 0x55, 0x5C, 0xC7, + 0x9C, 0x8B, 0x8C, 0x92, 0x01, 0x00, 0x20, 0x95, 0x14, 0x61, 0xCE, 0x8C, + 0x88, 0x19, 0xF6, 0x8E, 0x75, 0xD9, 0x58, 0xD5, 0xE6, 0x24, 0xF9, 0x02, + 0xBA, 0x05, 0x07, 0x1D, 0x29, 0x59, 0x9D, 0xF2, 0x1D, 0x40, 0x38, 0xAC, + 0x82, 0x21, 0x8C, 0x98, 0x4D, 0x52, 0x73, 0x7C, 0xF1, 0x01, 0x5F, 0x0F, + 0xEA, 0xE9, 0xBE, 0x46, 0x93, 0xBB, 0xBF, 0x1E, 0x87, 0xEB, 0x1E, 0x3A, + 0x83, 0xA3, 0xBA, 0xBC, 0x73, 0xA9, 0x0C, 0x29, 0x4A, 0x7B, 0xE2, 0xF1, + 0x8E, 0xA2, 0x1C, 0xC5, 0x58, 0x8E, 0x38, 0x7A, 0x30, 0x74, 0xB8, 0x12, + 0x73, 0x42, 0x6D, 0xC1, 0x9E, 0x58, 0x38, 0x71, 0x86, 0x6B, 0x9C, 0x8D, + 0x87, 0xC4, 0x68, 0x8F, 0xD3, 0x99, 0x77, 0xA4, 0x6C, 0x45, 0x8B, 0x80, + 0x21, 0x32, 0x96, 0x72, 0x34, 0x1D, 0x91, 0x59, 0xEA, 0xCA, 0x5C, 0x9C, + 0xCD, 0xE6, 0xB3, 0x06, 0x00, 0xFA, 0xCE, 0x2B, 0xFF, 0xA7, 0x26, 0xB2, + 0xB7, 0x3E, 0x6A, 0x85, 0xB3, 0x68, 0xEA, 0x09, 0x83, 0x00, 0x10, 0xA1, + 0x25, 0x03, 0x68, 0xFA, 0x10, 0xB1, 0x64, 0x97, 0x68, 0x1E, 0x8B, 0xF7, + 0x29, 0x10, 0x0F, 0x12, 0x66, 0xAC, 0x09, 0x31, 0x6D, 0xF7, 0x7D, 0xEB, + 0x83, 0x33, 0xB4, 0x9C, 0x35, 0xD3, 0xA6, 0x82, 0xD1, 0x00, 0x59, 0x43, + 0x78, 0x1C, 0xB8, 0x61, 0x58, 0x8E, 0x3A, 0x6B, 0x3C, 0x6A, 0xF7, 0xB7, + 0x02, 0x8D, 0x9A, 0x1B, 0x63, 0x9C, 0xB3, 0x29, 0xC5, 0xB6, 0x0D, 0xDB, + 0x7D, 0xA7, 0x4F, 0xAB, 0x7C, 0xB4, 0x21, 0x26, 0x66, 0xB6, 0xC6, 0xB0, + 0x48, 0x4C, 0x3C, 0xA9, 0x6C, 0x48, 0xA9, 0xEB, 0x35, 0x2C, 0x4B, 0x90, + 0x33, 0xF4, 0x00, 0x01, 0xAC, 0x21, 0x37, 0x6D, 0x9C, 0xA5, 0xC4, 0xBC, + 0x3B, 0xF8, 0xFD, 0xB1, 0x46, 0x55, 0x10, 0x91, 0x01, 0x51, 0x80, 0x8E, + 0x9E, 0x46, 0x40, 0x38, 0xA2, 0xF4, 0x9C, 0xE3, 0xAE, 0xB4, 0x48, 0x2C, + 0x12, 0x35, 0x47, 0x3F, 0x8F, 0xBC, 0x92, 0x97, 0x95, 0x55, 0x25, 0x00, + 0xA8, 0xA6, 0x19, 0x13, 0x1A, 0x40, 0xEF, 0x93, 0x88, 0x68, 0xBA, 0xBF, + 0x0E, 0xB2, 0xB6, 0x02, 0x88, 0x91, 0x0D, 0x32, 0x11, 0x11, 0x8B, 0x35, + 0x46, 0x72, 0x6E, 0x5C, 0xE6, 0x53, 0xF6, 0x7D, 0x88, 0x89, 0xE3, 0xA1, + 0x6F, 0xFB, 0x6C, 0x7C, 0x11, 0x02, 0x82, 0xF6, 0x6A, 0xC2, 0xB6, 0xF7, + 0xD6, 0xD0, 0x74, 0x8A, 0x88, 0xA0, 0x95, 0xAA, 0x83, 0x7A, 0xA2, 0xEC, + 0x89, 0xD0, 0x01, 0x04, 0xE7, 0x6C, 0xB6, 0x7A, 0x52, 0x52, 0x50, 0xA9, + 0x7F, 0xAA, 0x9C, 0x4D, 0xB9, 0xAC, 0x27, 0x6B, 0x5F, 0x6D, 0x58, 0x27, + 0x92, 0xF9, 0x96, 0xB7, 0x9B, 0xCD, 0x76, 0xB3, 0x35, 0xD6, 0x34, 0x55, + 0x7D, 0x7D, 0xBD, 0x7A, 0xFD, 0xE6, 0xFA, 0xF2, 0xE2, 0xBC, 0xEF, 0xFB, + 0x10, 0xC3, 0xE3, 0xC7, 0x0F, 0x39, 0x31, 0x20, 0x12, 0x19, 0xE6, 0x74, + 0xBB, 0xDA, 0xEC, 0x0E, 0xDD, 0xA1, 0xF5, 0xBA, 0xB6, 0x07, 0xF3, 0xC9, + 0x18, 0x63, 0x0C, 0xF5, 0xBD, 0x6F, 0xBB, 0x2E, 0xF8, 0x80, 0x44, 0xD6, + 0xE2, 0x6C, 0x36, 0x5D, 0xAD, 0xB7, 0x1C, 0xD2, 0xFE, 0xD0, 0x26, 0xE6, + 0x49, 0x53, 0x6B, 0x7E, 0x86, 0xB3, 0xD6, 0x3A, 0x25, 0xB8, 0x54, 0xC5, + 0x73, 0xDF, 0x83, 0x55, 0x64, 0x22, 0xBB, 0x86, 0x06, 0xFD, 0x96, 0xD3, + 0x2C, 0xA0, 0xAC, 0x85, 0x41, 0x7E, 0x32, 0xE8, 0x20, 0x64, 0x64, 0x62, + 0xCA, 0x44, 0x2C, 0xA5, 0xE9, 0xB0, 0x2E, 0x9F, 0xF1, 0xBA, 0x45, 0x84, + 0xC4, 0xB1, 0x28, 0x30, 0x28, 0xA4, 0x3B, 0x59, 0x93, 0x49, 0x09, 0x85, + 0x0D, 0x88, 0x06, 0xCA, 0x16, 0xA2, 0x03, 0x9B, 0x95, 0x70, 0xCE, 0xC3, + 0x2F, 0x97, 0xC8, 0x73, 0x91, 0x55, 0x62, 0xD9, 0x7F, 0xCB, 0x11, 0xF9, + 0x7F, 0x28, 0x59, 0x87, 0x8F, 0x13, 0x68, 0x01, 0x09, 0x84, 0x8F, 0x5C, + 0x6C, 0xEA, 0x32, 0x62, 0x66, 0x5B, 0xBA, 0x8D, 0xA0, 0xAE, 0x2D, 0x3E, + 0xAA, 0x96, 0xF1, 0xDA, 0x39, 0xD1, 0x6B, 0x30, 0x2A, 0xD7, 0x19, 0x8D, + 0xE5, 0x1D, 0x75, 0x76, 0x5F, 0x1B, 0xE6, 0x13, 0x0B, 0xDA, 0x10, 0xC6, + 0x9C, 0x76, 0x55, 0x86, 0x97, 0xF3, 0x56, 0xA1, 0x7A, 0x0E, 0xA1, 0x28, + 0x68, 0x8E, 0xC0, 0x25, 0x4F, 0x96, 0x59, 0x94, 0xD0, 0x58, 0xF7, 0x07, + 0xCE, 0xAD, 0x0A, 0x50, 0x40, 0xAC, 0x3E, 0x3A, 0x95, 0xBE, 0x32, 0xC3, + 0x63, 0x29, 0x0C, 0x36, 0x44, 0x93, 0xCA, 0x4C, 0x9B, 0xCA, 0x3A, 0x2B, + 0x22, 0x4A, 0xB6, 0xB5, 0x3F, 0xF4, 0xCC, 0x9C, 0x9B, 0xB9, 0xF5, 0x21, + 0x46, 0x96, 0x82, 0xBF, 0x74, 0x57, 0x00, 0x40, 0x6D, 0x2F, 0x27, 0x00, + 0x4D, 0x6D, 0xAD, 0xA1, 0x49, 0x6D, 0x99, 0xA5, 0x0F, 0xB1, 0x0F, 0x09, + 0x24, 0xA7, 0x83, 0x69, 0x94, 0x90, 0x0B, 0x79, 0x61, 0xDB, 0x7B, 0xC0, + 0xDC, 0x70, 0xD9, 0x87, 0x04, 0xE0, 0xFB, 0x10, 0xB5, 0xA1, 0xA2, 0x35, + 0xD4, 0x34, 0x55, 0xF1, 0xE2, 0x50, 0xF9, 0x01, 0x87, 0x11, 0xFC, 0xE0, + 0xCE, 0x70, 0x32, 0xD0, 0xA3, 0x11, 0xA7, 0xAA, 0xB2, 0x6D, 0xEF, 0xDB, + 0x3E, 0xF8, 0xC0, 0x21, 0x26, 0x40, 0x0C, 0x31, 0x31, 0x8B, 0xB3, 0x04, + 0x90, 0x2B, 0x6C, 0xCE, 0xE7, 0x93, 0x83, 0x55, 0x9E, 0x0E, 0x09, 0x91, + 0x01, 0x30, 0x31, 0xEF, 0x3A, 0x8F, 0x00, 0x88, 0x38, 0x6D, 0x5C, 0x53, + 0xD9, 0xA6, 0xB2, 0x89, 0xB9, 0x0F, 0x47, 0x46, 0x06, 0x04, 0xA0, 0x63, + 0x76, 0xCC, 0x07, 0x36, 0xC6, 0xFC, 0x6B, 0x51, 0x72, 0x06, 0x41, 0x0C, + 0x45, 0xF5, 0x6A, 0x12, 0x66, 0x0D, 0x98, 0xC7, 0x1F, 0x88, 0xD0, 0x8C, + 0xBE, 0x42, 0x84, 0x10, 0x93, 0xB5, 0x64, 0x0C, 0x84, 0x08, 0x88, 0x50, + 0x39, 0x53, 0x59, 0xAD, 0x2B, 0x05, 0x6B, 0x31, 0xAA, 0xF3, 0x53, 0x80, + 0x85, 0x09, 0x20, 0x04, 0xE8, 0x43, 0xD4, 0xC6, 0x54, 0xCC, 0x0C, 0x08, + 0xA6, 0x44, 0xF7, 0xD5, 0x2C, 0x0C, 0x91, 0x0F, 0x9D, 0x57, 0x6A, 0x5C, + 0x24, 0x4D, 0x64, 0xD5, 0xB2, 0xA4, 0xEC, 0x07, 0xD3, 0x3E, 0x58, 0x00, + 0x60, 0x08, 0x9D, 0x55, 0x2A, 0x8B, 0xA4, 0xD1, 0x55, 0x22, 0xB4, 0xD6, + 0x5E, 0x2C, 0x67, 0x31, 0xA5, 0x10, 0x92, 0x52, 0xB8, 0x68, 0x7F, 0x62, + 0xF5, 0x42, 0xC6, 0x28, 0x29, 0x84, 0xED, 0x66, 0xA3, 0x98, 0x7A, 0xEB, + 0xF7, 0xC0, 0x5C, 0x39, 0xB3, 0xDD, 0xB7, 0xB6, 0xB2, 0x0F, 0x1F, 0x5C, + 0xA4, 0x94, 0x5E, 0xBF, 0x7A, 0xEB, 0xBD, 0x5F, 0x2C, 0xE6, 0xB7, 0xEB, + 0xDD, 0xD5, 0xCD, 0x3A, 0x86, 0xC4, 0x12, 0x11, 0x51, 0xB5, 0xEA, 0xE0, + 0xE6, 0x73, 0xCE, 0xED, 0xF6, 0x87, 0x94, 0xD2, 0x62, 0x3E, 0x67, 0xE6, + 0xBA, 0xAE, 0x91, 0xB0, 0x69, 0x6A, 0x00, 0x64, 0x91, 0xDD, 0xFE, 0xF0, + 0xE0, 0x72, 0xC9, 0x9C, 0x82, 0xF7, 0x86, 0xC8, 0x9A, 0x3A, 0xF7, 0xF1, + 0xC6, 0x42, 0xE8, 0xF3, 0x27, 0x3E, 0x77, 0x71, 0x04, 0x02, 0x1E, 0x1B, + 0x43, 0x0C, 0x7E, 0xAB, 0xB2, 0xF8, 0x41, 0x12, 0x03, 0x02, 0x9A, 0xFC, + 0x54, 0x65, 0x7E, 0x87, 0x69, 0xCD, 0x4C, 0xCD, 0x19, 0x4D, 0x70, 0x61, + 0x49, 0x11, 0x31, 0xE3, 0x48, 0x6D, 0xF6, 0x2A, 0x1E, 0x5D, 0x5B, 0xC3, + 0xD5, 0x52, 0x92, 0x01, 0x87, 0x42, 0xD9, 0x17, 0x8F, 0x8A, 0xB0, 0x80, + 0xBE, 0xFC, 0x30, 0x9C, 0xBB, 0x8D, 0x94, 0xDF, 0xB3, 0x80, 0x40, 0x56, + 0xC2, 0x47, 0xF7, 0x5D, 0x06, 0x92, 0x65, 0xE3, 0x19, 0xE4, 0x50, 0x78, + 0x5C, 0x6D, 0x2A, 0x00, 0x80, 0x04, 0x22, 0xA7, 0xE1, 0xDD, 0xB2, 0x88, + 0xF2, 0xE5, 0x4E, 0xD6, 0xD7, 0x78, 0x89, 0x9D, 0x80, 0xB2, 0x13, 0x0D, + 0x88, 0x88, 0x3A, 0x59, 0x43, 0xA9, 0x3F, 0xA4, 0xEC, 0xC1, 0x14, 0x51, + 0xF6, 0x5A, 0xED, 0xDA, 0x47, 0x39, 0x4D, 0x4E, 0xB2, 0x91, 0x9F, 0xC7, + 0xA2, 0xCC, 0xC8, 0x10, 0x9C, 0x15, 0xC1, 0x1C, 0xFA, 0x05, 0x41, 0x44, + 0x3B, 0xB8, 0x38, 0x51, 0xA9, 0xCB, 0xEE, 0xCE, 0x7A, 0x4A, 0x29, 0x24, + 0xDC, 0x77, 0xBE, 0x8A, 0xC9, 0x18, 0xEA, 0x7D, 0x50, 0xD2, 0x7D, 0x66, + 0x09, 0x29, 0x69, 0xD2, 0xA6, 0xBE, 0x8E, 0x0A, 0x9F, 0xA6, 0x5E, 0xFA, + 0xC0, 0x81, 0x93, 0x30, 0x20, 0xE0, 0xBE, 0xF5, 0xC6, 0x60, 0x53, 0xD9, + 0x49, 0xED, 0x1A, 0x67, 0xD6, 0x87, 0x5E, 0x3D, 0x38, 0x1A, 0x95, 0x5B, + 0xCC, 0x1A, 0x04, 0x50, 0x02, 0x55, 0x4E, 0xE2, 0x43, 0x42, 0x81, 0x94, + 0x64, 0x25, 0x9D, 0x21, 0x12, 0x90, 0xCA, 0xD0, 0xD9, 0xBC, 0x39, 0x5B, + 0x4C, 0xE9, 0xC8, 0xDE, 0x71, 0xCC, 0xA3, 0x1B, 0x90, 0xD7, 0x71, 0x7A, + 0xE4, 0xCE, 0x70, 0xDF, 0xD7, 0x65, 0xFA, 0xB3, 0x35, 0xD4, 0x54, 0xCE, + 0xFB, 0x98, 0x58, 0x18, 0xC8, 0x7B, 0xED, 0x2D, 0x24, 0x21, 0xB1, 0x21, + 0x10, 0x81, 0x98, 0xB8, 0xF7, 0x51, 0x8B, 0x0A, 0x7B, 0xCF, 0x02, 0x90, + 0x98, 0x39, 0x60, 0x4E, 0x99, 0x42, 0x88, 0x8A, 0x3D, 0xD5, 0xD6, 0xB3, + 0xA4, 0x93, 0x14, 0x52, 0x2A, 0x60, 0xEA, 0xCE, 0x48, 0x8E, 0xD5, 0x6E, + 0x79, 0x60, 0xC8, 0x16, 0xAB, 0x80, 0x7A, 0xD0, 0x00, 0x32, 0xA5, 0x55, + 0x39, 0x4F, 0x08, 0x8A, 0x85, 0xA9, 0xDB, 0x2C, 0x01, 0x80, 0x3A, 0xFB, + 0x84, 0x10, 0x9C, 0x25, 0x67, 0x8C, 0x73, 0x46, 0xF3, 0x2D, 0xAC, 0x35, + 0x22, 0xD0, 0xFB, 0x28, 0xCC, 0x7D, 0x88, 0x80, 0x68, 0x88, 0xB4, 0xB2, + 0xB5, 0x20, 0xA6, 0x92, 0x30, 0xC8, 0x9C, 0x18, 0x58, 0x24, 0xB2, 0x38, + 0x81, 0x0E, 0xA2, 0x0F, 0x91, 0xB4, 0x9A, 0x62, 0x52, 0x29, 0x81, 0x47, + 0x52, 0xFA, 0x4E, 0x96, 0xC9, 0xA4, 0xAA, 0x9C, 0x92, 0x91, 0x20, 0x8B, + 0x38, 0x6B, 0xAC, 0x25, 0x55, 0x72, 0x25, 0xAF, 0x58, 0xAC, 0x31, 0x4E, + 0x4B, 0x8E, 0x58, 0x5C, 0x65, 0x99, 0x19, 0x11, 0x0E, 0xFB, 0xFD, 0x9B, + 0x37, 0x57, 0x5D, 0xE7, 0x53, 0xE2, 0xD9, 0x7C, 0xDA, 0x77, 0xFD, 0x6E, + 0x77, 0x88, 0x29, 0xFB, 0x5E, 0x0F, 0x87, 0xF6, 0xF9, 0x8F, 0xAF, 0xDA, + 0x43, 0x07, 0x00, 0x40, 0xB8, 0xDE, 0xB6, 0xDB, 0xDD, 0x41, 0x45, 0xCB, + 0x5A, 0xA3, 0xEC, 0x7D, 0xC6, 0x18, 0xA8, 0x50, 0x41, 0x3E, 0x77, 0x7E, + 0xB1, 0x98, 0x19, 0x43, 0x4D, 0xD3, 0xC4, 0x14, 0x43, 0x08, 0x49, 0xE4, + 0xE1, 0x83, 0xCB, 0x1F, 0x5E, 0xBC, 0x6A, 0xAA, 0x6A, 0x3A, 0x99, 0x58, + 0x63, 0x43, 0x88, 0xCC, 0xE2, 0x2A, 0xA3, 0x3B, 0xDD, 0xB1, 0xAA, 0xFA, + 0x6E, 0x5B, 0x55, 0x9D, 0x8F, 0x3F, 0xA3, 0xDD, 0x74, 0x0B, 0x91, 0xEC, + 0xC0, 0x2A, 0x9F, 0xB2, 0x82, 0x02, 0xA5, 0x4C, 0x67, 0x80, 0x28, 0x02, + 0x83, 0x17, 0x7A, 0xBC, 0xC4, 0xD4, 0x53, 0x29, 0x92, 0x99, 0xC2, 0x8C, + 0x25, 0x42, 0x75, 0x0B, 0x49, 0xF1, 0xD0, 0x0C, 0xDC, 0xF9, 0x52, 0x5C, + 0xDB, 0xBA, 0x03, 0x1D, 0x53, 0x25, 0x8E, 0x34, 0x19, 0xA3, 0xC7, 0x2F, + 0xAB, 0x3B, 0x23, 0x30, 0x4D, 0x76, 0xD3, 0x4D, 0x10, 0x11, 0x91, 0xA4, + 0x94, 0x4C, 0x16, 0x74, 0x06, 0x00, 0x80, 0x03, 0xD9, 0xD7, 0x9D, 0x1D, + 0x1D, 0x65, 0xBC, 0x70, 0x8A, 0x54, 0xE6, 0x91, 0x19, 0x03, 0xCC, 0xE1, + 0x14, 0x81, 0x62, 0x11, 0x1E, 0xB1, 0x67, 0x36, 0x84, 0x71, 0x54, 0xA5, + 0x34, 0x08, 0xFC, 0xA0, 0x97, 0xCB, 0x5D, 0xB2, 0x32, 0x12, 0xC4, 0x52, + 0x8C, 0x80, 0x45, 0xC0, 0xB3, 0xE0, 0x2B, 0xA2, 0x54, 0x1B, 0xFD, 0x78, + 0xF7, 0xD1, 0xC3, 0x8C, 0xB4, 0xD8, 0x51, 0xE5, 0x22, 0xA2, 0x06, 0x1C, + 0xC7, 0x41, 0x5F, 0x54, 0x27, 0xEE, 0xA0, 0x41, 0xFB, 0x90, 0x7C, 0x4C, + 0x5D, 0x1F, 0x39, 0xF3, 0x9C, 0x40, 0x92, 0xF2, 0x53, 0xB9, 0xB7, 0xBA, + 0x1B, 0x35, 0x90, 0xE7, 0xAC, 0x99, 0x34, 0xD4, 0xB0, 0x15, 0x91, 0x3E, + 0x24, 0x66, 0x8E, 0x89, 0x0F, 0x5D, 0x08, 0x31, 0x35, 0x95, 0x9B, 0xD4, + 0x2E, 0x50, 0xEA, 0x7C, 0x44, 0xC4, 0xBA, 0xB2, 0xD3, 0xDA, 0xF9, 0x18, + 0xD5, 0x37, 0x94, 0xB8, 0x94, 0x3D, 0x20, 0x30, 0x73, 0xEF, 0x63, 0x53, + 0x59, 0x53, 0x51, 0x62, 0xF1, 0x31, 0xD9, 0x60, 0x94, 0xF7, 0xDD, 0xE5, + 0xEA, 0xA5, 0xA3, 0xE6, 0x3A, 0x51, 0x5B, 0x27, 0x73, 0x30, 0x4E, 0x6A, + 0x1F, 0xBE, 0x11, 0xC4, 0x99, 0x12, 0xDE, 0x6F, 0x0E, 0x7D, 0x88, 0x95, + 0x31, 0x7D, 0x4C, 0xDE, 0x47, 0x7D, 0xDF, 0x90, 0x04, 0x23, 0xB7, 0x7D, + 0x34, 0x86, 0x10, 0x20, 0x24, 0xCE, 0x5B, 0xBB, 0x88, 0x29, 0xA0, 0x30, + 0x32, 0x1F, 0x7A, 0x5F, 0x59, 0x0B, 0x00, 0x2C, 0xE0, 0x2C, 0x99, 0x9C, + 0x11, 0x0E, 0xC5, 0xCD, 0x32, 0xCC, 0xD6, 0x9D, 0x90, 0x90, 0x3E, 0x8C, + 0x0A, 0x30, 0x31, 0x88, 0x28, 0x67, 0x34, 0x61, 0xF6, 0xEA, 0x40, 0x31, + 0x54, 0x89, 0x10, 0x89, 0xB2, 0x6F, 0x51, 0x23, 0xC5, 0xE3, 0xEB, 0xD4, + 0xCE, 0xAA, 0x1B, 0xCB, 0x68, 0x9D, 0x86, 0x40, 0xEF, 0x23, 0x33, 0xE7, + 0x91, 0x04, 0xE8, 0xBD, 0x07, 0x54, 0x23, 0x42, 0x49, 0x32, 0xF4, 0xEE, + 0xC2, 0x90, 0x59, 0xEE, 0x26, 0x95, 0x55, 0x90, 0x35, 0x9F, 0x56, 0x4A, + 0x4F, 0x14, 0x42, 0x62, 0x94, 0xC8, 0x69, 0x70, 0xDC, 0x78, 0x8D, 0xB4, + 0x66, 0xF2, 0x4F, 0xB0, 0x96, 0xAC, 0x35, 0x29, 0x89, 0xB5, 0x64, 0xAD, + 0x55, 0x49, 0x4D, 0x29, 0xE9, 0x16, 0x58, 0x4D, 0xAA, 0x18, 0xC2, 0x7E, + 0xB7, 0x47, 0x80, 0x43, 0xDB, 0xED, 0xB6, 0xFB, 0xF5, 0x76, 0xFF, 0xF0, + 0xF2, 0xFC, 0x70, 0x68, 0xDF, 0xBC, 0xBB, 0xB9, 0x5D, 0x1D, 0x9C, 0x73, + 0x64, 0x60, 0xB7, 0x3B, 0x68, 0x9B, 0x02, 0x66, 0x06, 0xA1, 0xED, 0x7E, + 0xBF, 0x3B, 0xB4, 0x75, 0x5D, 0x4F, 0xA7, 0xD3, 0xDD, 0xFE, 0xBA, 0x4C, + 0x22, 0x50, 0xE6, 0xB0, 0x16, 0x25, 0x27, 0x3D, 0x1C, 0xBA, 0xBA, 0x76, + 0xDE, 0x47, 0x1F, 0x42, 0x0C, 0x71, 0x3A, 0x9D, 0xEC, 0xDB, 0xD6, 0x59, + 0x67, 0x9D, 0x6B, 0xDB, 0x76, 0x36, 0x6D, 0x0A, 0xB7, 0x1D, 0x65, 0xF7, + 0x88, 0x0C, 0xAB, 0xF3, 0xDE, 0xAE, 0x56, 0xA0, 0xD4, 0x58, 0x2A, 0x8A, + 0x7E, 0x10, 0x01, 0xCD, 0x03, 0xC9, 0xAE, 0x28, 0xD5, 0x37, 0x31, 0xA5, + 0x58, 0xC6, 0x24, 0xAF, 0xC9, 0x62, 0x80, 0x67, 0xCD, 0x51, 0x1C, 0x64, + 0xA2, 0x01, 0xB7, 0xCC, 0xBE, 0x8D, 0x00, 0x80, 0x09, 0xAD, 0x31, 0x26, + 0x31, 0x99, 0xBC, 0x31, 0x29, 0x01, 0x0E, 0x33, 0x94, 0x04, 0x73, 0x85, + 0x67, 0xFA, 0x54, 0xC5, 0xD3, 0x2A, 0x59, 0x9B, 0x8D, 0x9E, 0x50, 0xE4, + 0xCE, 0x7F, 0x61, 0xF0, 0xC0, 0xAB, 0x16, 0x1B, 0x32, 0xDA, 0xB4, 0xF1, + 0x87, 0x2E, 0x69, 0xD6, 0x00, 0x02, 0x02, 0xDC, 0xCB, 0xC9, 0x18, 0x2B, + 0x9A, 0x91, 0x6F, 0xF0, 0x8E, 0xB8, 0x16, 0xA1, 0xCD, 0xD7, 0x80, 0x41, + 0x03, 0xDD, 0xC5, 0x0D, 0xA7, 0x14, 0x06, 0x23, 0xDF, 0xF4, 0xF8, 0x82, + 0xA3, 0x1F, 0xF2, 0x30, 0xA6, 0xD1, 0x90, 0x96, 0x6B, 0xE6, 0x23, 0x3F, + 0x74, 0x56, 0xFE, 0x72, 0x4C, 0xEF, 0xAD, 0x67, 0xD9, 0x94, 0xC7, 0xAF, + 0x18, 0x3B, 0xE5, 0x42, 0xB9, 0xF5, 0x2F, 0x43, 0x1A, 0x93, 0x82, 0xEB, + 0x0C, 0x8F, 0xD2, 0x55, 0xF2, 0x85, 0xCA, 0x34, 0x86, 0xC4, 0xA9, 0x0B, + 0xCA, 0x39, 0x85, 0x1A, 0x5E, 0x11, 0x61, 0x11, 0x63, 0x51, 0x04, 0x36, + 0x87, 0x5E, 0x78, 0x18, 0x2F, 0x69, 0xFB, 0xA0, 0x1D, 0x7D, 0x20, 0xF3, + 0xFA, 0x00, 0x12, 0x1A, 0x42, 0x83, 0x28, 0x20, 0x54, 0x82, 0x1A, 0x89, + 0x39, 0x86, 0x78, 0xD3, 0x79, 0x16, 0x5E, 0xCC, 0xA6, 0x1A, 0x27, 0x1D, + 0xA7, 0x29, 0x0E, 0xAF, 0x3A, 0x14, 0x7E, 0x8E, 0xB5, 0xD8, 0x58, 0x0C, + 0xC6, 0x23, 0x82, 0x88, 0x4D, 0xED, 0xE2, 0xB4, 0x86, 0x16, 0x7A, 0x9F, + 0x26, 0x95, 0xAB, 0xAD, 0xD9, 0x77, 0x3E, 0x24, 0x86, 0x32, 0xF7, 0x21, + 0x96, 0x99, 0x06, 0xD1, 0x5A, 0xD5, 0xB2, 0x71, 0x00, 0x27, 0xF0, 0x90, + 0x98, 0x73, 0xC7, 0x04, 0x65, 0x43, 0x1C, 0x89, 0xC2, 0x71, 0x99, 0x0C, + 0xD2, 0x83, 0x79, 0x27, 0x2C, 0x66, 0x1B, 0x08, 0xB3, 0x56, 0xE1, 0x8A, + 0x76, 0xE1, 0x55, 0x5E, 0xDC, 0x81, 0xE3, 0x4E, 0xCD, 0x73, 0x6B, 0xE8, + 0x28, 0x46, 0xC7, 0xD9, 0xC9, 0x23, 0x90, 0x52, 0x8A, 0x09, 0x9D, 0xA5, + 0x90, 0xD2, 0xAE, 0xED, 0xB5, 0xE9, 0x14, 0x22, 0x86, 0x90, 0x92, 0x08, + 0xD1, 0x20, 0x58, 0x00, 0x08, 0xA4, 0x40, 0x85, 0x00, 0x11, 0xAC, 0x98, + 0xF3, 0xE5, 0xD4, 0x1A, 0x83, 0x28, 0x93, 0x49, 0x0D, 0x00, 0x5D, 0xE7, + 0xB5, 0xEB, 0xA5, 0x88, 0x28, 0x42, 0x24, 0x44, 0x32, 0xC8, 0xC5, 0x9C, + 0x2C, 0xC2, 0x2A, 0xC6, 0x68, 0x63, 0x6A, 0x8D, 0xB3, 0x6A, 0x74, 0x45, + 0x88, 0x4C, 0xDF, 0x75, 0xAB, 0x9B, 0xDB, 0xDB, 0xDB, 0xAD, 0x20, 0x12, + 0x11, 0xA3, 0xD9, 0xED, 0xBB, 0xDD, 0xFE, 0x4D, 0xE7, 0x63, 0x33, 0x99, + 0x2C, 0xCF, 0xE6, 0x6F, 0xDE, 0x5E, 0x1F, 0xDA, 0xCE, 0x39, 0x63, 0x88, + 0x42, 0x9B, 0xAC, 0xB5, 0x29, 0x85, 0x3E, 0xC4, 0xBA, 0xAE, 0x1F, 0x3F, + 0x7E, 0xB8, 0xDD, 0xED, 0xAB, 0xAA, 0x8A, 0x29, 0x69, 0xF1, 0x80, 0xCA, + 0x0F, 0x00, 0xD4, 0x35, 0x05, 0x1F, 0xB7, 0xFB, 0x76, 0xD7, 0x76, 0x88, + 0x50, 0x55, 0xAE, 0xA9, 0x2A, 0x66, 0x7E, 0x77, 0x75, 0x7B, 0x71, 0xB6, + 0x6C, 0xBB, 0x2E, 0xF8, 0xA8, 0x39, 0x2B, 0x05, 0x4F, 0x0C, 0x7B, 0xC9, + 0x71, 0x69, 0xE9, 0x86, 0x0B, 0x00, 0x08, 0x85, 0xD3, 0x7A, 0xFC, 0x91, + 0x21, 0x98, 0xA8, 0xA5, 0xD2, 0x92, 0x52, 0x4A, 0x51, 0x8E, 0x70, 0x2C, + 0x1D, 0x79, 0x01, 0x53, 0x3C, 0x72, 0x93, 0x96, 0x49, 0x2D, 0xB8, 0x83, + 0x40, 0x04, 0x94, 0xFB, 0x51, 0x7F, 0xD5, 0x3F, 0xA6, 0x28, 0xC6, 0x20, + 0x15, 0xE6, 0x75, 0x3D, 0x59, 0x8A, 0xE9, 0x3A, 0xF6, 0xFD, 0x43, 0x86, + 0x62, 0xDA, 0xA7, 0x4E, 0x10, 0x8E, 0x6E, 0x93, 0xE3, 0xBB, 0x0C, 0xA1, + 0xD4, 0xEC, 0x56, 0xCA, 0x37, 0x1A, 0x24, 0x6D, 0x38, 0x45, 0x40, 0xC8, + 0x64, 0x1F, 0xFE, 0x20, 0x7B, 0xBA, 0xC1, 0x8E, 0xD2, 0xF5, 0xC7, 0x08, + 0xE0, 0x74, 0xD3, 0x95, 0xA3, 0x45, 0x9A, 0x13, 0xC3, 0x8B, 0x67, 0xE2, + 0x38, 0x84, 0xE3, 0x55, 0x36, 0x7E, 0x86, 0x71, 0x86, 0xC7, 0xFD, 0xCF, + 0x18, 0xBE, 0x7D, 0x70, 0xBF, 0xF9, 0x53, 0xE7, 0x1E, 0xD5, 0xCE, 0xE8, + 0x18, 0x9B, 0x49, 0x9A, 0x04, 0x00, 0x85, 0x94, 0xDE, 0x4D, 0xF7, 0x03, + 0x66, 0x40, 0x4A, 0xA3, 0xC6, 0x6A, 0x74, 0xB4, 0x5B, 0x87, 0xDB, 0xEB, + 0xCE, 0x09, 0x86, 0x70, 0xE0, 0x4C, 0x67, 0x61, 0x60, 0xDA, 0xB5, 0x7E, + 0xB8, 0x9F, 0x41, 0x9C, 0xD6, 0x15, 0x19, 0x4C, 0x07, 0x9F, 0x54, 0x61, + 0xA1, 0x1A, 0x62, 0x0C, 0x05, 0xC7, 0xEB, 0x65, 0x55, 0x8B, 0x29, 0xB6, + 0x64, 0x6D, 0x86, 0x86, 0xB9, 0xD7, 0x31, 0x20, 0x56, 0xD6, 0xC5, 0x18, + 0x0F, 0x07, 0x99, 0xCD, 0x1A, 0x75, 0xB8, 0xDE, 0x1F, 0x3E, 0xB8, 0x6B, + 0x69, 0x22, 0x7E, 0xC0, 0x55, 0x39, 0x06, 0xC6, 0xF3, 0x69, 0x53, 0x39, + 0x7B, 0x75, 0xBB, 0xDB, 0xB7, 0x3E, 0x24, 0x6E, 0x7D, 0x8C, 0xB9, 0xE8, + 0x1F, 0x86, 0x9C, 0xB5, 0xBC, 0x7F, 0x03, 0xD2, 0x5D, 0xFE, 0x4D, 0x16, + 0x50, 0x5E, 0x1A, 0x50, 0xB1, 0x88, 0xC3, 0xF6, 0xA8, 0x05, 0xD1, 0x47, + 0xE0, 0x4B, 0x25, 0xFD, 0x6A, 0xD8, 0x33, 0x73, 0xE8, 0xA8, 0x30, 0xC5, + 0x0C, 0xFB, 0x0C, 0x22, 0xD8, 0xA3, 0xDB, 0x05, 0x0C, 0x12, 0x20, 0x94, + 0x9E, 0x8F, 0x32, 0xEC, 0x63, 0x88, 0xA8, 0x0C, 0x73, 0x06, 0x09, 0x00, + 0x25, 0xC7, 0x2B, 0x23, 0x80, 0x89, 0x31, 0x49, 0xA1, 0x32, 0x15, 0x90, + 0xD1, 0x84, 0x67, 0x93, 0x8A, 0x00, 0x04, 0x60, 0x3E, 0x6F, 0xA6, 0x93, + 0xDA, 0x18, 0xE5, 0xBC, 0x20, 0x44, 0x68, 0x9A, 0xAA, 0x56, 0xD2, 0xA1, + 0x98, 0x88, 0x50, 0x2B, 0x28, 0x38, 0x73, 0xF6, 0xB3, 0x31, 0xA0, 0x88, + 0x6C, 0x64, 0x29, 0x00, 0x11, 0x32, 0xA3, 0xB5, 0x36, 0xC6, 0xB8, 0xDB, + 0x6E, 0xF7, 0xDB, 0xFD, 0xED, 0x7A, 0xBB, 0xD9, 0x75, 0x31, 0x25, 0x16, + 0xB0, 0xD6, 0x9E, 0x5F, 0x5E, 0xEC, 0x76, 0x6D, 0xB7, 0x5B, 0xF5, 0xF1, + 0xB0, 0xDF, 0x1D, 0x0E, 0x6D, 0x6B, 0x8D, 0x4D, 0x91, 0x13, 0x0A, 0x11, + 0x22, 0xA6, 0xAA, 0x72, 0x53, 0x6E, 0xC8, 0xDA, 0x57, 0xAF, 0xDF, 0x3A, + 0xE7, 0x16, 0x8B, 0xD9, 0x6A, 0xB5, 0x19, 0x36, 0x2A, 0x95, 0x31, 0x22, + 0x0B, 0x10, 0x63, 0x8A, 0x24, 0x64, 0xAD, 0x8D, 0x31, 0xDD, 0x1C, 0x36, + 0x4D, 0x53, 0xA5, 0x24, 0xB1, 0x28, 0x97, 0x9B, 0xDB, 0xED, 0xE3, 0x87, + 0x4B, 0x10, 0x89, 0x29, 0x92, 0x21, 0x42, 0xFB, 0x27, 0x96, 0x8F, 0x6E, + 0x9A, 0x38, 0x2A, 0x86, 0x29, 0x39, 0x0C, 0x70, 0x74, 0x5A, 0x71, 0xD2, + 0x2C, 0x96, 0xC4, 0xCC, 0x91, 0x39, 0x45, 0x4E, 0x43, 0xCB, 0x74, 0x91, + 0x18, 0x4B, 0x6E, 0xDC, 0xB0, 0xC6, 0xF3, 0xD4, 0x0E, 0x60, 0x0D, 0x40, + 0x47, 0x95, 0x11, 0xB0, 0xCC, 0x99, 0x10, 0x6A, 0xF2, 0x79, 0x59, 0x44, + 0x2A, 0xA1, 0xEA, 0x4C, 0xBB, 0xE3, 0xCB, 0x93, 0xA2, 0x84, 0x06, 0xA7, + 0x4F, 0x56, 0x7D, 0x83, 0xB5, 0xAC, 0x02, 0x83, 0x45, 0x18, 0x20, 0xAB, + 0xB3, 0xA2, 0xC8, 0x33, 0x05, 0x98, 0x08, 0x65, 0x7C, 0x92, 0xDD, 0xD2, + 0x59, 0x0D, 0xE4, 0xD3, 0xEE, 0xA8, 0x03, 0xBD, 0xEF, 0x30, 0x66, 0x77, + 0xF7, 0x00, 0x50, 0x5C, 0x9C, 0x51, 0x9E, 0x9A, 0x76, 0x25, 0xBC, 0x76, + 0x0A, 0x6C, 0xC7, 0x3B, 0xF7, 0x08, 0x97, 0x0D, 0x76, 0xD2, 0x78, 0x49, + 0x0E, 0xBF, 0x8E, 0x69, 0xA9, 0x3E, 0x30, 0x65, 0xFA, 0x30, 0xA3, 0x11, + 0xC2, 0xE2, 0x63, 0x1E, 0x4E, 0xB1, 0x43, 0xEA, 0x1D, 0x22, 0x08, 0x09, + 0xE7, 0xD3, 0x04, 0x24, 0xE7, 0x78, 0x94, 0xE7, 0x51, 0x2A, 0xAE, 0x02, + 0x32, 0x07, 0xBE, 0x91, 0x9C, 0x38, 0x71, 0x47, 0x8B, 0xB3, 0x30, 0xB3, + 0xF2, 0x5B, 0x60, 0x12, 0xA1, 0xD2, 0x84, 0xCE, 0x18, 0x34, 0x06, 0x87, + 0xB6, 0x95, 0xC3, 0x60, 0x11, 0xE2, 0x62, 0x52, 0x4F, 0x9B, 0x8A, 0x10, + 0x9D, 0x25, 0xB5, 0xF2, 0x04, 0xC0, 0x19, 0x9A, 0x4D, 0x2A, 0x63, 0x94, + 0xDD, 0xD4, 0x6A, 0xD5, 0x34, 0x16, 0x70, 0x3E, 0xA4, 0xC9, 0x7D, 0x70, + 0x1C, 0xEF, 0xFF, 0x3A, 0x56, 0x73, 0xC7, 0x21, 0x23, 0xA8, 0x10, 0xE6, + 0xD3, 0xEA, 0x76, 0x7B, 0x68, 0xFB, 0xD8, 0x85, 0x14, 0x52, 0x29, 0xB2, + 0x2B, 0xB1, 0x7B, 0xA3, 0xF1, 0x3B, 0x7D, 0x7D, 0x5D, 0x07, 0xCA, 0xE9, + 0xC3, 0x20, 0x05, 0xCA, 0xE6, 0xF9, 0x80, 0x52, 0xFF, 0x01, 0x70, 0xCC, + 0x48, 0x28, 0x3F, 0x0F, 0x5A, 0x4C, 0xC1, 0xB8, 0x08, 0xD3, 0x5D, 0x1B, + 0x47, 0xCA, 0x41, 0xA0, 0x16, 0x0A, 0x83, 0xB1, 0x32, 0xB0, 0x10, 0x1F, + 0xE9, 0x66, 0x00, 0x44, 0xA4, 0x0F, 0x8C, 0x88, 0x62, 0xC1, 0xB0, 0x74, + 0x49, 0x42, 0x64, 0x83, 0x14, 0x22, 0x87, 0xA4, 0x7B, 0x93, 0x18, 0x40, + 0x6B, 0x08, 0x0D, 0xA8, 0x89, 0x93, 0x0A, 0x49, 0x9D, 0xAA, 0x09, 0x43, + 0x28, 0xC2, 0xA3, 0xAA, 0x5D, 0x54, 0x17, 0x8E, 0x96, 0xA6, 0x65, 0x17, + 0x6C, 0xA1, 0x0F, 0x18, 0xB2, 0xC6, 0xAC, 0xA5, 0x51, 0x73, 0x80, 0x3C, + 0x86, 0x9B, 0xF5, 0x66, 0xB3, 0xD9, 0xB6, 0xAD, 0x8F, 0x31, 0xBE, 0x7C, + 0x7D, 0xB5, 0xDB, 0x77, 0x87, 0xB6, 0x0B, 0x31, 0xD5, 0x55, 0x55, 0x37, + 0xF5, 0xF9, 0xF9, 0x12, 0x11, 0x6F, 0x6F, 0x56, 0xEA, 0xE4, 0x65, 0x61, + 0x14, 0x83, 0x00, 0x9A, 0x85, 0xFF, 0xB7, 0x7F, 0xF3, 0xEB, 0xD5, 0x7A, + 0xFB, 0xF6, 0xFD, 0xCD, 0xD3, 0xCF, 0x3E, 0x59, 0x6F, 0xB6, 0xBB, 0xDD, + 0x7E, 0xBC, 0x06, 0xD4, 0x11, 0xDE, 0xF7, 0x3D, 0x97, 0xE6, 0x89, 0x88, + 0xCA, 0xF9, 0x87, 0x00, 0x68, 0x0C, 0x5D, 0x5D, 0xDF, 0x22, 0xA1, 0x35, + 0xE6, 0x7A, 0xB5, 0x35, 0x64, 0x58, 0x92, 0xF2, 0xFF, 0xD5, 0x35, 0x10, + 0x9A, 0xA3, 0xD1, 0xF7, 0xE1, 0xF5, 0x01, 0x79, 0x0B, 0x15, 0x29, 0xDE, + 0xB0, 0x94, 0x92, 0xA4, 0x98, 0x7F, 0xCA, 0x0D, 0x86, 0x25, 0xC5, 0x90, + 0x1B, 0x2E, 0x1E, 0x19, 0x51, 0xC7, 0xCE, 0x20, 0x19, 0x76, 0x9E, 0x63, + 0xAC, 0xAD, 0xF4, 0x9D, 0xC5, 0x01, 0x87, 0x0F, 0x6B, 0x7E, 0x40, 0x8B, + 0x58, 0x8A, 0x07, 0xA1, 0xF0, 0x60, 0x0F, 0xD8, 0x44, 0xCA, 0xDA, 0xD0, + 0xEF, 0x8F, 0x4B, 0x78, 0x78, 0xA1, 0xD2, 0x93, 0x13, 0x14, 0x7D, 0x28, + 0x73, 0x49, 0x5D, 0xEB, 0xDF, 0x76, 0xFB, 0xAE, 0xAE, 0xAC, 0xA6, 0xC8, + 0x58, 0x73, 0x9C, 0xE2, 0xA2, 0x32, 0x73, 0x99, 0xD1, 0x78, 0xA5, 0xE8, + 0x5A, 0x1F, 0x02, 0xA1, 0xA3, 0x41, 0xCA, 0xDB, 0x67, 0xF6, 0x7B, 0x14, + 0xDD, 0x7D, 0x02, 0xDC, 0xF0, 0x4E, 0x41, 0xF8, 0xF1, 0x4B, 0x95, 0x58, + 0x3D, 0xFB, 0x44, 0xEB, 0x9D, 0x20, 0xAF, 0x13, 0xE5, 0xA8, 0x3F, 0x14, + 0xD3, 0x0F, 0xB2, 0xDB, 0x85, 0xA1, 0x94, 0xC6, 0xE7, 0x45, 0x37, 0xE4, + 0x30, 0x5A, 0x55, 0x4F, 0x46, 0x07, 0x8B, 0x87, 0xE7, 0x96, 0xC8, 0x9C, + 0xED, 0x91, 0x92, 0x79, 0x30, 0x3C, 0xE1, 0x5D, 0x61, 0xC8, 0x37, 0x1A, + 0x9E, 0x12, 0xA1, 0xF4, 0xFE, 0x11, 0xF1, 0x41, 0x90, 0x84, 0x01, 0x36, + 0x87, 0x5C, 0x5E, 0xAE, 0x8B, 0x03, 0xCB, 0xBE, 0x41, 0x88, 0x86, 0xE8, + 0x6C, 0xDE, 0x3C, 0x38, 0x9B, 0x55, 0xCE, 0x28, 0xCE, 0xEA, 0x7C, 0xD8, + 0x1D, 0x3A, 0xAD, 0xF2, 0x5B, 0xCC, 0x1A, 0x44, 0xD4, 0x8A, 0x4E, 0x93, + 0xFD, 0xA5, 0x39, 0x4A, 0x7D, 0x5F, 0x85, 0x8D, 0x64, 0xE5, 0xC3, 0x48, + 0x75, 0x98, 0x83, 0xF1, 0x52, 0x44, 0xC4, 0xD9, 0xB4, 0x99, 0x36, 0x6E, + 0x73, 0xD0, 0xE2, 0x2B, 0xD1, 0xE8, 0x5E, 0xBE, 0x0B, 0x88, 0x16, 0x40, + 0x23, 0x0E, 0xCD, 0xB3, 0x86, 0x1B, 0xE4, 0xE9, 0xC5, 0xBC, 0xC1, 0x17, + 0x2F, 0x57, 0x01, 0xDE, 0x03, 0x55, 0x07, 0x19, 0x94, 0x11, 0x36, 0x22, + 0x82, 0x21, 0x97, 0x7E, 0x90, 0x27, 0x2D, 0xE1, 0xA1, 0xE2, 0xE0, 0x35, + 0x94, 0x83, 0xE8, 0x52, 0x3C, 0xCA, 0xA6, 0xB4, 0xC0, 0x92, 0xEC, 0x53, + 0x01, 0x00, 0x49, 0x89, 0xA3, 0x80, 0x68, 0x4F, 0x40, 0xC9, 0x58, 0x83, + 0x50, 0x58, 0xB2, 0xD7, 0xC3, 0xE4, 0x0A, 0xAD, 0xEC, 0x3A, 0x2E, 0x58, + 0x40, 0x3A, 0x1F, 0x0C, 0xA1, 0x88, 0xD4, 0x4D, 0x35, 0x32, 0x01, 0xD0, + 0x1A, 0x63, 0xA7, 0xDA, 0x3F, 0x89, 0x75, 0x9F, 0x34, 0x86, 0x42, 0x08, + 0x88, 0xD9, 0x9C, 0x1C, 0x7B, 0x43, 0x10, 0xF1, 0xC7, 0xE7, 0x2F, 0xF7, + 0xBB, 0x7D, 0x1F, 0xE2, 0xCD, 0xED, 0x76, 0xB5, 0xDE, 0xCE, 0x66, 0x73, + 0x16, 0xF6, 0xDE, 0x13, 0xD2, 0x6A, 0xB5, 0x7A, 0xF0, 0xE8, 0x41, 0x4A, + 0x31, 0xC6, 0xA8, 0xDB, 0x39, 0x0A, 0xA9, 0xBA, 0x3C, 0x74, 0x9D, 0xB5, + 0xF6, 0xA7, 0x3F, 0xFD, 0x34, 0x44, 0xAE, 0xEB, 0xAA, 0xAA, 0x9C, 0x75, + 0x76, 0xBB, 0xDD, 0x89, 0x40, 0x55, 0xB9, 0x94, 0x58, 0x0F, 0x8B, 0x31, + 0xFA, 0x10, 0x5D, 0xE5, 0xAA, 0xBA, 0x4A, 0xB9, 0x30, 0x43, 0x09, 0xAF, + 0x8F, 0x2D, 0x9D, 0x38, 0x09, 0x5A, 0x7A, 0xF5, 0xEE, 0x66, 0x7F, 0xE8, + 0xA6, 0x4D, 0x15, 0x63, 0x02, 0xC0, 0x94, 0x22, 0xDA, 0xE2, 0x2C, 0xC3, + 0x63, 0x01, 0xD6, 0x51, 0x68, 0x07, 0x01, 0x11, 0xF5, 0x97, 0x64, 0x71, + 0x28, 0x08, 0x34, 0x86, 0x98, 0x52, 0x62, 0x45, 0x7C, 0xCA, 0xA4, 0x96, + 0x49, 0x21, 0xEF, 0x8A, 0x53, 0x16, 0x84, 0x2C, 0x6F, 0xAA, 0x46, 0x04, + 0x51, 0x7B, 0x7D, 0x67, 0x10, 0x80, 0x05, 0x9F, 0x67, 0x9B, 0xE5, 0xDE, + 0x67, 0x2C, 0x93, 0x63, 0x1D, 0xF1, 0x01, 0x2D, 0x3C, 0xA4, 0x88, 0x68, + 0xBC, 0xA8, 0x60, 0x7A, 0x67, 0xAD, 0x35, 0xE6, 0x8F, 0xCF, 0x5E, 0xCD, + 0x26, 0xCD, 0xD5, 0xCD, 0xE6, 0xB7, 0x7F, 0xF8, 0xF1, 0xD7, 0x3F, 0xFF, + 0xEC, 0xBF, 0xFB, 0xEB, 0x9F, 0xA6, 0x42, 0xC3, 0x59, 0xA6, 0x0C, 0x98, + 0x73, 0x4B, 0x9D, 0x61, 0xA5, 0x1C, 0xFF, 0x85, 0x53, 0x2D, 0xA6, 0x7F, + 0x62, 0x00, 0x3D, 0x47, 0x73, 0xB0, 0x86, 0xF8, 0x29, 0x8E, 0x88, 0xB0, + 0x35, 0x6C, 0x31, 0x4E, 0xCB, 0x18, 0xF6, 0x6C, 0x80, 0xA3, 0x25, 0x3E, + 0x5C, 0xFC, 0x44, 0x8B, 0x41, 0xE6, 0x41, 0xC8, 0xFC, 0x7A, 0x39, 0x50, + 0x22, 0xC0, 0x47, 0xDC, 0x28, 0xE5, 0x9D, 0x33, 0x90, 0xE6, 0x52, 0xE3, + 0xA5, 0x37, 0xB2, 0x54, 0xF0, 0x2A, 0x8B, 0x60, 0xD9, 0x13, 0x12, 0x03, + 0x03, 0x1B, 0xAD, 0x22, 0x44, 0x40, 0x40, 0x2A, 0xBD, 0xAD, 0x32, 0x3E, + 0x85, 0x6C, 0xF7, 0x09, 0xE4, 0xFC, 0x3B, 0x5D, 0xCC, 0xE3, 0x72, 0x8A, + 0x41, 0x99, 0x14, 0xAD, 0x01, 0x45, 0xA1, 0x83, 0x96, 0x28, 0x38, 0x43, + 0x93, 0xDA, 0xD5, 0x95, 0x9D, 0x36, 0xCE, 0x87, 0xD8, 0x7A, 0x5F, 0x57, + 0x8E, 0x59, 0x10, 0xC0, 0x10, 0x25, 0xE4, 0xE9, 0xA4, 0x52, 0x36, 0x21, + 0xCD, 0x06, 0x2E, 0xE7, 0x1F, 0x1B, 0x3E, 0xDD, 0x17, 0x88, 0xFB, 0x12, + 0x70, 0x6F, 0x64, 0x8F, 0x28, 0x77, 0xF8, 0xD9, 0x10, 0x3E, 0x38, 0x9B, + 0xEF, 0xDA, 0x10, 0x62, 0x27, 0x5C, 0xFA, 0x8C, 0x2A, 0x54, 0xCF, 0x53, + 0x05, 0x47, 0x43, 0x62, 0x48, 0x6C, 0x44, 0x39, 0x76, 0x42, 0x10, 0x25, + 0xF1, 0x01, 0x82, 0xA3, 0x92, 0x65, 0x11, 0x14, 0x75, 0xD8, 0x67, 0xBE, + 0x11, 0x2A, 0x7B, 0x14, 0x40, 0x16, 0x02, 0x75, 0x16, 0x13, 0x00, 0x0A, + 0xAA, 0x1E, 0x72, 0x36, 0x93, 0x7C, 0x15, 0xE7, 0x58, 0x7E, 0xE8, 0x21, + 0xE1, 0x4C, 0xB3, 0xDE, 0x10, 0xB5, 0x99, 0x1E, 0xA4, 0x94, 0x2D, 0xA5, + 0x21, 0x98, 0x48, 0x20, 0xC2, 0x42, 0x04, 0x43, 0x53, 0x9C, 0x23, 0x66, + 0xCC, 0x79, 0x09, 0x50, 0x59, 0xDB, 0x34, 0x95, 0xB1, 0xD6, 0x9A, 0x71, + 0xA1, 0x12, 0xA8, 0xA1, 0x3A, 0xA4, 0xC8, 0xEA, 0x59, 0xC6, 0x5A, 0xB5, + 0x40, 0xC7, 0x12, 0x8C, 0x08, 0xAF, 0x5E, 0xBE, 0xB9, 0xBA, 0xC9, 0x24, + 0x2E, 0xD3, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xBA, 0x89, + 0x31, 0x5D, 0xDF, 0x6C, 0xB7, 0xDB, 0xDD, 0xF2, 0xEC, 0x0C, 0x09, 0x9B, + 0xC9, 0x44, 0x00, 0xBB, 0xB6, 0xFF, 0xE8, 0xA3, 0xC7, 0x8F, 0x3F, 0x7A, + 0xD8, 0x34, 0xF5, 0x64, 0x32, 0xDD, 0x6C, 0x77, 0xEB, 0xCD, 0x6E, 0xB5, + 0xDA, 0xA4, 0xC8, 0x21, 0xC5, 0xE5, 0x72, 0x71, 0x79, 0x79, 0x3E, 0x9B, + 0xCD, 0xBE, 0xFF, 0xE1, 0x45, 0xD7, 0xF7, 0x55, 0xE5, 0xFA, 0xDE, 0xAB, + 0x7A, 0xEA, 0x7B, 0x9F, 0x52, 0x9A, 0xCD, 0xA6, 0x4D, 0x53, 0xDF, 0xDC, + 0xAC, 0x22, 0x07, 0x62, 0xA6, 0x78, 0x24, 0x92, 0x41, 0xC4, 0x94, 0x92, + 0x1A, 0xC5, 0xCC, 0xF2, 0xC9, 0xC7, 0x8F, 0x1E, 0x5E, 0x9E, 0x7F, 0xF5, + 0xD5, 0xB7, 0x6F, 0xDF, 0xDF, 0xFE, 0xF2, 0x67, 0x9F, 0xB2, 0x67, 0xD5, + 0xEF, 0xC6, 0x30, 0xA0, 0x40, 0x66, 0xD0, 0x03, 0xB9, 0xE3, 0x20, 0x4E, + 0x02, 0x02, 0x92, 0xA3, 0xAE, 0x00, 0x1A, 0x67, 0xCC, 0x0E, 0xDD, 0xAC, + 0xB6, 0x62, 0x8A, 0xE9, 0x98, 0x77, 0x9A, 0x33, 0x30, 0xEF, 0x29, 0xB2, + 0x93, 0xD5, 0x38, 0xFE, 0x3D, 0x3F, 0x2B, 0x96, 0xA4, 0xA8, 0xA2, 0x39, + 0x70, 0x94, 0xE7, 0x05, 0xF7, 0xB4, 0xD5, 0xC9, 0xF7, 0x63, 0x75, 0x53, + 0x64, 0x38, 0x1B, 0x95, 0x99, 0xE9, 0x0F, 0xA5, 0xAE, 0x2A, 0x4E, 0xFC, + 0x4F, 0x5F, 0x7E, 0xFF, 0x5F, 0xFF, 0xF9, 0x9B, 0x8F, 0x1E, 0x5E, 0xAE, + 0xB6, 0x7B, 0x67, 0xCD, 0xBF, 0x7C, 0xFD, 0xE3, 0x8B, 0x37, 0xD7, 0x7F, + 0xFF, 0x3F, 0xFC, 0xF5, 0x62, 0x36, 0x51, 0x1A, 0x9B, 0xD1, 0x2A, 0x39, + 0x5A, 0x69, 0x77, 0x34, 0x8B, 0xDC, 0xF9, 0xB2, 0x60, 0xA2, 0x62, 0xD6, + 0x8A, 0xD6, 0x13, 0xCB, 0x38, 0x00, 0x81, 0x25, 0x2F, 0x0C, 0x0A, 0x5E, + 0xFE, 0x33, 0xAA, 0xEA, 0x83, 0x4B, 0x72, 0x58, 0x8C, 0x9A, 0xE6, 0x56, + 0xC6, 0xF9, 0xCE, 0x68, 0x64, 0xB4, 0x0B, 0x00, 0x85, 0xBF, 0xE1, 0xFE, + 0xA2, 0x56, 0x3E, 0x75, 0x12, 0x91, 0x9C, 0x7A, 0xAC, 0x69, 0xF6, 0x02, + 0xA0, 0x1D, 0x0D, 0x18, 0x88, 0x84, 0x50, 0xE9, 0xDA, 0x44, 0x99, 0x0D, + 0x14, 0xDA, 0x09, 0x00, 0x0E, 0x77, 0x2D, 0x96, 0x38, 0x00, 0x1E, 0x8B, + 0x9B, 0x40, 0x0A, 0x42, 0x19, 0xD4, 0x7F, 0x3E, 0x86, 0xCB, 0x36, 0x98, + 0x58, 0x7C, 0x8C, 0x6D, 0x17, 0x58, 0x84, 0x08, 0xAD, 0xE9, 0x2D, 0x11, + 0x11, 0x5A, 0x4B, 0x8B, 0xD9, 0xA4, 0xAE, 0x2A, 0x32, 0x0A, 0xB9, 0x07, + 0xD7, 0xBE, 0x7A, 0xA0, 0xFE, 0x64, 0x01, 0xF0, 0x89, 0xA8, 0x9D, 0xC8, + 0xC1, 0xFD, 0x83, 0xF5, 0x87, 0xC4, 0x6C, 0x2D, 0x3D, 0x38, 0x9B, 0x58, + 0x43, 0xBB, 0x36, 0xB4, 0x3E, 0xE6, 0xD0, 0xAD, 0x42, 0x5A, 0x84, 0x12, + 0xD5, 0x01, 0x94, 0xC1, 0xAF, 0x95, 0x81, 0xF6, 0x51, 0xE0, 0x4E, 0x9B, + 0x80, 0xDC, 0x41, 0xB2, 0x94, 0x75, 0x98, 0x50, 0xEE, 0x5D, 0x92, 0x5F, + 0xC7, 0xE4, 0x2A, 0x28, 0x40, 0x14, 0x8B, 0x68, 0x0C, 0x56, 0xC6, 0x10, + 0x91, 0x6E, 0x15, 0xA3, 0xB9, 0x07, 0xC8, 0x89, 0x8B, 0x60, 0x00, 0xA4, + 0x94, 0x0A, 0x0D, 0xC8, 0x9B, 0x28, 0x37, 0xE5, 0x61, 0x6D, 0x6C, 0x66, + 0x94, 0x14, 0x0C, 0x35, 0xD1, 0x9D, 0xA1, 0xB8, 0x51, 0x50, 0x10, 0xD1, + 0x12, 0xCD, 0x67, 0x4D, 0x5D, 0xD7, 0xC3, 0x48, 0x1E, 0x65, 0x77, 0x34, + 0x6E, 0xC3, 0xE8, 0x11, 0x80, 0x30, 0x24, 0x4E, 0x48, 0x68, 0xAD, 0xED, + 0xFB, 0x7E, 0xBB, 0x6B, 0xFB, 0xBE, 0xBF, 0x7A, 0x7F, 0x83, 0x48, 0xBD, + 0xEF, 0x9B, 0xA6, 0x9E, 0xCF, 0xE7, 0xC6, 0xDA, 0x3E, 0x46, 0x1F, 0xE2, + 0xA3, 0x87, 0x0F, 0x74, 0x22, 0xDA, 0xB6, 0x45, 0xC4, 0xB3, 0xB3, 0xF9, + 0x74, 0xDA, 0x9C, 0x9D, 0x9F, 0x3D, 0x7A, 0x78, 0xB9, 0xD9, 0xEC, 0xBA, + 0xDE, 0xA7, 0xC4, 0xAF, 0xDF, 0xBC, 0x7F, 0xF9, 0xF2, 0x4D, 0x62, 0xAE, + 0xEB, 0xDA, 0x10, 0x09, 0xC0, 0x7E, 0xB7, 0x47, 0xA2, 0x10, 0xE3, 0x6C, + 0x3A, 0x9D, 0x4C, 0x1A, 0xEF, 0xBD, 0xCF, 0x7D, 0xCB, 0x45, 0x85, 0x51, + 0x7D, 0xFF, 0x84, 0x82, 0x44, 0x3E, 0x24, 0x00, 0xB1, 0xD6, 0x58, 0x6B, + 0x6F, 0x6E, 0x37, 0x02, 0xF8, 0xFA, 0xDD, 0xED, 0x5F, 0xFD, 0xEA, 0xF3, + 0x3E, 0xE4, 0xAD, 0x45, 0x11, 0x25, 0x60, 0x2A, 0xEA, 0xA0, 0x6C, 0xD8, + 0xAC, 0x60, 0x53, 0x00, 0x93, 0x8A, 0x16, 0x21, 0x01, 0xA4, 0xE0, 0x63, + 0x8C, 0xC9, 0x18, 0x42, 0x10, 0x6D, 0x91, 0xA8, 0xE8, 0x2C, 0xC4, 0x38, + 0x00, 0xB1, 0x0F, 0x0A, 0xD2, 0xFD, 0x2F, 0x33, 0x36, 0xC9, 0xD6, 0x49, + 0x76, 0xC8, 0x4B, 0x11, 0x8F, 0xEC, 0x9E, 0x43, 0xC0, 0xD2, 0xE6, 0x66, + 0x38, 0xEB, 0x4F, 0xD9, 0x13, 0xF7, 0xA5, 0xBD, 0xAC, 0x6E, 0xAE, 0xEB, + 0xBA, 0xEF, 0xE3, 0x3F, 0x7F, 0xF9, 0xFD, 0x7A, 0xD7, 0x7F, 0xF1, 0x93, + 0x4F, 0x0F, 0xAD, 0x76, 0xA0, 0x14, 0x00, 0xB9, 0xDE, 0x74, 0xFF, 0xF0, + 0x8F, 0x7F, 0xF8, 0x0F, 0xFF, 0xFD, 0x5F, 0x22, 0x82, 0xE6, 0xF7, 0xC1, + 0x50, 0x60, 0x75, 0xAA, 0x56, 0x72, 0x5A, 0xD9, 0xC9, 0x06, 0x7F, 0x4C, + 0xE9, 0x1D, 0xBD, 0x23, 0xCB, 0xB1, 0x16, 0x70, 0xF8, 0x7E, 0xA0, 0x69, + 0x1B, 0xFF, 0xE9, 0xBE, 0xE6, 0x1A, 0x3F, 0xBF, 0x7E, 0x89, 0x9A, 0xC8, + 0x02, 0x20, 0x22, 0x5A, 0x92, 0xCD, 0x22, 0x20, 0xCA, 0x1D, 0x95, 0x5F, + 0x73, 0x94, 0x5E, 0x77, 0x54, 0x7F, 0xE3, 0x07, 0x40, 0xC4, 0xE3, 0xC6, + 0x4B, 0x02, 0xA5, 0xD7, 0x9C, 0xDA, 0xF0, 0x00, 0x80, 0x0C, 0x42, 0xA2, + 0xD1, 0x7A, 0x60, 0x91, 0xC2, 0xEC, 0x2C, 0x06, 0x51, 0xEB, 0x66, 0xB2, + 0x0B, 0x79, 0xFC, 0x9A, 0x02, 0x82, 0x40, 0x02, 0x05, 0x41, 0x1C, 0x07, + 0x4B, 0x0D, 0x7B, 0x24, 0x11, 0x16, 0x61, 0xB0, 0x8E, 0x44, 0xA4, 0xED, + 0x23, 0x40, 0x44, 0x84, 0xDA, 0xB9, 0x98, 0xB8, 0x76, 0xA6, 0x22, 0x1B, + 0x22, 0xAB, 0x67, 0x2A, 0x67, 0x25, 0x0C, 0xBA, 0xB9, 0x0C, 0xD3, 0x7D, + 0x15, 0xF6, 0x41, 0x91, 0x1A, 0xD2, 0x0E, 0xB5, 0xB6, 0x06, 0x47, 0x9F, + 0xF1, 0x45, 0x88, 0xC8, 0x59, 0xE3, 0x8C, 0x31, 0xA4, 0x7D, 0x73, 0x29, + 0x40, 0x3A, 0x6E, 0x5B, 0xD9, 0xDC, 0xBE, 0x73, 0xE5, 0x3C, 0xAA, 0x19, + 0x8E, 0x02, 0x80, 0x06, 0xC3, 0x64, 0xB8, 0x3A, 0x8E, 0x68, 0x20, 0x75, + 0x24, 0x0A, 0xFF, 0x43, 0xE9, 0x3E, 0xA8, 0xA7, 0x00, 0x14, 0x96, 0x4D, + 0x04, 0xC8, 0x01, 0xFB, 0x4C, 0x8E, 0x4E, 0xB9, 0xC5, 0xF7, 0xB0, 0xB7, + 0x28, 0x74, 0x8F, 0xCC, 0x7C, 0x94, 0xF5, 0x1C, 0x7C, 0x22, 0x02, 0x22, + 0x83, 0x28, 0x90, 0x8E, 0x06, 0xAB, 0x35, 0x68, 0xCA, 0x46, 0xA7, 0x63, + 0x43, 0x48, 0xCE, 0x9A, 0xD9, 0xB4, 0x6E, 0x9A, 0x53, 0x2D, 0x96, 0xCF, + 0x11, 0x01, 0x01, 0xCD, 0x85, 0xC9, 0xEB, 0x5F, 0xB4, 0xFD, 0xA1, 0x88, + 0x48, 0xED, 0xAA, 0x17, 0x2F, 0x5F, 0x7F, 0xF7, 0xC3, 0x2B, 0xB2, 0x16, + 0x01, 0x38, 0x32, 0x02, 0x1B, 0x63, 0xAA, 0xAA, 0x62, 0x34, 0x44, 0x64, + 0x58, 0x2E, 0x2F, 0x2F, 0x62, 0x8C, 0x9C, 0x18, 0x84, 0x63, 0xC2, 0x94, + 0xF8, 0x76, 0xB5, 0x49, 0x2C, 0x5D, 0xE7, 0xEB, 0xCA, 0x3E, 0x7A, 0x74, + 0x79, 0x76, 0xB6, 0x7C, 0xF6, 0xFC, 0xD5, 0xF9, 0xC5, 0x72, 0xBB, 0xDD, + 0xC7, 0xC4, 0x4F, 0x3F, 0x7D, 0xF2, 0xF6, 0xDD, 0xD5, 0x8B, 0x97, 0x6F, + 0x67, 0xF3, 0xD9, 0x76, 0xBB, 0x9F, 0x4E, 0x26, 0x67, 0x67, 0xCB, 0xCD, + 0x76, 0xB7, 0x5A, 0x6F, 0x13, 0xB3, 0xB5, 0x16, 0x80, 0xAB, 0xAA, 0x0E, + 0x21, 0xFA, 0x10, 0x40, 0x85, 0x1C, 0x24, 0x72, 0xB4, 0x84, 0x09, 0xF0, + 0xC7, 0x17, 0x6F, 0xAC, 0x35, 0xC6, 0x9A, 0xCD, 0xBE, 0x0D, 0x31, 0x59, + 0x32, 0x23, 0x5F, 0x64, 0xB6, 0x97, 0x55, 0x8D, 0xEB, 0x2B, 0xA8, 0x71, + 0xAA, 0xE8, 0x83, 0x59, 0x94, 0xF8, 0x80, 0x13, 0xC7, 0x98, 0xDA, 0xAE, + 0x57, 0x98, 0x13, 0x63, 0x12, 0xC1, 0xC4, 0x29, 0x67, 0xB1, 0xFD, 0x89, + 0x72, 0xC2, 0xF1, 0x82, 0xBC, 0x2B, 0x77, 0x77, 0xCC, 0xC3, 0x72, 0x3C, + 0x0C, 0x47, 0xE9, 0x86, 0x02, 0x79, 0xEF, 0x93, 0x91, 0xA4, 0xFD, 0x39, + 0x91, 0x16, 0x39, 0x4A, 0x14, 0x00, 0x00, 0x42, 0x5D, 0x55, 0x5D, 0xEB, + 0xFF, 0x9F, 0xDF, 0x7E, 0xD7, 0xF6, 0xE9, 0x66, 0xB5, 0xF9, 0xE8, 0xD1, + 0x83, 0xBA, 0x72, 0xBD, 0xF7, 0xB3, 0xE9, 0x34, 0x25, 0xEE, 0xDA, 0xEE, + 0xD5, 0x3B, 0xFE, 0xDF, 0xFE, 0x8F, 0x7F, 0x39, 0x5F, 0x4E, 0xFF, 0xDD, + 0xDF, 0xFE, 0xC5, 0x7C, 0xDA, 0xF4, 0x21, 0x11, 0x8E, 0x2E, 0x7B, 0x44, + 0x3E, 0x1F, 0x30, 0x53, 0xA4, 0xFC, 0x7D, 0xFC, 0x72, 0x27, 0x2F, 0x3B, + 0x80, 0xA9, 0xF1, 0xD3, 0xDE, 0x3F, 0x06, 0x46, 0x1A, 0x67, 0x3C, 0x2C, + 0xC3, 0x06, 0x53, 0xB4, 0xE6, 0x31, 0x0C, 0x52, 0x6E, 0x7D, 0x7C, 0xA4, + 0x62, 0x07, 0xE0, 0x58, 0x09, 0x0E, 0x77, 0xB9, 0xD3, 0x2A, 0xFC, 0x38, + 0xF3, 0x83, 0x55, 0x5F, 0x02, 0x98, 0xBA, 0x41, 0x95, 0x87, 0x20, 0x20, + 0x55, 0x6D, 0x00, 0xD9, 0xA2, 0x1A, 0x4F, 0x22, 0xE8, 0x46, 0x87, 0x94, + 0x57, 0xFF, 0xDD, 0x69, 0x16, 0x43, 0x98, 0x00, 0x38, 0x89, 0xF7, 0x49, + 0xB4, 0x4F, 0xAA, 0xA5, 0xCA, 0x1A, 0x67, 0x0D, 0x0B, 0x1F, 0xFA, 0xD0, + 0xF6, 0xC1, 0x19, 0x63, 0x0C, 0xCD, 0x53, 0xB2, 0xD6, 0xD4, 0xA5, 0xAA, + 0xF9, 0x3E, 0xBC, 0x3A, 0x19, 0xA3, 0x13, 0xF5, 0x34, 0x3E, 0x12, 0x4B, + 0x41, 0xB5, 0x42, 0x2D, 0x35, 0x4E, 0x73, 0x09, 0x7E, 0x09, 0x90, 0xCD, + 0x26, 0xB5, 0xA6, 0xE8, 0x6F, 0x0F, 0x9E, 0x73, 0x6B, 0x78, 0xC4, 0x52, + 0x8C, 0xA7, 0x7A, 0xA7, 0x28, 0x35, 0xCC, 0x35, 0x21, 0x05, 0x76, 0x11, + 0x20, 0x51, 0x99, 0x9E, 0x63, 0xB2, 0x68, 0xBE, 0x35, 0xC2, 0x51, 0xC1, + 0x09, 0x40, 0x21, 0xF1, 0x82, 0x02, 0x92, 0x54, 0x1A, 0x90, 0x08, 0x0D, + 0x62, 0x2E, 0x13, 0x40, 0x68, 0xC8, 0x58, 0x22, 0x01, 0x41, 0x81, 0x90, + 0xD2, 0xB3, 0x67, 0x3F, 0xF6, 0x7D, 0xF8, 0xF8, 0xD3, 0x27, 0xF3, 0xF9, + 0x7C, 0xF4, 0x8E, 0x00, 0x98, 0xB9, 0xA4, 0x2D, 0x91, 0x90, 0x0C, 0x38, + 0xD1, 0x12, 0x39, 0xAB, 0x79, 0xF6, 0xB6, 0xAE, 0x91, 0x13, 0xF7, 0x3E, + 0x32, 0x8B, 0xB5, 0x34, 0x99, 0xDC, 0xD1, 0x62, 0x27, 0x6E, 0xDA, 0x3C, + 0x83, 0x59, 0x92, 0xB2, 0x37, 0x8E, 0x0C, 0x39, 0xEB, 0xBE, 0xFF, 0xE1, + 0xC5, 0xCB, 0xD7, 0xD7, 0x48, 0xA6, 0x6F, 0xFB, 0x18, 0x93, 0x73, 0x36, + 0x25, 0xAE, 0x9C, 0xED, 0x7C, 0xDA, 0xEC, 0xB6, 0x93, 0xA6, 0xB6, 0xD6, + 0x79, 0x1F, 0x9C, 0x33, 0xC1, 0x87, 0xDE, 0xFB, 0xD5, 0x66, 0x0B, 0x40, + 0xF3, 0xD9, 0x4C, 0x40, 0xE6, 0xF3, 0xE9, 0x72, 0x31, 0x5F, 0xAD, 0xB7, + 0xBF, 0xFB, 0xF2, 0x9B, 0x98, 0xF8, 0xF2, 0xF2, 0xFC, 0xE3, 0x27, 0x8F, + 0x1F, 0x3F, 0xBA, 0x5C, 0x6F, 0xB6, 0xBB, 0x7D, 0x8B, 0x88, 0xB3, 0xF9, + 0x74, 0x3E, 0x9B, 0xF6, 0x3E, 0x20, 0x61, 0xDF, 0xFB, 0xC4, 0x6C, 0xC8, + 0x70, 0x62, 0x35, 0x21, 0x53, 0x4C, 0x08, 0x18, 0x85, 0x05, 0x18, 0x05, + 0x53, 0x4A, 0x56, 0x1D, 0x11, 0x84, 0x22, 0xD2, 0x87, 0xF0, 0xFE, 0x66, + 0xFB, 0x8F, 0xBF, 0xFD, 0x21, 0xC5, 0xF0, 0x57, 0xBF, 0x7C, 0x7A, 0x7E, + 0x56, 0x8F, 0x96, 0x53, 0x81, 0x16, 0xDA, 0x44, 0x23, 0x44, 0x11, 0x4E, + 0xCC, 0x84, 0xD4, 0xF5, 0xDE, 0x5A, 0xE3, 0x9C, 0xE3, 0xC4, 0xBD, 0x0F, + 0x87, 0xD6, 0x73, 0xA9, 0xD5, 0x25, 0xCC, 0x35, 0xC2, 0x27, 0x82, 0x37, + 0x5E, 0x90, 0x2A, 0x3C, 0x3C, 0x50, 0xA1, 0x66, 0x34, 0x7B, 0xDC, 0xF3, + 0x86, 0x55, 0x77, 0xBA, 0xCA, 0xF2, 0x61, 0x1A, 0x56, 0x1E, 0xBB, 0x55, + 0x8F, 0x67, 0xC1, 0xDD, 0x8F, 0x73, 0x16, 0xA1, 0xF8, 0x6A, 0x75, 0x55, + 0x1B, 0x04, 0x80, 0x2F, 0xBF, 0x7D, 0x79, 0xB3, 0x6A, 0xDB, 0xBE, 0x5F, + 0x6D, 0x0E, 0x80, 0xF4, 0x93, 0xA7, 0x1F, 0x1F, 0xDA, 0xFE, 0x66, 0xB5, + 0x0D, 0x21, 0x5E, 0xDF, 0xAE, 0x99, 0xF9, 0xA3, 0xC7, 0x0F, 0xDE, 0xBC, + 0x5F, 0x6D, 0xF7, 0xDD, 0xDF, 0xFF, 0xFB, 0x5F, 0x2F, 0xE7, 0x93, 0xCE, + 0x87, 0x21, 0x62, 0x2B, 0x47, 0x37, 0xCB, 0x1D, 0x1D, 0x5D, 0xB4, 0xCA, + 0xB0, 0xB0, 0x33, 0x92, 0x3D, 0x79, 0xB6, 0xA1, 0x1D, 0x2F, 0xDE, 0xF5, + 0xF4, 0x8F, 0x81, 0xD8, 0x78, 0x15, 0x9C, 0x8C, 0x43, 0xE6, 0xD7, 0x92, + 0x3C, 0x72, 0x32, 0xEA, 0x5A, 0x87, 0x23, 0x93, 0x73, 0xBC, 0x55, 0x8C, + 0xAF, 0x7C, 0xB2, 0x79, 0xD8, 0x90, 0x09, 0x1B, 0x86, 0xE7, 0xD6, 0x9D, + 0x2A, 0x3F, 0xBD, 0x20, 0xA4, 0xE1, 0xB5, 0x8E, 0x1F, 0x61, 0x86, 0xA3, + 0x49, 0xAD, 0x8E, 0xEE, 0x61, 0x28, 0x04, 0x28, 0x1B, 0xF0, 0x23, 0xAD, + 0x89, 0xA0, 0xC6, 0xA4, 0xDA, 0x86, 0x84, 0xCC, 0x2A, 0x9D, 0x00, 0x91, + 0x25, 0x24, 0x0E, 0x51, 0x0B, 0x75, 0x80, 0x41, 0x08, 0x31, 0x59, 0xC1, + 0x7D, 0x1F, 0x63, 0x9A, 0xD4, 0xAE, 0x72, 0x06, 0x06, 0x1B, 0xF5, 0x2E, + 0x7C, 0x18, 0xDE, 0xE7, 0x83, 0x00, 0x6D, 0xF8, 0x5E, 0xE9, 0xF7, 0x62, + 0x8C, 0x1A, 0xFA, 0x4B, 0x89, 0x99, 0x93, 0xB5, 0x77, 0xB2, 0x34, 0xAC, + 0xB5, 0x8B, 0x85, 0x99, 0xCF, 0x27, 0x6D, 0xE7, 0xA7, 0x13, 0xB7, 0xDD, + 0xFB, 0x5D, 0xEB, 0x7D, 0xE4, 0xC1, 0x95, 0x0F, 0x05, 0x34, 0xE5, 0xC9, + 0x90, 0xC1, 0x57, 0x01, 0x04, 0x88, 0x28, 0xA5, 0x88, 0x1D, 0x0C, 0x91, + 0x35, 0xA8, 0xAF, 0x6E, 0x0D, 0x55, 0x36, 0xBB, 0xAA, 0x62, 0xCA, 0x9A, + 0x74, 0xAC, 0x75, 0x8B, 0x70, 0x80, 0x32, 0x89, 0xE8, 0xC5, 0x59, 0xC4, + 0x22, 0x19, 0x63, 0x12, 0x0B, 0x20, 0x54, 0x95, 0xBB, 0xBE, 0xBA, 0x3E, + 0x6C, 0x77, 0xEB, 0xED, 0x21, 0x89, 0xFC, 0xF2, 0x57, 0x3F, 0xDF, 0x6E, + 0x77, 0x17, 0x67, 0x4B, 0x63, 0x0D, 0x40, 0xD4, 0x8D, 0xDA, 0x19, 0xB2, + 0x56, 0x17, 0x55, 0xBE, 0x74, 0xD7, 0xB6, 0x29, 0xD2, 0x6C, 0x3A, 0x51, + 0x72, 0x37, 0x11, 0xEE, 0x43, 0xB4, 0x96, 0x66, 0xD3, 0x86, 0xC8, 0x9C, + 0x6E, 0x9E, 0xA5, 0x3E, 0xBC, 0x98, 0xA0, 0x20, 0x7C, 0xFC, 0x2B, 0x11, + 0xEE, 0x76, 0x87, 0xDF, 0xFF, 0xE1, 0xFB, 0xEB, 0xDB, 0xDD, 0x6C, 0x3A, + 0xD1, 0xBA, 0x4B, 0x16, 0xD6, 0xCE, 0xE7, 0x21, 0x26, 0x22, 0x42, 0x81, + 0xAB, 0xEB, 0x55, 0xDF, 0xF7, 0x9F, 0x7C, 0xF2, 0x04, 0x40, 0x92, 0xC8, + 0x6C, 0x36, 0xB3, 0xCE, 0xBD, 0x7A, 0xFD, 0x3E, 0x4D, 0xB8, 0x99, 0xD4, + 0x67, 0x67, 0x8B, 0x17, 0x2F, 0xDE, 0x3C, 0x7B, 0xFE, 0xEA, 0xFA, 0x66, + 0x6D, 0x8C, 0x79, 0xF4, 0xF0, 0x72, 0xB1, 0x98, 0x11, 0xE1, 0xFB, 0xAB, + 0xDB, 0xC3, 0xBE, 0x25, 0xA2, 0xF6, 0xD0, 0x01, 0x82, 0x30, 0xB4, 0xB7, + 0x9B, 0xDD, 0xA1, 0x15, 0x01, 0x32, 0xE4, 0xFB, 0x58, 0xD5, 0x4E, 0xD9, + 0x96, 0x35, 0xD0, 0x00, 0x05, 0xB1, 0x86, 0x98, 0x88, 0xC0, 0x91, 0xB1, + 0xD6, 0x26, 0xEF, 0xB7, 0xDB, 0xC3, 0x8B, 0xD7, 0xD7, 0x57, 0x37, 0xAB, + 0x47, 0x0F, 0x96, 0x0F, 0x2E, 0x17, 0x7D, 0x9F, 0x06, 0x8B, 0x40, 0x04, + 0x83, 0x0F, 0x0A, 0xCC, 0x43, 0xD0, 0xC2, 0x01, 0x06, 0xC4, 0x18, 0x92, + 0xB1, 0xC9, 0x87, 0x94, 0x62, 0xEA, 0x7D, 0x88, 0x29, 0x96, 0xE4, 0xE1, + 0x3B, 0xEE, 0x8B, 0xC1, 0x87, 0x7D, 0xA2, 0x8C, 0x86, 0x2D, 0xB0, 0x08, + 0xFE, 0x9D, 0x0D, 0x75, 0x2C, 0xAE, 0x27, 0x27, 0x96, 0x9F, 0xB3, 0x5F, + 0x00, 0x4E, 0xE1, 0xFE, 0xDD, 0xDD, 0x1A, 0x60, 0xD2, 0xD4, 0xFF, 0xF5, + 0x9F, 0x7E, 0xF7, 0xC9, 0x47, 0x8F, 0xBE, 0x78, 0xFA, 0x71, 0xEF, 0x03, + 0x11, 0x01, 0x4A, 0xE5, 0xEC, 0x7E, 0xDF, 0x7D, 0xF7, 0xFC, 0xDD, 0xED, + 0x7A, 0x57, 0xD7, 0x75, 0x5D, 0x57, 0x29, 0x25, 0x43, 0x34, 0x9F, 0x4D, + 0xDE, 0x5D, 0xAD, 0x66, 0xB3, 0x69, 0xD7, 0xFB, 0x37, 0x6F, 0xAF, 0x5E, + 0xBC, 0x78, 0xF3, 0xF8, 0xF1, 0x83, 0xDF, 0x7C, 0xF5, 0xEC, 0xDD, 0xD5, + 0xED, 0xFF, 0xF4, 0x1F, 0xFE, 0xCD, 0xE3, 0x07, 0xCB, 0xA4, 0xB5, 0x56, + 0x38, 0x00, 0x21, 0x1C, 0x23, 0xB2, 0xD1, 0xAD, 0x71, 0x50, 0x65, 0xE3, + 0xEF, 0xC7, 0x2F, 0x28, 0x23, 0x07, 0xFF, 0x78, 0xC4, 0x86, 0x53, 0xEE, + 0xA7, 0x98, 0xDD, 0x7D, 0xCF, 0x21, 0x12, 0x7A, 0x67, 0x70, 0x4E, 0xD4, + 0xD6, 0xF8, 0xCA, 0xF7, 0x1E, 0x32, 0x7F, 0xAC, 0x52, 0x51, 0x8F, 0xBC, + 0x39, 0x38, 0x3E, 0x26, 0xE3, 0xBD, 0xD1, 0x55, 0x8E, 0x1B, 0x42, 0x41, + 0xD6, 0xC3, 0xBA, 0xC6, 0x72, 0x57, 0x02, 0x64, 0x06, 0x2C, 0xBA, 0x0C, + 0x72, 0xC3, 0x2D, 0x60, 0x10, 0x64, 0xE8, 0x7C, 0x74, 0x96, 0xAC, 0x21, + 0x46, 0xE5, 0xC2, 0x96, 0x24, 0x1C, 0xA2, 0x10, 0x81, 0x23, 0xB2, 0x96, + 0x9A, 0xCA, 0xCE, 0x9A, 0xCA, 0x18, 0x74, 0xD6, 0xD4, 0x5A, 0x20, 0x43, + 0xE6, 0x3E, 0x1C, 0x1B, 0x36, 0x81, 0x61, 0x5B, 0xF8, 0x53, 0xA2, 0xA0, + 0x9F, 0x82, 0xB0, 0x72, 0x2D, 0xD7, 0x7D, 0x7A, 0x13, 0xBD, 0xC8, 0x6C, + 0x5A, 0xFF, 0xB4, 0x79, 0xD8, 0xF5, 0xFE, 0xFD, 0xED, 0xEE, 0xDD, 0xCD, + 0xAE, 0xF3, 0xB1, 0x64, 0x35, 0x2A, 0x28, 0x2F, 0x2E, 0x18, 0x00, 0x55, + 0xDF, 0x9A, 0x62, 0x9A, 0xED, 0x3B, 0x00, 0x40, 0x34, 0x0A, 0x8E, 0x24, + 0x27, 0xA0, 0x58, 0x4B, 0xCA, 0xA3, 0x1F, 0x53, 0x0A, 0x31, 0xA5, 0x84, + 0x6A, 0xA4, 0x8F, 0xDE, 0x08, 0x8B, 0x19, 0xAE, 0x44, 0xB3, 0xA0, 0xFD, + 0xBD, 0x45, 0x32, 0xB2, 0x7D, 0xF5, 0xF2, 0xCD, 0xBB, 0xB7, 0xEF, 0xAC, + 0xB3, 0xD3, 0xE9, 0x74, 0xBF, 0x6F, 0x7F, 0xF3, 0xAF, 0x5F, 0x75, 0x5D, + 0xF7, 0xF0, 0xF2, 0xEC, 0xD0, 0x87, 0xCF, 0x3E, 0xFB, 0x64, 0x36, 0xAD, + 0xFB, 0x3E, 0x55, 0x8B, 0xA9, 0x12, 0xBB, 0x84, 0x10, 0x56, 0xB7, 0xEB, + 0x94, 0x52, 0x8C, 0xC1, 0x58, 0xB3, 0xB2, 0xF6, 0xE3, 0x27, 0x8F, 0x16, + 0x8B, 0x29, 0xA2, 0x39, 0x5F, 0xCE, 0xD4, 0xA9, 0x74, 0x67, 0x70, 0x06, + 0x13, 0x02, 0x86, 0x95, 0x75, 0x94, 0x24, 0x11, 0x41, 0x84, 0x7F, 0xF9, + 0xED, 0x37, 0x6F, 0xDF, 0xAF, 0x0F, 0x6D, 0x67, 0xAD, 0x21, 0xC2, 0xCA, + 0xB9, 0xA6, 0x76, 0xAF, 0x5F, 0xBF, 0xBB, 0x5D, 0x6D, 0x97, 0xCB, 0x79, + 0x5D, 0xD7, 0x6D, 0xD7, 0xBD, 0xBD, 0xBA, 0x7E, 0xF8, 0xE0, 0xC1, 0xC5, + 0xE5, 0x79, 0x5D, 0x57, 0xCB, 0xC5, 0x4C, 0x1D, 0xCC, 0xF3, 0xF9, 0x6C, + 0x79, 0xB6, 0x34, 0x44, 0x4D, 0x5D, 0x7F, 0xF5, 0xCD, 0xF7, 0x5F, 0x7D, + 0xF5, 0x6D, 0x8C, 0xDC, 0xD4, 0xF5, 0xD3, 0xA7, 0x9F, 0x54, 0x95, 0x43, + 0x80, 0xC3, 0xA1, 0x5B, 0xAF, 0x77, 0x6D, 0xDB, 0x91, 0x31, 0xDE, 0xEF, + 0x8C, 0xB5, 0xCB, 0xE5, 0xE2, 0xFA, 0x76, 0xC5, 0xC2, 0xC0, 0xD8, 0x77, + 0x41, 0x9F, 0x64, 0x36, 0x9B, 0x8A, 0xEC, 0x11, 0x09, 0x7D, 0x00, 0x00, + 0x1F, 0x82, 0x0A, 0xAA, 0x96, 0x2A, 0xA6, 0x98, 0x38, 0xF1, 0xA1, 0x6D, + 0x13, 0x73, 0xDF, 0x87, 0xAB, 0x9B, 0x2D, 0x02, 0xA5, 0xC8, 0x1A, 0x1F, + 0x11, 0x8D, 0x7E, 0xC6, 0x10, 0x63, 0x8A, 0x21, 0xC5, 0xC8, 0x31, 0xC6, + 0x98, 0x92, 0x6E, 0x22, 0x89, 0x19, 0x31, 0xC5, 0x18, 0x13, 0xB3, 0xA8, + 0x5F, 0x64, 0xB4, 0xBD, 0x15, 0x3D, 0x7E, 0x27, 0x36, 0x37, 0x96, 0xBA, + 0xB1, 0xFC, 0x9C, 0x48, 0xD4, 0x87, 0x34, 0xD7, 0x11, 0xA3, 0x1D, 0x45, + 0x4A, 0x00, 0x0A, 0xFC, 0x1D, 0xBC, 0x57, 0x58, 0xB2, 0xAB, 0xD4, 0x74, + 0xE8, 0x7D, 0x78, 0x7F, 0xBD, 0x45, 0xAA, 0x1E, 0x3D, 0xBC, 0x5C, 0x4C, + 0x9B, 0x90, 0x22, 0x11, 0x75, 0x9D, 0xFF, 0x87, 0xFF, 0xF6, 0xB5, 0x20, + 0x2D, 0x17, 0xB3, 0x17, 0xAF, 0xDF, 0xCF, 0xE7, 0x33, 0x10, 0xF9, 0xCD, + 0xEF, 0xBF, 0x25, 0x32, 0x6D, 0xD7, 0xBF, 0x7C, 0xFD, 0xAE, 0xAE, 0xAB, + 0x8F, 0x1E, 0x3F, 0xDC, 0x1F, 0xDA, 0xD7, 0x6F, 0xAE, 0x52, 0x4A, 0x97, + 0x17, 0xCB, 0xFF, 0xFD, 0x1F, 0x7E, 0xFB, 0xEF, 0xFE, 0xF6, 0x8B, 0xBF, + 0xFC, 0xD9, 0x27, 0x9D, 0x0F, 0x5A, 0x62, 0x55, 0xA8, 0xC0, 0xEE, 0x68, + 0x07, 0xF9, 0x90, 0xFE, 0x1A, 0xBF, 0xCB, 0x18, 0x69, 0xC2, 0x3D, 0x35, + 0x37, 0x92, 0x1C, 0x1C, 0xBF, 0xF8, 0xC9, 0xA5, 0x44, 0x8E, 0x09, 0xCC, + 0xCC, 0x77, 0xD6, 0xF5, 0xF8, 0xAC, 0x61, 0x6D, 0x8E, 0xB7, 0x8D, 0xB1, + 0x36, 0xD0, 0xBB, 0x58, 0x16, 0x31, 0x6A, 0x48, 0x8E, 0x83, 0x9B, 0x7A, + 0xC5, 0xF2, 0x34, 0x43, 0x66, 0xE8, 0xB1, 0x16, 0x17, 0x00, 0x00, 0x34, + 0x45, 0x40, 0x3D, 0x8B, 0x26, 0xDB, 0x60, 0x1A, 0x73, 0xCC, 0x49, 0xAD, + 0x9A, 0xF2, 0x83, 0x85, 0x50, 0xC0, 0x00, 0x12, 0xA1, 0x73, 0x34, 0xAD, + 0x1D, 0x22, 0x6E, 0xF6, 0x3D, 0xC7, 0x44, 0x84, 0x06, 0x8D, 0x1E, 0x50, + 0x59, 0x22, 0xA4, 0xCA, 0x9A, 0xA6, 0xB6, 0x22, 0x42, 0x88, 0xD6, 0x8C, + 0x5A, 0x01, 0x94, 0xF7, 0x3F, 0x31, 0x85, 0xC6, 0x32, 0x74, 0x7F, 0xE0, + 0x86, 0x6F, 0x86, 0x20, 0xB4, 0x31, 0xA7, 0xD6, 0xC1, 0x78, 0x32, 0xF5, + 0xE0, 0xAA, 0x72, 0x1F, 0x3F, 0x3A, 0x9B, 0x4D, 0xEA, 0x9B, 0xF5, 0x7E, + 0xBB, 0xEF, 0x22, 0xB3, 0x86, 0x19, 0x54, 0x92, 0x99, 0xC5, 0x10, 0xCE, + 0x9A, 0x6A, 0xD2, 0x38, 0x66, 0xD1, 0x45, 0x8B, 0x45, 0x36, 0x8D, 0x21, + 0x6B, 0x48, 0x24, 0x87, 0xAB, 0x63, 0x4C, 0x84, 0xA8, 0xEE, 0x2A, 0x72, + 0x18, 0x89, 0x59, 0x72, 0x5A, 0x96, 0x08, 0x68, 0xDA, 0x44, 0xA6, 0x2E, + 0x29, 0x78, 0x48, 0x85, 0xCC, 0x39, 0xEB, 0x7D, 0xFF, 0xFB, 0x2F, 0xBF, + 0xBB, 0x7A, 0x7F, 0xB3, 0x5C, 0xCE, 0x91, 0x30, 0x24, 0x6E, 0x0F, 0x5D, + 0xDB, 0xAE, 0xDB, 0xDE, 0xAF, 0x56, 0x3B, 0x11, 0x79, 0xFB, 0xEE, 0xE6, + 0xF2, 0xE2, 0x3C, 0xC6, 0x18, 0x63, 0x9C, 0xCF, 0x26, 0xCA, 0x0D, 0x8D, + 0x00, 0x55, 0x6D, 0x8D, 0xB1, 0xF3, 0xF9, 0x34, 0x58, 0xF9, 0xE3, 0x77, + 0x2F, 0xAD, 0x35, 0x4F, 0x3E, 0xBA, 0x9C, 0xCD, 0x14, 0x9D, 0x99, 0x18, + 0xE3, 0x68, 0x94, 0x58, 0xEB, 0x69, 0x46, 0x03, 0x98, 0xC7, 0x21, 0xA5, + 0x54, 0x55, 0xEE, 0xE5, 0xAB, 0x77, 0x3F, 0x3C, 0x7F, 0x7B, 0xF9, 0xE0, + 0xE2, 0xE2, 0xF2, 0xDC, 0x1A, 0x72, 0xCE, 0x76, 0x9D, 0x37, 0x22, 0x9B, + 0xF5, 0xA6, 0x3D, 0xB4, 0xC6, 0xA0, 0x2A, 0x81, 0xE9, 0x74, 0x72, 0xBB, + 0x5E, 0x3F, 0x74, 0x0F, 0xA0, 0xEB, 0x6E, 0x57, 0x6B, 0x44, 0xBC, 0xBC, + 0x38, 0x37, 0xD6, 0x24, 0x96, 0xD5, 0x7E, 0xD7, 0xF7, 0x7E, 0xB7, 0x3B, + 0x24, 0x96, 0xB3, 0xF3, 0xE5, 0xCF, 0x7F, 0xF6, 0xF9, 0x62, 0x31, 0x43, + 0xC0, 0xCD, 0x76, 0xFF, 0xEA, 0xCD, 0xFB, 0xDE, 0x87, 0xE5, 0xD9, 0xF2, + 0xFD, 0xD5, 0x4D, 0x62, 0xFE, 0xE5, 0x2F, 0x3E, 0xD9, 0xEF, 0x0F, 0xCB, + 0xE5, 0xFC, 0xDD, 0xFB, 0x5B, 0x7D, 0x0A, 0x7D, 0x1E, 0xDD, 0x4E, 0x8D, + 0xA5, 0xC9, 0xB4, 0x49, 0x4A, 0x24, 0x99, 0x9D, 0xFD, 0xC4, 0x2C, 0x3E, + 0x46, 0x1F, 0xA2, 0x31, 0x74, 0xBE, 0x9C, 0xCF, 0x67, 0xD3, 0xB6, 0x8F, + 0xBB, 0x5D, 0x8B, 0x88, 0x31, 0x46, 0x44, 0x64, 0x6D, 0x9F, 0x91, 0x58, + 0xE9, 0xCC, 0x52, 0xE2, 0xA8, 0x89, 0x14, 0x4A, 0xF6, 0x59, 0x16, 0x8F, + 0x48, 0xC9, 0x50, 0xBA, 0x6B, 0x3F, 0x8E, 0x97, 0xDF, 0xC9, 0x1A, 0xD6, + 0x9F, 0x87, 0x98, 0xDD, 0xC9, 0x89, 0x63, 0x85, 0x08, 0x77, 0x3F, 0xA3, + 0x6F, 0x54, 0xB6, 0x4B, 0x5F, 0xDD, 0xA3, 0xF5, 0xA2, 0x4A, 0x18, 0x7F, + 0xF7, 0xCD, 0x8B, 0x9B, 0xF5, 0x16, 0x00, 0x96, 0xCB, 0xE5, 0xC7, 0x8F, + 0x2F, 0x7E, 0x7C, 0xF9, 0x86, 0x45, 0xFE, 0xF2, 0xE7, 0x4F, 0xA7, 0x93, + 0xFA, 0xB7, 0xCF, 0xDE, 0xDE, 0x6E, 0x3B, 0x22, 0x7C, 0xF5, 0xF6, 0xFA, + 0xE2, 0x7C, 0x69, 0x8C, 0xF9, 0xFE, 0xD9, 0x4B, 0xE7, 0x5C, 0x55, 0xB9, + 0xC5, 0x6C, 0xFA, 0xD1, 0xE3, 0x87, 0x02, 0xD2, 0xD4, 0x55, 0x55, 0xB9, + 0x14, 0x13, 0x54, 0x8E, 0x08, 0x93, 0xC0, 0x37, 0x3F, 0xBC, 0xF9, 0xC5, + 0x17, 0x4F, 0x50, 0xB3, 0x20, 0xC7, 0x01, 0xC2, 0x61, 0x71, 0x1D, 0xC9, + 0x3A, 0x4E, 0x15, 0x1C, 0x22, 0x8E, 0xFB, 0x73, 0x0F, 0x0B, 0x6A, 0xAC, + 0x6E, 0x4E, 0x14, 0xFD, 0x07, 0x50, 0xD8, 0xE8, 0xAF, 0xE3, 0x18, 0xE5, + 0x78, 0x48, 0x4F, 0xAE, 0x33, 0xDC, 0x7A, 0x7C, 0x97, 0x93, 0x27, 0xB7, + 0xC7, 0x11, 0x1D, 0x65, 0x35, 0x71, 0x29, 0x5F, 0x28, 0x40, 0x0D, 0xB3, + 0xC1, 0x51, 0x1E, 0x58, 0x04, 0x9C, 0xC5, 0x69, 0x65, 0x13, 0x8B, 0x56, + 0x77, 0x6B, 0x01, 0x79, 0x62, 0x41, 0xCC, 0x8C, 0x17, 0xAD, 0x0F, 0x00, + 0x54, 0x57, 0x06, 0x01, 0xFA, 0x10, 0xA5, 0xD0, 0x43, 0x27, 0x2E, 0x84, + 0x49, 0x08, 0x95, 0x35, 0xCA, 0xF5, 0x6C, 0x0D, 0x29, 0x79, 0xEC, 0xB4, + 0x71, 0x44, 0xC4, 0x2C, 0xC6, 0x98, 0xF9, 0xA4, 0x72, 0xCE, 0xC4, 0x98, + 0x0C, 0xB1, 0x86, 0x31, 0xB4, 0xFE, 0x4E, 0x33, 0x15, 0x07, 0xDC, 0xAB, + 0x2F, 0x56, 0x55, 0xB6, 0xAA, 0xAA, 0xE1, 0x55, 0x87, 0xEF, 0x4F, 0xA4, + 0x07, 0x8B, 0x5F, 0x63, 0x18, 0x91, 0xF1, 0x0E, 0x30, 0x1E, 0x65, 0x22, + 0xBA, 0x3C, 0x9B, 0xCD, 0x27, 0xD5, 0xBE, 0xF5, 0x37, 0xEB, 0x43, 0xEF, + 0xC3, 0x6C, 0x52, 0xAB, 0xE3, 0x9C, 0x08, 0x17, 0xB3, 0x66, 0x31, 0x6B, + 0x84, 0xA5, 0xF3, 0x51, 0x75, 0x6E, 0xE4, 0x63, 0xA3, 0xC1, 0x98, 0x53, + 0x90, 0x8E, 0x4C, 0xEA, 0x89, 0x41, 0x44, 0xAB, 0x54, 0xB3, 0x72, 0x4F, + 0x2C, 0x2C, 0x62, 0x8C, 0x81, 0x04, 0xEA, 0xBA, 0xD3, 0x18, 0xA3, 0x35, + 0x88, 0x84, 0x0C, 0xF0, 0xED, 0x77, 0xCF, 0xAF, 0xDE, 0x5F, 0x1D, 0xDA, + 0xDE, 0x56, 0xB5, 0xB6, 0xF9, 0xF0, 0xDE, 0x2B, 0xC4, 0x05, 0x91, 0x94, + 0x52, 0x55, 0x55, 0x5D, 0xE7, 0x5F, 0xBD, 0x7E, 0xDF, 0x4C, 0xEA, 0x94, + 0x78, 0xB5, 0x39, 0x38, 0x67, 0x09, 0xB1, 0xAA, 0x2B, 0x26, 0x49, 0x5D, + 0xFF, 0xFA, 0xED, 0xCD, 0xA7, 0x1F, 0x3F, 0x9A, 0x4C, 0x9A, 0xCD, 0x6E, + 0xF7, 0xFE, 0x6A, 0x65, 0x08, 0x43, 0x0C, 0xFF, 0xE6, 0xEF, 0xFE, 0xF2, + 0xC9, 0xA3, 0x07, 0xB9, 0x94, 0x1C, 0x65, 0xF0, 0x82, 0x0D, 0xA2, 0x9C, + 0x05, 0x9A, 0xC5, 0x59, 0xF3, 0xFC, 0xC5, 0xEB, 0xFF, 0xF2, 0xDF, 0xBE, + 0xBC, 0xB8, 0xB8, 0x70, 0xAE, 0x9A, 0x36, 0x8D, 0x0F, 0xFE, 0xF6, 0x76, + 0xE3, 0x7D, 0x88, 0xC1, 0xC7, 0xC4, 0xCD, 0xA4, 0x89, 0x29, 0xC5, 0xFD, + 0x81, 0x13, 0x5B, 0x67, 0x11, 0xE0, 0xF5, 0xAB, 0xB7, 0xD3, 0x69, 0x23, + 0x00, 0x4D, 0x53, 0x6F, 0x36, 0xBB, 0xCE, 0x07, 0xEB, 0x6C, 0x08, 0x69, + 0xB7, 0xDB, 0xF7, 0xBD, 0xFF, 0xD5, 0x2F, 0xBF, 0xF8, 0xE4, 0xE3, 0xC7, + 0x2C, 0x50, 0x57, 0x2E, 0xC6, 0xB8, 0xDD, 0xF7, 0x87, 0xB6, 0x7B, 0x77, + 0x75, 0x13, 0x53, 0xEA, 0x7A, 0xFF, 0x93, 0xCF, 0x3F, 0x39, 0x5B, 0xCE, + 0x9F, 0xFD, 0xF8, 0xFA, 0x6C, 0xB9, 0x48, 0x49, 0x03, 0xAD, 0x99, 0x77, + 0x30, 0x31, 0xCF, 0x66, 0xD3, 0xDD, 0xBE, 0xBD, 0xBC, 0x3C, 0x7F, 0xFA, + 0xE9, 0xE3, 0x7F, 0xFD, 0xED, 0x37, 0x7D, 0xBF, 0x77, 0xCE, 0xA4, 0xC4, + 0xDE, 0xA7, 0xAA, 0xB2, 0xCC, 0xC2, 0x1C, 0xDF, 0xBC, 0xBF, 0xB9, 0x3C, + 0x5F, 0x3E, 0x7F, 0x79, 0xFD, 0x77, 0xBF, 0xFE, 0xC9, 0x6C, 0x5A, 0x87, + 0x14, 0x41, 0x84, 0x19, 0x62, 0x4A, 0x29, 0xA6, 0x81, 0x25, 0xB8, 0xBC, + 0x20, 0xE3, 0x5D, 0xEF, 0xC4, 0x20, 0x06, 0xE3, 0xD5, 0x72, 0xA2, 0xB6, + 0x4A, 0x8F, 0xEA, 0x23, 0xE2, 0x18, 0x21, 0xAC, 0x53, 0x49, 0xFB, 0xA0, + 0x04, 0x8E, 0x7F, 0xE6, 0x51, 0x69, 0x52, 0x81, 0x27, 0xB9, 0x18, 0xC0, + 0x5A, 0xF3, 0xF5, 0xB7, 0x2F, 0xFF, 0xEF, 0x7F, 0xFE, 0xDA, 0x55, 0x35, + 0x73, 0x7A, 0xF2, 0xE8, 0xF2, 0x5F, 0x7E, 0xFF, 0xC3, 0xD5, 0xCD, 0x6A, + 0x3A, 0x99, 0x3C, 0xFD, 0xF4, 0xA3, 0xDD, 0xA1, 0x5F, 0xED, 0xFA, 0xCB, + 0xF3, 0xE5, 0xBB, 0xAB, 0xDB, 0xF3, 0xE5, 0xC2, 0x58, 0x32, 0xC6, 0xFC, + 0xE2, 0x67, 0x3F, 0xD9, 0xED, 0xDB, 0x18, 0xE3, 0xED, 0x6A, 0xFB, 0xF9, + 0xE7, 0x1F, 0x1B, 0x63, 0xBE, 0xF9, 0xE3, 0x0F, 0x75, 0x5D, 0x7F, 0xF6, + 0xD9, 0x47, 0xD3, 0x49, 0xF3, 0xEE, 0xEA, 0xA6, 0xA9, 0x6B, 0xA2, 0x85, + 0xB2, 0x9B, 0x1C, 0xA9, 0xD6, 0x46, 0xF3, 0x5E, 0x1A, 0x80, 0x03, 0x80, + 0x8C, 0x51, 0x92, 0x7E, 0x86, 0xB2, 0xE5, 0x61, 0x0C, 0xC7, 0x6B, 0xED, + 0x64, 0x05, 0x41, 0x09, 0x65, 0x0E, 0x38, 0xE3, 0x24, 0x66, 0x22, 0x85, + 0x71, 0x4C, 0xEE, 0x9E, 0x35, 0xDC, 0x6B, 0x7C, 0xF0, 0x89, 0x4E, 0x1C, + 0x1C, 0x76, 0x03, 0x58, 0x33, 0xFF, 0xF3, 0xFF, 0xF2, 0xBF, 0xEA, 0xE3, + 0x19, 0x44, 0xCA, 0x85, 0x0C, 0xC7, 0x6C, 0xF5, 0x5C, 0xCC, 0x5C, 0x7E, + 0x85, 0x6C, 0x6C, 0xA2, 0x7A, 0x7F, 0xAC, 0xA1, 0x87, 0x67, 0xB3, 0xBA, + 0xB2, 0x21, 0xB1, 0xD1, 0x30, 0xBF, 0x88, 0xB5, 0x64, 0x48, 0xE9, 0x5C, + 0xA4, 0xAA, 0x8C, 0x33, 0x86, 0x25, 0x37, 0x5E, 0xD3, 0x0E, 0x6F, 0x89, + 0x25, 0xC4, 0x24, 0xCC, 0xD6, 0x98, 0xE5, 0xB4, 0xBE, 0x3C, 0x9B, 0x5C, + 0x2E, 0xA7, 0xCE, 0xE5, 0x4E, 0x88, 0x7D, 0x4C, 0xFB, 0xD6, 0x13, 0xE2, + 0x7C, 0x52, 0x19, 0x63, 0xBA, 0x3E, 0xB4, 0xBD, 0xEF, 0xFA, 0xA0, 0xFF, + 0xF7, 0xF1, 0x98, 0x5C, 0xAD, 0xD9, 0x80, 0xEA, 0x36, 0x41, 0xD4, 0xD4, + 0xA7, 0x21, 0xB8, 0x4E, 0x27, 0xE3, 0x3B, 0x1E, 0x88, 0x41, 0x46, 0x35, + 0xBE, 0x3E, 0x4C, 0xC9, 0xFD, 0x52, 0x01, 0x2E, 0xD3, 0x6A, 0x88, 0xCE, + 0x16, 0x93, 0xF9, 0xB4, 0x9E, 0x4F, 0xEB, 0xF3, 0xE5, 0xF4, 0x62, 0x39, + 0x9B, 0x4D, 0x6B, 0xCC, 0x2D, 0xC6, 0x40, 0xC9, 0xB8, 0xEB, 0xCA, 0x4E, + 0x9A, 0xCA, 0x39, 0x6B, 0x8C, 0x76, 0x40, 0xC4, 0xCA, 0x59, 0x25, 0xC6, + 0x51, 0x52, 0xE9, 0x18, 0xB3, 0x7B, 0x8C, 0x75, 0x38, 0x58, 0xC8, 0x9A, + 0x9B, 0x9B, 0x95, 0xB5, 0x66, 0x3A, 0x9D, 0x18, 0x63, 0x08, 0xD1, 0x39, + 0x4B, 0x48, 0x5D, 0x17, 0x5E, 0xBC, 0x7C, 0xF3, 0xDD, 0xB7, 0x3F, 0x26, + 0xE6, 0x66, 0xD2, 0x84, 0x10, 0xFB, 0x10, 0xBA, 0xCE, 0x6F, 0xB6, 0x3B, + 0x91, 0x21, 0xC1, 0x9D, 0x03, 0x73, 0x4A, 0x6C, 0xAC, 0x89, 0x21, 0x97, + 0x25, 0xC5, 0xC4, 0x5D, 0xEF, 0xEB, 0xBA, 0xEE, 0xDA, 0xFE, 0xD0, 0xF6, + 0x57, 0x37, 0x2B, 0x8D, 0x0C, 0xBE, 0x7C, 0xFD, 0x9E, 0x99, 0x9F, 0x3C, + 0x79, 0xBC, 0xDE, 0x1C, 0xAE, 0x6F, 0xD6, 0xEF, 0xAF, 0x56, 0x00, 0x7C, + 0xBE, 0x9C, 0xF9, 0xDE, 0xF3, 0x40, 0x06, 0x30, 0xDA, 0x84, 0x59, 0xB9, + 0x95, 0x08, 0x7F, 0xF3, 0xE5, 0xB7, 0x5D, 0xEB, 0xA3, 0x36, 0x4A, 0x44, + 0x7C, 0xFD, 0xEA, 0xED, 0xED, 0x6A, 0x93, 0x24, 0xC5, 0xC8, 0x64, 0x08, + 0x80, 0x40, 0xE0, 0x70, 0xE8, 0x0E, 0x6D, 0x17, 0x42, 0x8C, 0x31, 0x71, + 0x76, 0xD3, 0x4C, 0xA7, 0x4D, 0x9D, 0x62, 0xDA, 0xED, 0xDB, 0xEB, 0x9B, + 0xD5, 0xF5, 0xF5, 0x6D, 0xDB, 0x76, 0x4F, 0x3E, 0x7A, 0xF4, 0xF0, 0xE1, + 0xC5, 0xF5, 0xED, 0x3A, 0x84, 0x68, 0xAD, 0xB9, 0xB9, 0xDD, 0xDC, 0xDC, + 0xAE, 0x9A, 0xA6, 0xFE, 0xE1, 0xF9, 0x2B, 0x66, 0xAE, 0xEB, 0x1A, 0x00, + 0xDF, 0x5F, 0xAD, 0x6E, 0x6F, 0xB7, 0xFB, 0xC3, 0x21, 0x26, 0x26, 0xC2, + 0xB3, 0xB3, 0xB9, 0x12, 0xD8, 0x2E, 0x97, 0x73, 0x55, 0xB7, 0x3F, 0x7D, + 0xFA, 0x09, 0x80, 0xAC, 0x37, 0x7B, 0x55, 0x4B, 0x25, 0xA1, 0x0C, 0x7D, + 0x48, 0xD6, 0x98, 0x18, 0xE3, 0x62, 0x31, 0x7F, 0xFB, 0xEE, 0xFA, 0xF3, + 0x4F, 0x1F, 0x2E, 0x17, 0x13, 0xED, 0x95, 0xC5, 0xCC, 0x51, 0x9B, 0xA6, + 0x8C, 0xDE, 0x6E, 0x10, 0x12, 0xD1, 0xCC, 0xCB, 0xBB, 0x12, 0x72, 0x02, + 0xF0, 0xCB, 0x42, 0xD0, 0xB8, 0xEC, 0xE9, 0x9F, 0x4E, 0xD6, 0xF3, 0xFD, + 0x85, 0x3D, 0x5E, 0xFC, 0x7F, 0x06, 0xA3, 0xA1, 0x2E, 0x3D, 0x02, 0x44, + 0xB4, 0xC6, 0x3C, 0x7B, 0xF5, 0xFE, 0x87, 0x57, 0xB7, 0x49, 0x60, 0x52, + 0xBB, 0x5F, 0xFE, 0xEC, 0xA9, 0x31, 0xE6, 0x66, 0xB5, 0x79, 0xF2, 0xE8, + 0x61, 0xEF, 0xE3, 0xBB, 0xAB, 0xD5, 0xFB, 0x9B, 0xDD, 0xD7, 0xDF, 0xBD, + 0x52, 0x38, 0x3C, 0x99, 0xD4, 0x86, 0x28, 0xC6, 0x34, 0x99, 0x34, 0xBB, + 0xDD, 0xE1, 0xD5, 0x9B, 0xF7, 0xBB, 0xDD, 0x7E, 0xB1, 0x98, 0x09, 0xC3, + 0xA3, 0x87, 0x97, 0x31, 0xC6, 0xC3, 0xA1, 0x9B, 0xCF, 0xA7, 0xDA, 0x19, + 0x63, 0xDF, 0x76, 0xE7, 0x8B, 0xD9, 0xE5, 0xF9, 0x7C, 0x40, 0xE5, 0x30, + 0x54, 0x37, 0x8C, 0x3E, 0xE3, 0xDF, 0xC6, 0x0B, 0xE7, 0xFE, 0xB0, 0x9C, + 0x94, 0x33, 0x0F, 0xA3, 0x37, 0x04, 0xD3, 0x60, 0x04, 0x57, 0x45, 0xD3, + 0x1A, 0xB2, 0x12, 0xCF, 0xFE, 0x98, 0xF1, 0xC8, 0xDC, 0x1F, 0xF3, 0x93, + 0x71, 0x96, 0x51, 0x10, 0x79, 0x30, 0x36, 0x89, 0xC8, 0xFC, 0xC7, 0xFF, + 0xF4, 0x9F, 0x09, 0xC1, 0x64, 0x1E, 0x6D, 0x50, 0x65, 0x66, 0x10, 0xB5, + 0xF2, 0x61, 0x5C, 0x8C, 0x3A, 0x7A, 0x33, 0x20, 0x44, 0x10, 0x70, 0x96, + 0x08, 0xF1, 0x76, 0xD7, 0xB5, 0x7D, 0xE4, 0x9C, 0xBF, 0x04, 0x00, 0x90, + 0x58, 0x34, 0xE5, 0x27, 0x97, 0xBC, 0x8A, 0x4C, 0xEA, 0xAA, 0xA9, 0x2C, + 0x02, 0x52, 0x6E, 0x62, 0x42, 0x80, 0x60, 0x8D, 0xB6, 0x47, 0x4C, 0x21, + 0x26, 0x1F, 0xE2, 0xBE, 0xF5, 0xEF, 0xD7, 0x87, 0xD5, 0xAE, 0x8F, 0x89, + 0x0F, 0x9D, 0xEF, 0x7C, 0x3C, 0xB4, 0x7E, 0xDF, 0xF5, 0xDB, 0x7D, 0x7F, + 0xBB, 0xEB, 0xDA, 0x3E, 0xE8, 0xD3, 0x57, 0xCE, 0x3A, 0x67, 0x88, 0xC0, + 0x59, 0xE3, 0x9C, 0x25, 0x42, 0x53, 0x3A, 0x6C, 0x0E, 0x21, 0xA7, 0xFB, + 0x82, 0x32, 0x16, 0x97, 0x61, 0x5C, 0x78, 0x04, 0xAD, 0x07, 0x14, 0x96, + 0xB7, 0xCA, 0x23, 0xED, 0x91, 0x00, 0xE0, 0x44, 0x59, 0x58, 0x9D, 0x51, + 0x9D, 0x65, 0xAC, 0xC6, 0x1F, 0x80, 0x08, 0xAC, 0xB5, 0xBA, 0x96, 0x86, + 0x48, 0x28, 0x11, 0x18, 0x43, 0x95, 0x33, 0x75, 0x65, 0xB5, 0x39, 0x9B, + 0x1A, 0x9B, 0xB9, 0xCA, 0xC7, 0x90, 0x52, 0x59, 0xB8, 0xBA, 0x7A, 0xF1, + 0xE3, 0xAB, 0x2F, 0x7F, 0xFB, 0xF5, 0x66, 0x7B, 0xF0, 0x3E, 0xC4, 0x10, + 0x8D, 0x35, 0xEB, 0xF5, 0xEE, 0xEB, 0x3F, 0x3E, 0xFB, 0xC3, 0x1F, 0x9F, + 0xC5, 0x10, 0xCF, 0xCE, 0x97, 0x29, 0xC6, 0xDE, 0x87, 0xAE, 0xF3, 0xDE, + 0x87, 0xD5, 0x66, 0xD7, 0xF9, 0x18, 0x63, 0x22, 0x22, 0x2D, 0xF3, 0x64, + 0x01, 0xEF, 0x43, 0xD7, 0xFB, 0xDE, 0x7B, 0x22, 0x33, 0x9D, 0x4E, 0x67, + 0xD3, 0x86, 0x0C, 0x75, 0x9D, 0x47, 0x44, 0x63, 0xAC, 0x80, 0x5C, 0x5D, + 0xDF, 0xB6, 0x87, 0x3E, 0xC6, 0xB4, 0xDE, 0xEE, 0x13, 0xC3, 0xA3, 0x87, + 0x17, 0x64, 0xEC, 0xFE, 0xD0, 0xBD, 0x79, 0x77, 0xDB, 0xFB, 0xFE, 0xC1, + 0xC5, 0x52, 0x05, 0x5A, 0xEE, 0x7C, 0xC0, 0x59, 0x1B, 0x63, 0x7C, 0xF6, + 0xE2, 0xDD, 0xCD, 0xCD, 0xA6, 0xEF, 0xDA, 0xAA, 0xAA, 0xB4, 0xB9, 0x72, + 0xF0, 0xE1, 0xD0, 0x1E, 0x9A, 0xA6, 0x51, 0xD4, 0x5C, 0x55, 0xCE, 0xFB, + 0x28, 0x88, 0x75, 0x55, 0xB5, 0xBD, 0x37, 0x64, 0x42, 0x8C, 0x31, 0x25, + 0x41, 0x60, 0x91, 0x18, 0xC2, 0x6A, 0xB5, 0xB9, 0xBA, 0xBE, 0xD5, 0xD8, + 0x59, 0x55, 0xB9, 0xED, 0x6E, 0x7F, 0x71, 0x7E, 0x46, 0x86, 0x0E, 0x87, + 0xAE, 0xAE, 0xAB, 0xA7, 0x9F, 0x3D, 0xF9, 0xF2, 0xF7, 0xDF, 0xAD, 0xD7, + 0x3B, 0x11, 0xF0, 0xBD, 0x0F, 0x31, 0x74, 0xBD, 0x8F, 0x31, 0x09, 0xF3, + 0x74, 0x52, 0x6B, 0x32, 0x5D, 0xD0, 0x14, 0x7B, 0x16, 0x6B, 0xED, 0xA7, + 0x9F, 0x7C, 0xF4, 0xE8, 0xC1, 0xC5, 0xF5, 0xF5, 0xAA, 0xEB, 0xFB, 0x8F, + 0x9F, 0x3C, 0x3A, 0x5B, 0xCC, 0x0E, 0x6D, 0x1B, 0x42, 0x14, 0x81, 0x14, + 0x79, 0x3A, 0x9B, 0xFC, 0xCD, 0x5F, 0xFD, 0x6C, 0xBB, 0xDD, 0xBD, 0x7E, + 0x7B, 0x6D, 0x8C, 0xF9, 0xF9, 0x4F, 0x3F, 0xF5, 0x21, 0x4A, 0xC9, 0xCB, + 0x2F, 0x6B, 0x36, 0x3B, 0x4C, 0x86, 0x89, 0x06, 0x38, 0x5D, 0x45, 0xC3, + 0x67, 0x58, 0x27, 0xC3, 0xB2, 0xC1, 0x63, 0xF6, 0x03, 0x0E, 0xEA, 0x69, + 0x40, 0x1C, 0x27, 0x9B, 0xE5, 0x07, 0xC5, 0x0F, 0xFE, 0xB4, 0x96, 0x44, + 0x44, 0x32, 0x88, 0x80, 0x95, 0x75, 0xDE, 0xFB, 0xFF, 0xF2, 0x8F, 0x5F, + 0x5F, 0xDD, 0xEE, 0x36, 0xEB, 0x7D, 0x88, 0xE1, 0xD0, 0x76, 0xC6, 0x98, + 0xDB, 0xF5, 0xBE, 0xED, 0xBA, 0xD5, 0x7A, 0xF7, 0xFA, 0xDD, 0xED, 0xBE, + 0xF5, 0x7D, 0xEF, 0x57, 0xEB, 0x5D, 0x5D, 0x57, 0x67, 0xCB, 0x45, 0xEF, + 0x63, 0xEF, 0xC3, 0x62, 0x3E, 0x59, 0x6F, 0xF6, 0xDB, 0xED, 0x41, 0x04, + 0x66, 0xB3, 0x29, 0x0B, 0x37, 0xB5, 0xBB, 0x38, 0x5F, 0xBE, 0x7D, 0x77, + 0xF5, 0xEE, 0xFD, 0x8D, 0x0F, 0xD1, 0x5A, 0xEB, 0x7D, 0x40, 0x84, 0x2F, + 0x3E, 0x7B, 0x94, 0x52, 0xD9, 0xBA, 0x4A, 0x58, 0x0F, 0x4A, 0xFE, 0xC1, + 0xA8, 0xEE, 0xE1, 0x54, 0xF3, 0x0E, 0x20, 0x6E, 0x50, 0x61, 0xE3, 0x71, + 0x18, 0xDE, 0xF4, 0xB8, 0x12, 0x06, 0x16, 0xC6, 0xA2, 0xC8, 0x10, 0x4B, + 0x64, 0x1D, 0x20, 0x27, 0x02, 0xDC, 0x1D, 0xF9, 0xFB, 0xF7, 0x1D, 0x96, + 0xE4, 0xE0, 0xA3, 0xBC, 0x7F, 0x98, 0x35, 0x94, 0x95, 0x55, 0xCE, 0x0D, + 0x47, 0x44, 0xCC, 0xF6, 0xF3, 0x78, 0x0E, 0x04, 0x8E, 0x31, 0x3B, 0xD0, + 0xC4, 0x0B, 0x94, 0x3E, 0xA4, 0x98, 0xBA, 0x3E, 0x26, 0xBD, 0x02, 0xB3, + 0xD6, 0x5A, 0x43, 0x64, 0xEE, 0xA3, 0x54, 0xC6, 0x98, 0x8A, 0x9A, 0xDA, + 0xD1, 0xC0, 0xCF, 0x27, 0xD1, 0xC7, 0x18, 0x52, 0x02, 0x44, 0x6B, 0xB0, + 0xF3, 0x31, 0x26, 0x26, 0xC4, 0x69, 0xC3, 0x02, 0xD0, 0xF9, 0xA8, 0x6C, + 0x10, 0x2A, 0x3A, 0x0A, 0xC1, 0x58, 0x40, 0xE9, 0xED, 0x75, 0x8C, 0x89, + 0xC8, 0x18, 0x1F, 0x93, 0xA9, 0x2B, 0xAB, 0x55, 0x2C, 0x44, 0xC8, 0x89, + 0xBD, 0x4F, 0x54, 0x98, 0x57, 0xE1, 0x43, 0xA1, 0xE2, 0xF1, 0xCB, 0xDF, + 0x8F, 0xB3, 0x1C, 0x5F, 0x53, 0x01, 0xB6, 0xFA, 0x90, 0x55, 0xD3, 0x1B, + 0x53, 0xD7, 0x38, 0x44, 0x3C, 0x46, 0xF3, 0x07, 0x44, 0x06, 0x60, 0xE8, + 0x4D, 0x77, 0xBC, 0x8E, 0x96, 0x52, 0x95, 0x7D, 0x43, 0x1A, 0x22, 0xAD, + 0x44, 0x9F, 0x4C, 0x2A, 0x61, 0x49, 0xCC, 0x90, 0xD8, 0x54, 0xEE, 0xEA, + 0xFA, 0xF6, 0x87, 0xEF, 0x9F, 0xD7, 0x75, 0x9D, 0x62, 0x7C, 0xF3, 0xE6, + 0x5D, 0x55, 0xD5, 0xC6, 0xD0, 0xBB, 0x77, 0xD7, 0xAE, 0xAE, 0x41, 0x24, + 0x86, 0x18, 0x6C, 0x38, 0xB4, 0x5D, 0xD7, 0xF7, 0xBB, 0x7D, 0x67, 0x8D, + 0x25, 0x63, 0xA6, 0x4D, 0xB3, 0x5C, 0xCC, 0x43, 0xF0, 0x5D, 0x1F, 0x18, + 0x92, 0x24, 0x59, 0x2C, 0x16, 0x3E, 0x44, 0xEF, 0x3D, 0x00, 0xEC, 0x0F, + 0x87, 0xBA, 0x3E, 0x5B, 0x2C, 0xE6, 0x75, 0xE5, 0x44, 0x60, 0xBD, 0xD9, + 0x31, 0x4B, 0xD3, 0xD4, 0x93, 0x69, 0x03, 0x00, 0x9B, 0xCD, 0xF6, 0xC7, + 0x97, 0x6F, 0x9A, 0xA6, 0xAA, 0x9C, 0x65, 0x4E, 0xDE, 0x87, 0xE7, 0x2F, + 0xDE, 0xFD, 0xF2, 0x2F, 0x9E, 0x8E, 0xA5, 0x50, 0x51, 0xA1, 0x20, 0xAC, + 0xB7, 0xBB, 0xAF, 0xBF, 0x79, 0xB6, 0xDD, 0x75, 0x31, 0x78, 0x6B, 0x1D, + 0x8A, 0x70, 0x4A, 0x7D, 0x4A, 0x02, 0xA2, 0x09, 0x68, 0xCE, 0x39, 0x63, + 0x0C, 0xB3, 0xCC, 0x96, 0xB3, 0x19, 0x50, 0x55, 0xD9, 0x7A, 0xBD, 0x0D, + 0x21, 0xCE, 0x0D, 0xAD, 0x6E, 0xD7, 0xEB, 0xF5, 0x7E, 0xB7, 0xEB, 0xDA, + 0xB6, 0x7D, 0xFC, 0xE8, 0xC1, 0xD3, 0xCF, 0x3F, 0xBD, 0xB8, 0x38, 0xDB, + 0x6C, 0xF7, 0xEF, 0xAF, 0x6E, 0x2E, 0xCE, 0xCF, 0x9C, 0x33, 0x86, 0x8D, + 0x30, 0x3C, 0x7A, 0x70, 0xB6, 0x5A, 0xEF, 0xAE, 0x6F, 0x6E, 0x7D, 0x8C, + 0xE7, 0xB3, 0xF9, 0xE5, 0xF9, 0xE2, 0xA3, 0x47, 0x97, 0xD7, 0x37, 0xAB, + 0x18, 0xD2, 0xAB, 0x77, 0x37, 0x87, 0xCE, 0x3B, 0x63, 0xFB, 0xBE, 0x47, + 0x84, 0xF3, 0x8B, 0xC5, 0x2F, 0x7E, 0xF6, 0x79, 0x62, 0xA9, 0x9C, 0x6D, + 0xBB, 0xAE, 0xED, 0xFA, 0xBA, 0xAE, 0x2F, 0xCE, 0x96, 0x6F, 0xDE, 0x5D, + 0x13, 0x6A, 0x1D, 0x68, 0xD2, 0x68, 0x6C, 0x53, 0xD7, 0x3F, 0x7D, 0xFA, + 0xF1, 0x7C, 0x36, 0xB1, 0xD6, 0xF4, 0x3E, 0x00, 0x40, 0x8A, 0x5C, 0x92, + 0x1F, 0x29, 0x97, 0xEA, 0x21, 0x1A, 0x32, 0x80, 0xA7, 0x96, 0xCE, 0x78, + 0x39, 0x8D, 0x17, 0x2D, 0x16, 0x81, 0x84, 0x0F, 0x7D, 0xE4, 0x9E, 0x6D, + 0xF5, 0x67, 0x0E, 0x3E, 0x39, 0x05, 0xB2, 0xB1, 0x96, 0x5D, 0x3A, 0x44, + 0x44, 0x90, 0xFD, 0x0B, 0xBF, 0xF9, 0xFA, 0xF9, 0xDB, 0xEB, 0x6D, 0x08, + 0x71, 0xD2, 0xD4, 0x95, 0xB3, 0xDF, 0x3F, 0x7F, 0x63, 0xCC, 0xFB, 0x9F, + 0x7F, 0xF1, 0xE9, 0xC3, 0x8B, 0xB3, 0x6F, 0xBE, 0x7F, 0xF1, 0xFC, 0xE5, + 0x9B, 0xA7, 0x9F, 0x3D, 0x51, 0x54, 0x5B, 0x55, 0xD5, 0xD5, 0xF5, 0x6A, + 0x36, 0x9D, 0x4C, 0x27, 0xCD, 0x8F, 0x2F, 0xDE, 0xBE, 0x7B, 0x7F, 0xBB, + 0xD9, 0xED, 0x2F, 0xCF, 0xCF, 0x10, 0xF1, 0xE6, 0x66, 0xED, 0xBD, 0x3F, + 0x5B, 0x2E, 0x7E, 0xF5, 0x8B, 0x2F, 0x6E, 0xD7, 0x9B, 0xFD, 0xBE, 0xBB, + 0x5D, 0x6D, 0x10, 0xF1, 0xFA, 0x76, 0x1B, 0x4B, 0xAE, 0xBF, 0x14, 0xCB, + 0x4E, 0x8E, 0xF9, 0xDB, 0xF7, 0xF2, 0xA9, 0x46, 0x43, 0x34, 0xD8, 0x94, + 0x83, 0x43, 0xE6, 0xCF, 0x8C, 0xCC, 0x89, 0xF1, 0xAE, 0x0B, 0x68, 0xA4, + 0xF1, 0x10, 0xF1, 0x38, 0xC8, 0xF7, 0x35, 0xD4, 0x70, 0x62, 0x81, 0x1D, + 0xC7, 0xB4, 0xD8, 0xE2, 0x3C, 0x3D, 0xDE, 0xCB, 0x02, 0xA2, 0x6A, 0xCB, + 0xD1, 0x63, 0xE5, 0x89, 0x49, 0x20, 0xC7, 0x1A, 0xB5, 0xE1, 0xBF, 0xF9, + 0xD2, 0x90, 0x04, 0x24, 0x30, 0x91, 0x9A, 0x93, 0x38, 0xA4, 0x0E, 0x48, + 0x61, 0xB4, 0x23, 0x42, 0x22, 0xF0, 0x21, 0xC5, 0x94, 0xB4, 0xC3, 0x9B, + 0xF2, 0x8E, 0x11, 0xE1, 0xD9, 0xAC, 0x11, 0x80, 0x6B, 0xBF, 0xF7, 0x91, + 0x0D, 0x61, 0x4A, 0xE2, 0x53, 0xEA, 0x7D, 0x32, 0x5A, 0x73, 0xC3, 0x6C, + 0x89, 0x42, 0x14, 0x1F, 0x19, 0x49, 0x23, 0x00, 0xB9, 0xCC, 0x50, 0x99, + 0x63, 0x17, 0xB3, 0x46, 0x01, 0x02, 0xB3, 0x78, 0x1F, 0x7C, 0x48, 0x95, + 0x33, 0x55, 0x65, 0x45, 0xA0, 0x54, 0x73, 0xDE, 0x41, 0xB9, 0xF7, 0x77, + 0x15, 0xFD, 0xD3, 0x49, 0xF2, 0xCB, 0x58, 0xDF, 0x0F, 0xC0, 0x18, 0x75, + 0x7C, 0xCA, 0xDC, 0x8E, 0x76, 0xF2, 0xE3, 0x34, 0xE3, 0xA8, 0xAB, 0xE0, + 0xF8, 0x9A, 0xE5, 0xBE, 0xA0, 0x80, 0x51, 0xEF, 0xAC, 0xDE, 0x9F, 0xF5, + 0x66, 0xF7, 0xD5, 0x57, 0x7F, 0xB4, 0xD6, 0x0D, 0x25, 0xD9, 0xC1, 0x87, + 0x9E, 0x93, 0x21, 0xF4, 0x6D, 0xCB, 0xCC, 0xEB, 0xD5, 0x9A, 0x45, 0x62, + 0xE4, 0xDE, 0x7B, 0x25, 0xFF, 0x78, 0x70, 0x79, 0x51, 0x55, 0x75, 0x62, + 0x69, 0x26, 0xD3, 0xF3, 0xF3, 0x6A, 0xB7, 0xDB, 0x5F, 0xDD, 0xAC, 0x5C, + 0xE5, 0xAC, 0xB5, 0xCC, 0x42, 0x84, 0x87, 0xB6, 0x7B, 0xE3, 0xC3, 0x64, + 0xD2, 0x4C, 0x27, 0xF5, 0x6C, 0x36, 0x35, 0xC6, 0xCC, 0x26, 0x8D, 0x35, + 0x64, 0x8D, 0x61, 0xE1, 0xC5, 0x62, 0xC1, 0x22, 0xEB, 0xF5, 0x0E, 0x09, + 0xAD, 0xC1, 0xB3, 0xE5, 0x3C, 0xA5, 0xB4, 0xD9, 0x1E, 0xCE, 0x97, 0xF3, + 0x10, 0x23, 0x33, 0x1B, 0x43, 0xEB, 0xCD, 0xDE, 0xFB, 0x70, 0x7D, 0xBB, + 0x7E, 0xF9, 0xFA, 0xDA, 0x87, 0x70, 0xB6, 0x5C, 0x78, 0x22, 0x57, 0x31, + 0x82, 0x52, 0x5C, 0xA4, 0xD9, 0xC5, 0xCC, 0x59, 0x7B, 0x75, 0x75, 0xD3, + 0x75, 0x7D, 0xDD, 0xD4, 0xC6, 0x28, 0x43, 0x00, 0xC4, 0xC4, 0x9F, 0x7E, + 0xFA, 0x64, 0xB3, 0xD9, 0x9D, 0x9F, 0x2F, 0x37, 0x17, 0xE7, 0x2F, 0x5F, + 0xBE, 0x9D, 0x4C, 0x9B, 0xBF, 0xFA, 0xF5, 0xCF, 0xE7, 0xF3, 0xE9, 0x6A, + 0xBD, 0x5D, 0x6F, 0x76, 0x95, 0xB3, 0x3F, 0x79, 0xFA, 0xB1, 0x75, 0xCE, + 0x1A, 0xF3, 0xFD, 0xB3, 0x97, 0xAB, 0xF5, 0x6E, 0x3A, 0x6D, 0xFE, 0xF8, + 0xED, 0xF3, 0xDD, 0xBE, 0x9D, 0x4E, 0xAA, 0x7F, 0xFB, 0x77, 0x7F, 0x35, + 0x9F, 0x4D, 0xFB, 0xBE, 0xDB, 0x6E, 0xF7, 0x00, 0xF0, 0xE0, 0x62, 0xEE, + 0x43, 0xE2, 0x04, 0x8B, 0xC5, 0x64, 0xBB, 0x3B, 0x4C, 0x27, 0xCD, 0x67, + 0x9F, 0x3C, 0x0A, 0x31, 0x39, 0x6B, 0xBF, 0xFC, 0xFA, 0xFB, 0x67, 0x2F, + 0xDE, 0x3C, 0x7A, 0x70, 0x71, 0xBB, 0xDE, 0xBC, 0x7C, 0xF5, 0x6E, 0xBF, + 0x6F, 0xD5, 0xAB, 0xF0, 0xC9, 0xC7, 0x8F, 0x43, 0x08, 0xBF, 0xFF, 0xC3, + 0x0F, 0x97, 0x17, 0x8B, 0xBF, 0xFD, 0xF5, 0x5F, 0xFC, 0xE1, 0xDB, 0xE7, + 0x6D, 0xE7, 0x27, 0xB5, 0xEB, 0x39, 0x16, 0x3F, 0x94, 0x18, 0x32, 0x28, + 0x18, 0x25, 0xE9, 0x74, 0x52, 0xB1, 0x6B, 0xEE, 0x6F, 0x66, 0x78, 0xCF, + 0xD9, 0x3C, 0x4C, 0xE9, 0x09, 0xDF, 0xC1, 0x78, 0xAE, 0xE5, 0x8E, 0x03, + 0xE8, 0x78, 0xC0, 0xC9, 0x6E, 0x5A, 0x44, 0x08, 0x07, 0xBF, 0x33, 0x22, + 0xE6, 0xD2, 0x31, 0x80, 0xCA, 0xB9, 0xAF, 0xBE, 0x7B, 0xF1, 0xD5, 0xB7, + 0xAF, 0x36, 0xDB, 0xFD, 0xD9, 0x72, 0xF1, 0xF0, 0xE1, 0x79, 0x7B, 0xE8, + 0x8C, 0x31, 0x17, 0x67, 0x8B, 0xF9, 0x74, 0xB2, 0xD9, 0x1D, 0x12, 0xCB, + 0x74, 0x3A, 0xBD, 0x5D, 0x6D, 0x8D, 0x35, 0x75, 0x55, 0x39, 0x6B, 0x26, + 0x93, 0xC5, 0x6A, 0xB5, 0x5D, 0x6F, 0x77, 0xEB, 0xF5, 0xEE, 0xFA, 0x76, + 0x25, 0x00, 0x21, 0xA6, 0xCD, 0x76, 0xF7, 0xF4, 0xD3, 0xC7, 0x7D, 0x1F, + 0xDF, 0xBD, 0xBF, 0x59, 0xAD, 0x36, 0x9F, 0x7E, 0xFC, 0x68, 0x3E, 0x9D, + 0xBE, 0x79, 0x77, 0xDD, 0x76, 0x7E, 0xBB, 0xDD, 0x0F, 0xFE, 0xF5, 0x12, + 0x5D, 0x28, 0x39, 0x70, 0x45, 0x8D, 0x8C, 0x47, 0x63, 0x78, 0x05, 0xC9, + 0x69, 0xBD, 0x43, 0x60, 0xF0, 0x78, 0x00, 0xDC, 0xD5, 0xE0, 0xE3, 0x31, + 0x1C, 0x7E, 0x16, 0x38, 0x2D, 0x2C, 0xBF, 0x63, 0x05, 0x8C, 0x16, 0x17, + 0x8E, 0x0C, 0xC9, 0xE1, 0xEE, 0xA3, 0xB4, 0xDB, 0x3B, 0xEB, 0x0B, 0x00, + 0x98, 0xD9, 0x1E, 0x0F, 0xCD, 0x3D, 0xF2, 0x80, 0x47, 0xF1, 0x57, 0x10, + 0x7D, 0x6E, 0x80, 0xC2, 0x16, 0x42, 0x99, 0x6A, 0xFA, 0x88, 0x92, 0x9C, + 0x21, 0x93, 0x0B, 0x0A, 0x00, 0x50, 0x84, 0xC1, 0x1A, 0xB2, 0x96, 0x9C, + 0xA1, 0xD6, 0xA7, 0x7D, 0xD7, 0x59, 0x42, 0x61, 0xA9, 0x2A, 0x40, 0x94, + 0xDA, 0xD9, 0xCA, 0x19, 0x00, 0x68, 0x3B, 0x0F, 0x80, 0xB3, 0xC6, 0x59, + 0x43, 0x3E, 0xA6, 0x3E, 0xE4, 0x2D, 0x82, 0x01, 0x52, 0xE4, 0x8E, 0x13, + 0x02, 0x34, 0x95, 0x01, 0xC0, 0x98, 0x94, 0x88, 0x03, 0x0C, 0x51, 0x62, + 0x26, 0xB2, 0x31, 0xA6, 0xDD, 0xBE, 0xD7, 0xC8, 0x7A, 0xDF, 0xAB, 0xF1, + 0x61, 0x53, 0x62, 0xE7, 0xAC, 0x31, 0xB9, 0x06, 0x6D, 0x3C, 0x46, 0x63, + 0x5B, 0xFA, 0x64, 0x7A, 0x4E, 0x46, 0x7F, 0x2C, 0x6A, 0xC3, 0xE6, 0x3C, + 0x78, 0x3F, 0x4E, 0x64, 0xF7, 0x64, 0xB2, 0xA1, 0x40, 0xB9, 0xE1, 0xFB, + 0x93, 0x24, 0x1A, 0x11, 0x60, 0x4E, 0x55, 0xE5, 0x36, 0xEB, 0xDD, 0x3F, + 0xFE, 0xD3, 0x97, 0xDB, 0x7D, 0xDF, 0x34, 0xD5, 0xA1, 0xF5, 0x95, 0x33, + 0x37, 0xB7, 0x6B, 0x11, 0x68, 0x26, 0xB5, 0x08, 0x20, 0xD1, 0x6E, 0x77, + 0xD0, 0x50, 0xA0, 0x00, 0x28, 0xB2, 0x30, 0xC6, 0xBC, 0x7F, 0x7F, 0x6D, + 0x8C, 0xF5, 0xBD, 0x27, 0x43, 0x8B, 0xF9, 0xEC, 0xE1, 0xA3, 0x07, 0xC6, + 0xD8, 0x9B, 0xDB, 0xF5, 0x7C, 0x36, 0x3B, 0xB4, 0xDD, 0x6E, 0xB7, 0x9F, + 0x4E, 0x9A, 0xC3, 0xA1, 0xED, 0xBA, 0xDE, 0xFB, 0x69, 0x8C, 0x8C, 0x39, + 0x76, 0x2C, 0xAB, 0xCD, 0x76, 0x36, 0x9D, 0x02, 0xC0, 0x6E, 0xB7, 0x0F, + 0xDE, 0xC7, 0x98, 0x3E, 0x7A, 0xFC, 0x00, 0x44, 0x9A, 0xBA, 0xFA, 0xE1, + 0xC7, 0x37, 0x93, 0xA6, 0x7A, 0xFC, 0xF0, 0x62, 0x36, 0x6D, 0xFE, 0xF8, + 0xDD, 0x8B, 0x67, 0x2F, 0xDE, 0x57, 0xB5, 0xE3, 0x94, 0xBC, 0xF7, 0x64, + 0x0D, 0x11, 0xCD, 0xE7, 0xD3, 0x9B, 0x9B, 0x5B, 0x63, 0x2C, 0x89, 0x34, + 0x93, 0x9A, 0x45, 0xDA, 0xAE, 0x0B, 0x41, 0xBB, 0x34, 0x04, 0x4E, 0xCC, + 0x02, 0xCE, 0xB9, 0x8F, 0x9F, 0x3C, 0x5A, 0xCC, 0x67, 0x8B, 0xF9, 0xCC, + 0x87, 0xF0, 0xD9, 0x67, 0x4F, 0x3E, 0x7F, 0xFA, 0xB1, 0xF7, 0x71, 0xBB, + 0x3F, 0xBC, 0x7D, 0x77, 0xFB, 0xEC, 0xF9, 0x4B, 0x22, 0xFC, 0xD9, 0x17, + 0x4F, 0x3F, 0x7A, 0xFC, 0x70, 0xBF, 0x6F, 0x9F, 0xBF, 0x7C, 0x53, 0x39, + 0xFB, 0xF1, 0x93, 0x87, 0xCF, 0x7E, 0x7C, 0xFD, 0xFB, 0xAF, 0xBF, 0x9B, + 0xCF, 0x66, 0x3F, 0xFF, 0xD9, 0xD3, 0xBE, 0xF7, 0x8F, 0x1F, 0x5D, 0x5E, + 0x5F, 0x5D, 0x13, 0x91, 0x2A, 0xAC, 0xE5, 0x7C, 0x62, 0x8C, 0xB1, 0xD6, + 0x4E, 0x1A, 0x57, 0x57, 0xF6, 0xF9, 0x8B, 0x37, 0x95, 0xB3, 0x17, 0x17, + 0x67, 0xBF, 0xFA, 0xF9, 0xE7, 0x7D, 0x1F, 0xAE, 0x6E, 0xD7, 0xEF, 0xAF, + 0x6F, 0xC9, 0x90, 0x73, 0x56, 0xE9, 0x36, 0xF7, 0x87, 0xB6, 0xEF, 0x7A, + 0x20, 0xB4, 0x86, 0x6E, 0x57, 0xBB, 0xA6, 0xA9, 0xBF, 0xFC, 0xE6, 0xF9, + 0xBF, 0xFF, 0xBB, 0x5F, 0x89, 0xF4, 0xC3, 0xF8, 0x33, 0x88, 0x21, 0x63, + 0x88, 0x62, 0xE2, 0xC4, 0x49, 0x94, 0xE1, 0x5D, 0xEE, 0x38, 0xB9, 0x4E, + 0x22, 0x3F, 0x38, 0xB6, 0x2B, 0x3F, 0x64, 0x43, 0x8D, 0x97, 0xD3, 0x9F, + 0x07, 0x65, 0x83, 0x44, 0x8D, 0x96, 0x6B, 0x96, 0x2A, 0xED, 0x4D, 0x26, + 0x22, 0x88, 0xD4, 0xD4, 0x36, 0xC6, 0xB8, 0xDE, 0x77, 0xEA, 0x71, 0xFE, + 0xFE, 0xD9, 0x6B, 0x16, 0x39, 0x5B, 0xCC, 0x17, 0xF3, 0xE9, 0x76, 0xDF, + 0xFA, 0x90, 0x76, 0xFB, 0xC3, 0xE3, 0x47, 0x0F, 0x6E, 0xD7, 0xDB, 0xBF, + 0xFF, 0x1F, 0xFF, 0x2D, 0x11, 0xFE, 0xF8, 0xF2, 0xDD, 0x9B, 0xB7, 0xD7, + 0x3E, 0x04, 0x04, 0xDA, 0xEC, 0xF6, 0x2C, 0x62, 0x8D, 0xD9, 0xEE, 0xF6, + 0x93, 0xA6, 0xBA, 0xB9, 0x5D, 0xAF, 0x56, 0xBB, 0x8B, 0xCB, 0xB3, 0x18, + 0xE2, 0x6F, 0x7E, 0xF7, 0x4D, 0x88, 0xE9, 0xF2, 0xE2, 0xAC, 0xEF, 0x7B, + 0x98, 0xD7, 0x1A, 0x5B, 0xCB, 0x8F, 0x91, 0x1F, 0x0F, 0x10, 0x47, 0xCB, + 0x1E, 0x60, 0xAC, 0xCE, 0xEE, 0xBE, 0xA0, 0x68, 0x46, 0xD4, 0x07, 0x87, + 0xE2, 0xE4, 0xA3, 0x07, 0xB0, 0x28, 0x0F, 0x61, 0xC9, 0xC4, 0x1D, 0x29, + 0xA0, 0x93, 0x8B, 0x8C, 0x11, 0xAE, 0x42, 0x0D, 0x1E, 0xB5, 0x13, 0x12, + 0xF9, 0xB0, 0xCD, 0x8B, 0x88, 0xE6, 0x3F, 0xFE, 0xA7, 0xFF, 0x0C, 0x00, + 0x48, 0xC4, 0xA0, 0x1C, 0x3E, 0xC0, 0x50, 0x40, 0x17, 0x64, 0xED, 0x3B, + 0x7E, 0x56, 0x63, 0x68, 0xDA, 0xD8, 0xCA, 0x19, 0x10, 0xB1, 0x16, 0x27, + 0x95, 0x45, 0x84, 0xCA, 0x92, 0x3E, 0x92, 0x31, 0xB9, 0x19, 0x7A, 0x5D, + 0x1B, 0x24, 0x0C, 0x31, 0xA9, 0x2F, 0xBC, 0xAA, 0xCC, 0x7C, 0x5A, 0x3D, + 0x38, 0x9B, 0x3D, 0x38, 0x9B, 0x55, 0x95, 0x09, 0x31, 0x85, 0x24, 0xCB, + 0x59, 0xAD, 0x65, 0xCF, 0x02, 0x39, 0xDB, 0x3E, 0x31, 0x87, 0xC4, 0x21, + 0x66, 0x5E, 0x3A, 0xED, 0x23, 0xE9, 0x8C, 0xE9, 0x03, 0xAB, 0xB2, 0xBB, + 0xD9, 0x75, 0xBB, 0xD6, 0x83, 0xC8, 0x7A, 0xD7, 0x1E, 0x5A, 0xDF, 0xFB, + 0x88, 0x84, 0xC5, 0xCC, 0xCC, 0x34, 0xB3, 0x5A, 0x38, 0x45, 0x04, 0x6A, + 0xFB, 0xC4, 0x58, 0x78, 0x87, 0x01, 0xD4, 0xB8, 0x18, 0x20, 0xE7, 0x30, + 0x0A, 0x03, 0x04, 0x2B, 0x6D, 0xAA, 0xF0, 0x3E, 0xF2, 0x3A, 0x11, 0xD6, + 0x61, 0xB7, 0x39, 0xD9, 0xBA, 0xC7, 0xFF, 0x8E, 0xE7, 0x49, 0x44, 0x98, + 0xC5, 0x5A, 0xF3, 0xFA, 0xCD, 0xFB, 0xFF, 0xF3, 0xFF, 0xFA, 0xA7, 0xB7, + 0xEF, 0xD7, 0x49, 0x64, 0xB5, 0xDE, 0xB6, 0x7D, 0xEC, 0x7C, 0x58, 0xDD, + 0x6E, 0xBB, 0xCE, 0x33, 0x40, 0x08, 0xA9, 0x8F, 0xB1, 0xEB, 0xFD, 0xA1, + 0xED, 0x42, 0x48, 0x7D, 0xDF, 0xCF, 0x17, 0x73, 0x2D, 0x6F, 0x44, 0xA4, + 0xBE, 0x0F, 0x20, 0x10, 0x13, 0x6F, 0xF7, 0x87, 0xCD, 0x66, 0x4B, 0x48, + 0x8B, 0xE5, 0x1C, 0x00, 0x67, 0xD3, 0x26, 0x86, 0xE8, 0x63, 0xB8, 0xB8, + 0x38, 0x03, 0x80, 0xE9, 0xA4, 0x21, 0xA2, 0xED, 0x76, 0xB7, 0xDD, 0xEE, + 0x45, 0xA4, 0xEB, 0xFD, 0x6E, 0x7B, 0xD8, 0xEE, 0x76, 0x21, 0x44, 0x67, + 0xAD, 0xB5, 0xD6, 0x10, 0x59, 0x6B, 0xE6, 0xB3, 0x89, 0x08, 0xAC, 0x36, + 0xBB, 0xC3, 0xBE, 0xED, 0xBB, 0xEE, 0xD9, 0x8B, 0xF7, 0x31, 0xC5, 0xC5, + 0x7C, 0x66, 0xAD, 0x61, 0x66, 0x6B, 0xAC, 0xB5, 0xA6, 0x69, 0x2A, 0x63, + 0x0C, 0x12, 0x56, 0xCE, 0x85, 0x98, 0xDA, 0xAE, 0x45, 0xA4, 0xF3, 0x8B, + 0x33, 0x22, 0x9A, 0x4D, 0x27, 0x4F, 0x3E, 0x7A, 0xFC, 0xE4, 0xF1, 0xC3, + 0x47, 0x0F, 0x2F, 0x66, 0xD3, 0x49, 0x4C, 0x1C, 0x7C, 0x00, 0x40, 0x6B, + 0x8C, 0xF7, 0x7E, 0xB3, 0xDD, 0x75, 0xBD, 0x7F, 0x7F, 0x75, 0x1B, 0x63, + 0xFA, 0xC9, 0xE7, 0x9F, 0x58, 0x6B, 0x5E, 0xBE, 0x7E, 0x7B, 0x71, 0xBE, + 0x9C, 0xCD, 0xA6, 0xC6, 0xD0, 0xBB, 0xF7, 0xB7, 0xBF, 0xF9, 0xDD, 0x1F, + 0x45, 0x24, 0xA6, 0x34, 0x9B, 0x4D, 0xEA, 0xCA, 0xB5, 0x6D, 0xDF, 0x34, + 0x6E, 0xB3, 0xD9, 0xE9, 0x32, 0x52, 0x02, 0x0C, 0x63, 0x68, 0x36, 0x9D, + 0x4C, 0x67, 0xD3, 0x10, 0x22, 0x21, 0x7A, 0x1F, 0x1F, 0x3F, 0xBA, 0xFC, + 0xEB, 0xBF, 0xFC, 0x02, 0x01, 0x98, 0x65, 0x3E, 0x9B, 0x5E, 0x9C, 0x2F, + 0x1F, 0x3F, 0xBC, 0x7C, 0xFC, 0xF8, 0x72, 0x7F, 0x68, 0x53, 0xE2, 0x27, + 0x8F, 0x1F, 0xEE, 0x0E, 0x2D, 0x11, 0x59, 0x6B, 0x5F, 0xBD, 0xB9, 0xFA, + 0xF9, 0x4F, 0x3F, 0x1E, 0xD6, 0x52, 0x8E, 0x90, 0x30, 0x83, 0x80, 0x51, + 0x4A, 0xC8, 0xD2, 0x60, 0x05, 0x47, 0xEE, 0xB0, 0xF1, 0x14, 0x53, 0x29, + 0xFC, 0x18, 0x44, 0xE5, 0xE4, 0x98, 0xFB, 0xEB, 0xEA, 0x44, 0x36, 0xC6, + 0xC7, 0xEB, 0x0F, 0xC6, 0x18, 0xF5, 0x46, 0x0F, 0xFE, 0x23, 0x43, 0x59, + 0xE0, 0xEA, 0xAA, 0x22, 0xC2, 0xCD, 0xFE, 0xF0, 0xFB, 0x6F, 0x7E, 0xDC, + 0xEC, 0x7B, 0x6B, 0xED, 0x7A, 0xBB, 0x9B, 0x34, 0xD5, 0x4F, 0x3E, 0x7B, + 0xFC, 0xC5, 0xE7, 0x4F, 0x00, 0xF0, 0xDD, 0xD5, 0x6A, 0xB5, 0xDE, 0x4E, + 0x9A, 0x66, 0xB9, 0x98, 0xDD, 0xAE, 0x36, 0xAE, 0x72, 0x2F, 0x5F, 0xBD, + 0xEB, 0xFA, 0x90, 0x52, 0x7A, 0x7F, 0x75, 0x9B, 0x52, 0x5A, 0xAD, 0x37, + 0xEA, 0xC4, 0x35, 0x06, 0x27, 0x4D, 0xDD, 0x75, 0xBE, 0xAE, 0x2B, 0x6B, + 0xCC, 0x62, 0x31, 0xB3, 0xD6, 0xAE, 0xD7, 0x9B, 0xC4, 0x1C, 0x7C, 0x00, + 0xA4, 0xBF, 0xFE, 0xC5, 0xD3, 0x49, 0x53, 0x0D, 0x06, 0x1A, 0x0E, 0xC8, + 0xF0, 0xF8, 0x76, 0x1F, 0xF6, 0x32, 0x03, 0x00, 0x96, 0xFE, 0xAA, 0xF7, + 0x41, 0xD3, 0x7D, 0x65, 0x2D, 0x22, 0xA5, 0xDC, 0x1F, 0x45, 0xEF, 0x37, + 0xDA, 0x0F, 0x4E, 0x76, 0xFD, 0x93, 0x15, 0x34, 0xE8, 0xAF, 0xE1, 0xDF, + 0x61, 0xA6, 0xEE, 0x4E, 0x0D, 0x29, 0xFF, 0xDC, 0xB0, 0xE4, 0xEE, 0x2F, + 0x5A, 0x01, 0x38, 0x56, 0xCA, 0x8B, 0x08, 0x33, 0x20, 0xB0, 0x76, 0xC5, + 0x54, 0xFD, 0x4D, 0x84, 0x8D, 0xAB, 0x94, 0x25, 0x71, 0xDE, 0x54, 0xCC, + 0x72, 0x80, 0x88, 0x00, 0x4A, 0x78, 0xAF, 0xB5, 0x93, 0x8F, 0x2F, 0xE7, + 0x67, 0x8B, 0x89, 0x35, 0x34, 0x9D, 0xD4, 0xCC, 0x1C, 0x77, 0x89, 0x10, + 0xE7, 0x8D, 0xF3, 0x31, 0x1D, 0xBA, 0xA0, 0x17, 0x27, 0xC4, 0x10, 0x25, + 0x84, 0x52, 0xB1, 0x20, 0xA8, 0xE9, 0x01, 0xCE, 0x9A, 0xC8, 0x1C, 0x12, + 0x13, 0x41, 0x4A, 0x82, 0x80, 0x3E, 0xA6, 0xCD, 0xA1, 0x5F, 0xCE, 0xEA, + 0xC2, 0x7F, 0xC0, 0x31, 0x61, 0x4C, 0x8C, 0x88, 0x86, 0x08, 0x10, 0x4C, + 0xA2, 0xCA, 0x82, 0x31, 0x0E, 0x11, 0x75, 0x4D, 0x7A, 0x1F, 0x9D, 0xB3, + 0xCC, 0xAC, 0x79, 0x6D, 0xD6, 0x82, 0x29, 0xE4, 0xCD, 0x63, 0x68, 0x06, + 0xF7, 0x0C, 0x84, 0xFB, 0x9F, 0x0F, 0x5A, 0x22, 0x27, 0x26, 0xC6, 0xD8, + 0x68, 0x1D, 0x6F, 0x23, 0xC6, 0x50, 0x4A, 0xFC, 0xCF, 0xFF, 0xFA, 0x87, + 0xAB, 0xDB, 0xAD, 0xB5, 0x86, 0x53, 0x02, 0x81, 0xAA, 0x76, 0xEB, 0xCD, + 0xB6, 0xF5, 0x3D, 0x01, 0xFA, 0x55, 0x34, 0xD6, 0xA4, 0x98, 0x2E, 0x2E, + 0xCF, 0x01, 0x70, 0xBD, 0xDE, 0x32, 0x4B, 0x08, 0x71, 0xB9, 0x5C, 0x10, + 0xD1, 0x76, 0xBB, 0xAF, 0x9B, 0xFA, 0xE2, 0xE2, 0x6C, 0x75, 0xBB, 0xDE, + 0x1F, 0x0E, 0x22, 0xE0, 0x43, 0x08, 0x3E, 0x3A, 0xE7, 0x98, 0xF9, 0x2F, + 0xBE, 0xF8, 0xFC, 0xC5, 0xCB, 0xD7, 0x22, 0xFC, 0x93, 0xCF, 0x3F, 0xF5, + 0x3E, 0xBC, 0x7A, 0xFD, 0x36, 0x84, 0xD0, 0xF7, 0xC1, 0x7B, 0xDF, 0x75, + 0xDD, 0x6C, 0x36, 0x5B, 0x2E, 0x17, 0x8B, 0xC5, 0x8C, 0x53, 0x8A, 0x31, + 0x2E, 0x97, 0xD3, 0xB3, 0xE5, 0x9C, 0x0C, 0xF5, 0xBD, 0x5F, 0x4C, 0x1B, + 0x4E, 0xE9, 0xD9, 0xB3, 0x57, 0x3E, 0x70, 0x33, 0x99, 0x80, 0x88, 0x73, + 0x76, 0x31, 0x9F, 0x01, 0x40, 0x33, 0xA9, 0x8D, 0x31, 0x44, 0x33, 0x24, + 0xDC, 0x6C, 0x76, 0xC6, 0x98, 0x87, 0x0F, 0x1E, 0x10, 0xA1, 0x0F, 0xF1, + 0xE9, 0x67, 0x9F, 0x20, 0xA2, 0x32, 0xDE, 0x68, 0xF2, 0xC4, 0xD9, 0x7C, + 0x7A, 0xE0, 0xB4, 0x6F, 0xBB, 0xDD, 0x6E, 0xAF, 0x11, 0xCF, 0x94, 0xD2, + 0xE1, 0xD0, 0x8A, 0xC8, 0xE1, 0xD0, 0x7D, 0xF5, 0xE3, 0xAB, 0xCB, 0x8B, + 0xB3, 0xDE, 0xFB, 0xBE, 0xF3, 0xB7, 0xAB, 0xCD, 0x8F, 0x2F, 0xDE, 0x5C, + 0xDF, 0xDC, 0x7E, 0xF4, 0xD1, 0x03, 0x22, 0x0C, 0xDE, 0x77, 0x5D, 0xC7, + 0x2C, 0x17, 0xE7, 0x8F, 0x66, 0xB3, 0xE9, 0xED, 0x6A, 0x6D, 0xAD, 0xFD, + 0x7F, 0x19, 0x7B, 0xAF, 0x26, 0xC9, 0xB6, 0xEC, 0x3C, 0x6C, 0x6D, 0x7F, + 0x7C, 0x9A, 0x72, 0x5D, 0xD5, 0xF6, 0xF6, 0xBD, 0x77, 0xEE, 0x38, 0x80, + 0x00, 0x83, 0x08, 0x90, 0x7C, 0xA1, 0x4C, 0x04, 0x1F, 0x18, 0xC1, 0x9F, + 0x20, 0x85, 0x14, 0x18, 0x90, 0xA0, 0x02, 0x23, 0xFE, 0x30, 0xBD, 0xEA, + 0x41, 0x0F, 0x32, 0x94, 0x28, 0x20, 0x30, 0x00, 0x89, 0xE1, 0xCC, 0x9D, + 0xB9, 0xB6, 0x7D, 0x77, 0x55, 0x97, 0x4B, 0x7B, 0xDC, 0xF6, 0x5B, 0x0F, + 0xFB, 0x64, 0x56, 0x76, 0x55, 0xCF, 0x08, 0x27, 0x3A, 0xAA, 0x33, 0x4F, + 0x9E, 0x34, 0x67, 0xEF, 0xBD, 0xBE, 0xBD, 0xEC, 0xB7, 0x00, 0x40, 0x4A, + 0xCD, 0x19, 0x1B, 0xEC, 0x6E, 0x63, 0xB5, 0xD2, 0x5C, 0xF0, 0xD7, 0x6F, + 0xDE, 0x3F, 0x7E, 0x74, 0xFC, 0xD9, 0x27, 0xF7, 0x9F, 0x3E, 0x3E, 0x89, + 0x6D, 0x05, 0xBA, 0x4E, 0x5E, 0xCE, 0x56, 0xEB, 0xBA, 0x3D, 0x3A, 0xDC, + 0xF3, 0xDE, 0x4B, 0xA9, 0x5F, 0xBD, 0x7D, 0xEF, 0xAC, 0x1F, 0x57, 0xF9, + 0x37, 0xCF, 0xDE, 0xFD, 0xE8, 0xB3, 0x87, 0x76, 0x43, 0x5D, 0xB7, 0x11, + 0x09, 0x80, 0x98, 0x45, 0xB1, 0x21, 0x4A, 0x8A, 0x8B, 0xFF, 0xEE, 0xD4, + 0xEF, 0xE2, 0xD7, 0x2D, 0x71, 0xFD, 0xA8, 0x62, 0x7E, 0xF7, 0xD8, 0x4A, + 0xE3, 0xF6, 0xE9, 0xF6, 0xD3, 0x06, 0xB1, 0x44, 0x28, 0x5A, 0x33, 0x04, + 0xE3, 0xB7, 0x17, 0xD7, 0xEF, 0xCE, 0x17, 0x4D, 0xA7, 0xCE, 0xAE, 0xD7, + 0x75, 0xD3, 0x1A, 0x6D, 0xB4, 0x31, 0x0B, 0x6B, 0xBD, 0xF7, 0x6D, 0x27, + 0xFB, 0x5E, 0x9D, 0x5D, 0x5C, 0x53, 0x42, 0x8A, 0x22, 0x0B, 0x21, 0x3C, + 0x7A, 0x70, 0x7C, 0x71, 0xB5, 0x58, 0x2E, 0xD7, 0xEB, 0x75, 0x43, 0x28, + 0x0E, 0x3E, 0xD4, 0x75, 0x83, 0x09, 0xF1, 0x21, 0x30, 0x46, 0xA7, 0xE3, + 0x51, 0x51, 0x64, 0xA3, 0x32, 0x6F, 0xBB, 0xBE, 0xEB, 0xD4, 0xE9, 0xD9, + 0x85, 0xD6, 0x9A, 0x10, 0x6C, 0x8C, 0x25, 0x84, 0x2C, 0x56, 0x75, 0x27, + 0xD5, 0xA8, 0xCA, 0x62, 0x32, 0xFC, 0xAD, 0x9F, 0xBC, 0x5D, 0xD7, 0xF0, + 0x21, 0x3A, 0xEF, 0xDE, 0x14, 0x7C, 0x47, 0x02, 0x5C, 0x71, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xB8, 0x91, 0xDF, 0xBA, 0x0C, 0xED, + 0x18, 0x95, 0x91, 0x90, 0x27, 0xC4, 0xDE, 0x62, 0x3B, 0x12, 0xB1, 0x1D, + 0xCF, 0xDD, 0x6D, 0x66, 0x77, 0xAC, 0x6E, 0x7D, 0xDA, 0xC6, 0x85, 0x37, + 0xE4, 0x09, 0xDF, 0xDA, 0x78, 0x10, 0x02, 0xBA, 0xF9, 0xCA, 0xCD, 0x6F, + 0xBF, 0x71, 0xA3, 0x85, 0xB0, 0x69, 0xD9, 0xBB, 0x95, 0x54, 0x42, 0xD0, + 0xA4, 0x4A, 0x9C, 0x0B, 0xBD, 0x35, 0x00, 0x90, 0x0A, 0x46, 0x10, 0x1E, + 0xF2, 0xAA, 0x52, 0x81, 0x00, 0x4C, 0xF0, 0xCE, 0x7B, 0x04, 0x88, 0x62, + 0x24, 0x18, 0x99, 0x56, 0x59, 0x9E, 0xF2, 0x2A, 0x4F, 0x00, 0xA1, 0xC8, + 0x27, 0xB0, 0xAE, 0xFB, 0x75, 0x2B, 0xAD, 0xF3, 0xAD, 0xD4, 0x6D, 0x6F, + 0x42, 0x00, 0x42, 0x86, 0xF2, 0x77, 0x40, 0xC1, 0x43, 0x08, 0x08, 0x8E, + 0xC6, 0x99, 0xF7, 0xA1, 0x91, 0x46, 0x5B, 0xAF, 0xB4, 0x63, 0x0C, 0xA5, + 0x82, 0x32, 0x8C, 0x32, 0x41, 0xED, 0x26, 0x1E, 0xDA, 0x6B, 0xAB, 0xB5, + 0x75, 0x01, 0x08, 0x42, 0x84, 0x00, 0x0A, 0x50, 0x64, 0x62, 0x5A, 0xC5, + 0x18, 0xF3, 0x10, 0xED, 0x02, 0xA0, 0x00, 0x01, 0x63, 0x9C, 0x65, 0x62, + 0x67, 0x38, 0x86, 0xF0, 0xE2, 0x2D, 0xF8, 0x0F, 0x1F, 0x5A, 0xF5, 0xB7, + 0x56, 0xDE, 0x76, 0x0E, 0x6E, 0x3D, 0xB8, 0xF5, 0xD2, 0x2D, 0x25, 0x79, + 0xF7, 0x71, 0x08, 0x61, 0xB5, 0x6E, 0x5E, 0xBD, 0x7E, 0x3F, 0x5F, 0xD4, + 0x82, 0x73, 0xAD, 0x2D, 0x26, 0x38, 0xCF, 0xB3, 0xA6, 0xE9, 0x8C, 0x36, + 0x94, 0x52, 0xC6, 0x18, 0xE3, 0x2C, 0x11, 0x42, 0x4A, 0x75, 0x3D, 0x5B, + 0x96, 0x45, 0x9E, 0x97, 0x45, 0xFC, 0xFA, 0x75, 0xDD, 0x08, 0xC1, 0x08, + 0x25, 0x52, 0xAA, 0xC5, 0x62, 0xC5, 0x19, 0x2B, 0xCB, 0x82, 0x73, 0x96, + 0xA6, 0xA9, 0xB1, 0xB6, 0xED, 0xBA, 0xAE, 0x93, 0xE7, 0x17, 0xB3, 0x34, + 0x4D, 0xE6, 0x57, 0x8B, 0xE0, 0x91, 0x0F, 0xDE, 0x1A, 0xAB, 0xB5, 0x49, + 0x12, 0x4E, 0x09, 0xA9, 0xCA, 0x82, 0x31, 0xFA, 0xF8, 0xD1, 0xFD, 0x24, + 0x11, 0x4A, 0x29, 0x82, 0x21, 0x15, 0x1C, 0x63, 0x24, 0x38, 0x13, 0x9C, + 0x81, 0xF7, 0xD6, 0xB8, 0x80, 0x30, 0x26, 0xC0, 0x28, 0x15, 0x09, 0x4F, + 0xD3, 0xC4, 0x3A, 0xCF, 0x19, 0xA3, 0x94, 0x2C, 0x16, 0x2B, 0x6B, 0x5C, + 0x51, 0xE6, 0xE3, 0x71, 0x15, 0x42, 0xDC, 0x00, 0x80, 0x73, 0x8E, 0x10, + 0x38, 0xEF, 0x00, 0x80, 0x10, 0x22, 0x95, 0x0E, 0xC1, 0xBF, 0x7E, 0x7B, + 0x96, 0x65, 0xD9, 0xC5, 0xE5, 0xB5, 0xF7, 0xE1, 0x60, 0x7F, 0x9C, 0xF2, + 0x64, 0xBE, 0xA8, 0xF7, 0xF7, 0xC6, 0x3E, 0xF8, 0xF9, 0x7C, 0x91, 0x65, + 0xC9, 0xE3, 0xC7, 0x27, 0xD7, 0xF3, 0xF5, 0xD9, 0xF9, 0x55, 0x08, 0xC1, + 0x3A, 0xBB, 0x37, 0x29, 0x12, 0x86, 0x31, 0x21, 0x04, 0x41, 0xDB, 0xF6, + 0x3E, 0xC0, 0xE5, 0xD5, 0x9C, 0x10, 0x62, 0xAC, 0x23, 0x14, 0xC6, 0x55, + 0xD9, 0x4B, 0x69, 0xBD, 0x47, 0x21, 0xF6, 0x04, 0x70, 0x8B, 0xE5, 0xBA, + 0xCC, 0x73, 0x42, 0x68, 0xD7, 0xCB, 0x98, 0xA7, 0x92, 0xA7, 0x89, 0xD6, + 0x66, 0x32, 0x2E, 0xB5, 0xB1, 0x52, 0x8D, 0x18, 0x65, 0x17, 0x17, 0x33, + 0x6D, 0x0C, 0x25, 0x78, 0xB5, 0x6E, 0x08, 0xC1, 0xCF, 0x5E, 0x9D, 0x3D, + 0x79, 0x78, 0x84, 0x37, 0x75, 0xD2, 0x00, 0x40, 0x10, 0xF6, 0x9B, 0x0C, + 0x2A, 0x02, 0x18, 0x10, 0xF8, 0x9B, 0xE0, 0x0F, 0xC0, 0xC6, 0x73, 0xBA, + 0xBB, 0xF9, 0xEF, 0x42, 0xD8, 0xAD, 0x03, 0xEF, 0x90, 0x9A, 0xDE, 0x35, + 0xB2, 0xEE, 0x5E, 0xBF, 0x11, 0x54, 0x14, 0x02, 0x78, 0xE7, 0x11, 0xC1, + 0x10, 0xC0, 0x7B, 0x9F, 0x26, 0xE2, 0xF2, 0x7A, 0xF1, 0xD7, 0xFF, 0xF9, + 0x5B, 0x1F, 0x50, 0xDD, 0xB4, 0xDA, 0x58, 0xE7, 0x3C, 0x26, 0x84, 0x86, + 0xD0, 0x4B, 0x79, 0xA5, 0x75, 0x4C, 0x37, 0x11, 0x82, 0xC7, 0x44, 0x42, + 0xA5, 0xCC, 0xD1, 0xD1, 0x74, 0x54, 0xE5, 0xF3, 0xC5, 0x0A, 0xA3, 0x21, + 0xAF, 0x15, 0x63, 0xE2, 0x8C, 0xA2, 0x94, 0x8C, 0xCA, 0x02, 0x20, 0xB4, + 0x5D, 0x8F, 0x11, 0x7A, 0x70, 0x72, 0xF8, 0xF6, 0xDD, 0xF9, 0xC2, 0x3A, + 0xA5, 0x0D, 0xA3, 0x2C, 0xC6, 0xDC, 0xB5, 0xB5, 0x5F, 0x3F, 0x3F, 0xFB, + 0xE4, 0xC1, 0xE1, 0x96, 0xA6, 0x14, 0x06, 0x6F, 0xD2, 0x60, 0xF0, 0xC6, + 0x5B, 0xF9, 0x28, 0x88, 0xC3, 0x87, 0x74, 0x3D, 0xBB, 0x42, 0x74, 0x6B, + 0xB5, 0xC7, 0x21, 0x77, 0xE1, 0x03, 0xBD, 0xF5, 0xD6, 0x96, 0xBF, 0xF3, + 0x46, 0xB4, 0xAB, 0x1A, 0xC3, 0x26, 0xF8, 0xB0, 0xA3, 0x25, 0x84, 0xCD, + 0x99, 0x81, 0xBA, 0x79, 0x13, 0x27, 0x41, 0x21, 0x00, 0xC6, 0x70, 0xD3, + 0xD7, 0x72, 0x4B, 0x91, 0x38, 0x38, 0xFC, 0x37, 0x7D, 0x64, 0xD1, 0xC6, + 0x18, 0x4B, 0x04, 0x4D, 0x39, 0x4D, 0x39, 0x0D, 0x01, 0x08, 0x46, 0x6D, + 0x6F, 0x94, 0xB6, 0xBD, 0x0F, 0x9C, 0xE1, 0x54, 0x30, 0xEB, 0x03, 0x67, + 0x84, 0x01, 0x2E, 0x53, 0x51, 0x65, 0x42, 0xF0, 0xC1, 0x03, 0x4D, 0x09, + 0x56, 0xC6, 0x12, 0x8C, 0xB5, 0xB1, 0x8B, 0xBA, 0x6D, 0x3A, 0xD5, 0x29, + 0xDB, 0xF4, 0x26, 0xA6, 0x9E, 0x31, 0x82, 0x01, 0x40, 0x59, 0x87, 0x00, + 0x18, 0x25, 0xD3, 0x32, 0x49, 0x39, 0xCB, 0x12, 0x16, 0xF7, 0x8A, 0xAB, + 0x55, 0xC7, 0x28, 0x19, 0x67, 0x3C, 0xFE, 0x74, 0x42, 0xB0, 0x71, 0xD6, + 0xFB, 0xE0, 0x42, 0x50, 0xC6, 0x31, 0x8A, 0x31, 0x02, 0x1F, 0x3C, 0x09, + 0x84, 0x31, 0x3C, 0x2A, 0xD2, 0x2C, 0xE5, 0x9C, 0x53, 0x6B, 0x7D, 0x74, + 0x9B, 0x29, 0x6D, 0x19, 0xC5, 0x49, 0x22, 0x18, 0xA3, 0xB7, 0x76, 0xD1, + 0x5B, 0x1B, 0xEF, 0xEF, 0x9A, 0x92, 0xBB, 0x0B, 0x31, 0xEC, 0x38, 0x53, + 0x76, 0xA7, 0x6D, 0x77, 0x41, 0x87, 0x5B, 0x71, 0x03, 0x44, 0x18, 0xA7, + 0x6F, 0xDE, 0x9C, 0xFE, 0xCD, 0x2F, 0xBE, 0xC4, 0x94, 0x22, 0x40, 0x46, + 0x29, 0xEF, 0xBD, 0x31, 0xA1, 0xEF, 0x7A, 0x40, 0xA8, 0x1A, 0x95, 0x59, + 0x96, 0x85, 0x10, 0xB4, 0x36, 0xCE, 0xB9, 0xAA, 0x2A, 0x7B, 0xA9, 0xCE, + 0x2F, 0xAE, 0x1F, 0x3E, 0x3C, 0xB6, 0xD6, 0x59, 0x6B, 0xEB, 0xBA, 0x59, + 0xAF, 0xDD, 0xA8, 0xAA, 0x9C, 0x0B, 0xAB, 0x55, 0x4D, 0x29, 0x39, 0x38, + 0x98, 0xEE, 0xEF, 0x4D, 0xA3, 0x4A, 0x25, 0xA5, 0xF4, 0xDE, 0x59, 0x6B, + 0xA5, 0x94, 0xD6, 0xBA, 0x8B, 0xCB, 0xAB, 0xD1, 0xA8, 0xAC, 0xAA, 0x22, + 0x4D, 0x93, 0xA6, 0xED, 0x94, 0x54, 0x87, 0x87, 0xFB, 0x7B, 0xD3, 0x11, + 0x42, 0x08, 0x20, 0x8C, 0x47, 0x05, 0x40, 0xE0, 0x04, 0x31, 0xC6, 0x8C, + 0xB5, 0x10, 0x7C, 0x70, 0x8E, 0xA7, 0x82, 0xA5, 0x02, 0x00, 0x10, 0xC2, + 0x55, 0x59, 0x10, 0x8C, 0x84, 0xE0, 0x6D, 0x27, 0x9B, 0xB6, 0xA3, 0x8C, + 0x95, 0x55, 0xE5, 0xBD, 0x0F, 0xCE, 0xA1, 0x00, 0x98, 0x60, 0xB2, 0xD1, + 0x37, 0x13, 0xC1, 0x29, 0x25, 0x52, 0x2A, 0xC1, 0x99, 0x36, 0xA6, 0xED, + 0xA4, 0x48, 0x92, 0xFB, 0x27, 0x87, 0x89, 0x10, 0x65, 0x99, 0x7B, 0xEF, + 0x47, 0x55, 0x49, 0x09, 0xD1, 0xD6, 0x9C, 0x9E, 0x9E, 0xBF, 0x7C, 0xF3, + 0x1E, 0x61, 0xB2, 0xBF, 0x37, 0x7E, 0xF8, 0xE0, 0x9E, 0xF7, 0xFE, 0xED, + 0xDB, 0xB3, 0xBF, 0xFF, 0xE5, 0x97, 0x89, 0x60, 0x79, 0x5E, 0x30, 0xCE, + 0xAF, 0xAF, 0x67, 0x08, 0x41, 0x91, 0xA5, 0x71, 0xED, 0x1A, 0x63, 0x8D, + 0xB1, 0x91, 0x13, 0x2D, 0x8E, 0xA7, 0x52, 0x1A, 0x13, 0xD2, 0xF7, 0x92, + 0x71, 0xB6, 0x5C, 0x36, 0x55, 0x99, 0x51, 0x4A, 0x22, 0xBB, 0xFF, 0xF5, + 0x6C, 0xC1, 0x28, 0xFE, 0xEC, 0xF1, 0xFD, 0x8B, 0xEB, 0x45, 0xDB, 0xF7, + 0x8C, 0x52, 0x8C, 0x71, 0x96, 0xA5, 0xC6, 0x3A, 0xA3, 0xED, 0xF9, 0xE5, + 0xFC, 0xC9, 0xC3, 0x23, 0xA9, 0xCD, 0xD6, 0x41, 0x33, 0xAC, 0xF4, 0xCD, + 0xC6, 0xB6, 0x2B, 0x80, 0xF0, 0xA1, 0x23, 0x15, 0xA1, 0x4D, 0x93, 0xE1, + 0x0F, 0xA5, 0xF4, 0xEE, 0xB2, 0x81, 0x8F, 0xED, 0x6D, 0xBB, 0x26, 0xD2, + 0xEE, 0x99, 0x28, 0x5E, 0x51, 0x1B, 0x74, 0xE0, 0x19, 0x61, 0xBD, 0xD2, + 0x7F, 0xF3, 0xAB, 0xEF, 0x2F, 0xAE, 0x96, 0x94, 0x92, 0x07, 0x27, 0x87, + 0x57, 0xB3, 0x15, 0x63, 0xDC, 0x3B, 0xD7, 0x4B, 0x8D, 0x10, 0x0A, 0xDE, + 0x2B, 0x6D, 0xA2, 0xFE, 0x3B, 0x9D, 0x8C, 0xF3, 0x2C, 0x3B, 0x3C, 0x18, + 0x07, 0x40, 0xDF, 0x3D, 0x7F, 0xA3, 0x95, 0xA1, 0x94, 0x19, 0x6B, 0x07, + 0x36, 0x84, 0x00, 0x08, 0x90, 0xF7, 0xBE, 0xEF, 0x25, 0xA5, 0xC4, 0x68, + 0xB3, 0x37, 0xA9, 0x18, 0x67, 0xF7, 0xEE, 0xED, 0x4F, 0xC7, 0x55, 0xDF, + 0xCB, 0x97, 0xAF, 0xCF, 0x00, 0xE0, 0x70, 0x7F, 0xF2, 0xF2, 0xF4, 0xFA, + 0xAB, 0x17, 0x67, 0x9F, 0x3E, 0x3C, 0x34, 0x66, 0xC0, 0xB2, 0x8D, 0xE1, + 0xF5, 0x81, 0x82, 0xF5, 0x51, 0xEB, 0x64, 0x6B, 0xCA, 0xDC, 0xD5, 0x61, + 0x77, 0x9F, 0xFA, 0x10, 0x6E, 0x28, 0xAF, 0x3E, 0x1C, 0x93, 0xF8, 0x20, + 0x6E, 0x8A, 0xDB, 0x3C, 0xE0, 0x08, 0x4C, 0x70, 0xE3, 0xCB, 0x0F, 0x21, + 0xC0, 0x8E, 0xBD, 0x18, 0x75, 0xAA, 0x61, 0x36, 0xD0, 0x8D, 0x37, 0x20, + 0x44, 0x70, 0xA0, 0x37, 0xB3, 0xBB, 0x75, 0x68, 0xDF, 0xDC, 0xD5, 0x26, + 0xF5, 0x23, 0x76, 0x8B, 0x09, 0x60, 0xAC, 0x6B, 0x7B, 0x40, 0x18, 0x79, + 0xE7, 0xB3, 0x84, 0xF9, 0xE0, 0x8D, 0xF5, 0x04, 0x63, 0x46, 0x49, 0x96, + 0x70, 0x84, 0x20, 0xF8, 0x30, 0xA6, 0xC4, 0x0E, 0x81, 0x6D, 0x30, 0xD6, + 0x46, 0x0A, 0x40, 0xEF, 0x43, 0xDD, 0xA9, 0xBA, 0xD7, 0x9C, 0x12, 0x65, + 0x5D, 0xAF, 0x87, 0x7E, 0xBD, 0xC6, 0xFA, 0xA1, 0xB3, 0xD9, 0x50, 0x8B, + 0x84, 0x94, 0xB1, 0xCB, 0x46, 0x22, 0x14, 0xAB, 0x98, 0x91, 0x87, 0xD0, + 0x2A, 0x33, 0xCE, 0x93, 0x54, 0xD0, 0x5E, 0x19, 0xC1, 0xA8, 0x60, 0x60, + 0xAC, 0x73, 0xDE, 0x67, 0x09, 0x47, 0x00, 0x08, 0x41, 0xC2, 0x69, 0xC2, + 0x99, 0xE0, 0xD4, 0x79, 0x6F, 0x8C, 0xE5, 0x9C, 0x71, 0x4E, 0x63, 0x87, + 0x6D, 0x21, 0x18, 0x63, 0x6C, 0xBB, 0xA4, 0x76, 0xD1, 0xE7, 0x96, 0x9E, + 0x0F, 0x77, 0x8E, 0x5D, 0x15, 0xFA, 0xEE, 0xB1, 0xB5, 0x1F, 0x77, 0xDF, + 0xFB, 0xA1, 0xF3, 0x12, 0x21, 0x04, 0xC6, 0xD8, 0xD5, 0xBA, 0xA3, 0x94, + 0x3C, 0x7B, 0xFE, 0x4E, 0x1B, 0xC7, 0x00, 0x5B, 0xEB, 0x82, 0x77, 0x21, + 0x0C, 0x71, 0x52, 0x2E, 0x04, 0x00, 0xEA, 0x7B, 0xC9, 0x18, 0x65, 0x8C, + 0xE5, 0x79, 0x1A, 0x3C, 0x9C, 0x1C, 0x1F, 0x69, 0xE3, 0xBA, 0x5E, 0xA6, + 0x49, 0xA2, 0x95, 0xA6, 0x94, 0x16, 0x79, 0xEE, 0x83, 0x4F, 0x53, 0x51, + 0x96, 0x79, 0x5D, 0xB7, 0x4A, 0xD9, 0xB6, 0x93, 0xCE, 0x59, 0xA5, 0x34, + 0x82, 0x58, 0x24, 0xE4, 0xBD, 0xF7, 0x94, 0xD2, 0x34, 0x4D, 0x93, 0x24, + 0x41, 0x98, 0x74, 0x9D, 0x7C, 0xFF, 0xFE, 0xD2, 0x39, 0xA7, 0x8D, 0x05, + 0x80, 0xFD, 0xBD, 0x71, 0x9A, 0xF0, 0xE0, 0x43, 0x92, 0x88, 0x3C, 0x13, + 0xEB, 0xE5, 0x8A, 0x11, 0x98, 0x94, 0xE2, 0xF9, 0xBB, 0x59, 0x02, 0x28, + 0xCF, 0x12, 0x4A, 0x69, 0xA4, 0x39, 0xC9, 0xF3, 0x0C, 0xBC, 0xFB, 0xFE, + 0xC5, 0xDB, 0xA2, 0x28, 0xCA, 0x3C, 0xD3, 0xDA, 0x60, 0x8C, 0x94, 0xD4, + 0xD1, 0xFB, 0x1E, 0xEF, 0x8E, 0x52, 0xDA, 0x75, 0xDD, 0xFB, 0xF7, 0x57, + 0x5C, 0xF0, 0x2C, 0x4B, 0x7D, 0x08, 0x3F, 0xFE, 0xD1, 0x67, 0x9C, 0x51, + 0xCE, 0x99, 0x31, 0xC6, 0xFB, 0x40, 0x30, 0xA6, 0x84, 0x78, 0xEF, 0x10, + 0x84, 0x17, 0xAF, 0xCE, 0xA4, 0x76, 0x08, 0x41, 0x51, 0xE6, 0x5F, 0x7D, + 0xF5, 0xBD, 0x52, 0xFA, 0xDE, 0xD1, 0xC1, 0xF1, 0xC9, 0xB1, 0x35, 0x66, + 0xB5, 0x5A, 0x27, 0x69, 0xCA, 0x39, 0x77, 0xCE, 0xD5, 0x75, 0xA3, 0x94, + 0xA2, 0x84, 0x68, 0xEB, 0xBC, 0x0F, 0x22, 0xE1, 0x21, 0x04, 0xA5, 0x14, + 0xE3, 0x0C, 0x21, 0x34, 0xAA, 0x8A, 0xD5, 0x62, 0x3D, 0x9B, 0xCD, 0x63, + 0xA1, 0x55, 0xDF, 0x4B, 0xEF, 0xC3, 0x93, 0x47, 0x27, 0x94, 0xD0, 0xA6, + 0x6D, 0x93, 0x44, 0x3C, 0x7E, 0x70, 0xD8, 0x75, 0xFD, 0xCB, 0x37, 0xE7, + 0x52, 0x2A, 0xA5, 0x94, 0x0F, 0xE1, 0x12, 0xC3, 0xEB, 0x77, 0x97, 0x0F, + 0x4F, 0x0E, 0xB6, 0xBC, 0x3E, 0x3B, 0x14, 0xAF, 0xBB, 0xD2, 0x0B, 0x9B, + 0x33, 0x5B, 0x2D, 0x23, 0x0C, 0x14, 0x78, 0xDB, 0x6C, 0xFB, 0x8F, 0xC5, + 0x28, 0x3F, 0x2A, 0xA2, 0xB7, 0x24, 0xFC, 0xAE, 0x5D, 0xB9, 0x2B, 0x61, + 0x21, 0x04, 0x42, 0xF0, 0xD5, 0x6C, 0xB5, 0x58, 0xF7, 0xDE, 0xBB, 0x4F, + 0x9F, 0x3C, 0xCA, 0xB3, 0x34, 0x9A, 0x2F, 0x6D, 0x2F, 0x39, 0xE7, 0x52, + 0xF6, 0x4A, 0xFB, 0xA8, 0xFA, 0xC5, 0x72, 0xFD, 0xB6, 0x6D, 0xC5, 0xC9, + 0xC1, 0xD5, 0x7C, 0x15, 0x53, 0xEA, 0xBC, 0x0F, 0xD8, 0xE3, 0x48, 0x25, + 0xCF, 0x28, 0x01, 0x8C, 0xD7, 0x75, 0x9B, 0x25, 0x02, 0x63, 0xDC, 0xF5, + 0x72, 0x55, 0x37, 0xC6, 0x58, 0xC1, 0x39, 0x40, 0x28, 0xF2, 0x6C, 0x3A, + 0xA9, 0xAA, 0xB2, 0x90, 0x52, 0xCE, 0xE6, 0xCB, 0xBF, 0xFE, 0x2F, 0xCF, + 0xAA, 0x3C, 0x39, 0x9C, 0x56, 0x77, 0x68, 0x17, 0x3F, 0x00, 0xA9, 0xBB, + 0xD2, 0x71, 0x6B, 0xE7, 0xDE, 0x8E, 0xC6, 0xEE, 0xFD, 0xEE, 0xA8, 0x70, + 0xE8, 0x77, 0x8D, 0x06, 0x25, 0x68, 0x5B, 0xFC, 0xEC, 0x42, 0x88, 0x08, + 0x10, 0x36, 0x76, 0x93, 0xF3, 0x37, 0xD9, 0x7F, 0xDB, 0x4C, 0xB4, 0x48, + 0x3E, 0xBA, 0xD5, 0xD0, 0xA2, 0xDE, 0x1C, 0x67, 0x86, 0xFC, 0xF7, 0x3F, + 0xFB, 0x4B, 0xB4, 0x63, 0xCC, 0xDF, 0x1C, 0x9B, 0x2F, 0x8C, 0xDF, 0xEA, + 0x43, 0x88, 0x15, 0x48, 0xC6, 0x07, 0x63, 0x1C, 0x42, 0x80, 0x30, 0x12, + 0x8C, 0xE6, 0x09, 0x4B, 0x13, 0x5E, 0x15, 0x69, 0x22, 0x98, 0xB5, 0x8E, + 0x90, 0xD8, 0x99, 0xD5, 0x39, 0x17, 0x22, 0x2B, 0x5E, 0xDB, 0x9B, 0x75, + 0x2B, 0x67, 0xEB, 0xBE, 0x95, 0xD6, 0x07, 0x68, 0xA5, 0xD1, 0x26, 0xF6, + 0xD8, 0x06, 0xB4, 0xA1, 0xF3, 0x8A, 0xBD, 0x46, 0xAD, 0xF3, 0xAD, 0x34, + 0x52, 0x5B, 0x63, 0x9D, 0x32, 0x3E, 0x78, 0x40, 0x08, 0x79, 0x17, 0x18, + 0x25, 0xB1, 0x1B, 0x2E, 0xA7, 0xD4, 0x38, 0xEF, 0xBD, 0xA7, 0x04, 0xA7, + 0x82, 0x55, 0x59, 0x92, 0x67, 0x9C, 0x20, 0x44, 0x30, 0xE2, 0x8C, 0x62, + 0x8C, 0x28, 0x21, 0x9C, 0x33, 0x3A, 0x24, 0xD3, 0xC7, 0x58, 0x3F, 0xD9, + 0x2E, 0xC1, 0x8F, 0x42, 0xD2, 0xAD, 0x75, 0xF6, 0xB1, 0x01, 0xB8, 0x79, + 0xBC, 0xFB, 0x39, 0xDB, 0xB9, 0xD9, 0x51, 0xA4, 0x6F, 0x59, 0x19, 0x81, + 0x32, 0xFA, 0xE5, 0x97, 0xDF, 0xFD, 0xE2, 0xEF, 0x7E, 0xFB, 0xF2, 0xF5, + 0x99, 0x54, 0xD6, 0x58, 0x17, 0x02, 0x68, 0xAD, 0x63, 0x6D, 0x43, 0x64, + 0x41, 0x91, 0x4A, 0x1B, 0x63, 0xAC, 0xB5, 0x1B, 0x68, 0x0B, 0x75, 0xDB, + 0x5A, 0xEB, 0xF6, 0xF6, 0xA6, 0x01, 0xA0, 0xA9, 0x1B, 0xC6, 0x58, 0x92, + 0x0A, 0x00, 0xA8, 0xAA, 0x72, 0xB9, 0x5C, 0x1B, 0x63, 0x4F, 0x4E, 0x0E, + 0x39, 0xE7, 0xD7, 0xF3, 0x85, 0xE0, 0x9C, 0x73, 0x86, 0x10, 0x08, 0xC1, + 0x8D, 0xB1, 0x08, 0x80, 0x50, 0x0A, 0x08, 0xE5, 0x59, 0xEA, 0x9D, 0xBB, + 0x9E, 0xCD, 0xFB, 0x5E, 0x1E, 0x1D, 0xEE, 0x1F, 0xDD, 0xDB, 0xCF, 0xF3, + 0x74, 0x3C, 0x2A, 0x30, 0xC2, 0x69, 0x9A, 0x20, 0x08, 0xF5, 0x7A, 0x2D, + 0xFB, 0xF6, 0xE9, 0xFD, 0xBD, 0xA6, 0xED, 0xE7, 0xB5, 0x41, 0x08, 0x4B, + 0xA9, 0x62, 0x54, 0xC4, 0x6A, 0x53, 0xA6, 0xE4, 0x6F, 0xFF, 0xCB, 0xB7, + 0x9D, 0x34, 0x8C, 0xD1, 0x34, 0x49, 0x10, 0xC6, 0x84, 0x52, 0xCE, 0x18, + 0x65, 0x0C, 0x00, 0x08, 0x46, 0x4A, 0xE9, 0xB7, 0xA7, 0x17, 0xD7, 0xB3, + 0x65, 0x2F, 0x65, 0x9A, 0x26, 0x65, 0x9E, 0xE7, 0x59, 0x36, 0x9B, 0x2F, + 0x8D, 0x31, 0xB1, 0x89, 0xDA, 0x62, 0xB1, 0x6E, 0xDB, 0xCE, 0x39, 0xDB, + 0x36, 0xDD, 0xE5, 0xF5, 0x62, 0xDD, 0xCA, 0xA2, 0x48, 0xD3, 0x24, 0x61, + 0x94, 0x54, 0x65, 0x21, 0x38, 0x5B, 0xD7, 0xAD, 0x75, 0x2E, 0xCB, 0xB2, + 0xA6, 0xED, 0xFA, 0xAE, 0xAF, 0x46, 0x55, 0x1C, 0x62, 0x6D, 0x8C, 0xF7, + 0x9E, 0x12, 0xC2, 0x38, 0xB3, 0xD6, 0xC8, 0x5E, 0x85, 0x21, 0xE8, 0x1C, + 0x9C, 0xF3, 0x75, 0xD3, 0x52, 0x82, 0x9D, 0xF5, 0x22, 0x11, 0x4A, 0x1B, + 0xAD, 0x75, 0xAF, 0x14, 0xE3, 0x6C, 0x5C, 0x95, 0x89, 0x10, 0x75, 0xDD, + 0x26, 0x9C, 0x72, 0x46, 0x97, 0xAB, 0xA6, 0xED, 0xFA, 0x32, 0xCF, 0x9C, + 0x73, 0xDA, 0xBA, 0x51, 0x99, 0xEF, 0x4F, 0x2B, 0xEB, 0xFC, 0xC6, 0x9D, + 0x8D, 0x60, 0x83, 0x5F, 0xBB, 0x02, 0xBA, 0x9D, 0xFF, 0x4D, 0x60, 0x6D, + 0x57, 0x9F, 0xFA, 0xC8, 0xDA, 0xB9, 0xF9, 0xA8, 0x9D, 0x15, 0x72, 0x6B, + 0x09, 0x6D, 0x7D, 0xD2, 0xBB, 0x3E, 0xA0, 0xDD, 0x25, 0x46, 0x08, 0x11, + 0x8C, 0xBE, 0x3F, 0x7B, 0x4F, 0x93, 0xF4, 0x93, 0xC7, 0xF7, 0xE7, 0x8B, + 0xF5, 0xF3, 0x57, 0x67, 0x00, 0x20, 0xB5, 0xE9, 0xA5, 0x52, 0x4A, 0x03, + 0xA0, 0xAB, 0xEB, 0x05, 0x8A, 0x61, 0x0A, 0x88, 0x89, 0x9E, 0xF8, 0x57, + 0xBF, 0xFD, 0x9E, 0x52, 0xFA, 0xC5, 0x67, 0x0F, 0x31, 0xA6, 0xDA, 0x98, + 0x34, 0x4D, 0xB4, 0x36, 0x9C, 0xD3, 0xE9, 0x74, 0x2C, 0x95, 0x0E, 0x01, + 0xA4, 0x92, 0xC9, 0xC6, 0x97, 0x7F, 0xB8, 0xBF, 0xD7, 0x76, 0x12, 0x01, + 0x34, 0x6D, 0x4F, 0x08, 0x19, 0x55, 0x45, 0x96, 0xA5, 0x55, 0x99, 0x21, + 0x84, 0xE6, 0xAB, 0xFA, 0x8B, 0x27, 0xC7, 0x1B, 0x52, 0xFB, 0x81, 0x10, + 0x0F, 0x3E, 0xC4, 0xDC, 0x5B, 0x72, 0x71, 0x57, 0x10, 0xB6, 0x2F, 0xC7, + 0x18, 0xCB, 0x60, 0x78, 0x0E, 0xEF, 0x8A, 0xB7, 0x8F, 0x10, 0x8A, 0x09, + 0x98, 0x08, 0x00, 0x61, 0x82, 0xD1, 0x86, 0x29, 0x2F, 0x86, 0x3D, 0x10, + 0x42, 0x3E, 0x00, 0xD9, 0xF9, 0x8A, 0x98, 0x1A, 0x11, 0x86, 0xEE, 0x9C, + 0x1B, 0x01, 0x43, 0x00, 0x80, 0x36, 0x59, 0xC9, 0xBB, 0x62, 0x8B, 0x00, + 0x62, 0x5F, 0xCB, 0xC1, 0x02, 0x82, 0xAD, 0xCB, 0x73, 0x7B, 0x72, 0xFB, + 0xBB, 0xE3, 0x49, 0xEB, 0x01, 0xA1, 0x90, 0x8A, 0x48, 0x4E, 0xED, 0x18, + 0x25, 0xE3, 0x32, 0x4D, 0x05, 0x27, 0x04, 0x3B, 0xE7, 0x68, 0x91, 0x42, + 0xE4, 0x75, 0x00, 0x58, 0x0D, 0x59, 0xE8, 0xA1, 0xE9, 0x4D, 0xEC, 0x7A, + 0x88, 0x00, 0x9C, 0xF3, 0xD6, 0x7B, 0xE7, 0x43, 0x64, 0x90, 0xF6, 0x00, + 0x04, 0x0D, 0xE3, 0x37, 0x54, 0xFE, 0x6D, 0x7E, 0x1E, 0x46, 0xE0, 0x42, + 0x40, 0x10, 0x52, 0x4E, 0x26, 0x65, 0x82, 0x10, 0x5A, 0x36, 0x32, 0x84, + 0xC0, 0x29, 0xBD, 0xB7, 0x57, 0x01, 0x04, 0xE7, 0x7D, 0x96, 0x08, 0x4A, + 0xB0, 0xE3, 0x6C, 0x93, 0xDC, 0x1F, 0x21, 0x6C, 0xA8, 0xA4, 0xDF, 0xC6, + 0xD1, 0xD1, 0xC6, 0x12, 0x8C, 0xD0, 0xB3, 0x55, 0xA3, 0xB6, 0x1E, 0x90, + 0xDD, 0x69, 0xBB, 0x65, 0x38, 0xDC, 0x3A, 0xB9, 0x7D, 0xE9, 0x16, 0x72, + 0xED, 0x22, 0x9A, 0x1F, 0xA8, 0x1C, 0x03, 0x42, 0x60, 0xB5, 0x3D, 0x3B, + 0xBF, 0xC6, 0x84, 0x84, 0x00, 0xCA, 0x18, 0x84, 0x70, 0xD7, 0xF5, 0xDE, + 0x7B, 0xE3, 0x86, 0x5C, 0x41, 0x42, 0x29, 0x13, 0x3C, 0x36, 0x2E, 0xAA, + 0xD7, 0x4D, 0x59, 0x15, 0xCE, 0x7B, 0x6B, 0x6D, 0xDF, 0xEB, 0x75, 0xD3, + 0x71, 0x46, 0x19, 0x67, 0x5D, 0xDF, 0x63, 0x8C, 0x38, 0xE7, 0x8B, 0xC5, + 0x32, 0x49, 0x04, 0xE7, 0x3C, 0xCF, 0xB2, 0xB6, 0xEB, 0x47, 0x65, 0x69, + 0xAC, 0xD3, 0x5A, 0x53, 0x82, 0x39, 0xE3, 0xD3, 0xE9, 0xC4, 0x3B, 0xB7, + 0x5C, 0xD5, 0x4A, 0xE9, 0xF9, 0x7C, 0xC5, 0x39, 0xE5, 0x8C, 0xFD, 0xD1, + 0x1F, 0xFE, 0xB8, 0x1A, 0x15, 0x8C, 0xB1, 0xAA, 0x48, 0x29, 0x25, 0xEF, + 0x4E, 0xCF, 0xBB, 0xAE, 0x37, 0x5A, 0x1F, 0x1F, 0xED, 0x09, 0xC6, 0x01, + 0x82, 0x0F, 0xE0, 0x9C, 0x6B, 0x9A, 0xA6, 0x2C, 0x4B, 0xE7, 0xFC, 0x6A, + 0xDD, 0xFE, 0xF4, 0xF3, 0xFB, 0xD7, 0xD7, 0x8B, 0xAE, 0x37, 0x7B, 0x7B, + 0x93, 0x24, 0x4D, 0x18, 0x63, 0x1E, 0x82, 0xDD, 0x54, 0xC5, 0x53, 0x82, + 0xB5, 0xB1, 0x67, 0x17, 0xB3, 0xA6, 0xE9, 0x0F, 0x0F, 0xC6, 0xD3, 0xC9, + 0x28, 0xF8, 0xB0, 0xAE, 0x9B, 0xEB, 0xF9, 0xD2, 0x7B, 0x57, 0xAF, 0xEB, + 0x35, 0x67, 0x59, 0x96, 0xF6, 0x52, 0x11, 0x8C, 0xD2, 0x84, 0x33, 0x46, + 0xD2, 0x44, 0x7C, 0xF6, 0xE4, 0xA4, 0x28, 0x72, 0x4A, 0x99, 0x32, 0x7A, + 0x5C, 0x95, 0x10, 0xFC, 0xB3, 0xE7, 0xAF, 0xFA, 0x5E, 0x1B, 0xAD, 0xAD, + 0x35, 0x55, 0x55, 0xAE, 0x56, 0x35, 0xE7, 0x8C, 0x03, 0xC4, 0xD2, 0x6E, + 0x91, 0x20, 0xAD, 0x14, 0xA5, 0xD4, 0x18, 0x13, 0x4B, 0xDC, 0x31, 0xC6, + 0xDE, 0xB9, 0xE0, 0xBD, 0xD6, 0x06, 0xE3, 0x7E, 0x3E, 0x5B, 0xEE, 0x1F, + 0x4C, 0xD3, 0x3C, 0x6B, 0x9A, 0x56, 0x6B, 0xBB, 0x26, 0xED, 0x83, 0x7B, + 0x07, 0xF7, 0x0E, 0xF7, 0xCF, 0xCE, 0x2F, 0x0E, 0xF6, 0x46, 0x82, 0xD3, + 0xFF, 0xED, 0xFF, 0xFC, 0x45, 0x96, 0x25, 0x45, 0x9E, 0x52, 0x4A, 0xBF, + 0x7F, 0x79, 0xF6, 0xF4, 0xF1, 0x31, 0xC6, 0x43, 0xD8, 0xEA, 0x96, 0xBA, + 0xB1, 0xB3, 0xFD, 0x0C, 0xFF, 0x6F, 0x9D, 0x44, 0x9B, 0x93, 0xBF, 0xCF, + 0xAF, 0xBF, 0x9D, 0xFA, 0xBB, 0x92, 0xBF, 0xBB, 0x8A, 0x3E, 0xDC, 0x17, + 0x21, 0x04, 0x08, 0x01, 0x28, 0x25, 0x01, 0xE0, 0xAB, 0xEF, 0x5E, 0x4C, + 0x0A, 0xFE, 0xDD, 0xE9, 0xF2, 0xFD, 0x8B, 0x53, 0x67, 0x5D, 0x9E, 0x25, + 0x01, 0xC0, 0x79, 0xDF, 0xB4, 0xBD, 0xE0, 0x2C, 0xCA, 0x7F, 0xEC, 0x44, + 0xB7, 0x5A, 0x37, 0x5D, 0xAF, 0x8A, 0x3C, 0x2D, 0xF2, 0x8C, 0x60, 0xF2, + 0xED, 0xB3, 0x37, 0x07, 0x7B, 0x93, 0x3C, 0x4B, 0xCE, 0xAF, 0xE6, 0xCB, + 0x55, 0xAD, 0xB4, 0x39, 0xBE, 0x77, 0x50, 0xB7, 0x1D, 0x63, 0x90, 0x26, + 0x55, 0x5D, 0xD7, 0x00, 0x28, 0x4B, 0x53, 0x8C, 0xA0, 0x97, 0x12, 0x21, + 0xE8, 0x7A, 0x99, 0x24, 0xC9, 0x7A, 0xDD, 0x74, 0x52, 0xE5, 0x59, 0x72, + 0x74, 0x30, 0x2D, 0xF2, 0xC4, 0xFA, 0x20, 0x04, 0x57, 0x5A, 0xA3, 0x8D, + 0x23, 0xE9, 0xF7, 0x40, 0xF6, 0xEF, 0xBC, 0x7D, 0x84, 0xC8, 0x0E, 0xF7, + 0x51, 0x74, 0x79, 0x7B, 0x80, 0xD8, 0xCD, 0x0E, 0xA1, 0x6D, 0x1E, 0x52, + 0xCC, 0x36, 0x0D, 0x91, 0x02, 0x74, 0x83, 0xF5, 0x28, 0x04, 0x44, 0x36, + 0x64, 0x30, 0x36, 0xDA, 0x4C, 0x61, 0x20, 0x6A, 0xC3, 0x18, 0xBC, 0x1F, + 0x8C, 0x43, 0xB4, 0x09, 0x3C, 0xEE, 0xFE, 0x9E, 0xAD, 0x43, 0x93, 0xFC, + 0x77, 0x3F, 0xFB, 0x4B, 0xD8, 0x69, 0x93, 0x31, 0xBC, 0xBC, 0xBD, 0x9B, + 0xCD, 0xC9, 0xED, 0x9B, 0x09, 0x46, 0xD3, 0x2A, 0x49, 0x05, 0x65, 0x94, + 0xE4, 0x29, 0x67, 0x84, 0x84, 0x10, 0x22, 0xA5, 0xA8, 0xB5, 0x56, 0x5B, + 0xA7, 0xB4, 0xA9, 0x3B, 0xD5, 0xF4, 0xAA, 0x91, 0xA6, 0x93, 0xC6, 0xB8, + 0x81, 0xF6, 0x7B, 0x48, 0x81, 0x40, 0x10, 0x5B, 0x03, 0xC4, 0xE9, 0xF7, + 0x1B, 0x12, 0x93, 0xDD, 0xD1, 0x43, 0x68, 0x68, 0x9E, 0xC6, 0x19, 0xC9, + 0x05, 0x25, 0x78, 0x20, 0xC0, 0xA1, 0x94, 0x94, 0x19, 0x4F, 0xF8, 0xA6, + 0xE8, 0x87, 0x12, 0xCE, 0xA9, 0x10, 0x4C, 0x08, 0x16, 0x49, 0x1D, 0x76, + 0xB6, 0x87, 0xE1, 0xC1, 0x6E, 0xEC, 0xFC, 0xD6, 0xAE, 0x72, 0x7B, 0x73, + 0xFC, 0xBD, 0xC7, 0x5D, 0x2C, 0x43, 0x1F, 0xEE, 0xB4, 0xBB, 0x97, 0x79, + 0xEF, 0x19, 0x25, 0x49, 0x9A, 0x5C, 0xCF, 0x16, 0xCF, 0x5F, 0x9C, 0x51, + 0x4A, 0x01, 0x01, 0x26, 0x14, 0x42, 0x70, 0xCE, 0x01, 0xC2, 0x8C, 0x32, + 0x4A, 0x29, 0x60, 0xEC, 0x9C, 0xC3, 0x04, 0x77, 0x4D, 0xAF, 0x94, 0x56, + 0x4A, 0x1B, 0x6B, 0xFB, 0x4E, 0xD6, 0x75, 0x17, 0x00, 0xEA, 0xB6, 0xBD, + 0xBA, 0x9C, 0xA5, 0x89, 0x78, 0xF4, 0xF0, 0x24, 0x4B, 0xD3, 0x5E, 0xAA, + 0x34, 0x4D, 0x26, 0x93, 0x71, 0x55, 0x95, 0x4A, 0xE9, 0xE9, 0xA4, 0xF2, + 0xC1, 0x5F, 0x5C, 0x5D, 0x37, 0x6D, 0xDF, 0x77, 0x52, 0x5B, 0xCB, 0x18, + 0xCB, 0xB2, 0x2C, 0xCB, 0x32, 0x84, 0x50, 0xDB, 0x76, 0x56, 0x9B, 0xFD, + 0xFD, 0xE9, 0x78, 0x32, 0xB2, 0xCE, 0xED, 0x4F, 0xAB, 0x44, 0x70, 0x6B, + 0xEC, 0x6A, 0xB5, 0xB6, 0xC6, 0xEC, 0x4D, 0x27, 0x45, 0x59, 0x74, 0x9D, + 0xC4, 0x18, 0x5B, 0x1F, 0x2E, 0xAE, 0x57, 0x65, 0x99, 0x73, 0xCE, 0x11, + 0x42, 0x0F, 0x8E, 0x27, 0xA3, 0x22, 0x99, 0x37, 0x16, 0x61, 0x92, 0x24, + 0x49, 0x59, 0xE6, 0xEB, 0xA6, 0x75, 0x3E, 0x10, 0x42, 0x9C, 0xF3, 0x01, + 0xC2, 0x72, 0x55, 0xBF, 0x7C, 0xFD, 0xFE, 0xE5, 0xAB, 0x53, 0x6D, 0x8C, + 0x75, 0x3E, 0x4D, 0x04, 0x67, 0xDC, 0x79, 0xAF, 0x8D, 0x51, 0x4A, 0x03, + 0x40, 0x27, 0x55, 0xDF, 0x4B, 0x8C, 0x31, 0xA3, 0x94, 0x12, 0xDC, 0xB6, + 0x5D, 0xDD, 0x4A, 0x8C, 0xD1, 0xCB, 0x57, 0x6F, 0x38, 0xA5, 0x59, 0x96, + 0xCD, 0x17, 0xAB, 0x67, 0xCF, 0x5E, 0xCD, 0x66, 0x0B, 0xC6, 0x98, 0x94, + 0x32, 0xCB, 0x33, 0x42, 0x68, 0xD3, 0x76, 0x00, 0x9E, 0x52, 0x62, 0xAC, + 0x0B, 0x10, 0x62, 0x37, 0xB3, 0xC8, 0xE8, 0xCA, 0x39, 0xF7, 0xCE, 0x13, + 0x4A, 0x9D, 0x77, 0x7D, 0x27, 0xAD, 0x73, 0x04, 0x63, 0xA9, 0x0C, 0x21, + 0xA4, 0x2A, 0x0B, 0x4A, 0x49, 0xD3, 0x76, 0x18, 0x63, 0xE7, 0x7D, 0x91, + 0xA5, 0xE3, 0x51, 0x39, 0x19, 0x97, 0x82, 0xF3, 0xAA, 0x2C, 0x9C, 0x47, + 0x00, 0xB0, 0x37, 0xAE, 0x10, 0xC1, 0x08, 0xC1, 0xD1, 0xFE, 0x18, 0x63, + 0xE4, 0xBD, 0xDF, 0xA6, 0xD2, 0xEF, 0xCC, 0x2E, 0x0C, 0x62, 0xBC, 0xB3, + 0xE8, 0x77, 0x96, 0x04, 0xDA, 0xC1, 0xB5, 0x1B, 0xA5, 0xFB, 0xD6, 0xA4, + 0xDF, 0x5A, 0x1B, 0xBB, 0x6B, 0x6F, 0x5B, 0x70, 0x82, 0x36, 0x26, 0x2E, + 0x21, 0x38, 0x11, 0x0C, 0x63, 0xBC, 0x98, 0xAF, 0xBE, 0x7B, 0xF1, 0xEE, + 0xE9, 0xC3, 0xA3, 0x57, 0x67, 0xCB, 0xA6, 0x55, 0x52, 0x69, 0xC6, 0xD9, + 0xC1, 0x74, 0x4C, 0x08, 0xC9, 0xB3, 0x84, 0x51, 0x8A, 0x10, 0xEA, 0xA5, + 0x92, 0x52, 0xC5, 0xB5, 0x96, 0xE7, 0x59, 0x8C, 0xB4, 0x24, 0x82, 0x13, + 0x42, 0x7A, 0xA9, 0xF3, 0x3C, 0x7B, 0xFC, 0xE0, 0xF0, 0xB3, 0xA7, 0x0F, + 0x8F, 0x8F, 0xF6, 0x9C, 0x0F, 0xFB, 0xD3, 0x71, 0x22, 0x44, 0xDB, 0x76, + 0x88, 0x60, 0xE7, 0xFC, 0x62, 0xB9, 0x3A, 0xD8, 0x9F, 0xD6, 0x4D, 0xDB, + 0xB4, 0x5D, 0xAC, 0x4F, 0x6A, 0xDA, 0xAE, 0x97, 0xF2, 0xE2, 0x72, 0x16, + 0x42, 0x98, 0x8C, 0x4B, 0x84, 0x30, 0x04, 0x5F, 0x64, 0xA9, 0xBB, 0xC9, + 0x84, 0x08, 0xBB, 0x72, 0x84, 0x76, 0x9C, 0x86, 0x77, 0xA5, 0x06, 0xA1, + 0x4D, 0x3A, 0xEF, 0x4E, 0xB5, 0x0C, 0x0C, 0x24, 0x57, 0x78, 0x3B, 0x90, + 0x68, 0xC8, 0x2A, 0x47, 0x74, 0xD3, 0xA2, 0xF8, 0x96, 0x60, 0x62, 0x3C, + 0xA4, 0x04, 0x3B, 0xEF, 0x11, 0x42, 0xDE, 0x07, 0x17, 0x1D, 0x5E, 0x37, + 0xE1, 0xDD, 0x6D, 0xF7, 0x89, 0x2D, 0x1B, 0xE5, 0x0D, 0x6C, 0x84, 0x10, + 0x06, 0xF6, 0x8B, 0x6D, 0x70, 0x74, 0x7B, 0x0F, 0x1B, 0xA3, 0x14, 0x60, + 0xC3, 0xD4, 0x1C, 0x6D, 0xD7, 0x10, 0x42, 0xEC, 0xAA, 0x8B, 0x00, 0xF9, + 0x5E, 0x77, 0x52, 0x63, 0x8C, 0x7C, 0x08, 0xC1, 0x83, 0xB1, 0x4E, 0x1B, + 0x67, 0x9D, 0xB7, 0x3E, 0x68, 0xEB, 0xAD, 0xFB, 0xA0, 0xCC, 0x09, 0x45, + 0xC6, 0x41, 0x8A, 0xAD, 0xF3, 0xC6, 0x3A, 0x40, 0x40, 0x29, 0xF1, 0x01, + 0xC2, 0xD0, 0x47, 0xD2, 0x6F, 0x94, 0xEF, 0x9B, 0xEB, 0xAD, 0xF3, 0x75, + 0xEF, 0xB1, 0x34, 0x94, 0x62, 0x8C, 0xC0, 0x5A, 0x47, 0x30, 0x76, 0x3E, + 0x60, 0x04, 0x42, 0xB0, 0x44, 0xB0, 0x48, 0x45, 0xB0, 0x63, 0x81, 0xC3, + 0xD6, 0x26, 0xDF, 0x1D, 0xFD, 0xDD, 0x75, 0x19, 0xBF, 0xE3, 0xA3, 0x9A, + 0xD7, 0x47, 0x8F, 0xBB, 0x46, 0xC5, 0x76, 0x70, 0x77, 0x3F, 0x7C, 0xBB, + 0xC3, 0x1B, 0x63, 0x42, 0x80, 0xBF, 0xFF, 0xF5, 0xB7, 0x9C, 0xF1, 0x77, + 0xA7, 0x97, 0x52, 0x69, 0x00, 0xC0, 0x88, 0x60, 0x0A, 0x52, 0x2A, 0xCA, + 0xA8, 0x07, 0x30, 0xDA, 0x79, 0xEF, 0xB5, 0x52, 0xB1, 0xDD, 0x45, 0x96, + 0xA5, 0x8B, 0xD5, 0xDA, 0x58, 0xA7, 0x74, 0x6B, 0x9D, 0x0F, 0x1E, 0x9A, + 0x5E, 0x8E, 0x46, 0xC5, 0xC1, 0xE3, 0xE9, 0x64, 0x5C, 0x95, 0x65, 0x91, + 0xA6, 0xA2, 0x28, 0xB2, 0xD9, 0x7C, 0xB5, 0x5E, 0x37, 0x94, 0xD1, 0xAE, + 0xEB, 0xCF, 0x2F, 0xAE, 0xAA, 0xB2, 0x38, 0xD8, 0x9B, 0xCE, 0xE6, 0x4B, + 0xCE, 0xE8, 0x0F, 0x3E, 0x7F, 0x42, 0x19, 0xF7, 0xDE, 0x1B, 0x63, 0xF6, + 0xF7, 0xC7, 0x5A, 0xEB, 0xB2, 0xC8, 0x30, 0xC6, 0x4D, 0x2B, 0x29, 0xC1, + 0xBF, 0xFD, 0xEA, 0x7B, 0xC6, 0xD9, 0x78, 0x5C, 0x71, 0x21, 0x44, 0x22, + 0xD2, 0x2C, 0xC5, 0x08, 0x23, 0x04, 0xB3, 0x95, 0x44, 0x94, 0x5A, 0x1F, + 0x3C, 0x20, 0xED, 0xFC, 0xB4, 0x4A, 0x19, 0xF2, 0x8B, 0x75, 0xAF, 0xB4, + 0x49, 0xB3, 0x54, 0x70, 0xAE, 0x94, 0x16, 0x82, 0x33, 0xC6, 0xBC, 0x0F, + 0x94, 0x91, 0x3C, 0x49, 0xBE, 0xFC, 0xF2, 0xEB, 0x5F, 0x7F, 0xF5, 0xBC, + 0x6F, 0xFB, 0xFD, 0xFD, 0xC9, 0x0F, 0xBF, 0xF8, 0x04, 0x21, 0xD4, 0x2B, + 0x95, 0xA6, 0x49, 0x91, 0x67, 0x21, 0x04, 0x46, 0xC9, 0x72, 0x5D, 0x4B, + 0xA5, 0x39, 0xA3, 0x3C, 0xB6, 0xFE, 0xF3, 0xE0, 0x42, 0xB0, 0xCE, 0xEF, + 0xEF, 0xEF, 0x37, 0x5D, 0xDF, 0x69, 0xF3, 0xFA, 0xF5, 0xBB, 0x7A, 0x55, + 0xC7, 0x5C, 0x36, 0x2E, 0xB8, 0x54, 0x8A, 0x51, 0x57, 0x16, 0x59, 0x88, + 0x06, 0x4E, 0x08, 0x18, 0xA1, 0xA6, 0xEB, 0x38, 0xA5, 0x20, 0x06, 0xFA, + 0x04, 0xEB, 0x3D, 0x58, 0xDB, 0xB6, 0xB2, 0xE9, 0x55, 0xE4, 0xBC, 0xF5, + 0x60, 0x67, 0xF3, 0x65, 0x9A, 0x26, 0x79, 0x9E, 0x25, 0x42, 0x2C, 0x17, + 0x6B, 0xCE, 0xE8, 0xB2, 0x6E, 0xF2, 0x2C, 0x25, 0x04, 0x55, 0x65, 0xFE, + 0xCF, 0xFF, 0xE4, 0xA7, 0xEB, 0xA6, 0xFF, 0xD5, 0x6F, 0x9F, 0x29, 0x6D, + 0x70, 0x40, 0x67, 0x97, 0x8B, 0x75, 0xD3, 0x4D, 0x46, 0xC5, 0xE3, 0x07, + 0x87, 0xDA, 0x58, 0xB4, 0x33, 0x71, 0xB0, 0x71, 0x10, 0x47, 0x77, 0xD8, + 0xDD, 0x10, 0xE5, 0x5D, 0x6D, 0xEB, 0xF7, 0xA0, 0x18, 0xEC, 0xEC, 0xA3, + 0x9B, 0xEB, 0x3F, 0xB8, 0x38, 0x40, 0xA0, 0x84, 0x28, 0xA5, 0x7E, 0xFD, + 0xF5, 0xCB, 0xCB, 0xD9, 0xBA, 0x69, 0x5A, 0x46, 0xC8, 0x77, 0xCF, 0x4E, + 0x4F, 0x2F, 0xAE, 0xB5, 0x76, 0xDA, 0x58, 0xA9, 0xF4, 0xBA, 0x69, 0x39, + 0x67, 0x14, 0x63, 0xE5, 0x07, 0xBA, 0x17, 0x00, 0x08, 0x01, 0x30, 0x82, + 0x34, 0x15, 0x07, 0xFB, 0x53, 0x00, 0x78, 0x77, 0x7A, 0x5E, 0x14, 0x79, + 0xEC, 0x09, 0x3D, 0xAA, 0xB2, 0xD3, 0xF7, 0x57, 0x9F, 0x3E, 0xBE, 0x5F, + 0x15, 0xBA, 0x93, 0x3A, 0x00, 0x58, 0x6F, 0x31, 0xC2, 0x57, 0xD7, 0xF3, + 0x75, 0x6D, 0xD7, 0x75, 0x2B, 0x38, 0x9F, 0x8E, 0x47, 0x5C, 0xF0, 0x37, + 0x6F, 0xCF, 0x9C, 0xF7, 0xA3, 0xAA, 0x3C, 0xDC, 0x9B, 0xFA, 0xE0, 0xDF, + 0x9F, 0xCF, 0x16, 0xCB, 0x3A, 0x04, 0xFF, 0xDF, 0xFC, 0xD3, 0x9F, 0x1E, + 0xEC, 0x8F, 0x42, 0x08, 0xC6, 0x58, 0x8C, 0xB0, 0x75, 0xEE, 0xAE, 0xD4, + 0x84, 0x0F, 0xC3, 0x94, 0x7E, 0x6B, 0xED, 0x01, 0xDC, 0x80, 0x06, 0x00, + 0x00, 0xC4, 0xE6, 0xE1, 0x04, 0xC7, 0x6B, 0x6E, 0x64, 0x73, 0x9B, 0x34, + 0xBA, 0x75, 0x72, 0xDD, 0x7C, 0x26, 0x42, 0x01, 0xBC, 0xF7, 0xB0, 0x2D, + 0x1B, 0x88, 0xAC, 0xF0, 0x68, 0x53, 0x33, 0xB3, 0xFB, 0x03, 0x36, 0xAD, + 0x59, 0x87, 0xED, 0x67, 0xD8, 0x1B, 0xFE, 0x87, 0x7F, 0xF3, 0xF3, 0x68, + 0xAA, 0x6E, 0x10, 0x6D, 0xD8, 0x37, 0x36, 0x5D, 0x3E, 0xA2, 0x37, 0x0C, + 0x36, 0x70, 0x18, 0x10, 0x02, 0xE7, 0x83, 0x52, 0x4E, 0x19, 0xA3, 0xAD, + 0xD3, 0xD6, 0x77, 0x52, 0x6B, 0xE3, 0x7B, 0x6D, 0xEB, 0x5E, 0x77, 0xCA, + 0x6A, 0x1B, 0x8C, 0xF5, 0x6E, 0x33, 0xC1, 0x18, 0x23, 0xC1, 0x08, 0x25, + 0x84, 0x51, 0xCC, 0x08, 0x8A, 0x2D, 0xC8, 0x10, 0xC2, 0x82, 0x91, 0x84, + 0x92, 0x8C, 0x53, 0x41, 0x49, 0x9A, 0x30, 0x46, 0x49, 0xCC, 0x64, 0xDF, + 0x2D, 0x58, 0x65, 0x04, 0x73, 0x8A, 0x83, 0x0F, 0x82, 0x91, 0x22, 0xE1, + 0x55, 0x9E, 0x14, 0x19, 0xDF, 0x50, 0x4D, 0x0C, 0x99, 0xAB, 0x30, 0x14, + 0x60, 0x92, 0x5B, 0x18, 0x7F, 0xCB, 0x9F, 0x75, 0x33, 0x0A, 0x1F, 0xEA, + 0xFC, 0xBB, 0xAF, 0xEE, 0x1E, 0x77, 0x4F, 0xDE, 0xFA, 0x84, 0xBB, 0x2F, + 0x45, 0xE8, 0xA4, 0x84, 0xF4, 0x52, 0xFD, 0xD5, 0x5F, 0xFF, 0xEA, 0xE5, + 0xAB, 0xF7, 0x3E, 0x00, 0x13, 0x22, 0x04, 0xE8, 0xA5, 0x0A, 0x01, 0x28, + 0xA3, 0x3E, 0x84, 0x34, 0x49, 0x9C, 0x77, 0x4A, 0x69, 0x42, 0x69, 0x96, + 0x67, 0x42, 0x24, 0x94, 0xD0, 0xA6, 0x69, 0xB5, 0x31, 0x08, 0x21, 0xEB, + 0x3C, 0x22, 0xF8, 0xF0, 0x70, 0xFF, 0xC1, 0xC9, 0xBD, 0xE9, 0x64, 0x24, + 0x7B, 0xA9, 0xB4, 0x06, 0xC0, 0x84, 0x90, 0x22, 0xCF, 0x16, 0xAB, 0x75, + 0x0C, 0x08, 0x08, 0xCE, 0x92, 0x44, 0xA4, 0x69, 0x7A, 0x70, 0x30, 0x3D, + 0x39, 0x39, 0x4C, 0xD3, 0x24, 0x9E, 0x11, 0x9C, 0x67, 0x69, 0x72, 0x78, + 0x30, 0x5D, 0x2E, 0x56, 0x9D, 0x54, 0x00, 0xC1, 0x18, 0xBB, 0xBF, 0x3F, + 0x1D, 0x8F, 0x2A, 0xAD, 0x0D, 0x00, 0x20, 0x84, 0xB3, 0x44, 0xBC, 0x7A, + 0xF3, 0x96, 0x32, 0xE1, 0x03, 0x08, 0x21, 0xAA, 0xF1, 0x48, 0x08, 0xB1, + 0x58, 0xD6, 0x2F, 0x5F, 0xBD, 0x4B, 0x12, 0x41, 0x28, 0x3F, 0xBF, 0x5A, + 0x46, 0x1A, 0xD2, 0x3C, 0xCB, 0x38, 0x67, 0x94, 0xD2, 0x10, 0xBC, 0x73, + 0xAE, 0x69, 0xDA, 0xEF, 0x9F, 0xBF, 0xBE, 0x9A, 0x2D, 0xB2, 0x2C, 0xFD, + 0xEC, 0xD3, 0x27, 0xD6, 0xFA, 0xB6, 0xED, 0x28, 0xA3, 0x21, 0x00, 0xA3, + 0xC4, 0x39, 0x8F, 0x30, 0x9E, 0x2F, 0xD7, 0x9C, 0xB3, 0xAA, 0xCC, 0x0E, + 0x0E, 0x26, 0x17, 0x57, 0x8B, 0xF3, 0xCB, 0xB9, 0x51, 0xA6, 0x2C, 0x8B, + 0xC9, 0xB8, 0x0A, 0x00, 0x9C, 0xF3, 0x7B, 0x47, 0x07, 0x4D, 0xDD, 0xCC, + 0x67, 0x73, 0x63, 0x2C, 0xE7, 0xDC, 0x39, 0x0F, 0x10, 0xAA, 0xAA, 0xEC, + 0xBA, 0x1E, 0x23, 0xA4, 0x8C, 0x61, 0x94, 0x71, 0xC6, 0x03, 0x0A, 0x9C, + 0x71, 0xCE, 0x39, 0x26, 0xD8, 0xF9, 0x80, 0x10, 0x76, 0xDE, 0x6B, 0x65, + 0x42, 0x08, 0x89, 0x60, 0xDA, 0x58, 0x40, 0x48, 0x69, 0xEB, 0x83, 0xCF, + 0xB3, 0x74, 0xB9, 0xAA, 0x9B, 0xA6, 0x4B, 0x84, 0xA8, 0xCA, 0x0C, 0x61, + 0x6C, 0x7D, 0xB0, 0xD6, 0xE5, 0x29, 0x7F, 0x78, 0x72, 0x10, 0x02, 0x9C, + 0x5F, 0xCE, 0xBB, 0x4E, 0x9D, 0x5F, 0x2D, 0xBD, 0xF7, 0x9F, 0x3E, 0x3E, + 0xC6, 0x9B, 0xE6, 0x35, 0x71, 0x4B, 0xBF, 0x35, 0x9B, 0xB7, 0x9E, 0x7E, + 0xD4, 0xAF, 0xFA, 0xD1, 0xF5, 0x70, 0x6B, 0x63, 0xDB, 0x39, 0x89, 0xB6, + 0x2A, 0x60, 0x22, 0x18, 0x67, 0x4C, 0x70, 0xFA, 0x7F, 0xFD, 0xD5, 0x2F, + 0xBF, 0x7B, 0x33, 0xE3, 0x5C, 0xD4, 0x8D, 0xCC, 0xF2, 0xB4, 0x28, 0x32, + 0x65, 0x43, 0x9E, 0xA7, 0x75, 0xD3, 0x2D, 0x16, 0xAB, 0xBA, 0x6E, 0xAF, + 0xAF, 0x97, 0xB3, 0xC5, 0xDA, 0x18, 0x13, 0xF3, 0x7B, 0xBB, 0xAE, 0x8F, + 0x9A, 0x48, 0xD3, 0xB6, 0x98, 0x50, 0x4A, 0x49, 0x9E, 0xA5, 0x4A, 0xE9, + 0xD5, 0xAA, 0xF6, 0xDE, 0xFF, 0xE4, 0x87, 0x4F, 0xD7, 0x75, 0xFB, 0xFE, + 0x62, 0x3E, 0x19, 0x15, 0x9C, 0xD1, 0x2F, 0xBF, 0xFA, 0xDE, 0xFB, 0x60, + 0xAC, 0x09, 0x00, 0x94, 0x50, 0x21, 0x38, 0x21, 0x84, 0x52, 0x12, 0xB7, + 0xA5, 0xC7, 0x0F, 0xEF, 0xFD, 0xE8, 0xF3, 0x27, 0x4F, 0x1F, 0x1F, 0xFF, + 0xE0, 0xE9, 0x23, 0x21, 0xD8, 0xDB, 0xD3, 0x0B, 0x8C, 0xE9, 0x8B, 0x77, + 0x97, 0xB3, 0xC5, 0x3A, 0x11, 0x8C, 0x51, 0xAA, 0xB4, 0x11, 0x82, 0x6D, + 0xE3, 0x58, 0x77, 0x55, 0xB0, 0xED, 0x9D, 0xC6, 0xDA, 0xD0, 0x8D, 0x63, + 0x0A, 0x6D, 0xEF, 0x76, 0x23, 0x0E, 0x68, 0x53, 0x05, 0x84, 0xB6, 0x96, + 0x0B, 0xD9, 0x9E, 0xDC, 0x0E, 0xE3, 0x66, 0xB8, 0xFC, 0xD6, 0x68, 0xDB, + 0x98, 0xF9, 0x61, 0x9B, 0x09, 0x86, 0x80, 0x10, 0x1C, 0xC3, 0x2F, 0x18, + 0x63, 0x1A, 0x89, 0x1B, 0x08, 0xA1, 0x04, 0x93, 0xA8, 0xCB, 0x61, 0x44, + 0xFE, 0xEC, 0xDF, 0xFE, 0x7C, 0xE0, 0xBA, 0xD8, 0xFC, 0x6A, 0xB8, 0x81, + 0xB3, 0xAD, 0x0E, 0x3E, 0x78, 0xAF, 0x86, 0x60, 0x34, 0x02, 0x18, 0xBA, + 0xD7, 0x06, 0xEB, 0xBC, 0xF7, 0xE0, 0x7C, 0x90, 0xC6, 0x86, 0x9D, 0x4A, + 0xCE, 0x0D, 0xA8, 0x44, 0xBD, 0x1E, 0x08, 0x46, 0x45, 0x42, 0x47, 0x45, + 0x82, 0x11, 0x4A, 0x39, 0x2B, 0x52, 0x36, 0x2E, 0x93, 0x2C, 0x61, 0x65, + 0xC6, 0xAB, 0x3C, 0x19, 0xE5, 0xA2, 0xCA, 0x45, 0xCA, 0x29, 0xC1, 0x28, + 0xE5, 0x94, 0x52, 0x8C, 0x11, 0x4A, 0x38, 0x2D, 0x32, 0x9E, 0x30, 0xC2, + 0x28, 0x26, 0x18, 0x15, 0xA9, 0x60, 0x14, 0x53, 0x4A, 0xD2, 0x84, 0x73, + 0x36, 0xC4, 0xCE, 0xA2, 0x46, 0xB6, 0x9B, 0x85, 0x7F, 0x0B, 0x80, 0x76, + 0xB7, 0xD0, 0x0F, 0xC2, 0xEA, 0xFF, 0xB0, 0x95, 0xFA, 0x81, 0x53, 0xF3, + 0x0E, 0x84, 0xED, 0x3A, 0xC5, 0xC2, 0x26, 0x4D, 0xD9, 0x39, 0xF7, 0x1F, + 0xFF, 0xEA, 0xEF, 0xAF, 0xAE, 0x97, 0x1B, 0xE2, 0x2A, 0x9F, 0xA6, 0x22, + 0x11, 0xC2, 0x38, 0x87, 0x31, 0x4A, 0xD2, 0x24, 0x56, 0x51, 0x31, 0x21, + 0x08, 0x21, 0x5D, 0xD7, 0xAD, 0x96, 0xEB, 0xBA, 0xE9, 0x22, 0x9D, 0x86, + 0x71, 0xCE, 0xFB, 0x90, 0x67, 0x39, 0xA5, 0xF4, 0xF4, 0xF4, 0x7C, 0xB9, + 0x58, 0x4A, 0x29, 0xB9, 0x10, 0x75, 0xDB, 0xD5, 0x75, 0x83, 0x20, 0x94, + 0x65, 0x21, 0x8D, 0x49, 0x13, 0xF1, 0xE0, 0xFE, 0xBD, 0xC3, 0x83, 0x29, + 0x65, 0x84, 0x52, 0x4A, 0x29, 0x8D, 0x3D, 0x65, 0xD1, 0x50, 0x5B, 0xEB, + 0x8C, 0x56, 0xEB, 0x55, 0x3D, 0x9E, 0x8C, 0x27, 0x93, 0x51, 0x9A, 0xA6, + 0x6D, 0xDB, 0x2D, 0xAF, 0xAF, 0xAA, 0x51, 0x39, 0x99, 0x8E, 0xB5, 0x92, + 0x5F, 0x7E, 0xF9, 0x55, 0x9A, 0x15, 0xAB, 0xBA, 0x33, 0xD6, 0x63, 0x42, + 0xAE, 0x67, 0x4B, 0xA5, 0xF5, 0x62, 0xBE, 0xAC, 0x46, 0x65, 0x9A, 0x66, + 0xA7, 0x17, 0x73, 0xCA, 0x68, 0xEC, 0xE5, 0x1E, 0x2D, 0x3B, 0x29, 0xD5, + 0xC5, 0xE5, 0xEC, 0xF2, 0x72, 0x21, 0xFB, 0x0E, 0x10, 0xFE, 0xA3, 0x3F, + 0xFC, 0x49, 0x51, 0xE6, 0x17, 0x97, 0xD7, 0x67, 0x67, 0x17, 0x9F, 0x3C, + 0x79, 0xB8, 0x37, 0x1D, 0x71, 0x4A, 0x66, 0xB3, 0xF9, 0xEB, 0x77, 0x67, + 0x75, 0xD3, 0xC6, 0x84, 0x7B, 0x8C, 0xA0, 0x69, 0x3A, 0x00, 0x22, 0x04, + 0x17, 0x82, 0x53, 0x4A, 0x8D, 0xB5, 0x80, 0x50, 0x5C, 0x7F, 0xF3, 0xC5, + 0x72, 0x3E, 0x5B, 0xA2, 0x8D, 0x61, 0x1E, 0x20, 0x3C, 0x7D, 0xFA, 0x88, + 0x31, 0xB6, 0x5A, 0xAD, 0x31, 0xC2, 0x91, 0x6E, 0x87, 0x52, 0x1A, 0xBC, + 0x67, 0x8C, 0x61, 0x84, 0x8D, 0x35, 0x9C, 0x33, 0x08, 0x28, 0xB2, 0xA4, + 0xA4, 0x82, 0x19, 0xEB, 0x63, 0x13, 0x12, 0x82, 0xF1, 0x64, 0x5C, 0x11, + 0x82, 0xE7, 0xCB, 0x75, 0x00, 0x60, 0x94, 0x55, 0x65, 0x1E, 0x69, 0xAC, + 0x8D, 0x75, 0x08, 0xD0, 0xD1, 0xC1, 0x78, 0x32, 0x2A, 0xDF, 0x5F, 0xCC, + 0x4E, 0xCF, 0xAF, 0xAA, 0xAA, 0x08, 0x01, 0x94, 0xD2, 0x08, 0xA1, 0x24, + 0xE1, 0x5B, 0xFF, 0xC9, 0x1D, 0x2C, 0xFB, 0x5D, 0x2B, 0xE2, 0x83, 0xA9, + 0xDF, 0x7D, 0xEF, 0xF6, 0xEF, 0x5D, 0x69, 0x8F, 0x7A, 0x0A, 0x21, 0x84, + 0x31, 0xF2, 0xFA, 0xDD, 0x65, 0xDB, 0xAB, 0x5F, 0xFD, 0xF6, 0xF9, 0xAF, + 0xBE, 0x79, 0xB7, 0x37, 0x19, 0x31, 0x4A, 0xBF, 0xF8, 0xEC, 0xE1, 0xF1, + 0xE1, 0xB4, 0xED, 0xFA, 0x55, 0xDD, 0xAF, 0x9B, 0x1E, 0x21, 0xD4, 0x76, + 0x92, 0x11, 0x1A, 0xE9, 0x43, 0xB4, 0x36, 0xA3, 0xAA, 0x28, 0xF2, 0xAC, + 0xEB, 0xA5, 0x52, 0x86, 0x10, 0xE2, 0x3D, 0x20, 0x08, 0xB1, 0x5B, 0x4A, + 0x5D, 0xB7, 0xB3, 0xC5, 0x0A, 0x00, 0x3D, 0x79, 0x78, 0x4C, 0x30, 0xFE, + 0xF4, 0xC9, 0x49, 0x9A, 0xF0, 0xF9, 0xB2, 0x16, 0x42, 0xAC, 0xD6, 0xCD, + 0x62, 0x59, 0x53, 0x42, 0xE3, 0x9D, 0x86, 0xC1, 0x9D, 0x83, 0x4E, 0x8E, + 0x0F, 0x8E, 0x0F, 0xA7, 0x51, 0x7C, 0x12, 0xC1, 0x28, 0x25, 0x65, 0x59, + 0x4C, 0x46, 0xA5, 0x10, 0xBC, 0x57, 0xE6, 0xEB, 0x67, 0xEF, 0x5E, 0xBD, + 0xB9, 0x78, 0x75, 0x7A, 0xBD, 0x37, 0x29, 0xAB, 0x22, 0x8D, 0xF7, 0xB3, + 0xF1, 0x5C, 0xA3, 0xBB, 0xF7, 0xB8, 0x7D, 0x42, 0x36, 0x29, 0xAA, 0x18, + 0x63, 0xB2, 0xF5, 0xEA, 0x23, 0x84, 0x36, 0x98, 0x85, 0x37, 0x4A, 0x11, + 0xDE, 0x49, 0xFA, 0xDF, 0xCD, 0xD1, 0x8F, 0x1F, 0x17, 0x36, 0x3D, 0xA1, + 0x01, 0x00, 0x93, 0xE1, 0x63, 0x08, 0x41, 0x94, 0x10, 0x46, 0x09, 0xC1, + 0x08, 0x63, 0x4C, 0x28, 0x8A, 0x84, 0xD1, 0x18, 0x63, 0x8A, 0x11, 0xC5, + 0x38, 0xA6, 0x3B, 0x50, 0x08, 0x00, 0x78, 0xD0, 0x12, 0x69, 0xAC, 0x08, + 0x05, 0xB4, 0xA5, 0xC0, 0xBD, 0x99, 0x8C, 0x0D, 0xCA, 0x02, 0x6C, 0xBD, + 0x9F, 0xB1, 0xDB, 0xFB, 0xF0, 0x9C, 0x20, 0x1C, 0x10, 0xEC, 0x5E, 0x16, + 0x95, 0xE1, 0x58, 0x4B, 0x8F, 0x11, 0xB2, 0x3E, 0x2C, 0x1B, 0x09, 0x00, + 0x8C, 0x62, 0xE4, 0x07, 0x2F, 0x9D, 0xC6, 0x37, 0xB7, 0xCA, 0x28, 0xCE, + 0x13, 0x86, 0x11, 0x8A, 0x36, 0xA3, 0xB5, 0x4E, 0x1B, 0x8B, 0x11, 0xE6, + 0x9C, 0x72, 0x46, 0x04, 0xA3, 0x9B, 0xCC, 0x11, 0xD8, 0x0C, 0xD4, 0xF0, + 0x21, 0xB7, 0xAA, 0xB1, 0x60, 0x87, 0xA3, 0x02, 0x86, 0x08, 0x37, 0xF9, + 0x28, 0x42, 0xDD, 0x5D, 0x9D, 0xBB, 0xFA, 0xF3, 0xDD, 0x57, 0x3F, 0x7A, + 0x7E, 0xFB, 0xAA, 0x52, 0x9A, 0x52, 0xFC, 0xE6, 0xCD, 0xF9, 0x8B, 0x97, + 0xA7, 0x94, 0x32, 0xCA, 0x18, 0xA5, 0x04, 0x42, 0xB0, 0x46, 0xC7, 0xD8, + 0xAB, 0x0F, 0xC1, 0x6A, 0xDB, 0x1B, 0xEB, 0x43, 0x90, 0x4A, 0x4B, 0x29, + 0x05, 0xE7, 0x8C, 0x73, 0x41, 0x30, 0xC1, 0xC4, 0x87, 0x9E, 0x0A, 0x4E, + 0x08, 0xEB, 0xBB, 0xBE, 0xAE, 0x9B, 0x24, 0x49, 0x26, 0xE3, 0x32, 0x4D, + 0x44, 0x51, 0xE4, 0x57, 0xF3, 0xA5, 0xEA, 0xE5, 0x74, 0x32, 0x9A, 0x8C, + 0x2B, 0xA9, 0x6D, 0x59, 0x16, 0x9C, 0xD2, 0x5E, 0x2A, 0x21, 0x78, 0xF0, + 0xE0, 0xBD, 0xC7, 0x6C, 0xC8, 0xA9, 0xA9, 0xEB, 0x0E, 0x82, 0x9B, 0x4E, + 0xC6, 0x9F, 0x7D, 0xFE, 0x89, 0xF7, 0xE1, 0xFC, 0x6A, 0xAE, 0xFA, 0xEE, + 0x60, 0x5C, 0xB0, 0xC9, 0x31, 0x65, 0xA2, 0x5E, 0xAF, 0xE7, 0x8B, 0x55, + 0x9E, 0x65, 0x47, 0x07, 0x13, 0x69, 0x9C, 0x73, 0xE1, 0xE8, 0x70, 0x4F, + 0x08, 0x1E, 0x13, 0x7E, 0xA4, 0x52, 0x17, 0x57, 0x2B, 0x4C, 0x10, 0x84, + 0x60, 0x8D, 0xC3, 0x80, 0x2D, 0xD8, 0x77, 0x67, 0x17, 0x7D, 0xAF, 0x30, + 0x42, 0x18, 0xA3, 0xD9, 0x62, 0x75, 0x7E, 0x39, 0x37, 0x2E, 0x3C, 0x7D, + 0xF2, 0x60, 0x5C, 0x15, 0xD6, 0xDA, 0xC8, 0x69, 0xE2, 0x9C, 0xB3, 0xCE, + 0x1F, 0xDF, 0x3B, 0xD2, 0xC6, 0x54, 0x65, 0x91, 0x08, 0x4E, 0x30, 0x5A, + 0x2C, 0xD7, 0x3E, 0x04, 0x82, 0xB1, 0x74, 0x3E, 0x11, 0xA8, 0xEB, 0xA5, + 0xB1, 0x7E, 0x54, 0xE5, 0xB3, 0xF9, 0x72, 0x31, 0x5F, 0x32, 0x4A, 0xF3, + 0x2C, 0xF3, 0xC1, 0x87, 0x10, 0x18, 0x63, 0xC6, 0xD8, 0xE9, 0x64, 0xBC, + 0x5C, 0xAE, 0xD6, 0xEB, 0x26, 0x62, 0x3A, 0x42, 0x48, 0x1B, 0x8B, 0x7A, + 0x29, 0x38, 0x23, 0x08, 0xF7, 0xBD, 0xF2, 0x21, 0x60, 0x32, 0x30, 0x62, + 0x12, 0x82, 0x9C, 0x73, 0x5A, 0xEB, 0xE5, 0xCA, 0x4F, 0x27, 0x15, 0x67, + 0x6C, 0x6F, 0x6F, 0x02, 0x3E, 0x5C, 0xCD, 0x96, 0x84, 0x92, 0xB2, 0x48, + 0xDB, 0xA6, 0x2F, 0x8B, 0x5C, 0x59, 0x67, 0x3A, 0x7F, 0xB8, 0x3F, 0xFE, + 0x57, 0xFF, 0xED, 0x9F, 0x7E, 0xF9, 0xCD, 0x8B, 0xAB, 0xEB, 0xD5, 0xF9, + 0xD5, 0x62, 0xBD, 0xEE, 0x04, 0x27, 0xFF, 0xD5, 0x3F, 0xFB, 0x43, 0x8C, + 0x90, 0xBB, 0x93, 0x67, 0xB0, 0xBB, 0x34, 0xEE, 0x7A, 0xC4, 0x76, 0x97, + 0xCD, 0xEF, 0x59, 0x0F, 0xDB, 0x55, 0x14, 0x42, 0xC0, 0x18, 0xA5, 0x82, + 0x2F, 0x16, 0xEB, 0xBF, 0xF9, 0xFB, 0xAF, 0x67, 0x8D, 0x9E, 0x8E, 0x47, + 0x5F, 0x7F, 0xFB, 0x2A, 0x40, 0x70, 0xCE, 0x4D, 0xC6, 0xE5, 0x8B, 0xD7, + 0xEF, 0xEB, 0xA6, 0xBB, 0xB7, 0x3F, 0xFE, 0xEE, 0xC5, 0xDB, 0x34, 0x4D, + 0x47, 0xA3, 0x72, 0x3A, 0x1E, 0x35, 0x5D, 0xEF, 0x9C, 0xE7, 0x9C, 0x4D, + 0x27, 0x23, 0x00, 0xB4, 0x5C, 0xAE, 0xFC, 0xE0, 0x7B, 0x0D, 0x08, 0xA1, + 0xBA, 0xE9, 0xD2, 0x44, 0x18, 0xEB, 0xB3, 0x2C, 0xDD, 0xDF, 0x1B, 0xBF, + 0x7C, 0xFD, 0x7E, 0xB1, 0x6A, 0x9E, 0x3C, 0x38, 0x44, 0x18, 0x25, 0x82, + 0x9F, 0x1C, 0xED, 0x7D, 0xFA, 0xE8, 0xDE, 0x9F, 0xFE, 0xF1, 0x0F, 0xDF, + 0xBD, 0xBF, 0x8E, 0x36, 0x8B, 0xD2, 0x3A, 0x04, 0x78, 0xF9, 0xF6, 0xBC, + 0xCC, 0xD3, 0x83, 0xBD, 0x11, 0xE7, 0xEC, 0xFC, 0x72, 0xE6, 0x7D, 0x58, + 0xAE, 0x5E, 0xE5, 0x69, 0x72, 0x72, 0x7C, 0xC0, 0x28, 0x29, 0x8B, 0xD4, + 0x5A, 0x47, 0x30, 0x7A, 0xF9, 0xFA, 0xEC, 0xD1, 0x83, 0xE3, 0xFF, 0xE7, + 0x17, 0x5F, 0x3D, 0x7D, 0x74, 0xF4, 0x93, 0x1F, 0x3C, 0xD4, 0xDA, 0x64, + 0x69, 0x12, 0xCB, 0x78, 0x00, 0x3E, 0xC2, 0xC3, 0x0C, 0x3B, 0xBE, 0x1A, + 0x34, 0x40, 0x12, 0x10, 0x00, 0xEF, 0x6F, 0x18, 0x90, 0xA2, 0xEC, 0xED, + 0xF4, 0xDA, 0x89, 0xB1, 0x8E, 0x41, 0x4E, 0x23, 0x3C, 0x6E, 0x3F, 0x3C, + 0x0C, 0x1C, 0xA3, 0x88, 0x62, 0x8C, 0x10, 0x84, 0x10, 0xC8, 0xB6, 0xDA, + 0x09, 0x80, 0xD0, 0xAD, 0xBE, 0x32, 0x78, 0xFD, 0x01, 0xA2, 0x52, 0x85, + 0xC8, 0xFF, 0xF8, 0xE7, 0x7F, 0x39, 0x7C, 0x56, 0x18, 0x3C, 0x65, 0x18, + 0x03, 0x46, 0xF1, 0x1F, 0xC6, 0x68, 0x50, 0xA9, 0x10, 0x42, 0x64, 0xAB, + 0x19, 0x02, 0x8A, 0x54, 0xF5, 0x61, 0xB3, 0xE1, 0x6C, 0xBC, 0x0C, 0x5B, + 0x47, 0xD5, 0xE6, 0x19, 0x02, 0x00, 0xA0, 0x08, 0xFB, 0x00, 0x31, 0x03, + 0x56, 0x30, 0x9A, 0x30, 0xCA, 0x39, 0xE1, 0x8C, 0x6A, 0xE3, 0x00, 0x21, + 0x82, 0x71, 0x95, 0x27, 0x69, 0xC2, 0x11, 0x42, 0x82, 0xB3, 0x2C, 0xE1, + 0x59, 0xC2, 0x53, 0xC1, 0x04, 0x67, 0x31, 0x9E, 0x10, 0xCB, 0x86, 0x19, + 0xA3, 0x94, 0x12, 0x4A, 0x09, 0xE7, 0x2C, 0x3E, 0xDE, 0xE1, 0xFF, 0xC2, + 0xDB, 0x92, 0xA3, 0xBB, 0x0E, 0xF8, 0x8F, 0xAE, 0xB3, 0xED, 0x71, 0x77, + 0x56, 0x6E, 0x5D, 0xB0, 0x3D, 0x3E, 0x4A, 0x0D, 0xF4, 0xE1, 0xE2, 0x0E, + 0x9C, 0xD1, 0x57, 0x6F, 0xDE, 0xBF, 0x7B, 0x77, 0x89, 0x10, 0x22, 0x04, + 0x0B, 0xC1, 0xB3, 0x2C, 0x21, 0x18, 0xD5, 0x4D, 0xDB, 0x77, 0x7D, 0xDF, + 0xAB, 0xC5, 0xB2, 0x46, 0x84, 0xF8, 0x10, 0x16, 0xCB, 0x35, 0x42, 0x78, + 0xDD, 0x74, 0x4A, 0x99, 0xD8, 0x4F, 0xBB, 0x57, 0x4A, 0x49, 0xED, 0x9D, + 0xA7, 0x94, 0x72, 0xCE, 0x93, 0x54, 0x64, 0x79, 0xC6, 0x39, 0x93, 0xCA, + 0xB4, 0x6D, 0x57, 0xE4, 0xE9, 0x78, 0x54, 0x16, 0x45, 0xD6, 0x74, 0xFD, + 0xD9, 0xF9, 0x35, 0x02, 0x34, 0x19, 0x57, 0xF1, 0xC7, 0x30, 0x4E, 0x95, + 0x54, 0x00, 0xA0, 0x8D, 0xEE, 0x7B, 0x99, 0x66, 0x69, 0x96, 0x65, 0x5A, + 0xEB, 0xF9, 0x62, 0x55, 0xA6, 0xF4, 0x07, 0x4F, 0x8E, 0x9F, 0x3C, 0x3E, + 0x4E, 0x13, 0x71, 0x39, 0x5B, 0xB9, 0x00, 0x1E, 0xE0, 0x87, 0x5F, 0x7C, + 0x96, 0x17, 0x05, 0x67, 0x3C, 0x4D, 0x45, 0xDB, 0xF6, 0x6D, 0xDB, 0xC7, + 0x6E, 0x20, 0x8C, 0x31, 0xA5, 0x14, 0x42, 0xA8, 0xEF, 0xD5, 0x6C, 0xB1, + 0x94, 0xBD, 0x8A, 0xCC, 0x22, 0x59, 0x9A, 0x4C, 0x26, 0x15, 0x04, 0x47, + 0x08, 0xA9, 0x9B, 0x46, 0x24, 0xFC, 0x70, 0x7F, 0x82, 0x09, 0x2A, 0xF2, + 0x6C, 0x3C, 0xAA, 0x10, 0x40, 0xDB, 0xF5, 0x88, 0x60, 0xCE, 0x18, 0xA5, + 0x94, 0x51, 0xEA, 0xBC, 0xB7, 0xCE, 0x17, 0x45, 0x2E, 0xA5, 0xAC, 0x9B, + 0x2E, 0x4B, 0x85, 0x73, 0x2E, 0x20, 0x5C, 0xD7, 0xCD, 0xCB, 0x97, 0x6F, + 0x7C, 0x08, 0xCB, 0xC5, 0xAA, 0xEF, 0x3A, 0x9E, 0x24, 0x18, 0xA1, 0x34, + 0x4B, 0x17, 0xCB, 0x65, 0x59, 0x96, 0xCB, 0x55, 0xED, 0x9D, 0x1B, 0x32, + 0x13, 0x09, 0xA1, 0x34, 0x5A, 0x94, 0x1B, 0x9E, 0x3C, 0x8C, 0x8C, 0x75, + 0x10, 0xC0, 0x5A, 0x87, 0x09, 0x8E, 0xAE, 0x6E, 0x80, 0xC8, 0x1C, 0xE5, + 0xAD, 0x75, 0x55, 0x91, 0x3D, 0x79, 0x74, 0xA2, 0xB4, 0xAE, 0xEB, 0x0E, + 0x01, 0xF8, 0x10, 0x16, 0xCB, 0x3A, 0x4B, 0x13, 0xA5, 0xCD, 0x6C, 0x51, + 0xBF, 0x3B, 0xBB, 0x7C, 0x74, 0xFF, 0xE8, 0xD3, 0x4F, 0x4E, 0x30, 0xC2, + 0xDE, 0x87, 0x5E, 0xEA, 0x5E, 0x2A, 0x82, 0x71, 0x59, 0x64, 0x3B, 0x74, + 0x34, 0xC3, 0x12, 0xB8, 0x05, 0x61, 0xB7, 0xD6, 0xC6, 0xDD, 0x63, 0x57, + 0xEB, 0xBF, 0xA5, 0xA0, 0x15, 0x79, 0x3A, 0x5F, 0xD4, 0xEF, 0xCE, 0x67, + 0x6F, 0xDE, 0x5E, 0xFC, 0x1F, 0x7F, 0xF5, 0x65, 0x9E, 0xE7, 0x69, 0x2A, + 0x02, 0x40, 0xD7, 0x6B, 0xAD, 0x4D, 0x51, 0x64, 0xDF, 0x3C, 0x7B, 0xED, + 0x5C, 0xE8, 0x95, 0x09, 0x80, 0x08, 0xC1, 0x10, 0x60, 0xBE, 0x5C, 0xC7, + 0x37, 0x22, 0x8C, 0xA4, 0x54, 0x6D, 0xD7, 0xD5, 0x75, 0x6B, 0x8C, 0xDD, + 0xEE, 0xD9, 0xDE, 0x87, 0xCF, 0x9E, 0x3E, 0xFC, 0xC1, 0x67, 0x8F, 0xBE, + 0xFB, 0xFE, 0x4D, 0x55, 0x15, 0x59, 0x9A, 0xE4, 0x59, 0xF2, 0xF8, 0xE1, + 0x11, 0x02, 0xE8, 0xA4, 0x66, 0x94, 0xC4, 0xF4, 0xA3, 0xA3, 0xFD, 0x2A, + 0xCF, 0x12, 0x82, 0x91, 0x0F, 0x70, 0xEF, 0x70, 0x7A, 0x74, 0x30, 0xA1, + 0x14, 0x5F, 0xCF, 0x57, 0xE7, 0x97, 0xF3, 0xF3, 0xAB, 0xF9, 0x62, 0xBE, + 0xBA, 0x9E, 0xAF, 0xB4, 0xB1, 0x07, 0x7B, 0xE3, 0x44, 0xF0, 0x3C, 0x4B, + 0xD6, 0x75, 0x9B, 0x26, 0x22, 0xCB, 0xD2, 0xD3, 0xF7, 0x57, 0x17, 0x57, + 0xF3, 0xD3, 0x8B, 0xF9, 0xDB, 0xF7, 0xB3, 0xD3, 0xF3, 0xF9, 0xD3, 0x47, + 0xF7, 0xA2, 0xDB, 0x86, 0x73, 0xB6, 0xAB, 0x8E, 0x6D, 0xE5, 0x6E, 0x93, + 0x62, 0x82, 0x76, 0xC9, 0x16, 0xB6, 0xC6, 0x63, 0xD4, 0x28, 0xA2, 0x11, + 0x8A, 0x76, 0x7A, 0x3C, 0xDF, 0x52, 0x26, 0x76, 0xDF, 0x48, 0x30, 0x22, + 0x43, 0x72, 0xC6, 0xED, 0x92, 0xE7, 0x6D, 0xB4, 0x64, 0xF3, 0x60, 0x6B, + 0x8A, 0x06, 0xF2, 0x67, 0xFF, 0xEE, 0xE7, 0xE8, 0xC6, 0x56, 0x84, 0xAD, + 0xAC, 0x22, 0x14, 0xFB, 0x9B, 0x0D, 0xFF, 0xC8, 0xF0, 0x74, 0x03, 0xA0, + 0x9B, 0x7E, 0x8A, 0x9B, 0xD8, 0x42, 0x08, 0x80, 0xC2, 0x86, 0xD2, 0x88, + 0x11, 0x1C, 0x0B, 0x8F, 0x62, 0x8E, 0x6B, 0xF0, 0x21, 0xE1, 0x74, 0x7F, + 0x9C, 0x1D, 0xEF, 0x95, 0xD3, 0x51, 0x36, 0xA9, 0xB2, 0x71, 0x99, 0x96, + 0x79, 0x72, 0x30, 0xAD, 0xF6, 0x46, 0xD9, 0xB8, 0xCA, 0xAA, 0x32, 0x4D, + 0x04, 0xE3, 0x94, 0x08, 0xCE, 0x28, 0xC1, 0x3A, 0x26, 0x6E, 0x84, 0x20, + 0x38, 0x4D, 0x12, 0x46, 0x29, 0xDD, 0x80, 0x17, 0x8D, 0x89, 0x2A, 0xDB, + 0x41, 0x8C, 0xC7, 0x4E, 0x78, 0xE8, 0x76, 0xB6, 0xCE, 0x76, 0x39, 0x6E, + 0xD7, 0xD6, 0xEE, 0xB8, 0x6C, 0x2D, 0x47, 0x3F, 0x34, 0x9A, 0x8E, 0xE4, + 0xEE, 0xC3, 0xC3, 0x2D, 0x91, 0xDB, 0xF6, 0xAF, 0xDF, 0xD0, 0xC9, 0xFA, + 0x48, 0xAB, 0x1A, 0x00, 0x00, 0x86, 0x7A, 0x43, 0x6B, 0x31, 0xC6, 0xCF, + 0x5F, 0xBE, 0xFB, 0xC5, 0xDF, 0xFE, 0x06, 0x00, 0x62, 0xB9, 0xB5, 0xB3, + 0x06, 0x01, 0x30, 0xCE, 0x11, 0xC6, 0x52, 0x5B, 0x6D, 0x2C, 0x65, 0x2C, + 0x49, 0x44, 0x6C, 0x3B, 0xD4, 0xF5, 0xAA, 0xD7, 0xCA, 0xFB, 0x80, 0x09, + 0x31, 0xCE, 0xF5, 0x9D, 0x74, 0xCE, 0xA5, 0x59, 0x9A, 0x24, 0x22, 0x78, + 0xBF, 0x5C, 0xAE, 0xDB, 0xA6, 0x47, 0x08, 0xF5, 0x7D, 0xAF, 0x8D, 0x55, + 0xCA, 0x54, 0x65, 0xBE, 0x58, 0x35, 0x79, 0x96, 0x0A, 0xC1, 0x8B, 0x3C, + 0xAB, 0x46, 0x39, 0xC6, 0x08, 0x82, 0x7F, 0xF1, 0xFC, 0xE5, 0xF9, 0xE5, + 0xB5, 0xD4, 0xBA, 0xC8, 0xF3, 0x22, 0xCF, 0x93, 0x84, 0x23, 0x00, 0x8C, + 0xE1, 0xC9, 0x83, 0xBD, 0x83, 0xBD, 0x51, 0x9A, 0x66, 0xB3, 0xF9, 0xEA, + 0xAB, 0xEF, 0xDF, 0x68, 0xE3, 0x11, 0x42, 0x45, 0x9E, 0x53, 0xC6, 0x7A, + 0xA9, 0x00, 0xA1, 0xC5, 0xAA, 0x6E, 0xDA, 0x2E, 0x3A, 0x20, 0x52, 0xC1, + 0x57, 0xCB, 0xBA, 0xEB, 0x5A, 0x8C, 0xF1, 0xDE, 0xDE, 0x94, 0x31, 0xAA, + 0x94, 0xC6, 0x88, 0xD4, 0x75, 0x4B, 0x28, 0x31, 0xC6, 0x5C, 0xCF, 0x16, + 0x8C, 0xB3, 0xC3, 0x83, 0x29, 0xE7, 0x94, 0x10, 0x32, 0x19, 0x8F, 0x84, + 0x60, 0x14, 0xE3, 0xD9, 0x6C, 0xC9, 0x04, 0xCF, 0xB2, 0x14, 0x63, 0xC4, + 0x28, 0x33, 0xC6, 0xFA, 0xE0, 0x09, 0xC6, 0x6D, 0xD7, 0x1A, 0x6D, 0x12, + 0xC1, 0x72, 0x41, 0xCE, 0xCE, 0xE7, 0x67, 0xE7, 0xD7, 0xB3, 0xEB, 0xD9, + 0xDB, 0x77, 0xE7, 0x7D, 0x2F, 0xBB, 0xAE, 0xC5, 0x98, 0x68, 0xAD, 0xBB, + 0xBE, 0x77, 0xCE, 0x69, 0x65, 0xEA, 0xA6, 0x45, 0x08, 0xC5, 0xBD, 0xC9, + 0x18, 0x0B, 0x18, 0xA5, 0x89, 0x18, 0x5C, 0x6F, 0xD6, 0x51, 0x46, 0x8D, + 0x75, 0xC6, 0x38, 0x4C, 0x48, 0xEC, 0xA5, 0x24, 0x95, 0xF6, 0x01, 0x18, + 0xA3, 0x42, 0x88, 0xF5, 0xAA, 0x3E, 0xD8, 0x9F, 0xBC, 0xBF, 0xB8, 0xB6, + 0xCE, 0xDE, 0x3F, 0x3E, 0x04, 0x14, 0xAE, 0xAE, 0x17, 0x94, 0x92, 0xA6, + 0xED, 0x67, 0x8B, 0xB5, 0xB5, 0xF6, 0xF2, 0x6A, 0xF1, 0xEC, 0xC5, 0x9B, + 0xB7, 0xA7, 0x57, 0x00, 0xE8, 0xE1, 0xC9, 0x41, 0x59, 0xA4, 0xEB, 0xBA, + 0xBB, 0x9A, 0xAD, 0x2E, 0xAF, 0x17, 0x47, 0x07, 0x13, 0x21, 0xF8, 0x87, + 0xEA, 0xF9, 0xC7, 0x5D, 0x0D, 0xBF, 0x4B, 0x55, 0xDF, 0xAE, 0xAB, 0xAD, + 0xC8, 0x6D, 0xD7, 0x18, 0x46, 0xE8, 0xFB, 0x97, 0xEF, 0xFE, 0xEE, 0xD7, + 0xCF, 0xFF, 0xEE, 0xD7, 0xCF, 0x5E, 0x9F, 0x5E, 0x01, 0x20, 0x65, 0xCC, + 0xD9, 0xF9, 0x2C, 0x46, 0x66, 0x7B, 0xA5, 0xE7, 0x8B, 0xF5, 0x62, 0xB1, + 0xEE, 0xA5, 0x8C, 0x49, 0xCB, 0x52, 0x6A, 0x19, 0x2B, 0x90, 0xB4, 0x69, + 0x9A, 0x5E, 0x6B, 0xAD, 0xB5, 0xED, 0xFB, 0x3E, 0x56, 0x9B, 0x6E, 0x81, + 0xD2, 0x5A, 0x57, 0x16, 0xD9, 0xE1, 0xE1, 0xF4, 0x7A, 0xB6, 0x9A, 0xCD, + 0x16, 0x59, 0x96, 0x44, 0x91, 0xEF, 0xA5, 0x9A, 0x8E, 0x8B, 0x24, 0xE1, + 0x10, 0x02, 0x63, 0xD4, 0x59, 0x17, 0x20, 0x68, 0xE3, 0x7E, 0xF3, 0xCD, + 0x8B, 0x57, 0xEF, 0xCE, 0xAB, 0x32, 0xC7, 0x18, 0xA7, 0x09, 0x1F, 0x57, + 0xB9, 0xD6, 0xF6, 0xF4, 0xFD, 0x95, 0x36, 0x9A, 0x12, 0xCA, 0x39, 0x8B, + 0x11, 0x41, 0x65, 0xCC, 0xC5, 0xD5, 0xC2, 0x7B, 0xDF, 0x75, 0xBD, 0xF7, + 0xA1, 0xEF, 0xFA, 0x2F, 0x7F, 0xF3, 0x9D, 0xB6, 0xF0, 0xF0, 0xE4, 0xE0, + 0xE4, 0x68, 0x1C, 0x02, 0x74, 0xBD, 0x8A, 0x51, 0xD4, 0xDB, 0x07, 0x1E, + 0xE8, 0x70, 0xD0, 0x06, 0x5F, 0x30, 0xC6, 0x80, 0x20, 0x26, 0x45, 0x21, + 0x1C, 0xB3, 0x28, 0xB6, 0x8E, 0x2B, 0x84, 0x76, 0xDC, 0xF6, 0xBB, 0x26, + 0xD4, 0x16, 0xF8, 0xB6, 0x66, 0xEC, 0xAE, 0x63, 0x67, 0x67, 0xB4, 0x6F, + 0x4E, 0xB8, 0x10, 0xA2, 0x67, 0xCD, 0x87, 0x40, 0x7E, 0xF6, 0x17, 0xFF, + 0x7E, 0x77, 0xF4, 0xEF, 0xFE, 0x1D, 0x1E, 0x6C, 0x00, 0x2C, 0x6C, 0xA0, + 0x31, 0x3E, 0xDE, 0x60, 0xEB, 0x76, 0x82, 0x43, 0x08, 0x90, 0x09, 0xB6, + 0x69, 0x02, 0x04, 0x21, 0x04, 0xC1, 0xC9, 0xA7, 0x0F, 0xF6, 0xF6, 0x27, + 0x45, 0x9E, 0xA5, 0x69, 0xC2, 0x63, 0x27, 0x1E, 0xBA, 0xE1, 0x77, 0x8D, + 0x71, 0x99, 0x98, 0x9B, 0xAE, 0x8D, 0xD5, 0xDA, 0x52, 0x4A, 0xB2, 0x94, + 0x27, 0x82, 0x0B, 0x21, 0x22, 0x80, 0xFD, 0x03, 0x95, 0xAC, 0x5B, 0xB7, + 0xBD, 0x7B, 0x66, 0x7B, 0x47, 0xB7, 0x9E, 0xA2, 0x0D, 0x67, 0x9B, 0xB5, + 0xCE, 0x18, 0xAB, 0xF5, 0x50, 0xED, 0xB1, 0x25, 0x56, 0xDC, 0x5E, 0x13, + 0x0F, 0x63, 0x06, 0xA8, 0x8B, 0x57, 0xC6, 0xE5, 0xE5, 0x9C, 0xEB, 0x7B, + 0xED, 0x3C, 0xFC, 0xED, 0xDF, 0x7D, 0x39, 0x9B, 0xAD, 0x18, 0x67, 0x7B, + 0xE3, 0xF2, 0xE4, 0x68, 0xDF, 0x3A, 0xAF, 0xE3, 0x61, 0xBD, 0x0B, 0x80, + 0x31, 0x71, 0xD6, 0x35, 0x4D, 0x2B, 0xA5, 0x46, 0x08, 0x8B, 0x44, 0x88, + 0x24, 0x09, 0x80, 0xAC, 0xF5, 0xD6, 0xBA, 0x00, 0x41, 0x24, 0xE9, 0x74, + 0x32, 0x4A, 0x12, 0x6E, 0x8D, 0xCD, 0xF3, 0x2C, 0x04, 0x9F, 0xA4, 0x89, + 0xD2, 0x86, 0x51, 0xAA, 0xB5, 0xE5, 0x9C, 0x55, 0x65, 0x51, 0x16, 0xF9, + 0xC1, 0xFE, 0x64, 0x34, 0x2A, 0x10, 0x0A, 0xC6, 0xB8, 0xBE, 0x69, 0x5E, + 0xBF, 0x79, 0x4B, 0xB9, 0xD8, 0xDF, 0x1B, 0x57, 0x45, 0xEA, 0x62, 0xA3, + 0x13, 0x4A, 0x20, 0xF8, 0xE0, 0xC3, 0x62, 0xDD, 0xBD, 0x7B, 0x7F, 0xF9, + 0xE2, 0xCD, 0x79, 0xD7, 0x47, 0xCE, 0x58, 0x0C, 0x00, 0xCE, 0x39, 0xA5, + 0xB4, 0x73, 0xBE, 0xED, 0xFA, 0x24, 0x49, 0x30, 0x42, 0x6D, 0xDB, 0x5D, + 0x5E, 0xCE, 0xD6, 0xEB, 0xBA, 0xEF, 0xA5, 0x73, 0x9E, 0x0B, 0xBE, 0x5E, + 0xAD, 0x03, 0x20, 0xA5, 0xE4, 0xF9, 0xF9, 0xA5, 0xF7, 0x60, 0x8C, 0x41, + 0x08, 0xB2, 0x2C, 0x59, 0xAD, 0x6B, 0x63, 0x1C, 0xC2, 0xA8, 0xA9, 0x9B, + 0xAE, 0xED, 0xBC, 0x55, 0x97, 0xD7, 0x8B, 0x80, 0x50, 0x9E, 0xA5, 0xAB, + 0x75, 0xCD, 0x39, 0x8F, 0x2E, 0x58, 0xE7, 0xDC, 0xC0, 0x45, 0x69, 0x35, + 0x20, 0xD4, 0x4A, 0xDB, 0xC9, 0x5E, 0x08, 0xF1, 0xFE, 0xEC, 0xE2, 0xF0, + 0x60, 0x0F, 0x21, 0xE4, 0xBD, 0x4F, 0xD3, 0x84, 0xD0, 0x4D, 0x12, 0x75, + 0x08, 0x08, 0x81, 0xF7, 0x0E, 0x13, 0xAC, 0xAC, 0xC5, 0x08, 0x59, 0x63, + 0x01, 0xBC, 0xF5, 0x9E, 0x12, 0x6C, 0xAD, 0xF5, 0x01, 0xBA, 0x5E, 0x32, + 0xC6, 0x30, 0x8E, 0x1D, 0x33, 0x8D, 0xB5, 0x4E, 0x08, 0x56, 0x96, 0x19, + 0x21, 0xC4, 0x39, 0x37, 0xAA, 0x8A, 0xE5, 0xBA, 0x89, 0xE9, 0x3C, 0x65, + 0x96, 0xAE, 0xD7, 0x2D, 0xC6, 0xB8, 0xED, 0xE5, 0xBA, 0x6E, 0x95, 0xD4, + 0xCA, 0x18, 0x67, 0xED, 0xF5, 0x7C, 0x75, 0x3D, 0x5F, 0xDD, 0x3B, 0x98, + 0x1E, 0x1F, 0x4D, 0x85, 0xE0, 0x8B, 0xE5, 0x9A, 0x60, 0x7C, 0xB8, 0x3F, + 0x76, 0x1F, 0x92, 0x64, 0xFD, 0x43, 0x8E, 0xED, 0x32, 0xDB, 0x15, 0x9C, + 0x1D, 0x41, 0x05, 0xCE, 0xD9, 0xE9, 0xFB, 0xAB, 0xFF, 0xE5, 0x7F, 0xFD, + 0x8F, 0xAB, 0x5A, 0xA6, 0x69, 0x7A, 0x71, 0x39, 0x8F, 0x85, 0xE9, 0xD3, + 0xC9, 0x38, 0x49, 0xF8, 0xBA, 0x6E, 0x0E, 0xF6, 0x26, 0xD6, 0xB8, 0x75, + 0xDD, 0x72, 0x4E, 0x03, 0x42, 0x46, 0x0F, 0x3A, 0x97, 0xB5, 0xF6, 0xDE, + 0xD1, 0xDE, 0xC3, 0xFB, 0x47, 0x79, 0x91, 0x49, 0xA9, 0xA5, 0x54, 0xDE, + 0x7B, 0xEF, 0x1D, 0x1E, 0x3A, 0xE1, 0x41, 0x34, 0x57, 0xF7, 0xA7, 0xE3, + 0x8B, 0xD9, 0xD2, 0x5A, 0x77, 0xB8, 0x3F, 0x7D, 0xFC, 0xE8, 0xDE, 0x72, + 0xD5, 0x2C, 0xEB, 0x46, 0x2A, 0x7D, 0xB8, 0x3F, 0x71, 0xD6, 0x1B, 0x63, + 0xA2, 0xBB, 0x2A, 0x6E, 0xFF, 0x8B, 0x65, 0x93, 0xE7, 0x29, 0xC6, 0x68, + 0x3A, 0x2A, 0xB3, 0x2C, 0x89, 0xED, 0xD5, 0x29, 0xA5, 0x5D, 0xDF, 0xA7, + 0x69, 0x92, 0x08, 0x2E, 0x95, 0xFE, 0xCD, 0xD7, 0xCF, 0x01, 0xD0, 0x7C, + 0xB9, 0x92, 0x52, 0x1D, 0x1D, 0xEE, 0x8F, 0xAA, 0xB2, 0x6D, 0x3B, 0x6D, + 0x4D, 0x27, 0xAD, 0x10, 0x6C, 0xB1, 0x58, 0xFF, 0x87, 0xBF, 0xFD, 0xAA, + 0xED, 0xD4, 0x83, 0xA3, 0x3D, 0xB4, 0x93, 0x5E, 0x70, 0xA3, 0x1F, 0x0D, + 0xE8, 0xB3, 0xD5, 0x81, 0x30, 0xC1, 0x98, 0xC4, 0xA4, 0x8A, 0xBB, 0xCE, + 0xB5, 0x1B, 0xFD, 0x37, 0x36, 0xF4, 0x0E, 0x37, 0xF1, 0xCF, 0x38, 0xB6, + 0xE1, 0x03, 0x7C, 0x96, 0x71, 0x76, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x41, 0xDE, 0x0E, 0xF5, 0x16, 0x79, 0x7C, 0x08, 0x76, 0xCB, + 0x0C, 0x17, 0x50, 0x08, 0x40, 0xFE, 0xFC, 0x2F, 0x7E, 0xBE, 0x89, 0x53, + 0xDE, 0xD6, 0x59, 0x76, 0x31, 0x77, 0x5B, 0x88, 0xB5, 0x73, 0x7E, 0x08, + 0x39, 0x0C, 0x9D, 0x4A, 0x10, 0x50, 0x12, 0x6B, 0x27, 0x11, 0xA3, 0x18, + 0x01, 0x0A, 0x01, 0x8A, 0x94, 0x1F, 0x4E, 0x8B, 0xFB, 0x87, 0xA3, 0x51, + 0x99, 0x31, 0xCE, 0x76, 0x55, 0xA7, 0xCD, 0x0E, 0xB6, 0xD5, 0xA1, 0x60, + 0xB0, 0xC5, 0xD2, 0x24, 0xCF, 0x53, 0x21, 0x44, 0x44, 0xB0, 0x8F, 0xE2, + 0xD7, 0x47, 0x31, 0xEB, 0xCE, 0x4E, 0xF1, 0x11, 0x15, 0x6C, 0xF7, 0xFA, + 0x98, 0x64, 0xE8, 0x87, 0xC3, 0x45, 0xCB, 0x3C, 0xC6, 0x77, 0x36, 0xA6, + 0x2B, 0xD9, 0x5E, 0x1C, 0x06, 0x37, 0x64, 0xB0, 0xD6, 0x19, 0xE3, 0xAC, + 0xF5, 0x03, 0x03, 0xB3, 0xF7, 0x00, 0x21, 0x36, 0x12, 0x63, 0x8C, 0xBE, + 0x7D, 0xF7, 0x5E, 0x4A, 0x95, 0x67, 0xC9, 0x83, 0x93, 0x83, 0xAC, 0x28, + 0x18, 0x63, 0xBD, 0xD2, 0xDE, 0x03, 0x67, 0xC4, 0xF9, 0xA0, 0x8D, 0x75, + 0x37, 0x4E, 0x3D, 0x6C, 0xAC, 0x35, 0xC6, 0x6A, 0x6B, 0xAD, 0x75, 0x52, + 0xE9, 0xAA, 0x2A, 0xC7, 0xA3, 0x2A, 0xBA, 0xD5, 0x00, 0x21, 0x9E, 0xF0, + 0x7B, 0x87, 0xFB, 0x3E, 0xF8, 0xAE, 0x57, 0x08, 0x61, 0x21, 0xF8, 0xFE, + 0xDE, 0xA4, 0x28, 0x32, 0xE3, 0x5C, 0x91, 0xA7, 0xC1, 0x87, 0xCB, 0xCB, + 0xF9, 0x7A, 0x5D, 0x9F, 0x9F, 0x9F, 0x53, 0x26, 0xF2, 0x22, 0xCF, 0xB3, + 0xD4, 0x68, 0x93, 0x67, 0x82, 0x52, 0xE2, 0xAC, 0x9D, 0x5D, 0x2F, 0x09, + 0xA5, 0x9C, 0xB3, 0xEB, 0xF9, 0xAA, 0xC8, 0xF3, 0x51, 0x55, 0x22, 0x04, + 0xA3, 0x51, 0x21, 0x38, 0x73, 0x6E, 0x48, 0xDF, 0x93, 0x52, 0xF5, 0xBD, + 0xBC, 0x38, 0xBF, 0xEA, 0x9A, 0x6E, 0x5D, 0xAF, 0x23, 0x05, 0x93, 0xB3, + 0xCE, 0x79, 0x5F, 0xD7, 0xCD, 0x64, 0x3C, 0x3A, 0x3B, 0x3B, 0xB7, 0xD6, + 0x7A, 0x6F, 0x01, 0xC2, 0xE1, 0xE1, 0xBE, 0x54, 0xBA, 0x28, 0xF2, 0xE3, + 0x7B, 0x07, 0xB2, 0x97, 0x21, 0x84, 0xBE, 0x97, 0xFD, 0x6A, 0x55, 0xAF, + 0x9B, 0x41, 0x1D, 0x63, 0xDC, 0x59, 0x8B, 0x31, 0xB6, 0xD6, 0x19, 0xAD, + 0xB3, 0x24, 0xE9, 0x65, 0x0F, 0xDE, 0xFE, 0xFA, 0xB7, 0xCF, 0x7A, 0xA5, + 0x21, 0x04, 0x63, 0xED, 0xC5, 0xE5, 0xE5, 0xFD, 0x93, 0x63, 0x6B, 0xAD, + 0x52, 0xCA, 0xFB, 0x00, 0x08, 0x23, 0x84, 0xAC, 0x73, 0x08, 0x21, 0x4A, + 0x08, 0x00, 0x20, 0x8C, 0x43, 0xF0, 0x28, 0x0C, 0x2C, 0xBB, 0x21, 0x04, + 0x42, 0xB0, 0x0F, 0x40, 0x08, 0xC5, 0x84, 0x58, 0x63, 0xCB, 0x22, 0x03, + 0x08, 0x52, 0x69, 0x42, 0x48, 0x88, 0xA9, 0x8B, 0xDA, 0xF4, 0xBD, 0x2C, + 0xF2, 0xD4, 0x79, 0xA7, 0x8D, 0x19, 0x55, 0x45, 0xD3, 0xF5, 0x79, 0x9E, + 0x21, 0x04, 0x18, 0x21, 0x6B, 0xED, 0xBA, 0x6E, 0xA5, 0x54, 0xCE, 0x39, + 0x65, 0xF4, 0xBA, 0x6E, 0xAF, 0xE7, 0x2B, 0x6B, 0x5D, 0x91, 0xA7, 0x55, + 0x91, 0xBB, 0xE0, 0xF3, 0x2C, 0xE1, 0x8C, 0x7D, 0x48, 0xF8, 0x77, 0xDB, + 0xAE, 0xFC, 0x5D, 0xEE, 0xB0, 0xBB, 0x4B, 0x6E, 0x2B, 0x6C, 0x8C, 0xD1, + 0xEF, 0x9F, 0xBD, 0xBD, 0x9A, 0xD5, 0xCA, 0xFA, 0xE8, 0x12, 0x35, 0xD6, + 0x1D, 0xEC, 0x4F, 0x38, 0xA7, 0x04, 0xE3, 0xCF, 0x3E, 0x79, 0xC8, 0x39, + 0xCD, 0xF3, 0x1C, 0x10, 0x72, 0x9B, 0x1D, 0x14, 0x63, 0x44, 0x28, 0xF9, + 0xD1, 0x17, 0x9F, 0x3C, 0xBE, 0x7F, 0xEF, 0xE2, 0x6A, 0x7E, 0x7A, 0x76, + 0xA9, 0xB5, 0x89, 0xB4, 0x3F, 0x5A, 0xDB, 0x58, 0x14, 0x19, 0x07, 0xAA, + 0x97, 0x2A, 0x49, 0x92, 0x4F, 0x1E, 0x9D, 0x1C, 0x1D, 0x4C, 0x46, 0x55, + 0xF9, 0xF8, 0xFE, 0x61, 0x9A, 0xF2, 0x87, 0xF7, 0x0F, 0x0F, 0xA7, 0x23, + 0xAD, 0xAD, 0x87, 0x30, 0x5B, 0xAC, 0x7B, 0xA9, 0x00, 0x23, 0x8C, 0x10, + 0xE7, 0x8C, 0x32, 0xB2, 0x5A, 0x37, 0x00, 0x50, 0xB7, 0xDD, 0x62, 0xD5, + 0xAC, 0xEB, 0xF6, 0xF2, 0x7A, 0xDE, 0xF7, 0x6A, 0x3A, 0x19, 0x39, 0xE7, + 0xEA, 0xA6, 0x5B, 0xAF, 0x5B, 0x6B, 0x5D, 0x55, 0xE5, 0x93, 0x71, 0x75, + 0x7E, 0x31, 0xFF, 0xE6, 0xBB, 0xE7, 0xBD, 0x54, 0x45, 0x59, 0x94, 0x65, + 0x1E, 0x00, 0x5D, 0x2F, 0xEA, 0x67, 0xAF, 0xCE, 0xDB, 0x4E, 0x37, 0xAD, + 0x2C, 0xF3, 0x74, 0x3A, 0x29, 0xB6, 0x01, 0x2E, 0xB4, 0xC9, 0x92, 0xDB, + 0x75, 0x9F, 0x45, 0xD9, 0x26, 0x18, 0x6D, 0x20, 0xEE, 0x06, 0x86, 0x76, + 0x04, 0x0A, 0xC2, 0xD0, 0x42, 0x29, 0xA0, 0xAD, 0xAB, 0x6C, 0x73, 0x4D, + 0x6C, 0xA9, 0xBA, 0x3B, 0xA4, 0xDB, 0x89, 0xD9, 0xF2, 0x54, 0x47, 0xF0, + 0x8B, 0x30, 0x84, 0x10, 0x90, 0x3F, 0xFF, 0x77, 0xFF, 0x33, 0xFA, 0x70, + 0xDA, 0x76, 0xE7, 0x29, 0xFE, 0x87, 0xE1, 0xA6, 0x5E, 0xF3, 0xC3, 0x19, + 0x1D, 0xD2, 0x49, 0x00, 0x01, 0x41, 0x38, 0x4B, 0x68, 0x36, 0xF4, 0xD3, + 0x05, 0x4A, 0xF1, 0xFE, 0x38, 0xBF, 0xB7, 0x5F, 0x8D, 0x8A, 0x24, 0x49, + 0x38, 0x26, 0xF4, 0xB6, 0xD5, 0xB7, 0x73, 0x60, 0x8C, 0xA3, 0xD9, 0x18, + 0x11, 0x64, 0x83, 0xD9, 0x77, 0x7F, 0xD1, 0x0D, 0xAC, 0xDC, 0xFA, 0x25, + 0x1F, 0x35, 0x2A, 0x77, 0x1F, 0x7C, 0x30, 0x4C, 0x9B, 0x8A, 0xEE, 0x08, + 0x67, 0x7E, 0xD3, 0xCE, 0x0B, 0x0F, 0x9D, 0xC4, 0x21, 0x6A, 0x88, 0xD6, + 0x3A, 0xE7, 0xBC, 0xDB, 0x34, 0x3C, 0x8C, 0x6D, 0x5D, 0x43, 0x18, 0x62, + 0x17, 0x64, 0x08, 0xA9, 0x60, 0xC6, 0x28, 0x21, 0x98, 0x33, 0x9A, 0x08, + 0x7E, 0x71, 0x7E, 0xB5, 0x5C, 0xD6, 0xC7, 0xC7, 0x87, 0xBD, 0x09, 0xCE, + 0x03, 0xE5, 0x9C, 0x50, 0x1A, 0x00, 0x78, 0x92, 0x78, 0x80, 0x10, 0x42, + 0x92, 0x88, 0xB2, 0xCC, 0x4F, 0x4E, 0x8E, 0x4E, 0x4E, 0xEE, 0x9D, 0x1C, + 0x1F, 0x1D, 0xDF, 0x3B, 0x3C, 0x3A, 0xDC, 0xA7, 0x8C, 0xF7, 0x52, 0xE5, + 0x59, 0xDA, 0xB6, 0x5D, 0x92, 0xF0, 0xC3, 0x83, 0xE9, 0xA3, 0x07, 0xC7, + 0xDE, 0x07, 0xCE, 0x68, 0x59, 0x64, 0x07, 0xFB, 0x7B, 0x69, 0x96, 0x60, + 0x8C, 0xEE, 0x1D, 0xED, 0x51, 0xCA, 0xB2, 0x34, 0xE9, 0xFB, 0xFE, 0xDD, + 0xBB, 0xB3, 0xC5, 0x7C, 0x31, 0x9B, 0xCD, 0xD6, 0xEB, 0x9A, 0x52, 0x3A, + 0x19, 0x8F, 0x94, 0x94, 0x84, 0xD0, 0x84, 0xB3, 0x2C, 0x65, 0xCE, 0xB9, + 0x34, 0xE1, 0x4A, 0x1B, 0x91, 0xA6, 0xD6, 0xBA, 0xC5, 0x62, 0x8D, 0x10, + 0x92, 0x52, 0x36, 0x4D, 0x47, 0x29, 0x2B, 0x8A, 0x8C, 0x60, 0x82, 0x00, + 0x54, 0xDF, 0x9D, 0x9D, 0xBE, 0xBF, 0xB8, 0xBC, 0x8E, 0x6D, 0xD3, 0xFA, + 0x5E, 0x36, 0x4D, 0xEB, 0x82, 0x47, 0x80, 0xB4, 0x31, 0x84, 0xD2, 0xA6, + 0x69, 0xB9, 0xE0, 0x18, 0xC2, 0x74, 0x3A, 0x49, 0xB3, 0x34, 0xCF, 0xD2, + 0x24, 0xE1, 0x08, 0xA1, 0x44, 0x08, 0xA5, 0xCD, 0xFE, 0xA4, 0x34, 0x5A, + 0x23, 0x42, 0xC7, 0xA3, 0xD2, 0x18, 0x6B, 0xAC, 0x15, 0x42, 0xF4, 0xBD, + 0xEC, 0xBB, 0x16, 0x03, 0x64, 0x99, 0x48, 0x19, 0x79, 0xFD, 0xFA, 0xEC, + 0xF4, 0xFC, 0x2A, 0x38, 0xBB, 0x5C, 0xAC, 0xFA, 0x5E, 0x6A, 0x65, 0x8A, + 0xAA, 0x40, 0x28, 0x2C, 0x16, 0x2B, 0xC6, 0x58, 0xCC, 0xBD, 0x20, 0x84, + 0x94, 0x65, 0x11, 0xBD, 0xA5, 0x10, 0x02, 0x63, 0x2C, 0xC4, 0xA8, 0x65, + 0x08, 0x18, 0x21, 0xE7, 0x3C, 0x84, 0xE0, 0x21, 0x10, 0x42, 0xA4, 0xD4, + 0x80, 0x60, 0x3A, 0x19, 0x5B, 0xEB, 0x7A, 0x29, 0x29, 0xA1, 0x18, 0x23, + 0x40, 0xE0, 0x7D, 0xE8, 0xA5, 0x64, 0x8C, 0x2F, 0x16, 0x2B, 0xEB, 0x86, + 0xFE, 0x50, 0x9C, 0x51, 0xA5, 0x4D, 0xDD, 0xF4, 0x11, 0x73, 0x21, 0x84, + 0xAA, 0xC8, 0x23, 0x7D, 0xC8, 0xAA, 0x6E, 0x19, 0x65, 0x08, 0xC0, 0x6A, + 0xEB, 0x9D, 0xDD, 0x9F, 0x8C, 0x8C, 0xB5, 0x1B, 0x37, 0xEF, 0x76, 0xA9, + 0xFC, 0x4E, 0x03, 0x65, 0xBB, 0xFC, 0x76, 0x9D, 0xB3, 0x5B, 0x08, 0x8B, + 0xFF, 0x84, 0xE0, 0x2F, 0x5E, 0x9D, 0xBE, 0x78, 0x75, 0x76, 0xEF, 0xDE, + 0xE1, 0xBA, 0x69, 0x37, 0x9D, 0x07, 0x7C, 0x96, 0x25, 0x00, 0x08, 0x23, + 0x20, 0x04, 0xAF, 0x9A, 0x2E, 0xCF, 0xD3, 0xAE, 0x57, 0xD1, 0x78, 0x4C, + 0x12, 0x91, 0x65, 0x49, 0x9A, 0x8A, 0x67, 0xCF, 0xDF, 0x5E, 0x5C, 0xCD, + 0xE2, 0xA4, 0x00, 0x80, 0x0F, 0x70, 0xEF, 0xDE, 0xFE, 0xF1, 0xD1, 0x9E, + 0xF7, 0xA1, 0x69, 0x3A, 0xCE, 0x99, 0x10, 0xBC, 0x97, 0xEA, 0x8B, 0xCF, + 0x1F, 0xFD, 0xF3, 0x7F, 0xF2, 0xE3, 0xE3, 0xA3, 0xA9, 0xE0, 0x74, 0x7F, + 0x3A, 0x8A, 0x3E, 0x17, 0xA9, 0x74, 0x96, 0xF2, 0x32, 0xCF, 0x92, 0x84, + 0x6B, 0x6D, 0xFB, 0x5E, 0x67, 0x99, 0xC8, 0xD3, 0xC4, 0xFB, 0x30, 0x5B, + 0xAC, 0x16, 0xAB, 0xFA, 0x6A, 0xB6, 0x7A, 0xF6, 0xE2, 0x8D, 0x73, 0xA1, + 0x2A, 0x8A, 0xF9, 0x72, 0x75, 0x71, 0x35, 0x33, 0xC6, 0xF6, 0x4A, 0x69, + 0x6B, 0xA7, 0x93, 0x31, 0x21, 0xF8, 0xD3, 0x4F, 0x1E, 0x00, 0x20, 0xCE, + 0xF9, 0x8F, 0xBF, 0x78, 0xF2, 0xF4, 0xC9, 0xFD, 0x44, 0xF0, 0xD7, 0x6F, + 0xCF, 0x26, 0xE3, 0xD1, 0x6C, 0xBE, 0x5C, 0xAC, 0xEA, 0x5E, 0xDB, 0x37, + 0x67, 0x57, 0x52, 0xEA, 0xE3, 0xC3, 0x89, 0x31, 0x36, 0x00, 0x6C, 0x52, + 0x55, 0x3F, 0x64, 0x2D, 0x45, 0x08, 0x62, 0x2A, 0xD8, 0x16, 0x6C, 0x76, + 0x24, 0xD7, 0x0F, 0x74, 0x1D, 0x38, 0xAA, 0x0E, 0xE4, 0xE6, 0xED, 0x1B, + 0xB1, 0x05, 0xC0, 0x3B, 0xF6, 0x10, 0x6C, 0xF6, 0x96, 0x8D, 0x39, 0x88, + 0x00, 0x20, 0x32, 0x98, 0x6F, 0x02, 0x80, 0x88, 0x0E, 0x90, 0x16, 0x36, + 0xAD, 0x4D, 0x76, 0x0A, 0xA1, 0xC3, 0x8E, 0xE7, 0x73, 0x1B, 0x23, 0xD8, + 0x30, 0x97, 0x05, 0x08, 0x38, 0xB6, 0x3F, 0x8B, 0x5F, 0x99, 0x70, 0xC2, + 0x29, 0x29, 0x33, 0x8E, 0x10, 0xE2, 0x8C, 0x0A, 0x4E, 0xA3, 0x76, 0xE0, + 0x7D, 0x00, 0xC0, 0xBB, 0xE0, 0xF7, 0xBB, 0x8E, 0xF0, 0xBB, 0xA0, 0xEB, + 0xC3, 0xE3, 0x16, 0x48, 0xC3, 0x6D, 0x6C, 0xFD, 0x88, 0x75, 0x09, 0x3B, + 0x46, 0xE5, 0xF6, 0xF1, 0x76, 0x1C, 0x07, 0x95, 0x6C, 0x70, 0x8D, 0x05, + 0xEF, 0x7D, 0x6C, 0x09, 0x6E, 0xAC, 0x1D, 0x66, 0x68, 0xF3, 0x17, 0x13, + 0x44, 0x30, 0x12, 0x2C, 0x26, 0xE2, 0x7E, 0x40, 0xAA, 0x17, 0x07, 0x34, + 0xE1, 0x54, 0x70, 0x76, 0x79, 0xBD, 0x14, 0xC9, 0xE0, 0xB9, 0x10, 0x69, + 0x96, 0x16, 0x65, 0xF0, 0xBE, 0x1A, 0xB9, 0x00, 0xA0, 0xB5, 0x11, 0x89, + 0x40, 0x08, 0x19, 0x6D, 0x8D, 0x75, 0xC6, 0x1A, 0x6D, 0x6C, 0x92, 0xF0, + 0x3C, 0x4B, 0x8B, 0x3C, 0xA3, 0x94, 0x64, 0x69, 0x96, 0x67, 0x59, 0x24, + 0x05, 0x4D, 0xB3, 0x84, 0x32, 0x1A, 0x42, 0x10, 0x9D, 0xDC, 0x9B, 0x8C, + 0x00, 0xD0, 0x6A, 0xB5, 0x5A, 0xCC, 0xE6, 0x4D, 0xDD, 0x04, 0x08, 0x18, + 0xA1, 0xB6, 0xEB, 0xB3, 0x2C, 0x25, 0x04, 0xCF, 0xE7, 0x0B, 0xCE, 0x79, + 0x08, 0x90, 0x70, 0x22, 0x04, 0x43, 0x10, 0xAE, 0xE7, 0x0B, 0x9E, 0x64, + 0xCE, 0x39, 0xCE, 0x69, 0x55, 0x15, 0xCE, 0xB9, 0xD5, 0xAA, 0xC1, 0x18, + 0x5B, 0x1B, 0x9A, 0xAE, 0xA7, 0x94, 0xCE, 0x67, 0x73, 0x8A, 0xC3, 0x4F, + 0x3E, 0x7F, 0xF4, 0xAE, 0xCC, 0x16, 0xAB, 0x66, 0xBE, 0x58, 0x21, 0x8C, + 0x09, 0x25, 0x84, 0x50, 0x8C, 0x71, 0x9A, 0xA6, 0x7D, 0x2F, 0xA3, 0x9D, + 0x3D, 0x1D, 0x17, 0xEB, 0x55, 0xED, 0x9C, 0x7F, 0xFA, 0xF4, 0x51, 0xAC, + 0x02, 0x6B, 0xBB, 0xBE, 0x2C, 0xB2, 0x3C, 0x21, 0xAF, 0xD6, 0x0D, 0x65, + 0x1C, 0x13, 0x52, 0x8D, 0x72, 0xE7, 0x43, 0xDB, 0xF7, 0x2F, 0x5E, 0xBC, + 0xC9, 0xD2, 0xF4, 0x07, 0x9F, 0x3D, 0x5E, 0xAF, 0x56, 0xF5, 0xBA, 0x99, + 0xAD, 0x7B, 0x6D, 0xDD, 0x34, 0x11, 0x84, 0xE0, 0x75, 0xD3, 0x27, 0x89, + 0x58, 0xAD, 0xEA, 0xA2, 0x48, 0xAB, 0xAA, 0x0C, 0x21, 0x70, 0xCA, 0xE2, + 0xD8, 0xB7, 0x7D, 0x2F, 0x18, 0x63, 0x94, 0x69, 0x63, 0xA2, 0xE3, 0xD7, + 0x18, 0x83, 0x31, 0xA1, 0x94, 0x00, 0x80, 0x31, 0x06, 0x01, 0x20, 0xC2, + 0xCA, 0x32, 0x6B, 0xDA, 0xBE, 0x6E, 0xBA, 0xA3, 0xC3, 0xFD, 0xC8, 0xCE, + 0x58, 0x95, 0x79, 0x8C, 0x86, 0xA9, 0x60, 0x99, 0x94, 0x80, 0xD0, 0xFB, + 0xF3, 0xAB, 0xB2, 0xC8, 0x55, 0x9E, 0xAB, 0x54, 0x07, 0x80, 0xBE, 0x97, + 0x5D, 0xD7, 0x91, 0xC8, 0x80, 0xEE, 0x7D, 0x9E, 0xA7, 0x79, 0x96, 0x12, + 0x4A, 0x67, 0xCB, 0x5A, 0x70, 0x56, 0x16, 0x29, 0x89, 0x19, 0x70, 0x28, + 0x76, 0x98, 0xDE, 0xF5, 0x3F, 0xC4, 0xAD, 0xEE, 0x23, 0x0B, 0x6C, 0x77, + 0x1D, 0x6E, 0xDD, 0xCF, 0xB7, 0x2E, 0x8B, 0x42, 0x21, 0x18, 0x4E, 0x05, + 0x0F, 0x01, 0x84, 0xE0, 0x82, 0xF3, 0xBA, 0x69, 0x28, 0x63, 0xD3, 0x49, + 0xB5, 0x5C, 0x37, 0xE7, 0x17, 0xB3, 0x3C, 0x4F, 0x9F, 0x3C, 0xBE, 0x1F, + 0x97, 0x1D, 0xA5, 0xA4, 0x69, 0x3A, 0x4A, 0xC9, 0xAB, 0xD7, 0xA7, 0x08, + 0xA1, 0xC9, 0x64, 0x34, 0x9F, 0x2F, 0xB5, 0x36, 0xD3, 0xBD, 0xF1, 0xE7, + 0x4F, 0x1F, 0xFE, 0xE0, 0xD3, 0xFB, 0xE3, 0xB2, 0xA8, 0xDB, 0xFE, 0x17, + 0xFF, 0xE9, 0xAB, 0xD3, 0xF7, 0x57, 0x8B, 0xE5, 0xAA, 0x28, 0xD2, 0xF7, + 0x17, 0x73, 0x6B, 0xCC, 0x9F, 0xFC, 0xD1, 0x0F, 0x97, 0x6B, 0xE5, 0xC3, + 0xD0, 0x4F, 0x76, 0x3C, 0x2A, 0x00, 0xC0, 0x59, 0xC7, 0x08, 0xC1, 0x18, + 0x4B, 0xDD, 0xAB, 0x6B, 0x3D, 0x1E, 0x95, 0xD6, 0xD9, 0xE9, 0xA4, 0xDA, + 0x9F, 0x8E, 0xA5, 0xD2, 0x9F, 0x3F, 0x7D, 0x50, 0x16, 0x39, 0x40, 0x58, + 0xAE, 0x1A, 0x84, 0x20, 0x4B, 0x92, 0xF9, 0xAA, 0xA6, 0x94, 0xD0, 0xA1, + 0x31, 0x68, 0x72, 0xEF, 0x70, 0x02, 0x00, 0xC6, 0xD8, 0xB3, 0x8B, 0xEB, + 0x2C, 0x4B, 0x9E, 0x3C, 0x3A, 0xE9, 0x7B, 0xB5, 0xBF, 0x37, 0x3E, 0xBF, + 0x9C, 0x5D, 0x5C, 0x2D, 0x10, 0x26, 0xA7, 0x97, 0xAB, 0xC3, 0xBD, 0xC5, + 0xFE, 0xB4, 0x8A, 0xEE, 0x15, 0x82, 0x71, 0xA4, 0xEA, 0x44, 0x9B, 0x12, + 0xC0, 0x10, 0x36, 0xFC, 0xE2, 0x68, 0x70, 0xA2, 0x6F, 0x94, 0x38, 0x70, + 0x3B, 0xD9, 0xB6, 0xDB, 0xDE, 0x7A, 0x9B, 0xA1, 0x1B, 0x14, 0x8C, 0xA8, + 0x68, 0x44, 0x5B, 0xDA, 0x7F, 0x28, 0xD2, 0x3E, 0x04, 0x3F, 0x10, 0xE1, + 0x45, 0xFD, 0x23, 0x76, 0xC3, 0x02, 0x3A, 0xC8, 0x61, 0x84, 0x4C, 0x40, + 0x68, 0xD7, 0x03, 0x77, 0x93, 0x68, 0x81, 0x00, 0x6E, 0xCE, 0xDF, 0x44, + 0x4C, 0x01, 0x30, 0xC6, 0xB1, 0x31, 0x65, 0x00, 0x60, 0x04, 0x11, 0x82, + 0x8B, 0x2C, 0x89, 0x8D, 0x8E, 0x28, 0x25, 0x00, 0x88, 0x90, 0xDF, 0x69, + 0xDF, 0x7D, 0x14, 0x7A, 0x76, 0x17, 0xCA, 0xFF, 0xEF, 0x35, 0xDB, 0x97, + 0x76, 0x71, 0xEA, 0xEE, 0xF5, 0xBB, 0x36, 0xC2, 0xF6, 0xFA, 0xED, 0x83, + 0x6D, 0xB8, 0x20, 0x04, 0x1B, 0x9D, 0x11, 0x04, 0xB6, 0x05, 0x9B, 0x01, + 0xE3, 0x4D, 0x03, 0x4A, 0x8C, 0x49, 0xC0, 0x81, 0x00, 0x80, 0xF3, 0xDE, + 0x6F, 0x34, 0xEA, 0x9B, 0x8D, 0x48, 0x4A, 0xD5, 0x75, 0xFD, 0xC3, 0xFB, + 0x07, 0xD5, 0x78, 0xFC, 0xED, 0xF3, 0x77, 0x52, 0xA9, 0xD1, 0xA8, 0x92, + 0x4A, 0xD7, 0x4D, 0x1F, 0x20, 0xE4, 0x59, 0xDA, 0xD4, 0x6D, 0xD7, 0x2B, + 0x79, 0x31, 0xC3, 0x18, 0x4B, 0xA9, 0x1C, 0x04, 0x00, 0x54, 0xE4, 0x39, + 0x25, 0xE4, 0xF3, 0x4F, 0x1F, 0x31, 0x4A, 0xCE, 0xCF, 0xAF, 0x20, 0x38, + 0x84, 0x20, 0x72, 0x78, 0x20, 0x84, 0xAE, 0xAF, 0xE7, 0x46, 0xEB, 0xE0, + 0xBD, 0x94, 0xAA, 0x6D, 0x9A, 0xA6, 0x6D, 0xBA, 0xA6, 0x2B, 0xF3, 0x1C, + 0x61, 0xC8, 0x8B, 0xEC, 0x93, 0x27, 0x0F, 0x8A, 0x8C, 0xCF, 0x56, 0x1D, + 0x84, 0x30, 0x1E, 0x95, 0x0F, 0xEF, 0xEF, 0x43, 0x08, 0xCE, 0x3A, 0xD9, + 0xF5, 0xDA, 0x38, 0xEB, 0xFB, 0x2C, 0xCF, 0x13, 0x21, 0x08, 0x21, 0xA7, + 0x67, 0x17, 0x52, 0x2A, 0x84, 0x91, 0x10, 0xBC, 0xAA, 0x8A, 0x7A, 0xDD, + 0xCC, 0x66, 0x0B, 0x63, 0x34, 0xC5, 0x68, 0x6F, 0x52, 0x51, 0x4A, 0xF6, + 0x26, 0xD5, 0xBA, 0xEE, 0xD7, 0x4D, 0x9B, 0x66, 0x19, 0x20, 0x84, 0x31, + 0x89, 0x15, 0xCB, 0x45, 0x9E, 0x60, 0x42, 0xFA, 0x4E, 0x1D, 0x57, 0x65, + 0x08, 0x41, 0x4A, 0x59, 0x64, 0xA9, 0x0F, 0x21, 0x17, 0xE4, 0xE5, 0x9B, + 0xF7, 0x69, 0x5E, 0x8C, 0xC7, 0xE3, 0x2C, 0xCF, 0x95, 0xD6, 0xDE, 0x87, + 0x6F, 0xBE, 0x7D, 0x71, 0x79, 0x71, 0xA9, 0xB4, 0x91, 0x4A, 0x2A, 0x29, + 0x39, 0x67, 0x82, 0x93, 0x87, 0x27, 0x07, 0x10, 0x10, 0x26, 0xB8, 0x93, + 0xAA, 0xEB, 0x65, 0x00, 0x24, 0x04, 0xCF, 0xF2, 0x22, 0x78, 0x27, 0x95, + 0x46, 0x08, 0x71, 0xCE, 0xBB, 0x5E, 0xC6, 0xED, 0xD8, 0x7B, 0xAF, 0x95, + 0xE6, 0x9C, 0x11, 0x42, 0xAC, 0xF7, 0x04, 0x30, 0x21, 0x38, 0x04, 0xAA, + 0xB4, 0x35, 0xB6, 0x17, 0x82, 0x13, 0x8C, 0xA5, 0x54, 0x94, 0xE0, 0x87, + 0x0F, 0x8E, 0xA7, 0x93, 0xF1, 0xAB, 0x37, 0xA7, 0x91, 0x3A, 0x8D, 0x73, + 0xE6, 0x5C, 0x10, 0x9C, 0xAF, 0xD6, 0x2D, 0x21, 0xC4, 0x87, 0xD0, 0xB4, + 0x6D, 0x08, 0xD0, 0xB6, 0x7D, 0xDF, 0xF7, 0x79, 0xCA, 0x29, 0xC2, 0x4D, + 0xD3, 0xDA, 0x10, 0x18, 0xA3, 0x93, 0x34, 0xBD, 0xBC, 0x9E, 0xDF, 0x3B, + 0x98, 0xBC, 0x3B, 0xBD, 0x58, 0xAE, 0x56, 0xC7, 0xFF, 0xEA, 0x5F, 0x10, + 0x3C, 0xF4, 0xB8, 0x0A, 0x1B, 0x3E, 0x2B, 0xB4, 0x93, 0x53, 0xBE, 0xD5, + 0xC8, 0x6E, 0xF9, 0x34, 0x36, 0x5C, 0xAF, 0x03, 0x59, 0xE3, 0x56, 0x61, + 0x23, 0x94, 0xB6, 0x4D, 0xBD, 0x9A, 0x5D, 0xFD, 0x93, 0x1F, 0x3F, 0x5A, + 0x6A, 0x18, 0x55, 0xB9, 0xE0, 0x7C, 0xBE, 0x58, 0xAF, 0xEB, 0x3A, 0x4E, + 0xEE, 0xE9, 0xD9, 0x65, 0x54, 0xF0, 0xDF, 0xBE, 0x3B, 0x47, 0x08, 0xAC, + 0xB5, 0xA3, 0xAA, 0x9C, 0x8C, 0x2B, 0x6B, 0x0D, 0x00, 0xC1, 0x84, 0xC4, + 0x9E, 0x7E, 0xD3, 0x69, 0xFA, 0x93, 0x2F, 0x9E, 0xFC, 0xC1, 0x0F, 0x3F, + 0x41, 0x18, 0x29, 0x65, 0x00, 0xC2, 0xBF, 0xFE, 0x97, 0xFF, 0xF4, 0x3F, + 0x7F, 0xF9, 0xFD, 0x7F, 0xF8, 0x7F, 0x7F, 0xC9, 0x28, 0x65, 0x84, 0xFC, + 0xEA, 0xB7, 0xCF, 0xBC, 0x0F, 0x08, 0x63, 0xEF, 0x83, 0xD6, 0xBA, 0x2C, + 0xD2, 0xAE, 0x57, 0x4F, 0x1F, 0x1D, 0x4F, 0xC6, 0x65, 0x08, 0x21, 0x4F, + 0x85, 0xF7, 0xE1, 0xEB, 0xEF, 0xDF, 0xBC, 0x7D, 0x7F, 0xFD, 0x93, 0x2F, + 0x9E, 0x08, 0xCE, 0x10, 0x40, 0x96, 0x70, 0xE7, 0xDC, 0x72, 0x55, 0xEF, + 0x4F, 0xAB, 0xCF, 0x9F, 0xDE, 0x8F, 0xB5, 0x89, 0x47, 0x07, 0x63, 0x65, + 0x0C, 0x46, 0x98, 0x33, 0xB2, 0x6E, 0xBA, 0x10, 0x60, 0x32, 0xCA, 0x25, + 0x46, 0xE3, 0xAA, 0xB4, 0xCE, 0x8D, 0xAA, 0x02, 0x00, 0x0E, 0xF6, 0x27, + 0x6F, 0x4F, 0xCF, 0x09, 0xC9, 0xBF, 0xFC, 0xED, 0xB7, 0xC7, 0xF7, 0x0E, + 0x47, 0x79, 0x72, 0xB0, 0x57, 0x59, 0xE7, 0xB1, 0x07, 0x87, 0xDC, 0x90, + 0x14, 0x86, 0x90, 0xDF, 0xD0, 0x44, 0xDF, 0x68, 0x3C, 0xB0, 0xDD, 0x18, + 0x6E, 0x14, 0xDB, 0x4D, 0xB6, 0xD9, 0x80, 0x62, 0xC3, 0x90, 0x6E, 0x7C, + 0x65, 0x61, 0x03, 0x85, 0xDB, 0xB7, 0xA1, 0x1D, 0x3F, 0x75, 0x6C, 0x8B, + 0xB5, 0x09, 0xE3, 0x02, 0x42, 0x9E, 0x52, 0x4A, 0x7E, 0xF6, 0x17, 0x3F, + 0xDF, 0x7E, 0x7A, 0xF8, 0xC0, 0x2F, 0xB6, 0xCD, 0xFA, 0xD8, 0xC5, 0x94, + 0x4D, 0x84, 0x02, 0x21, 0x00, 0x20, 0x18, 0xC5, 0xA2, 0xCB, 0x28, 0xF6, + 0x89, 0xA0, 0x55, 0x96, 0x46, 0x45, 0x8C, 0x52, 0x8A, 0xEE, 0xE8, 0x9C, + 0xFF, 0x40, 0x60, 0x1A, 0xBE, 0xE9, 0x43, 0xB2, 0xC3, 0x3B, 0xEF, 0x8A, + 0x3F, 0x6D, 0x73, 0x76, 0xB3, 0xC2, 0x6E, 0x61, 0xD6, 0xDD, 0x2F, 0xBA, + 0xF5, 0x69, 0xDB, 0x63, 0xB3, 0x5E, 0xB7, 0xDA, 0xAF, 0x47, 0x80, 0x08, + 0xC6, 0x08, 0xC0, 0x6F, 0x78, 0x95, 0x62, 0xDB, 0x37, 0xE7, 0xBC, 0xF3, + 0xDE, 0x5A, 0x07, 0x01, 0x22, 0x06, 0x0E, 0xBF, 0xD3, 0x39, 0x6B, 0x75, + 0xDB, 0x4A, 0xA5, 0x8C, 0xD4, 0x06, 0x05, 0xAF, 0x95, 0xAA, 0xEB, 0x7A, + 0x36, 0x5F, 0xAC, 0x57, 0x75, 0x00, 0x58, 0x2E, 0xD7, 0x08, 0xA1, 0xAE, + 0x93, 0x59, 0x96, 0x3A, 0x1F, 0xD6, 0xAB, 0x3A, 0x78, 0x67, 0x95, 0x6C, + 0xD7, 0xAB, 0x7A, 0xB5, 0xBC, 0x78, 0x7F, 0xD1, 0xAE, 0xD7, 0x7D, 0xDF, + 0xAF, 0x16, 0xCB, 0x34, 0x4D, 0xA4, 0x94, 0x6F, 0x5E, 0xBF, 0x5D, 0xCC, + 0xE6, 0xF3, 0xD9, 0x7C, 0x76, 0x3D, 0x5B, 0x2C, 0x56, 0x4A, 0x4A, 0x8C, + 0x50, 0x59, 0xE6, 0x71, 0xA1, 0x9C, 0xDC, 0x9B, 0xEE, 0x4F, 0x8A, 0xE9, + 0xB8, 0x40, 0xC1, 0x23, 0x44, 0x1E, 0xDD, 0x3F, 0xA2, 0x18, 0xAE, 0xE7, + 0xAB, 0xBE, 0xEF, 0x09, 0xC1, 0x9D, 0x34, 0x93, 0xC9, 0x78, 0xBD, 0xAE, + 0x57, 0xAB, 0x35, 0xA5, 0x24, 0x66, 0x45, 0x40, 0x40, 0xCE, 0x39, 0x42, + 0xC8, 0x9B, 0xD7, 0x6F, 0x11, 0x42, 0xCE, 0xFB, 0x5E, 0xE9, 0x00, 0xD0, + 0x75, 0x2A, 0x49, 0x78, 0x55, 0xE6, 0xDA, 0x86, 0x58, 0xD6, 0x1E, 0xA3, + 0x96, 0x94, 0x62, 0x04, 0xC1, 0x3B, 0x4F, 0x29, 0x56, 0x4A, 0x47, 0x0F, + 0x7D, 0xAF, 0xB4, 0xD5, 0xAA, 0xEB, 0xFA, 0xD1, 0x78, 0xFC, 0xE8, 0xD1, + 0x7D, 0xCA, 0xD8, 0x6A, 0xB1, 0xBC, 0x5E, 0xAC, 0x94, 0x0D, 0xCB, 0xE5, + 0x9A, 0x12, 0xE4, 0xBD, 0x6B, 0x3B, 0x55, 0x55, 0x25, 0x42, 0x70, 0xB4, + 0x3F, 0xF9, 0xD1, 0x67, 0x8F, 0x04, 0xA3, 0xCB, 0x55, 0x53, 0x37, 0x7D, + 0xD3, 0x74, 0x5C, 0x08, 0x80, 0x50, 0xD7, 0x0D, 0xE3, 0x02, 0x42, 0x88, + 0x29, 0x92, 0xD1, 0x4C, 0x60, 0x8C, 0x1A, 0x63, 0x11, 0xC2, 0x84, 0x31, + 0x8C, 0x91, 0x71, 0x8E, 0x10, 0x6A, 0x94, 0x89, 0xED, 0xC4, 0x11, 0x42, + 0x91, 0x0B, 0xD7, 0x58, 0xCB, 0x18, 0xEF, 0x7B, 0x59, 0x56, 0xF9, 0xC1, + 0xFE, 0x84, 0x51, 0x5A, 0x37, 0x1D, 0x42, 0x98, 0x10, 0x9C, 0x08, 0xC1, + 0x18, 0x51, 0xDA, 0x08, 0xCE, 0x10, 0xC2, 0x4D, 0xD3, 0x75, 0x5D, 0xDF, + 0x2B, 0xED, 0x9C, 0x8F, 0xA9, 0x70, 0x8C, 0x33, 0x08, 0x60, 0xBD, 0x93, + 0x52, 0xC5, 0x15, 0x70, 0x79, 0x35, 0xFF, 0xE3, 0x3F, 0xFC, 0x8C, 0xD3, + 0xB8, 0xA3, 0xE3, 0xC8, 0x24, 0xB3, 0xE3, 0x32, 0x86, 0x0F, 0xC5, 0x6F, + 0x23, 0x1D, 0x78, 0x48, 0xEE, 0xC5, 0x18, 0x03, 0xC2, 0x78, 0x68, 0x7E, + 0x34, 0x88, 0x46, 0x08, 0xF0, 0xE6, 0xD5, 0xEB, 0x8B, 0xAB, 0xD9, 0xF3, + 0x77, 0xF3, 0x5E, 0x2A, 0xEF, 0x43, 0x22, 0xD8, 0x68, 0x54, 0x18, 0xE3, + 0x92, 0x84, 0x9F, 0x1C, 0x1F, 0x22, 0x00, 0xA9, 0x4C, 0x55, 0xE6, 0x75, + 0xDB, 0xFA, 0xE0, 0x31, 0xC2, 0xD6, 0x3A, 0xCE, 0x58, 0xF4, 0xF7, 0xB5, + 0x6D, 0x37, 0x99, 0x8C, 0xFE, 0xE5, 0x7F, 0xFD, 0x27, 0x7F, 0xFA, 0xC7, + 0x3F, 0xDC, 0x9F, 0x8E, 0xD6, 0x4D, 0xBB, 0x58, 0x35, 0x59, 0x22, 0xAC, + 0x73, 0x2F, 0xDF, 0x9C, 0xAF, 0xEB, 0xAE, 0x69, 0x7A, 0x8C, 0xD1, 0xE9, + 0xFB, 0x8B, 0x4F, 0x9F, 0x3E, 0xFA, 0xEC, 0xC9, 0x7D, 0xA5, 0x4D, 0x9A, + 0x8A, 0xE9, 0xA8, 0xC4, 0x98, 0x3C, 0x7F, 0x75, 0x8A, 0x30, 0xDE, 0x9B, + 0x8C, 0xE2, 0x1D, 0x30, 0x46, 0xEE, 0x1D, 0x4C, 0xAD, 0x73, 0xBD, 0x34, + 0x75, 0xD3, 0xF5, 0xBD, 0x5C, 0xAC, 0xEA, 0xAE, 0x57, 0x42, 0xF0, 0xBD, + 0x49, 0xA5, 0x94, 0xEE, 0x7A, 0x55, 0xD7, 0x9D, 0xF5, 0x2E, 0xD6, 0x07, + 0x49, 0x6D, 0xA4, 0x34, 0xBD, 0x54, 0x3E, 0x80, 0x31, 0x16, 0x20, 0x68, + 0x6D, 0x04, 0xE3, 0xD6, 0x7B, 0xC1, 0x19, 0xE7, 0xDC, 0x58, 0x77, 0x7C, + 0xEF, 0xE0, 0xE2, 0x72, 0x5E, 0x56, 0xC5, 0x83, 0xE3, 0xBD, 0xA8, 0x52, + 0xA1, 0x8D, 0x03, 0x3D, 0x06, 0x34, 0x30, 0xC2, 0x10, 0xC0, 0x3A, 0x17, + 0xB3, 0x0F, 0xB6, 0x8D, 0x80, 0x7D, 0xF0, 0x11, 0xF8, 0x63, 0x3A, 0x7E, + 0xD8, 0x49, 0x7F, 0x85, 0x8D, 0xE0, 0x85, 0x81, 0x11, 0x07, 0x85, 0x00, + 0x3E, 0x84, 0x4D, 0x09, 0x79, 0xD4, 0x7C, 0x21, 0x04, 0xD8, 0xC6, 0x70, + 0x77, 0x73, 0x45, 0x01, 0x80, 0xFC, 0xD9, 0xBF, 0xFD, 0xF9, 0x0D, 0x78, + 0x01, 0x44, 0x05, 0x75, 0x37, 0x79, 0x63, 0x98, 0xD1, 0xA8, 0x7F, 0x6D, + 0x42, 0xAC, 0xDB, 0xD7, 0xBC, 0x0F, 0xDA, 0x39, 0xE7, 0x03, 0xA7, 0x24, + 0x76, 0xA7, 0x65, 0x1B, 0x27, 0x57, 0x3C, 0xB6, 0x46, 0xEC, 0xEF, 0x01, + 0xAF, 0xED, 0x8E, 0xF7, 0xFB, 0x75, 0xB7, 0x1B, 0x6C, 0x1A, 0x86, 0xCD, + 0x0F, 0xA9, 0x75, 0x71, 0x08, 0x37, 0x23, 0xF6, 0x7B, 0xBE, 0x68, 0xD0, + 0x28, 0x3F, 0x84, 0xB1, 0x0F, 0x49, 0xC4, 0x00, 0xA1, 0xC1, 0xE3, 0x46, + 0x07, 0xFF, 0x17, 0x11, 0x9C, 0x09, 0x4E, 0x23, 0x9F, 0x04, 0xDF, 0x78, + 0xF1, 0x18, 0x8D, 0xE4, 0xEB, 0x71, 0xFD, 0x86, 0xBE, 0xAD, 0x9B, 0xBA, + 0x9E, 0xCF, 0xD7, 0x8B, 0xBA, 0xEB, 0x7A, 0xE5, 0xAC, 0xB5, 0xD6, 0xB6, + 0x6D, 0x1B, 0xBC, 0x43, 0xCE, 0x3A, 0x6B, 0x30, 0xC6, 0x21, 0x76, 0x54, + 0x49, 0x92, 0xB6, 0x6D, 0x57, 0x8B, 0x85, 0x37, 0xBA, 0xAD, 0x6B, 0x6B, + 0x8C, 0x35, 0xC6, 0x69, 0x13, 0x13, 0x0B, 0x10, 0x80, 0x56, 0x7A, 0xB9, + 0x58, 0x5C, 0xBC, 0xBF, 0xEC, 0x7A, 0x19, 0x21, 0x95, 0x10, 0x92, 0x24, + 0x1C, 0x63, 0x4C, 0x28, 0x49, 0xD3, 0x54, 0x6B, 0x3B, 0xAA, 0xD2, 0x1F, + 0x7D, 0x7A, 0x9C, 0x08, 0x51, 0x15, 0xC9, 0xE5, 0xF5, 0xBA, 0xD7, 0x6E, + 0x3C, 0x2A, 0x00, 0xFC, 0xC5, 0xD5, 0x72, 0x5C, 0x15, 0x9D, 0x72, 0x1E, + 0x60, 0x34, 0x2E, 0x27, 0xA3, 0xAA, 0xAA, 0x8A, 0xD5, 0xBA, 0x51, 0x4A, + 0x8F, 0xC7, 0x95, 0xD6, 0x4A, 0x6B, 0x13, 0x00, 0x2D, 0x56, 0xAB, 0x34, + 0x4D, 0xAB, 0xAA, 0x94, 0xBD, 0xB4, 0xD6, 0xF9, 0x00, 0xB3, 0xC5, 0x9A, + 0x53, 0x6A, 0xAC, 0xA5, 0x8C, 0x1F, 0x1D, 0x1E, 0xC4, 0xEB, 0x19, 0x25, + 0x84, 0xD0, 0xB2, 0x2C, 0xF7, 0x0F, 0xF6, 0x00, 0xA0, 0xA9, 0x3B, 0x1F, + 0x42, 0x55, 0x16, 0x87, 0x7B, 0x85, 0x0B, 0x98, 0x31, 0xE6, 0xAC, 0x31, + 0x4A, 0x73, 0x4E, 0x5F, 0x9F, 0x5D, 0xD5, 0x75, 0xBB, 0x5A, 0x2E, 0x8D, + 0x31, 0x89, 0x48, 0xEB, 0xB6, 0xFF, 0xE4, 0x93, 0x27, 0xD6, 0xB9, 0x54, + 0xF0, 0xAB, 0xD9, 0x32, 0x49, 0xC4, 0x8B, 0x37, 0xEF, 0xD7, 0x75, 0x8F, + 0x09, 0x4D, 0x92, 0x84, 0x52, 0xB2, 0x5A, 0x37, 0x3E, 0x78, 0xC6, 0x58, + 0xA4, 0x76, 0xC0, 0x08, 0x69, 0x6B, 0x39, 0xA5, 0x01, 0x42, 0xCC, 0xDD, + 0x8E, 0x0E, 0xC9, 0x3C, 0xCB, 0x94, 0xD6, 0x4A, 0x19, 0x6D, 0x6D, 0x92, + 0x08, 0xCE, 0x99, 0x94, 0x8A, 0x31, 0x0E, 0x00, 0x08, 0xA3, 0x58, 0xD4, + 0x35, 0x1E, 0x95, 0x82, 0xB3, 0x4E, 0xAA, 0xC8, 0xEB, 0x9F, 0x26, 0x7C, + 0xB9, 0x6A, 0xBC, 0x0F, 0x94, 0x90, 0xB6, 0xEB, 0x7B, 0x29, 0xAD, 0xF5, + 0x94, 0x92, 0xA6, 0x93, 0xCB, 0x75, 0x97, 0xA7, 0x82, 0x33, 0x16, 0x00, + 0x01, 0xC6, 0xAB, 0x75, 0x0D, 0x10, 0x8A, 0x3C, 0x7F, 0xF2, 0xE0, 0x30, + 0xCF, 0x13, 0x1F, 0xFC, 0xD6, 0xCB, 0xB2, 0x5D, 0x96, 0x9B, 0x6C, 0x80, + 0x21, 0xC7, 0x7B, 0xAB, 0xBF, 0x0F, 0x79, 0x3F, 0x83, 0xD4, 0xDC, 0x88, + 0x04, 0x42, 0x28, 0xC6, 0x55, 0xBF, 0xFE, 0xFA, 0x3B, 0x4A, 0x69, 0xA7, + 0x5D, 0x22, 0x78, 0xA7, 0x74, 0xDB, 0xF5, 0x10, 0xFC, 0x3F, 0xFA, 0xE9, + 0x0F, 0x38, 0xE3, 0x8B, 0xE5, 0x4A, 0x24, 0x1C, 0x21, 0xE8, 0x7B, 0xD9, + 0xF7, 0x52, 0x6A, 0x65, 0x8C, 0xDD, 0xDF, 0x9B, 0x3A, 0xEF, 0x9A, 0xB6, + 0x75, 0xD6, 0x8D, 0x46, 0xD5, 0x1F, 0xFC, 0xF8, 0xE9, 0xE3, 0xFB, 0x87, + 0x00, 0xE1, 0xEB, 0xEF, 0xDF, 0x7C, 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xF3, + 0x5C, 0x2A, 0xFD, 0xC3, 0xCF, 0x1E, 0xBD, 0x7C, 0xF3, 0xDE, 0xFB, 0x70, + 0x7E, 0x71, 0xBD, 0x58, 0xAE, 0x7F, 0xF0, 0xD9, 0x93, 0x7F, 0xF1, 0xCF, + 0xFE, 0x51, 0x5C, 0xBE, 0x9C, 0xB3, 0xE9, 0xA8, 0x20, 0x18, 0xF7, 0x52, + 0x35, 0xAD, 0x3C, 0x3E, 0xDA, 0x8B, 0x05, 0x49, 0xDE, 0x79, 0x4A, 0xC9, + 0xD1, 0xFE, 0xA4, 0x2C, 0xD2, 0x5E, 0xEA, 0x37, 0xA7, 0x97, 0xCF, 0x5E, + 0x9D, 0xCE, 0x97, 0xCD, 0xDE, 0xA4, 0x9A, 0x4E, 0x4A, 0x6D, 0xEC, 0x9B, + 0xD3, 0x4B, 0x91, 0xF0, 0x22, 0x4B, 0x47, 0x45, 0x86, 0x10, 0xD2, 0xDA, + 0x72, 0x41, 0xA5, 0xD2, 0x4D, 0xDB, 0x07, 0x1F, 0xA4, 0x32, 0xFB, 0x93, + 0x51, 0x2F, 0x15, 0xA5, 0xA4, 0x6E, 0x3B, 0xE7, 0x7C, 0x9E, 0x25, 0xFB, + 0x7B, 0x93, 0xD9, 0x62, 0xF9, 0xCD, 0x77, 0xAF, 0xF7, 0xA7, 0xE3, 0x87, + 0x27, 0xFB, 0x31, 0x56, 0x83, 0xB6, 0x1B, 0xC0, 0xB0, 0xF7, 0x7B, 0xEB, + 0xBD, 0x73, 0x03, 0xE2, 0xC4, 0x32, 0xEF, 0x0D, 0xA0, 0x41, 0x80, 0x60, + 0x7D, 0xD8, 0xF4, 0x7D, 0x8F, 0xFD, 0x92, 0x83, 0xF3, 0x10, 0x39, 0xF4, + 0xB7, 0x6D, 0x37, 0x7C, 0x24, 0x95, 0xD8, 0x58, 0xF7, 0x1B, 0x08, 0xBB, + 0x1D, 0x63, 0x19, 0xE6, 0xE5, 0x67, 0x7F, 0xF1, 0xF3, 0x1B, 0xA5, 0x69, + 0x13, 0x4F, 0xDC, 0xB2, 0xC9, 0x6D, 0x41, 0x6D, 0xF7, 0x8D, 0x68, 0x70, + 0x0F, 0x6D, 0x95, 0x38, 0x20, 0x08, 0x31, 0x46, 0x63, 0x19, 0x41, 0xA4, + 0xD2, 0xDF, 0x45, 0xA8, 0x2D, 0x68, 0xDC, 0x05, 0xA9, 0xDD, 0x9F, 0x72, + 0x1B, 0xAD, 0x3E, 0x06, 0x46, 0x1B, 0x6C, 0x1F, 0xEE, 0x38, 0x26, 0x7B, + 0x85, 0xE0, 0xE1, 0x66, 0x88, 0x6E, 0x22, 0xB9, 0xB7, 0xBE, 0x6E, 0x07, + 0xE6, 0x06, 0x38, 0xDC, 0x68, 0xAA, 0xEE, 0xD6, 0x05, 0x68, 0x53, 0x1F, + 0x46, 0x29, 0xA6, 0x94, 0x30, 0x46, 0x18, 0xDB, 0x66, 0xE4, 0x6E, 0xB6, + 0x94, 0x4D, 0x74, 0x46, 0x75, 0xED, 0x6A, 0xB1, 0x38, 0x3F, 0xBF, 0x7E, + 0xF5, 0xFA, 0x7D, 0x08, 0xC8, 0xB9, 0xD0, 0x74, 0x7D, 0x64, 0x2B, 0x51, + 0x5A, 0xB7, 0x6D, 0xDF, 0xB4, 0xBD, 0x07, 0x64, 0xB4, 0xE9, 0xBA, 0x4E, + 0x49, 0xD9, 0xB5, 0x5D, 0x53, 0xD7, 0x7D, 0xD7, 0x6F, 0x39, 0xC8, 0x10, + 0x40, 0xF0, 0x10, 0xA7, 0x09, 0x21, 0x10, 0xA9, 0x00, 0x40, 0x80, 0x11, + 0xE7, 0x8C, 0x60, 0x4C, 0x09, 0x8E, 0xED, 0x1E, 0xFA, 0x5E, 0x45, 0x1B, + 0xD8, 0x3A, 0xF7, 0xE0, 0x68, 0xFC, 0xF4, 0xD1, 0xE1, 0xAB, 0xD3, 0xEB, + 0x97, 0x6F, 0x2F, 0xB3, 0x34, 0xAD, 0x8A, 0xEC, 0xA7, 0x5F, 0x3C, 0xFA, + 0xE6, 0xBB, 0x37, 0x55, 0x95, 0x2B, 0x6D, 0x94, 0x75, 0xE3, 0xF1, 0x08, + 0x42, 0xC8, 0xB2, 0x34, 0x4D, 0x13, 0x9E, 0x08, 0xCE, 0x98, 0x94, 0x7A, + 0x3C, 0x2A, 0xA7, 0xD3, 0x49, 0x92, 0x70, 0x42, 0x68, 0xDF, 0xAB, 0xB6, + 0x6B, 0xB7, 0x8A, 0xBA, 0x73, 0x8E, 0x32, 0x36, 0x9E, 0x8C, 0xF7, 0xF7, + 0xA7, 0xDE, 0x07, 0xCE, 0x59, 0x91, 0x25, 0x22, 0xE1, 0xA3, 0xAA, 0x64, + 0x14, 0x73, 0xCE, 0x0E, 0x0F, 0xF6, 0xA4, 0xD2, 0xFB, 0x7B, 0xE3, 0x7B, + 0x07, 0xA3, 0xF3, 0xCB, 0x65, 0xD7, 0x75, 0x6D, 0x5D, 0x63, 0xF0, 0x4D, + 0xD7, 0x4B, 0xE3, 0xE6, 0xF3, 0xD5, 0xF5, 0x6C, 0xEE, 0x9D, 0x53, 0x4A, + 0x3F, 0x78, 0xF4, 0xD0, 0x68, 0xDD, 0x76, 0x9D, 0xB3, 0x36, 0xCD, 0xD2, + 0xE7, 0xAF, 0xCF, 0x4E, 0x2F, 0x16, 0x4A, 0x5B, 0xC6, 0x98, 0x31, 0xA6, + 0x97, 0x0A, 0x61, 0x24, 0xB5, 0x19, 0x8D, 0x46, 0xD6, 0x58, 0x8C, 0x09, + 0x02, 0xF0, 0x21, 0x20, 0x8C, 0x13, 0x21, 0x62, 0x38, 0x25, 0xC6, 0xBE, + 0x39, 0xE7, 0x94, 0x52, 0x40, 0xA8, 0x97, 0x1A, 0x61, 0x1C, 0x22, 0x3F, + 0x4C, 0x08, 0xBD, 0xD4, 0xD1, 0xAF, 0x84, 0x31, 0xB2, 0xCE, 0xB5, 0x6D, + 0x87, 0x30, 0xDA, 0x9B, 0x8E, 0x21, 0x80, 0x52, 0x9A, 0x33, 0xAA, 0xAD, + 0xED, 0x3A, 0x85, 0x11, 0x52, 0xDA, 0x86, 0x10, 0xA2, 0x9D, 0x9E, 0x24, + 0xC2, 0x05, 0xA8, 0x9B, 0x2E, 0x4F, 0x45, 0x96, 0x25, 0x7D, 0xAF, 0xD6, + 0x75, 0x23, 0x95, 0xD1, 0xC6, 0x7E, 0xF2, 0xE8, 0x68, 0x3A, 0x2E, 0x23, + 0xEF, 0xF3, 0x4D, 0x9E, 0xD1, 0xCE, 0xC6, 0x7A, 0xB3, 0xD3, 0xE3, 0xA1, + 0x2E, 0x39, 0xAE, 0x01, 0xBC, 0xAD, 0x42, 0xDE, 0xAE, 0xE1, 0x00, 0x18, + 0xE3, 0xE0, 0xCC, 0x2F, 0xBF, 0xFC, 0x86, 0x31, 0xDE, 0x49, 0xD3, 0x4A, + 0xC5, 0x18, 0xF3, 0x01, 0x59, 0x6B, 0xAD, 0x35, 0x9C, 0xD1, 0xD9, 0x62, + 0x8D, 0x00, 0x08, 0x02, 0x29, 0x7B, 0x42, 0x48, 0x22, 0x84, 0xF7, 0x2E, + 0xCB, 0x12, 0xEF, 0x82, 0xEC, 0x65, 0x80, 0x90, 0xA4, 0xC9, 0xDE, 0x64, + 0x34, 0x1E, 0xE5, 0x57, 0xD7, 0xCB, 0xFF, 0xFD, 0xFF, 0xFE, 0x4F, 0xE7, + 0x17, 0x73, 0x8A, 0xD1, 0xE5, 0xF5, 0x02, 0x61, 0xFC, 0xC3, 0xCF, 0x1F, + 0x59, 0xE7, 0x47, 0xE3, 0xEA, 0xF4, 0xEC, 0x32, 0x2A, 0xAA, 0x59, 0x9A, + 0xFC, 0xFD, 0xAF, 0xBF, 0xA1, 0x8C, 0x65, 0x59, 0xF2, 0xEC, 0xD5, 0xE9, + 0x6C, 0xBE, 0x6E, 0xDA, 0xF6, 0x60, 0x6F, 0xEA, 0xBC, 0x43, 0x08, 0x25, + 0x9C, 0x3B, 0xE7, 0x8C, 0xB3, 0x09, 0xE7, 0x65, 0x91, 0xC6, 0x52, 0x10, + 0x4A, 0xC9, 0xBB, 0xB3, 0xCB, 0xC5, 0xAA, 0x0E, 0x1E, 0x0E, 0x0F, 0xC6, + 0x47, 0x7B, 0xE3, 0x24, 0x61, 0x75, 0xDB, 0x3B, 0xEB, 0xAA, 0x2A, 0x8F, + 0x04, 0xE8, 0xCE, 0xFB, 0x2C, 0x49, 0x7C, 0x08, 0x9D, 0x94, 0xD7, 0x8B, + 0x55, 0x84, 0x48, 0x21, 0xF8, 0xAA, 0x6E, 0x0E, 0xF6, 0xC6, 0x52, 0xAA, + 0xAF, 0xBE, 0x79, 0x8E, 0x08, 0xFB, 0xE2, 0xE9, 0x89, 0xE0, 0x34, 0x0A, + 0xD4, 0xD6, 0x37, 0x1F, 0x35, 0x29, 0xEF, 0x77, 0xDB, 0xCB, 0x0E, 0x09, + 0x62, 0xCE, 0x85, 0x28, 0xAF, 0x9B, 0x78, 0x1B, 0xC4, 0xE4, 0x09, 0xE7, + 0x7D, 0x64, 0xC9, 0x89, 0xF5, 0xD6, 0x83, 0x7E, 0x82, 0x80, 0x0C, 0xAE, + 0x7F, 0xF0, 0x3E, 0xB8, 0x6D, 0xBA, 0x05, 0x0C, 0x16, 0xD2, 0xAE, 0x2D, + 0x45, 0xFE, 0xCD, 0xFF, 0xF4, 0xEF, 0xB7, 0x02, 0x1F, 0xBF, 0x6F, 0x5B, + 0x22, 0x3E, 0xA8, 0x1B, 0x68, 0x6B, 0x23, 0x0E, 0xB8, 0xBB, 0x99, 0x37, + 0x88, 0x79, 0x19, 0x18, 0x23, 0xCE, 0x68, 0x9E, 0x32, 0xCE, 0x08, 0xA3, + 0x24, 0x26, 0x4C, 0x6E, 0xC1, 0xF1, 0x16, 0x7E, 0xDD, 0x55, 0xBE, 0x3E, + 0x6A, 0xFA, 0xFD, 0x7E, 0xC3, 0x70, 0x80, 0xAC, 0x88, 0x3B, 0x08, 0x6E, + 0xC8, 0x3C, 0x03, 0x6C, 0xCB, 0xA4, 0x6E, 0xE1, 0xE3, 0xF0, 0xED, 0x9B, + 0xFF, 0xB6, 0xDF, 0x12, 0x93, 0x30, 0x76, 0x55, 0xB9, 0xAD, 0xEB, 0x71, + 0x3B, 0x02, 0xBB, 0x30, 0x17, 0x25, 0x0D, 0x21, 0x6C, 0xAC, 0xD1, 0xB2, + 0x7B, 0xF1, 0xFC, 0xC5, 0xF7, 0xCF, 0xDE, 0x7C, 0xFB, 0xFC, 0xF4, 0xF2, + 0x6A, 0x89, 0x09, 0x6D, 0x3B, 0x35, 0x5B, 0xAC, 0x9A, 0xA6, 0x83, 0x10, + 0x94, 0xD2, 0x75, 0xD3, 0x29, 0x6D, 0x43, 0x40, 0xDE, 0x7B, 0xAD, 0x0D, + 0x0A, 0xC1, 0x39, 0xDF, 0x2B, 0x6D, 0x8C, 0xD9, 0x0E, 0x2B, 0x21, 0x84, + 0x27, 0x0C, 0x21, 0x30, 0xDA, 0x02, 0x04, 0xCE, 0x39, 0xC6, 0x78, 0xA8, + 0xDD, 0xA1, 0x94, 0x12, 0xB2, 0xD5, 0x7F, 0x09, 0x21, 0x18, 0x41, 0x08, + 0x3E, 0x78, 0xFF, 0x8F, 0x7F, 0xFA, 0x89, 0x31, 0xE6, 0xAF, 0x7F, 0xF9, + 0xED, 0xA4, 0xCC, 0xF7, 0x46, 0xF9, 0x1F, 0xFC, 0xF0, 0xF1, 0xD5, 0x6C, + 0x31, 0x9B, 0xAF, 0x97, 0xEB, 0x56, 0x64, 0xF9, 0xDE, 0x74, 0x92, 0x65, + 0x89, 0xE0, 0x3C, 0x32, 0x5E, 0x31, 0x4A, 0x8B, 0x32, 0x4B, 0x84, 0x00, + 0x40, 0x52, 0x29, 0xA9, 0x8C, 0x52, 0x3A, 0xF2, 0xBA, 0xC8, 0x5E, 0x61, + 0x82, 0x8B, 0x22, 0x3F, 0x3C, 0xDC, 0xDF, 0x3F, 0xD8, 0x17, 0x22, 0x59, + 0x2C, 0x57, 0x42, 0xF0, 0x32, 0x4F, 0x29, 0x81, 0x2C, 0x11, 0xC1, 0x5B, + 0x8A, 0x11, 0x17, 0x3C, 0x40, 0x38, 0x38, 0x98, 0xEE, 0x8D, 0x8A, 0x77, + 0xEF, 0x2F, 0x8B, 0x3C, 0x4F, 0x04, 0x9F, 0x4E, 0x46, 0x65, 0x99, 0x63, + 0xCA, 0x2E, 0x2E, 0xAF, 0xDB, 0xB6, 0x9D, 0x4E, 0x26, 0x49, 0x92, 0x24, + 0x89, 0x50, 0x4A, 0xE6, 0x59, 0x9A, 0xE7, 0x79, 0xF0, 0xFE, 0xED, 0xBB, + 0xF3, 0xB2, 0xAA, 0xB4, 0x75, 0xD7, 0xB3, 0x65, 0x16, 0xC9, 0x66, 0xA3, + 0x7F, 0x37, 0x84, 0x07, 0xF7, 0xEF, 0xF5, 0x52, 0xC6, 0x6D, 0x36, 0xEE, + 0x9D, 0xDE, 0x1A, 0x00, 0x60, 0x8C, 0x71, 0xCE, 0x03, 0x42, 0x8C, 0x31, + 0xAD, 0x8D, 0x77, 0x2E, 0xCE, 0x38, 0xC6, 0xC8, 0x3A, 0x1B, 0x63, 0x61, + 0xD1, 0xFF, 0xE2, 0x7D, 0x88, 0xDB, 0x67, 0x34, 0x5B, 0xF2, 0x3C, 0x8D, + 0xB4, 0xB1, 0x64, 0xD3, 0x11, 0xD9, 0x18, 0x1B, 0xC1, 0x45, 0x5B, 0x27, + 0x18, 0x2B, 0xB2, 0x34, 0xBA, 0x66, 0x62, 0x5C, 0xA7, 0xEB, 0x25, 0x63, + 0x34, 0xF8, 0xF0, 0xF4, 0xF1, 0xBD, 0x83, 0xFD, 0x49, 0x6C, 0xE1, 0x1E, + 0xF7, 0x30, 0x14, 0x36, 0xFC, 0xCB, 0x5B, 0xE6, 0x04, 0xD8, 0x50, 0xCD, + 0x20, 0x20, 0x51, 0x66, 0x37, 0x66, 0x4D, 0x8C, 0x93, 0x0D, 0x96, 0x07, + 0x46, 0x8C, 0x73, 0xD9, 0x2C, 0xE7, 0xB3, 0x79, 0xD3, 0x9B, 0xF9, 0xBA, + 0xA5, 0x98, 0xF8, 0x30, 0x78, 0x82, 0x10, 0x82, 0xC5, 0xB2, 0x0E, 0x21, + 0x38, 0x6B, 0x13, 0xC1, 0x47, 0x55, 0x91, 0xE7, 0x49, 0x91, 0x25, 0x82, + 0x11, 0xA3, 0xB5, 0xB5, 0x9A, 0x10, 0x22, 0xB5, 0x7D, 0xF2, 0xE8, 0xF8, + 0xD3, 0xC7, 0x27, 0x5D, 0xDB, 0x7F, 0xF9, 0xD5, 0x8B, 0xEB, 0xF9, 0xAA, + 0xEF, 0x65, 0x55, 0x15, 0xA3, 0x71, 0x45, 0x30, 0x7E, 0xF2, 0xE0, 0xDE, + 0xB3, 0x57, 0x67, 0x97, 0x57, 0x33, 0x29, 0xD5, 0x7C, 0xB1, 0x9A, 0x2D, + 0xD6, 0x4D, 0x2B, 0x01, 0x21, 0xA5, 0x4C, 0xD3, 0xF6, 0x8F, 0x1E, 0xDC, + 0xA3, 0x8C, 0x5A, 0xE7, 0xCB, 0x3C, 0xDB, 0xDF, 0x1B, 0x85, 0x10, 0x12, + 0xCE, 0x7D, 0x08, 0xAB, 0xBA, 0xED, 0xA5, 0x96, 0x4A, 0xE7, 0x59, 0xF2, + 0xE0, 0xF8, 0x80, 0x51, 0x5A, 0xE4, 0xE9, 0x62, 0x59, 0x37, 0x5D, 0x5F, + 0xE6, 0xD9, 0x78, 0x94, 0xD7, 0x75, 0x1F, 0x00, 0x2E, 0x67, 0x4B, 0x4C, + 0x30, 0x02, 0xB8, 0x9C, 0xAD, 0x12, 0x21, 0x16, 0xEB, 0x7A, 0xB9, 0x6A, + 0xBA, 0x5E, 0x8F, 0xAB, 0x7C, 0x7F, 0x3A, 0x42, 0x08, 0xF5, 0x4A, 0x75, + 0x4D, 0x7F, 0x76, 0x7E, 0xF5, 0xE0, 0xFE, 0xD1, 0x7C, 0xB1, 0x7A, 0x77, + 0x76, 0xF9, 0xC9, 0xA3, 0x7B, 0x0F, 0x8F, 0xF7, 0x8C, 0xF5, 0x91, 0xC9, + 0x67, 0x2B, 0xD4, 0x30, 0x70, 0x1F, 0x6D, 0xB3, 0xB5, 0xA2, 0x0F, 0x7A, + 0xE8, 0x97, 0xE8, 0x42, 0x04, 0xB8, 0x9B, 0x6C, 0xB2, 0xC1, 0x29, 0xE6, + 0xC0, 0x47, 0xB8, 0x08, 0x28, 0x80, 0x8F, 0xC5, 0x45, 0x91, 0xD2, 0xD5, + 0x3A, 0x3F, 0xE4, 0x8D, 0xA1, 0xB0, 0xC9, 0x59, 0xFB, 0x40, 0xC6, 0x29, + 0xC1, 0x38, 0x62, 0xC2, 0xA6, 0xEA, 0x71, 0xB8, 0x6A, 0x03, 0x18, 0x71, + 0x25, 0x84, 0x80, 0x06, 0xF8, 0x40, 0x1B, 0x6B, 0x95, 0x0E, 0xC0, 0x30, + 0x84, 0x56, 0xA5, 0xB2, 0x21, 0x04, 0xCE, 0xE8, 0xE6, 0x4E, 0x06, 0x4D, + 0x67, 0x37, 0xC1, 0xE4, 0x2E, 0x5A, 0x85, 0x1D, 0xBF, 0xFB, 0x5D, 0x14, + 0xBB, 0xAB, 0xC1, 0xC5, 0x57, 0xE3, 0x1E, 0x3E, 0x40, 0x18, 0x1A, 0x34, + 0xC3, 0x4D, 0x9C, 0xE9, 0xC6, 0x62, 0x0F, 0x1F, 0x4B, 0x45, 0xD9, 0xFD, + 0x9C, 0x30, 0x24, 0x55, 0xF8, 0x4D, 0x5A, 0xDB, 0xE0, 0x58, 0x74, 0x6E, + 0x28, 0x94, 0x8D, 0x29, 0xFD, 0xB0, 0xD1, 0x6C, 0x9D, 0x73, 0x08, 0x53, + 0xAD, 0x65, 0xBD, 0x5A, 0x21, 0x2B, 0xAF, 0x2E, 0xAF, 0xCE, 0xAF, 0xEB, + 0x75, 0x2D, 0x95, 0x71, 0x84, 0x92, 0xC5, 0xE9, 0x25, 0x65, 0x4C, 0x69, + 0x03, 0x21, 0x48, 0xD5, 0x84, 0x10, 0x94, 0x32, 0x98, 0xE0, 0x24, 0x15, + 0x8C, 0x31, 0xD5, 0x4B, 0x40, 0x10, 0x9C, 0xA7, 0x94, 0x00, 0x42, 0x11, + 0xA7, 0x30, 0x42, 0x80, 0x21, 0x84, 0x40, 0x19, 0x49, 0xF3, 0xD4, 0x7B, + 0x1F, 0x87, 0x3A, 0x49, 0x12, 0x84, 0x90, 0xD6, 0x3A, 0xEE, 0xAB, 0x4A, + 0xA9, 0x34, 0x49, 0x10, 0x02, 0xEF, 0x1C, 0x63, 0xD4, 0x28, 0x2B, 0x28, + 0xBA, 0x5C, 0x34, 0x59, 0x92, 0x7E, 0xF2, 0x60, 0xFF, 0xE4, 0x78, 0x3F, + 0xCF, 0xC4, 0xDB, 0x33, 0x59, 0x14, 0xB9, 0x71, 0x6D, 0xC2, 0x19, 0xC6, + 0x88, 0x53, 0x86, 0x22, 0x31, 0x1D, 0x46, 0xC1, 0x07, 0x67, 0x3D, 0xA5, + 0x74, 0x34, 0x2E, 0xC7, 0xE3, 0x6A, 0xB5, 0x6E, 0x30, 0x46, 0xE3, 0x71, + 0x85, 0x00, 0x96, 0xAB, 0x75, 0x9A, 0x24, 0xDA, 0x18, 0xE7, 0x43, 0x64, + 0xF2, 0x9B, 0x8C, 0x2B, 0xC1, 0x88, 0xE0, 0x14, 0xBC, 0xCB, 0x53, 0x51, + 0x37, 0xBE, 0x57, 0x06, 0x23, 0x64, 0x95, 0x62, 0x45, 0xDE, 0xF6, 0xF2, + 0x60, 0x7F, 0xAF, 0xEB, 0x64, 0x99, 0x25, 0xFB, 0x7B, 0xA3, 0x4E, 0x99, + 0x80, 0xE9, 0xE3, 0xC7, 0x0F, 0x29, 0xA3, 0x52, 0xAA, 0x00, 0x1E, 0x02, + 0xF5, 0xCE, 0x72, 0x46, 0x0E, 0xF6, 0xAA, 0x00, 0xF8, 0xE5, 0x9B, 0xB3, + 0xF3, 0xEB, 0x85, 0x36, 0xCE, 0x39, 0xA7, 0x8C, 0x19, 0x8F, 0x4A, 0x42, + 0xB0, 0xEC, 0xFB, 0xAA, 0x2A, 0xB5, 0xB1, 0x01, 0x40, 0x69, 0xCD, 0x29, + 0xF5, 0x21, 0x10, 0x4A, 0x70, 0x08, 0xD6, 0x3B, 0x17, 0x82, 0xF3, 0x5E, + 0x69, 0xAD, 0x95, 0x76, 0x3E, 0x44, 0xFA, 0x8D, 0xBE, 0x6F, 0xB2, 0x54, + 0x48, 0x6D, 0x31, 0xC2, 0x00, 0x88, 0x31, 0xEA, 0x7D, 0x50, 0xCA, 0x10, + 0x82, 0x83, 0x67, 0x8C, 0x51, 0x08, 0x20, 0xA5, 0x12, 0x42, 0x44, 0x4D, + 0x1D, 0x20, 0x34, 0x5D, 0xEF, 0xAC, 0xC3, 0x84, 0xC4, 0x14, 0x67, 0x63, + 0xAD, 0x77, 0x8E, 0x0B, 0x16, 0x21, 0x2C, 0xC6, 0x19, 0x04, 0x67, 0x5A, + 0x9B, 0xB6, 0x93, 0xF8, 0x66, 0xBB, 0x06, 0xEF, 0x03, 0x10, 0xC0, 0x1E, + 0x85, 0xC1, 0x37, 0x1A, 0x21, 0x6D, 0xBB, 0x30, 0x51, 0xDC, 0xC2, 0x87, + 0x86, 0x39, 0xC3, 0xEB, 0x38, 0x84, 0x40, 0x08, 0x09, 0xC1, 0x69, 0xD5, + 0x5F, 0x5E, 0x2D, 0x5A, 0xE5, 0x18, 0xA3, 0x18, 0xC1, 0x0F, 0x9F, 0xDE, + 0xFB, 0xED, 0x8B, 0xF3, 0x00, 0x81, 0x53, 0xB2, 0x3F, 0xCA, 0xDF, 0xF4, + 0x8B, 0xD8, 0x9D, 0xD0, 0x39, 0x97, 0x24, 0x02, 0x13, 0xDC, 0xB5, 0x3D, + 0xE3, 0x8C, 0x31, 0x5A, 0x55, 0xA5, 0x03, 0x38, 0xD8, 0x9B, 0x3E, 0x3E, + 0x39, 0x68, 0xFB, 0xFE, 0xEA, 0x7A, 0x79, 0x3D, 0x5F, 0x12, 0x82, 0x19, + 0x23, 0xCB, 0xD5, 0xBA, 0xE9, 0x3A, 0xEF, 0xEC, 0x6F, 0xBE, 0x79, 0xF1, + 0xDB, 0xAF, 0x9F, 0xC7, 0xAC, 0x63, 0xC1, 0xE8, 0xE5, 0xE5, 0x6C, 0xB9, + 0xAC, 0x47, 0x55, 0xB1, 0x58, 0xAE, 0x7F, 0xF2, 0xA3, 0xCF, 0x92, 0x54, + 0x4C, 0x47, 0x45, 0x22, 0x78, 0x22, 0x98, 0xD6, 0x56, 0x08, 0xA6, 0xAD, + 0xC1, 0x04, 0x0B, 0xCE, 0x97, 0xEB, 0x76, 0x3A, 0x2A, 0x62, 0xC0, 0xFD, + 0xE8, 0x60, 0x7C, 0xB0, 0x57, 0x3D, 0x38, 0x39, 0xA8, 0x9B, 0xAE, 0x2A, + 0xB2, 0xD8, 0x1E, 0x5B, 0x4A, 0x4D, 0x28, 0x9D, 0xCD, 0xEB, 0xCF, 0x1E, + 0x1F, 0x1F, 0x1F, 0x4E, 0x01, 0xA1, 0x2C, 0x13, 0xB3, 0xF9, 0xEA, 0xF2, + 0x7A, 0x31, 0x9B, 0xAF, 0xAE, 0x17, 0x4B, 0x6B, 0x5C, 0x92, 0x88, 0xCF, + 0x9F, 0x3E, 0xFC, 0xFA, 0xBB, 0x97, 0x8B, 0x55, 0xFD, 0x27, 0xFF, 0xF8, + 0xA7, 0xDF, 0xBF, 0x78, 0x7B, 0x71, 0xBD, 0x1C, 0x72, 0x55, 0x3E, 0xA2, + 0xAC, 0xDC, 0x9C, 0x74, 0xCE, 0x01, 0x10, 0x17, 0x13, 0x36, 0x63, 0x2D, + 0x37, 0xF6, 0x3E, 0x44, 0x63, 0x6F, 0xA3, 0x85, 0x79, 0x08, 0x3E, 0x6C, + 0xF8, 0xC6, 0x01, 0x01, 0xF2, 0x0E, 0x3C, 0x38, 0xEB, 0xC3, 0x36, 0xA2, + 0xE9, 0x5D, 0x20, 0x18, 0x21, 0x02, 0x5B, 0x60, 0xD9, 0x24, 0xAE, 0x23, + 0x4A, 0x08, 0x1A, 0x7C, 0x69, 0xF1, 0xF3, 0x11, 0x6C, 0x36, 0xBD, 0x1D, + 0xAE, 0xCC, 0x58, 0xA2, 0x09, 0x10, 0xD0, 0xC0, 0x4D, 0x06, 0x30, 0xF0, + 0x49, 0x22, 0x1C, 0xC9, 0x21, 0x91, 0x73, 0x43, 0x98, 0x4F, 0x2A, 0x43, + 0x09, 0x46, 0x08, 0x08, 0xC1, 0xB1, 0x7F, 0x04, 0xDC, 0x78, 0xEE, 0x07, + 0xA3, 0x30, 0x5A, 0xC7, 0xD1, 0xD7, 0xB0, 0xC5, 0x94, 0xED, 0x79, 0xB4, + 0xC3, 0x36, 0x89, 0x3E, 0x46, 0x8E, 0x1E, 0x99, 0x0F, 0xD0, 0x4E, 0x80, + 0x3C, 0x92, 0xB8, 0x0D, 0xF1, 0xA6, 0x9D, 0x7A, 0xAE, 0xED, 0xB0, 0x0E, + 0x4F, 0x63, 0x26, 0xC9, 0x0D, 0xBF, 0x1D, 0x61, 0x2C, 0x84, 0xA0, 0x63, + 0x81, 0x51, 0xDC, 0x90, 0xA3, 0x8E, 0x16, 0x77, 0xE0, 0xC8, 0x26, 0xC8, + 0x19, 0x05, 0x40, 0xC1, 0x07, 0x00, 0x74, 0x7D, 0x79, 0xF1, 0xEC, 0xDB, + 0x6F, 0x13, 0x4E, 0xF6, 0x46, 0x45, 0x96, 0x70, 0x42, 0xA9, 0x75, 0xDE, + 0x58, 0x23, 0x8D, 0xF1, 0x3E, 0x78, 0xE7, 0x10, 0x42, 0xCE, 0xD9, 0xB8, + 0xBD, 0xA7, 0x69, 0xE2, 0x01, 0x62, 0x9F, 0x70, 0xCC, 0xA8, 0xF7, 0x1E, + 0x41, 0xE0, 0x8C, 0x21, 0xEB, 0x42, 0x08, 0x94, 0x10, 0x00, 0x1F, 0xFC, + 0x4D, 0x46, 0x0C, 0xC6, 0x58, 0x69, 0xED, 0x94, 0x46, 0xD1, 0x41, 0x10, + 0xBC, 0x31, 0x16, 0x42, 0x90, 0xBD, 0xCA, 0xD2, 0x44, 0x6B, 0xE3, 0x9C, + 0x0D, 0x01, 0xC6, 0xE3, 0x42, 0x29, 0x75, 0x75, 0xBD, 0x2A, 0x32, 0xEE, + 0x01, 0x63, 0x04, 0x52, 0x99, 0xA6, 0xD7, 0x52, 0x69, 0xC2, 0x68, 0x27, + 0x15, 0xC2, 0xD8, 0x7B, 0xA8, 0xCA, 0xCC, 0xFB, 0x60, 0x8D, 0x8D, 0xD2, + 0x18, 0xAB, 0xF0, 0x7A, 0xA5, 0x43, 0x08, 0x07, 0xFB, 0x93, 0xAE, 0x97, + 0xCE, 0xF9, 0xA3, 0xA3, 0xC3, 0xA6, 0xED, 0xB0, 0x73, 0x08, 0xC1, 0x68, + 0x54, 0x22, 0x08, 0x04, 0x03, 0x27, 0xB8, 0x2A, 0x52, 0x67, 0xED, 0x64, + 0x94, 0x4F, 0x46, 0xF9, 0xCB, 0x77, 0x97, 0x89, 0xA0, 0x16, 0xF9, 0x34, + 0x15, 0x4D, 0xDB, 0x13, 0xF2, 0xFF, 0x11, 0xF6, 0x5E, 0x4D, 0x92, 0x25, + 0x59, 0x7A, 0xD8, 0x39, 0x7E, 0x5C, 0x5C, 0x15, 0x32, 0x45, 0x65, 0x55, + 0x75, 0x55, 0x77, 0xB5, 0x9E, 0x1E, 0xB1, 0x33, 0x3B, 0x8B, 0x01, 0x07, + 0xA0, 0x00, 0xD7, 0x40, 0x33, 0x3E, 0xF1, 0x85, 0xBF, 0x82, 0x86, 0x15, + 0xC0, 0xE2, 0xAF, 0xF0, 0x99, 0xFF, 0x81, 0x2F, 0x34, 0xD2, 0xC0, 0x25, + 0x09, 0xEE, 0x12, 0xB6, 0x8B, 0xDD, 0xC5, 0x08, 0xB4, 0x98, 0x16, 0x25, + 0xBA, 0x44, 0x56, 0xEA, 0x90, 0x57, 0xB9, 0x3A, 0x7C, 0xF0, 0x1B, 0x51, + 0xD9, 0x33, 0x8B, 0x45, 0x58, 0x59, 0x5A, 0x55, 0x66, 0x56, 0x44, 0xDC, + 0x1B, 0xEE, 0xC7, 0x8F, 0xF8, 0x84, 0xBC, 0x7F, 0xEF, 0xA8, 0x30, 0xB4, + 0xDA, 0xB4, 0xD7, 0x8B, 0x55, 0x53, 0x37, 0x4D, 0xDB, 0x6F, 0x36, 0x5B, + 0xE7, 0x7C, 0x08, 0x11, 0x91, 0xEF, 0x1C, 0x1F, 0xAE, 0x36, 0xDB, 0x8B, + 0xB3, 0xCB, 0xD9, 0xC1, 0x3C, 0x02, 0xB4, 0x5D, 0x1F, 0x23, 0x24, 0x2E, + 0xC7, 0xDD, 0x93, 0x3B, 0x21, 0x86, 0xD3, 0xD3, 0xB3, 0xE9, 0x64, 0xB2, + 0xAD, 0x1B, 0xE7, 0x43, 0xD7, 0x75, 0xBA, 0xAA, 0x04, 0xA2, 0xB3, 0x2E, + 0xE5, 0x3D, 0x7D, 0x6F, 0x15, 0x11, 0x30, 0x28, 0xAD, 0xC1, 0x7B, 0x22, + 0xEA, 0x7B, 0x9B, 0xA4, 0xEB, 0x80, 0xB1, 0xED, 0xED, 0xF1, 0xD1, 0x4C, + 0x29, 0xD9, 0x75, 0x76, 0xED, 0x9A, 0xBE, 0xB7, 0xC0, 0xCC, 0x1C, 0x95, + 0x52, 0xDE, 0x07, 0xEB, 0x42, 0xC2, 0xB2, 0x23, 0x8A, 0x84, 0x95, 0xD7, + 0xBB, 0x73, 0x54, 0x29, 0x72, 0xD6, 0x39, 0xCB, 0x4A, 0xC9, 0x14, 0x74, + 0xAC, 0xF5, 0xDE, 0x3A, 0x64, 0x4E, 0xD6, 0x1E, 0xFB, 0x1A, 0x42, 0x08, + 0x8E, 0x31, 0x82, 0xD8, 0xEF, 0x44, 0xDE, 0xA1, 0x3A, 0x91, 0xE3, 0xED, + 0x34, 0x1F, 0xDF, 0xFC, 0xC6, 0x00, 0x79, 0xF3, 0x9F, 0x7D, 0xF9, 0xE4, + 0xEB, 0x6F, 0x5E, 0x14, 0x5A, 0xC4, 0x08, 0x77, 0x8E, 0x46, 0xCB, 0x75, + 0xAD, 0xB5, 0x6C, 0x7B, 0xC7, 0x00, 0xD3, 0x2A, 0xCB, 0x14, 0xC5, 0xC8, + 0x4A, 0xA9, 0x54, 0x1A, 0xA3, 0x40, 0x08, 0x50, 0x77, 0x76, 0x3E, 0x19, + 0x19, 0xA3, 0x7B, 0xE7, 0x3E, 0xF9, 0xE8, 0xBD, 0xE9, 0xB8, 0x3C, 0xBB, + 0xB8, 0xBE, 0x5E, 0xAC, 0x9B, 0xBA, 0x59, 0xAD, 0xD6, 0x49, 0x4F, 0xA9, + 0xEB, 0x7A, 0x72, 0xEE, 0xE5, 0x2B, 0xFB, 0xFA, 0xEC, 0x4A, 0x6B, 0x59, + 0x15, 0xE3, 0xD5, 0xBA, 0xEF, 0x3A, 0x5B, 0xE4, 0x66, 0x53, 0xB7, 0xCE, + 0x7A, 0xAD, 0x95, 0x92, 0xF4, 0xBD, 0xF7, 0x1E, 0xF4, 0xBD, 0x8D, 0x15, + 0x4B, 0x25, 0xA5, 0x10, 0x24, 0x44, 0x6F, 0x6D, 0x55, 0xE6, 0xD3, 0x71, + 0xE1, 0x9D, 0x97, 0x44, 0x29, 0xAC, 0x0B, 0x44, 0xA5, 0x54, 0x6E, 0x4C, + 0x55, 0x64, 0x52, 0xD2, 0xCD, 0x62, 0x5D, 0x64, 0xBA, 0x6B, 0x7B, 0x81, + 0xC2, 0xB9, 0xEE, 0xDB, 0x57, 0x17, 0x77, 0x8F, 0xE7, 0x5D, 0x6F, 0xCB, + 0x32, 0x7B, 0xEF, 0xED, 0x7B, 0x0F, 0xEF, 0x1F, 0x2F, 0x56, 0xF5, 0xD3, + 0xE7, 0xA7, 0x9B, 0x4D, 0x33, 0x9F, 0x4D, 0x84, 0x14, 0x3F, 0xFE, 0xE1, + 0x47, 0xCF, 0x5E, 0x9C, 0xD5, 0x6D, 0x37, 0x1A, 0x97, 0xAF, 0xCE, 0x6F, + 0xFA, 0xDE, 0x49, 0x12, 0xBC, 0x43, 0x38, 0xA4, 0xE4, 0x21, 0x6D, 0xDF, + 0x5D, 0x55, 0xB8, 0x7B, 0x70, 0x8C, 0x8C, 0x00, 0x71, 0x80, 0x40, 0x44, + 0xDE, 0x25, 0x4C, 0x30, 0x4C, 0x36, 0x71, 0xB8, 0xA7, 0x1C, 0x21, 0xD5, + 0x9B, 0x00, 0xC0, 0x28, 0xE2, 0xBE, 0x0E, 0x43, 0xE0, 0x08, 0x12, 0x21, + 0xD1, 0x25, 0x79, 0x40, 0x1D, 0x08, 0x12, 0x48, 0x7F, 0xF4, 0xC7, 0x7F, + 0x46, 0x02, 0x45, 0xE2, 0x8A, 0xC3, 0x40, 0x9C, 0xDA, 0x4D, 0xA0, 0x87, + 0x4D, 0x0F, 0xBB, 0xC6, 0xE7, 0x6F, 0xA1, 0x4E, 0x85, 0x40, 0x25, 0x84, + 0x56, 0x84, 0x3B, 0x8D, 0xD9, 0x3E, 0xAD, 0x66, 0x00, 0x44, 0x91, 0x84, + 0x7A, 0xD3, 0x95, 0x38, 0xE7, 0xD2, 0xD7, 0xB6, 0xED, 0xAD, 0x75, 0x6D, + 0xDB, 0x47, 0x8E, 0x49, 0xD7, 0x75, 0x1F, 0xA1, 0xF6, 0x84, 0xC7, 0xDF, + 0xCD, 0xA1, 0xFE, 0x9E, 0x7F, 0x22, 0xBE, 0x51, 0xBD, 0xBD, 0x95, 0x76, + 0xA5, 0xBF, 0xEC, 0x79, 0x91, 0xB7, 0xB9, 0x04, 0xB8, 0xAB, 0x9C, 0xF7, + 0x38, 0xC6, 0x14, 0xDD, 0xD2, 0x3F, 0x95, 0x4A, 0xDF, 0x41, 0xC4, 0x94, + 0xF4, 0xA5, 0xB1, 0xD4, 0x20, 0x45, 0x3B, 0x88, 0x6D, 0x5D, 0x5D, 0x7C, + 0xF1, 0xEB, 0x5F, 0x9C, 0x4C, 0x0B, 0x85, 0xB0, 0x69, 0x3A, 0x40, 0xF1, + 0xE2, 0xF4, 0x66, 0xDB, 0xB4, 0xA4, 0x14, 0x82, 0x60, 0x1C, 0xBC, 0x38, + 0x9D, 0xF5, 0xA9, 0x42, 0x91, 0x4A, 0xFA, 0xC0, 0xDE, 0x85, 0x04, 0x2C, + 0x48, 0xA2, 0x7A, 0x31, 0x70, 0x0C, 0x11, 0x85, 0xC8, 0x33, 0x23, 0x25, + 0x01, 0xC2, 0x90, 0x39, 0x73, 0x0C, 0x21, 0x20, 0x40, 0x08, 0xC1, 0x5A, + 0x17, 0x63, 0x4C, 0x83, 0xC2, 0x34, 0x20, 0xCB, 0x33, 0x63, 0xAD, 0x8B, + 0x91, 0x11, 0xC4, 0x5B, 0x47, 0x63, 0x8E, 0xB1, 0x0F, 0x1C, 0x19, 0x95, + 0x14, 0x1F, 0xBD, 0xF7, 0xE0, 0xAB, 0x67, 0x67, 0xA7, 0xAF, 0xAF, 0xAB, + 0x51, 0xD5, 0xB4, 0xB6, 0xAA, 0x8A, 0x3C, 0xCF, 0xAD, 0xB5, 0x75, 0xD3, + 0x4A, 0x12, 0xBD, 0xB5, 0x4A, 0xC9, 0xA6, 0xED, 0x10, 0x99, 0x23, 0x87, + 0x10, 0xDA, 0xAE, 0x23, 0x21, 0xFA, 0xDE, 0xF6, 0xD6, 0x21, 0x40, 0x9E, + 0x9B, 0xA2, 0xC8, 0x11, 0x85, 0x24, 0xC1, 0x31, 0x08, 0x44, 0xA3, 0xA8, + 0xC8, 0x54, 0x55, 0xE5, 0x45, 0x6E, 0x48, 0x4A, 0x44, 0x94, 0x24, 0x8B, + 0xAA, 0x12, 0x42, 0x18, 0x63, 0xCA, 0xC2, 0x70, 0xB0, 0xCC, 0xF1, 0xF9, + 0xAB, 0x8B, 0xAA, 0x2C, 0x8D, 0x96, 0x8C, 0xB8, 0xDE, 0xD4, 0xE3, 0xF1, + 0xE8, 0xF8, 0xF8, 0x50, 0x69, 0xBD, 0x5A, 0x6D, 0x1E, 0xBD, 0x7D, 0xBF, + 0xCC, 0xF5, 0xB7, 0xA7, 0x57, 0x26, 0xCB, 0xD6, 0xEB, 0x6D, 0x72, 0xDB, + 0x8D, 0x91, 0x8F, 0x8F, 0x0F, 0x1E, 0x3E, 0xB8, 0xFF, 0xF2, 0xD5, 0xE9, + 0xE1, 0xC1, 0x41, 0x0C, 0x51, 0x12, 0x39, 0xE7, 0x52, 0x21, 0xA0, 0x24, + 0x09, 0x49, 0x3E, 0x84, 0x18, 0x62, 0x55, 0xE4, 0x59, 0x9E, 0x31, 0x00, + 0x0F, 0x22, 0x2C, 0xEC, 0xBD, 0x8F, 0x91, 0x49, 0x92, 0x94, 0x54, 0xE4, + 0x86, 0x99, 0x89, 0x04, 0x09, 0xE1, 0x43, 0x20, 0x31, 0x2C, 0xA1, 0x10, + 0x93, 0x24, 0xB7, 0xC8, 0x32, 0xE3, 0x43, 0xD8, 0x6C, 0x6A, 0xE7, 0x3D, + 0x33, 0xC7, 0x10, 0x99, 0xC1, 0x28, 0x09, 0xCC, 0x44, 0x62, 0x32, 0x2E, + 0x6F, 0x96, 0x5B, 0x8E, 0x8C, 0x08, 0xE3, 0x51, 0x15, 0x9C, 0x3F, 0x3C, + 0x98, 0xBC, 0xFF, 0xE8, 0x7E, 0x1A, 0xB6, 0xEC, 0x97, 0xD0, 0x9B, 0xBE, + 0xCA, 0x77, 0x9B, 0x21, 0x88, 0xFB, 0xF6, 0xFE, 0x6D, 0x82, 0x0A, 0x30, + 0xF3, 0xBF, 0xF9, 0xB7, 0x7F, 0xFB, 0xCB, 0x4F, 0x9F, 0xBC, 0xFF, 0xE8, + 0xAD, 0xA6, 0x69, 0xAB, 0x5C, 0x8F, 0x47, 0xC5, 0xB7, 0xAF, 0xAE, 0x98, + 0x79, 0xDB, 0x58, 0xEB, 0xC3, 0xC9, 0xC1, 0x98, 0x08, 0x2F, 0x97, 0x35, + 0x87, 0x98, 0xE6, 0xC2, 0x5D, 0xD7, 0x7B, 0x1F, 0x26, 0x93, 0x51, 0x9E, + 0x65, 0x37, 0x8B, 0x95, 0x10, 0xA8, 0xA4, 0x3C, 0x7D, 0x7D, 0xF9, 0xE4, + 0xDB, 0x97, 0x37, 0x37, 0xCB, 0xCD, 0xB6, 0x1E, 0x15, 0xD9, 0x6C, 0x3A, + 0x9A, 0x8C, 0x8A, 0x3C, 0x33, 0xDB, 0xA6, 0xF5, 0xDE, 0x23, 0x8A, 0x71, + 0x55, 0xA6, 0x03, 0x72, 0x36, 0x19, 0x09, 0x84, 0xD4, 0xBA, 0x3A, 0x38, + 0x98, 0xAE, 0x36, 0xDB, 0x2C, 0xD3, 0x52, 0xD2, 0x5F, 0xFE, 0xF5, 0xAF, + 0xF3, 0x4C, 0x9B, 0x4C, 0x3B, 0x17, 0x46, 0x55, 0x9E, 0x66, 0x53, 0xA9, + 0xB6, 0xD2, 0x4A, 0x09, 0x14, 0x69, 0x77, 0xC7, 0x10, 0xDA, 0xDE, 0x86, + 0x10, 0x92, 0x06, 0x99, 0x0B, 0x51, 0x49, 0x19, 0x42, 0xB4, 0xCE, 0x3F, + 0x7E, 0xF6, 0xEA, 0xC5, 0xAB, 0x8B, 0xDE, 0x86, 0x4C, 0x2B, 0xAD, 0x55, + 0x66, 0xD4, 0x7C, 0x3A, 0xFE, 0xE0, 0xD1, 0x83, 0xB2, 0xC8, 0xEA, 0xBA, + 0x7D, 0xF5, 0xFA, 0xB2, 0x28, 0x32, 0x63, 0xF4, 0xC5, 0xC5, 0xF5, 0xE7, + 0x5F, 0x3E, 0xB9, 0x77, 0xF7, 0xE8, 0x9D, 0xB7, 0xEE, 0x38, 0x17, 0x70, + 0x27, 0x4E, 0x43, 0x83, 0x02, 0xCF, 0x1E, 0x09, 0xB0, 0xBB, 0x8D, 0x3B, + 0x22, 0xA3, 0x40, 0xA4, 0x24, 0x76, 0xBD, 0x6B, 0x11, 0xF3, 0x6E, 0x5F, + 0xEF, 0x5B, 0xF4, 0x91, 0x39, 0x30, 0x02, 0xBE, 0xF9, 0x44, 0x00, 0x40, + 0xA0, 0xD8, 0x4F, 0x62, 0xF6, 0xAD, 0x70, 0xA5, 0x48, 0x2B, 0x49, 0x7F, + 0xFC, 0x27, 0x7F, 0x06, 0x3C, 0xBC, 0x04, 0xE2, 0xAD, 0x9F, 0xEF, 0x22, + 0xD8, 0x77, 0x43, 0xC9, 0x40, 0x27, 0x10, 0x28, 0x54, 0xCA, 0xC5, 0x86, + 0x7B, 0x04, 0x24, 0x70, 0x47, 0x26, 0x8F, 0x3E, 0x0C, 0xD6, 0x4A, 0xDE, + 0x0F, 0xDD, 0x56, 0xE7, 0x42, 0x8C, 0xEC, 0x7D, 0x88, 0x91, 0x7D, 0x88, + 0x69, 0x39, 0xCA, 0x61, 0xE6, 0xFD, 0x26, 0x6C, 0xDD, 0x1E, 0xA9, 0xEE, + 0x57, 0xC9, 0xED, 0xAF, 0x6F, 0x62, 0xD9, 0xF0, 0x06, 0xDF, 0x1C, 0xA4, + 0xB7, 0x53, 0xBF, 0xFD, 0x4D, 0xF9, 0x7B, 0xC3, 0xDC, 0xFE, 0xEF, 0xB7, + 0x30, 0xFD, 0x09, 0x34, 0x04, 0x44, 0x89, 0xEC, 0x4A, 0x52, 0x91, 0x18, + 0xA6, 0xEC, 0x18, 0x23, 0x08, 0x01, 0x24, 0xE5, 0xD5, 0xE9, 0xF3, 0x66, + 0xBD, 0xD6, 0x26, 0xD7, 0x4A, 0xF6, 0x36, 0xD4, 0xAD, 0xBD, 0x59, 0xB7, + 0x48, 0xC4, 0x11, 0x7C, 0x08, 0x4A, 0x6B, 0x00, 0x00, 0x06, 0x12, 0x98, + 0xC8, 0x25, 0x52, 0xA9, 0xAE, 0xB3, 0x31, 0xB2, 0x54, 0x52, 0x48, 0x91, + 0x72, 0x3D, 0xEF, 0x3C, 0x00, 0x0B, 0xC1, 0xC1, 0xFB, 0x94, 0x89, 0x58, + 0xE7, 0x53, 0x46, 0x9A, 0x02, 0x2B, 0x49, 0xE9, 0x77, 0x09, 0x33, 0xA2, + 0x08, 0x21, 0xDD, 0xBA, 0xD8, 0xF5, 0xCE, 0xF9, 0xB0, 0x6D, 0xBB, 0xC3, + 0x71, 0xAE, 0x15, 0x09, 0xA9, 0x5C, 0xE0, 0xB7, 0xEF, 0x1F, 0x97, 0xA3, + 0xD1, 0x5F, 0xFD, 0xCD, 0xA7, 0x3F, 0xF9, 0xE1, 0x07, 0x7F, 0xF3, 0x1F, + 0xBE, 0x70, 0xCE, 0xEB, 0x4C, 0xE7, 0x99, 0x79, 0x7D, 0x76, 0x51, 0x96, + 0x05, 0xA2, 0x88, 0x31, 0x4A, 0xA9, 0x9A, 0xB6, 0xDB, 0x36, 0x6D, 0xD3, + 0xB4, 0xD6, 0xB9, 0xC8, 0x20, 0x08, 0x09, 0x29, 0xCB, 0xB2, 0x10, 0xE2, + 0xF5, 0x62, 0xD5, 0x34, 0xAD, 0x52, 0x04, 0x1C, 0xBD, 0x73, 0x44, 0xA8, + 0x15, 0x65, 0x5A, 0x06, 0x1F, 0xA4, 0x94, 0x11, 0xD0, 0x68, 0x29, 0xA4, + 0x2A, 0x8A, 0x42, 0x4A, 0x22, 0xC2, 0x83, 0xE9, 0x28, 0xCB, 0xF4, 0x9F, + 0xFF, 0xDB, 0xBF, 0xB9, 0xBA, 0x59, 0xDF, 0x3D, 0x39, 0x32, 0x59, 0xBE, + 0x6D, 0x7B, 0xA3, 0xD5, 0xB6, 0x6E, 0x80, 0x24, 0x0A, 0x59, 0x16, 0xF9, + 0xA8, 0xCC, 0xE7, 0x47, 0x87, 0x9F, 0x7E, 0xF9, 0x74, 0x3A, 0x9D, 0xCC, + 0x67, 0x93, 0xB6, 0xED, 0x11, 0x91, 0x39, 0x3A, 0xE7, 0x1E, 0x3C, 0xB8, + 0xB7, 0x5A, 0x6D, 0xAE, 0x6E, 0x16, 0x3E, 0x84, 0xAE, 0xEB, 0xA4, 0xA4, + 0xBE, 0x77, 0xC0, 0x3C, 0x9D, 0x4E, 0x42, 0x8C, 0xBD, 0xF3, 0x44, 0x94, + 0x69, 0x15, 0x62, 0xE8, 0xBA, 0x3E, 0xDD, 0x01, 0x00, 0x24, 0x21, 0x7C, + 0x88, 0x42, 0x88, 0xD9, 0x6C, 0x12, 0x42, 0xDC, 0x6E, 0xDB, 0xA6, 0xEB, + 0xA5, 0x24, 0xE0, 0xE4, 0x57, 0xC2, 0x00, 0x98, 0x56, 0xB9, 0x0F, 0x51, + 0x6B, 0x9D, 0xE8, 0x5F, 0x99, 0x51, 0x77, 0x0E, 0xA7, 0xE3, 0x2A, 0x47, + 0x84, 0xB6, 0xEF, 0x99, 0x81, 0x88, 0xF2, 0xCC, 0x24, 0x99, 0xEF, 0x18, + 0xD9, 0x68, 0x95, 0x50, 0xB2, 0xDF, 0xFB, 0xF0, 0xED, 0xFD, 0x09, 0x7A, + 0x7B, 0xA9, 0xEC, 0x17, 0xFF, 0xAE, 0xE5, 0x3F, 0x74, 0x4E, 0x6F, 0x3F, + 0x98, 0x59, 0x6B, 0x75, 0xFA, 0xFA, 0xE2, 0x2F, 0xFE, 0xFA, 0x33, 0x10, + 0xF4, 0xD1, 0xDB, 0x87, 0xCF, 0x5E, 0x5D, 0x8D, 0x0A, 0x53, 0x18, 0xFD, + 0xE4, 0xE5, 0x45, 0xA6, 0xF5, 0xA6, 0x75, 0x91, 0xF9, 0xC1, 0x9D, 0x99, + 0xF3, 0xE1, 0x6A, 0xD9, 0x70, 0x64, 0x44, 0x4C, 0xF3, 0xB7, 0x3C, 0xCF, + 0x9C, 0x73, 0x8B, 0xE5, 0x0A, 0x00, 0xEA, 0xA6, 0x7D, 0x7D, 0x76, 0x71, + 0xBD, 0x58, 0x35, 0x6D, 0xEF, 0x9C, 0x13, 0x02, 0x8C, 0xD1, 0x44, 0xA2, + 0xC8, 0x4D, 0x96, 0x69, 0x12, 0x88, 0xC0, 0x21, 0x86, 0x94, 0x58, 0x3D, + 0xB8, 0x7F, 0xB7, 0xED, 0x7A, 0x21, 0xF0, 0xFE, 0xBD, 0x13, 0x12, 0x08, + 0x31, 0x30, 0x07, 0xA5, 0xCD, 0x66, 0xDB, 0xFE, 0xE2, 0xD7, 0x5F, 0x7E, + 0xF5, 0xF8, 0x45, 0xDB, 0xD9, 0x2C, 0xD3, 0x89, 0xC6, 0x8B, 0x88, 0x46, + 0x2B, 0x18, 0x76, 0x2B, 0x13, 0x11, 0xC7, 0x98, 0x2E, 0x2B, 0x46, 0x3E, + 0xBB, 0x5C, 0x34, 0x6D, 0xFF, 0xD5, 0xE3, 0x17, 0x0C, 0x5C, 0xE4, 0x19, + 0x00, 0x74, 0x7D, 0xAF, 0x95, 0x6E, 0xFB, 0xFE, 0xF2, 0x7A, 0xB5, 0x5C, + 0x6D, 0xF3, 0x3C, 0x23, 0x12, 0x69, 0x79, 0x1E, 0x4C, 0xC7, 0x4A, 0xAB, + 0x6D, 0xDD, 0xD6, 0x75, 0xDB, 0x76, 0x5D, 0x59, 0x14, 0xCE, 0xC7, 0xEF, + 0xBD, 0xFF, 0x40, 0x52, 0xE2, 0x56, 0xBF, 0xD1, 0xBD, 0x18, 0x6E, 0xE3, + 0xD0, 0xB1, 0xC2, 0xDD, 0x7A, 0x46, 0xD8, 0x81, 0x37, 0xE5, 0x80, 0x57, + 0x81, 0x24, 0x2D, 0xB1, 0x6F, 0xA6, 0x0D, 0x47, 0x48, 0x1A, 0xA7, 0xC0, + 0xF0, 0x24, 0xDF, 0xFD, 0x68, 0xC4, 0x4E, 0x02, 0x90, 0x89, 0x44, 0xA6, + 0xA5, 0x56, 0x44, 0xFF, 0xD3, 0xBF, 0xF8, 0x97, 0x69, 0x40, 0x30, 0xD4, + 0x53, 0xB8, 0x93, 0xC7, 0xE6, 0xFD, 0x47, 0x88, 0xBC, 0x23, 0xE5, 0x20, + 0x82, 0x00, 0x90, 0x83, 0xC7, 0x2D, 0x08, 0x1A, 0x4E, 0xA7, 0xDD, 0x90, + 0x1A, 0x01, 0x99, 0x23, 0x20, 0x60, 0x59, 0x18, 0x63, 0xD4, 0x3E, 0xC4, + 0x24, 0x95, 0x18, 0x29, 0x85, 0x94, 0xD2, 0x18, 0x95, 0x67, 0x26, 0x31, + 0xE9, 0x6E, 0x8F, 0x02, 0x52, 0x00, 0x12, 0x3B, 0xD3, 0xD3, 0x7D, 0xE4, + 0xDA, 0x2F, 0x97, 0x5B, 0xAB, 0xEA, 0xCD, 0x55, 0xFD, 0xF6, 0x69, 0x79, + 0xBB, 0x35, 0x7E, 0x6B, 0xC5, 0xFD, 0x76, 0x42, 0xF7, 0x5D, 0x10, 0x59, + 0xBC, 0xA5, 0x68, 0x36, 0xDC, 0xF1, 0x21, 0x26, 0x02, 0x22, 0x92, 0x10, + 0x92, 0x24, 0x11, 0x6D, 0x6E, 0x2E, 0xFA, 0xDE, 0x26, 0xA3, 0x2A, 0x1F, + 0x42, 0xDF, 0x87, 0x57, 0x97, 0x6B, 0x00, 0x68, 0xDB, 0x5E, 0x84, 0x70, + 0x21, 0x95, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x6B, 0x9D, + 0xC0, 0xA8, 0xCC, 0xB1, 0x6D, 0x3B, 0xEF, 0xBD, 0xD6, 0x2A, 0x02, 0x04, + 0x3F, 0xA0, 0xC6, 0xD3, 0x94, 0x20, 0x86, 0x40, 0x02, 0xB5, 0x94, 0x29, + 0xDE, 0x71, 0x88, 0x91, 0xE3, 0xBE, 0xB0, 0x55, 0x92, 0xD2, 0x1D, 0x23, + 0x49, 0xCC, 0xD1, 0xF9, 0xE0, 0xBD, 0xB7, 0xD6, 0x87, 0x37, 0x76, 0x2A, + 0x22, 0x84, 0xF0, 0xDE, 0x83, 0x83, 0x3B, 0xC7, 0x07, 0xDB, 0xD6, 0x5E, + 0x5C, 0xAF, 0x7E, 0xF2, 0xC3, 0xF7, 0xFE, 0xF6, 0x97, 0x5F, 0x4D, 0xC7, + 0x23, 0xEF, 0xE3, 0xB7, 0x2F, 0xCF, 0x85, 0x40, 0x49, 0x12, 0x01, 0x67, + 0xB3, 0x29, 0x33, 0xB4, 0x6D, 0x9F, 0xE7, 0x99, 0x31, 0x46, 0x4A, 0x42, + 0x80, 0xB2, 0x28, 0x92, 0x35, 0x4C, 0xDB, 0xF6, 0xEB, 0xF5, 0x66, 0xBD, + 0xD9, 0x32, 0x80, 0xED, 0xFB, 0xC4, 0xF3, 0x69, 0x9B, 0x26, 0xCF, 0x34, + 0xA1, 0x98, 0x8C, 0x0A, 0x67, 0x9D, 0x31, 0xAA, 0xAC, 0xAA, 0xF3, 0xCB, + 0x9B, 0xB3, 0x8B, 0x25, 0x49, 0xE9, 0xDA, 0xFA, 0xE6, 0xE2, 0xF2, 0x9D, + 0x47, 0x0F, 0x9C, 0x73, 0xFF, 0xCF, 0x5F, 0xFC, 0xDD, 0xAB, 0xD3, 0xF3, + 0xA3, 0xA3, 0xA3, 0xBA, 0x69, 0x6F, 0x16, 0xAB, 0xB7, 0x1F, 0xDC, 0x17, + 0x52, 0x1E, 0x1E, 0x1E, 0x5E, 0xDF, 0x2C, 0x7D, 0xE4, 0xD1, 0xA8, 0x22, + 0xA5, 0x9E, 0x3E, 0x7F, 0xBD, 0x5C, 0x2C, 0xAF, 0xAE, 0x17, 0x07, 0x07, + 0x33, 0xEB, 0x5C, 0x12, 0x08, 0x62, 0x00, 0xAD, 0xB5, 0x24, 0x61, 0x5D, + 0x58, 0x2E, 0x57, 0x31, 0x44, 0xAD, 0x55, 0x2A, 0xF4, 0x06, 0x73, 0x2D, + 0x00, 0x29, 0xA5, 0xD1, 0x0A, 0x19, 0x92, 0x30, 0xBF, 0x75, 0xDE, 0x85, + 0x28, 0x48, 0x30, 0x73, 0x9E, 0xE7, 0xE9, 0x5C, 0xEC, 0x7B, 0x17, 0x23, + 0x77, 0xBD, 0x8D, 0x91, 0xA5, 0x54, 0xC6, 0x64, 0x21, 0x04, 0xE7, 0x5D, + 0x3A, 0x29, 0x7B, 0x6B, 0xD3, 0xF0, 0x5E, 0x49, 0x9A, 0x4F, 0x4B, 0x66, + 0x36, 0x46, 0x8F, 0xAA, 0xA2, 0xEB, 0xAD, 0xF3, 0x71, 0x32, 0x2A, 0x36, + 0xDB, 0x36, 0x81, 0x75, 0x24, 0x11, 0x11, 0x8E, 0xAB, 0x32, 0x05, 0xB2, + 0xDB, 0x8B, 0x64, 0x58, 0x6F, 0xE9, 0x2C, 0x1F, 0x8A, 0xCB, 0x37, 0xAB, + 0xF1, 0x36, 0x82, 0x89, 0x99, 0xA5, 0x94, 0x5F, 0x7E, 0xF5, 0xF4, 0xCB, + 0xC7, 0x2F, 0x3E, 0x7C, 0x74, 0x77, 0xB9, 0xDA, 0x3E, 0x7B, 0x71, 0x61, + 0x14, 0x39, 0x17, 0xCE, 0xAF, 0xD6, 0x6D, 0x6F, 0x03, 0x00, 0x03, 0x1E, + 0xCD, 0x4A, 0xE7, 0xC3, 0xCD, 0xAA, 0x26, 0x49, 0x24, 0x95, 0x10, 0x42, + 0x12, 0x6D, 0xB7, 0x75, 0xD7, 0xF5, 0x44, 0x82, 0x39, 0xDA, 0xDE, 0x31, + 0x40, 0x96, 0x99, 0x84, 0x0A, 0x28, 0x32, 0xAD, 0x48, 0xB8, 0x10, 0x85, + 0x20, 0x66, 0xD0, 0x8A, 0xCA, 0x22, 0x4F, 0x4A, 0xD6, 0x80, 0x78, 0x73, + 0xB3, 0xF4, 0xCE, 0xB5, 0x6D, 0x97, 0x0E, 0xA1, 0x51, 0x95, 0xDF, 0x39, + 0x9A, 0xFF, 0xD3, 0x9F, 0xFD, 0xDE, 0x74, 0x5C, 0xBC, 0x3C, 0x3D, 0x77, + 0xDE, 0x73, 0x8C, 0x4A, 0xC9, 0xF9, 0x74, 0x2C, 0x04, 0xA5, 0xD2, 0x4C, + 0x49, 0xDA, 0x5D, 0x11, 0x08, 0x14, 0x82, 0x04, 0x02, 0x26, 0x50, 0x51, + 0xE4, 0xD8, 0x5B, 0x67, 0xAD, 0x37, 0xC6, 0x5C, 0xDD, 0xAC, 0xCE, 0xCE, + 0xAE, 0x5F, 0xBC, 0x7A, 0xBD, 0x58, 0xAC, 0xBA, 0xDE, 0x3D, 0x7E, 0xF2, + 0xE2, 0xF2, 0x6A, 0xF9, 0xEA, 0xEC, 0xCA, 0xF9, 0x70, 0x75, 0xB3, 0x7A, + 0x71, 0x7A, 0xD1, 0x75, 0x76, 0x36, 0x1D, 0x1D, 0xCE, 0x27, 0xC7, 0x47, + 0x73, 0x92, 0xB2, 0x77, 0x1E, 0x98, 0xEF, 0xDE, 0x39, 0x80, 0x5D, 0x75, + 0x09, 0x80, 0x00, 0x22, 0xF5, 0xFB, 0x13, 0x44, 0x65, 0x77, 0xDF, 0xC4, + 0x8E, 0x22, 0xCE, 0x88, 0x28, 0xE5, 0x30, 0x4A, 0x01, 0x00, 0x21, 0x90, + 0x84, 0xD8, 0x6F, 0x59, 0x81, 0x28, 0x29, 0x31, 0xD6, 0x38, 0x32, 0x30, + 0x40, 0x62, 0x38, 0xEE, 0x11, 0x7E, 0x09, 0x7F, 0xA6, 0x95, 0x28, 0x33, + 0x95, 0x80, 0x50, 0xF4, 0x2F, 0xFE, 0xE4, 0x5F, 0xED, 0xB5, 0x2B, 0xD2, + 0x91, 0x23, 0x08, 0xC5, 0xCE, 0x72, 0x8E, 0x48, 0x0C, 0xE2, 0xD9, 0x02, + 0x09, 0x91, 0xDE, 0x04, 0x45, 0x40, 0x71, 0x7B, 0xB6, 0x08, 0x08, 0x48, + 0x28, 0x04, 0x82, 0xD1, 0x6A, 0x36, 0x29, 0xAB, 0x32, 0x4F, 0x79, 0x8D, + 0x4A, 0x7A, 0xFB, 0x00, 0x03, 0x0F, 0x9B, 0x28, 0x25, 0x62, 0xBF, 0xD5, + 0x89, 0xE7, 0xEF, 0x4A, 0xAD, 0xEE, 0x63, 0xD0, 0x3E, 0xD6, 0xDC, 0x8E, + 0x41, 0xB0, 0x2B, 0xBC, 0x7F, 0x2B, 0x3C, 0xFD, 0x56, 0x38, 0xBB, 0xF5, + 0xF6, 0x86, 0xE7, 0xBE, 0x2D, 0xCB, 0xB3, 0x2B, 0x58, 0x62, 0x4A, 0x94, + 0xF6, 0x27, 0xC6, 0x9B, 0xF8, 0x08, 0x7B, 0xA9, 0x38, 0xD0, 0x4A, 0x33, + 0x87, 0x6E, 0xBD, 0xE8, 0x3B, 0xBB, 0xDA, 0xD4, 0x29, 0xCA, 0xD6, 0x9D, + 0x5B, 0xAC, 0x5B, 0x8E, 0x2C, 0x84, 0x10, 0x44, 0x00, 0x40, 0x02, 0x43, + 0x08, 0xDE, 0x07, 0x44, 0xE1, 0x9C, 0x4F, 0xE0, 0x78, 0x44, 0x1E, 0xD0, + 0x98, 0x92, 0xB4, 0x94, 0x69, 0xF8, 0x42, 0x02, 0x25, 0x09, 0x1F, 0x22, + 0x20, 0x2A, 0x65, 0xD2, 0xAC, 0x38, 0xC4, 0x10, 0x02, 0x6B, 0xAD, 0x01, + 0xB1, 0xEB, 0xFA, 0xDD, 0xC0, 0x8E, 0xD3, 0x38, 0x82, 0x19, 0xF2, 0xCC, + 0x1C, 0xCE, 0xAA, 0x9F, 0x7E, 0xF2, 0x48, 0x67, 0xE6, 0x9B, 0x67, 0xAF, + 0x27, 0x55, 0x7E, 0xFF, 0x64, 0xF6, 0xFC, 0xC5, 0xF9, 0x0F, 0xBE, 0xFF, + 0xFE, 0xE3, 0x67, 0xAF, 0xAF, 0x97, 0x1B, 0x88, 0xB1, 0xDE, 0x6C, 0xF2, + 0x22, 0x27, 0xA9, 0xB6, 0x75, 0x53, 0x55, 0x65, 0xD3, 0x75, 0xEB, 0x75, + 0x6D, 0x8C, 0x1A, 0x8D, 0xAA, 0x18, 0xE3, 0x62, 0xB9, 0xF2, 0xCE, 0x1D, + 0xCC, 0xA7, 0xC7, 0x47, 0x33, 0x41, 0xE4, 0xAC, 0x6B, 0xDB, 0x0E, 0x38, + 0x0A, 0x64, 0x25, 0x87, 0x42, 0x4F, 0x0A, 0xAC, 0xCA, 0xEC, 0xE8, 0x68, + 0x1E, 0x18, 0x96, 0xEB, 0x36, 0x44, 0xFE, 0xEA, 0xF1, 0x8B, 0x27, 0x4F, + 0x5F, 0xE8, 0xCC, 0x4C, 0x26, 0xA3, 0xE7, 0x2F, 0x5F, 0xFF, 0xBB, 0xBF, + 0xFE, 0x35, 0x08, 0x34, 0x59, 0xD6, 0x76, 0x9D, 0x36, 0xC6, 0x79, 0xBF, + 0xAD, 0xBB, 0xEB, 0xD5, 0xFA, 0xAD, 0xFB, 0x27, 0x55, 0x91, 0x5F, 0x5E, + 0x2F, 0x18, 0xF0, 0xF8, 0x70, 0x8E, 0x24, 0xCE, 0xCE, 0xAE, 0x9C, 0x0F, + 0x5A, 0xEB, 0xB2, 0xC8, 0x89, 0xC4, 0xCF, 0xFE, 0xE0, 0x27, 0x97, 0x57, + 0xD7, 0xDB, 0xED, 0xB6, 0xEF, 0x1D, 0x0A, 0xF4, 0xDE, 0xA7, 0x1A, 0x3F, + 0xC1, 0xC1, 0x33, 0x63, 0x18, 0x80, 0x43, 0xCC, 0xB4, 0x12, 0x42, 0x30, + 0x40, 0xDB, 0x3B, 0x8E, 0x90, 0x94, 0x76, 0x42, 0x88, 0x55, 0x99, 0x77, + 0x7D, 0xEF, 0xBD, 0x0F, 0x31, 0x0E, 0x14, 0x77, 0x00, 0xA3, 0x14, 0x00, + 0xE7, 0x45, 0xEE, 0x9D, 0x0F, 0x21, 0x58, 0x1B, 0x22, 0x30, 0x33, 0x48, + 0x49, 0xBD, 0x75, 0x21, 0xC2, 0xF5, 0x62, 0xBB, 0xAE, 0xDB, 0x22, 0xCB, + 0xA5, 0x92, 0xC9, 0xF2, 0x36, 0xC6, 0xE8, 0x7C, 0x10, 0x08, 0xA9, 0x6B, + 0xAE, 0x14, 0x7D, 0xFF, 0xA3, 0x47, 0xC3, 0x2A, 0xE3, 0x04, 0xEE, 0xDF, + 0x47, 0x29, 0xBC, 0x25, 0xE8, 0xBF, 0x2B, 0x01, 0xBE, 0x7B, 0x34, 0x22, + 0x0A, 0x60, 0x5E, 0x2E, 0x97, 0xD7, 0x8B, 0x8D, 0x00, 0x78, 0xF6, 0xFA, + 0x4A, 0x08, 0x51, 0x15, 0xA6, 0x30, 0xFA, 0x7A, 0x59, 0x3F, 0xBC, 0x7B, + 0xB0, 0xAE, 0xFB, 0xDE, 0xF9, 0xB7, 0x8E, 0xA7, 0xD6, 0xFA, 0x8B, 0xC5, + 0x36, 0x32, 0x27, 0x84, 0x1D, 0x40, 0xE4, 0xC8, 0x91, 0x07, 0x41, 0x34, + 0xEB, 0x83, 0x24, 0x2A, 0x0B, 0x93, 0x7A, 0xE2, 0x52, 0x52, 0x66, 0x14, + 0x22, 0x26, 0xF5, 0x17, 0xDB, 0x5B, 0x66, 0xD8, 0x36, 0x5D, 0x96, 0xE5, + 0x21, 0x04, 0x25, 0x50, 0x90, 0x40, 0x21, 0xDA, 0xAE, 0xE7, 0x18, 0xF3, + 0x4C, 0x03, 0xC0, 0xF5, 0xCD, 0xDA, 0x47, 0x5E, 0x6F, 0xB6, 0x4D, 0xD3, + 0x6D, 0xEA, 0xE6, 0xB3, 0x2F, 0x9F, 0x5E, 0x5C, 0x2E, 0x98, 0x63, 0xDB, + 0x5B, 0x12, 0x02, 0x10, 0x43, 0x8C, 0xDE, 0x05, 0x29, 0x07, 0x29, 0x3F, + 0x22, 0x21, 0x50, 0x48, 0x49, 0xC8, 0x98, 0x68, 0x9E, 0xB3, 0x71, 0x39, + 0x9F, 0x8E, 0x89, 0x44, 0x59, 0x96, 0x45, 0x91, 0xCF, 0x67, 0xE3, 0x07, + 0xF7, 0x8F, 0xBD, 0xF7, 0x07, 0xF3, 0xE9, 0x3B, 0x0F, 0xEE, 0x66, 0x46, + 0x85, 0x10, 0xAF, 0x6F, 0x56, 0x00, 0x18, 0x39, 0x5E, 0x5E, 0xDE, 0x4C, + 0x27, 0xD5, 0x6C, 0x3A, 0x02, 0xC0, 0xBF, 0xFA, 0xBB, 0xCF, 0xA7, 0x93, + 0x6A, 0x3E, 0x1D, 0xC5, 0xC8, 0x3B, 0x40, 0x2A, 0xA7, 0x11, 0xE4, 0xAE, + 0x0B, 0x06, 0x88, 0x69, 0x2B, 0xA6, 0xBC, 0x08, 0x77, 0x86, 0x1B, 0xC0, + 0xCC, 0xA9, 0x7F, 0x22, 0x70, 0xC8, 0x88, 0x52, 0x03, 0x1C, 0x11, 0x23, + 0x83, 0x22, 0x21, 0x49, 0x48, 0x29, 0x94, 0x14, 0xC0, 0x83, 0x93, 0x11, + 0x21, 0x6A, 0x89, 0x65, 0xA6, 0x8D, 0xA6, 0xF4, 0x51, 0xC8, 0x21, 0x9F, + 0xDA, 0xEB, 0x70, 0x40, 0x02, 0x1C, 0x20, 0xD2, 0x40, 0x4A, 0x12, 0x02, + 0x25, 0x88, 0xA4, 0x97, 0x70, 0x9B, 0x43, 0xB0, 0x9F, 0x9D, 0x0E, 0xA3, + 0x3E, 0x44, 0x92, 0x58, 0xE6, 0x45, 0xB2, 0x87, 0x71, 0xCE, 0x69, 0xAD, + 0x05, 0x0C, 0xDE, 0x2A, 0x7B, 0x7D, 0xFD, 0xBD, 0xB4, 0xD7, 0xED, 0xC0, + 0x84, 0x3B, 0xD1, 0xC8, 0x24, 0xA7, 0xB3, 0xAF, 0x67, 0xC5, 0xCE, 0x9A, + 0x85, 0x77, 0x40, 0x5E, 0xFE, 0x1D, 0x04, 0x3F, 0xDC, 0x2A, 0x27, 0x7F, + 0x37, 0xBF, 0x4B, 0xF1, 0xCE, 0x7B, 0x9F, 0x9E, 0x2D, 0x51, 0x28, 0x52, + 0x06, 0x94, 0x7C, 0xC6, 0x52, 0x1E, 0xCA, 0xCC, 0xCC, 0xE1, 0xF6, 0x31, + 0x0B, 0x3C, 0x94, 0xE7, 0xCC, 0xAC, 0xA4, 0x5A, 0x2C, 0xAE, 0x9F, 0x3E, + 0x79, 0x5A, 0xA9, 0x90, 0x67, 0x3A, 0x44, 0x1E, 0x57, 0xF9, 0xB6, 0xEE, + 0x8A, 0x4C, 0x95, 0xB9, 0xEE, 0x5D, 0x04, 0x44, 0xEF, 0x1C, 0x33, 0x28, + 0x45, 0xDE, 0x79, 0x49, 0x22, 0x32, 0x77, 0xBD, 0x27, 0xA9, 0x84, 0x40, + 0x29, 0x85, 0x96, 0x64, 0xB4, 0x06, 0x84, 0x18, 0x42, 0xE2, 0xB7, 0x92, + 0x18, 0x2A, 0xCD, 0x10, 0x82, 0x90, 0x22, 0x02, 0x93, 0x92, 0xC1, 0xC6, + 0xC8, 0xAE, 0x69, 0xDB, 0x84, 0x1E, 0x48, 0xD7, 0xA2, 0xB4, 0x42, 0x1F, + 0x62, 0x08, 0x52, 0xCA, 0x10, 0x63, 0x55, 0xE8, 0xB7, 0xEF, 0xCF, 0xFF, + 0xB7, 0xBF, 0xFC, 0x74, 0x53, 0x77, 0x3F, 0xFB, 0xC9, 0x47, 0xDF, 0x3C, + 0x39, 0xBD, 0x77, 0xF7, 0xB0, 0x1A, 0x95, 0x28, 0x70, 0x52, 0x66, 0x59, + 0x66, 0xEA, 0xBA, 0x5D, 0x2E, 0x57, 0x2E, 0x44, 0x00, 0xD4, 0x4A, 0x91, + 0x94, 0x31, 0x86, 0x97, 0xAF, 0x5E, 0x8F, 0xC7, 0x55, 0x6E, 0x0C, 0x0D, + 0x1A, 0xCA, 0xB6, 0x6B, 0xDB, 0x8B, 0x8B, 0x6B, 0xE6, 0xA8, 0x08, 0x4F, + 0x8E, 0x66, 0x55, 0x91, 0x5D, 0xDD, 0xAC, 0x92, 0x17, 0xEF, 0x5B, 0xF7, + 0xEF, 0x1C, 0x1F, 0xCF, 0xCF, 0xAF, 0x56, 0xE7, 0x17, 0x37, 0x93, 0xC9, + 0x68, 0x36, 0x1B, 0xAF, 0xB7, 0xED, 0x6A, 0xB5, 0xFE, 0x0F, 0x9F, 0x7E, + 0xDD, 0xF9, 0x38, 0x9D, 0x4E, 0xDE, 0xFB, 0xE0, 0x3D, 0x06, 0x9C, 0xCD, + 0xC6, 0xA3, 0x32, 0x57, 0x24, 0x4E, 0xCF, 0x2E, 0x23, 0xD2, 0xC9, 0xC9, + 0xB1, 0x92, 0xE4, 0x9C, 0xBF, 0x77, 0x72, 0xD4, 0x76, 0xF6, 0x7A, 0xB1, + 0xD2, 0x4A, 0xCD, 0xE7, 0x93, 0xB6, 0xB3, 0xDF, 0xFF, 0xF8, 0xBD, 0x5F, + 0xFE, 0xC7, 0xDF, 0x08, 0x21, 0xAE, 0x6E, 0x16, 0x45, 0x9E, 0xDF, 0x39, + 0x3E, 0xF8, 0xF2, 0xCB, 0xA7, 0x8E, 0x41, 0x88, 0x84, 0xC5, 0x97, 0xAB, + 0xF5, 0x46, 0x4A, 0xE9, 0x7C, 0x48, 0x50, 0x8C, 0x6D, 0xDD, 0x4C, 0xC6, + 0x95, 0xD6, 0xCA, 0x87, 0xE8, 0x7D, 0x74, 0xCE, 0x49, 0x29, 0x95, 0x1E, + 0x06, 0x47, 0xD6, 0x3A, 0x06, 0x10, 0x24, 0x14, 0xE2, 0xB6, 0xED, 0x3A, + 0xEC, 0x63, 0x4C, 0xDC, 0x58, 0x67, 0x9D, 0xD7, 0x4A, 0x87, 0xC8, 0x28, + 0x40, 0x49, 0xD9, 0x0B, 0xD1, 0x34, 0x9D, 0x24, 0xB4, 0x2E, 0x5E, 0xDE, + 0xAC, 0x42, 0x08, 0x5A, 0x49, 0x66, 0x48, 0x06, 0xD2, 0x49, 0x3D, 0x4F, + 0x49, 0xB9, 0x6D, 0xBA, 0xAE, 0xB3, 0x46, 0xEB, 0x38, 0x48, 0xA1, 0xEE, + 0x22, 0x17, 0xC2, 0x3E, 0xC9, 0x60, 0x00, 0x91, 0xC8, 0x7F, 0x02, 0xF6, + 0xA8, 0x82, 0xDD, 0xAA, 0x8B, 0x88, 0xF2, 0xF2, 0x6A, 0xF9, 0xE2, 0xEC, + 0xE6, 0xFD, 0x07, 0xC7, 0xA3, 0xB2, 0x70, 0xDE, 0x97, 0x55, 0xD1, 0xD8, + 0x40, 0x92, 0xEE, 0xBF, 0x75, 0xFC, 0xF2, 0x6A, 0x83, 0x80, 0x69, 0x0E, + 0x16, 0x22, 0xE4, 0x46, 0x29, 0x81, 0xC1, 0x87, 0xFD, 0x06, 0x26, 0xA2, + 0xA6, 0xED, 0xD3, 0x19, 0x9F, 0x2C, 0xD6, 0x33, 0x63, 0x56, 0xEB, 0x8D, + 0x22, 0x61, 0x8C, 0x8A, 0x1C, 0x11, 0x28, 0x95, 0x5A, 0x46, 0xAB, 0xD5, + 0x6A, 0x6D, 0x8C, 0x3E, 0x3C, 0x9E, 0x76, 0xBD, 0x63, 0xE0, 0x51, 0x55, + 0x68, 0x25, 0xAB, 0xAA, 0xEC, 0xBA, 0xFE, 0xE2, 0xF2, 0x6A, 0xB3, 0x6D, + 0xDA, 0xCE, 0x4E, 0xC6, 0x55, 0x4A, 0x1B, 0x56, 0xEB, 0xED, 0xDF, 0xFE, + 0xF2, 0x0B, 0x49, 0xF4, 0xF6, 0xC3, 0xBB, 0xEF, 0x3F, 0x7A, 0x70, 0x72, + 0x3C, 0x2F, 0x73, 0xD3, 0x75, 0xB6, 0xB7, 0xAE, 0xED, 0x3A, 0x63, 0x74, + 0x55, 0xE4, 0x46, 0xEB, 0xAA, 0xCC, 0x46, 0xA3, 0x7C, 0xB3, 0x6D, 0xB5, + 0x92, 0x65, 0x91, 0x1D, 0x1D, 0x4C, 0x22, 0x73, 0xDB, 0xF5, 0x6D, 0x67, + 0x8B, 0xDC, 0xF4, 0xD6, 0x09, 0xC4, 0xD5, 0x66, 0xBB, 0x58, 0x6E, 0xDF, + 0x79, 0x70, 0xF2, 0xCE, 0x83, 0x93, 0xCE, 0xBA, 0xC5, 0x62, 0xFD, 0xED, + 0xCB, 0xD7, 0xC7, 0xBD, 0xFD, 0xFD, 0x1F, 0x7D, 0x54, 0xD7, 0xCD, 0x72, + 0xDD, 0xFE, 0xF2, 0xD3, 0xC7, 0xEF, 0x3C, 0x38, 0x19, 0x0C, 0xB9, 0x39, + 0x42, 0xE2, 0x45, 0xFA, 0x80, 0x38, 0xF8, 0x29, 0x01, 0xEC, 0x53, 0xAA, + 0xDB, 0xA8, 0x26, 0x88, 0x0C, 0x62, 0x27, 0x2B, 0x1D, 0x23, 0x2A, 0x1A, + 0xD0, 0x03, 0x44, 0xC2, 0x28, 0x80, 0xC1, 0xE0, 0x91, 0x95, 0x94, 0x8A, + 0xFC, 0xBA, 0xB1, 0x80, 0xA8, 0x09, 0xB5, 0x14, 0xA9, 0xA1, 0x9C, 0x9E, + 0x50, 0x0A, 0x14, 0x51, 0x70, 0x2A, 0xA6, 0xD2, 0xBC, 0xF9, 0x8D, 0xB6, + 0x58, 0x7A, 0x71, 0x01, 0xC8, 0x43, 0x93, 0x4D, 0x50, 0x72, 0x57, 0xDA, + 0x95, 0x6F, 0x42, 0x00, 0xA0, 0x56, 0x94, 0xEC, 0x00, 0x32, 0xAD, 0x94, + 0x92, 0xE9, 0xD4, 0x92, 0xC9, 0xF1, 0x0C, 0x80, 0x6F, 0x29, 0x4D, 0x0F, + 0x47, 0xDE, 0xAE, 0x3F, 0x95, 0xC2, 0x99, 0x73, 0x3E, 0x01, 0x82, 0x00, + 0x60, 0x97, 0x1E, 0x71, 0x08, 0x48, 0x14, 0x13, 0xFB, 0x27, 0x7D, 0xD2, + 0x70, 0x2B, 0xC3, 0xFA, 0x4E, 0xDE, 0x74, 0x2B, 0x72, 0xED, 0xFE, 0x8E, + 0x7B, 0x04, 0x46, 0x9A, 0x30, 0xA4, 0x36, 0x81, 0x94, 0xE0, 0x23, 0x27, + 0x96, 0x96, 0x10, 0x9C, 0xA4, 0x17, 0x86, 0x0B, 0x21, 0xF1, 0x26, 0x32, + 0x0E, 0x27, 0x08, 0x72, 0x64, 0x46, 0x26, 0xA2, 0xD5, 0xE2, 0xFA, 0xB3, + 0xCF, 0xBE, 0x20, 0x81, 0xF3, 0xA2, 0x8C, 0x01, 0x7D, 0xC0, 0xD6, 0x06, + 0x40, 0x01, 0x98, 0x12, 0xA5, 0xC0, 0x00, 0x3E, 0x04, 0x21, 0x44, 0xDD, + 0x74, 0x7D, 0x67, 0xF3, 0xDC, 0x28, 0x49, 0x59, 0x96, 0xB9, 0x10, 0x7D, + 0x0C, 0x49, 0x21, 0x23, 0x9D, 0xF5, 0x42, 0xA0, 0x94, 0xD2, 0xFB, 0x44, + 0x53, 0x1F, 0x1C, 0x30, 0x5D, 0xDF, 0x01, 0xA2, 0xED, 0x2D, 0x22, 0x54, + 0x65, 0xD9, 0x5B, 0xDB, 0x75, 0x9B, 0xFD, 0x5D, 0x4A, 0xB7, 0xDB, 0x18, + 0xDD, 0x5B, 0x7F, 0xB3, 0xAC, 0xDF, 0xBD, 0x3F, 0x67, 0x44, 0x6B, 0x7D, + 0x8C, 0xDC, 0x59, 0xBB, 0x5A, 0x6F, 0x1F, 0x3C, 0xB8, 0xFB, 0xF8, 0xE9, + 0xE9, 0xF2, 0xF2, 0xFA, 0xE1, 0xDD, 0xC3, 0x83, 0xC3, 0x69, 0x8C, 0xFC, + 0xF4, 0xF9, 0x99, 0xED, 0xFB, 0x2C, 0xCB, 0x97, 0xCB, 0x75, 0x51, 0xE6, + 0x47, 0xF3, 0xA9, 0x96, 0xD4, 0xF7, 0x2E, 0xB8, 0x08, 0xEC, 0x25, 0xC9, + 0xED, 0x66, 0xD3, 0x34, 0x8D, 0xB7, 0xF6, 0xC1, 0xBD, 0xE3, 0xCC, 0xC8, + 0xE3, 0xC3, 0x49, 0x66, 0x34, 0x73, 0xB8, 0x59, 0xAC, 0x7F, 0xF4, 0xC3, + 0x0F, 0x95, 0x54, 0xE7, 0x57, 0xCB, 0xBE, 0xB3, 0x8B, 0xE5, 0xBA, 0x73, + 0xA1, 0x6E, 0xDA, 0xD9, 0x6C, 0x3A, 0x99, 0x8C, 0x36, 0x9B, 0x3A, 0xCB, + 0xB4, 0x52, 0xFA, 0xDD, 0x47, 0x0F, 0xDB, 0xCE, 0x96, 0x55, 0x1E, 0x63, + 0xBC, 0x7B, 0x38, 0x3B, 0x38, 0x3C, 0x78, 0xF9, 0xFA, 0xF2, 0x3F, 0x7E, + 0xF6, 0xF5, 0x87, 0xEF, 0xBF, 0x73, 0x72, 0x34, 0x0B, 0x31, 0x22, 0x8A, + 0xBE, 0xEF, 0xAF, 0xAE, 0x16, 0x9F, 0x7C, 0xF2, 0xE1, 0x62, 0xB1, 0xBA, + 0xB8, 0xBE, 0xF9, 0xE0, 0x83, 0x77, 0xB4, 0x54, 0xA7, 0x67, 0x67, 0xC6, + 0x64, 0x52, 0x29, 0xA5, 0xE5, 0xB6, 0xAE, 0x33, 0x63, 0xB4, 0xA4, 0x22, + 0x33, 0xB6, 0xEB, 0x89, 0x84, 0x75, 0x81, 0x39, 0x16, 0x79, 0xEE, 0x9C, + 0x4F, 0xC7, 0x48, 0x5A, 0x18, 0x29, 0x77, 0x36, 0x46, 0xA7, 0x9B, 0x16, + 0x19, 0x54, 0x9A, 0x2F, 0x49, 0x61, 0x94, 0xCA, 0xF3, 0x7C, 0xB9, 0xDE, + 0x90, 0x75, 0x89, 0x25, 0x69, 0xBD, 0x93, 0x24, 0x11, 0xA1, 0xB7, 0xAE, + 0xB7, 0x4E, 0x91, 0x48, 0x0C, 0x2D, 0xAD, 0x54, 0xE3, 0x03, 0x02, 0x78, + 0xEF, 0xE7, 0xD3, 0xE9, 0x62, 0xB9, 0xF4, 0x2E, 0xF1, 0x1D, 0x63, 0xEF, + 0xC3, 0x6A, 0xD3, 0xDC, 0x39, 0xD4, 0x91, 0xE3, 0x00, 0x0F, 0x4B, 0x6A, + 0xC9, 0x09, 0x6C, 0x91, 0x72, 0x03, 0xC6, 0x08, 0x11, 0x01, 0x21, 0x22, + 0x20, 0x32, 0xB2, 0xD8, 0x55, 0x24, 0x31, 0x70, 0x44, 0x46, 0x81, 0xD6, + 0x85, 0xBA, 0xB3, 0x00, 0x28, 0x89, 0x36, 0xDB, 0x2E, 0xC4, 0x68, 0x8C, + 0x72, 0xD6, 0x73, 0x84, 0x22, 0xD7, 0x4D, 0x67, 0x2F, 0x96, 0x5B, 0xA3, + 0x25, 0x21, 0x84, 0xC8, 0xD6, 0x3A, 0xA5, 0x88, 0x99, 0x49, 0x08, 0xAD, + 0x54, 0xD7, 0xFB, 0x51, 0x95, 0x93, 0xC0, 0xA6, 0xED, 0x93, 0x44, 0x7D, + 0x55, 0x64, 0x44, 0x02, 0x00, 0x81, 0xD9, 0x79, 0x67, 0xAD, 0x53, 0x92, + 0xBC, 0x73, 0x4D, 0xDB, 0x1D, 0xCC, 0xC6, 0x46, 0x2B, 0xE7, 0x63, 0xD3, + 0x75, 0x52, 0x52, 0x9E, 0xA7, 0x41, 0x50, 0xD4, 0x4A, 0xB5, 0x5D, 0x97, + 0x70, 0xF1, 0x02, 0xE4, 0xA8, 0x2C, 0xA4, 0x24, 0x1F, 0xC2, 0x72, 0xB5, + 0xFD, 0xEC, 0x8B, 0x27, 0xBF, 0xF9, 0xEA, 0xDB, 0xBB, 0x77, 0x0E, 0xEE, + 0x9D, 0x1C, 0xFE, 0xFE, 0x8F, 0x3E, 0xAA, 0xCA, 0xFC, 0xE2, 0x7A, 0xF1, + 0xC5, 0xD7, 0xCF, 0x8B, 0x3C, 0x7B, 0xEF, 0xED, 0x7B, 0x28, 0x44, 0x9E, + 0xA9, 0xE3, 0xC3, 0xC9, 0x66, 0xDB, 0x26, 0x21, 0x90, 0x34, 0x66, 0x49, + 0x9B, 0xB4, 0x2A, 0x32, 0x45, 0xE4, 0x7D, 0x68, 0x5B, 0xAB, 0x24, 0x25, + 0x91, 0xD3, 0x32, 0x33, 0xE6, 0xE7, 0x3F, 0x89, 0x81, 0xF3, 0xCC, 0x28, + 0x45, 0x59, 0xA6, 0xB4, 0xD6, 0x8A, 0x88, 0xB5, 0x02, 0x40, 0x1F, 0x23, + 0x44, 0x0E, 0xC1, 0x87, 0xC8, 0x72, 0x40, 0xD5, 0xBF, 0x09, 0x2B, 0x81, + 0x93, 0xB3, 0x6D, 0xFA, 0x88, 0x03, 0x20, 0x44, 0x66, 0xEF, 0x23, 0x91, + 0xD0, 0x4A, 0x68, 0xA5, 0x18, 0x62, 0x02, 0xB9, 0xA3, 0x00, 0x21, 0x28, + 0x09, 0x3A, 0x84, 0x10, 0x95, 0x24, 0x45, 0x82, 0x39, 0x4A, 0x02, 0x91, + 0xC2, 0xA5, 0x47, 0x41, 0x2C, 0x84, 0x90, 0x24, 0x84, 0xD8, 0x83, 0xB9, + 0x86, 0x7E, 0x3F, 0x30, 0x0C, 0x7C, 0x9F, 0x21, 0x6A, 0x08, 0x46, 0x46, + 0xA5, 0x08, 0x00, 0x9C, 0xF7, 0x8A, 0x44, 0xCA, 0x29, 0x8A, 0x4C, 0x1B, + 0x2D, 0x95, 0x4A, 0x6C, 0x0D, 0xB1, 0x4F, 0x9D, 0xF6, 0xA8, 0x8B, 0xBF, + 0x37, 0x5D, 0x0A, 0x61, 0x90, 0x24, 0x4C, 0x6F, 0xAE, 0x6E, 0x3A, 0x00, + 0x90, 0x52, 0xE2, 0x80, 0x72, 0x85, 0x1D, 0xF7, 0x03, 0x63, 0x04, 0x29, + 0xDF, 0x00, 0x78, 0x6E, 0x65, 0x5A, 0x29, 0x1D, 0x15, 0x6F, 0xDE, 0xE1, + 0xAE, 0x0E, 0xBD, 0x95, 0x8B, 0x71, 0x08, 0xDE, 0x39, 0x37, 0xF4, 0x3B, + 0x07, 0xAD, 0xE4, 0x3D, 0x4C, 0x0F, 0xF6, 0x6C, 0x25, 0x44, 0xDE, 0xD7, + 0xEA, 0xB0, 0xFF, 0xDE, 0x0E, 0x7A, 0x12, 0x83, 0x7F, 0xFA, 0xE4, 0xD9, + 0x6C, 0x32, 0x72, 0xAE, 0xDF, 0x6C, 0x5B, 0xEB, 0xE2, 0xFD, 0x93, 0xD9, + 0xD5, 0xB2, 0x76, 0xCE, 0x17, 0x99, 0x11, 0x88, 0xBD, 0x75, 0x92, 0x44, + 0x3A, 0x72, 0x01, 0xC0, 0x64, 0x5A, 0x10, 0x31, 0x70, 0xDF, 0xF5, 0x48, + 0x24, 0x18, 0xE4, 0x4E, 0x1E, 0x88, 0xA4, 0x48, 0x62, 0x1B, 0x42, 0x70, + 0x8C, 0x28, 0x04, 0x03, 0x04, 0x40, 0x50, 0x4A, 0x21, 0x62, 0x08, 0xC1, + 0x28, 0x35, 0x99, 0x8E, 0x96, 0xEB, 0xED, 0xCD, 0xCD, 0x32, 0xDD, 0x04, + 0x21, 0x44, 0x08, 0xB1, 0x4F, 0x4A, 0x66, 0x31, 0x12, 0x89, 0x83, 0xE9, + 0x68, 0xB3, 0xED, 0xBA, 0xCE, 0x6A, 0x4D, 0xE9, 0x3F, 0xD6, 0xBD, 0xFB, + 0xE5, 0x2F, 0x3E, 0xD7, 0x84, 0xDA, 0x48, 0x6B, 0x5D, 0x22, 0x51, 0x75, + 0x7D, 0xD7, 0xB4, 0xB1, 0x2C, 0x2B, 0xDB, 0xF7, 0xCE, 0xBB, 0xB2, 0xC8, + 0xC3, 0x36, 0x06, 0xEF, 0x9B, 0xA6, 0x2D, 0x8A, 0x1C, 0x80, 0x91, 0xF9, + 0x60, 0x3A, 0x3A, 0x9C, 0x57, 0x55, 0x91, 0x1D, 0x1E, 0xCE, 0xAC, 0x73, + 0xF3, 0xE9, 0xE8, 0xBD, 0x77, 0xDF, 0xB6, 0x3E, 0x9E, 0x9E, 0x5F, 0x11, + 0x87, 0x2F, 0xBE, 0x7A, 0xF6, 0xD5, 0xD3, 0x53, 0x10, 0xE2, 0xD1, 0xA3, + 0x87, 0x87, 0x87, 0x07, 0x79, 0x96, 0x95, 0x45, 0x5E, 0x16, 0xF9, 0xCD, + 0x72, 0x6D, 0x9D, 0x67, 0xC4, 0x27, 0xCF, 0x5E, 0x29, 0xC2, 0xE9, 0xB8, + 0x22, 0xA2, 0xC3, 0xF9, 0xF4, 0x9D, 0x87, 0xF6, 0xFC, 0xEA, 0x66, 0x54, + 0x15, 0x93, 0x71, 0x21, 0x89, 0xC6, 0xA3, 0x12, 0x51, 0xAC, 0xD6, 0x9B, + 0xCD, 0x66, 0xDB, 0x5B, 0xF7, 0xB3, 0xDF, 0xFF, 0x61, 0xD3, 0xF5, 0x27, + 0x77, 0x0E, 0xD6, 0x9B, 0xBA, 0xB7, 0xAE, 0x1A, 0x95, 0xAB, 0xD5, 0x46, + 0x49, 0x62, 0x66, 0xE7, 0x1C, 0x91, 0x08, 0x3E, 0x90, 0x40, 0x0E, 0xD8, + 0x77, 0xBD, 0xD2, 0x0A, 0x10, 0xA3, 0x0F, 0x42, 0x08, 0x67, 0x1D, 0x23, + 0x28, 0x29, 0x39, 0x46, 0x44, 0x4C, 0x2A, 0x80, 0x46, 0xEB, 0x74, 0xC7, + 0x88, 0xA8, 0xED, 0x7A, 0x29, 0x28, 0xE9, 0x6B, 0x2B, 0x29, 0x7B, 0x67, + 0x21, 0xA2, 0x96, 0x12, 0x89, 0x71, 0x70, 0xDF, 0x41, 0xE7, 0xBD, 0x24, + 0xA1, 0xB5, 0x14, 0x84, 0xA3, 0x51, 0x31, 0x1A, 0x95, 0xCB, 0xD5, 0x4A, + 0x4A, 0xF2, 0xC1, 0x03, 0xEA, 0xBA, 0xEE, 0x3E, 0xFF, 0xEA, 0xDB, 0x93, + 0xE3, 0x59, 0x48, 0x52, 0xF3, 0xBB, 0x8C, 0x0C, 0x11, 0x07, 0x11, 0x87, + 0x01, 0x04, 0x8E, 0x88, 0x80, 0x0C, 0x08, 0x8C, 0x8C, 0x91, 0x61, 0x70, + 0x4B, 0x04, 0x0C, 0x31, 0xD4, 0x4D, 0x27, 0xA5, 0x5C, 0x6F, 0xBB, 0x32, + 0xD7, 0x0F, 0x4E, 0x0E, 0x56, 0xDB, 0x96, 0x04, 0x69, 0xA5, 0xEA, 0xBA, + 0x4D, 0xDD, 0x3A, 0x1F, 0x62, 0x91, 0x67, 0xD8, 0x3B, 0x44, 0xE1, 0x43, + 0x48, 0x51, 0x0C, 0x11, 0x49, 0x60, 0x88, 0xA1, 0xC8, 0x15, 0x0D, 0x13, + 0x27, 0xF6, 0x21, 0x4A, 0x12, 0x46, 0x29, 0x1F, 0x82, 0xF5, 0x9D, 0xD6, + 0x3A, 0x04, 0x8F, 0x00, 0x44, 0x14, 0x98, 0xA7, 0xE3, 0xB2, 0xC8, 0x54, + 0x1A, 0x04, 0x23, 0x62, 0xD3, 0x76, 0x55, 0x99, 0x23, 0xA0, 0xF3, 0x11, + 0x20, 0x6C, 0xB6, 0x8D, 0x92, 0xB2, 0xEB, 0x9D, 0x40, 0xCC, 0x32, 0xE5, + 0x7C, 0xA8, 0xCA, 0x7C, 0xBB, 0x6D, 0x32, 0x93, 0x2F, 0xD7, 0xF5, 0xD7, + 0x4F, 0x5E, 0x3C, 0x7D, 0x7E, 0x7A, 0x7E, 0xB5, 0x7C, 0xF4, 0xF6, 0xBD, + 0x22, 0x33, 0xAB, 0x75, 0xAD, 0xA4, 0x7C, 0x7E, 0x7A, 0x71, 0xF7, 0xCE, + 0xE1, 0xD5, 0xCD, 0xEA, 0xF5, 0xC5, 0xE2, 0xFD, 0xB7, 0xEF, 0x25, 0x64, + 0x9C, 0x60, 0x1C, 0x29, 0x59, 0xE4, 0x46, 0xEC, 0xFC, 0x37, 0x8E, 0x0E, + 0x26, 0x07, 0xB3, 0x71, 0x1A, 0xBE, 0xE7, 0x99, 0x11, 0x88, 0x99, 0xD1, + 0xDE, 0x07, 0xEB, 0x7D, 0xA6, 0xD5, 0x4F, 0x7E, 0xF0, 0x3E, 0x00, 0x3C, + 0xFE, 0xF6, 0x8C, 0x04, 0xBE, 0xBE, 0xB8, 0x3E, 0x3A, 0x9C, 0xCD, 0x27, + 0x95, 0x52, 0x89, 0xAF, 0x88, 0x69, 0xF8, 0xCE, 0xBB, 0xB6, 0xBB, 0x18, + 0x72, 0x20, 0x20, 0x21, 0x22, 0xB1, 0x10, 0xC3, 0xC7, 0x04, 0x9C, 0x7A, + 0xFD, 0x40, 0x44, 0xDE, 0xC7, 0xD4, 0x23, 0x88, 0x31, 0xE0, 0x60, 0x25, + 0xC7, 0x00, 0x98, 0x69, 0xB2, 0x6E, 0x30, 0xEB, 0x85, 0x84, 0x27, 0x0D, + 0xC0, 0x1C, 0xE4, 0xCE, 0xDE, 0x9C, 0xE1, 0xD6, 0x3E, 0xBE, 0x9D, 0xEC, + 0x24, 0x50, 0xB5, 0x51, 0x52, 0x2B, 0x69, 0xAD, 0x47, 0x29, 0x8D, 0x92, + 0x24, 0x85, 0x51, 0xCA, 0x18, 0x45, 0x43, 0xCE, 0x9B, 0xEA, 0x3E, 0x80, + 0xEF, 0x8A, 0xDB, 0xDC, 0x8E, 0x3D, 0xE9, 0x7A, 0x42, 0x02, 0x59, 0xED, + 0x70, 0xBA, 0x3E, 0x04, 0x22, 0xA1, 0x64, 0x1A, 0xC5, 0x90, 0x1A, 0xEC, + 0x91, 0x86, 0x7E, 0x56, 0x8C, 0x10, 0x02, 0x87, 0xE0, 0x87, 0xA3, 0x69, + 0xC8, 0xEF, 0x92, 0x2A, 0xC7, 0x1B, 0xC1, 0x90, 0xDD, 0x6C, 0x6B, 0x78, + 0xAD, 0xFD, 0x23, 0xC9, 0x8A, 0xA5, 0x89, 0x72, 0x42, 0xE7, 0xE2, 0x4E, + 0x43, 0x6A, 0xE8, 0x21, 0x32, 0xC3, 0xCE, 0x8A, 0x69, 0xB8, 0x95, 0x6F, + 0xD2, 0xB9, 0x94, 0xA9, 0xD1, 0xF5, 0xE5, 0x65, 0xD7, 0xB6, 0xC1, 0x4B, + 0x08, 0xDE, 0x03, 0xFB, 0x18, 0xAB, 0xDC, 0xE4, 0x99, 0xC6, 0x1D, 0x12, + 0x38, 0xF5, 0x6B, 0xAC, 0x75, 0x28, 0x44, 0x08, 0x41, 0x2A, 0xA9, 0x8C, + 0xF6, 0x7D, 0x2F, 0x15, 0x01, 0xA3, 0x90, 0xD2, 0x18, 0x9D, 0x10, 0xF9, + 0x43, 0x1E, 0x3A, 0xA4, 0xB4, 0x11, 0x10, 0x92, 0xDC, 0x19, 0x46, 0x17, + 0x39, 0x4A, 0x49, 0xCC, 0xF1, 0xE6, 0xFA, 0x66, 0xDB, 0x76, 0xB7, 0x51, + 0xC4, 0x49, 0x64, 0xC6, 0x18, 0xD5, 0x75, 0xF6, 0x70, 0x36, 0xFA, 0xF0, + 0xD1, 0xC9, 0xB7, 0xA7, 0xD7, 0x6D, 0x67, 0xFF, 0xC9, 0x3F, 0xFE, 0xC1, + 0xCD, 0xCD, 0x52, 0x99, 0x6C, 0xBD, 0xED, 0x49, 0xC0, 0x27, 0x9F, 0xBC, + 0x77, 0x30, 0x1F, 0x57, 0x55, 0xE9, 0x9C, 0xBB, 0xBA, 0x59, 0x6F, 0xB6, + 0x8D, 0x04, 0xD1, 0x35, 0x5B, 0x06, 0xDC, 0x6C, 0x34, 0x8E, 0x90, 0x99, + 0x7B, 0xEB, 0x36, 0xDB, 0x26, 0x0D, 0x49, 0x43, 0xF0, 0xCE, 0x87, 0xD5, + 0x2A, 0x3F, 0x3A, 0x9C, 0x92, 0x24, 0xB6, 0x3E, 0x30, 0x7E, 0xFE, 0xE5, + 0xB3, 0xD9, 0xA4, 0xDA, 0xAE, 0xD6, 0x97, 0xD7, 0xCB, 0xDE, 0xC3, 0xBD, + 0x7B, 0x77, 0xAC, 0x8F, 0xBF, 0xFE, 0xF5, 0x17, 0xAF, 0x5E, 0x9E, 0xFD, + 0x77, 0xFF, 0xFC, 0xBF, 0x1A, 0x55, 0xC5, 0xF5, 0x62, 0x23, 0x48, 0xBA, + 0xCE, 0x5A, 0x17, 0x9C, 0xED, 0x7F, 0xF5, 0xC5, 0x37, 0x1F, 0x7F, 0xF8, + 0x1E, 0x40, 0x40, 0xC4, 0xBB, 0x77, 0x0E, 0xEF, 0xDE, 0x39, 0x7C, 0x79, + 0x7A, 0xC9, 0x1C, 0x47, 0x55, 0x81, 0x00, 0x1F, 0xBD, 0xFF, 0xF0, 0xE5, + 0xE9, 0x45, 0xDF, 0xBB, 0xEB, 0xC5, 0xF2, 0xDF, 0xFC, 0x5F, 0xFF, 0xAE, + 0xAC, 0xCA, 0xB6, 0xEB, 0xAD, 0xF5, 0xFF, 0xE8, 0xA7, 0xDF, 0x7F, 0xF7, + 0xD1, 0x83, 0xB3, 0xD7, 0x17, 0xA9, 0x13, 0x9A, 0xDA, 0xF9, 0xA9, 0x55, + 0x44, 0x29, 0xBA, 0xC7, 0x18, 0x62, 0x6C, 0xBB, 0x4E, 0x08, 0x91, 0x06, + 0x61, 0x52, 0x52, 0xF2, 0x60, 0x17, 0x02, 0x8B, 0xDC, 0x6C, 0xB6, 0x8D, + 0x56, 0x92, 0x48, 0xF4, 0xD6, 0xA6, 0x6D, 0xAF, 0x04, 0x31, 0x73, 0xDB, + 0xF5, 0xCC, 0xCC, 0x94, 0x74, 0x67, 0x65, 0xD2, 0xB4, 0xC8, 0x74, 0x3A, + 0x68, 0x40, 0x0B, 0x91, 0xE5, 0xD9, 0xBD, 0xBB, 0xC7, 0xD7, 0xD7, 0x37, + 0x02, 0x51, 0x1A, 0xDD, 0xF7, 0x36, 0x32, 0x10, 0xD1, 0xCB, 0xB3, 0x2B, + 0xE7, 0x02, 0x0F, 0x62, 0x0C, 0x43, 0x22, 0xB6, 0x3F, 0x16, 0x11, 0x87, + 0xCF, 0x9A, 0x41, 0xA4, 0xCE, 0x3F, 0x02, 0xE0, 0x0E, 0x84, 0x8D, 0x08, + 0xDE, 0xC7, 0xC5, 0xAA, 0x01, 0x80, 0xCE, 0xFA, 0xCC, 0xA8, 0x18, 0xA3, + 0x94, 0x64, 0xAD, 0x3F, 0x98, 0x4F, 0x62, 0x64, 0x8E, 0x31, 0x44, 0x71, + 0x7E, 0xB3, 0x39, 0x9A, 0x8D, 0x9A, 0xCE, 0x86, 0x18, 0x22, 0x83, 0xD1, + 0xCA, 0xF9, 0x10, 0x63, 0x40, 0x31, 0xB0, 0x2F, 0x9C, 0xF7, 0x75, 0xD3, + 0x6F, 0x9B, 0x2E, 0xCF, 0xB4, 0x51, 0xE4, 0x43, 0x90, 0x02, 0x11, 0x48, + 0x08, 0xCC, 0x32, 0x0D, 0x00, 0xCE, 0x39, 0xE7, 0x7C, 0x72, 0x45, 0x62, + 0x00, 0x22, 0x2C, 0x72, 0x0D, 0x08, 0x09, 0x5E, 0xC3, 0x8C, 0xDE, 0x87, + 0xB6, 0xEB, 0xA9, 0x10, 0xCE, 0x79, 0x29, 0x49, 0x09, 0x99, 0x69, 0x01, + 0xCC, 0x52, 0x49, 0x8E, 0xB1, 0xC8, 0xCD, 0xBD, 0x3B, 0x87, 0x97, 0xD7, + 0x8B, 0xCF, 0xBE, 0xF8, 0xE6, 0xF1, 0x93, 0x17, 0x79, 0x6E, 0xE6, 0xB3, + 0x29, 0x00, 0xEB, 0xB5, 0x9C, 0x4D, 0x46, 0x65, 0x91, 0x7D, 0xF9, 0xF8, + 0x45, 0x55, 0xE6, 0x0F, 0xEE, 0x1D, 0x26, 0x63, 0xF9, 0xB4, 0xB3, 0x78, + 0xE8, 0x65, 0x43, 0xE4, 0x08, 0x08, 0x24, 0x07, 0x65, 0x0B, 0xEB, 0x82, + 0x92, 0x52, 0xA9, 0x94, 0xDF, 0xE0, 0xE1, 0x7C, 0x12, 0x42, 0x74, 0xC1, + 0x37, 0x9D, 0x27, 0x41, 0xDB, 0x6D, 0xD3, 0xB5, 0x7D, 0x51, 0x18, 0xAD, + 0x94, 0x94, 0x54, 0x95, 0xF9, 0xAE, 0x8E, 0x4E, 0x07, 0xF9, 0xB0, 0xC0, + 0x05, 0x82, 0x96, 0x42, 0x90, 0x42, 0x4E, 0xFC, 0xD7, 0xC1, 0xED, 0x3B, + 0x6D, 0x92, 0x5D, 0x43, 0x09, 0x04, 0x42, 0x08, 0xC9, 0x2C, 0x6E, 0xF0, + 0x25, 0x01, 0x8E, 0xA9, 0xE7, 0x36, 0x6C, 0xF9, 0xC8, 0x72, 0x68, 0x15, + 0xA4, 0x6F, 0xE2, 0xC0, 0x71, 0x42, 0xC0, 0x84, 0x37, 0x4D, 0x61, 0x45, + 0x2B, 0x25, 0x49, 0x00, 0x83, 0x94, 0x42, 0x23, 0x65, 0x46, 0xE7, 0xB9, + 0xC6, 0x94, 0xC6, 0xDC, 0x02, 0x4C, 0xEC, 0xA7, 0x13, 0xF0, 0xDD, 0xC7, + 0xBE, 0xD5, 0x95, 0xFE, 0x29, 0xA5, 0x24, 0xE2, 0x94, 0x2E, 0x1A, 0x52, + 0x99, 0x51, 0x7B, 0xA4, 0x44, 0x0A, 0x49, 0xCC, 0x31, 0x84, 0x28, 0x04, + 0x49, 0x39, 0x50, 0xE4, 0xBD, 0xF7, 0x5D, 0xEF, 0x98, 0x39, 0xF5, 0x29, + 0x53, 0xF2, 0xE5, 0x43, 0x60, 0x06, 0x12, 0x82, 0x68, 0x08, 0xB8, 0x31, + 0x72, 0xE4, 0x61, 0xDE, 0x2C, 0xC4, 0xE0, 0xC3, 0xC4, 0x83, 0x5F, 0x1E, + 0x73, 0x64, 0x14, 0x48, 0x02, 0x95, 0x1C, 0x86, 0x09, 0x91, 0x53, 0x1B, + 0x7E, 0xC0, 0x85, 0x24, 0xD4, 0xD8, 0xD0, 0xCB, 0xE3, 0x98, 0x02, 0xD9, + 0x62, 0xB9, 0x3E, 0x7D, 0x7D, 0x75, 0xFF, 0xDE, 0x61, 0x95, 0xA9, 0xAA, + 0xCC, 0xDB, 0xDE, 0x2D, 0x17, 0x4B, 0xA3, 0xCD, 0xE5, 0xF5, 0xBA, 0x2A, + 0x4C, 0x91, 0x29, 0x04, 0xF0, 0x3E, 0xD8, 0xDE, 0xE6, 0x65, 0xE1, 0x9D, + 0x4B, 0xF2, 0x3B, 0x82, 0x64, 0x22, 0x1D, 0x68, 0xAD, 0x38, 0x46, 0xCF, + 0x11, 0x31, 0xC9, 0x09, 0x60, 0x8C, 0x1C, 0x62, 0x48, 0xC1, 0x3C, 0x39, + 0x30, 0x12, 0x09, 0x6D, 0x94, 0xED, 0x1D, 0x21, 0x2A, 0x29, 0x8F, 0x0F, + 0x66, 0x0B, 0xB9, 0x5D, 0x6F, 0xB6, 0x29, 0x95, 0xB0, 0xDE, 0x4B, 0x22, + 0x04, 0x40, 0x84, 0xBB, 0xC7, 0xE3, 0xE5, 0x6A, 0xF3, 0xEA, 0x62, 0x21, + 0x95, 0x3C, 0x39, 0x9E, 0xFF, 0xF9, 0x67, 0x5F, 0x7F, 0xF8, 0xF1, 0x07, + 0x4F, 0x9E, 0xBD, 0xD6, 0x99, 0xA9, 0xAA, 0xE2, 0xBD, 0x77, 0x1F, 0xAE, + 0xD6, 0x9B, 0xB6, 0x6D, 0xEF, 0xDF, 0x3D, 0x20, 0xA2, 0xCB, 0xEB, 0xA5, + 0x22, 0xDC, 0xD6, 0xCD, 0xC5, 0xEB, 0xCE, 0xF5, 0xCE, 0xC5, 0x78, 0x7E, + 0x71, 0xBD, 0xDD, 0x0E, 0xAA, 0xFC, 0x09, 0xAD, 0x56, 0x96, 0x0F, 0xA6, + 0x93, 0x71, 0x67, 0xFD, 0xCD, 0xB2, 0x76, 0x3E, 0x62, 0xF4, 0x67, 0x67, + 0x17, 0x75, 0x1F, 0xAA, 0xD9, 0xFC, 0xDD, 0xF7, 0xA6, 0x21, 0xF8, 0x9B, + 0x4D, 0xBB, 0xD9, 0x6C, 0x3F, 0xFD, 0xF4, 0x8B, 0x83, 0xF9, 0xE4, 0x67, + 0x7F, 0xF0, 0x23, 0x40, 0x94, 0x92, 0xAA, 0x22, 0xFF, 0xCD, 0xE3, 0xE7, + 0x27, 0xC7, 0x47, 0xF3, 0xD9, 0xB4, 0xAE, 0x1B, 0x6D, 0x94, 0xD6, 0xDA, + 0x76, 0xFD, 0x64, 0x54, 0x54, 0xA5, 0x79, 0xFC, 0xED, 0xAB, 0x7B, 0x77, + 0x8E, 0x8E, 0x0F, 0xA7, 0xDB, 0x6D, 0x3B, 0x9F, 0x4D, 0xC6, 0xE3, 0x6A, + 0x54, 0xE5, 0xAF, 0x5F, 0x5F, 0x2C, 0x17, 0x8B, 0xF3, 0xCB, 0xC5, 0xC5, + 0xE5, 0xA2, 0x6D, 0xDB, 0x7F, 0xFE, 0xDF, 0xFE, 0xFC, 0xE0, 0x60, 0x76, + 0x73, 0x7D, 0x43, 0x54, 0xB8, 0x10, 0x49, 0x4A, 0x6F, 0x2D, 0x87, 0x18, + 0x05, 0x27, 0xB3, 0xB2, 0xAE, 0xB7, 0x59, 0x66, 0x92, 0xE9, 0x06, 0x03, + 0x6B, 0x96, 0x24, 0xA5, 0x75, 0x01, 0x11, 0x9D, 0x0F, 0xCE, 0x7B, 0x40, + 0x28, 0xA4, 0x21, 0x44, 0x16, 0xE8, 0x9C, 0x57, 0x44, 0xC0, 0x1C, 0x99, + 0x33, 0x63, 0xBA, 0xBE, 0x77, 0x3E, 0x38, 0x1F, 0xB3, 0x2C, 0x2B, 0x72, + 0x2D, 0x10, 0xEE, 0x18, 0x7D, 0x79, 0xB5, 0x54, 0x46, 0x49, 0x49, 0xAF, + 0xCF, 0x2E, 0x63, 0x8C, 0x59, 0xA6, 0xDB, 0xCE, 0xA5, 0xA5, 0xA5, 0xA4, + 0x40, 0x41, 0xD6, 0x7B, 0x4C, 0x9F, 0x7B, 0xCA, 0x0D, 0x86, 0xE0, 0x35, + 0x6C, 0x95, 0x61, 0x71, 0x02, 0x33, 0xA4, 0xBD, 0xCD, 0x7B, 0x55, 0x98, + 0xF4, 0xBF, 0xB6, 0x9D, 0xF5, 0x3E, 0xF4, 0xD6, 0xE5, 0x99, 0x7A, 0x7E, + 0xBE, 0xF0, 0x21, 0x21, 0x7B, 0x10, 0x62, 0x44, 0x81, 0x5D, 0x6F, 0xE7, + 0xE3, 0x92, 0x01, 0x42, 0x04, 0x49, 0x22, 0xFA, 0xD0, 0x76, 0x96, 0x48, + 0xC8, 0xB4, 0xB1, 0x89, 0x9C, 0x0F, 0xBD, 0xF3, 0x5D, 0x6F, 0x43, 0x88, + 0x4D, 0xD7, 0x1B, 0xAD, 0x32, 0x89, 0xC0, 0xAC, 0x8D, 0x36, 0xC6, 0xEC, + 0xCB, 0x97, 0x3C, 0x33, 0x69, 0xDD, 0x4A, 0x29, 0x42, 0xE0, 0xD4, 0x46, + 0x14, 0x88, 0x65, 0x9E, 0x2D, 0x37, 0xB5, 0x40, 0x2C, 0x8B, 0x2C, 0x01, + 0xD1, 0xD3, 0x3E, 0xE1, 0x14, 0x2C, 0x94, 0xAC, 0xEB, 0x16, 0x11, 0xCA, + 0xC2, 0x5C, 0x5E, 0x71, 0x91, 0x67, 0x42, 0x60, 0x6E, 0xD4, 0x62, 0xB9, + 0xD8, 0xD6, 0x5B, 0x25, 0x65, 0xEF, 0xDC, 0x8F, 0x7F, 0xF8, 0xF1, 0xE1, + 0x6C, 0xF2, 0xF9, 0x97, 0xCF, 0xA4, 0x10, 0x27, 0xC7, 0xB3, 0x1D, 0x06, + 0x75, 0x70, 0x7D, 0x7F, 0xD3, 0x1D, 0xDF, 0x25, 0x3B, 0x3C, 0x28, 0xF7, + 0x85, 0x10, 0x23, 0xA6, 0xDC, 0x2A, 0x49, 0x5D, 0x19, 0x55, 0xE5, 0x06, + 0x00, 0x9C, 0xF3, 0x37, 0xCB, 0x0D, 0x02, 0x7A, 0x1F, 0xEE, 0xDE, 0x39, + 0x38, 0x3A, 0x9C, 0xA5, 0xC8, 0x92, 0xA6, 0xA5, 0x69, 0xD8, 0xB5, 0x4F, + 0x1D, 0x50, 0x88, 0x18, 0xA3, 0x40, 0x14, 0x84, 0x21, 0x44, 0x1F, 0x39, + 0x46, 0x48, 0x48, 0xD7, 0x1D, 0xA0, 0x2F, 0x42, 0x88, 0xD6, 0x86, 0x64, + 0xE4, 0xFC, 0x26, 0xED, 0x4A, 0x0D, 0x00, 0x46, 0x19, 0x99, 0xE9, 0xD6, + 0x9C, 0x0E, 0x70, 0xA7, 0xCA, 0xB4, 0xFB, 0x5D, 0x12, 0x02, 0x18, 0xAC, + 0xF3, 0x24, 0x84, 0xD6, 0x4A, 0x4B, 0xCA, 0x32, 0x95, 0xA0, 0x6C, 0xF0, + 0x5B, 0xD8, 0xAE, 0xDF, 0x09, 0x61, 0xB7, 0x7F, 0xC4, 0x3B, 0xFC, 0x48, + 0xEA, 0x70, 0x0F, 0x12, 0x28, 0xBB, 0x1C, 0x2A, 0xB5, 0xC6, 0xF6, 0xF2, + 0xB0, 0x29, 0xD0, 0x24, 0x75, 0x79, 0xE7, 0x83, 0xF7, 0xB1, 0xB7, 0x2E, + 0x0E, 0xDE, 0x50, 0x90, 0xBC, 0x97, 0x53, 0xE0, 0xA4, 0x37, 0xD6, 0x73, + 0xE9, 0xF6, 0x02, 0xC7, 0x41, 0xCA, 0x39, 0x1D, 0x1D, 0x0C, 0xB8, 0x1F, + 0x54, 0xC4, 0x10, 0x01, 0x05, 0x84, 0x48, 0x91, 0x31, 0xB1, 0x14, 0x84, + 0x88, 0x0C, 0xC8, 0xC3, 0xB2, 0xDB, 0xA9, 0x57, 0xA7, 0xCA, 0x92, 0x99, + 0xB9, 0xD9, 0xD6, 0x6D, 0xD7, 0x6D, 0xEB, 0x4E, 0x0B, 0xA6, 0x71, 0xA5, + 0x28, 0x28, 0x29, 0xBB, 0xDE, 0xD6, 0x6D, 0x5F, 0x15, 0x46, 0x20, 0x3A, + 0x1F, 0xB4, 0x22, 0xA5, 0xC8, 0x76, 0x9D, 0xD2, 0x12, 0x50, 0xD4, 0x4D, + 0xA7, 0x09, 0x09, 0x04, 0x08, 0x88, 0xC1, 0xEF, 0x36, 0x03, 0x44, 0x06, + 0xEF, 0x5D, 0xA2, 0x40, 0x84, 0x10, 0x03, 0x27, 0xAE, 0xF4, 0x90, 0xCC, + 0x26, 0x0C, 0xA6, 0x52, 0x72, 0x8F, 0xA9, 0x09, 0x21, 0x38, 0x17, 0xAC, + 0x8F, 0x2E, 0x91, 0xA8, 0x88, 0xDE, 0xBA, 0x33, 0x2B, 0x8A, 0xFC, 0xE5, + 0xE9, 0xCD, 0x7F, 0xF9, 0x4F, 0x7F, 0xBC, 0x5E, 0x6D, 0xCA, 0xB2, 0xB8, + 0x73, 0x74, 0x70, 0x73, 0xB3, 0x04, 0xCE, 0x8C, 0x96, 0xDE, 0x79, 0x44, + 0x5C, 0x6D, 0x6A, 0x1F, 0xF8, 0xE4, 0xF8, 0xA0, 0xEF, 0xFA, 0xB3, 0x8B, + 0xEB, 0xAA, 0xC8, 0x17, 0xEB, 0xED, 0xD5, 0xE5, 0x95, 0x29, 0x8B, 0xBE, + 0xEF, 0xFB, 0xDE, 0x0A, 0xA2, 0x64, 0xCF, 0xF3, 0x7B, 0xDF, 0x7F, 0xF7, + 0xDD, 0x47, 0xF7, 0x6F, 0x16, 0x9B, 0xCE, 0x05, 0x60, 0x0E, 0xD6, 0x36, + 0x75, 0x7B, 0xB3, 0xAE, 0xEF, 0xDD, 0xBF, 0x33, 0x2A, 0xF3, 0xAB, 0xCB, + 0x8B, 0xAF, 0x1F, 0x3F, 0xDB, 0x34, 0x4E, 0x08, 0xFA, 0xE9, 0xEF, 0xFF, + 0xDE, 0xF9, 0xF9, 0xD5, 0xFF, 0xFE, 0x7F, 0xFE, 0xE5, 0x8F, 0x7F, 0xFC, + 0x83, 0xD1, 0xA8, 0x2C, 0x0A, 0xF3, 0xFE, 0x3B, 0xF7, 0x4F, 0xCF, 0xAE, + 0xEE, 0xDD, 0x39, 0xC8, 0x12, 0xC5, 0x3D, 0x99, 0xB0, 0x84, 0xF8, 0xF0, + 0xFE, 0xC9, 0xC1, 0x6C, 0x52, 0x77, 0x7D, 0x72, 0xE5, 0x41, 0xC4, 0xBE, + 0x77, 0x1F, 0x3C, 0x7A, 0xF8, 0xFE, 0x3B, 0x6F, 0x5D, 0x5F, 0xDD, 0x7C, + 0xF5, 0xE4, 0x85, 0x56, 0xD2, 0xF6, 0xF6, 0xEC, 0xFC, 0x2A, 0xCD, 0x2E, + 0x78, 0x28, 0xC9, 0x59, 0x12, 0x75, 0xCE, 0x2A, 0xA5, 0x05, 0xA2, 0xB5, + 0x7E, 0x94, 0x65, 0xF3, 0xD9, 0xB4, 0xB7, 0xEE, 0xF5, 0xD9, 0x25, 0x47, + 0xB0, 0xD6, 0x65, 0xB9, 0x18, 0x7A, 0xA6, 0x42, 0x10, 0x51, 0xF0, 0x21, + 0xCD, 0x8B, 0x89, 0x59, 0x1A, 0x43, 0x52, 0x28, 0xA6, 0xAE, 0x77, 0x16, + 0xAD, 0x40, 0x74, 0x2E, 0xC4, 0x10, 0xF3, 0xC2, 0x14, 0x45, 0x2E, 0x49, + 0xC4, 0x10, 0xBB, 0xCE, 0x7A, 0xE7, 0xFA, 0xDE, 0x76, 0x5D, 0x64, 0x4E, + 0x33, 0x9F, 0xC0, 0x00, 0x08, 0x18, 0x62, 0xBC, 0xBA, 0x5E, 0x2E, 0xD7, + 0xCD, 0x6C, 0x52, 0x85, 0x90, 0xC0, 0x12, 0x20, 0xDE, 0xD0, 0xC7, 0x11, + 0x12, 0xC9, 0x25, 0x82, 0xD8, 0x61, 0x17, 0x6F, 0x0D, 0xBA, 0x00, 0x00, + 0xAC, 0xF7, 0x75, 0xD3, 0x27, 0x8C, 0x08, 0x30, 0x38, 0x1F, 0xDA, 0xDE, + 0x4A, 0x21, 0xAE, 0x96, 0x9B, 0x10, 0x62, 0x64, 0x16, 0x42, 0xF4, 0x2E, + 0x74, 0xAB, 0x3A, 0x04, 0xC7, 0x51, 0x28, 0xA5, 0x7C, 0x88, 0xFB, 0xAC, + 0x6F, 0xDB, 0xF4, 0xD6, 0xBA, 0xC3, 0xD9, 0x38, 0x9D, 0xDF, 0x4D, 0xDB, + 0x2E, 0x56, 0x9B, 0x59, 0x95, 0x17, 0x99, 0x0E, 0xDE, 0x3B, 0x21, 0xBC, + 0x0F, 0xC9, 0x85, 0x40, 0x2B, 0x25, 0x04, 0x56, 0x45, 0x96, 0x64, 0x76, + 0x18, 0x30, 0xE9, 0x68, 0xF6, 0xD6, 0x7A, 0xE7, 0xF2, 0xDC, 0xC4, 0xC8, + 0x3E, 0x04, 0x21, 0x92, 0x17, 0x1A, 0x32, 0x70, 0x52, 0x4C, 0x4C, 0xD9, + 0x8D, 0x75, 0x4E, 0x08, 0x14, 0x11, 0x26, 0xA3, 0x62, 0x3E, 0xAD, 0x10, + 0xC5, 0x72, 0xB3, 0xF5, 0x3E, 0xBC, 0x7C, 0x75, 0x3E, 0x1E, 0x8F, 0xA6, + 0x93, 0x51, 0xDF, 0xF7, 0x9F, 0x7F, 0xF5, 0x94, 0x08, 0x8D, 0xD1, 0x92, + 0x48, 0x6B, 0xB5, 0xDA, 0xD6, 0xC9, 0xE1, 0x6C, 0x80, 0x52, 0x01, 0x00, + 0xA2, 0x90, 0xC2, 0x20, 0xF6, 0xBD, 0x4B, 0x02, 0x9F, 0xE9, 0x42, 0x42, + 0x9A, 0xD3, 0x21, 0x5A, 0xF6, 0x08, 0x80, 0x00, 0x99, 0xD6, 0x44, 0xA2, + 0xED, 0xFA, 0xD7, 0xE7, 0xD7, 0x80, 0x5C, 0x55, 0x65, 0x91, 0x65, 0x88, + 0x9C, 0xEA, 0x92, 0xB0, 0x9B, 0x5F, 0xD2, 0x77, 0x32, 0xA1, 0x81, 0x09, + 0x09, 0x10, 0xF7, 0x61, 0x6E, 0x68, 0x22, 0xF9, 0xB4, 0x8F, 0xDE, 0x28, + 0xBF, 0x02, 0x43, 0x80, 0x98, 0x7E, 0x9B, 0xFE, 0xE8, 0x4F, 0xFF, 0x0C, + 0x76, 0xC1, 0x36, 0xC5, 0xAF, 0x1D, 0xA1, 0x0C, 0x77, 0xB3, 0x99, 0x41, + 0x40, 0x4E, 0x0A, 0xA1, 0x95, 0x14, 0x02, 0x93, 0x64, 0x8E, 0xD8, 0xE9, + 0x31, 0xF1, 0x77, 0x81, 0x14, 0x7F, 0xEF, 0x63, 0x9F, 0xA6, 0xEF, 0x4A, + 0xCB, 0x80, 0xF8, 0xE6, 0xBF, 0xF3, 0x60, 0xE1, 0x11, 0x87, 0x08, 0x05, + 0x00, 0x00, 0xC9, 0xD1, 0x63, 0xB5, 0x6D, 0x9B, 0xD6, 0x5A, 0x37, 0x84, + 0x83, 0x24, 0xFD, 0x11, 0x86, 0xFC, 0x8E, 0x63, 0x64, 0x1F, 0x38, 0x84, + 0x98, 0xA4, 0xD6, 0xF6, 0xC6, 0x47, 0xBF, 0xFB, 0xEA, 0x4A, 0xD2, 0xA8, + 0xCC, 0x10, 0x51, 0x26, 0xAC, 0x0A, 0x20, 0xEE, 0x24, 0x59, 0xF6, 0xB3, + 0x61, 0x66, 0x4E, 0xF3, 0xE9, 0x14, 0xCB, 0x00, 0x80, 0x48, 0xBC, 0x7A, + 0xF1, 0x7C, 0xBB, 0xDE, 0x6C, 0x9A, 0xFE, 0x68, 0x3E, 0x26, 0x42, 0xAD, + 0xD4, 0xA6, 0x69, 0x6E, 0x56, 0xF5, 0xA6, 0xE9, 0x7B, 0x17, 0x96, 0xEB, + 0x66, 0xB3, 0x69, 0x23, 0xEF, 0x74, 0x95, 0x10, 0xAD, 0xF3, 0x09, 0xA2, + 0xCD, 0xCC, 0x52, 0xC9, 0xA4, 0xDF, 0x90, 0xAC, 0xED, 0x77, 0xA5, 0xF0, + 0x70, 0xBD, 0x49, 0xB2, 0x43, 0x08, 0xA1, 0xB5, 0x0E, 0x3E, 0xA4, 0x10, + 0x53, 0x16, 0xA6, 0x2C, 0x73, 0x66, 0x6E, 0x3B, 0xCB, 0x0C, 0x6D, 0x6F, + 0x7B, 0xEB, 0x52, 0x5C, 0x1B, 0x57, 0xC5, 0x1F, 0xFE, 0xFC, 0x93, 0xC7, + 0xDF, 0xBE, 0xFE, 0xF6, 0xF5, 0xE2, 0x7F, 0xFC, 0x1F, 0xFE, 0xD9, 0xDF, + 0xFD, 0xDD, 0xA7, 0x77, 0x4E, 0x8E, 0xCB, 0xB2, 0xF8, 0xF8, 0x83, 0x87, + 0x0F, 0xEE, 0x1F, 0x97, 0x45, 0x26, 0x10, 0x8B, 0x22, 0x3F, 0x3C, 0x9C, + 0x6D, 0x37, 0xCD, 0xF9, 0xC5, 0x75, 0xD7, 0xD9, 0xBA, 0x69, 0x53, 0x7C, + 0xD9, 0xB6, 0x7D, 0xD7, 0xDB, 0xBA, 0x6E, 0xAB, 0x6A, 0xA4, 0xB5, 0x5E, + 0x6F, 0xB6, 0x3F, 0xF8, 0xE8, 0xD1, 0x4F, 0x7F, 0xFC, 0x3D, 0xEF, 0xB9, + 0xAE, 0xBB, 0xBE, 0xEF, 0xAF, 0xAF, 0x16, 0x4D, 0xDB, 0x55, 0x55, 0x8E, + 0x08, 0x52, 0xA9, 0x8B, 0xF3, 0xCB, 0xD5, 0xA6, 0xFE, 0xFA, 0xF1, 0xF3, + 0xAF, 0xBF, 0x7E, 0x56, 0x56, 0xD5, 0x47, 0x9F, 0x7C, 0x9C, 0x97, 0xE5, + 0x6C, 0x3A, 0xFD, 0xFC, 0x37, 0xDF, 0x14, 0x79, 0x56, 0x16, 0xC5, 0xD1, + 0x7C, 0x9A, 0x65, 0xBA, 0xEB, 0xFB, 0xF9, 0x64, 0x1C, 0x63, 0x72, 0x8A, + 0x6B, 0x94, 0xA4, 0xDC, 0x28, 0x25, 0x65, 0x91, 0x67, 0x5A, 0xA9, 0xD4, + 0xE0, 0x13, 0x42, 0x48, 0x29, 0x0E, 0x67, 0x23, 0xAD, 0xD5, 0x74, 0x3A, + 0xBE, 0x73, 0x7C, 0x10, 0x23, 0xD7, 0x75, 0x7B, 0x73, 0xB3, 0xEC, 0xFA, + 0x0E, 0x51, 0x10, 0xC9, 0x84, 0xEA, 0x72, 0xCE, 0xA5, 0x4E, 0x79, 0x8A, + 0xDA, 0xE3, 0xF1, 0xE8, 0x60, 0x3E, 0xED, 0x7A, 0x9B, 0x65, 0x59, 0x8C, + 0x4C, 0x52, 0xA0, 0xC0, 0x22, 0xCF, 0x8C, 0xD1, 0xC0, 0x9C, 0xC0, 0x3D, + 0x7B, 0xAB, 0xF0, 0x74, 0xF2, 0x34, 0x6D, 0x9F, 0x6A, 0x13, 0xA5, 0x64, + 0x04, 0x76, 0xD6, 0x6D, 0x36, 0x75, 0x0C, 0xBE, 0x6B, 0x3B, 0xAD, 0x95, + 0x24, 0x0A, 0x91, 0x43, 0x64, 0xE7, 0x83, 0x0F, 0x31, 0xD9, 0x4A, 0x10, + 0xA1, 0xF3, 0x01, 0x51, 0xBC, 0xFB, 0xCE, 0xFD, 0x51, 0x59, 0x24, 0x8B, + 0xA3, 0xE1, 0xD8, 0x63, 0x88, 0x83, 0x9C, 0x0A, 0xA2, 0xD8, 0x35, 0x91, + 0xBF, 0x7B, 0x40, 0xA7, 0xC0, 0xBA, 0x6D, 0xBA, 0xBF, 0xFD, 0xE5, 0x97, + 0x6D, 0xE7, 0x8A, 0x3C, 0x1B, 0x57, 0xB9, 0x75, 0x3E, 0x46, 0x08, 0x21, + 0x24, 0x26, 0x75, 0xD7, 0x3B, 0x25, 0x15, 0x00, 0x93, 0x40, 0x12, 0xC2, + 0x79, 0x4F, 0x44, 0x4A, 0x52, 0xDF, 0xFB, 0xB4, 0x3C, 0x42, 0xE4, 0x18, + 0xB9, 0x2C, 0x4C, 0x60, 0x76, 0xCE, 0xB7, 0x5D, 0xE7, 0x7D, 0x50, 0x24, + 0x32, 0xA3, 0x84, 0x40, 0xE7, 0xC3, 0x6A, 0x5D, 0x5B, 0xE7, 0x3A, 0xEB, + 0xB4, 0x94, 0x89, 0x0F, 0x94, 0x04, 0xBF, 0xD2, 0xF3, 0x84, 0x18, 0x42, + 0x08, 0x65, 0x9E, 0x31, 0xA0, 0x73, 0x0E, 0x00, 0x00, 0x41, 0x20, 0x5A, + 0xE7, 0x52, 0x91, 0xE1, 0x5C, 0xE8, 0xFA, 0x5E, 0x12, 0x4D, 0xC7, 0xE5, + 0xD1, 0x7C, 0x9C, 0x19, 0xDD, 0xF6, 0x36, 0xCF, 0x34, 0x32, 0x1F, 0x1E, + 0x4C, 0x62, 0xE0, 0xB3, 0x8B, 0x9B, 0xAB, 0xAB, 0xC5, 0x72, 0xB5, 0x49, + 0x9D, 0xAF, 0x10, 0xD8, 0x7B, 0x77, 0x75, 0xBD, 0x22, 0x12, 0x8B, 0xD5, + 0xA6, 0xDE, 0x76, 0x1C, 0x63, 0x08, 0x61, 0x5B, 0xB7, 0xCE, 0xB9, 0xAE, + 0xB7, 0x6D, 0x67, 0x53, 0xCE, 0x97, 0x68, 0x3C, 0x00, 0x89, 0x1E, 0x93, + 0x72, 0x09, 0xE0, 0x44, 0x25, 0x56, 0x32, 0x19, 0xC7, 0x28, 0x29, 0x8D, + 0x56, 0xEB, 0x4D, 0xFD, 0xF2, 0xD5, 0xC5, 0xCD, 0x72, 0x45, 0x92, 0x8A, + 0x3C, 0x4B, 0x78, 0xA3, 0x04, 0xDB, 0x02, 0xE0, 0xFD, 0xC6, 0x8F, 0x31, + 0x71, 0xC2, 0x41, 0x26, 0x1B, 0x36, 0x81, 0x3B, 0x2B, 0x89, 0x81, 0xE2, + 0xF4, 0x9D, 0x78, 0x02, 0xE9, 0xD3, 0x06, 0x00, 0x90, 0xCC, 0x89, 0x44, + 0x08, 0x6F, 0x5A, 0x97, 0x43, 0x4F, 0x80, 0x71, 0x68, 0x23, 0xA5, 0x86, + 0x00, 0x13, 0x0D, 0x66, 0xE5, 0x42, 0x60, 0x8C, 0x10, 0x42, 0x44, 0x0C, + 0xB7, 0x31, 0x5F, 0xFF, 0xA9, 0x28, 0xB6, 0x7F, 0xEC, 0x50, 0x17, 0xA8, + 0x86, 0x55, 0x3E, 0xA8, 0xE0, 0xA7, 0x44, 0x6C, 0x27, 0x8A, 0xCF, 0x00, + 0xE0, 0x7D, 0x68, 0x7B, 0xEB, 0x9C, 0x0F, 0xBC, 0xCF, 0xAD, 0x86, 0xB8, + 0x0A, 0xC3, 0x62, 0x4A, 0x64, 0xFA, 0x7D, 0xB3, 0xFF, 0x0D, 0x9E, 0x36, + 0xBD, 0x96, 0x56, 0x32, 0x0C, 0xBC, 0x4E, 0x4E, 0x90, 0x96, 0xDE, 0x3A, + 0x22, 0x22, 0x14, 0x0C, 0x6F, 0xA0, 0x64, 0xE9, 0xE9, 0xC2, 0x10, 0x8A, + 0x86, 0x10, 0x93, 0x62, 0x66, 0xDA, 0x87, 0xAB, 0xF5, 0x56, 0x2B, 0x2A, + 0xA4, 0x6C, 0xBB, 0x7E, 0x54, 0xE6, 0x8B, 0xD5, 0x06, 0x18, 0x14, 0x89, + 0xA6, 0xB3, 0x6D, 0xE7, 0x36, 0x75, 0x17, 0x99, 0x83, 0x75, 0x46, 0xAB, + 0x18, 0xD9, 0x85, 0xA8, 0x32, 0xA3, 0x07, 0xDB, 0x94, 0xD4, 0xC9, 0xF6, + 0x80, 0xC0, 0x51, 0x58, 0x6B, 0x13, 0xB8, 0x64, 0x20, 0x3C, 0x5B, 0x1B, + 0x81, 0x63, 0x60, 0x00, 0x61, 0x6D, 0xAD, 0x94, 0x64, 0x80, 0x24, 0xFC, + 0x1F, 0xBC, 0x4F, 0x90, 0xDA, 0xC4, 0x5A, 0x4A, 0xFD, 0x52, 0xEF, 0xC2, + 0x83, 0x93, 0x99, 0x31, 0xEA, 0xD3, 0xAF, 0x5E, 0xFD, 0xF4, 0xF7, 0x3E, + 0xEA, 0xDA, 0x1A, 0x88, 0xEE, 0xDE, 0xBD, 0x13, 0x82, 0x1F, 0x8F, 0x47, + 0xC6, 0xE8, 0xAE, 0x6D, 0x81, 0x99, 0xA4, 0x6C, 0x36, 0xDB, 0xED, 0xB6, + 0xBE, 0xBA, 0x5E, 0xAE, 0xD6, 0xDB, 0x41, 0xC1, 0x0E, 0xA0, 0xEB, 0x9D, + 0x6F, 0x5A, 0x1F, 0x78, 0x6A, 0x0C, 0x02, 0xFF, 0xFC, 0x0F, 0x3E, 0xF9, + 0xDE, 0x47, 0x8F, 0x9C, 0x75, 0x5D, 0x6F, 0xEB, 0xBA, 0xB9, 0xB8, 0xB8, + 0x52, 0x92, 0xF2, 0xCC, 0x58, 0x1F, 0x5E, 0x9F, 0x5F, 0xF5, 0xBD, 0xCD, + 0xB3, 0xEC, 0xF9, 0xE9, 0xC5, 0xB6, 0x71, 0xF3, 0xC3, 0x03, 0xEF, 0x43, + 0xA6, 0x65, 0x79, 0x34, 0xEB, 0xAD, 0xFB, 0xF1, 0xEF, 0x7D, 0xF2, 0xEA, + 0xD5, 0xD9, 0xDD, 0x3B, 0x87, 0xEB, 0x4D, 0x5D, 0x96, 0xB9, 0x94, 0xE4, + 0xBC, 0x1F, 0x97, 0xC5, 0xF5, 0x6A, 0x53, 0xE6, 0xE6, 0x60, 0x5A, 0xD6, + 0x75, 0xC7, 0x00, 0x8B, 0xE5, 0x7A, 0x34, 0x2A, 0x01, 0xD1, 0x18, 0xDD, + 0x34, 0x5D, 0x8C, 0xD1, 0x28, 0x39, 0x1E, 0x15, 0x2E, 0x70, 0x96, 0x65, + 0x6D, 0x67, 0x7F, 0xF5, 0xE9, 0x6F, 0xD2, 0xF9, 0x5D, 0x37, 0x8D, 0xD6, + 0x3A, 0x33, 0x26, 0xF1, 0x25, 0x89, 0x44, 0x8C, 0x91, 0x88, 0x60, 0x98, + 0x1A, 0xD1, 0xF7, 0x3E, 0x7C, 0xF4, 0xE2, 0xD5, 0xB9, 0x73, 0x5E, 0x20, + 0x59, 0x6B, 0x81, 0x51, 0x6B, 0x35, 0x9D, 0x8C, 0x63, 0x8C, 0xCE, 0x3B, + 0x1F, 0x02, 0x00, 0xC5, 0x10, 0x52, 0x19, 0x21, 0x10, 0x39, 0x32, 0x09, + 0x11, 0xBC, 0x27, 0x42, 0xA9, 0x34, 0x33, 0x58, 0x17, 0x8C, 0xA6, 0x24, + 0xD9, 0xC8, 0xC0, 0xDE, 0xC7, 0x54, 0x1E, 0x56, 0x65, 0x0E, 0xA9, 0x7F, + 0x15, 0x7D, 0xE4, 0xD8, 0xB6, 0x7D, 0x60, 0xF0, 0x21, 0x41, 0xA3, 0x61, + 0xF8, 0x03, 0x38, 0x0C, 0xEC, 0x77, 0xF9, 0x41, 0x00, 0x4E, 0xE8, 0x80, + 0xD4, 0xF2, 0x4F, 0x8B, 0x2D, 0x59, 0x6A, 0xA5, 0x48, 0x97, 0xDC, 0xB5, + 0x88, 0x30, 0x04, 0x00, 0x14, 0x21, 0xB2, 0xF3, 0x51, 0x6B, 0x16, 0x8C, + 0x44, 0xC2, 0xFB, 0x68, 0x8C, 0x49, 0x2B, 0x5C, 0xEE, 0x6C, 0xB2, 0x2B, + 0x25, 0x63, 0xA6, 0xB5, 0xD6, 0xD6, 0x07, 0xEB, 0x9D, 0x73, 0x3E, 0xBD, + 0xB6, 0x10, 0xA0, 0x95, 0xF4, 0x81, 0x8D, 0x51, 0x44, 0xC2, 0xF9, 0x90, + 0x1A, 0xC4, 0x44, 0x22, 0xC6, 0xC0, 0x0C, 0x59, 0xA6, 0x98, 0xC1, 0x7B, + 0x46, 0x84, 0x10, 0xA3, 0x94, 0x62, 0x9A, 0x55, 0x5D, 0xEF, 0xBA, 0xCE, + 0xA2, 0x10, 0x46, 0x0A, 0x12, 0x22, 0xAD, 0x23, 0xA3, 0x35, 0x33, 0x37, + 0x4D, 0x57, 0x95, 0x59, 0xD7, 0xF7, 0x4A, 0x52, 0x55, 0xE4, 0x4A, 0x11, + 0x33, 0xAC, 0x37, 0x8D, 0x94, 0x32, 0xF8, 0x50, 0xD7, 0x6D, 0x95, 0x1B, + 0xEF, 0xDC, 0x72, 0xB9, 0xDA, 0x6E, 0xB7, 0xF3, 0xD9, 0xC4, 0xF6, 0x56, + 0x30, 0x3B, 0x67, 0xAD, 0x22, 0xAD, 0xA4, 0xB7, 0xAE, 0xB6, 0x2E, 0x46, + 0xBE, 0x5E, 0xAE, 0xEF, 0x9D, 0x1C, 0x4D, 0xC6, 0xE5, 0xBE, 0xD6, 0xEE, + 0x9A, 0x2E, 0x26, 0x99, 0x4C, 0x00, 0x04, 0x90, 0x92, 0x7A, 0xE7, 0x30, + 0x55, 0xA6, 0x31, 0xC6, 0x18, 0x49, 0x88, 0x51, 0x59, 0x84, 0x18, 0x4E, + 0xCF, 0xAE, 0xEA, 0xA6, 0x7D, 0xE7, 0xC1, 0xDD, 0x94, 0x8D, 0x04, 0x1E, + 0xB2, 0x86, 0xB4, 0x9D, 0x89, 0x92, 0x9C, 0x19, 0x8B, 0xD4, 0x16, 0x47, + 0x88, 0x91, 0x5D, 0x42, 0x3A, 0xC7, 0xDF, 0xC6, 0x81, 0xC2, 0x2E, 0x5E, + 0x01, 0xC0, 0x30, 0x5E, 0x8C, 0x03, 0x1C, 0x66, 0x60, 0x18, 0x70, 0x7A, + 0x2E, 0x21, 0x62, 0xEA, 0xC2, 0x7A, 0xC8, 0x33, 0x95, 0xD8, 0x88, 0xC9, + 0x3C, 0x35, 0xB9, 0xA2, 0x21, 0xC2, 0xED, 0x01, 0xE5, 0x3F, 0xFC, 0xE0, + 0x9D, 0xA3, 0x84, 0x94, 0x6F, 0xE8, 0x44, 0xA9, 0xFF, 0x9D, 0xEA, 0x4D, + 0xA5, 0xC8, 0x5A, 0xC7, 0xCC, 0xD6, 0xF9, 0xCE, 0x3A, 0xEF, 0x23, 0x27, + 0xD9, 0x5C, 0x48, 0xD4, 0xF1, 0xDB, 0x43, 0xC9, 0xFD, 0x55, 0xA4, 0xC4, + 0x71, 0xE0, 0x81, 0xFA, 0x1D, 0xB4, 0x35, 0x37, 0xDA, 0x68, 0x19, 0x99, + 0x63, 0x88, 0xD6, 0xF9, 0x28, 0x29, 0xE5, 0x92, 0xE9, 0xC9, 0x79, 0x30, + 0x4C, 0x12, 0x00, 0x10, 0x62, 0x14, 0x3B, 0x47, 0x38, 0x4E, 0xA5, 0x7E, + 0x64, 0x66, 0x26, 0x46, 0x00, 0xB0, 0xCE, 0xF5, 0xBD, 0xD7, 0x4A, 0xAE, + 0xB7, 0xDD, 0xB8, 0xCA, 0x8A, 0x22, 0x5F, 0xAC, 0xB7, 0x91, 0x59, 0x29, + 0x59, 0xE5, 0xC6, 0x07, 0x5E, 0xD7, 0x1D, 0x03, 0x24, 0xBE, 0x05, 0x0B, + 0x50, 0x42, 0x18, 0xAD, 0x81, 0x59, 0x20, 0xF1, 0x4E, 0x6D, 0x06, 0x11, + 0x22, 0xC4, 0x84, 0x59, 0x8B, 0x91, 0xDB, 0xB6, 0x37, 0xC6, 0x10, 0x91, + 0x1F, 0xB8, 0x35, 0x81, 0x88, 0xAC, 0x75, 0x92, 0xA8, 0xEB, 0xDD, 0xEB, + 0x8B, 0x45, 0x99, 0xEB, 0x22, 0xD3, 0x75, 0xA3, 0xD2, 0x24, 0x44, 0x30, + 0x4B, 0xA5, 0x32, 0xA5, 0xFF, 0xF1, 0x4F, 0xBF, 0xF7, 0xD5, 0xD3, 0xD7, + 0x99, 0x31, 0xC7, 0x07, 0xE3, 0xCB, 0xEB, 0xED, 0x27, 0x9F, 0x7C, 0x3C, + 0x9F, 0x4D, 0xFA, 0xBE, 0x8D, 0x91, 0xA5, 0xD2, 0x99, 0xC0, 0x64, 0xEE, + 0x7B, 0xF6, 0xF8, 0xDB, 0x6F, 0x9E, 0xBD, 0xF6, 0x3E, 0x8E, 0x26, 0x63, + 0x25, 0x65, 0xD3, 0xB6, 0x65, 0xA5, 0xA5, 0x29, 0xB6, 0x4D, 0xAB, 0x94, + 0x3E, 0x9A, 0x97, 0x1F, 0x3C, 0x7A, 0x6B, 0x3C, 0x2A, 0x9F, 0xBF, 0x38, + 0xED, 0xDA, 0xFE, 0xF9, 0xAB, 0x73, 0x04, 0xBC, 0x73, 0x30, 0xF5, 0xB6, + 0x37, 0xD3, 0x89, 0xED, 0xEC, 0xB6, 0xED, 0x97, 0xCB, 0xED, 0xC9, 0x49, + 0x5E, 0x8D, 0xC6, 0x9D, 0xF5, 0xE7, 0xE7, 0x97, 0x75, 0xDD, 0xF4, 0x5D, + 0x77, 0xF7, 0xEE, 0xF1, 0xEB, 0xF3, 0x2B, 0x12, 0xF4, 0xBD, 0x8F, 0xDF, + 0x7B, 0xF2, 0xFC, 0xF5, 0x7B, 0x6F, 0xDF, 0xEB, 0x7B, 0x9B, 0xE7, 0x19, + 0x87, 0xE8, 0x43, 0x9C, 0x4D, 0x47, 0x5D, 0xEF, 0xB4, 0x56, 0xB3, 0x71, + 0xE1, 0x43, 0xD4, 0x0A, 0x97, 0x9B, 0x6E, 0xB1, 0xAE, 0xCB, 0x22, 0x9F, + 0x4F, 0x47, 0x08, 0x68, 0xBD, 0x57, 0x92, 0xBE, 0xFC, 0xFA, 0xE9, 0x74, + 0x3A, 0x7E, 0xEF, 0x9D, 0xB7, 0xCE, 0xCE, 0xAF, 0x9E, 0x3E, 0x7B, 0xC1, + 0x91, 0x63, 0xE4, 0xAE, 0xED, 0xCB, 0x3C, 0x8F, 0x31, 0x00, 0x62, 0x8C, + 0x60, 0x63, 0xD4, 0x02, 0x89, 0xD9, 0x3B, 0x47, 0x44, 0x9B, 0x6D, 0xFD, + 0xEA, 0xF4, 0xAC, 0x28, 0x0A, 0x00, 0xB0, 0xCE, 0x87, 0x10, 0xB7, 0x75, + 0x63, 0x9D, 0x17, 0x88, 0x45, 0x6E, 0x04, 0x0A, 0x17, 0xBC, 0x92, 0xB2, + 0xB7, 0xD6, 0x5B, 0xA7, 0x95, 0x70, 0x3E, 0x3A, 0xEF, 0x03, 0xD3, 0x38, + 0xCB, 0xD3, 0xF4, 0xA0, 0xEB, 0x2D, 0x21, 0x06, 0x8E, 0xCE, 0xDB, 0x22, + 0xD3, 0x56, 0x80, 0xB3, 0x69, 0xDC, 0x11, 0x8A, 0xDC, 0xB4, 0x1D, 0x33, + 0x0A, 0xEF, 0xC2, 0x72, 0xBD, 0x4D, 0x39, 0xFE, 0xAE, 0xC3, 0x3D, 0x34, + 0xB9, 0x31, 0x22, 0x0B, 0xE6, 0x18, 0x71, 0xE8, 0xF6, 0x0E, 0xC8, 0x0C, + 0x06, 0xA0, 0xE1, 0xE8, 0x1F, 0x68, 0xC2, 0x79, 0x96, 0x01, 0x80, 0x73, + 0x3E, 0xC4, 0x68, 0xB4, 0x2A, 0x72, 0xF2, 0x81, 0x63, 0x8C, 0x99, 0xD1, + 0x31, 0xC6, 0x28, 0xA0, 0x77, 0x7E, 0x8F, 0x90, 0x42, 0x4C, 0x28, 0xA8, + 0x30, 0x8C, 0xFC, 0x45, 0xC2, 0x1E, 0x3A, 0xA3, 0x54, 0x7E, 0x34, 0x4B, + 0x07, 0x58, 0x8C, 0xD1, 0x5A, 0x6B, 0xB2, 0x2C, 0x8B, 0xBA, 0x87, 0x04, + 0xE5, 0xE5, 0x10, 0x22, 0x22, 0x44, 0x00, 0x21, 0x50, 0x6B, 0xD9, 0x75, + 0x0E, 0x87, 0x1E, 0xB3, 0x88, 0x81, 0x59, 0x70, 0x0C, 0x71, 0xDB, 0xB4, + 0x87, 0xD9, 0xC4, 0xA8, 0x21, 0xA1, 0x93, 0x89, 0x84, 0x17, 0x58, 0x10, + 0x5D, 0x2E, 0x36, 0x31, 0xF2, 0xC1, 0x74, 0xA4, 0x94, 0x52, 0x8A, 0x36, + 0xDB, 0x76, 0xBD, 0xA9, 0xB3, 0xCC, 0x28, 0x25, 0x25, 0x49, 0x00, 0x48, + 0x7E, 0xA3, 0x07, 0xB3, 0x89, 0x96, 0x42, 0x11, 0x52, 0xA6, 0x57, 0x9B, + 0x7A, 0xB3, 0xA9, 0x67, 0xE3, 0x92, 0x08, 0x9D, 0x75, 0x4D, 0x67, 0x37, + 0xDB, 0xFA, 0xF4, 0x35, 0x28, 0x49, 0x24, 0x89, 0x48, 0x38, 0xEB, 0xCF, + 0x2F, 0x6F, 0x6E, 0x16, 0xEB, 0x3B, 0xC7, 0xF3, 0x32, 0xCF, 0x8C, 0x56, + 0x29, 0x85, 0x8C, 0x21, 0x18, 0x2D, 0x81, 0x21, 0xCB, 0x74, 0x6F, 0x5D, + 0x5D, 0xB7, 0x52, 0xC9, 0xF1, 0xA8, 0x5A, 0xAF, 0xEB, 0xD7, 0x67, 0xD7, + 0xB3, 0xF9, 0x44, 0x92, 0xA0, 0x37, 0xA9, 0xC9, 0x90, 0x91, 0x08, 0x44, + 0x42, 0x91, 0x80, 0xE5, 0x09, 0xFE, 0x2A, 0x52, 0xC6, 0xB4, 0x03, 0x6C, + 0xC5, 0x5B, 0x56, 0xD9, 0xC3, 0x50, 0x00, 0x40, 0xEE, 0xA3, 0x4C, 0xFA, + 0x81, 0x40, 0x91, 0xB2, 0x13, 0xA3, 0xA4, 0x0F, 0x91, 0xE3, 0xC0, 0xC9, + 0x94, 0x34, 0x50, 0x4F, 0xA5, 0xA4, 0x84, 0x03, 0x90, 0x92, 0x12, 0xD2, + 0x62, 0x9F, 0x28, 0xFD, 0x6E, 0xE4, 0xBA, 0x9D, 0x88, 0xE1, 0x2E, 0x5E, + 0xEC, 0xB9, 0x47, 0xFB, 0xEC, 0x29, 0xA1, 0xDA, 0x88, 0xC8, 0x18, 0x95, + 0xFA, 0x65, 0x00, 0x4E, 0x08, 0x88, 0x01, 0x77, 0xBE, 0x45, 0xC0, 0x1C, + 0x71, 0xD0, 0xE0, 0x18, 0x5A, 0x73, 0xCC, 0x69, 0x55, 0x0C, 0x36, 0xF7, + 0x98, 0xC4, 0x0C, 0x87, 0x7E, 0x0D, 0xF7, 0xBD, 0xE3, 0x9D, 0xAA, 0x7A, + 0xF2, 0x58, 0x14, 0x28, 0x50, 0x88, 0x10, 0x62, 0xE0, 0xB0, 0x47, 0xD9, + 0x25, 0x7D, 0xF7, 0x74, 0xED, 0x49, 0xA9, 0x4E, 0x08, 0xDC, 0x8B, 0x11, + 0x49, 0x29, 0xA7, 0x93, 0x92, 0xBC, 0xAA, 0x5B, 0xAB, 0x95, 0x4C, 0x79, + 0x72, 0x9E, 0xE9, 0x10, 0xE2, 0x9D, 0x83, 0xCA, 0x3A, 0x3E, 0x3D, 0xBF, + 0x89, 0x1C, 0xB5, 0xD4, 0x4A, 0x2B, 0x44, 0x0C, 0x43, 0xA3, 0x2D, 0x38, + 0xEF, 0x77, 0x89, 0x64, 0x48, 0xFD, 0xCE, 0x84, 0x51, 0x9A, 0x4E, 0x46, + 0x21, 0x06, 0x66, 0xEC, 0x9D, 0x43, 0x10, 0x24, 0x41, 0x4A, 0x31, 0x2A, + 0x4B, 0xE7, 0x5C, 0xDB, 0x59, 0x44, 0x40, 0x21, 0x94, 0x56, 0x7D, 0xEF, + 0xB4, 0x92, 0xA9, 0xDB, 0x1D, 0x22, 0x0B, 0x41, 0xEF, 0x3E, 0x3A, 0x59, + 0x6D, 0xB6, 0xBF, 0xFA, 0xFC, 0xD9, 0x8F, 0x3E, 0x79, 0x3F, 0x2F, 0xCB, + 0xF3, 0xAB, 0xF5, 0xC1, 0x6C, 0xE4, 0xBD, 0x57, 0x5A, 0x93, 0x54, 0xC9, + 0x0E, 0x15, 0x09, 0x9D, 0xB3, 0xB3, 0xD9, 0xB4, 0x1C, 0x8F, 0xCE, 0xCF, + 0xAF, 0x19, 0x71, 0x36, 0x9D, 0xDC, 0xBB, 0x7F, 0x92, 0x65, 0x99, 0x75, + 0xA1, 0x73, 0x7E, 0x32, 0x2A, 0xEE, 0xDF, 0x39, 0x70, 0xCE, 0x5D, 0x5E, + 0x5E, 0x5F, 0x9C, 0x5F, 0x45, 0x14, 0xC1, 0xBA, 0x0F, 0xDE, 0x7F, 0x90, + 0x67, 0x19, 0x12, 0x5D, 0xAF, 0x9A, 0x2F, 0xBE, 0x7A, 0xFA, 0xE9, 0xE7, + 0xDF, 0xBC, 0xF7, 0xFE, 0xBB, 0x6D, 0xEF, 0xB4, 0x31, 0xE3, 0xF1, 0xE8, + 0xE2, 0xEA, 0x7A, 0xBB, 0x69, 0xFA, 0xDE, 0x5E, 0xDD, 0x2C, 0xF3, 0x3C, + 0xFF, 0xFA, 0x9B, 0x67, 0xDF, 0x7E, 0xFB, 0x7C, 0x7E, 0x70, 0x30, 0x9D, + 0x8C, 0xE7, 0xD3, 0x2A, 0x86, 0xD0, 0x34, 0x5D, 0x88, 0xF1, 0x60, 0x3E, + 0xD1, 0x8A, 0x48, 0x88, 0xF1, 0xA8, 0xE8, 0x7B, 0x0F, 0x0C, 0x89, 0x74, + 0xC9, 0xCC, 0xD7, 0x37, 0xAB, 0xA3, 0x83, 0x89, 0x56, 0x12, 0x01, 0x1E, + 0xBD, 0x7D, 0xFF, 0xB3, 0x2F, 0x9F, 0x20, 0xD2, 0x5B, 0x6F, 0xDD, 0x73, + 0xCE, 0x3D, 0x79, 0xF2, 0x5C, 0x4A, 0x0A, 0x3E, 0x44, 0x8E, 0x4A, 0x49, + 0xDF, 0xBA, 0xC0, 0x4C, 0x02, 0x42, 0x04, 0x21, 0x44, 0x5D, 0xD7, 0x9B, + 0x6D, 0x71, 0x75, 0x75, 0x53, 0x37, 0x2D, 0xA2, 0x48, 0xA8, 0x05, 0x60, + 0xEE, 0x7A, 0xAB, 0xB5, 0xCA, 0xB4, 0x0E, 0x31, 0x64, 0x5A, 0xA3, 0x10, + 0x6D, 0xDB, 0x49, 0x22, 0x95, 0x53, 0x5D, 0xD7, 0x89, 0x24, 0x9E, 0x44, + 0x47, 0xA5, 0x44, 0x29, 0x65, 0x86, 0x00, 0x0C, 0xB9, 0xCE, 0x44, 0x6F, + 0x95, 0x92, 0x05, 0x8A, 0xAE, 0x5B, 0x27, 0x0B, 0xF7, 0x18, 0x43, 0x59, + 0x14, 0xD6, 0xBA, 0xBE, 0xEF, 0xB7, 0x75, 0x3B, 0xD0, 0xFE, 0x86, 0x4D, + 0x32, 0x80, 0x78, 0x10, 0x19, 0x19, 0x41, 0xA0, 0xC0, 0x41, 0x34, 0x86, + 0x87, 0xC6, 0x03, 0x84, 0xF4, 0x95, 0xC1, 0xBF, 0x69, 0x89, 0xC4, 0x10, + 0x91, 0x19, 0xBA, 0xCE, 0x09, 0x81, 0x49, 0x8A, 0x23, 0x29, 0x68, 0x62, + 0x9A, 0x73, 0x0E, 0xE8, 0x22, 0x90, 0x52, 0xA4, 0x34, 0xA3, 0xEF, 0xDD, + 0x68, 0x54, 0xF9, 0x10, 0x4E, 0xCF, 0xAF, 0x05, 0x89, 0xE3, 0xC3, 0xC9, + 0x7A, 0x53, 0x9B, 0x22, 0x4B, 0x3C, 0x1C, 0xA5, 0x14, 0x09, 0xA1, 0x88, + 0x96, 0x5D, 0xEF, 0x5C, 0x30, 0x46, 0x4B, 0x99, 0x04, 0x03, 0xC1, 0x18, + 0x09, 0xCC, 0x02, 0x41, 0x1B, 0x19, 0x95, 0x70, 0x3E, 0x30, 0x0F, 0x40, + 0x6B, 0x25, 0x09, 0x99, 0x01, 0x58, 0x91, 0x70, 0x8E, 0x43, 0x08, 0x69, + 0x44, 0xE6, 0x7C, 0x18, 0x55, 0x85, 0x24, 0x2A, 0x32, 0x2D, 0x84, 0x68, + 0x5A, 0xAB, 0xB5, 0xFA, 0xE0, 0xDD, 0xB7, 0x4E, 0xCF, 0xAE, 0x25, 0x49, + 0x12, 0x58, 0x37, 0x2D, 0x00, 0x1F, 0x4C, 0xC7, 0x6F, 0x9D, 0x1C, 0xCE, + 0x27, 0xE5, 0x0E, 0x74, 0x89, 0x08, 0x68, 0xAD, 0xED, 0x7B, 0xDB, 0xF5, + 0x7D, 0xDB, 0x74, 0x1C, 0x63, 0xDD, 0x34, 0xAB, 0xF5, 0x96, 0x01, 0x42, + 0x88, 0x99, 0xD1, 0xD6, 0xB9, 0x6D, 0xDD, 0xF4, 0x2F, 0xFA, 0x49, 0x55, + 0x76, 0xCE, 0x36, 0x75, 0x2B, 0x84, 0x38, 0x98, 0x4F, 0xF4, 0x6C, 0x52, + 0x14, 0xC6, 0x18, 0x43, 0x52, 0x19, 0x63, 0x96, 0xAB, 0xF5, 0x72, 0xB5, + 0xAE, 0xCA, 0xE2, 0xE9, 0x8B, 0xD3, 0xF3, 0xAB, 0x9B, 0x9F, 0xFE, 0xE8, + 0x83, 0x4C, 0xAB, 0xAE, 0x73, 0xB0, 0xAB, 0xA8, 0xF6, 0x51, 0xC3, 0x87, + 0x18, 0x22, 0x87, 0x10, 0x94, 0x92, 0xE9, 0x76, 0x87, 0x18, 0x15, 0x51, + 0xDA, 0x59, 0xB8, 0x63, 0x79, 0xEF, 0x7A, 0x8D, 0x7D, 0x23, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1F, 0xF4, 0xC7, 0xFF, 0xF2, 0x5F, + 0xA7, 0x6D, 0x4C, 0x98, 0xAA, 0x56, 0x56, 0x4A, 0x66, 0x8A, 0xD2, 0x73, + 0x95, 0xB9, 0x2E, 0x32, 0x93, 0x9A, 0xD0, 0x65, 0x9E, 0x25, 0x52, 0x18, + 0xA7, 0x0E, 0xC5, 0x3F, 0xE8, 0x9B, 0xFB, 0x26, 0x65, 0x7A, 0x13, 0x6B, + 0x93, 0x9F, 0xE3, 0x1B, 0xFA, 0x37, 0xEE, 0xC0, 0x10, 0x62, 0x47, 0x0B, + 0xDF, 0xC1, 0xA6, 0x12, 0xC9, 0x3C, 0x32, 0x60, 0x64, 0x0E, 0x71, 0x98, + 0x3A, 0xA6, 0x64, 0x5F, 0xD0, 0xED, 0xB8, 0xF9, 0x46, 0x98, 0x38, 0xEC, + 0x18, 0xE0, 0xFB, 0xA0, 0xE9, 0x63, 0x4C, 0xC3, 0x41, 0x66, 0x48, 0xD0, + 0xC7, 0x84, 0x36, 0x8A, 0xBB, 0x5B, 0x96, 0xF2, 0xB2, 0x74, 0x53, 0xCA, + 0x32, 0x2B, 0xF2, 0x2C, 0xB1, 0xD9, 0x73, 0x93, 0x29, 0x29, 0x95, 0x92, + 0x21, 0x84, 0xB3, 0xD3, 0x57, 0x8B, 0xE5, 0x56, 0x6B, 0x7A, 0xEB, 0xEE, + 0x61, 0xD2, 0x57, 0x28, 0xF2, 0xAC, 0xAE, 0x9B, 0x83, 0xD9, 0xC8, 0xB9, + 0xF0, 0xF2, 0x6C, 0x41, 0x52, 0x11, 0x09, 0x40, 0x10, 0x29, 0x59, 0x4D, + 0xC6, 0x8E, 0xCE, 0xA7, 0xF0, 0x1D, 0x42, 0x88, 0x81, 0x95, 0x92, 0x28, + 0x90, 0x48, 0x8C, 0x46, 0xE5, 0xD1, 0xC1, 0x8C, 0x39, 0x5A, 0xE7, 0x13, + 0x98, 0x28, 0xCF, 0x4C, 0x6E, 0xB4, 0x52, 0xD2, 0x87, 0x60, 0x94, 0xF4, + 0xDE, 0x27, 0xCA, 0x7D, 0x6F, 0x5D, 0x08, 0x21, 0xB9, 0x94, 0xFB, 0x10, + 0xFE, 0xC9, 0x3F, 0xFA, 0xF8, 0xE5, 0x8B, 0xB3, 0x71, 0x55, 0x3D, 0x7C, + 0xE7, 0xA1, 0x8F, 0x80, 0x00, 0x99, 0xD1, 0x29, 0x57, 0x1D, 0x8F, 0x4A, + 0x52, 0x12, 0x00, 0x63, 0x0C, 0xC0, 0x6C, 0x5D, 0xB0, 0x1E, 0xB4, 0xD6, + 0x99, 0xD1, 0xF7, 0xEF, 0x9F, 0x8C, 0xC7, 0xD5, 0x64, 0x32, 0xCA, 0x8C, + 0x3A, 0x9A, 0x8D, 0x8E, 0x0F, 0xA6, 0x6D, 0xD3, 0x9E, 0x9F, 0x5F, 0x6C, + 0xEB, 0x2E, 0xFA, 0x90, 0x67, 0xEA, 0xC3, 0x0F, 0xDF, 0xB9, 0x77, 0x72, + 0x54, 0x37, 0xAD, 0xF5, 0xF1, 0xC5, 0xE9, 0xE5, 0xE9, 0xD9, 0x75, 0xDB, + 0xBB, 0x7A, 0x5B, 0x87, 0xE0, 0x67, 0xF3, 0x59, 0x9E, 0x67, 0x45, 0x55, + 0xDD, 0x2C, 0x16, 0x27, 0x77, 0xEF, 0x64, 0x79, 0x76, 0x38, 0x1D, 0x49, + 0x29, 0xCF, 0xCF, 0xAF, 0xBE, 0x7D, 0xF6, 0xAD, 0x31, 0xFA, 0xE8, 0xE8, + 0x50, 0x92, 0x40, 0x14, 0x5D, 0xDF, 0x93, 0xA0, 0x2C, 0x33, 0xB9, 0x96, + 0x09, 0x89, 0x93, 0xC4, 0x82, 0x52, 0xB9, 0x7D, 0x38, 0x9F, 0x08, 0x21, + 0x24, 0xA1, 0xB3, 0x36, 0x30, 0x5E, 0x5D, 0xAF, 0xBE, 0x7D, 0xF1, 0xFA, + 0x60, 0x3E, 0x45, 0x41, 0xAF, 0x5E, 0x9D, 0xED, 0x61, 0x2E, 0x90, 0x08, + 0x3B, 0xCC, 0x02, 0x61, 0x36, 0x9B, 0xE6, 0x79, 0xD6, 0x76, 0x1D, 0x33, + 0x34, 0x4D, 0xBB, 0xAD, 0x9B, 0x74, 0xD6, 0x24, 0xAD, 0x0B, 0x39, 0x38, + 0x5A, 0x06, 0x8E, 0x03, 0x06, 0xAD, 0xB7, 0xCE, 0x79, 0x07, 0x0C, 0x49, + 0x4A, 0x68, 0x38, 0xA5, 0x79, 0xE8, 0x73, 0x07, 0x1F, 0x26, 0x93, 0xD1, + 0xC1, 0x6C, 0x92, 0x50, 0xDF, 0x75, 0xD3, 0x05, 0xE6, 0x18, 0xB9, 0x2A, + 0x32, 0xEF, 0x63, 0x66, 0x94, 0x40, 0x6C, 0xDA, 0x2E, 0xCF, 0xCD, 0x87, + 0xEF, 0xBE, 0x1D, 0xDE, 0x94, 0x96, 0xB8, 0x13, 0x8C, 0xDF, 0xAD, 0x68, + 0xC0, 0x08, 0xC8, 0x3B, 0x0E, 0xD3, 0xF0, 0x35, 0x82, 0x94, 0x74, 0x79, + 0xB3, 0xFE, 0xE2, 0xEB, 0xE7, 0xC1, 0x07, 0x04, 0x10, 0x02, 0x7D, 0x82, + 0x4D, 0x01, 0x0B, 0x1C, 0x0A, 0x91, 0x18, 0x82, 0x52, 0x94, 0xF2, 0xA3, + 0x34, 0x37, 0x60, 0xE6, 0x64, 0x11, 0x87, 0x02, 0x5D, 0x88, 0x9B, 0xBA, + 0xED, 0x7A, 0xAB, 0xA5, 0x14, 0x42, 0x38, 0xE7, 0xF3, 0x64, 0x17, 0x8F, + 0x40, 0x34, 0x28, 0xAF, 0x58, 0xE7, 0xD3, 0x99, 0x6D, 0x8C, 0x16, 0x44, + 0xCE, 0xFB, 0x3C, 0x33, 0x89, 0xCB, 0xAD, 0x95, 0x14, 0x00, 0x4A, 0xCA, + 0x18, 0xA3, 0xF5, 0x1E, 0x00, 0xBA, 0xDE, 0xA6, 0x5E, 0xB0, 0x0F, 0xA1, + 0x69, 0x7B, 0x67, 0x5D, 0x92, 0xC3, 0xAE, 0x9B, 0x0E, 0x11, 0xA6, 0x93, + 0x32, 0x25, 0x22, 0x7A, 0x70, 0x66, 0xA0, 0x84, 0xC2, 0x9D, 0x8C, 0x4B, + 0x25, 0xA9, 0xC8, 0xB3, 0xC3, 0xF9, 0x64, 0x3E, 0x1D, 0x69, 0x25, 0x63, + 0x88, 0xE9, 0x25, 0x52, 0x7C, 0xDC, 0x6C, 0xDB, 0xB6, 0xB3, 0x9B, 0xBA, + 0x41, 0xC0, 0xB2, 0xC8, 0x17, 0xCB, 0xF5, 0x72, 0xB5, 0x79, 0xFA, 0xFC, + 0xD5, 0x72, 0xB5, 0x49, 0xFE, 0x81, 0x09, 0x13, 0x73, 0x76, 0x71, 0x8D, + 0x00, 0x47, 0x07, 0xB3, 0x2C, 0x37, 0x79, 0x9E, 0xA7, 0x04, 0xA9, 0xEB, + 0xFB, 0xBE, 0x77, 0xE3, 0x51, 0xA5, 0x95, 0x0A, 0x31, 0x94, 0x79, 0xB1, + 0x6D, 0xDA, 0xC7, 0xDF, 0x9E, 0x1E, 0x1F, 0x4C, 0x66, 0x93, 0xCA, 0x7B, + 0x8F, 0x30, 0x20, 0x55, 0x53, 0x11, 0xE3, 0x7C, 0x00, 0x80, 0x2C, 0xD3, + 0x4F, 0x9F, 0xBF, 0x66, 0x06, 0x04, 0xCE, 0x8C, 0x3E, 0x3D, 0xBF, 0xCC, + 0x8C, 0x96, 0x52, 0x0E, 0x0C, 0x81, 0x5B, 0x31, 0x46, 0xEE, 0x74, 0x55, + 0x07, 0x94, 0x96, 0x94, 0x54, 0x64, 0x9A, 0x99, 0x83, 0x75, 0x65, 0xA6, + 0x8B, 0xDC, 0x58, 0x17, 0x92, 0x22, 0x02, 0x20, 0xF0, 0x80, 0x01, 0x79, + 0x13, 0xBF, 0xFE, 0x53, 0x75, 0xE5, 0xED, 0xEF, 0xE3, 0x2D, 0xC1, 0x9C, + 0x7D, 0x13, 0x6A, 0xFF, 0x0B, 0xFB, 0x18, 0xB7, 0xCF, 0x1B, 0x53, 0xC6, + 0x87, 0x08, 0xCE, 0x47, 0xDC, 0x01, 0x3A, 0xC4, 0x20, 0x03, 0xBB, 0xCF, + 0x25, 0xF7, 0xE1, 0x12, 0x93, 0x38, 0xD1, 0x2E, 0x35, 0xE3, 0x34, 0x25, + 0xF7, 0x3B, 0xF0, 0x5A, 0xCA, 0xFA, 0x52, 0x76, 0x16, 0xE3, 0x30, 0x2B, + 0x51, 0x03, 0xF1, 0x3E, 0x75, 0xFA, 0xB0, 0x2A, 0xB3, 0xCC, 0x68, 0x60, + 0xC8, 0xB4, 0xDE, 0xCF, 0x1F, 0x88, 0x10, 0x20, 0x5E, 0x2D, 0x36, 0xD6, + 0x3A, 0xA3, 0x24, 0x00, 0x76, 0xD6, 0xA3, 0x10, 0x4D, 0xDB, 0x75, 0xBD, + 0x33, 0xDA, 0xF5, 0xD6, 0x91, 0x90, 0x20, 0x52, 0x7F, 0x7A, 0xA7, 0xF1, + 0x9D, 0xA8, 0xE3, 0x00, 0x88, 0x14, 0x42, 0x4C, 0xA7, 0xA8, 0x90, 0x34, + 0x1F, 0x8F, 0x67, 0xD3, 0xB1, 0x94, 0x84, 0x80, 0x8B, 0xC8, 0x92, 0x84, + 0x54, 0x94, 0x69, 0x65, 0xB4, 0x3A, 0x98, 0x8F, 0x97, 0xEB, 0xED, 0x7C, + 0x32, 0xB2, 0xCE, 0x0B, 0x12, 0x5D, 0xEF, 0xCA, 0xBC, 0x50, 0x52, 0xD4, + 0x4D, 0xB7, 0xDA, 0xB4, 0x4D, 0x6B, 0xDF, 0xBA, 0x3B, 0x3F, 0x9E, 0x8F, + 0x32, 0x65, 0x5C, 0x84, 0xE5, 0xB6, 0x35, 0x8A, 0xBA, 0xAE, 0xD3, 0x5A, + 0x1A, 0xA3, 0x8C, 0x56, 0x24, 0x44, 0x4A, 0x62, 0x51, 0x08, 0x08, 0xEC, + 0x43, 0xD4, 0x12, 0x0F, 0xA6, 0x55, 0xDB, 0xF5, 0xCE, 0xD9, 0x83, 0xD9, + 0x68, 0x54, 0x1A, 0x2E, 0xA4, 0xED, 0xAD, 0x14, 0xEC, 0x6C, 0xAF, 0xA4, + 0x3C, 0x3A, 0x2C, 0x9A, 0x6D, 0xF3, 0xF0, 0xC1, 0xC9, 0x64, 0x3A, 0xAE, + 0x9B, 0x6E, 0xB1, 0xDA, 0x3C, 0xF9, 0xF6, 0xB5, 0x32, 0xD9, 0xFB, 0xEF, + 0xBD, 0xBD, 0x5C, 0xAD, 0xA2, 0xF7, 0x1C, 0xE3, 0xC5, 0xF9, 0xE5, 0xB6, + 0x69, 0x7A, 0x6B, 0x11, 0xE9, 0xF1, 0x93, 0xE7, 0x1F, 0x7F, 0xF8, 0xAE, + 0x94, 0xB2, 0x2A, 0x8B, 0xE3, 0x3B, 0x47, 0x52, 0xC9, 0x2F, 0xBF, 0xF8, + 0xCD, 0x7C, 0x36, 0xFE, 0xDE, 0x47, 0xEF, 0x97, 0x85, 0xD2, 0x5A, 0xD5, + 0x4D, 0x2B, 0x3B, 0xAB, 0x09, 0x99, 0xA3, 0x96, 0xC2, 0xE8, 0x04, 0x6F, + 0x06, 0xA3, 0x24, 0x49, 0x4A, 0xC4, 0x46, 0x41, 0x74, 0x76, 0x7E, 0x19, + 0x63, 0xFC, 0xFE, 0xC7, 0xEF, 0xFE, 0xFA, 0xF3, 0x6F, 0x8E, 0x0E, 0x0F, + 0x66, 0xD3, 0xC9, 0x6A, 0xB5, 0xDE, 0x71, 0xC8, 0x28, 0x06, 0x4E, 0x20, + 0x32, 0x66, 0x1E, 0xFC, 0xE8, 0xAC, 0xB5, 0xD6, 0x19, 0xAD, 0x9D, 0x0F, + 0x0A, 0xE5, 0x6E, 0x4E, 0x02, 0x30, 0x48, 0xC4, 0x30, 0x00, 0x38, 0x6B, + 0x67, 0x93, 0xAA, 0xED, 0x6C, 0xDB, 0x76, 0x42, 0x08, 0x49, 0x14, 0x39, + 0x48, 0x29, 0x23, 0x73, 0xD3, 0xF6, 0x99, 0xD1, 0x4A, 0xC9, 0xB6, 0x69, + 0x17, 0xCB, 0xA5, 0x24, 0x4A, 0x16, 0x73, 0x2A, 0x50, 0xD3, 0xF6, 0xD6, + 0x3A, 0x00, 0xEE, 0x7B, 0x2B, 0x10, 0x94, 0x94, 0xEB, 0x75, 0xDD, 0xD9, + 0x9E, 0x04, 0x31, 0x47, 0x66, 0x04, 0xC0, 0x08, 0x91, 0x93, 0xD2, 0x1D, + 0x43, 0x8C, 0x20, 0x76, 0xC8, 0xB1, 0x37, 0xD0, 0xE9, 0x01, 0xA9, 0x03, + 0x6D, 0xDB, 0x5B, 0xE7, 0xB3, 0xCC, 0x24, 0x1A, 0x89, 0xF3, 0x31, 0xAF, + 0x4C, 0xE4, 0xB8, 0x6D, 0xBA, 0xC9, 0xA8, 0x90, 0x24, 0x2C, 0x40, 0x8C, + 0x51, 0x08, 0x42, 0x14, 0xCE, 0x05, 0xA2, 0x61, 0xAD, 0x6A, 0x2D, 0xB5, + 0x92, 0x8B, 0x75, 0xD3, 0x75, 0x7D, 0x9E, 0x9B, 0x10, 0x83, 0xB5, 0xDE, + 0xF9, 0x90, 0x90, 0x6A, 0x4D, 0xDB, 0x07, 0x1F, 0x4C, 0x96, 0x39, 0xE7, + 0x8C, 0x56, 0xFB, 0x95, 0xEF, 0x9C, 0x27, 0x49, 0x52, 0xCA, 0x10, 0x62, + 0xCA, 0xF3, 0x10, 0xD1, 0xA6, 0x8E, 0x21, 0x0F, 0xB6, 0xAD, 0x9D, 0xF5, + 0x9B, 0xBA, 0x4D, 0x38, 0x6D, 0xE7, 0x93, 0xA0, 0x51, 0x8D, 0x28, 0x94, + 0x94, 0x00, 0x50, 0xE6, 0x06, 0x52, 0x11, 0x93, 0x9B, 0xB6, 0xEB, 0x95, + 0xA4, 0xD9, 0x64, 0x5C, 0xE4, 0xA6, 0x2C, 0xB2, 0xF9, 0x74, 0x94, 0x52, + 0x94, 0x10, 0x62, 0xEF, 0x5D, 0x32, 0x0C, 0xB7, 0x2E, 0xF8, 0x10, 0x9C, + 0xF3, 0x6D, 0xD7, 0x3B, 0xE7, 0xF3, 0xCC, 0x08, 0x04, 0xEF, 0x7C, 0xC2, + 0x7C, 0xAC, 0xD7, 0x5B, 0x1F, 0x62, 0xDF, 0xF7, 0x26, 0x33, 0x79, 0x66, + 0x24, 0x51, 0x64, 0xD8, 0x36, 0x0D, 0x23, 0x77, 0x9D, 0x05, 0x80, 0xA2, + 0xC8, 0xAF, 0x6F, 0x96, 0x00, 0x7C, 0xEF, 0xE4, 0x28, 0xC6, 0x20, 0xA5, + 0xEC, 0xBA, 0x8D, 0x0F, 0xB1, 0xAA, 0xCA, 0x5F, 0x7F, 0xF9, 0xFC, 0xFD, + 0x77, 0x4E, 0xEE, 0x1D, 0xCD, 0xE2, 0x0E, 0x4B, 0xDF, 0xF7, 0xD6, 0x79, + 0x9F, 0xDE, 0xE7, 0xD3, 0x6F, 0x4F, 0xFF, 0xE7, 0xFF, 0xE5, 0x7F, 0x3D, + 0x38, 0x98, 0x7E, 0xFC, 0xFE, 0xDB, 0x79, 0xA6, 0xFF, 0xFD, 0x2F, 0x7E, + 0xF3, 0xF3, 0x3F, 0xF8, 0xE4, 0x0F, 0x7F, 0xFE, 0x43, 0x20, 0x8C, 0x21, + 0xF8, 0xC0, 0xB8, 0x43, 0x89, 0xD1, 0x9F, 0xFC, 0xE9, 0xBF, 0x4E, 0x00, + 0x3F, 0x22, 0xD4, 0x5A, 0xE6, 0x46, 0x33, 0x73, 0x62, 0x38, 0x67, 0x46, + 0x25, 0xA5, 0x07, 0xAD, 0x08, 0x60, 0x40, 0x39, 0xEF, 0x0C, 0xEE, 0xF1, + 0x1F, 0x48, 0xC7, 0xFE, 0x81, 0xB8, 0xF6, 0x5B, 0xD5, 0x25, 0x0E, 0x13, + 0xD7, 0xFD, 0x23, 0x32, 0x43, 0x5A, 0x47, 0x42, 0x88, 0xC0, 0x91, 0x23, + 0x0B, 0xC4, 0x14, 0xE9, 0xF7, 0x20, 0xAF, 0xFD, 0x11, 0xB9, 0xB7, 0x57, + 0xB9, 0xDD, 0x74, 0xDB, 0xE7, 0x9C, 0x29, 0xA8, 0xA5, 0x77, 0x59, 0x64, + 0x3A, 0x4B, 0x98, 0xAF, 0x5D, 0x15, 0x20, 0x10, 0x95, 0x22, 0x25, 0xA9, + 0x2A, 0xF3, 0x3C, 0xCF, 0x08, 0x13, 0x2C, 0x36, 0x9D, 0x09, 0x11, 0x05, + 0xA7, 0x5A, 0xF5, 0xF2, 0xF5, 0x59, 0x61, 0x54, 0x88, 0xA0, 0x94, 0xA8, + 0x3B, 0xE7, 0x7D, 0x28, 0x8C, 0x12, 0x00, 0x92, 0x84, 0xB5, 0xE1, 0x7A, + 0xD9, 0x20, 0x82, 0x20, 0xD4, 0x5A, 0xED, 0x84, 0x24, 0x87, 0xBE, 0x5B, + 0x42, 0xD6, 0x84, 0xC8, 0x4A, 0xC9, 0xBB, 0x77, 0x0E, 0xC6, 0xA3, 0xF2, + 0xEE, 0x9D, 0x03, 0xAD, 0x65, 0x9A, 0xFE, 0xE4, 0x99, 0x39, 0x3E, 0x98, + 0xDE, 0xBF, 0x7B, 0x14, 0x42, 0x38, 0x3E, 0x9C, 0x3F, 0x7C, 0xEB, 0x4E, + 0x66, 0x94, 0x56, 0xF2, 0x60, 0x3A, 0x7E, 0xFB, 0xC1, 0xC9, 0x74, 0x54, + 0x68, 0x25, 0xAD, 0xF3, 0x6D, 0xE7, 0x24, 0xC1, 0x7F, 0xFF, 0xCF, 0x7E, + 0x3A, 0x9B, 0x1F, 0x90, 0xD2, 0x9E, 0x31, 0x37, 0xAA, 0xEB, 0xDA, 0x22, + 0xD3, 0x99, 0xD6, 0x00, 0x3C, 0x9F, 0x8D, 0xB3, 0xDC, 0x30, 0xC7, 0x10, + 0x7C, 0x32, 0xC9, 0xF2, 0xDE, 0x73, 0x88, 0xA3, 0xB2, 0x28, 0x8A, 0x2C, + 0x33, 0x7A, 0x5C, 0x16, 0xA3, 0x51, 0x51, 0x55, 0x65, 0x35, 0x2A, 0x95, + 0xA4, 0xA6, 0x6E, 0xA5, 0x92, 0x46, 0xEB, 0xF1, 0xB8, 0x1C, 0x4F, 0xC6, + 0xD6, 0xDA, 0xEB, 0xAB, 0x05, 0x91, 0xB4, 0x2E, 0xE4, 0x79, 0x71, 0x78, + 0x38, 0x3D, 0x3E, 0x9C, 0x8D, 0xC7, 0x63, 0x1F, 0x42, 0xDD, 0x34, 0x8C, + 0x80, 0x20, 0x46, 0xA3, 0xF2, 0xC5, 0x8B, 0x57, 0x00, 0x58, 0x56, 0xE5, + 0x62, 0xB9, 0xFE, 0xE6, 0xF1, 0xD3, 0xE7, 0x2F, 0x5E, 0xE5, 0x5A, 0xA1, + 0xA0, 0xF1, 0x74, 0x7A, 0x7E, 0x79, 0x3D, 0x9B, 0x8E, 0x00, 0x61, 0xBB, + 0x6D, 0x26, 0x55, 0x01, 0x00, 0x75, 0xDB, 0xC7, 0xC8, 0x92, 0x84, 0x56, + 0x54, 0x37, 0x4D, 0xD7, 0xBB, 0xB2, 0xC8, 0x90, 0xE3, 0xE5, 0xE5, 0x4D, + 0xEF, 0xC2, 0x64, 0x32, 0xCA, 0xB2, 0xEC, 0xF4, 0xF4, 0x3C, 0x95, 0x24, + 0xAB, 0xD5, 0xDA, 0xF9, 0xA0, 0xB5, 0x02, 0xC6, 0xDE, 0x39, 0xB9, 0x23, + 0xD5, 0xEB, 0x81, 0x99, 0x14, 0x84, 0x10, 0x29, 0x21, 0x27, 0xA2, 0xE4, + 0x9F, 0xC8, 0x10, 0x13, 0x8D, 0x24, 0xA1, 0x2B, 0x01, 0xC0, 0x87, 0x38, + 0x74, 0x3C, 0x43, 0x60, 0x8E, 0x82, 0x84, 0xF3, 0x5E, 0x25, 0xA2, 0x2B, + 0x09, 0xAD, 0x65, 0x1A, 0x0A, 0x27, 0x88, 0x8F, 0xD6, 0x9A, 0x99, 0x77, + 0x13, 0x3D, 0x12, 0x02, 0x49, 0x50, 0x08, 0xC1, 0xF9, 0xF0, 0xFE, 0x7B, + 0x0F, 0xF3, 0xDC, 0x84, 0xC0, 0x8C, 0x03, 0xB9, 0x05, 0x6E, 0xA3, 0x23, + 0x77, 0xE8, 0x80, 0x1D, 0x42, 0x7D, 0x58, 0x84, 0x4A, 0xAB, 0x17, 0xAF, + 0xCE, 0x9F, 0x3E, 0x7F, 0xAD, 0xA4, 0x4C, 0xA3, 0x74, 0x14, 0x98, 0x44, + 0xBE, 0xF2, 0xCC, 0x8C, 0xAA, 0x1C, 0x00, 0x9A, 0xB6, 0xCF, 0xB4, 0x06, + 0xE6, 0xCE, 0xBA, 0x44, 0x1A, 0x4D, 0x23, 0x54, 0x49, 0x82, 0x23, 0x77, + 0xD6, 0x4B, 0x29, 0xDB, 0xAE, 0x57, 0x4A, 0x06, 0xEF, 0x93, 0xAD, 0x6A, + 0xDF, 0xBB, 0x10, 0xA2, 0x20, 0x91, 0x69, 0xD5, 0x59, 0x27, 0x89, 0x98, + 0x41, 0x29, 0x99, 0x3A, 0x65, 0x69, 0xA4, 0xC4, 0x0C, 0x31, 0x06, 0x45, + 0xB4, 0x27, 0x6F, 0x01, 0x8A, 0xDE, 0xFA, 0xBE, 0x77, 0xD6, 0x39, 0x6B, + 0xBD, 0xF7, 0xC1, 0x39, 0xD7, 0xF7, 0x5E, 0x90, 0x00, 0x44, 0x49, 0x94, + 0x65, 0x66, 0xBD, 0x69, 0x98, 0xD9, 0x68, 0x6D, 0x7D, 0xE0, 0x18, 0x7D, + 0xE0, 0x18, 0x79, 0x3C, 0x2A, 0x46, 0x45, 0x5E, 0x95, 0xF9, 0x64, 0x5C, + 0x66, 0x99, 0x4E, 0xB5, 0x9E, 0xED, 0x5D, 0xD7, 0x3B, 0x48, 0x0D, 0x65, + 0x06, 0xEB, 0x9C, 0x73, 0xBE, 0xC8, 0xB3, 0x3C, 0x33, 0x90, 0x9A, 0x74, + 0x4A, 0x12, 0x11, 0x49, 0x6A, 0xDA, 0xAE, 0xEF, 0x5C, 0xD3, 0x76, 0x1C, + 0xA3, 0x40, 0xE1, 0x53, 0x03, 0x9D, 0xA8, 0x6E, 0xDB, 0xCC, 0x98, 0x6D, + 0xDD, 0x9C, 0x5F, 0xDE, 0x48, 0xA9, 0xFB, 0xBE, 0xDF, 0xD6, 0x9D, 0x77, + 0x4E, 0x2B, 0xBD, 0x5A, 0x6F, 0xAE, 0xAE, 0x97, 0x17, 0x57, 0x8B, 0x9B, + 0x55, 0xB3, 0x69, 0xBA, 0xE4, 0x56, 0xF7, 0xFA, 0xE2, 0xFA, 0x2F, 0xFF, + 0xEA, 0x57, 0xDB, 0xBA, 0xF5, 0x81, 0xAF, 0x97, 0xDB, 0xC5, 0xAA, 0x3E, + 0x38, 0x98, 0x47, 0xC6, 0xD3, 0xB3, 0x9B, 0x5F, 0x7D, 0xF6, 0x78, 0xB9, + 0xDA, 0x5E, 0x5C, 0xAD, 0xDF, 0x7B, 0xFB, 0xE4, 0x66, 0xB9, 0x96, 0x24, + 0x26, 0x55, 0x19, 0x99, 0x3D, 0x47, 0x22, 0x41, 0x7F, 0xFC, 0xA7, 0x7F, + 0x86, 0x00, 0x52, 0xCA, 0xA4, 0xB8, 0x9F, 0x6A, 0x31, 0x49, 0x64, 0xB4, + 0x24, 0x21, 0x00, 0x38, 0xB1, 0x4F, 0x13, 0x58, 0x39, 0x71, 0x62, 0x6E, + 0x4B, 0xF2, 0xFF, 0x67, 0x03, 0xD9, 0xAD, 0x39, 0x20, 0xEC, 0xF3, 0xB2, + 0xDB, 0x41, 0xF0, 0xCD, 0xF4, 0x21, 0xD9, 0x4A, 0x03, 0xA7, 0xE4, 0xCB, + 0xBB, 0x84, 0xC5, 0x07, 0x44, 0x00, 0x01, 0x9A, 0xA4, 0x92, 0x94, 0xDA, + 0x64, 0x0C, 0x1C, 0x23, 0xE0, 0xA0, 0x0C, 0x05, 0x44, 0x42, 0x11, 0x49, + 0x1A, 0x00, 0x21, 0x5A, 0xCA, 0xFD, 0xE7, 0x4D, 0x24, 0x8C, 0x51, 0xA3, + 0x2A, 0xCF, 0x73, 0x23, 0x89, 0x52, 0x6B, 0x8C, 0x23, 0x6B, 0x29, 0xA7, + 0x93, 0x32, 0xCB, 0x74, 0x91, 0x9B, 0x2C, 0x33, 0x3B, 0x52, 0x2B, 0x00, + 0x42, 0x8C, 0x01, 0x11, 0x49, 0x28, 0x81, 0x22, 0xC6, 0x78, 0xFA, 0xE2, + 0x65, 0xF4, 0x7E, 0xDB, 0xF6, 0xD3, 0x51, 0x81, 0x28, 0xDA, 0xDE, 0x5B, + 0xEB, 0x8C, 0xA6, 0x18, 0xD9, 0xF9, 0x78, 0xB5, 0xD8, 0x7A, 0x1F, 0xF2, + 0x22, 0x43, 0x44, 0x29, 0x25, 0x49, 0x0A, 0x3E, 0xF4, 0x2E, 0x24, 0x09, + 0xF3, 0xDE, 0xF9, 0x18, 0xC1, 0x68, 0xF5, 0xD1, 0x07, 0x0F, 0x47, 0xA3, + 0x42, 0x1B, 0x75, 0x78, 0x30, 0x9B, 0x8E, 0x47, 0x00, 0xEC, 0x9C, 0x7F, + 0xEF, 0x9D, 0xFB, 0xEF, 0x3E, 0xBA, 0x3F, 0x9F, 0x4F, 0x94, 0xA4, 0x51, + 0x95, 0x8F, 0x47, 0x95, 0x92, 0x34, 0x9B, 0x8D, 0x8E, 0x8F, 0x66, 0x93, + 0x71, 0x35, 0x1E, 0x95, 0x82, 0x68, 0xB5, 0x5C, 0x7E, 0xF2, 0xC1, 0xC3, + 0x77, 0x1E, 0x3D, 0x6C, 0x7B, 0x7F, 0xBD, 0x58, 0x87, 0x18, 0x36, 0xCB, + 0xA5, 0x51, 0xE2, 0xBD, 0x77, 0x1F, 0xC6, 0x18, 0xE6, 0xF3, 0x71, 0x51, + 0x64, 0xE9, 0x06, 0xD6, 0x75, 0xE3, 0x5D, 0x48, 0x10, 0xDC, 0x22, 0xCF, + 0xB5, 0x51, 0x92, 0xC4, 0xE1, 0x7C, 0x22, 0x95, 0x94, 0x34, 0x38, 0xDD, + 0xC2, 0xCE, 0xD1, 0x63, 0x5B, 0xB7, 0x99, 0xC9, 0x7C, 0x8C, 0x97, 0x57, + 0x8B, 0xDE, 0x06, 0x14, 0x74, 0x79, 0xBD, 0xAC, 0x9B, 0x86, 0x63, 0x80, + 0x18, 0xCB, 0xAA, 0x38, 0x3A, 0x3A, 0xEC, 0xAD, 0x1B, 0x55, 0xE5, 0x7C, + 0x32, 0x3A, 0x39, 0x9E, 0xDF, 0x3B, 0xB9, 0x73, 0xBD, 0xDC, 0xCC, 0xA6, + 0x93, 0xD9, 0xA4, 0x3A, 0xBF, 0xB8, 0x5E, 0x2C, 0x96, 0x5D, 0xDF, 0x37, + 0x4D, 0xFF, 0xE0, 0xAD, 0x13, 0x29, 0xD5, 0x93, 0x67, 0xAF, 0x8E, 0x8F, + 0xE6, 0xC7, 0x07, 0x93, 0xD4, 0x0C, 0x8A, 0x1C, 0x8D, 0x56, 0x49, 0x6D, + 0xBD, 0xE9, 0x12, 0x68, 0xDF, 0x33, 0x63, 0xDD, 0xF6, 0x9B, 0xBA, 0x93, + 0x52, 0x7D, 0xFE, 0xC5, 0xD7, 0x07, 0xF3, 0xA9, 0x20, 0xBA, 0xBA, 0x5E, + 0xB4, 0x6D, 0xE7, 0x9D, 0x4F, 0x53, 0x23, 0xA9, 0x54, 0x92, 0x7E, 0xE3, + 0x18, 0x97, 0xAB, 0xB5, 0xD1, 0x1A, 0x80, 0xAB, 0x51, 0xD5, 0x75, 0xB6, + 0xAE, 0x1B, 0x22, 0x2A, 0x8A, 0x2C, 0x35, 0x19, 0x12, 0x9A, 0x3A, 0xE1, + 0x68, 0xCA, 0xAA, 0x48, 0xB6, 0xF0, 0x42, 0xE0, 0xC0, 0xAB, 0x15, 0x22, + 0x86, 0x68, 0xB4, 0x26, 0x12, 0x21, 0x04, 0xEB, 0x9C, 0x56, 0x2A, 0xCF, + 0xB3, 0xC8, 0x51, 0x24, 0xE0, 0xA5, 0x40, 0xE6, 0xA4, 0x94, 0x4D, 0x4A, + 0x52, 0x08, 0x21, 0x44, 0x0E, 0x31, 0x56, 0x65, 0x71, 0xF7, 0xEE, 0x51, + 0x52, 0xF4, 0x85, 0xDD, 0x38, 0x6C, 0xC7, 0xEC, 0xFD, 0x7B, 0xD6, 0x79, + 0x5A, 0xBF, 0x5A, 0xC9, 0x27, 0xCF, 0x4F, 0x9F, 0xBF, 0x3C, 0x4F, 0x23, + 0xDA, 0x54, 0x20, 0x24, 0xBC, 0xAB, 0x91, 0x32, 0x6D, 0x78, 0xE7, 0x7C, + 0x6A, 0x80, 0x26, 0x65, 0x94, 0x04, 0xFA, 0x09, 0x21, 0xD9, 0x3B, 0xB5, + 0xD6, 0x05, 0x21, 0x70, 0x5B, 0x37, 0x00, 0x90, 0x7A, 0x40, 0x8A, 0x28, + 0xC4, 0x38, 0xB4, 0x3E, 0x00, 0x08, 0x51, 0x2A, 0x29, 0x50, 0x78, 0x17, + 0xB2, 0x4C, 0x6B, 0xAD, 0x92, 0x3D, 0xAD, 0x56, 0xC4, 0x0C, 0x31, 0xC6, + 0x34, 0xE4, 0x4D, 0x8C, 0xC5, 0x54, 0xC0, 0x3A, 0xEB, 0x62, 0x1C, 0x88, + 0x0A, 0xA9, 0x90, 0x4C, 0x33, 0x2E, 0x63, 0xB4, 0x40, 0xF4, 0x3E, 0xA4, + 0x89, 0x6C, 0xDB, 0x59, 0x8E, 0x9C, 0x67, 0x26, 0x35, 0x8E, 0x94, 0x94, + 0x69, 0xA6, 0x07, 0x80, 0x4D, 0x6B, 0xD3, 0x55, 0x3A, 0xE7, 0x99, 0x07, + 0x32, 0x69, 0xC2, 0x6F, 0x7B, 0x1F, 0xDA, 0xB6, 0xEB, 0xAD, 0x5F, 0xAC, + 0x36, 0x28, 0x84, 0xB5, 0x0E, 0x11, 0x23, 0x40, 0x8C, 0xAC, 0xB5, 0x0E, + 0x21, 0x6A, 0x2D, 0x19, 0xB8, 0x6B, 0x6D, 0x88, 0xF1, 0x66, 0xB9, 0xDE, + 0x6E, 0x1B, 0x41, 0xA2, 0x2C, 0xF2, 0x10, 0xC2, 0x76, 0x5B, 0x73, 0x8C, + 0xD6, 0x79, 0x41, 0xD4, 0x5B, 0xB7, 0xD9, 0xD6, 0xF3, 0xE9, 0x78, 0xB9, + 0xA9, 0x57, 0x9B, 0x66, 0xB1, 0xDA, 0x2E, 0xD6, 0xCD, 0xE1, 0xC1, 0xFC, + 0xE2, 0x6A, 0xE5, 0x02, 0x23, 0x89, 0xF1, 0xA8, 0x7A, 0x70, 0xEF, 0xF8, + 0xCE, 0xD1, 0x0C, 0x11, 0xA6, 0xE3, 0x32, 0x29, 0x6D, 0x7C, 0xF9, 0xE4, + 0xF4, 0xCF, 0xFF, 0xE2, 0x97, 0xCB, 0x75, 0x9D, 0x17, 0xC6, 0x3A, 0x77, + 0x30, 0x1D, 0xB7, 0x6D, 0x27, 0x43, 0x8C, 0x09, 0x1C, 0xCF, 0xCC, 0x7D, + 0x62, 0xED, 0x66, 0xC6, 0x68, 0x95, 0x8C, 0xCC, 0xD5, 0x8E, 0xA4, 0x9E, + 0x48, 0xE0, 0xB7, 0x13, 0x9F, 0x7F, 0x38, 0x7E, 0xDD, 0x8E, 0x50, 0xFB, + 0x69, 0xE3, 0x00, 0xDE, 0xBD, 0x05, 0xA3, 0x7D, 0x93, 0x89, 0xC5, 0xB8, + 0x77, 0x33, 0x82, 0x37, 0xF3, 0x81, 0x9D, 0x3C, 0x19, 0x83, 0xD6, 0x32, + 0x33, 0xAA, 0xB7, 0x3E, 0x86, 0x18, 0x59, 0xF6, 0xD6, 0x25, 0x60, 0xF4, + 0x70, 0x2C, 0x48, 0x82, 0x37, 0xBC, 0x4B, 0x40, 0x40, 0xE7, 0x7D, 0xA6, + 0xA5, 0x54, 0x52, 0x2B, 0x99, 0x25, 0x6C, 0x74, 0x8C, 0x3A, 0xBD, 0x62, + 0xA6, 0x8A, 0x3C, 0x4F, 0xA6, 0x15, 0xC3, 0xC0, 0x01, 0x61, 0x30, 0x94, + 0x0B, 0x20, 0x08, 0x05, 0x12, 0x00, 0x24, 0x9D, 0x99, 0xDE, 0xBA, 0x10, + 0xA2, 0x73, 0x1E, 0x01, 0x26, 0x55, 0xD6, 0x34, 0x1D, 0x11, 0x35, 0x5D, + 0xBF, 0x5A, 0xB7, 0x2C, 0xA8, 0x28, 0x4C, 0x7A, 0xD3, 0x34, 0x18, 0x84, + 0x51, 0x08, 0x2C, 0x10, 0x02, 0x73, 0xDF, 0x5B, 0x00, 0x48, 0x98, 0x26, + 0x93, 0xE9, 0xE3, 0xA3, 0x83, 0x64, 0x26, 0x12, 0x39, 0xBE, 0x75, 0xFF, + 0x24, 0xC4, 0x78, 0x7E, 0x75, 0x03, 0x02, 0xEF, 0x1C, 0x1F, 0xF4, 0x5A, + 0x93, 0x24, 0x63, 0x34, 0x00, 0x74, 0x5D, 0xCF, 0x31, 0x66, 0x99, 0x31, + 0x46, 0x5B, 0x6B, 0xD5, 0x0F, 0x3E, 0x38, 0x3A, 0x3A, 0x5C, 0xAC, 0xEB, + 0xB4, 0x86, 0x32, 0x4D, 0xA3, 0x32, 0xBF, 0x77, 0xEF, 0xA8, 0xAA, 0x32, + 0x49, 0x30, 0x1A, 0x8F, 0x9C, 0x75, 0xC0, 0x1C, 0x85, 0x68, 0x9B, 0x4E, + 0x49, 0xA9, 0xB4, 0x4A, 0x6D, 0x60, 0xA5, 0xA8, 0xC8, 0x0D, 0x00, 0x26, + 0x6D, 0xDE, 0x10, 0x18, 0x01, 0xBD, 0x0B, 0xDE, 0x87, 0xEB, 0x9B, 0x95, + 0x8F, 0xBC, 0xDC, 0xD4, 0x5D, 0x67, 0x9F, 0x3E, 0x7B, 0x51, 0x94, 0x85, + 0xD6, 0xA6, 0xDE, 0x36, 0x75, 0x5D, 0x5B, 0xEB, 0x1E, 0x3E, 0x7C, 0x6B, + 0xB3, 0xD9, 0xBC, 0xFD, 0xF6, 0x5D, 0xA3, 0xD5, 0xCD, 0xCD, 0xE2, 0xE1, + 0xFD, 0xE3, 0x7A, 0x5B, 0xFF, 0xE2, 0xD3, 0xAF, 0x46, 0x65, 0xB9, 0xDD, + 0x36, 0xDF, 0x3C, 0x7E, 0xF6, 0xE4, 0xC9, 0xB7, 0x55, 0x55, 0x3D, 0x78, + 0x70, 0x5F, 0x1B, 0xFD, 0xFF, 0xFE, 0x7F, 0xFF, 0xFE, 0x0F, 0xFF, 0xEB, + 0xFF, 0xE2, 0x67, 0xBF, 0xFF, 0x83, 0xAE, 0x6D, 0x38, 0xC4, 0x2C, 0x33, + 0xCC, 0x80, 0x01, 0x22, 0xB3, 0x44, 0xE8, 0x5D, 0x10, 0x42, 0x68, 0x2D, + 0xB5, 0x24, 0xEB, 0x5C, 0x96, 0x67, 0xC6, 0x74, 0xBD, 0xB5, 0xF7, 0xEE, + 0xDD, 0x19, 0x8F, 0xAA, 0xDE, 0x05, 0xEF, 0xC3, 0x66, 0xBD, 0x76, 0x56, + 0x78, 0x1F, 0xAA, 0x4A, 0x96, 0x65, 0x79, 0x7D, 0xB3, 0x42, 0xC4, 0x44, + 0x26, 0x41, 0x84, 0xA2, 0x28, 0x9A, 0xA6, 0x49, 0xB8, 0xD3, 0xB6, 0xED, + 0x78, 0x20, 0xCD, 0x40, 0xD2, 0xCF, 0x8B, 0x21, 0x2A, 0x2D, 0x9D, 0xF3, + 0xC1, 0x87, 0xA4, 0x32, 0x92, 0xD2, 0xB7, 0x10, 0x5C, 0x0C, 0xD1, 0x3A, + 0x67, 0x8C, 0x4E, 0x5A, 0xE1, 0x46, 0xA9, 0xC9, 0x74, 0x1C, 0x23, 0x34, + 0x6D, 0x33, 0x2C, 0x40, 0x40, 0xE7, 0x3C, 0x00, 0x8C, 0xAA, 0xBC, 0xEF, + 0x9D, 0x94, 0x84, 0x28, 0xBF, 0xFA, 0xE6, 0xD9, 0xC7, 0x1F, 0xBE, 0x23, + 0xE5, 0x50, 0x73, 0x24, 0x46, 0x9F, 0x18, 0x8A, 0xB7, 0xDD, 0x68, 0x09, + 0xF6, 0xD2, 0x78, 0xA9, 0x9B, 0x81, 0x91, 0xD9, 0x39, 0xC7, 0x1C, 0x9D, + 0xB5, 0x48, 0xC4, 0x83, 0x2A, 0x3A, 0x64, 0x03, 0x09, 0x29, 0x26, 0x41, + 0x04, 0xE7, 0x93, 0xDE, 0x1A, 0x58, 0xE7, 0xC1, 0x71, 0x92, 0xB7, 0x65, + 0x06, 0xEB, 0xA3, 0xF7, 0xDE, 0x39, 0x6F, 0xB4, 0x76, 0xCE, 0x15, 0x79, + 0x9E, 0x2C, 0xAE, 0x97, 0xEB, 0xDA, 0x05, 0x0F, 0xC0, 0xE3, 0x32, 0x93, + 0x92, 0x7C, 0x04, 0x96, 0x28, 0x63, 0xC2, 0xB5, 0x7A, 0x44, 0x4A, 0xEF, + 0x42, 0x6B, 0x05, 0x21, 0x22, 0x42, 0xE0, 0x88, 0x3E, 0x18, 0xAD, 0x52, + 0x26, 0x18, 0x42, 0x6C, 0xBB, 0x9E, 0x84, 0x00, 0x01, 0x99, 0xD6, 0x31, + 0x32, 0x82, 0x2F, 0x8B, 0xA2, 0x2A, 0x72, 0x25, 0x09, 0x80, 0x8B, 0x3C, + 0x23, 0x21, 0x8C, 0x92, 0x22, 0x41, 0xDB, 0xC4, 0xA0, 0x0F, 0xE8, 0x43, + 0x90, 0x92, 0x36, 0xDB, 0xA6, 0x6D, 0xFB, 0x14, 0xF5, 0x12, 0x8A, 0xB3, + 0xC8, 0x0D, 0x22, 0xEC, 0x8D, 0x5D, 0xAC, 0xF5, 0xD7, 0xCB, 0x55, 0x2A, + 0x41, 0x94, 0xA2, 0x74, 0x6C, 0x33, 0x6B, 0x44, 0x28, 0x8B, 0x2C, 0xCB, + 0x94, 0x73, 0x41, 0x48, 0x72, 0xDE, 0xF7, 0xBD, 0x75, 0x2E, 0x98, 0x4C, + 0xAD, 0x37, 0x5B, 0xEF, 0x7D, 0xDF, 0xDB, 0x6D, 0xDD, 0x56, 0x65, 0x2E, + 0x04, 0xCE, 0xA6, 0xE3, 0xEF, 0x7D, 0xF4, 0x6E, 0x66, 0xB4, 0xF7, 0xBE, + 0x2A, 0xF3, 0xAE, 0x77, 0x4A, 0x4B, 0x60, 0x38, 0x3C, 0x9C, 0xBF, 0xBE, + 0xB8, 0x5E, 0x6E, 0xEA, 0x10, 0xC2, 0x6C, 0x3A, 0xAE, 0xCA, 0xEC, 0x7B, + 0x1F, 0x3E, 0x4A, 0xD3, 0xB6, 0x8B, 0xEB, 0xF5, 0xFF, 0xF1, 0x7F, 0xFF, + 0xF5, 0xC5, 0xC5, 0xD5, 0xE7, 0x4A, 0x3E, 0x7D, 0x79, 0xF1, 0xDF, 0xFC, + 0xE3, 0xEF, 0x1F, 0xCE, 0x67, 0xBF, 0xF8, 0xEC, 0x29, 0xFD, 0xD1, 0x9F, + 0xFC, 0x2B, 0x81, 0x18, 0x19, 0x12, 0x66, 0x0B, 0x11, 0xF3, 0x2C, 0x89, + 0xDF, 0x0D, 0x32, 0x8C, 0xFB, 0x04, 0x6A, 0x1F, 0x92, 0xFE, 0xB3, 0x45, + 0xE5, 0x6F, 0xFD, 0x68, 0x08, 0x64, 0x31, 0xD1, 0xA9, 0x7E, 0x27, 0x8A, + 0xC5, 0xC8, 0xCC, 0xC1, 0x87, 0xE4, 0x56, 0xED, 0x7C, 0x68, 0x3B, 0xEB, + 0x7D, 0x90, 0x8A, 0x54, 0x9A, 0x4C, 0x23, 0x26, 0xD8, 0x8B, 0x36, 0x8A, + 0x08, 0x93, 0x50, 0x60, 0x9E, 0x69, 0xA3, 0x95, 0x24, 0xAA, 0x8A, 0xBC, + 0x28, 0x92, 0xEE, 0xC6, 0xE0, 0x34, 0x98, 0xCA, 0x43, 0x29, 0xA5, 0xD6, + 0x4A, 0x2B, 0xA5, 0x94, 0x42, 0x21, 0x10, 0x06, 0xA8, 0x3E, 0x91, 0xC8, + 0xB4, 0x49, 0xA9, 0xE5, 0xAD, 0x77, 0x18, 0xF7, 0x17, 0x4B, 0x24, 0x01, + 0x13, 0xC5, 0x0F, 0xDA, 0xAE, 0xFB, 0xE5, 0xAF, 0xBE, 0x1C, 0x15, 0x59, + 0x67, 0xFD, 0xC1, 0xB4, 0x6A, 0x5A, 0xBB, 0x6D, 0xFA, 0xD9, 0xA8, 0xF0, + 0x3E, 0xA4, 0xD6, 0x3E, 0x03, 0x86, 0x08, 0xC1, 0x7B, 0x41, 0x03, 0xFF, + 0xD9, 0x87, 0xD8, 0x74, 0xD6, 0xF6, 0x3E, 0x71, 0x38, 0x88, 0xA8, 0xEB, + 0xBA, 0x51, 0x99, 0xBF, 0xF3, 0xF0, 0x1E, 0x11, 0x01, 0x60, 0x60, 0x26, + 0xA2, 0xCC, 0xE8, 0xCB, 0xAB, 0x65, 0x5D, 0xB7, 0x5A, 0x2B, 0x8E, 0xAC, + 0xB4, 0xEA, 0xBA, 0xAE, 0x69, 0x1A, 0x49, 0x22, 0xCF, 0x8D, 0x52, 0xAA, + 0xEB, 0x3A, 0x29, 0x25, 0x92, 0xCC, 0x8B, 0x5C, 0x4A, 0x5A, 0x6F, 0xEA, + 0x51, 0x99, 0x1F, 0xCE, 0x27, 0x65, 0x61, 0xB2, 0xCC, 0x8C, 0x26, 0x95, + 0x52, 0x8A, 0x43, 0x0C, 0xD6, 0x09, 0x49, 0x82, 0x06, 0x51, 0x20, 0xAD, + 0x95, 0x10, 0x42, 0x90, 0x90, 0x4A, 0xCA, 0x24, 0xB9, 0x81, 0x48, 0x28, + 0x9C, 0x0F, 0x67, 0xE7, 0x97, 0xA7, 0xA7, 0xE7, 0x57, 0xAB, 0x4D, 0x6F, + 0xC3, 0x72, 0xB5, 0x5D, 0xAE, 0x36, 0x67, 0x17, 0xD7, 0x88, 0x42, 0x99, + 0xEC, 0xEC, 0xE2, 0x1A, 0x11, 0x95, 0xD6, 0xCE, 0x87, 0x3B, 0x27, 0xC7, + 0xBD, 0x75, 0x9B, 0xCD, 0xF6, 0xE1, 0x5B, 0x77, 0xAB, 0xAA, 0xF8, 0xF4, + 0xF3, 0x6F, 0xBE, 0x79, 0xF6, 0x6A, 0xBB, 0x6D, 0x5E, 0x3C, 0x7F, 0xF9, + 0xFA, 0xFC, 0xF2, 0xFE, 0xFD, 0xFB, 0x87, 0x87, 0x53, 0xD7, 0x77, 0x57, + 0xD7, 0x8B, 0xE7, 0xCF, 0x4F, 0x3F, 0xFE, 0xF8, 0x83, 0xC7, 0x5F, 0x3F, + 0x01, 0x8E, 0x21, 0x04, 0x41, 0x24, 0x89, 0x24, 0x89, 0x3C, 0x33, 0x80, + 0x98, 0x8A, 0x8B, 0xE0, 0x03, 0x09, 0x31, 0xA9, 0xCA, 0xA4, 0xA7, 0x60, + 0x5D, 0xA8, 0x9B, 0x7E, 0x34, 0xAA, 0x26, 0xE3, 0xAA, 0x6E, 0x5A, 0x04, + 0x88, 0x91, 0xAF, 0xAE, 0x17, 0x31, 0x70, 0x66, 0x8C, 0xD6, 0xCA, 0x39, + 0x9B, 0xE8, 0xF1, 0x79, 0x9E, 0xDD, 0xBF, 0x7F, 0xD2, 0xB6, 0x5D, 0x6E, + 0x8C, 0xB5, 0xCE, 0x7A, 0x5F, 0x55, 0x79, 0x0C, 0xC1, 0xFB, 0x30, 0x1E, + 0x97, 0xDE, 0x7B, 0x14, 0x98, 0x19, 0x1D, 0xE2, 0xBE, 0xC9, 0x45, 0x02, + 0x31, 0x30, 0x78, 0x1F, 0x98, 0x23, 0xA2, 0x40, 0xC0, 0xD4, 0x48, 0xCA, + 0x33, 0x6D, 0xAD, 0xB3, 0xD6, 0x35, 0x4D, 0x5B, 0xD7, 0xED, 0x7C, 0x36, + 0xC9, 0x32, 0xDD, 0xF7, 0x3D, 0x33, 0x74, 0x3B, 0x31, 0xF1, 0x18, 0xE2, + 0x5B, 0xF7, 0xEF, 0xAC, 0x36, 0xDB, 0x3C, 0xCB, 0xEE, 0x9D, 0x1C, 0x0E, + 0xA3, 0x31, 0x00, 0xB1, 0xF3, 0x66, 0x8E, 0xF8, 0x86, 0x75, 0xF9, 0x9D, + 0x45, 0xCE, 0x40, 0x44, 0x9F, 0xFD, 0xE6, 0xF1, 0xCD, 0x62, 0x13, 0x19, + 0xB2, 0x4C, 0x39, 0xE7, 0x7D, 0x08, 0x99, 0x56, 0xA9, 0x20, 0x08, 0x83, + 0x26, 0x30, 0xA4, 0x16, 0x35, 0xC0, 0x1B, 0xB4, 0x94, 0xF5, 0xA1, 0xEB, + 0x5C, 0x3A, 0xB6, 0x95, 0xA4, 0x04, 0x70, 0x4D, 0x8B, 0xD8, 0x87, 0xE0, + 0xBD, 0xB7, 0xCE, 0xA7, 0x1E, 0x1F, 0x60, 0x82, 0x95, 0x04, 0x21, 0x84, + 0x54, 0x8A, 0x77, 0x7E, 0xC6, 0x59, 0xA6, 0x11, 0x31, 0x33, 0x3A, 0xC1, + 0xCA, 0x68, 0x87, 0x57, 0xF7, 0x3E, 0x6C, 0xB6, 0x8D, 0x31, 0x2A, 0xC4, + 0x38, 0x2A, 0x8B, 0x22, 0x33, 0x5D, 0x6F, 0x8B, 0x3C, 0x9B, 0x4F, 0xC6, + 0xA9, 0x3A, 0xD1, 0x5A, 0x93, 0x10, 0x46, 0xA9, 0x94, 0x1B, 0x4A, 0xA2, + 0x04, 0x29, 0x4F, 0x00, 0x4F, 0x66, 0x58, 0xAF, 0xEB, 0x6D, 0xDD, 0xA6, + 0x54, 0x77, 0x53, 0xD7, 0xA9, 0xEC, 0x55, 0x4A, 0x7A, 0x1F, 0x96, 0xAB, + 0x6D, 0xD7, 0xFF, 0xFF, 0x9C, 0xBD, 0xD9, 0x93, 0xA4, 0xD7, 0x75, 0x27, + 0x76, 0xEE, 0x7E, 0xBF, 0x2D, 0xB7, 0xCA, 0xDA, 0xBA, 0xBA, 0x1B, 0x0D, + 0x74, 0x93, 0x20, 0x20, 0x50, 0x24, 0x35, 0x1C, 0xD9, 0x9A, 0x89, 0x91, + 0xE5, 0x79, 0xB3, 0x23, 0x1C, 0xFE, 0x4B, 0xBC, 0x8D, 0xFD, 0x28, 0x51, + 0xB2, 0x23, 0xEC, 0xF9, 0x4F, 0xFC, 0x38, 0x8F, 0x76, 0x38, 0x1C, 0x13, + 0x76, 0xC4, 0x48, 0x23, 0x8D, 0x48, 0x90, 0x04, 0x48, 0x6C, 0xBD, 0x77, + 0x2D, 0x5D, 0x5B, 0x56, 0x6E, 0xDF, 0x76, 0xF7, 0xEB, 0x87, 0x9B, 0x59, + 0x5D, 0x00, 0xA9, 0xB1, 0xC7, 0xF9, 0xD0, 0x40, 0xD7, 0x92, 0x5D, 0x95, + 0xF9, 0x7D, 0xE7, 0x9E, 0xF3, 0x3B, 0xBF, 0xC5, 0x20, 0x48, 0x4A, 0x29, + 0x42, 0x29, 0x6D, 0x5B, 0xE5, 0x5D, 0xA0, 0x94, 0x64, 0x92, 0x55, 0x55, + 0x91, 0x98, 0x1C, 0x89, 0xF6, 0xB5, 0x5C, 0xD6, 0x11, 0x20, 0xCF, 0xE5, + 0x72, 0xD9, 0x18, 0x63, 0x11, 0x80, 0xF3, 0xDE, 0xF9, 0xD0, 0xB4, 0xFD, + 0x93, 0x0F, 0x1E, 0x7E, 0xF4, 0xE1, 0x07, 0x84, 0xE0, 0xA4, 0x71, 0x69, + 0xBA, 0x3E, 0x85, 0x3B, 0x3A, 0xE7, 0x4F, 0xDE, 0x5E, 0x7F, 0xFA, 0xD9, + 0xD7, 0xAB, 0x75, 0xFB, 0xCD, 0xB3, 0xD7, 0x08, 0x21, 0xCE, 0xC5, 0xF5, + 0xCD, 0xB2, 0x57, 0xF6, 0xD9, 0x8B, 0x37, 0x8C, 0xD3, 0x1F, 0x7D, 0xF2, + 0xBD, 0xC3, 0x83, 0xE9, 0xEE, 0x74, 0x74, 0xEF, 0x60, 0x4A, 0x19, 0x7F, + 0xFE, 0xFA, 0xFC, 0xC5, 0xEB, 0x73, 0xF2, 0x5F, 0xFF, 0xB7, 0xFF, 0x7D, + 0x42, 0x4D, 0x43, 0x04, 0x1F, 0x42, 0xD2, 0x40, 0x01, 0x40, 0x5A, 0xFE, + 0x6C, 0x71, 0xF4, 0x77, 0x6F, 0xDE, 0xAD, 0xB4, 0xE8, 0x77, 0x0B, 0xD6, + 0xEF, 0x3E, 0x6E, 0x7B, 0xB1, 0xF4, 0x67, 0x1A, 0xB8, 0xEE, 0x7C, 0x7A, + 0x03, 0xED, 0x27, 0xE3, 0x11, 0xE7, 0xBC, 0xD6, 0xD6, 0x58, 0x8F, 0x10, + 0x24, 0x19, 0x79, 0x08, 0x9B, 0xCD, 0x66, 0x9E, 0x89, 0xDB, 0x19, 0x0A, + 0xBF, 0x33, 0xBD, 0x00, 0xCE, 0x19, 0xE3, 0x2C, 0x5D, 0xB5, 0x89, 0xE7, + 0x9B, 0xBC, 0x31, 0x11, 0x42, 0x8C, 0xA4, 0x51, 0x8F, 0xC4, 0x77, 0xFC, + 0x8D, 0x08, 0x80, 0x30, 0x20, 0x4A, 0x69, 0x0A, 0x24, 0x84, 0x5B, 0x5C, + 0x2E, 0xFA, 0x0D, 0xB9, 0x8C, 0xB2, 0xCD, 0x93, 0xC5, 0x80, 0x29, 0x39, + 0x3B, 0xBB, 0xF8, 0xE2, 0xAB, 0x97, 0x52, 0x50, 0x6D, 0xEC, 0xCE, 0xB0, + 0x4A, 0x66, 0x22, 0xDA, 0x18, 0x4A, 0x70, 0x3A, 0xD9, 0x96, 0x75, 0x1F, + 0x22, 0x58, 0xEF, 0x53, 0xF0, 0xA2, 0xB5, 0xCE, 0x18, 0x67, 0x36, 0xDA, + 0x00, 0xC8, 0xA4, 0xCC, 0xF3, 0x2C, 0x78, 0xBF, 0xAE, 0xDB, 0x2C, 0x13, + 0x83, 0xB2, 0xC0, 0x84, 0x78, 0xEF, 0x39, 0x63, 0x9C, 0x33, 0x8C, 0xD1, + 0x6C, 0xBE, 0x4A, 0xA8, 0x56, 0xD3, 0xB4, 0xC6, 0x18, 0xCE, 0x59, 0x55, + 0x16, 0x52, 0x8A, 0x34, 0x01, 0x01, 0xC2, 0x5D, 0xDB, 0x67, 0x19, 0xEF, + 0x3A, 0x55, 0x16, 0x99, 0x94, 0x7C, 0xBA, 0x33, 0x1C, 0x8D, 0x07, 0x98, + 0x60, 0x29, 0x04, 0x00, 0x68, 0xA5, 0x62, 0x0C, 0x94, 0xF3, 0xE4, 0x80, + 0x4E, 0x36, 0x33, 0x35, 0xDE, 0xC2, 0x37, 0x31, 0xC6, 0x68, 0x8D, 0xEB, + 0xB5, 0x9A, 0x2F, 0x56, 0x37, 0xF3, 0xF5, 0xBA, 0xE9, 0x8D, 0x0D, 0xC6, + 0xD8, 0xBA, 0x6E, 0x9D, 0x0F, 0x32, 0x93, 0x45, 0x91, 0x2F, 0xD7, 0x0D, + 0x21, 0xF4, 0xE0, 0x60, 0x0F, 0x30, 0x05, 0x84, 0x87, 0x55, 0x59, 0x95, + 0xC5, 0x97, 0x4F, 0x5F, 0x5D, 0xCE, 0xE6, 0x87, 0x07, 0xFB, 0x4D, 0xAB, + 0x4E, 0xCE, 0x2E, 0xAB, 0x41, 0xE5, 0x43, 0x5C, 0x2C, 0x97, 0x7B, 0x7B, + 0xD3, 0xC1, 0x68, 0x38, 0xBF, 0x59, 0xAE, 0xE6, 0x37, 0xDE, 0xBB, 0xBE, + 0xEB, 0x77, 0x26, 0xA3, 0x5F, 0x7E, 0xF6, 0xF5, 0x97, 0x5F, 0x3D, 0xBF, + 0x99, 0x2D, 0x26, 0x93, 0xD1, 0x78, 0x34, 0x70, 0xDE, 0xC5, 0x5B, 0xDB, + 0x29, 0x84, 0x29, 0xC5, 0x04, 0xE3, 0x18, 0x63, 0x00, 0x44, 0x29, 0x9B, + 0x8C, 0x06, 0x79, 0x26, 0x8D, 0x75, 0xD6, 0xBA, 0xAA, 0xCC, 0x23, 0x42, + 0x97, 0x97, 0xB3, 0x4E, 0xE9, 0x2C, 0x93, 0xCE, 0xBB, 0x18, 0x22, 0x46, + 0x29, 0x54, 0x8D, 0xE5, 0x59, 0x96, 0x4A, 0xB3, 0x52, 0xC6, 0x5A, 0x97, + 0x58, 0x4B, 0x31, 0xC6, 0xE0, 0x43, 0x59, 0xE6, 0xC6, 0xD8, 0xB4, 0xE7, + 0xCA, 0xB3, 0x4C, 0x69, 0xE5, 0x7D, 0xF2, 0xC8, 0x8C, 0xEB, 0xB6, 0x4F, + 0xF4, 0x26, 0x1F, 0x22, 0x00, 0xAA, 0xCA, 0x6C, 0x50, 0x16, 0x21, 0x46, + 0xA5, 0x74, 0x6A, 0xE8, 0xBC, 0xF7, 0x21, 0xC6, 0xFB, 0x47, 0xFB, 0x08, + 0xE1, 0xA6, 0xED, 0x7C, 0x08, 0x82, 0x31, 0x6B, 0xED, 0x70, 0x50, 0x2A, + 0x6D, 0x6E, 0x16, 0xAB, 0x4F, 0x7E, 0xF0, 0xC1, 0xB6, 0x90, 0x6D, 0x38, + 0x95, 0x5B, 0x77, 0x45, 0x80, 0x04, 0xF5, 0x27, 0x16, 0x50, 0x72, 0xFE, + 0x83, 0x08, 0x00, 0x5F, 0x3D, 0x7D, 0x5D, 0xB7, 0x5D, 0xA2, 0xCA, 0x26, + 0x2C, 0x2F, 0xAD, 0x05, 0xB2, 0x4C, 0xC4, 0x08, 0x82, 0xB3, 0x8D, 0x47, + 0x2B, 0x23, 0x71, 0xC3, 0x0B, 0xA1, 0x84, 0x60, 0xEF, 0x43, 0x8C, 0x41, + 0x0A, 0x66, 0x9D, 0x8F, 0x31, 0x58, 0xEF, 0x29, 0x65, 0x98, 0x20, 0x42, + 0x70, 0x91, 0x4B, 0x82, 0xD1, 0xDE, 0xCE, 0x30, 0x93, 0x5C, 0x1B, 0xCB, + 0x05, 0x0B, 0x21, 0x86, 0x00, 0x18, 0x63, 0xEF, 0x3C, 0x42, 0x28, 0xCB, + 0xB8, 0x14, 0x3C, 0x25, 0x04, 0xA6, 0xF5, 0xBA, 0xF7, 0x81, 0x32, 0x1A, + 0x22, 0x10, 0x4C, 0xAC, 0xF7, 0xD6, 0xBA, 0x4C, 0xCA, 0x10, 0x62, 0xF0, + 0x51, 0x69, 0x33, 0x1E, 0x96, 0x3B, 0xA3, 0x4A, 0x0A, 0xDA, 0xF5, 0xBA, + 0x6E, 0x7A, 0x82, 0x71, 0xEA, 0x7D, 0x7C, 0xF0, 0x89, 0xE5, 0xAE, 0x8C, + 0x05, 0x84, 0x04, 0x67, 0x98, 0x90, 0x54, 0xC2, 0xB4, 0x36, 0x31, 0xC2, + 0xBA, 0x69, 0xAD, 0xF3, 0xDA, 0xD8, 0x18, 0x23, 0x25, 0xB4, 0x57, 0xBA, + 0x53, 0x9B, 0xDC, 0xE8, 0x8D, 0x76, 0x1E, 0x00, 0x63, 0xD4, 0xB4, 0xCA, + 0x5A, 0x9B, 0xC8, 0x25, 0x31, 0x44, 0x4A, 0xE9, 0xBA, 0x6E, 0x9D, 0xF7, + 0x08, 0xE1, 0xB6, 0x57, 0x83, 0xAA, 0x74, 0x3E, 0xD4, 0x4D, 0xEB, 0x7C, + 0x10, 0x9C, 0x3B, 0xEF, 0xFF, 0xE0, 0x07, 0x1F, 0x7C, 0xF2, 0xD1, 0x63, + 0xEF, 0xFD, 0xB2, 0x6E, 0x97, 0xAB, 0x9A, 0x12, 0x52, 0x14, 0x39, 0x44, + 0x38, 0xBB, 0x9C, 0xFD, 0xF5, 0xDF, 0x7D, 0xF6, 0xE2, 0xE5, 0x89, 0x52, + 0xFA, 0xFE, 0xD1, 0x3E, 0x46, 0x78, 0xB1, 0xAC, 0x01, 0xE1, 0xAA, 0xCC, + 0xAF, 0xAE, 0xE7, 0x7D, 0xAF, 0x8C, 0xB1, 0x83, 0x41, 0xF9, 0xDE, 0x83, + 0x83, 0xA3, 0x83, 0xE9, 0x83, 0xA3, 0xFD, 0xE7, 0xAF, 0x4E, 0xBE, 0xFA, + 0xEA, 0x05, 0x20, 0x44, 0xFE, 0xAB, 0xFF, 0xE6, 0x5F, 0xA4, 0x17, 0xB7, + 0xCC, 0xC4, 0x68, 0x58, 0x20, 0x80, 0x5E, 0x99, 0x04, 0xB8, 0x6E, 0xCE, + 0xA2, 0x3B, 0x94, 0xFA, 0xDB, 0xCC, 0x8E, 0xDF, 0x5B, 0xC2, 0x7E, 0x6F, + 0x23, 0x76, 0xFB, 0xF1, 0x5B, 0x58, 0xED, 0xF6, 0x23, 0x09, 0xE8, 0x42, + 0x08, 0x39, 0xEF, 0xBC, 0xF7, 0x80, 0x80, 0x60, 0xCC, 0x39, 0x2D, 0x8A, + 0x4C, 0x08, 0x06, 0x00, 0x84, 0xE0, 0xD4, 0x82, 0x15, 0x79, 0x86, 0xB7, + 0xEC, 0x8D, 0xF4, 0xCC, 0x09, 0x23, 0xA0, 0x24, 0x99, 0x6D, 0x43, 0x32, + 0xA2, 0x72, 0xCE, 0xC1, 0xB6, 0xB1, 0xA2, 0x49, 0x69, 0x1A, 0x12, 0xFB, + 0x0C, 0x82, 0x0F, 0x18, 0x63, 0x92, 0x98, 0xB3, 0xEF, 0xFC, 0x77, 0x53, + 0x2F, 0xB6, 0xD9, 0xB8, 0x63, 0x82, 0x31, 0xA6, 0xB0, 0x15, 0xD3, 0x61, + 0x82, 0x57, 0xEB, 0xF5, 0xCB, 0x17, 0xC7, 0x9C, 0x12, 0x1F, 0x51, 0x2E, + 0x19, 0x23, 0xC4, 0x3B, 0x2F, 0x18, 0xA9, 0x72, 0xD9, 0x29, 0x63, 0xAD, + 0x43, 0x18, 0xCF, 0x97, 0x6D, 0xE2, 0xBD, 0x7A, 0x1F, 0x9C, 0xB3, 0xDE, + 0x07, 0x40, 0xC8, 0x5A, 0xC7, 0x29, 0xE5, 0x9C, 0x1A, 0x6D, 0x38, 0x67, + 0x49, 0x32, 0x92, 0x65, 0x82, 0x31, 0xE2, 0xBC, 0x67, 0x8C, 0x39, 0xEF, + 0xB4, 0x32, 0x75, 0xD3, 0xC6, 0x18, 0x95, 0xD2, 0x18, 0x21, 0xC6, 0x68, + 0x59, 0xE4, 0xFB, 0xFB, 0x53, 0x2E, 0x78, 0x8A, 0x92, 0xF4, 0xCE, 0x0B, + 0x4E, 0xAD, 0x0D, 0x5D, 0xD7, 0x8E, 0x86, 0x65, 0x59, 0xE4, 0x79, 0x2E, + 0xF3, 0x3C, 0x4B, 0x8E, 0xA9, 0x21, 0x84, 0xE0, 0x1D, 0xA6, 0x84, 0x72, + 0x86, 0x60, 0x63, 0x26, 0x8E, 0x31, 0x86, 0x18, 0xAC, 0x73, 0xC9, 0x29, + 0xC1, 0x1A, 0xAB, 0x94, 0x5A, 0xAF, 0xBB, 0xCB, 0xEB, 0xC5, 0xBA, 0xEE, + 0xEB, 0xB6, 0xCF, 0xA4, 0x18, 0x0C, 0x0A, 0x04, 0x88, 0x31, 0xB6, 0xBB, + 0x33, 0x16, 0x82, 0x51, 0x42, 0x19, 0x63, 0x80, 0x40, 0x29, 0x93, 0x65, + 0x32, 0x02, 0x7A, 0xFE, 0xEA, 0x64, 0x34, 0x1C, 0x68, 0xEB, 0x7D, 0x08, + 0xEF, 0x3F, 0x7A, 0x60, 0x9D, 0xFF, 0xE2, 0xAB, 0xE7, 0xC3, 0xE1, 0x70, + 0x34, 0x1E, 0xCD, 0x97, 0xEB, 0x61, 0x55, 0x76, 0x7D, 0x0F, 0x10, 0x87, + 0x55, 0xD9, 0xB6, 0xDD, 0x70, 0x34, 0x8A, 0x80, 0xBA, 0xA6, 0x19, 0x55, + 0x39, 0x46, 0x71, 0x67, 0x32, 0x02, 0x84, 0x92, 0xDF, 0x7F, 0x04, 0xA0, + 0x84, 0x48, 0xC1, 0x9D, 0xF7, 0x89, 0x17, 0xE1, 0x7D, 0x0C, 0x00, 0x89, + 0xA5, 0xBC, 0x5C, 0xD7, 0x6D, 0xA7, 0x7F, 0xF8, 0xF1, 0x93, 0xAA, 0x2A, + 0xBF, 0xFA, 0xFA, 0x39, 0x63, 0xEC, 0x60, 0x6F, 0xBA, 0xAE, 0xDB, 0x10, + 0x42, 0x82, 0xAB, 0x22, 0xA0, 0xAE, 0xED, 0xB2, 0x4C, 0x24, 0x93, 0xBF, + 0x2C, 0x93, 0x5A, 0x6B, 0xCE, 0x36, 0x38, 0x74, 0x26, 0x45, 0xA2, 0x4B, + 0x02, 0x40, 0xDA, 0x45, 0x3B, 0xE7, 0x9D, 0x0F, 0xC6, 0xB8, 0x9D, 0x9D, + 0x51, 0xF0, 0xC1, 0x39, 0xCB, 0x18, 0xB1, 0xC6, 0x11, 0x82, 0xF3, 0x5C, + 0x5A, 0xEB, 0x62, 0x04, 0xCE, 0x19, 0x46, 0xA0, 0x8D, 0x1D, 0x0F, 0x07, + 0x08, 0xA3, 0xA6, 0xED, 0x62, 0x88, 0x8C, 0x51, 0x8C, 0xF1, 0xE1, 0xE1, + 0x5E, 0x08, 0xE1, 0xE2, 0xF2, 0xE6, 0xE1, 0xFD, 0xFD, 0x41, 0x55, 0x3A, + 0xEF, 0x37, 0x47, 0xDA, 0x76, 0x94, 0x44, 0x1B, 0x5F, 0xF7, 0xDB, 0x8F, + 0xA0, 0x88, 0xD2, 0x25, 0x04, 0x9F, 0x7D, 0xF1, 0x74, 0xB9, 0x6E, 0xAD, + 0x0B, 0x79, 0x26, 0x9D, 0x73, 0xDE, 0x47, 0xC6, 0x29, 0xA3, 0x24, 0xB8, + 0x80, 0x31, 0x12, 0x82, 0x1B, 0xE3, 0x92, 0x9E, 0x34, 0xB5, 0x63, 0x94, + 0x12, 0xEF, 0x5D, 0x3A, 0x30, 0xA5, 0xE4, 0xD6, 0x6E, 0x36, 0x95, 0x21, + 0x06, 0x63, 0x0D, 0x46, 0xB8, 0xD7, 0xA6, 0xCC, 0xB3, 0xC9, 0xA0, 0xCA, + 0x32, 0x91, 0x16, 0xF7, 0x69, 0x32, 0xE5, 0x9C, 0x12, 0x82, 0x93, 0x85, + 0x19, 0x42, 0x80, 0x20, 0x26, 0x8C, 0x3C, 0x02, 0x38, 0x1F, 0x9A, 0x3E, + 0xE5, 0x84, 0x06, 0xA5, 0x8D, 0x73, 0x0E, 0x10, 0xF2, 0x3E, 0xF4, 0xBD, + 0xDA, 0xDB, 0x1B, 0x33, 0x4A, 0x43, 0x88, 0x97, 0xB3, 0x65, 0xDD, 0x76, + 0x4D, 0xDB, 0x87, 0x18, 0x39, 0xA5, 0x09, 0x32, 0x0E, 0x31, 0x52, 0x42, + 0x8C, 0x73, 0x18, 0xE1, 0x5C, 0x0A, 0xE7, 0xBC, 0x71, 0xB6, 0x53, 0x2A, + 0xD9, 0x10, 0x05, 0x00, 0x65, 0xEC, 0x7A, 0xDD, 0x39, 0x1F, 0x9C, 0xF7, + 0xDE, 0x7B, 0x6D, 0x2C, 0xC6, 0xC8, 0x5A, 0xDF, 0x75, 0x0A, 0xA1, 0x04, + 0xBF, 0xB8, 0x18, 0x21, 0x42, 0xC4, 0x18, 0x73, 0x46, 0xB7, 0x9B, 0x7D, + 0x93, 0x1C, 0xB4, 0xDA, 0xAE, 0x37, 0xC6, 0x1A, 0x6B, 0x23, 0x20, 0x67, + 0xFD, 0xFE, 0xEE, 0xE4, 0x3F, 0xFE, 0xE9, 0x0F, 0x7F, 0xF0, 0xFD, 0x47, + 0xCB, 0x55, 0x5D, 0xB7, 0xFD, 0x68, 0x50, 0xEC, 0xEE, 0x8C, 0x22, 0x80, + 0x36, 0xEE, 0xF4, 0xFC, 0xFA, 0xE9, 0xF3, 0xD7, 0x94, 0xB2, 0xD9, 0xF5, + 0x8D, 0xD5, 0x56, 0x6B, 0x73, 0x71, 0x75, 0x73, 0x7D, 0xB3, 0x68, 0x3B, + 0x65, 0xAD, 0xED, 0x7B, 0x25, 0x84, 0x68, 0x9A, 0x16, 0x13, 0x9A, 0xC0, + 0xD0, 0x9F, 0xFF, 0xF2, 0x8B, 0xD7, 0x6F, 0xCE, 0x18, 0x63, 0x7B, 0xFB, + 0xBB, 0xE4, 0x7F, 0xFE, 0x9F, 0xFE, 0xC7, 0x22, 0x97, 0x79, 0xC6, 0xA7, + 0xE3, 0x61, 0x91, 0x67, 0x29, 0x2A, 0x5C, 0x70, 0x9A, 0x49, 0x91, 0x00, + 0x54, 0xB4, 0x49, 0x94, 0xD9, 0xB8, 0x8C, 0xC5, 0x6F, 0x1B, 0x81, 0xDD, + 0x16, 0xA6, 0xDF, 0x85, 0xCF, 0x36, 0x67, 0xF2, 0xAD, 0x81, 0xF4, 0x9D, + 0xAF, 0xD9, 0x36, 0x64, 0x90, 0x5A, 0xCD, 0x04, 0xDF, 0x32, 0xC6, 0xA4, + 0x94, 0x52, 0xCA, 0x54, 0x2E, 0x13, 0x30, 0x29, 0x18, 0x13, 0x82, 0xA3, + 0x6D, 0x01, 0x85, 0x0D, 0x5D, 0x3E, 0x39, 0x14, 0x92, 0xB8, 0xF1, 0x65, + 0xF4, 0xDE, 0xFB, 0x5E, 0x19, 0x6B, 0x5C, 0x88, 0x51, 0x30, 0x9E, 0x38, + 0x35, 0x90, 0x38, 0x68, 0xDB, 0x5C, 0xBC, 0xDB, 0xA7, 0x4D, 0x35, 0x34, + 0x02, 0xA4, 0x6C, 0x0E, 0x1F, 0x7C, 0x82, 0x57, 0x30, 0xA6, 0xEF, 0x86, + 0x68, 0x00, 0x8C, 0x51, 0xD7, 0x34, 0x6F, 0x4F, 0x2F, 0x28, 0x46, 0x08, + 0x40, 0x48, 0x1E, 0x42, 0x48, 0x53, 0x0C, 0x20, 0x64, 0x9C, 0x27, 0x94, + 0x2A, 0x6D, 0x97, 0x75, 0x97, 0x16, 0xC0, 0xD6, 0x59, 0xE7, 0x82, 0xB6, + 0x4E, 0x1B, 0xC7, 0x19, 0x49, 0x13, 0xE2, 0xEE, 0xEE, 0x18, 0x63, 0x94, + 0x82, 0xE6, 0xC7, 0xA3, 0x01, 0xC1, 0x49, 0x36, 0x1F, 0x8C, 0x31, 0x89, + 0x4A, 0xAA, 0x7A, 0x2D, 0x25, 0x2F, 0x8B, 0x9C, 0x10, 0x24, 0x25, 0x1F, + 0x0E, 0x4B, 0xC6, 0x39, 0x02, 0x44, 0x39, 0x4B, 0x31, 0x54, 0x31, 0xC2, + 0xCE, 0xCE, 0x78, 0x34, 0x2C, 0x39, 0xA3, 0x42, 0x0A, 0xBC, 0xB5, 0x4B, + 0x02, 0x00, 0xBC, 0x31, 0x51, 0x7A, 0x97, 0x08, 0xE5, 0xBD, 0xB7, 0xD6, + 0xA9, 0xDE, 0x74, 0xAD, 0xB2, 0xC6, 0x2D, 0x96, 0xEB, 0xAB, 0xD9, 0xFA, + 0xE4, 0xFC, 0xE6, 0xEA, 0x66, 0xB5, 0x58, 0xB7, 0x89, 0xD5, 0x3C, 0x1D, + 0x0F, 0xD3, 0x26, 0x41, 0x4A, 0x4E, 0x09, 0x2E, 0xCB, 0xBC, 0xED, 0xF4, + 0x6C, 0xB6, 0x48, 0x7A, 0xAD, 0xAA, 0xCC, 0xAD, 0xF5, 0x79, 0x9E, 0x41, + 0x84, 0x93, 0xD3, 0x0B, 0x21, 0xF8, 0xC1, 0xFE, 0x54, 0x1B, 0x7B, 0x7D, + 0xB3, 0xE0, 0x94, 0x1A, 0x6B, 0x19, 0xE3, 0x45, 0x9E, 0xAD, 0xD7, 0x4D, + 0xD7, 0xF6, 0x9D, 0x52, 0xAB, 0x75, 0xB3, 0x58, 0xAC, 0x46, 0xC3, 0xF2, + 0xE8, 0x70, 0xD7, 0x5B, 0x77, 0x7A, 0x7A, 0xCE, 0x39, 0x0F, 0x3E, 0x18, + 0xA3, 0x19, 0xC6, 0x45, 0x0A, 0xB3, 0xB0, 0x5E, 0x69, 0x03, 0x11, 0x9C, + 0x0F, 0x75, 0xDD, 0x52, 0xC6, 0x9C, 0xF3, 0x52, 0x08, 0xA5, 0xF4, 0xBA, + 0xEE, 0x3E, 0x78, 0xEF, 0x9E, 0xB6, 0x7E, 0x33, 0xBA, 0x25, 0xB3, 0x1A, + 0xE7, 0x9D, 0xF5, 0x7D, 0x0A, 0xC1, 0xB3, 0x0E, 0x21, 0xE4, 0x9D, 0x4B, + 0x4D, 0x4D, 0x9A, 0xA0, 0xD3, 0x8C, 0xD9, 0x2B, 0xBD, 0x39, 0x87, 0x00, + 0x50, 0x32, 0x86, 0xA3, 0xB4, 0xEB, 0x55, 0xC2, 0x98, 0x92, 0xB9, 0x18, + 0xA1, 0x44, 0x1B, 0x9B, 0x8C, 0x15, 0x01, 0x01, 0xA5, 0x24, 0xAD, 0xF9, + 0xE7, 0x8B, 0x55, 0xBA, 0x08, 0x93, 0xE6, 0x05, 0x01, 0x20, 0x04, 0xD6, + 0xD8, 0x55, 0xDD, 0xAE, 0xD6, 0xCD, 0x87, 0x4F, 0x1E, 0x05, 0x1F, 0x52, + 0x53, 0x0B, 0x61, 0xD3, 0x95, 0x45, 0x00, 0x78, 0x67, 0x76, 0xFA, 0x6E, + 0x73, 0x65, 0xB4, 0xF9, 0xD5, 0x6F, 0x9E, 0xAE, 0xD6, 0xED, 0x66, 0xC3, + 0xA3, 0x0D, 0xC6, 0x58, 0x48, 0x8E, 0xB6, 0xE4, 0x1E, 0x00, 0x48, 0xED, + 0x76, 0xB2, 0xB8, 0x23, 0x84, 0x50, 0x82, 0x94, 0xB2, 0x82, 0xD3, 0x08, + 0x68, 0xB5, 0x6E, 0x38, 0x67, 0x36, 0xED, 0x2B, 0xD0, 0xA6, 0xA7, 0x8B, + 0x01, 0xF6, 0x77, 0xC7, 0x45, 0x2E, 0x12, 0x5A, 0x6F, 0xAC, 0xF5, 0x3E, + 0xF9, 0x0E, 0xD2, 0x34, 0x76, 0x84, 0x08, 0x49, 0xDE, 0x48, 0x08, 0xB2, + 0xD6, 0x59, 0xEB, 0x00, 0x91, 0x44, 0xC3, 0x0C, 0x3E, 0x34, 0x4D, 0x6F, + 0xBC, 0xB7, 0xD6, 0x1A, 0xE3, 0x76, 0x26, 0x03, 0xE7, 0xFC, 0xF1, 0xE9, + 0x55, 0xDB, 0x29, 0xA5, 0x8D, 0xD1, 0x36, 0x39, 0xC4, 0x24, 0x20, 0xD8, + 0xFB, 0x40, 0x08, 0x42, 0x18, 0x73, 0x4A, 0x13, 0x69, 0x56, 0x1B, 0xEB, + 0x43, 0x84, 0x08, 0x18, 0xE3, 0x2C, 0x93, 0x55, 0x55, 0x28, 0xE3, 0x86, + 0xC3, 0xAA, 0x1A, 0x94, 0x52, 0xCA, 0xE9, 0x74, 0x1C, 0x43, 0x5C, 0xD5, + 0x5D, 0xDB, 0xF5, 0xD6, 0x79, 0x63, 0x4C, 0x88, 0x51, 0x69, 0xB3, 0x5E, + 0xB7, 0xD6, 0xFA, 0xA4, 0x45, 0x31, 0xC6, 0xAD, 0xD6, 0x8D, 0xB6, 0x2E, + 0xC6, 0x38, 0x1C, 0x94, 0x8C, 0xB2, 0xCB, 0xEB, 0x1B, 0x84, 0x50, 0x99, + 0xCB, 0x8F, 0x3F, 0xFC, 0xE0, 0x9F, 0xFE, 0xF1, 0x1F, 0xEE, 0x4E, 0xC7, + 0x8B, 0xE5, 0xFA, 0xF2, 0x7A, 0x81, 0x00, 0x31, 0x46, 0x7D, 0xF0, 0xC6, + 0xFA, 0xE7, 0x2F, 0x8F, 0x4F, 0xCF, 0x2E, 0x8F, 0xEE, 0x1D, 0x9C, 0x9C, + 0x9C, 0xAD, 0x57, 0x29, 0x8D, 0x45, 0x71, 0x29, 0xB5, 0x36, 0x5D, 0xD7, + 0x5D, 0x5F, 0xCF, 0x9B, 0xBA, 0x29, 0xCB, 0xFC, 0xC9, 0xE3, 0x47, 0x5A, + 0x99, 0xD3, 0xB7, 0x17, 0xBD, 0xD2, 0x5F, 0x3F, 0x7F, 0x73, 0xB0, 0xBF, + 0x5B, 0xE4, 0xB9, 0x52, 0x8A, 0xFC, 0xCB, 0x7F, 0xF9, 0xBF, 0x48, 0xC1, + 0xB3, 0xCD, 0x38, 0x13, 0x39, 0x67, 0x89, 0x17, 0xCA, 0x18, 0x93, 0x52, + 0xA4, 0x43, 0x9E, 0xB1, 0x84, 0x53, 0x93, 0xDB, 0x1A, 0x14, 0xEE, 0x84, + 0xAD, 0xDD, 0x2D, 0x55, 0x77, 0x4B, 0xD8, 0xEF, 0x7E, 0xE4, 0x77, 0xBB, + 0x36, 0xD8, 0x72, 0x6B, 0x29, 0xA5, 0x9C, 0xF3, 0x04, 0x6F, 0xA5, 0xAF, + 0xA1, 0x78, 0xB3, 0x1B, 0x45, 0x5B, 0x6F, 0x37, 0xEF, 0x83, 0xB5, 0x49, + 0x5E, 0x07, 0x00, 0xA0, 0xB4, 0x4D, 0x11, 0xAD, 0x21, 0x44, 0x63, 0x9C, + 0x31, 0x1B, 0x41, 0x96, 0xE0, 0x14, 0x61, 0x94, 0x96, 0xD1, 0xCE, 0xBB, + 0xF4, 0x96, 0x10, 0x4A, 0x10, 0x46, 0x31, 0x26, 0x21, 0x70, 0x08, 0x21, + 0x89, 0x3A, 0x63, 0x5A, 0x12, 0x13, 0x42, 0x51, 0x8A, 0x1C, 0xB8, 0xF3, + 0xD3, 0x61, 0x8C, 0x97, 0xF3, 0xF9, 0xE5, 0xF9, 0x85, 0xD2, 0x4E, 0x30, + 0x82, 0x10, 0xF4, 0xCA, 0x70, 0x86, 0x8D, 0x35, 0xE9, 0x8A, 0x89, 0x00, + 0x6D, 0x67, 0xEA, 0x56, 0xA7, 0x96, 0x36, 0xB9, 0x1F, 0xA6, 0x5B, 0xF4, + 0x83, 0xF7, 0x0E, 0x7D, 0x88, 0x9C, 0xB1, 0x7B, 0xFB, 0xD3, 0x64, 0x39, + 0x30, 0x1E, 0x95, 0x00, 0xC9, 0x71, 0xC9, 0x1B, 0x6D, 0x10, 0xA0, 0x75, + 0xDD, 0x22, 0x04, 0x9C, 0x31, 0x84, 0x91, 0x31, 0xB6, 0xA9, 0xDB, 0xD1, + 0xA0, 0x9C, 0x4C, 0x46, 0x69, 0x9F, 0x4D, 0x29, 0xC5, 0x04, 0x33, 0x46, + 0xB3, 0x5C, 0x4A, 0xC1, 0x29, 0xA3, 0x32, 0x93, 0x9B, 0x49, 0xF9, 0x4E, + 0xB7, 0x7B, 0x7B, 0xBA, 0xC4, 0x18, 0xBD, 0x0F, 0x5A, 0xE9, 0x5E, 0x69, + 0xD5, 0xAB, 0xAE, 0xD7, 0x67, 0xE7, 0xB3, 0xA7, 0xAF, 0x2E, 0xDE, 0x9C, + 0xCD, 0x9C, 0x8F, 0x46, 0xDB, 0xB2, 0xCC, 0x53, 0x2C, 0xC0, 0xA0, 0x2A, + 0x62, 0x8C, 0xB3, 0xC5, 0x5A, 0x1B, 0xD7, 0x2B, 0xA3, 0xB5, 0xBD, 0xBA, + 0x59, 0x34, 0x6D, 0x4F, 0x29, 0xA5, 0x8C, 0x28, 0x65, 0x9C, 0xF3, 0x99, + 0x94, 0xD3, 0xE9, 0x48, 0x4A, 0xB1, 0x5C, 0xD5, 0x57, 0xB3, 0x79, 0x55, + 0x95, 0xA7, 0x67, 0x97, 0xC6, 0x58, 0xEF, 0xC3, 0x6A, 0xB5, 0xDE, 0xDD, + 0xDD, 0xC9, 0x38, 0xE3, 0x52, 0x2C, 0x96, 0x2B, 0x8C, 0x30, 0x02, 0xD8, + 0x99, 0x0C, 0x76, 0x86, 0x05, 0x00, 0xD4, 0x75, 0xD3, 0x77, 0xFD, 0xCE, + 0xCE, 0x88, 0x60, 0x34, 0xA8, 0xF2, 0x24, 0x9E, 0xEF, 0x7B, 0xB5, 0x5A, + 0x77, 0x84, 0x10, 0xEB, 0xFC, 0x7C, 0xB1, 0x96, 0x82, 0x67, 0x92, 0x87, + 0x10, 0x32, 0x29, 0xC6, 0xC3, 0x12, 0x21, 0xB4, 0x33, 0x1D, 0x7F, 0xF2, + 0xD1, 0x93, 0xF9, 0x7C, 0x39, 0xBB, 0x59, 0xC4, 0x18, 0x6F, 0xF5, 0xBD, + 0x8C, 0x31, 0xC6, 0x58, 0x72, 0x03, 0xE8, 0x7A, 0x05, 0x80, 0xD2, 0x29, + 0x22, 0x05, 0xD7, 0xC6, 0xC4, 0x18, 0x31, 0x82, 0x94, 0x29, 0x87, 0x10, + 0x0A, 0x21, 0xEE, 0xED, 0x4E, 0xB3, 0x4C, 0xB4, 0x5D, 0x4F, 0x09, 0x49, + 0xD3, 0x60, 0x8A, 0x65, 0xD0, 0xDA, 0x50, 0xC6, 0x76, 0x26, 0x23, 0x4C, + 0x52, 0xFC, 0x0D, 0x6F, 0xBB, 0xDE, 0x39, 0x5F, 0x16, 0x39, 0xA5, 0x44, + 0x29, 0xC3, 0x68, 0x22, 0xFD, 0x59, 0x42, 0x48, 0xDB, 0xF4, 0x87, 0xFB, + 0xD3, 0xD1, 0xA0, 0x72, 0xCE, 0x6F, 0x16, 0x0B, 0xE9, 0x1A, 0x06, 0xD8, + 0x4A, 0xC8, 0xDF, 0x2D, 0xA9, 0x28, 0xA5, 0x57, 0xB3, 0xF9, 0x57, 0xDF, + 0xBC, 0x9A, 0x4E, 0x27, 0x4A, 0x69, 0xC1, 0xA9, 0xB1, 0x36, 0x95, 0xBB, + 0x98, 0x3A, 0x1D, 0x63, 0x52, 0xE6, 0x66, 0x4A, 0xAC, 0x48, 0xA7, 0x28, + 0x00, 0x58, 0xE7, 0x85, 0x48, 0xFE, 0x88, 0x94, 0x12, 0xE2, 0x7D, 0x50, + 0xC6, 0x58, 0xE7, 0xAD, 0xF5, 0x00, 0xF1, 0x8F, 0x3E, 0x79, 0x72, 0x74, + 0x30, 0xC9, 0x33, 0xD1, 0x2B, 0xE3, 0x7C, 0xD0, 0xD6, 0x16, 0x99, 0xC4, + 0x04, 0x2B, 0x65, 0xB7, 0xF6, 0x0F, 0x1B, 0x4A, 0xA6, 0xE0, 0x4C, 0x6B, + 0x63, 0x5D, 0x00, 0x00, 0x29, 0x12, 0xC6, 0x6F, 0x5C, 0x08, 0x21, 0x44, + 0xA3, 0x6D, 0x6A, 0x00, 0x53, 0xAD, 0xCC, 0xA4, 0xC4, 0x08, 0x19, 0x63, + 0x13, 0xD6, 0x42, 0x28, 0x49, 0x86, 0x57, 0x31, 0x46, 0x8A, 0xB1, 0x60, + 0x8C, 0x12, 0xE4, 0x7C, 0x6C, 0x3A, 0xB5, 0x58, 0x35, 0x94, 0x52, 0x6D, + 0xDC, 0xD5, 0xCD, 0x32, 0xCB, 0xE4, 0xCE, 0x64, 0x24, 0x04, 0xCF, 0xA5, + 0xD8, 0xDF, 0x9D, 0x8C, 0x47, 0x83, 0xC9, 0x78, 0xF8, 0xF0, 0xFE, 0x81, + 0x73, 0xFE, 0xFC, 0xE2, 0x3A, 0x01, 0x64, 0x6D, 0xAF, 0x8C, 0x35, 0xC6, + 0xB9, 0xA6, 0x6D, 0xBD, 0x8F, 0x42, 0xF0, 0xD5, 0xBA, 0x69, 0xBB, 0xBE, + 0x57, 0x5A, 0x69, 0x33, 0x1A, 0x56, 0x21, 0xC2, 0x74, 0x67, 0xFC, 0xA7, + 0xFF, 0xE4, 0x27, 0x3F, 0xF8, 0xDE, 0x7B, 0xC6, 0xD8, 0x97, 0x6F, 0xCE, + 0x66, 0x37, 0x4B, 0xEB, 0x9C, 0x4E, 0xC3, 0x1F, 0x46, 0x6F, 0xCE, 0x2E, + 0x4E, 0x4E, 0xCF, 0x87, 0x55, 0xB9, 0x58, 0xAD, 0xCF, 0x4E, 0x2E, 0x28, + 0xC6, 0x32, 0x93, 0x79, 0x9E, 0x79, 0xEF, 0xAD, 0x31, 0x08, 0x41, 0x96, + 0x49, 0x4A, 0xE9, 0x62, 0xB1, 0x5E, 0xD7, 0x4D, 0xD3, 0xB5, 0x4D, 0xDD, + 0x3D, 0x7B, 0xF1, 0xE6, 0x47, 0x3F, 0xFC, 0x28, 0x46, 0xF8, 0xED, 0x57, + 0xCF, 0xF6, 0x76, 0xA7, 0xF4, 0xF6, 0x78, 0x07, 0x78, 0x87, 0x1A, 0xBD, + 0xAB, 0x59, 0x9B, 0xFC, 0xE4, 0x77, 0x5F, 0x93, 0xDA, 0xB1, 0xBB, 0x1B, + 0x80, 0xFF, 0x1F, 0x8F, 0xB8, 0x15, 0xAF, 0xDF, 0x06, 0x7E, 0x90, 0x3B, + 0x01, 0x97, 0x31, 0x04, 0x08, 0x31, 0x99, 0x78, 0x6F, 0x7C, 0xD1, 0xB6, + 0x4B, 0x4F, 0x6D, 0x6C, 0x42, 0xD0, 0x31, 0xC6, 0x04, 0xA3, 0xC4, 0x15, + 0x82, 0x8D, 0x94, 0x04, 0x51, 0x82, 0x04, 0xA7, 0xA9, 0xCA, 0xF8, 0xE0, + 0x63, 0x8C, 0x18, 0x61, 0xC6, 0x08, 0xDD, 0xFC, 0x3A, 0xE9, 0x78, 0xDD, + 0xFC, 0x16, 0x21, 0x84, 0x18, 0x13, 0xBF, 0x97, 0xA0, 0xBB, 0xC8, 0xDD, + 0x9D, 0x07, 0x25, 0x38, 0x25, 0x1E, 0x50, 0x82, 0x62, 0x08, 0x94, 0x12, + 0x1F, 0x92, 0x96, 0x4D, 0x95, 0x79, 0x16, 0x22, 0x0C, 0xCA, 0xEC, 0x7A, + 0xD1, 0x52, 0x00, 0x40, 0x98, 0x32, 0xAA, 0x8D, 0xE3, 0x3C, 0x1C, 0x1D, + 0xED, 0x8D, 0x06, 0xE5, 0xBA, 0xE9, 0x62, 0x0C, 0x67, 0xE7, 0x97, 0x69, + 0xB3, 0x13, 0x23, 0x2C, 0x97, 0x75, 0x8C, 0x71, 0x32, 0x19, 0x12, 0x82, + 0xDB, 0xB6, 0x9F, 0xDD, 0x2C, 0x29, 0xC6, 0x93, 0xC9, 0x90, 0x52, 0x62, + 0x8C, 0x09, 0xCE, 0x8E, 0x46, 0x43, 0xC2, 0x68, 0xAA, 0xBC, 0xB7, 0xB3, + 0xFC, 0xDD, 0x33, 0x63, 0xAB, 0xBA, 0x07, 0xD8, 0x10, 0x2C, 0xF1, 0x6D, + 0x23, 0xE6, 0x9D, 0x5F, 0xAF, 0x1B, 0xA5, 0x35, 0x63, 0xAC, 0xEF, 0xCD, + 0xF3, 0xE3, 0xCB, 0x9B, 0x45, 0x53, 0x14, 0x05, 0xA5, 0xB6, 0x69, 0xDA, + 0xAA, 0x2A, 0x19, 0x67, 0x21, 0x84, 0x32, 0x97, 0x4A, 0x5B, 0xE3, 0x5C, + 0xD3, 0xE9, 0xA6, 0x5D, 0x15, 0x39, 0x0F, 0x01, 0x62, 0x84, 0x3C, 0xCF, + 0xD2, 0x91, 0x10, 0x7C, 0x02, 0x47, 0xBC, 0x56, 0xBA, 0xCC, 0x33, 0x4E, + 0xE9, 0xD7, 0xCF, 0x5E, 0x11, 0x4A, 0x1E, 0x1C, 0x1D, 0xBE, 0x7C, 0xF9, + 0x0A, 0x63, 0xE2, 0x9C, 0xBB, 0xBA, 0x9E, 0xDD, 0xDB, 0x9F, 0x62, 0x82, + 0xF7, 0x76, 0xA7, 0x5D, 0xD7, 0x0B, 0x46, 0x73, 0x29, 0xB4, 0xB6, 0xE3, + 0x41, 0x41, 0x50, 0x81, 0x20, 0x62, 0x80, 0xFD, 0xBD, 0x69, 0xBA, 0xAB, + 0x63, 0x08, 0xD6, 0x98, 0xD5, 0x6A, 0x7D, 0xFA, 0xF6, 0x12, 0x51, 0x36, + 0x1E, 0x0E, 0x5E, 0x1E, 0x9F, 0x3D, 0xBC, 0x7F, 0x80, 0x10, 0x6A, 0xBA, + 0x5E, 0x08, 0xC6, 0x28, 0xC9, 0x38, 0xF3, 0xDE, 0x7F, 0xFC, 0x83, 0xC7, + 0x2F, 0x5E, 0x1E, 0x27, 0xCD, 0x26, 0xC4, 0x18, 0x62, 0x5C, 0xAD, 0x6B, + 0x40, 0xC0, 0x19, 0xF5, 0xDE, 0x53, 0x9A, 0xC8, 0x8C, 0x91, 0x20, 0x14, + 0x63, 0x14, 0x9C, 0xC6, 0x88, 0x42, 0xF0, 0xCE, 0x79, 0x21, 0x44, 0xDF, + 0x77, 0x45, 0x9E, 0x25, 0x28, 0x4D, 0x70, 0xDE, 0x75, 0x7D, 0xB2, 0xC7, + 0x48, 0x40, 0x08, 0xA5, 0x74, 0xBD, 0x6E, 0x9C, 0x73, 0x83, 0xAA, 0x88, + 0x31, 0x10, 0x4C, 0xF3, 0x4C, 0x5E, 0xCD, 0xE6, 0x55, 0x99, 0xA7, 0x5C, + 0x2B, 0x8C, 0x90, 0xF7, 0x9E, 0x12, 0x42, 0x31, 0x68, 0xE7, 0x5E, 0x9F, + 0xBC, 0xBD, 0x7F, 0x6F, 0x7F, 0x7B, 0x5A, 0xDC, 0x41, 0xF9, 0x23, 0x78, + 0xE4, 0x6F, 0x01, 0xB3, 0x10, 0x20, 0xC9, 0x09, 0x42, 0x8C, 0x37, 0xF3, + 0x05, 0xDD, 0xD0, 0x2C, 0xF0, 0xED, 0xF7, 0x44, 0x04, 0x21, 0x04, 0xAD, + 0x15, 0xC6, 0xC8, 0x87, 0x80, 0x3C, 0x10, 0x82, 0xD3, 0x41, 0x4C, 0x08, + 0xB2, 0x2E, 0x79, 0x6D, 0x7A, 0x82, 0xD0, 0xA0, 0xCA, 0x05, 0xA7, 0xEB, + 0xB6, 0x77, 0xD6, 0xA7, 0x79, 0x22, 0x55, 0xD8, 0x64, 0x27, 0x29, 0x18, + 0x8B, 0x10, 0x9D, 0x75, 0x84, 0xA0, 0xE0, 0x23, 0x21, 0x29, 0x6B, 0xD1, + 0x23, 0x40, 0x18, 0x61, 0x29, 0xA5, 0x69, 0x3A, 0x82, 0x51, 0x4A, 0x74, + 0xEE, 0x95, 0xB1, 0xCE, 0xDD, 0x7A, 0xCC, 0xD4, 0x4D, 0x87, 0x10, 0x4A, + 0xC6, 0x67, 0x21, 0x04, 0xC6, 0xD8, 0xED, 0xF5, 0xC3, 0x28, 0xED, 0xB5, + 0x8D, 0x31, 0x4A, 0xC1, 0x03, 0x80, 0x75, 0x5E, 0x29, 0xD3, 0x2B, 0x15, + 0x63, 0xF8, 0xE4, 0xE3, 0x27, 0xC9, 0x29, 0x88, 0x73, 0x46, 0x09, 0x3E, + 0xBD, 0x98, 0x1D, 0xEC, 0xEF, 0x1C, 0xEE, 0x4D, 0x56, 0xEB, 0x66, 0xB9, + 0xEE, 0xDA, 0xAE, 0xDF, 0x99, 0x8E, 0x7E, 0xF8, 0xC9, 0x87, 0xBF, 0xFE, + 0xFC, 0x6B, 0x1F, 0x42, 0x0C, 0x11, 0x52, 0xD7, 0xEC, 0x63, 0xD3, 0xF6, + 0x79, 0x9E, 0x11, 0x4A, 0x48, 0xA0, 0x46, 0x9B, 0xE5, 0xBA, 0xAE, 0xCA, + 0x12, 0x01, 0xFC, 0xF8, 0x93, 0xEF, 0x4F, 0x27, 0xA3, 0xE5, 0xAA, 0x79, + 0xF6, 0xE2, 0xCD, 0x6A, 0xB9, 0x92, 0x52, 0x60, 0x8C, 0xBA, 0x4E, 0xF9, + 0xB0, 0x4B, 0x19, 0xC5, 0x80, 0xFE, 0xE8, 0xC7, 0x1F, 0x33, 0x4A, 0xFF, + 0xF5, 0xFF, 0xF5, 0xB7, 0x9C, 0x11, 0x84, 0x71, 0x51, 0x64, 0xBD, 0xD2, + 0x04, 0xA3, 0xE1, 0xB0, 0x04, 0x40, 0xCE, 0x5A, 0x4A, 0x30, 0x00, 0x3A, + 0x39, 0x3E, 0x15, 0x52, 0x00, 0xE0, 0x10, 0xA2, 0x52, 0xEA, 0xF1, 0x07, + 0x0F, 0x08, 0xC1, 0xE7, 0x97, 0x33, 0xF2, 0x57, 0x7F, 0xF5, 0x57, 0x70, + 0xA7, 0x63, 0x4A, 0xBB, 0xC5, 0xF4, 0xD7, 0xDB, 0xC3, 0x3F, 0x06, 0x17, + 0x82, 0x8F, 0xA9, 0x8B, 0x89, 0xB7, 0xE1, 0x42, 0xDF, 0xEA, 0xB9, 0xFE, + 0x83, 0xAB, 0x58, 0x8C, 0x18, 0xFD, 0x03, 0xD5, 0x30, 0xC4, 0x04, 0xA5, + 0xE2, 0x4D, 0xCE, 0x4A, 0xB2, 0xBC, 0x8D, 0xCE, 0xBB, 0x10, 0xC2, 0x26, + 0x2E, 0x6C, 0x13, 0x92, 0x1A, 0x9D, 0x0B, 0x89, 0xF8, 0xC7, 0x28, 0xCE, + 0x24, 0xCF, 0xA4, 0xD8, 0x8A, 0x4A, 0x10, 0x25, 0x84, 0xB1, 0xB4, 0x06, + 0xDA, 0x18, 0xCC, 0x26, 0x11, 0x4C, 0x7A, 0x47, 0x6F, 0x65, 0x06, 0x98, + 0xFC, 0x8E, 0xEE, 0x3D, 0x46, 0x88, 0x01, 0x63, 0x32, 0xBF, 0xB9, 0x39, + 0x79, 0x73, 0xEA, 0x3C, 0x48, 0x41, 0x24, 0xA7, 0x94, 0x60, 0x41, 0xB1, + 0xB5, 0xAE, 0x28, 0x8A, 0xBE, 0x57, 0x8C, 0x92, 0xB2, 0x2A, 0xB9, 0xE0, + 0xC6, 0x7A, 0x21, 0xC5, 0xDE, 0xEE, 0x78, 0x67, 0x67, 0x94, 0x65, 0x22, + 0x85, 0x03, 0xE6, 0x99, 0x40, 0x18, 0x55, 0x55, 0xB5, 0x33, 0x19, 0x0D, + 0x07, 0x65, 0x99, 0x67, 0xE3, 0xD1, 0xA0, 0x28, 0x24, 0x63, 0x0C, 0x42, + 0x58, 0x37, 0x2D, 0xC6, 0xA4, 0x2C, 0x0B, 0x42, 0x70, 0x9E, 0x09, 0xC1, + 0xE9, 0x60, 0x50, 0x1D, 0xDC, 0xDB, 0xDB, 0x04, 0x97, 0xDE, 0x69, 0x60, + 0xF1, 0xD6, 0x86, 0xFB, 0xB6, 0x0B, 0xBB, 0xFB, 0x1A, 0x86, 0x10, 0xB4, + 0xD6, 0x8B, 0xC5, 0x7A, 0xB9, 0x5C, 0xAF, 0x56, 0x89, 0x60, 0x6D, 0x5F, + 0x9D, 0xCE, 0xCE, 0xAF, 0x16, 0x8C, 0x31, 0x63, 0x2D, 0x63, 0x54, 0x4A, + 0x79, 0x4B, 0x29, 0xF0, 0xDE, 0x6B, 0xEB, 0xEA, 0x56, 0x3B, 0x1F, 0x39, + 0x67, 0x42, 0xB0, 0x32, 0xCF, 0xA5, 0x94, 0x00, 0xF1, 0xF2, 0x6A, 0x06, + 0x08, 0x7B, 0xE7, 0xBA, 0xB6, 0x9D, 0x8C, 0x06, 0xD3, 0x49, 0x55, 0xB7, + 0x2D, 0xC4, 0x90, 0x92, 0x09, 0xB5, 0x36, 0xEB, 0x75, 0x6D, 0x8D, 0x1E, + 0x54, 0x25, 0x46, 0x88, 0x10, 0x3A, 0x1E, 0x0D, 0xF6, 0xA6, 0xE3, 0xF9, + 0x7C, 0x79, 0xEF, 0x70, 0xF7, 0x7B, 0x8F, 0x1F, 0x32, 0x82, 0x53, 0xA0, + 0x06, 0xC1, 0xA4, 0x2C, 0xF3, 0x3C, 0x13, 0xDE, 0xFB, 0xD9, 0x7C, 0x75, + 0xB3, 0x58, 0x73, 0x29, 0x87, 0x83, 0x6A, 0x36, 0x5F, 0x36, 0xAD, 0xDA, + 0xDF, 0x9B, 0x62, 0x8C, 0xAA, 0xB2, 0x28, 0x8B, 0x1C, 0x21, 0xB4, 0x58, + 0x35, 0x08, 0x64, 0x54, 0x67, 0x17, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xA1, 0x4C, 0x30, 0xEB, 0x1C, 0xC2, 0x88, 0x52, 0x72, 0x7C, + 0xFC, 0x56, 0x48, 0x4E, 0x30, 0xF6, 0xCE, 0x87, 0x10, 0x38, 0xA3, 0x69, + 0x2C, 0x50, 0x4A, 0x13, 0x8C, 0xBC, 0x0F, 0x45, 0x99, 0x59, 0xBB, 0xE9, + 0x35, 0xFA, 0x5E, 0x01, 0x40, 0x8A, 0xE3, 0xA4, 0x94, 0xC5, 0x08, 0xCB, + 0xD5, 0x8A, 0x31, 0xEE, 0x9C, 0x15, 0x82, 0x7B, 0xE7, 0x04, 0xE7, 0x94, + 0xB1, 0x18, 0x21, 0xCB, 0x44, 0xDF, 0xEB, 0xA4, 0x4F, 0xB3, 0xCE, 0xEE, + 0x4C, 0x46, 0xDA, 0xD8, 0x5E, 0x9B, 0x10, 0x62, 0xCA, 0xBE, 0x4B, 0xFD, + 0xBC, 0x75, 0x8E, 0x31, 0x6A, 0xAD, 0x7D, 0xF2, 0xC1, 0x03, 0xD8, 0xCA, + 0x65, 0xE0, 0x96, 0x53, 0x06, 0xB7, 0x07, 0x7A, 0x62, 0xC6, 0x46, 0xC6, + 0xC8, 0xAB, 0xE3, 0xB7, 0xF3, 0xF9, 0x2A, 0x09, 0xDA, 0xD1, 0xD6, 0xCD, + 0x46, 0x30, 0x86, 0x09, 0x76, 0x3E, 0x48, 0x21, 0x92, 0x68, 0x25, 0x49, + 0xC7, 0xE3, 0xD6, 0x74, 0xAF, 0xD7, 0xD6, 0xFB, 0xE8, 0x43, 0x50, 0xDA, + 0x64, 0x52, 0x60, 0x82, 0x39, 0xA3, 0x92, 0xB3, 0x41, 0x95, 0x8D, 0x87, + 0xE5, 0xEE, 0x64, 0xB8, 0xD9, 0x60, 0x62, 0x9C, 0x0C, 0x39, 0x8C, 0xB1, + 0xCE, 0x7B, 0xC9, 0x68, 0x88, 0xD1, 0xF9, 0x90, 0x70, 0xBD, 0xA4, 0x43, + 0x4A, 0xCC, 0xDE, 0x24, 0x19, 0x5E, 0x37, 0xBD, 0x75, 0x5E, 0x6B, 0xA3, + 0x95, 0x4D, 0x78, 0x99, 0x0F, 0x21, 0x79, 0xD2, 0x4A, 0xC9, 0x23, 0x84, + 0x04, 0x96, 0x11, 0x82, 0xA5, 0x14, 0x79, 0x2E, 0x53, 0x0F, 0x81, 0x00, + 0x18, 0xA3, 0xD6, 0xB9, 0x5E, 0x99, 0x10, 0x20, 0x84, 0xB0, 0x58, 0xD5, + 0x84, 0xD2, 0x07, 0x87, 0x7B, 0x31, 0x86, 0xB6, 0xEB, 0x27, 0xE3, 0x11, + 0x25, 0x68, 0xB1, 0x5C, 0x4B, 0x21, 0x62, 0xDC, 0xE4, 0x5A, 0x1D, 0xEC, + 0x4D, 0x09, 0xA3, 0x00, 0xD0, 0x2B, 0xED, 0x7D, 0x28, 0xF3, 0xBC, 0xDF, + 0x44, 0xDB, 0x81, 0xF7, 0xC1, 0xBB, 0x90, 0x54, 0x19, 0xDA, 0x98, 0x3C, + 0xCF, 0x46, 0xA3, 0x4A, 0x08, 0x7E, 0x79, 0x39, 0x5B, 0x2C, 0xD7, 0x89, + 0xE6, 0xE9, 0x7D, 0xE8, 0x55, 0xCF, 0xB9, 0xC8, 0xF3, 0x7C, 0x30, 0x28, + 0xC6, 0x83, 0xC1, 0xEB, 0x93, 0xF3, 0xAE, 0x37, 0x01, 0x62, 0x59, 0xE4, + 0x42, 0x48, 0x63, 0xDD, 0xA0, 0x2A, 0x23, 0xC0, 0xB0, 0x2A, 0xD2, 0xA5, + 0x9E, 0x3C, 0x1D, 0x18, 0xE7, 0x3B, 0xD3, 0xA9, 0x73, 0xBE, 0x6E, 0xDA, + 0x83, 0xBD, 0xC9, 0x93, 0xF7, 0x1F, 0xDC, 0x3F, 0xDC, 0xA3, 0xDF, 0x19, + 0x55, 0x22, 0xA4, 0x6E, 0x28, 0x09, 0x35, 0x52, 0x19, 0xF1, 0xDE, 0x27, + 0x38, 0x7E, 0x63, 0xDA, 0xC3, 0xB9, 0xA0, 0x5C, 0xFC, 0x87, 0xD6, 0xAF, + 0xEF, 0x3C, 0x7E, 0x6F, 0x05, 0xDC, 0xF4, 0xEB, 0x49, 0x3D, 0xB1, 0xA5, + 0xB0, 0xA5, 0x46, 0x11, 0x00, 0x30, 0xC2, 0x79, 0x96, 0xA5, 0x65, 0x79, + 0xF4, 0x1B, 0xDE, 0x2C, 0x21, 0x21, 0xC4, 0x90, 0xD1, 0x0D, 0xC7, 0x38, + 0x51, 0x6A, 0x11, 0x00, 0x25, 0x18, 0x93, 0x3B, 0x85, 0x16, 0xC5, 0x64, + 0xEF, 0x91, 0xFA, 0x97, 0x6F, 0x55, 0xE1, 0xDB, 0x02, 0xB1, 0x3D, 0x75, + 0x53, 0x89, 0x00, 0x88, 0x10, 0x3C, 0xA7, 0xA4, 0xD3, 0x1E, 0x01, 0x14, + 0xB9, 0x04, 0x00, 0x02, 0x01, 0xE3, 0x2C, 0xCD, 0xAD, 0x79, 0x59, 0x64, + 0x55, 0xE5, 0x01, 0x87, 0x80, 0x02, 0xA6, 0x55, 0x59, 0x10, 0x4A, 0x09, + 0xAB, 0x95, 0xD2, 0xBD, 0x32, 0xBB, 0x3B, 0xA3, 0xFD, 0xFD, 0x7D, 0xA5, + 0xCD, 0xD1, 0xE1, 0x8E, 0x52, 0x3D, 0xC1, 0x68, 0x77, 0x3A, 0x49, 0xB6, + 0x45, 0x6B, 0xAD, 0x62, 0x84, 0x6A, 0x50, 0x31, 0x46, 0xFC, 0xC6, 0xE3, + 0xC1, 0x30, 0xCE, 0x92, 0x53, 0xE0, 0xED, 0x11, 0xB2, 0x45, 0xEB, 0x22, + 0x7C, 0x57, 0x95, 0xB5, 0x01, 0x0A, 0x01, 0x40, 0x2B, 0x7D, 0x71, 0x79, + 0xB3, 0x5C, 0xB5, 0x09, 0x5B, 0xF1, 0xDE, 0x5D, 0xCF, 0x57, 0xD7, 0xF3, + 0xB5, 0x31, 0xAE, 0x28, 0x8A, 0xE8, 0x7C, 0xDB, 0xF5, 0xC3, 0x41, 0x55, + 0x14, 0x39, 0x42, 0xC0, 0x19, 0x25, 0x18, 0x96, 0xEB, 0x4E, 0x1B, 0x97, + 0xE7, 0x42, 0x2B, 0xBD, 0x5C, 0xF6, 0x55, 0x15, 0x54, 0x6F, 0xD6, 0x75, + 0xBD, 0x5C, 0x2E, 0x76, 0x77, 0xC6, 0x9C, 0x33, 0x6B, 0xD4, 0xC5, 0xE5, + 0x6C, 0xBA, 0x33, 0xC8, 0x05, 0x37, 0x36, 0x54, 0x55, 0x41, 0x18, 0x3D, + 0xDC, 0xDF, 0x1B, 0x0E, 0x4A, 0x67, 0xCD, 0xE9, 0xD9, 0x05, 0xC6, 0x58, + 0x70, 0x1E, 0x7C, 0x60, 0x8C, 0xFC, 0xE8, 0x0F, 0x3F, 0xCA, 0x33, 0x31, + 0x18, 0x56, 0x42, 0xF0, 0xBE, 0x6D, 0xAF, 0xAF, 0x6F, 0x9A, 0x65, 0x3D, + 0x9E, 0x0C, 0x1F, 0x1C, 0xED, 0xC7, 0xE0, 0x8D, 0x36, 0x37, 0xF3, 0xD5, + 0xF5, 0xF5, 0xA2, 0x28, 0x8B, 0x87, 0x0F, 0xEE, 0x65, 0x59, 0x46, 0x08, + 0x06, 0x08, 0x5F, 0x7C, 0xF5, 0xFC, 0xC9, 0xE3, 0x87, 0x3B, 0xA3, 0xC1, + 0x68, 0x50, 0xF6, 0xBD, 0xAE, 0x3B, 0x35, 0x9D, 0x0C, 0xCF, 0xCE, 0xAF, + 0x18, 0xA5, 0x59, 0x2E, 0x11, 0x40, 0x88, 0x01, 0x21, 0x80, 0x08, 0x4D, + 0xD3, 0x0A, 0xCE, 0x39, 0x67, 0x21, 0x04, 0x07, 0x08, 0x00, 0xBA, 0x5E, + 0x79, 0xE7, 0xA4, 0x14, 0x21, 0x84, 0x3C, 0x97, 0xCE, 0xF9, 0xBE, 0xB7, + 0x02, 0x13, 0x08, 0xD1, 0xC5, 0xC4, 0x71, 0xC5, 0xC3, 0xE1, 0x20, 0x15, + 0xBB, 0x10, 0x02, 0xC2, 0x28, 0xB1, 0x52, 0x52, 0xD0, 0xAA, 0xD6, 0x86, + 0x10, 0x5C, 0xD7, 0x8D, 0x94, 0xBC, 0xED, 0x95, 0x14, 0x3C, 0x0D, 0x6B, + 0x52, 0x8A, 0xBE, 0x57, 0x42, 0x8A, 0x18, 0x62, 0xD3, 0xB4, 0xAB, 0x75, + 0x33, 0x1E, 0x55, 0x21, 0xB8, 0x8D, 0x40, 0x1C, 0x6F, 0x7C, 0xE2, 0xD1, + 0x36, 0xF1, 0x0B, 0x60, 0x83, 0xF4, 0xCF, 0x66, 0xCB, 0x64, 0x42, 0x67, + 0x8C, 0xC7, 0x84, 0x58, 0xEF, 0x42, 0x08, 0x92, 0x33, 0x67, 0x7D, 0x0A, + 0x5C, 0x03, 0x40, 0xDE, 0x5B, 0xE7, 0x29, 0xDA, 0xF2, 0xC3, 0x09, 0xC6, + 0x29, 0xB9, 0x79, 0x77, 0x32, 0x84, 0x18, 0x92, 0x8F, 0x23, 0x00, 0x14, + 0x99, 0x48, 0x35, 0xA5, 0x2C, 0x32, 0xEF, 0x3D, 0xA1, 0x1B, 0xCB, 0x96, + 0x04, 0xBF, 0xB8, 0x10, 0x8C, 0xB5, 0xC9, 0x1F, 0x30, 0x81, 0x6E, 0x18, + 0x6E, 0xD7, 0xEE, 0x80, 0x00, 0x69, 0x63, 0x56, 0x75, 0x63, 0xAC, 0x63, + 0x94, 0xBA, 0xE0, 0x82, 0x8F, 0x78, 0xDB, 0xA6, 0x85, 0x08, 0xBD, 0x52, + 0x31, 0xC6, 0xB2, 0x28, 0x92, 0x8E, 0x1D, 0x62, 0x54, 0x4A, 0x4B, 0xC9, + 0x9D, 0x77, 0x19, 0xE6, 0x18, 0x63, 0x80, 0x0D, 0x14, 0x3E, 0x1C, 0x54, + 0x75, 0xD3, 0xFD, 0xFD, 0xCF, 0x7F, 0xF3, 0xE5, 0x97, 0xCF, 0x62, 0x84, + 0xAE, 0x57, 0xDF, 0x7F, 0xFC, 0xF0, 0x27, 0x3F, 0xFA, 0xC1, 0x62, 0x59, + 0xAF, 0x1B, 0x35, 0x19, 0x55, 0xE3, 0x51, 0x95, 0xDC, 0x03, 0x8F, 0x0E, + 0xF7, 0x8A, 0x3C, 0xA7, 0x04, 0x2D, 0x57, 0xB5, 0xB5, 0x7E, 0x32, 0x1E, + 0xB5, 0x5D, 0xA7, 0x94, 0x4E, 0x13, 0x52, 0x9E, 0xE7, 0x9C, 0x33, 0x82, + 0xD1, 0xD1, 0xE1, 0xBE, 0x14, 0xBC, 0x6D, 0xFB, 0x57, 0xC7, 0x6F, 0xB5, + 0x36, 0x99, 0x14, 0x10, 0x43, 0x26, 0x45, 0x9E, 0x65, 0x28, 0xC6, 0xB6, + 0x6D, 0xEB, 0x06, 0x32, 0x29, 0x17, 0x8B, 0x95, 0xF7, 0x3E, 0xCB, 0x64, + 0xDF, 0x27, 0x22, 0x35, 0x74, 0x4A, 0xF7, 0x5D, 0xA7, 0xBA, 0x0E, 0x63, + 0xEC, 0xAC, 0x37, 0xC8, 0x02, 0x42, 0x8C, 0xF1, 0xC5, 0x72, 0xD5, 0x34, + 0xCD, 0xA0, 0xAA, 0x7E, 0xF1, 0xE9, 0x6F, 0xFE, 0xE8, 0x27, 0x9F, 0x54, + 0x45, 0x46, 0xEF, 0xDE, 0x1E, 0x00, 0x31, 0x71, 0x82, 0xC0, 0xBB, 0x18, + 0x43, 0x3A, 0x60, 0x21, 0x42, 0x88, 0xC1, 0x19, 0xBB, 0xC9, 0x7F, 0xA4, + 0x24, 0xC4, 0x20, 0x01, 0x08, 0x65, 0xF8, 0x0E, 0x6A, 0xF6, 0x0F, 0x3D, + 0x6E, 0x57, 0x9C, 0x77, 0x1B, 0x8A, 0xBB, 0x9F, 0xFD, 0xEE, 0x5F, 0x13, + 0x08, 0x7F, 0x77, 0xBF, 0x19, 0x63, 0x04, 0x48, 0x37, 0xCF, 0xA6, 0xEC, + 0x22, 0x48, 0x4C, 0xF5, 0xE0, 0x03, 0xE0, 0x88, 0x19, 0x45, 0x5B, 0x0B, + 0xFF, 0xE4, 0xF6, 0x15, 0x21, 0x40, 0x84, 0x10, 0x30, 0x21, 0x64, 0xAB, + 0x22, 0xDD, 0x4A, 0x2F, 0x31, 0xBE, 0x25, 0x91, 0x6D, 0x8B, 0xF8, 0x66, + 0x21, 0x80, 0x08, 0x03, 0x48, 0x10, 0xC6, 0xE6, 0xD5, 0x48, 0x9B, 0x69, + 0x46, 0x51, 0x99, 0x8B, 0xE4, 0xED, 0xC5, 0x19, 0xC7, 0xD6, 0x76, 0x9D, + 0xA6, 0x8C, 0x8F, 0x26, 0x13, 0x26, 0xE4, 0xBA, 0x31, 0x79, 0x91, 0xF5, + 0x0E, 0x3A, 0x6D, 0x57, 0xD7, 0x8B, 0xE1, 0x68, 0x70, 0xB4, 0x33, 0x4E, + 0xE6, 0x49, 0xCB, 0xE5, 0x6A, 0x5D, 0x77, 0x93, 0x61, 0xBE, 0xBB, 0x37, + 0x96, 0x8C, 0x63, 0x82, 0x13, 0x3D, 0x35, 0x04, 0xA0, 0x8C, 0x75, 0x5D, + 0x6F, 0x8C, 0xC9, 0x33, 0x11, 0x00, 0x13, 0xC6, 0xAA, 0xB2, 0x20, 0x1B, + 0xFE, 0xFD, 0xB7, 0xAA, 0x7C, 0xDC, 0x92, 0x4E, 0x12, 0x67, 0x38, 0xB1, + 0x55, 0x12, 0x51, 0xA6, 0xED, 0xFA, 0xE5, 0xB2, 0x59, 0xAE, 0xBB, 0xF9, + 0xAA, 0xCD, 0xA4, 0x54, 0xAA, 0x3B, 0xBF, 0x5E, 0x38, 0x1F, 0x8B, 0x22, + 0xE7, 0x3C, 0xAE, 0x56, 0x8D, 0x94, 0xA2, 0x28, 0x0A, 0xEB, 0x42, 0xD3, + 0xF5, 0xCE, 0x79, 0xA3, 0xB5, 0x14, 0x1C, 0x61, 0xCC, 0x18, 0xBD, 0x9A, + 0xCD, 0x8B, 0x2C, 0x13, 0x42, 0xAC, 0xD6, 0xCD, 0xAF, 0x3E, 0xFD, 0xCD, + 0x60, 0x58, 0xFC, 0xF3, 0xFF, 0xE4, 0x8F, 0xF3, 0x4C, 0x40, 0x84, 0x9D, + 0x51, 0xE1, 0x9C, 0x5B, 0x2C, 0x57, 0x5D, 0x6F, 0x19, 0xE7, 0xC3, 0x61, + 0x75, 0x78, 0xB8, 0xC7, 0x19, 0x25, 0x14, 0x9F, 0x5F, 0x5C, 0xDF, 0x7F, + 0x70, 0x14, 0x43, 0xD4, 0xBD, 0x7A, 0xEF, 0xC1, 0x61, 0xF0, 0x3E, 0xD9, + 0x40, 0x1E, 0x9F, 0x5E, 0xC4, 0x18, 0x05, 0x23, 0x79, 0x59, 0x64, 0x45, + 0x5E, 0x64, 0x02, 0x63, 0xEC, 0x7D, 0x74, 0xD6, 0x7A, 0xE7, 0x8D, 0xB1, + 0xCE, 0xB9, 0x75, 0xDD, 0xF4, 0xC6, 0x9D, 0x9E, 0x5D, 0x02, 0xC2, 0x22, + 0xCF, 0xBF, 0xF8, 0xE6, 0xF5, 0xD1, 0xC1, 0x74, 0x6F, 0x77, 0x92, 0x09, + 0x16, 0x21, 0x1A, 0x63, 0x0E, 0xF7, 0x76, 0x32, 0x29, 0x4F, 0x4E, 0xCF, + 0x4F, 0xCF, 0x2E, 0xB3, 0x4C, 0x68, 0x6F, 0x12, 0x95, 0x64, 0xB5, 0x5A, + 0x1D, 0x1E, 0xEE, 0x0F, 0xAA, 0x72, 0xBE, 0xAC, 0x39, 0xA3, 0xC3, 0xAA, + 0xEC, 0x95, 0x4A, 0xB2, 0x5F, 0xAD, 0xB5, 0x31, 0x0E, 0x00, 0x12, 0x2B, + 0x95, 0x4B, 0x79, 0x74, 0x6F, 0xDF, 0x1A, 0x6B, 0x9D, 0x6F, 0x9A, 0x36, + 0x55, 0x01, 0x88, 0x31, 0x84, 0x00, 0x10, 0x19, 0xA3, 0x69, 0xBA, 0xD4, + 0xC6, 0x26, 0x9A, 0x8E, 0x51, 0x16, 0x01, 0x50, 0x42, 0xAC, 0xF3, 0x79, + 0x2E, 0xBB, 0x2E, 0x70, 0x4A, 0x43, 0x8C, 0x75, 0xDD, 0x7C, 0xF3, 0xFC, + 0xD5, 0x3F, 0xFB, 0x93, 0x3F, 0xB2, 0xD6, 0xC2, 0xED, 0x7B, 0x91, 0x9C, + 0x00, 0xDF, 0xB1, 0x32, 0x00, 0x23, 0xA4, 0x8D, 0x59, 0xAE, 0x6B, 0x63, + 0xAC, 0x0B, 0x91, 0x60, 0xDC, 0xF5, 0x7D, 0x42, 0x2D, 0xAD, 0xF7, 0x55, + 0x91, 0x77, 0xBD, 0x4A, 0xC0, 0x62, 0x4C, 0xF4, 0x5D, 0x96, 0x5C, 0x80, + 0x90, 0x77, 0x5E, 0x0A, 0x96, 0x49, 0x9E, 0x4E, 0x97, 0xBE, 0xD7, 0x09, + 0x85, 0x36, 0x46, 0x71, 0x46, 0xAD, 0x0F, 0x37, 0x8B, 0x3A, 0xED, 0x85, + 0xD2, 0x4B, 0x87, 0x10, 0xB2, 0xCE, 0x09, 0xC1, 0x29, 0x42, 0x6D, 0xD7, + 0xA7, 0x0A, 0x95, 0x56, 0x1C, 0x8C, 0xB1, 0xAD, 0x51, 0x17, 0xD4, 0x75, + 0xA7, 0x92, 0x5C, 0x9F, 0x31, 0x82, 0x08, 0x22, 0xD1, 0x79, 0x87, 0x31, + 0x4E, 0x42, 0xEB, 0x10, 0x62, 0xF0, 0xA1, 0xED, 0x7A, 0xCE, 0x29, 0x65, + 0x34, 0xB9, 0x9B, 0x75, 0xBD, 0x76, 0xDE, 0xE7, 0x52, 0x00, 0x40, 0x99, + 0x67, 0xB9, 0x94, 0x04, 0xE3, 0xE5, 0xBA, 0x9D, 0xCF, 0x17, 0xCE, 0x9A, + 0xD3, 0xB3, 0x65, 0x88, 0x91, 0x33, 0xFE, 0x37, 0x7F, 0xF7, 0xEB, 0xEB, + 0xD9, 0xE2, 0x47, 0x3F, 0xFC, 0x90, 0x31, 0xA2, 0xB4, 0x09, 0x31, 0x16, + 0x99, 0x30, 0xD6, 0xCC, 0xE6, 0xCB, 0xC5, 0xB2, 0x11, 0x32, 0xFB, 0xE4, + 0xDE, 0x41, 0x08, 0xE1, 0xC5, 0xEB, 0xD3, 0x64, 0x09, 0xAB, 0xB4, 0xC1, + 0x09, 0xC5, 0xC3, 0xF0, 0xE0, 0xE8, 0xE0, 0xDE, 0xC1, 0x74, 0xCB, 0xB6, + 0x5B, 0x61, 0x4C, 0x94, 0x36, 0x8C, 0x51, 0xCA, 0x28, 0xA7, 0x24, 0x2F, + 0x72, 0x67, 0xFD, 0xAA, 0x69, 0x62, 0x84, 0xE5, 0xAA, 0x16, 0x9C, 0x75, + 0x9D, 0x83, 0x04, 0x6E, 0x46, 0x6F, 0x95, 0x25, 0x18, 0xA7, 0xEC, 0xD4, + 0x08, 0x4E, 0x69, 0x43, 0x08, 0x71, 0xEB, 0x7A, 0x32, 0x1E, 0x29, 0x4A, + 0xFB, 0x5E, 0x49, 0x5E, 0xAE, 0xD7, 0x35, 0x82, 0x48, 0x7E, 0xF6, 0xB3, + 0x9F, 0x41, 0x0C, 0x11, 0x42, 0x9A, 0xA7, 0xC2, 0xD6, 0xB4, 0x6C, 0x83, + 0x1E, 0x7B, 0x1F, 0x82, 0xB7, 0xC6, 0x5A, 0x67, 0x83, 0x0B, 0x01, 0x22, + 0xA5, 0x34, 0x89, 0x84, 0x92, 0xFA, 0xF1, 0x3B, 0xED, 0xC3, 0xBF, 0xBF, + 0x4E, 0xDD, 0xDE, 0xA5, 0xFF, 0x9E, 0x99, 0x74, 0xE3, 0x0B, 0xB9, 0x7D, + 0xC4, 0x10, 0xA2, 0x0F, 0xB7, 0x1B, 0xD0, 0xCD, 0x3F, 0x84, 0x22, 0x42, + 0x9B, 0x73, 0x31, 0xBD, 0xA1, 0xA9, 0x8A, 0x71, 0xC1, 0x18, 0xA7, 0x08, + 0x01, 0x21, 0x14, 0x6F, 0xA3, 0x98, 0xD2, 0xAF, 0x72, 0xDB, 0xC2, 0x7C, + 0x87, 0xDF, 0x7B, 0xFB, 0x63, 0xC4, 0x18, 0x21, 0x6E, 0x62, 0x0D, 0x53, + 0x19, 0xC2, 0x84, 0x38, 0x6B, 0xCE, 0xDF, 0x9E, 0x4B, 0x4E, 0x4B, 0x49, + 0xF3, 0x22, 0x93, 0x52, 0xF0, 0x4D, 0xA1, 0x04, 0xC6, 0xF9, 0x60, 0x58, + 0x7D, 0xF9, 0xF4, 0xF8, 0xC5, 0xEB, 0x8B, 0xB3, 0xCB, 0x79, 0xDB, 0x76, + 0x65, 0x59, 0x62, 0x4A, 0xEF, 0xED, 0x8D, 0xEF, 0x1D, 0xEC, 0x8C, 0x06, + 0x05, 0xC1, 0x70, 0x3D, 0x5B, 0xEE, 0xED, 0x4E, 0xEE, 0x1F, 0xED, 0x55, + 0x65, 0x99, 0xB8, 0xB9, 0x18, 0xA3, 0x44, 0xF7, 0x25, 0x18, 0xAF, 0x57, + 0xB5, 0x10, 0x82, 0x30, 0xB9, 0x5E, 0xD5, 0xF7, 0x0F, 0x77, 0x8E, 0xEE, + 0xED, 0x12, 0x4A, 0xBF, 0xF3, 0xCA, 0x7C, 0xC7, 0x01, 0x29, 0x84, 0xE0, + 0x9D, 0x73, 0x2E, 0x3A, 0xE7, 0x4F, 0xCF, 0xAE, 0xDE, 0x9C, 0x5C, 0x5D, + 0xDD, 0xAC, 0xAE, 0x6F, 0xD6, 0x08, 0x21, 0x1F, 0x62, 0xAB, 0x4C, 0x4A, + 0x51, 0x33, 0xDA, 0x58, 0x6B, 0x23, 0x44, 0x4C, 0x70, 0xDB, 0x75, 0x84, + 0x12, 0x63, 0x6D, 0x9E, 0xC9, 0xA4, 0x5F, 0xC8, 0x32, 0xD9, 0xF5, 0xBD, + 0xD2, 0x26, 0x13, 0x5C, 0x4A, 0xE9, 0xAC, 0x2B, 0x4B, 0xF9, 0xFE, 0xC3, + 0x7B, 0x93, 0xD1, 0x20, 0x97, 0x42, 0x4A, 0x4A, 0x30, 0xCE, 0xA4, 0x50, + 0xCA, 0x52, 0x46, 0x66, 0x37, 0x4B, 0xE7, 0xBC, 0x73, 0xEE, 0xF9, 0xAB, + 0x93, 0x61, 0x55, 0x55, 0x65, 0x3E, 0x1E, 0x0D, 0x28, 0xC1, 0x8C, 0x12, + 0x29, 0xC5, 0xE1, 0xFE, 0x4E, 0x62, 0xAE, 0x27, 0x4E, 0x3F, 0xC6, 0x38, + 0x05, 0x67, 0x1C, 0x1D, 0xEC, 0x32, 0xCE, 0x00, 0x81, 0xEA, 0x75, 0xDB, + 0x2B, 0x99, 0x49, 0x4A, 0x69, 0xD7, 0x76, 0xBF, 0xFA, 0xEC, 0xAB, 0x37, + 0x6F, 0xCE, 0x2E, 0xAF, 0x6F, 0x9C, 0x73, 0x82, 0x8B, 0xA7, 0xCF, 0x5F, + 0xBF, 0x7C, 0x75, 0xE2, 0x63, 0x7C, 0x70, 0x6F, 0x8F, 0x11, 0xEA, 0x9C, + 0xAF, 0xBB, 0x3E, 0xCF, 0xB2, 0xB3, 0xF3, 0x4B, 0xB3, 0xB1, 0x0C, 0x73, + 0x18, 0x61, 0x6D, 0x4C, 0xBA, 0x24, 0xB4, 0xB2, 0x71, 0xF3, 0x1E, 0x6D, + 0x7C, 0x2F, 0x9C, 0x73, 0x00, 0x88, 0x0B, 0x1E, 0x82, 0x17, 0x5C, 0x58, + 0xE7, 0x1F, 0xDE, 0x3F, 0xCC, 0x32, 0x79, 0x35, 0x9B, 0xF7, 0xBD, 0x22, + 0x84, 0x22, 0x8C, 0x13, 0x33, 0x03, 0x20, 0xDE, 0xA2, 0xAB, 0xE9, 0x15, + 0x56, 0xCA, 0x84, 0x08, 0x9D, 0x52, 0x99, 0x10, 0x08, 0xA1, 0x3C, 0x93, + 0x4A, 0x1B, 0xA5, 0x4D, 0x91, 0x67, 0x18, 0xC1, 0x72, 0xB9, 0xBE, 0x77, + 0xB8, 0x3B, 0xA8, 0x8A, 0x94, 0x78, 0x82, 0xD3, 0x85, 0x89, 0x10, 0x4A, + 0x19, 0x17, 0x80, 0x00, 0x22, 0x21, 0xA4, 0xEB, 0xFB, 0xCF, 0x7E, 0xF3, + 0x4C, 0x19, 0x97, 0xB4, 0xC0, 0xCE, 0x79, 0xCE, 0x79, 0x08, 0x41, 0x70, + 0x36, 0xAC, 0x4A, 0xE7, 0x5D, 0x62, 0x63, 0x45, 0x04, 0x84, 0x20, 0xC1, + 0x99, 0xF7, 0x1E, 0x23, 0x74, 0xB0, 0x3B, 0x1D, 0x56, 0x39, 0x46, 0x80, + 0x31, 0x72, 0x3E, 0x32, 0x4A, 0x10, 0xE0, 0xAE, 0x57, 0x18, 0xE3, 0x4E, + 0x19, 0x6D, 0x7C, 0xDB, 0xAB, 0xE4, 0x20, 0xB6, 0x58, 0xD7, 0x9C, 0xD3, + 0x54, 0xA9, 0x01, 0x01, 0x63, 0x4C, 0x30, 0x9E, 0xA2, 0x6A, 0xD2, 0x7E, + 0x0C, 0x21, 0x94, 0x8C, 0xF3, 0x43, 0xF0, 0xF3, 0x55, 0xA3, 0x8D, 0xE3, + 0x9C, 0x02, 0xA0, 0x18, 0x21, 0x19, 0xFE, 0x58, 0xE7, 0x28, 0x65, 0x4A, + 0xEB, 0x44, 0xB3, 0x48, 0xF6, 0xC5, 0xB0, 0x31, 0x5F, 0x25, 0x5D, 0xAF, + 0x28, 0x25, 0x89, 0xD1, 0x56, 0x96, 0xC5, 0xB0, 0x2A, 0x5F, 0xBC, 0x3E, + 0x39, 0x3D, 0x3B, 0xA7, 0x84, 0x68, 0xEB, 0xB2, 0x2C, 0xAB, 0xD7, 0xCD, + 0x62, 0x55, 0x03, 0x44, 0x63, 0xAD, 0x71, 0x9E, 0x31, 0x26, 0x38, 0xCB, + 0x24, 0xEF, 0x94, 0xFE, 0xC5, 0xAF, 0xBE, 0x22, 0x04, 0x8F, 0x86, 0x55, + 0x55, 0xE5, 0x00, 0xF1, 0xFE, 0xBD, 0xFD, 0x61, 0x55, 0x36, 0x6D, 0xC7, + 0x18, 0x77, 0xDE, 0xA7, 0x0B, 0x20, 0x93, 0x62, 0x77, 0x67, 0xB4, 0x5A, + 0xD7, 0xF7, 0x0E, 0x76, 0xDF, 0x1C, 0xBF, 0x75, 0x2E, 0x08, 0xC1, 0x9C, + 0x73, 0xCE, 0x39, 0x84, 0x31, 0xE7, 0x4C, 0x4A, 0xC1, 0xE8, 0x46, 0x9E, + 0x91, 0x76, 0xC7, 0x7D, 0xDF, 0x03, 0x82, 0x22, 0x97, 0x89, 0x00, 0x98, + 0x42, 0x18, 0x12, 0x4B, 0x2E, 0x89, 0x3D, 0x39, 0xA5, 0x75, 0xB3, 0x8E, + 0x10, 0x8B, 0x4C, 0x52, 0x42, 0x26, 0xC3, 0x8A, 0x51, 0x42, 0xFE, 0xF2, + 0x67, 0x3F, 0x8B, 0x77, 0xEA, 0xD7, 0x96, 0xDC, 0x90, 0x40, 0x70, 0x8A, + 0x08, 0x86, 0x18, 0x9D, 0x75, 0xDE, 0x79, 0x9B, 0x6C, 0x95, 0x10, 0x20, + 0x8C, 0xA5, 0xCC, 0x28, 0xE3, 0x70, 0x67, 0xC6, 0x81, 0x7F, 0xB8, 0x9C, + 0xDD, 0xED, 0x32, 0xEE, 0x16, 0x8E, 0xBB, 0x15, 0xF0, 0x2E, 0xE8, 0x86, + 0xBE, 0xFD, 0x6D, 0x9B, 0xFF, 0x92, 0xED, 0xB0, 0x19, 0x37, 0x3E, 0x17, + 0xE9, 0x48, 0x24, 0x34, 0x39, 0xA3, 0x6D, 0xBC, 0x9F, 0x30, 0xA6, 0x18, + 0x6D, 0xB9, 0x14, 0x77, 0x60, 0xBE, 0x5B, 0xEF, 0xD9, 0xDB, 0x5E, 0x2F, + 0xDE, 0xF1, 0xE1, 0xB8, 0xDB, 0xA0, 0xBD, 0xFB, 0x11, 0x10, 0x0E, 0xCE, + 0x34, 0xCB, 0x45, 0xE2, 0x2B, 0x67, 0x92, 0x27, 0xE7, 0xA2, 0xB2, 0xCC, + 0x9D, 0x8F, 0x22, 0xCB, 0x3B, 0x1B, 0x5F, 0x9F, 0x5C, 0xAD, 0x9B, 0xAE, + 0xEF, 0xD5, 0xEE, 0xEE, 0xCE, 0x68, 0x50, 0x3E, 0x3C, 0xDA, 0x1D, 0x0F, + 0x2B, 0x4A, 0xF1, 0xA0, 0x2A, 0x00, 0x60, 0x30, 0x28, 0xDF, 0x7F, 0x74, + 0xAF, 0xC8, 0x33, 0x8C, 0x49, 0xE2, 0xAC, 0xAD, 0x96, 0xF5, 0xF9, 0xC5, + 0xAC, 0xA9, 0x1B, 0x6B, 0x2D, 0x13, 0x1C, 0x10, 0x5E, 0x2C, 0x97, 0xBA, + 0x6F, 0x1F, 0x3D, 0x38, 0xA8, 0x86, 0x83, 0xBB, 0x2F, 0xC0, 0xDD, 0x59, + 0xF2, 0xB6, 0x17, 0x4B, 0xDA, 0xE6, 0x64, 0x88, 0x78, 0x79, 0xBD, 0xF2, + 0x21, 0xCE, 0x97, 0x4D, 0xDB, 0xF6, 0x79, 0x2E, 0x95, 0xF1, 0x21, 0x24, + 0xB0, 0x19, 0xA5, 0x50, 0x5B, 0xC1, 0xF9, 0x68, 0x38, 0x98, 0x4C, 0x46, + 0x52, 0xB0, 0xF1, 0x70, 0x90, 0xA6, 0x95, 0x3C, 0xCF, 0xAC, 0xF5, 0x29, + 0x8E, 0xB0, 0xEB, 0x7A, 0x4A, 0x49, 0x5E, 0xE4, 0xBB, 0x3B, 0xC3, 0x94, + 0x37, 0xE1, 0x37, 0x37, 0x7C, 0xCC, 0x33, 0xC1, 0x19, 0x89, 0x00, 0x3E, + 0x80, 0x73, 0xCE, 0x18, 0x67, 0x8C, 0x4D, 0xF2, 0x32, 0x4A, 0xC8, 0xC1, + 0xFE, 0x74, 0x6F, 0x2F, 0x8D, 0xC9, 0x31, 0x93, 0xA2, 0x6D, 0x3B, 0x8C, + 0xC0, 0x58, 0xE3, 0xFD, 0xE6, 0x38, 0x4C, 0x2C, 0x4D, 0xCE, 0xB9, 0xCC, + 0x78, 0xF0, 0x1E, 0x10, 0x72, 0x3E, 0x9C, 0x5F, 0xCC, 0xDE, 0x5E, 0x5C, + 0xE7, 0x59, 0x86, 0x30, 0x9E, 0x2F, 0x16, 0x6F, 0x8E, 0xCF, 0xE6, 0xF3, + 0x55, 0x88, 0xE1, 0xE2, 0xE2, 0xEA, 0xFC, 0xFC, 0x3A, 0xD1, 0x53, 0x8C, + 0x75, 0x97, 0x57, 0x37, 0x21, 0xC2, 0x7A, 0x5D, 0x63, 0x8C, 0x92, 0x28, + 0x95, 0x10, 0x6A, 0x8C, 0x51, 0x4A, 0xA5, 0x25, 0xAF, 0xD2, 0x46, 0xF5, + 0x3A, 0xDD, 0xC3, 0xE9, 0xB5, 0x4A, 0x6F, 0xB7, 0x75, 0x76, 0xBA, 0x33, + 0x7E, 0x7B, 0x7E, 0x7D, 0x76, 0x71, 0x25, 0x85, 0x20, 0x98, 0x84, 0x18, + 0xB3, 0x2C, 0xA3, 0x94, 0xA4, 0xFD, 0x63, 0x96, 0x89, 0x22, 0xCF, 0x19, + 0xA3, 0x4A, 0x29, 0x6B, 0x5D, 0xA2, 0x3B, 0x50, 0x46, 0x9D, 0xF3, 0xDB, + 0x20, 0x0C, 0xD4, 0x29, 0x55, 0x16, 0x39, 0x21, 0xB8, 0xEB, 0xFA, 0xF5, + 0xBA, 0x7E, 0xFC, 0xE8, 0x41, 0x22, 0x25, 0xA4, 0xCF, 0x6F, 0xAE, 0x97, + 0x88, 0x92, 0x6E, 0x89, 0x53, 0x7A, 0x75, 0x3D, 0xFF, 0xEC, 0xCB, 0xE7, + 0x82, 0x73, 0x00, 0x40, 0x98, 0x60, 0x8C, 0xF3, 0x5C, 0x02, 0x20, 0x8A, + 0x11, 0xA5, 0x04, 0x23, 0xA4, 0x94, 0x02, 0x04, 0x80, 0xB1, 0x60, 0x8C, + 0x11, 0x1C, 0x22, 0x38, 0xEF, 0x29, 0xC1, 0x04, 0xE3, 0x5E, 0xA9, 0x22, + 0x97, 0x75, 0xDB, 0xED, 0xEE, 0x0C, 0x31, 0x46, 0x4A, 0x9B, 0x18, 0x40, + 0x69, 0x0B, 0x08, 0x22, 0x40, 0x0A, 0x94, 0x5A, 0xAE, 0x5B, 0xEB, 0x7D, + 0x59, 0xE4, 0x69, 0x28, 0x4E, 0x9B, 0x50, 0x4A, 0x09, 0x22, 0x98, 0x52, + 0xEA, 0xBC, 0xB7, 0xCE, 0x59, 0x1F, 0x20, 0x42, 0xDD, 0x74, 0x6D, 0xAF, + 0x63, 0x8C, 0x99, 0x94, 0x6D, 0xAB, 0x08, 0x21, 0x29, 0xF2, 0x02, 0x23, + 0xEC, 0x83, 0x4F, 0x37, 0x0B, 0xDE, 0x44, 0x9E, 0xA1, 0xE0, 0x3D, 0x26, + 0x24, 0xC6, 0xD0, 0xF5, 0x4A, 0x4A, 0x19, 0x7C, 0x70, 0xDE, 0x37, 0x6D, + 0xD7, 0x34, 0xDD, 0xD9, 0xC5, 0xB5, 0xB3, 0x4E, 0x6B, 0x9B, 0x72, 0x91, + 0x11, 0xC6, 0xC9, 0x5F, 0xFE, 0xF1, 0xA3, 0x87, 0x1F, 0x7D, 0xF8, 0xC1, + 0xFD, 0x7B, 0xBB, 0x07, 0xBB, 0x93, 0x75, 0xDD, 0x7E, 0xF6, 0xC5, 0xB3, + 0xB3, 0xF3, 0x1B, 0x82, 0xE1, 0xCF, 0xFE, 0xC9, 0x4F, 0x76, 0x27, 0x43, + 0x29, 0xA5, 0xD6, 0x26, 0xCF, 0xB3, 0xB6, 0xEB, 0xAC, 0xF3, 0x07, 0x7B, + 0xD3, 0xD1, 0xB0, 0xCC, 0x33, 0xB1, 0x3F, 0x9D, 0x1C, 0xEC, 0xEF, 0x54, + 0x65, 0x71, 0x71, 0x35, 0x3B, 0x7B, 0x7B, 0x35, 0x9D, 0x0C, 0x43, 0x08, + 0xC6, 0x58, 0x8C, 0xB1, 0x31, 0x96, 0x73, 0xB6, 0x33, 0x1A, 0x16, 0x99, + 0xA4, 0x94, 0x24, 0x1A, 0x7C, 0xDB, 0x76, 0x08, 0xC1, 0x70, 0x50, 0x4E, + 0xC7, 0xC3, 0x9D, 0xF1, 0x30, 0xB1, 0xA0, 0xDB, 0xB6, 0x83, 0x18, 0x31, + 0x02, 0x63, 0x8C, 0x73, 0x8E, 0x50, 0xF2, 0xFD, 0xC7, 0x8F, 0x86, 0x83, + 0x32, 0x93, 0xBC, 0xC8, 0xE4, 0x70, 0x50, 0x70, 0xC6, 0xE8, 0xD6, 0x01, + 0x3F, 0x6E, 0x5D, 0xBF, 0x02, 0x4E, 0x31, 0x96, 0x08, 0xC5, 0xE0, 0x82, + 0x73, 0xC1, 0xDB, 0x18, 0x37, 0xD9, 0xEE, 0xCE, 0x78, 0xAD, 0x6D, 0x55, + 0xE5, 0xE9, 0x37, 0xB4, 0xC6, 0x38, 0xEF, 0xF0, 0xD6, 0xEF, 0x90, 0xDC, + 0x9A, 0x7B, 0xFD, 0xBE, 0x25, 0xE0, 0x77, 0xC0, 0xB8, 0x54, 0x92, 0xFE, + 0xA1, 0xD6, 0xEC, 0x5B, 0x5F, 0x76, 0x7B, 0x67, 0x6F, 0x6A, 0xDF, 0xB7, + 0xCA, 0x0D, 0xC1, 0x14, 0x10, 0x22, 0x94, 0x6E, 0x73, 0x53, 0xEE, 0x3E, + 0x35, 0xA1, 0x18, 0x00, 0x90, 0x4F, 0xAE, 0xC3, 0x18, 0x01, 0x40, 0x72, + 0x8E, 0xBC, 0xE5, 0xD6, 0xC2, 0x3B, 0x62, 0x5A, 0x8A, 0x01, 0xC6, 0x9B, + 0xA9, 0x01, 0x13, 0x82, 0x31, 0xC4, 0x98, 0x71, 0xE6, 0x43, 0xA4, 0x94, + 0x62, 0x4C, 0xB2, 0x2C, 0x33, 0xC6, 0xFA, 0x00, 0x65, 0x59, 0x1A, 0x60, + 0xD7, 0xB3, 0x15, 0x65, 0xB4, 0xC8, 0xE5, 0xDE, 0xEE, 0xCE, 0x64, 0x5C, + 0x0D, 0x2A, 0x39, 0x28, 0xB3, 0x94, 0x68, 0x67, 0x8C, 0x13, 0x42, 0x16, + 0x65, 0xC1, 0x18, 0x4D, 0x9C, 0x4C, 0xA3, 0x8D, 0xB1, 0x66, 0xBE, 0x58, + 0x7B, 0xEF, 0x39, 0x17, 0x3E, 0xC4, 0xA2, 0x28, 0xCE, 0xCE, 0x2F, 0x9C, + 0xF3, 0xFB, 0x07, 0xFB, 0x59, 0x91, 0xA3, 0x3B, 0x65, 0xF7, 0xEE, 0x9F, + 0xA9, 0x27, 0x8D, 0xC1, 0x6B, 0x63, 0xB5, 0xD2, 0x4A, 0x9B, 0xF3, 0xCB, + 0x9B, 0xF9, 0xB2, 0x73, 0x21, 0x6A, 0x6D, 0x97, 0xAB, 0x1A, 0x10, 0x6A, + 0x3B, 0xD3, 0x2B, 0x8D, 0x08, 0x1E, 0x0D, 0x87, 0x08, 0x41, 0xD7, 0x6B, + 0x67, 0xB9, 0x90, 0xF2, 0xFA, 0x66, 0x01, 0x10, 0x87, 0x83, 0x41, 0x08, + 0x71, 0x3E, 0x5F, 0x29, 0xAD, 0x23, 0x20, 0x1F, 0x62, 0xD7, 0xF5, 0x55, + 0x59, 0x88, 0x2C, 0xD3, 0xC6, 0x45, 0x40, 0x48, 0x50, 0x99, 0x49, 0x4E, + 0x49, 0x48, 0x51, 0xDB, 0x08, 0x49, 0x21, 0x38, 0xE7, 0x01, 0xD0, 0x6A, + 0xDD, 0xD5, 0xDA, 0x3C, 0x7F, 0xFE, 0xFA, 0xE8, 0xE8, 0x30, 0x86, 0xE8, + 0xBD, 0xB7, 0x08, 0xFA, 0x5E, 0x55, 0x55, 0x3E, 0xA8, 0xAA, 0xBE, 0xEF, + 0x01, 0x90, 0xCC, 0xB3, 0xF5, 0x72, 0x15, 0x9C, 0x6D, 0xD7, 0x75, 0x55, + 0xE6, 0x7B, 0xD3, 0x51, 0xDF, 0xAB, 0xCB, 0xAB, 0x39, 0xA3, 0x6C, 0xD5, + 0xB4, 0xC9, 0xAB, 0x52, 0x69, 0xA3, 0x8D, 0x1D, 0x0C, 0x4A, 0xA3, 0x4D, + 0x49, 0x98, 0x77, 0x3C, 0x78, 0x8D, 0x29, 0x61, 0x94, 0x08, 0x46, 0xBF, + 0x7E, 0xFA, 0x0A, 0x61, 0xFC, 0xD3, 0x1F, 0x7F, 0x5C, 0x14, 0xD9, 0x47, + 0x1F, 0x3E, 0x2A, 0xCA, 0x7C, 0xB5, 0xAA, 0x57, 0xAB, 0x55, 0x59, 0x16, + 0xCB, 0x65, 0xF2, 0xF9, 0xF1, 0x99, 0xE0, 0x80, 0xB1, 0x73, 0x8E, 0x52, + 0xEA, 0x63, 0x72, 0x61, 0x09, 0x8C, 0x26, 0x07, 0x37, 0x4F, 0x30, 0x31, + 0xD6, 0xB5, 0x5D, 0x0F, 0x08, 0x92, 0xDC, 0x67, 0x30, 0xAC, 0x7A, 0xA5, + 0xA7, 0x93, 0x61, 0x5D, 0xD7, 0x5A, 0x6B, 0x84, 0x90, 0x0F, 0x81, 0x32, + 0x42, 0x09, 0x59, 0xA6, 0xFC, 0x2D, 0x42, 0x8C, 0xB5, 0x29, 0x07, 0xC4, + 0xF9, 0xE0, 0x43, 0xF0, 0xDE, 0xA3, 0x18, 0x9B, 0xA6, 0xF3, 0x3E, 0x30, + 0x4A, 0xDF, 0x9C, 0x5E, 0xFE, 0xE2, 0xD7, 0x5F, 0xFE, 0xB3, 0x3F, 0xF9, + 0x71, 0xDF, 0xEB, 0xBB, 0xE7, 0xDF, 0x16, 0x86, 0x41, 0x84, 0xE2, 0xD9, + 0x7C, 0x95, 0x4C, 0xD0, 0x12, 0x7C, 0x3C, 0x1A, 0x0E, 0x22, 0x02, 0xC6, + 0x59, 0xF0, 0xCE, 0x59, 0x9B, 0xB0, 0x73, 0x82, 0x01, 0x6D, 0x2F, 0xBF, + 0x24, 0xEA, 0x3C, 0xBF, 0x9A, 0x5F, 0xCD, 0x16, 0x65, 0x99, 0x0F, 0xAB, + 0x72, 0xB5, 0xEE, 0x31, 0x26, 0x83, 0x32, 0x2B, 0x32, 0x39, 0x5F, 0x36, + 0x21, 0x04, 0xE7, 0x62, 0x8C, 0x71, 0x19, 0x5A, 0xE7, 0xD7, 0x4A, 0x1B, + 0x4C, 0x70, 0x04, 0x94, 0x4B, 0x4E, 0x08, 0x49, 0x46, 0xA9, 0x08, 0x23, + 0xDD, 0x1B, 0x4F, 0x43, 0x32, 0xEF, 0x88, 0x21, 0xBA, 0xE8, 0xBA, 0x5E, + 0x13, 0x82, 0x69, 0x20, 0x69, 0xBA, 0x44, 0x18, 0x9C, 0xF5, 0x08, 0xA1, + 0xB0, 0xC9, 0x24, 0x43, 0x31, 0xC6, 0x10, 0x03, 0xA3, 0x22, 0x42, 0xF4, + 0x3E, 0x24, 0x51, 0x5B, 0x99, 0xE7, 0x99, 0x14, 0xD6, 0x58, 0x8C, 0xB1, + 0x14, 0xE2, 0xFC, 0x62, 0xB6, 0x5C, 0xAD, 0x31, 0xC6, 0x3B, 0x93, 0xC9, + 0x8F, 0x7F, 0xF4, 0x71, 0x8C, 0xB1, 0x2A, 0x0B, 0x21, 0xD8, 0xAB, 0xD7, + 0xA7, 0xFF, 0xF6, 0x6F, 0x7F, 0xB1, 0xAE, 0xEB, 0xEF, 0x3D, 0x79, 0x1F, + 0x62, 0x78, 0x7B, 0x71, 0xBD, 0x5A, 0x37, 0xD7, 0x37, 0x8B, 0xB6, 0xEB, + 0x8E, 0xDF, 0xCE, 0xBA, 0x5E, 0x7D, 0xFA, 0xEB, 0x2F, 0xDF, 0x7B, 0x70, + 0xF8, 0xD1, 0x87, 0x1F, 0x08, 0x29, 0xD6, 0xEB, 0xB7, 0x99, 0xE4, 0x65, + 0x91, 0xBD, 0xF7, 0xE0, 0xE0, 0x93, 0x0F, 0xDF, 0xBF, 0xBC, 0x9E, 0xFF, + 0xFA, 0xB7, 0x4F, 0xDB, 0xAE, 0xB7, 0xCE, 0x85, 0x10, 0xA5, 0x90, 0x89, + 0x3B, 0xD2, 0x75, 0xEA, 0x6A, 0xB6, 0xD8, 0x19, 0x0D, 0xF2, 0x14, 0x37, + 0x91, 0x89, 0xB2, 0xC8, 0x29, 0xC1, 0x49, 0x00, 0xC0, 0x39, 0x4B, 0xB7, + 0x92, 0xD6, 0x9A, 0x12, 0xA4, 0xB5, 0x49, 0x22, 0x50, 0x40, 0xF0, 0xA3, + 0x4F, 0x3E, 0xFC, 0xDE, 0xE3, 0x47, 0x57, 0xD7, 0xD7, 0x28, 0x42, 0x9E, + 0xCB, 0x41, 0x95, 0x8B, 0xB4, 0xE8, 0x0D, 0x21, 0x06, 0xEF, 0xA2, 0xF7, + 0x1B, 0x90, 0x9B, 0xB0, 0xE0, 0x21, 0x46, 0xEF, 0x8C, 0x31, 0x1B, 0x68, + 0x0C, 0x45, 0x88, 0x31, 0x44, 0xEF, 0x3C, 0x25, 0x44, 0x70, 0x81, 0xF1, + 0x06, 0xCD, 0xB1, 0xC6, 0x01, 0x80, 0x0F, 0x1E, 0x01, 0x12, 0x9C, 0x23, + 0x8C, 0x30, 0x20, 0xCA, 0x58, 0x5A, 0x38, 0xC2, 0xB7, 0xC7, 0xB7, 0xEF, + 0xD4, 0x2A, 0x00, 0xF8, 0x5D, 0x4F, 0x81, 0x2D, 0xDC, 0x9F, 0xBA, 0xBC, + 0xC4, 0xDE, 0x89, 0x21, 0xFA, 0x18, 0x42, 0x0C, 0x11, 0x6D, 0x83, 0x97, + 0x30, 0x4E, 0x3E, 0x99, 0x18, 0x21, 0x9C, 0x8C, 0xF7, 0xB7, 0x42, 0xDE, + 0x08, 0xDB, 0x3C, 0x11, 0x00, 0x88, 0x90, 0x3C, 0xCE, 0x29, 0x49, 0x76, + 0x8C, 0x11, 0x41, 0x0A, 0xBD, 0xC7, 0x9B, 0x79, 0x0D, 0x6D, 0xD2, 0xBC, + 0x13, 0xCA, 0x8E, 0x01, 0x61, 0x88, 0x31, 0x35, 0xF2, 0x80, 0xC0, 0x6A, + 0x85, 0x10, 0x62, 0x9C, 0x0A, 0xC1, 0x85, 0x10, 0x45, 0x55, 0x31, 0x63, + 0x97, 0x8D, 0x51, 0x3E, 0x1A, 0xEB, 0x29, 0x21, 0x45, 0x9E, 0x97, 0x45, + 0xCE, 0x28, 0xD9, 0x19, 0x0F, 0xA5, 0xE4, 0x69, 0xF5, 0x9E, 0x36, 0x4A, + 0x08, 0x21, 0x88, 0x60, 0xB4, 0x75, 0xD6, 0xF6, 0x21, 0x74, 0x9D, 0x32, + 0xDA, 0x60, 0x8C, 0xAB, 0x41, 0x85, 0x31, 0xD1, 0xC6, 0x36, 0x75, 0xC3, + 0x29, 0xDD, 0x9D, 0x8C, 0x3E, 0x78, 0x74, 0xAF, 0x28, 0x8B, 0x77, 0x95, + 0xEB, 0xDD, 0xBD, 0x92, 0x74, 0xC9, 0xC1, 0x18, 0x7D, 0x35, 0x5B, 0xF4, + 0xCA, 0x00, 0x42, 0x5D, 0x6F, 0x2E, 0x66, 0xEB, 0x75, 0xDD, 0x69, 0xE3, + 0x9C, 0x0F, 0x84, 0xD0, 0xE9, 0xEE, 0x64, 0x3E, 0x5F, 0xCD, 0x6E, 0x16, + 0x8C, 0x71, 0x04, 0xF8, 0xDE, 0xBD, 0x7D, 0x84, 0xC9, 0xE9, 0xD9, 0xC5, + 0xBA, 0xED, 0xFA, 0xBE, 0x37, 0xDA, 0x6A, 0x65, 0xBA, 0xAE, 0xEF, 0xBA, + 0xF6, 0xDE, 0xBD, 0xC3, 0x17, 0x6F, 0x4E, 0x43, 0x88, 0xDE, 0x7B, 0x4E, + 0xE9, 0x64, 0x3C, 0xC0, 0x08, 0x4D, 0xC6, 0x43, 0x3A, 0x9D, 0x5C, 0x5D, + 0x2F, 0x01, 0x22, 0xA5, 0x64, 0x32, 0xAE, 0xAC, 0x75, 0xEB, 0x65, 0xED, + 0xBC, 0x57, 0xC6, 0x8D, 0x47, 0x83, 0xCB, 0xEB, 0x79, 0x88, 0x31, 0x2F, + 0x72, 0x4A, 0xE9, 0xCD, 0xCD, 0x02, 0x10, 0xCC, 0x30, 0x16, 0x82, 0x3F, + 0x7A, 0xEF, 0x68, 0x34, 0x1C, 0x28, 0xAD, 0xC7, 0xC3, 0x41, 0x55, 0xE4, + 0xD7, 0x97, 0xD7, 0xAB, 0xC5, 0x6A, 0x32, 0x2C, 0xA4, 0xE4, 0x11, 0x13, + 0x21, 0xF8, 0xAB, 0xD3, 0x8B, 0xE3, 0xD3, 0xAB, 0xA3, 0xC3, 0xBD, 0x44, + 0x4C, 0x89, 0x08, 0x4D, 0x26, 0xE3, 0xF5, 0xBA, 0xD6, 0x7D, 0xC7, 0x18, + 0x3B, 0xD8, 0x2B, 0x01, 0x00, 0x62, 0xE8, 0xBB, 0x7E, 0x77, 0x32, 0x34, + 0xBD, 0xFA, 0xEC, 0xF3, 0x2F, 0x0F, 0x0F, 0xF6, 0x22, 0xC2, 0x5C, 0x8A, + 0xF7, 0x1E, 0x1E, 0xFD, 0xFC, 0x17, 0x33, 0x29, 0xBC, 0xE0, 0xCC, 0x58, + 0x97, 0xAE, 0x08, 0xB2, 0x65, 0x62, 0xCB, 0x4C, 0x58, 0xEB, 0xAC, 0x35, + 0x04, 0x23, 0x44, 0x48, 0x70, 0xB6, 0x2C, 0xB2, 0xC9, 0x78, 0x50, 0x37, + 0x6D, 0x9E, 0xC9, 0x36, 0x86, 0xB6, 0xEB, 0x10, 0x86, 0x7F, 0xF4, 0xE3, + 0x3F, 0xC8, 0xA5, 0xF8, 0xDB, 0xBF, 0xFF, 0xD5, 0xC1, 0xDE, 0x74, 0x36, + 0x5F, 0xF6, 0x5D, 0x1F, 0x43, 0x18, 0x54, 0x85, 0x94, 0x32, 0x49, 0x32, + 0x63, 0x0C, 0xD6, 0xDA, 0x24, 0xC5, 0x4D, 0x61, 0xDD, 0xC6, 0xBA, 0x1C, + 0xA0, 0x28, 0x64, 0xDB, 0x29, 0x42, 0xE8, 0xD7, 0xCF, 0x8E, 0x7F, 0xF0, + 0xE4, 0xE1, 0xC1, 0xFE, 0x4E, 0xAF, 0x0C, 0xC1, 0x28, 0xC6, 0x98, 0x0E, + 0xCB, 0xB0, 0xF1, 0xC2, 0x86, 0xF9, 0x72, 0x05, 0x08, 0x73, 0xCE, 0xDB, + 0xAE, 0x8B, 0x00, 0x6D, 0xD7, 0x13, 0x8C, 0x11, 0xC6, 0x10, 0x83, 0x52, + 0xE9, 0xFE, 0x71, 0x9C, 0xC9, 0xE0, 0x43, 0xC2, 0xBF, 0x63, 0x88, 0xCE, + 0xA7, 0x68, 0xFA, 0xB0, 0x6E, 0x3A, 0x8C, 0x49, 0x88, 0xD1, 0xFB, 0x90, + 0xB4, 0x19, 0x98, 0x10, 0x8E, 0x90, 0x71, 0xCE, 0x1B, 0xAB, 0xB5, 0x49, + 0x2E, 0xDE, 0x9C, 0xB0, 0x9B, 0xF9, 0x2A, 0x8E, 0x07, 0xB9, 0xE4, 0x8C, + 0x91, 0x10, 0x63, 0x70, 0xC1, 0x24, 0xE8, 0x00, 0xB3, 0x00, 0x21, 0xC4, + 0xD8, 0x34, 0xFD, 0xBA, 0x69, 0x19, 0xE3, 0x8C, 0x12, 0xEB, 0x3D, 0xE3, + 0x29, 0x3E, 0x12, 0xE1, 0x80, 0x22, 0xA0, 0x2D, 0xFD, 0x08, 0x18, 0xA3, + 0x04, 0xA3, 0xA6, 0xED, 0x19, 0x63, 0x92, 0xF3, 0x10, 0x43, 0x55, 0x16, + 0x5A, 0x99, 0x08, 0x51, 0x72, 0xC6, 0x19, 0x9D, 0xAF, 0x56, 0x5A, 0x9B, + 0x22, 0x93, 0x9C, 0xD3, 0xCF, 0x3E, 0xFF, 0xD2, 0x3A, 0xF7, 0xE8, 0xE1, + 0xFD, 0xBD, 0xBD, 0x9D, 0xF1, 0x68, 0x60, 0x8C, 0x99, 0x2F, 0x96, 0x37, + 0xF3, 0xE5, 0xC3, 0xA3, 0xBD, 0x47, 0x0F, 0x0E, 0xFF, 0xF7, 0xFF, 0xF3, + 0xDF, 0x18, 0xE3, 0xFA, 0x5E, 0x7D, 0xFE, 0xC5, 0xB3, 0x47, 0x0F, 0xEF, + 0xBD, 0x7E, 0x73, 0xFA, 0xE0, 0xC1, 0x21, 0x06, 0xF8, 0xDE, 0x07, 0x0F, + 0x87, 0x83, 0x8A, 0x53, 0xEC, 0x9C, 0xE7, 0x8C, 0x9E, 0x9C, 0x5D, 0x9C, + 0xBC, 0xBD, 0x3E, 0x7D, 0x7B, 0x95, 0x66, 0x05, 0x6D, 0x6C, 0x08, 0x8A, + 0x10, 0x9C, 0x49, 0x99, 0x42, 0x66, 0xA4, 0x14, 0x94, 0x92, 0xBE, 0x8F, + 0x52, 0x30, 0x8C, 0x09, 0x63, 0xAC, 0x2A, 0x0B, 0x9D, 0xB0, 0x30, 0xEF, + 0x8B, 0x5C, 0x66, 0x99, 0x18, 0x56, 0x45, 0xAF, 0x4D, 0x99, 0xE7, 0xCE, + 0x59, 0x4A, 0x69, 0x55, 0x64, 0xE7, 0x17, 0x97, 0xA9, 0x17, 0x1B, 0x94, + 0x39, 0x20, 0xA0, 0x18, 0x91, 0xBF, 0xF8, 0x8B, 0x3F, 0x4F, 0xB0, 0x53, + 0x82, 0x30, 0x51, 0xBA, 0xC5, 0x13, 0x7B, 0x2B, 0x04, 0x1F, 0x12, 0xA7, + 0x3A, 0xC4, 0x10, 0x9C, 0x0F, 0xC9, 0xA7, 0x2C, 0x2B, 0x72, 0x2E, 0x44, + 0x82, 0x9C, 0x93, 0x63, 0x54, 0x4A, 0x7E, 0x86, 0x44, 0x2E, 0xC5, 0x89, + 0xF0, 0xF0, 0x0E, 0xA2, 0xFA, 0xFD, 0x85, 0xEC, 0x16, 0x05, 0xFB, 0x3D, + 0x78, 0x7F, 0x8C, 0x31, 0xDC, 0x42, 0xAC, 0x11, 0xA2, 0xF7, 0xCE, 0xB9, + 0xE0, 0x7D, 0x4C, 0xCB, 0x2C, 0x92, 0x12, 0x75, 0xF0, 0xA6, 0xDD, 0xDF, + 0x4C, 0x88, 0xDB, 0xDC, 0xB7, 0xB8, 0xD1, 0xC6, 0x25, 0x0D, 0x12, 0x6C, + 0xF6, 0x8F, 0x9B, 0xA3, 0x74, 0x43, 0xB5, 0xBC, 0xFD, 0xA6, 0xDB, 0x9F, + 0x25, 0xED, 0x40, 0x37, 0xAB, 0xF6, 0x8D, 0x7F, 0x1E, 0xD2, 0x4D, 0xDD, + 0x35, 0x35, 0xA5, 0x2C, 0xCB, 0x32, 0x4A, 0x31, 0xA1, 0x74, 0xB6, 0xEC, + 0x5B, 0xED, 0x8D, 0xF3, 0x4A, 0x9B, 0x18, 0xC1, 0x3A, 0x27, 0x39, 0x3F, + 0xD8, 0xDF, 0x29, 0x8A, 0x5C, 0x48, 0x81, 0x11, 0x4A, 0x66, 0x41, 0x31, + 0x46, 0xE7, 0xBC, 0x0F, 0x5E, 0x5B, 0x1B, 0x01, 0x8C, 0xB1, 0x3A, 0xF9, + 0xFF, 0x08, 0x56, 0x96, 0x39, 0xE7, 0xCC, 0x28, 0xDD, 0x6B, 0x35, 0x1A, + 0x94, 0x87, 0xFB, 0xE3, 0xC1, 0xA0, 0x44, 0x77, 0x4C, 0x41, 0x62, 0x22, + 0xC1, 0xF8, 0x80, 0x62, 0xB0, 0x46, 0x9D, 0x9E, 0x5D, 0x7D, 0xF6, 0xE5, + 0xCB, 0x17, 0xAF, 0xCF, 0x7D, 0x80, 0xA6, 0xD3, 0x6F, 0xDE, 0x5E, 0xF7, + 0xCA, 0x7A, 0x1F, 0xCB, 0xB2, 0xC8, 0xA4, 0x20, 0x84, 0x0C, 0x87, 0x03, + 0x63, 0xDD, 0x72, 0xDD, 0x58, 0xEB, 0x11, 0x26, 0x5D, 0xDF, 0x3B, 0x1F, + 0xDE, 0xBE, 0xBD, 0xCA, 0x32, 0xD1, 0xB7, 0xDD, 0xC5, 0xC5, 0xEC, 0xF4, + 0xEC, 0xBC, 0xC8, 0x05, 0xA7, 0x78, 0x3E, 0x5F, 0xDE, 0xDC, 0xAC, 0xCF, + 0x2F, 0xAE, 0x5E, 0xBF, 0x39, 0x59, 0x2E, 0x57, 0x14, 0x83, 0xEA, 0xFB, + 0xC5, 0x62, 0xD5, 0xB6, 0xDD, 0x7A, 0xBD, 0x5E, 0x2E, 0x57, 0x27, 0x27, + 0xE7, 0xAB, 0x75, 0xDB, 0x36, 0x9D, 0x56, 0x3A, 0x2B, 0x0A, 0xC6, 0xC4, + 0x7C, 0xDD, 0xD4, 0x75, 0xAB, 0x8C, 0x3B, 0x39, 0xBB, 0xF8, 0xC5, 0xA7, + 0x9F, 0xBF, 0x3E, 0x7E, 0xDB, 0x76, 0xE6, 0xF8, 0xF4, 0xA2, 0x6E, 0xD5, + 0x17, 0x5F, 0x3E, 0x2B, 0x72, 0x39, 0x1C, 0x56, 0x75, 0xDD, 0x70, 0xC6, + 0x26, 0x3B, 0xA3, 0xA3, 0xA3, 0x7D, 0xCE, 0xE8, 0x9B, 0xE3, 0xB7, 0x2E, + 0xC0, 0xEE, 0xEE, 0xAE, 0xF5, 0x81, 0x32, 0x36, 0x1C, 0x56, 0x08, 0xE1, + 0xA6, 0xEB, 0xD3, 0x80, 0x3F, 0x9B, 0x2D, 0x3A, 0x65, 0x86, 0x83, 0xC2, + 0x18, 0x5B, 0xE4, 0x19, 0x67, 0x84, 0x50, 0xB2, 0x33, 0x1E, 0x49, 0xC1, + 0x11, 0xC0, 0xC5, 0xC5, 0xAC, 0xAA, 0x4A, 0x21, 0xF8, 0xCD, 0x62, 0xE5, + 0xAC, 0x5D, 0xAE, 0xD6, 0x5B, 0x53, 0x72, 0x00, 0x14, 0x05, 0xE7, 0xC9, + 0xDC, 0x06, 0x21, 0x9C, 0xC2, 0x09, 0x37, 0x38, 0x1A, 0xC6, 0x00, 0x68, + 0x34, 0x1C, 0x24, 0xC3, 0x99, 0xBE, 0xD7, 0x21, 0xC6, 0xE9, 0x64, 0xBC, + 0xB7, 0x3B, 0xB9, 0xB8, 0x9C, 0x11, 0x4A, 0x9B, 0xA6, 0x09, 0x31, 0x24, + 0xB7, 0x19, 0x9C, 0x58, 0x63, 0x21, 0x14, 0x79, 0x46, 0x09, 0xE9, 0x94, + 0xD2, 0xC6, 0x0D, 0x87, 0x15, 0x41, 0xD8, 0x79, 0x6F, 0xAC, 0xCB, 0xA4, + 0x28, 0x8A, 0xBC, 0x6E, 0x3A, 0xC1, 0x58, 0xD7, 0x2B, 0xA5, 0xF5, 0x74, + 0x32, 0xCC, 0x33, 0x11, 0x63, 0xC4, 0x5B, 0x5E, 0x7F, 0xBA, 0x82, 0x30, + 0x42, 0x9F, 0x7E, 0xFE, 0x74, 0xBE, 0xAC, 0x11, 0x8A, 0x31, 0x44, 0x2E, + 0x78, 0x5A, 0x88, 0x27, 0xBF, 0x79, 0x46, 0x49, 0x62, 0xE4, 0x4B, 0xC9, + 0x93, 0x45, 0x9E, 0x60, 0x04, 0x22, 0xB8, 0xB0, 0xC9, 0x8A, 0x8E, 0x01, + 0x36, 0x22, 0x6D, 0x88, 0x21, 0x82, 0xD2, 0xB6, 0x69, 0xFB, 0xE4, 0xC0, + 0x0E, 0x00, 0xD6, 0x59, 0x8C, 0x49, 0xF0, 0xDE, 0x79, 0x8F, 0x11, 0x9E, + 0x4E, 0x86, 0x52, 0x70, 0x6B, 0xDD, 0x96, 0x42, 0x14, 0x43, 0x08, 0xDE, + 0x85, 0x10, 0x42, 0xAF, 0x8C, 0xD2, 0xD6, 0x58, 0xEF, 0xB6, 0x14, 0x5E, + 0xBB, 0x21, 0x91, 0x6D, 0x6E, 0x64, 0xEF, 0x1D, 0xA7, 0x2C, 0x21, 0xCE, + 0xC6, 0x5A, 0x00, 0x44, 0x08, 0x49, 0xAC, 0x7D, 0x80, 0x98, 0x9C, 0x2C, + 0x31, 0x02, 0xAD, 0x4D, 0xD3, 0x76, 0x94, 0xD2, 0x22, 0x17, 0x07, 0x07, + 0xFB, 0xD6, 0xB9, 0xAA, 0xCC, 0x23, 0x80, 0xCC, 0x44, 0x26, 0x05, 0x63, + 0xF4, 0x7A, 0xB6, 0x18, 0x0F, 0x87, 0x52, 0xB0, 0x7F, 0xFC, 0x93, 0x8F, + 0x57, 0x4D, 0xBF, 0x98, 0xAF, 0xDB, 0xB6, 0x7B, 0x73, 0x7A, 0x2E, 0x84, + 0xDC, 0x9D, 0xEE, 0x7C, 0xF8, 0xF8, 0x61, 0x26, 0x79, 0x02, 0x80, 0xFE, + 0xF6, 0xEF, 0x3F, 0xFF, 0xF2, 0x9B, 0xE7, 0x93, 0xD1, 0xE0, 0xB3, 0x2F, + 0x9E, 0x09, 0x21, 0xD6, 0x75, 0x27, 0x04, 0x13, 0x9C, 0x33, 0x4A, 0xC6, + 0xA3, 0x01, 0x63, 0xCC, 0x18, 0x93, 0x09, 0x3E, 0x1D, 0x0F, 0xF7, 0x76, + 0xC7, 0x45, 0x2E, 0xF2, 0x4C, 0x60, 0x8C, 0x11, 0x02, 0x1F, 0x42, 0x96, + 0xC9, 0x3C, 0x97, 0x21, 0x04, 0x82, 0xC9, 0x83, 0xFB, 0xFB, 0x0F, 0xEF, + 0xEF, 0x4F, 0x27, 0xA3, 0x87, 0xF7, 0x0F, 0xF7, 0xA6, 0xE3, 0x22, 0x93, + 0xE3, 0xD1, 0x20, 0x97, 0xDC, 0x1A, 0x27, 0x04, 0xCB, 0x33, 0x91, 0x67, + 0x22, 0xA4, 0xB4, 0x8D, 0x9F, 0xFD, 0xEC, 0x2F, 0x92, 0x5F, 0x02, 0x20, + 0x84, 0x30, 0xA1, 0x8C, 0x11, 0x4A, 0x31, 0xA1, 0x08, 0x23, 0x4C, 0x28, + 0x46, 0x38, 0x01, 0x68, 0x08, 0x01, 0xC1, 0x1B, 0xDB, 0x9C, 0x2C, 0xCB, + 0x31, 0x41, 0xE9, 0xE5, 0x10, 0x42, 0x48, 0x29, 0x38, 0xE7, 0xE9, 0x2D, + 0xA1, 0x8C, 0x11, 0xF6, 0x0E, 0x4F, 0xFD, 0xFF, 0xF8, 0xF8, 0xCE, 0xBC, + 0x99, 0x2E, 0x14, 0x78, 0xE7, 0xED, 0xBA, 0xAD, 0x2C, 0xDB, 0xF5, 0x70, + 0x22, 0x5B, 0xA5, 0x8F, 0x44, 0x84, 0xB7, 0xFA, 0x91, 0xF4, 0xD5, 0x1B, + 0xDE, 0x33, 0xA0, 0x98, 0xB8, 0x3E, 0x77, 0xDB, 0x9C, 0x77, 0x83, 0x2C, + 0x22, 0xDB, 0xDA, 0xBD, 0xD9, 0x8C, 0xA2, 0xCD, 0x73, 0x6E, 0x63, 0xA4, + 0x01, 0x61, 0x42, 0x55, 0xBD, 0xD0, 0xAA, 0x8F, 0x01, 0xB2, 0x5C, 0x58, + 0x1F, 0xDF, 0xBC, 0x5D, 0x36, 0xCA, 0xA7, 0x3D, 0x51, 0xAF, 0x94, 0xF7, + 0x31, 0x02, 0x12, 0x82, 0xE7, 0x99, 0x48, 0x32, 0xE0, 0x34, 0xBF, 0xC4, + 0x08, 0xD6, 0x79, 0x6D, 0x4C, 0xFA, 0xFF, 0x10, 0xA2, 0x77, 0x01, 0x21, + 0xC4, 0x18, 0xE5, 0x82, 0x73, 0x46, 0x19, 0x21, 0x21, 0x86, 0xAA, 0xCC, + 0xF7, 0xF7, 0x26, 0xD5, 0xB0, 0xA2, 0x84, 0xC4, 0xED, 0x00, 0x9D, 0xC8, + 0x32, 0x8C, 0x10, 0x6B, 0xF5, 0xC5, 0xE5, 0xEC, 0xD3, 0xCF, 0x5F, 0xFC, + 0xF2, 0xF3, 0x17, 0x57, 0x37, 0x2B, 0x4A, 0xD9, 0xF5, 0x62, 0x7D, 0x7E, + 0xB5, 0xC0, 0x08, 0x65, 0x59, 0xCE, 0x18, 0x4D, 0xAF, 0x9A, 0xB1, 0x6E, + 0xBE, 0xA8, 0x4F, 0xCF, 0x2E, 0x7E, 0xFE, 0xE9, 0xE7, 0x4A, 0x69, 0xCE, + 0x59, 0xDD, 0x76, 0x6F, 0x8E, 0xDF, 0x5E, 0x5E, 0xCD, 0x54, 0xD7, 0xFF, + 0xF6, 0x8B, 0x6F, 0x56, 0x75, 0x53, 0xE4, 0x39, 0x25, 0xF0, 0xE8, 0xFE, + 0xC1, 0x7C, 0xB9, 0x3E, 0x7B, 0x7B, 0x49, 0x08, 0x79, 0x70, 0xFF, 0xB0, + 0x2A, 0x8B, 0xE1, 0xA0, 0x8C, 0x11, 0x08, 0x25, 0xB9, 0x60, 0x28, 0xC6, + 0x24, 0xA4, 0x48, 0x5A, 0xC5, 0xD1, 0x68, 0xE8, 0x9C, 0xF7, 0x11, 0x96, + 0xEB, 0xF6, 0xF9, 0x8B, 0x63, 0x6B, 0x7D, 0x26, 0x84, 0x73, 0x61, 0xBA, + 0xBB, 0xB3, 0xB7, 0x3B, 0xB9, 0x59, 0xAC, 0xDE, 0xBC, 0x39, 0xB9, 0xBC, + 0xBC, 0x7E, 0xF5, 0xE6, 0xF4, 0xC9, 0x07, 0x0F, 0x19, 0x25, 0x5D, 0xD7, + 0x59, 0x63, 0x38, 0xA3, 0x32, 0x2F, 0x44, 0x96, 0x2B, 0xA5, 0xAF, 0x67, + 0x0B, 0x6B, 0xED, 0xA0, 0x2A, 0xEB, 0xA6, 0xBD, 0x9E, 0xCD, 0x93, 0xF1, + 0x61, 0xDB, 0xA9, 0xB6, 0xEB, 0x38, 0xA3, 0x9C, 0x33, 0x8C, 0x50, 0x8C, + 0xA1, 0x1A, 0x54, 0x55, 0x59, 0x3A, 0xE7, 0xBB, 0xAE, 0xC7, 0x84, 0x24, + 0x76, 0xF8, 0x87, 0x8F, 0xDF, 0x13, 0x52, 0x5C, 0xCF, 0x96, 0x4A, 0x29, + 0x8C, 0xB1, 0xDB, 0xA4, 0x07, 0x21, 0x84, 0x21, 0xA5, 0xC7, 0x27, 0x51, + 0x9A, 0x10, 0x2C, 0x2F, 0x72, 0xC1, 0x59, 0xDD, 0x34, 0x79, 0x96, 0x85, + 0x10, 0x84, 0xE0, 0xBB, 0x3B, 0xE3, 0xF9, 0x62, 0x95, 0x32, 0xC4, 0x9C, + 0x0B, 0xDF, 0x3C, 0x7B, 0xD9, 0x34, 0xAD, 0x94, 0x82, 0x52, 0x6A, 0xB4, + 0x49, 0x96, 0xAA, 0x29, 0x20, 0x46, 0x69, 0x4D, 0x29, 0xAD, 0xAA, 0xC2, + 0xFB, 0x60, 0x8D, 0xBD, 0xD5, 0x93, 0xA7, 0xE4, 0x51, 0x6D, 0xAC, 0xE0, + 0xCC, 0x58, 0x7B, 0x7A, 0x7E, 0xDD, 0x2B, 0xFD, 0x87, 0x1F, 0x3F, 0xB6, + 0xD6, 0xA5, 0x41, 0x24, 0x5D, 0x45, 0x08, 0x21, 0x88, 0xE1, 0x17, 0x9F, + 0x7F, 0x53, 0x37, 0x7D, 0x3A, 0x22, 0x13, 0x17, 0xC4, 0x5A, 0xBB, 0xBD, + 0xD8, 0x20, 0x86, 0x90, 0x3C, 0xD3, 0x01, 0x80, 0x60, 0x44, 0x09, 0x62, + 0x94, 0x60, 0x4C, 0x30, 0x21, 0xC9, 0x54, 0x7D, 0xE3, 0x14, 0x16, 0xA3, + 0xF3, 0xA1, 0x6D, 0xBB, 0xE4, 0x8C, 0xEA, 0x7D, 0xF0, 0xDE, 0xDF, 0xD6, + 0x3B, 0xAD, 0x0D, 0x26, 0x78, 0x58, 0x15, 0x49, 0x16, 0x90, 0x64, 0x4C, + 0xD6, 0x38, 0x6D, 0x5C, 0xA7, 0x0D, 0xC1, 0x38, 0xC6, 0x60, 0x7D, 0x68, + 0x7B, 0xE5, 0xBD, 0x4F, 0x61, 0x3D, 0x21, 0x80, 0x31, 0x36, 0x19, 0x43, + 0x85, 0xE0, 0x11, 0xC2, 0x21, 0x06, 0xCE, 0x68, 0x51, 0x66, 0xD6, 0x58, + 0xCE, 0x39, 0x63, 0x84, 0x31, 0x8A, 0x30, 0xA4, 0xEE, 0x52, 0x6B, 0xA3, + 0x8D, 0x6D, 0x9A, 0x16, 0x10, 0x2E, 0x8B, 0x7C, 0xBE, 0x58, 0x95, 0x65, + 0x59, 0x96, 0x25, 0xC2, 0xF8, 0x7B, 0x1F, 0x3C, 0x7C, 0xFC, 0xDE, 0x51, + 0x9E, 0x8B, 0xC9, 0x64, 0x7C, 0x7E, 0x71, 0x4D, 0x09, 0xBD, 0xBE, 0x59, + 0x44, 0x04, 0xC6, 0xFA, 0x37, 0x27, 0x6F, 0xCB, 0x3C, 0x3B, 0xD8, 0xDF, + 0x3B, 0x38, 0x3C, 0x58, 0xAD, 0xEB, 0x07, 0x47, 0xFB, 0x84, 0xE0, 0xA6, + 0x53, 0x17, 0x97, 0xF3, 0xB3, 0xF3, 0xAB, 0x1F, 0x7E, 0xF4, 0x64, 0x3A, + 0x1D, 0x5F, 0x5D, 0xCD, 0xA5, 0x94, 0x29, 0x61, 0x7A, 0x50, 0x16, 0xCE, + 0x6F, 0xC2, 0xB3, 0x29, 0x25, 0xA3, 0x61, 0x35, 0x1A, 0x96, 0x83, 0x2A, + 0x1B, 0x94, 0x05, 0x67, 0x14, 0xA5, 0x13, 0x2B, 0x02, 0x17, 0xAC, 0x69, + 0x7B, 0xA3, 0x37, 0x59, 0xD7, 0x79, 0x9E, 0x31, 0x46, 0x29, 0x41, 0x21, + 0x06, 0xC6, 0x18, 0xA5, 0xC4, 0x18, 0x5B, 0x94, 0x59, 0x55, 0x66, 0x99, + 0x14, 0x89, 0xFF, 0xCC, 0x28, 0x25, 0x7F, 0xF9, 0xB3, 0xBF, 0xD8, 0x84, + 0xF6, 0xA1, 0x84, 0xF1, 0x13, 0x42, 0xEF, 0x46, 0x7F, 0x63, 0x82, 0x92, + 0x2F, 0x18, 0xE2, 0x9C, 0x61, 0x82, 0x29, 0xA1, 0x42, 0x4A, 0x92, 0x60, + 0x75, 0x42, 0xEF, 0xF2, 0x24, 0x36, 0x0B, 0x41, 0xF8, 0x56, 0x93, 0xF5, + 0x0E, 0xE3, 0xFF, 0x7F, 0xDB, 0x03, 0xC0, 0xB6, 0x1B, 0x01, 0x94, 0x78, + 0x35, 0x11, 0x50, 0x04, 0x14, 0xD3, 0xD1, 0x17, 0x51, 0xA4, 0x94, 0x30, + 0xCA, 0x31, 0xC2, 0x11, 0x60, 0x0B, 0x86, 0xC5, 0xAD, 0x3B, 0x6C, 0xDA, + 0x8B, 0x6F, 0xB7, 0x07, 0x1B, 0xEA, 0xD5, 0xB7, 0xB8, 0x57, 0xDB, 0x7F, + 0x0B, 0x27, 0xFB, 0xE2, 0x2D, 0x74, 0x9B, 0xAE, 0x39, 0x8C, 0x31, 0x4E, + 0xEE, 0x3D, 0x10, 0x23, 0x40, 0x24, 0x04, 0x39, 0x67, 0x66, 0x97, 0x57, + 0xCB, 0x5A, 0xF9, 0x88, 0x22, 0x62, 0xD7, 0x2B, 0xED, 0x81, 0x94, 0x45, + 0x16, 0x82, 0xDF, 0x54, 0x3A, 0x8C, 0x38, 0xA5, 0x59, 0x2E, 0x72, 0x29, + 0x93, 0x11, 0x6D, 0x9A, 0x80, 0xFC, 0x66, 0x77, 0xB2, 0x69, 0x02, 0xD3, + 0x31, 0x89, 0x30, 0x22, 0x14, 0x33, 0x4A, 0x29, 0xC1, 0x94, 0xD2, 0x4C, + 0x8A, 0xAA, 0x2A, 0x64, 0x26, 0x10, 0xDA, 0x58, 0x8D, 0xC7, 0x10, 0x31, + 0x44, 0x82, 0xD1, 0x7A, 0x5D, 0xBF, 0x7C, 0x7D, 0xF6, 0xD5, 0xD3, 0x93, + 0x4F, 0x3F, 0x7F, 0x71, 0xB3, 0xEA, 0x12, 0x02, 0xAD, 0xB5, 0xE3, 0x8C, + 0x15, 0x79, 0x66, 0x8D, 0x5D, 0xAE, 0x9A, 0xE0, 0xCC, 0x62, 0xB9, 0x0E, + 0x80, 0xBF, 0xFC, 0xE6, 0xC5, 0xC9, 0xE9, 0xE5, 0xC9, 0xD9, 0xF9, 0x74, + 0x3A, 0x8E, 0x31, 0x5E, 0x5E, 0xDD, 0x34, 0x6D, 0xAF, 0x94, 0xE6, 0x8C, + 0xBD, 0x7D, 0x7B, 0x19, 0x63, 0xCC, 0xB3, 0x2C, 0xCF, 0xB2, 0xE0, 0xBD, + 0xF7, 0xE1, 0x7A, 0xB6, 0xE8, 0x3A, 0x35, 0x1A, 0x0D, 0x26, 0x93, 0x51, + 0x9E, 0xE7, 0xD6, 0xB9, 0xE9, 0x78, 0xB8, 0xBF, 0x3B, 0xB9, 0x7F, 0x6F, + 0xEF, 0x60, 0x7F, 0x37, 0xC6, 0xC8, 0xA5, 0xE0, 0x82, 0xE7, 0x59, 0xEE, + 0xBC, 0x7F, 0x7B, 0x39, 0x6B, 0xDA, 0xBE, 0x69, 0xBB, 0xE1, 0x60, 0xB0, + 0xBB, 0x3B, 0xE5, 0x9C, 0x9D, 0x5F, 0x5C, 0x2F, 0x57, 0xEB, 0x97, 0xAF, + 0x4E, 0xD6, 0xAB, 0x15, 0x42, 0x68, 0x50, 0xE6, 0x9C, 0xD2, 0xB3, 0xF3, + 0xCB, 0x4F, 0x3E, 0x7A, 0x32, 0x1C, 0x94, 0xAB, 0xBA, 0xED, 0x3A, 0x85, + 0x10, 0xA6, 0x94, 0x51, 0xC6, 0xDA, 0x4E, 0xB5, 0x9D, 0x5A, 0x2D, 0xD7, + 0x6D, 0xDD, 0x2A, 0xAD, 0x11, 0xC6, 0x83, 0x41, 0xE5, 0xBD, 0xEF, 0xBB, + 0x9E, 0x73, 0x96, 0x17, 0x39, 0x63, 0x34, 0xCB, 0x32, 0xC6, 0x58, 0x8C, + 0xB1, 0xEB, 0xFB, 0xBE, 0xD7, 0xC1, 0x07, 0x21, 0xB8, 0xB1, 0xF6, 0xCB, + 0xAF, 0x9E, 0xED, 0x4D, 0x77, 0x76, 0x77, 0x77, 0x6E, 0x6E, 0x96, 0x00, + 0x60, 0x8C, 0x21, 0x1B, 0x6D, 0x56, 0xA4, 0x94, 0xA6, 0xE8, 0x46, 0x8C, + 0x91, 0xD6, 0x36, 0x7A, 0x9F, 0x4B, 0x41, 0x30, 0x56, 0x5A, 0x03, 0x20, + 0x29, 0x45, 0xE2, 0x31, 0x21, 0x84, 0xBA, 0xBE, 0xFF, 0xE9, 0x4F, 0xFE, + 0x60, 0x3C, 0xAC, 0xBE, 0x7E, 0xFA, 0x72, 0x50, 0x55, 0x18, 0x63, 0x6D, + 0x4C, 0xB2, 0x1A, 0x47, 0xC9, 0xDD, 0x04, 0xE3, 0x5E, 0xA9, 0xAA, 0x2C, + 0x11, 0x46, 0xD7, 0x37, 0x0B, 0x29, 0xA4, 0x77, 0x5E, 0x69, 0x9B, 0x0C, + 0x94, 0x93, 0x47, 0xA0, 0xB1, 0x0E, 0x01, 0x9C, 0x5F, 0xDE, 0xF8, 0xE0, + 0xFF, 0xE0, 0xC3, 0x47, 0xC9, 0x63, 0x0E, 0x20, 0x4A, 0xCE, 0x87, 0x55, + 0xD6, 0x74, 0xDD, 0xDF, 0xFC, 0xFC, 0xCB, 0x34, 0x34, 0x61, 0x8C, 0x09, + 0xC6, 0xC6, 0xDA, 0x10, 0x02, 0xE7, 0x3C, 0xC4, 0x68, 0xB4, 0xA1, 0x04, + 0x27, 0xA0, 0x07, 0x20, 0x32, 0x46, 0x04, 0x67, 0x45, 0x91, 0x13, 0x42, + 0x28, 0x46, 0x99, 0xE0, 0x22, 0x13, 0x9C, 0x51, 0x46, 0x49, 0x08, 0xD1, + 0x79, 0xDF, 0x76, 0x3D, 0x42, 0x28, 0xCB, 0x64, 0xAA, 0xD1, 0xC9, 0xD7, + 0xD3, 0x85, 0x40, 0x09, 0x21, 0x04, 0x17, 0x85, 0x10, 0x8C, 0x39, 0xEF, + 0x29, 0x26, 0x5A, 0xDB, 0xBA, 0xED, 0x51, 0x8A, 0xB6, 0x45, 0x40, 0x08, + 0xA9, 0xDB, 0xCE, 0x59, 0x07, 0x08, 0xE5, 0x99, 0x8C, 0x21, 0x12, 0x8C, + 0xCA, 0x22, 0xDB, 0x9B, 0x8E, 0x19, 0xA5, 0x75, 0xD3, 0xE6, 0x79, 0x46, + 0x30, 0x26, 0x94, 0xA4, 0xB2, 0x15, 0x63, 0x64, 0x9C, 0x15, 0x99, 0x44, + 0x31, 0xD6, 0x6D, 0x6F, 0xAD, 0xED, 0xB5, 0x6E, 0x9B, 0x0E, 0x23, 0xF4, + 0xF8, 0x83, 0x47, 0x93, 0x9D, 0x91, 0x31, 0xEE, 0xFC, 0xFC, 0xBA, 0x2C, + 0xCB, 0xA4, 0x61, 0xBA, 0xBA, 0x59, 0xC4, 0x00, 0x55, 0x21, 0x6F, 0x6E, + 0x56, 0xC7, 0xA7, 0xE7, 0x27, 0x67, 0xE7, 0xBF, 0xFC, 0xF5, 0x57, 0x97, + 0x57, 0x37, 0x31, 0xC6, 0x22, 0xCF, 0x92, 0x4D, 0x96, 0x0F, 0x41, 0x6B, + 0xFB, 0xCD, 0xF3, 0x37, 0xFF, 0xF6, 0xDF, 0xFD, 0xEA, 0xF3, 0x2F, 0xBE, + 0x39, 0xD8, 0x1D, 0xFF, 0xA7, 0xFF, 0xEC, 0xA7, 0xFF, 0xEE, 0x17, 0xBF, + 0x61, 0x9C, 0xAF, 0x56, 0x75, 0xF0, 0x1E, 0x00, 0x06, 0x65, 0x4E, 0x09, + 0xE9, 0x95, 0xAA, 0x9B, 0x96, 0x51, 0xF6, 0xF0, 0xFE, 0xFE, 0xCE, 0x64, + 0xC0, 0x19, 0x4D, 0xF2, 0xC7, 0x64, 0xD0, 0x16, 0x62, 0xB4, 0xD6, 0x49, + 0xC1, 0xCB, 0x22, 0xD3, 0xC6, 0x22, 0x80, 0x4C, 0xF2, 0x18, 0xA3, 0xE4, + 0x9C, 0x31, 0xAA, 0xB4, 0x01, 0x00, 0x42, 0x88, 0xE0, 0x4C, 0x6E, 0x0A, + 0x18, 0xF1, 0x21, 0x86, 0xE0, 0xC9, 0x5F, 0xFE, 0xE5, 0xCF, 0x36, 0x88, + 0xD1, 0x26, 0x7E, 0x3C, 0xF9, 0xF7, 0x6F, 0xAA, 0x40, 0x04, 0x00, 0x4C, + 0x92, 0x41, 0x42, 0x62, 0xE5, 0x31, 0x21, 0x98, 0x10, 0x38, 0x41, 0x97, + 0x1B, 0x8E, 0x57, 0x8C, 0x31, 0x04, 0xEF, 0x21, 0x42, 0xF4, 0xEE, 0xB6, + 0x30, 0xC5, 0x10, 0x62, 0xF0, 0x46, 0xF7, 0x56, 0x2B, 0xBC, 0x89, 0x29, + 0x8E, 0x5B, 0x0F, 0xFD, 0x6F, 0xD7, 0xAF, 0xDB, 0x7A, 0x07, 0x00, 0x9B, + 0xC3, 0xEE, 0x16, 0x3D, 0x4B, 0x75, 0x27, 0x26, 0x18, 0x0B, 0xB6, 0x5F, + 0x16, 0x20, 0x6C, 0xA3, 0xA0, 0xB7, 0xD4, 0x9E, 0x6D, 0x10, 0x4B, 0x1A, + 0x72, 0xEF, 0x3E, 0x7F, 0xDC, 0xF6, 0xE2, 0x08, 0xE3, 0x4D, 0x0D, 0xBB, + 0xD3, 0xBB, 0xA5, 0x4E, 0x74, 0xDB, 0x00, 0x42, 0x04, 0x20, 0x84, 0x5E, + 0x5E, 0x5E, 0x7E, 0xF6, 0xD9, 0xD7, 0xBD, 0x89, 0xC6, 0x43, 0xA7, 0xBD, + 0x76, 0x91, 0x32, 0x56, 0xE4, 0x79, 0x8C, 0xE0, 0x7C, 0xF0, 0x31, 0xA4, + 0x7D, 0xAA, 0x94, 0x3C, 0xA5, 0x8D, 0xDE, 0xFE, 0x22, 0xA9, 0x78, 0xA5, + 0x95, 0xFF, 0x2D, 0x32, 0x92, 0xBA, 0x3D, 0x8C, 0x71, 0x88, 0x11, 0x21, + 0x9C, 0x38, 0x04, 0x18, 0x93, 0x34, 0xEF, 0x78, 0xEB, 0x19, 0x21, 0x14, + 0xC3, 0xAA, 0x6E, 0x7E, 0xF3, 0xF5, 0xAB, 0x7F, 0xF3, 0x77, 0xBF, 0xF9, + 0xFA, 0xD9, 0xE9, 0x8B, 0xE3, 0x0B, 0x21, 0x65, 0x32, 0x0E, 0xCA, 0xA4, + 0xA4, 0x14, 0x4B, 0x29, 0x9A, 0xB6, 0x7B, 0x73, 0xF2, 0x76, 0x36, 0x9B, + 0xDD, 0xDC, 0xAC, 0x1C, 0xA0, 0x8B, 0xEB, 0x45, 0xD3, 0x74, 0x4D, 0xD7, + 0x5B, 0x63, 0x38, 0x63, 0xEF, 0xBF, 0xFF, 0x70, 0x6F, 0x7F, 0xCF, 0x38, + 0x77, 0x73, 0x33, 0xBF, 0xB9, 0x99, 0x03, 0xC4, 0xF1, 0xA0, 0xE2, 0x9C, + 0xAF, 0xD6, 0x75, 0xF0, 0x61, 0xB9, 0xAA, 0x63, 0x84, 0xBD, 0xE9, 0x38, + 0x06, 0x7F, 0x73, 0xB3, 0x38, 0x3D, 0x7D, 0xBB, 0x58, 0x2C, 0xF7, 0xA6, + 0x93, 0xF1, 0xA0, 0x1C, 0x0F, 0x0B, 0x82, 0xB1, 0x0F, 0x00, 0x08, 0x9F, + 0xBD, 0xBD, 0xB4, 0x2E, 0xAC, 0xEB, 0xCE, 0xFA, 0xF8, 0xF5, 0xD3, 0x57, + 0x31, 0x80, 0x36, 0xF6, 0x57, 0xBF, 0xFE, 0xE2, 0x97, 0x9F, 0x7D, 0xD1, + 0x2B, 0xBD, 0xAE, 0x6B, 0x4E, 0xF0, 0x74, 0x32, 0x2C, 0xF2, 0xCC, 0x79, + 0x2F, 0x04, 0x6F, 0xDA, 0xFE, 0xF8, 0xE4, 0x3C, 0x44, 0x78, 0xF1, 0xF2, + 0x98, 0x31, 0xD6, 0x34, 0xAD, 0x75, 0x9E, 0x32, 0x7A, 0x78, 0xB8, 0xB7, + 0xBF, 0xB7, 0xB3, 0xB3, 0x33, 0x4E, 0xA6, 0x43, 0x42, 0x8A, 0x2C, 0xCB, + 0x8E, 0x8E, 0x0E, 0x8B, 0x42, 0x16, 0xB9, 0x18, 0x8F, 0x06, 0x3E, 0x84, + 0xB8, 0x09, 0x67, 0x40, 0xCE, 0x79, 0x63, 0xED, 0xB2, 0x6E, 0xDA, 0x4E, + 0x75, 0x5D, 0x1F, 0x9C, 0xFB, 0xED, 0x57, 0xCF, 0x31, 0xA1, 0x1F, 0x7C, + 0xF0, 0x60, 0xB5, 0xAA, 0xDB, 0xAE, 0xBF, 0x7D, 0x79, 0xB3, 0x4C, 0xA6, + 0x04, 0x49, 0x8C, 0x09, 0xE7, 0x4C, 0x8A, 0xE4, 0x95, 0xE9, 0x19, 0xA5, + 0x8C, 0x52, 0xEB, 0x9D, 0xB5, 0x1E, 0x63, 0x64, 0x8C, 0xDD, 0xD9, 0x19, + 0xFF, 0xF4, 0x8F, 0x3E, 0x16, 0x52, 0x28, 0x65, 0xB4, 0xD6, 0x79, 0x26, + 0x31, 0x46, 0x89, 0x67, 0x2F, 0x04, 0xE7, 0x9C, 0xDD, 0x3B, 0xD8, 0x6B, + 0xBB, 0xBE, 0x69, 0x3B, 0x6B, 0x5C, 0x8A, 0x59, 0xA0, 0x8C, 0x02, 0x02, + 0xE7, 0x3D, 0xE7, 0x2C, 0xCB, 0x84, 0xD6, 0xC6, 0x5A, 0x0B, 0x31, 0x22, + 0x84, 0xDF, 0x9C, 0x5C, 0x4C, 0x46, 0xE5, 0xE3, 0xF7, 0x0E, 0xBD, 0xF7, + 0x65, 0x2E, 0x4F, 0xCF, 0xAF, 0x9E, 0xBE, 0x3C, 0xFD, 0x9B, 0x9F, 0x7F, + 0x71, 0x71, 0xBD, 0x48, 0x55, 0xAC, 0xEB, 0xFA, 0x10, 0x63, 0xD8, 0x5A, + 0x7A, 0x59, 0x6B, 0xB5, 0x56, 0x00, 0x50, 0x96, 0xC5, 0x76, 0xCB, 0x84, + 0xA4, 0xE0, 0x5C, 0xF0, 0x4D, 0xDB, 0x0E, 0xD1, 0x6D, 0xDD, 0xA9, 0xAD, + 0x73, 0xA9, 0x8D, 0x12, 0x82, 0x3B, 0xBF, 0x09, 0xD3, 0xF5, 0xDE, 0xA7, + 0x02, 0xC1, 0x28, 0xE1, 0x8C, 0xA5, 0xA3, 0x98, 0x71, 0x06, 0x00, 0xBD, + 0xD2, 0x4D, 0xA7, 0xEA, 0xA6, 0xCB, 0x32, 0x89, 0x23, 0x38, 0xEF, 0x93, + 0xFF, 0x84, 0x0F, 0x01, 0x01, 0x2A, 0x72, 0x29, 0x04, 0xAD, 0x8A, 0x8C, + 0x53, 0xD2, 0xB4, 0x3D, 0x42, 0xB8, 0x2C, 0x8A, 0x00, 0x31, 0xBD, 0xC8, + 0x14, 0x13, 0x4C, 0x08, 0x00, 0x08, 0xC6, 0xDA, 0xAE, 0x77, 0xD6, 0xF7, + 0xDA, 0xE4, 0x99, 0xE8, 0x7A, 0xB5, 0x5A, 0xD5, 0xD6, 0xC7, 0xB7, 0x17, + 0xB3, 0x3C, 0xCB, 0xCA, 0x22, 0xFF, 0xE8, 0x07, 0x8F, 0x8D, 0x31, 0x82, + 0xF3, 0x67, 0x2F, 0x8E, 0x2F, 0xAE, 0x66, 0x52, 0x88, 0x9B, 0xC5, 0xF2, + 0xD9, 0xF3, 0x37, 0x42, 0x08, 0x2E, 0xB8, 0x52, 0x0A, 0x21, 0xB4, 0xAE, + 0x1B, 0x04, 0x68, 0x38, 0x1A, 0x32, 0x42, 0x96, 0xEB, 0xFA, 0x57, 0xBF, + 0xFE, 0xA2, 0xAE, 0x1B, 0xA5, 0x0D, 0x25, 0xE4, 0xE8, 0x68, 0xEF, 0xCD, + 0xC9, 0xF9, 0x7A, 0x55, 0xAF, 0x9B, 0x76, 0xB1, 0x5A, 0x0B, 0xC1, 0x27, + 0xA3, 0x72, 0x34, 0x2C, 0x47, 0xC3, 0x6A, 0x34, 0xA8, 0xA6, 0x93, 0xE1, + 0xDE, 0x74, 0x54, 0x16, 0x92, 0x92, 0x8D, 0x61, 0x43, 0x9A, 0x25, 0x09, + 0x46, 0x6D, 0xA7, 0x39, 0x63, 0xC3, 0x41, 0x8E, 0x10, 0x26, 0x04, 0x53, + 0x8A, 0x29, 0x21, 0xDE, 0xF9, 0xB6, 0x53, 0x5D, 0xAF, 0x19, 0xA5, 0x65, + 0x91, 0x71, 0x46, 0x53, 0xA1, 0xEF, 0xB5, 0x56, 0xC6, 0x3A, 0xEF, 0xC9, + 0x5F, 0xFC, 0xF9, 0x9F, 0xA7, 0x46, 0x08, 0xBE, 0xC5, 0xA9, 0x7A, 0x17, + 0x81, 0x99, 0x1A, 0x2D, 0x94, 0x2C, 0x70, 0x28, 0x23, 0x94, 0xDE, 0x72, + 0x67, 0x9D, 0xB5, 0xCE, 0x98, 0xE0, 0x1D, 0x42, 0x10, 0x82, 0x37, 0xAA, + 0x77, 0x56, 0x13, 0x42, 0x10, 0xC6, 0xDE, 0x19, 0x67, 0x75, 0xDF, 0x34, + 0x6D, 0xD3, 0x76, 0x6D, 0xA7, 0xBA, 0x4E, 0x29, 0x65, 0xAD, 0xC5, 0x04, + 0x41, 0x08, 0x28, 0xA5, 0x21, 0xDD, 0x65, 0x6C, 0xC4, 0x88, 0xB6, 0xF0, + 0x7F, 0xDA, 0x51, 0xA6, 0xB5, 0xE3, 0x6D, 0xE4, 0xE7, 0x06, 0x96, 0x00, + 0x84, 0xE0, 0xDD, 0x1A, 0x61, 0x53, 0xAE, 0xD0, 0xED, 0xF8, 0xB9, 0x7D, + 0x82, 0xDB, 0xE6, 0x7F, 0xFB, 0xA3, 0xC2, 0x36, 0x67, 0x00, 0x10, 0x24, + 0x56, 0xD0, 0xB6, 0x80, 0x92, 0xAD, 0x3B, 0xCB, 0x76, 0x0D, 0x4A, 0x48, + 0x5B, 0xD7, 0x5F, 0x7E, 0xF9, 0x2C, 0x04, 0xA0, 0x8C, 0x30, 0xC6, 0x9D, + 0x0B, 0xD6, 0x05, 0x46, 0xE9, 0x3B, 0xE5, 0x23, 0xC1, 0x98, 0x60, 0x4A, + 0x89, 0x10, 0x7C, 0xB3, 0x8E, 0xDA, 0x3E, 0xC2, 0x36, 0x4F, 0x3C, 0xD1, + 0x20, 0x7D, 0xCA, 0x43, 0x44, 0x18, 0x21, 0xE4, 0xAC, 0x4F, 0x37, 0x0C, + 0xC6, 0x18, 0x22, 0x38, 0xEF, 0x9D, 0x75, 0x31, 0x46, 0xC6, 0xC8, 0x7C, + 0xB1, 0xFA, 0xC5, 0x67, 0x4F, 0x3F, 0xFD, 0xCD, 0xCB, 0x57, 0x6F, 0xAE, + 0xA4, 0xCC, 0x76, 0x76, 0x76, 0xA4, 0xE0, 0x45, 0x9E, 0x23, 0x88, 0x59, + 0x26, 0x19, 0xA5, 0xF3, 0xE5, 0xFA, 0x57, 0xBF, 0xF9, 0x06, 0x10, 0xFE, + 0xE7, 0x7F, 0xFA, 0x1F, 0xFD, 0xE1, 0x27, 0x1F, 0xBE, 0xBD, 0x98, 0xBD, + 0x3E, 0x3D, 0x97, 0x52, 0xBC, 0xF7, 0xF0, 0x88, 0x10, 0xE6, 0x43, 0x58, + 0xAE, 0xD6, 0xEB, 0xBA, 0x7D, 0xF1, 0xFA, 0x98, 0x20, 0x18, 0x95, 0xD9, + 0x64, 0x58, 0x1E, 0xEE, 0x4E, 0x08, 0xC2, 0x17, 0xD7, 0x37, 0xDA, 0x18, + 0x63, 0x9C, 0xB1, 0x06, 0x01, 0x68, 0x63, 0x32, 0xC1, 0x9F, 0x3C, 0xBA, + 0x2F, 0x05, 0xDF, 0x9D, 0x8C, 0x26, 0xA3, 0x2A, 0x84, 0xE8, 0x7D, 0xB8, + 0x9A, 0xCD, 0x9F, 0x3E, 0x7B, 0x53, 0xB7, 0xCA, 0x39, 0xBF, 0xAC, 0x9B, + 0xCB, 0xEB, 0x45, 0xDB, 0x29, 0xCE, 0xF9, 0x62, 0xB5, 0xFE, 0xE2, 0xAB, + 0xA7, 0x8B, 0xC5, 0x4A, 0x4A, 0xE9, 0xBD, 0x47, 0x10, 0x87, 0x83, 0xA2, + 0xED, 0x35, 0x42, 0x90, 0xCB, 0xAC, 0xED, 0x15, 0x00, 0xBA, 0x59, 0xD4, + 0xBF, 0xFE, 0xED, 0xD3, 0xD7, 0xC7, 0x6F, 0xCF, 0x2F, 0xAE, 0xEB, 0xBA, + 0xDD, 0xDD, 0x9D, 0x24, 0x12, 0x40, 0x52, 0x8C, 0xED, 0xEC, 0x8C, 0x76, + 0xA7, 0x93, 0xE9, 0xCE, 0x78, 0x34, 0xAC, 0x8A, 0x22, 0xAB, 0xCA, 0xB2, + 0xEB, 0x3A, 0xEF, 0x42, 0x6A, 0x46, 0x18, 0x21, 0xC1, 0x87, 0xC5, 0x72, + 0x35, 0x5F, 0x2C, 0x75, 0xDF, 0x37, 0xEB, 0xA6, 0x69, 0x1A, 0x42, 0xB0, + 0x76, 0xE1, 0xF2, 0x6A, 0xD6, 0xB4, 0x2D, 0x21, 0xA4, 0x6D, 0x3B, 0x4E, + 0x29, 0x40, 0x4C, 0x29, 0x88, 0xCE, 0x79, 0xB6, 0xB9, 0xB1, 0x63, 0x8C, + 0x91, 0x12, 0xE2, 0x9C, 0xCB, 0xF3, 0x9C, 0x72, 0xBE, 0x5E, 0x37, 0xBB, + 0xD3, 0x49, 0x12, 0x78, 0x78, 0xEF, 0x17, 0xCB, 0xFA, 0x9B, 0xA7, 0x2F, + 0x9E, 0x3C, 0x7E, 0x94, 0x4B, 0x61, 0x8C, 0x1D, 0x0E, 0x06, 0x75, 0xD3, + 0xA4, 0x51, 0x2E, 0x93, 0x62, 0x77, 0x3A, 0xB1, 0xD6, 0x61, 0x84, 0x93, + 0x6D, 0xA9, 0xB1, 0x36, 0x02, 0xC4, 0x18, 0x18, 0x49, 0x74, 0x8D, 0x28, + 0x18, 0xEB, 0x95, 0x06, 0x84, 0xAA, 0x32, 0x6F, 0xDA, 0xEE, 0xD9, 0xCB, + 0xB3, 0x41, 0x99, 0x4D, 0x77, 0x46, 0xFF, 0xC7, 0xFF, 0xFD, 0xF7, 0xFF, + 0xEB, 0xBF, 0xFA, 0xD7, 0x4F, 0x5F, 0x9E, 0x8D, 0x86, 0x83, 0xD9, 0xCD, + 0x32, 0xA1, 0x1C, 0xC6, 0x98, 0x14, 0xDB, 0x9A, 0x30, 0x32, 0xCA, 0x48, + 0x0C, 0x41, 0x72, 0x9E, 0x3C, 0x8A, 0x09, 0x42, 0x9C, 0x33, 0x4E, 0xC8, + 0x76, 0xE6, 0xF5, 0xEB, 0xB6, 0x77, 0x3E, 0x19, 0xF0, 0x19, 0x88, 0xD1, + 0xF9, 0x60, 0x9D, 0x4F, 0x59, 0xEB, 0x49, 0x29, 0x99, 0x20, 0x3C, 0xA5, + 0x0D, 0x67, 0x54, 0x0A, 0x59, 0xB7, 0x5D, 0x91, 0x67, 0x8C, 0x92, 0xE4, + 0x8E, 0x2D, 0x38, 0x0B, 0x71, 0x43, 0xE6, 0x36, 0xD6, 0xA7, 0x26, 0x2B, + 0xFA, 0x90, 0xAE, 0xCC, 0xB6, 0xE9, 0xD2, 0x42, 0x36, 0xCB, 0x57, 0x37, + 0xC4, 0xC7, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x33, 0x29, + 0xE4, 0x7A, 0xBD, 0x2E, 0xF2, 0xEC, 0xE1, 0x83, 0xC3, 0xF1, 0x78, 0xD4, + 0x75, 0xBD, 0xF3, 0x1E, 0x23, 0x44, 0x30, 0x49, 0x08, 0xE0, 0x9F, 0xFC, + 0xA3, 0x4F, 0x3E, 0x78, 0xF4, 0x60, 0xB9, 0x58, 0x9D, 0xBC, 0xBD, 0x64, + 0x8C, 0x3E, 0x38, 0xBA, 0x57, 0xE4, 0x79, 0xAF, 0xFA, 0x3C, 0xCF, 0xDE, + 0x1C, 0x9F, 0xAD, 0xEB, 0x8E, 0x12, 0xF4, 0xE6, 0xF8, 0xEC, 0xF5, 0xF1, + 0xD9, 0xF1, 0xE9, 0x79, 0x3A, 0xE9, 0xD3, 0xE0, 0x95, 0xF4, 0x4F, 0x18, + 0xA1, 0xAE, 0xEF, 0x27, 0x93, 0x31, 0x21, 0xA4, 0xEB, 0xDA, 0xFD, 0xBD, + 0x69, 0x91, 0xE7, 0xC6, 0xDA, 0xAA, 0x2C, 0xE6, 0x8B, 0x95, 0x31, 0xCE, + 0x5A, 0x5B, 0xE4, 0xD9, 0xC1, 0xEE, 0x78, 0x32, 0x1E, 0xEE, 0xED, 0x4E, + 0x86, 0x83, 0x62, 0x3C, 0xAA, 0x46, 0x83, 0x52, 0x0A, 0xB6, 0x9D, 0xE2, + 0xDE, 0xA9, 0x59, 0x8C, 0x75, 0x37, 0x8B, 0x15, 0x42, 0x48, 0x0A, 0x9E, + 0xAC, 0xD9, 0x04, 0x67, 0x09, 0xD3, 0x4C, 0xFE, 0x57, 0xE9, 0x2E, 0x73, + 0xDE, 0x2B, 0x6D, 0x3B, 0xA5, 0x17, 0xCB, 0x26, 0x69, 0xB3, 0xA8, 0x33, + 0x3A, 0xC6, 0xB8, 0x91, 0x4F, 0x53, 0x96, 0x66, 0x2B, 0x74, 0x67, 0x1C, + 0xDB, 0x74, 0x49, 0x00, 0x90, 0xFA, 0x8E, 0x18, 0xBD, 0x73, 0x40, 0x29, + 0x42, 0xC8, 0x69, 0xA3, 0xB5, 0x46, 0x08, 0x52, 0x82, 0x90, 0xD1, 0x1A, + 0x10, 0xB2, 0xD6, 0x31, 0xCE, 0x9C, 0xB1, 0xEB, 0xA6, 0xD5, 0xDA, 0x6E, + 0x12, 0xD8, 0x52, 0x5E, 0x24, 0x67, 0xA5, 0x52, 0x55, 0x59, 0xF0, 0x2C, + 0xA7, 0x18, 0x36, 0x39, 0x2E, 0xDB, 0x8A, 0x02, 0x00, 0x10, 0xC3, 0x36, + 0xFC, 0xF4, 0xAE, 0x63, 0x0A, 0x7A, 0xA7, 0x1D, 0x47, 0x90, 0x56, 0x8A, + 0xA9, 0xCE, 0x6E, 0x5B, 0x21, 0x04, 0x77, 0xB8, 0xA3, 0x89, 0xEA, 0x06, + 0x9B, 0x6A, 0xE8, 0x11, 0x20, 0x0C, 0xD8, 0xDF, 0xC2, 0xB4, 0x5B, 0x20, + 0x6C, 0x53, 0x10, 0xB7, 0x93, 0x6F, 0xAA, 0xDB, 0x08, 0x21, 0xA3, 0xF5, + 0xD3, 0x6F, 0x9E, 0x5B, 0xE3, 0xA4, 0x10, 0x31, 0x84, 0x80, 0x93, 0x02, + 0x04, 0x6E, 0xF7, 0x9B, 0xDB, 0x5A, 0x09, 0x89, 0x5D, 0x1D, 0x42, 0x40, + 0x09, 0xA7, 0xDB, 0x56, 0xCF, 0x5B, 0xBC, 0x16, 0x00, 0x42, 0x88, 0x1E, + 0x3C, 0xC6, 0x18, 0x02, 0x68, 0x63, 0xD3, 0x8F, 0x90, 0x1C, 0x3E, 0x31, + 0xC6, 0x84, 0xE0, 0xB6, 0x53, 0x9F, 0x7E, 0xFE, 0xCD, 0xAB, 0xE3, 0x2B, + 0x00, 0x5C, 0x94, 0x79, 0x59, 0xE6, 0x83, 0xB2, 0x68, 0xBA, 0xCE, 0x7B, + 0x7F, 0x7D, 0x35, 0xDB, 0xDD, 0x9B, 0xF6, 0x4A, 0x7F, 0xF5, 0xCD, 0xF3, + 0xBE, 0xD7, 0x7F, 0xFA, 0x4F, 0xFF, 0xF1, 0x64, 0x3C, 0xA8, 0x9B, 0xEE, + 0xE2, 0x5A, 0xF3, 0x2C, 0x1B, 0x0E, 0x87, 0x83, 0xAA, 0xBA, 0xB9, 0x59, + 0xCC, 0x6E, 0x16, 0xC9, 0x78, 0xC3, 0xFB, 0xF8, 0x83, 0xEF, 0x3F, 0xA9, + 0xD7, 0xF5, 0xE3, 0x07, 0x7B, 0xCE, 0x98, 0xAF, 0x9E, 0xBF, 0xD9, 0x19, + 0x8F, 0x8E, 0xF6, 0xA7, 0x97, 0xB3, 0x65, 0x80, 0x98, 0x89, 0x94, 0x1C, + 0x8C, 0x01, 0xA1, 0xF1, 0xB0, 0x98, 0x8E, 0xAB, 0xAE, 0x37, 0x4D, 0xA7, + 0x2E, 0xAE, 0xE6, 0x52, 0xC8, 0xA6, 0xEF, 0x97, 0xEB, 0xC6, 0x5D, 0xDE, + 0x60, 0x42, 0x64, 0x96, 0x3D, 0x7C, 0x70, 0xF4, 0xF6, 0xFC, 0xE2, 0xFA, + 0xFA, 0x26, 0xC4, 0x18, 0x23, 0x8C, 0xC7, 0xA3, 0xBA, 0x69, 0x42, 0x08, + 0xA3, 0x41, 0xA5, 0x8C, 0x4B, 0x7C, 0x17, 0x6D, 0xAD, 0x77, 0xBE, 0x55, + 0x5D, 0xD2, 0x28, 0x97, 0x45, 0x7E, 0x35, 0x5B, 0xBE, 0x39, 0xBD, 0x54, + 0xD6, 0xFF, 0x97, 0xFF, 0xF9, 0x9F, 0x19, 0x63, 0x62, 0x8C, 0x65, 0x91, + 0x05, 0x1B, 0x01, 0x62, 0x62, 0x33, 0x11, 0x4C, 0xA4, 0xE4, 0x4F, 0x9E, + 0xBC, 0x7F, 0x72, 0x72, 0x7E, 0x71, 0x7E, 0x95, 0x98, 0x68, 0xBA, 0xEF, + 0xA3, 0xB3, 0xA3, 0xB2, 0xC8, 0x32, 0x99, 0x2C, 0x76, 0x7B, 0xA5, 0xA8, + 0xF3, 0x40, 0xD9, 0x7C, 0xBE, 0x96, 0x82, 0xE7, 0x99, 0xB0, 0xDA, 0x00, + 0x4A, 0x11, 0x4D, 0xD4, 0x87, 0x8D, 0x99, 0x0F, 0x66, 0xCC, 0xF9, 0x50, + 0x77, 0x1D, 0x21, 0xA4, 0xD7, 0xE6, 0x83, 0xA3, 0x83, 0xFB, 0x47, 0xFB, + 0xBF, 0xFD, 0xF2, 0x59, 0x72, 0x19, 0xCC, 0xB2, 0xEC, 0xF4, 0xEC, 0x62, + 0xBE, 0x58, 0x74, 0xBD, 0x7A, 0x70, 0x74, 0x48, 0x08, 0x36, 0x46, 0xC7, + 0x10, 0x03, 0x04, 0x00, 0x58, 0x2C, 0x57, 0x75, 0xD3, 0x51, 0x42, 0xAA, + 0x22, 0xF7, 0xDE, 0x2B, 0x6D, 0xA8, 0xF7, 0xCA, 0xD8, 0x18, 0xA1, 0x2A, + 0x8B, 0x4E, 0xA9, 0xBE, 0xD7, 0xC9, 0xF6, 0xAB, 0x53, 0x2A, 0x93, 0xE2, + 0xD1, 0x83, 0xC3, 0xF9, 0x7C, 0xF9, 0xAF, 0xFE, 0xB7, 0xBF, 0x1E, 0xFE, + 0xF5, 0xAF, 0x9A, 0xA6, 0xBF, 0x7F, 0xB8, 0xBF, 0x37, 0x1D, 0xCD, 0x97, + 0xEB, 0x24, 0xBD, 0xB6, 0x89, 0x14, 0xB2, 0xE5, 0x2A, 0x1A, 0x63, 0x32, + 0x2A, 0x93, 0xB9, 0x7E, 0x8C, 0x01, 0x63, 0xE4, 0x22, 0x50, 0x8C, 0x00, + 0x81, 0x31, 0x76, 0x63, 0x3D, 0x16, 0x02, 0x42, 0x29, 0x39, 0xD0, 0x86, + 0x24, 0x9E, 0x71, 0x4E, 0x6B, 0x13, 0x62, 0x00, 0x84, 0x18, 0xA5, 0x4D, + 0xD3, 0x86, 0x18, 0x09, 0xC6, 0x99, 0x94, 0xCA, 0xE8, 0x44, 0x00, 0x16, + 0x82, 0xAF, 0xEB, 0xA6, 0xED, 0x34, 0xA5, 0x04, 0x22, 0x68, 0x6D, 0x93, + 0x77, 0x50, 0x08, 0xD1, 0x5A, 0xDD, 0x29, 0xC5, 0x19, 0xEB, 0x3B, 0x85, + 0x09, 0x76, 0x3E, 0x7E, 0xEF, 0xF1, 0x4E, 0xAF, 0xD4, 0x72, 0x35, 0xF3, + 0x5B, 0xF3, 0xCE, 0xD5, 0xBA, 0xD9, 0x99, 0x8C, 0x7A, 0xA5, 0xEB, 0xA6, + 0xD5, 0xC6, 0x08, 0xCE, 0xBD, 0x73, 0xB9, 0x64, 0x52, 0xB0, 0x34, 0x4D, + 0xAB, 0xBE, 0xFF, 0xD5, 0xE7, 0x5F, 0x4C, 0xC6, 0xC3, 0xE9, 0xCE, 0xB8, + 0x5E, 0xB7, 0x9F, 0x7C, 0xF4, 0x3D, 0x4A, 0xB1, 0x14, 0xFC, 0xBD, 0xFB, + 0x87, 0x7F, 0xF7, 0xF3, 0xCF, 0xB4, 0x36, 0x8C, 0x52, 0xEF, 0x5D, 0xAF, + 0x54, 0x9E, 0x49, 0x84, 0x68, 0x82, 0x1A, 0xCB, 0xAA, 0x7A, 0x73, 0x7C, + 0xBA, 0x5A, 0x2E, 0xC7, 0x93, 0xF1, 0xBD, 0xA3, 0x83, 0xDD, 0x9D, 0xF1, + 0xBA, 0x6E, 0x5E, 0xBE, 0x3E, 0xCB, 0x04, 0x2D, 0x27, 0x43, 0x8C, 0xD0, + 0xC3, 0xA3, 0x7D, 0xC1, 0x59, 0x12, 0xC6, 0xA7, 0x69, 0x91, 0x26, 0xA3, + 0xAD, 0x3B, 0x0F, 0x84, 0x90, 0x75, 0xBE, 0xEB, 0x35, 0xC1, 0x48, 0x30, + 0x1A, 0x63, 0xF0, 0x3E, 0x10, 0x8C, 0x39, 0xA3, 0xA9, 0x27, 0xC0, 0x18, + 0x27, 0x17, 0xE8, 0x10, 0xA3, 0x52, 0xC6, 0x18, 0xEB, 0x9C, 0xCF, 0x32, + 0x91, 0xC2, 0xCC, 0xA9, 0x33, 0x3A, 0x0D, 0x87, 0x84, 0xD2, 0x5B, 0x55, + 0x23, 0x24, 0x2E, 0xC2, 0xF6, 0x8E, 0xDD, 0x8C, 0x66, 0x31, 0x26, 0x1F, + 0xD4, 0xE0, 0x6C, 0xF4, 0xCE, 0xB9, 0xD0, 0x2B, 0x65, 0x9D, 0x33, 0xD6, + 0xA5, 0x24, 0x85, 0x94, 0xA0, 0x19, 0x62, 0xC0, 0x08, 0xA5, 0x30, 0x2E, + 0x04, 0x88, 0x52, 0xE2, 0xBC, 0xB7, 0xD6, 0x23, 0x84, 0xAC, 0xF5, 0x18, + 0xA1, 0xB2, 0xC8, 0x09, 0xC6, 0xC9, 0xCC, 0xE4, 0x5B, 0x1B, 0x4B, 0x84, + 0x20, 0x99, 0xE5, 0xC7, 0xF8, 0x2D, 0x5E, 0xC6, 0xA6, 0x94, 0xE2, 0xA4, + 0x89, 0x83, 0xC4, 0xC7, 0xD8, 0x92, 0x15, 0xD0, 0x1D, 0x69, 0xC1, 0xB7, + 0x96, 0x06, 0x1B, 0xEE, 0x22, 0x06, 0x14, 0x92, 0x00, 0x60, 0xFB, 0x59, + 0xB4, 0x9D, 0xA4, 0xBF, 0xB5, 0x51, 0x8D, 0xC1, 0x02, 0x60, 0x4C, 0xD9, + 0xF9, 0xD9, 0x99, 0xB5, 0x36, 0xCB, 0xA5, 0x35, 0x0E, 0x45, 0xDC, 0xA9, + 0x9E, 0x10, 0x5A, 0xE6, 0x2C, 0x6E, 0xA3, 0x33, 0x63, 0x84, 0x64, 0x27, + 0x0B, 0x18, 0x52, 0x49, 0xF2, 0xC8, 0xC7, 0x08, 0x04, 0x13, 0x42, 0xD0, + 0x46, 0xDF, 0x77, 0xFB, 0x53, 0x01, 0x84, 0x2D, 0x1D, 0x37, 0x19, 0x10, + 0x45, 0x80, 0x0C, 0x0B, 0xEF, 0xFD, 0x72, 0xBD, 0x7A, 0x7B, 0x31, 0x7F, + 0xFE, 0xF2, 0x24, 0x44, 0xC4, 0x05, 0xF5, 0xDE, 0xC6, 0x16, 0x38, 0xA5, + 0x2F, 0x5E, 0x1D, 0x97, 0x83, 0x8A, 0x51, 0xFA, 0xEA, 0xE4, 0xFC, 0xCD, + 0xF9, 0xF5, 0xE5, 0xE5, 0xAC, 0x5E, 0xAD, 0x47, 0xE3, 0xE1, 0x8B, 0xD7, + 0xA7, 0x2F, 0x5E, 0xC5, 0x93, 0xD3, 0x73, 0xA5, 0xCC, 0xAA, 0x6E, 0xD2, + 0x88, 0xD4, 0xD4, 0xAD, 0x90, 0x72, 0x32, 0x19, 0x0D, 0xAA, 0xAA, 0x6E, + 0xDA, 0xB7, 0xE7, 0x17, 0xCE, 0xBA, 0x17, 0xDE, 0xEE, 0xED, 0x0C, 0x93, + 0x39, 0xA7, 0xE0, 0x9C, 0x73, 0x8A, 0x10, 0x1A, 0x0D, 0xCA, 0x64, 0x1A, + 0x65, 0x8D, 0x3F, 0xBF, 0x5C, 0x4C, 0x77, 0x86, 0xF3, 0x75, 0x73, 0x7E, + 0x35, 0x4F, 0x71, 0x4D, 0x8B, 0x75, 0xEB, 0x7C, 0x88, 0x31, 0xEA, 0x5E, + 0xDD, 0x2C, 0x56, 0x75, 0xD3, 0x4E, 0xC6, 0xA3, 0x3C, 0xCF, 0x39, 0xA3, + 0x8B, 0xE5, 0x6A, 0xB9, 0x5A, 0x3B, 0x6B, 0xF7, 0xF6, 0x76, 0xF2, 0x22, + 0x9B, 0x5D, 0xCF, 0x09, 0xC1, 0x5A, 0xDB, 0xF4, 0x96, 0xA5, 0xD2, 0x23, + 0x84, 0x28, 0x8A, 0xBC, 0xEF, 0x54, 0x91, 0x67, 0xBF, 0xFD, 0xF2, 0x39, + 0x25, 0xE4, 0xBF, 0xF8, 0xCF, 0xFE, 0x34, 0xB1, 0x82, 0x53, 0x4D, 0xF7, + 0xC1, 0x1B, 0x63, 0x43, 0x30, 0x08, 0x81, 0x10, 0xFC, 0xC9, 0x93, 0x47, + 0x0F, 0xDF, 0x3B, 0x5A, 0xCC, 0x57, 0x75, 0xDD, 0xAC, 0x96, 0xEB, 0x62, + 0x58, 0x09, 0x21, 0x06, 0xC3, 0xC1, 0xFD, 0xA3, 0xFD, 0x57, 0xAF, 0x8F, + 0xDB, 0xB6, 0x57, 0xCA, 0x5C, 0xDE, 0xAC, 0xE6, 0xF3, 0xE5, 0xD5, 0xD5, + 0xAC, 0x28, 0xB2, 0x5C, 0xF0, 0xB4, 0x3B, 0xC7, 0x18, 0x41, 0x0C, 0xC9, + 0xE7, 0x2B, 0xC6, 0xC8, 0x39, 0x87, 0x18, 0xB9, 0x10, 0xFB, 0x7B, 0x93, + 0xC7, 0xEF, 0x1D, 0xDD, 0xBF, 0xB7, 0x67, 0x8C, 0x7E, 0x7D, 0x7C, 0xCE, + 0x28, 0xBD, 0xBA, 0xBE, 0x19, 0x0C, 0xAA, 0x4C, 0xCA, 0xAE, 0x53, 0xAB, + 0x75, 0x93, 0x4B, 0x31, 0x9B, 0x2F, 0x92, 0x65, 0x23, 0x65, 0xAC, 0xAE, + 0xDB, 0x18, 0xA3, 0x0F, 0xFE, 0x72, 0x76, 0x23, 0xA5, 0xB8, 0x77, 0x30, + 0xBD, 0xBE, 0x59, 0x30, 0xC6, 0xBC, 0x0F, 0x8B, 0xE5, 0xFA, 0xDE, 0xE1, + 0x6E, 0x0A, 0x6D, 0x9C, 0x4E, 0x46, 0x5D, 0xDF, 0xB7, 0x6D, 0xFB, 0x83, + 0xEF, 0xBF, 0xFF, 0xE4, 0xD1, 0xFD, 0x67, 0x2F, 0x8F, 0x2F, 0x2E, 0x67, + 0x8F, 0xDF, 0xBF, 0xFF, 0x67, 0x7F, 0xF2, 0xE3, 0x2F, 0x9F, 0xBD, 0xFE, + 0xE5, 0xE7, 0xDF, 0x64, 0x79, 0xE6, 0xC3, 0x56, 0xBA, 0x8B, 0x51, 0x70, + 0xA9, 0xF1, 0x47, 0x08, 0x22, 0xA7, 0x0C, 0x6D, 0x7D, 0xA2, 0xC4, 0x86, + 0x5D, 0x68, 0x23, 0x80, 0xF5, 0x01, 0x63, 0xB2, 0xB7, 0x33, 0x7E, 0x7B, + 0x79, 0xA3, 0xB4, 0x36, 0xDA, 0x6A, 0xE7, 0x92, 0xD9, 0x01, 0xC2, 0xC8, + 0x9B, 0x80, 0x10, 0x0A, 0xC8, 0x13, 0x42, 0x92, 0xE2, 0xBA, 0xEB, 0xFA, + 0x08, 0x90, 0x65, 0x92, 0x12, 0x1C, 0x7C, 0xD0, 0xDA, 0x36, 0x4D, 0xC7, + 0x18, 0x8D, 0x80, 0xD2, 0x84, 0xC5, 0x28, 0x8D, 0x14, 0xBC, 0x27, 0x9D, + 0x52, 0x07, 0x7B, 0xBB, 0xC6, 0xD9, 0xD1, 0xA0, 0xDA, 0x9D, 0x8E, 0xBF, + 0x79, 0xFA, 0xAA, 0xED, 0x54, 0xAF, 0x15, 0x02, 0xD4, 0x84, 0xAE, 0x69, + 0xBB, 0xB4, 0x4B, 0x2D, 0xF3, 0x3C, 0xF9, 0xF1, 0xC5, 0xE0, 0x7F, 0xF2, + 0xC3, 0x0F, 0x5F, 0xBC, 0x3A, 0xFE, 0xE3, 0x9F, 0xFE, 0x78, 0xB1, 0x5C, + 0x21, 0x84, 0x8C, 0xB1, 0x5D, 0xD7, 0x69, 0xAD, 0xD7, 0xAB, 0xFA, 0xF5, + 0x9B, 0xB3, 0x9F, 0xFC, 0xE1, 0xC7, 0x0F, 0x1F, 0xEC, 0x1B, 0x6B, 0xB3, + 0x5C, 0xC6, 0x18, 0x18, 0x25, 0x9C, 0x13, 0x42, 0x88, 0x36, 0xD6, 0x07, + 0x4F, 0x30, 0x65, 0x8C, 0x87, 0x18, 0xCA, 0x22, 0x9F, 0xCF, 0x17, 0x5D, + 0xA7, 0x76, 0x77, 0xC9, 0xFE, 0xDE, 0xD4, 0x7B, 0x1F, 0x43, 0x14, 0x9C, + 0x1D, 0x1E, 0x4C, 0x87, 0xC3, 0x2A, 0xE3, 0x8C, 0x60, 0x8C, 0x31, 0x2A, + 0x8B, 0x4C, 0x0A, 0x46, 0x08, 0x11, 0x82, 0x23, 0x04, 0x3E, 0x85, 0xB9, + 0xC5, 0xCD, 0x9D, 0xEB, 0xBD, 0x8F, 0x10, 0x19, 0x23, 0xA3, 0x61, 0x55, + 0x95, 0x39, 0xA3, 0x84, 0x18, 0x6B, 0x7D, 0x30, 0xD6, 0x25, 0x1E, 0x38, + 0xC2, 0x38, 0x39, 0xDA, 0x3B, 0xEF, 0x41, 0x6E, 0xE6, 0xAD, 0xE4, 0xBE, + 0x8D, 0x31, 0x26, 0xFF, 0xC3, 0xBF, 0xF8, 0xEF, 0xD2, 0x8D, 0x47, 0x29, + 0xC5, 0x08, 0xC5, 0x10, 0x52, 0x5B, 0x94, 0xA0, 0xFE, 0x54, 0xC5, 0x6E, + 0x81, 0x7C, 0x88, 0x21, 0x86, 0xD8, 0xF7, 0x7D, 0xDB, 0xAA, 0xC5, 0xAA, + 0x5E, 0xD5, 0x6D, 0xD7, 0xAA, 0xAE, 0xD7, 0x5D, 0xA7, 0x00, 0x01, 0xC1, + 0xA8, 0x57, 0xA6, 0xEB, 0x75, 0xDB, 0xE9, 0xB6, 0x57, 0xCE, 0x85, 0x44, + 0x16, 0xF7, 0xCE, 0xFB, 0x10, 0x30, 0x20, 0xC6, 0x49, 0x26, 0x79, 0x9E, + 0x49, 0x2E, 0x64, 0x2A, 0x62, 0x68, 0xFB, 0xAB, 0x6C, 0x90, 0xAE, 0x0D, + 0xA5, 0xFE, 0x4E, 0x66, 0xCD, 0xDD, 0x82, 0xF6, 0x6D, 0xCA, 0xFB, 0xBB, + 0x35, 0x42, 0xC2, 0xDE, 0xB7, 0x2B, 0xC9, 0x34, 0x26, 0xFE, 0x1E, 0x8A, + 0xDA, 0xE6, 0xBB, 0xF0, 0x2D, 0x09, 0x0E, 0xB6, 0xE3, 0x74, 0x8C, 0xD1, + 0x3B, 0x47, 0x30, 0x9A, 0x5D, 0x5F, 0x5D, 0x5C, 0xCC, 0x30, 0x26, 0x31, + 0x42, 0x44, 0xD8, 0xBA, 0x80, 0x31, 0x61, 0x2C, 0x4D, 0xB8, 0xA9, 0xA6, + 0xC3, 0x36, 0xB7, 0x35, 0xC6, 0x08, 0x18, 0x43, 0x80, 0xB8, 0x89, 0x23, + 0x40, 0x9B, 0xDF, 0x26, 0xDE, 0x91, 0x97, 0x46, 0x80, 0x94, 0x4F, 0x67, + 0x9C, 0x73, 0x36, 0x60, 0x8C, 0x28, 0x21, 0xAF, 0x4F, 0xDE, 0x3E, 0x7B, + 0x79, 0xF6, 0xEA, 0xE4, 0xEA, 0x66, 0x51, 0x8B, 0x4C, 0x46, 0x88, 0x5F, + 0x3F, 0x7D, 0xCE, 0x18, 0x97, 0x52, 0x1E, 0x9F, 0x5E, 0x3C, 0x7C, 0xF8, + 0xA0, 0x28, 0xF2, 0x5F, 0xFF, 0xF6, 0x1B, 0xE7, 0x83, 0x77, 0xCE, 0x19, + 0x23, 0x84, 0xD8, 0x9D, 0x4E, 0x52, 0x2C, 0xE6, 0xC7, 0x1F, 0x7F, 0x2F, + 0xF8, 0xD8, 0xB6, 0x3D, 0xC6, 0xD8, 0x58, 0x93, 0x16, 0xC6, 0x5A, 0xE9, + 0xAE, 0x57, 0x21, 0x44, 0x82, 0xF1, 0x7A, 0x5D, 0x63, 0x04, 0x04, 0x61, + 0xE3, 0x5C, 0xD7, 0x2B, 0x63, 0x5D, 0x84, 0xF8, 0xF0, 0x70, 0xB7, 0xC8, + 0xC4, 0xF5, 0x7C, 0xB5, 0x89, 0xAE, 0xE9, 0xD4, 0x7C, 0xD5, 0x2C, 0xD7, + 0xED, 0xD5, 0x7C, 0xD9, 0x74, 0xEA, 0x66, 0xB9, 0x6E, 0x3B, 0xA5, 0xB4, + 0xAE, 0xDB, 0xAE, 0xED, 0xD4, 0xE3, 0xC7, 0xEF, 0x1D, 0xEC, 0xEF, 0x36, + 0x4D, 0xD7, 0xF7, 0xFD, 0xD5, 0xD5, 0xAC, 0xAE, 0x6B, 0x04, 0x71, 0x38, + 0xAC, 0x28, 0xA5, 0xD6, 0xFB, 0xB6, 0xED, 0x24, 0x63, 0x4A, 0xA9, 0x10, + 0xA2, 0x36, 0x96, 0x52, 0xC2, 0x28, 0x03, 0x04, 0xCE, 0x39, 0x42, 0x10, + 0x25, 0x14, 0x10, 0x5C, 0xCE, 0x16, 0xAF, 0x8E, 0xDF, 0x16, 0x45, 0xCE, + 0x29, 0x4D, 0xB7, 0x07, 0x26, 0xA4, 0xC8, 0x33, 0xC6, 0x28, 0xE7, 0x34, + 0x04, 0xB0, 0xC6, 0x22, 0x84, 0x06, 0x83, 0x32, 0xCB, 0xB3, 0xBD, 0xFD, + 0xE9, 0x74, 0xBA, 0x53, 0x55, 0xFF, 0x0F, 0x5D, 0x6F, 0xD6, 0x64, 0x59, + 0x76, 0x9D, 0x87, 0xAD, 0x3D, 0x9F, 0xF1, 0x0E, 0x79, 0x73, 0xA8, 0xA9, + 0xBB, 0x7A, 0x02, 0x1A, 0x53, 0x83, 0x20, 0x01, 0x89, 0x83, 0x28, 0x4B, + 0x96, 0x6C, 0x87, 0x1F, 0xF4, 0xA0, 0xF0, 0x83, 0x5F, 0x1D, 0x0C, 0xE9, + 0xD9, 0xA4, 0xC9, 0xF0, 0xDF, 0x72, 0x84, 0xC2, 0xA1, 0x10, 0x4D, 0xD9, + 0x0E, 0x93, 0x04, 0x69, 0x8A, 0x20, 0x48, 0x0C, 0x0D, 0x34, 0xD0, 0x8D, + 0x9E, 0xAA, 0x2A, 0x2B, 0x2B, 0xA7, 0x3B, 0x9E, 0x69, 0x4F, 0x6B, 0xFB, + 0x61, 0x9D, 0x7B, 0x33, 0xBB, 0x41, 0xDF, 0x87, 0xEC, 0xAC, 0xEC, 0x3B, + 0x9C, 0x73, 0xEE, 0xD9, 0x6B, 0xAF, 0xF5, 0xAD, 0x6F, 0x7D, 0x5F, 0x59, + 0xE4, 0x59, 0xD3, 0xB4, 0xD3, 0xC9, 0x84, 0x03, 0xBE, 0x7C, 0x79, 0xA9, + 0x94, 0x7E, 0xF9, 0xEA, 0x72, 0xB7, 0xDB, 0x1D, 0x1D, 0xCD, 0x9D, 0xF7, + 0x0C, 0x40, 0x2B, 0x65, 0xB4, 0x8A, 0x98, 0x7C, 0xF0, 0x4A, 0xC9, 0xE3, + 0xC5, 0x11, 0x46, 0x4C, 0x88, 0x45, 0x9E, 0xFD, 0xE6, 0x6F, 0x7C, 0xFD, + 0xED, 0x37, 0x9E, 0x7C, 0xFF, 0x6F, 0xFE, 0x7E, 0xB5, 0xDE, 0xBD, 0xFE, + 0xDA, 0x23, 0xA5, 0xE4, 0x7A, 0xD3, 0x40, 0x62, 0x65, 0x99, 0x03, 0x80, + 0xF3, 0xBE, 0x6D, 0x1A, 0x63, 0x8C, 0x54, 0x4A, 0x4A, 0x71, 0xBC, 0x98, + 0x23, 0xE2, 0x7A, 0xB3, 0x2B, 0x8A, 0x8C, 0x33, 0xBE, 0xDB, 0xB5, 0x93, + 0x49, 0x55, 0x64, 0x59, 0xD3, 0x76, 0xCE, 0x7B, 0xC6, 0xA0, 0x2A, 0x8B, + 0xB6, 0xED, 0x9C, 0x73, 0x29, 0x61, 0x5D, 0x95, 0x9C, 0xF3, 0xE9, 0xA4, + 0x3C, 0x3D, 0x3E, 0x3A, 0x5E, 0xCC, 0x1E, 0x9D, 0x9D, 0x2C, 0x8E, 0xA6, + 0x37, 0xAB, 0xCD, 0x3F, 0xFC, 0xE4, 0x43, 0xAD, 0xF5, 0x30, 0x58, 0xA3, + 0x14, 0x00, 0xC6, 0x10, 0x8E, 0x17, 0xF3, 0x88, 0xA9, 0xEF, 0x7B, 0x21, + 0x45, 0x6E, 0x4C, 0x5D, 0x65, 0x74, 0x83, 0x95, 0x79, 0x16, 0x23, 0xB6, + 0xFD, 0x80, 0x23, 0x5C, 0xC3, 0x30, 0xA5, 0x22, 0x37, 0x5D, 0x37, 0x14, + 0x45, 0x7E, 0xBC, 0x98, 0x35, 0x6D, 0xEF, 0x9C, 0x57, 0x4A, 0x32, 0x60, + 0x83, 0xB5, 0x5C, 0x70, 0x25, 0xA4, 0xD6, 0x3A, 0xCB, 0x74, 0x08, 0x91, + 0x24, 0x8C, 0x48, 0xE2, 0x58, 0x29, 0xE1, 0x7D, 0x58, 0xAD, 0x1B, 0xC4, + 0x94, 0x65, 0xDA, 0x39, 0x2F, 0x38, 0xB7, 0xD6, 0xB6, 0x7D, 0x9F, 0x67, + 0x59, 0x4A, 0x69, 0x36, 0xAB, 0x7E, 0xE7, 0xBB, 0xDF, 0xCE, 0x32, 0xF3, + 0xC9, 0x67, 0xCF, 0x09, 0x9D, 0x20, 0x8F, 0x15, 0xCE, 0x58, 0x02, 0xD2, + 0xAF, 0x49, 0x5A, 0xC9, 0x2C, 0xD3, 0x82, 0xB3, 0x7F, 0xFD, 0x2F, 0x7E, + 0xFB, 0x64, 0x31, 0x7B, 0x71, 0xFE, 0xAA, 0x69, 0xFB, 0x8F, 0x3E, 0xFA, + 0xDC, 0x85, 0xC0, 0x39, 0x0F, 0x31, 0x66, 0xC6, 0x58, 0xE7, 0xDA, 0xAE, + 0xBB, 0xBC, 0x5E, 0x2E, 0x57, 0x9B, 0x93, 0xC5, 0xFC, 0xE6, 0x76, 0x75, + 0x73, 0xBB, 0xCC, 0xB2, 0x2C, 0x25, 0x20, 0x6E, 0x36, 0x21, 0x2D, 0x31, + 0xA2, 0x54, 0x02, 0x23, 0x9E, 0x9D, 0x1E, 0x6F, 0x76, 0xDB, 0xAF, 0x7E, + 0xE5, 0xED, 0xE0, 0xF1, 0x83, 0x0F, 0x3E, 0x5C, 0xAF, 0xD6, 0x83, 0xB5, + 0xC7, 0xF3, 0x29, 0x83, 0x64, 0x94, 0x72, 0xCE, 0x97, 0x65, 0x56, 0x15, + 0x99, 0x31, 0x9A, 0x74, 0x25, 0xC5, 0x81, 0xC9, 0xB2, 0x5F, 0xE4, 0x31, + 0x46, 0x06, 0xAC, 0xCC, 0xB3, 0x49, 0x55, 0x1A, 0x23, 0x85, 0x90, 0x4A, + 0x29, 0x4E, 0xD4, 0xB3, 0x04, 0x79, 0xA6, 0xB5, 0x24, 0xB9, 0x2C, 0x26, + 0x84, 0x50, 0x52, 0x2A, 0x29, 0x8C, 0x56, 0x46, 0x6B, 0x2E, 0x58, 0x66, + 0xB4, 0xF8, 0x93, 0xFF, 0xE5, 0x0F, 0x69, 0x67, 0xE3, 0x9C, 0x8F, 0x33, + 0x5B, 0x98, 0x18, 0x2D, 0x4B, 0x6A, 0xA7, 0xF1, 0x51, 0xA4, 0x3F, 0x21, + 0xDA, 0x61, 0x08, 0xDE, 0x5D, 0x5E, 0xAF, 0x6F, 0x56, 0xBB, 0xAE, 0x1F, + 0xBA, 0xC1, 0x3A, 0x17, 0x30, 0xE2, 0x83, 0xB3, 0xA3, 0xB7, 0xDE, 0x78, + 0xB2, 0x38, 0x9A, 0xE6, 0x99, 0x64, 0x0C, 0x9C, 0xF5, 0x3E, 0x04, 0xB2, + 0x29, 0x2E, 0x72, 0xAD, 0x95, 0x28, 0x8B, 0x8C, 0x73, 0xA8, 0x8A, 0xAC, + 0x2C, 0x8C, 0x10, 0x5C, 0x67, 0xD9, 0x58, 0xC8, 0x31, 0x96, 0x12, 0xDE, + 0x49, 0xA2, 0xEF, 0x39, 0x5F, 0x00, 0x09, 0x48, 0x3B, 0x6C, 0xC4, 0xBE, + 0xD2, 0x81, 0x60, 0x06, 0xF7, 0x12, 0x39, 0xBE, 0xE7, 0xC7, 0x32, 0xCE, + 0xF7, 0x39, 0xD8, 0x1D, 0xD1, 0x07, 0x60, 0x0F, 0xEB, 0xEF, 0x03, 0x1F, + 0x23, 0xE1, 0xB3, 0xF1, 0x39, 0x44, 0x16, 0xA3, 0x22, 0x14, 0x39, 0x67, + 0xCF, 0x9E, 0xBF, 0x78, 0xF1, 0xEC, 0x42, 0x29, 0x1D, 0x11, 0x23, 0x26, + 0x4C, 0x80, 0x23, 0xA7, 0x9F, 0x8D, 0x69, 0x62, 0xBA, 0x4B, 0xFA, 0x52, + 0x4A, 0x90, 0x18, 0xE3, 0x6C, 0x9C, 0x95, 0xE2, 0x74, 0x8C, 0x5F, 0x18, + 0x2D, 0x4A, 0xFB, 0xE3, 0x8F, 0x71, 0xE4, 0x61, 0xAC, 0x36, 0xBB, 0x8F, + 0x3E, 0x7E, 0xF1, 0xD3, 0x5F, 0x7C, 0x6A, 0xB2, 0xE2, 0xC5, 0xF9, 0xCB, + 0xEB, 0xDB, 0xDB, 0xC9, 0xB4, 0x9E, 0x4E, 0x27, 0x6F, 0xBC, 0xFE, 0xE4, + 0xAD, 0x37, 0x5E, 0x07, 0x06, 0xC7, 0xC7, 0x47, 0xDF, 0x78, 0xF7, 0xAD, + 0xDB, 0xD5, 0xC6, 0x98, 0xEC, 0xEB, 0xEF, 0xBE, 0xB5, 0x5E, 0x6D, 0xEC, + 0x30, 0xF8, 0x10, 0x43, 0xC4, 0x7A, 0x52, 0x21, 0xA6, 0xBA, 0xAE, 0x6F, + 0x96, 0xAB, 0x17, 0x2F, 0x2E, 0x52, 0x4A, 0x98, 0x90, 0x68, 0x1F, 0xDE, + 0x87, 0x69, 0x5D, 0x55, 0x45, 0x16, 0x7C, 0xB0, 0xCE, 0x65, 0xC6, 0x58, + 0xEB, 0x6F, 0xD6, 0xDB, 0xC5, 0x7C, 0x3A, 0xA9, 0x8B, 0xF5, 0xAE, 0x35, + 0x4A, 0xD6, 0x65, 0x7E, 0xBD, 0xDC, 0x70, 0xCE, 0x8C, 0xD6, 0x9D, 0xB5, + 0xCB, 0xF5, 0xAE, 0xED, 0xAD, 0x75, 0x81, 0x9C, 0x13, 0x18, 0x8C, 0x8C, + 0x53, 0x25, 0x65, 0x02, 0xF6, 0xEA, 0xD5, 0xD5, 0xED, 0x72, 0xD9, 0x76, + 0x2D, 0x22, 0xD6, 0x75, 0x39, 0x9D, 0xD6, 0x3E, 0x84, 0x6D, 0xD3, 0x5D, + 0x5F, 0x2F, 0x8B, 0xBD, 0xC1, 0x75, 0x62, 0x6C, 0x18, 0xAC, 0xD6, 0x9A, + 0x6A, 0x8D, 0xCC, 0x98, 0x3C, 0x33, 0x9C, 0x31, 0xEB, 0x42, 0xC4, 0xB8, + 0xDA, 0xEC, 0x7E, 0xFC, 0xFE, 0x87, 0xE4, 0x14, 0x47, 0xCA, 0x3F, 0x5C, + 0x8C, 0x23, 0xB1, 0x6D, 0xDB, 0x93, 0x38, 0x5A, 0x08, 0x21, 0x22, 0x52, + 0x13, 0x7D, 0xBD, 0xDD, 0xCD, 0x66, 0x93, 0x87, 0x67, 0x27, 0xEB, 0xED, + 0xEE, 0xF9, 0xF3, 0xF3, 0xAE, 0xEB, 0xBF, 0xF6, 0xB5, 0xAF, 0x00, 0x40, + 0x9E, 0x19, 0xC6, 0x58, 0x3F, 0xB8, 0x6D, 0xD3, 0x4C, 0xCA, 0x82, 0x71, + 0x26, 0xA4, 0xB0, 0xCE, 0xD1, 0x24, 0x06, 0x11, 0x0E, 0xA4, 0x94, 0x4F, + 0x1E, 0x9D, 0x85, 0x10, 0x3F, 0xF8, 0xF0, 0xD3, 0xA6, 0x69, 0x33, 0xA3, + 0x5F, 0x7B, 0x7C, 0x46, 0x7A, 0x0F, 0xC1, 0xC7, 0x3C, 0xCF, 0xA5, 0x94, + 0xCE, 0x5A, 0x22, 0xF4, 0x75, 0xFD, 0xD0, 0x34, 0xDD, 0xB4, 0xAE, 0xBE, + 0xF3, 0xED, 0xAF, 0xA5, 0x94, 0xB6, 0x9B, 0xAD, 0xD2, 0xAA, 0x2E, 0x0B, + 0x82, 0xA8, 0xDA, 0xB6, 0xA3, 0xE6, 0x83, 0x0F, 0x51, 0x0A, 0xDE, 0xB6, + 0xED, 0x6C, 0x36, 0x91, 0x42, 0x90, 0xA9, 0xC2, 0xD9, 0xE9, 0x51, 0x59, + 0xE4, 0x8C, 0xC1, 0x8F, 0x7E, 0xFA, 0xCB, 0xE5, 0x7A, 0x97, 0x65, 0xBA, + 0xE9, 0xBA, 0xB2, 0xC8, 0x18, 0x40, 0xD7, 0x5B, 0xEB, 0x7C, 0x4A, 0x00, + 0x2C, 0x69, 0x4D, 0xAD, 0x31, 0xAE, 0x94, 0xCA, 0xB5, 0x0E, 0x31, 0x36, + 0xFD, 0x40, 0xCD, 0x59, 0x29, 0x25, 0xB9, 0xCA, 0x23, 0x62, 0x8C, 0x49, + 0x4A, 0xF1, 0xF8, 0xD1, 0x03, 0xEA, 0x26, 0x1B, 0xA3, 0x23, 0x06, 0xE7, + 0xBC, 0x96, 0x52, 0x4A, 0x81, 0x98, 0x38, 0xE7, 0x88, 0x51, 0x6B, 0xAD, + 0xB5, 0xF2, 0x3E, 0x8C, 0x74, 0x8A, 0x98, 0xAC, 0xF3, 0x8C, 0x81, 0x10, + 0xBC, 0xED, 0xFB, 0x18, 0x51, 0x48, 0xA9, 0x95, 0x0E, 0x21, 0xE4, 0x99, + 0x59, 0xAD, 0x36, 0x2F, 0x2E, 0x2E, 0xB5, 0x52, 0xBF, 0xF3, 0xDD, 0xF7, + 0x9E, 0x3C, 0x3E, 0x7B, 0xF9, 0xEA, 0xA6, 0xEB, 0x87, 0xC1, 0x0E, 0x42, + 0x08, 0x06, 0x6C, 0x36, 0xAD, 0x8F, 0xE6, 0xB3, 0xD5, 0x76, 0x97, 0xE7, + 0xE6, 0xBF, 0xFB, 0x57, 0xBF, 0xFB, 0xDA, 0xE3, 0xB3, 0xF7, 0x7F, 0xFE, + 0xD1, 0x6C, 0x32, 0x79, 0xFF, 0xE7, 0x1F, 0xF5, 0x7D, 0xEF, 0x7C, 0xE0, + 0x9C, 0x4F, 0xEA, 0x7A, 0x3E, 0x9B, 0xFA, 0xE0, 0x23, 0x62, 0xDB, 0x76, + 0xA7, 0xC7, 0x47, 0xFF, 0xEC, 0xB7, 0x7F, 0xE3, 0xE2, 0xE2, 0xEA, 0xF9, + 0xF9, 0xA5, 0xB5, 0x4E, 0x6B, 0xAD, 0x94, 0xB6, 0xDE, 0x13, 0x0A, 0x0C, + 0x8C, 0x0D, 0x76, 0x08, 0x3E, 0x6E, 0x36, 0x5B, 0x6B, 0xDD, 0x62, 0xB1, + 0xD8, 0x6E, 0xB7, 0xDE, 0x07, 0xA3, 0xD5, 0xED, 0xED, 0xEA, 0x78, 0x31, + 0x3B, 0x3E, 0x9A, 0x17, 0xB9, 0x49, 0x09, 0x05, 0xE7, 0x59, 0xA6, 0x29, + 0xEE, 0x8C, 0x94, 0x88, 0x3D, 0xB2, 0x4D, 0x0B, 0x86, 0xCC, 0xE8, 0xB2, + 0x4C, 0x2B, 0x29, 0xF8, 0x98, 0x42, 0xC1, 0x1E, 0xB1, 0xA1, 0x11, 0x31, + 0xC2, 0xFE, 0xE5, 0xE8, 0x57, 0xC6, 0x85, 0x52, 0x72, 0xB4, 0xB0, 0x93, + 0x42, 0xFC, 0xF1, 0x1F, 0xFD, 0xCF, 0xF4, 0x54, 0x12, 0xE7, 0x0B, 0x21, + 0x50, 0x42, 0xC1, 0xC6, 0x7A, 0x53, 0xC5, 0x10, 0xBA, 0xA6, 0x05, 0x8C, + 0x09, 0xC3, 0xAB, 0xCB, 0xDB, 0xEB, 0x9B, 0xF5, 0xAE, 0xE9, 0xAD, 0x73, + 0x21, 0xC6, 0x4C, 0xEB, 0x93, 0xA3, 0xC9, 0xD9, 0xC9, 0xFC, 0xC1, 0xD9, + 0xC2, 0x59, 0xDB, 0xF7, 0x43, 0xDB, 0x0E, 0xDB, 0xA6, 0x1F, 0x9C, 0x27, + 0x2C, 0xF0, 0xF4, 0x78, 0xFA, 0xF0, 0x74, 0x5E, 0x57, 0x45, 0x66, 0xB4, + 0x14, 0x2C, 0x33, 0xAA, 0xAE, 0x6B, 0xD2, 0x3F, 0x65, 0xC4, 0x41, 0xDD, + 0x8F, 0x1C, 0xD1, 0x40, 0x21, 0x91, 0xAD, 0x53, 0xC2, 0x84, 0x31, 0x91, + 0xE2, 0x1F, 0x00, 0x63, 0xE4, 0x74, 0x40, 0x79, 0xDB, 0x08, 0x44, 0xF1, + 0xFD, 0x0C, 0xEF, 0x3E, 0x48, 0x01, 0xC0, 0x5D, 0xEB, 0x10, 0x88, 0x0D, + 0x01, 0x2C, 0xB1, 0x3B, 0xB8, 0x8A, 0x01, 0xE3, 0x5C, 0xDE, 0x1B, 0x9F, + 0xDA, 0xA3, 0x81, 0xC0, 0xB8, 0xE0, 0x97, 0x17, 0xAF, 0x2E, 0x5E, 0x5E, + 0x6A, 0x63, 0x00, 0x18, 0x22, 0x20, 0x42, 0x44, 0xE4, 0xFB, 0x31, 0x75, + 0xC6, 0x58, 0xC2, 0xF4, 0x25, 0x4A, 0x07, 0x1F, 0xCD, 0x99, 0xEE, 0xA7, + 0x7B, 0x77, 0xE2, 0xA1, 0x88, 0x29, 0x26, 0x8C, 0x01, 0x23, 0xA2, 0xF5, + 0x61, 0xB3, 0x6D, 0xFF, 0xE1, 0xA7, 0xBF, 0x7C, 0x75, 0xBD, 0xB9, 0xBE, + 0x5D, 0xCF, 0xA6, 0xD3, 0x8B, 0x57, 0x97, 0xC0, 0xD8, 0x93, 0xC7, 0x8F, + 0x16, 0x8B, 0x39, 0xC6, 0x38, 0xA9, 0xEB, 0x3C, 0xCF, 0xE7, 0xB3, 0xC9, + 0xF1, 0x62, 0xF6, 0xFE, 0x2F, 0x3E, 0xCE, 0xF3, 0x6C, 0x52, 0x15, 0x7F, + 0xF6, 0x7F, 0x7E, 0xFF, 0xF3, 0x67, 0x2F, 0x63, 0x44, 0xE7, 0xDD, 0x30, + 0xF8, 0x17, 0x2F, 0xAF, 0x5E, 0x5E, 0x5C, 0x7F, 0xF6, 0xEC, 0xFC, 0xFC, + 0xFC, 0x55, 0xF0, 0x21, 0x25, 0x9C, 0xD5, 0xB5, 0x56, 0x72, 0xD7, 0xB6, + 0xB9, 0xC9, 0x68, 0x18, 0x30, 0x62, 0x8C, 0x98, 0x38, 0xF0, 0xDE, 0xB9, + 0xDE, 0xB9, 0x10, 0xE3, 0xB4, 0x2A, 0xAE, 0x97, 0x9B, 0xB3, 0x93, 0xB9, + 0x0F, 0xA1, 0xC8, 0xB3, 0xA2, 0xC8, 0x56, 0xBB, 0x96, 0x1C, 0x6B, 0xC8, + 0xB7, 0x34, 0x8D, 0x32, 0x32, 0x3C, 0x61, 0x22, 0x4E, 0x65, 0x3F, 0x0C, + 0xCE, 0xB9, 0x18, 0xB1, 0x2C, 0xF2, 0x27, 0x4F, 0x1E, 0x52, 0x2B, 0xAD, + 0x6D, 0xBA, 0x6E, 0x18, 0xAC, 0x75, 0xB9, 0x51, 0x82, 0x13, 0x71, 0x9C, + 0x33, 0xC6, 0x9A, 0xB6, 0xC3, 0x84, 0x5A, 0x09, 0x06, 0x0C, 0x31, 0x96, + 0x45, 0x9E, 0x20, 0xB9, 0x10, 0xB5, 0x94, 0x4A, 0xCA, 0xA6, 0xE9, 0x3E, + 0xFC, 0xD5, 0xB3, 0x37, 0x9E, 0x3E, 0x3A, 0x9A, 0x4D, 0xBC, 0xF3, 0x42, + 0x8A, 0xBE, 0xEB, 0xAD, 0x73, 0x59, 0x66, 0x48, 0x1B, 0x93, 0x04, 0xFF, + 0x9A, 0xB6, 0xA7, 0x7C, 0xCD, 0xF9, 0xF0, 0x93, 0x9F, 0x7E, 0x20, 0x04, + 0xAF, 0xEB, 0xF2, 0xEA, 0xFA, 0xB6, 0x1B, 0xDC, 0x64, 0x52, 0xD7, 0x55, + 0x99, 0xE7, 0xC4, 0xC5, 0x4F, 0x99, 0xD1, 0x29, 0x25, 0x06, 0x2C, 0xC4, + 0xE8, 0xBD, 0x8F, 0x18, 0x8F, 0x66, 0xD3, 0x22, 0x37, 0xF3, 0xD9, 0xC4, + 0x7B, 0xFF, 0xEC, 0xF9, 0x45, 0x9E, 0x67, 0xCE, 0x07, 0x21, 0xC5, 0x6C, + 0x52, 0xF7, 0xBD, 0x5D, 0xEF, 0x9A, 0x94, 0x12, 0x19, 0x5E, 0x48, 0x21, + 0xBA, 0xC1, 0x4E, 0xAA, 0x0A, 0x20, 0x09, 0x21, 0x26, 0x55, 0x75, 0x75, + 0x75, 0x53, 0xE4, 0x39, 0xE7, 0xFC, 0x78, 0x31, 0xBF, 0xBC, 0xBA, 0xC5, + 0x84, 0x54, 0xEF, 0xF4, 0xC3, 0xA0, 0xA4, 0x20, 0x07, 0xDC, 0xF5, 0x7A, + 0xEB, 0x83, 0x97, 0x52, 0x92, 0x63, 0x5B, 0x55, 0xE6, 0x3F, 0xFE, 0xD9, + 0x47, 0xCE, 0x79, 0xEB, 0x3C, 0x79, 0x1D, 0x91, 0xD9, 0x20, 0x19, 0x35, + 0xA5, 0x94, 0x8C, 0x56, 0x7C, 0x6C, 0x1C, 0x31, 0x21, 0xA5, 0x14, 0xDC, + 0x07, 0x44, 0x4C, 0xE4, 0xCD, 0x2C, 0x85, 0x28, 0x8B, 0xCC, 0x87, 0x30, + 0x58, 0xCF, 0x19, 0x5F, 0x6F, 0x36, 0xCB, 0xD5, 0xC6, 0x3A, 0xDF, 0xF5, + 0xBD, 0x52, 0xCA, 0xFB, 0x20, 0x38, 0xAF, 0x8A, 0xC2, 0xF9, 0xC0, 0x38, + 0x97, 0x52, 0x42, 0x4A, 0x42, 0x08, 0xEB, 0x1C, 0x22, 0x8E, 0xD6, 0x90, + 0x88, 0xD7, 0x37, 0xCB, 0xA2, 0x28, 0x08, 0x24, 0x62, 0x9C, 0xE5, 0x59, + 0x86, 0x09, 0x6F, 0x97, 0x2B, 0x25, 0x04, 0x02, 0x5C, 0x5E, 0xDF, 0xD0, + 0x94, 0xD5, 0xFB, 0x1F, 0xFC, 0xEA, 0xFA, 0x76, 0xE5, 0x7D, 0xC8, 0x8D, + 0x39, 0x3B, 0x39, 0xEA, 0xDA, 0x9E, 0x71, 0xEE, 0x9C, 0x3B, 0x3D, 0x9E, + 0xFD, 0xCB, 0x7F, 0xF6, 0xDD, 0xB3, 0x93, 0x79, 0xDB, 0xF5, 0x1F, 0x7F, + 0xF2, 0xFC, 0x97, 0xBF, 0xFA, 0x3C, 0xCF, 0x33, 0xEF, 0x1C, 0xCD, 0x2A, + 0x1A, 0xA3, 0x49, 0xC1, 0xAB, 0xEF, 0x07, 0x21, 0x44, 0x3F, 0x0C, 0xCB, + 0xD5, 0x16, 0x11, 0x9F, 0x9F, 0x5F, 0x20, 0x22, 0x59, 0xC9, 0x35, 0x5D, + 0x4F, 0xE8, 0x15, 0xAD, 0x45, 0x02, 0x25, 0x63, 0x8C, 0xD3, 0x69, 0xDD, + 0xB5, 0xED, 0xD0, 0x0F, 0x5D, 0xDF, 0x49, 0x21, 0x1F, 0x3C, 0x38, 0x91, + 0x52, 0xCC, 0x67, 0x13, 0xC6, 0x98, 0x90, 0xBC, 0x2C, 0x32, 0xAD, 0xA5, + 0x14, 0x7C, 0xCF, 0x2A, 0x20, 0xCE, 0x16, 0x13, 0xA3, 0xAA, 0x9A, 0x10, + 0x92, 0x13, 0x2F, 0xFD, 0x8E, 0xBF, 0x4E, 0xD0, 0x98, 0x92, 0x9C, 0x0B, + 0xF2, 0xA8, 0x3D, 0x4C, 0xFD, 0xB3, 0xBD, 0xB8, 0x04, 0xE7, 0x8C, 0x71, + 0x26, 0xFE, 0xF8, 0x8F, 0xFE, 0x90, 0x72, 0xB1, 0x18, 0x02, 0x26, 0x42, + 0xD7, 0x14, 0xF1, 0xF3, 0xB9, 0x90, 0x42, 0xCA, 0xD5, 0x72, 0xB5, 0x5C, + 0xAE, 0x04, 0x67, 0xAB, 0x4D, 0x7B, 0xBB, 0xDC, 0x59, 0xEB, 0x23, 0x46, + 0xCE, 0x59, 0x99, 0x67, 0x47, 0xB3, 0xB2, 0x2C, 0xB2, 0xC1, 0xFA, 0xDB, + 0xD5, 0xF6, 0x66, 0xB9, 0xB9, 0xB9, 0xD9, 0x5C, 0x5E, 0x6F, 0xBA, 0x7E, + 0x08, 0x21, 0x5A, 0x1B, 0xEA, 0x22, 0xFB, 0xCA, 0x3B, 0x4F, 0x75, 0x9E, + 0xF3, 0x51, 0x11, 0x9B, 0x31, 0xC6, 0xB4, 0x31, 0xCA, 0x64, 0xE3, 0xF7, + 0xCC, 0x58, 0x1A, 0xC7, 0x1E, 0x29, 0x2B, 0x42, 0x96, 0x30, 0x7A, 0x8F, + 0x21, 0x1C, 0x9A, 0x98, 0x04, 0x42, 0x01, 0xE7, 0xD4, 0x05, 0xA7, 0xB9, + 0x57, 0x8A, 0x47, 0x8C, 0x73, 0x48, 0x0C, 0x00, 0x19, 0x03, 0xC6, 0x04, + 0x90, 0x0B, 0xC9, 0x7E, 0x12, 0x33, 0x41, 0x62, 0x09, 0x28, 0xEC, 0x8F, + 0x3F, 0xC5, 0x3F, 0xAE, 0x04, 0xCB, 0x39, 0xEF, 0x9A, 0xDD, 0xF3, 0x67, + 0x2F, 0x04, 0x57, 0x09, 0x00, 0x23, 0x84, 0x88, 0x89, 0x68, 0x27, 0x34, + 0x30, 0x2C, 0xC6, 0xF4, 0x74, 0xAC, 0x0B, 0xEE, 0x61, 0x94, 0x87, 0x48, + 0x0A, 0x00, 0xC0, 0x12, 0x3F, 0x88, 0x6D, 0xA4, 0x84, 0x29, 0xC5, 0x90, + 0x42, 0xC4, 0xDD, 0xAE, 0x3B, 0x7F, 0x79, 0xFD, 0xE2, 0xD5, 0xED, 0xAB, + 0xAB, 0xDB, 0xAA, 0xAC, 0xBA, 0xBE, 0x97, 0x4A, 0x02, 0x63, 0xCE, 0xF9, + 0x2C, 0xCF, 0xA7, 0xD3, 0x7A, 0x36, 0x9D, 0x0C, 0xD6, 0x39, 0xEF, 0xD6, + 0x9B, 0xAD, 0x92, 0xF2, 0xEC, 0xF4, 0xA8, 0x2E, 0x8B, 0x3F, 0xFF, 0xFE, + 0xDF, 0x5E, 0x5D, 0x2F, 0x81, 0xB1, 0x61, 0xB0, 0xB4, 0x86, 0x53, 0x4A, + 0xBD, 0xB5, 0xAB, 0xCD, 0x46, 0x29, 0x05, 0x09, 0x26, 0x75, 0x79, 0x34, + 0x9D, 0x6E, 0xDB, 0x96, 0xD2, 0x9C, 0xCE, 0x5A, 0x29, 0xE4, 0x83, 0xE3, + 0xA3, 0xAA, 0xC8, 0xB7, 0x4D, 0x13, 0x10, 0xEB, 0xA2, 0x88, 0x18, 0x5F, + 0xDD, 0xAC, 0x10, 0xD3, 0x6C, 0x52, 0x7B, 0x1F, 0x63, 0x4A, 0x57, 0xCB, + 0xCD, 0x66, 0xD7, 0x7A, 0x92, 0x03, 0x02, 0x20, 0x69, 0x07, 0x9A, 0xAF, + 0xA6, 0xB6, 0x5D, 0x8C, 0x48, 0xF0, 0xE5, 0xF1, 0x62, 0x56, 0x16, 0x79, + 0x5D, 0x57, 0x5D, 0xD7, 0xF5, 0xFD, 0xD0, 0x0F, 0x6E, 0xB0, 0x4E, 0x1B, + 0x33, 0xA9, 0x6B, 0x44, 0x84, 0x94, 0xB4, 0xD6, 0x44, 0xA4, 0x84, 0x94, + 0x8C, 0x56, 0x18, 0x31, 0x2F, 0x32, 0x21, 0x39, 0x24, 0x20, 0x6D, 0xB8, + 0xBA, 0x2C, 0x10, 0x71, 0xB9, 0xDA, 0x70, 0xCE, 0xDE, 0xFB, 0xE6, 0x57, + 0x62, 0x0C, 0x52, 0x70, 0x44, 0xB4, 0xCE, 0xB7, 0x6D, 0xB7, 0x6B, 0x3B, + 0xCE, 0x59, 0x59, 0x96, 0xE4, 0xBD, 0xA0, 0x94, 0x68, 0xDB, 0x5E, 0x0A, + 0xF1, 0xF4, 0xB5, 0x47, 0x8F, 0x1F, 0x3F, 0x98, 0x4E, 0x27, 0xDB, 0xED, + 0xEE, 0xFA, 0x76, 0xBD, 0xDA, 0x6C, 0x87, 0xC1, 0x9E, 0x9D, 0x1E, 0x03, + 0xA2, 0x77, 0x8E, 0x84, 0xC9, 0x94, 0x92, 0xF4, 0x25, 0xD0, 0xDE, 0x5D, + 0x55, 0xE5, 0xC3, 0xB3, 0x93, 0x94, 0xD2, 0xF5, 0xCD, 0x92, 0xCA, 0xF1, + 0xCC, 0x64, 0x34, 0x56, 0x29, 0xA5, 0x5C, 0x2C, 0x66, 0x97, 0x97, 0x37, + 0x11, 0xD3, 0xD1, 0x6C, 0x32, 0x99, 0x54, 0x5A, 0xAB, 0xA6, 0xED, 0x48, + 0x4B, 0x64, 0xBB, 0x6B, 0xBF, 0xF2, 0xCE, 0xD3, 0xED, 0xAE, 0x7D, 0xFE, + 0xE2, 0xC2, 0x18, 0x95, 0x19, 0x3D, 0x9B, 0xD6, 0xBB, 0xA6, 0x9B, 0x4D, + 0xAB, 0x69, 0x5D, 0x31, 0x00, 0x29, 0x84, 0x92, 0x82, 0x26, 0x9F, 0x20, + 0x81, 0x0B, 0x21, 0xCB, 0xCC, 0x66, 0xB3, 0x7B, 0xF6, 0xE2, 0xA2, 0xAE, + 0xCA, 0xD5, 0x7A, 0xCB, 0x19, 0x53, 0x4A, 0x79, 0xEF, 0xAD, 0xF3, 0x90, + 0x80, 0x0B, 0x26, 0x38, 0x23, 0xC2, 0xF6, 0x60, 0x1D, 0xE7, 0x3C, 0x37, + 0x6A, 0x70, 0x9E, 0x16, 0x9E, 0x16, 0x5C, 0x4A, 0xA1, 0xA5, 0xEC, 0xAD, + 0xDB, 0x35, 0x5D, 0x8C, 0x11, 0x23, 0xF6, 0xFD, 0x50, 0x96, 0xE5, 0x76, + 0xBB, 0xDB, 0x93, 0xD4, 0xC0, 0x5A, 0x9F, 0x20, 0x29, 0x29, 0x9D, 0x73, + 0x8C, 0x71, 0x6B, 0x1D, 0x63, 0xEC, 0xEC, 0x74, 0x51, 0x16, 0x26, 0xCF, + 0xCC, 0xB3, 0xF3, 0x57, 0xCE, 0x79, 0x12, 0xC9, 0xA1, 0xB6, 0x78, 0xD3, + 0xB6, 0x79, 0x66, 0x4E, 0x8F, 0x17, 0x5D, 0xDF, 0x0F, 0xD6, 0x9E, 0x2C, + 0x16, 0x18, 0x71, 0xBD, 0xDD, 0x19, 0xAD, 0x8F, 0x17, 0x47, 0xD6, 0xDA, + 0xC1, 0xDA, 0xE9, 0xA4, 0x24, 0x9F, 0xBD, 0x6F, 0x7E, 0xED, 0xCD, 0xFF, + 0xFA, 0xF7, 0xBF, 0x57, 0x64, 0xC6, 0xFB, 0xF0, 0xD3, 0x9F, 0x7D, 0xB4, + 0x5C, 0x6D, 0x7F, 0xE7, 0x7B, 0xDF, 0x36, 0x46, 0x7D, 0xF4, 0xF1, 0xE7, + 0x75, 0x59, 0x38, 0xE7, 0xFB, 0xC1, 0x4A, 0x29, 0xBB, 0x6E, 0xF0, 0x21, + 0xBC, 0xF6, 0xE8, 0x8C, 0x31, 0x76, 0x73, 0x73, 0x3B, 0x9B, 0x54, 0x5A, + 0xC9, 0xB2, 0x2A, 0x1F, 0x3D, 0x38, 0x15, 0x9C, 0xC5, 0x18, 0xA7, 0x75, + 0x59, 0x97, 0x45, 0x6E, 0x54, 0xAE, 0xE5, 0xB4, 0xCC, 0x43, 0x0C, 0x2E, + 0x44, 0x3B, 0xB8, 0xC1, 0x5A, 0xEF, 0x5D, 0x99, 0xE7, 0x55, 0x55, 0x2A, + 0x29, 0xE7, 0xB3, 0x2A, 0x33, 0x5A, 0x2B, 0x31, 0xA9, 0x0B, 0xAD, 0x88, + 0x34, 0x3E, 0x4E, 0x17, 0xD2, 0xFA, 0xE1, 0x87, 0xC7, 0x5E, 0xBC, 0xEB, + 0xC0, 0x97, 0x18, 0x53, 0x12, 0x4E, 0x89, 0x98, 0x20, 0x63, 0x8D, 0x2F, + 0x20, 0x48, 0xF7, 0xAA, 0x53, 0xCA, 0xD3, 0x46, 0xCC, 0x88, 0x9C, 0x78, + 0xA4, 0x52, 0xC0, 0x85, 0x10, 0x82, 0x52, 0x9E, 0xE3, 0x93, 0xE3, 0x3C, + 0xCB, 0xCE, 0x5F, 0x5E, 0xD2, 0x6C, 0x7D, 0xDA, 0x93, 0xD3, 0x10, 0xD3, + 0xCD, 0x6A, 0xD7, 0xBF, 0xBC, 0xA5, 0xE3, 0x0B, 0x21, 0x0E, 0xCE, 0x7B, + 0x1F, 0x89, 0xEC, 0x50, 0x64, 0xEA, 0xF5, 0xD7, 0x1F, 0x64, 0x65, 0x11, + 0x22, 0x2A, 0x00, 0xA5, 0x54, 0x42, 0x6C, 0x9A, 0x56, 0x6B, 0x27, 0xA4, + 0x44, 0x87, 0x42, 0x4A, 0x3E, 0xB6, 0xAB, 0x01, 0x80, 0x01, 0x46, 0xC0, + 0x48, 0x51, 0x2B, 0x21, 0x8E, 0x93, 0x6C, 0x63, 0xCC, 0x48, 0xFB, 0xAE, + 0x62, 0x22, 0xB5, 0x58, 0xC6, 0x18, 0xE3, 0xF7, 0xA5, 0xBB, 0xD8, 0xC8, + 0x0B, 0x3B, 0x54, 0xA8, 0xD4, 0x49, 0xD8, 0x67, 0xA6, 0x90, 0x04, 0xB0, + 0x2F, 0x36, 0x10, 0xC6, 0xD7, 0x92, 0xA5, 0xB9, 0x7D, 0xF1, 0xFC, 0x1C, + 0x11, 0x18, 0x67, 0x64, 0xB1, 0x37, 0xAA, 0x3A, 0x26, 0x48, 0x7B, 0xD5, + 0xE9, 0xC3, 0x85, 0x0D, 0x98, 0x18, 0xD1, 0xD8, 0x12, 0x2A, 0x10, 0x42, + 0x8C, 0xD7, 0x9D, 0xB8, 0x62, 0xA4, 0xB4, 0xB3, 0x4F, 0x32, 0x59, 0x8C, + 0xB8, 0x6B, 0xFB, 0xF3, 0x8B, 0xAB, 0x8B, 0x8B, 0x2B, 0xC6, 0xC5, 0xD9, + 0xC9, 0x71, 0x08, 0xE1, 0xD1, 0xA3, 0xB3, 0xA3, 0xA3, 0xF9, 0x76, 0xDB, + 0x74, 0xDD, 0xF0, 0xE0, 0xEC, 0x98, 0x2C, 0xC8, 0x6E, 0x97, 0x6B, 0x6B, + 0x2D, 0xA4, 0xF4, 0xE0, 0xF4, 0xA4, 0xEB, 0x86, 0xFF, 0xE3, 0xCF, 0xFE, + 0xE2, 0xD5, 0xE5, 0xB2, 0xB7, 0x03, 0x8D, 0x43, 0x73, 0x00, 0xEB, 0x5C, + 0xC4, 0x14, 0x13, 0x4E, 0xAA, 0xBA, 0x2C, 0xF2, 0xCD, 0x76, 0xCB, 0x38, + 0xBF, 0xDD, 0x6C, 0xBA, 0x6E, 0x40, 0x44, 0xD0, 0x0C, 0x13, 0xB4, 0x83, + 0xBD, 0xBA, 0x5D, 0x53, 0x2F, 0xDF, 0x79, 0x2F, 0x84, 0x50, 0x42, 0x4A, + 0x81, 0x8C, 0xB1, 0x57, 0xD7, 0xEB, 0x98, 0x90, 0x01, 0x74, 0xDD, 0x40, + 0x26, 0xC1, 0x04, 0x5F, 0x22, 0x26, 0xEB, 0x03, 0xA2, 0x27, 0x00, 0x02, + 0x12, 0x70, 0xCE, 0x42, 0x88, 0xA7, 0x27, 0xF3, 0x49, 0x5D, 0xED, 0x76, + 0x4D, 0xB3, 0xDB, 0xD9, 0xC1, 0x6E, 0x9B, 0xB6, 0x1F, 0x6C, 0x55, 0x95, + 0xA7, 0xC7, 0x0B, 0x06, 0x69, 0xB7, 0xDD, 0x1D, 0x7A, 0xB8, 0x42, 0x08, + 0x92, 0x09, 0xA8, 0xCB, 0x8C, 0x01, 0x5B, 0xAF, 0x76, 0x64, 0x33, 0xBA, + 0x6D, 0xDA, 0xF9, 0xA4, 0x2E, 0x0B, 0x33, 0xA9, 0x8A, 0xA3, 0xD9, 0xC4, + 0x39, 0x17, 0x63, 0x0C, 0xCE, 0x93, 0x34, 0xD8, 0x7C, 0x3E, 0xDD, 0xEC, + 0x9A, 0x04, 0x20, 0x84, 0x08, 0xC1, 0xD7, 0x65, 0x41, 0xF3, 0x77, 0x9B, + 0x6D, 0x43, 0x86, 0x98, 0xC6, 0xE8, 0xDF, 0xFC, 0xCE, 0x37, 0xB3, 0xCC, + 0x5C, 0x5E, 0xAF, 0xBC, 0x8F, 0x31, 0x46, 0x21, 0x44, 0x88, 0xD4, 0xED, + 0x65, 0x4A, 0xC9, 0x10, 0x31, 0x84, 0xE8, 0x06, 0xDB, 0x42, 0x32, 0x8D, + 0xBE, 0xBE, 0x59, 0x5D, 0xDF, 0xDC, 0x4A, 0x25, 0x38, 0xD7, 0x37, 0x37, + 0xCB, 0xAB, 0xEB, 0x9B, 0x53, 0xB6, 0xF8, 0xFA, 0xBB, 0x6F, 0x26, 0x32, + 0x34, 0xB1, 0x7E, 0xB3, 0xDD, 0x59, 0xE7, 0x95, 0xE0, 0x9B, 0x5D, 0xFB, + 0xE6, 0xD3, 0xC7, 0x55, 0x91, 0x3F, 0x7B, 0x71, 0x71, 0x34, 0x9F, 0x3E, + 0x3F, 0xBF, 0x50, 0x52, 0x4C, 0x27, 0x55, 0x59, 0xE4, 0x09, 0x93, 0x10, + 0xFC, 0xEC, 0x78, 0xC6, 0x69, 0x7E, 0xA8, 0x2A, 0x94, 0x12, 0x29, 0x41, + 0x66, 0xF4, 0x7A, 0xDB, 0x4C, 0xA7, 0xF5, 0xEB, 0x4F, 0xCE, 0x72, 0xA3, + 0xBD, 0xF7, 0x5F, 0xFB, 0xCA, 0x1B, 0x09, 0x52, 0x3B, 0x0C, 0xC1, 0x07, + 0x92, 0x84, 0x15, 0x9C, 0x31, 0x21, 0x85, 0x00, 0xE2, 0x73, 0x38, 0xEF, + 0x39, 0x17, 0x00, 0x29, 0x44, 0xA4, 0xD2, 0xDD, 0xF5, 0xCE, 0x5A, 0x5B, + 0x95, 0xA5, 0x94, 0x4A, 0x08, 0xF1, 0xF0, 0xC1, 0xC9, 0xAB, 0xCB, 0xEB, + 0xD5, 0x66, 0xCB, 0xB8, 0x28, 0xAB, 0x54, 0x55, 0x65, 0xD7, 0xF5, 0x4A, + 0xA9, 0x61, 0xB0, 0x4A, 0xC9, 0x22, 0xCF, 0xB9, 0x10, 0xD6, 0x5A, 0xF2, + 0x58, 0x2B, 0x4B, 0x35, 0x0C, 0x16, 0x18, 0x10, 0x5B, 0x93, 0x01, 0x84, + 0xE0, 0x19, 0xE3, 0x09, 0x13, 0x40, 0xCA, 0x8C, 0xC9, 0xB3, 0xCC, 0x79, + 0x7F, 0x7C, 0x7C, 0x44, 0x64, 0x14, 0xAD, 0x44, 0x3F, 0x0C, 0xC6, 0xE8, + 0xAA, 0xCA, 0x5F, 0x5E, 0x8C, 0x02, 0xB3, 0xDF, 0xF9, 0xD6, 0x57, 0x9F, + 0x3C, 0x3A, 0x79, 0xFC, 0xF0, 0x94, 0x50, 0xFF, 0x9F, 0xFE, 0xEC, 0xA3, + 0x4F, 0x9F, 0x9D, 0x1F, 0xCD, 0xEA, 0xAE, 0xEF, 0x7F, 0xF0, 0xC3, 0x9F, + 0x90, 0x16, 0xD3, 0xA9, 0x56, 0xAF, 0x2E, 0xAF, 0xBD, 0xB3, 0x00, 0x38, + 0xAD, 0x0A, 0xCE, 0x40, 0x70, 0xA8, 0xAB, 0x22, 0x37, 0xB2, 0x7A, 0x78, + 0x32, 0x2A, 0xD3, 0x42, 0x29, 0x18, 0x54, 0x55, 0x89, 0x11, 0xDB, 0xBE, + 0x57, 0x4A, 0x69, 0xA5, 0xA4, 0x52, 0x42, 0xEE, 0x52, 0x82, 0x93, 0xC5, + 0x11, 0xE3, 0x00, 0x29, 0x09, 0x00, 0x2D, 0xF8, 0xD1, 0x6C, 0xCA, 0x19, + 0xD3, 0x5A, 0x2A, 0x29, 0x49, 0x01, 0x8C, 0x74, 0x76, 0x38, 0x67, 0xA3, + 0xE6, 0xE4, 0x3E, 0x30, 0x7D, 0x31, 0x7E, 0xDD, 0x25, 0x0A, 0xEC, 0x8B, + 0x1A, 0x14, 0x69, 0x24, 0xAE, 0xB2, 0x7B, 0x7D, 0x3E, 0x20, 0xA6, 0x34, + 0x81, 0x76, 0x11, 0x00, 0x48, 0x71, 0x90, 0xED, 0x29, 0x73, 0x30, 0xEA, + 0x4D, 0x0B, 0xCE, 0x89, 0x12, 0x0C, 0x94, 0x43, 0x06, 0x8E, 0x55, 0x25, + 0xBB, 0xDE, 0x21, 0x26, 0x63, 0xA4, 0x96, 0x32, 0x22, 0x7A, 0x1F, 0xAC, + 0x0D, 0x88, 0x58, 0x15, 0x46, 0x08, 0xFE, 0xD5, 0xB7, 0x1F, 0x9F, 0x9C, + 0x2C, 0x10, 0x81, 0x01, 0x24, 0xC6, 0x6C, 0xD7, 0x2E, 0x97, 0xEB, 0xB6, + 0xEB, 0x19, 0x03, 0xAD, 0x95, 0x73, 0xDE, 0xF0, 0x9C, 0x01, 0x19, 0x67, + 0x40, 0x42, 0xDC, 0x77, 0x24, 0xC7, 0x7C, 0x8A, 0x01, 0xE0, 0xDE, 0x6E, + 0x52, 0x48, 0xC9, 0x01, 0x80, 0x8B, 0x04, 0x00, 0x88, 0xD1, 0xFB, 0xFD, + 0xA8, 0x1B, 0xE7, 0x42, 0x8E, 0x80, 0x17, 0xDB, 0xE7, 0x6E, 0x5F, 0xCA, + 0x92, 0x20, 0x41, 0x62, 0x69, 0x6F, 0xF5, 0x78, 0xEF, 0x72, 0x8C, 0xA4, + 0x4A, 0x8C, 0xFE, 0x57, 0x1F, 0x7D, 0xDC, 0xB6, 0x83, 0x94, 0x32, 0xC6, + 0x14, 0x31, 0x61, 0x4A, 0xA3, 0x82, 0xDE, 0x3E, 0xEC, 0x8F, 0x12, 0x47, + 0x08, 0x94, 0x67, 0x51, 0xBA, 0x45, 0x8D, 0x98, 0x7D, 0x14, 0x63, 0xD4, + 0x9F, 0xC0, 0x71, 0x06, 0x6E, 0x04, 0x2F, 0x77, 0x4D, 0x77, 0x7E, 0x71, + 0x75, 0x79, 0xBD, 0xEC, 0xFA, 0x61, 0x32, 0x9D, 0x64, 0x59, 0x56, 0x95, + 0x85, 0xC9, 0xCD, 0xE5, 0xD5, 0xED, 0x6C, 0x5A, 0x57, 0x55, 0xA9, 0x8D, + 0xBE, 0xBC, 0xBA, 0xBD, 0xBA, 0x5D, 0xDD, 0xDC, 0xAE, 0x16, 0xF3, 0xD9, + 0x37, 0xBF, 0xF6, 0xD6, 0xB3, 0xE7, 0x2F, 0x3F, 0xFC, 0xF0, 0xD3, 0xE5, + 0x72, 0x3B, 0x99, 0x54, 0xD0, 0x30, 0xE7, 0x3C, 0xA9, 0x17, 0x24, 0x00, + 0xA3, 0x75, 0x82, 0x11, 0xCE, 0xF7, 0x21, 0x6C, 0x77, 0x8D, 0x94, 0x52, + 0x4A, 0xC1, 0xB9, 0x4A, 0x90, 0xFA, 0xC1, 0xB5, 0x5D, 0xDF, 0xF5, 0xBD, + 0x96, 0x8A, 0x08, 0x3E, 0xD6, 0x3A, 0x94, 0xD2, 0xF9, 0x40, 0x96, 0x42, + 0x98, 0x30, 0x21, 0x2A, 0x21, 0x07, 0x6F, 0x49, 0x0E, 0x84, 0xB8, 0x6E, + 0x31, 0xA2, 0x1C, 0xE5, 0x27, 0x29, 0xF0, 0x83, 0x10, 0x3C, 0xD3, 0x7A, + 0xE8, 0x07, 0x96, 0x20, 0x21, 0xB6, 0xDD, 0x80, 0x88, 0xB3, 0xAA, 0x5C, + 0x2C, 0xE6, 0xF3, 0xA3, 0xE9, 0x66, 0xBD, 0xC5, 0x18, 0xA9, 0x7D, 0x2E, + 0xA4, 0x64, 0x31, 0x7A, 0x1F, 0x74, 0x5D, 0x14, 0x45, 0xD6, 0x36, 0x7D, + 0x88, 0x31, 0xC6, 0xE4, 0xBC, 0x53, 0x4A, 0x09, 0xC1, 0x04, 0x63, 0x47, + 0xB3, 0x9A, 0xA5, 0x34, 0x8A, 0xE8, 0x8B, 0xA4, 0x94, 0x9A, 0x1B, 0xC3, + 0x85, 0x78, 0xF2, 0xE8, 0x6C, 0xB5, 0xDE, 0x6E, 0x77, 0x3B, 0xA3, 0x95, + 0xB5, 0x3E, 0xCF, 0x4D, 0x9E, 0x19, 0x6B, 0xF4, 0xAE, 0x69, 0x31, 0xE2, + 0x8B, 0x97, 0x17, 0x75, 0x55, 0xCE, 0xA6, 0x93, 0x3C, 0xCF, 0xCF, 0x2F, + 0xAE, 0x57, 0xEB, 0x2D, 0x91, 0xBF, 0xBB, 0xAE, 0xAF, 0xEB, 0x32, 0xA5, + 0x24, 0x38, 0x07, 0x01, 0x82, 0xF3, 0xD3, 0xD3, 0x93, 0x2C, 0x33, 0xAB, + 0xF5, 0xD6, 0xF9, 0xF0, 0xC6, 0xEB, 0x8F, 0x27, 0x93, 0xEA, 0x79, 0x99, + 0xDF, 0xDC, 0xAE, 0x2F, 0x2F, 0x6F, 0x94, 0x10, 0xDF, 0xFE, 0xD6, 0x57, + 0xDF, 0xFF, 0xF9, 0xAF, 0x9A, 0xB6, 0xAD, 0xEA, 0x92, 0x33, 0x1E, 0xBC, + 0x23, 0xA4, 0xD9, 0x79, 0xFF, 0xE6, 0xD3, 0xC7, 0xB7, 0xCB, 0x35, 0x46, + 0x94, 0x42, 0x4C, 0xEB, 0xAA, 0xAE, 0xCB, 0xDC, 0xE8, 0x14, 0x71, 0x36, + 0xA9, 0xC8, 0x3B, 0xA3, 0x2C, 0xF2, 0x3C, 0x37, 0x55, 0x59, 0x9E, 0x1C, + 0xCF, 0x77, 0x6D, 0xF7, 0xDE, 0xD7, 0xDF, 0x21, 0x41, 0xB1, 0xDF, 0xFE, + 0xEE, 0x37, 0x67, 0x93, 0xF2, 0x7F, 0xFB, 0x8F, 0x7F, 0x4E, 0x1B, 0x67, + 0x8C, 0xD1, 0x39, 0x87, 0x48, 0x77, 0x07, 0x57, 0x52, 0x02, 0x00, 0x67, + 0x2C, 0xCF, 0x34, 0x62, 0xB2, 0xDE, 0x73, 0xC1, 0x87, 0xC1, 0xB6, 0x6D, + 0xDF, 0xB6, 0x7D, 0x88, 0x89, 0x0B, 0xBE, 0x5C, 0x6D, 0x7E, 0xEB, 0x37, + 0xBE, 0xE5, 0xAC, 0xBF, 0xBC, 0xBA, 0x15, 0x12, 0xAE, 0xAE, 0x6F, 0x01, + 0xA0, 0xAE, 0x4B, 0x8A, 0x56, 0x42, 0x70, 0x1F, 0xC2, 0xD3, 0x47, 0xA7, + 0xB7, 0x4A, 0xDC, 0xDC, 0xAC, 0x84, 0xE0, 0x7D, 0xDF, 0x93, 0xB6, 0xC3, + 0x6A, 0x9D, 0xD4, 0xF8, 0xA5, 0xF3, 0x94, 0x12, 0xD5, 0x0A, 0x93, 0xAA, + 0x3C, 0xBF, 0x78, 0xF5, 0xDA, 0xE3, 0x07, 0xEF, 0xBC, 0xF9, 0x78, 0xBB, + 0x6D, 0xCA, 0xB2, 0x1C, 0x86, 0xE1, 0xF2, 0xEA, 0xF6, 0xAD, 0xA7, 0x8F, + 0x1F, 0x3E, 0x58, 0x9C, 0x9F, 0xBF, 0x3A, 0x2D, 0x8F, 0x9E, 0x3E, 0x39, + 0xFB, 0xBD, 0x7F, 0xFA, 0x1E, 0x22, 0x6E, 0xB6, 0x0D, 0x00, 0x34, 0x6D, + 0xF7, 0xB3, 0x0F, 0x3E, 0x7A, 0xF2, 0xE4, 0x61, 0xDB, 0xF4, 0xFF, 0xE9, + 0x3F, 0x7F, 0x1F, 0x83, 0x9F, 0xD4, 0x15, 0x17, 0xD2, 0xF7, 0x7D, 0x5D, + 0x16, 0xF3, 0xF9, 0x9C, 0xEC, 0xB8, 0x8A, 0x3C, 0xCB, 0xB3, 0x45, 0x55, + 0x64, 0x79, 0x6E, 0x48, 0xDC, 0x78, 0xB0, 0xB6, 0xEB, 0x87, 0xC9, 0x64, + 0xF2, 0xF4, 0xB5, 0x07, 0x0C, 0xA0, 0x1F, 0x2C, 0x62, 0x6A, 0xBA, 0xCE, + 0x18, 0x7D, 0x74, 0x34, 0xE3, 0x5C, 0xD4, 0x55, 0xD1, 0xB6, 0x9D, 0xF7, + 0x9E, 0x33, 0xA8, 0xCA, 0xCC, 0x3B, 0x37, 0x5D, 0x4C, 0xB5, 0x92, 0x52, + 0x72, 0x21, 0xF6, 0x6E, 0x06, 0x30, 0xC2, 0xE0, 0x8C, 0xDF, 0x51, 0x0E, + 0xEE, 0xB7, 0xF2, 0x18, 0x00, 0xC2, 0x1E, 0x76, 0x1A, 0x75, 0x79, 0x69, + 0xF8, 0x1B, 0xF7, 0x21, 0x8F, 0x56, 0xF1, 0x1D, 0x24, 0x2D, 0x71, 0xD4, + 0x11, 0x97, 0xCA, 0x18, 0xA9, 0x34, 0x83, 0x3B, 0x85, 0x89, 0x94, 0x12, + 0x4B, 0x80, 0xD1, 0x3B, 0x6B, 0xF9, 0xDE, 0xE7, 0x02, 0x20, 0x71, 0xC6, + 0x10, 0x71, 0x36, 0xC9, 0x9D, 0x8F, 0x5D, 0x6F, 0x31, 0xE2, 0x76, 0xD7, + 0x5B, 0x17, 0x8C, 0x96, 0x52, 0xA8, 0xAA, 0xCA, 0x8D, 0x14, 0xB3, 0xF9, + 0x8C, 0x49, 0x45, 0x4D, 0xA5, 0x14, 0xB1, 0x69, 0x5A, 0xA5, 0xC4, 0xC3, + 0x87, 0x67, 0x7B, 0xD3, 0x84, 0x71, 0x54, 0x2D, 0x21, 0x1D, 0x0B, 0x42, + 0x02, 0xCE, 0x05, 0xF9, 0xE5, 0x1C, 0xE2, 0x2E, 0x4B, 0x80, 0x18, 0x63, + 0x00, 0x46, 0xC3, 0x93, 0x29, 0xB1, 0x84, 0xDE, 0x3B, 0x44, 0xA4, 0xB8, + 0x95, 0xE5, 0x39, 0x62, 0x12, 0x42, 0x70, 0x21, 0x81, 0x8B, 0x3D, 0xDC, + 0x76, 0x47, 0xAA, 0x18, 0x8B, 0xE9, 0x2F, 0xA7, 0x62, 0x89, 0x38, 0xE5, + 0xB6, 0x6F, 0x3F, 0xFA, 0xF0, 0x63, 0x12, 0x03, 0x88, 0x81, 0xF4, 0x35, + 0x00, 0x71, 0xC4, 0x19, 0x19, 0x63, 0x87, 0x37, 0x24, 0xD6, 0x28, 0x7D, + 0xEA, 0x28, 0xD0, 0xAA, 0x7F, 0x6D, 0x9E, 0x74, 0x9C, 0x4F, 0x62, 0x0C, + 0x20, 0xC6, 0x78, 0x73, 0xBB, 0x59, 0xAD, 0xB7, 0xAB, 0xD5, 0xB6, 0x2A, + 0x8A, 0xB7, 0xDE, 0x7C, 0x1D, 0x81, 0x69, 0xA3, 0x13, 0xA6, 0xD5, 0x6A, + 0x3B, 0x9B, 0xD6, 0x5A, 0xEB, 0x67, 0xCF, 0x5F, 0x5A, 0xE7, 0xCF, 0x2F, + 0x2E, 0x3F, 0xF9, 0xE4, 0xF9, 0x72, 0xB5, 0xF9, 0xEF, 0xFF, 0xDB, 0x7F, + 0xDE, 0x34, 0xDD, 0x7F, 0xFA, 0xD3, 0x3F, 0xE7, 0x8C, 0x4F, 0xA6, 0x35, + 0x97, 0x12, 0x31, 0x31, 0xCE, 0xD0, 0xD3, 0x62, 0x10, 0x5A, 0xAB, 0x4D, + 0xD3, 0xE0, 0xE8, 0x5D, 0xC6, 0xB4, 0xD6, 0x52, 0x0A, 0x2A, 0x4F, 0x9A, + 0xBE, 0x0F, 0x31, 0xD1, 0x0C, 0x53, 0x0C, 0x41, 0x70, 0x1E, 0x3D, 0x1A, + 0xAD, 0x87, 0xC1, 0xC6, 0x18, 0x75, 0x91, 0x63, 0xC4, 0x10, 0x82, 0x0B, + 0x5E, 0x70, 0xC1, 0x18, 0x17, 0x02, 0x68, 0xEB, 0x62, 0x0C, 0xB4, 0x96, + 0x18, 0x91, 0x31, 0x36, 0x1A, 0xA3, 0x71, 0xCE, 0x38, 0x1B, 0xAC, 0x55, + 0x42, 0x84, 0x88, 0xDB, 0xA6, 0xED, 0x06, 0x5B, 0xE5, 0xC6, 0x48, 0x15, + 0x43, 0xE0, 0x0C, 0xB4, 0x96, 0x34, 0xF4, 0x4B, 0x83, 0xAC, 0x09, 0x51, + 0x70, 0xF0, 0x3E, 0xAC, 0x57, 0x3B, 0x22, 0xAA, 0xB7, 0xC3, 0xE0, 0xBD, + 0x3F, 0x3B, 0x5E, 0x30, 0x80, 0xED, 0x6E, 0x17, 0xD6, 0x71, 0xD7, 0xB4, + 0x67, 0x67, 0x8B, 0xD3, 0x93, 0xA3, 0x18, 0x35, 0x1D, 0x36, 0x8F, 0x91, + 0xB0, 0x8E, 0x61, 0xB0, 0x74, 0x8D, 0xFB, 0x01, 0x68, 0xE5, 0xDC, 0x2E, + 0xD7, 0x3E, 0x84, 0xE3, 0xC5, 0xC2, 0x3A, 0x1F, 0xA3, 0x37, 0x59, 0xF6, + 0xFA, 0x93, 0x87, 0x93, 0xAA, 0xBC, 0xB8, 0xBC, 0x79, 0xF8, 0xE0, 0x94, + 0xE8, 0xA3, 0x6D, 0xD7, 0xED, 0x0D, 0xB7, 0xA0, 0xAA, 0xCA, 0xDB, 0xD5, + 0x26, 0xC6, 0xAD, 0xD6, 0xEA, 0xB3, 0x67, 0x2F, 0xF3, 0x4C, 0x3F, 0x7E, + 0x74, 0xB6, 0x58, 0xCC, 0x3E, 0xF9, 0xF4, 0x85, 0x52, 0x22, 0x33, 0xEA, + 0xEB, 0xEF, 0xBE, 0xD9, 0x5B, 0xF7, 0xFC, 0xC5, 0xAB, 0xA6, 0xEB, 0x8E, + 0x66, 0x93, 0xBA, 0xAE, 0x2E, 0xAF, 0x6E, 0xEA, 0xA2, 0x10, 0x9C, 0xCF, + 0x67, 0x93, 0xD5, 0x7A, 0x1B, 0x63, 0x9C, 0x4F, 0xAB, 0x3C, 0x33, 0x31, + 0x46, 0x1F, 0xA3, 0x60, 0xAC, 0xAA, 0x72, 0xA5, 0x84, 0x56, 0xCA, 0x68, + 0xCD, 0x12, 0xBE, 0xFE, 0xE8, 0x74, 0x32, 0x29, 0x13, 0xB0, 0x18, 0x22, + 0x67, 0xEC, 0x74, 0x31, 0xBD, 0xBE, 0x5D, 0x5F, 0xDD, 0x2C, 0xA5, 0xD4, + 0x84, 0x8E, 0x01, 0xB0, 0xCC, 0x28, 0xEB, 0x02, 0xE5, 0x9B, 0x04, 0xD5, + 0x2B, 0x25, 0xFB, 0xAE, 0xD7, 0xAA, 0x54, 0x4A, 0x3A, 0xE7, 0xE9, 0x68, + 0x63, 0x8C, 0x0F, 0xCE, 0x4E, 0x18, 0x17, 0x2F, 0x2E, 0x2E, 0x97, 0xAB, + 0x4D, 0x02, 0xF0, 0xDE, 0xD3, 0x58, 0x42, 0xDF, 0x5B, 0x82, 0x85, 0x42, + 0x88, 0x88, 0xFE, 0x67, 0x1F, 0x7C, 0x38, 0x9F, 0xCD, 0x4D, 0x66, 0x82, + 0xF7, 0x52, 0x4A, 0xAD, 0x64, 0xDB, 0xF5, 0xCE, 0x7B, 0xD0, 0x63, 0x25, + 0x11, 0x63, 0x34, 0xC6, 0x70, 0xCE, 0xAF, 0xAE, 0x6F, 0xDF, 0x7E, 0xF3, + 0xB5, 0xEF, 0x7E, 0xE7, 0xEB, 0x00, 0xE9, 0xC9, 0xC3, 0x13, 0x6D, 0x74, + 0x6E, 0x8C, 0xD1, 0x8A, 0x9A, 0x03, 0xFF, 0xE3, 0xBF, 0xFD, 0x6F, 0xB4, + 0x92, 0x4A, 0xAB, 0xBE, 0x1F, 0xDA, 0xB6, 0x07, 0x80, 0x3C, 0xCF, 0x2E, + 0x5E, 0x5D, 0xC5, 0x88, 0x57, 0xD7, 0xCB, 0x97, 0x2F, 0xAF, 0x62, 0x0C, + 0xB9, 0x56, 0xD3, 0x69, 0xDD, 0xF6, 0x76, 0xB7, 0xDB, 0x29, 0xA9, 0x62, + 0x0C, 0xCE, 0xF9, 0xAA, 0x2C, 0x1E, 0x9E, 0x2E, 0x94, 0x92, 0x93, 0xBA, + 0xD4, 0x5A, 0xDF, 0xDC, 0xAE, 0xBA, 0x6E, 0x60, 0x00, 0xC7, 0xF3, 0x49, + 0x96, 0x99, 0x3C, 0xCB, 0xAA, 0x32, 0x57, 0x4A, 0x22, 0xE2, 0xED, 0x72, + 0xBD, 0x5A, 0xEF, 0x4C, 0x66, 0xC8, 0x37, 0x1A, 0x8F, 0xA6, 0x9B, 0xED, + 0x4E, 0x4A, 0x71, 0x34, 0x9B, 0x4C, 0xEA, 0xA2, 0xCC, 0xB3, 0x2C, 0x53, + 0xEA, 0x9E, 0xDD, 0x17, 0xE3, 0x8C, 0x33, 0xBE, 0x47, 0xF9, 0xBF, 0x34, + 0x6A, 0x7D, 0x87, 0x31, 0xEF, 0xC9, 0xF1, 0x90, 0x52, 0x82, 0x3B, 0x91, + 0xAB, 0xBB, 0x97, 0xDC, 0x4F, 0xE2, 0xC4, 0xFF, 0xFA, 0x27, 0x7F, 0x4C, + 0x52, 0x93, 0xDA, 0x64, 0x00, 0x00, 0x38, 0xCA, 0x4E, 0x8C, 0x1C, 0x8F, + 0x18, 0x86, 0xBE, 0x5B, 0x6F, 0x76, 0x5D, 0xEF, 0x62, 0x8C, 0x81, 0xC0, + 0xE4, 0xBB, 0x88, 0x98, 0x88, 0xD8, 0xE2, 0x7C, 0x80, 0x44, 0xF2, 0xBB, + 0xAC, 0xEB, 0x6D, 0x55, 0x66, 0x47, 0xF3, 0x49, 0x0C, 0x91, 0x01, 0x46, + 0x67, 0x09, 0xB6, 0xAC, 0x27, 0x93, 0xA2, 0x28, 0x12, 0xA2, 0x73, 0x96, + 0x4B, 0x21, 0xB8, 0xF0, 0x43, 0x8F, 0x31, 0x46, 0x0C, 0xC4, 0xC0, 0x20, + 0x80, 0x09, 0x63, 0xD8, 0x47, 0x22, 0x8A, 0xC6, 0x49, 0x2A, 0xC5, 0xF8, + 0xBE, 0x29, 0xC8, 0x98, 0xB3, 0x43, 0x08, 0xA3, 0x4D, 0x4C, 0xF0, 0xDE, + 0x39, 0xEB, 0x9D, 0x03, 0x40, 0xCE, 0xF6, 0x13, 0x4B, 0x69, 0xBC, 0x22, + 0x63, 0xA4, 0xBF, 0x23, 0x5B, 0xD0, 0xA9, 0x8F, 0x93, 0x31, 0xCB, 0xDB, + 0x9B, 0x8F, 0x7E, 0xF1, 0xE1, 0xAE, 0x19, 0xC8, 0x92, 0x1E, 0xC7, 0x9E, + 0x23, 0x60, 0x4A, 0x71, 0x0F, 0x83, 0x51, 0x94, 0xA7, 0xB3, 0x0E, 0x09, + 0x91, 0xC4, 0x84, 0x30, 0x71, 0xCE, 0x8C, 0x91, 0x52, 0x8E, 0x23, 0xC4, + 0x89, 0xC4, 0x94, 0xC7, 0x89, 0xF1, 0x84, 0x11, 0xDB, 0xDE, 0x6E, 0xB6, + 0xCD, 0xD5, 0xF5, 0x52, 0x48, 0xF9, 0xF4, 0xF5, 0x47, 0x8B, 0xC5, 0x9C, + 0xBC, 0xD7, 0x76, 0x4D, 0xB7, 0x5C, 0xAE, 0xAF, 0xAF, 0x6F, 0x7F, 0xF8, + 0xA3, 0x9F, 0x7D, 0xFC, 0xE9, 0xF3, 0x8B, 0x8B, 0xCB, 0xF3, 0xF3, 0xCB, + 0xB6, 0xED, 0xBE, 0xFD, 0xAD, 0x77, 0xEB, 0xAA, 0xFC, 0x7F, 0xFF, 0xCB, + 0x8F, 0x94, 0x90, 0x98, 0x52, 0xD3, 0x75, 0xD6, 0x39, 0xDA, 0xA6, 0x30, + 0x21, 0x03, 0xAE, 0xA4, 0x22, 0xDD, 0x2B, 0xC1, 0x45, 0x9E, 0x1B, 0x25, + 0xC9, 0x93, 0x80, 0xC7, 0x88, 0xDD, 0x30, 0x00, 0xE3, 0xB9, 0x31, 0xB9, + 0x56, 0x64, 0x40, 0x0B, 0x00, 0x4A, 0x08, 0xAD, 0xA5, 0x10, 0x42, 0x2B, + 0x05, 0x64, 0xC0, 0x0E, 0xE3, 0x45, 0x8E, 0x11, 0x19, 0x27, 0x8D, 0x36, + 0x48, 0xC0, 0x48, 0xDA, 0x3E, 0xC6, 0x98, 0x19, 0x4D, 0x0E, 0xDB, 0xE3, + 0x9B, 0x0B, 0xBE, 0x6D, 0xBB, 0xC1, 0x7A, 0x44, 0xD4, 0x52, 0xD0, 0xF0, + 0xB3, 0x54, 0x6A, 0xBD, 0xDA, 0x38, 0xE7, 0x00, 0x40, 0x70, 0x11, 0x31, + 0x86, 0x88, 0x9C, 0xF3, 0x3C, 0xCB, 0x72, 0x92, 0xCF, 0x1F, 0x2C, 0xC6, + 0x18, 0x53, 0xCA, 0xB4, 0x62, 0x29, 0xF9, 0x10, 0xB4, 0xD6, 0x44, 0xE6, + 0xCA, 0x0B, 0x03, 0x7B, 0xF8, 0x96, 0xB8, 0x02, 0x75, 0x55, 0x68, 0xA5, + 0xD6, 0x9B, 0x1D, 0x62, 0x2A, 0x8B, 0x7C, 0xBD, 0xDD, 0x11, 0x33, 0xA0, + 0xEF, 0xED, 0xED, 0x72, 0xB5, 0x5C, 0xAE, 0xBC, 0x0F, 0x7B, 0x50, 0x1F, + 0xB5, 0x94, 0xF5, 0xA4, 0xAC, 0xCA, 0x62, 0x18, 0xAC, 0x0F, 0xDE, 0x18, + 0x43, 0x24, 0xB2, 0x5D, 0xD3, 0x84, 0x10, 0x8F, 0x8E, 0x66, 0xBB, 0xA6, + 0x59, 0xAF, 0x37, 0x59, 0x96, 0x6D, 0xB7, 0xBB, 0x27, 0x8F, 0x4E, 0xAD, + 0x73, 0x44, 0x25, 0xD7, 0x52, 0x3E, 0x3C, 0x5B, 0x3C, 0x7A, 0x78, 0x42, + 0xAF, 0x7D, 0xED, 0xF1, 0x03, 0x96, 0x80, 0x0B, 0xCE, 0x19, 0x23, 0x79, + 0x52, 0x8C, 0xA9, 0x2C, 0x33, 0xE7, 0x3C, 0x8C, 0x32, 0x3B, 0x61, 0x36, + 0xAD, 0xCB, 0x22, 0xA7, 0x5B, 0x5A, 0x48, 0x7E, 0xBC, 0x98, 0xD3, 0x4C, + 0x1E, 0x69, 0x3D, 0x2A, 0x25, 0x7F, 0xFA, 0xC1, 0xC7, 0x9F, 0x3F, 0xBF, + 0x32, 0x46, 0xC7, 0x18, 0xCF, 0x4E, 0x8F, 0x7E, 0xEF, 0xB7, 0x7F, 0xB3, + 0x6D, 0xFB, 0xAB, 0xDB, 0xA5, 0xE0, 0x22, 0xCF, 0x8C, 0x0F, 0x81, 0xDC, + 0xC2, 0xA9, 0x5F, 0x14, 0x7C, 0xBC, 0xB8, 0xBA, 0xCD, 0x8D, 0x8A, 0x21, + 0x3E, 0x7D, 0xFD, 0xF1, 0xEF, 0xFE, 0x93, 0xEF, 0xA4, 0x94, 0x96, 0xCB, + 0xED, 0x72, 0xB5, 0xA6, 0xF2, 0x50, 0x69, 0x29, 0x38, 0xA7, 0x56, 0xAC, + 0x14, 0x64, 0x37, 0x19, 0xB5, 0x56, 0x21, 0xC4, 0x84, 0x18, 0x63, 0x30, + 0x46, 0x87, 0x88, 0x00, 0x40, 0x49, 0x0D, 0x35, 0xDF, 0xA9, 0x2F, 0x17, + 0x42, 0xFC, 0x8D, 0xF7, 0xDE, 0x7D, 0xEB, 0x8D, 0x27, 0x7F, 0xFE, 0xFD, + 0x1F, 0xFC, 0xF2, 0xA3, 0xCF, 0xDA, 0xAE, 0x9F, 0x4E, 0xAA, 0xD9, 0xB4, + 0x26, 0xD7, 0x67, 0x4C, 0x78, 0x7E, 0x71, 0xCD, 0x39, 0x83, 0x94, 0xAE, + 0x6E, 0xD6, 0x34, 0xA9, 0xEE, 0x9C, 0xFB, 0x8B, 0xBF, 0xFE, 0x61, 0x4A, + 0x69, 0x18, 0x06, 0x02, 0x46, 0xAB, 0x22, 0x1B, 0x06, 0x7B, 0x79, 0xB3, + 0x64, 0x8C, 0x67, 0x46, 0xE7, 0x79, 0xA1, 0xA4, 0x78, 0x74, 0x76, 0x9C, + 0x19, 0x65, 0xB4, 0x2E, 0x8B, 0x42, 0x4A, 0x61, 0xB4, 0x52, 0x5A, 0x55, + 0x65, 0x3E, 0x9F, 0x4E, 0xA4, 0xE4, 0x09, 0xD2, 0xA4, 0x2E, 0xAB, 0xDC, + 0x4C, 0xAA, 0x62, 0x52, 0x97, 0x65, 0x59, 0x2C, 0xE6, 0xD3, 0x49, 0x5D, + 0xE6, 0x99, 0x01, 0x60, 0x46, 0xAB, 0xA3, 0xF9, 0x74, 0x3A, 0xA9, 0x66, + 0x93, 0x2A, 0xCF, 0x0C, 0x69, 0x4C, 0x72, 0x31, 0x3E, 0xF6, 0x20, 0xD7, + 0x7D, 0x9A, 0xC1, 0xAF, 0xA5, 0x04, 0xE9, 0x7E, 0xB2, 0x76, 0x58, 0xBE, + 0xF7, 0x7F, 0xA6, 0xFB, 0x41, 0x50, 0x6A, 0xA5, 0x94, 0xD6, 0x9C, 0x73, + 0x8C, 0x01, 0x12, 0x22, 0x26, 0x86, 0x28, 0xA4, 0x60, 0xC0, 0x13, 0x62, + 0xF0, 0xBE, 0xEF, 0xFA, 0x94, 0x50, 0x29, 0xD1, 0x0F, 0x2E, 0xC4, 0x18, + 0x28, 0xCB, 0x42, 0xEC, 0x7A, 0xAB, 0x95, 0x90, 0x52, 0x90, 0x66, 0x08, + 0x00, 0x20, 0x26, 0xE7, 0x2C, 0x15, 0x82, 0xAF, 0x5E, 0x5D, 0x51, 0x33, + 0x1E, 0x18, 0x54, 0x75, 0x0D, 0x00, 0x18, 0x63, 0x67, 0xED, 0x30, 0xF4, + 0xDE, 0x07, 0x36, 0x58, 0xA5, 0x2C, 0x21, 0x58, 0x42, 0xCA, 0xCC, 0x64, + 0x77, 0xF9, 0x22, 0x63, 0x18, 0x43, 0x4A, 0xA8, 0xB4, 0x66, 0x5C, 0x28, + 0xB6, 0xD7, 0xA1, 0x05, 0x48, 0x88, 0x11, 0xA3, 0x90, 0x12, 0x00, 0xD6, + 0xEB, 0x2D, 0xCD, 0xD0, 0xFB, 0xE0, 0x13, 0x26, 0xE7, 0x5D, 0x96, 0x79, + 0x3D, 0x5A, 0xA2, 0x24, 0x0A, 0xE1, 0x52, 0x2A, 0x90, 0x8A, 0xED, 0xA5, + 0x25, 0x18, 0x63, 0x31, 0x84, 0x84, 0xA8, 0x94, 0x3C, 0x7F, 0xFE, 0xFC, + 0xD9, 0x67, 0xCF, 0x38, 0x57, 0x82, 0x31, 0x67, 0x9D, 0xD4, 0x19, 0x63, + 0x40, 0x9E, 0x97, 0x87, 0xC0, 0x9F, 0xC6, 0x3E, 0x25, 0x44, 0xC4, 0x80, + 0x98, 0x30, 0xF1, 0xD1, 0x93, 0x25, 0x31, 0xC6, 0xE5, 0x88, 0x21, 0xC2, + 0x88, 0x8B, 0x25, 0x42, 0xF6, 0x40, 0x0A, 0x91, 0x38, 0x20, 0x26, 0xA5, + 0xD5, 0xD1, 0xE2, 0x28, 0xCB, 0xB2, 0x80, 0xE9, 0xD9, 0xF9, 0x95, 0xF7, + 0x61, 0xB0, 0xEE, 0x93, 0x4F, 0x9F, 0x7F, 0xF8, 0xD1, 0xA7, 0xCE, 0xB9, + 0xBC, 0xC8, 0x5F, 0x7F, 0xF2, 0xD8, 0x5A, 0xB7, 0x5C, 0x6D, 0xDE, 0x7D, + 0xF7, 0xED, 0xC9, 0xA4, 0xFE, 0xE1, 0xDF, 0xFF, 0x4C, 0x08, 0x6E, 0x8A, + 0xBC, 0x77, 0xCE, 0x3A, 0x1F, 0xFA, 0x61, 0x3A, 0x99, 0x08, 0xCE, 0x15, + 0x68, 0x60, 0x9E, 0xF4, 0xAA, 0xCA, 0x22, 0xCF, 0x33, 0xC3, 0x00, 0xBA, + 0xBE, 0x27, 0xCB, 0x48, 0x25, 0xE5, 0xA4, 0xAA, 0x22, 0xC6, 0x94, 0xC0, + 0xFB, 0x30, 0x58, 0x2B, 0x84, 0x90, 0x52, 0x90, 0xB0, 0x92, 0x10, 0x40, + 0x53, 0xEB, 0x8C, 0x70, 0x55, 0x96, 0x22, 0x26, 0x60, 0x40, 0x01, 0x97, + 0xE4, 0xBD, 0xA4, 0xE4, 0x5A, 0xE9, 0x94, 0x52, 0x0C, 0x91, 0xB8, 0xCA, + 0x54, 0xC9, 0xAE, 0xB6, 0xBB, 0x88, 0x68, 0xB4, 0x11, 0x9C, 0x51, 0x8B, + 0x8D, 0x09, 0xBE, 0xDB, 0x36, 0x43, 0x6F, 0x09, 0xA6, 0x19, 0x35, 0x8B, + 0xC0, 0x4B, 0x29, 0xCB, 0x32, 0x77, 0xCE, 0x0F, 0xD6, 0x69, 0xA9, 0x22, + 0x46, 0x06, 0xB0, 0xDD, 0x36, 0xE5, 0xE9, 0xF1, 0xC9, 0xC9, 0xB1, 0x14, + 0xBC, 0xEB, 0x86, 0xF3, 0x8B, 0xCB, 0xC5, 0x62, 0x3A, 0xAD, 0x2B, 0xCE, + 0xD9, 0x30, 0x38, 0x6B, 0xDD, 0xD1, 0xD1, 0xCC, 0xFB, 0xE0, 0x9C, 0x27, + 0x54, 0x7B, 0xB7, 0x6B, 0x32, 0xA3, 0x9B, 0xA6, 0xCB, 0x32, 0x7D, 0x7A, + 0x72, 0x94, 0x67, 0xE6, 0x57, 0xBF, 0xFA, 0x4C, 0x70, 0x4E, 0x72, 0x48, + 0x92, 0xB3, 0xFA, 0x68, 0xBA, 0xD9, 0x35, 0x83, 0x73, 0xD3, 0xBA, 0xF4, + 0xDE, 0x87, 0xE0, 0xA7, 0x93, 0x89, 0xD1, 0xFA, 0xE5, 0xE5, 0xF5, 0xE2, + 0x68, 0xD6, 0xEC, 0x9A, 0xE0, 0xC3, 0x66, 0xDB, 0xBC, 0xF7, 0xCD, 0x77, + 0x9D, 0xB5, 0xCF, 0x9E, 0x5F, 0x94, 0x65, 0xD9, 0x76, 0xFD, 0x7A, 0xD3, + 0x00, 0x00, 0xE7, 0xEC, 0x68, 0x36, 0xA9, 0xCB, 0xE2, 0xDB, 0xDF, 0x78, + 0x87, 0x01, 0xBB, 0x5D, 0x6D, 0x7E, 0xF5, 0xC9, 0xB3, 0x94, 0x60, 0x3E, + 0x9F, 0xD0, 0x40, 0xE5, 0x66, 0xDB, 0x14, 0x53, 0xF2, 0x09, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x2A, 0x25, 0x73, 0x29, 0xCA, 0x32, + 0xEB, 0xBA, 0x84, 0x88, 0x52, 0x8A, 0xCC, 0x18, 0x2E, 0x98, 0x10, 0xE2, + 0x20, 0xBD, 0x4E, 0x85, 0x82, 0xB5, 0xFE, 0xF3, 0xE7, 0xAF, 0x10, 0xC3, + 0x76, 0xB7, 0x9B, 0xD4, 0xE5, 0x3F, 0xFD, 0xAD, 0x6F, 0x65, 0xC6, 0x38, + 0x1F, 0x48, 0x03, 0xDD, 0xEF, 0xFB, 0xFE, 0x24, 0x4B, 0xDE, 0xF7, 0x56, + 0x08, 0x9E, 0x67, 0x86, 0x84, 0x03, 0x4E, 0x8F, 0x17, 0x1F, 0x7D, 0xF2, + 0xEC, 0xC3, 0x8F, 0x3F, 0x9F, 0xD4, 0xE5, 0x7F, 0xF5, 0xBB, 0xDF, 0xFD, + 0x87, 0x9F, 0xFC, 0xFC, 0xE2, 0xD5, 0xB5, 0xE0, 0x1A, 0x31, 0x4A, 0xC1, + 0x09, 0xAB, 0xC1, 0x94, 0x42, 0x60, 0x21, 0xC4, 0x88, 0xBE, 0x2C, 0x72, + 0xCE, 0x4D, 0x0C, 0x18, 0x62, 0xA0, 0x79, 0x72, 0xE7, 0xBC, 0xC9, 0x4C, + 0x0C, 0x91, 0xD2, 0x9F, 0xEF, 0xFD, 0xD6, 0xB7, 0x16, 0x47, 0xB3, 0x1F, + 0xFD, 0xE4, 0x03, 0xE7, 0x9C, 0x31, 0x66, 0xBD, 0xDE, 0x7D, 0xF0, 0xC1, + 0xC7, 0x7D, 0x6F, 0x6F, 0x96, 0x9B, 0x07, 0xA7, 0x47, 0x0F, 0x4E, 0x8F, + 0xDB, 0xAE, 0x3F, 0x59, 0xCC, 0x6E, 0x57, 0x9B, 0xED, 0xAE, 0x39, 0x59, + 0xCC, 0x58, 0x4A, 0xEB, 0xCD, 0xAE, 0xEF, 0x06, 0xAD, 0x55, 0xDB, 0x05, + 0x21, 0x78, 0x95, 0x19, 0x06, 0x68, 0xAD, 0x07, 0x04, 0xA9, 0x39, 0x00, + 0x28, 0xC9, 0x8B, 0xBC, 0x64, 0x00, 0x75, 0x5D, 0xD6, 0x55, 0x49, 0x73, + 0xEF, 0x98, 0xD2, 0x22, 0x37, 0x5A, 0x8F, 0x16, 0x01, 0x21, 0xA2, 0xD1, + 0xD2, 0x64, 0x5A, 0x48, 0x51, 0x28, 0x91, 0xE7, 0x86, 0x00, 0x0D, 0x92, + 0x2D, 0x4A, 0x29, 0x19, 0x2D, 0x95, 0x14, 0x99, 0x31, 0x52, 0x0A, 0xC6, + 0x0E, 0x74, 0x83, 0x31, 0x72, 0x21, 0x7E, 0x81, 0xBE, 0xFE, 0x6B, 0xE8, + 0x18, 0xDB, 0x13, 0x2F, 0x12, 0x63, 0x77, 0x4F, 0x20, 0x8F, 0xD1, 0x2F, + 0xA1, 0x69, 0xF4, 0x4F, 0xA9, 0x0E, 0xB6, 0xB8, 0x00, 0x34, 0xE7, 0xC2, + 0x38, 0x4F, 0x09, 0x52, 0xF2, 0xDE, 0xB9, 0x10, 0x02, 0x75, 0x79, 0x89, + 0x58, 0x25, 0x18, 0x93, 0x5A, 0xD1, 0x8A, 0xA5, 0xB9, 0xE8, 0xB4, 0xB7, + 0x5C, 0x2C, 0x0B, 0x53, 0x15, 0xD9, 0xAE, 0xED, 0x95, 0x52, 0xCE, 0x85, + 0x61, 0x70, 0xD6, 0x7A, 0xEB, 0xBC, 0x92, 0xA2, 0x6B, 0x07, 0x12, 0xA4, + 0x26, 0x0F, 0x54, 0x9A, 0x3F, 0x27, 0xCE, 0x1A, 0x63, 0x4C, 0x4A, 0xC5, + 0x18, 0x4F, 0x88, 0x31, 0xA5, 0x18, 0x82, 0xF7, 0x0E, 0x23, 0x72, 0xC1, + 0x85, 0x94, 0x29, 0x10, 0xC0, 0x9D, 0x94, 0x52, 0x29, 0x81, 0xB7, 0x43, + 0x08, 0x51, 0x08, 0x61, 0xBD, 0xEB, 0xBB, 0x81, 0x73, 0x2E, 0x24, 0x27, + 0x32, 0x2A, 0x46, 0x0C, 0x01, 0x8B, 0x62, 0x2F, 0xD8, 0x1D, 0x23, 0x30, + 0xA6, 0x84, 0x54, 0x4A, 0x49, 0xAD, 0x52, 0x4A, 0x5C, 0x08, 0xA0, 0x41, + 0xA7, 0x94, 0x3E, 0xFE, 0xEC, 0xD9, 0xC5, 0xC5, 0x95, 0xD6, 0x8A, 0x31, + 0x31, 0x0A, 0x61, 0x24, 0x00, 0xBE, 0x57, 0x33, 0xDB, 0xC7, 0x7E, 0xAA, + 0xC0, 0xA9, 0x25, 0x4F, 0x81, 0x94, 0x1C, 0xA5, 0xA4, 0x92, 0x44, 0x75, + 0x19, 0xBB, 0xBD, 0x91, 0xE2, 0x1D, 0xA3, 0x1E, 0xFF, 0x72, 0xDD, 0x7C, + 0xF6, 0xE2, 0x42, 0x48, 0x95, 0x19, 0x93, 0x18, 0xFB, 0xFC, 0xC5, 0x4B, + 0x63, 0xCC, 0x6A, 0xB3, 0xB3, 0xCE, 0xDF, 0x2E, 0x57, 0x9B, 0x75, 0xA3, + 0xB5, 0x56, 0x4A, 0x9E, 0x9D, 0x9E, 0x04, 0xE7, 0x6E, 0x6F, 0x57, 0x5F, + 0x7B, 0xF7, 0x1D, 0xE7, 0xC3, 0x5F, 0xFD, 0xCD, 0x0F, 0x67, 0xD3, 0x3A, + 0xC5, 0xB4, 0x21, 0x55, 0x5F, 0xCE, 0xD1, 0xFB, 0xB6, 0xEF, 0x24, 0xE7, + 0x00, 0x64, 0xAA, 0x9A, 0xC8, 0x31, 0x8C, 0xF3, 0x11, 0x31, 0xB1, 0xCE, + 0x2A, 0xA9, 0xB8, 0x10, 0xC1, 0x39, 0xEF, 0xBD, 0x14, 0x02, 0x53, 0xD2, + 0x4A, 0x79, 0x52, 0xB0, 0xE2, 0x01, 0x5D, 0x4A, 0x90, 0xAC, 0xF7, 0xB0, + 0x6F, 0x73, 0x90, 0x9B, 0x16, 0xD5, 0x2F, 0x24, 0x85, 0x4E, 0x6C, 0x2C, + 0x3A, 0xCD, 0xB2, 0xC8, 0xA6, 0x93, 0x9A, 0x71, 0x71, 0xBB, 0x5A, 0x87, + 0x18, 0x7B, 0x6B, 0x21, 0x25, 0x0C, 0x28, 0x04, 0x47, 0xC4, 0x6E, 0xB0, + 0x8C, 0x81, 0x92, 0x3C, 0x37, 0xBA, 0xE9, 0xFB, 0x22, 0x33, 0x29, 0x41, + 0x8A, 0x90, 0x67, 0x46, 0x2B, 0xED, 0x7D, 0xD8, 0x35, 0x5D, 0x42, 0x1C, + 0xA5, 0x94, 0x19, 0x1C, 0x4D, 0x27, 0xC7, 0x8B, 0xB9, 0xD6, 0xBA, 0xEB, + 0xBA, 0xED, 0x6E, 0x07, 0x00, 0xCF, 0xCF, 0x2F, 0x2F, 0x2F, 0x6F, 0xBF, + 0xFE, 0xB5, 0x37, 0xDF, 0x7A, 0xF3, 0xB5, 0xCD, 0x66, 0x97, 0x65, 0xC6, + 0x68, 0x15, 0x11, 0xCB, 0x32, 0x37, 0x46, 0x0F, 0xD6, 0xC6, 0xC1, 0x31, + 0x06, 0x0C, 0xB4, 0xF7, 0x61, 0x32, 0xA9, 0xDE, 0x7B, 0xEF, 0xDD, 0xF5, + 0x6A, 0x73, 0xFE, 0xF2, 0x92, 0x01, 0x64, 0x5A, 0x75, 0x6D, 0xC7, 0x18, + 0xCB, 0x8C, 0xEE, 0xBA, 0x9E, 0x33, 0xE0, 0x9C, 0xAF, 0xD6, 0x1B, 0xC6, + 0xF9, 0xD1, 0x7C, 0xCA, 0x00, 0xDA, 0xB6, 0x9D, 0x4C, 0x26, 0xFD, 0x60, + 0x3F, 0xFD, 0xF4, 0xF9, 0xD7, 0xBF, 0xFA, 0x66, 0xD3, 0x76, 0xD6, 0xDA, + 0x37, 0x5E, 0x7F, 0xDC, 0x0F, 0xC3, 0xCD, 0xED, 0x66, 0x36, 0xA9, 0x27, + 0x75, 0x41, 0x7E, 0xE9, 0x0F, 0xCF, 0x8E, 0x1F, 0x3D, 0x58, 0x30, 0x48, + 0x1F, 0x7E, 0xFC, 0xAC, 0xEB, 0x86, 0xC7, 0x8F, 0x4E, 0xAD, 0x75, 0x9F, + 0x7E, 0x7E, 0x5E, 0x95, 0x05, 0x00, 0x94, 0x45, 0x5E, 0x96, 0x39, 0x07, + 0xA6, 0xB5, 0xAE, 0x4A, 0xE1, 0x1D, 0xE9, 0x8B, 0xA1, 0x52, 0x12, 0x88, + 0xF9, 0x0C, 0xEC, 0xE2, 0xFA, 0xB6, 0x1F, 0x06, 0xD2, 0x05, 0xFC, 0xFD, + 0xDF, 0xFE, 0xCD, 0xE9, 0xA4, 0xFA, 0xD9, 0x2F, 0x3E, 0x7D, 0xF1, 0xF2, + 0x92, 0x33, 0x06, 0x09, 0x7D, 0xF0, 0x52, 0x48, 0xC4, 0xD8, 0xF7, 0xB6, + 0x69, 0x7A, 0x21, 0xB9, 0xD6, 0xD9, 0xA4, 0x2A, 0xB7, 0xBB, 0xB6, 0x2C, + 0x8A, 0x8B, 0xCB, 0x6B, 0x4C, 0xF8, 0xD6, 0xD3, 0x27, 0x29, 0xA5, 0xCD, + 0x76, 0x47, 0xF2, 0x12, 0x88, 0x51, 0x4A, 0x59, 0xE7, 0xA6, 0xEB, 0x3D, + 0xAD, 0x4C, 0x06, 0xF0, 0xE8, 0xEC, 0x18, 0x53, 0x52, 0x52, 0x76, 0x83, + 0x45, 0x44, 0x00, 0xCD, 0x38, 0xAF, 0xAB, 0xA2, 0xEB, 0x06, 0xE7, 0x43, + 0x59, 0x18, 0x25, 0xE5, 0xEB, 0x4F, 0x1E, 0x7A, 0x6B, 0x7F, 0xFE, 0xC1, + 0x87, 0xCE, 0x5A, 0xEA, 0xA7, 0x85, 0x10, 0xA4, 0x52, 0xCE, 0xC7, 0x5F, + 0x7C, 0xF8, 0x89, 0xF7, 0x4E, 0x08, 0xDE, 0xB6, 0x1D, 0x40, 0x8A, 0x31, + 0xBE, 0xF5, 0xDA, 0xC3, 0x18, 0x42, 0x4A, 0xE9, 0x76, 0xB9, 0xA6, 0x91, + 0x75, 0x06, 0xCC, 0x28, 0xCD, 0x39, 0xC3, 0x18, 0x12, 0x24, 0x00, 0x64, + 0x20, 0x62, 0xC4, 0x5D, 0xD3, 0x56, 0x45, 0x5E, 0xE4, 0xD9, 0x64, 0x52, + 0xE7, 0x5A, 0x09, 0xC1, 0x49, 0x90, 0xAA, 0x2A, 0x8C, 0x54, 0x12, 0x23, + 0x86, 0x88, 0x52, 0x88, 0x3C, 0xD7, 0x52, 0x4A, 0xCE, 0x38, 0xDC, 0x85, + 0xA7, 0x04, 0x90, 0x8A, 0x94, 0x52, 0x4A, 0x82, 0x0B, 0x35, 0xB6, 0xFD, + 0x89, 0x2A, 0xC1, 0xD9, 0x28, 0x91, 0x35, 0xD6, 0x4C, 0xEC, 0x7E, 0xAE, + 0xF5, 0x6B, 0x19, 0x16, 0x85, 0xB0, 0x43, 0xF2, 0x75, 0x2F, 0x72, 0xDD, + 0xB3, 0xA9, 0x4C, 0x04, 0x9B, 0x23, 0x00, 0x48, 0x9A, 0x74, 0xDD, 0xAF, + 0xFF, 0x80, 0x98, 0x58, 0x82, 0xE0, 0x7D, 0x08, 0x81, 0xC6, 0xE5, 0x7C, + 0x88, 0x3E, 0x26, 0x1F, 0x22, 0xE7, 0x8C, 0xFC, 0xEC, 0x30, 0x25, 0xE2, + 0xA7, 0xE5, 0xB9, 0x76, 0xCE, 0x3B, 0xC6, 0x04, 0xE7, 0x55, 0x99, 0x0D, + 0xD6, 0x21, 0xA6, 0xE0, 0x03, 0x03, 0xD8, 0xEC, 0x7A, 0x32, 0x79, 0xEF, + 0xC1, 0x37, 0xDD, 0x60, 0x94, 0xA4, 0xC2, 0x38, 0x33, 0x4A, 0x8A, 0x14, + 0x88, 0x43, 0x1C, 0x02, 0xCD, 0x0B, 0x20, 0x86, 0x18, 0x62, 0x88, 0x81, + 0x2C, 0x03, 0xA2, 0x0F, 0xBE, 0x0F, 0x4D, 0xD3, 0x8E, 0x0E, 0x02, 0x98, + 0x8C, 0xD1, 0xB4, 0x93, 0x87, 0xBD, 0x0F, 0x18, 0x17, 0x1C, 0x12, 0xF1, + 0x04, 0x58, 0x0C, 0xA4, 0x15, 0xEF, 0x18, 0x4B, 0x9C, 0x8B, 0x18, 0xE3, + 0xA8, 0x6F, 0x27, 0x82, 0xF7, 0x5E, 0x78, 0xC9, 0x81, 0x71, 0x21, 0x8A, + 0x32, 0x6F, 0x9A, 0xEE, 0x17, 0x1F, 0x7E, 0x36, 0xF4, 0x76, 0x3A, 0xA9, + 0x22, 0xA6, 0x98, 0x80, 0x01, 0x87, 0x94, 0xD2, 0x58, 0xB9, 0x8E, 0x17, + 0x87, 0x94, 0xFC, 0x28, 0xD5, 0x8A, 0x89, 0x08, 0x6D, 0x29, 0xA5, 0x14, + 0x42, 0x90, 0x92, 0xD7, 0x45, 0x76, 0x58, 0xFF, 0x31, 0xC6, 0x18, 0xC9, + 0x81, 0x89, 0x7D, 0x7E, 0x7E, 0xB1, 0xDE, 0x75, 0x3F, 0xFA, 0xE9, 0x2F, + 0x8F, 0xE6, 0xF3, 0x69, 0x5D, 0xF8, 0xDC, 0x87, 0x88, 0xD6, 0x85, 0xEB, + 0xDB, 0xF5, 0xCD, 0x72, 0x8D, 0x98, 0x18, 0xB0, 0xE3, 0xE3, 0x79, 0xDF, + 0xDB, 0xB6, 0xED, 0x76, 0x9B, 0x1D, 0xE7, 0x7C, 0x70, 0xEE, 0xFC, 0xE2, + 0xD2, 0x0E, 0x6E, 0x36, 0x9D, 0xF8, 0x10, 0xAC, 0xEB, 0x05, 0x17, 0x45, + 0x9E, 0x31, 0x80, 0xCC, 0x68, 0xEB, 0x7D, 0x1C, 0xCD, 0x2E, 0x20, 0x26, + 0x04, 0x04, 0xAD, 0xD4, 0x7A, 0xBB, 0x8D, 0x11, 0x05, 0x67, 0x42, 0xC8, + 0xDE, 0x5A, 0x1F, 0x22, 0x8D, 0xC4, 0x63, 0x4A, 0x90, 0x20, 0x62, 0x1A, + 0xCB, 0x43, 0x21, 0x43, 0x8C, 0x2E, 0xF8, 0x44, 0x16, 0xCB, 0x00, 0x88, + 0x28, 0x05, 0x4F, 0x18, 0xA9, 0x78, 0x74, 0xDE, 0x93, 0x1E, 0x43, 0xD7, + 0x0F, 0x21, 0xC6, 0x3C, 0x33, 0x93, 0xBA, 0x9A, 0x4E, 0xEB, 0xAB, 0x9B, + 0x95, 0xB5, 0xCE, 0x7B, 0xA7, 0xA5, 0x02, 0x80, 0x10, 0x82, 0xE2, 0xA2, + 0xC8, 0xF3, 0xAE, 0xEB, 0x21, 0x25, 0x0E, 0xE0, 0x21, 0x96, 0x65, 0x7E, + 0x7C, 0x34, 0x0F, 0x3E, 0x34, 0x5D, 0x6F, 0x22, 0x0E, 0xD6, 0xB6, 0x5D, + 0x37, 0x92, 0x30, 0x30, 0x09, 0x26, 0x1E, 0x9D, 0x9D, 0xCE, 0x26, 0x15, + 0x83, 0x74, 0xBB, 0xBC, 0xED, 0x7A, 0xCB, 0x39, 0x37, 0x46, 0x0F, 0x83, + 0xBD, 0xDE, 0xDD, 0x3E, 0x3F, 0xBF, 0xF8, 0xB7, 0xFF, 0xE6, 0x5F, 0xBF, + 0xF1, 0xF4, 0x11, 0x30, 0x36, 0x0A, 0x8D, 0xA5, 0x54, 0x16, 0x99, 0xF7, + 0x7E, 0x18, 0x2C, 0xE7, 0xBC, 0xEB, 0x06, 0xAD, 0x65, 0xD3, 0xB4, 0xC1, + 0x07, 0xAD, 0xF5, 0xE3, 0x47, 0x0F, 0x48, 0xA8, 0xBA, 0x69, 0x3B, 0x63, + 0x8C, 0x56, 0xF2, 0xE5, 0xAB, 0xAB, 0xE5, 0x72, 0x6D, 0x32, 0x5D, 0x96, + 0x25, 0x63, 0xEC, 0x9D, 0x77, 0xDE, 0x24, 0x6B, 0xBB, 0x27, 0x4F, 0x1E, + 0xFE, 0xED, 0xDF, 0xBD, 0xBF, 0x5E, 0xAD, 0x37, 0xDB, 0xA6, 0xAE, 0xCB, + 0xED, 0xAE, 0x71, 0xCE, 0x4D, 0x26, 0xD5, 0xC7, 0x9F, 0x3E, 0x7F, 0xFC, + 0xF0, 0x14, 0xD3, 0x51, 0x9E, 0x99, 0xBE, 0x1F, 0x6E, 0x6E, 0xD6, 0x5C, + 0xB0, 0xAA, 0x2C, 0xDE, 0xFD, 0xCA, 0x1B, 0x3F, 0xFF, 0xC5, 0x27, 0x42, + 0x88, 0xD3, 0xD3, 0x85, 0x10, 0x62, 0xB9, 0x5C, 0x93, 0xD6, 0xD5, 0xAC, + 0x2E, 0xBD, 0xF7, 0x44, 0x59, 0x24, 0xB5, 0x7B, 0xC4, 0x34, 0x38, 0xCF, + 0x39, 0x73, 0x3E, 0x38, 0x1F, 0xB2, 0xCC, 0x9C, 0x1E, 0xCF, 0x07, 0x6B, + 0xDF, 0xFB, 0xC6, 0xBB, 0xD3, 0x69, 0xBD, 0xDE, 0x34, 0xCF, 0xCF, 0x5F, + 0x39, 0xE7, 0xA5, 0xE4, 0x52, 0x72, 0x8C, 0x18, 0x53, 0x30, 0x3A, 0xC3, + 0x94, 0x98, 0x60, 0x5A, 0x29, 0x6A, 0xF1, 0x4F, 0xEA, 0xE2, 0xB5, 0xC7, + 0x0F, 0xE6, 0xD3, 0x49, 0x51, 0xE4, 0x93, 0xBA, 0x8C, 0x11, 0x5F, 0xBC, + 0xBC, 0x78, 0xFA, 0xF8, 0xEC, 0xE9, 0x93, 0x07, 0x21, 0x04, 0xA5, 0x54, + 0x5D, 0x15, 0x42, 0xCA, 0xDB, 0xE5, 0xE6, 0xD5, 0xE5, 0x0D, 0xE3, 0xFC, + 0xBD, 0x77, 0xDF, 0x3C, 0x9A, 0x4D, 0xBB, 0xC1, 0x3E, 0xBF, 0xB8, 0x5A, + 0xAD, 0x77, 0x11, 0x51, 0x6B, 0x85, 0x29, 0xB5, 0x4D, 0x97, 0x30, 0xE6, + 0xA6, 0x2A, 0xF2, 0x6C, 0xBD, 0xDA, 0x20, 0xE2, 0x7C, 0x56, 0xCF, 0x27, + 0xD5, 0xC5, 0xE5, 0x8D, 0x90, 0x82, 0xA6, 0x35, 0x4F, 0x16, 0xB3, 0xFF, + 0xE1, 0xDF, 0xFC, 0xAB, 0x07, 0xA7, 0x47, 0x4D, 0xDB, 0x3F, 0x79, 0x78, + 0x5A, 0x15, 0x79, 0x6E, 0x14, 0x4B, 0xB0, 0x6B, 0x7B, 0x1F, 0xFC, 0xF3, + 0xE7, 0x17, 0xB4, 0x46, 0xCA, 0x22, 0xDB, 0xEE, 0x5A, 0x96, 0x20, 0x84, + 0xC0, 0x98, 0x28, 0x8B, 0x9C, 0xE4, 0x0C, 0xBC, 0x0F, 0x88, 0x58, 0x55, + 0x85, 0xE0, 0x4C, 0x0A, 0xAE, 0x47, 0x1B, 0x11, 0x2D, 0xA5, 0x14, 0x52, + 0x50, 0xAB, 0x54, 0x0A, 0x49, 0x0D, 0x6B, 0xC1, 0xF6, 0x92, 0x58, 0x89, + 0x25, 0x4E, 0xAC, 0xCF, 0x84, 0x29, 0x29, 0xC1, 0xF9, 0xE8, 0x84, 0x00, + 0xA3, 0xBE, 0x17, 0xA4, 0x34, 0x76, 0xD2, 0x46, 0x0A, 0xC1, 0x21, 0x3C, + 0xA5, 0x7B, 0xC1, 0x09, 0xEF, 0xC5, 0xAC, 0x2F, 0x86, 0xB6, 0xFB, 0x30, + 0xFF, 0xDD, 0x2B, 0xE8, 0xA7, 0x8C, 0x31, 0x20, 0x22, 0x67, 0xDC, 0x7B, + 0x1F, 0x23, 0xD9, 0x8B, 0x30, 0x8A, 0x62, 0xD6, 0x91, 0x33, 0x20, 0x84, + 0x10, 0x63, 0x1C, 0xD9, 0xA1, 0x31, 0x26, 0x25, 0x38, 0x89, 0xE1, 0xD3, + 0xA8, 0xB9, 0x14, 0x3C, 0xCF, 0x75, 0xDB, 0x0E, 0xD6, 0x79, 0x3A, 0x8E, + 0x10, 0x63, 0x4A, 0x20, 0x05, 0xA7, 0x4F, 0xE3, 0x8C, 0xC5, 0xE8, 0x88, + 0xD8, 0x96, 0x69, 0x45, 0xF4, 0xC2, 0x10, 0x82, 0x10, 0xA2, 0xAA, 0x4A, + 0xC6, 0xB8, 0xF7, 0x9E, 0x7C, 0x35, 0xA8, 0x48, 0x8B, 0x88, 0xD6, 0xF9, + 0xE0, 0x03, 0x35, 0x4A, 0x00, 0xC0, 0x79, 0x0F, 0x00, 0x21, 0x20, 0x03, + 0x70, 0x3E, 0x32, 0x00, 0x1A, 0xBB, 0x4F, 0xB0, 0xAF, 0x92, 0x18, 0x8B, + 0x81, 0x59, 0xF0, 0x00, 0x2E, 0x25, 0x48, 0x08, 0x42, 0x70, 0x60, 0x80, + 0x00, 0x08, 0xA0, 0x94, 0x64, 0x80, 0xBF, 0xF8, 0xC5, 0xA7, 0xE7, 0xAF, + 0x96, 0x29, 0xE1, 0xF1, 0xD1, 0x34, 0x91, 0x2B, 0x01, 0x40, 0xC2, 0x71, + 0x4C, 0x69, 0x2F, 0x22, 0x36, 0xE2, 0xFA, 0xFB, 0x13, 0x49, 0x31, 0x8E, + 0x34, 0xB7, 0x10, 0x82, 0x31, 0xA6, 0x2E, 0x33, 0xAD, 0x24, 0x30, 0x86, + 0x18, 0xBD, 0x8F, 0xD4, 0xF2, 0xF3, 0x21, 0xFE, 0xD5, 0x5F, 0xFF, 0x3D, + 0x17, 0xDA, 0x85, 0x00, 0x09, 0xF2, 0x4C, 0xB7, 0x6D, 0x17, 0x42, 0xB8, + 0xBA, 0x5E, 0xAD, 0xB6, 0xBB, 0xF5, 0x7A, 0xD7, 0x74, 0xBD, 0xD2, 0x4A, + 0x2B, 0x65, 0x9D, 0x1F, 0xFA, 0x01, 0x18, 0xD3, 0x79, 0xE6, 0x42, 0x0C, + 0x88, 0x9B, 0xD5, 0x3A, 0x37, 0x06, 0x40, 0x84, 0x18, 0x85, 0x10, 0x82, + 0xF1, 0x9E, 0xCA, 0x46, 0x48, 0x46, 0x69, 0xE7, 0x7D, 0xC0, 0x98, 0x00, + 0x48, 0xAB, 0x7B, 0xDB, 0x74, 0xB7, 0xEB, 0xED, 0xA4, 0x2A, 0x69, 0xDE, + 0x2D, 0x41, 0x0A, 0x18, 0x89, 0x33, 0x39, 0x22, 0x97, 0x08, 0x9C, 0x73, + 0xAD, 0x94, 0x0F, 0xB1, 0x1D, 0x06, 0xCE, 0x98, 0x52, 0x92, 0xC2, 0x3A, + 0x27, 0x4A, 0x8E, 0x14, 0x10, 0x46, 0xA3, 0x3F, 0xF2, 0x52, 0x01, 0x80, + 0x14, 0xB1, 0x2E, 0x8B, 0xA3, 0xF9, 0xB4, 0x1B, 0xEC, 0xE5, 0xD5, 0x35, + 0x11, 0x0E, 0x9C, 0xF3, 0x92, 0x1E, 0x42, 0xA4, 0x94, 0xAA, 0xB2, 0x60, + 0x09, 0x38, 0xE7, 0xD3, 0xC9, 0x84, 0x33, 0x66, 0x8C, 0x66, 0xC0, 0x32, + 0x13, 0x9B, 0x6E, 0x20, 0xC1, 0xF4, 0xA2, 0xCA, 0xEA, 0xAA, 0x6C, 0xBA, + 0x4E, 0x4B, 0x75, 0x7A, 0x32, 0x6F, 0x76, 0x4D, 0x8C, 0x48, 0x7B, 0x55, + 0x4A, 0x58, 0xE4, 0x59, 0x9E, 0x67, 0x09, 0x63, 0xDB, 0x0D, 0xFF, 0xE1, + 0x3F, 0xFE, 0xDF, 0xFF, 0xE2, 0x9F, 0xFF, 0x93, 0xEF, 0xBC, 0xF7, 0xB5, + 0xED, 0xAE, 0xB1, 0xD6, 0x09, 0xCE, 0xCE, 0xCE, 0x8E, 0x21, 0x81, 0x52, + 0x32, 0x25, 0x70, 0xCE, 0xF5, 0x83, 0x65, 0x2C, 0xE5, 0x59, 0x06, 0x90, + 0x84, 0xD0, 0x75, 0x95, 0xF9, 0x10, 0x8D, 0x79, 0xD2, 0x0F, 0xF6, 0xE2, + 0xD5, 0x4D, 0xD7, 0xF7, 0x45, 0x55, 0x1C, 0x4D, 0x27, 0x88, 0xA9, 0x9E, + 0x54, 0xCB, 0xE5, 0xEA, 0x9D, 0xB7, 0xDE, 0x7B, 0xF8, 0xF0, 0x04, 0x63, + 0x64, 0xDF, 0xFB, 0xE6, 0x8F, 0xDF, 0xFF, 0x68, 0xDB, 0xB4, 0x93, 0x69, + 0x05, 0x00, 0x9F, 0x3F, 0x7B, 0xF9, 0xCF, 0x7F, 0xEF, 0xBB, 0xDF, 0xFB, + 0xCE, 0x37, 0x3E, 0xFE, 0xEC, 0x05, 0xED, 0x3A, 0x65, 0x59, 0x2C, 0x37, + 0x1B, 0xC1, 0xC5, 0xCD, 0x72, 0x73, 0x7A, 0x3C, 0x3F, 0x3B, 0x5D, 0xBC, + 0xBA, 0xBC, 0xE1, 0x9C, 0x9D, 0x1E, 0xCF, 0xDB, 0xB6, 0x43, 0xC4, 0x10, + 0xE3, 0x30, 0xAA, 0x15, 0xA6, 0x84, 0x40, 0x73, 0x7B, 0x59, 0xA6, 0x43, + 0x8C, 0x3E, 0x22, 0x63, 0xAC, 0x2A, 0xB2, 0x94, 0xE9, 0x22, 0xCF, 0xBF, + 0xFD, 0x8D, 0xAF, 0x96, 0x65, 0xB1, 0x5E, 0x6F, 0x9D, 0x0F, 0x97, 0x57, + 0x37, 0x46, 0xCB, 0xAA, 0xCC, 0x8B, 0x22, 0x6B, 0xDA, 0x3E, 0x46, 0x54, + 0x4A, 0x85, 0x10, 0x8D, 0xD2, 0x5A, 0xC9, 0xB7, 0x9F, 0x3E, 0xD9, 0x35, + 0xAD, 0x92, 0xF2, 0xE1, 0xE9, 0xC2, 0x18, 0x0D, 0x8C, 0x6D, 0xB6, 0xBB, + 0x3C, 0xD3, 0x6F, 0xBD, 0xFE, 0x90, 0x33, 0x16, 0x22, 0xD2, 0x18, 0x0C, + 0x62, 0xCA, 0x32, 0xF3, 0xE0, 0x78, 0xF6, 0xDA, 0xC3, 0x13, 0x4C, 0x89, + 0x01, 0x08, 0xC1, 0x8E, 0x17, 0x93, 0xA2, 0xD0, 0xEB, 0x6D, 0x13, 0x23, + 0xB6, 0x9D, 0xBD, 0xBA, 0x59, 0x69, 0x25, 0x8F, 0x66, 0xF5, 0x5B, 0x4F, + 0x1F, 0x21, 0xA6, 0xF5, 0x7A, 0xFB, 0xF0, 0xC1, 0x09, 0x4D, 0xCB, 0x4A, + 0xC1, 0x13, 0x30, 0xA9, 0xE4, 0x9B, 0xAF, 0x3F, 0x7E, 0xFA, 0xE4, 0x0C, + 0x18, 0x0C, 0xD6, 0x71, 0xC6, 0xAA, 0x32, 0xEF, 0xFA, 0x01, 0x23, 0xE6, + 0x99, 0xF9, 0xEC, 0xD9, 0x8B, 0x61, 0x70, 0x46, 0xAB, 0x77, 0xDE, 0x78, + 0xED, 0x66, 0xB9, 0x69, 0xBB, 0x41, 0x09, 0x91, 0xD0, 0x0B, 0xA1, 0x74, + 0x66, 0x38, 0xE3, 0xC0, 0x92, 0xF7, 0x31, 0xD3, 0x7A, 0x3A, 0x29, 0x69, + 0x69, 0x73, 0xC1, 0x19, 0x87, 0x31, 0x26, 0x71, 0x26, 0x49, 0x4D, 0x6D, + 0x0F, 0x6F, 0x31, 0x0E, 0x9C, 0x03, 0xDB, 0x3B, 0xBF, 0x51, 0x17, 0x82, + 0xF3, 0x11, 0xDB, 0x3A, 0x64, 0x61, 0x87, 0xBE, 0xD9, 0x3E, 0x06, 0x7D, + 0xB9, 0x9C, 0x4C, 0xF7, 0x1F, 0xE3, 0x5F, 0xC6, 0xEA, 0xF2, 0xF0, 0x86, + 0x87, 0x22, 0xE9, 0x4B, 0x21, 0x8C, 0x7E, 0x91, 0x43, 0xDF, 0x53, 0xB4, + 0xDC, 0x6B, 0x33, 0x80, 0x1D, 0x2C, 0xA9, 0x29, 0x84, 0x80, 0xE4, 0xAB, + 0x40, 0x84, 0xCC, 0x83, 0xEA, 0x16, 0x29, 0x08, 0x91, 0x83, 0xB9, 0x8B, + 0x5E, 0x6B, 0x49, 0x63, 0x77, 0x77, 0xB9, 0x62, 0x4A, 0x5C, 0xEC, 0xE9, + 0xAB, 0x70, 0x68, 0x1E, 0xB0, 0x94, 0x52, 0x44, 0xB2, 0x6F, 0x49, 0x44, + 0x34, 0x0D, 0xDE, 0xDB, 0xC1, 0x72, 0x46, 0x33, 0xE7, 0x63, 0x23, 0x21, + 0x84, 0x68, 0x07, 0xB7, 0x0F, 0x2C, 0xC0, 0x38, 0x4B, 0x9E, 0x08, 0x9C, + 0x8C, 0xE2, 0x3D, 0xA9, 0x4D, 0x20, 0x03, 0xBE, 0xD7, 0x14, 0x43, 0x20, + 0x6B, 0xC3, 0xFB, 0xCE, 0xBB, 0x0C, 0x90, 0x01, 0x07, 0xCE, 0x79, 0x08, + 0xF1, 0x07, 0x7F, 0xF7, 0xB3, 0x97, 0xAF, 0x96, 0xC7, 0xC7, 0x8B, 0xAA, + 0xCC, 0x86, 0xC1, 0x1A, 0x93, 0x01, 0xD9, 0xC3, 0xE0, 0x78, 0xD1, 0x71, + 0x94, 0x2C, 0x1B, 0x5D, 0xD7, 0x10, 0x53, 0xC0, 0x44, 0x3D, 0x41, 0x60, + 0x40, 0xE5, 0xB0, 0xD1, 0x72, 0xCC, 0x6E, 0x62, 0x0C, 0x21, 0x32, 0xC6, + 0xA5, 0x14, 0xE7, 0x97, 0xB7, 0x7F, 0xFB, 0xC3, 0x9F, 0x36, 0x6D, 0x6F, + 0x8C, 0xB9, 0xB9, 0x59, 0x9E, 0x9E, 0x2C, 0xBA, 0xB6, 0xBB, 0xBE, 0x5D, + 0x4A, 0x21, 0x07, 0x17, 0xDA, 0xB6, 0x0F, 0x31, 0x1A, 0x63, 0x12, 0xE2, + 0x30, 0x0C, 0xC1, 0x07, 0xEB, 0x9D, 0xE4, 0x7C, 0x87, 0x18, 0x30, 0x52, + 0xA1, 0x6D, 0x8C, 0x4E, 0x09, 0x72, 0x6E, 0x22, 0xC6, 0x18, 0xA8, 0x8D, + 0x8F, 0x3E, 0x44, 0xCE, 0x85, 0x92, 0x2A, 0x45, 0x4F, 0x07, 0x19, 0x11, + 0x7D, 0x08, 0x65, 0x6E, 0x8A, 0xDC, 0xB4, 0xFD, 0x20, 0x84, 0x50, 0x52, + 0xF1, 0x40, 0x0E, 0xB2, 0x89, 0x33, 0x4E, 0x02, 0xE3, 0x2E, 0x44, 0x00, + 0xE8, 0x86, 0x01, 0x31, 0x91, 0x76, 0x3B, 0x29, 0x34, 0x08, 0xCE, 0x9C, + 0x73, 0x87, 0x5B, 0x2A, 0xD3, 0xBA, 0xED, 0x07, 0x96, 0x92, 0x14, 0xA2, + 0x98, 0x98, 0x94, 0xF0, 0xE6, 0x76, 0x1D, 0x42, 0x48, 0x98, 0xB4, 0xD6, + 0x9C, 0x31, 0xF2, 0xF5, 0x20, 0x12, 0x9D, 0xE6, 0x22, 0x01, 0x70, 0x01, + 0xC0, 0x18, 0xE9, 0x6B, 0x13, 0x63, 0x9A, 0x33, 0x16, 0x63, 0x90, 0x52, + 0xD6, 0xD5, 0x7C, 0x36, 0xA9, 0x18, 0x83, 0xA3, 0xF9, 0xA4, 0xAA, 0x4A, + 0x2D, 0xE5, 0x62, 0x3E, 0xA9, 0xEB, 0x72, 0xB5, 0xDE, 0x76, 0x5D, 0xDF, + 0x77, 0xC3, 0x64, 0x52, 0xE7, 0xB9, 0x59, 0xAE, 0xB7, 0xF5, 0x60, 0x5F, + 0xBE, 0xBC, 0xFC, 0xCB, 0xEF, 0xFF, 0xA0, 0xAE, 0x8A, 0x07, 0x67, 0xC7, + 0x3E, 0x84, 0xE5, 0xA6, 0xD9, 0x6C, 0x1B, 0x21, 0x44, 0xDF, 0x0F, 0x8B, + 0xC5, 0x3C, 0x33, 0xCA, 0x7B, 0xA7, 0x35, 0x5D, 0x16, 0x8C, 0x21, 0x12, + 0x3F, 0x5B, 0x4B, 0x91, 0x19, 0xDD, 0xB5, 0x7D, 0x66, 0x8C, 0xD6, 0x0A, + 0x18, 0xF3, 0xC1, 0x7B, 0xEF, 0xCA, 0xB2, 0x78, 0x79, 0x71, 0x55, 0x96, + 0x39, 0xE7, 0xEC, 0xF8, 0x68, 0xF6, 0x2F, 0x7F, 0xFF, 0x7B, 0xEB, 0xCD, + 0xEE, 0x27, 0xEF, 0xFF, 0x72, 0xB3, 0xD9, 0x0A, 0x21, 0x7F, 0xFA, 0xF3, + 0x0F, 0xBF, 0xFA, 0xCE, 0x1B, 0x88, 0x8F, 0xB6, 0xBB, 0xA6, 0x3C, 0x5D, + 0x08, 0xCE, 0x83, 0x0F, 0xD6, 0x3A, 0xA3, 0xD5, 0xC5, 0xE5, 0xCD, 0xE9, + 0xF1, 0xD1, 0x76, 0xD7, 0x5C, 0xDF, 0xAC, 0xA4, 0xE0, 0x4F, 0x1E, 0x9F, + 0x9D, 0xBF, 0xBC, 0xCC, 0x33, 0x43, 0x7E, 0x5D, 0xB6, 0xB7, 0x6D, 0xDF, + 0x1B, 0xAD, 0xB3, 0x4C, 0x03, 0x80, 0x56, 0x4A, 0xAB, 0x94, 0x52, 0x62, + 0x8C, 0x77, 0xDD, 0xF0, 0xE6, 0xD3, 0x47, 0xD6, 0xFA, 0x4F, 0x3F, 0x3F, + 0x5F, 0x1C, 0x1F, 0x11, 0x60, 0x52, 0xD7, 0x25, 0x63, 0x40, 0x53, 0x3E, + 0xCE, 0x39, 0xEB, 0xDC, 0x30, 0xB8, 0x94, 0x92, 0x10, 0x2C, 0xCB, 0xCC, + 0xCD, 0xED, 0x0A, 0x23, 0x6E, 0x77, 0xED, 0x8C, 0xF3, 0xAA, 0xCC, 0x63, + 0x88, 0xC3, 0xE0, 0x82, 0x0F, 0x24, 0x42, 0x2B, 0xB9, 0x60, 0xC0, 0x12, + 0x20, 0xE7, 0xAC, 0x2C, 0xCA, 0x2C, 0xD3, 0x90, 0xD8, 0x76, 0xD7, 0x12, + 0x0F, 0x70, 0x3E, 0xA9, 0x4F, 0x16, 0x73, 0xCE, 0xD9, 0xE5, 0xD5, 0xF2, + 0x68, 0x56, 0x15, 0x79, 0x26, 0x38, 0xCF, 0x33, 0x1D, 0x22, 0x3E, 0x7D, + 0xED, 0x8C, 0x31, 0xC6, 0x19, 0x0B, 0x3E, 0x28, 0x25, 0x38, 0x17, 0xEF, + 0xBC, 0xF3, 0x54, 0x4B, 0x39, 0x58, 0xCB, 0x18, 0x5B, 0x2E, 0xD7, 0x4A, + 0x2B, 0xC4, 0xE8, 0x9C, 0xCF, 0x33, 0xB3, 0x5A, 0x6F, 0xAF, 0xAE, 0x96, + 0xF3, 0xF9, 0x94, 0x44, 0x3D, 0x69, 0x1B, 0xBB, 0xBD, 0x5D, 0x2D, 0x57, + 0x6B, 0x32, 0x95, 0x3A, 0x9A, 0x4D, 0x69, 0xE2, 0xC7, 0x68, 0x5D, 0xE4, + 0xB9, 0x51, 0x52, 0x4B, 0x21, 0x24, 0x1F, 0x69, 0x9D, 0x82, 0x53, 0x7F, + 0x69, 0x1F, 0xBF, 0x0E, 0x41, 0xEA, 0x6E, 0xFA, 0xE5, 0x3E, 0x23, 0x8C, + 0xED, 0x41, 0x31, 0xD8, 0xB3, 0x9D, 0xE0, 0x1E, 0xB4, 0xFF, 0xC5, 0x6A, + 0xF1, 0xCB, 0x8F, 0xC3, 0xFF, 0x21, 0xF4, 0x69, 0x3F, 0xDD, 0xFC, 0x85, + 0x90, 0xF7, 0xA5, 0xDF, 0x25, 0x6D, 0x9B, 0x88, 0xD8, 0xB6, 0x3D, 0x1D, + 0x8A, 0x75, 0xA1, 0xED, 0x2D, 0x00, 0x18, 0xAD, 0xB4, 0x96, 0xD6, 0xFA, + 0x03, 0xF7, 0x82, 0xF2, 0x35, 0x00, 0xF0, 0x3E, 0x14, 0x59, 0x4E, 0x1D, + 0x52, 0x21, 0x85, 0xB7, 0xCE, 0x68, 0x45, 0x70, 0x15, 0x51, 0x10, 0x49, + 0x52, 0x9F, 0x8E, 0x86, 0x88, 0x6F, 0x9C, 0x31, 0x9A, 0x4E, 0x20, 0xD3, + 0x17, 0x00, 0x88, 0x31, 0xD2, 0x18, 0x04, 0x31, 0xB0, 0x68, 0x74, 0x31, + 0xC6, 0xE8, 0xAC, 0xDF, 0x07, 0x35, 0x00, 0x00, 0x88, 0x29, 0x71, 0x8E, + 0x08, 0x98, 0x22, 0x5D, 0x18, 0xC1, 0xD2, 0x01, 0x80, 0xBD, 0x3B, 0x79, + 0x00, 0x04, 0xE0, 0x6C, 0x9C, 0xB3, 0x24, 0x78, 0x5B, 0x08, 0x39, 0x0C, + 0xF6, 0x87, 0x3F, 0xFA, 0xE5, 0x72, 0xB9, 0x3B, 0x3A, 0x9A, 0x53, 0x23, + 0x5C, 0xC9, 0x8C, 0x4B, 0x11, 0x31, 0x25, 0x60, 0x04, 0x7B, 0x50, 0x5D, + 0x49, 0xAE, 0x1C, 0x21, 0x92, 0x5B, 0x79, 0x22, 0xE4, 0x92, 0xE4, 0xAB, + 0xB4, 0x22, 0x46, 0x1F, 0xA7, 0x0E, 0x3A, 0x62, 0xCA, 0x8C, 0xB9, 0x59, + 0xAE, 0xFF, 0xF7, 0x3F, 0xFB, 0xCB, 0xA6, 0x1D, 0x8C, 0xD6, 0x31, 0x46, + 0x6B, 0xFD, 0xD1, 0x6C, 0x96, 0x19, 0x73, 0xB3, 0xDC, 0x2C, 0x37, 0xAD, + 0x14, 0x22, 0x44, 0xEC, 0x07, 0xDB, 0x5B, 0xCB, 0x80, 0x61, 0x44, 0x29, + 0x78, 0xEF, 0x7A, 0x60, 0x20, 0x94, 0xC6, 0x84, 0x21, 0x44, 0x25, 0x15, + 0xCD, 0x4B, 0x7A, 0x1F, 0x7C, 0x8C, 0x80, 0x04, 0x33, 0x4B, 0xB2, 0xF3, + 0xE3, 0x42, 0x60, 0x44, 0xEF, 0x23, 0x63, 0xA0, 0x95, 0x22, 0x57, 0x27, + 0xAE, 0x24, 0x00, 0x18, 0xAD, 0x09, 0x99, 0xA3, 0xAB, 0x20, 0x84, 0x18, + 0xAC, 0x8B, 0x91, 0xBA, 0xAE, 0x18, 0xA8, 0xDD, 0x89, 0x91, 0x4A, 0x4E, + 0xCE, 0xB9, 0xE0, 0x2C, 0x25, 0x14, 0x42, 0x90, 0x44, 0xA7, 0x10, 0x82, + 0x33, 0xC8, 0x8D, 0x9E, 0x54, 0x65, 0x6F, 0x07, 0xAD, 0x54, 0xD3, 0x0F, + 0x11, 0x93, 0x14, 0x3C, 0x37, 0x9A, 0xC6, 0x08, 0x32, 0x25, 0x50, 0x1C, + 0xF2, 0x6E, 0x72, 0xDE, 0x93, 0x29, 0x25, 0xEF, 0x7D, 0x9E, 0x67, 0x24, + 0xD8, 0x6D, 0x8C, 0x36, 0x46, 0x57, 0x55, 0x61, 0xB4, 0x5E, 0x6F, 0x77, + 0x90, 0xE0, 0xE1, 0x83, 0x13, 0x6B, 0x5D, 0x82, 0x54, 0x95, 0xC5, 0xB4, + 0x2A, 0x95, 0xE4, 0x09, 0xA7, 0x21, 0x44, 0xA9, 0x84, 0xD6, 0x7A, 0x3A, + 0xA9, 0x76, 0xBB, 0x86, 0x73, 0x56, 0x64, 0x46, 0x30, 0xA6, 0xA4, 0x34, + 0x5A, 0xD9, 0xDE, 0x26, 0x4C, 0xC7, 0xA7, 0xB3, 0x5D, 0xD3, 0x1A, 0xAD, + 0x04, 0xE7, 0x5A, 0x4B, 0xC6, 0xC0, 0x39, 0xAB, 0x85, 0x34, 0x52, 0x25, + 0x48, 0x82, 0x31, 0x48, 0x49, 0x49, 0x38, 0x5E, 0xCC, 0xBE, 0xF5, 0x8D, + 0xAF, 0xDC, 0xAE, 0xD6, 0x6D, 0xDB, 0x67, 0xD9, 0x44, 0x2A, 0xF1, 0xE4, + 0xF1, 0x83, 0xB7, 0xDF, 0x7C, 0x0D, 0x49, 0xFD, 0x9A, 0xA5, 0xAB, 0xDB, + 0xD5, 0x67, 0x9F, 0xBD, 0xDC, 0xAC, 0x77, 0x52, 0xB0, 0x94, 0xF0, 0xEA, + 0xEA, 0x26, 0x33, 0x66, 0x3A, 0xAD, 0x8E, 0x8F, 0x66, 0x7D, 0x3F, 0x18, + 0xAD, 0xF3, 0xCC, 0x34, 0x6D, 0x4B, 0xCC, 0xEA, 0x7E, 0x18, 0x5E, 0x7F, + 0xF2, 0xE0, 0xE6, 0x66, 0xDD, 0x0D, 0x56, 0x69, 0x5D, 0x57, 0x65, 0xDF, + 0x0F, 0x67, 0xA7, 0xC7, 0x3E, 0xF8, 0x75, 0xD3, 0x1A, 0xA5, 0x84, 0x88, + 0xD6, 0xF9, 0x8A, 0xC8, 0x40, 0xA3, 0x46, 0x13, 0x66, 0x99, 0x7A, 0xEB, + 0x8D, 0xC7, 0x7D, 0x6F, 0xAD, 0x73, 0x52, 0xCA, 0xAB, 0x9B, 0x55, 0x4A, + 0xC9, 0x5A, 0xC2, 0x3D, 0xB4, 0x10, 0x42, 0x29, 0xED, 0x7D, 0x24, 0xD3, + 0xA0, 0x87, 0x93, 0xC9, 0x0F, 0xFE, 0xE1, 0x7D, 0xE7, 0xC3, 0xF1, 0x7C, + 0xBA, 0xDD, 0x35, 0x6F, 0xBC, 0xFE, 0x48, 0x4A, 0x01, 0x90, 0x8A, 0xDC, + 0x38, 0x1F, 0x06, 0xE7, 0x00, 0x98, 0xD2, 0x2A, 0x84, 0x80, 0x31, 0x0D, + 0xD6, 0x31, 0xCE, 0x13, 0x22, 0xED, 0x04, 0xC0, 0x98, 0x60, 0x5C, 0x29, + 0xA2, 0xD0, 0x8A, 0x07, 0x67, 0x47, 0x74, 0x7B, 0xD0, 0xDA, 0xE1, 0x8C, + 0x4B, 0xA5, 0x62, 0x0C, 0xDE, 0x47, 0x63, 0xF4, 0xD1, 0xD1, 0x54, 0x08, + 0x21, 0x59, 0x8A, 0x21, 0x50, 0x5F, 0x6B, 0x52, 0xE5, 0x42, 0x0A, 0xEF, + 0x63, 0x66, 0xB4, 0xE0, 0xFC, 0x66, 0xB9, 0x7E, 0xFD, 0xC9, 0x03, 0x00, + 0x10, 0x1C, 0x52, 0xC2, 0xF9, 0xB4, 0xAE, 0xCA, 0x62, 0xB3, 0xD9, 0x1C, + 0xCD, 0xA7, 0xCE, 0x85, 0x80, 0x51, 0x2B, 0x59, 0xE4, 0xB9, 0x52, 0x52, + 0x70, 0x6E, 0x8C, 0x56, 0x4A, 0x70, 0x21, 0x20, 0xDD, 0x39, 0x28, 0x1E, + 0x86, 0x94, 0xD9, 0x38, 0xEE, 0x72, 0x08, 0x4D, 0xE3, 0xCF, 0xFB, 0xB9, + 0xD2, 0xBD, 0xAC, 0x06, 0x0E, 0xCB, 0x74, 0xFF, 0x04, 0xF8, 0x47, 0x93, + 0xB2, 0x2F, 0x84, 0xB2, 0x7B, 0x16, 0x6B, 0x7B, 0xF5, 0xAC, 0x2F, 0x24, + 0x62, 0x30, 0x92, 0x0A, 0xC6, 0x67, 0x8B, 0x3F, 0xF9, 0xA3, 0x3F, 0xEC, + 0xBA, 0xA1, 0xEB, 0x6D, 0x37, 0x38, 0xEB, 0xC3, 0x60, 0x83, 0xF3, 0x31, + 0x04, 0xA4, 0xD5, 0x6C, 0x8C, 0x1A, 0xAC, 0x0F, 0x61, 0x94, 0xAF, 0x21, + 0xA9, 0x0D, 0xC6, 0x46, 0xB1, 0x1A, 0xEB, 0xC2, 0x98, 0xA9, 0xA5, 0x91, + 0x72, 0x4D, 0x08, 0x28, 0xCD, 0x11, 0x11, 0x5B, 0x4F, 0x08, 0xCE, 0xB9, + 0x90, 0x92, 0x4B, 0x41, 0x7D, 0x1F, 0xC4, 0x3B, 0xBB, 0xDC, 0xD1, 0x75, + 0x76, 0xB4, 0xD3, 0x42, 0x8C, 0x31, 0x06, 0x1F, 0x7D, 0x40, 0x1A, 0xD8, + 0x8E, 0x98, 0x22, 0x26, 0x8A, 0x87, 0x31, 0x01, 0x30, 0x26, 0xD8, 0x48, + 0x08, 0xE6, 0x5F, 0xB4, 0x05, 0xD8, 0xEF, 0x07, 0xFC, 0x20, 0xD2, 0x2D, + 0xA4, 0x14, 0x52, 0x5C, 0x5F, 0xDD, 0xFC, 0xEC, 0x17, 0xCF, 0x84, 0xCA, + 0x66, 0xF3, 0x69, 0x55, 0x95, 0x5A, 0x49, 0xAD, 0x64, 0x56, 0x64, 0x04, + 0x39, 0x8E, 0x4C, 0xA8, 0xF1, 0xA2, 0x8C, 0x47, 0x15, 0x63, 0xDA, 0x27, + 0x8C, 0x42, 0x2B, 0x99, 0x65, 0x4A, 0x29, 0xA9, 0xA5, 0x8C, 0x31, 0x1A, + 0xA3, 0x0F, 0xDD, 0xAB, 0x8F, 0x3F, 0x3B, 0xFF, 0x0F, 0x7F, 0xFA, 0x17, + 0xBF, 0xFA, 0xF4, 0x45, 0x9E, 0x67, 0x59, 0x66, 0xB6, 0x4D, 0xC7, 0x18, + 0x1F, 0xAC, 0x6B, 0xDA, 0xBE, 0xED, 0x87, 0xC1, 0xBA, 0x7E, 0xB0, 0x21, + 0x44, 0x2E, 0xF8, 0x58, 0x71, 0xC7, 0x48, 0x85, 0x9A, 0x52, 0xD2, 0x39, + 0xCB, 0xB9, 0x70, 0x21, 0xC6, 0x84, 0x5A, 0x29, 0xE7, 0x3C, 0x79, 0xF0, + 0x70, 0xC6, 0xA4, 0x92, 0x5A, 0x29, 0x93, 0x11, 0x1C, 0x24, 0xAD, 0xF7, + 0xD6, 0x7B, 0x63, 0x34, 0x9D, 0x78, 0x8C, 0x81, 0x3A, 0x33, 0x2E, 0x84, + 0x18, 0xA3, 0xF7, 0x9E, 0x2A, 0x74, 0xCA, 0x59, 0x48, 0x58, 0xD9, 0x3A, + 0xA7, 0x15, 0x6D, 0x2A, 0x4C, 0x4A, 0x4E, 0x13, 0x60, 0x87, 0xE6, 0x37, + 0x67, 0xCC, 0x87, 0xA0, 0x95, 0x2A, 0xCB, 0x42, 0x0A, 0xE1, 0xBD, 0x67, + 0x0C, 0x26, 0xD3, 0x8A, 0x04, 0x0F, 0xBC, 0xF5, 0x55, 0x91, 0x49, 0xC1, + 0x63, 0x8C, 0x82, 0xB1, 0xB2, 0xC8, 0xA4, 0xE0, 0x82, 0x71, 0xC6, 0x41, + 0x1B, 0x9D, 0x52, 0x8A, 0x88, 0xB9, 0x31, 0x11, 0x91, 0x33, 0x6E, 0x32, + 0x93, 0x19, 0xAD, 0x94, 0x2C, 0xCA, 0x62, 0xD7, 0xB4, 0xC3, 0x60, 0xE7, + 0xB3, 0x89, 0xF7, 0x61, 0xB3, 0xDD, 0x70, 0xC6, 0xF2, 0xCC, 0x50, 0x8E, + 0x0B, 0x09, 0x48, 0x70, 0xB5, 0x2E, 0xCB, 0x49, 0x5D, 0x4C, 0x26, 0x55, + 0x5D, 0x16, 0x0F, 0xCF, 0x8E, 0x17, 0x8B, 0x99, 0xE0, 0x8C, 0x33, 0x26, + 0xA5, 0xD0, 0x5A, 0x68, 0x29, 0x33, 0xAD, 0xC8, 0x05, 0x9D, 0x76, 0x0E, + 0xC1, 0xF8, 0x41, 0x23, 0x21, 0xED, 0x79, 0xDC, 0x0C, 0x40, 0x6B, 0xF5, + 0xF9, 0xF3, 0x0B, 0xC2, 0xF2, 0x26, 0x55, 0xD1, 0x34, 0x4D, 0x08, 0x51, + 0x2A, 0xA9, 0x94, 0x6C, 0xDB, 0xFE, 0xEA, 0x7A, 0x79, 0x79, 0x79, 0x43, + 0x70, 0x47, 0xDF, 0xDB, 0x2C, 0xCB, 0xBC, 0x0F, 0xD7, 0xB7, 0x2B, 0xA5, + 0xA4, 0xD1, 0x3A, 0xC6, 0x90, 0x52, 0xCA, 0x8C, 0xBE, 0x5D, 0x6E, 0x48, + 0x82, 0xD5, 0x68, 0x35, 0xA9, 0xCB, 0x61, 0xB0, 0xD3, 0xBA, 0x8C, 0x29, + 0xA5, 0x84, 0xE4, 0x07, 0x36, 0x58, 0x5B, 0xE4, 0xD9, 0xC9, 0x62, 0x4E, + 0x44, 0x0D, 0x0A, 0x1F, 0x84, 0xE1, 0xD0, 0x8A, 0xD5, 0x5A, 0x1F, 0xCD, + 0xA7, 0x98, 0xF0, 0xE3, 0x4F, 0x9E, 0x5B, 0xE7, 0xDB, 0xAE, 0xCF, 0x32, + 0x4D, 0xC3, 0x3D, 0x55, 0x59, 0x38, 0xEF, 0x76, 0x4D, 0xF7, 0xD5, 0xB7, + 0x9F, 0xCE, 0x26, 0x35, 0xED, 0x95, 0x5D, 0xD7, 0xEF, 0xDA, 0x2E, 0x61, + 0x42, 0xC4, 0xC5, 0xD1, 0x34, 0xCF, 0x33, 0x80, 0x34, 0x9B, 0x4D, 0x4E, + 0x16, 0xF3, 0xC9, 0xB4, 0xD2, 0x5A, 0xF9, 0x10, 0xA4, 0x90, 0x4D, 0xDB, + 0x59, 0xE7, 0xA5, 0xE4, 0x44, 0x00, 0xE6, 0x8C, 0x0B, 0x35, 0x7A, 0x4D, + 0x2B, 0xB2, 0x23, 0x17, 0x5C, 0x0A, 0xAE, 0xA5, 0xD4, 0x4A, 0x4B, 0xC1, + 0x85, 0x10, 0x99, 0xD1, 0x46, 0x89, 0x3C, 0x33, 0x4A, 0x4A, 0xE2, 0xD3, + 0x52, 0x6E, 0x2E, 0xA5, 0xE0, 0x8C, 0x93, 0x65, 0xA7, 0x75, 0xBE, 0x2E, + 0xF3, 0xF9, 0x6C, 0x22, 0x38, 0x23, 0x52, 0xCB, 0xE2, 0x68, 0x76, 0x79, + 0x7D, 0x2B, 0x85, 0xAC, 0xEB, 0x42, 0x6B, 0x19, 0x42, 0x28, 0xF2, 0x4C, + 0x29, 0x41, 0x3A, 0xBA, 0x75, 0x55, 0xD4, 0x75, 0xA1, 0x0D, 0x59, 0x2B, + 0x00, 0x8C, 0xD3, 0x60, 0x9C, 0x3C, 0x17, 0xEF, 0xE6, 0x8A, 0x38, 0xC9, + 0x92, 0x1E, 0xDA, 0x8B, 0xEC, 0xDE, 0x62, 0x1C, 0x51, 0xAD, 0x7B, 0x89, + 0x58, 0x4A, 0x89, 0x1F, 0x06, 0x6C, 0xBE, 0x1C, 0xC5, 0xD2, 0x48, 0x80, + 0xBD, 0xF7, 0x8A, 0x2F, 0x1B, 0x24, 0x1E, 0x5E, 0xF2, 0xEB, 0x65, 0xA9, + 0xB4, 0xD6, 0xED, 0xDA, 0x61, 0xB0, 0x7E, 0x5C, 0xD2, 0xFB, 0x60, 0x89, + 0x88, 0xA0, 0x65, 0xDF, 0x3B, 0xF2, 0x7C, 0xC6, 0xFD, 0x9B, 0xB0, 0x94, + 0x30, 0x26, 0x00, 0x08, 0x11, 0x05, 0xE7, 0x42, 0xB0, 0x18, 0x11, 0x80, + 0x91, 0xF4, 0x25, 0x1B, 0x73, 0x01, 0xE2, 0x28, 0x8C, 0xF3, 0x95, 0x90, + 0xF0, 0x70, 0x39, 0x22, 0x12, 0x2E, 0x05, 0x8C, 0x33, 0x64, 0x54, 0x2A, + 0x22, 0xE9, 0x12, 0x92, 0xF8, 0xD9, 0x3E, 0xC2, 0xA5, 0x94, 0x00, 0x90, + 0xE4, 0x47, 0x18, 0x26, 0xE0, 0x0C, 0xF6, 0xCE, 0xBB, 0x5F, 0xA0, 0x9F, + 0x1C, 0x76, 0x84, 0xFD, 0x1C, 0x16, 0x00, 0xE3, 0x46, 0xAB, 0x18, 0xFD, + 0xCF, 0x7E, 0xFE, 0xE9, 0x72, 0xDD, 0x1F, 0x2D, 0x16, 0x4A, 0x89, 0x10, + 0x02, 0x83, 0xA4, 0x94, 0x14, 0x42, 0x24, 0x84, 0xC4, 0x88, 0xFB, 0x4A, + 0x19, 0x2F, 0x0B, 0x01, 0x0F, 0xFB, 0x4C, 0x88, 0x09, 0x68, 0x21, 0x71, + 0x2E, 0x04, 0xE3, 0x9C, 0x13, 0x4C, 0xA6, 0x35, 0xC9, 0x60, 0xC0, 0xC5, + 0xE5, 0xCD, 0x5F, 0xFE, 0xCD, 0x8F, 0x7F, 0xF6, 0xCB, 0x4F, 0xA7, 0x93, + 0xC9, 0x9B, 0x4F, 0x5F, 0xDF, 0xB5, 0x6D, 0xD3, 0x0E, 0xDB, 0xA6, 0x2B, + 0x32, 0xD3, 0x59, 0x9B, 0x69, 0xC3, 0x39, 0xB3, 0xD6, 0xF9, 0x10, 0x18, + 0x63, 0x55, 0x51, 0x30, 0xC6, 0x20, 0xA5, 0xB2, 0xC8, 0xB9, 0xE0, 0xDE, + 0x05, 0x17, 0xBC, 0x14, 0x22, 0xC4, 0x80, 0x18, 0x81, 0xB1, 0x18, 0xE2, + 0xE0, 0x9D, 0x92, 0xB2, 0x20, 0xD6, 0xA0, 0x94, 0xD6, 0xBA, 0x7D, 0x90, + 0x8A, 0x21, 0x62, 0x55, 0xE4, 0x14, 0xFA, 0xC3, 0xFE, 0x06, 0x72, 0x34, + 0x85, 0x9C, 0x92, 0xE0, 0x34, 0x3D, 0x9A, 0x38, 0xE7, 0x11, 0x43, 0x99, + 0x1B, 0xE7, 0x03, 0xE1, 0xAE, 0x09, 0x10, 0x00, 0x19, 0xC8, 0x4C, 0x2B, + 0xDA, 0xA2, 0x21, 0x41, 0x8C, 0x31, 0xA4, 0xC4, 0x39, 0xA7, 0xA0, 0xB9, + 0xDD, 0xED, 0xCA, 0x22, 0x9F, 0x4C, 0xAA, 0xF9, 0x6C, 0x12, 0x62, 0x04, + 0x8C, 0x4D, 0xD3, 0x85, 0x10, 0x72, 0xA3, 0x89, 0xF9, 0xE9, 0x43, 0x40, + 0x44, 0x48, 0x50, 0x15, 0x15, 0x0D, 0x09, 0x91, 0xAC, 0x93, 0x10, 0x82, + 0x2C, 0x66, 0xA8, 0x6F, 0xBB, 0x5A, 0x6D, 0xFA, 0x61, 0x58, 0x1C, 0x4D, + 0x8D, 0xD6, 0x4D, 0xDB, 0x32, 0xC6, 0x04, 0x17, 0x4D, 0xDB, 0xB5, 0x5D, + 0xE7, 0xBD, 0x57, 0x42, 0x4E, 0x67, 0x35, 0xB0, 0xC4, 0x81, 0xD7, 0x93, + 0x72, 0x56, 0x54, 0xF3, 0x49, 0x05, 0x00, 0x5A, 0x2B, 0x12, 0x23, 0x94, + 0x99, 0xA6, 0xF1, 0x7B, 0xB2, 0xC8, 0x42, 0xF2, 0xCB, 0xE2, 0x8C, 0x4B, + 0x89, 0x7B, 0x65, 0x37, 0x62, 0xBA, 0x70, 0xC1, 0x95, 0x12, 0x29, 0xC9, + 0xC5, 0x7C, 0xE2, 0x5D, 0x98, 0xD4, 0xE5, 0x83, 0xE3, 0xB9, 0xD6, 0xBA, + 0xDD, 0xB5, 0xBB, 0x6D, 0x73, 0xF6, 0xE0, 0xB8, 0x2C, 0x0B, 0xAD, 0xE4, + 0x3B, 0x6F, 0x3E, 0xE9, 0xBB, 0xA1, 0xB7, 0x43, 0x88, 0x68, 0xAD, 0x9D, + 0xD4, 0xA5, 0xF7, 0xFE, 0xE3, 0x4F, 0x9E, 0x4F, 0x26, 0x55, 0x55, 0xE6, + 0x94, 0x3F, 0x16, 0x79, 0xB6, 0xDE, 0x6C, 0x0A, 0xCC, 0x2E, 0xAF, 0x6E, + 0xEB, 0xAA, 0xA8, 0xCB, 0xDC, 0x3B, 0xB7, 0x98, 0x4F, 0xFA, 0xCC, 0xEC, + 0x9A, 0x56, 0x4A, 0xF1, 0xF8, 0xE1, 0x69, 0x8C, 0xD1, 0x64, 0xCA, 0x64, + 0xCA, 0x5A, 0x8F, 0x38, 0x5A, 0x43, 0xC2, 0x5E, 0x08, 0x3E, 0x84, 0xA4, + 0xB5, 0x2A, 0x72, 0xF3, 0xE0, 0xF4, 0xC8, 0x68, 0xB5, 0xD9, 0x36, 0x3E, + 0xF8, 0xCD, 0xB6, 0x31, 0x5A, 0x2A, 0x25, 0xB0, 0xC5, 0xB2, 0xC8, 0xDE, + 0xFB, 0xC6, 0x57, 0xC8, 0x3F, 0x7C, 0xFD, 0xC9, 0xE7, 0xDE, 0x87, 0x7E, + 0x18, 0x6E, 0xD7, 0xDB, 0xF9, 0x7C, 0x7A, 0xB3, 0xDC, 0x28, 0xD9, 0xC4, + 0x18, 0x37, 0xDB, 0x06, 0x11, 0x67, 0xD3, 0xFA, 0xD1, 0xC3, 0x33, 0x62, + 0xAE, 0x19, 0x2D, 0x31, 0xA5, 0x82, 0xDC, 0xD2, 0x18, 0xCD, 0xFB, 0x1E, + 0x7A, 0x82, 0x64, 0xC6, 0xCA, 0x18, 0x10, 0x75, 0x06, 0x18, 0x03, 0xB9, + 0x5F, 0x0F, 0x29, 0x25, 0xD2, 0x7D, 0x1D, 0x53, 0x17, 0x92, 0x0E, 0xA4, + 0xD0, 0xCB, 0xA9, 0x2A, 0x82, 0x18, 0x62, 0x5D, 0x17, 0x84, 0x41, 0x7B, + 0xEF, 0x8B, 0xDC, 0xE4, 0x66, 0x94, 0xA6, 0xE0, 0x5C, 0x90, 0x32, 0x4F, + 0x4A, 0x29, 0xCB, 0x74, 0x6E, 0xB4, 0x52, 0x42, 0xDC, 0x15, 0x3D, 0x8C, + 0x01, 0x70, 0x0E, 0x7C, 0xBF, 0x08, 0x01, 0x80, 0x41, 0x22, 0x4F, 0x5B, + 0x0A, 0x0C, 0x74, 0x14, 0xFB, 0x15, 0x79, 0x3F, 0x00, 0xC1, 0x01, 0x20, + 0xDB, 0x87, 0x9E, 0x7F, 0x24, 0x17, 0x4B, 0x40, 0x7E, 0x02, 0xF7, 0x05, + 0x66, 0xF0, 0xFE, 0xD3, 0xEE, 0xC7, 0xAF, 0x5F, 0xFF, 0x3B, 0xFB, 0xF1, + 0x8F, 0x7E, 0x64, 0xAD, 0xC7, 0x98, 0x12, 0xDC, 0x4D, 0xF9, 0x00, 0x80, + 0x52, 0x02, 0xC6, 0xF9, 0x55, 0x82, 0xA5, 0xE0, 0xD0, 0x44, 0x60, 0xC0, + 0x38, 0x63, 0x62, 0x9C, 0xE1, 0x4C, 0xFB, 0x69, 0xC4, 0x43, 0x3E, 0xC9, + 0xEE, 0x7F, 0x20, 0x03, 0xE0, 0x0C, 0x0E, 0x40, 0x20, 0xFD, 0x6F, 0x7A, + 0xAF, 0x43, 0x30, 0xA2, 0x91, 0xF0, 0xC3, 0xCB, 0x49, 0x54, 0x36, 0x84, + 0x18, 0xC7, 0xF6, 0xE8, 0xFE, 0x4B, 0x12, 0x64, 0xF4, 0x73, 0x37, 0xE8, + 0x40, 0xE9, 0x49, 0x1A, 0x5D, 0x29, 0x19, 0xE7, 0x20, 0x84, 0x12, 0x9C, + 0x6D, 0xD6, 0xEB, 0x5F, 0x7D, 0x7A, 0xBE, 0x69, 0xDC, 0xD9, 0xD9, 0x89, + 0xD6, 0x9A, 0x01, 0x6A, 0x25, 0x13, 0xB5, 0x69, 0x95, 0x4C, 0x04, 0xAB, + 0x21, 0x60, 0x42, 0x80, 0x44, 0xE9, 0xE7, 0xE1, 0xAD, 0x10, 0x11, 0x11, + 0x8C, 0x51, 0x63, 0x14, 0x06, 0x96, 0x12, 0x92, 0xF3, 0x18, 0xE7, 0xFC, + 0x83, 0x8F, 0x3E, 0xFF, 0xD3, 0xFF, 0xEB, 0xAF, 0x97, 0xEB, 0x46, 0x08, + 0x9E, 0x19, 0x13, 0x70, 0x2C, 0xA7, 0x07, 0x6B, 0xE9, 0x1E, 0x2F, 0x8B, + 0xDC, 0x87, 0x40, 0x12, 0x92, 0x4A, 0xCA, 0x04, 0xD0, 0x0D, 0xBD, 0xE0, + 0x7C, 0x52, 0x55, 0x21, 0x86, 0xA1, 0xB7, 0x00, 0x49, 0x6B, 0x35, 0x0C, + 0xCE, 0xE4, 0x06, 0x43, 0xB4, 0xCE, 0x2B, 0xAD, 0xCA, 0x2C, 0xA3, 0x04, + 0xB6, 0xED, 0x7A, 0xEB, 0x2C, 0x49, 0xFA, 0x0E, 0xCE, 0x03, 0x80, 0x92, + 0x2A, 0x86, 0x20, 0x25, 0x67, 0x8C, 0x13, 0x4B, 0x96, 0xF8, 0xBA, 0x31, + 0x46, 0x52, 0x41, 0x29, 0xF3, 0xDC, 0x68, 0xD5, 0x5B, 0x2B, 0x38, 0xDF, + 0x75, 0x5D, 0x91, 0x65, 0x1C, 0xA0, 0x19, 0x06, 0x1F, 0x82, 0x91, 0x2A, + 0x33, 0x26, 0xEE, 0x39, 0xC6, 0x07, 0xD6, 0x4B, 0x96, 0x91, 0x11, 0x37, + 0xCE, 0x67, 0xB5, 0x31, 0x3A, 0xCF, 0xB3, 0x9B, 0x9B, 0x55, 0xF4, 0x1E, + 0x23, 0x29, 0x7A, 0xF3, 0xC1, 0x5A, 0xE7, 0xA3, 0x0F, 0x41, 0x2B, 0x21, + 0x38, 0x07, 0x80, 0x2C, 0x23, 0xD3, 0x5E, 0x25, 0xF7, 0x02, 0x9C, 0x79, + 0x9E, 0x0F, 0xC3, 0xB0, 0xD9, 0xEC, 0xA4, 0x94, 0x99, 0x51, 0xB3, 0xD9, + 0x04, 0x80, 0x8A, 0x74, 0x34, 0x5A, 0xFB, 0x10, 0x88, 0xA9, 0xAF, 0x94, + 0x98, 0x54, 0x65, 0x51, 0x66, 0x45, 0x9E, 0x17, 0xB9, 0xA9, 0xAB, 0xA2, + 0xC8, 0x8C, 0x90, 0x52, 0x08, 0x01, 0x90, 0x48, 0x00, 0x85, 0x76, 0x50, + 0x2E, 0x78, 0xC2, 0x91, 0xE9, 0xC2, 0xF7, 0xD2, 0x9E, 0x87, 0xDD, 0x98, + 0xFE, 0x80, 0x31, 0x61, 0x8A, 0xD6, 0xFA, 0xAE, 0x1B, 0xB4, 0x52, 0xC4, + 0x1A, 0x0D, 0x31, 0x32, 0x80, 0xAE, 0xB7, 0xB4, 0xF3, 0x20, 0xC6, 0x18, + 0xA2, 0xB5, 0x0E, 0x11, 0xB7, 0x4D, 0xE3, 0x43, 0x9C, 0x4E, 0x27, 0x4D, + 0xDB, 0x3B, 0xE7, 0xE6, 0xB3, 0xE9, 0x7C, 0x3E, 0x1D, 0xAC, 0x3D, 0x59, + 0xCC, 0x2F, 0x2F, 0x6F, 0x9A, 0x6E, 0x28, 0xCB, 0xBC, 0xD9, 0xB5, 0xAF, + 0x3F, 0x79, 0xE0, 0xBC, 0x97, 0x52, 0x69, 0xAD, 0xF3, 0xDC, 0x90, 0x6C, + 0x1C, 0x85, 0x2C, 0xE2, 0x48, 0xEE, 0xEF, 0x8D, 0xC4, 0x58, 0x22, 0xCE, + 0x04, 0xD5, 0x25, 0x8C, 0xB1, 0xDB, 0xE5, 0x7A, 0xBB, 0x6D, 0xD6, 0x9B, + 0xC6, 0x0E, 0xCE, 0x79, 0xEF, 0x7C, 0xB8, 0x5D, 0x6F, 0xD7, 0x9B, 0xDD, + 0x57, 0xDF, 0x79, 0x73, 0x52, 0x57, 0x98, 0xF0, 0xFC, 0xE5, 0x65, 0x88, + 0xB1, 0xEB, 0xFA, 0xD5, 0x7A, 0xF3, 0xF5, 0x77, 0xDF, 0x8E, 0x21, 0x36, + 0x4D, 0x97, 0xE7, 0xA6, 0x2A, 0x73, 0x5A, 0x71, 0x45, 0x91, 0x55, 0x55, + 0x51, 0x57, 0x45, 0x0C, 0x48, 0x5A, 0x37, 0x98, 0xB0, 0xC8, 0x33, 0xAA, + 0x00, 0x52, 0x22, 0x3D, 0x84, 0x71, 0xB1, 0x60, 0x4A, 0x52, 0x70, 0xB9, + 0x9F, 0xCC, 0x1B, 0x43, 0x1B, 0x03, 0x6A, 0xB3, 0xC2, 0x18, 0xE8, 0xD2, + 0x9E, 0xE4, 0x00, 0x00, 0x10, 0x61, 0xEC, 0xBC, 0x53, 0xD1, 0x03, 0x00, + 0x31, 0xE0, 0x72, 0xB5, 0x19, 0x06, 0x77, 0xD0, 0x23, 0xA0, 0xE8, 0x86, + 0x09, 0x39, 0xE7, 0x75, 0x51, 0xE4, 0x85, 0x21, 0xF7, 0x36, 0x62, 0x35, + 0xD0, 0x5A, 0x53, 0x5A, 0x4A, 0xC9, 0x29, 0x6D, 0x10, 0x82, 0x09, 0x12, + 0x71, 0x66, 0x2C, 0x01, 0x19, 0xC6, 0x52, 0x38, 0x62, 0x23, 0x7F, 0x64, + 0xFC, 0xDE, 0xD8, 0xBE, 0x48, 0xBC, 0xCF, 0x9F, 0xF8, 0x72, 0x48, 0xA2, + 0x63, 0x40, 0x24, 0x43, 0xD9, 0x2F, 0x53, 0x31, 0x0E, 0xBF, 0x1C, 0x08, + 0x19, 0xF4, 0x26, 0xFB, 0x3E, 0x66, 0x0A, 0x88, 0xE2, 0x0F, 0xFE, 0xA7, + 0x7F, 0x47, 0x29, 0x55, 0x1A, 0xCB, 0x43, 0x3E, 0xAA, 0xE4, 0x70, 0xE2, + 0x7C, 0x1F, 0x32, 0xBA, 0x71, 0xBC, 0x60, 0x54, 0x10, 0x04, 0x36, 0x86, + 0x8E, 0x2F, 0xC9, 0x49, 0x8C, 0x3E, 0x6E, 0x63, 0x04, 0x60, 0x0C, 0x12, + 0x30, 0xBE, 0xD7, 0x03, 0x18, 0x4F, 0x87, 0xF1, 0xFB, 0xE1, 0x94, 0x73, + 0x4E, 0x6F, 0x3E, 0x16, 0x87, 0x82, 0x23, 0x1E, 0x7C, 0x19, 0x80, 0xCA, + 0xC5, 0x7B, 0x09, 0x17, 0xDB, 0xE7, 0xF7, 0x89, 0x74, 0x7C, 0xEE, 0x27, + 0x63, 0x52, 0x0A, 0xEF, 0xFD, 0x67, 0x9F, 0x9F, 0x5F, 0x5C, 0xEF, 0x12, + 0x53, 0x79, 0x6E, 0xCA, 0xB2, 0x60, 0x80, 0x8C, 0xB1, 0x57, 0xAF, 0x6E, + 0x9B, 0x76, 0x98, 0xD4, 0xC5, 0x3E, 0x8B, 0xA1, 0x2F, 0x1E, 0x02, 0x41, + 0x65, 0xFB, 0x9D, 0x87, 0xE6, 0xEC, 0xB5, 0x56, 0x4A, 0x09, 0x7A, 0x5F, + 0xA5, 0x24, 0x29, 0x2E, 0x38, 0x1F, 0x7F, 0xF5, 0xD9, 0xF9, 0x7F, 0xFE, + 0x7F, 0xFE, 0xCB, 0x6A, 0xD3, 0x92, 0xD6, 0xEB, 0x60, 0x6D, 0x37, 0x58, + 0xCE, 0xB9, 0x75, 0x8E, 0x68, 0xFD, 0x5A, 0xCA, 0x93, 0xC5, 0x3C, 0x01, + 0xE4, 0x99, 0x01, 0x80, 0x10, 0x42, 0x4C, 0x98, 0x00, 0x7C, 0xF0, 0x0C, + 0xC6, 0xD9, 0x26, 0x9A, 0x5F, 0x61, 0x8C, 0x21, 0xC6, 0x04, 0xA9, 0x2A, + 0x0A, 0xB5, 0x8F, 0x2F, 0xBD, 0x1D, 0xE8, 0x76, 0xED, 0x07, 0xCB, 0x38, + 0xA7, 0x76, 0x07, 0x63, 0x4C, 0x4B, 0xA9, 0x8D, 0xB6, 0xCE, 0xF9, 0x18, + 0x0F, 0x83, 0xB1, 0x74, 0xDE, 0x01, 0x63, 0x99, 0x67, 0x9C, 0x31, 0xE7, + 0xBD, 0x0F, 0x11, 0x60, 0x74, 0xB1, 0x75, 0xDE, 0x0B, 0xCE, 0x95, 0x52, + 0xE4, 0x4A, 0x47, 0xA5, 0x34, 0xED, 0xB7, 0x09, 0x80, 0x6A, 0xF9, 0xAA, + 0xC8, 0x31, 0x84, 0xBE, 0xED, 0xEC, 0xE0, 0x76, 0x0D, 0xF1, 0x27, 0x24, + 0x63, 0xDC, 0x79, 0x4F, 0xD7, 0x39, 0x33, 0x9A, 0xA6, 0x3E, 0x84, 0x10, + 0xC6, 0x18, 0xAD, 0xA5, 0xD6, 0xA6, 0x28, 0x72, 0xEF, 0xBD, 0xD6, 0xDA, + 0x79, 0x7F, 0x79, 0x73, 0x1B, 0x63, 0x34, 0x5A, 0xD5, 0x65, 0x49, 0x22, + 0x65, 0x00, 0x69, 0x18, 0x6C, 0xD7, 0x0F, 0xB3, 0xE9, 0xA4, 0xAE, 0x8A, + 0x2C, 0xD7, 0x55, 0x55, 0x54, 0x65, 0x2E, 0x04, 0x57, 0x4A, 0x52, 0x46, + 0x4C, 0x14, 0x53, 0x18, 0x69, 0xCA, 0xC0, 0xF6, 0xE2, 0xE4, 0x87, 0x7F, + 0x0A, 0x29, 0x18, 0x67, 0x64, 0x4F, 0x7A, 0xB8, 0xEB, 0x68, 0xB1, 0xD2, + 0x3E, 0xAA, 0xB5, 0xA4, 0xE9, 0x1C, 0x36, 0x56, 0xA6, 0x2A, 0xA5, 0xD4, + 0x0D, 0xB6, 0x6D, 0xFB, 0xE0, 0x7D, 0xD7, 0x0D, 0xCE, 0xF9, 0xF1, 0xC9, + 0x63, 0x0A, 0x03, 0x0C, 0x20, 0x45, 0x1C, 0x06, 0x6B, 0xAD, 0x23, 0x09, + 0xA3, 0xE3, 0xC5, 0x7C, 0xB5, 0xDA, 0x26, 0x48, 0xD3, 0x49, 0x45, 0xB8, + 0xE1, 0xE5, 0xD5, 0x6D, 0xD3, 0x77, 0xD3, 0x49, 0x8D, 0x88, 0x64, 0xC6, + 0x21, 0x47, 0xDD, 0x05, 0xB9, 0xBF, 0x57, 0xD9, 0x1E, 0xDF, 0xA1, 0x9E, + 0x1A, 0x00, 0x40, 0x91, 0x67, 0xD3, 0x49, 0x3D, 0xA9, 0x8B, 0xB2, 0xC8, + 0x1E, 0x9E, 0x1D, 0x57, 0x55, 0x99, 0x19, 0xFD, 0xE4, 0xF1, 0xD9, 0x57, + 0xDF, 0x7E, 0xFA, 0xE9, 0xB3, 0xF3, 0x67, 0x2F, 0x2E, 0x84, 0x10, 0x6F, + 0x3D, 0x7D, 0xF2, 0xC1, 0x87, 0x1F, 0xCF, 0xA6, 0x93, 0x27, 0x8F, 0x1E, + 0x5C, 0x5E, 0xDD, 0x08, 0x21, 0x86, 0xC1, 0x16, 0x79, 0x0E, 0x29, 0x49, + 0x21, 0x62, 0xC4, 0x10, 0xE3, 0xB4, 0xAE, 0xA5, 0x14, 0xCE, 0x7A, 0x60, + 0x69, 0x3A, 0xA9, 0x29, 0x93, 0x08, 0x21, 0xB2, 0x51, 0xAD, 0x13, 0xD9, + 0x3E, 0x9B, 0x60, 0x9C, 0xC2, 0x07, 0x4B, 0x00, 0x98, 0x18, 0x12, 0x07, + 0x2C, 0xD1, 0x7C, 0xE2, 0x28, 0x7F, 0x45, 0x92, 0x58, 0x71, 0x0C, 0x10, + 0x87, 0x4B, 0x31, 0x62, 0x32, 0x5C, 0xF0, 0x2C, 0x33, 0x4A, 0x09, 0x25, + 0x25, 0xB9, 0x39, 0x8E, 0x18, 0x77, 0x82, 0x3C, 0x33, 0x26, 0x53, 0x34, + 0x42, 0x40, 0xE0, 0x38, 0xC1, 0x44, 0x42, 0x12, 0x32, 0xC1, 0xE9, 0x2B, + 0x90, 0xFB, 0x52, 0x08, 0xC6, 0xB9, 0xC8, 0xC4, 0x90, 0x6A, 0xC3, 0xB4, + 0x2F, 0x1E, 0xD3, 0x9D, 0x0F, 0xC7, 0xBE, 0xB4, 0x84, 0x7B, 0x40, 0xFE, + 0xFD, 0x10, 0xF6, 0x85, 0x08, 0xF3, 0xFF, 0x5B, 0x45, 0xDE, 0x69, 0x37, + 0xDC, 0x7F, 0xD0, 0xE7, 0x49, 0xDA, 0xD5, 0x31, 0x21, 0x85, 0x0C, 0x3A, + 0x14, 0xC1, 0x18, 0x75, 0x84, 0xE9, 0x2A, 0xC0, 0x3D, 0x45, 0xFC, 0x83, + 0xB5, 0x07, 0x5D, 0xA2, 0xFB, 0xF6, 0xBB, 0x6C, 0x7F, 0xCC, 0xE4, 0x95, + 0x9B, 0x46, 0xE9, 0xB4, 0xC4, 0xD9, 0x58, 0x0F, 0xEE, 0x2B, 0x46, 0xB2, + 0xA1, 0x4C, 0x69, 0x3F, 0xDF, 0x73, 0xFF, 0x88, 0x49, 0xD6, 0x96, 0x76, + 0xE0, 0xC3, 0xDF, 0x0F, 0x51, 0xEC, 0x70, 0x7E, 0x87, 0xFC, 0x95, 0xED, + 0x3F, 0x57, 0x2B, 0x19, 0x83, 0xFB, 0xFB, 0x1F, 0xFF, 0x72, 0xF0, 0x60, + 0x8C, 0x86, 0x68, 0x8F, 0xE6, 0xB3, 0xF5, 0x7A, 0x7B, 0x79, 0xB3, 0x0C, + 0x01, 0x11, 0xF1, 0xB5, 0x47, 0xA7, 0x84, 0xD5, 0xD1, 0x65, 0x62, 0x9C, + 0x90, 0x3E, 0xD8, 0xCF, 0xB2, 0x02, 0xE7, 0x9C, 0xB0, 0x09, 0x80, 0xB1, + 0x83, 0x49, 0x5C, 0x50, 0xEB, 0x7D, 0xF0, 0xF1, 0xC7, 0xEF, 0x7F, 0xF4, + 0x83, 0x7F, 0xF8, 0xF9, 0xB6, 0xED, 0x69, 0xD7, 0x02, 0x06, 0x52, 0xA9, + 0x80, 0x96, 0xD6, 0x80, 0x1C, 0x69, 0xA5, 0xC9, 0x59, 0x37, 0x0C, 0x43, + 0x88, 0x68, 0xB4, 0x62, 0x9C, 0x0B, 0x06, 0x44, 0x46, 0xE9, 0xAC, 0xCB, + 0xB5, 0xA2, 0x01, 0x14, 0x48, 0x29, 0x20, 0x6A, 0x25, 0xB4, 0x54, 0x5A, + 0x49, 0xEB, 0x5C, 0x4A, 0x29, 0x62, 0x4C, 0x29, 0xD1, 0xEC, 0x55, 0xA6, + 0x75, 0xD8, 0x47, 0x31, 0x44, 0x44, 0xCE, 0x31, 0xC6, 0xC1, 0x39, 0x06, + 0x2C, 0x37, 0x3A, 0x37, 0xAA, 0x1F, 0x1C, 0x63, 0x90, 0x67, 0x66, 0xBD, + 0x8B, 0x82, 0x5A, 0x87, 0x42, 0xF8, 0x60, 0xBD, 0xF7, 0x4A, 0x88, 0xD1, + 0x8E, 0x41, 0x48, 0x9A, 0x9C, 0x4D, 0x88, 0xB4, 0xB5, 0xB2, 0x71, 0x5E, + 0x75, 0x6F, 0x8C, 0x12, 0x23, 0x6D, 0x04, 0x7D, 0xD7, 0x0B, 0xFA, 0xEA, + 0x13, 0xB3, 0x6E, 0x60, 0x8C, 0x49, 0x29, 0x33, 0x23, 0x46, 0xEB, 0x56, + 0xCE, 0x95, 0x14, 0x11, 0xB1, 0xEB, 0x06, 0x29, 0x95, 0x56, 0x52, 0xD4, + 0x95, 0xF7, 0xC1, 0x59, 0x97, 0x69, 0x6D, 0xB4, 0x9E, 0x4D, 0x6B, 0x25, + 0xA5, 0xD6, 0x6A, 0xBB, 0x6D, 0xDA, 0xB6, 0xCF, 0x32, 0xBD, 0x38, 0x9A, + 0x3F, 0x7A, 0x70, 0x52, 0x96, 0x99, 0xB3, 0x8E, 0xBE, 0x68, 0x25, 0xA5, + 0x56, 0x8A, 0x0B, 0x9E, 0x48, 0x0B, 0x94, 0x8D, 0x9B, 0xC7, 0x1D, 0x6F, + 0x7E, 0xCF, 0x33, 0xA2, 0x9B, 0x8D, 0xED, 0xF7, 0xED, 0xFD, 0xFE, 0x0A, + 0x00, 0x18, 0x23, 0x26, 0x84, 0x10, 0x62, 0xDA, 0x9B, 0x9C, 0xD2, 0x59, + 0x84, 0x10, 0xD7, 0x9B, 0x9D, 0x0F, 0x91, 0x98, 0x8F, 0x4D, 0xDB, 0x37, + 0x6D, 0x9F, 0x17, 0x46, 0x70, 0x5E, 0x55, 0x05, 0x62, 0x8C, 0x91, 0x29, + 0xAD, 0xDB, 0xA6, 0x9B, 0x4C, 0xEB, 0xED, 0xAE, 0x81, 0x9E, 0x97, 0x45, + 0x5E, 0x21, 0xBE, 0xF9, 0xC6, 0xE3, 0x4F, 0x3F, 0x7B, 0x71, 0x75, 0xBD, + 0x44, 0x8C, 0x4F, 0x1E, 0x3F, 0x14, 0x52, 0x3C, 0x7B, 0xF6, 0xB2, 0x69, + 0xBA, 0x37, 0x9F, 0x3E, 0xAE, 0xAB, 0x2A, 0x86, 0xF8, 0xEA, 0xEA, 0xB6, + 0x2C, 0xF2, 0x49, 0x5D, 0xE6, 0x79, 0xC6, 0xF6, 0xF0, 0xC8, 0xFD, 0x03, + 0x3B, 0x04, 0xB8, 0xBA, 0x2E, 0xC8, 0x56, 0x56, 0x69, 0x35, 0x9F, 0xD5, + 0x42, 0x88, 0xF3, 0x97, 0x57, 0xB7, 0xCB, 0xD5, 0xC3, 0xB3, 0xE3, 0x6F, + 0x7D, 0xFD, 0xED, 0x4F, 0x3E, 0x3B, 0x9F, 0xD6, 0xD5, 0xC9, 0x62, 0x4E, + 0x8A, 0xD2, 0x04, 0x4D, 0xAE, 0x36, 0x9B, 0x69, 0x55, 0x35, 0x9D, 0xCB, + 0x33, 0x53, 0xCA, 0x6C, 0xDB, 0x34, 0x47, 0xB3, 0x09, 0x30, 0xCA, 0xC1, + 0x23, 0xE7, 0x0C, 0xC7, 0x79, 0x12, 0x86, 0x91, 0x98, 0xE7, 0x89, 0x30, + 0xE8, 0x84, 0x29, 0x7E, 0xA1, 0x58, 0xBB, 0x5B, 0x83, 0x77, 0x2B, 0x7B, + 0x5C, 0xA2, 0xB0, 0x9F, 0x45, 0x61, 0x87, 0xDD, 0x7A, 0x9F, 0x61, 0xF1, + 0xB2, 0xCC, 0xB3, 0x4C, 0x7B, 0x47, 0x2A, 0x8F, 0x91, 0x3E, 0x4B, 0x4A, + 0xB1, 0xD7, 0x2E, 0xE4, 0x84, 0xA6, 0x2B, 0x25, 0x95, 0x96, 0x87, 0x92, + 0x25, 0x8D, 0xE8, 0x76, 0x4A, 0x7C, 0x1F, 0x9B, 0x00, 0x00, 0x00, 0x81, + 0xD3, 0x6F, 0x14, 0xCB, 0x0E, 0x2C, 0xFC, 0x7B, 0x87, 0x95, 0x0E, 0x09, + 0xD3, 0x61, 0x69, 0x8F, 0x8F, 0x7D, 0x5F, 0xF2, 0x1F, 0x0D, 0x61, 0x87, + 0xFF, 0x8E, 0x09, 0xDF, 0x1E, 0x33, 0xA5, 0x3B, 0x66, 0x14, 0x74, 0xFA, + 0x77, 0x7F, 0xF0, 0xEF, 0x0F, 0xB9, 0x18, 0x00, 0x8C, 0x48, 0x3C, 0xD5, + 0xAB, 0xFB, 0x1B, 0xEB, 0xFE, 0x85, 0xB8, 0x1F, 0xCB, 0xF6, 0x57, 0xE6, + 0xEE, 0x5A, 0xDE, 0x5D, 0x2E, 0x36, 0x86, 0x98, 0x03, 0x74, 0x35, 0xD6, + 0x98, 0xFB, 0x38, 0xCE, 0xBE, 0xF8, 0x38, 0x7C, 0x44, 0xFA, 0x02, 0xE0, + 0xF5, 0xC5, 0x8F, 0xBD, 0x8F, 0x88, 0xD1, 0xCD, 0xCF, 0x39, 0x00, 0x68, + 0xAD, 0x33, 0xA3, 0x3E, 0xFC, 0xF0, 0x93, 0xBF, 0x7F, 0xFF, 0xE3, 0x5D, + 0xE3, 0xEA, 0xAA, 0xAC, 0xAA, 0x0A, 0x80, 0x7D, 0xFE, 0xE2, 0xE2, 0xE7, + 0x1F, 0x7D, 0x1E, 0x31, 0x19, 0xAD, 0x1F, 0x9E, 0x2E, 0xCE, 0x4E, 0xE6, + 0xDA, 0x68, 0xCE, 0x79, 0x22, 0x29, 0x0F, 0x18, 0x6B, 0xB4, 0x7D, 0xFC, + 0xA2, 0x68, 0x4B, 0x52, 0x3C, 0x90, 0x12, 0x30, 0xCE, 0x03, 0x46, 0xEB, + 0x63, 0xDF, 0xD9, 0xBF, 0xFA, 0xDB, 0x1F, 0xFF, 0xDD, 0x8F, 0x7E, 0xD1, + 0x74, 0x03, 0x9D, 0xBA, 0x94, 0x52, 0x49, 0xC9, 0x39, 0xC7, 0x7D, 0x1C, + 0xCF, 0x8D, 0x41, 0x44, 0xC9, 0x05, 0x67, 0x40, 0xB8, 0x15, 0x5D, 0x6E, + 0x2E, 0xC4, 0x30, 0x58, 0xEF, 0x03, 0x90, 0x31, 0x0C, 0x1F, 0xBF, 0x7C, + 0xEF, 0xBD, 0x56, 0x4A, 0x30, 0xE6, 0x83, 0x4F, 0x69, 0x24, 0xDF, 0xE6, + 0x46, 0x33, 0x00, 0x25, 0x04, 0x11, 0x56, 0x09, 0xE0, 0xE0, 0x7C, 0xEC, + 0x78, 0x77, 0xC3, 0x30, 0x1A, 0xF9, 0xC5, 0x48, 0x43, 0x14, 0xD6, 0xB9, + 0x22, 0x33, 0x14, 0x31, 0xAD, 0xF7, 0x9C, 0x3A, 0x21, 0x6C, 0xD4, 0x3D, + 0xB1, 0xCE, 0x29, 0x29, 0x29, 0x71, 0x20, 0xBA, 0x3D, 0x65, 0xA2, 0x54, + 0x93, 0x52, 0xAB, 0x94, 0x86, 0xAE, 0xB8, 0x14, 0x45, 0x9E, 0x65, 0x46, + 0x0B, 0xC1, 0x89, 0x74, 0x06, 0x9C, 0xC5, 0x84, 0x24, 0x52, 0x4A, 0xC1, + 0x94, 0xFE, 0x9E, 0x65, 0xA6, 0x2A, 0x73, 0xCE, 0x59, 0x3F, 0xD8, 0x10, + 0x3C, 0x03, 0x98, 0xCF, 0xA6, 0x84, 0x3A, 0x69, 0xA5, 0xAC, 0xB3, 0x98, + 0xB0, 0x2A, 0xCB, 0x87, 0x0F, 0x8E, 0xE7, 0xB3, 0x5A, 0x0A, 0x21, 0x85, + 0x18, 0xED, 0x1A, 0x8D, 0x51, 0x52, 0x71, 0x4E, 0x3A, 0x71, 0x89, 0xB6, + 0x8A, 0xF1, 0x4E, 0x4D, 0x94, 0x5C, 0x8C, 0xDB, 0x79, 0x42, 0x86, 0xA3, + 0x86, 0x25, 0x30, 0x06, 0x94, 0xAF, 0x1F, 0xFA, 0xE6, 0x98, 0x92, 0xB5, + 0xCE, 0x59, 0x4F, 0x8D, 0x22, 0xEF, 0x43, 0x08, 0x71, 0xDB, 0xB4, 0x4D, + 0xD3, 0x0D, 0x83, 0x23, 0x0E, 0xE3, 0xB6, 0xE9, 0x9A, 0xB6, 0x5F, 0xAE, + 0xB6, 0xE4, 0x6C, 0x40, 0x6C, 0x5B, 0xC1, 0x09, 0x39, 0x8D, 0x5C, 0x88, + 0xA6, 0x69, 0x79, 0x4A, 0x65, 0x59, 0x1C, 0x1D, 0xCD, 0x72, 0x63, 0x9A, + 0xA6, 0xED, 0xBA, 0xE1, 0xE5, 0xAB, 0xEB, 0x49, 0x5D, 0xAD, 0xD7, 0xDB, + 0x61, 0x18, 0x8A, 0x3C, 0xAB, 0xCB, 0x62, 0x52, 0x17, 0x42, 0x88, 0x7E, + 0xB0, 0x9B, 0x4D, 0xC3, 0x38, 0xCB, 0xF3, 0x7C, 0x8F, 0x36, 0xDC, 0xAD, + 0x97, 0xC3, 0x22, 0x3D, 0x6C, 0xB7, 0x5A, 0x2B, 0x63, 0x14, 0x3D, 0xE1, + 0xE4, 0x78, 0x5E, 0x15, 0xF9, 0xE5, 0xD5, 0x8D, 0x1D, 0xDC, 0x7C, 0x3E, + 0x99, 0x4E, 0xEB, 0xBA, 0x2A, 0x8E, 0xE6, 0xD3, 0xA3, 0xF9, 0xB4, 0x1F, + 0xAC, 0x1D, 0xAC, 0x52, 0xB2, 0xAE, 0x4A, 0xA5, 0x55, 0x8C, 0x71, 0x52, + 0x95, 0x55, 0x55, 0x1C, 0xF0, 0xE5, 0x84, 0xD4, 0xFC, 0x19, 0xF7, 0xDD, + 0xB1, 0x78, 0x1B, 0xA5, 0xE7, 0xC7, 0x1B, 0xE6, 0x7E, 0x2C, 0x38, 0x5C, + 0xD2, 0x3B, 0x3E, 0xE4, 0xF8, 0xAF, 0xFD, 0xB8, 0xCB, 0x98, 0x97, 0xE0, + 0x3D, 0x08, 0x9B, 0x8F, 0xC6, 0xD2, 0x1C, 0x84, 0x10, 0x59, 0xA6, 0x8D, + 0xD1, 0x5A, 0x6B, 0xC1, 0x19, 0x99, 0x46, 0x32, 0xC6, 0xB4, 0x51, 0xA4, + 0x4F, 0x7D, 0x3F, 0xB2, 0x88, 0x11, 0xDE, 0x01, 0xAA, 0x9A, 0x28, 0xF7, + 0xDD, 0xC7, 0x0A, 0xF8, 0x12, 0x48, 0xFF, 0xC5, 0x98, 0xF5, 0x6B, 0x21, + 0x6C, 0x8C, 0xB6, 0x80, 0x29, 0x01, 0xBB, 0x0B, 0x64, 0x29, 0xDD, 0xCF, + 0xEC, 0xBE, 0x10, 0xA5, 0xD3, 0xBD, 0x5F, 0xD2, 0x21, 0x2E, 0xFF, 0xC1, + 0x1F, 0xFC, 0x7B, 0x00, 0x92, 0xA0, 0xD9, 0x9F, 0xFB, 0xDE, 0x59, 0xF6, + 0xFE, 0x27, 0x7F, 0x21, 0x9C, 0xA4, 0xBB, 0x48, 0x04, 0xC0, 0xEE, 0xA3, + 0xEF, 0x8C, 0x8D, 0x68, 0x18, 0xDB, 0x07, 0x9A, 0xB1, 0x89, 0x39, 0xBE, + 0x42, 0x70, 0xC6, 0x19, 0x67, 0xC4, 0x61, 0x39, 0x3C, 0x81, 0x0B, 0xC6, + 0x00, 0x84, 0x10, 0x52, 0x09, 0xE2, 0x70, 0x32, 0x80, 0x34, 0x36, 0xBC, + 0xEF, 0xB1, 0xEF, 0xEE, 0xE5, 0xC6, 0x87, 0x3B, 0x49, 0x6B, 0x73, 0x73, + 0xBB, 0xBC, 0xBA, 0xBC, 0xFC, 0xF0, 0xD3, 0xEB, 0xC4, 0x55, 0x51, 0x64, + 0xD6, 0xDA, 0x66, 0xD7, 0x0C, 0x2E, 0xBC, 0xB8, 0xB8, 0xAE, 0xCA, 0xF2, + 0xC9, 0xC3, 0x93, 0x22, 0x37, 0x67, 0x27, 0x47, 0x45, 0x99, 0x0B, 0xC1, + 0x52, 0x4A, 0xDE, 0xC7, 0x88, 0x29, 0x84, 0x08, 0x00, 0xC4, 0xA8, 0xA0, + 0xA3, 0x40, 0x24, 0x17, 0xEB, 0x84, 0x29, 0x05, 0x44, 0x4C, 0x18, 0x7C, + 0x74, 0x3E, 0x7C, 0xF0, 0xE1, 0xA7, 0x7F, 0xF7, 0xE3, 0x0F, 0xB6, 0x4D, + 0x97, 0x18, 0x4B, 0x71, 0x64, 0x1E, 0x73, 0xCE, 0x7D, 0xC4, 0xB6, 0x1B, + 0x28, 0x2E, 0x53, 0x62, 0x41, 0xC5, 0xAC, 0x0F, 0x51, 0x69, 0x45, 0x6A, + 0x4D, 0xD6, 0x79, 0x7A, 0x73, 0x22, 0x16, 0x30, 0x60, 0x04, 0xD3, 0x42, + 0xA2, 0x21, 0x6E, 0xC6, 0x39, 0x0B, 0x31, 0xC4, 0x84, 0x52, 0xC8, 0xE0, + 0x63, 0xD7, 0x0F, 0x5C, 0x70, 0x4C, 0x40, 0xBD, 0x02, 0x17, 0x02, 0x1B, + 0x0B, 0xD5, 0xD4, 0x0F, 0x56, 0x49, 0x05, 0x90, 0xA4, 0x94, 0x8C, 0xB1, + 0xC1, 0x3A, 0x1F, 0xA3, 0x92, 0xE2, 0x78, 0x3E, 0xEB, 0x07, 0xBB, 0xD9, + 0xB5, 0x34, 0x22, 0x9E, 0x00, 0x9C, 0xF3, 0x31, 0x22, 0x05, 0x17, 0xC6, + 0x98, 0xE0, 0x3C, 0x33, 0xBA, 0x28, 0xB2, 0x18, 0x91, 0x84, 0xAD, 0xE9, + 0x64, 0x69, 0x2A, 0x10, 0x21, 0xF1, 0xBD, 0x47, 0x15, 0xC9, 0xF5, 0xD1, + 0x17, 0x1E, 0x11, 0x23, 0x22, 0x5D, 0xF6, 0x18, 0x51, 0x29, 0x41, 0x96, + 0x6E, 0x54, 0x05, 0x73, 0xCE, 0x31, 0xA5, 0xB2, 0x28, 0xA6, 0xD3, 0xBA, + 0xC8, 0x32, 0xAD, 0xA5, 0x75, 0xAE, 0x69, 0xBB, 0xE9, 0xA4, 0x7E, 0xF4, + 0xE0, 0x78, 0x36, 0xAD, 0xF2, 0x2C, 0x4B, 0x98, 0x7A, 0x6B, 0x81, 0x81, + 0x14, 0x82, 0x73, 0x1E, 0x31, 0xF6, 0xBD, 0xBD, 0xC3, 0x31, 0xD2, 0x21, + 0xAD, 0x4E, 0x29, 0x21, 0x01, 0xBB, 0xFB, 0x3B, 0x70, 0xCF, 0xFF, 0xDE, + 0xCF, 0xA9, 0x24, 0xEA, 0x03, 0x20, 0x38, 0xE7, 0xBB, 0x6E, 0x68, 0x49, + 0xE1, 0x56, 0x70, 0xC4, 0xD4, 0xF5, 0x03, 0xA9, 0xEE, 0x6C, 0xB6, 0xBB, + 0xC1, 0x3A, 0x00, 0xB6, 0x6B, 0xDA, 0x2C, 0x33, 0x93, 0xAA, 0xF0, 0x21, + 0x5E, 0x5F, 0x2F, 0x8F, 0x17, 0xB3, 0xBA, 0x2A, 0x9D, 0xF3, 0x93, 0xE9, + 0x84, 0x52, 0x57, 0x48, 0x18, 0x62, 0xB8, 0xBA, 0xBA, 0x5D, 0xAD, 0x77, + 0x14, 0x5C, 0xAE, 0x6F, 0x56, 0xE7, 0x2F, 0xAF, 0x5E, 0x5D, 0x5D, 0x7F, + 0xED, 0xDD, 0xB7, 0x2F, 0x5E, 0x5D, 0x39, 0xEF, 0xDB, 0xAE, 0x2F, 0xF2, + 0x2C, 0x33, 0xA6, 0xEF, 0x87, 0x4D, 0xD3, 0x22, 0x22, 0x89, 0x3D, 0x1C, + 0x6E, 0xF5, 0xBB, 0x7C, 0x01, 0x31, 0xED, 0x69, 0x92, 0x87, 0x8D, 0x5D, + 0x4A, 0x51, 0x55, 0xF9, 0xE2, 0x68, 0x3A, 0x4E, 0x0B, 0xCC, 0xEA, 0x22, + 0x37, 0x65, 0x91, 0x7D, 0xFD, 0xDD, 0x37, 0x19, 0x83, 0xEB, 0xDB, 0x65, + 0x66, 0x34, 0x39, 0xC3, 0x1B, 0xA3, 0x39, 0x87, 0xB2, 0xC8, 0x4F, 0x8E, + 0xE7, 0xFD, 0x30, 0x44, 0xF2, 0x6A, 0x13, 0x42, 0x48, 0xAE, 0x8D, 0x1A, + 0xDF, 0x30, 0xDD, 0xC1, 0x61, 0x00, 0x10, 0x43, 0x74, 0x36, 0x50, 0x32, + 0x7B, 0x08, 0x1F, 0x89, 0x04, 0x95, 0x0F, 0x12, 0xC5, 0xA4, 0x3B, 0x13, + 0xEE, 0x34, 0xE2, 0x69, 0x4D, 0xEF, 0xBB, 0x79, 0xFB, 0x75, 0x0D, 0x77, + 0x20, 0x11, 0xE3, 0x4C, 0x2A, 0xC1, 0xEF, 0x39, 0xCF, 0x4A, 0x75, 0xA7, + 0x8C, 0x70, 0xA8, 0xA2, 0x00, 0x40, 0xDC, 0xAB, 0x87, 0xC6, 0xA2, 0xE8, + 0x7E, 0x4A, 0x08, 0x77, 0x03, 0xC8, 0xF7, 0xA3, 0xD5, 0xFD, 0xA0, 0x36, + 0xC6, 0x32, 0x48, 0x90, 0x00, 0x71, 0x8C, 0x47, 0xFF, 0xE8, 0xB3, 0xBF, + 0xF0, 0xFB, 0xAF, 0xC1, 0xFC, 0x87, 0x98, 0x38, 0x16, 0xFF, 0x78, 0x17, + 0x29, 0xEF, 0xBF, 0x3E, 0xED, 0xB1, 0x80, 0x2F, 0xC4, 0x31, 0x18, 0xA1, + 0xB0, 0x43, 0x8D, 0xFC, 0x85, 0x74, 0x0C, 0xF6, 0x32, 0xF9, 0x87, 0x97, + 0x70, 0x6A, 0xFF, 0x8F, 0x98, 0xD6, 0x5D, 0x81, 0x9A, 0xF6, 0xD8, 0x47, + 0x4A, 0x69, 0xBC, 0xD9, 0x85, 0x18, 0xBF, 0xB3, 0xF1, 0x72, 0x44, 0xBA, + 0xE1, 0xF7, 0xB1, 0xF2, 0x4E, 0xA5, 0x9A, 0xA2, 0x4F, 0x9E, 0x67, 0x6D, + 0xD3, 0x9C, 0xBF, 0x7C, 0xE5, 0x43, 0x52, 0x26, 0xE3, 0x52, 0x5C, 0x5E, + 0xDF, 0x38, 0x49, 0xF1, 0xFE, 0x7F, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xEB, 0xA9, 0x6D, 0x9D, 0x17, 0xF9, 0x83, 0xD3, 0xE3, 0xF9, + 0x6C, 0x62, 0xB4, 0x9C, 0xD4, 0x25, 0x63, 0x10, 0x02, 0x3A, 0x1F, 0x86, + 0xC1, 0xB1, 0xBD, 0x07, 0x0F, 0xD5, 0x8F, 0x00, 0x60, 0xAD, 0x1B, 0x17, + 0x18, 0x1F, 0xC5, 0x60, 0x11, 0x21, 0x46, 0x5C, 0xAD, 0x36, 0xEB, 0xCD, + 0x8E, 0x92, 0x6D, 0x29, 0x25, 0xDD, 0x7C, 0x74, 0x26, 0xDE, 0xFB, 0x83, + 0xE0, 0x5F, 0xD7, 0xDB, 0x22, 0x33, 0x59, 0x96, 0x61, 0x4A, 0xDD, 0x30, + 0xA4, 0xBD, 0x1E, 0x06, 0x83, 0xC4, 0x39, 0x23, 0x12, 0x89, 0x60, 0x0C, + 0x53, 0x52, 0x52, 0x0D, 0xB6, 0x53, 0x4A, 0x0A, 0xC6, 0x63, 0x8C, 0x42, + 0x48, 0x29, 0xA5, 0x75, 0xCE, 0x79, 0x97, 0x00, 0xA8, 0xF8, 0x1A, 0xAC, + 0x4D, 0x90, 0x38, 0xB0, 0x22, 0xCB, 0x18, 0x63, 0x11, 0x31, 0xC6, 0xA8, + 0x94, 0x24, 0x3D, 0x83, 0x10, 0xD1, 0x3A, 0x5F, 0x64, 0x59, 0xEF, 0x5C, + 0x44, 0x8C, 0x09, 0xBB, 0x61, 0x50, 0x52, 0x5A, 0xE7, 0xA8, 0x63, 0xC0, + 0x39, 0xE3, 0x5C, 0x72, 0xC6, 0x85, 0xE0, 0x9E, 0x00, 0x2F, 0x80, 0xBE, + 0xB7, 0xE4, 0x1E, 0x26, 0x84, 0x20, 0x3A, 0x52, 0x4A, 0x49, 0x08, 0xA1, + 0xB5, 0x8C, 0x21, 0x48, 0x86, 0x84, 0x69, 0x47, 0x8C, 0x90, 0x80, 0xBA, + 0xEA, 0x09, 0x58, 0x88, 0xE8, 0xFC, 0xA0, 0xA4, 0x34, 0x4C, 0x65, 0x99, + 0x01, 0x80, 0xB6, 0x6D, 0x85, 0x94, 0xDE, 0xFB, 0x2C, 0x33, 0xB3, 0xE9, + 0x64, 0x52, 0x17, 0x5A, 0xC8, 0x10, 0x42, 0x9E, 0x4D, 0x67, 0xD3, 0x8A, + 0x25, 0xA0, 0x5E, 0x98, 0x54, 0x42, 0x1B, 0x99, 0x58, 0xE2, 0x3C, 0x97, + 0x52, 0x38, 0xEB, 0xFA, 0xDE, 0x5A, 0xEF, 0x74, 0x50, 0xC1, 0x7B, 0xAD, + 0x55, 0xA6, 0x15, 0x22, 0x61, 0x91, 0x4C, 0x70, 0xC1, 0xC5, 0x21, 0x86, + 0xDE, 0x01, 0x0E, 0x1C, 0x00, 0x81, 0xC5, 0x98, 0x12, 0x26, 0xC6, 0x20, + 0xC4, 0x68, 0x07, 0xD7, 0xB4, 0x3D, 0x09, 0x43, 0x5B, 0xE7, 0x11, 0xB1, + 0xEF, 0xAD, 0xB5, 0x6E, 0xBD, 0xDE, 0x0E, 0xD6, 0x01, 0xE7, 0x5D, 0x37, + 0x18, 0x25, 0x81, 0xB3, 0x18, 0x62, 0x99, 0x9B, 0xDC, 0xA8, 0xF6, 0xFF, + 0x63, 0xEB, 0xCD, 0x9A, 0x24, 0xBB, 0x92, 0xF4, 0xB0, 0xE3, 0x7E, 0xD6, + 0xBB, 0xC4, 0x92, 0x6B, 0x2D, 0x68, 0xA0, 0xD1, 0x1B, 0xBA, 0x87, 0x33, + 0x3D, 0x9C, 0x19, 0x6E, 0x46, 0x72, 0x86, 0xA4, 0xC4, 0x07, 0xD2, 0x28, + 0x93, 0xDE, 0xF4, 0x07, 0x24, 0xD3, 0x33, 0x4D, 0x7F, 0x4B, 0x4F, 0x92, + 0xCC, 0x64, 0x32, 0xA3, 0x89, 0x12, 0xCD, 0x38, 0x22, 0xC7, 0xA6, 0xD5, + 0xEC, 0xE9, 0x1D, 0xDD, 0x0D, 0x34, 0x80, 0xAA, 0x42, 0x56, 0xE5, 0x1A, + 0xEB, 0x5D, 0xCE, 0xEA, 0x7A, 0xF0, 0x1B, 0x91, 0x09, 0x90, 0xF9, 0x50, + 0x56, 0x28, 0x64, 0x46, 0x64, 0x44, 0xDC, 0xEB, 0xC7, 0xFD, 0xF3, 0x6F, + 0xD9, 0xF7, 0x4C, 0xEF, 0x02, 0x41, 0xCF, 0x9F, 0x9D, 0x3F, 0xDC, 0x6F, + 0xCE, 0x4F, 0x4F, 0x36, 0xDB, 0x6D, 0xC9, 0xF1, 0xE1, 0x61, 0x1D, 0x62, + 0xBC, 0xBC, 0x3C, 0x3B, 0x3D, 0x5D, 0xF6, 0xA3, 0xBF, 0xBA, 0xBA, 0x7E, + 0x73, 0x75, 0xFD, 0xC1, 0xFB, 0x2F, 0x5F, 0xBD, 0xBA, 0x2A, 0x99, 0x4A, + 0x29, 0x7F, 0xFC, 0x87, 0x1F, 0x35, 0x75, 0xD5, 0xF5, 0xC3, 0xCD, 0xED, + 0xBD, 0x35, 0xFA, 0xF2, 0xE2, 0x94, 0x9B, 0x32, 0xDE, 0xB7, 0xF2, 0xED, + 0xCA, 0xC3, 0x7B, 0x39, 0x8C, 0xE1, 0xC7, 0x32, 0x57, 0x8A, 0x00, 0x28, + 0xCB, 0x45, 0x7B, 0x7E, 0xB6, 0x00, 0x80, 0x18, 0xD2, 0x66, 0xBB, 0xFF, + 0xEC, 0xF3, 0xD7, 0x3E, 0x44, 0x89, 0x20, 0x48, 0x9C, 0x9E, 0x2C, 0xAA, + 0xCA, 0x0D, 0xE3, 0x68, 0xB4, 0x6B, 0xEB, 0x4A, 0x29, 0xA9, 0x92, 0xD4, + 0x52, 0x4A, 0x29, 0x99, 0x68, 0x91, 0xD2, 0x94, 0x61, 0x5E, 0x68, 0x1A, + 0x2A, 0x85, 0x10, 0x39, 0xE7, 0x71, 0x0C, 0xDC, 0x46, 0xE5, 0x4C, 0x87, + 0x98, 0xC4, 0xC7, 0x1A, 0x07, 0x20, 0x72, 0x39, 0x2C, 0x2C, 0xBF, 0x3A, + 0x54, 0x0A, 0xA0, 0x03, 0xE8, 0x7E, 0xA8, 0xC5, 0x04, 0x80, 0x42, 0x02, + 0x0A, 0x41, 0x91, 0x8A, 0x10, 0x42, 0x49, 0x48, 0x49, 0xF0, 0x90, 0x6E, + 0xC9, 0xA6, 0x08, 0x88, 0x60, 0x8C, 0x9E, 0x7C, 0x5D, 0xF9, 0x60, 0xE3, + 0x90, 0x07, 0xCE, 0x44, 0x64, 0xFE, 0x3D, 0x09, 0xFA, 0x6A, 0x3F, 0xF5, + 0xB4, 0xE2, 0x1C, 0x07, 0x2A, 0x71, 0x70, 0x94, 0x79, 0xAC, 0x41, 0x45, + 0x14, 0x9A, 0x2C, 0x6B, 0x9E, 0xFC, 0xF8, 0xB1, 0x70, 0x4D, 0xE3, 0x68, + 0x79, 0xD2, 0x88, 0x89, 0x69, 0x7B, 0xFB, 0x95, 0x6D, 0xC0, 0x64, 0x6D, + 0x78, 0x78, 0x4D, 0x00, 0x4F, 0xF6, 0x8F, 0xFC, 0x98, 0xC7, 0x77, 0xE1, + 0xB1, 0x8A, 0x3D, 0xBE, 0x24, 0xFC, 0xDA, 0x37, 0x4C, 0x95, 0x0C, 0x0E, + 0x15, 0x8E, 0xFF, 0x11, 0x05, 0x02, 0x4A, 0xC5, 0x9D, 0xD7, 0x93, 0x29, + 0xF2, 0xF0, 0x17, 0xC1, 0x9C, 0x80, 0x83, 0x93, 0x8F, 0x10, 0x42, 0x1B, + 0x85, 0x12, 0x52, 0x02, 0x2E, 0x65, 0x78, 0x58, 0xDB, 0xF0, 0x6B, 0x46, + 0x44, 0x63, 0x34, 0x0A, 0xF1, 0xD9, 0xEF, 0xBF, 0xF8, 0xED, 0x17, 0xD7, + 0x31, 0x89, 0x58, 0xC4, 0x7A, 0xB3, 0xEB, 0xFA, 0x61, 0x1C, 0x87, 0xE5, + 0x7C, 0x81, 0x44, 0x4E, 0xCB, 0x79, 0x5B, 0x97, 0x94, 0xAC, 0x92, 0x27, + 0xCB, 0x56, 0x00, 0x84, 0x94, 0xFA, 0x7E, 0xF4, 0x31, 0x2B, 0x84, 0xA3, + 0x6D, 0x2E, 0x11, 0xC5, 0x94, 0xC7, 0xC1, 0x33, 0x0E, 0xCD, 0xD7, 0x68, + 0x2A, 0x25, 0xA5, 0x42, 0x85, 0x52, 0xCE, 0xFD, 0xE8, 0x53, 0xCA, 0xB3, + 0xA6, 0x11, 0x02, 0x43, 0x8C, 0x59, 0x2B, 0x1E, 0x73, 0x24, 0x4E, 0xC2, + 0xF1, 0xC3, 0x67, 0x25, 0xC6, 0x18, 0xFA, 0xD1, 0x57, 0xCE, 0x31, 0x29, + 0x81, 0xED, 0x76, 0x05, 0x95, 0x29, 0x05, 0x8E, 0x88, 0xC3, 0x25, 0x0B, + 0x11, 0xE7, 0x63, 0xE7, 0x54, 0x94, 0x52, 0x29, 0xE7, 0x98, 0x32, 0x22, + 0x32, 0x3C, 0x2F, 0x40, 0x14, 0x22, 0xA9, 0x54, 0x08, 0xA1, 0xAA, 0x8D, + 0x35, 0x3A, 0xC4, 0x04, 0x42, 0xC4, 0x9C, 0x89, 0x04, 0x22, 0x94, 0x42, + 0x08, 0x22, 0x11, 0x19, 0x23, 0x43, 0x02, 0x00, 0xE8, 0xFB, 0x71, 0x1C, + 0xFD, 0xBC, 0x6D, 0x52, 0x56, 0x4C, 0x09, 0xB6, 0x5A, 0xEF, 0xFB, 0x81, + 0x94, 0x4A, 0x19, 0xD9, 0x60, 0x6B, 0x18, 0x3D, 0x00, 0xA4, 0x92, 0x35, + 0x4E, 0x4B, 0xA8, 0x72, 0x18, 0xAB, 0x59, 0x0E, 0x9D, 0xA9, 0x68, 0x90, + 0xBC, 0x16, 0x98, 0xEE, 0x55, 0x29, 0x49, 0x88, 0x61, 0xF4, 0x42, 0x40, + 0xED, 0xF4, 0xAC, 0x6D, 0xA4, 0xC4, 0xBE, 0xEB, 0xFB, 0x7E, 0x98, 0x2F, + 0x66, 0x27, 0xCB, 0x85, 0xB5, 0x66, 0xDE, 0x36, 0x8B, 0x79, 0x6D, 0xAD, + 0x65, 0x53, 0x2D, 0x00, 0x0C, 0x21, 0x54, 0x95, 0x6B, 0x1A, 0x87, 0x52, + 0x2A, 0x84, 0xB6, 0xAE, 0xB8, 0xA5, 0xEA, 0xFB, 0x31, 0xC6, 0x04, 0x60, + 0x0E, 0xE6, 0x9D, 0x2C, 0xF3, 0x28, 0x90, 0x40, 0x29, 0x2C, 0x54, 0x28, + 0x4F, 0xBF, 0x15, 0x02, 0x0B, 0xCF, 0x11, 0x00, 0x0A, 0x81, 0xC8, 0x85, + 0xB3, 0x7F, 0xD8, 0x49, 0x62, 0xBD, 0xD9, 0x1D, 0xBC, 0xD4, 0xE3, 0xBE, + 0x1B, 0xBC, 0xF7, 0x85, 0xA8, 0xE4, 0x52, 0x48, 0xB0, 0xE1, 0x60, 0x88, + 0xA9, 0x1F, 0x7C, 0x5D, 0x39, 0x1F, 0x02, 0x08, 0x51, 0x55, 0x96, 0x88, + 0xEE, 0x6E, 0x57, 0x2F, 0x9E, 0x5F, 0xC6, 0x98, 0x62, 0x88, 0x4D, 0x53, + 0x0D, 0x83, 0xAF, 0x9C, 0x13, 0x42, 0x28, 0xAD, 0xEE, 0xEF, 0x56, 0xBB, + 0x5D, 0x67, 0xAC, 0x79, 0xFE, 0xEC, 0x7C, 0xBB, 0xDD, 0xAF, 0x56, 0x1B, + 0x67, 0xCC, 0x7C, 0xDE, 0xDE, 0xDD, 0x3D, 0x28, 0xAD, 0x1F, 0xD6, 0x9B, + 0xB3, 0x93, 0x93, 0x8B, 0xB3, 0x13, 0xAD, 0x65, 0x4C, 0xF9, 0xEE, 0x6E, + 0x35, 0x9F, 0x37, 0x55, 0xE5, 0x10, 0x05, 0x80, 0xCC, 0x79, 0xBA, 0xF2, + 0x79, 0x03, 0x73, 0xEC, 0x74, 0x8E, 0x77, 0xCA, 0xD4, 0x25, 0x14, 0x22, + 0x2A, 0x28, 0xD1, 0x39, 0xF3, 0xC1, 0xFB, 0x2F, 0x11, 0x41, 0x2A, 0xF5, + 0xEA, 0xD5, 0xD5, 0xC3, 0x6A, 0x8B, 0x9C, 0x7A, 0xD5, 0x36, 0x00, 0x90, + 0x53, 0xB6, 0xC6, 0x84, 0x10, 0xA4, 0x92, 0x8F, 0xBD, 0x18, 0xBF, 0x27, + 0x38, 0xF5, 0xC5, 0x42, 0x50, 0x8C, 0xB9, 0x94, 0xA2, 0xB5, 0x12, 0x05, + 0x98, 0x82, 0x0E, 0x87, 0x80, 0x56, 0xEF, 0xC3, 0x84, 0xA0, 0x4D, 0x12, + 0xD1, 0x69, 0x84, 0x94, 0xC7, 0x60, 0x69, 0x44, 0xDE, 0xC2, 0x19, 0xAD, + 0x27, 0xBE, 0x0B, 0x0A, 0x39, 0x7D, 0x16, 0xC4, 0x03, 0x63, 0x16, 0x99, + 0x5D, 0x82, 0xD9, 0x7D, 0x13, 0x25, 0x68, 0xA5, 0x53, 0xCE, 0x28, 0x26, + 0x9B, 0x79, 0x22, 0x2A, 0x4C, 0x2B, 0xE3, 0xFC, 0xDB, 0x63, 0xD7, 0x73, + 0x60, 0x2B, 0x1C, 0x9F, 0xB7, 0x1C, 0x52, 0x2F, 0x0E, 0xE5, 0xE8, 0xB1, + 0x26, 0x1C, 0x6B, 0x10, 0x5B, 0x2E, 0x88, 0xC7, 0x07, 0xFA, 0x7A, 0xCB, + 0xC5, 0x30, 0x97, 0x38, 0x16, 0xB2, 0xAF, 0x0F, 0xAD, 0xD3, 0xCF, 0xAA, + 0xC7, 0xC6, 0x4B, 0x7C, 0xFD, 0x69, 0x9E, 0xD6, 0xF2, 0xAF, 0xB5, 0xB8, + 0x08, 0x02, 0x0F, 0x50, 0x17, 0xFF, 0x14, 0xAF, 0x32, 0x1F, 0x6B, 0x30, + 0x27, 0x0B, 0xA1, 0x80, 0x29, 0x68, 0x17, 0x40, 0x70, 0x62, 0xC8, 0x23, + 0x84, 0xCF, 0x99, 0x02, 0x00, 0x42, 0xA3, 0x2C, 0x82, 0x62, 0xCE, 0x20, + 0x84, 0x02, 0x49, 0x00, 0xF1, 0xA0, 0x6E, 0x22, 0x24, 0x9C, 0x58, 0x91, + 0x20, 0x04, 0xE5, 0xC4, 0x3B, 0x14, 0x79, 0xBF, 0x5A, 0x5F, 0xDF, 0xAE, + 0xAE, 0xEE, 0xF6, 0xBB, 0xA1, 0xDC, 0x3F, 0xAC, 0xBA, 0x6E, 0x98, 0xCF, + 0xE7, 0x75, 0x5D, 0x3F, 0x7F, 0x76, 0x69, 0x8C, 0x42, 0x21, 0xC6, 0x71, + 0xA8, 0xAD, 0x7E, 0x71, 0x79, 0xB6, 0x3C, 0x99, 0x23, 0x42, 0x2E, 0x65, + 0xF0, 0x71, 0xBD, 0x1B, 0x4A, 0x29, 0x46, 0x2B, 0x2B, 0x44, 0x65, 0x0D, + 0x00, 0xC4, 0x18, 0xF7, 0xDD, 0xA0, 0x94, 0xAC, 0xB5, 0xE2, 0x93, 0xA2, + 0x30, 0xD2, 0x9F, 0x4B, 0xCC, 0xC9, 0x87, 0x20, 0xA5, 0x34, 0xCE, 0x38, + 0x67, 0x41, 0xCA, 0xFB, 0xD5, 0x7A, 0xDE, 0x36, 0xA5, 0x50, 0x8C, 0x51, + 0xE2, 0x74, 0xB4, 0xD5, 0x95, 0x1D, 0xBD, 0x6F, 0xAA, 0x4A, 0x6B, 0x1D, + 0x62, 0x2C, 0xB9, 0xA8, 0x83, 0x87, 0x9C, 0x44, 0x04, 0xC0, 0x61, 0xF4, + 0x56, 0x2B, 0x67, 0x8C, 0x35, 0x5A, 0x21, 0x72, 0xD9, 0x22, 0x22, 0x90, + 0x8C, 0xC8, 0x62, 0x2E, 0x91, 0x55, 0x44, 0xD6, 0x98, 0xF5, 0x6E, 0x8F, + 0x24, 0xAC, 0x35, 0x7C, 0xB8, 0xF4, 0xFD, 0xC0, 0x74, 0x07, 0x89, 0x98, + 0x45, 0x16, 0x42, 0x18, 0xA3, 0x01, 0xA0, 0x50, 0x61, 0x91, 0xD0, 0xD4, + 0x45, 0x4E, 0x6F, 0x57, 0x41, 0x00, 0x3F, 0x7A, 0x9E, 0xD8, 0x89, 0x68, + 0xF4, 0x01, 0x00, 0x0F, 0xBA, 0x52, 0xC1, 0x84, 0x49, 0x3A, 0xEC, 0xB0, + 0x94, 0x92, 0xD6, 0x72, 0x59, 0x41, 0x91, 0x27, 0x4A, 0x07, 0x9F, 0xFF, + 0xC0, 0xE2, 0x53, 0x8E, 0x6D, 0x46, 0x14, 0x40, 0xCC, 0x53, 0x8D, 0x31, + 0x6A, 0x6D, 0x96, 0x8B, 0xF9, 0x8B, 0xCB, 0x73, 0x01, 0x62, 0xB9, 0x68, + 0xD9, 0x1C, 0x2D, 0xA7, 0x22, 0x11, 0x52, 0xCE, 0xD8, 0x56, 0x95, 0xB3, + 0x5C, 0x94, 0x8C, 0x94, 0x4A, 0x2B, 0x94, 0x90, 0x62, 0xA9, 0x9C, 0xF1, + 0xB5, 0x0B, 0x21, 0x29, 0x25, 0x95, 0x96, 0xCC, 0x82, 0x8E, 0x21, 0x5B, + 0xA5, 0x89, 0x94, 0x10, 0x07, 0x66, 0xB5, 0x10, 0x00, 0x42, 0xD1, 0xB4, + 0xDC, 0xE4, 0x3D, 0xDA, 0xC4, 0xDA, 0xCF, 0x79, 0xDF, 0xF5, 0xEB, 0xCD, + 0x2E, 0x84, 0x94, 0x4B, 0x09, 0x21, 0x16, 0x22, 0x4E, 0xD5, 0x74, 0xCE, + 0x08, 0x80, 0x31, 0x84, 0x14, 0x73, 0x4C, 0x29, 0xC6, 0xB8, 0xD9, 0xEE, + 0x72, 0x2E, 0x28, 0xB1, 0xF1, 0x55, 0xE5, 0x6C, 0xA1, 0x32, 0x8C, 0xE3, + 0xD9, 0xC9, 0xB2, 0xEB, 0x46, 0x57, 0x19, 0xA5, 0x65, 0x4A, 0xA8, 0xA4, + 0x1C, 0x86, 0x7E, 0x31, 0x6F, 0x1F, 0x36, 0xBB, 0x10, 0x53, 0xF0, 0xF1, + 0xF2, 0xE2, 0xE4, 0xE6, 0x76, 0xB5, 0xEF, 0x87, 0x1F, 0x7C, 0xEF, 0xC3, + 0xC5, 0xAC, 0xD9, 0xEE, 0xFB, 0xEB, 0x9B, 0x7B, 0xAD, 0x54, 0x4E, 0xA9, + 0xA9, 0x9C, 0x73, 0x96, 0x97, 0x9E, 0x88, 0xB2, 0xAE, 0x2D, 0xA2, 0x40, + 0x94, 0x44, 0x32, 0x04, 0x51, 0x26, 0xBE, 0x6E, 0x39, 0x9E, 0x8E, 0x8F, + 0xF7, 0xC5, 0x13, 0x09, 0x4A, 0x53, 0x57, 0xC7, 0xE1, 0xE8, 0x7B, 0xDF, + 0xFD, 0xE6, 0x27, 0x9F, 0xBE, 0x7A, 0x73, 0x75, 0x6D, 0x9D, 0x6D, 0xDB, + 0xBA, 0x9D, 0xD5, 0xDA, 0x68, 0xA5, 0xA4, 0x75, 0x86, 0x3B, 0xDF, 0x23, + 0x2E, 0x29, 0xA5, 0x24, 0x41, 0x2C, 0xDA, 0x53, 0x5A, 0x71, 0x3A, 0x3D, + 0x5F, 0xD2, 0xEC, 0xCD, 0x4D, 0x45, 0x10, 0xD1, 0x38, 0x8E, 0x88, 0xC0, + 0x4D, 0x1C, 0x97, 0x92, 0x98, 0x92, 0x20, 0xC1, 0x52, 0x33, 0x22, 0xC1, + 0x00, 0xE8, 0x91, 0x61, 0xAB, 0x25, 0x00, 0x30, 0xC2, 0x23, 0xD2, 0x21, + 0x8E, 0x93, 0x48, 0xA4, 0x9C, 0x33, 0x07, 0xD0, 0x95, 0x52, 0x4A, 0x61, + 0x55, 0x01, 0x80, 0xA0, 0x4C, 0xE5, 0xC0, 0xF2, 0x04, 0x40, 0x41, 0x54, + 0x10, 0xA5, 0x40, 0x12, 0xC4, 0x8B, 0xFF, 0xA7, 0xF9, 0x6E, 0x5C, 0xC2, + 0xF0, 0x70, 0x1D, 0x1E, 0xCA, 0x53, 0xF9, 0x5A, 0x8D, 0x2F, 0x87, 0x9A, + 0xFB, 0xD5, 0x59, 0xF2, 0x91, 0xBB, 0xC1, 0xB5, 0xE4, 0xD1, 0xC3, 0xFE, + 0xBF, 0x3C, 0x5A, 0x0A, 0x21, 0x84, 0xFC, 0x1F, 0xFE, 0xC7, 0xFF, 0xE9, + 0x58, 0x7A, 0xE0, 0x49, 0x1B, 0x25, 0x9E, 0x80, 0xEE, 0xD3, 0x9F, 0x00, + 0x47, 0x66, 0x06, 0xFF, 0xB7, 0x10, 0x13, 0x7E, 0xCC, 0x9D, 0x09, 0x1C, + 0xC2, 0x8B, 0xC4, 0x01, 0x8C, 0x07, 0x00, 0x79, 0xC8, 0x3B, 0x61, 0xDE, + 0xBF, 0x94, 0x92, 0x3D, 0x42, 0xAD, 0xB5, 0x7E, 0x0C, 0xBB, 0x7D, 0x57, + 0x72, 0x46, 0x9C, 0x0E, 0x61, 0x89, 0x28, 0x51, 0x1E, 0x18, 0x44, 0x02, + 0x01, 0x39, 0xCC, 0x86, 0xF5, 0x10, 0x88, 0xA8, 0x8D, 0xD2, 0x1A, 0x3F, + 0xFB, 0xEC, 0xCD, 0x2F, 0x7F, 0xFB, 0xBA, 0xF3, 0xE5, 0xED, 0xCD, 0xEA, + 0xDD, 0xCD, 0xFD, 0xBE, 0xEB, 0x17, 0xCB, 0x65, 0xD3, 0x34, 0x6F, 0xAF, + 0x6F, 0xD7, 0xEB, 0x6D, 0x49, 0x79, 0xDE, 0x56, 0x56, 0xCB, 0xC5, 0x62, + 0xF6, 0xEC, 0xF2, 0x0C, 0x51, 0xEE, 0xF6, 0xC3, 0x7A, 0xDB, 0xDF, 0xDE, + 0x6D, 0x56, 0x9B, 0x7D, 0x88, 0x49, 0x6B, 0xC9, 0xBD, 0x6C, 0xD7, 0xF5, + 0x31, 0x3E, 0x4A, 0xB2, 0x63, 0xCA, 0x24, 0x80, 0x8A, 0x48, 0x31, 0x87, + 0x18, 0x47, 0x1F, 0x46, 0x1F, 0x73, 0x21, 0xF6, 0x60, 0x92, 0x92, 0x7B, + 0x05, 0x99, 0x73, 0x6A, 0x5A, 0x97, 0x4B, 0xD9, 0xEE, 0x7A, 0x29, 0x71, + 0xD6, 0xD4, 0x4D, 0x5D, 0x49, 0x29, 0x07, 0x1F, 0xD8, 0xF9, 0x83, 0xA8, + 0x28, 0x25, 0x63, 0xCC, 0x1C, 0x1F, 0x1D, 0x62, 0x6C, 0x2A, 0x57, 0x59, + 0x03, 0xAC, 0x1F, 0x2A, 0x39, 0x67, 0x02, 0xC4, 0x9C, 0x73, 0xCA, 0x49, + 0x6B, 0xA5, 0xD5, 0x94, 0xAF, 0x93, 0x72, 0x1E, 0x43, 0xAC, 0x9D, 0x65, + 0x5B, 0x7D, 0xB6, 0xAB, 0x56, 0x0A, 0x8D, 0xD1, 0xFC, 0x11, 0x66, 0xA2, + 0xB6, 0x76, 0xFC, 0x29, 0x9D, 0xCC, 0x1A, 0x63, 0x54, 0x37, 0x8C, 0xD3, + 0x59, 0x07, 0x22, 0xA6, 0x1C, 0x63, 0x02, 0x80, 0xDA, 0xB9, 0x5C, 0x32, + 0x15, 0xE6, 0xE6, 0x09, 0x22, 0x62, 0x43, 0x15, 0xA5, 0x50, 0x2B, 0xC9, + 0x50, 0xB1, 0x35, 0x06, 0x04, 0x39, 0x6B, 0xFA, 0xBE, 0xCF, 0x39, 0x57, + 0xD6, 0xA6, 0x94, 0x38, 0x5A, 0xD6, 0x28, 0x85, 0x52, 0x92, 0x20, 0x25, + 0xA5, 0x96, 0xD2, 0x1A, 0x6D, 0x94, 0x74, 0xD6, 0x96, 0x92, 0x11, 0xE1, + 0xF2, 0xE2, 0xEC, 0xEC, 0x64, 0x7E, 0xB2, 0x9C, 0x9F, 0x9D, 0x2E, 0x97, + 0x8B, 0xB6, 0xAD, 0x2A, 0xAB, 0x75, 0x5D, 0x39, 0x6B, 0x94, 0x44, 0xE4, + 0x89, 0x75, 0x4A, 0x6F, 0x41, 0xC1, 0x47, 0x19, 0xDF, 0xDB, 0x29, 0x25, + 0x86, 0xF0, 0x58, 0x75, 0x10, 0x62, 0xF4, 0x63, 0xF0, 0x3E, 0x70, 0xF6, + 0x1A, 0x95, 0x29, 0x7A, 0x90, 0x2F, 0xCE, 0x69, 0x76, 0x28, 0x13, 0xF5, + 0x29, 0xA5, 0xEC, 0x7D, 0xD8, 0xEC, 0x3A, 0x1F, 0xE2, 0x6A, 0xBB, 0xBF, + 0x7B, 0x58, 0x6F, 0x76, 0xFB, 0xD1, 0x87, 0x9C, 0x0B, 0xE3, 0xAD, 0x6D, + 0x5B, 0x2F, 0x16, 0xF3, 0x61, 0xF0, 0xEB, 0xED, 0x4E, 0x08, 0xA1, 0x94, + 0xEC, 0xC7, 0x91, 0x48, 0x74, 0x5D, 0x1F, 0x53, 0xCA, 0xB9, 0xAC, 0x36, + 0x5B, 0x21, 0x88, 0x4D, 0x38, 0xB8, 0xBB, 0x31, 0x46, 0x87, 0x18, 0xEB, + 0xBA, 0xCA, 0xA5, 0xD4, 0x75, 0x75, 0x77, 0xBF, 0x9A, 0xCF, 0xDB, 0xC5, + 0x62, 0xF6, 0xE9, 0x67, 0xAF, 0x66, 0x6D, 0xF3, 0x67, 0x7F, 0xF2, 0xB7, + 0xEA, 0xCA, 0x2A, 0xA5, 0x38, 0x90, 0x8D, 0x84, 0x40, 0x04, 0x6B, 0xED, + 0x76, 0xD7, 0x69, 0x25, 0xAB, 0xCA, 0x4D, 0x10, 0x89, 0x10, 0x4A, 0x49, + 0x14, 0x82, 0x19, 0xFF, 0x5F, 0xBB, 0x83, 0xF8, 0x53, 0x7B, 0xAC, 0x65, + 0x87, 0x81, 0x88, 0x0F, 0xB9, 0x10, 0x53, 0x4A, 0xF9, 0xF9, 0xE5, 0xF9, + 0x72, 0x31, 0x3B, 0x3F, 0x5B, 0xD6, 0x95, 0x63, 0x2F, 0x39, 0xFE, 0x06, + 0xEE, 0xA1, 0xA4, 0x94, 0x39, 0xE5, 0xE0, 0x03, 0xCB, 0xBC, 0x84, 0x20, + 0x46, 0x4E, 0xB4, 0xD1, 0x6C, 0xAE, 0x85, 0x80, 0x85, 0x88, 0x4F, 0xA0, + 0x18, 0x63, 0xCE, 0x85, 0xCB, 0x59, 0x88, 0x31, 0xA6, 0x04, 0x20, 0x4A, + 0x21, 0x1F, 0xA3, 0x20, 0x06, 0x6A, 0x48, 0x69, 0xD9, 0x54, 0xD6, 0x68, + 0x75, 0xBC, 0xAF, 0x59, 0xD3, 0xC2, 0x15, 0x21, 0xA5, 0x34, 0xFA, 0x49, + 0xDB, 0x3B, 0x19, 0x06, 0xC8, 0x29, 0xD7, 0x95, 0x6D, 0x23, 0x00, 0x20, + 0x67, 0xF6, 0x07, 0xA4, 0x47, 0x68, 0x88, 0xFB, 0x98, 0xC7, 0x60, 0x0D, + 0xE2, 0xDF, 0xFC, 0xF0, 0x85, 0x52, 0x4A, 0x25, 0x51, 0x1F, 0x4D, 0x0A, + 0x0E, 0xF0, 0x68, 0x4E, 0x25, 0x4F, 0xD9, 0x69, 0xD3, 0xCF, 0x1D, 0xA7, + 0xC0, 0x63, 0xD1, 0x62, 0xEA, 0xD8, 0x63, 0x03, 0xF6, 0x58, 0xC8, 0xE0, + 0x48, 0xC8, 0x20, 0x22, 0x05, 0x07, 0x44, 0x0A, 0xE0, 0xF1, 0x09, 0xC4, + 0x57, 0xDB, 0xB1, 0xE9, 0xDA, 0x12, 0xC7, 0x42, 0xF5, 0x08, 0x87, 0x01, + 0xD0, 0x93, 0x6F, 0x9B, 0x8A, 0xE1, 0xD3, 0xA5, 0x24, 0x01, 0x4B, 0x97, + 0xA4, 0x94, 0x53, 0x21, 0xCB, 0x39, 0x4B, 0x04, 0x41, 0x74, 0xF5, 0xF6, + 0xEE, 0xE1, 0x61, 0x8B, 0x08, 0x4D, 0x6D, 0xCF, 0xCF, 0x16, 0xA7, 0xA7, + 0x4B, 0xEB, 0x2C, 0x1C, 0x5C, 0xAD, 0xB5, 0x06, 0x7D, 0xF8, 0x4D, 0x72, + 0x2E, 0x56, 0x83, 0xD2, 0xEA, 0xEA, 0xDD, 0xED, 0xE7, 0x5F, 0x5C, 0x5D, + 0xDD, 0xED, 0x3F, 0x79, 0x75, 0x33, 0xF8, 0x90, 0x49, 0x34, 0x75, 0x3D, + 0x84, 0xB8, 0xD9, 0xED, 0x86, 0x71, 0xAC, 0x9C, 0x5D, 0xAD, 0xD6, 0xBD, + 0x96, 0x20, 0xCE, 0x96, 0x8B, 0xC5, 0xC9, 0x72, 0xD1, 0x0F, 0xBE, 0xEB, + 0x86, 0xCF, 0xBF, 0xBC, 0xF9, 0xFC, 0xD5, 0x55, 0x5D, 0x55, 0x8B, 0xF9, + 0x6C, 0xB5, 0x5E, 0xAD, 0xDB, 0x5A, 0x02, 0x48, 0x84, 0x93, 0xD3, 0x05, + 0xBB, 0xF0, 0x16, 0x22, 0xC6, 0x89, 0x15, 0x41, 0x16, 0x25, 0x97, 0xCC, + 0x81, 0x5D, 0x63, 0x08, 0x39, 0xE6, 0x9C, 0x4B, 0x5D, 0x39, 0x00, 0x0C, + 0x31, 0xDF, 0xEE, 0xEF, 0x53, 0x4A, 0x61, 0x1F, 0x73, 0xE2, 0xD4, 0x4E, + 0x77, 0x7E, 0xBA, 0x8C, 0x29, 0xAF, 0x37, 0xDB, 0xDA, 0x59, 0xAB, 0x5B, + 0xBE, 0x56, 0x42, 0x88, 0xDE, 0x87, 0xDA, 0xB9, 0x92, 0xF3, 0xAC, 0xA9, + 0x25, 0x42, 0x8C, 0x91, 0x3F, 0xC5, 0x98, 0xB2, 0x44, 0x29, 0x88, 0x4A, + 0x2E, 0x7C, 0x38, 0x20, 0xA0, 0x35, 0x96, 0x25, 0xEA, 0x56, 0x6B, 0x25, + 0x55, 0xCE, 0x89, 0x49, 0x06, 0x52, 0xA2, 0x44, 0x74, 0x86, 0xED, 0x61, + 0x33, 0x22, 0x6E, 0x76, 0x1D, 0xE7, 0x2D, 0xC7, 0x94, 0x78, 0x33, 0x3C, + 0xFA, 0x60, 0x8C, 0xE1, 0x6B, 0x8B, 0x4F, 0xDD, 0x89, 0xF7, 0x2F, 0x91, + 0x59, 0x9D, 0x65, 0x72, 0x2E, 0x21, 0x04, 0xA8, 0x2B, 0x27, 0x04, 0x79, + 0xEF, 0x2B, 0xEB, 0xAE, 0xEF, 0x1F, 0x10, 0xA1, 0xA9, 0xA7, 0xA4, 0xB5, + 0xFD, 0x30, 0x02, 0x40, 0x53, 0x59, 0xA1, 0x00, 0x11, 0x72, 0xC8, 0xC4, + 0x2D, 0x12, 0xD1, 0xAC, 0x69, 0x51, 0x4A, 0x89, 0xB8, 0x98, 0xCF, 0xBE, + 0xF1, 0xE2, 0xD2, 0x55, 0x66, 0x3E, 0xAF, 0x67, 0x4D, 0x25, 0x51, 0x2A, + 0x25, 0x51, 0x42, 0x4E, 0x44, 0x24, 0x8C, 0x31, 0xA5, 0xE4, 0x7E, 0x08, + 0x29, 0x27, 0x29, 0x65, 0x26, 0x12, 0x25, 0xC9, 0x88, 0x52, 0x4A, 0xA5, + 0x55, 0xED, 0x5C, 0x3F, 0xFA, 0xE0, 0x23, 0x37, 0x2C, 0x39, 0x95, 0x14, + 0xD3, 0xFD, 0x6A, 0x5B, 0x39, 0xDB, 0xCE, 0x1A, 0xA3, 0x54, 0x29, 0x45, + 0x00, 0x2F, 0xC8, 0x80, 0x8B, 0x17, 0x08, 0xC1, 0x91, 0x05, 0xEC, 0x6D, + 0x97, 0x73, 0xD9, 0xEF, 0xFB, 0xDD, 0xBE, 0x1F, 0x46, 0xEF, 0x9C, 0xE3, + 0x51, 0x28, 0xC4, 0x20, 0x04, 0x2D, 0x97, 0x73, 0x00, 0xD1, 0x2F, 0x5A, + 0x57, 0xBB, 0xD7, 0xAF, 0xAF, 0x76, 0xFB, 0x2E, 0x97, 0xE9, 0x7D, 0xE8, + 0xFA, 0x21, 0x9A, 0x04, 0x20, 0x3E, 0xFD, 0xE2, 0x8D, 0x94, 0xB8, 0x98, + 0xB5, 0x31, 0x24, 0xE3, 0x0C, 0x02, 0xCC, 0xDA, 0xE6, 0xED, 0xBB, 0x9B, + 0x6F, 0x7F, 0xE7, 0x43, 0x96, 0x91, 0xED, 0xF6, 0xFB, 0x6F, 0xBE, 0xFF, + 0xF2, 0x4F, 0xFF, 0xE8, 0x07, 0xFB, 0xFD, 0xFE, 0x77, 0xBF, 0xFB, 0xEC, + 0x7B, 0xDF, 0xFB, 0xD6, 0xCD, 0xCD, 0xFD, 0x38, 0x8E, 0x31, 0xC4, 0xE5, + 0x72, 0x5E, 0x4A, 0x71, 0xD6, 0x2C, 0x66, 0x0D, 0x77, 0x43, 0x4C, 0xB8, + 0x61, 0x20, 0x1D, 0x10, 0xAC, 0xD5, 0xA5, 0x1C, 0x97, 0x89, 0xC0, 0xDB, + 0x92, 0x52, 0x26, 0xA2, 0x35, 0x93, 0xF2, 0x8F, 0x15, 0x8D, 0x1B, 0x52, + 0x63, 0xF4, 0xB7, 0x3F, 0xFC, 0x46, 0x55, 0x59, 0x5E, 0xB5, 0xA5, 0x9C, + 0x01, 0x80, 0x68, 0x62, 0x6F, 0xF1, 0x77, 0xA6, 0x98, 0x42, 0x0C, 0x39, + 0x4D, 0x0B, 0x99, 0x71, 0xF4, 0x8C, 0x6F, 0x96, 0x44, 0x39, 0x65, 0x29, + 0x11, 0x15, 0x08, 0x02, 0xAD, 0x15, 0x63, 0x85, 0x88, 0xE8, 0xBD, 0x17, + 0x42, 0xA4, 0x9C, 0x52, 0xCE, 0x54, 0x38, 0x9E, 0x1D, 0x53, 0x21, 0x40, + 0x74, 0x6C, 0x07, 0x8A, 0x70, 0xEC, 0x98, 0x0E, 0x45, 0x93, 0x4A, 0xA1, + 0x94, 0x52, 0x4E, 0x45, 0x94, 0xC2, 0x5D, 0x03, 0x11, 0x01, 0xA2, 0x94, + 0x68, 0x94, 0x94, 0x12, 0x33, 0xB3, 0xC8, 0x00, 0x8B, 0xA4, 0x42, 0x65, + 0x1A, 0x09, 0xA7, 0x82, 0x0B, 0x84, 0x53, 0x23, 0xF6, 0xB5, 0x61, 0x0E, + 0x0E, 0xD3, 0x80, 0xE4, 0x7F, 0x43, 0x40, 0xC4, 0x94, 0x4A, 0x29, 0x59, + 0xB0, 0xE1, 0x2D, 0x28, 0x1F, 0xC2, 0xA1, 0xBA, 0x89, 0x23, 0x94, 0xC6, + 0xE5, 0xF0, 0x38, 0x68, 0xFE, 0x67, 0x85, 0x8C, 0xBF, 0xE7, 0x71, 0x6F, + 0xAB, 0x10, 0x8E, 0xEB, 0xA3, 0x47, 0x5C, 0xEB, 0x50, 0x93, 0x04, 0x08, + 0xA0, 0x63, 0x0A, 0xDD, 0x93, 0xD5, 0xE1, 0xB1, 0x76, 0x3D, 0x3D, 0x6A, + 0x0E, 0x3C, 0xD8, 0xAF, 0xB4, 0x8F, 0x88, 0x72, 0xB7, 0xEF, 0x73, 0xCA, + 0xC6, 0xEA, 0xD9, 0xAC, 0x2E, 0x39, 0xDC, 0xDC, 0xDC, 0x2B, 0xA5, 0xC7, + 0x61, 0xF4, 0x31, 0xF3, 0xC7, 0x9C, 0x8B, 0x58, 0x6D, 0xFA, 0x5C, 0x68, + 0x36, 0xAB, 0xB5, 0xD6, 0xCE, 0x18, 0x6D, 0x4C, 0x29, 0x19, 0xC4, 0x04, + 0x2B, 0x56, 0xCE, 0x3E, 0xAC, 0xB7, 0x9F, 0x7C, 0xFC, 0xE9, 0x2F, 0x7F, + 0xF3, 0xFA, 0x66, 0x33, 0xEC, 0xBA, 0x51, 0x49, 0x79, 0x79, 0xF9, 0x6C, + 0xF4, 0x81, 0xA8, 0xD4, 0x75, 0x7D, 0xB2, 0x98, 0xBD, 0x7D, 0x7B, 0x1D, + 0xC6, 0xB1, 0xAD, 0xAA, 0x59, 0xDB, 0x66, 0xC2, 0x87, 0xCD, 0x3E, 0xA4, + 0x3C, 0x0C, 0xE3, 0xA7, 0x9F, 0xBD, 0x7E, 0x7D, 0x75, 0xB3, 0xEF, 0xFA, + 0xC5, 0xAC, 0xCD, 0x39, 0xB5, 0x6D, 0xBD, 0xDF, 0x75, 0x29, 0xC5, 0x3F, + 0xFC, 0xC1, 0x77, 0x88, 0xC8, 0x7B, 0xAF, 0xB5, 0x66, 0xB9, 0xB8, 0x56, + 0x2A, 0xC6, 0x44, 0x82, 0x52, 0x4E, 0xC3, 0x18, 0xB6, 0xBB, 0xCE, 0xFB, + 0xA8, 0x94, 0x2A, 0xB9, 0xC4, 0x94, 0x36, 0xDB, 0xDD, 0xDD, 0xDD, 0x6A, + 0xD7, 0xF5, 0x29, 0xE5, 0x93, 0xE5, 0xFC, 0x83, 0xEF, 0xBC, 0xAC, 0x2A, + 0x57, 0x57, 0x6E, 0x3E, 0x6F, 0xFA, 0x7E, 0xD8, 0xED, 0x7B, 0x3E, 0x0C, + 0x47, 0x1F, 0x46, 0x1F, 0xBC, 0x0F, 0xDF, 0xFD, 0xF6, 0x37, 0xC7, 0x61, + 0x58, 0xAD, 0x36, 0xFB, 0xAE, 0x0F, 0x31, 0x21, 0x1C, 0x50, 0x21, 0x10, + 0x3E, 0x78, 0xE7, 0x2C, 0x9F, 0x0A, 0x13, 0x07, 0x42, 0x10, 0xEF, 0x19, + 0x23, 0x07, 0xF0, 0xC8, 0x69, 0x8B, 0x4A, 0x00, 0x80, 0xC0, 0xFA, 0x3B, + 0x44, 0xE4, 0x66, 0x8D, 0x04, 0xF5, 0xA3, 0x3F, 0xD4, 0x44, 0xE4, 0x19, + 0x93, 0x90, 0xDD, 0xEF, 0xA8, 0xB2, 0x16, 0x00, 0xB4, 0x52, 0x7C, 0x20, + 0x83, 0x10, 0x45, 0x10, 0x77, 0x93, 0x39, 0x67, 0xEF, 0x43, 0x11, 0xA4, + 0x50, 0x32, 0x3A, 0x3D, 0x6B, 0xEB, 0x94, 0x92, 0xB3, 0xA6, 0xF7, 0x41, + 0x69, 0xD5, 0x38, 0x6B, 0x8D, 0x61, 0xD0, 0x42, 0x6B, 0xCD, 0xB7, 0x53, + 0x53, 0x39, 0x02, 0x31, 0xFA, 0xF1, 0xEC, 0x64, 0xF9, 0xEC, 0xD9, 0xD9, + 0xF9, 0xF9, 0x72, 0xB1, 0x68, 0x8C, 0x54, 0x88, 0x02, 0x25, 0x32, 0xD5, + 0x0E, 0x90, 0x10, 0x10, 0x89, 0xFC, 0x98, 0x00, 0x68, 0xBA, 0x7B, 0x89, + 0x63, 0xD9, 0x89, 0x6F, 0x9B, 0x94, 0xF3, 0x76, 0xBB, 0x0F, 0x29, 0xC9, + 0x03, 0x68, 0xED, 0x43, 0xDC, 0x77, 0x3D, 0x11, 0x19, 0x33, 0xD1, 0x44, + 0x00, 0x40, 0x40, 0xCC, 0xB9, 0x10, 0x95, 0x9C, 0x0B, 0xE7, 0x46, 0xE3, + 0x21, 0x3E, 0x34, 0x97, 0x5C, 0xA6, 0x2D, 0x27, 0x29, 0xA5, 0x72, 0x4E, + 0x1C, 0xA1, 0x06, 0x00, 0x9F, 0x7F, 0xF1, 0xE5, 0x62, 0x31, 0xAB, 0x2A, + 0x3B, 0x9B, 0x35, 0xE3, 0x38, 0xBE, 0x7D, 0x77, 0xC3, 0xCC, 0x7E, 0xAD, + 0x95, 0x0F, 0x7D, 0x37, 0x8C, 0x4D, 0xDD, 0xB4, 0x4D, 0xF5, 0xEB, 0xDF, + 0x7E, 0xFE, 0x9D, 0x0F, 0xDF, 0x3B, 0x3F, 0x3B, 0x01, 0x00, 0x57, 0x39, + 0xA5, 0x25, 0xCA, 0x67, 0xFB, 0xFD, 0x7E, 0x36, 0x6B, 0xAD, 0x96, 0x7A, + 0x31, 0x5B, 0xAF, 0x36, 0xDF, 0xFE, 0xF6, 0x07, 0x9B, 0xF5, 0xF6, 0xE1, + 0x61, 0x7D, 0x7D, 0x7D, 0xBB, 0x5C, 0xCE, 0xF9, 0x59, 0x52, 0x8C, 0xC6, + 0x9A, 0xCD, 0x76, 0x7B, 0x7E, 0x7E, 0x2A, 0x01, 0xB2, 0x10, 0xC0, 0x46, + 0x95, 0x40, 0x39, 0x97, 0x31, 0x44, 0x8E, 0xDD, 0x62, 0x4E, 0xB2, 0x10, + 0x13, 0xFB, 0x1F, 0x11, 0x63, 0x4C, 0x30, 0xE9, 0xBA, 0x94, 0xD6, 0x00, + 0x13, 0xBF, 0xA7, 0x20, 0xE2, 0x72, 0x39, 0x03, 0x01, 0x6C, 0xFA, 0xCA, + 0x66, 0xA2, 0x21, 0x44, 0xC6, 0x10, 0xF9, 0x45, 0xA5, 0x94, 0x48, 0x90, + 0xD6, 0x3A, 0xF8, 0x41, 0x4A, 0xCD, 0x5C, 0x93, 0xA9, 0x07, 0x94, 0xC2, + 0x4A, 0xA3, 0xF4, 0x94, 0x65, 0xEB, 0xC7, 0xB0, 0xDD, 0x6E, 0x05, 0x73, + 0xB0, 0x4B, 0xCE, 0xA5, 0xE4, 0x54, 0x48, 0x88, 0xE0, 0x47, 0x29, 0x51, + 0x2A, 0x94, 0x28, 0x6B, 0x6B, 0x58, 0x3D, 0x9E, 0x73, 0x66, 0xE9, 0xED, + 0xB1, 0x34, 0xF0, 0xF5, 0x1F, 0x53, 0x3E, 0x12, 0x6E, 0x78, 0x79, 0x80, + 0x70, 0x8C, 0x62, 0x93, 0x0E, 0x39, 0xD9, 0x9A, 0x72, 0x2E, 0xBC, 0x64, + 0xCE, 0x47, 0xBA, 0x3C, 0x30, 0xAB, 0xEC, 0x31, 0xEB, 0xE3, 0x58, 0x22, + 0x73, 0x3E, 0x02, 0x50, 0xC4, 0xD2, 0x1E, 0x21, 0x48, 0x4A, 0x00, 0x90, + 0x44, 0x84, 0x48, 0x14, 0x59, 0x69, 0xF7, 0x18, 0xCA, 0x45, 0x93, 0x82, + 0xE2, 0xB1, 0xA5, 0x3D, 0xCA, 0x16, 0x9F, 0xF4, 0x62, 0xE2, 0xE8, 0xA8, + 0x31, 0x15, 0x32, 0xF6, 0xA5, 0x79, 0xBA, 0x92, 0x9D, 0xCA, 0x16, 0x4C, + 0x0B, 0x72, 0xF8, 0x2F, 0xD5, 0xAF, 0xAF, 0x61, 0xFC, 0x38, 0xB5, 0x66, + 0xD3, 0xCF, 0x73, 0xE9, 0xE3, 0xB6, 0x72, 0x1C, 0xFD, 0xCD, 0xDD, 0x46, + 0x29, 0xA5, 0x7D, 0xBA, 0x5F, 0xED, 0xAD, 0x56, 0x25, 0xC3, 0x30, 0x0E, + 0x39, 0x97, 0x7D, 0x3F, 0xA6, 0x94, 0x51, 0x88, 0xC1, 0xC7, 0xA6, 0x76, + 0xC6, 0x68, 0x01, 0x03, 0x95, 0x0E, 0x88, 0x9E, 0xBF, 0xB8, 0x68, 0x67, + 0xB3, 0x18, 0xA2, 0xD3, 0x2A, 0xC6, 0xF8, 0x37, 0xBF, 0xFC, 0xE4, 0xE3, + 0x4F, 0xDE, 0xAC, 0xB6, 0xE3, 0xF5, 0xC3, 0x46, 0x1B, 0x5B, 0xD5, 0xD5, + 0x72, 0x31, 0xCF, 0xB9, 0x84, 0x18, 0x2B, 0xE7, 0x4E, 0xE6, 0x7A, 0xF5, + 0xB0, 0xA6, 0x52, 0x9A, 0xBA, 0x46, 0xC4, 0xA6, 0x69, 0x56, 0x9B, 0xED, + 0xEB, 0x37, 0x5F, 0x4A, 0x94, 0x39, 0x97, 0x9B, 0xBB, 0x15, 0x5B, 0xA7, + 0x8F, 0xE3, 0xC8, 0xB6, 0x70, 0x5F, 0xBC, 0x7E, 0x73, 0xB2, 0x98, 0x1F, + 0x48, 0x7F, 0x88, 0x87, 0x76, 0x29, 0xA4, 0x54, 0x88, 0x72, 0x2A, 0x21, + 0xA6, 0x74, 0x90, 0xB9, 0x0C, 0xA3, 0xE7, 0x17, 0xAC, 0xB5, 0x56, 0x5A, + 0x9D, 0x9D, 0x2E, 0x97, 0xB3, 0xF6, 0xD9, 0xB3, 0xF3, 0xDD, 0xBE, 0x7B, + 0x78, 0x58, 0xDD, 0xE4, 0xCC, 0x26, 0xBA, 0x5D, 0x3F, 0xF4, 0xE3, 0x08, + 0x02, 0x9C, 0xB3, 0x8C, 0xCA, 0xEF, 0xF7, 0x5D, 0xB7, 0xDF, 0x4B, 0x29, + 0x59, 0xB1, 0xC8, 0xCA, 0x41, 0x25, 0x65, 0x88, 0xF1, 0x58, 0x3A, 0x61, + 0x02, 0x44, 0x33, 0x5B, 0xA7, 0x1F, 0x97, 0xD0, 0x25, 0x53, 0x8C, 0x11, + 0x10, 0x73, 0x4C, 0x23, 0x00, 0x07, 0x61, 0xE4, 0x9C, 0x8D, 0xD6, 0x46, + 0x6B, 0x1F, 0x83, 0xB3, 0x06, 0xA5, 0xC4, 0x42, 0x5A, 0x21, 0x5F, 0x04, + 0xA5, 0x14, 0x2D, 0xE5, 0xE0, 0xBD, 0x91, 0x52, 0x08, 0x42, 0x10, 0x5A, + 0x4A, 0x6E, 0xFE, 0x9D, 0x35, 0x4C, 0x02, 0xD0, 0x4A, 0x8D, 0x3E, 0xF8, + 0x18, 0x1B, 0xE7, 0x86, 0xE2, 0xAD, 0xD1, 0x31, 0xA5, 0x61, 0x0C, 0xE0, + 0x44, 0x4A, 0x49, 0x21, 0x38, 0x6B, 0x38, 0xE0, 0x56, 0x49, 0x99, 0x92, + 0x2E, 0x54, 0x8C, 0x92, 0x85, 0x28, 0x84, 0x50, 0x39, 0x7B, 0x71, 0x7E, + 0x72, 0x71, 0xB6, 0xA8, 0x2A, 0xA3, 0x18, 0x5A, 0x98, 0x6C, 0xA0, 0x1F, + 0x31, 0xA0, 0x9C, 0x13, 0x4A, 0xE4, 0x05, 0x45, 0x26, 0x86, 0x44, 0x28, + 0x13, 0x89, 0x89, 0x7E, 0xCC, 0x0B, 0x3E, 0x8E, 0xA3, 0xA2, 0x18, 0xD3, + 0x30, 0x7A, 0x89, 0x28, 0x15, 0xE6, 0x5C, 0x62, 0x88, 0x39, 0xE5, 0x10, + 0x13, 0x11, 0x6D, 0xB6, 0xBB, 0xAE, 0x1F, 0x53, 0xCA, 0x8B, 0x45, 0x5B, + 0x57, 0x4E, 0x49, 0xA9, 0x94, 0xEC, 0xFB, 0xF1, 0xFE, 0x61, 0x73, 0x73, + 0xBB, 0x1A, 0xBD, 0x4F, 0x39, 0xDD, 0xDF, 0x3F, 0x30, 0x54, 0xA4, 0x94, + 0xF2, 0x21, 0xFA, 0x10, 0xB7, 0xBB, 0xFD, 0x7C, 0xD6, 0x02, 0x40, 0x5D, + 0x57, 0x3F, 0xFC, 0xA3, 0x1F, 0xBC, 0x7E, 0xFD, 0xF6, 0xFE, 0xFE, 0xA1, + 0xEB, 0x87, 0x42, 0xE4, 0x43, 0xF4, 0x61, 0x0D, 0x42, 0xC4, 0x10, 0x7F, + 0xF5, 0xDB, 0xCF, 0x5E, 0x3C, 0xDB, 0xFD, 0xED, 0x1F, 0x7E, 0x64, 0xAD, + 0x36, 0x46, 0xCF, 0x67, 0xED, 0x30, 0x8E, 0x4A, 0x29, 0xAD, 0xE4, 0x38, + 0xC6, 0x61, 0x1C, 0xC7, 0x7E, 0x38, 0x3D, 0x99, 0x2B, 0x89, 0xDD, 0xBE, + 0x73, 0x5A, 0xCD, 0x9A, 0x5A, 0x49, 0xB9, 0xEF, 0xFA, 0x13, 0xA3, 0x79, + 0x6D, 0x3D, 0x6F, 0x6B, 0x09, 0x53, 0x94, 0x19, 0x0A, 0x21, 0x10, 0x2A, + 0x6B, 0x4A, 0x61, 0x17, 0x99, 0x3C, 0xFA, 0x30, 0xA1, 0x7B, 0x82, 0xA4, + 0x54, 0x3C, 0x2A, 0x32, 0xEA, 0x24, 0x11, 0x98, 0xEC, 0x6D, 0x0C, 0xC7, + 0x0C, 0x8B, 0x5C, 0x4A, 0x8A, 0x69, 0xBF, 0xEB, 0x8C, 0xD5, 0x06, 0x55, + 0x4A, 0x49, 0x29, 0xC9, 0x5E, 0x66, 0x47, 0x07, 0xC0, 0x83, 0xC5, 0x6B, + 0x1A, 0x06, 0x0F, 0x00, 0xCE, 0x59, 0xCB, 0xEA, 0x54, 0x60, 0x21, 0x70, + 0x8E, 0x21, 0x5F, 0x5D, 0x5D, 0xA7, 0x9C, 0x6B, 0xE7, 0x0A, 0x95, 0x18, + 0x53, 0xDF, 0x8F, 0xC7, 0x4E, 0x50, 0x29, 0x9B, 0x52, 0x46, 0x05, 0x5A, + 0xA2, 0xB3, 0x9A, 0x3D, 0x9A, 0x52, 0x2E, 0xCC, 0x22, 0xA0, 0x3C, 0x35, + 0x95, 0x39, 0x67, 0x10, 0x42, 0x4A, 0x40, 0x40, 0x63, 0x94, 0x31, 0x8F, + 0x36, 0xCE, 0x52, 0x4A, 0x00, 0x7C, 0x42, 0xB6, 0x98, 0x96, 0x8C, 0x78, + 0x40, 0xAF, 0x78, 0xDF, 0x40, 0x07, 0x2E, 0x9B, 0xE0, 0xD2, 0x76, 0x58, + 0x2F, 0xF0, 0xED, 0xC3, 0xF9, 0x8C, 0xF0, 0x28, 0x30, 0x10, 0x44, 0xC0, + 0x4F, 0x6A, 0xB4, 0xE6, 0x47, 0xCD, 0xB9, 0x14, 0x0E, 0x18, 0x04, 0x36, + 0xAD, 0x98, 0xF0, 0x7A, 0x64, 0x0C, 0xF5, 0x91, 0x59, 0xF6, 0x95, 0x2A, + 0xC6, 0x7F, 0x4E, 0x32, 0xD1, 0xA7, 0xFF, 0xFA, 0xB4, 0xA1, 0x3A, 0xF4, + 0x5B, 0x5F, 0xEF, 0xC2, 0xC4, 0x13, 0x12, 0x05, 0x08, 0xE2, 0xB6, 0xED, + 0xE9, 0x28, 0x0A, 0x00, 0xDE, 0x47, 0xA2, 0x78, 0xF5, 0xEE, 0xFE, 0xDD, + 0xCD, 0xC3, 0x62, 0xDE, 0x7A, 0x1F, 0x72, 0xCA, 0x52, 0xE1, 0x37, 0xDE, + 0xBB, 0xCC, 0x5E, 0x0C, 0x3E, 0x22, 0xCA, 0x7E, 0xE8, 0x11, 0xB1, 0x02, + 0x8C, 0xA9, 0xEC, 0xF7, 0x03, 0x08, 0xD0, 0x46, 0x75, 0xFD, 0xF0, 0xD9, + 0x67, 0x5F, 0x9E, 0x9E, 0xCE, 0x3F, 0xF8, 0xE0, 0xBD, 0xAB, 0x77, 0x77, + 0xFF, 0xE1, 0xFF, 0xFB, 0xF5, 0xEB, 0xB7, 0xF7, 0x21, 0x96, 0xBB, 0xF5, + 0xB6, 0xA9, 0x6B, 0x76, 0x94, 0x16, 0x02, 0x4A, 0x2E, 0xEB, 0xF5, 0xE6, + 0x36, 0xDE, 0x0E, 0xDD, 0x60, 0x8C, 0xF6, 0x21, 0xE6, 0x94, 0x2E, 0xCE, + 0x4F, 0xFF, 0xFA, 0x3F, 0xFD, 0x6C, 0xB3, 0xD9, 0x4A, 0x29, 0x9D, 0xB5, + 0xAC, 0x31, 0xCA, 0xE3, 0x18, 0x43, 0xA9, 0xE7, 0x6D, 0xDB, 0x36, 0x54, + 0xCA, 0xF3, 0xCB, 0x8B, 0xCB, 0xCB, 0xD3, 0x98, 0x92, 0xCE, 0xBA, 0xAE, + 0x2B, 0x22, 0x4A, 0x31, 0x17, 0x11, 0x51, 0xC9, 0x92, 0xC5, 0xE8, 0x7D, + 0x4C, 0xB9, 0x94, 0x62, 0xAD, 0x01, 0xC4, 0x7D, 0x37, 0x28, 0xA5, 0x86, + 0x71, 0xDC, 0x6E, 0x36, 0x46, 0x4B, 0x00, 0xE8, 0xFA, 0xFE, 0x77, 0xBF, + 0xFB, 0x6C, 0xB5, 0xD9, 0x71, 0xF4, 0x06, 0x11, 0x71, 0xC3, 0x55, 0xD7, + 0x95, 0x10, 0x6C, 0x42, 0x99, 0xA5, 0x94, 0x77, 0xF7, 0x0F, 0x6D, 0x5D, + 0x31, 0xD0, 0x90, 0x12, 0xC5, 0x94, 0x46, 0x1F, 0xD8, 0x7A, 0x8C, 0xAB, + 0x95, 0xB3, 0x16, 0x00, 0xD8, 0x65, 0x21, 0xE5, 0x1C, 0x73, 0x66, 0xEE, + 0x98, 0x96, 0x32, 0x17, 0x92, 0x12, 0x8D, 0xD6, 0x60, 0x35, 0x8F, 0x30, + 0x31, 0x26, 0x29, 0x91, 0xA8, 0x8C, 0xDE, 0x17, 0x22, 0xAD, 0x75, 0x3F, + 0x8C, 0x31, 0x46, 0x21, 0x84, 0x35, 0x1A, 0x04, 0x94, 0x92, 0x25, 0xF2, + 0xF9, 0xCC, 0x4B, 0x06, 0x29, 0x04, 0x85, 0x90, 0x99, 0xB5, 0x20, 0xA5, + 0x34, 0x46, 0x1B, 0xAD, 0x52, 0x2E, 0x08, 0x18, 0x52, 0x72, 0x56, 0x6B, + 0x85, 0x5D, 0x3F, 0xFA, 0x90, 0x4A, 0x2E, 0x00, 0xA2, 0xAD, 0xAB, 0x52, + 0x4A, 0x4C, 0xD9, 0x68, 0x4D, 0xEC, 0xE5, 0x6F, 0xAC, 0x52, 0x12, 0x84, + 0x28, 0x85, 0xE6, 0xB3, 0x66, 0x39, 0x6F, 0x95, 0x62, 0x7E, 0x00, 0xA0, + 0x9C, 0xC8, 0x77, 0xD3, 0xC0, 0x00, 0x4C, 0xF5, 0x42, 0x63, 0x74, 0x10, + 0x02, 0x62, 0x52, 0x20, 0x32, 0x11, 0xA7, 0xFD, 0x92, 0x28, 0x25, 0x11, + 0x11, 0x69, 0xA3, 0x42, 0x08, 0x2C, 0xDD, 0x4D, 0x69, 0xF2, 0x05, 0xD3, + 0x5A, 0xC5, 0x94, 0xBC, 0x0F, 0x5C, 0x16, 0xBB, 0x7E, 0x78, 0x58, 0x6D, + 0x87, 0xD1, 0x4B, 0x89, 0x02, 0x05, 0x8F, 0x93, 0x29, 0x27, 0x22, 0xEA, + 0x3B, 0xDF, 0x0F, 0x03, 0x8F, 0x69, 0xB9, 0x64, 0x0E, 0x91, 0xCE, 0xB9, + 0x74, 0x5D, 0x77, 0x1C, 0xC4, 0xAC, 0x35, 0xDE, 0x87, 0x71, 0xF4, 0x17, + 0xE7, 0x27, 0x55, 0x65, 0xA5, 0xC2, 0xEB, 0x9B, 0x7B, 0x63, 0xCC, 0x6A, + 0xBD, 0xED, 0xBA, 0x9E, 0x6A, 0x5B, 0x55, 0xF6, 0xF7, 0x9F, 0xBF, 0x19, + 0x7C, 0xF8, 0x6F, 0xFE, 0xC5, 0x5F, 0x54, 0xD6, 0xAE, 0xD6, 0xDB, 0xD3, + 0xE5, 0x22, 0xE5, 0xEC, 0x7D, 0xC8, 0x39, 0x39, 0xA3, 0x4B, 0xC9, 0x80, + 0xC2, 0x58, 0x5D, 0x72, 0xEE, 0xF6, 0xFD, 0xF2, 0x64, 0x51, 0x3B, 0x8B, + 0x00, 0xC3, 0x30, 0x2E, 0x96, 0x0B, 0x2E, 0x31, 0x3C, 0xA1, 0x4D, 0x37, + 0x0E, 0x00, 0xF2, 0xAE, 0x57, 0x29, 0x89, 0x58, 0x59, 0xC3, 0xC6, 0xD0, + 0x0C, 0x81, 0xE5, 0x2C, 0xB4, 0x52, 0xA6, 0x72, 0x4A, 0x49, 0x00, 0x61, + 0xB4, 0x14, 0x02, 0x19, 0x14, 0x8A, 0x29, 0x0D, 0xA3, 0x4F, 0x89, 0x2D, + 0xAD, 0x8A, 0xA7, 0x38, 0x9F, 0x35, 0x52, 0xCA, 0x5C, 0x0A, 0xC3, 0xF3, + 0x44, 0x14, 0x63, 0x8C, 0x31, 0xD6, 0x4D, 0x1D, 0x7D, 0x98, 0xCF, 0x5B, + 0x76, 0xEC, 0x41, 0xC4, 0xA1, 0x1F, 0x8D, 0x35, 0x39, 0x07, 0xAD, 0xD4, + 0xBB, 0x77, 0x37, 0xBB, 0x5D, 0x67, 0xAD, 0xF5, 0x21, 0xE6, 0x92, 0xBB, + 0x6E, 0x30, 0x4A, 0xA7, 0x94, 0xD8, 0x19, 0x25, 0xC6, 0x4C, 0xA5, 0xA8, + 0x89, 0x74, 0xA9, 0x9D, 0x55, 0x1C, 0xE1, 0x8A, 0x12, 0x0E, 0xDD, 0xED, + 0x11, 0xA2, 0x2A, 0x12, 0xA4, 0x31, 0x4A, 0xA9, 0x49, 0x50, 0xC8, 0x9F, + 0xC8, 0xF1, 0x96, 0xA7, 0x23, 0xDB, 0x96, 0x44, 0x4A, 0x85, 0x55, 0x53, + 0xC4, 0x5E, 0x52, 0x02, 0x50, 0x88, 0xC8, 0xA3, 0x25, 0x3D, 0x99, 0xD5, + 0x9E, 0x16, 0x16, 0x5E, 0x41, 0x3E, 0x0D, 0xB8, 0x16, 0x93, 0xFD, 0x3C, + 0x00, 0x4C, 0x5C, 0xFD, 0xC3, 0x9A, 0x95, 0xDF, 0x13, 0x3A, 0x36, 0x58, + 0x24, 0x58, 0xF0, 0x4D, 0x07, 0xC4, 0x8C, 0x9E, 0x04, 0x5B, 0x12, 0x11, + 0xFC, 0xF4, 0x27, 0x3F, 0x7F, 0xF2, 0xFF, 0xA6, 0x49, 0x55, 0x1C, 0x46, + 0xD6, 0x23, 0xD9, 0x55, 0x4A, 0x2C, 0xB9, 0x30, 0xFF, 0x5D, 0x10, 0x1D, + 0x86, 0x62, 0x51, 0x26, 0xBD, 0xD1, 0x57, 0xBA, 0x36, 0x22, 0xD2, 0x5A, + 0xDE, 0xDC, 0xAC, 0x7F, 0xF7, 0xD9, 0xDB, 0xB6, 0xA9, 0xAC, 0x31, 0xC3, + 0xE8, 0x79, 0xC2, 0x12, 0x44, 0x1F, 0x7D, 0xF7, 0xFD, 0x93, 0xC5, 0xEC, + 0xD5, 0x9B, 0x6B, 0x00, 0x48, 0x29, 0x73, 0xE3, 0x3A, 0x0C, 0x5E, 0x90, + 0x60, 0x3B, 0x91, 0xB6, 0xAD, 0x6A, 0xE7, 0xD6, 0xDB, 0x5D, 0x28, 0xE5, + 0x8B, 0x37, 0xB7, 0xB7, 0xF7, 0xBB, 0x31, 0xF8, 0x94, 0x4A, 0x11, 0xC2, + 0x39, 0xA7, 0x24, 0x0A, 0x21, 0x86, 0x31, 0xF8, 0x61, 0xF0, 0xE3, 0x48, + 0x42, 0xD4, 0x4D, 0xE3, 0xC7, 0xB1, 0xEB, 0xFB, 0x10, 0x22, 0x15, 0xF2, + 0x21, 0x5A, 0x37, 0x25, 0x62, 0x71, 0x32, 0xD0, 0xDB, 0xB7, 0x37, 0x29, + 0x65, 0x57, 0x59, 0xAD, 0xE4, 0xF3, 0xCB, 0xF3, 0x3F, 0xF8, 0xE8, 0x5B, + 0x75, 0x6D, 0xB5, 0xD6, 0xF3, 0xB6, 0x96, 0x5A, 0x75, 0xDD, 0xC0, 0x71, + 0x1B, 0x24, 0xC8, 0x0F, 0x61, 0x08, 0x61, 0x1C, 0x03, 0xCF, 0xB9, 0x39, + 0x97, 0x92, 0x69, 0xB3, 0xDD, 0xFD, 0xFA, 0x37, 0x9F, 0x8C, 0xA3, 0xCF, + 0x24, 0x62, 0xCA, 0x78, 0x50, 0x14, 0xE4, 0x52, 0x62, 0xCA, 0x21, 0xA5, + 0x52, 0xC8, 0x6A, 0xDD, 0xD4, 0x15, 0x89, 0x89, 0x67, 0x9B, 0x4B, 0x19, + 0x87, 0xA1, 0xA9, 0x1C, 0x37, 0x7A, 0x56, 0x6B, 0x36, 0xDE, 0x91, 0x52, + 0xB1, 0x71, 0x33, 0x22, 0x56, 0xCE, 0x86, 0xC8, 0x6B, 0xB7, 0xE9, 0xEC, + 0xE2, 0x1E, 0x8D, 0x2B, 0x35, 0x4C, 0x15, 0x42, 0x00, 0x40, 0x2E, 0xC5, + 0xFB, 0xD8, 0xD4, 0xEE, 0xE2, 0x64, 0xB6, 0xD9, 0xED, 0xA5, 0x54, 0xC3, + 0xE8, 0x37, 0xFB, 0x9E, 0x3D, 0x70, 0x84, 0x10, 0x56, 0x29, 0xBE, 0x26, + 0xF6, 0xC3, 0x78, 0x3A, 0x9F, 0x91, 0x28, 0xFD, 0x18, 0x80, 0x45, 0xCF, + 0x07, 0x0E, 0xB7, 0x56, 0x32, 0xC4, 0x24, 0xC4, 0xB4, 0xA4, 0x6F, 0x1B, + 0x6B, 0xB5, 0xDC, 0xEC, 0x06, 0x76, 0xC4, 0x6C, 0x6A, 0x77, 0xBE, 0x5C, + 0xE4, 0x92, 0x8D, 0x36, 0xCB, 0xE5, 0x3C, 0xE7, 0xAC, 0x94, 0x6A, 0x9B, + 0xAA, 0xEB, 0x06, 0xAD, 0xE5, 0x72, 0x31, 0xAB, 0x2B, 0x7B, 0x71, 0x76, + 0xBA, 0x58, 0x34, 0x4D, 0xED, 0x8C, 0xD5, 0xEC, 0xB2, 0x70, 0x6C, 0xC7, + 0xF8, 0xB4, 0xA3, 0x52, 0x72, 0x2E, 0x3E, 0x44, 0x76, 0xB8, 0x0B, 0x21, + 0xC5, 0x9C, 0x40, 0x40, 0xCE, 0x14, 0x53, 0x64, 0xAE, 0x55, 0xDF, 0x0D, + 0xBC, 0x0B, 0x1E, 0x86, 0x61, 0x18, 0x3C, 0xA2, 0x54, 0x5A, 0x8E, 0xA3, + 0x8F, 0x21, 0x19, 0x63, 0x06, 0xEF, 0x3F, 0x7F, 0xF5, 0xA5, 0xD1, 0xBA, + 0x6D, 0xEA, 0xB6, 0xAD, 0xB4, 0xD2, 0xF7, 0xEB, 0x4D, 0xD7, 0x0F, 0xEB, + 0xF5, 0x36, 0xA5, 0xDC, 0x54, 0x4E, 0x29, 0x76, 0x5E, 0x2B, 0x27, 0x27, + 0x0B, 0xEF, 0xA3, 0x0F, 0x21, 0x71, 0xD2, 0x44, 0x2E, 0x5A, 0x2B, 0x00, + 0xE1, 0xAC, 0x53, 0x52, 0x56, 0x95, 0x63, 0xC6, 0x1C, 0x51, 0x89, 0x31, + 0x11, 0x51, 0xD7, 0x0D, 0x5D, 0x3F, 0x38, 0xE7, 0xEA, 0xDA, 0x52, 0xA1, + 0x94, 0x8B, 0xB5, 0xEA, 0xBF, 0xFB, 0x97, 0xFF, 0x54, 0x4A, 0x19, 0x42, + 0x38, 0x3D, 0x5D, 0x8C, 0x3E, 0x08, 0x12, 0xDB, 0xCD, 0xB6, 0xAE, 0x9C, + 0x98, 0x90, 0xD9, 0x1C, 0x42, 0x54, 0x4A, 0x5A, 0xE7, 0x38, 0x28, 0x0F, + 0xA5, 0x34, 0x5A, 0x1B, 0xA3, 0x9C, 0xB3, 0x28, 0x25, 0x53, 0xC5, 0xB8, + 0xC9, 0x52, 0x4F, 0x42, 0x4E, 0x85, 0x10, 0xEC, 0xC7, 0xC9, 0x07, 0xDD, + 0xE4, 0x6E, 0x25, 0x41, 0xE0, 0x14, 0x52, 0x16, 0x42, 0xF4, 0x21, 0xEC, + 0xBB, 0x0E, 0x04, 0x18, 0x63, 0xFB, 0x7D, 0xB7, 0x58, 0xCE, 0x85, 0x10, + 0x6D, 0x5D, 0x91, 0x10, 0x9B, 0xDD, 0x1E, 0x11, 0xB8, 0x6D, 0x5F, 0xAD, + 0xD6, 0x31, 0xA4, 0xAA, 0x76, 0x2C, 0x1F, 0x54, 0x52, 0xCD, 0xE6, 0xED, + 0x38, 0x8E, 0x21, 0xC4, 0xA1, 0xF7, 0x55, 0x6D, 0x57, 0xAB, 0xCD, 0xCD, + 0xCD, 0x3D, 0x22, 0xFA, 0x31, 0xA0, 0xC4, 0xDE, 0xFB, 0x8B, 0xF3, 0x53, + 0x09, 0xC8, 0xE9, 0x3C, 0x85, 0x0A, 0x02, 0xB4, 0x6D, 0x75, 0x76, 0xB2, + 0x5C, 0xCC, 0x9B, 0xA6, 0xAE, 0xF8, 0x28, 0x15, 0xC8, 0xE2, 0x81, 0x49, + 0xB3, 0x41, 0x44, 0x39, 0x4F, 0x4B, 0x52, 0xDE, 0x2C, 0xE1, 0x31, 0xCC, + 0xA1, 0x3C, 0xAE, 0x62, 0x0F, 0xDF, 0x3C, 0x79, 0x5E, 0x3D, 0xBD, 0xE5, + 0xF9, 0xCF, 0x03, 0x43, 0x8C, 0xE8, 0xAB, 0x46, 0x5B, 0x87, 0xB9, 0x6E, + 0x2A, 0x5E, 0xA5, 0x3C, 0x76, 0x5B, 0x44, 0x07, 0x1C, 0x8C, 0xA0, 0x7C, + 0x45, 0xF3, 0x48, 0xAC, 0x2C, 0xE4, 0xD2, 0x99, 0x26, 0x21, 0xC3, 0xD7, + 0xD5, 0x02, 0xE2, 0x38, 0x5A, 0x3A, 0xAB, 0xCA, 0x81, 0x91, 0x56, 0x0E, + 0x0F, 0x7A, 0x74, 0x20, 0x10, 0x42, 0xB0, 0xB7, 0xC1, 0xC7, 0xBF, 0x7B, + 0xF5, 0xE5, 0xDB, 0xFB, 0xEF, 0x7C, 0xF8, 0xB2, 0xA9, 0xDD, 0x72, 0x5E, + 0xB3, 0x2B, 0xF1, 0xB1, 0x28, 0x96, 0x03, 0x45, 0xED, 0xF0, 0x4B, 0x53, + 0x08, 0xE9, 0xF5, 0xD5, 0xDD, 0x6A, 0xB3, 0xEB, 0x47, 0xAF, 0x94, 0x54, + 0x88, 0x4C, 0x29, 0xD8, 0xEE, 0xBA, 0x5F, 0x7D, 0xFC, 0xF9, 0xC9, 0xA2, + 0xB9, 0xBC, 0x38, 0xAB, 0x6B, 0x37, 0x9B, 0x35, 0xDB, 0x5D, 0xF7, 0xEE, + 0xFA, 0x7E, 0xBB, 0xEF, 0x97, 0xF3, 0x96, 0x04, 0xA6, 0x22, 0x7A, 0x9F, + 0x6E, 0xEE, 0x6F, 0x5F, 0xBF, 0xBB, 0xBF, 0x7B, 0x58, 0x87, 0x98, 0x16, + 0xF3, 0x59, 0xE5, 0xDC, 0xE8, 0x03, 0x80, 0x44, 0x01, 0x37, 0x77, 0xF7, + 0x77, 0x77, 0x0F, 0x28, 0xA0, 0xA9, 0x6A, 0x96, 0xA9, 0x5E, 0xDF, 0x7C, + 0x11, 0x63, 0x7C, 0xFF, 0x1B, 0x2F, 0x25, 0xCA, 0x52, 0xCA, 0x87, 0x1F, + 0xBE, 0xDF, 0xB6, 0x6D, 0x4E, 0xD1, 0x8F, 0xE3, 0x6A, 0xB5, 0xEE, 0xFA, + 0x41, 0x08, 0xE1, 0x63, 0xD4, 0x56, 0x7F, 0xE3, 0xE2, 0xB2, 0x72, 0x36, + 0xA7, 0x94, 0x92, 0xB4, 0xD6, 0xCC, 0xE7, 0xCD, 0x30, 0x04, 0x63, 0x0C, + 0x6B, 0x6E, 0x86, 0x31, 0xAC, 0x77, 0xFB, 0x98, 0x98, 0xB1, 0x25, 0xCB, + 0x81, 0x25, 0x1C, 0x63, 0x52, 0x4A, 0x65, 0xF2, 0x63, 0x88, 0x29, 0x67, + 0xCB, 0x24, 0x34, 0x29, 0x79, 0x14, 0x2D, 0x24, 0x98, 0x63, 0xCD, 0xD5, + 0x27, 0x95, 0x8C, 0x02, 0x72, 0x4A, 0x4D, 0xED, 0x66, 0x4D, 0xBD, 0xEB, + 0x06, 0x9A, 0x70, 0x5C, 0xA1, 0x95, 0xEE, 0xFA, 0x21, 0xA6, 0x78, 0x7E, + 0x7A, 0xC2, 0x05, 0x28, 0x17, 0x9E, 0x7A, 0xE1, 0x70, 0xCE, 0x89, 0xC3, + 0x5A, 0x87, 0xB8, 0xAE, 0x65, 0x21, 0xB4, 0x92, 0xBC, 0x06, 0xDE, 0x75, + 0xBD, 0x20, 0x06, 0x7A, 0x33, 0x5F, 0x67, 0x42, 0x08, 0xA3, 0x35, 0xBB, + 0x7A, 0xB0, 0x86, 0xC5, 0x28, 0xD5, 0x8F, 0xA3, 0xD5, 0x9A, 0x05, 0xEA, + 0x88, 0xC0, 0x26, 0x30, 0x4A, 0xC9, 0x10, 0xB9, 0x92, 0x4A, 0x44, 0x90, + 0x12, 0xF8, 0x7A, 0x02, 0x14, 0x95, 0xB3, 0xF3, 0x83, 0x32, 0xC6, 0x5A, + 0x53, 0x57, 0xEE, 0xF9, 0xE5, 0xA9, 0x44, 0x59, 0x4A, 0x66, 0x12, 0x69, + 0xDF, 0x8F, 0xD6, 0xE8, 0xB3, 0xD3, 0x45, 0x3B, 0xAB, 0x2A, 0x67, 0x8D, + 0xD1, 0xDC, 0xFA, 0x3D, 0xBD, 0xCA, 0xA7, 0xB2, 0x8B, 0x12, 0x04, 0x80, + 0x83, 0x18, 0x91, 0xB5, 0x7B, 0x29, 0x67, 0xE2, 0x89, 0x42, 0x50, 0x8A, + 0x99, 0x6B, 0x8A, 0x10, 0x22, 0xE5, 0x2C, 0x00, 0x94, 0x91, 0x25, 0x89, + 0x14, 0x79, 0xF5, 0x26, 0xAE, 0xEF, 0x56, 0xF7, 0x0F, 0x0F, 0xFD, 0x30, + 0xA8, 0xD9, 0x4C, 0x1B, 0x15, 0x53, 0x7E, 0x7B, 0x7D, 0xBF, 0xDB, 0xEF, + 0x43, 0x48, 0x29, 0xA5, 0x98, 0xF3, 0xBE, 0xEB, 0x9E, 0x9F, 0x9F, 0xD5, + 0xCE, 0x9D, 0x9C, 0x2E, 0xD6, 0x9B, 0xDD, 0xFD, 0x6A, 0x95, 0x73, 0xD1, + 0x4A, 0x02, 0xC8, 0x22, 0xC4, 0xAE, 0x1F, 0x40, 0x88, 0xD1, 0x47, 0x04, + 0x28, 0x0F, 0x0F, 0x5A, 0x6B, 0x25, 0xA5, 0xD6, 0xAA, 0xAE, 0xAB, 0xB3, + 0x93, 0x13, 0x10, 0x42, 0x4A, 0xEC, 0x86, 0xF1, 0xED, 0xF5, 0xAE, 0xAA, + 0xDC, 0xE9, 0xC9, 0xF2, 0xF6, 0x6E, 0xF5, 0xBF, 0xFC, 0x6F, 0xFF, 0xF6, + 0xBF, 0xFD, 0x97, 0x7F, 0x61, 0xB4, 0xDA, 0xED, 0xFB, 0xAE, 0xEB, 0x96, + 0xF3, 0xF9, 0x7C, 0xD6, 0x0E, 0xC3, 0x40, 0x44, 0x5A, 0xEB, 0xAA, 0x72, + 0xD6, 0xD9, 0x71, 0x18, 0xF9, 0x36, 0x15, 0x44, 0x25, 0xC6, 0x82, 0x28, + 0x48, 0x96, 0xCC, 0x58, 0xB5, 0x14, 0x42, 0x00, 0x51, 0x8C, 0x89, 0xE4, + 0xA4, 0x0F, 0x2B, 0xA5, 0x94, 0xCC, 0xE2, 0x65, 0x22, 0x41, 0x53, 0x11, + 0x10, 0x44, 0x04, 0xA2, 0x08, 0x22, 0x12, 0x2C, 0x6B, 0xCD, 0x45, 0x49, + 0xC5, 0x79, 0x74, 0x6D, 0xED, 0x2A, 0x6B, 0x89, 0x28, 0x95, 0x3C, 0x86, + 0xC0, 0x39, 0x7E, 0xA5, 0x14, 0xCE, 0x15, 0x6F, 0x67, 0x4D, 0xE5, 0x6C, + 0xDF, 0x0D, 0xC6, 0x68, 0xEB, 0xCC, 0x76, 0xBB, 0x2D, 0x85, 0x62, 0x48, + 0xDE, 0xFB, 0xED, 0x76, 0xF7, 0xF6, 0xDD, 0xAD, 0x00, 0x11, 0x63, 0x26, + 0x12, 0x3E, 0x84, 0x98, 0xD3, 0xCB, 0xE7, 0xCF, 0x5E, 0xBF, 0x79, 0xCB, + 0xAD, 0xB4, 0x0F, 0xA1, 0xA9, 0xDD, 0xC9, 0x62, 0x7E, 0xB2, 0x9C, 0x31, + 0xF7, 0x98, 0x1D, 0xAB, 0x44, 0x81, 0x23, 0x80, 0xCE, 0x97, 0x1C, 0x33, + 0x0A, 0x79, 0x60, 0x9D, 0xDA, 0xB3, 0xA3, 0x58, 0xEA, 0xB1, 0x11, 0x2B, + 0xBC, 0x16, 0x78, 0x5A, 0x4D, 0x8E, 0x05, 0x05, 0x11, 0x15, 0xF2, 0x26, + 0x91, 0x8D, 0xBA, 0xBE, 0x2A, 0xAB, 0x14, 0x05, 0x0E, 0x6D, 0x19, 0x3D, + 0x79, 0x00, 0x16, 0x24, 0x30, 0x8C, 0x58, 0xBE, 0x4A, 0x8B, 0x65, 0xA2, + 0x82, 0x10, 0x8F, 0x19, 0xAC, 0x5C, 0x60, 0x8E, 0xF5, 0xEB, 0x49, 0x35, + 0x14, 0x4A, 0x49, 0x29, 0x70, 0xEA, 0xDF, 0x0A, 0x89, 0x42, 0x7C, 0x92, + 0x70, 0x97, 0x25, 0xB4, 0x52, 0x6F, 0xAE, 0x6E, 0x4B, 0xA1, 0x4F, 0x3F, + 0xBF, 0xBE, 0x7B, 0xD8, 0xAC, 0xB7, 0xDD, 0xF7, 0xBE, 0xF5, 0x32, 0xA4, + 0xE4, 0x8C, 0x9A, 0xB5, 0xB5, 0x56, 0x92, 0x61, 0x0E, 0xE7, 0xCC, 0x71, + 0x0F, 0x4A, 0x44, 0x52, 0x62, 0xD7, 0x8F, 0xEB, 0x5D, 0xBF, 0x58, 0xCC, + 0x2A, 0x67, 0x2F, 0xCE, 0x16, 0xA7, 0x27, 0x73, 0x40, 0xB4, 0xD6, 0xEC, + 0x76, 0xDD, 0xEF, 0x3F, 0xFB, 0xB2, 0x1F, 0xC6, 0xBA, 0xA9, 0xAC, 0x33, + 0x85, 0x4A, 0x55, 0xBB, 0x97, 0x2F, 0x2E, 0xBE, 0xE5, 0x4C, 0x53, 0x3B, + 0x6B, 0xCD, 0x6F, 0x3E, 0x79, 0xFD, 0x93, 0x5F, 0x7C, 0xB2, 0xDB, 0xF5, + 0x9C, 0xAE, 0x38, 0x6F, 0xDB, 0x92, 0xF3, 0x6E, 0xDF, 0x57, 0x95, 0x93, + 0x5A, 0x6F, 0xD6, 0x9B, 0xCD, 0xC3, 0x26, 0xF9, 0xC8, 0x73, 0x59, 0xCE, + 0xE9, 0xEE, 0x61, 0xD5, 0xED, 0xF6, 0xF3, 0xB6, 0xD9, 0x6D, 0xF7, 0xDA, + 0x18, 0x00, 0xD8, 0x6E, 0x77, 0xAB, 0xD5, 0x7A, 0x75, 0xB8, 0x94, 0x67, + 0x6D, 0x0B, 0x00, 0x95, 0xB3, 0x2F, 0x5E, 0x5C, 0x9C, 0xB4, 0xEE, 0x1B, + 0x1F, 0xBC, 0xFF, 0xC9, 0x6F, 0x7E, 0x45, 0xA5, 0xFC, 0xE3, 0x7F, 0xFA, + 0x4F, 0x86, 0xC1, 0x0B, 0x00, 0xA9, 0x64, 0x4A, 0x29, 0xC6, 0xFC, 0xB0, + 0xDA, 0x6C, 0x77, 0x9D, 0x73, 0x8E, 0xBD, 0xC8, 0x38, 0xC1, 0x60, 0xB3, + 0xDE, 0xDD, 0x3D, 0xAC, 0x56, 0xDB, 0xFD, 0xE8, 0x43, 0x21, 0x91, 0x72, + 0x76, 0xC6, 0x20, 0x80, 0xF7, 0x61, 0xF0, 0x81, 0x49, 0x28, 0x29, 0xC5, + 0xDA, 0xD9, 0x94, 0x59, 0xF5, 0x9D, 0x8D, 0x92, 0xA3, 0x0F, 0xCE, 0x36, + 0x6C, 0x83, 0x63, 0xB4, 0x7A, 0xF1, 0xFC, 0xA2, 0xAE, 0xAA, 0x77, 0x37, + 0x77, 0x3F, 0xF8, 0xE8, 0xC3, 0x67, 0x17, 0x67, 0x44, 0x24, 0xA5, 0x0A, + 0x21, 0xA6, 0x92, 0xBF, 0x78, 0xF5, 0xE5, 0xCD, 0xDD, 0xC3, 0x30, 0xF8, + 0x03, 0x17, 0x89, 0xD8, 0x5E, 0x5C, 0x6B, 0xE5, 0x43, 0x36, 0x4A, 0x93, + 0x10, 0x29, 0xA5, 0x18, 0x23, 0x4A, 0xDC, 0x0D, 0x5E, 0xCB, 0x1C, 0x53, + 0x9C, 0x35, 0x95, 0x92, 0xE8, 0x43, 0x1C, 0x7D, 0xA8, 0xAC, 0x66, 0x96, + 0x90, 0xD6, 0x2A, 0x95, 0x52, 0x59, 0x23, 0x51, 0x76, 0xFD, 0x20, 0xB8, + 0xB2, 0x00, 0x18, 0x2D, 0xA5, 0xC4, 0x61, 0xCC, 0x56, 0x6B, 0x44, 0xC8, + 0x53, 0x64, 0x74, 0x40, 0xAB, 0x2A, 0x6B, 0x06, 0x9F, 0x4A, 0x21, 0x66, + 0x96, 0xE7, 0x52, 0x4E, 0x16, 0xF3, 0x59, 0x53, 0x1B, 0xA3, 0x25, 0x42, + 0x4C, 0xA9, 0x72, 0x26, 0xC6, 0x34, 0x9B, 0x35, 0xEC, 0xEC, 0x62, 0x8D, + 0xE6, 0xB9, 0x63, 0x42, 0x55, 0x1E, 0xF9, 0x04, 0xD3, 0xD5, 0x0A, 0x00, + 0x50, 0xA6, 0xBD, 0x9B, 0x36, 0x8A, 0x23, 0x9D, 0xA4, 0x04, 0x4C, 0x98, + 0x4B, 0xE2, 0x84, 0x4A, 0x3A, 0xAC, 0xB7, 0x10, 0x10, 0x14, 0x11, 0x89, + 0x10, 0xF3, 0x6A, 0xB3, 0x59, 0x6F, 0xF6, 0x44, 0xC4, 0xA8, 0xE2, 0x6E, + 0xDF, 0xA5, 0x98, 0x86, 0x61, 0xA8, 0x9C, 0x65, 0x4D, 0xD4, 0x69, 0xDB, + 0xEC, 0xF6, 0xDD, 0xC9, 0xC9, 0xFC, 0x87, 0x7F, 0xF8, 0xFD, 0x61, 0x18, + 0xFB, 0x7E, 0xB0, 0xD6, 0x18, 0xAD, 0xB7, 0xFB, 0x2E, 0xA7, 0x88, 0x92, + 0x13, 0xAD, 0xF2, 0x18, 0x82, 0xD3, 0x7A, 0xD6, 0x54, 0xCE, 0xB9, 0xAE, + 0x1F, 0x42, 0xCE, 0x0F, 0x9B, 0xED, 0xAB, 0x2F, 0xDF, 0x21, 0xC0, 0x1F, + 0xFF, 0xD1, 0xF7, 0x2F, 0x2F, 0xCF, 0xFE, 0xDD, 0x5F, 0xFE, 0x68, 0xB3, + 0xDD, 0x8D, 0x63, 0xB0, 0xCE, 0xDC, 0xDC, 0x3D, 0xFC, 0xE5, 0x5F, 0xFD, + 0xCD, 0x3F, 0xFD, 0x47, 0x7F, 0x2A, 0x88, 0x4E, 0x96, 0x8B, 0xFB, 0x87, + 0xD5, 0xCB, 0xE7, 0x97, 0x23, 0x0B, 0x33, 0x72, 0xC9, 0xA5, 0xD4, 0xB5, + 0x93, 0x12, 0x05, 0x09, 0xA9, 0xB0, 0xEF, 0x26, 0xC1, 0x06, 0x6F, 0x25, + 0xE4, 0xC4, 0x14, 0x11, 0x46, 0x2B, 0xDE, 0x03, 0x3E, 0xC1, 0x64, 0x48, + 0x10, 0x1B, 0xAB, 0x10, 0x6F, 0x75, 0x41, 0x4C, 0xB4, 0x55, 0x85, 0x00, + 0x00, 0xD2, 0xEA, 0xCA, 0x6A, 0xE6, 0x55, 0x12, 0x51, 0x8A, 0x25, 0xA4, + 0xC4, 0xEC, 0x04, 0x89, 0xC8, 0x86, 0x9A, 0x39, 0xE5, 0x94, 0xD2, 0xF9, + 0xF9, 0x89, 0xB1, 0xBA, 0xE4, 0x62, 0x34, 0xF3, 0xB4, 0x19, 0x54, 0xC9, + 0xEC, 0xFC, 0xF3, 0xEB, 0x8F, 0x3F, 0x8D, 0x31, 0xA6, 0xC2, 0xA2, 0x72, + 0x31, 0x8C, 0xBE, 0xAE, 0xDD, 0xEB, 0x2F, 0xDF, 0xEE, 0xBB, 0xBE, 0xAE, + 0x5D, 0x65, 0xED, 0xD9, 0xC9, 0xA2, 0xA9, 0x9D, 0x35, 0xFA, 0xE8, 0x40, + 0x73, 0xDC, 0xF4, 0x89, 0x47, 0x83, 0xB3, 0xC7, 0x71, 0xEA, 0x38, 0x90, + 0x1D, 0xFB, 0xA6, 0xA7, 0x44, 0xFC, 0xC3, 0xD7, 0x53, 0xF0, 0x89, 0x51, + 0xB1, 0xE9, 0x13, 0xE7, 0x4C, 0x6D, 0x22, 0x2A, 0x70, 0xE0, 0x77, 0x1D, + 0x1E, 0x8A, 0x41, 0x2D, 0x38, 0x08, 0x11, 0x88, 0x0E, 0x4A, 0x6E, 0x6E, + 0xA2, 0x00, 0x8E, 0x3A, 0xAA, 0xA7, 0x4F, 0x44, 0x47, 0x1A, 0x0A, 0x62, + 0x39, 0xC4, 0x33, 0x72, 0x7F, 0x87, 0xF8, 0x94, 0x68, 0x91, 0x79, 0x76, + 0x9E, 0x6C, 0x1B, 0xA5, 0x10, 0x85, 0x30, 0xE5, 0x2C, 0xE5, 0x54, 0xA1, + 0x57, 0xEB, 0xDD, 0x2F, 0x7F, 0xFB, 0x4A, 0xA1, 0x64, 0xFD, 0xE0, 0xE0, + 0xE3, 0xD5, 0xF5, 0xCA, 0x18, 0xA3, 0x4F, 0x66, 0x77, 0x0F, 0x3B, 0x63, + 0x14, 0xDB, 0x2B, 0x02, 0x4A, 0x22, 0xDE, 0x31, 0x01, 0x09, 0xB2, 0x46, + 0x6D, 0xB6, 0x7D, 0x3F, 0x78, 0x6B, 0x8D, 0x44, 0xBC, 0xBF, 0x5F, 0x3B, + 0x6B, 0xAC, 0x35, 0x7E, 0x1C, 0xAB, 0xCA, 0xFD, 0xE9, 0x1F, 0x7F, 0x34, + 0xFA, 0x50, 0xA8, 0xEC, 0x76, 0xBD, 0x10, 0xA2, 0x6D, 0xEA, 0x17, 0xCF, + 0xCF, 0x53, 0x4E, 0xEF, 0x6E, 0x1E, 0x3E, 0x7B, 0x75, 0xFD, 0xEB, 0x4F, + 0x5E, 0xAD, 0x37, 0x5D, 0xF0, 0xFE, 0xE5, 0xB3, 0x0B, 0x3E, 0x97, 0x88, + 0xA8, 0xAE, 0x5C, 0x88, 0xE9, 0xE1, 0x7E, 0xCD, 0xE7, 0x7C, 0x5D, 0x39, + 0xA5, 0x54, 0x5D, 0xDB, 0xFB, 0x2F, 0xEF, 0xFD, 0x38, 0x5E, 0x9C, 0x9F, + 0x56, 0x95, 0xAB, 0xAB, 0xAA, 0xA9, 0x2B, 0x1F, 0xC2, 0x30, 0x0C, 0xBB, + 0xED, 0xAE, 0x6D, 0xEA, 0x6F, 0xBE, 0xFF, 0x72, 0xD6, 0x36, 0xCB, 0xE5, + 0x4C, 0x08, 0x31, 0x9F, 0x55, 0x6D, 0xD3, 0x7C, 0xF1, 0xC5, 0x17, 0xBF, + 0xFD, 0xF9, 0x4F, 0xAA, 0xB6, 0xFE, 0xF1, 0x8F, 0x7E, 0xF2, 0x0F, 0xFF, + 0xFC, 0x2F, 0xB6, 0x63, 0x8F, 0x88, 0xDE, 0x07, 0x1F, 0xE2, 0xFD, 0xC3, + 0xA6, 0xEB, 0xC7, 0xD9, 0xAC, 0xA9, 0x9B, 0xBA, 0xEF, 0x06, 0x36, 0x08, + 0xCC, 0x39, 0xDF, 0xAF, 0x36, 0xD7, 0xB7, 0x0F, 0x25, 0x97, 0x61, 0x0C, + 0x8B, 0x79, 0x6B, 0x75, 0xE3, 0x43, 0x00, 0x9C, 0xDA, 0x28, 0x44, 0x92, + 0x08, 0xB5, 0xAB, 0x49, 0x88, 0x98, 0x92, 0x96, 0x32, 0xA5, 0x68, 0x94, + 0x14, 0x40, 0x21, 0x44, 0x67, 0x74, 0xD3, 0x34, 0x82, 0xE8, 0xF9, 0xC5, + 0xA9, 0x20, 0x11, 0x17, 0xB3, 0x45, 0x5B, 0xBF, 0x7B, 0x77, 0xF3, 0xEA, + 0xF5, 0xD5, 0xD9, 0xD9, 0xA9, 0x73, 0x56, 0x2A, 0x35, 0x9B, 0xB5, 0x75, + 0x5D, 0x33, 0xE0, 0xC5, 0x44, 0x9E, 0x61, 0x1C, 0x53, 0x9E, 0x3E, 0x18, + 0x51, 0x88, 0xDD, 0x7E, 0x78, 0xA9, 0x6A, 0x8C, 0x61, 0xBB, 0x47, 0xA3, + 0xD5, 0xBE, 0xEB, 0x11, 0xD1, 0x68, 0x1D, 0x62, 0xAA, 0x9C, 0x61, 0x04, + 0x23, 0xA5, 0x3C, 0x8A, 0x64, 0xB5, 0xD0, 0x46, 0x39, 0x63, 0xA4, 0x52, + 0x31, 0xA5, 0x83, 0xE3, 0x2B, 0x0A, 0x41, 0x2C, 0x7F, 0x01, 0x00, 0x2A, + 0x59, 0x49, 0x95, 0xA9, 0x78, 0x1F, 0xF8, 0xB0, 0x3D, 0x88, 0xC6, 0x4B, + 0x08, 0xC1, 0x39, 0xD3, 0xB4, 0x35, 0x51, 0x19, 0x87, 0x00, 0x08, 0xCB, + 0xC5, 0xAC, 0x76, 0x56, 0x1B, 0xC5, 0xA1, 0x33, 0xC7, 0x7B, 0xE0, 0x38, + 0x05, 0x3C, 0xAE, 0x99, 0x88, 0xB2, 0x98, 0xF2, 0x3D, 0x01, 0x84, 0x0E, + 0x29, 0xE7, 0xCC, 0x69, 0x0B, 0xC6, 0x18, 0x22, 0xD1, 0x75, 0x43, 0x3E, + 0x24, 0x01, 0x4A, 0x29, 0x73, 0x4E, 0x82, 0x28, 0xC5, 0x94, 0x0B, 0x21, + 0x42, 0xCE, 0x64, 0xAD, 0x45, 0x80, 0xD5, 0x6A, 0x53, 0xD7, 0x55, 0xD3, + 0xD4, 0xC3, 0x30, 0xCE, 0xDA, 0x06, 0x25, 0x32, 0x34, 0xFE, 0xB0, 0xDA, + 0xFE, 0xF8, 0x27, 0xBF, 0x5C, 0x2E, 0x67, 0xB3, 0xB6, 0x8E, 0x29, 0x85, + 0x98, 0xA4, 0x52, 0x5D, 0xBF, 0x13, 0x00, 0x54, 0x0A, 0x9B, 0xD2, 0x54, + 0xCE, 0x59, 0x63, 0x88, 0x28, 0xA6, 0xD4, 0x0D, 0xA3, 0x9A, 0xD0, 0x52, + 0xFC, 0xC9, 0xCF, 0x3F, 0x3E, 0x59, 0xCC, 0x25, 0xB2, 0xED, 0x4F, 0xE1, + 0x69, 0xF4, 0xE7, 0xBF, 0xFE, 0xE4, 0xF2, 0xE2, 0xE4, 0x9F, 0xFD, 0xE3, + 0x3F, 0x0B, 0x21, 0x29, 0x94, 0xEB, 0xD5, 0xE6, 0xE4, 0x64, 0xB1, 0xDF, + 0xF7, 0x88, 0xC0, 0x9B, 0xA0, 0xA6, 0xA9, 0x69, 0xE2, 0x82, 0x61, 0xDF, + 0x0D, 0x4A, 0xA1, 0xB3, 0x1A, 0x51, 0x72, 0xE7, 0x72, 0x9C, 0x92, 0x8E, + 0x37, 0x37, 0x22, 0xB2, 0xDF, 0x30, 0x63, 0x20, 0x93, 0x1F, 0x11, 0xC0, + 0xF1, 0x1D, 0x2B, 0x85, 0x24, 0x62, 0x37, 0x8C, 0x39, 0x97, 0xB6, 0xA9, + 0xEF, 0x1E, 0xD6, 0x8B, 0x59, 0x2B, 0x25, 0x90, 0x28, 0x29, 0x17, 0x5E, + 0x4D, 0x28, 0x89, 0xCA, 0x18, 0x51, 0x48, 0x22, 0xC6, 0x90, 0xBA, 0x7D, + 0x97, 0x4A, 0x71, 0xCE, 0x71, 0x50, 0x2E, 0x08, 0xA1, 0xA5, 0xFC, 0xF4, + 0xB3, 0x37, 0x21, 0x04, 0x6B, 0x4D, 0xEA, 0x7D, 0xCE, 0x87, 0x48, 0x53, + 0x94, 0x9B, 0xCD, 0x4E, 0x00, 0x94, 0x22, 0x94, 0x9C, 0x46, 0x7E, 0x6E, + 0x9C, 0x8F, 0xCE, 0x62, 0xC7, 0xE3, 0xE7, 0x29, 0x86, 0x75, 0x6C, 0xBE, + 0x9E, 0xCE, 0x6B, 0x5F, 0xED, 0x8F, 0x8E, 0x2F, 0x90, 0x4B, 0x8C, 0x20, + 0x22, 0x1E, 0x35, 0x27, 0xF0, 0x8B, 0x48, 0x4C, 0xF3, 0xF5, 0x41, 0x9E, + 0xC7, 0x3F, 0xF5, 0x24, 0x34, 0xE4, 0x29, 0xAA, 0x75, 0x68, 0xD9, 0x88, + 0xBE, 0x82, 0xC1, 0x3D, 0x3E, 0xDD, 0xD3, 0x21, 0x0F, 0x88, 0x00, 0xF0, + 0x68, 0xA8, 0xC1, 0xA8, 0x97, 0x04, 0x28, 0x24, 0x38, 0xE8, 0xE3, 0xD1, + 0x56, 0x88, 0x4B, 0xA1, 0x96, 0xAC, 0xBC, 0x81, 0x10, 0xD2, 0xC3, 0x6A, + 0xF7, 0xE6, 0xEA, 0x5E, 0x4B, 0x35, 0x9F, 0x35, 0xB8, 0xEF, 0x4F, 0x4F, + 0x66, 0x21, 0x24, 0xA2, 0x72, 0xF7, 0xB0, 0x4D, 0xB9, 0x48, 0x04, 0xE7, + 0xCC, 0xBC, 0xAD, 0x7D, 0x88, 0x0F, 0xEB, 0xBD, 0x56, 0x32, 0x6E, 0x7A, + 0x67, 0xB5, 0x31, 0x2A, 0x67, 0x0A, 0xB1, 0xD4, 0x95, 0x5B, 0xAD, 0x77, + 0xE3, 0xE0, 0x15, 0xE2, 0x66, 0xF7, 0x39, 0x9F, 0x5D, 0xEF, 0xBF, 0x77, + 0x79, 0x72, 0x32, 0xD7, 0x46, 0xD7, 0xC6, 0x35, 0x75, 0x35, 0x8E, 0xA1, + 0xAA, 0xEC, 0x6A, 0xBD, 0xFD, 0xE5, 0x6F, 0x3F, 0xFF, 0xCD, 0xA7, 0x5F, + 0x0E, 0x63, 0xD8, 0xEE, 0xFA, 0x10, 0x62, 0xCA, 0xE9, 0xED, 0xCD, 0x3D, + 0x9B, 0x99, 0xCC, 0x66, 0xCD, 0xD9, 0xE9, 0x62, 0xFB, 0xF6, 0x96, 0x88, + 0x04, 0x08, 0x6B, 0xB5, 0x52, 0xF2, 0x3B, 0xDF, 0xFA, 0x46, 0xF0, 0x51, + 0xC2, 0x94, 0x7E, 0x14, 0x62, 0x5C, 0xCC, 0xEA, 0xF7, 0x5E, 0x5C, 0x74, + 0xDD, 0x90, 0x4B, 0x39, 0x5D, 0x7E, 0x7F, 0x31, 0x6F, 0x49, 0x90, 0xD6, + 0xCA, 0x59, 0x5B, 0xA8, 0x04, 0x1F, 0x6F, 0x6F, 0x57, 0x9B, 0xDB, 0xEB, + 0x5F, 0xFF, 0xF4, 0x47, 0x19, 0xB0, 0x0B, 0xF9, 0xED, 0xD5, 0x5B, 0xD7, + 0x34, 0x39, 0xE6, 0x7E, 0x1C, 0xBB, 0x7E, 0x64, 0xFF, 0x75, 0xA9, 0xA4, + 0xF7, 0x9E, 0x1F, 0xB0, 0xEB, 0x06, 0x22, 0x41, 0x02, 0x18, 0xF1, 0x31, + 0x5A, 0x3A, 0xAB, 0x73, 0xCC, 0x07, 0x8C, 0x9B, 0xA9, 0xD2, 0x85, 0x08, + 0x74, 0xA1, 0x92, 0xA3, 0x20, 0x62, 0xB4, 0xDE, 0x1A, 0x59, 0xDB, 0x39, + 0x3B, 0x0E, 0xEF, 0xBB, 0xCE, 0x19, 0xF3, 0xCB, 0x5F, 0xFD, 0x2E, 0xA6, + 0x5C, 0x39, 0xFB, 0xFA, 0xCB, 0xB7, 0x00, 0xE0, 0xAC, 0xDB, 0xEF, 0xBB, + 0xDD, 0x6E, 0xE7, 0x63, 0xAA, 0x2A, 0x27, 0x95, 0x1A, 0xC7, 0x91, 0x0A, + 0x59, 0x67, 0xEB, 0xDA, 0x5A, 0xA3, 0x52, 0x8A, 0x4A, 0x4A, 0x33, 0xAA, + 0x18, 0x53, 0x8A, 0x19, 0x62, 0x04, 0x67, 0x95, 0x94, 0x42, 0x50, 0x4C, + 0x89, 0xD9, 0xAD, 0x12, 0x91, 0x33, 0x07, 0x72, 0xCE, 0x39, 0x17, 0x63, + 0x14, 0x9F, 0x7A, 0x87, 0x6F, 0x90, 0xB3, 0xB6, 0x7E, 0xEF, 0xC5, 0xE5, + 0xFD, 0x6A, 0x73, 0x73, 0xF7, 0x40, 0x44, 0xAC, 0xD3, 0x67, 0xFE, 0x0E, + 0x00, 0x68, 0xDE, 0xC1, 0x0D, 0xDE, 0x18, 0x33, 0x6B, 0x2A, 0x1E, 0x12, + 0x99, 0x8F, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x67, 0xCD, + 0xAC, 0xAD, 0x9C, 0xB3, 0x6D, 0x5B, 0x3B, 0x67, 0xEB, 0xCA, 0x09, 0x12, + 0x46, 0x6B, 0xA5, 0x34, 0x0A, 0x51, 0x3B, 0x6B, 0x8C, 0x36, 0x66, 0x92, + 0x67, 0xB1, 0x65, 0x2E, 0x4B, 0xFE, 0x85, 0x60, 0xA4, 0xE8, 0x78, 0x3F, + 0x08, 0xA2, 0x22, 0x0E, 0xA8, 0xD9, 0xE4, 0x93, 0x2D, 0x0A, 0x22, 0xB2, + 0x5B, 0xE4, 0xD0, 0x7B, 0x29, 0xA7, 0x35, 0x99, 0x52, 0xAA, 0x14, 0x24, + 0x28, 0x4D, 0xEB, 0xB4, 0xD1, 0xBB, 0x7D, 0xBF, 0xDE, 0xEE, 0xBB, 0xBE, + 0x0F, 0x21, 0x34, 0x55, 0x85, 0x80, 0xE3, 0xE8, 0xEB, 0xBA, 0x66, 0x7F, + 0xCA, 0xDD, 0xBE, 0x4B, 0x29, 0x87, 0x1C, 0x77, 0xFB, 0xFE, 0xE6, 0xF6, + 0x9E, 0x84, 0x90, 0x88, 0xBB, 0x7E, 0x28, 0x42, 0x34, 0x75, 0x55, 0xA6, + 0xF6, 0x10, 0xAC, 0xD1, 0x39, 0xA5, 0x87, 0xA1, 0x17, 0x02, 0xA4, 0x92, + 0xB3, 0xB6, 0x96, 0x02, 0x73, 0x2E, 0x4C, 0x56, 0xBA, 0x5F, 0xAD, 0x9D, + 0xB5, 0x0A, 0x55, 0x4C, 0x51, 0x02, 0xB0, 0x7F, 0xF7, 0x5F, 0xFE, 0xD5, + 0xDF, 0x7C, 0xE3, 0xF9, 0xE5, 0x77, 0xBF, 0xF5, 0x5E, 0xD3, 0x54, 0x44, + 0xB4, 0xDF, 0xF7, 0x80, 0xC2, 0x58, 0xA5, 0xB5, 0x3D, 0xBA, 0x1B, 0x08, + 0x21, 0xDA, 0xB6, 0xE1, 0xD5, 0x10, 0xDB, 0x2B, 0x1E, 0x41, 0x6B, 0xFE, + 0xBF, 0x4F, 0x5D, 0x6E, 0x60, 0x62, 0xC9, 0x13, 0x15, 0x21, 0xCA, 0x94, + 0x29, 0xA7, 0x8D, 0x9A, 0xDA, 0x1C, 0xC2, 0x2C, 0xE8, 0xFE, 0x61, 0x2D, + 0x04, 0xE4, 0x5C, 0x6E, 0x6F, 0xEF, 0xE7, 0xB3, 0x1A, 0x40, 0x65, 0x22, + 0x44, 0xE1, 0x8C, 0x01, 0x01, 0x21, 0x46, 0x29, 0x51, 0x00, 0x6C, 0x76, + 0x7B, 0x26, 0x36, 0x9F, 0x2E, 0x17, 0x4A, 0x29, 0x7E, 0x02, 0x25, 0xE5, + 0xCD, 0xDD, 0xC3, 0x9B, 0x37, 0x57, 0x31, 0x17, 0x56, 0x2C, 0x8D, 0xA3, + 0x1F, 0x83, 0x3F, 0x3F, 0x3D, 0xC9, 0x25, 0x87, 0x98, 0x10, 0xA1, 0x94, + 0x34, 0x8E, 0x5E, 0x29, 0xD5, 0x54, 0x6E, 0x36, 0xAB, 0x59, 0x0C, 0x87, + 0x07, 0x1C, 0x9D, 0xE8, 0x91, 0x75, 0x70, 0xC4, 0xA1, 0x0E, 0xE6, 0xA6, + 0x47, 0xC2, 0xC4, 0x57, 0xBE, 0xB8, 0xBC, 0x1C, 0x3B, 0x26, 0x3A, 0x18, + 0x69, 0xB0, 0xA1, 0x10, 0xC5, 0x22, 0x40, 0x1C, 0x58, 0x17, 0xE2, 0xE8, + 0x28, 0x4D, 0x44, 0xEC, 0x1A, 0x78, 0xA4, 0xFD, 0xE7, 0x72, 0x5C, 0x68, + 0x1E, 0x9F, 0x62, 0x2A, 0x42, 0xF4, 0xE4, 0xEB, 0x88, 0x57, 0x88, 0xAF, + 0x7E, 0x13, 0xE2, 0x93, 0xA1, 0x52, 0x08, 0x71, 0x30, 0x24, 0x54, 0xC7, + 0xC2, 0x0C, 0x20, 0x94, 0x52, 0xC3, 0x18, 0xD7, 0x9B, 0xFD, 0xBE, 0x1B, + 0x47, 0x1F, 0xAF, 0xEF, 0xD6, 0xCB, 0x79, 0x7B, 0x7E, 0xBA, 0xE8, 0xFA, + 0x71, 0xD6, 0x36, 0x0F, 0xEB, 0xAD, 0x0F, 0xE1, 0x64, 0x31, 0x3B, 0x5D, + 0xCE, 0x99, 0xBB, 0xA4, 0x95, 0xBE, 0x5F, 0xED, 0x78, 0x94, 0xD5, 0x4A, + 0x96, 0x52, 0xA8, 0xD0, 0x6E, 0xDF, 0x6B, 0xA5, 0xCE, 0xCF, 0x16, 0x12, + 0xE5, 0xDB, 0xEB, 0x7B, 0x29, 0x91, 0x31, 0x66, 0x21, 0xE8, 0xF9, 0xB3, + 0xF3, 0x31, 0xA4, 0x42, 0xA4, 0xA4, 0xDC, 0x6C, 0xF6, 0xF3, 0x79, 0x53, + 0x57, 0xEE, 0xD3, 0xCF, 0xBF, 0xFC, 0xEB, 0xBF, 0xF9, 0xCD, 0xCD, 0xFD, + 0x26, 0xA5, 0xE4, 0x43, 0xCC, 0x99, 0xFA, 0xBE, 0x97, 0x52, 0x92, 0xC5, + 0xBA, 0xB1, 0x4A, 0xC9, 0xBE, 0xEF, 0xC7, 0x61, 0x4C, 0x29, 0xF9, 0x10, + 0x2E, 0xCE, 0x4F, 0xDB, 0x97, 0x97, 0x8B, 0x59, 0xA3, 0x50, 0xEA, 0x53, + 0x7D, 0x72, 0xB2, 0xD8, 0xEE, 0xF6, 0x0F, 0x0F, 0x9B, 0x8B, 0xD3, 0xC5, + 0x87, 0xEF, 0xBF, 0x18, 0xBC, 0x3F, 0x5D, 0xCE, 0x10, 0x31, 0xA6, 0x54, + 0xA8, 0xB0, 0xE5, 0x5E, 0x4C, 0x69, 0xB5, 0xDA, 0xEE, 0x7A, 0xFF, 0xC9, + 0x2F, 0x7E, 0xFC, 0x6F, 0xFF, 0xCD, 0xFF, 0xDE, 0x85, 0x78, 0x7A, 0x76, + 0xB1, 0x98, 0x2F, 0x7E, 0xFB, 0xAB, 0x9F, 0x7F, 0xF8, 0xFD, 0x1F, 0xA6, + 0x9C, 0xFB, 0x7E, 0x2C, 0xA5, 0x9C, 0x9E, 0x2C, 0xEA, 0xCA, 0xED, 0xBA, + 0xDE, 0x8F, 0x51, 0x08, 0x31, 0x8E, 0x61, 0xBD, 0xD9, 0x4B, 0x29, 0x7D, + 0x8C, 0x21, 0x44, 0x29, 0x65, 0x6B, 0x26, 0x97, 0x28, 0x14, 0x10, 0x43, + 0x64, 0xB2, 0x18, 0xAF, 0x75, 0x4A, 0xC9, 0x3C, 0x0B, 0xD4, 0x95, 0x9D, + 0x37, 0x93, 0xF3, 0x79, 0xCA, 0x79, 0x18, 0xBD, 0x35, 0x06, 0x40, 0xF8, + 0x98, 0xDA, 0xA6, 0x8E, 0x29, 0x4A, 0xA5, 0x98, 0xC1, 0x1F, 0x53, 0x42, + 0x04, 0x14, 0x62, 0x1C, 0x47, 0x01, 0xC0, 0x04, 0xA9, 0xD2, 0xE5, 0xA1, + 0x13, 0x88, 0x00, 0x02, 0x12, 0x26, 0x41, 0x84, 0x12, 0x34, 0x48, 0x29, + 0x31, 0x28, 0x99, 0x52, 0x42, 0x04, 0x25, 0x71, 0xD1, 0x36, 0x31, 0x45, + 0x12, 0xDC, 0x99, 0xCA, 0x10, 0xA6, 0x6E, 0xC5, 0x59, 0x33, 0x0C, 0x41, + 0x22, 0xD6, 0x75, 0x35, 0x0C, 0xBE, 0xAE, 0x2B, 0x29, 0x65, 0x53, 0x57, + 0xEF, 0x3D, 0xBB, 0xDC, 0xED, 0xF6, 0xFD, 0x38, 0x0A, 0x00, 0x56, 0x20, + 0x02, 0x08, 0x89, 0x32, 0x0B, 0x31, 0x9B, 0x35, 0x39, 0x95, 0x93, 0xC5, + 0x6C, 0x39, 0x6F, 0xAB, 0xCA, 0x9E, 0x9F, 0x2C, 0x66, 0x6D, 0xDD, 0x36, + 0x55, 0xE5, 0x0C, 0x07, 0x3B, 0x18, 0x29, 0x9D, 0x35, 0xDA, 0x48, 0x6D, + 0x14, 0x00, 0x1E, 0xC8, 0xB6, 0xC4, 0x3B, 0xB8, 0xA3, 0x19, 0xF1, 0xA3, + 0x9E, 0xFF, 0x00, 0x31, 0x1C, 0x44, 0xB5, 0x42, 0x22, 0x88, 0x0C, 0x12, + 0x84, 0x40, 0x90, 0x52, 0x56, 0xB5, 0xED, 0x87, 0x91, 0x2F, 0x3E, 0x22, + 0x2A, 0x25, 0x73, 0x37, 0x57, 0xD7, 0x96, 0xF7, 0x65, 0x42, 0x88, 0x87, + 0xD5, 0x4A, 0x20, 0x8C, 0xDE, 0xF3, 0x65, 0xBA, 0xD9, 0xED, 0x77, 0xFB, + 0xCE, 0x8F, 0xDE, 0x58, 0x63, 0x95, 0x06, 0x21, 0x4A, 0x29, 0x31, 0xC5, + 0x3E, 0x97, 0x54, 0x0A, 0x02, 0x1A, 0xA5, 0xCF, 0x2F, 0xCF, 0x89, 0x88, + 0x4D, 0xA8, 0x42, 0x48, 0xA9, 0x94, 0x90, 0xB2, 0x02, 0xAC, 0xAA, 0x4A, + 0x10, 0x6D, 0xF7, 0x7B, 0x26, 0xC1, 0x00, 0x22, 0x47, 0x16, 0x4C, 0x8B, + 0x3F, 0xA3, 0xB4, 0x92, 0xA2, 0xD0, 0x5F, 0xFF, 0xF8, 0xE7, 0x97, 0x67, + 0x8B, 0xE5, 0xC9, 0x02, 0x40, 0x0C, 0xC3, 0x00, 0x00, 0xCC, 0x9F, 0xE0, + 0xF1, 0xF9, 0x48, 0xA9, 0x53, 0x4A, 0x95, 0xC3, 0xD7, 0xD7, 0xEE, 0x73, + 0xC4, 0xAF, 0x88, 0xDE, 0x11, 0x91, 0xF7, 0x9B, 0xFB, 0x7E, 0x9F, 0x4B, + 0x69, 0xAA, 0x6A, 0x18, 0x7D, 0x5D, 0x5B, 0xA5, 0x14, 0x47, 0x10, 0x3A, + 0xA6, 0x04, 0x96, 0xFC, 0xDE, 0xCB, 0x67, 0xDC, 0x3F, 0xE6, 0x4C, 0x9C, + 0x59, 0x51, 0x57, 0xAE, 0xAA, 0x0C, 0xDF, 0x95, 0xCE, 0x59, 0xA3, 0xF5, + 0xF4, 0xC6, 0xC2, 0xA4, 0x7C, 0x40, 0x29, 0xB7, 0xBB, 0xDD, 0x6A, 0xB3, + 0x8B, 0x29, 0xFB, 0x10, 0x01, 0x71, 0xDE, 0x36, 0xE7, 0x66, 0x31, 0x78, + 0xDF, 0x34, 0x35, 0x22, 0x0E, 0xC3, 0x58, 0x3B, 0xAB, 0x94, 0x6C, 0x9B, + 0x4A, 0x2B, 0x95, 0x33, 0xA5, 0x18, 0x89, 0xAB, 0xED, 0x57, 0xB0, 0xEC, + 0xC7, 0x76, 0x2C, 0x67, 0xAE, 0x2F, 0xC4, 0xED, 0xE7, 0xC1, 0xB0, 0x48, + 0x1C, 0x7A, 0x28, 0xE0, 0x8F, 0xFB, 0xF8, 0x7A, 0xF9, 0x4D, 0x48, 0x93, + 0xE3, 0x92, 0x98, 0x22, 0x07, 0x91, 0x84, 0x10, 0x39, 0x65, 0x6E, 0xC9, + 0x88, 0x9D, 0x85, 0x04, 0x1D, 0x1D, 0x19, 0xC5, 0x34, 0x63, 0x4C, 0xDB, + 0x2D, 0xFE, 0x7A, 0xC2, 0xFB, 0x9A, 0x06, 0xDE, 0xE3, 0xA1, 0x28, 0x60, + 0x72, 0x9A, 0xA0, 0x03, 0xD3, 0x1E, 0x01, 0x8E, 0xCC, 0x8B, 0x89, 0x3E, + 0x0B, 0x04, 0x00, 0xEA, 0xF8, 0x8F, 0x4A, 0xE1, 0xEB, 0xAB, 0xBB, 0x57, + 0x5F, 0xDE, 0x31, 0xAF, 0xCF, 0x87, 0x88, 0x08, 0x9B, 0x5D, 0x87, 0x80, + 0x9B, 0x7D, 0x0F, 0x00, 0xCF, 0x2F, 0x4F, 0x37, 0xDB, 0xFD, 0x6E, 0xDF, + 0x03, 0x88, 0x93, 0xE5, 0x6C, 0x31, 0x6B, 0x0A, 0x91, 0x52, 0xD2, 0xFB, + 0x38, 0x6B, 0xDD, 0x30, 0x7A, 0x21, 0x08, 0x20, 0x22, 0x62, 0x21, 0x0A, + 0x21, 0x55, 0xCE, 0x2C, 0x16, 0xED, 0x76, 0xD7, 0x35, 0x4D, 0xB5, 0x98, + 0x35, 0x46, 0x2B, 0x1F, 0xD3, 0xF3, 0x67, 0x67, 0xDE, 0x87, 0xBE, 0x5B, + 0x2F, 0xE6, 0xCD, 0xCD, 0xDD, 0xEA, 0xFF, 0xFA, 0xF7, 0x3F, 0xBE, 0xBA, + 0x5E, 0x4B, 0xA5, 0xDE, 0xBD, 0xBD, 0x16, 0x00, 0x75, 0x55, 0x39, 0xEB, + 0xE6, 0x8B, 0x39, 0x08, 0x10, 0x85, 0xF6, 0x5D, 0x67, 0xAD, 0xF6, 0xDE, + 0x5B, 0x63, 0x4A, 0x29, 0x00, 0x78, 0x32, 0x6B, 0x3F, 0xF8, 0xC6, 0xB3, + 0x90, 0xD2, 0x97, 0x6F, 0x6F, 0x53, 0xCA, 0x37, 0x77, 0x0F, 0xFB, 0x7D, + 0x47, 0x44, 0x0C, 0xAE, 0x9F, 0x9C, 0xCC, 0x39, 0x74, 0x92, 0x84, 0xE0, + 0xB4, 0x60, 0x00, 0x08, 0x31, 0x6D, 0xF7, 0xFD, 0xFF, 0xFD, 0x6F, 0xFE, + 0x8F, 0x5F, 0xFE, 0xEC, 0x47, 0x84, 0x80, 0x28, 0xB7, 0xEB, 0x95, 0x73, + 0x6E, 0xBB, 0xBA, 0x4D, 0xFD, 0xBE, 0x2B, 0x18, 0x62, 0x7C, 0xEF, 0xF9, + 0xC5, 0x72, 0xD1, 0x8E, 0x63, 0x70, 0xCE, 0x02, 0xE0, 0x7E, 0xD7, 0xA5, + 0x9C, 0xAB, 0xDA, 0xE5, 0x5C, 0xF6, 0xEB, 0x35, 0xE7, 0x92, 0x71, 0x57, + 0x2B, 0xD5, 0xA4, 0xFC, 0x54, 0x49, 0x2A, 0x25, 0x79, 0x56, 0xAF, 0x9C, + 0x15, 0x20, 0x54, 0x65, 0x67, 0x4D, 0xCD, 0x06, 0xF9, 0x21, 0xC6, 0x31, + 0x84, 0x59, 0x5D, 0x23, 0x40, 0x48, 0x79, 0x8C, 0x49, 0xF4, 0x63, 0x4C, + 0x21, 0xE7, 0x22, 0x51, 0x69, 0x25, 0x53, 0x4E, 0x2C, 0x78, 0x00, 0xC0, + 0x71, 0x0C, 0x56, 0x2B, 0xAB, 0x4D, 0x29, 0xC5, 0xC7, 0x28, 0x09, 0x59, + 0x98, 0x12, 0x73, 0x3A, 0x1E, 0x95, 0x8C, 0x77, 0x3A, 0x6B, 0x38, 0xF3, + 0x7D, 0x31, 0x6B, 0x47, 0x1F, 0xFA, 0x61, 0x9C, 0xCD, 0x1A, 0x29, 0x65, + 0x4A, 0xB9, 0xB1, 0x36, 0xA6, 0x28, 0x84, 0xA8, 0xEB, 0x0A, 0x40, 0x38, + 0xA7, 0x11, 0x71, 0xBB, 0xEB, 0x95, 0xC2, 0xE5, 0x72, 0x86, 0x12, 0xE5, + 0x5E, 0x86, 0xC9, 0xC1, 0xB1, 0x68, 0xAD, 0xAD, 0x56, 0xF3, 0x59, 0xF3, + 0xFC, 0xD9, 0xF9, 0xED, 0xDD, 0x43, 0x53, 0x57, 0xCF, 0x2F, 0x4F, 0x4F, + 0x96, 0x73, 0x04, 0xB4, 0x4E, 0xD7, 0x95, 0xD5, 0x5A, 0xB3, 0xF2, 0x0E, + 0x40, 0x68, 0x23, 0xB5, 0xD6, 0x48, 0x90, 0x0E, 0x96, 0xD9, 0xF8, 0x04, + 0xC1, 0x3E, 0xDE, 0x0B, 0x42, 0x3C, 0x7A, 0x45, 0x1D, 0xBC, 0x37, 0x05, + 0x6B, 0x40, 0x29, 0x3D, 0xD2, 0xB3, 0xB9, 0x54, 0x95, 0x83, 0x19, 0x3F, + 0x4D, 0xAB, 0x12, 0x16, 0x0E, 0xE0, 0xE9, 0x72, 0x1E, 0x53, 0xDE, 0x77, + 0x5D, 0x08, 0x91, 0x84, 0x98, 0xB7, 0xB3, 0x98, 0xD2, 0xE0, 0xC3, 0x18, + 0x02, 0x95, 0x12, 0x7D, 0x80, 0x22, 0x62, 0x8A, 0xC0, 0x94, 0x73, 0x12, + 0x46, 0x4A, 0x2A, 0xA5, 0x6D, 0x6B, 0x21, 0x70, 0xB3, 0xDB, 0xB2, 0x8B, + 0x4B, 0x21, 0x92, 0x88, 0x46, 0x52, 0x0A, 0x71, 0x1B, 0x93, 0x36, 0x0A, + 0x51, 0xB6, 0xAD, 0x96, 0x28, 0xC7, 0x71, 0x04, 0x00, 0x25, 0x41, 0x6A, + 0x23, 0x6B, 0xDC, 0x6D, 0xBB, 0x93, 0xE5, 0x7C, 0x7E, 0x7E, 0xBA, 0xDD, + 0x75, 0xFF, 0xF1, 0x47, 0x3F, 0xFB, 0x67, 0x7F, 0xF1, 0x77, 0xB5, 0x56, + 0xCE, 0x39, 0xBE, 0x4B, 0x63, 0x4C, 0x13, 0x2D, 0xF9, 0xF1, 0xB0, 0x9F, + 0xFC, 0xD6, 0x8F, 0x4D, 0xC1, 0x53, 0xB6, 0x54, 0x79, 0x14, 0x66, 0x1F, + 0x5A, 0x09, 0x10, 0xAB, 0xF5, 0xF6, 0xF4, 0x74, 0x59, 0xA8, 0x80, 0x10, + 0xDE, 0xC7, 0x18, 0xB2, 0xD2, 0x52, 0x2B, 0xA5, 0x95, 0xAC, 0x2B, 0x57, + 0x57, 0x2E, 0x97, 0x42, 0xA5, 0xA4, 0x5C, 0x36, 0x9B, 0x9D, 0x20, 0xD1, + 0xF5, 0x43, 0x55, 0x39, 0x44, 0x2C, 0x85, 0x9C, 0x35, 0xA5, 0x08, 0xDE, + 0x2A, 0x1E, 0x66, 0xC3, 0x92, 0x4B, 0xB9, 0xBB, 0xBD, 0x7F, 0xFB, 0xF6, + 0x96, 0x39, 0xB7, 0xB5, 0xB3, 0x24, 0xC4, 0x62, 0xD1, 0xEE, 0x76, 0x5D, + 0x53, 0x57, 0xFF, 0xF5, 0x3F, 0xF9, 0xFB, 0x0F, 0x0F, 0x9B, 0xBF, 0xFA, + 0xEB, 0x9F, 0x1A, 0xA5, 0xA4, 0x92, 0xE3, 0x18, 0xF6, 0xBA, 0x17, 0x00, + 0x52, 0xB6, 0xDC, 0x6A, 0xB0, 0x1B, 0xCA, 0xB1, 0xCD, 0x3C, 0x36, 0x40, + 0xC7, 0x1E, 0x8B, 0x3B, 0x6E, 0x46, 0x00, 0x8F, 0xAF, 0xFA, 0x89, 0x06, + 0xA0, 0x3C, 0xE9, 0xE3, 0x26, 0x3C, 0x97, 0x2B, 0x22, 0x03, 0x41, 0x29, + 0x25, 0xD6, 0x9C, 0x20, 0x62, 0x7E, 0x7C, 0xC0, 0xA3, 0x8A, 0x40, 0x30, + 0x09, 0xAC, 0x10, 0x81, 0x28, 0x04, 0x64, 0xB4, 0x3A, 0xBE, 0x63, 0x93, + 0xAB, 0x0F, 0x9B, 0xB9, 0x02, 0xDB, 0xD2, 0x89, 0x63, 0x51, 0x05, 0x10, + 0x88, 0xA2, 0x1C, 0x94, 0xE1, 0x5F, 0xC5, 0xED, 0x88, 0xB3, 0x61, 0x40, + 0x29, 0xB9, 0xDD, 0xF5, 0xBF, 0xFA, 0xED, 0x6B, 0xE7, 0x2C, 0x1B, 0x1C, + 0xB3, 0xB6, 0xD9, 0x59, 0xB3, 0xEB, 0xFA, 0x59, 0x53, 0x9D, 0x9E, 0x2C, + 0xD6, 0x9B, 0x9D, 0xD1, 0xE6, 0x5D, 0xF7, 0xF0, 0xB0, 0xDE, 0x6D, 0x77, + 0xC3, 0xB3, 0x8B, 0xE5, 0xC5, 0xD9, 0x72, 0xD6, 0x36, 0xC6, 0xC4, 0x7E, + 0x18, 0x10, 0x90, 0x7B, 0x01, 0x8E, 0x0B, 0x02, 0x21, 0x50, 0xAB, 0xA6, + 0x76, 0x21, 0x44, 0x1F, 0x53, 0x3F, 0xF8, 0x5C, 0xCA, 0xE8, 0xC3, 0x9B, + 0xAB, 0x70, 0x71, 0xB6, 0x20, 0x41, 0x3F, 0xFA, 0xE9, 0x6F, 0xFE, 0xDD, + 0x7F, 0xFC, 0xE9, 0x6A, 0xBD, 0xBD, 0xBC, 0x38, 0xEB, 0xBA, 0xA1, 0xAE, + 0x6A, 0x94, 0xDC, 0x35, 0x92, 0x02, 0xF9, 0x70, 0x77, 0xEF, 0xBD, 0x77, + 0xCE, 0x4A, 0x39, 0xBF, 0x5F, 0x6D, 0x24, 0xC2, 0x7C, 0xD6, 0x1A, 0xAD, + 0x4E, 0x4E, 0x5A, 0x21, 0xC4, 0xAB, 0x2F, 0xAF, 0xC7, 0xD1, 0xEF, 0xBB, + 0x81, 0xD3, 0xA1, 0x01, 0xE0, 0xEA, 0xFA, 0x16, 0x11, 0x58, 0x1E, 0x3C, + 0x6B, 0x1A, 0x86, 0x00, 0xBB, 0x7E, 0x1C, 0x7D, 0x18, 0x7D, 0xFA, 0xF5, + 0xAF, 0x7E, 0xF1, 0x37, 0x3F, 0xF9, 0xEB, 0x67, 0xCF, 0x5F, 0xE6, 0x18, + 0x52, 0x8A, 0x31, 0x85, 0xD3, 0xD3, 0x8B, 0x9C, 0x13, 0xC4, 0xEE, 0xBD, + 0x6F, 0x7C, 0x47, 0x22, 0xCD, 0x9A, 0x26, 0xE5, 0x1C, 0x73, 0x12, 0x24, + 0x94, 0x92, 0x4A, 0xAB, 0x8B, 0xF3, 0xD3, 0x71, 0xF4, 0x5F, 0xBC, 0xFA, + 0x32, 0xE7, 0x89, 0x86, 0x93, 0x79, 0x89, 0x59, 0x48, 0x48, 0x64, 0xAB, + 0xE8, 0xD3, 0xF9, 0x2C, 0xC4, 0x88, 0x88, 0x0A, 0x71, 0xDE, 0xD4, 0x12, + 0x85, 0x95, 0x32, 0x1C, 0x3A, 0x14, 0x6B, 0x4C, 0x2E, 0x25, 0x11, 0xF5, + 0x3E, 0xA4, 0x94, 0xD0, 0xD9, 0x94, 0x0B, 0x95, 0x22, 0x25, 0x29, 0x25, + 0x01, 0x05, 0x5F, 0x67, 0xA9, 0xC4, 0x7E, 0xF0, 0xD9, 0x6A, 0x09, 0x50, + 0x40, 0x74, 0x83, 0x57, 0x12, 0xA5, 0xC4, 0x18, 0x12, 0xF3, 0xE6, 0x01, + 0x90, 0xC3, 0xC3, 0xF9, 0xB6, 0xE1, 0x55, 0xD4, 0x62, 0xD6, 0x9C, 0x2C, + 0x66, 0x1C, 0xC2, 0x69, 0x8C, 0x46, 0x80, 0x54, 0xB2, 0x0F, 0xD1, 0x59, + 0xCD, 0xAA, 0x72, 0x00, 0x08, 0x21, 0x0A, 0x2D, 0x00, 0x54, 0x8C, 0x49, + 0x6B, 0xD5, 0xB6, 0x4D, 0x4A, 0xB6, 0x4E, 0x29, 0xA6, 0xC4, 0x9E, 0x53, + 0x4D, 0xE5, 0x9C, 0x51, 0x1F, 0x7D, 0xFB, 0x7D, 0x25, 0x55, 0x5D, 0xBB, + 0xE5, 0xBC, 0x05, 0x04, 0xF6, 0x7A, 0xD5, 0x46, 0x4D, 0x94, 0x7D, 0x98, + 0x4A, 0x52, 0x11, 0xD3, 0x9E, 0xFE, 0xB8, 0x95, 0xE7, 0x03, 0xF4, 0x78, + 0x3F, 0x1C, 0xBA, 0xB1, 0x69, 0xDF, 0x24, 0x84, 0x90, 0x12, 0x65, 0xC1, + 0xC9, 0x27, 0x3A, 0x0A, 0x16, 0x75, 0x29, 0x25, 0x8D, 0xD6, 0x82, 0x44, + 0x08, 0x01, 0x40, 0x68, 0xAD, 0xB8, 0xDF, 0x11, 0x30, 0x89, 0x4F, 0x8D, + 0xD1, 0x75, 0xE5, 0x26, 0x0E, 0x11, 0x1B, 0x2A, 0x10, 0x19, 0xA5, 0xB3, + 0x80, 0x18, 0x63, 0x2E, 0x23, 0x22, 0x0A, 0xCA, 0x28, 0x10, 0x04, 0x31, + 0xAB, 0x66, 0xB7, 0xDB, 0x77, 0xD0, 0x97, 0x52, 0x0E, 0x9C, 0x74, 0xF6, + 0xA8, 0x17, 0x5A, 0x49, 0x22, 0x4E, 0xFE, 0x11, 0x54, 0x08, 0x51, 0xB4, + 0x4D, 0xAD, 0x95, 0x24, 0x22, 0x67, 0x6D, 0xCE, 0xB9, 0x76, 0xF6, 0xF2, + 0xFC, 0xF4, 0xE5, 0xF3, 0x33, 0xEF, 0xE3, 0x6E, 0xDF, 0xB3, 0x10, 0xD8, + 0x7B, 0x4F, 0x85, 0xA4, 0x92, 0x4C, 0x0A, 0xE5, 0xFB, 0x13, 0x00, 0xD4, + 0x24, 0x53, 0x7D, 0xC4, 0x7A, 0x9E, 0xC0, 0x5E, 0x07, 0xC6, 0xD3, 0xA1, + 0xC0, 0x1D, 0x09, 0xAB, 0xDF, 0xFD, 0xF6, 0xFB, 0x5C, 0x0D, 0x85, 0x10, + 0x31, 0xC6, 0xE0, 0x63, 0x4E, 0x74, 0xC0, 0x79, 0x31, 0xE5, 0x9C, 0x52, + 0x2E, 0x99, 0x10, 0xE1, 0x64, 0x3E, 0x2B, 0xB9, 0xB4, 0x6D, 0xBD, 0xD9, + 0xED, 0x72, 0xCC, 0xA7, 0x27, 0xCB, 0x31, 0xA6, 0x52, 0x4A, 0x55, 0x39, + 0x00, 0x01, 0x88, 0x3E, 0x84, 0xA6, 0x72, 0xFD, 0xAE, 0xBB, 0x7A, 0x7B, + 0x7B, 0x7B, 0xB7, 0x92, 0x38, 0x25, 0x24, 0x75, 0xFD, 0x70, 0x75, 0x75, + 0x0D, 0x02, 0xBE, 0xF5, 0xE1, 0x37, 0x16, 0xF3, 0xD9, 0xF5, 0xF5, 0x9D, + 0xB5, 0xBA, 0x69, 0x6B, 0x46, 0x45, 0x11, 0x38, 0x98, 0x4A, 0x4C, 0x15, + 0x87, 0x4B, 0xC6, 0xA1, 0x9B, 0x11, 0x07, 0x64, 0xEA, 0xD8, 0x63, 0x1E, + 0xF7, 0xE6, 0xE5, 0x20, 0x63, 0x7A, 0x3A, 0x81, 0x4E, 0xF4, 0x0B, 0x9A, + 0x1C, 0xE4, 0x98, 0x7A, 0x72, 0xF0, 0x58, 0xA6, 0x9C, 0x4B, 0xDF, 0x8F, + 0x29, 0x27, 0xD6, 0x4E, 0xB3, 0x3D, 0xAD, 0x94, 0x12, 0x51, 0x00, 0x16, + 0x44, 0x28, 0x99, 0xB1, 0xA0, 0x49, 0xE1, 0x04, 0x6C, 0x6C, 0xC5, 0x4C, + 0xFF, 0xC9, 0xFA, 0x45, 0xF0, 0xE3, 0xE7, 0x9C, 0xF8, 0x8A, 0xE2, 0xF3, + 0x1E, 0xA7, 0x7D, 0x28, 0x32, 0x63, 0x0D, 0x9F, 0xFC, 0xF2, 0xFC, 0xFB, + 0xCB, 0xFF, 0xF9, 0x5F, 0xFF, 0x6B, 0xFE, 0xF4, 0xFF, 0x9F, 0xFF, 0xF0, + 0x8B, 0xAE, 0xF7, 0xB3, 0xA6, 0x8E, 0xA9, 0x84, 0x98, 0xBA, 0x6E, 0x38, + 0x59, 0xCE, 0x18, 0xA4, 0x6C, 0xDB, 0x1A, 0x40, 0x48, 0xA9, 0xF6, 0xDD, + 0x30, 0x8E, 0xC1, 0x39, 0x27, 0x00, 0x42, 0x4C, 0x31, 0x66, 0x40, 0x31, + 0x6F, 0xEB, 0x9C, 0xCB, 0xBE, 0x1B, 0xB5, 0x56, 0xD6, 0x6A, 0xE7, 0x6C, + 0x53, 0x57, 0x28, 0xA5, 0x73, 0xB6, 0xAA, 0x2B, 0x22, 0xA1, 0x94, 0x0A, + 0x21, 0x19, 0xAD, 0xAB, 0xBA, 0xEA, 0xFB, 0xF1, 0xEA, 0xDD, 0xDD, 0x2F, + 0x3E, 0xFE, 0xEC, 0x27, 0xBF, 0xF8, 0x24, 0xC4, 0xAC, 0x94, 0xDC, 0xED, + 0x7A, 0x22, 0xAA, 0x2A, 0xE7, 0x7D, 0xE8, 0x87, 0x01, 0x41, 0xE4, 0x18, + 0xEA, 0xDA, 0xC5, 0x14, 0x87, 0xD1, 0x33, 0xF5, 0xA1, 0x94, 0xEC, 0x8C, + 0xF9, 0xFE, 0x77, 0xBE, 0x79, 0x7A, 0xBA, 0xB8, 0xB9, 0x5B, 0x5F, 0xBD, + 0xBB, 0x15, 0x08, 0x31, 0x04, 0x44, 0xE9, 0x9C, 0xD5, 0x5A, 0xB7, 0x4D, + 0xF5, 0xC1, 0xFB, 0x2F, 0x4E, 0x4E, 0xE6, 0xC3, 0x10, 0x86, 0x61, 0x0C, + 0x31, 0x75, 0xFD, 0xE0, 0x7D, 0xD8, 0x77, 0x23, 0x4A, 0x19, 0xC7, 0xDD, + 0xF5, 0xF5, 0xF5, 0xC5, 0xC5, 0xB3, 0x93, 0x93, 0x65, 0x55, 0xB9, 0xBA, + 0x69, 0x5E, 0x3C, 0x7F, 0x96, 0x87, 0xDD, 0xC2, 0xE8, 0xE6, 0xFC, 0x65, + 0x55, 0xD9, 0x61, 0xF4, 0xD7, 0xB7, 0x2B, 0xA5, 0x14, 0xFB, 0x5F, 0x0B, + 0x21, 0x46, 0x1F, 0x3E, 0xFF, 0xE2, 0xCD, 0xF5, 0xED, 0x3D, 0x02, 0x56, + 0xCE, 0xA6, 0x54, 0x68, 0xB2, 0xDF, 0x11, 0x4C, 0x95, 0x12, 0x4C, 0xCB, + 0xCE, 0xD9, 0x4C, 0xD6, 0x54, 0xD9, 0x19, 0x2B, 0x11, 0x0B, 0x51, 0x37, + 0x8C, 0x85, 0x0A, 0x09, 0x18, 0x43, 0x14, 0x08, 0xA3, 0x0F, 0xB3, 0xB6, + 0xD1, 0x0A, 0x95, 0x92, 0xCE, 0x5A, 0x89, 0x18, 0x52, 0x1A, 0x43, 0xCC, + 0xB9, 0x84, 0x94, 0x0F, 0x90, 0x13, 0x68, 0x2D, 0x63, 0x8C, 0xFD, 0x30, + 0x1A, 0xA3, 0x94, 0xC4, 0x52, 0x88, 0xD1, 0x59, 0x00, 0x28, 0x82, 0x98, + 0x59, 0x32, 0xFA, 0xC0, 0x40, 0xF5, 0x18, 0x22, 0x23, 0x47, 0x25, 0xE7, + 0x94, 0x92, 0x44, 0x3C, 0x5D, 0xCE, 0x3E, 0x78, 0xF9, 0x62, 0x3E, 0x6B, + 0x4A, 0x29, 0xD6, 0x18, 0x29, 0xD1, 0x28, 0x05, 0x62, 0x4A, 0xE1, 0x04, + 0x10, 0x9C, 0x0B, 0x55, 0xD7, 0x55, 0xE5, 0x6C, 0x29, 0xD9, 0x39, 0x7B, + 0x76, 0xB2, 0xA8, 0xAC, 0x6D, 0x6A, 0xD7, 0xD4, 0x95, 0xD1, 0xBA, 0x72, + 0xC6, 0x59, 0x63, 0x8C, 0x92, 0x6A, 0x52, 0xA5, 0xE0, 0x94, 0xB1, 0x0C, + 0xE2, 0xE0, 0x3E, 0x3A, 0x9D, 0x9C, 0x4F, 0x66, 0x28, 0x98, 0xEC, 0x9E, + 0xE0, 0x28, 0x62, 0x43, 0x96, 0x14, 0x1D, 0x28, 0xD3, 0xC8, 0x76, 0x63, + 0xD3, 0x86, 0xAE, 0x30, 0xD5, 0x52, 0x2A, 0x94, 0x52, 0xE2, 0xC1, 0x6B, + 0x57, 0x49, 0xA5, 0x95, 0x44, 0x40, 0x56, 0xE1, 0x30, 0x39, 0x5C, 0x6B, + 0x15, 0x53, 0x4E, 0x29, 0xC5, 0x98, 0x04, 0xD1, 0xC4, 0x2E, 0x9D, 0xEE, + 0x34, 0x92, 0x52, 0x09, 0x21, 0xB4, 0x52, 0xFC, 0xCE, 0x30, 0x57, 0xB2, + 0x94, 0x62, 0x8C, 0xAA, 0x6A, 0x27, 0x88, 0x72, 0xCE, 0x3C, 0x31, 0x38, + 0xE7, 0x9A, 0xCA, 0x6A, 0xA9, 0x08, 0xE0, 0xE0, 0xFC, 0xC1, 0xFD, 0x21, + 0x55, 0xCE, 0x5D, 0x9E, 0x9F, 0x28, 0x25, 0xDF, 0x7B, 0x7E, 0x51, 0x4A, + 0x79, 0xF5, 0xE6, 0xFA, 0xF2, 0xFC, 0x84, 0xEF, 0x28, 0x7E, 0x69, 0x13, + 0xC1, 0xE2, 0xC9, 0xDF, 0x8F, 0xB8, 0xF5, 0x93, 0xF2, 0xFD, 0x08, 0x1B, + 0x3D, 0xC5, 0x9E, 0x98, 0xCB, 0x2A, 0x04, 0xC4, 0x34, 0x65, 0x57, 0x23, + 0xE2, 0xC1, 0x6A, 0x01, 0xA5, 0x7C, 0x7C, 0xC7, 0xF8, 0x92, 0xE3, 0x08, + 0xD4, 0x59, 0x53, 0x0F, 0xC3, 0x18, 0x52, 0xAA, 0xAC, 0xDD, 0xED, 0xBB, + 0x31, 0x04, 0x21, 0x84, 0x54, 0x72, 0xB5, 0xDE, 0x0A, 0x01, 0xFD, 0x30, + 0x7E, 0xF1, 0xFA, 0x6A, 0xB5, 0xDA, 0xAE, 0x56, 0x9B, 0xA6, 0xA9, 0xA5, + 0xC4, 0x97, 0x2F, 0x2F, 0xE7, 0xB3, 0x76, 0x18, 0xBD, 0xB5, 0xA6, 0xEF, + 0xC7, 0xBB, 0xBB, 0x07, 0xEF, 0xBD, 0xAB, 0xEC, 0x72, 0x3E, 0x33, 0x5A, + 0x39, 0x6B, 0x9A, 0xA6, 0x52, 0x5A, 0x31, 0xAB, 0x99, 0x04, 0x70, 0x01, + 0xE1, 0x52, 0x5F, 0x0E, 0x66, 0x96, 0x4F, 0x60, 0xB2, 0xE3, 0xAB, 0x11, + 0x4F, 0x2B, 0x32, 0x11, 0x31, 0x52, 0x3C, 0xFA, 0xC8, 0xE9, 0xDD, 0x31, + 0x71, 0x86, 0x77, 0xE2, 0x7E, 0x29, 0xA5, 0x12, 0x42, 0x8A, 0x31, 0x8E, + 0x3E, 0x6C, 0x77, 0x5D, 0x3F, 0xFA, 0x18, 0xD3, 0x6E, 0xDF, 0xE7, 0x42, + 0xB9, 0x94, 0x54, 0x32, 0x91, 0x60, 0x0D, 0x53, 0xC8, 0xC9, 0xC7, 0x14, + 0xC2, 0x94, 0x7B, 0x92, 0x52, 0x49, 0x39, 0x33, 0xE6, 0x4F, 0x45, 0xE4, + 0x5C, 0x52, 0x2E, 0x39, 0xE7, 0x10, 0xF8, 0x03, 0x3F, 0x9E, 0x10, 0x8F, + 0x8D, 0xBF, 0x98, 0x04, 0x02, 0x30, 0x55, 0x3D, 0x4E, 0x83, 0x2D, 0x85, + 0x66, 0x8D, 0xFB, 0xF8, 0xD3, 0xAB, 0xCF, 0x5E, 0xDF, 0xBE, 0x7C, 0x76, + 0x76, 0xF5, 0xF6, 0x5E, 0x1B, 0xAD, 0xB5, 0x0C, 0x39, 0x0F, 0x63, 0x38, + 0x3F, 0x5B, 0x08, 0x21, 0x62, 0xCA, 0xEB, 0xCD, 0x7E, 0xD6, 0xD6, 0xC6, + 0x68, 0xE6, 0xE8, 0x97, 0x03, 0x83, 0x4E, 0x08, 0x08, 0x21, 0x29, 0xA9, + 0x4E, 0x16, 0xB3, 0x10, 0xE3, 0x7A, 0xB3, 0x37, 0x5A, 0xCD, 0xDA, 0x3C, + 0x9B, 0x35, 0x29, 0xE5, 0xD1, 0x07, 0x40, 0x88, 0x31, 0x2D, 0x17, 0x2D, + 0x22, 0xFE, 0xFE, 0xF3, 0x2F, 0x7F, 0xF7, 0xD9, 0x9B, 0xF5, 0x66, 0xA7, + 0x95, 0x9A, 0xB7, 0x4D, 0x7F, 0xFB, 0xC0, 0xDC, 0x2B, 0x25, 0xD5, 0x7E, + 0xBF, 0xDF, 0x6C, 0xF7, 0x08, 0xA0, 0x50, 0xBC, 0xF7, 0xFC, 0x72, 0xBD, + 0xDD, 0xD5, 0x95, 0x33, 0xDA, 0x74, 0x5D, 0xEF, 0x9C, 0xFD, 0xE3, 0x3F, + 0xF8, 0xDE, 0xE5, 0xF9, 0xC9, 0xD9, 0xE9, 0xD2, 0x39, 0x73, 0xFF, 0xB0, + 0x71, 0xD6, 0x94, 0x92, 0x4F, 0x4F, 0x96, 0xEF, 0xBD, 0xB8, 0xFC, 0xD9, + 0xAF, 0x7E, 0x2B, 0x01, 0xFE, 0xFE, 0xDF, 0xFD, 0x21, 0x77, 0xE9, 0xD6, + 0x9A, 0x9C, 0xCB, 0xED, 0xFD, 0xBA, 0x14, 0x5A, 0xCC, 0x5B, 0xA5, 0x94, + 0xD6, 0xFA, 0xF9, 0xE5, 0xDF, 0x9B, 0xCD, 0x17, 0x45, 0xC8, 0x90, 0x8A, + 0xC5, 0xF2, 0x70, 0xF5, 0xDB, 0xFB, 0xF5, 0xAE, 0xF8, 0xFE, 0xF6, 0xED, + 0x6B, 0xFB, 0xE2, 0xA3, 0x5D, 0x5F, 0x83, 0x60, 0xE5, 0xB6, 0x16, 0x00, + 0xFD, 0x30, 0xF6, 0xC3, 0xF8, 0xC5, 0xAB, 0x37, 0xF7, 0xF7, 0xAB, 0xCA, + 0x5A, 0xE4, 0xEC, 0xDB, 0x54, 0xB4, 0x96, 0xB9, 0xE4, 0x10, 0x32, 0x5B, + 0xA7, 0x12, 0x09, 0xAD, 0x65, 0x89, 0xB1, 0x1B, 0x06, 0x67, 0xCC, 0xAC, + 0xA9, 0x84, 0xA0, 0x10, 0xA3, 0x0F, 0x41, 0x08, 0x52, 0x52, 0xFB, 0x18, + 0x53, 0xCA, 0x80, 0xA0, 0x8D, 0x0E, 0x21, 0x00, 0x68, 0xDE, 0xE2, 0x03, + 0x88, 0x74, 0x50, 0x71, 0x3B, 0xAB, 0x63, 0x2A, 0x39, 0x8F, 0x46, 0x6B, + 0x29, 0x25, 0x20, 0x2A, 0xE5, 0xB5, 0x56, 0xE7, 0xCB, 0x79, 0x37, 0x8C, + 0xDB, 0x5D, 0x07, 0x12, 0x11, 0xC1, 0x80, 0x8A, 0x71, 0x4A, 0xB4, 0xE4, + 0xBF, 0xF4, 0x43, 0x30, 0xDA, 0xB4, 0x75, 0x15, 0x82, 0x4A, 0xA5, 0x84, + 0x10, 0x2A, 0x57, 0x19, 0xAD, 0x63, 0x4A, 0x95, 0xB3, 0xC3, 0x30, 0xB2, + 0x64, 0x8F, 0x2D, 0x59, 0x10, 0xB1, 0xA9, 0x1D, 0x22, 0x4A, 0xE9, 0x2A, + 0x67, 0x7C, 0x88, 0x4A, 0x49, 0x67, 0x8D, 0x33, 0x46, 0x4A, 0xA4, 0xC3, + 0xF5, 0x8A, 0x88, 0x4A, 0x4B, 0xD6, 0xE5, 0xE1, 0x63, 0xB0, 0xD5, 0x63, + 0xB0, 0xCD, 0xD3, 0x6B, 0xFC, 0x38, 0x6D, 0x3D, 0xFD, 0xF7, 0xE3, 0x21, + 0x7F, 0x2C, 0x76, 0xEC, 0x00, 0x23, 0x84, 0x00, 0x50, 0x5A, 0x49, 0xAD, + 0x25, 0xE7, 0x72, 0x01, 0xA2, 0xD1, 0x3A, 0x1F, 0xAD, 0xE2, 0xA5, 0x64, + 0x0D, 0x06, 0x11, 0x0D, 0x3E, 0x30, 0xEA, 0x7A, 0x58, 0x6E, 0x22, 0x00, + 0xF4, 0xE3, 0x20, 0x68, 0x02, 0xD4, 0xEB, 0xDA, 0xB6, 0x4D, 0x93, 0x72, + 0xD9, 0xEF, 0x7B, 0x67, 0x0D, 0x08, 0x31, 0x7A, 0x41, 0xA5, 0x48, 0x85, + 0x75, 0x55, 0xB5, 0x4D, 0xAD, 0x94, 0x4A, 0x75, 0xBD, 0xDB, 0xEF, 0xF7, + 0xDD, 0x40, 0x44, 0xDE, 0x7B, 0x89, 0xCE, 0x3A, 0xAD, 0x8B, 0x18, 0x47, + 0x8F, 0x38, 0x0D, 0x41, 0xF3, 0x59, 0x9B, 0x73, 0x7E, 0x73, 0x75, 0x23, + 0x25, 0x5A, 0x6B, 0xA4, 0x52, 0xC3, 0x6E, 0xFF, 0xF9, 0x17, 0x5F, 0x3E, + 0xBB, 0x38, 0x5D, 0x2C, 0xE7, 0xC6, 0x9A, 0x18, 0x53, 0x08, 0x81, 0x4D, + 0x99, 0xC4, 0x21, 0x07, 0x44, 0x7C, 0xD5, 0x1D, 0xF0, 0xD8, 0x6D, 0x1D, + 0x4B, 0x15, 0x1D, 0x82, 0x97, 0x88, 0xFB, 0x1A, 0x2A, 0xA5, 0x94, 0x31, + 0x66, 0xDE, 0x81, 0xF2, 0xD0, 0x44, 0xA5, 0x8C, 0x23, 0x07, 0xEC, 0x14, + 0xAE, 0x9A, 0x12, 0x51, 0x2B, 0x49, 0x54, 0xAE, 0xDE, 0xDE, 0x18, 0x6B, + 0xDA, 0xA6, 0xD9, 0x77, 0x3D, 0x02, 0x08, 0x94, 0xC3, 0xE8, 0x99, 0x12, + 0xD8, 0x54, 0xEE, 0xEA, 0xFA, 0x96, 0x2B, 0xCB, 0x3F, 0xFF, 0xAF, 0xFE, + 0xE1, 0xAC, 0x6D, 0xBA, 0x7E, 0xF8, 0xF2, 0xED, 0x8D, 0x00, 0x3C, 0x3B, + 0x5D, 0x72, 0xE4, 0xCA, 0xF5, 0xCD, 0xDD, 0xF7, 0x3F, 0xFA, 0x56, 0xD7, + 0x0D, 0xC4, 0xDC, 0x49, 0xAD, 0x00, 0xA5, 0xF7, 0x71, 0x24, 0x6F, 0x8D, + 0xD6, 0x5A, 0x23, 0x40, 0x06, 0xE2, 0x56, 0x52, 0x1C, 0xB6, 0x7C, 0xF4, + 0x95, 0x1A, 0x46, 0x44, 0x8F, 0x2F, 0x47, 0x1C, 0x46, 0x66, 0xA5, 0x54, + 0x8C, 0x31, 0xC6, 0xD4, 0x8F, 0xA3, 0x35, 0x5A, 0x29, 0xC5, 0xF6, 0xBC, + 0xBC, 0xFC, 0xE5, 0xC5, 0x85, 0x10, 0x94, 0x53, 0x29, 0x45, 0x74, 0xFD, + 0xC0, 0x03, 0x62, 0x95, 0x32, 0x4A, 0x34, 0x46, 0xB7, 0x75, 0x05, 0x62, + 0xC2, 0x7F, 0xF9, 0xF9, 0xF8, 0xAD, 0x1B, 0xC7, 0x51, 0x29, 0x05, 0x50, + 0xE5, 0x29, 0x06, 0x48, 0xF0, 0xEE, 0x3E, 0xE5, 0x5C, 0x0A, 0xA7, 0xCF, + 0x81, 0x25, 0xA3, 0x94, 0x3A, 0x6E, 0x59, 0x0F, 0xA0, 0x04, 0x4E, 0xEC, + 0xB3, 0x52, 0x4A, 0x21, 0xF9, 0xC3, 0xBF, 0xF3, 0xCF, 0xF7, 0xFD, 0xB8, + 0xDA, 0x0E, 0xAB, 0x4D, 0xF7, 0x8D, 0xF7, 0x2E, 0x9A, 0xDA, 0xED, 0xBA, + 0xF1, 0xE2, 0x6C, 0xF9, 0xFC, 0xE2, 0xF4, 0x37, 0xBF, 0x7F, 0xB3, 0x5A, + 0xEF, 0xAA, 0xCA, 0xED, 0xF6, 0x03, 0xFB, 0x26, 0x87, 0x18, 0x95, 0x92, + 0x24, 0x68, 0xDF, 0x0D, 0x39, 0xE5, 0x18, 0x53, 0x29, 0xB4, 0xDE, 0xED, + 0xDF, 0xDD, 0xAE, 0x4A, 0x29, 0x42, 0xC0, 0x18, 0x62, 0x8A, 0x39, 0x17, + 0xF2, 0xDE, 0xF7, 0x83, 0xF7, 0x21, 0x6A, 0xAD, 0x94, 0x94, 0x77, 0x0F, + 0x9B, 0xFF, 0xF4, 0xB3, 0x8F, 0x7F, 0xFA, 0x8B, 0xDF, 0x0D, 0x63, 0x48, + 0x29, 0x87, 0x98, 0x96, 0xF3, 0x79, 0xED, 0xEC, 0x6A, 0xB3, 0x33, 0x5A, + 0x0F, 0x7E, 0x14, 0x42, 0x20, 0x42, 0xCE, 0x09, 0x05, 0xC4, 0x98, 0xC6, + 0x71, 0x9C, 0xCF, 0x66, 0x28, 0x71, 0xBF, 0xEF, 0x2E, 0x2F, 0x4E, 0x3E, + 0xFA, 0xCE, 0x37, 0x67, 0x6D, 0xD5, 0xD4, 0xD5, 0xE8, 0xC3, 0xAB, 0xD7, + 0xEF, 0xAE, 0x6F, 0xEE, 0x4F, 0x4F, 0x16, 0x1F, 0x7D, 0xE7, 0x83, 0x8B, + 0xF3, 0xA5, 0x52, 0x6A, 0x3E, 0x6B, 0x9B, 0xA6, 0xEA, 0x87, 0x91, 0x0F, + 0x07, 0x29, 0x25, 0x1B, 0xDA, 0x58, 0x6B, 0x72, 0xCE, 0xD6, 0x9A, 0x94, + 0x4B, 0xDD, 0x2E, 0x8D, 0xAB, 0x62, 0x22, 0x92, 0xF6, 0xF9, 0xD2, 0xDE, + 0xDD, 0x5C, 0xE5, 0xB1, 0x93, 0x94, 0x3F, 0xF8, 0xC1, 0xDF, 0x2E, 0x52, + 0xF5, 0xFD, 0xB0, 0x5C, 0xCC, 0x2A, 0x67, 0x7D, 0x88, 0xDB, 0x5D, 0xFF, + 0xF6, 0xDD, 0xED, 0xFD, 0xFD, 0x4A, 0x29, 0x49, 0x02, 0xBA, 0x61, 0x2C, + 0x65, 0xDA, 0xBC, 0x48, 0x89, 0x85, 0x84, 0x8F, 0x01, 0x01, 0x99, 0x0C, + 0xE5, 0xAC, 0x71, 0xC6, 0x4A, 0x39, 0xF9, 0x19, 0xA4, 0xC9, 0x13, 0x00, + 0x38, 0xEA, 0x95, 0x7D, 0xF1, 0xFD, 0x18, 0xA4, 0x44, 0x12, 0x30, 0x0C, + 0x9E, 0xD1, 0xA0, 0x61, 0x0C, 0x0C, 0x4B, 0xF0, 0x2E, 0x29, 0x97, 0x52, + 0xD7, 0x56, 0x1E, 0xD0, 0x62, 0x22, 0xF0, 0x31, 0x72, 0xB0, 0x20, 0x90, + 0x68, 0xEA, 0x8A, 0x85, 0x01, 0xE5, 0x00, 0x00, 0xE5, 0x52, 0x88, 0x0A, + 0x20, 0xD6, 0x95, 0x6B, 0x6B, 0xC7, 0x8D, 0x89, 0x9A, 0xC2, 0xC6, 0x49, + 0x6B, 0xD9, 0x0D, 0x43, 0xD7, 0x0F, 0x4C, 0x59, 0xB2, 0xD6, 0x2C, 0xE6, + 0x8D, 0xB3, 0xB6, 0x72, 0xC6, 0x1A, 0xAD, 0x95, 0xAA, 0x2B, 0x5B, 0x57, + 0xD6, 0x5A, 0x6D, 0xAD, 0xD6, 0x46, 0x69, 0xA5, 0xB4, 0x56, 0xD6, 0x69, + 0xAB, 0x95, 0x54, 0x72, 0x92, 0xA0, 0x1E, 0xC4, 0x22, 0xB9, 0xE4, 0x94, + 0x12, 0xDF, 0x9C, 0x24, 0x1E, 0x17, 0xF6, 0xC7, 0xB2, 0xF5, 0xB4, 0x8A, + 0x3D, 0x8E, 0x99, 0x4F, 0xBF, 0x4F, 0x1C, 0x9A, 0x11, 0x98, 0x62, 0x9B, + 0x8F, 0xA8, 0x8C, 0x92, 0x88, 0x28, 0xC5, 0xC4, 0xC3, 0x28, 0xC4, 0x5B, + 0xA0, 0xED, 0x6E, 0xB3, 0xED, 0xC5, 0xC1, 0x56, 0x81, 0x61, 0x1D, 0x4E, + 0x30, 0x50, 0x52, 0x1A, 0xA3, 0x96, 0x8B, 0x45, 0x88, 0x71, 0xB3, 0xD9, + 0x49, 0x29, 0xAD, 0xD1, 0x4D, 0x5D, 0x3D, 0xBF, 0x38, 0x59, 0xCC, 0x6B, + 0x86, 0xFC, 0x4A, 0xA1, 0xAE, 0x1F, 0x01, 0x84, 0xD6, 0x5A, 0x29, 0xE9, + 0x9C, 0x45, 0x84, 0xB6, 0xAE, 0x9D, 0xB5, 0x4C, 0xEC, 0x08, 0x31, 0x30, + 0x4E, 0xA4, 0xB5, 0x32, 0xC6, 0x18, 0xA3, 0x2B, 0x6B, 0x87, 0x61, 0x5C, + 0x6D, 0x77, 0xC3, 0x18, 0x6E, 0xEE, 0x36, 0xEB, 0xED, 0x6E, 0xBD, 0xD9, + 0xED, 0x77, 0x9D, 0xB3, 0xDA, 0x1A, 0x7D, 0x8C, 0x05, 0x62, 0xD1, 0xCF, + 0xD7, 0xAA, 0x39, 0xCF, 0xDA, 0x4F, 0xFB, 0xD3, 0x23, 0xEA, 0xAF, 0xB5, + 0x36, 0xC6, 0x70, 0xCB, 0x49, 0x44, 0x89, 0xAD, 0x77, 0xD9, 0xC4, 0xC2, + 0x7B, 0x2A, 0x64, 0xB4, 0x9E, 0x7C, 0x0A, 0xA6, 0x9D, 0x09, 0xAC, 0x1E, + 0x36, 0x9F, 0x7D, 0xF1, 0xE6, 0xED, 0xBB, 0x9B, 0x9C, 0xF3, 0x7A, 0xBD, + 0xAD, 0x2A, 0x87, 0x08, 0x31, 0xE5, 0xFB, 0xBB, 0x87, 0xB3, 0xD3, 0x13, + 0x00, 0x68, 0xEB, 0xCA, 0x39, 0xFB, 0xAD, 0x6F, 0xBE, 0x77, 0x73, 0xBF, + 0x7A, 0xF5, 0xE6, 0xDD, 0x7E, 0xDF, 0xFF, 0xF2, 0xD7, 0x9F, 0xC6, 0x10, + 0x86, 0xDE, 0x6F, 0x36, 0x3B, 0x94, 0xF8, 0xE7, 0xFF, 0xE8, 0xCF, 0xBE, + 0xFD, 0xE1, 0xFB, 0x52, 0xCA, 0xDD, 0xAE, 0x9B, 0xCF, 0x5B, 0x44, 0xF4, + 0x21, 0x70, 0xE7, 0x11, 0x63, 0x46, 0x01, 0xE9, 0x20, 0x9F, 0xA4, 0x89, + 0xA9, 0xCF, 0x1C, 0xD7, 0x09, 0xB3, 0x3F, 0x94, 0x36, 0x12, 0x6C, 0x3A, + 0x26, 0x00, 0xE0, 0x2B, 0x44, 0xFC, 0x10, 0x13, 0xAF, 0xF5, 0x01, 0x60, + 0x1C, 0x7D, 0xD7, 0x8D, 0x5D, 0xD7, 0xF7, 0xDC, 0x80, 0xA5, 0x4C, 0x44, + 0x3E, 0x84, 0x5D, 0xD7, 0x97, 0x3C, 0x0D, 0x8F, 0x39, 0xE7, 0x47, 0x54, + 0xEE, 0x10, 0x0C, 0x56, 0x88, 0x38, 0x97, 0x68, 0xDA, 0x9B, 0xE4, 0x92, + 0x52, 0xE1, 0xFA, 0xC6, 0xC3, 0x4D, 0xC9, 0xC5, 0x47, 0xF6, 0xEF, 0x28, + 0x62, 0x02, 0x5B, 0xA7, 0xFE, 0xF1, 0x49, 0xFD, 0x7D, 0x7A, 0xBE, 0x82, + 0xFC, 0x07, 0x7F, 0xFE, 0xAF, 0xAE, 0xEF, 0x36, 0xEB, 0x6D, 0x27, 0x25, + 0x10, 0x89, 0xE7, 0x17, 0xA7, 0xCB, 0x45, 0xCB, 0xB5, 0xFC, 0xE5, 0xF3, + 0xB3, 0xAE, 0xF7, 0x5D, 0xEF, 0x97, 0xF3, 0x26, 0xB2, 0x7C, 0x41, 0xEB, + 0x87, 0xF5, 0x0E, 0x01, 0xDE, 0x7F, 0xEF, 0x72, 0xB9, 0x98, 0x35, 0x6D, + 0x9D, 0x4B, 0x9E, 0xB7, 0xCD, 0xAC, 0xAD, 0xF7, 0xFB, 0x01, 0x04, 0x1A, + 0xAD, 0x72, 0xA1, 0xF5, 0x7A, 0xBF, 0xEF, 0xC6, 0xAA, 0x72, 0x27, 0x8B, + 0x99, 0xB1, 0xE6, 0x6F, 0x7E, 0xF1, 0xBB, 0x57, 0xAF, 0xDE, 0x3E, 0xAC, + 0x76, 0x3C, 0xCF, 0xB3, 0xA5, 0x44, 0x37, 0x0C, 0xE7, 0x67, 0x8B, 0xF7, + 0x5F, 0x3E, 0xEF, 0xFA, 0xDE, 0x68, 0x45, 0xB9, 0x94, 0x94, 0xA5, 0x44, + 0x10, 0x02, 0x01, 0x6E, 0x57, 0xEB, 0x5D, 0xD7, 0xBF, 0xB8, 0x3C, 0x3F, + 0x59, 0x2E, 0x9E, 0x5D, 0x9C, 0x55, 0x95, 0xAD, 0x9C, 0x9D, 0xB5, 0xCD, + 0x76, 0xD7, 0x5D, 0x5D, 0xDF, 0xBE, 0x7C, 0x7E, 0xF1, 0x83, 0xEF, 0x7D, + 0x78, 0x76, 0x32, 0x57, 0x4A, 0x5D, 0x9E, 0x9F, 0x2E, 0x97, 0x73, 0x06, + 0x4A, 0x39, 0x16, 0x4C, 0x4A, 0x6C, 0x9B, 0xDA, 0x39, 0x47, 0x44, 0x21, + 0xA5, 0x9C, 0x4B, 0x4C, 0xB9, 0xEB, 0xFB, 0xD5, 0x7A, 0x6B, 0x8C, 0x7A, + 0xF9, 0xEC, 0x7C, 0xEE, 0xF0, 0xE1, 0xEE, 0xDA, 0x77, 0x3D, 0x66, 0xFF, + 0xAD, 0xEF, 0xFF, 0xD0, 0xB6, 0x0B, 0xA2, 0xC2, 0xFB, 0x84, 0xFD, 0xBE, + 0x7F, 0xFB, 0xF6, 0xFA, 0xF6, 0xEE, 0x21, 0xA5, 0x84, 0x00, 0x43, 0x88, + 0x4A, 0xCA, 0x79, 0x5B, 0x03, 0xE0, 0x18, 0x02, 0x91, 0xF0, 0x21, 0xF0, + 0x98, 0x24, 0x11, 0xB5, 0xD1, 0x46, 0x29, 0xB6, 0xA8, 0xE6, 0x74, 0x74, + 0x00, 0x88, 0x29, 0x73, 0xAD, 0x51, 0x4A, 0xF1, 0xFC, 0x28, 0xA5, 0xAC, + 0x9C, 0x65, 0x2D, 0xB1, 0x75, 0x9A, 0x4B, 0x9E, 0xD1, 0x86, 0xD7, 0xD5, + 0xFD, 0xE8, 0xAD, 0xD1, 0x25, 0xD3, 0xE8, 0x63, 0x3F, 0xF8, 0x18, 0x33, + 0x80, 0x88, 0x31, 0xF5, 0x3E, 0x5C, 0x9C, 0x9E, 0xB4, 0x4D, 0xBD, 0x98, + 0xB7, 0x3C, 0x77, 0xB0, 0x7D, 0x05, 0xD3, 0x3E, 0xA4, 0x54, 0x39, 0x25, + 0xA5, 0x25, 0x53, 0x54, 0x7B, 0xEF, 0x83, 0x8F, 0x4C, 0x64, 0x4F, 0x29, + 0x73, 0x6B, 0x16, 0x63, 0x74, 0xD6, 0x31, 0x6B, 0xB4, 0xAE, 0xDC, 0x62, + 0xD6, 0x54, 0x95, 0x35, 0x46, 0x59, 0xA3, 0x2B, 0x67, 0x2B, 0x6B, 0x50, + 0xA2, 0x00, 0xE0, 0x90, 0x04, 0x2E, 0x73, 0x88, 0x28, 0xF1, 0xC0, 0x4D, + 0x64, 0x5F, 0xA1, 0x3C, 0x5D, 0x61, 0x54, 0xE8, 0xB0, 0x63, 0x7A, 0xAC, + 0x4F, 0xF4, 0x48, 0xA4, 0x7A, 0x94, 0xA4, 0x4C, 0xE3, 0xD5, 0xD1, 0x7C, + 0xE0, 0x78, 0xCA, 0xF3, 0x4F, 0x89, 0x29, 0xBF, 0x0A, 0x01, 0x14, 0xA2, + 0x20, 0x0A, 0x29, 0x31, 0xAB, 0x2B, 0xA7, 0x22, 0x04, 0xE4, 0x94, 0xD8, + 0x0C, 0x2E, 0x84, 0xD8, 0x0F, 0x03, 0xD7, 0x0E, 0xAB, 0xCD, 0xAC, 0xAD, + 0x2E, 0x2F, 0xCE, 0xB4, 0xD6, 0x7C, 0x59, 0x37, 0x75, 0x55, 0x3B, 0x57, + 0x3B, 0x67, 0x8C, 0xAE, 0x9D, 0x5D, 0xCC, 0x6A, 0xA3, 0x14, 0x0A, 0xE1, + 0xAC, 0x96, 0x52, 0xF6, 0xC3, 0x18, 0x62, 0xE4, 0x8E, 0xC9, 0x1A, 0x63, + 0xAD, 0xE1, 0x7A, 0xC4, 0xC1, 0x9C, 0xC4, 0x49, 0x4E, 0x08, 0x55, 0xE5, + 0x9C, 0xB5, 0x21, 0xA6, 0xD1, 0x87, 0x94, 0x8A, 0x52, 0x8A, 0x0A, 0x6D, + 0x77, 0xDD, 0xFD, 0xC3, 0xE6, 0x93, 0xDF, 0xBF, 0xF9, 0xDD, 0xEF, 0x5F, + 0x6F, 0xF7, 0xFD, 0xE5, 0xF9, 0xA9, 0x56, 0x32, 0xC4, 0xF8, 0xB5, 0x11, + 0x32, 0xA6, 0x94, 0x62, 0x9C, 0xA4, 0x4B, 0x88, 0x47, 0xF3, 0x2D, 0x00, + 0x90, 0x07, 0x4B, 0xBD, 0xE3, 0x97, 0x94, 0x32, 0xC4, 0xB8, 0xEB, 0x7A, + 0xA5, 0x25, 0x00, 0x8C, 0xDE, 0xF3, 0xA6, 0xB2, 0x4C, 0xAD, 0xBD, 0xEA, + 0xFB, 0xA1, 0xEF, 0x87, 0xD1, 0x87, 0x94, 0xD2, 0x72, 0x3E, 0x23, 0x21, + 0x9C, 0xB3, 0x24, 0x40, 0x69, 0xE9, 0x47, 0x7F, 0x7E, 0x76, 0xD2, 0xD4, + 0x15, 0xCF, 0xAC, 0x28, 0xE5, 0x4F, 0x7E, 0xFA, 0xF1, 0xCF, 0x7E, 0xF1, + 0xBB, 0xFD, 0xBE, 0xBF, 0xBF, 0xDF, 0xB4, 0x6D, 0xDD, 0xD4, 0x15, 0x08, + 0x78, 0xF1, 0xFC, 0xFC, 0xF2, 0xD9, 0xF9, 0x1F, 0xFD, 0xAD, 0xEF, 0x79, + 0x1F, 0x7C, 0x08, 0x27, 0xCB, 0x45, 0xED, 0xEC, 0x76, 0xB7, 0x5F, 0xAD, + 0xB6, 0xCC, 0x3A, 0x4C, 0x29, 0xA5, 0x5C, 0x62, 0xCA, 0xD6, 0x68, 0x2E, + 0x64, 0xEC, 0xA6, 0x83, 0x00, 0xB9, 0x90, 0x98, 0x02, 0x5A, 0xC5, 0x91, + 0x23, 0xC6, 0xB7, 0xD2, 0x11, 0x20, 0xCB, 0xA5, 0xE4, 0x5C, 0xF0, 0xD8, + 0x14, 0x09, 0x31, 0x8C, 0xA1, 0x70, 0xDE, 0x28, 0x20, 0x6F, 0x30, 0x73, + 0x29, 0x29, 0x15, 0x00, 0xA1, 0x24, 0x5A, 0x63, 0xB8, 0xB4, 0x6B, 0xAD, + 0x39, 0xAA, 0x83, 0x4D, 0x0A, 0x52, 0x4A, 0x25, 0xA7, 0x9C, 0xA8, 0x64, + 0x62, 0xA7, 0xA5, 0x98, 0xCB, 0xBE, 0xEB, 0x52, 0xCA, 0x5A, 0xB1, 0xC6, + 0x9E, 0x65, 0xAA, 0x29, 0xC6, 0x49, 0xAD, 0x0A, 0x07, 0xE0, 0x9F, 0xAF, + 0xA3, 0x72, 0xE0, 0xD6, 0x1E, 0x64, 0x06, 0x42, 0x08, 0x21, 0xFF, 0xC5, + 0xBF, 0xFA, 0xEF, 0x77, 0xDD, 0xB8, 0xDA, 0x74, 0xF3, 0xB6, 0x66, 0xAA, + 0xA4, 0x75, 0x46, 0x29, 0xA9, 0xB5, 0xAA, 0x2B, 0xFB, 0xFD, 0xEF, 0xBE, + 0x6F, 0xB4, 0x8A, 0x29, 0xEF, 0xBB, 0xA1, 0x1F, 0x3C, 0x7B, 0x12, 0x9C, + 0x9D, 0x2E, 0xDE, 0x7B, 0x71, 0x3E, 0x9B, 0xD5, 0xF3, 0xB6, 0xAE, 0x6B, + 0x17, 0x63, 0x72, 0xC6, 0xF0, 0x2C, 0xB9, 0xDB, 0x75, 0x29, 0xE7, 0xB6, + 0xAD, 0xDF, 0x7F, 0xEF, 0xA2, 0x94, 0xF2, 0xF1, 0xA7, 0xAF, 0xFE, 0xD7, + 0xFF, 0xF3, 0xDF, 0xFF, 0xF2, 0x37, 0x9F, 0x5D, 0x5E, 0x9C, 0x36, 0xB5, + 0x8B, 0x29, 0x6D, 0xB6, 0x1D, 0x09, 0xF0, 0xC1, 0xBF, 0xB8, 0x3C, 0x3B, + 0x3F, 0x3B, 0xE1, 0xCB, 0xB4, 0xAA, 0x1C, 0x13, 0x05, 0x94, 0x52, 0x7F, + 0xF4, 0x83, 0x6F, 0xC7, 0x9C, 0x6F, 0xEF, 0xD7, 0xD6, 0x9A, 0xCA, 0x1A, + 0x44, 0x51, 0x0A, 0x59, 0x6B, 0x2B, 0x67, 0x94, 0x56, 0x95, 0x35, 0xE7, + 0x67, 0xCB, 0xE7, 0x97, 0xE7, 0x6D, 0x53, 0x21, 0x22, 0x23, 0xFD, 0x46, + 0x6B, 0x6B, 0x0D, 0x4C, 0x42, 0x1F, 0xA1, 0x94, 0xD2, 0x5A, 0x21, 0x62, + 0xCE, 0xC5, 0x68, 0x2D, 0x11, 0xC7, 0x10, 0x76, 0xBB, 0xBE, 0x94, 0xB2, + 0x9C, 0xB7, 0x55, 0xE5, 0x94, 0x88, 0xEB, 0xFB, 0xEB, 0xDD, 0x7A, 0x95, + 0xFA, 0xED, 0xCB, 0x6F, 0x7E, 0xB4, 0x7C, 0xF6, 0x9E, 0x92, 0x40, 0x82, + 0xEE, 0xD7, 0xBB, 0xDF, 0x7F, 0x7E, 0x75, 0x7B, 0xB7, 0xE2, 0xE8, 0x43, + 0x76, 0x50, 0x11, 0x42, 0x74, 0xC3, 0x38, 0x7A, 0x6F, 0xAD, 0x71, 0xCE, + 0xA6, 0x98, 0x84, 0x00, 0xAD, 0x95, 0x94, 0x2A, 0x1D, 0x42, 0x31, 0x2B, + 0x63, 0x53, 0xC9, 0x5A, 0x2A, 0x6B, 0xF5, 0x18, 0x42, 0xCA, 0x59, 0x6B, + 0x3D, 0x8C, 0xBE, 0xEB, 0x87, 0xC5, 0xAC, 0x71, 0xCE, 0x4A, 0x89, 0x39, + 0x65, 0x21, 0x84, 0xD1, 0xBA, 0x1B, 0x46, 0xBE, 0x76, 0x79, 0x97, 0xD2, + 0x0F, 0x9E, 0xD1, 0xEE, 0xC8, 0x58, 0x3A, 0x89, 0x10, 0x43, 0xDB, 0x34, + 0x70, 0x0C, 0xFA, 0x16, 0x30, 0xFA, 0x10, 0xD3, 0x24, 0x50, 0x67, 0xB2, + 0x3E, 0xAF, 0x87, 0x2A, 0x06, 0xC5, 0xCB, 0x14, 0x98, 0xA2, 0x95, 0x02, + 0x21, 0xBC, 0x0F, 0x7D, 0xDF, 0xC7, 0x94, 0x10, 0xA5, 0x44, 0x54, 0x52, + 0x5A, 0x67, 0xDB, 0xA6, 0xB2, 0x46, 0x29, 0x2D, 0x11, 0x59, 0x95, 0xC9, + 0x1E, 0x96, 0x28, 0x11, 0x95, 0x54, 0xD6, 0x1A, 0x0E, 0x4F, 0x61, 0xEF, + 0x02, 0x7E, 0x44, 0x1E, 0x4B, 0x27, 0xFF, 0x4F, 0x26, 0x76, 0x1E, 0x8A, + 0x17, 0x1C, 0xBE, 0xF8, 0x38, 0x84, 0xAF, 0xF9, 0x05, 0x4C, 0x86, 0x4E, + 0x53, 0x21, 0x3B, 0x36, 0x6D, 0xC7, 0xF1, 0x05, 0x18, 0x18, 0x3A, 0xD4, + 0x85, 0x34, 0xF9, 0xD8, 0x4C, 0xE7, 0x6D, 0xE5, 0x2C, 0xA0, 0xF0, 0x3E, + 0x8E, 0x3E, 0x70, 0xDD, 0x94, 0x52, 0xD6, 0x75, 0xA5, 0x95, 0x12, 0x42, + 0xF4, 0x5D, 0xEF, 0xBD, 0x37, 0xC6, 0x18, 0xAD, 0x8D, 0x36, 0x82, 0x28, + 0xE7, 0x32, 0xF8, 0xE0, 0x43, 0xFA, 0xEE, 0xB7, 0x5E, 0x90, 0x10, 0xEF, + 0x6E, 0x1E, 0x4A, 0x29, 0x56, 0x6B, 0x3C, 0x38, 0x6A, 0xF1, 0x88, 0x1D, + 0x42, 0x64, 0xCE, 0x9D, 0x10, 0x64, 0xB4, 0xB1, 0xC6, 0xB0, 0x98, 0xD1, + 0x87, 0xD0, 0x0F, 0x43, 0x29, 0x13, 0x55, 0x38, 0xA6, 0xC4, 0x4C, 0x1A, + 0xAD, 0x75, 0xCC, 0xF9, 0xEA, 0xDD, 0xDD, 0xC3, 0xC3, 0xE6, 0x64, 0xDE, + 0x3A, 0x67, 0x00, 0x21, 0x86, 0xC8, 0x23, 0x63, 0x8C, 0x31, 0x8E, 0x3E, + 0xA7, 0xC4, 0xDD, 0x22, 0x4D, 0x9E, 0x0D, 0x13, 0x13, 0x2A, 0xE7, 0xC4, + 0xD3, 0x16, 0x3D, 0x71, 0xF1, 0xE7, 0x23, 0x85, 0xA9, 0x09, 0x29, 0x66, + 0x6B, 0x0D, 0x11, 0x31, 0xFD, 0x8D, 0x07, 0xA9, 0x61, 0xF4, 0x4A, 0x2B, + 0x67, 0x4D, 0x08, 0x51, 0x4A, 0x7C, 0xB8, 0x5F, 0xAF, 0x56, 0xAB, 0x94, + 0x72, 0x8C, 0x71, 0xB9, 0x98, 0x2B, 0xAD, 0xEE, 0xEE, 0x57, 0x9F, 0x7D, + 0x71, 0xF5, 0xEE, 0xDD, 0xDD, 0xE7, 0x5F, 0x5C, 0xA5, 0x9C, 0x7D, 0x88, + 0x97, 0xCF, 0xCE, 0xFE, 0xDE, 0xDF, 0xF9, 0xC3, 0xEF, 0x7E, 0xFB, 0xFD, + 0xEF, 0x7E, 0xEF, 0x9B, 0x21, 0x25, 0x67, 0x4C, 0xD7, 0x0F, 0xBB, 0x7D, + 0xF7, 0xF2, 0xC5, 0x65, 0x4E, 0xF9, 0xEE, 0x7E, 0xBD, 0xD9, 0xEE, 0xF7, + 0x5D, 0xF7, 0xEE, 0xE6, 0x21, 0xE7, 0x92, 0x73, 0x11, 0x20, 0xDA, 0xA6, + 0xE1, 0xE4, 0x24, 0xC1, 0x50, 0x3A, 0x00, 0x20, 0x16, 0xA2, 0xE3, 0x86, + 0x71, 0xB2, 0x01, 0xE0, 0x0C, 0xC7, 0x27, 0x52, 0x05, 0x66, 0x5B, 0x70, + 0xE3, 0x0C, 0x00, 0x39, 0x97, 0x94, 0x12, 0x4A, 0x34, 0xC6, 0xB0, 0xF1, + 0xA9, 0x94, 0xB2, 0x10, 0xA1, 0x44, 0xAD, 0xB5, 0x35, 0xAE, 0x4C, 0xE2, + 0x08, 0xE2, 0xF6, 0xA2, 0x94, 0xA2, 0xB5, 0xCA, 0x39, 0xB3, 0xC9, 0x33, + 0xEB, 0x55, 0x52, 0xC9, 0x2C, 0x9B, 0x8F, 0x31, 0xE5, 0x5C, 0x80, 0x83, + 0x07, 0x73, 0xE9, 0x87, 0x61, 0xB3, 0xDD, 0x87, 0x10, 0x43, 0x88, 0x87, + 0xEB, 0x6A, 0x3A, 0x1A, 0x99, 0x63, 0x73, 0x28, 0xAF, 0x4C, 0xD7, 0x20, + 0x22, 0x52, 0x21, 0x66, 0x67, 0x0C, 0x00, 0x2C, 0x17, 0xED, 0x7C, 0x56, + 0xB3, 0xF8, 0x86, 0xD7, 0x1C, 0x0F, 0xAB, 0x7D, 0xCE, 0xD4, 0xD6, 0x15, + 0x77, 0x67, 0x77, 0xF7, 0x9B, 0xAE, 0x1F, 0x3F, 0x78, 0xEF, 0xD2, 0x5A, + 0x1D, 0x53, 0x9A, 0x35, 0x95, 0xF7, 0xD1, 0x68, 0xE5, 0xAC, 0x1E, 0xC7, + 0x60, 0x8D, 0xAE, 0x2F, 0xAC, 0x7C, 0x7E, 0x66, 0xAD, 0xDE, 0xED, 0xFB, + 0x1F, 0xFD, 0xF4, 0xE3, 0x9F, 0xFE, 0xF2, 0x93, 0x9B, 0xFB, 0x8D, 0x44, + 0xA9, 0x24, 0x0C, 0x63, 0x98, 0xB7, 0xCD, 0xAC, 0x6D, 0x66, 0xB3, 0x41, + 0x10, 0x10, 0x10, 0x00, 0xFE, 0xE6, 0x93, 0xCF, 0xFA, 0x7E, 0x64, 0x73, + 0xA8, 0x6E, 0xE8, 0x9D, 0x73, 0x6D, 0x53, 0x01, 0x80, 0x44, 0xF8, 0xC3, + 0xEF, 0x7F, 0x5B, 0x2A, 0x95, 0x53, 0x92, 0x07, 0xFF, 0x7B, 0xC1, 0xEA, + 0xDC, 0x5C, 0x8C, 0x9E, 0xD4, 0xF9, 0x5A, 0xAB, 0xC7, 0x76, 0x80, 0x63, + 0x7D, 0x53, 0xE6, 0x60, 0xCA, 0x94, 0xF2, 0x38, 0x7A, 0x6E, 0x3A, 0x95, + 0x52, 0xCE, 0x18, 0xAD, 0x15, 0x6F, 0x63, 0x73, 0x2E, 0x98, 0xC1, 0x59, + 0xC7, 0x63, 0xDA, 0xEA, 0xEA, 0x8B, 0xF6, 0xFD, 0xEF, 0xED, 0xF7, 0x7D, + 0x1F, 0xE8, 0xFE, 0xEA, 0x9D, 0xDB, 0xBF, 0xBB, 0x30, 0xEA, 0x0E, 0xDC, + 0x76, 0x18, 0x53, 0xCC, 0x65, 0x1C, 0x43, 0x0C, 0x5A, 0x22, 0x00, 0x96, + 0x42, 0x31, 0x26, 0x94, 0xB2, 0x1B, 0x47, 0xA9, 0x54, 0x4E, 0xD1, 0xFB, + 0x88, 0x12, 0x2A, 0x6B, 0x00, 0x48, 0xA1, 0xD4, 0x12, 0xA9, 0x50, 0xE5, + 0x1C, 0x33, 0xD4, 0xFB, 0xC1, 0x73, 0xFE, 0x1B, 0x5F, 0xA9, 0x3E, 0x04, + 0x63, 0x4C, 0xCA, 0x65, 0xF0, 0xC1, 0x1A, 0xC3, 0x37, 0xF3, 0xCD, 0xC3, + 0x3A, 0xE7, 0xD2, 0x6A, 0xA9, 0x24, 0xF8, 0x10, 0x81, 0x6D, 0x02, 0xF9, + 0x30, 0x44, 0x60, 0xFE, 0x9D, 0xD6, 0x8A, 0x9F, 0x5D, 0x22, 0x94, 0x02, + 0x4A, 0x61, 0x8C, 0x29, 0xC6, 0xA8, 0x94, 0x1A, 0xC7, 0x11, 0x27, 0x89, + 0x9C, 0x44, 0x94, 0x31, 0x65, 0x1E, 0x0C, 0xAD, 0x35, 0x0E, 0xAD, 0x92, + 0x0A, 0x11, 0x2D, 0x33, 0x5D, 0xA7, 0x45, 0x7E, 0x41, 0x14, 0xA5, 0x94, + 0x43, 0x5A, 0x32, 0x1B, 0x5E, 0x4A, 0x12, 0x22, 0x44, 0x96, 0xBE, 0xAB, + 0x63, 0x09, 0xA2, 0xC2, 0x51, 0x6C, 0x53, 0x43, 0xF1, 0x9F, 0x4F, 0x52, + 0xFC, 0x75, 0xA4, 0x35, 0x4E, 0x03, 0xE3, 0xA1, 0xA2, 0xD1, 0x61, 0x05, + 0x30, 0xAD, 0x01, 0xE8, 0x71, 0xC0, 0x14, 0x07, 0x59, 0xCF, 0xE8, 0x43, + 0x08, 0x59, 0x49, 0x4C, 0x4A, 0xE6, 0x58, 0xD8, 0x8B, 0x01, 0x01, 0x9C, + 0xB5, 0x75, 0xE3, 0x46, 0x1F, 0x86, 0x61, 0x04, 0xA9, 0x52, 0x4E, 0xFD, + 0x30, 0xB0, 0x89, 0x2E, 0x6F, 0xDD, 0x95, 0x94, 0x95, 0x75, 0x28, 0xA5, + 0xA0, 0xB2, 0xDB, 0x77, 0x42, 0x08, 0x1F, 0xC4, 0x5F, 0xFD, 0xF8, 0x63, + 0x29, 0x55, 0x8C, 0x91, 0xA8, 0x70, 0x07, 0x04, 0x80, 0xDA, 0xE8, 0x43, + 0xFD, 0x2D, 0x21, 0xE4, 0x94, 0x8B, 0x94, 0xC8, 0x8C, 0x35, 0x21, 0xC4, + 0x38, 0xFA, 0x42, 0x24, 0xA8, 0x14, 0x28, 0x29, 0xE7, 0xDD, 0xBE, 0xE3, + 0xDD, 0xF4, 0xA1, 0x00, 0x09, 0xAD, 0xD5, 0xEB, 0xAB, 0x9B, 0xBB, 0x87, + 0xF5, 0x3F, 0xF8, 0xD3, 0x3F, 0xF8, 0xE0, 0x83, 0x17, 0x39, 0x97, 0x14, + 0x91, 0x89, 0x29, 0x82, 0x4A, 0x66, 0x2F, 0xA6, 0x0C, 0x42, 0x08, 0xA5, + 0x9E, 0x26, 0x3F, 0x0A, 0x56, 0x95, 0x12, 0x51, 0x29, 0x93, 0x4B, 0x38, + 0xD7, 0x32, 0x89, 0x90, 0x62, 0x56, 0x52, 0x95, 0x52, 0xBC, 0x0F, 0x85, + 0x4A, 0x9C, 0x60, 0xEF, 0xD2, 0xF7, 0x3D, 0x00, 0xDE, 0xDC, 0xDE, 0x9D, + 0x9D, 0x9E, 0xEE, 0xB6, 0xBB, 0x87, 0x87, 0xB5, 0xB6, 0xBA, 0x4D, 0xF9, + 0xE5, 0xFB, 0xCF, 0xD6, 0xDB, 0xFD, 0x2F, 0x3E, 0xFE, 0xF4, 0xFE, 0x7E, + 0xCD, 0x89, 0xCF, 0xDD, 0x30, 0x22, 0xE2, 0x9F, 0xFC, 0xF1, 0x47, 0x7F, + 0xF6, 0x27, 0x7F, 0xC0, 0x4B, 0x83, 0x9F, 0xFD, 0xFC, 0xB7, 0x5F, 0x5E, + 0xDD, 0xBC, 0x78, 0x7E, 0x79, 0x73, 0xF3, 0x30, 0x9F, 0xB7, 0xB7, 0xB7, + 0xAB, 0xCF, 0x5F, 0x5D, 0x29, 0x2D, 0x67, 0xB3, 0xE6, 0xED, 0xF5, 0x9D, + 0x10, 0x14, 0x42, 0xB4, 0x56, 0x37, 0x4D, 0x9D, 0x4B, 0x29, 0xE2, 0xE8, + 0x2A, 0x5E, 0xCA, 0x94, 0xC3, 0x36, 0x69, 0x0F, 0x88, 0x0A, 0x4D, 0xB6, + 0xF5, 0x82, 0xFD, 0xC8, 0x58, 0xC1, 0xC2, 0x6B, 0xCA, 0x10, 0xE2, 0xE8, + 0x7D, 0x9E, 0xCC, 0x4B, 0x26, 0x13, 0x2A, 0xDE, 0x89, 0x3B, 0x65, 0x4B, + 0x2E, 0x79, 0x2C, 0x1C, 0xCA, 0xA7, 0x95, 0x1A, 0x86, 0xF1, 0xF8, 0x53, + 0xDC, 0x1A, 0x0F, 0xBD, 0x67, 0x1E, 0x35, 0x3F, 0x8F, 0x0F, 0x81, 0x59, + 0xCA, 0xCE, 0x5A, 0x46, 0x81, 0x78, 0x2F, 0x95, 0x72, 0x09, 0x21, 0x86, + 0x10, 0xD8, 0x7D, 0x23, 0xA5, 0xAC, 0x35, 0x81, 0x60, 0xFC, 0x81, 0x18, + 0xE1, 0xCD, 0x85, 0x84, 0x00, 0x25, 0x81, 0x2B, 0x03, 0x11, 0x29, 0x6B, + 0x75, 0x4E, 0x45, 0x08, 0x71, 0x71, 0xB6, 0xAC, 0x2B, 0x23, 0xA5, 0x6C, + 0x6A, 0x6B, 0xB5, 0x56, 0x5A, 0xBE, 0xFE, 0xF2, 0x76, 0xBD, 0xDD, 0x33, + 0xB0, 0x57, 0x39, 0x33, 0x6B, 0xEB, 0xB3, 0xD3, 0x39, 0x00, 0xDC, 0x3D, + 0x6C, 0x52, 0x2A, 0xEF, 0xAE, 0x1F, 0x8C, 0xD1, 0x46, 0x29, 0xAD, 0xA5, + 0x94, 0x72, 0xD7, 0x0D, 0xCE, 0xEA, 0xB6, 0xAE, 0x7E, 0xF9, 0x9B, 0xCF, + 0xFE, 0xDF, 0x1F, 0xFD, 0xFC, 0xDD, 0xF5, 0x83, 0x52, 0xBA, 0x72, 0x95, + 0x96, 0x32, 0xE5, 0xE4, 0x63, 0xE4, 0x24, 0x7A, 0x3F, 0xFA, 0x22, 0x68, + 0xD6, 0x34, 0x5D, 0x37, 0x0C, 0x63, 0x60, 0x4B, 0x30, 0x63, 0xB5, 0x73, + 0x96, 0x0A, 0xBD, 0xF7, 0xFC, 0xFC, 0xFF, 0xE7, 0xEA, 0xCD, 0x7E, 0x2D, + 0x3B, 0xB3, 0x3C, 0xA1, 0xF5, 0xCD, 0x7B, 0x3A, 0xC3, 0x1D, 0xE2, 0xC6, + 0xE0, 0x08, 0xDB, 0x69, 0x3B, 0xD3, 0x95, 0x43, 0x65, 0x0D, 0x74, 0x4B, + 0x8D, 0xD4, 0xA8, 0xA5, 0x16, 0x4F, 0x88, 0x46, 0xA8, 0x79, 0x42, 0xC0, + 0x13, 0xAF, 0xFC, 0x47, 0xFC, 0x07, 0x3C, 0x80, 0x90, 0x90, 0x90, 0x0A, + 0x10, 0x54, 0x95, 0xD4, 0x54, 0xD6, 0x9C, 0xE5, 0x1C, 0x9C, 0x4E, 0xCF, + 0x8E, 0xE9, 0xCE, 0x67, 0xD8, 0x7B, 0x7F, 0xF3, 0x5A, 0x3C, 0xAC, 0x73, + 0x6E, 0x66, 0x11, 0x4F, 0x96, 0xC3, 0x11, 0xBE, 0xF7, 0x9E, 0xBD, 0xBF, + 0x6F, 0xAD, 0xDF, 0xF8, 0xEC, 0xC9, 0xB9, 0x92, 0x2A, 0xE5, 0x7C, 0xB7, + 0xDD, 0xB9, 0xC6, 0xAD, 0x56, 0x8B, 0xFB, 0xCD, 0xAE, 0xE4, 0xE2, 0x7D, + 0xDA, 0xEF, 0xE7, 0xFB, 0xED, 0xEE, 0x7B, 0xEF, 0x3E, 0x6D, 0x9C, 0xE3, + 0xEB, 0xFC, 0x20, 0xE0, 0x43, 0x42, 0xA4, 0xB6, 0x75, 0x5C, 0x0A, 0x6D, + 0x8C, 0x4E, 0x29, 0x03, 0x88, 0x94, 0xB2, 0x10, 0x52, 0x18, 0x29, 0x85, + 0x38, 0x5B, 0x2F, 0xA4, 0x94, 0x5D, 0xDB, 0xC4, 0x5C, 0x4B, 0x40, 0xFE, + 0xA6, 0x84, 0x71, 0x97, 0xDF, 0x7C, 0x7A, 0xF1, 0x07, 0xFF, 0x22, 0x91, + 0x49, 0xDF, 0xFD, 0x72, 0x75, 0xF3, 0xB9, 0x08, 0x77, 0xC2, 0x74, 0xDF, + 0x7B, 0xFC, 0x7E, 0x32, 0x5D, 0xBB, 0x5C, 0x5F, 0xEF, 0xE3, 0xDB, 0xBB, + 0xE9, 0xE5, 0xED, 0x4C, 0x80, 0x5A, 0x49, 0xAC, 0x07, 0x6F, 0xF7, 0x38, + 0x7B, 0xAD, 0x54, 0x48, 0x51, 0x2A, 0x45, 0x48, 0xD6, 0x58, 0x00, 0x28, + 0x48, 0x39, 0x67, 0x6D, 0x14, 0x10, 0xCC, 0x21, 0x2C, 0x17, 0xBD, 0xE1, + 0x52, 0x71, 0xA8, 0xD3, 0x1C, 0x22, 0x6B, 0x20, 0x3A, 0xC7, 0x32, 0x94, + 0x5A, 0xAB, 0xB1, 0x87, 0x0C, 0x6F, 0x42, 0xE4, 0x14, 0x90, 0x9C, 0xB3, + 0x73, 0x8E, 0xE1, 0x4B, 0xD7, 0xD8, 0xB6, 0x71, 0xA5, 0x54, 0x20, 0x42, + 0x24, 0xAD, 0x55, 0xCA, 0x75, 0xB5, 0xE8, 0xFB, 0xB6, 0x99, 0x42, 0xF4, + 0x3E, 0xA6, 0x9C, 0xE8, 0xE0, 0x2D, 0xC7, 0x18, 0x53, 0xD3, 0x34, 0x48, + 0x18, 0xD3, 0x31, 0xB2, 0xCA, 0x5A, 0x21, 0x44, 0xDB, 0x36, 0x43, 0xDF, + 0x5A, 0xAB, 0x73, 0xAD, 0x4A, 0xC8, 0x12, 0x51, 0xB1, 0xC6, 0x85, 0x48, + 0x6A, 0xAD, 0x0E, 0x95, 0x19, 0x04, 0x00, 0xA4, 0x80, 0x29, 0x6E, 0xA6, + 0xD5, 0xE1, 0x61, 0x68, 0x22, 0xE0, 0xB1, 0xF4, 0x81, 0x31, 0xFC, 0xFD, + 0x73, 0xEA, 0x77, 0xF7, 0xF5, 0x11, 0xE3, 0x87, 0x63, 0x7F, 0xEA, 0x3F, + 0xFB, 0xDD, 0x63, 0x0A, 0x3B, 0x1F, 0x73, 0x07, 0xF0, 0x98, 0x87, 0x40, + 0x38, 0xFC, 0x19, 0x22, 0x92, 0xC7, 0x23, 0xD2, 0x19, 0xB3, 0xE8, 0xBA, + 0x1C, 0x4B, 0x29, 0xBC, 0xF4, 0x15, 0xB6, 0x1F, 0x29, 0xA5, 0x32, 0x65, + 0x67, 0x1C, 0xC7, 0x46, 0x96, 0x18, 0x01, 0x80, 0x0E, 0xEF, 0x9B, 0x6C, + 0x9A, 0xA6, 0x71, 0xB6, 0x54, 0xE4, 0xAD, 0x44, 0x11, 0x71, 0x1D, 0x72, + 0x29, 0xC5, 0x18, 0xF3, 0xC0, 0x1E, 0x10, 0xA2, 0xB3, 0xB6, 0xD4, 0x92, + 0x52, 0xCE, 0xF9, 0x10, 0xC7, 0x85, 0x88, 0xCC, 0x59, 0xC7, 0x90, 0x58, + 0xEE, 0x1F, 0x53, 0x2A, 0xB5, 0x3A, 0x63, 0x01, 0xE8, 0xFA, 0xE6, 0x0E, + 0x88, 0x80, 0xC0, 0x59, 0xB3, 0x5C, 0xF6, 0x5D, 0xD7, 0x1C, 0xE0, 0x7C, + 0x04, 0x44, 0xA4, 0x4A, 0x52, 0x48, 0x3F, 0x7B, 0x22, 0x72, 0xCE, 0x29, + 0xA5, 0x38, 0x99, 0xE7, 0xB8, 0x86, 0xE3, 0x66, 0xBB, 0xDF, 0x4F, 0x33, + 0x21, 0x9D, 0x9E, 0xAC, 0x8C, 0x56, 0xDA, 0x18, 0x6D, 0x20, 0x86, 0xA4, + 0x94, 0x8A, 0x3E, 0xDD, 0x6F, 0x76, 0x58, 0x51, 0x69, 0xB5, 0x58, 0x2C, + 0x62, 0xCC, 0xFD, 0x30, 0x90, 0x10, 0x4A, 0x9B, 0x1F, 0xFF, 0xE4, 0x63, + 0x6D, 0xF4, 0xF3, 0x67, 0x17, 0x9F, 0x7F, 0xF9, 0xDD, 0xCF, 0xFE, 0xF6, + 0x17, 0xE7, 0x67, 0x27, 0xEB, 0xF5, 0x72, 0xB7, 0x9B, 0xBE, 0xF8, 0xEA, + 0xBB, 0x77, 0x9E, 0x5D, 0xFC, 0xEB, 0x7F, 0xF5, 0xC7, 0xEF, 0xBD, 0xF7, + 0x14, 0x2B, 0x0A, 0x10, 0x57, 0xD7, 0xF7, 0x9F, 0xFC, 0xF2, 0xB7, 0x9B, + 0xED, 0xBE, 0x22, 0x3E, 0x7B, 0xF2, 0x68, 0x9E, 0xFD, 0xD5, 0xD5, 0x8D, + 0x0F, 0x71, 0xBD, 0x5E, 0x7D, 0xFB, 0xF6, 0x75, 0x2D, 0x55, 0x4A, 0x79, + 0x7E, 0xB6, 0x5E, 0xAD, 0x16, 0x9C, 0x49, 0xC7, 0x80, 0x9D, 0x16, 0x92, + 0x40, 0x54, 0x24, 0x96, 0xB9, 0x0A, 0x80, 0xC3, 0xBE, 0x59, 0x0A, 0xD3, + 0xE8, 0x42, 0x80, 0x52, 0x4A, 0x2B, 0x25, 0x80, 0x52, 0xAE, 0xA5, 0xD6, + 0x5A, 0x6A, 0x2E, 0x78, 0x30, 0x2A, 0x1C, 0x32, 0xCD, 0x0F, 0x46, 0x11, + 0xAD, 0x75, 0x81, 0x2A, 0x84, 0xC8, 0xB9, 0xA4, 0x9C, 0xB7, 0x39, 0xB5, + 0x6D, 0x6B, 0xAD, 0x8D, 0x21, 0xCD, 0x73, 0x30, 0x46, 0x39, 0xE7, 0x90, + 0x10, 0x10, 0x98, 0x07, 0x46, 0x44, 0xE7, 0x6C, 0xA9, 0x25, 0xE7, 0x42, + 0x00, 0xC6, 0x18, 0x63, 0x0C, 0x00, 0xB7, 0xFF, 0x11, 0xCF, 0xE0, 0x6D, + 0xD3, 0x20, 0x52, 0xF0, 0x91, 0x17, 0x0B, 0x01, 0x54, 0x6B, 0xE1, 0x27, + 0x36, 0xE7, 0xE2, 0x9C, 0x23, 0xA5, 0x98, 0x31, 0x21, 0x02, 0x9D, 0x72, + 0x55, 0x52, 0x71, 0x40, 0xCD, 0xB3, 0x27, 0x67, 0x2C, 0x28, 0x03, 0x01, + 0xD6, 0xE8, 0x1F, 0x7D, 0xFC, 0xFE, 0x97, 0xDF, 0xBC, 0xBE, 0xBC, 0xDA, + 0xCC, 0x3E, 0x5E, 0x5E, 0xC9, 0xA1, 0x6F, 0x99, 0x4E, 0x8F, 0x29, 0x6B, + 0xA5, 0x42, 0x48, 0x52, 0x29, 0x80, 0xEA, 0x43, 0xDA, 0x6C, 0xC7, 0xB6, + 0xB1, 0xE3, 0x38, 0xFF, 0xD9, 0x9F, 0xFF, 0xCD, 0xD7, 0xDF, 0x5D, 0x82, + 0x94, 0xCB, 0xE5, 0x82, 0x37, 0x5B, 0x29, 0xC5, 0xC9, 0x62, 0xB1, 0x1C, + 0x06, 0x25, 0x65, 0x8C, 0xF9, 0x9D, 0xA7, 0x8F, 0xEF, 0xB7, 0x3B, 0x00, + 0x98, 0x3D, 0xD7, 0xA0, 0xF6, 0x37, 0x77, 0x9B, 0xB6, 0x6B, 0x72, 0xAE, + 0xC1, 0x07, 0xDE, 0xA7, 0xD6, 0xAB, 0x85, 0x31, 0xBA, 0x22, 0x0E, 0x43, + 0xEF, 0xAC, 0x09, 0x31, 0x4D, 0x3E, 0x5C, 0xDF, 0xDE, 0x97, 0x9C, 0x67, + 0x1F, 0x4E, 0xD6, 0x8B, 0xE5, 0x62, 0xB0, 0xD6, 0x08, 0x25, 0xB5, 0x14, + 0x4A, 0x2A, 0x24, 0x72, 0x00, 0xFC, 0x28, 0x0B, 0x29, 0xF8, 0x93, 0x13, + 0x42, 0xB0, 0x0E, 0x88, 0x10, 0x62, 0x4A, 0x5A, 0x2B, 0xA5, 0x75, 0x25, + 0xCA, 0xA5, 0x3A, 0xE7, 0xFA, 0xBE, 0x17, 0x52, 0x48, 0xAD, 0xEF, 0x37, + 0x37, 0x6F, 0xFE, 0xEE, 0xCF, 0x5E, 0x3C, 0x7F, 0x71, 0xFF, 0xE5, 0x5F, + 0xDD, 0xCF, 0x71, 0x58, 0xAD, 0x3B, 0xC0, 0xB3, 0x7A, 0xBB, 0x12, 0xDB, + 0x15, 0x84, 0x17, 0xE7, 0x6D, 0x3D, 0xD3, 0x9F, 0x2C, 0x97, 0x7F, 0xF7, + 0xCD, 0x1E, 0x11, 0xB0, 0x56, 0x21, 0xA5, 0x20, 0x28, 0xB5, 0x1E, 0xFB, + 0xE1, 0x14, 0x83, 0x17, 0x4A, 0x29, 0x1F, 0x23, 0x11, 0x36, 0xDA, 0xC5, + 0x98, 0x8C, 0xD6, 0x0F, 0x49, 0x5D, 0x0F, 0xB4, 0xA0, 0x73, 0x6E, 0x0E, + 0x39, 0xE7, 0xDA, 0x77, 0x5D, 0x29, 0x79, 0xB3, 0x9B, 0xAC, 0x31, 0x48, + 0x90, 0x73, 0x75, 0xCE, 0x68, 0xAD, 0x77, 0x39, 0xA7, 0x94, 0x38, 0x3D, + 0x91, 0x88, 0xAC, 0x31, 0xAB, 0xA1, 0xDB, 0xEE, 0x46, 0x63, 0x8C, 0xB1, + 0x83, 0x0F, 0x51, 0x6B, 0x95, 0x6B, 0x6D, 0x9C, 0x23, 0xA0, 0x90, 0x78, + 0x9A, 0x20, 0xA5, 0x35, 0x2F, 0x77, 0x29, 0xA6, 0xAA, 0x44, 0xDF, 0x34, + 0x52, 0x08, 0x86, 0x99, 0xDB, 0xC6, 0x4A, 0x21, 0x6A, 0xA5, 0x9C, 0x53, + 0x45, 0x54, 0x52, 0x28, 0x29, 0x6B, 0xC5, 0xAE, 0x71, 0xD6, 0xE8, 0x87, + 0x03, 0xE8, 0x30, 0x4B, 0x01, 0x3C, 0x74, 0x59, 0x1E, 0xE8, 0xAA, 0x82, + 0x0F, 0x11, 0xF2, 0xF4, 0xCF, 0xB5, 0x17, 0xC7, 0xB7, 0xF4, 0xF0, 0xEF, + 0xFF, 0xD9, 0x99, 0x46, 0x0F, 0x75, 0x39, 0x87, 0x8D, 0xE0, 0x88, 0xC8, + 0x1E, 0x36, 0x53, 0x79, 0x88, 0xA8, 0xCE, 0xB5, 0x60, 0xCC, 0xB9, 0x56, + 0x4C, 0x91, 0x85, 0x72, 0xF4, 0x70, 0x02, 0x76, 0xAD, 0x2B, 0xB5, 0x23, + 0xA0, 0xED, 0x6E, 0xAC, 0xB5, 0x96, 0x9C, 0x8F, 0x03, 0x0E, 0x0A, 0x21, + 0x52, 0xCE, 0xCE, 0xDA, 0xD9, 0x7B, 0xA6, 0x14, 0x8D, 0x55, 0x4A, 0x69, + 0x6B, 0xB4, 0x10, 0x44, 0x80, 0x42, 0x88, 0xB6, 0x6D, 0x17, 0x4A, 0x11, + 0x00, 0x01, 0x95, 0x5C, 0x52, 0x29, 0x5A, 0xEB, 0x94, 0x92, 0xAA, 0x85, + 0x08, 0x72, 0xCE, 0x40, 0x90, 0x4B, 0xE1, 0x78, 0x4B, 0x1E, 0xF9, 0x2B, + 0x56, 0x40, 0xC1, 0xC5, 0x28, 0x88, 0x75, 0x0E, 0x51, 0x08, 0x30, 0x4A, + 0x09, 0x29, 0x87, 0xBE, 0xF7, 0x31, 0xFF, 0xC5, 0x5F, 0xFF, 0xD3, 0xE9, + 0x72, 0xF8, 0xE9, 0x8F, 0x3E, 0x1C, 0xFA, 0xB6, 0x02, 0xE4, 0x5C, 0x0A, + 0x22, 0xF7, 0x2D, 0xC4, 0x90, 0xF0, 0x30, 0xDA, 0x21, 0x03, 0x05, 0xF4, + 0x70, 0x38, 0x0A, 0xD1, 0x75, 0x6D, 0xAD, 0xF5, 0xE6, 0x6E, 0xF3, 0x9B, + 0xCF, 0x37, 0x5D, 0xDB, 0x18, 0x63, 0x80, 0xA8, 0x6D, 0xDD, 0xD0, 0x75, + 0x75, 0xF2, 0x5D, 0xD7, 0xF7, 0x5D, 0x63, 0x8C, 0xA9, 0xB5, 0x2E, 0x17, + 0xC3, 0xD9, 0xF9, 0xC9, 0x6E, 0x3F, 0x12, 0x80, 0x73, 0xEE, 0xC9, 0xC5, + 0x59, 0xD7, 0xB5, 0xEF, 0xBC, 0x73, 0xF1, 0x5F, 0x3E, 0xFD, 0xB7, 0x27, + 0xAB, 0x85, 0x35, 0xDA, 0x87, 0xF8, 0xFA, 0xCD, 0x55, 0x29, 0xF5, 0xE6, + 0x6E, 0xCB, 0xFF, 0xA3, 0x5F, 0xFD, 0xE6, 0xCB, 0x71, 0x9C, 0x9E, 0xBF, + 0xF3, 0xE4, 0x9D, 0xA7, 0x17, 0x25, 0xA7, 0xEB, 0x9B, 0x5B, 0x56, 0x2C, + 0x19, 0xAD, 0xEF, 0xEE, 0xEE, 0x85, 0x94, 0x7D, 0xDF, 0xAE, 0x56, 0x0B, + 0x02, 0x78, 0xF9, 0xEA, 0xED, 0xFA, 0x64, 0xD9, 0xC9, 0x96, 0xD5, 0xE6, + 0x45, 0x1E, 0x2A, 0x11, 0x8E, 0xBE, 0xEF, 0x07, 0x0F, 0x90, 0x7C, 0xF8, + 0xA4, 0x78, 0x4A, 0x62, 0xE0, 0x9F, 0x6F, 0x29, 0xE6, 0x81, 0xB4, 0xD6, + 0x3C, 0x09, 0x92, 0x10, 0x31, 0x24, 0x22, 0x62, 0x13, 0xD8, 0x61, 0x4C, + 0xAB, 0xC8, 0x28, 0x46, 0xF0, 0x11, 0x00, 0x4A, 0x2E, 0xDC, 0xBC, 0x71, + 0x4C, 0x64, 0xE1, 0x24, 0x6D, 0x51, 0x91, 0xAC, 0xB5, 0xD3, 0x1C, 0x72, + 0x19, 0xF9, 0xD2, 0xE5, 0x88, 0xA1, 0x94, 0x32, 0xB3, 0x10, 0xB9, 0x94, + 0xD3, 0x93, 0x75, 0xC9, 0x15, 0x91, 0x2A, 0x61, 0x8D, 0x87, 0x43, 0x8B, + 0xBF, 0x30, 0x22, 0x92, 0xB2, 0x93, 0x52, 0xE6, 0x9C, 0x63, 0x8C, 0xEA, + 0x3F, 0xFE, 0x37, 0xFF, 0x05, 0x10, 0x49, 0xA9, 0x2E, 0x6F, 0x36, 0x5D, + 0xEB, 0xBA, 0xAE, 0x49, 0xB9, 0xE4, 0x8C, 0xEC, 0x24, 0x70, 0x8D, 0xE1, + 0x6E, 0x08, 0xE7, 0x4C, 0xE3, 0xEC, 0xD7, 0x2F, 0x2F, 0xA7, 0x29, 0x9C, + 0xAC, 0x16, 0x27, 0xAB, 0xC5, 0x30, 0x74, 0xF7, 0xDB, 0x91, 0xEB, 0xC2, + 0x94, 0x14, 0xDF, 0xBE, 0xBE, 0xFC, 0xF9, 0xAF, 0xBF, 0xBC, 0xDF, 0x8E, + 0xD6, 0x3A, 0xA6, 0x99, 0x09, 0xA8, 0x14, 0x14, 0x40, 0xCF, 0x2F, 0xCE, + 0x5B, 0x67, 0x8C, 0xD1, 0xEF, 0x3C, 0x7B, 0x84, 0x48, 0x31, 0x95, 0x71, + 0x9E, 0xA7, 0x79, 0x8E, 0x29, 0x23, 0x41, 0x4A, 0x79, 0x1C, 0xE7, 0xED, + 0x66, 0x9B, 0x72, 0xE9, 0x9A, 0xA6, 0xB1, 0x01, 0x15, 0x09, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xEF, 0xDA, 0x93, 0xD3, 0xE5, 0xC9, + 0xC9, 0xA2, 0xEF, 0x5A, 0x6B, 0xF4, 0xED, 0xFD, 0xF6, 0xEA, 0xFA, 0xEE, + 0xFA, 0xE6, 0xEE, 0xEA, 0xE6, 0xB6, 0x6D, 0x9A, 0xF3, 0xB3, 0x93, 0xF3, + 0xB3, 0x93, 0xE5, 0xB2, 0x67, 0x16, 0xD5, 0x71, 0x81, 0xA8, 0x10, 0x42, + 0x81, 0x10, 0x52, 0x29, 0x29, 0x95, 0x22, 0xE4, 0x0C, 0x0F, 0x41, 0x04, + 0xB3, 0x0F, 0xE3, 0xE4, 0xF7, 0xE3, 0x3C, 0xCE, 0xDE, 0x58, 0xC3, 0xDD, + 0x68, 0xFD, 0xD0, 0x53, 0x09, 0xB7, 0x9B, 0xAD, 0x94, 0xD2, 0x58, 0x7B, + 0xF7, 0xE6, 0xEB, 0xDB, 0xCB, 0x6F, 0xAF, 0x27, 0x1F, 0x51, 0x54, 0x82, + 0x39, 0x15, 0x61, 0xDC, 0xFD, 0xE8, 0xBF, 0xBB, 0xBC, 0x7D, 0x73, 0x79, + 0xB3, 0xDB, 0xEF, 0x9E, 0x2F, 0xE5, 0xB3, 0xC1, 0x8C, 0xC5, 0x14, 0xA9, + 0x4B, 0xAD, 0x5A, 0x33, 0x90, 0x51, 0xDA, 0xAE, 0x6D, 0xAC, 0xE9, 0x5A, + 0x87, 0x88, 0x52, 0x82, 0xD6, 0x6A, 0xE8, 0x3B, 0x2C, 0x95, 0x00, 0xA4, + 0x92, 0x15, 0x8F, 0x1A, 0x31, 0x29, 0x62, 0x2A, 0xCE, 0xDA, 0xA6, 0x71, + 0xA5, 0xA2, 0x10, 0x42, 0x2B, 0x99, 0x6B, 0xF5, 0x21, 0xF1, 0x4B, 0xCB, + 0xC7, 0x56, 0x45, 0x8C, 0xA9, 0x70, 0x9B, 0x89, 0xB5, 0x5A, 0x6B, 0x3D, + 0xCF, 0x33, 0x56, 0x4A, 0x39, 0x37, 0xCE, 0x71, 0x1C, 0x2E, 0xD3, 0xD2, + 0xC4, 0x05, 0x54, 0x42, 0xB6, 0xAD, 0x6B, 0xDB, 0x86, 0x9B, 0xED, 0x94, + 0x80, 0xC6, 0x9A, 0xAE, 0x6D, 0x86, 0xBE, 0x73, 0xAE, 0xB1, 0xD6, 0x34, + 0x8D, 0x95, 0x12, 0x72, 0xA9, 0xB5, 0x20, 0x63, 0x6A, 0x3C, 0x58, 0xB1, + 0xA6, 0x8C, 0x00, 0x58, 0xC3, 0xAC, 0xB5, 0x96, 0x4A, 0x28, 0x25, 0x8D, + 0x56, 0x52, 0x88, 0x7A, 0xAC, 0x6B, 0x64, 0x2E, 0xEB, 0x98, 0xEA, 0xF5, + 0x3B, 0x79, 0x24, 0x1C, 0xE1, 0xFC, 0x87, 0xA5, 0xF2, 0x61, 0x46, 0x7B, + 0xD0, 0x5C, 0xE3, 0x51, 0xE4, 0xFF, 0x70, 0x84, 0xFD, 0xFE, 0xD6, 0xC9, + 0xBF, 0x6A, 0x29, 0xB9, 0x54, 0x06, 0xDA, 0x19, 0x66, 0x3A, 0x80, 0x20, + 0x48, 0xB9, 0xE6, 0x94, 0x72, 0x88, 0xB9, 0x1C, 0x91, 0xC1, 0x18, 0x23, + 0x01, 0xA4, 0x52, 0xD8, 0x2E, 0x86, 0x88, 0x7C, 0x3D, 0x94, 0x5A, 0x39, + 0x8F, 0x64, 0xD1, 0x37, 0xAD, 0xD3, 0x43, 0xD7, 0x0C, 0x7D, 0xAB, 0x94, + 0xAC, 0x44, 0xA5, 0x54, 0x44, 0xE4, 0xC8, 0x07, 0x36, 0xB9, 0xF0, 0x6B, + 0x50, 0x72, 0x49, 0xA9, 0x64, 0x8E, 0x60, 0x42, 0x4C, 0x29, 0xF1, 0xDB, + 0x1B, 0x53, 0xE6, 0xEF, 0x81, 0x53, 0x6A, 0x2B, 0x91, 0x56, 0x1A, 0x09, + 0x4A, 0x2D, 0x7D, 0xD7, 0x78, 0x1F, 0x2F, 0x6F, 0xEF, 0x2F, 0x6F, 0xEE, + 0x5E, 0xBD, 0xBE, 0x26, 0xA2, 0xF3, 0xD3, 0x15, 0x21, 0x85, 0x39, 0xC6, + 0x94, 0x4B, 0x41, 0x8E, 0xA2, 0x07, 0x80, 0x87, 0x9A, 0x30, 0x3A, 0xC6, + 0x3D, 0x23, 0x62, 0xD7, 0x36, 0x7C, 0xBC, 0xEF, 0x76, 0xD3, 0x3C, 0xFB, + 0xED, 0x6E, 0x3F, 0x4E, 0x9E, 0x39, 0x3E, 0xAD, 0x75, 0xD3, 0xB8, 0x71, + 0x0E, 0x21, 0x44, 0xBE, 0x18, 0x63, 0x4A, 0x6D, 0xEB, 0x4E, 0xD6, 0xAB, + 0x93, 0xF5, 0xB2, 0x6D, 0x5D, 0xAD, 0xB5, 0xEF, 0x9A, 0xD5, 0x62, 0x40, + 0xA2, 0x6F, 0x5F, 0xBE, 0xBD, 0xBC, 0xBA, 0x4D, 0x29, 0xEF, 0xF7, 0xB3, + 0xB5, 0x36, 0xA5, 0xBC, 0xD9, 0xED, 0x39, 0x8D, 0xFA, 0x64, 0xBD, 0xB8, + 0xBE, 0xBE, 0xB9, 0xBA, 0xD9, 0xEC, 0xA7, 0x20, 0x40, 0x74, 0x5D, 0xA3, + 0x94, 0xAA, 0x48, 0x52, 0xC9, 0x77, 0x9E, 0x3D, 0xDE, 0x6C, 0xF6, 0x97, + 0x57, 0xB7, 0xC3, 0xD0, 0xAF, 0x16, 0x0B, 0xAD, 0x15, 0x07, 0xF7, 0x23, + 0x1D, 0xB8, 0x1A, 0x3E, 0x1C, 0x1E, 0x24, 0xBD, 0x47, 0xE1, 0x21, 0x83, + 0x1F, 0xA2, 0x1E, 0x57, 0x3E, 0x2E, 0xDC, 0xE0, 0x90, 0x15, 0xAD, 0x8F, + 0xCC, 0x06, 0x08, 0xCE, 0x8F, 0x4C, 0x29, 0xFB, 0x90, 0xC6, 0xE9, 0x10, + 0x81, 0x29, 0xA4, 0xC8, 0xA9, 0xE4, 0x52, 0xB8, 0x6B, 0x8E, 0xAB, 0x13, + 0x8D, 0xD6, 0x47, 0x4B, 0xA7, 0x90, 0x52, 0xA6, 0xE3, 0xF6, 0x2D, 0x95, + 0x5C, 0x0C, 0xC3, 0x41, 0x9B, 0x72, 0x78, 0x90, 0x04, 0x67, 0x37, 0x01, + 0x08, 0x1E, 0x4D, 0xDA, 0xCE, 0x11, 0xB0, 0x85, 0x13, 0x52, 0xCA, 0x5C, + 0x28, 0xC3, 0xD7, 0x26, 0xCF, 0xD9, 0x9A, 0x29, 0xD6, 0x4A, 0x18, 0x53, + 0xF9, 0xD9, 0x3F, 0xFE, 0xF6, 0xF2, 0x66, 0xEB, 0x9C, 0x79, 0xFB, 0xF6, + 0x0E, 0x80, 0x2E, 0xCE, 0xD7, 0xD6, 0xE8, 0xE5, 0xB2, 0x7B, 0xF1, 0xCE, + 0x23, 0x29, 0x44, 0x4A, 0xE5, 0x8F, 0x7E, 0xFC, 0xA1, 0x0F, 0xE9, 0x64, + 0x35, 0x28, 0x25, 0xEE, 0xEE, 0xF7, 0x9C, 0x18, 0xE1, 0x63, 0xBC, 0xBA, + 0xBE, 0xDB, 0x4F, 0x9E, 0x5D, 0x84, 0x44, 0x85, 0x21, 0x83, 0x79, 0xF6, + 0x5D, 0xE3, 0x9E, 0x9C, 0x9F, 0xA6, 0x9C, 0x17, 0x43, 0x7B, 0x7E, 0xB6, + 0xF6, 0x3E, 0x8C, 0xF3, 0x7C, 0xBF, 0xD9, 0xBE, 0xBD, 0xBE, 0xED, 0xDB, + 0x46, 0x09, 0x79, 0x7B, 0x7B, 0xA7, 0x95, 0xAA, 0xB5, 0x56, 0xA2, 0x5A, + 0xEA, 0xEB, 0xCB, 0x1B, 0xE7, 0xEC, 0xC5, 0xC5, 0xD9, 0x6A, 0x31, 0x48, + 0x29, 0x37, 0xDB, 0x11, 0x11, 0x9F, 0x3F, 0x7D, 0xAC, 0xB5, 0xCA, 0xA5, + 0x9C, 0xAC, 0x96, 0x4D, 0x6B, 0x4F, 0x4F, 0x96, 0xC6, 0x1A, 0xEE, 0x31, + 0x53, 0x5A, 0x09, 0x21, 0x2A, 0x91, 0x40, 0xA1, 0xA4, 0x44, 0xA4, 0x9A, + 0x0B, 0x1E, 0x4C, 0xCB, 0x62, 0xF2, 0xFE, 0xF2, 0xFA, 0x4E, 0x29, 0xE5, + 0x43, 0x88, 0x29, 0x77, 0x7D, 0x77, 0xB6, 0x5E, 0x5A, 0xA3, 0x49, 0x8A, + 0xF5, 0xF9, 0xC5, 0xEA, 0xF4, 0x7C, 0xDF, 0xF4, 0xE0, 0x77, 0x79, 0xDA, + 0xDD, 0xFB, 0x9C, 0x62, 0x50, 0x5A, 0xF7, 0xFD, 0x20, 0xA5, 0x7A, 0xF5, + 0xF6, 0x6A, 0x31, 0x74, 0xC6, 0x98, 0x90, 0x52, 0x49, 0x09, 0x94, 0x6B, + 0x14, 0x7D, 0xD4, 0xF6, 0x9F, 0xEA, 0x47, 0xA3, 0x0F, 0x46, 0x49, 0x29, + 0x85, 0x52, 0x52, 0x00, 0xAD, 0x86, 0x1E, 0x09, 0x41, 0x90, 0x14, 0x72, + 0xD1, 0x77, 0x07, 0x89, 0x20, 0x70, 0x35, 0xB7, 0xE6, 0xD6, 0x8C, 0x5C, + 0x6A, 0x41, 0x6C, 0xB4, 0xD2, 0x4A, 0x12, 0x62, 0xA9, 0x34, 0xCE, 0xA1, + 0x94, 0xC2, 0xD0, 0x09, 0x11, 0xE9, 0x43, 0x4F, 0x17, 0xB4, 0x8D, 0xB3, + 0x56, 0xDB, 0xA3, 0x51, 0x19, 0x89, 0x50, 0x90, 0x36, 0x76, 0xB3, 0x1F, + 0xC5, 0x31, 0x3E, 0x61, 0x39, 0xF4, 0x20, 0xA0, 0x54, 0xEC, 0xBA, 0xC6, + 0x6A, 0xD5, 0xB7, 0x6D, 0x2E, 0x05, 0x88, 0x58, 0xC2, 0xCA, 0x8F, 0x1A, + 0x6B, 0x7C, 0x4A, 0xA9, 0x4A, 0x89, 0x5C, 0x0A, 0x21, 0xD9, 0x03, 0xF6, + 0xCC, 0x69, 0x3F, 0xE6, 0xE1, 0xC5, 0x63, 0x98, 0x44, 0x48, 0x90, 0x52, + 0xB2, 0x7A, 0xB6, 0x20, 0xE7, 0x3C, 0x02, 0x07, 0x5D, 0xC8, 0xCA, 0xC5, + 0x39, 0x15, 0x8E, 0x03, 0xD8, 0xC3, 0x75, 0x8D, 0xBF, 0xF3, 0xEE, 0x1C, + 0x07, 0x29, 0x22, 0xE4, 0xD2, 0x72, 0x02, 0x01, 0x02, 0x7E, 0xCF, 0x9A, + 0xF7, 0x70, 0xD8, 0x3D, 0x9C, 0x65, 0x5A, 0x6B, 0x29, 0x92, 0x20, 0x90, + 0x42, 0x60, 0x45, 0x21, 0x65, 0x15, 0x07, 0x93, 0x5D, 0xA9, 0xC8, 0xCD, + 0x23, 0x5C, 0x4A, 0x06, 0x40, 0xA5, 0x22, 0x15, 0xAC, 0x58, 0x95, 0x94, + 0x39, 0xE7, 0x0C, 0x82, 0xC7, 0x28, 0x01, 0xD0, 0x1A, 0x33, 0xB4, 0xEE, + 0x74, 0xD9, 0x85, 0x94, 0xAE, 0xEF, 0xB6, 0xA5, 0xA0, 0x54, 0x42, 0x2B, + 0x4D, 0x44, 0x58, 0x2B, 0x11, 0x31, 0x6B, 0x39, 0xCF, 0x5E, 0x2B, 0x45, + 0x88, 0xC6, 0x1A, 0x21, 0x44, 0xCE, 0x35, 0xE5, 0x2C, 0x85, 0xC8, 0x15, + 0x79, 0xAB, 0x92, 0x42, 0xB2, 0xDB, 0x11, 0x00, 0x48, 0x4A, 0x29, 0x24, + 0xDF, 0x19, 0x25, 0x17, 0x2C, 0xC8, 0xA1, 0x1A, 0xA5, 0xD6, 0x31, 0xC4, + 0xFF, 0xF7, 0x6F, 0x7F, 0x19, 0x53, 0xFE, 0x93, 0x1F, 0x7F, 0x5F, 0x6B, + 0x75, 0x73, 0xB7, 0x2D, 0x88, 0x4F, 0x9E, 0x5C, 0x74, 0x43, 0x57, 0x2B, + 0xC6, 0x90, 0x4B, 0xA9, 0xC6, 0x28, 0x4E, 0xD2, 0x15, 0x42, 0x5A, 0x6B, + 0x73, 0x29, 0x46, 0xEB, 0x45, 0xDF, 0xAD, 0x96, 0x03, 0x03, 0xF9, 0xBC, + 0x6C, 0x22, 0x91, 0xB5, 0xE6, 0x64, 0xB5, 0x54, 0x52, 0x12, 0xD0, 0x7E, + 0x9A, 0x41, 0xC0, 0xC5, 0xF9, 0x69, 0xD3, 0x58, 0x29, 0x25, 0xA7, 0x0A, + 0x4A, 0x29, 0x85, 0x90, 0x9F, 0x7E, 0xF6, 0xD5, 0x57, 0x5F, 0xBF, 0xDA, + 0xED, 0xE7, 0xB6, 0x6D, 0xDE, 0xBC, 0xB9, 0x52, 0x5A, 0xF6, 0x5D, 0x7B, + 0xB2, 0x5E, 0x22, 0x62, 0xCA, 0xA5, 0xEF, 0x1A, 0x1F, 0xE2, 0xB3, 0x67, + 0x8F, 0x87, 0xC5, 0xC2, 0xCF, 0xA1, 0x20, 0xEE, 0x47, 0x8F, 0x84, 0xCE, + 0x9A, 0xA7, 0x8F, 0x1F, 0xBD, 0x7E, 0x73, 0x1D, 0x43, 0x32, 0x5A, 0x87, + 0x90, 0x76, 0xE3, 0x64, 0x82, 0xEE, 0xBB, 0xA6, 0x69, 0xDC, 0x03, 0x3B, + 0xC1, 0x37, 0xD7, 0xC3, 0xC7, 0x44, 0x74, 0x50, 0x45, 0xB0, 0xAA, 0x9F, + 0xE5, 0xE8, 0x29, 0x15, 0x0E, 0x26, 0xD0, 0x5A, 0xB3, 0xC8, 0x9E, 0xFF, + 0x88, 0x31, 0xCA, 0x5A, 0xB3, 0xDB, 0x4F, 0xB9, 0x54, 0x56, 0x99, 0xB1, + 0x2C, 0x56, 0x2A, 0x55, 0x72, 0xE1, 0x93, 0x4E, 0x69, 0xD5, 0x36, 0xCE, + 0x1C, 0x2A, 0x5C, 0x8B, 0x10, 0x50, 0x11, 0x9D, 0xB5, 0x87, 0x9E, 0x0A, + 0xE7, 0x34, 0x7F, 0x25, 0x48, 0x24, 0xA8, 0x56, 0x94, 0x52, 0x75, 0xAD, + 0xF6, 0x73, 0xE0, 0x93, 0x91, 0x88, 0x8C, 0x56, 0xDC, 0x8B, 0x28, 0xA5, + 0x2A, 0xC7, 0x53, 0x0C, 0x35, 0x98, 0x43, 0x74, 0xA0, 0xB0, 0xD6, 0x6A, + 0x21, 0xE4, 0x30, 0x74, 0x9B, 0xFD, 0x44, 0x00, 0x42, 0xC8, 0xE5, 0xA2, + 0x97, 0x52, 0x74, 0x9D, 0xBB, 0xB9, 0xDD, 0xFD, 0xF6, 0xCB, 0xD7, 0xEF, + 0xBF, 0xFB, 0xF8, 0xE4, 0x64, 0xD1, 0xB6, 0x4E, 0x09, 0xB9, 0x5A, 0xAA, + 0xD5, 0x72, 0x48, 0x29, 0xBD, 0xB9, 0xBC, 0xFD, 0xF4, 0xF3, 0xD7, 0xDF, + 0xBD, 0xBE, 0xDE, 0x6C, 0x76, 0xDB, 0xDD, 0x18, 0x73, 0x26, 0xF8, 0x9D, + 0x9F, 0x16, 0xE8, 0x10, 0x5F, 0xFB, 0xE4, 0xD1, 0xE9, 0x6A, 0xE8, 0x1E, + 0x9D, 0xAE, 0x4E, 0xD7, 0xAB, 0x4A, 0xF5, 0x9B, 0x97, 0x6F, 0xEF, 0xEE, + 0xB6, 0xAF, 0xAF, 0x6E, 0xEF, 0x37, 0x3B, 0x6B, 0xCD, 0xD9, 0xE9, 0x89, + 0x56, 0xEA, 0xA5, 0x0F, 0xBB, 0x71, 0x3A, 0x59, 0x2D, 0xCE, 0xCE, 0x4E, + 0x90, 0xC8, 0xFB, 0xB0, 0x9F, 0x7C, 0x88, 0x91, 0xDF, 0x58, 0xAD, 0xF4, + 0x34, 0x7B, 0xAD, 0x54, 0x63, 0xAD, 0x0F, 0xF1, 0xFC, 0x6C, 0xAD, 0xB4, + 0x8A, 0x29, 0xD7, 0x5A, 0x59, 0x29, 0xC7, 0x0F, 0x3D, 0x1D, 0xC9, 0x8B, + 0x5A, 0x2B, 0x87, 0xD0, 0xB3, 0xA8, 0xD5, 0x87, 0x68, 0xB4, 0x46, 0xA4, + 0xC5, 0x30, 0xE8, 0x18, 0xF5, 0x31, 0xB7, 0x57, 0x49, 0xB5, 0x5C, 0x9F, + 0xAD, 0x96, 0xC3, 0xE8, 0xA3, 0xEC, 0xD7, 0x76, 0x75, 0x0E, 0xDB, 0x1B, + 0x42, 0x8A, 0x25, 0xED, 0xC7, 0xE9, 0xEC, 0xF4, 0x44, 0x62, 0x8D, 0x29, + 0x97, 0xCA, 0x3A, 0x40, 0xB9, 0x78, 0xFA, 0xDE, 0xAB, 0xAF, 0xBF, 0x94, + 0xFB, 0xAF, 0xCE, 0x9F, 0x9C, 0xBD, 0x2C, 0xE8, 0x8C, 0x6E, 0x9D, 0x33, + 0xDA, 0xB4, 0xCE, 0x38, 0x6B, 0x46, 0x1F, 0x2C, 0x63, 0x3A, 0xB5, 0xE6, + 0x52, 0x9B, 0xC6, 0xED, 0xA7, 0x59, 0x6B, 0xCE, 0x5F, 0xD7, 0x4A, 0x69, + 0x96, 0xBF, 0x32, 0x2A, 0xCF, 0x34, 0xBF, 0xE1, 0xF3, 0x17, 0xB1, 0x94, + 0xC2, 0xAA, 0x77, 0x6B, 0x5D, 0xAD, 0x88, 0x94, 0xF8, 0x99, 0xE6, 0x9F, + 0x64, 0x4C, 0x45, 0xE9, 0x6C, 0xB4, 0xE1, 0x28, 0x6D, 0xAE, 0x10, 0x2E, + 0xB5, 0x36, 0xAD, 0x03, 0x51, 0x6B, 0xA9, 0xCE, 0x1A, 0x21, 0x45, 0x2E, + 0xA5, 0xB1, 0xA6, 0xEB, 0x1A, 0x36, 0x48, 0x72, 0x95, 0x5C, 0xCE, 0x95, + 0x9B, 0xDF, 0x84, 0xD0, 0x0C, 0x90, 0x5B, 0xA7, 0xAD, 0xD6, 0x46, 0x69, + 0x63, 0x94, 0xD2, 0x8A, 0x19, 0x71, 0x21, 0x04, 0x00, 0xB2, 0x56, 0xA0, + 0x14, 0xAC, 0x5C, 0xE9, 0xC9, 0xF4, 0x68, 0x95, 0x04, 0xA0, 0x0F, 0xF1, + 0xF3, 0xC7, 0x35, 0x92, 0xE8, 0xF7, 0x4E, 0xA5, 0x07, 0xBD, 0x35, 0xFC, + 0x4E, 0xA9, 0x88, 0xF4, 0x80, 0x82, 0x01, 0xC0, 0x43, 0xD7, 0x21, 0x1D, + 0xF9, 0xBB, 0x87, 0xBF, 0x44, 0x4A, 0xA1, 0x8D, 0x16, 0x52, 0x10, 0x81, + 0x14, 0x92, 0x04, 0x70, 0x6B, 0xC6, 0xC3, 0xBE, 0x23, 0x38, 0x67, 0x95, + 0x08, 0x11, 0xDB, 0xC6, 0xA5, 0x94, 0x1B, 0x67, 0x80, 0x7B, 0x3D, 0xA4, + 0x44, 0xC4, 0x92, 0xCB, 0xC9, 0x62, 0x78, 0xFA, 0xF8, 0xB4, 0x6D, 0xDD, + 0xD7, 0xAF, 0xAE, 0x36, 0xBB, 0xF1, 0x80, 0x4F, 0x2B, 0x69, 0x94, 0x92, + 0x52, 0x21, 0x56, 0x04, 0x9A, 0x43, 0x80, 0xDF, 0x0B, 0x90, 0x61, 0x48, + 0xDE, 0x18, 0x20, 0x80, 0x10, 0x03, 0x3B, 0xB1, 0xEA, 0x41, 0x7E, 0xC9, + 0x9A, 0x55, 0x2C, 0xB5, 0x6A, 0xA3, 0x01, 0xD4, 0x7E, 0x9C, 0x38, 0x10, + 0x38, 0x97, 0xAA, 0x94, 0x02, 0x29, 0x8D, 0xD6, 0x43, 0xDB, 0xFC, 0xFC, + 0x57, 0x5F, 0xDC, 0xDE, 0xEF, 0xFF, 0xF8, 0xC7, 0x1F, 0x6A, 0xAD, 0xC7, + 0xFD, 0xF4, 0xF2, 0xD5, 0xDB, 0xA6, 0x69, 0x14, 0x97, 0x27, 0x24, 0xC4, + 0x8A, 0x81, 0x92, 0x89, 0x09, 0x09, 0xB8, 0x5C, 0xB2, 0xEF, 0x1B, 0x6B, + 0x8D, 0xB3, 0xA6, 0xD4, 0xCA, 0xC4, 0x87, 0xD1, 0xAA, 0xE4, 0x12, 0x42, + 0x48, 0x31, 0x3D, 0x7F, 0xF6, 0x18, 0x00, 0xC6, 0xC9, 0xF7, 0x5D, 0x37, + 0xF9, 0xB0, 0x9B, 0x66, 0x76, 0xF5, 0x9F, 0x9F, 0xAE, 0x6B, 0xAD, 0x6F, + 0xDE, 0xDE, 0x5C, 0xDF, 0xDC, 0x8F, 0xE3, 0xD4, 0x38, 0xFB, 0xE6, 0xCD, + 0xDB, 0xFB, 0xED, 0xEE, 0xD9, 0xE3, 0x8B, 0xC6, 0x9A, 0x52, 0xF2, 0x34, + 0x87, 0xE5, 0x30, 0x0C, 0x7D, 0xCF, 0x3F, 0xFC, 0x18, 0xF3, 0x7E, 0x9A, + 0x63, 0x2E, 0x52, 0xC8, 0xA1, 0x6F, 0x97, 0x43, 0xFF, 0xE6, 0xF2, 0xE6, + 0xE6, 0x6E, 0x1B, 0x62, 0x9C, 0xE7, 0x28, 0x04, 0x58, 0x6B, 0x1E, 0x3F, + 0x3A, 0x7D, 0xF6, 0xE4, 0x1C, 0x04, 0x58, 0x63, 0x1F, 0xAC, 0x45, 0x70, + 0xF4, 0x4E, 0x1E, 0xFD, 0xBF, 0x82, 0xC5, 0x9E, 0x3C, 0xEE, 0x1D, 0x15, + 0x82, 0x22, 0xE7, 0x5A, 0x0B, 0xAA, 0xA3, 0x5B, 0x16, 0x00, 0x22, 0xB7, + 0xCE, 0x95, 0x32, 0x4E, 0x73, 0xCE, 0x25, 0xA5, 0x5C, 0x0A, 0x02, 0x88, + 0x52, 0xEA, 0x31, 0x1C, 0x05, 0x08, 0xA1, 0x94, 0x6A, 0xB4, 0x29, 0x95, + 0x85, 0x78, 0x20, 0x65, 0x25, 0x00, 0x63, 0x74, 0xD3, 0x68, 0xA3, 0xF8, + 0x70, 0x94, 0x44, 0x94, 0x6B, 0x79, 0xB8, 0xF0, 0x1E, 0x3D, 0x3A, 0x7B, + 0xF5, 0xFA, 0xED, 0x6E, 0x3F, 0x12, 0xD1, 0xF9, 0xE9, 0x1A, 0x11, 0x53, + 0xCA, 0x31, 0xCE, 0xC3, 0xA2, 0x1F, 0xC7, 0x02, 0x00, 0xD6, 0x1A, 0xDE, + 0x1D, 0x84, 0x94, 0x15, 0x49, 0xFF, 0xCB, 0x3F, 0xFD, 0x41, 0x2E, 0xF5, + 0x97, 0xBF, 0xF9, 0x16, 0x11, 0x8C, 0xD1, 0x9F, 0x7F, 0xF5, 0x76, 0xBD, + 0xEC, 0x5E, 0xBC, 0x73, 0xF1, 0xC3, 0x1F, 0xBC, 0xFB, 0xF2, 0xF5, 0x8D, + 0x94, 0xA2, 0x56, 0xFC, 0xE6, 0xBB, 0xAB, 0x17, 0xCF, 0xCE, 0x95, 0x91, + 0x9F, 0xFC, 0xFA, 0x8B, 0x7F, 0xFC, 0xC5, 0x17, 0x93, 0x8F, 0x4D, 0xE3, + 0x5E, 0xBE, 0xB9, 0x9E, 0xC6, 0xC9, 0x59, 0xDD, 0x38, 0x17, 0x62, 0x9A, + 0xE6, 0x59, 0x80, 0xD0, 0x4A, 0x55, 0x44, 0x09, 0xA2, 0x12, 0x68, 0x29, + 0x19, 0xEA, 0xB2, 0x56, 0x6F, 0xF7, 0xF1, 0xBB, 0x57, 0x57, 0xFB, 0x71, + 0xF6, 0x31, 0x2F, 0x97, 0x4B, 0x29, 0x61, 0xB7, 0xDF, 0x9F, 0xAC, 0x96, + 0xEB, 0xD5, 0x42, 0x4A, 0xF1, 0xBD, 0xF7, 0x9F, 0x3F, 0x79, 0x74, 0x26, + 0x95, 0x9C, 0x66, 0x6F, 0x8C, 0x5E, 0x2F, 0x17, 0x29, 0x15, 0xA5, 0xA5, + 0xB1, 0xA6, 0xEF, 0xDA, 0xCD, 0xFD, 0x5E, 0x4A, 0xB9, 0x5A, 0x0D, 0xAE, + 0x71, 0x6D, 0xD7, 0x2C, 0x08, 0x9D, 0x31, 0xC6, 0x18, 0x66, 0x94, 0x63, + 0xC9, 0x8C, 0x4D, 0x02, 0x50, 0x4C, 0xF9, 0x7E, 0xB3, 0xBB, 0xDF, 0xEC, + 0x7D, 0x4C, 0x40, 0xD4, 0x75, 0xEE, 0xF4, 0x64, 0xC9, 0x13, 0x7B, 0x4A, + 0xB9, 0xED, 0x9A, 0x52, 0x2B, 0x12, 0x18, 0xAB, 0x87, 0xD5, 0xF2, 0xE3, + 0x1F, 0xFC, 0xE0, 0x7E, 0xF7, 0x0F, 0x85, 0xC4, 0xFA, 0xDD, 0x8F, 0xF7, + 0xAF, 0x54, 0xB9, 0x79, 0x0B, 0xB5, 0xC6, 0x14, 0x77, 0xE3, 0xA8, 0x04, + 0x74, 0x8B, 0xB3, 0x5C, 0x6B, 0x0A, 0x21, 0xFA, 0xF4, 0x0E, 0x10, 0x82, + 0xBC, 0xBA, 0xBA, 0x3C, 0x5D, 0x5D, 0x37, 0xCD, 0xD0, 0x36, 0x06, 0x88, + 0x9C, 0xD3, 0xC6, 0x9A, 0xFD, 0xEC, 0xB1, 0x22, 0x4A, 0x41, 0x02, 0xA4, + 0x52, 0xC3, 0x62, 0x88, 0x21, 0xB6, 0x4D, 0x23, 0x04, 0x88, 0xD6, 0x49, + 0x21, 0x43, 0x4C, 0x29, 0x07, 0x02, 0xA8, 0xA5, 0x70, 0xB7, 0x2B, 0x41, + 0xE6, 0x57, 0xFB, 0x70, 0xDF, 0x4A, 0x51, 0x10, 0x15, 0xA9, 0x74, 0x4C, + 0xF6, 0xAD, 0x95, 0x78, 0xF5, 0xCB, 0xA5, 0x60, 0x35, 0xA1, 0xC4, 0x52, + 0xAA, 0x94, 0xB2, 0x62, 0x76, 0xF6, 0xC0, 0x97, 0x4B, 0x29, 0x58, 0x0B, + 0x5A, 0x4A, 0x35, 0xFA, 0x50, 0x8F, 0x24, 0xA5, 0x54, 0xD2, 0x48, 0x29, + 0x6B, 0x41, 0x00, 0x72, 0xCE, 0x32, 0xC2, 0xC5, 0xCF, 0xA8, 0xD6, 0xCA, + 0x28, 0x69, 0xAD, 0x31, 0x6C, 0x58, 0x21, 0x62, 0xE1, 0xAB, 0x50, 0x82, + 0x61, 0x23, 0x02, 0xC2, 0x4A, 0x07, 0x7E, 0xBB, 0xA2, 0x94, 0xC2, 0x3A, + 0xC3, 0x85, 0x52, 0x52, 0x02, 0x5F, 0x1B, 0xF8, 0x7B, 0xEE, 0xC2, 0x87, + 0xE3, 0xEC, 0xFF, 0x27, 0x7E, 0x7D, 0xD8, 0x25, 0x01, 0x0E, 0xCD, 0xB5, + 0x0F, 0x53, 0x18, 0x1D, 0x75, 0x67, 0xFC, 0x07, 0x95, 0x92, 0xD6, 0xEA, + 0x69, 0x06, 0x29, 0x45, 0xAE, 0x05, 0x91, 0x78, 0x9B, 0xE0, 0x69, 0x2F, + 0xE6, 0x1C, 0x63, 0xE6, 0x93, 0xB1, 0x69, 0x1A, 0x06, 0xD1, 0xB5, 0xD6, + 0x5A, 0x69, 0xEE, 0x2D, 0x3F, 0x59, 0x2D, 0xCE, 0xCF, 0xD7, 0xF7, 0xA3, + 0xFF, 0xF6, 0xF2, 0x8E, 0x63, 0x5D, 0x85, 0x10, 0x08, 0x58, 0x62, 0xE5, + 0xB1, 0x34, 0xA5, 0x54, 0x11, 0x8F, 0xC1, 0x62, 0x42, 0xB0, 0x60, 0x0A, + 0xC8, 0x68, 0xCD, 0x84, 0xA3, 0x35, 0x56, 0x2B, 0xC5, 0x71, 0x8F, 0x87, + 0x9D, 0x86, 0x20, 0x95, 0x6C, 0x94, 0x16, 0x20, 0x0A, 0x56, 0x6B, 0x0D, + 0x17, 0x1A, 0x18, 0xA3, 0x4B, 0x45, 0x86, 0xFB, 0x62, 0x4C, 0x42, 0xC8, + 0x2F, 0xBE, 0x79, 0xBD, 0x9F, 0xFC, 0x07, 0xEF, 0x3E, 0x7D, 0xFE, 0xEC, + 0x62, 0xB7, 0x1F, 0xDF, 0x5E, 0x5E, 0x9D, 0x9E, 0xAC, 0xD9, 0xC4, 0x66, + 0xD9, 0xCA, 0x56, 0xB0, 0x62, 0xDD, 0xEE, 0x47, 0x96, 0xF5, 0x31, 0x62, + 0x2A, 0x85, 0xC8, 0xB9, 0x8C, 0xD3, 0xA8, 0xB5, 0x31, 0x5A, 0x0B, 0x21, + 0xBC, 0x8F, 0xBF, 0xFD, 0xE2, 0x1B, 0x00, 0xB1, 0x5A, 0x2F, 0xCC, 0xA4, + 0x39, 0x96, 0x2A, 0x84, 0x78, 0x7E, 0xB6, 0xF6, 0x21, 0xBE, 0x79, 0x7B, + 0x13, 0x63, 0x2A, 0xA5, 0x70, 0x54, 0xD1, 0x6A, 0xB9, 0x78, 0xF1, 0xFC, + 0xE9, 0x38, 0xCE, 0x4A, 0x6B, 0x24, 0x91, 0x2B, 0x7D, 0xFD, 0xF2, 0x8D, + 0xBB, 0xBA, 0x6D, 0x5B, 0xB7, 0xDD, 0xEE, 0xF9, 0xEA, 0xED, 0xDA, 0x86, + 0x08, 0xFB, 0xBE, 0xFD, 0xEA, 0xDB, 0x37, 0x57, 0x37, 0x9B, 0xDD, 0x3C, + 0x59, 0x7D, 0xA8, 0xE6, 0x70, 0xCE, 0x01, 0x88, 0x9C, 0x6A, 0xD2, 0x1C, + 0x41, 0x2E, 0x95, 0x3C, 0xA6, 0xAA, 0x12, 0x4B, 0xEA, 0x91, 0x5B, 0x1D, + 0x88, 0x8F, 0xAD, 0x1A, 0x85, 0x10, 0x4A, 0xE9, 0xE3, 0x27, 0x48, 0x52, + 0x4A, 0x55, 0x2B, 0x22, 0x56, 0xA4, 0x9C, 0x4B, 0x08, 0x71, 0xF2, 0x71, + 0x3F, 0x4E, 0x21, 0x26, 0x10, 0x30, 0x8E, 0x33, 0x00, 0x34, 0x6D, 0x23, + 0x08, 0xDA, 0xD6, 0xB1, 0xF2, 0x09, 0x80, 0x85, 0x44, 0x64, 0x8C, 0x22, + 0x02, 0xAC, 0x3C, 0x2B, 0x17, 0xCD, 0x50, 0x06, 0xA2, 0x38, 0x3E, 0x54, + 0x02, 0x44, 0x2E, 0x45, 0x29, 0xC9, 0xF5, 0x86, 0xD6, 0xDA, 0xED, 0x38, + 0x75, 0x4D, 0xE3, 0x43, 0x42, 0x02, 0xA6, 0x4A, 0x9B, 0xA6, 0x71, 0x2E, + 0xB0, 0x0D, 0x00, 0x00, 0x4A, 0x45, 0xCC, 0xD5, 0x18, 0x52, 0xFF, 0xF5, + 0x7F, 0xF3, 0xDF, 0x7F, 0xF7, 0xF6, 0x76, 0xF6, 0xC9, 0x59, 0xC3, 0xF1, + 0x81, 0xF3, 0x1C, 0x6F, 0xEE, 0xC6, 0xC9, 0x87, 0x93, 0xD5, 0x82, 0xE9, + 0xB6, 0x47, 0x67, 0x2B, 0x1F, 0xC2, 0xCF, 0xFE, 0xFE, 0xD3, 0xBF, 0xFF, + 0xE4, 0x8B, 0xC9, 0xC7, 0xD9, 0x87, 0xCB, 0xAB, 0xDB, 0x9C, 0xB3, 0x92, + 0x0A, 0x40, 0x20, 0x51, 0xCA, 0x65, 0xB7, 0x1B, 0xAD, 0x35, 0x5C, 0x0F, + 0x6E, 0xB5, 0xEE, 0x1B, 0x17, 0x53, 0x9E, 0x7D, 0x78, 0x74, 0xB6, 0xB6, + 0xC6, 0x5C, 0xDF, 0x6E, 0xBE, 0x7B, 0x7D, 0xC9, 0xE2, 0xCF, 0xAE, 0x69, + 0xC6, 0x69, 0x46, 0xA4, 0x8B, 0x47, 0xA7, 0x17, 0xE7, 0x27, 0x27, 0x27, + 0xAB, 0x67, 0x4F, 0x1E, 0x59, 0xA3, 0xAD, 0x36, 0x43, 0xDF, 0xAD, 0x57, + 0x0B, 0x29, 0xE5, 0xEC, 0x43, 0x29, 0x95, 0xED, 0x63, 0x5F, 0x7E, 0xFD, + 0xAA, 0x69, 0x9B, 0xF5, 0x6A, 0xC1, 0x5B, 0x7A, 0xDF, 0x3A, 0xAD, 0x15, + 0x02, 0xC5, 0x94, 0x73, 0xAD, 0x2C, 0xA4, 0x44, 0xA4, 0x52, 0x71, 0x3F, + 0x4D, 0xAC, 0x11, 0x29, 0xB5, 0xB4, 0xCE, 0x3D, 0xBE, 0x38, 0xED, 0xFB, + 0xA6, 0x6D, 0xDD, 0x6A, 0x35, 0x70, 0x11, 0x96, 0xD5, 0x46, 0x2A, 0xE1, + 0xAC, 0xD6, 0xD6, 0x0C, 0x9D, 0xDB, 0x6C, 0xEE, 0xA7, 0x90, 0x6C, 0xDB, + 0x4B, 0x29, 0xD2, 0xBC, 0x1F, 0xF7, 0x7B, 0xFE, 0x69, 0x12, 0xE1, 0xD9, + 0x93, 0xE7, 0xCE, 0x59, 0x2D, 0x85, 0xD2, 0xFA, 0xDD, 0x1F, 0xFD, 0xD1, + 0xF5, 0xE5, 0xDB, 0xEB, 0x6F, 0xBF, 0x6A, 0x17, 0xA7, 0xA5, 0xBF, 0xD0, + 0x52, 0xD0, 0xD1, 0xEB, 0x9F, 0x52, 0x21, 0x80, 0xB6, 0x69, 0xC6, 0xD9, + 0xF3, 0x4D, 0x5B, 0x91, 0x9C, 0xB5, 0xAC, 0xB0, 0x6D, 0x1A, 0xDB, 0x75, + 0x6D, 0x8C, 0x1C, 0x7A, 0x21, 0x6B, 0x45, 0x66, 0xEE, 0x0F, 0x7E, 0x42, + 0x00, 0x00, 0xEA, 0x9A, 0x46, 0x48, 0xC9, 0x17, 0xA0, 0x10, 0x02, 0x10, + 0x10, 0xA8, 0x6D, 0x1C, 0x10, 0xB0, 0xB8, 0x29, 0x97, 0x92, 0x73, 0xE1, + 0x21, 0xEA, 0xE0, 0x8F, 0x61, 0x6C, 0xC5, 0xB9, 0xAE, 0x75, 0x8D, 0xB3, + 0xBC, 0x26, 0x38, 0x6B, 0xD8, 0x5D, 0xAC, 0xB5, 0xD4, 0x4A, 0x02, 0x09, + 0x63, 0x7E, 0x77, 0x73, 0x2A, 0x25, 0x78, 0x0A, 0x38, 0xEA, 0xCE, 0x19, + 0xBA, 0xE5, 0x10, 0x02, 0xC1, 0xFB, 0x24, 0x96, 0xC3, 0x4F, 0x12, 0x2B, + 0x32, 0xB4, 0xE7, 0x9C, 0x91, 0x52, 0xE0, 0x61, 0x4F, 0x7C, 0x28, 0x63, + 0x3D, 0x1C, 0x4C, 0x5C, 0x0A, 0x06, 0xBF, 0x1B, 0xD7, 0xE0, 0x01, 0xFB, + 0xFF, 0xBD, 0x03, 0x4B, 0x3C, 0xFC, 0x7A, 0x98, 0xE9, 0xE8, 0x08, 0x86, + 0x57, 0xC4, 0x5A, 0xAA, 0x10, 0xC2, 0xC7, 0x74, 0x14, 0x13, 0x55, 0xA6, + 0x17, 0x6B, 0xA9, 0x3E, 0xC4, 0x18, 0x33, 0x22, 0xE6, 0x94, 0xE6, 0x69, + 0x0E, 0x21, 0x54, 0xAC, 0xAD, 0x73, 0x15, 0xB1, 0x20, 0x1A, 0xA3, 0xFE, + 0xE0, 0xA3, 0x17, 0x9B, 0xFD, 0x7C, 0x75, 0xBB, 0xA9, 0x47, 0x1B, 0xA6, + 0x10, 0x82, 0xF5, 0x04, 0x7C, 0x82, 0x2B, 0xA5, 0x94, 0xD2, 0x47, 0x29, + 0x19, 0xF2, 0xCD, 0x27, 0x84, 0xA8, 0x07, 0xF6, 0x99, 0xB4, 0xD6, 0xB9, + 0x94, 0x98, 0xB2, 0x96, 0xCA, 0x5A, 0xCD, 0xC5, 0x31, 0xAC, 0xF3, 0x20, + 0x80, 0x9C, 0x93, 0xB5, 0x96, 0xBF, 0xEC, 0xC5, 0x62, 0x60, 0x34, 0x8D, + 0x8E, 0x7C, 0x2E, 0x73, 0xAC, 0x57, 0x37, 0x77, 0x7F, 0xF5, 0xF7, 0xBF, + 0x54, 0x4A, 0x3F, 0x3A, 0x5F, 0x6F, 0x36, 0x5B, 0x21, 0xE5, 0x93, 0x27, + 0xE7, 0xD6, 0x6A, 0x3F, 0x87, 0x52, 0x6A, 0xCC, 0x99, 0xD9, 0x80, 0xD9, + 0x87, 0xC9, 0x87, 0xBB, 0xBB, 0x0D, 0x00, 0xA4, 0x9C, 0x57, 0x8B, 0x05, + 0x1D, 0x12, 0xE2, 0xD4, 0x6E, 0x9C, 0xE7, 0x39, 0xD4, 0x8A, 0x3E, 0x86, + 0xED, 0x6E, 0x04, 0x22, 0xCD, 0xEC, 0x0D, 0x88, 0xBB, 0xFB, 0xED, 0xCB, + 0xD7, 0x97, 0xBB, 0xFD, 0xC4, 0x2D, 0xD1, 0x5D, 0xD7, 0x36, 0x8D, 0xC5, + 0x4A, 0x42, 0xC8, 0xEB, 0xDB, 0xFB, 0xCF, 0xBE, 0xFC, 0xE6, 0xDB, 0x97, + 0x6F, 0x2F, 0xAF, 0xEF, 0x27, 0x1F, 0xA6, 0x69, 0xE6, 0x84, 0x9F, 0x8A, + 0x78, 0x7D, 0xB3, 0xD9, 0x4D, 0xF3, 0x76, 0x37, 0x7D, 0xFE, 0xF5, 0xCB, + 0x39, 0x44, 0x25, 0x35, 0x1F, 0xDC, 0xA5, 0x20, 0x2B, 0x2E, 0x41, 0xF0, + 0x21, 0x85, 0x52, 0xC8, 0x5C, 0x6B, 0xCE, 0x35, 0xA5, 0x92, 0x2B, 0x0A, + 0x01, 0x0C, 0xC5, 0x1E, 0x04, 0x8C, 0x44, 0x39, 0xD7, 0x18, 0x33, 0x1D, + 0x8D, 0xAE, 0x5C, 0x2D, 0x4A, 0x04, 0x05, 0x31, 0x97, 0xB2, 0x1B, 0xA7, + 0xD9, 0xC7, 0xD9, 0x87, 0x10, 0x12, 0xBF, 0x89, 0xC4, 0xA9, 0xBF, 0x42, + 0x5A, 0x6B, 0xB8, 0x81, 0xD8, 0x87, 0xC4, 0x18, 0x1B, 0x03, 0xFF, 0x4A, + 0x6A, 0x36, 0xA5, 0x39, 0xE7, 0xA4, 0x14, 0x74, 0xBC, 0xDB, 0x90, 0x28, + 0xA6, 0x14, 0x63, 0x3C, 0x0A, 0x8F, 0x29, 0xA5, 0xBC, 0x58, 0x2E, 0x80, + 0x80, 0x01, 0x38, 0x56, 0x1D, 0x6D, 0xB7, 0xD3, 0xED, 0xCD, 0x7D, 0x29, + 0x75, 0x18, 0x3A, 0x66, 0x45, 0x39, 0x71, 0x13, 0x40, 0xA8, 0x7F, 0xF9, + 0x9F, 0xFC, 0xBB, 0xED, 0x6E, 0x86, 0xA3, 0x32, 0x3B, 0xA6, 0x3C, 0xF4, + 0xED, 0xF9, 0xE9, 0xAA, 0x94, 0x3A, 0xF9, 0x78, 0xB2, 0xEE, 0x67, 0xEF, + 0x7F, 0xF3, 0xF9, 0x77, 0xFF, 0xF0, 0x8B, 0x2F, 0x6E, 0x37, 0xA3, 0x35, + 0x6A, 0xBB, 0xDB, 0x85, 0x94, 0x8C, 0x52, 0x5D, 0xDB, 0x00, 0x88, 0x9C, + 0x33, 0xBF, 0x48, 0x6D, 0xD7, 0x48, 0x21, 0xB9, 0x2C, 0x03, 0x4B, 0xE9, + 0xBB, 0x76, 0xBD, 0x5A, 0xAC, 0x97, 0x8B, 0x8F, 0x3F, 0x7A, 0x77, 0xF2, + 0xFE, 0x6E, 0xB3, 0x6F, 0x1B, 0x6B, 0xAD, 0x56, 0x52, 0x9E, 0xAC, 0x17, + 0x43, 0xDF, 0x9E, 0xAC, 0x96, 0x5D, 0xDB, 0x9C, 0x9D, 0x2C, 0xD7, 0xAB, + 0x05, 0x6B, 0xCA, 0x9B, 0xE6, 0x90, 0xCA, 0x94, 0x72, 0x9E, 0xA6, 0x59, + 0x0A, 0xD9, 0x75, 0x6D, 0xD7, 0x36, 0x04, 0xA4, 0x94, 0x5A, 0x2E, 0x07, + 0xA3, 0xB5, 0x31, 0x0A, 0x24, 0x43, 0xBC, 0x98, 0x33, 0xE6, 0xC4, 0xBD, + 0x2D, 0xC4, 0x23, 0xC9, 0x7E, 0xF2, 0x04, 0xA4, 0xA4, 0x34, 0xC6, 0x3A, + 0xA3, 0xCF, 0x4E, 0x57, 0xEB, 0xD5, 0x82, 0x21, 0x5B, 0x6B, 0x4D, 0xDB, + 0x38, 0xE7, 0x0C, 0x2B, 0x51, 0x41, 0x48, 0x4D, 0xD9, 0x48, 0x9A, 0x52, + 0xAD, 0xB9, 0x4A, 0xEB, 0xA8, 0x96, 0x38, 0x6E, 0x4B, 0xCE, 0x02, 0xC0, + 0x6A, 0xD3, 0xAF, 0xD6, 0x5D, 0xD7, 0xD5, 0x30, 0x3D, 0x79, 0xFF, 0xA3, + 0xE1, 0xD9, 0x87, 0x5F, 0xFD, 0xEA, 0x93, 0xE9, 0xEE, 0xED, 0xF0, 0xE8, + 0x5D, 0xAF, 0x4F, 0x08, 0x4B, 0xD7, 0x75, 0xC6, 0x9A, 0x43, 0xD4, 0xCC, + 0xA2, 0x67, 0xCC, 0x85, 0xAD, 0x3D, 0x48, 0x22, 0xA5, 0x2C, 0x79, 0x43, + 0xAC, 0xE8, 0x9C, 0xEB, 0xDB, 0xA6, 0x69, 0x9C, 0xB5, 0xA6, 0x69, 0x5C, + 0xAD, 0x58, 0x4B, 0x65, 0xE9, 0x16, 0x00, 0x58, 0x63, 0xDA, 0xD6, 0x09, + 0x21, 0x0E, 0x0D, 0xF5, 0xB5, 0x1A, 0xA3, 0xBB, 0xB6, 0xB1, 0xD6, 0xF2, + 0x13, 0xF3, 0x60, 0xF4, 0xEB, 0xDA, 0xA6, 0x69, 0x1B, 0xAD, 0x65, 0x66, + 0x97, 0xB8, 0xD6, 0x42, 0x4A, 0xAC, 0xB8, 0x5C, 0x74, 0x5A, 0xA9, 0xC6, + 0xD9, 0xB6, 0x75, 0x1C, 0x12, 0x77, 0x08, 0x1E, 0x20, 0x2C, 0xA5, 0x7A, + 0xCF, 0x7D, 0xAE, 0x07, 0x34, 0x84, 0xA5, 0x1E, 0x15, 0x2B, 0x63, 0x1F, + 0x4C, 0x75, 0x1F, 0x3A, 0xC9, 0x49, 0x70, 0x25, 0x22, 0x17, 0x2F, 0x0A, + 0x21, 0x8C, 0x35, 0x4A, 0xB1, 0x42, 0x4D, 0x1C, 0x36, 0xC4, 0x63, 0x31, + 0x21, 0x1C, 0x3D, 0x6E, 0x6C, 0x80, 0x3E, 0xAE, 0x99, 0xF8, 0xE0, 0x3B, + 0x7E, 0x38, 0xD8, 0xE0, 0x9F, 0x47, 0xF4, 0xB1, 0xB4, 0x8C, 0x41, 0x7D, + 0xD6, 0xDC, 0xA6, 0x98, 0x2A, 0x51, 0x4C, 0x39, 0xA5, 0xC2, 0x24, 0x86, + 0x51, 0x06, 0x0F, 0x90, 0x7C, 0x4E, 0xA5, 0x28, 0x2D, 0x79, 0x24, 0x61, + 0x7F, 0xA8, 0x10, 0x22, 0xE6, 0x74, 0x73, 0xBB, 0x79, 0xF7, 0x9D, 0x0B, + 0xAB, 0xCD, 0xEB, 0xAB, 0xDB, 0x10, 0x23, 0x11, 0xF1, 0xD0, 0xC5, 0xC2, + 0x5B, 0xAE, 0xD1, 0x06, 0x00, 0xA5, 0x24, 0xD1, 0xA1, 0x28, 0xB7, 0xD4, + 0xC2, 0x94, 0xA2, 0x31, 0x86, 0x43, 0xD5, 0xB4, 0x52, 0x87, 0xBC, 0xE4, + 0xE3, 0xEB, 0xC4, 0x5F, 0xA9, 0xD1, 0x5A, 0x08, 0x2A, 0x15, 0x73, 0x2D, + 0x2C, 0xD9, 0x47, 0xA2, 0x10, 0x52, 0xDF, 0xBB, 0xC5, 0xA2, 0x9B, 0xE6, + 0xC0, 0xC3, 0x32, 0x13, 0x9D, 0x43, 0xDB, 0xE6, 0x52, 0x7E, 0xFD, 0xDB, + 0xAF, 0x77, 0xBB, 0xF9, 0xFC, 0x6C, 0x3D, 0x74, 0xED, 0x38, 0xCD, 0x31, + 0xA4, 0xED, 0x6E, 0x3A, 0x3D, 0x5B, 0x2F, 0x86, 0x5E, 0x1C, 0xBC, 0x4A, + 0x86, 0x49, 0x46, 0x6E, 0xCF, 0x7D, 0xF6, 0xE4, 0xA2, 0xED, 0x5A, 0xA3, + 0x8D, 0xD2, 0xEA, 0xEC, 0x74, 0xB5, 0x5E, 0x2F, 0x27, 0xEF, 0x9D, 0xB5, + 0x5A, 0x69, 0x24, 0xE4, 0x86, 0x6F, 0x56, 0xAE, 0xDF, 0x6F, 0xF7, 0x57, + 0x57, 0xB7, 0x4A, 0xF2, 0x07, 0x77, 0xD8, 0xFE, 0x62, 0x2A, 0x5F, 0x7F, + 0xF7, 0x7A, 0x9C, 0x3D, 0xFF, 0x18, 0x87, 0xBE, 0x5D, 0x2E, 0x7A, 0x25, + 0xD5, 0xE5, 0xCD, 0xBD, 0xF7, 0x29, 0xA6, 0xCC, 0x95, 0xEC, 0x00, 0x10, + 0x52, 0x8E, 0x29, 0x31, 0x5E, 0xC0, 0xD1, 0x47, 0xA5, 0xD4, 0x94, 0xF3, + 0xEC, 0x03, 0x00, 0xD4, 0x8A, 0x5C, 0xAC, 0xE9, 0x43, 0xF4, 0x3E, 0xB2, + 0x21, 0x3C, 0xC4, 0xB8, 0x1F, 0x67, 0x1F, 0x92, 0x0F, 0x31, 0xE7, 0x5A, + 0x10, 0x73, 0x2E, 0x0C, 0xEA, 0x8F, 0x5C, 0xBA, 0x55, 0x2B, 0x08, 0x8E, + 0xDB, 0x0B, 0xFB, 0xFD, 0x54, 0x8E, 0x56, 0x16, 0x71, 0xCC, 0x6B, 0xE3, + 0xC0, 0xD1, 0x5C, 0x6A, 0x88, 0x89, 0xE9, 0x66, 0xA9, 0xA4, 0xD2, 0x2C, + 0x20, 0xC7, 0x07, 0x50, 0x85, 0x85, 0x99, 0x31, 0xA5, 0x8A, 0x35, 0x84, + 0xB8, 0xD9, 0x8D, 0xD7, 0xB7, 0x1B, 0xD6, 0xF7, 0xB1, 0xA8, 0xA2, 0x96, + 0xF2, 0xED, 0x77, 0x6F, 0x6E, 0x6F, 0x37, 0x84, 0x87, 0xBC, 0xB3, 0x8B, + 0x8B, 0xF3, 0x6E, 0x68, 0x95, 0x92, 0x42, 0xCA, 0x69, 0xF2, 0x44, 0x04, + 0x48, 0x15, 0x49, 0x80, 0xD0, 0x15, 0x69, 0xBD, 0x1A, 0xE6, 0x39, 0x0A, + 0x09, 0xA1, 0x64, 0x6B, 0xCD, 0x1C, 0xD2, 0xF8, 0xE6, 0x2A, 0xA5, 0x98, + 0x52, 0xFA, 0xE5, 0x6F, 0x8A, 0x52, 0xD2, 0x6A, 0x53, 0x4A, 0x8D, 0x29, + 0xD6, 0x2C, 0x1B, 0x6B, 0xA4, 0x52, 0x8D, 0xB3, 0x39, 0x97, 0xED, 0x76, + 0x8F, 0x88, 0x8D, 0xB3, 0x55, 0xD7, 0xCD, 0x76, 0x24, 0xAC, 0x5A, 0x9B, + 0x39, 0x84, 0xC6, 0x18, 0x29, 0xE4, 0x6A, 0xD1, 0xFF, 0xE8, 0x07, 0xEF, + 0x0D, 0x43, 0x77, 0x7D, 0xB3, 0xE9, 0xDA, 0x86, 0x3D, 0x46, 0x39, 0x97, + 0xE7, 0xCF, 0x2E, 0x38, 0x31, 0xAA, 0x6D, 0x5C, 0xD7, 0xB9, 0x71, 0xF2, + 0xAC, 0xE7, 0x00, 0x10, 0xB5, 0xE0, 0x6E, 0x9C, 0x42, 0x8C, 0x4A, 0xCA, + 0xAE, 0x6D, 0x52, 0xCA, 0x6D, 0xEB, 0xDE, 0x7F, 0xF7, 0x69, 0xCE, 0xA5, + 0x22, 0x95, 0x52, 0x41, 0x30, 0xF7, 0xC4, 0xBD, 0x9B, 0x50, 0x89, 0x0E, + 0x9E, 0x87, 0x8A, 0xD3, 0xEC, 0x95, 0x90, 0xAC, 0x36, 0xF2, 0x3E, 0x59, + 0x67, 0x59, 0xBA, 0xDE, 0xBB, 0x36, 0x84, 0x2C, 0xA5, 0xD0, 0x5A, 0xD6, + 0x82, 0x42, 0x8A, 0x8A, 0x68, 0xAC, 0xC6, 0x29, 0x5B, 0x81, 0xEB, 0xD5, + 0x52, 0x0A, 0x19, 0x53, 0x76, 0xEF, 0xFF, 0x50, 0x2A, 0x7D, 0xF7, 0xEA, + 0xAB, 0x71, 0x7B, 0x5F, 0xAB, 0x56, 0xB6, 0x3D, 0x79, 0xF1, 0xBD, 0xE5, + 0xF9, 0xF9, 0x70, 0xF1, 0xC2, 0x87, 0xB4, 0xB9, 0xBB, 0x2B, 0xA5, 0x4E, + 0xB1, 0x56, 0x83, 0x8F, 0xCE, 0xD6, 0x20, 0x84, 0xF7, 0xA1, 0x56, 0x6C, + 0x1B, 0xD7, 0x34, 0x2E, 0xE7, 0x32, 0x0C, 0x1D, 0x11, 0x29, 0xAD, 0x9C, + 0x52, 0xB9, 0x68, 0x22, 0x1A, 0xBA, 0xA6, 0x22, 0x35, 0xD6, 0x38, 0xDB, + 0xCD, 0x5C, 0x10, 0x2D, 0xE5, 0x1C, 0x52, 0x88, 0x51, 0x4A, 0xB1, 0x1F, + 0xFD, 0x6E, 0x9C, 0x91, 0x78, 0x62, 0xE2, 0x83, 0x8C, 0x8C, 0xD1, 0x4A, + 0x4A, 0x26, 0x31, 0x85, 0x14, 0x7C, 0xF8, 0x2A, 0xA5, 0x52, 0x4A, 0x6C, + 0x02, 0x67, 0xBC, 0x26, 0xA5, 0x24, 0x85, 0x40, 0x22, 0x21, 0x45, 0x88, + 0xC9, 0x18, 0x0D, 0x44, 0x88, 0xA2, 0x69, 0x1C, 0xEF, 0x53, 0x4C, 0x96, + 0x13, 0x1D, 0x72, 0x05, 0x4A, 0xAE, 0x20, 0x0E, 0xF6, 0x34, 0x56, 0x13, + 0x3F, 0xC8, 0xBC, 0xF2, 0xC1, 0x55, 0x2E, 0xB4, 0x52, 0x24, 0x80, 0x08, + 0x2A, 0x47, 0x7E, 0x1E, 0xA5, 0xDB, 0x87, 0xE3, 0x40, 0x82, 0x10, 0xA0, + 0x04, 0x48, 0x90, 0x4A, 0x02, 0x16, 0xAE, 0x14, 0x11, 0x5A, 0x4A, 0x62, + 0x74, 0xFC, 0xD8, 0x4B, 0xC1, 0x6B, 0x2F, 0xA3, 0x6F, 0x42, 0x82, 0x14, + 0x12, 0x25, 0x7B, 0x34, 0x05, 0x48, 0xF1, 0x3B, 0x50, 0x8D, 0xA0, 0x22, + 0xA6, 0x58, 0x4A, 0x45, 0x1F, 0x02, 0xAB, 0xD5, 0x8C, 0x56, 0x4A, 0xAA, + 0x98, 0x12, 0xD6, 0xCA, 0xA1, 0x98, 0xC6, 0x98, 0xDD, 0x38, 0x12, 0x80, + 0xB6, 0xA6, 0xD6, 0x5A, 0x6A, 0xE5, 0xFE, 0xE3, 0x17, 0xCF, 0x2E, 0xDE, + 0xB9, 0x38, 0xFB, 0xE5, 0x6F, 0xBF, 0x8E, 0xC7, 0xF2, 0x3A, 0x42, 0x3A, + 0x54, 0x5F, 0x48, 0x89, 0x88, 0x6C, 0xB5, 0xAA, 0x1C, 0x1A, 0x43, 0x58, + 0x2B, 0x2A, 0x21, 0x39, 0xFC, 0x38, 0xA5, 0xE4, 0x53, 0x56, 0x42, 0x94, + 0x52, 0x1A, 0xE7, 0x80, 0xFB, 0xF4, 0xC4, 0x01, 0x0D, 0xC4, 0x43, 0x58, + 0x20, 0x69, 0x7D, 0xE8, 0xE2, 0x54, 0x4A, 0x19, 0x63, 0x66, 0xEF, 0xC7, + 0x09, 0x4E, 0x4F, 0x56, 0x8D, 0xF3, 0xA9, 0x20, 0x07, 0x75, 0x08, 0x29, + 0x7C, 0xCC, 0x2F, 0x9E, 0x3D, 0xCE, 0xA5, 0x7E, 0xF3, 0xF2, 0xCD, 0xE5, + 0xCD, 0xED, 0x9F, 0xFE, 0xE4, 0xE3, 0x9F, 0xFE, 0xE8, 0xA3, 0xFB, 0xFB, + 0x5D, 0xD3, 0xB8, 0xA1, 0xEF, 0x57, 0xAB, 0x21, 0x84, 0x28, 0x84, 0x98, + 0x26, 0x7F, 0x73, 0x7B, 0xFF, 0xEC, 0xC9, 0x23, 0x76, 0xD7, 0x5E, 0xDF, + 0xDC, 0x31, 0xC9, 0x8E, 0x88, 0x4F, 0x2E, 0xCE, 0xE7, 0xD9, 0x0F, 0x43, + 0x77, 0x7B, 0xB7, 0xFD, 0xF4, 0xB7, 0x5F, 0x7D, 0xFC, 0xE1, 0x7B, 0x52, + 0x88, 0xDB, 0xBB, 0xCD, 0xF9, 0xD9, 0xDA, 0x18, 0xFD, 0x83, 0x8F, 0xDE, + 0x7B, 0xF1, 0xEC, 0xF1, 0xE5, 0xD5, 0xED, 0x7E, 0x9C, 0x52, 0xA9, 0x0C, + 0x5A, 0x95, 0x52, 0x3E, 0xFE, 0xE8, 0x83, 0xCF, 0xBF, 0xFE, 0xF6, 0xF2, + 0xFA, 0x6E, 0xD1, 0xB7, 0xAB, 0x45, 0x0F, 0x24, 0x5E, 0xBE, 0xB9, 0x1E, + 0x67, 0xCF, 0xE1, 0x51, 0x52, 0x48, 0x1F, 0x63, 0xAD, 0x14, 0x62, 0x44, + 0x24, 0x76, 0x41, 0x18, 0xAD, 0xD9, 0xD3, 0xD1, 0x75, 0x1D, 0xEB, 0x1B, + 0x58, 0xFF, 0x8A, 0x88, 0xB9, 0x62, 0x8C, 0x39, 0xE5, 0xC4, 0x38, 0x17, + 0x9F, 0x71, 0x0C, 0x3F, 0x59, 0x63, 0xAC, 0x35, 0x6D, 0xEB, 0x10, 0x71, + 0x9A, 0x3D, 0x22, 0xA9, 0xC9, 0x73, 0x61, 0x58, 0x88, 0x2C, 0xA3, 0x7E, + 0x10, 0x55, 0x88, 0x87, 0xA2, 0x7B, 0x21, 0x44, 0xF0, 0x41, 0x1B, 0x2D, + 0x95, 0x4C, 0xA9, 0xCC, 0x21, 0x1A, 0x63, 0x40, 0x88, 0x5A, 0x8B, 0x14, + 0xA2, 0x69, 0x9A, 0x14, 0x53, 0xD3, 0x98, 0xAE, 0x6D, 0x7D, 0x88, 0x4A, + 0x6B, 0x00, 0xC8, 0xB9, 0xDC, 0x6D, 0x76, 0xB3, 0x8F, 0x7D, 0xDF, 0xF6, + 0x7D, 0x7B, 0xB2, 0x5A, 0xCD, 0x3E, 0x2C, 0x97, 0xC3, 0xB7, 0x2F, 0xDF, + 0xA4, 0x52, 0x97, 0xD0, 0xB3, 0x50, 0xB4, 0x54, 0x02, 0x80, 0x6F, 0x5F, + 0xBE, 0x41, 0x44, 0xE7, 0xDC, 0xD9, 0xC9, 0xCA, 0x1A, 0x5D, 0x6A, 0xD5, + 0xE5, 0x58, 0x2F, 0xAC, 0xB4, 0x52, 0x19, 0xB1, 0x62, 0xCE, 0x69, 0xBF, + 0xDF, 0x13, 0x90, 0x73, 0x76, 0x31, 0x74, 0x02, 0x60, 0xB3, 0xDD, 0x69, + 0x25, 0x4F, 0x96, 0x03, 0x22, 0x2E, 0x86, 0xAE, 0xE4, 0x62, 0xAD, 0x56, + 0x52, 0x79, 0x1F, 0x84, 0x10, 0x8B, 0xAE, 0x6D, 0x5B, 0x27, 0x41, 0xEC, + 0xA7, 0xB9, 0x94, 0x62, 0xB5, 0x06, 0x21, 0xF6, 0xE3, 0xF4, 0x9E, 0x79, + 0xDC, 0x77, 0x2D, 0x12, 0x2D, 0x16, 0x1D, 0xD7, 0x64, 0x20, 0x51, 0xD7, + 0x35, 0x6C, 0x52, 0xD1, 0x5A, 0x29, 0x2D, 0xBB, 0xAE, 0x61, 0xC3, 0x54, + 0xCE, 0x39, 0xC4, 0xE8, 0x43, 0x34, 0x5A, 0x39, 0x37, 0x20, 0xA2, 0x8F, + 0x29, 0xE7, 0x8C, 0x88, 0xFC, 0x40, 0x63, 0x4A, 0x52, 0x4A, 0x20, 0x91, + 0x13, 0xC3, 0x0D, 0x12, 0x09, 0x8F, 0x58, 0x63, 0x4D, 0xB9, 0xC4, 0x9C, + 0x97, 0x43, 0x9F, 0x4B, 0x29, 0xB9, 0xF4, 0x5D, 0xB3, 0x5A, 0x76, 0x3C, + 0x86, 0x28, 0x25, 0x9D, 0xD5, 0x88, 0x98, 0x73, 0xE5, 0xAB, 0x40, 0x08, + 0x81, 0x95, 0x94, 0xD4, 0x25, 0xC7, 0x9C, 0xB3, 0x36, 0x7A, 0x9E, 0xBD, + 0xEB, 0xDA, 0xF6, 0xD1, 0xD3, 0xC7, 0x5D, 0x17, 0x7E, 0xFE, 0x33, 0xA9, + 0x94, 0x70, 0x5D, 0x31, 0x43, 0xBF, 0xBE, 0x40, 0x82, 0x52, 0x72, 0x4E, + 0x29, 0xC6, 0xB0, 0x3E, 0x39, 0x11, 0xED, 0xD0, 0x3A, 0xB7, 0x9F, 0x66, + 0xEF, 0xE3, 0xA3, 0xB3, 0x75, 0xDB, 0x34, 0xBB, 0x69, 0x56, 0x4A, 0xAD, + 0x16, 0x3D, 0x27, 0x79, 0x49, 0x29, 0x7D, 0x88, 0x1C, 0xB1, 0x1D, 0x63, + 0x0C, 0x81, 0xA1, 0x2B, 0x99, 0x4B, 0xA9, 0x48, 0xEC, 0x76, 0x64, 0x33, + 0x73, 0x45, 0x64, 0x60, 0xAB, 0x94, 0x62, 0xB4, 0x33, 0x5A, 0x19, 0xA3, + 0x89, 0x30, 0xA4, 0xC8, 0xC6, 0x03, 0x63, 0x14, 0x22, 0x1A, 0xA3, 0xFB, + 0xBE, 0x3D, 0x0C, 0x2C, 0xCE, 0xB2, 0xAF, 0xDB, 0x5A, 0xCB, 0xFE, 0xC4, + 0xD9, 0x47, 0x9C, 0x66, 0x96, 0x01, 0x1B, 0xA3, 0xF1, 0x08, 0x1E, 0x68, + 0xAD, 0x38, 0xD9, 0x82, 0x6F, 0x60, 0x63, 0x74, 0xAD, 0x74, 0x0C, 0x45, + 0x31, 0x6C, 0x97, 0x00, 0x20, 0xFE, 0x69, 0xD4, 0x5A, 0xF9, 0xCC, 0x02, + 0x00, 0xA6, 0xDE, 0xE5, 0xA1, 0xB7, 0x9C, 0x79, 0x49, 0x0B, 0x47, 0x39, + 0x05, 0xB3, 0x59, 0xFC, 0x5F, 0xB2, 0x81, 0x41, 0x1E, 0x8A, 0x9C, 0x95, + 0xD4, 0x56, 0x4A, 0xE0, 0xB6, 0x44, 0x66, 0x04, 0x40, 0xC8, 0x4A, 0x28, + 0xB8, 0x88, 0xA2, 0x16, 0x26, 0xE0, 0x8E, 0x7C, 0x39, 0x32, 0x39, 0x13, + 0x52, 0x46, 0xA4, 0x5C, 0x8A, 0x94, 0x52, 0x09, 0x23, 0xA5, 0xAC, 0x58, + 0xC7, 0xA9, 0x74, 0x6D, 0xDB, 0x38, 0x77, 0xB7, 0xD9, 0x01, 0x41, 0xAD, + 0x18, 0x42, 0xE4, 0x63, 0x45, 0x4A, 0x39, 0xF4, 0xDD, 0xD9, 0xC9, 0xF2, + 0xE5, 0xE5, 0x2D, 0x09, 0x69, 0x8D, 0x14, 0x42, 0xE4, 0x9C, 0xD9, 0xEC, + 0x2E, 0x85, 0xCC, 0xB5, 0x00, 0x1C, 0x2A, 0xDA, 0x78, 0x79, 0xAC, 0x48, + 0x42, 0x08, 0x6B, 0x4C, 0xA9, 0x95, 0xC3, 0xF2, 0x7A, 0x29, 0xB5, 0x56, + 0x7C, 0x32, 0x2A, 0x21, 0x39, 0x92, 0x04, 0x0F, 0x23, 0xCF, 0x41, 0x17, + 0xCA, 0x08, 0x5A, 0xC1, 0xC3, 0xDF, 0xA3, 0xA4, 0xCC, 0xB9, 0xDC, 0x6F, + 0xF6, 0xE7, 0xA7, 0x8B, 0xB7, 0xD7, 0x3B, 0xA1, 0x15, 0xD4, 0x9A, 0x4B, + 0x19, 0xBD, 0x07, 0x21, 0x9E, 0x5E, 0x9C, 0x0F, 0x7D, 0x3B, 0x79, 0xFF, + 0x4F, 0xBF, 0xFE, 0xE2, 0xFA, 0x76, 0xF3, 0xD3, 0x1F, 0x7D, 0x64, 0xAD, + 0xFD, 0xC5, 0xAF, 0x3E, 0x5B, 0x2D, 0x87, 0xF3, 0xF3, 0xD3, 0xC6, 0x39, + 0x63, 0xF4, 0x07, 0xEF, 0x3F, 0xDF, 0x6E, 0xF7, 0x08, 0xE0, 0x00, 0x7C, + 0xDF, 0x6F, 0xB6, 0xFB, 0xB3, 0x93, 0xF3, 0xE0, 0xD2, 0x67, 0x9F, 0x7F, + 0xFD, 0xDD, 0xAB, 0xB7, 0xC3, 0xD0, 0x9D, 0x9F, 0x9E, 0x7E, 0xF0, 0xDE, + 0xF3, 0x71, 0xF6, 0x6D, 0xD3, 0x86, 0x94, 0x37, 0xBB, 0x91, 0xA7, 0x5B, + 0x2D, 0xE5, 0xB7, 0xAF, 0xDE, 0xB4, 0x8D, 0x53, 0x4A, 0xEF, 0xF7, 0x53, + 0x48, 0xB1, 0x6D, 0x5A, 0xAD, 0xD5, 0xD3, 0x8B, 0xB3, 0x9C, 0x72, 0x2A, + 0x65, 0xBB, 0xDD, 0xD7, 0x8A, 0xBB, 0x71, 0x26, 0x80, 0xFD, 0x34, 0x57, + 0x44, 0xEE, 0x73, 0x62, 0x18, 0x8B, 0xD5, 0x94, 0xB9, 0x54, 0xAD, 0x4D, + 0x29, 0x75, 0x9A, 0x3D, 0x21, 0x36, 0xAD, 0x23, 0xA2, 0x5C, 0xEA, 0xEC, + 0x63, 0xDB, 0x3A, 0x29, 0x94, 0x52, 0x4A, 0xA3, 0xAE, 0x15, 0x39, 0xC7, + 0x62, 0x9C, 0x7C, 0x2A, 0x45, 0x0A, 0xBE, 0x15, 0xC4, 0x30, 0xB4, 0x6D, + 0xD3, 0x30, 0x0B, 0x5F, 0x11, 0xE7, 0x10, 0xB5, 0x92, 0x0C, 0x69, 0x31, + 0x7D, 0x2C, 0x15, 0xA7, 0x36, 0x96, 0xA3, 0x64, 0x9A, 0xB4, 0xD1, 0x9C, + 0xF9, 0x9C, 0x4B, 0x05, 0x10, 0xE3, 0x1C, 0xA4, 0x92, 0xA5, 0x14, 0x09, + 0x60, 0xE6, 0xA0, 0xB5, 0x04, 0x40, 0xD7, 0x34, 0x42, 0xAA, 0xBB, 0xFB, + 0x5D, 0x29, 0x85, 0x58, 0x5A, 0x58, 0x2B, 0x2F, 0x34, 0x52, 0x8E, 0xF3, + 0x34, 0x5F, 0x5D, 0xDF, 0x35, 0x8D, 0xCD, 0x39, 0x95, 0xEA, 0x72, 0xC1, + 0x2F, 0xBF, 0x7E, 0x39, 0xFB, 0x60, 0xAD, 0x99, 0xBD, 0x27, 0x82, 0x94, + 0xB3, 0x56, 0x6A, 0xE8, 0xBB, 0x10, 0xA3, 0x7E, 0xF6, 0xF4, 0x6C, 0xB3, + 0x9D, 0xA7, 0xC9, 0xFB, 0x29, 0xCC, 0xDE, 0x4F, 0xD3, 0xE4, 0x7D, 0xB0, + 0xC6, 0x70, 0xEF, 0xC3, 0x66, 0xBB, 0x4F, 0x31, 0x29, 0x25, 0x9E, 0x3D, + 0x3E, 0xB7, 0x5A, 0x03, 0xD0, 0x72, 0x68, 0x6F, 0xEE, 0xB6, 0x5D, 0xDB, + 0x6A, 0x25, 0xDF, 0x79, 0x72, 0x6E, 0x8C, 0x6E, 0x1B, 0xD7, 0xB5, 0xCD, + 0xA2, 0xEB, 0xBE, 0x7E, 0xF9, 0xE6, 0x7E, 0xB3, 0x2B, 0x54, 0x95, 0x10, + 0x27, 0xEB, 0xE5, 0x7A, 0x35, 0x70, 0x1B, 0x90, 0xD6, 0xBA, 0x12, 0x71, + 0xA9, 0xA5, 0x94, 0xB2, 0x20, 0x59, 0xA3, 0x88, 0x68, 0xF6, 0x51, 0x08, + 0x91, 0x52, 0xDE, 0x8F, 0x23, 0x22, 0xDD, 0xDE, 0x6D, 0xDB, 0xC6, 0xBD, + 0xFB, 0xD1, 0x8B, 0xA1, 0x6B, 0x63, 0x3E, 0x34, 0xB6, 0x2A, 0x25, 0x8D, + 0xD5, 0x00, 0xC2, 0x39, 0x2B, 0x95, 0xC4, 0xCA, 0x78, 0x30, 0x70, 0x3A, + 0x4A, 0x45, 0x9C, 0x7C, 0xCC, 0x0C, 0x4B, 0xC6, 0xDC, 0x35, 0x8E, 0x88, + 0x52, 0x4A, 0x67, 0x27, 0xCB, 0xA1, 0x6F, 0x19, 0x09, 0x0A, 0x3E, 0x71, + 0xA1, 0x6F, 0xC5, 0xCA, 0x17, 0x91, 0x94, 0x22, 0xE5, 0xDC, 0xDA, 0x3E, + 0xE6, 0xFA, 0xFA, 0x9B, 0x2F, 0x90, 0xC4, 0x38, 0xCF, 0xB6, 0x69, 0x01, + 0x6A, 0xD8, 0xED, 0x53, 0x0C, 0x4D, 0xD3, 0x08, 0xD7, 0x4F, 0xD3, 0x6C, + 0xAD, 0xB3, 0xCE, 0x6E, 0x6F, 0x6E, 0x73, 0xC9, 0xCA, 0xB8, 0x0F, 0x3E, + 0xF8, 0xE0, 0x4D, 0xE9, 0xE7, 0x71, 0x6C, 0x9B, 0xA6, 0xEB, 0xDA, 0xE5, + 0xD0, 0xDE, 0xDD, 0xEF, 0xA7, 0xC9, 0x33, 0xB4, 0xB7, 0x5E, 0x2D, 0x88, + 0x28, 0xC6, 0xBC, 0x5A, 0x2D, 0xB0, 0x62, 0x88, 0xD1, 0x5A, 0x5B, 0x4A, + 0x09, 0x21, 0xFA, 0x10, 0xB5, 0xD6, 0x5C, 0xC1, 0xE8, 0xAC, 0x2D, 0x58, + 0x63, 0x2A, 0x58, 0x0F, 0x0A, 0x03, 0x73, 0xB4, 0xE6, 0x6A, 0xA5, 0x94, + 0x62, 0xDF, 0xBB, 0x92, 0xA5, 0x96, 0x5C, 0x85, 0x40, 0x3E, 0x92, 0x52, + 0xCA, 0x52, 0x0A, 0x44, 0x7B, 0x0C, 0x1E, 0x08, 0xFC, 0x9D, 0x3A, 0x67, + 0x04, 0x88, 0xA1, 0x53, 0xFC, 0x90, 0x09, 0xC1, 0xC0, 0x10, 0xA3, 0x63, + 0x07, 0x4D, 0x06, 0x1E, 0xDB, 0xB4, 0xE8, 0x98, 0x2A, 0x25, 0x84, 0x13, + 0xA2, 0x94, 0x52, 0x52, 0xCE, 0xBC, 0xFC, 0xD5, 0x63, 0xB6, 0x00, 0x10, + 0x29, 0x29, 0x19, 0x8E, 0x04, 0x00, 0x02, 0xA1, 0xA4, 0x96, 0x56, 0x12, + 0x41, 0xCE, 0xDC, 0xB6, 0x89, 0x47, 0xE5, 0x86, 0x00, 0x22, 0x65, 0xAC, + 0x32, 0x96, 0x52, 0xD8, 0x7C, 0xF1, 0x0B, 0xEF, 0x83, 0x8F, 0xB1, 0x1F, + 0x86, 0xA6, 0x6B, 0x05, 0x80, 0x6D, 0x1A, 0xB7, 0x58, 0x75, 0xFD, 0x20, + 0x95, 0x06, 0xD3, 0x10, 0x40, 0xC9, 0x51, 0x3C, 0x48, 0xAD, 0x80, 0x40, + 0x40, 0x0C, 0x09, 0x0E, 0x37, 0x39, 0x5A, 0x6B, 0xD8, 0x01, 0xC0, 0x40, + 0x9E, 0xB6, 0x06, 0x09, 0x95, 0x52, 0xDA, 0x28, 0xF4, 0x20, 0x89, 0xAC, + 0x31, 0x15, 0xA1, 0x56, 0xFA, 0xE6, 0xD5, 0x15, 0x97, 0xC4, 0xF3, 0x27, + 0x2B, 0x25, 0x8B, 0xD4, 0xD1, 0xE7, 0xC4, 0xEF, 0x5E, 0x2E, 0x85, 0x31, + 0xAC, 0xE4, 0x03, 0x09, 0x58, 0x74, 0x1D, 0x01, 0x69, 0xA9, 0x99, 0xD6, + 0x60, 0x9A, 0x8C, 0xD5, 0x00, 0x24, 0x15, 0x86, 0x90, 0x52, 0x96, 0x4A, + 0x5A, 0xAB, 0x1F, 0xDC, 0x05, 0x09, 0x09, 0xB1, 0xC2, 0x51, 0xBE, 0x6B, + 0x8C, 0x29, 0xA5, 0xEC, 0xC7, 0xB9, 0xB1, 0x9A, 0xA7, 0x4F, 0xC6, 0x07, + 0x4A, 0x29, 0x21, 0xC6, 0x5A, 0xEB, 0x62, 0x18, 0x94, 0x52, 0x80, 0x78, + 0xBF, 0xDD, 0xFF, 0x2F, 0xFF, 0xFB, 0x5F, 0xBC, 0xFF, 0xE2, 0xE9, 0xBF, + 0xFA, 0x8F, 0x7E, 0xBC, 0xDD, 0xEE, 0xFF, 0xEE, 0x1F, 0x7F, 0xA5, 0x95, + 0x22, 0x21, 0xDE, 0x79, 0x7A, 0x21, 0x85, 0xB4, 0xD6, 0x38, 0xE7, 0xAE, + 0x6E, 0x6E, 0x17, 0x8B, 0xDE, 0x87, 0x20, 0x95, 0x4C, 0xB9, 0xB4, 0x4D, + 0x93, 0x73, 0xB9, 0xDF, 0xEE, 0xAC, 0x31, 0x9B, 0xCD, 0x6E, 0xB7, 0x1B, + 0x8D, 0xB1, 0xDF, 0xBD, 0xBA, 0x7C, 0xFE, 0xF4, 0xC2, 0x87, 0xE0, 0x7D, + 0x90, 0x42, 0x6E, 0x76, 0xA3, 0x56, 0x2A, 0xE7, 0x32, 0xCF, 0x5E, 0x0A, + 0xB9, 0x5E, 0x9D, 0x5B, 0x6B, 0x57, 0xCB, 0xC5, 0xED, 0xDD, 0xE6, 0xFA, + 0xF6, 0x7E, 0x9A, 0x03, 0x03, 0x61, 0x31, 0x25, 0xDE, 0xB7, 0x8C, 0xD6, + 0xDC, 0x1F, 0xAA, 0xA4, 0xDA, 0x4F, 0x53, 0xD7, 0x34, 0xE3, 0xEC, 0x85, + 0x10, 0x7D, 0xEB, 0x5A, 0x67, 0xA7, 0xC9, 0x8F, 0xE3, 0x6C, 0xAD, 0x25, + 0x00, 0x6B, 0xD4, 0x6A, 0x31, 0xE8, 0x43, 0x0E, 0x07, 0x10, 0xC0, 0x38, + 0xCD, 0xDB, 0x71, 0xAA, 0x88, 0x47, 0x2D, 0x9E, 0xF0, 0x31, 0x35, 0xCE, + 0x23, 0xA2, 0x90, 0x0A, 0x2B, 0xB6, 0xD5, 0x4A, 0x29, 0x1A, 0x6B, 0x18, + 0xD7, 0xE4, 0x69, 0x40, 0x4A, 0x09, 0x74, 0xB0, 0x6A, 0x19, 0xAD, 0x6B, + 0x9D, 0x84, 0x00, 0x6B, 0x4C, 0x4C, 0x55, 0x08, 0xA8, 0x58, 0xA7, 0x79, + 0x56, 0x4A, 0x72, 0xFA, 0x40, 0xDF, 0x35, 0xDC, 0x9D, 0xF9, 0xE4, 0x64, + 0xBD, 0xDB, 0xEF, 0x6F, 0x6E, 0xEF, 0x40, 0x88, 0xB6, 0x69, 0x7C, 0xC9, + 0x97, 0x97, 0xD7, 0x6F, 0xAF, 0x6E, 0xDE, 0x7D, 0xE7, 0x29, 0x11, 0xDD, + 0xDC, 0xDC, 0x6B, 0xAD, 0x17, 0x8B, 0xFE, 0xF1, 0xC5, 0xF9, 0xCD, 0xED, + 0x66, 0xB3, 0xDD, 0x29, 0xAD, 0xA6, 0x79, 0x3E, 0xA0, 0xAE, 0x44, 0x3C, + 0xC7, 0x29, 0x29, 0xF4, 0xD5, 0xCD, 0x36, 0xC5, 0x74, 0x73, 0x77, 0x97, + 0x52, 0xF6, 0x21, 0xAC, 0x57, 0x0B, 0xA9, 0x54, 0x08, 0x31, 0xC6, 0x34, + 0x8E, 0x13, 0x1C, 0x9F, 0x2A, 0x21, 0xC4, 0xF9, 0xE9, 0xAA, 0x6B, 0x9B, + 0xDD, 0x38, 0x3E, 0x7B, 0xF2, 0xA8, 0xEF, 0xDA, 0xFB, 0xFB, 0xAD, 0x35, + 0x7A, 0xB5, 0x5E, 0xA6, 0x54, 0xDE, 0x5E, 0xDD, 0xD5, 0x5A, 0xAD, 0x31, + 0x5D, 0xD3, 0x34, 0x8D, 0xEB, 0xBB, 0xC6, 0x18, 0x3D, 0x87, 0x34, 0xCE, + 0xA1, 0x56, 0xBC, 0xBB, 0xDF, 0xE5, 0x52, 0xE7, 0x39, 0x72, 0x7E, 0x29, + 0x83, 0x7C, 0xBB, 0xC9, 0x07, 0x1F, 0xAE, 0x88, 0xD6, 0xEB, 0x05, 0x01, + 0x5C, 0xDF, 0x6E, 0xAD, 0x35, 0xEF, 0x3C, 0xBB, 0x58, 0xF4, 0xBD, 0x75, + 0xDA, 0x38, 0xAB, 0x0F, 0xEA, 0x3B, 0xA3, 0x95, 0x42, 0xE0, 0x4E, 0x1A, + 0x41, 0x48, 0x5A, 0x6B, 0x8E, 0xA9, 0xA4, 0x83, 0x04, 0xA9, 0x7A, 0x1F, + 0x43, 0x4C, 0xDE, 0xFB, 0xAE, 0xB5, 0xAD, 0x73, 0x15, 0x79, 0x31, 0xB1, + 0x4A, 0x48, 0x42, 0x0A, 0x29, 0x97, 0x52, 0xE4, 0xEF, 0x07, 0x45, 0x91, + 0x00, 0x2A, 0xE8, 0x7A, 0xD4, 0xED, 0xEB, 0x2F, 0x7E, 0x3D, 0x9C, 0x3D, + 0xDE, 0xEF, 0x77, 0xFB, 0xDD, 0xFD, 0xB0, 0x3A, 0x7F, 0xFA, 0xEC, 0xC5, + 0x9B, 0x5A, 0x56, 0xEF, 0x7C, 0x78, 0xB7, 0xB9, 0x5B, 0x10, 0x9C, 0x9C, + 0x3D, 0x52, 0xC6, 0xF9, 0x79, 0xCA, 0x39, 0xAD, 0x56, 0x27, 0xCB, 0xD3, + 0xB3, 0x71, 0x96, 0xCE, 0xA8, 0xAE, 0x6D, 0xD8, 0x0A, 0x3B, 0xCD, 0xF1, + 0xEC, 0x64, 0xD5, 0x36, 0xAE, 0x6B, 0xDB, 0xAE, 0x6D, 0x63, 0x4A, 0x5A, + 0x1B, 0x67, 0x4D, 0x4C, 0xA9, 0xD4, 0xB2, 0xDF, 0x4F, 0x5A, 0xEB, 0x94, + 0xE3, 0x38, 0xFB, 0xB6, 0x71, 0xAC, 0x4E, 0x98, 0x43, 0xD8, 0xEF, 0xE7, + 0xC9, 0x7B, 0x00, 0x32, 0x46, 0x61, 0x25, 0x29, 0x0F, 0xD6, 0x3C, 0x21, + 0x04, 0x2B, 0xBC, 0xD9, 0x8A, 0x5C, 0x0A, 0x5A, 0xAB, 0xE7, 0xD9, 0x23, + 0x12, 0xFB, 0x2E, 0x95, 0x4E, 0x07, 0x8C, 0xBC, 0x56, 0x00, 0xD0, 0xA0, + 0x10, 0xC1, 0x59, 0x7D, 0xA0, 0x0B, 0x4A, 0x71, 0x46, 0xB3, 0x86, 0x80, + 0x65, 0x8C, 0x4A, 0x29, 0x63, 0x14, 0x80, 0xC1, 0x07, 0x7C, 0x9B, 0x48, + 0x08, 0xC1, 0x4A, 0x54, 0xEE, 0x12, 0x86, 0x43, 0xFC, 0xB4, 0xC0, 0x83, + 0x20, 0x5F, 0x54, 0x02, 0xAA, 0x28, 0x84, 0x40, 0xA4, 0x5A, 0xB1, 0xD4, + 0x0A, 0xE5, 0xE0, 0xF4, 0xAE, 0x87, 0x3E, 0x47, 0x09, 0x20, 0x80, 0x50, + 0xB9, 0x36, 0xDF, 0x5D, 0x4E, 0x6F, 0xBE, 0x0E, 0xB7, 0xAF, 0xAE, 0xBE, + 0xFB, 0xB2, 0x48, 0x55, 0x10, 0x04, 0x80, 0x31, 0x3A, 0xE7, 0x8A, 0x20, + 0x96, 0xA7, 0xA7, 0xAB, 0xF5, 0xAA, 0x94, 0x22, 0x9B, 0xE1, 0xD9, 0x47, + 0x3F, 0x39, 0x7B, 0xF1, 0xFD, 0x52, 0x92, 0x20, 0x3C, 0xCA, 0x47, 0x65, + 0xAE, 0xBC, 0xCB, 0x08, 0xC9, 0xD6, 0xE5, 0x5A, 0xA7, 0xC9, 0xE7, 0x82, + 0x15, 0x23, 0x08, 0xD1, 0xB5, 0x6D, 0xA9, 0x34, 0x0C, 0x3D, 0x0B, 0x02, + 0x78, 0xCA, 0x20, 0x44, 0x6B, 0x54, 0xA9, 0x35, 0xE6, 0xC2, 0x16, 0xD4, + 0x94, 0x0A, 0x3B, 0x9F, 0x0B, 0x56, 0xCD, 0xAB, 0xAD, 0xD2, 0xBC, 0xC5, + 0x6A, 0x46, 0x67, 0x6A, 0x9D, 0x43, 0x64, 0xEE, 0x32, 0xE5, 0xA2, 0x4A, + 0x15, 0x00, 0x21, 0x46, 0x25, 0x84, 0xED, 0xB4, 0x35, 0x7A, 0xE8, 0x5B, + 0x22, 0x6A, 0x1A, 0x27, 0x85, 0x08, 0x29, 0x0B, 0x01, 0x8D, 0xB3, 0x73, + 0x88, 0x8C, 0x62, 0xD3, 0x31, 0x69, 0x1A, 0x09, 0xEF, 0x36, 0x63, 0x2E, + 0x85, 0x38, 0xA1, 0xFB, 0x68, 0x81, 0x48, 0x39, 0xEF, 0xC6, 0xD1, 0x5A, + 0x5B, 0x10, 0x87, 0xA1, 0x8B, 0xA9, 0x7C, 0xF1, 0xF5, 0xAB, 0xCD, 0x6E, + 0xFC, 0x93, 0x9F, 0xFC, 0xE0, 0xC9, 0xC5, 0xF9, 0x76, 0xBB, 0x7F, 0x7B, + 0x7D, 0x77, 0x7B, 0xBB, 0xE5, 0x7B, 0x65, 0xB9, 0x5C, 0x58, 0x6B, 0xFE, + 0xE4, 0xA7, 0x3F, 0x7C, 0x74, 0xB6, 0x46, 0xA4, 0x1F, 0x7D, 0xFC, 0xC1, + 0xDB, 0xCB, 0xDB, 0x2F, 0xBF, 0x7A, 0x49, 0x00, 0x52, 0x8A, 0xBB, 0xBB, + 0x7B, 0x9F, 0xD2, 0x34, 0x79, 0x44, 0x7C, 0x73, 0x79, 0xC3, 0xAF, 0x24, + 0x12, 0x4D, 0x93, 0x1F, 0x86, 0x6E, 0xF6, 0xC1, 0x39, 0xBB, 0xE8, 0xBB, + 0xFB, 0xCD, 0x6E, 0x31, 0xF4, 0x67, 0xEB, 0x65, 0xE8, 0xDA, 0xCD, 0x76, + 0x94, 0x32, 0x57, 0x44, 0x1F, 0x53, 0xA9, 0xA8, 0x95, 0xE6, 0x3B, 0x9B, + 0xBF, 0xC0, 0x52, 0x51, 0x08, 0xAE, 0x31, 0x54, 0xE7, 0x27, 0xAB, 0xC6, + 0xD9, 0x39, 0x84, 0x9C, 0xF3, 0x72, 0x18, 0x42, 0x0C, 0x73, 0x48, 0x8B, + 0xBE, 0x65, 0x9F, 0x03, 0xD7, 0x89, 0x01, 0xC8, 0xFD, 0x34, 0x85, 0x10, + 0x95, 0xE6, 0xF6, 0x29, 0x2E, 0xAC, 0xCB, 0x53, 0xC5, 0x8A, 0x68, 0x8D, + 0x31, 0x46, 0x03, 0x40, 0xDB, 0x3A, 0x09, 0xC0, 0x81, 0xE3, 0x88, 0x35, + 0x85, 0x22, 0x04, 0xB8, 0xC6, 0x02, 0x40, 0x08, 0xC1, 0x13, 0xD4, 0x5A, + 0xD8, 0x09, 0xED, 0x9C, 0x49, 0x6C, 0x05, 0x03, 0x3A, 0x66, 0x64, 0xD6, + 0x69, 0x0E, 0xAE, 0xB1, 0xB7, 0x77, 0x9B, 0x71, 0x9C, 0x9D, 0x73, 0x8F, + 0x2F, 0xCE, 0x5F, 0xBF, 0xB9, 0xBA, 0xBC, 0xBC, 0x11, 0x42, 0x20, 0xD0, + 0xE8, 0xC3, 0xFD, 0x66, 0xAB, 0x15, 0x6B, 0xD6, 0x60, 0x37, 0x8E, 0x5F, + 0x7F, 0xFB, 0xEA, 0xFC, 0xFC, 0x44, 0x6B, 0x19, 0x53, 0x94, 0x52, 0x86, + 0x10, 0x16, 0xC3, 0x50, 0x73, 0xF9, 0xE5, 0xAF, 0x3F, 0x5B, 0x2E, 0x16, + 0x5A, 0x2B, 0xF5, 0xA3, 0x3F, 0xFE, 0x37, 0x77, 0x9B, 0x4D, 0xCA, 0xF9, + 0x64, 0xBD, 0xEA, 0xBB, 0xD6, 0x87, 0x94, 0x73, 0x0A, 0x21, 0xFA, 0x18, + 0x09, 0x88, 0x5B, 0x3C, 0x80, 0xA0, 0x6F, 0x9B, 0x8B, 0xF3, 0x35, 0x37, + 0xD4, 0xC7, 0x94, 0x6F, 0xEE, 0xB6, 0xB3, 0x4F, 0x31, 0xD7, 0xCD, 0x6E, + 0xFC, 0xE6, 0xE5, 0x9B, 0xD7, 0x6F, 0xAF, 0xAD, 0x35, 0x43, 0xDF, 0x2D, + 0x97, 0xFD, 0xD0, 0x77, 0x29, 0xE7, 0xFD, 0x7E, 0xF2, 0x21, 0x4A, 0x29, + 0xA7, 0xD9, 0xCF, 0x3E, 0xB0, 0xA4, 0xA0, 0xEB, 0x9A, 0xB6, 0x6D, 0x94, + 0x92, 0xDB, 0xDD, 0x78, 0x7B, 0xB7, 0xD9, 0x8F, 0x93, 0xB3, 0xF6, 0xEC, + 0x64, 0x25, 0x40, 0xDC, 0x6E, 0x76, 0xDF, 0xFF, 0xF0, 0xF9, 0xD3, 0x27, + 0xE7, 0xD6, 0x99, 0xC6, 0x19, 0xA3, 0x15, 0x48, 0x29, 0x95, 0x04, 0x10, + 0x52, 0x31, 0x35, 0x21, 0x98, 0x53, 0x63, 0xD4, 0xE3, 0xC1, 0x5B, 0xE3, + 0x63, 0xDE, 0xEE, 0xC6, 0x79, 0x9A, 0x17, 0x8B, 0xEE, 0xEC, 0x74, 0xE5, + 0xAC, 0xE1, 0x04, 0x5E, 0xAD, 0x64, 0x2E, 0x25, 0x1F, 0x22, 0x62, 0x2A, + 0xBF, 0xC0, 0xE9, 0x68, 0xCD, 0x22, 0x80, 0x9C, 0x8B, 0x6B, 0x86, 0xE9, + 0xE6, 0xF5, 0xCD, 0xFD, 0xED, 0xFD, 0xED, 0x35, 0x46, 0xFF, 0xC1, 0x0F, + 0x7F, 0x9A, 0x36, 0xD7, 0xFB, 0xFB, 0x9B, 0xD5, 0x8B, 0xEF, 0xDF, 0xDF, + 0x5C, 0xAF, 0xCF, 0xCE, 0xCF, 0x1F, 0x3F, 0xD3, 0x52, 0x7F, 0xFA, 0xF3, + 0xBF, 0xFE, 0xF2, 0xD3, 0x5F, 0x9C, 0x9F, 0x9C, 0x3C, 0xFD, 0xFE, 0x9F, + 0x04, 0x52, 0x6D, 0x63, 0x9D, 0x63, 0xFC, 0xDE, 0x9E, 0x9E, 0xAC, 0xDA, + 0xC6, 0x0D, 0x43, 0xB7, 0xE8, 0x3B, 0x38, 0xA8, 0xA5, 0x8E, 0x5E, 0x42, + 0xAD, 0x84, 0x90, 0xDA, 0x98, 0xA6, 0xB1, 0x42, 0x08, 0x4E, 0x6D, 0x65, + 0xDB, 0x6D, 0xCE, 0xC5, 0x19, 0xC3, 0x91, 0x32, 0x00, 0xE0, 0x43, 0xEC, + 0xBB, 0xB6, 0x6D, 0xD9, 0xA7, 0x52, 0x10, 0xB9, 0xF2, 0x47, 0x38, 0xB6, + 0x2F, 0x18, 0x56, 0xD9, 0x60, 0x8C, 0xA9, 0x14, 0xEE, 0xB8, 0x05, 0x56, + 0x24, 0x6A, 0xA5, 0x9C, 0xD5, 0x42, 0x08, 0x29, 0x40, 0x49, 0x69, 0x8D, + 0xB6, 0xF6, 0x90, 0x81, 0x25, 0x25, 0x2B, 0x9D, 0x05, 0x2F, 0x71, 0xB9, + 0x1E, 0x5A, 0x43, 0x84, 0x90, 0x0C, 0x81, 0xE5, 0x9C, 0xB9, 0x12, 0xFC, + 0xC0, 0x84, 0x62, 0x7D, 0xA0, 0x23, 0xC5, 0xD1, 0x01, 0xC9, 0x12, 0x22, + 0xFE, 0x53, 0x3C, 0x49, 0x21, 0x21, 0x12, 0x20, 0x92, 0x00, 0x12, 0xB6, + 0xAD, 0xAF, 0x3F, 0xFB, 0xEE, 0x3F, 0xFC, 0x6F, 0x9F, 0x7D, 0xFA, 0x8B, + 0xCB, 0x9B, 0xBB, 0x04, 0x4A, 0x6A, 0x33, 0x2C, 0x57, 0x15, 0x20, 0xE5, + 0xBA, 0x8F, 0x79, 0x0C, 0x71, 0x9E, 0xFD, 0xDE, 0xC7, 0x5C, 0xCA, 0xF6, + 0xE6, 0xED, 0xAB, 0xCF, 0x7F, 0x25, 0x52, 0xEC, 0xD7, 0x8F, 0x84, 0xB1, + 0x84, 0x15, 0x00, 0x72, 0xAE, 0xE3, 0x34, 0x4F, 0x53, 0x20, 0xA2, 0x9C, + 0x4A, 0xCC, 0x99, 0xDB, 0x42, 0x4B, 0x41, 0xEF, 0x63, 0xCA, 0x19, 0x84, + 0xE0, 0x6C, 0x1F, 0x10, 0x72, 0xF6, 0xBE, 0x6D, 0x9A, 0xB6, 0x71, 0x21, + 0x46, 0x1F, 0x52, 0xCC, 0x25, 0xE6, 0x02, 0x02, 0x24, 0x40, 0x2C, 0x55, + 0x2A, 0x59, 0x91, 0xA4, 0x90, 0x20, 0x84, 0xD2, 0x3A, 0xE7, 0x82, 0x88, + 0x52, 0x49, 0xAD, 0x35, 0x10, 0x4C, 0x3E, 0x10, 0x40, 0xDF, 0xB5, 0x7D, + 0xE3, 0x8E, 0x1A, 0x76, 0x6A, 0x9D, 0x3D, 0x59, 0x2F, 0x1B, 0x67, 0x39, + 0xC1, 0x89, 0x9D, 0x3D, 0x5A, 0x2B, 0xD6, 0x9D, 0x6B, 0xA5, 0x8C, 0xD2, + 0xD6, 0x68, 0xA3, 0x35, 0x67, 0x96, 0xF2, 0x5F, 0xC5, 0x8A, 0xCD, 0x07, + 0x12, 0x56, 0x08, 0x41, 0x04, 0xB9, 0x30, 0x10, 0x4F, 0x1C, 0x40, 0x94, + 0x4B, 0x95, 0x52, 0x94, 0x52, 0xBE, 0x7D, 0xF9, 0xF6, 0xE2, 0xD1, 0xE9, + 0xBB, 0xCF, 0x9F, 0xC4, 0x94, 0xAF, 0x6F, 0x36, 0xDB, 0xED, 0x9E, 0xE1, + 0x8E, 0x57, 0xAF, 0x2F, 0xBF, 0xF8, 0xFA, 0x25, 0x01, 0x6C, 0xF6, 0x13, + 0x0F, 0xCE, 0x6F, 0x2F, 0x6F, 0x63, 0x8C, 0x3F, 0xF8, 0xF0, 0xDD, 0xCF, + 0xBE, 0xF8, 0xE6, 0xE6, 0x76, 0xA3, 0xA4, 0xEC, 0xDA, 0x96, 0xFD, 0xF0, + 0x52, 0x48, 0xEB, 0x6C, 0x0C, 0xC1, 0xFB, 0xA0, 0x8D, 0xE6, 0xE4, 0x55, + 0x1F, 0xC2, 0x34, 0x7B, 0x9E, 0x0F, 0xF6, 0xE3, 0xB4, 0x1D, 0xA7, 0x10, + 0x73, 0x2A, 0x15, 0x8E, 0x94, 0x8B, 0xB3, 0x26, 0xE7, 0x5A, 0xB1, 0x76, + 0x8D, 0x5B, 0x74, 0xCD, 0xA2, 0x6F, 0xD6, 0x43, 0x0F, 0x70, 0x40, 0x24, + 0x95, 0x94, 0xB9, 0xD6, 0x10, 0xE3, 0xD0, 0xB6, 0x52, 0xCA, 0x71, 0x9C, + 0x53, 0xCE, 0x4A, 0xAA, 0xBB, 0xED, 0x6E, 0xB7, 0x9F, 0xB4, 0xD6, 0xF6, + 0xE8, 0xAB, 0x4F, 0x29, 0x1B, 0x63, 0x9C, 0x73, 0xA3, 0xF7, 0x9C, 0xEE, + 0x07, 0x88, 0xBB, 0xFD, 0x28, 0x85, 0xF0, 0x21, 0xF2, 0x4D, 0x59, 0x0A, + 0xA7, 0x8F, 0x1D, 0xF2, 0x5A, 0x4B, 0xAE, 0x31, 0xA6, 0x54, 0x4A, 0x2E, + 0x95, 0x43, 0x05, 0x72, 0x2E, 0xB9, 0x64, 0xAC, 0x15, 0x2B, 0xC3, 0x29, + 0x62, 0xBD, 0x5E, 0x4A, 0x21, 0x89, 0x28, 0x97, 0x12, 0x52, 0x2C, 0xA5, + 0x2C, 0x86, 0x5E, 0x48, 0xB1, 0xDB, 0x8F, 0x95, 0x50, 0x4A, 0x85, 0x87, + 0x00, 0x6E, 0x02, 0x20, 0x4E, 0xA3, 0xAD, 0xB9, 0x3C, 0x3A, 0x3F, 0x63, + 0x56, 0x61, 0x1C, 0xE7, 0x52, 0x2A, 0x10, 0x6C, 0x77, 0xFB, 0x9B, 0xDB, + 0xFB, 0xC9, 0x07, 0x6D, 0x8C, 0x1A, 0x16, 0xA7, 0xA5, 0xD6, 0xCD, 0x76, + 0x37, 0x8E, 0xE3, 0x83, 0x07, 0xA5, 0x16, 0xCE, 0xCC, 0x26, 0x05, 0x82, + 0x88, 0x62, 0xCA, 0x31, 0x65, 0x70, 0x62, 0x9C, 0xFC, 0xED, 0x66, 0xEF, + 0x7D, 0xB8, 0xB9, 0xDF, 0xD4, 0x72, 0x10, 0xDA, 0xD4, 0x5A, 0x81, 0x44, + 0x2E, 0x35, 0x97, 0xC2, 0x81, 0x62, 0xCB, 0x45, 0x5F, 0x11, 0xDF, 0x5C, + 0xDD, 0x6A, 0xA5, 0x38, 0x3A, 0x7D, 0xBD, 0x5A, 0x18, 0x63, 0x72, 0xC9, + 0xB7, 0xF7, 0xE3, 0x34, 0x86, 0x10, 0x62, 0xC1, 0x0A, 0x00, 0xB5, 0x56, + 0x6B, 0xCD, 0x62, 0xE8, 0xB4, 0xD6, 0x3E, 0xC4, 0x5A, 0xB1, 0x71, 0x46, + 0x49, 0x35, 0xF4, 0x3A, 0xA6, 0x0C, 0x40, 0x0F, 0x8B, 0x12, 0x1E, 0x9B, + 0xAB, 0xD9, 0x3E, 0x53, 0x11, 0x63, 0x2E, 0x44, 0x14, 0x53, 0xCA, 0xA5, + 0xAE, 0x16, 0x03, 0xCB, 0x5F, 0x89, 0x44, 0xCA, 0xF9, 0xFA, 0x6E, 0x2B, + 0xA5, 0xB0, 0x47, 0x3F, 0x85, 0x56, 0x07, 0xEE, 0xAC, 0x22, 0x15, 0x42, + 0xC8, 0x05, 0x11, 0xB5, 0x36, 0xA7, 0xE7, 0x8F, 0x6B, 0xBB, 0x6C, 0x97, + 0x67, 0x17, 0xA7, 0x27, 0xEF, 0xBE, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFE, + 0xAF, 0xCF, 0x3F, 0xFA, 0xF1, 0xD0, 0xBA, 0xF5, 0x87, 0x1F, 0xAE, 0xCF, + 0x1F, 0x81, 0xD0, 0x95, 0xA4, 0x52, 0x4A, 0x68, 0xD3, 0x74, 0xCB, 0x29, + 0x0B, 0xEB, 0xB4, 0x3A, 0xDA, 0xD0, 0x18, 0x13, 0x35, 0xC6, 0x38, 0xA7, + 0x59, 0x05, 0x6E, 0xAD, 0x96, 0x52, 0xCD, 0xB3, 0x97, 0x52, 0x19, 0x63, + 0x4E, 0x4E, 0x2C, 0x0F, 0x47, 0x5A, 0xE9, 0x39, 0x04, 0xA5, 0x54, 0xEE, + 0x32, 0x10, 0xCD, 0x21, 0xA5, 0x5C, 0x94, 0x52, 0x31, 0xC6, 0xDD, 0x7E, + 0x34, 0xC6, 0xF0, 0xD9, 0x67, 0xAD, 0x22, 0xE2, 0x76, 0x22, 0x28, 0xA5, + 0xAC, 0x57, 0xC3, 0xB2, 0xEF, 0x79, 0x8C, 0xDA, 0x89, 0x71, 0x9A, 0xBD, + 0xF7, 0x5E, 0x69, 0x6D, 0x8E, 0x58, 0x7D, 0x2E, 0x25, 0x17, 0xA5, 0xB5, + 0x46, 0x82, 0xAE, 0x6B, 0xC4, 0x31, 0xE8, 0x95, 0xD1, 0x74, 0xFE, 0xD4, + 0x58, 0x5C, 0x9A, 0x12, 0x47, 0x12, 0x03, 0xBB, 0xF4, 0x31, 0x97, 0xD9, + 0x87, 0x52, 0x8B, 0x92, 0xCA, 0x54, 0xCC, 0x99, 0x83, 0x23, 0x85, 0x3E, + 0xCC, 0x73, 0x92, 0x89, 0x5D, 0x24, 0xCA, 0x25, 0xB3, 0x3A, 0x14, 0x85, + 0x40, 0x14, 0x48, 0x24, 0x85, 0x40, 0x20, 0x10, 0x86, 0x5E, 0xFD, 0xFA, + 0xF2, 0x1F, 0xFE, 0xAF, 0xEF, 0xAE, 0xB7, 0xF7, 0x53, 0x12, 0x10, 0xC5, + 0x3C, 0x4B, 0xA3, 0xDF, 0xDE, 0xDE, 0x03, 0x01, 0x73, 0x73, 0x48, 0xD8, + 0x34, 0x0D, 0x02, 0x3C, 0x7A, 0xFA, 0xD8, 0xEA, 0xB3, 0xEF, 0xBE, 0xFC, + 0xF2, 0xAF, 0x34, 0x25, 0x98, 0x90, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xFF, 0xF2, 0xFF, 0x78, 0xFE, 0xD5, 0x67, 0x7F, 0xFC, 0x9F, + 0xFE, 0x7B, 0xBB, 0x3C, 0xA1, 0x52, 0x40, 0xC0, 0x72, 0x31, 0xCC, 0x93, + 0xAF, 0x88, 0xA5, 0xA2, 0xF7, 0x9E, 0xBB, 0x27, 0x6A, 0xA9, 0x04, 0x14, + 0x53, 0x51, 0x4A, 0xB9, 0xC6, 0xEE, 0xA7, 0x89, 0x4B, 0x43, 0x66, 0xCF, + 0xCE, 0x1E, 0x48, 0xA5, 0x1E, 0x14, 0xAA, 0x00, 0x05, 0x2B, 0xA7, 0x72, + 0x17, 0xCC, 0x20, 0x25, 0x22, 0x09, 0x81, 0x42, 0x08, 0xAB, 0x75, 0xAE, + 0xD5, 0x97, 0xE4, 0xAC, 0xD3, 0x4A, 0x13, 0x10, 0x61, 0x4D, 0x89, 0x1A, + 0xE7, 0x94, 0x3A, 0x84, 0xD9, 0xF3, 0x3E, 0xCE, 0xE8, 0x9A, 0x31, 0xA6, + 0xD4, 0xEA, 0x77, 0x91, 0x88, 0x94, 0xD6, 0xB5, 0x22, 0x03, 0x67, 0x5A, + 0xE9, 0xD6, 0x39, 0x4F, 0x07, 0x4D, 0x6F, 0xCE, 0x59, 0x4A, 0x69, 0x94, + 0x06, 0x80, 0x4A, 0x08, 0x20, 0x0E, 0x32, 0x62, 0xEE, 0x1D, 0xAE, 0x55, + 0x2A, 0x59, 0x6A, 0x55, 0x5A, 0x9D, 0x9F, 0xAD, 0x25, 0x88, 0xBF, 0xFA, + 0xFB, 0x5F, 0x6D, 0xF7, 0xE3, 0x7B, 0xCF, 0x9F, 0x54, 0xC2, 0x14, 0x33, + 0x56, 0x24, 0x80, 0xC5, 0xD0, 0x85, 0x90, 0xFE, 0x9F, 0xBF, 0xFC, 0x5B, + 0x63, 0xF4, 0xC5, 0xA3, 0xD3, 0xC7, 0xE7, 0xA7, 0x3E, 0x44, 0x22, 0xF8, + 0xE6, 0xBB, 0xB7, 0x3F, 0xF8, 0xE8, 0x7B, 0xDB, 0xED, 0x27, 0x97, 0x57, + 0xB7, 0xF7, 0x76, 0xC7, 0xF7, 0x50, 0x08, 0xBD, 0xB3, 0xC6, 0x35, 0x0D, + 0xC7, 0x31, 0xA6, 0x5C, 0xA4, 0x94, 0x8D, 0xB5, 0x44, 0xB4, 0xD9, 0xEC, + 0x26, 0x1F, 0xC6, 0x39, 0xD4, 0x5A, 0x1B, 0x67, 0x73, 0x29, 0xCE, 0x35, + 0xCB, 0xA1, 0x65, 0xA2, 0x29, 0xE7, 0xC2, 0x67, 0x16, 0xA7, 0xEF, 0x4E, + 0x7E, 0xE2, 0x92, 0x91, 0xBE, 0xEF, 0x88, 0x60, 0x9A, 0x03, 0xEB, 0x04, + 0xBC, 0x0F, 0x5C, 0x3E, 0xDD, 0xB6, 0xB0, 0xE8, 0xFB, 0xC6, 0xD5, 0xF2, + 0x40, 0xE0, 0x54, 0x0C, 0x31, 0x4A, 0xA5, 0x22, 0x73, 0x93, 0x84, 0x9B, + 0xED, 0xEE, 0xFE, 0x7E, 0xDB, 0x38, 0x9B, 0x72, 0x6D, 0xDB, 0xA6, 0x20, + 0x18, 0xAD, 0x6B, 0xC5, 0x4A, 0x58, 0x0B, 0x72, 0xFE, 0xA5, 0x00, 0x91, + 0x72, 0xAA, 0x48, 0x15, 0xC9, 0x9A, 0xDA, 0x36, 0x2E, 0xA6, 0x54, 0x4A, + 0x49, 0xB9, 0x8E, 0xD3, 0x7C, 0x7E, 0xBA, 0xFA, 0xDE, 0x7B, 0xCF, 0x9D, + 0x35, 0x2C, 0xA4, 0xAF, 0xB5, 0x8E, 0x63, 0x91, 0x52, 0x12, 0xD2, 0xD0, + 0xB7, 0x53, 0xDF, 0x4E, 0x3E, 0xE6, 0x54, 0x85, 0x3C, 0xF4, 0x2D, 0x29, + 0x25, 0xBB, 0xAE, 0x19, 0xBA, 0x56, 0x08, 0xE0, 0x0E, 0xB0, 0x18, 0xD3, + 0x38, 0xCE, 0x31, 0x25, 0x25, 0xE4, 0x72, 0x39, 0x48, 0xA5, 0x72, 0x2D, + 0xEA, 0x3F, 0xFF, 0xAF, 0xFE, 0xBB, 0x94, 0xF3, 0xCD, 0xCD, 0xED, 0x34, + 0x4D, 0xEA, 0x98, 0x13, 0x54, 0x8F, 0x35, 0x2A, 0x92, 0x40, 0x4A, 0x79, + 0x7E, 0xB6, 0xFA, 0xC3, 0x8F, 0x3F, 0x38, 0x59, 0x2D, 0x36, 0xBB, 0xF1, + 0xF2, 0x66, 0xF3, 0xE5, 0xB7, 0xAF, 0x6E, 0xEF, 0x36, 0xCC, 0x41, 0xCD, + 0xB3, 0x6F, 0xDB, 0x66, 0xB1, 0xE8, 0x8D, 0xD6, 0x42, 0x8A, 0xC6, 0xD9, + 0xB3, 0xD3, 0xD5, 0x62, 0xE8, 0x84, 0x14, 0x88, 0x6C, 0x5B, 0x83, 0x94, + 0x32, 0x08, 0x68, 0x1A, 0x1B, 0x53, 0x7A, 0x7B, 0x75, 0xB7, 0xDD, 0x4E, + 0x3E, 0x84, 0xDD, 0x38, 0x97, 0x52, 0x8C, 0xD5, 0x67, 0x27, 0xCB, 0x61, + 0xE8, 0x52, 0x2A, 0x39, 0x65, 0x00, 0xA1, 0x8D, 0xB2, 0xD6, 0x54, 0x42, + 0xAB, 0x8D, 0x38, 0x96, 0x39, 0x03, 0x40, 0xC9, 0x95, 0xBD, 0x33, 0x5C, + 0x34, 0xC9, 0x3D, 0x4F, 0x4C, 0x36, 0x8F, 0xD3, 0x9C, 0x52, 0x1E, 0xFA, + 0xAE, 0x6B, 0x5C, 0x48, 0x69, 0xF6, 0xA1, 0xE4, 0x92, 0x62, 0xAE, 0x15, + 0xE7, 0x90, 0x4A, 0x45, 0x21, 0x24, 0x01, 0xB0, 0x92, 0xA8, 0xD4, 0x1A, + 0x42, 0x64, 0xF2, 0x21, 0xA3, 0xC8, 0xFB, 0xCD, 0xDB, 0x6F, 0xBF, 0x58, + 0x3C, 0x7E, 0xF7, 0xF9, 0x07, 0x3F, 0xD8, 0xBC, 0xFA, 0xE2, 0x1F, 0xFE, + 0xC3, 0x9F, 0xFF, 0x67, 0xFF, 0xED, 0xFF, 0xB0, 0x6C, 0xF5, 0xE5, 0xE5, + 0xDB, 0x47, 0x8F, 0x9F, 0x35, 0x8B, 0x33, 0x22, 0x11, 0xC7, 0xFB, 0x79, + 0xBF, 0xFB, 0xE8, 0xA3, 0x3F, 0x18, 0x9E, 0x7D, 0x08, 0x00, 0x42, 0xF1, + 0xAE, 0x2D, 0x89, 0x20, 0xC6, 0xEC, 0xDC, 0xC1, 0x24, 0x6C, 0x8C, 0x6E, + 0x1A, 0x6B, 0x79, 0x7F, 0xD0, 0x92, 0x87, 0x26, 0x22, 0xAA, 0x15, 0xAD, + 0xB5, 0x6D, 0xD3, 0x74, 0x6D, 0xA3, 0x8D, 0xD2, 0x4A, 0x35, 0x8D, 0x35, + 0x47, 0x3B, 0x11, 0xCB, 0x26, 0x59, 0x5F, 0x16, 0x42, 0x44, 0x44, 0xF6, + 0xB4, 0x61, 0xAD, 0x4A, 0x29, 0xA5, 0x15, 0x67, 0x47, 0x18, 0x6D, 0x26, + 0xEF, 0xF7, 0xB3, 0xA7, 0xDF, 0x29, 0x51, 0x0F, 0x86, 0x38, 0x26, 0x89, + 0xAC, 0xD1, 0xC6, 0x18, 0x6B, 0xEC, 0xEF, 0x25, 0xB0, 0x33, 0x8A, 0x5F, + 0x89, 0x80, 0x37, 0xCD, 0xC3, 0x1E, 0x94, 0x72, 0x29, 0x35, 0xA5, 0x74, + 0x20, 0xE9, 0x2A, 0xB2, 0xCF, 0x03, 0x11, 0x73, 0xA9, 0x88, 0x24, 0x40, + 0x80, 0x10, 0xBC, 0xDA, 0x33, 0xBF, 0xCC, 0x73, 0x47, 0xA9, 0x87, 0xB6, + 0x5D, 0x50, 0x76, 0xB9, 0xFB, 0xE6, 0x93, 0xFF, 0xF3, 0x7F, 0xFA, 0xF4, + 0xF5, 0x5D, 0x01, 0xC9, 0x0E, 0xCD, 0x98, 0xA2, 0x00, 0xC8, 0xB5, 0xE6, + 0xC2, 0x89, 0xEC, 0x85, 0xF5, 0x56, 0xCB, 0x93, 0xD3, 0xA7, 0xDF, 0xFB, + 0xA8, 0x59, 0x2C, 0xEF, 0xDE, 0xBC, 0xBA, 0xDB, 0x6C, 0x77, 0x9B, 0xFB, + 0xBE, 0x6D, 0xCF, 0xDE, 0xFD, 0xA8, 0xD6, 0xC2, 0x77, 0x78, 0xCE, 0x95, + 0x73, 0x4A, 0x58, 0x35, 0x0A, 0x48, 0x8C, 0x48, 0xE4, 0x5C, 0x7C, 0x88, + 0x4D, 0xE3, 0x9A, 0xC6, 0x4D, 0xB3, 0x47, 0xC4, 0x94, 0x0B, 0xEB, 0x63, + 0x41, 0x08, 0xB6, 0xEF, 0x01, 0x1D, 0xF4, 0x1F, 0xCC, 0x18, 0x3C, 0x64, + 0x6F, 0x34, 0xD6, 0x18, 0xCD, 0x17, 0xA1, 0xD0, 0x02, 0xB4, 0x3A, 0x84, + 0x38, 0x72, 0x61, 0xC2, 0x6E, 0xF6, 0x70, 0x38, 0xEB, 0xA1, 0xD4, 0x52, + 0x09, 0x4B, 0x2E, 0xA9, 0xE4, 0x8A, 0xC8, 0x9E, 0x2D, 0xBE, 0x23, 0x85, + 0x94, 0x02, 0x64, 0x48, 0xA9, 0x12, 0x59, 0x6B, 0xA7, 0x69, 0x66, 0x62, + 0x8E, 0xAF, 0x6A, 0x00, 0x90, 0x20, 0x38, 0x04, 0x55, 0x49, 0xC5, 0xAA, + 0x3A, 0x24, 0xD0, 0x4A, 0xF1, 0x16, 0xEF, 0xAC, 0xE5, 0x7D, 0xFE, 0xE6, + 0x76, 0x73, 0x79, 0x7D, 0x27, 0x84, 0xE4, 0xCE, 0xBD, 0xBE, 0x73, 0x20, + 0x44, 0x88, 0x89, 0xF5, 0x10, 0x39, 0xE7, 0x6F, 0x5E, 0xBE, 0xC5, 0x8A, + 0xE7, 0x67, 0x27, 0xBF, 0xFD, 0xE2, 0x9B, 0x37, 0x97, 0x57, 0xBB, 0xFD, + 0x24, 0xE5, 0x21, 0xA6, 0xDC, 0x18, 0xD3, 0xB6, 0xCD, 0x34, 0xFB, 0x9C, + 0xB3, 0x38, 0xFA, 0x52, 0xCC, 0xC1, 0xB9, 0x05, 0x1C, 0x04, 0xA4, 0x94, + 0x5C, 0x2F, 0x06, 0x67, 0xD4, 0x7A, 0xD1, 0x3D, 0x3A, 0x5D, 0xAE, 0x87, + 0x5E, 0x4A, 0x31, 0xF4, 0x1D, 0x10, 0xF4, 0x5D, 0x63, 0xAD, 0x96, 0x52, + 0xC4, 0x94, 0x85, 0x50, 0xCE, 0x59, 0x63, 0x8D, 0x52, 0x32, 0xE7, 0xA2, + 0xB5, 0x6A, 0x9B, 0xA6, 0x94, 0x3A, 0xCE, 0x21, 0x95, 0x22, 0xB5, 0xE2, + 0x61, 0x25, 0xE5, 0x12, 0x73, 0x62, 0x62, 0xA7, 0xD6, 0xA2, 0xB4, 0x66, + 0x9D, 0x2D, 0x13, 0xD3, 0xD3, 0x34, 0x57, 0xC4, 0xE5, 0xA2, 0x67, 0x14, + 0x92, 0x10, 0x7D, 0x8C, 0x29, 0x67, 0x16, 0xD3, 0xE4, 0x52, 0xE6, 0x10, + 0x59, 0x86, 0x16, 0x53, 0xC9, 0xA5, 0x84, 0x94, 0x7C, 0x88, 0x40, 0x34, + 0xCD, 0x7E, 0xF6, 0xF1, 0xC9, 0xE3, 0x47, 0xEF, 0x3C, 0x7D, 0x4C, 0x40, + 0x48, 0xBF, 0x8B, 0x0E, 0x97, 0x20, 0x99, 0x60, 0x61, 0x95, 0xFB, 0x6E, + 0x1C, 0xA5, 0x14, 0x4F, 0x1F, 0x9F, 0x3D, 0x7E, 0x74, 0xEA, 0xAC, 0x26, + 0x80, 0x18, 0x33, 0xAF, 0xBD, 0xDB, 0xDD, 0x7E, 0xB7, 0x9F, 0xE6, 0xD9, + 0x0B, 0x10, 0xC6, 0xE8, 0xD3, 0xB3, 0xF5, 0x7A, 0xBD, 0x10, 0x42, 0x74, + 0x8D, 0xD3, 0x9F, 0x7F, 0xF1, 0xED, 0x34, 0x4D, 0x00, 0xD4, 0x77, 0x1D, + 0xE3, 0x76, 0x02, 0x84, 0x56, 0xD2, 0xFB, 0xA0, 0x95, 0x34, 0xDA, 0xF4, + 0x7D, 0x77, 0xB6, 0x5E, 0xEE, 0xA7, 0xF9, 0x6F, 0xFE, 0xE9, 0xD3, 0xFD, + 0x38, 0x7B, 0x1F, 0xE7, 0xE0, 0x87, 0xAE, 0x23, 0x22, 0x1F, 0x23, 0x2F, + 0x47, 0x46, 0x69, 0x29, 0x65, 0xD7, 0x38, 0x0E, 0x14, 0x0B, 0x31, 0xB5, + 0x4D, 0x73, 0x9C, 0xB0, 0x68, 0x3F, 0x8E, 0xA5, 0x54, 0x1F, 0x92, 0x14, + 0x62, 0xBB, 0x9B, 0xE6, 0x10, 0x52, 0xCE, 0x21, 0x84, 0x45, 0xDF, 0x39, + 0x7B, 0x08, 0x6E, 0xEF, 0xDB, 0x46, 0x29, 0xB9, 0x18, 0xDA, 0xAE, 0x6B, + 0x08, 0x48, 0x0A, 0xC9, 0xE3, 0x2A, 0xBF, 0xA5, 0xB5, 0x60, 0xCE, 0xA5, + 0x3E, 0x78, 0x29, 0x2A, 0x85, 0x98, 0x43, 0x48, 0x29, 0x97, 0x9C, 0x4B, + 0xDF, 0xB5, 0xCE, 0x5A, 0x10, 0xC0, 0x89, 0x80, 0x39, 0xD7, 0x18, 0x93, + 0xD6, 0x5A, 0x6A, 0x4D, 0x88, 0x39, 0x97, 0x89, 0x02, 0x57, 0xE0, 0x70, + 0x6C, 0x4B, 0x29, 0x25, 0xA5, 0x5C, 0x6B, 0x05, 0x11, 0xBA, 0xF3, 0xF7, + 0xD4, 0x2F, 0xFF, 0x4E, 0x52, 0xCD, 0x61, 0xFE, 0xEB, 0x3F, 0xFF, 0xB3, + 0xD5, 0xC5, 0x3B, 0xCD, 0xE9, 0x3B, 0xB0, 0x2F, 0x88, 0xD8, 0x34, 0x6D, + 0x4A, 0x15, 0x11, 0x4F, 0x1E, 0x3D, 0x79, 0xF1, 0xF1, 0x1F, 0x9E, 0xBE, + 0xF8, 0x40, 0x48, 0x45, 0x58, 0x53, 0x2E, 0x02, 0x0E, 0xA6, 0xC5, 0xB6, + 0x1D, 0x98, 0xAF, 0xA8, 0x88, 0x42, 0x48, 0xAC, 0x54, 0xA9, 0x72, 0x7C, + 0x53, 0xCE, 0x25, 0x1D, 0x4B, 0x16, 0x58, 0xB7, 0xA5, 0x95, 0x42, 0xC4, + 0x63, 0xA2, 0xC0, 0x81, 0x22, 0x34, 0x46, 0xB7, 0xD0, 0xF0, 0x29, 0x16, + 0x53, 0x36, 0x5A, 0x95, 0x52, 0xDB, 0xB6, 0x51, 0x5A, 0xE5, 0x5C, 0xF8, + 0x81, 0x63, 0x5E, 0xAD, 0xEF, 0xDA, 0x39, 0x44, 0x09, 0x87, 0x54, 0x2F, + 0x21, 0x84, 0xD1, 0xBA, 0x6D, 0x9C, 0xB3, 0xE6, 0xA0, 0xCF, 0x06, 0x28, + 0xC7, 0x25, 0xFA, 0x41, 0xCF, 0xC5, 0x8C, 0x24, 0x3B, 0x6C, 0x79, 0x8C, + 0x25, 0x24, 0x56, 0x7B, 0x70, 0x39, 0x93, 0xD1, 0x9A, 0x48, 0xF2, 0xC2, + 0x48, 0x04, 0x39, 0xA7, 0x28, 0x72, 0xD7, 0x39, 0x7E, 0x76, 0xAD, 0x35, + 0x95, 0x28, 0xE5, 0x2C, 0x4A, 0x61, 0x25, 0x1A, 0x62, 0x5E, 0xBF, 0xFD, + 0xD5, 0x27, 0x3F, 0xFF, 0xCB, 0xDF, 0x5C, 0x6E, 0x48, 0x28, 0x55, 0x3D, + 0x48, 0x51, 0x4A, 0x09, 0xDE, 0x5B, 0xE7, 0x9E, 0x5E, 0x5C, 0xDC, 0xDE, + 0xDE, 0x02, 0x55, 0x42, 0x92, 0x52, 0x74, 0x6D, 0x73, 0x7A, 0x7E, 0xDA, + 0xF4, 0x03, 0x81, 0x08, 0xF3, 0x1C, 0xC3, 0x9C, 0x84, 0xFA, 0xE6, 0xB3, + 0x4F, 0x9E, 0xFE, 0xC1, 0x9F, 0xB8, 0xD5, 0x09, 0x54, 0x02, 0x21, 0xBA, + 0x8E, 0x7B, 0x67, 0x22, 0x2F, 0xE6, 0x43, 0xD7, 0x0A, 0x21, 0x6E, 0xEF, + 0xB7, 0x0C, 0xC9, 0x79, 0x1F, 0xAC, 0xB3, 0xC3, 0x62, 0x28, 0xB5, 0x8A, + 0x94, 0x39, 0x5F, 0x4C, 0x2A, 0x19, 0x73, 0x49, 0x29, 0x13, 0x11, 0x96, + 0xC3, 0x01, 0xCD, 0x2F, 0x83, 0x90, 0x42, 0x6B, 0xAD, 0xA4, 0xF4, 0x29, + 0x69, 0xA5, 0xD8, 0xC9, 0x5B, 0x4A, 0xD1, 0x4A, 0xF3, 0xD3, 0x93, 0x4B, + 0xB5, 0xC6, 0x48, 0xA9, 0x72, 0x45, 0x00, 0x62, 0x20, 0x6C, 0xBD, 0x58, + 0xE4, 0x5A, 0x35, 0x81, 0x92, 0x54, 0x91, 0x32, 0x16, 0x20, 0xC8, 0xB9, + 0x38, 0x6B, 0x8C, 0x35, 0x07, 0x6B, 0x7A, 0xD3, 0x04, 0x1F, 0x95, 0x16, + 0x44, 0x54, 0x25, 0x69, 0xAD, 0x6A, 0xA9, 0x4A, 0x4A, 0xC4, 0x9A, 0x52, + 0xE4, 0x62, 0x1F, 0xD6, 0x91, 0x12, 0xA2, 0x10, 0xE0, 0x7D, 0x20, 0x80, + 0xE0, 0xA3, 0xB3, 0x7A, 0x3B, 0xCE, 0xE3, 0x1C, 0x76, 0xBB, 0xA9, 0x6B, + 0xDD, 0xA3, 0xB3, 0x35, 0x5B, 0xCA, 0xB8, 0x5F, 0x23, 0xA6, 0x62, 0x8C, + 0x21, 0x80, 0xBE, 0xEF, 0xC6, 0x71, 0xDE, 0xEE, 0xF7, 0x7D, 0xDF, 0xE5, + 0x94, 0x19, 0xED, 0x34, 0xC6, 0x48, 0x21, 0xCF, 0x4E, 0x4F, 0xA6, 0x69, + 0x1E, 0xBD, 0x67, 0x63, 0x53, 0x29, 0x45, 0x0A, 0x99, 0x72, 0x12, 0x52, + 0x34, 0xD6, 0x08, 0x21, 0x00, 0xA4, 0x52, 0x07, 0x1A, 0x45, 0x48, 0x49, + 0x85, 0x7C, 0x08, 0x6D, 0xE7, 0x88, 0xA8, 0xE4, 0x0A, 0xC0, 0xF3, 0x26, + 0x32, 0xC5, 0x52, 0x4A, 0x25, 0x01, 0x42, 0x8A, 0x94, 0xB3, 0xF7, 0x29, + 0xA5, 0xB2, 0x58, 0x74, 0x95, 0x20, 0x25, 0x5F, 0x6B, 0x4D, 0xA5, 0x3A, + 0x67, 0x95, 0x94, 0xDE, 0x07, 0x56, 0x14, 0xB1, 0x5C, 0xB4, 0x96, 0xB2, + 0xDD, 0x8D, 0x44, 0xF4, 0xF4, 0xE2, 0xDC, 0xC7, 0x08, 0x44, 0x31, 0x05, + 0x22, 0x97, 0x6A, 0x01, 0x10, 0xDC, 0x37, 0x35, 0x7B, 0x0F, 0x42, 0x5A, + 0xA3, 0x89, 0xA8, 0x62, 0x6D, 0x9C, 0xCB, 0xA5, 0x20, 0xD6, 0x69, 0x8E, + 0x3E, 0x84, 0x27, 0x8F, 0xCE, 0x3A, 0xE7, 0x66, 0xEF, 0xF9, 0xFB, 0x52, + 0x5A, 0x12, 0x41, 0x8A, 0x5C, 0x20, 0x57, 0x58, 0x7B, 0xBC, 0x5A, 0x2E, + 0x40, 0x40, 0xEB, 0x1C, 0x33, 0x3F, 0xF6, 0x64, 0xC5, 0x4F, 0x5D, 0xA9, + 0x95, 0x45, 0xC2, 0xCE, 0x5A, 0x29, 0xA4, 0xF7, 0xA1, 0x10, 0xA5, 0x5C, + 0x72, 0x2A, 0xBC, 0x75, 0xE9, 0x79, 0x9E, 0x9D, 0xB3, 0x00, 0x10, 0x62, + 0x12, 0x40, 0x56, 0x69, 0x8E, 0xC7, 0x02, 0x82, 0x52, 0xD0, 0x68, 0x98, + 0x26, 0xFF, 0x9B, 0x2F, 0xBF, 0xDB, 0xEE, 0x47, 0x64, 0x43, 0x3F, 0x22, + 0x87, 0x99, 0x31, 0xE2, 0x9E, 0x4B, 0x8E, 0x31, 0x46, 0xE7, 0xAC, 0x35, + 0xA5, 0xD6, 0x94, 0x8A, 0x14, 0x62, 0xF6, 0x71, 0x9C, 0x03, 0x11, 0xCE, + 0x3E, 0x28, 0xA5, 0x53, 0x2A, 0x93, 0x0F, 0x04, 0x42, 0x4A, 0xB9, 0xD9, + 0xED, 0xBC, 0x0F, 0x00, 0x60, 0xAD, 0x7E, 0x74, 0x76, 0xD2, 0xF7, 0x2D, + 0x1C, 0x33, 0x69, 0x01, 0xA0, 0xEF, 0x1B, 0x67, 0x8D, 0xE5, 0x94, 0x35, + 0xC4, 0x92, 0x0B, 0x53, 0x69, 0x25, 0xD7, 0x5C, 0x0B, 0x11, 0xEF, 0xBC, + 0x2C, 0xD1, 0xAE, 0xA5, 0x94, 0x07, 0x07, 0x0C, 0x63, 0x4C, 0xAC, 0x5A, + 0xDE, 0x6C, 0x47, 0x02, 0x92, 0x4A, 0x22, 0x62, 0xD7, 0x35, 0xA5, 0x62, + 0x4A, 0x29, 0x04, 0xE4, 0x9D, 0x5F, 0x08, 0xC1, 0xD0, 0x26, 0xE7, 0x40, + 0x44, 0xE3, 0x4E, 0xDE, 0xFB, 0xE1, 0xD5, 0xCB, 0xDF, 0xAE, 0x16, 0xFD, + 0x57, 0xBF, 0xFD, 0xF4, 0x5F, 0xFC, 0xDB, 0x7F, 0x3F, 0xC6, 0xBA, 0x76, + 0xDD, 0xE9, 0xD9, 0x39, 0x08, 0x35, 0xCD, 0x5E, 0x48, 0x29, 0xA4, 0x39, + 0x39, 0x7D, 0x64, 0x17, 0x67, 0x13, 0x6F, 0x4C, 0x88, 0xCE, 0x1A, 0x6B, + 0x6D, 0xDB, 0x36, 0xB5, 0x94, 0x10, 0x13, 0xEB, 0x09, 0xAA, 0x44, 0x3A, + 0xFA, 0x81, 0xF8, 0x2B, 0x64, 0xFD, 0x42, 0x39, 0x34, 0x5D, 0xF2, 0x35, + 0x95, 0x89, 0x68, 0xF6, 0x81, 0xBD, 0xCD, 0x7C, 0x20, 0xCA, 0x22, 0x7D, + 0x8C, 0xFC, 0x59, 0x3E, 0x9C, 0x3E, 0x4A, 0x29, 0x22, 0xE1, 0x7D, 0x6A, + 0x1A, 0x63, 0xB4, 0xC6, 0x5A, 0x8D, 0xD6, 0xAB, 0xC5, 0x90, 0x52, 0x39, + 0x84, 0x7B, 0x01, 0x49, 0x25, 0xB4, 0x52, 0xD6, 0x98, 0x7F, 0xDE, 0x8E, + 0x05, 0x52, 0x8A, 0x94, 0x52, 0x88, 0x09, 0xB9, 0x9E, 0x86, 0x28, 0xA5, + 0xC4, 0x71, 0x9D, 0x4C, 0x37, 0x36, 0x60, 0x7D, 0x38, 0x7C, 0x6E, 0xE6, + 0xA8, 0xE2, 0x11, 0x87, 0xB0, 0xD6, 0xC4, 0x1F, 0xAE, 0x75, 0xD6, 0x1A, + 0x3D, 0x00, 0x28, 0xA5, 0x42, 0xC9, 0xC6, 0x68, 0x25, 0x45, 0x91, 0xBA, + 0xBD, 0xFC, 0xF5, 0xE7, 0x9F, 0xFC, 0xC5, 0x3F, 0x7C, 0x7B, 0x69, 0x5D, + 0x2B, 0x84, 0x08, 0x39, 0x82, 0x90, 0x00, 0xC2, 0x58, 0xA7, 0x8C, 0x7D, + 0xFF, 0x87, 0x3F, 0x91, 0xBF, 0xFE, 0xC5, 0x3C, 0x8D, 0xB3, 0x0F, 0xAE, + 0x6D, 0xDE, 0xFF, 0xF0, 0xC3, 0xD5, 0xC5, 0x13, 0xD7, 0x0F, 0xFB, 0xBB, + 0xDB, 0x69, 0xB7, 0x6D, 0x8C, 0xF1, 0x31, 0x97, 0xE8, 0x77, 0x57, 0x2F, + 0x4F, 0x97, 0xA7, 0x84, 0x68, 0x8C, 0x1A, 0x86, 0x4E, 0x0A, 0x29, 0xB7, + 0x3B, 0x31, 0x41, 0x41, 0x4C, 0xA5, 0x2C, 0x87, 0x1E, 0x09, 0xBD, 0x4F, + 0xFD, 0x30, 0x08, 0x01, 0x25, 0x45, 0xAA, 0x45, 0x48, 0x5D, 0x10, 0xA5, + 0x44, 0x00, 0x76, 0x02, 0x1C, 0x12, 0x77, 0x2B, 0xA2, 0x94, 0x0A, 0x80, + 0x72, 0xCE, 0x1C, 0x9D, 0x96, 0x73, 0xE6, 0x48, 0x77, 0x2D, 0x25, 0x72, + 0xF4, 0x6E, 0x45, 0xCE, 0x32, 0x38, 0x3C, 0x30, 0x00, 0x21, 0xA5, 0xC3, + 0xA5, 0x82, 0xD8, 0x38, 0xCB, 0x15, 0x9D, 0x95, 0x88, 0x83, 0xCF, 0x72, + 0xE4, 0x86, 0x04, 0x91, 0x32, 0x8B, 0x76, 0x50, 0x08, 0xD1, 0xB5, 0x6D, + 0x08, 0x11, 0x40, 0x18, 0xA3, 0x72, 0xC2, 0x0C, 0xD5, 0x68, 0x29, 0x41, + 0x1A, 0x6B, 0xAC, 0xB5, 0xF7, 0xDB, 0x1D, 0xCF, 0xE9, 0x11, 0x93, 0xD2, + 0x8A, 0xC5, 0x89, 0x52, 0xCA, 0xB6, 0x75, 0xC6, 0xE8, 0x14, 0x53, 0x4C, + 0xF9, 0x66, 0xB3, 0x35, 0x7B, 0x7D, 0x7D, 0xB7, 0xED, 0x5B, 0xC7, 0xBD, + 0x8B, 0x6D, 0xDB, 0x84, 0x10, 0x2A, 0x52, 0x08, 0xF1, 0x67, 0x7F, 0xFB, + 0x4F, 0x5A, 0xA9, 0xAE, 0x6D, 0xD9, 0xED, 0xC0, 0x9E, 0x47, 0xD6, 0x88, + 0x50, 0x8C, 0x93, 0xF7, 0x87, 0x7C, 0x5B, 0x44, 0x44, 0x04, 0xF9, 0xD0, + 0xDB, 0x06, 0x9C, 0xB6, 0xC6, 0x23, 0xB6, 0x54, 0x8A, 0xD1, 0x18, 0x8E, + 0x44, 0x92, 0x42, 0x12, 0x55, 0x56, 0xF0, 0x02, 0x08, 0x24, 0x64, 0xC1, + 0x33, 0xCB, 0x92, 0x67, 0x1F, 0x72, 0xAE, 0xB9, 0x24, 0xA0, 0x76, 0x9E, + 0x3D, 0x11, 0xA5, 0x94, 0xA5, 0x56, 0x46, 0xEB, 0x94, 0x52, 0xCC, 0x19, + 0x11, 0x65, 0x91, 0xCE, 0x39, 0x29, 0xE5, 0xE4, 0x83, 0x00, 0x38, 0x3D, + 0x5D, 0xEF, 0xA6, 0x29, 0xE7, 0xB2, 0x5A, 0x2D, 0x94, 0xD4, 0xB9, 0x14, + 0x12, 0xA0, 0x95, 0x02, 0x25, 0x59, 0xEE, 0xDF, 0xF7, 0xBD, 0x94, 0xB2, + 0xD4, 0x62, 0xAC, 0xD1, 0xC6, 0xC4, 0xA3, 0xB0, 0xD9, 0x18, 0x6D, 0x8D, + 0x26, 0x38, 0x58, 0x6E, 0x8D, 0x56, 0xCE, 0x9A, 0x5C, 0x39, 0xC0, 0x4A, + 0x4E, 0x53, 0x65, 0xBD, 0xA4, 0x10, 0xB0, 0x1C, 0xBA, 0x72, 0xEC, 0x52, + 0xE2, 0xEB, 0x64, 0x0E, 0xC1, 0x28, 0x75, 0x38, 0x87, 0x31, 0x2B, 0x2D, + 0xA5, 0x51, 0x10, 0x8B, 0xF7, 0xC9, 0x1A, 0x7B, 0x76, 0xBA, 0x26, 0x02, + 0x2D, 0xA4, 0x9C, 0x27, 0xAF, 0xB4, 0x56, 0x4A, 0x1A, 0xA5, 0x32, 0x17, + 0xA9, 0xE5, 0x2C, 0x84, 0x70, 0xCE, 0xA5, 0x52, 0x62, 0xCC, 0x3E, 0x04, + 0x86, 0x57, 0x18, 0x28, 0x6D, 0x9B, 0x86, 0x08, 0x26, 0xEF, 0x41, 0x88, + 0xCE, 0x39, 0x21, 0xA5, 0x0F, 0xA1, 0xEB, 0x0E, 0xC2, 0xA8, 0xFD, 0xE4, + 0x6F, 0xEE, 0xB6, 0x02, 0x0E, 0xA9, 0x92, 0x02, 0xA0, 0x6B, 0x9B, 0xD3, + 0xF5, 0x32, 0x57, 0x7A, 0x7D, 0x79, 0x35, 0x8E, 0x93, 0x90, 0xD2, 0x1A, + 0x7D, 0x7A, 0xB2, 0x7A, 0xFE, 0xCE, 0xE3, 0x8B, 0xF3, 0xF5, 0x62, 0xE8, + 0x78, 0x3B, 0xB3, 0xC6, 0x34, 0xAD, 0x95, 0x9C, 0xE6, 0x41, 0x40, 0x40, + 0x29, 0x1F, 0xF8, 0xEF, 0x43, 0xE1, 0x4C, 0xC5, 0x94, 0x4A, 0xCC, 0xA5, + 0x22, 0x0A, 0x01, 0x52, 0x29, 0xCC, 0x31, 0xC6, 0xC8, 0xC2, 0x13, 0x6B, + 0x74, 0xCA, 0x65, 0xF6, 0x41, 0x4A, 0xD5, 0x36, 0xBA, 0xD4, 0xD2, 0xB5, + 0xAD, 0xF7, 0x7E, 0x1C, 0xE7, 0x8A, 0xB5, 0xEB, 0xFA, 0xA6, 0xD1, 0x00, + 0xC4, 0xBE, 0x4B, 0x7D, 0xC8, 0x14, 0x14, 0xF3, 0xB8, 0xB7, 0xE7, 0xEF, + 0x5D, 0xFE, 0xD5, 0xFF, 0x5D, 0x72, 0x02, 0x69, 0xCE, 0x5F, 0x7C, 0xFF, + 0xF6, 0x6E, 0x2B, 0xDB, 0x4C, 0x44, 0x25, 0x85, 0x94, 0x28, 0x55, 0xA2, + 0x18, 0xA3, 0x9F, 0xB7, 0x9B, 0xCD, 0x88, 0xCD, 0xA2, 0x73, 0x87, 0x94, + 0x09, 0xA9, 0x42, 0x88, 0x87, 0x51, 0x11, 0xB1, 0x94, 0xC2, 0xE1, 0x88, + 0x6C, 0x62, 0xE1, 0xB0, 0x71, 0xC9, 0x42, 0x36, 0x29, 0x0B, 0xA2, 0x0F, + 0x91, 0xBF, 0x0B, 0x4E, 0x61, 0x16, 0x02, 0x95, 0x94, 0x52, 0x48, 0x56, + 0x36, 0x33, 0x5F, 0x89, 0x88, 0x39, 0x27, 0x6B, 0xD8, 0xBD, 0x21, 0x38, + 0x98, 0x89, 0x7D, 0x8E, 0x8C, 0xD5, 0x4B, 0x21, 0x94, 0x56, 0x84, 0x24, + 0x80, 0xB4, 0xD6, 0x46, 0x1B, 0x02, 0xF0, 0x31, 0xF5, 0x6D, 0xC3, 0x5C, + 0x70, 0x29, 0x87, 0xC9, 0xCB, 0x7B, 0x56, 0x66, 0x17, 0xE7, 0x34, 0x4B, + 0xA8, 0x62, 0x4A, 0x7D, 0xD7, 0x71, 0x98, 0x22, 0x83, 0x8C, 0x52, 0x2A, + 0xAD, 0x35, 0x1D, 0xE2, 0x61, 0x91, 0xC3, 0xFA, 0xF9, 0x9F, 0x19, 0xE0, + 0x10, 0x04, 0x23, 0x78, 0x63, 0x0C, 0x21, 0x12, 0x55, 0x65, 0xDB, 0x61, + 0xBA, 0xBC, 0xFD, 0xF2, 0x1F, 0x3F, 0x79, 0x79, 0x0D, 0x20, 0xDA, 0xB6, + 0x91, 0xDA, 0xE4, 0xED, 0x36, 0xE7, 0x82, 0xB5, 0x34, 0xAE, 0x99, 0xC7, + 0x3D, 0xE9, 0xE6, 0x7B, 0x7F, 0xF4, 0xA7, 0xB7, 0xDF, 0x7D, 0xE5, 0x9A, + 0xD6, 0xB6, 0xDD, 0xFA, 0xF1, 0x13, 0xDB, 0xF5, 0xCA, 0x35, 0xF3, 0xB8, + 0x8B, 0x31, 0x28, 0x6D, 0x18, 0x6F, 0x8E, 0x31, 0xD6, 0x52, 0xB0, 0xB0, + 0x04, 0x49, 0x76, 0x7D, 0x8B, 0x84, 0x25, 0xD7, 0x1A, 0x62, 0xA5, 0x9A, + 0x6B, 0x91, 0x52, 0x39, 0x4D, 0x6F, 0xBF, 0xF9, 0xCC, 0x6A, 0xD1, 0x6A, + 0xF1, 0xD5, 0x6F, 0x3F, 0x9B, 0xAB, 0x5E, 0x3C, 0xFE, 0x5E, 0x46, 0x2A, + 0x29, 0x69, 0x6D, 0xA4, 0x54, 0x5A, 0x49, 0x25, 0x44, 0xC8, 0x07, 0x1C, + 0x50, 0x29, 0xC5, 0x88, 0x24, 0x11, 0xA5, 0x52, 0x9D, 0xD6, 0x08, 0x1C, + 0x01, 0x22, 0x85, 0x80, 0x43, 0x54, 0x3F, 0x1E, 0x3C, 0x34, 0x5A, 0x0B, + 0x38, 0x74, 0xE5, 0x21, 0x8B, 0xE6, 0x10, 0xAB, 0x10, 0x0A, 0xA4, 0x8C, + 0x39, 0xE7, 0x72, 0x08, 0xB5, 0xD1, 0x42, 0x19, 0xFE, 0xDD, 0x5A, 0x19, + 0xCC, 0x1D, 0xA7, 0xD9, 0x5A, 0xA3, 0xA4, 0x8A, 0x31, 0x01, 0x19, 0x21, + 0x0E, 0xD6, 0xA8, 0x93, 0xF5, 0x6A, 0x9A, 0xE7, 0x10, 0x32, 0x49, 0x80, + 0x8A, 0xEC, 0x18, 0xCD, 0xB9, 0x60, 0x55, 0xAC, 0xAD, 0xE7, 0xB6, 0x01, + 0xA5, 0x64, 0x88, 0x71, 0x9C, 0x3C, 0xDF, 0x3A, 0x7D, 0xDF, 0x2E, 0xFA, + 0xEE, 0x64, 0x35, 0x68, 0xA5, 0x78, 0xA5, 0x65, 0x49, 0xB3, 0x73, 0x0E, + 0xB1, 0xF2, 0xAA, 0x95, 0x52, 0x92, 0x52, 0xF6, 0x5D, 0xC7, 0x31, 0xB9, + 0x7C, 0xC6, 0x71, 0xE4, 0x7F, 0x4C, 0x89, 0xCF, 0x85, 0x5A, 0x2B, 0xD5, + 0x43, 0xFC, 0x19, 0x81, 0x30, 0xD6, 0x12, 0x51, 0xA9, 0x28, 0x95, 0x92, + 0x1A, 0xFD, 0x94, 0xB4, 0x36, 0x93, 0x0F, 0x4A, 0x2B, 0xA7, 0x35, 0x09, + 0x10, 0x42, 0xB1, 0xF1, 0xE3, 0x7E, 0xB3, 0xEB, 0xBB, 0xF6, 0x7E, 0xBB, + 0xD7, 0x5A, 0xB3, 0x2E, 0xBF, 0x69, 0xDB, 0x5C, 0x78, 0xFF, 0x21, 0x66, + 0x8D, 0x9C, 0x73, 0x31, 0x04, 0x63, 0xD4, 0x7A, 0xB5, 0xAC, 0x44, 0xB3, + 0x8F, 0x8B, 0xA1, 0x07, 0x10, 0x24, 0x65, 0x2D, 0x05, 0x08, 0x50, 0x62, + 0x2D, 0xD8, 0x18, 0xC7, 0x81, 0x80, 0x05, 0xAB, 0xD1, 0xC6, 0xC7, 0x38, + 0xFB, 0x98, 0x53, 0x8E, 0x31, 0x1B, 0x25, 0xB9, 0x19, 0x56, 0x0B, 0x81, + 0x48, 0x4A, 0x09, 0xD6, 0x5A, 0x1E, 0x7D, 0x78, 0x7A, 0xE8, 0x7B, 0x44, + 0x44, 0xC2, 0x94, 0x33, 0x13, 0x79, 0x77, 0xB7, 0xF7, 0x29, 0xE5, 0xE5, + 0xA2, 0x37, 0x4A, 0x3B, 0x63, 0x72, 0xA9, 0x58, 0xC9, 0x5A, 0xF3, 0x10, + 0xAC, 0x6E, 0x1B, 0x63, 0x8D, 0xB1, 0x46, 0x7B, 0x1F, 0xAC, 0x35, 0x7A, + 0x1A, 0xE7, 0xA6, 0x71, 0x00, 0x80, 0xA5, 0xEC, 0x7D, 0xD9, 0x8D, 0x53, + 0x45, 0x6A, 0x9C, 0x35, 0xD6, 0x94, 0x92, 0xF7, 0xE3, 0x44, 0x48, 0x52, + 0x49, 0x8E, 0xDA, 0x60, 0x61, 0xD4, 0x34, 0xCF, 0x39, 0x67, 0xA5, 0xF4, + 0x6A, 0xD1, 0x5B, 0x63, 0x42, 0x08, 0x5C, 0xD0, 0x1D, 0x42, 0xDE, 0x17, + 0x7F, 0xBF, 0xD9, 0xA5, 0x92, 0x95, 0x54, 0x40, 0x50, 0x6A, 0xE9, 0xDA, + 0xE6, 0xD4, 0x39, 0x21, 0xC5, 0xCB, 0x97, 0xAF, 0xE6, 0xD9, 0x2B, 0xAD, + 0xCE, 0x4F, 0x4F, 0x9E, 0x5C, 0x9C, 0x19, 0xA3, 0x16, 0x7D, 0xB7, 0xE8, + 0xBB, 0xAE, 0x6D, 0x58, 0xE2, 0x4C, 0x40, 0x25, 0x57, 0xA5, 0x81, 0xB0, + 0xE6, 0x52, 0x81, 0xE8, 0x70, 0xB7, 0x08, 0x21, 0xA4, 0x50, 0xA0, 0x72, + 0x2E, 0x21, 0xE5, 0x10, 0xB9, 0x03, 0x97, 0x38, 0x39, 0x64, 0xF6, 0xA9, + 0xD6, 0x62, 0xAD, 0xE1, 0x27, 0xB8, 0x56, 0x34, 0x5A, 0x4B, 0x25, 0x0D, + 0x18, 0xEF, 0xFD, 0xED, 0xCD, 0xAD, 0x6D, 0x3B, 0xA9, 0x4C, 0xA9, 0xD5, + 0xFB, 0xC0, 0x65, 0x71, 0x44, 0x54, 0x6A, 0x69, 0x9B, 0xA6, 0x22, 0xEE, + 0xF7, 0x93, 0x6B, 0xDA, 0x2A, 0xCD, 0x17, 0xBF, 0xFC, 0xC7, 0x61, 0xFD, + 0xC8, 0x74, 0x4B, 0xC2, 0x7A, 0xBB, 0xCF, 0x29, 0x95, 0x71, 0xDC, 0xFA, + 0xDA, 0xEF, 0x23, 0xC8, 0x52, 0xFC, 0xE6, 0xD6, 0x08, 0x3D, 0x37, 0x8F, + 0x05, 0x10, 0x87, 0xED, 0xF8, 0x10, 0x72, 0x2E, 0x52, 0x0A, 0x86, 0x84, + 0x58, 0x58, 0x24, 0x33, 0xCB, 0xC7, 0x05, 0xE7, 0xF9, 0xB1, 0x6C, 0xED, + 0x00, 0x66, 0x1D, 0x90, 0x78, 0x92, 0x52, 0x3C, 0x38, 0xA5, 0x04, 0xB0, + 0x15, 0x96, 0x15, 0xF8, 0xAC, 0x84, 0x30, 0x04, 0x94, 0x52, 0xA9, 0x48, + 0x5A, 0x6B, 0x6B, 0xB4, 0xD6, 0xD2, 0x68, 0xED, 0x40, 0xC8, 0x46, 0x4C, + 0x4A, 0xFB, 0x18, 0x4B, 0xAD, 0x86, 0xD7, 0x28, 0x21, 0xD8, 0x3C, 0x38, + 0x87, 0xC0, 0x21, 0x3C, 0x52, 0x49, 0xAC, 0x58, 0x72, 0x19, 0xE7, 0xC0, + 0x5C, 0x8F, 0xD6, 0x12, 0x0C, 0x95, 0x52, 0x09, 0xA1, 0x6D, 0x1A, 0x00, + 0xA8, 0xEA, 0x77, 0x5D, 0xDF, 0x0F, 0xE5, 0x0E, 0xA5, 0x54, 0x38, 0xDA, + 0x26, 0x95, 0x52, 0x40, 0x14, 0x63, 0xE4, 0x80, 0x8A, 0xC2, 0xA9, 0x60, + 0x42, 0x9C, 0x88, 0x79, 0xFE, 0xFC, 0x67, 0x7F, 0xF5, 0xC9, 0xAF, 0xA7, + 0x54, 0x9E, 0x3E, 0x79, 0xFA, 0xFC, 0x7B, 0xDF, 0x1F, 0x96, 0x8B, 0xCB, + 0x37, 0xAF, 0xC7, 0xDD, 0xCE, 0x4F, 0xE3, 0xB4, 0xDF, 0x87, 0x94, 0x36, + 0x37, 0x37, 0xCF, 0x3E, 0xFA, 0xFE, 0x8B, 0x9F, 0xAC, 0xAD, 0xD6, 0xE3, + 0x7E, 0x5B, 0x08, 0xBA, 0x76, 0x48, 0x55, 0x5C, 0xBF, 0x79, 0x3B, 0x8E, + 0x7B, 0x90, 0xDA, 0x3A, 0x27, 0xA5, 0x12, 0xBA, 0x49, 0xA9, 0xD4, 0x52, + 0xB4, 0x24, 0x21, 0x01, 0x91, 0xA4, 0x50, 0xDA, 0x68, 0x15, 0x13, 0x49, + 0x89, 0x44, 0x6D, 0xD7, 0xEC, 0x93, 0x0F, 0xE3, 0xE6, 0xCD, 0xCB, 0xCF, + 0x52, 0xAD, 0xA6, 0x5B, 0xFC, 0xFC, 0x6F, 0x7E, 0xD6, 0xAE, 0x1E, 0x7F, + 0xFF, 0xA7, 0xFF, 0x7A, 0xB9, 0x3E, 0x55, 0x4A, 0x69, 0x2D, 0x15, 0x88, + 0x5A, 0xB9, 0x1E, 0xE5, 0x90, 0x50, 0x54, 0xCA, 0xA1, 0xC0, 0x4D, 0x0A, + 0x40, 0x42, 0x00, 0x50, 0x52, 0x28, 0x21, 0x94, 0x73, 0x3E, 0x26, 0x3E, + 0xB9, 0x40, 0x6B, 0x10, 0x87, 0xFA, 0x6E, 0x00, 0x90, 0x42, 0x58, 0xAD, + 0xB5, 0x92, 0xD5, 0x98, 0x78, 0x38, 0x13, 0x0F, 0xB6, 0xAA, 0x52, 0x6B, + 0x89, 0x55, 0x49, 0xD9, 0x3A, 0x97, 0x52, 0xE2, 0x78, 0x52, 0x21, 0x04, + 0xC3, 0x79, 0x0C, 0x29, 0x6A, 0xA9, 0x94, 0x16, 0xB5, 0x52, 0xAD, 0xC5, + 0xB9, 0xA6, 0x56, 0x0A, 0x21, 0xA1, 0xA4, 0x8A, 0x1C, 0x7E, 0x0F, 0x31, + 0x67, 0xCE, 0xDE, 0x68, 0xAC, 0x63, 0x88, 0x5D, 0xD0, 0x41, 0x2B, 0xE7, + 0xAC, 0xDA, 0xEE, 0xC6, 0xBB, 0xCD, 0xEE, 0xFA, 0xD6, 0x9D, 0x9F, 0xAE, + 0xD7, 0xCB, 0x81, 0x51, 0xF9, 0x3F, 0xFA, 0xC3, 0x8F, 0xB7, 0xBB, 0xA9, + 0x6B, 0xDD, 0x7E, 0x3F, 0xBF, 0x7E, 0x7B, 0x55, 0x11, 0x9D, 0x73, 0x6D, + 0xEB, 0x72, 0xCE, 0x4A, 0x1E, 0xE0, 0x24, 0x01, 0x04, 0x20, 0xF8, 0xF4, + 0xE1, 0x85, 0xD1, 0x18, 0xC3, 0xB6, 0x01, 0x24, 0x94, 0xDC, 0xCF, 0x5D, + 0x0F, 0x9F, 0xA9, 0xD1, 0x7A, 0x9C, 0xC3, 0x6E, 0x9C, 0x4E, 0xD7, 0x4B, + 0xA1, 0x24, 0x0B, 0x20, 0xEE, 0xEF, 0x77, 0xBC, 0x2A, 0x12, 0x40, 0xD7, + 0x36, 0xEC, 0x67, 0xB0, 0xD6, 0x72, 0xD6, 0x16, 0x57, 0x40, 0xB1, 0xF5, + 0x35, 0xE7, 0x9C, 0x52, 0x32, 0xC6, 0x22, 0xC0, 0xEC, 0x7D, 0xDF, 0x35, + 0xBF, 0x17, 0x19, 0x82, 0x3C, 0xF8, 0x61, 0x05, 0x5F, 0x83, 0xD6, 0x6A, + 0x9E, 0x83, 0x10, 0x42, 0x38, 0x51, 0x0B, 0x62, 0xAD, 0x21, 0x84, 0x9C, + 0xB3, 0x6E, 0x9C, 0x73, 0x76, 0x1C, 0x27, 0x29, 0x85, 0x51, 0x8A, 0xA3, + 0x19, 0xF7, 0xE3, 0x4C, 0x44, 0x48, 0xC8, 0x67, 0x85, 0x4F, 0xB1, 0x96, + 0x42, 0x00, 0x58, 0xC9, 0x68, 0xB5, 0x5E, 0x2D, 0xC7, 0x71, 0xDE, 0x8F, + 0x1E, 0x00, 0xAC, 0xB1, 0x5D, 0xA7, 0xAC, 0x31, 0xCE, 0x39, 0x6B, 0xB5, + 0x52, 0x2A, 0xA7, 0x12, 0x42, 0x70, 0xD6, 0x1A, 0x6B, 0x08, 0x28, 0xA7, + 0xAC, 0x53, 0x4E, 0x5A, 0xC9, 0xC6, 0xDA, 0x39, 0xC4, 0xC9, 0x47, 0xA5, + 0x75, 0xA3, 0x15, 0x22, 0xD6, 0x52, 0x42, 0x8C, 0x02, 0x84, 0x6B, 0x9A, + 0x5A, 0xD8, 0x07, 0x67, 0xBC, 0xF7, 0x3C, 0xA6, 0xB7, 0x4D, 0xD3, 0x77, + 0x2D, 0x3B, 0x3C, 0xBA, 0xAE, 0xB3, 0xC6, 0x6E, 0xB6, 0xFB, 0x90, 0x52, + 0x39, 0xE0, 0x7C, 0x79, 0xE8, 0x5A, 0x63, 0x8C, 0x16, 0xFA, 0x74, 0xBD, + 0x0A, 0x39, 0x4F, 0xDB, 0x59, 0x0A, 0x69, 0x8D, 0x01, 0xA2, 0xD5, 0x62, + 0xB0, 0xD6, 0x74, 0xAD, 0x63, 0x44, 0x33, 0xE7, 0x82, 0x28, 0x6B, 0xAD, + 0x08, 0x54, 0x2B, 0x89, 0x94, 0x85, 0x14, 0xA5, 0x54, 0x25, 0xA4, 0x54, + 0x92, 0x4B, 0x40, 0xA4, 0x10, 0xB9, 0x96, 0x94, 0x2A, 0x0F, 0x35, 0xE2, + 0xD0, 0xD2, 0x56, 0x89, 0x40, 0x2B, 0x29, 0x85, 0x6E, 0x1D, 0x77, 0x9D, + 0x1D, 0x6A, 0x84, 0x4A, 0xC5, 0xD9, 0x87, 0xAB, 0xCB, 0xB7, 0xC3, 0xF2, + 0x24, 0x15, 0x0A, 0x61, 0xB2, 0xD6, 0x12, 0xD6, 0x71, 0xDC, 0x10, 0x28, + 0x22, 0x79, 0x4C, 0x74, 0x16, 0xD6, 0x1A, 0x90, 0xEA, 0xE4, 0xE9, 0x8B, + 0x8B, 0xA1, 0xCC, 0xC5, 0x2E, 0xD6, 0xA7, 0xB6, 0x69, 0x43, 0x10, 0xD5, + 0x3A, 0x41, 0x55, 0x0B, 0x14, 0x20, 0x97, 0xCB, 0x45, 0x7C, 0x39, 0x4E, + 0x63, 0x8B, 0xCD, 0xE3, 0x10, 0x83, 0x75, 0x36, 0x84, 0x5C, 0x8A, 0x7F, + 0x30, 0x11, 0x12, 0xFD, 0x7F, 0x4C, 0xBD, 0xC9, 0xAF, 0x5D, 0x59, 0x7A, + 0xE5, 0xB7, 0xFB, 0xBD, 0x4F, 0x77, 0xFB, 0xFB, 0x3A, 0x3E, 0x76, 0x41, + 0x46, 0x1F, 0xD9, 0x29, 0x25, 0x57, 0x95, 0xAA, 0xA4, 0x92, 0xA1, 0x42, + 0x01, 0x06, 0x8C, 0xAA, 0x91, 0x01, 0x4F, 0x8C, 0x02, 0x0C, 0xDB, 0x63, + 0x0F, 0x6A, 0xE2, 0xB9, 0xFF, 0x28, 0xBB, 0x60, 0xA0, 0x20, 0x97, 0x2C, + 0x59, 0xA9, 0xCC, 0x94, 0x32, 0x32, 0xA3, 0x25, 0x19, 0xEC, 0x5E, 0x7F, + 0xDB, 0xD3, 0xEE, 0x7E, 0x6F, 0x0F, 0xF6, 0x7D, 0x61, 0x05, 0x81, 0x18, + 0x90, 0x04, 0x41, 0xDE, 0xF7, 0xCE, 0x77, 0xBE, 0x66, 0xAD, 0xDF, 0x8A, + 0x9C, 0x33, 0x00, 0x81, 0x56, 0xD6, 0x7B, 0xCF, 0x39, 0xF5, 0x3E, 0x22, + 0x04, 0xAD, 0x4D, 0xC3, 0x26, 0x88, 0x30, 0x40, 0x00, 0xD2, 0x8C, 0x09, + 0x61, 0x48, 0x3B, 0x32, 0x7F, 0xF0, 0xF4, 0xC0, 0x94, 0xB7, 0xE4, 0x9C, + 0x13, 0x82, 0x7B, 0x8F, 0x62, 0x08, 0x88, 0xE2, 0x90, 0xF2, 0x44, 0x12, + 0xE5, 0x84, 0x10, 0x8A, 0x31, 0x44, 0x50, 0x3B, 0x9F, 0x01, 0xA8, 0xAD, + 0x49, 0xCF, 0x1B, 0xBA, 0x0F, 0x55, 0x8C, 0x31, 0x4A, 0xA8, 0x89, 0xC3, + 0x08, 0xC2, 0x10, 0xFC, 0xA0, 0x4C, 0x2F, 0x15, 0x46, 0x88, 0xD0, 0x44, + 0x34, 0x07, 0x09, 0x52, 0xFA, 0xE3, 0x74, 0x99, 0x26, 0xD0, 0xF4, 0x6E, + 0x0B, 0x21, 0xC4, 0x18, 0x0E, 0xB2, 0xD2, 0x7B, 0x85, 0x57, 0x08, 0xC1, + 0x39, 0x8F, 0x30, 0xA6, 0xD4, 0x22, 0x08, 0x23, 0x80, 0x50, 0xCA, 0xF6, + 0xDB, 0xBF, 0xFB, 0xCD, 0xEF, 0xFE, 0x5E, 0x3B, 0x2F, 0x18, 0x3D, 0x7B, + 0xF2, 0xEC, 0xE1, 0x27, 0x9F, 0x67, 0x45, 0x39, 0x39, 0x39, 0x45, 0x08, + 0xB5, 0xFB, 0xE6, 0xCB, 0xBF, 0xF9, 0xAB, 0xF7, 0x6F, 0x5F, 0x4B, 0x25, + 0x23, 0x22, 0x11, 0xE1, 0x80, 0xD0, 0x30, 0xA8, 0x08, 0xF5, 0xF8, 0xF8, + 0xE1, 0xF6, 0xEE, 0xAE, 0xD9, 0x6D, 0x01, 0x80, 0x83, 0x52, 0x2E, 0xC6, + 0x62, 0x32, 0x67, 0xA3, 0xB9, 0xD6, 0x3A, 0x7A, 0xE7, 0xF1, 0x81, 0xC2, + 0x94, 0xDC, 0x94, 0x59, 0x26, 0xFA, 0x43, 0x54, 0x22, 0xAD, 0x26, 0xD3, + 0x3F, 0xFA, 0xD3, 0xBF, 0x7C, 0xF1, 0x57, 0xFB, 0x6F, 0x5F, 0x7C, 0x7B, + 0x7C, 0x7A, 0xF6, 0xA7, 0xFF, 0xF2, 0x2F, 0x7E, 0xFD, 0xEB, 0xBF, 0xDB, + 0xDD, 0xFC, 0x70, 0x74, 0x7A, 0x26, 0x07, 0x89, 0x31, 0x8A, 0x31, 0xF8, + 0x10, 0xE1, 0x41, 0x34, 0xE7, 0x93, 0x29, 0x9E, 0xE6, 0x19, 0x00, 0x40, + 0x1B, 0x0B, 0x63, 0x8A, 0x7A, 0x40, 0x10, 0x21, 0xEB, 0x42, 0xC2, 0x33, + 0x10, 0x8C, 0x7F, 0x14, 0xD3, 0xC1, 0xFB, 0xE8, 0x36, 0x08, 0xE0, 0x90, + 0xD8, 0x21, 0x04, 0x27, 0xAF, 0xC5, 0xE1, 0x83, 0xBD, 0xFF, 0x6D, 0xCE, + 0xBB, 0xD1, 0xA8, 0x68, 0x3B, 0x19, 0xFE, 0xC9, 0x25, 0x85, 0x10, 0x1C, + 0x82, 0x77, 0x00, 0xC0, 0x40, 0x10, 0x42, 0xD6, 0xB9, 0x94, 0x56, 0xE3, + 0x7D, 0x20, 0x04, 0x1B, 0x63, 0x5D, 0x04, 0x94, 0x20, 0x9C, 0x78, 0x79, + 0xE9, 0x73, 0x06, 0xD1, 0x1E, 0xB6, 0x75, 0xD1, 0x07, 0xAF, 0x6D, 0xA0, + 0x84, 0xA0, 0x10, 0xB4, 0x71, 0x6F, 0x2E, 0xAE, 0x8F, 0xE6, 0x93, 0xC7, + 0xE7, 0xA7, 0x00, 0x40, 0x6B, 0x5D, 0xDD, 0x34, 0xAB, 0x95, 0xED, 0xA5, + 0xD4, 0xDA, 0xC4, 0x18, 0x95, 0x56, 0xDA, 0x64, 0xC6, 0x5A, 0x08, 0x00, + 0x25, 0x38, 0xE5, 0x3A, 0xC3, 0x43, 0xBC, 0x1E, 0x06, 0x00, 0x70, 0x46, + 0xD3, 0xF5, 0x82, 0xA0, 0x03, 0xA9, 0xCD, 0x39, 0x07, 0xEF, 0x5D, 0xFE, + 0x84, 0x12, 0x42, 0x50, 0x26, 0x38, 0x26, 0x38, 0x19, 0x5D, 0x37, 0xDB, + 0xBA, 0x6E, 0x3B, 0x98, 0x38, 0xE9, 0x87, 0x1A, 0x1D, 0x22, 0x00, 0x7D, + 0x2F, 0xA5, 0x36, 0x21, 0x44, 0xEF, 0x3C, 0xE7, 0x2C, 0x15, 0x74, 0xAD, + 0x35, 0x63, 0x94, 0xA0, 0xC4, 0x40, 0x06, 0x18, 0xA3, 0xBE, 0x1F, 0xF2, + 0xA2, 0xE0, 0xF7, 0xE9, 0xC5, 0x11, 0x80, 0x08, 0x3C, 0x42, 0x44, 0x69, + 0x15, 0x01, 0x72, 0xD6, 0x79, 0xEF, 0xB5, 0xD2, 0xC9, 0x99, 0x93, 0xFC, + 0xAD, 0x83, 0xD4, 0x21, 0x46, 0xB5, 0xDE, 0x8D, 0x46, 0xF6, 0x68, 0x3E, + 0x4D, 0x5F, 0xB2, 0x24, 0x22, 0x41, 0x08, 0x31, 0xCA, 0x56, 0x9B, 0x1D, + 0x3C, 0xE4, 0x99, 0x86, 0xA2, 0xC8, 0x8F, 0x16, 0xB3, 0xB6, 0x1F, 0x94, + 0xB1, 0x8C, 0x12, 0xC1, 0x58, 0xF2, 0x90, 0x39, 0x6B, 0x41, 0x8C, 0x79, + 0x41, 0x19, 0xA3, 0x3E, 0xAD, 0xD6, 0x9C, 0x4F, 0x76, 0x38, 0x92, 0xCE, + 0x37, 0xBD, 0x52, 0x10, 0x22, 0x21, 0x58, 0x72, 0xFC, 0xA4, 0x2F, 0x76, + 0x72, 0xB1, 0xB9, 0xFB, 0x9C, 0x64, 0x63, 0x8C, 0x73, 0x16, 0x63, 0x92, + 0xE2, 0x10, 0x41, 0x84, 0x6D, 0x3F, 0x68, 0x63, 0x32, 0x21, 0xB4, 0x31, + 0xD6, 0x3A, 0x65, 0x4C, 0xB2, 0x7F, 0x43, 0x84, 0xA4, 0x31, 0x11, 0x80, + 0xE9, 0x78, 0xE4, 0x43, 0x68, 0xFB, 0x21, 0xED, 0xC5, 0x12, 0x96, 0xBB, + 0x57, 0x9A, 0x52, 0x32, 0x2A, 0x0B, 0x88, 0x90, 0x75, 0xDE, 0x0F, 0x12, + 0x02, 0x90, 0x84, 0xFB, 0xCE, 0x27, 0xE4, 0x31, 0x44, 0x10, 0x45, 0x10, + 0x53, 0x7C, 0x6F, 0xAA, 0x15, 0x09, 0x73, 0x8A, 0x31, 0xCE, 0xB3, 0xF4, + 0x15, 0x0C, 0xC1, 0x7B, 0x69, 0x7C, 0x2E, 0xA8, 0xA0, 0x28, 0xCB, 0xF3, + 0x3C, 0xCF, 0xBC, 0x73, 0x5E, 0x2B, 0xC1, 0xB3, 0xDB, 0xBB, 0x55, 0x3F, + 0x0C, 0xCE, 0xD9, 0xA0, 0x77, 0x14, 0x21, 0x63, 0x06, 0x1B, 0xC4, 0xD0, + 0xF4, 0xC6, 0xBA, 0x6A, 0xB2, 0xBC, 0xBE, 0x78, 0x31, 0x9D, 0x1E, 0x19, + 0x96, 0x73, 0x91, 0x63, 0x8C, 0x57, 0xB7, 0x97, 0xB3, 0xA3, 0x49, 0x51, + 0xCE, 0x42, 0x76, 0x86, 0x19, 0xD7, 0x5A, 0x61, 0xC2, 0x28, 0xF2, 0x8C, + 0x62, 0x8F, 0xB2, 0x2C, 0x78, 0x10, 0x8D, 0x0B, 0x9D, 0x0D, 0x47, 0x25, + 0x8C, 0x45, 0xC6, 0xFB, 0xBE, 0x1B, 0xA2, 0xCF, 0xB2, 0x92, 0x52, 0x0A, + 0x21, 0x48, 0x53, 0x39, 0xC1, 0x38, 0x78, 0x8F, 0x30, 0x84, 0x00, 0x1A, + 0xE3, 0xEE, 0x9F, 0x4C, 0x14, 0xBC, 0x77, 0xCE, 0x23, 0x8C, 0x5C, 0x62, + 0xE6, 0xC6, 0x80, 0x11, 0xB4, 0x36, 0xA4, 0xD7, 0x75, 0x6A, 0xE0, 0x13, + 0x45, 0x2B, 0x09, 0x45, 0xF2, 0x4C, 0x38, 0xE7, 0x40, 0x8C, 0x10, 0xC1, + 0xB6, 0xED, 0xD3, 0x93, 0xA3, 0x8D, 0x71, 0x18, 0x63, 0x84, 0xD3, 0x9F, + 0x91, 0x16, 0xCC, 0xE8, 0xDE, 0x49, 0x93, 0x9E, 0x3A, 0x6D, 0xAC, 0x8A, + 0x06, 0x21, 0x18, 0x7C, 0x70, 0xDE, 0xC7, 0x10, 0x20, 0xC6, 0x94, 0x10, + 0xC1, 0x79, 0xC6, 0x59, 0x55, 0x95, 0xDE, 0xFB, 0x41, 0xEA, 0x24, 0x4D, + 0xD0, 0x5A, 0xDF, 0x73, 0xC4, 0x50, 0x08, 0x21, 0xC6, 0xF4, 0x48, 0x03, + 0xE7, 0x0E, 0x40, 0xA4, 0x24, 0x55, 0x33, 0xDA, 0xF6, 0x60, 0xC0, 0x08, + 0x21, 0xCA, 0x8A, 0xDB, 0xDF, 0xFD, 0xEA, 0x57, 0xFF, 0xF7, 0xDE, 0x84, + 0xF1, 0xA8, 0x5C, 0x2E, 0x8F, 0x67, 0xC7, 0x4B, 0xC2, 0x18, 0xE5, 0x7C, + 0xC4, 0x8F, 0xBF, 0xFD, 0xC7, 0xDF, 0x0C, 0x7D, 0x8F, 0x19, 0x2F, 0xB3, + 0x4C, 0xB6, 0xF5, 0x6E, 0x75, 0xB7, 0x38, 0x3E, 0x71, 0x11, 0xD4, 0xED, + 0x70, 0x74, 0x76, 0x06, 0x11, 0xFE, 0x87, 0xBF, 0xF9, 0xCF, 0x41, 0x4B, + 0x87, 0x88, 0x0D, 0xBA, 0xA4, 0xFC, 0xD1, 0xE7, 0xBF, 0x8C, 0x54, 0x68, + 0xA5, 0x00, 0x88, 0xD1, 0xDA, 0xF0, 0xA3, 0xF8, 0xF6, 0x3E, 0x95, 0x2A, + 0xC5, 0xCA, 0x84, 0x08, 0xFB, 0xF5, 0xF5, 0xE5, 0xAB, 0xAF, 0x82, 0xF5, + 0x67, 0x67, 0x0F, 0x96, 0xD9, 0x31, 0x1B, 0x1D, 0x73, 0x51, 0x58, 0xE7, + 0x62, 0x3C, 0x20, 0x4D, 0x8D, 0xF3, 0xFE, 0x60, 0x08, 0x3D, 0x84, 0x0A, + 0x27, 0x5C, 0x5D, 0x6A, 0x66, 0x53, 0x2A, 0x95, 0x8F, 0x11, 0x40, 0x90, + 0x3E, 0xD8, 0x24, 0x3A, 0x07, 0xF7, 0x50, 0x6F, 0x6F, 0x6D, 0x08, 0x21, + 0x90, 0xA8, 0x8D, 0xCD, 0x04, 0xCB, 0x18, 0xBF, 0xBF, 0xF3, 0x42, 0x08, + 0x21, 0x21, 0x24, 0x26, 0x3B, 0xFC, 0xA1, 0xAD, 0x06, 0x59, 0xC6, 0x11, + 0x42, 0x52, 0xA9, 0x43, 0x37, 0x87, 0x0E, 0x91, 0xC9, 0x28, 0xD9, 0x0C, + 0x9C, 0xB3, 0xD6, 0x02, 0x10, 0x11, 0x22, 0x79, 0x2E, 0x86, 0x41, 0x69, + 0x63, 0x11, 0x82, 0x8C, 0xD1, 0xA4, 0xF3, 0x4C, 0xCF, 0x51, 0x2A, 0x86, + 0x18, 0xE3, 0xF4, 0xA0, 0xA5, 0x77, 0x21, 0x25, 0x64, 0xB5, 0xD9, 0x9F, + 0x1C, 0x2D, 0xC6, 0x65, 0xF1, 0x87, 0xAF, 0x5F, 0x28, 0xAD, 0x83, 0xF7, + 0x98, 0x90, 0x34, 0x48, 0xC6, 0x10, 0xA4, 0x94, 0x21, 0x1C, 0xAA, 0x58, + 0x0A, 0xC1, 0x82, 0x10, 0x06, 0x1F, 0xD2, 0xC8, 0x82, 0x10, 0x74, 0xCE, + 0x23, 0x84, 0x21, 0x8C, 0xA9, 0xD1, 0x76, 0xD6, 0x32, 0xCE, 0x13, 0xD9, + 0xD5, 0xC5, 0x10, 0x01, 0x28, 0x8B, 0x1C, 0x41, 0x28, 0xB5, 0xD9, 0xED, + 0x9A, 0xBA, 0xED, 0x22, 0x00, 0xC1, 0xFB, 0x74, 0x90, 0x69, 0xBB, 0x01, + 0x00, 0xA0, 0x93, 0x12, 0xED, 0x7E, 0xD7, 0x9A, 0xD4, 0x64, 0xDE, 0x7B, + 0x4E, 0x29, 0xC6, 0x48, 0x69, 0xD3, 0x0F, 0x2A, 0x5D, 0xBD, 0x11, 0xC6, + 0xE9, 0x80, 0x90, 0xCE, 0x4A, 0x84, 0x10, 0x68, 0x0C, 0x04, 0x90, 0x60, + 0x02, 0x10, 0xC2, 0x10, 0x49, 0x29, 0x95, 0x3C, 0x74, 0xF4, 0xE1, 0xB0, + 0x14, 0x76, 0x08, 0xA1, 0xA4, 0x9D, 0xB4, 0xC6, 0xFA, 0xE0, 0xA5, 0x36, + 0x5D, 0x3F, 0xA4, 0xBE, 0x2C, 0xA9, 0x58, 0xD2, 0xB5, 0x02, 0x21, 0x28, + 0x95, 0xBE, 0x5B, 0x6F, 0x28, 0x25, 0xF3, 0xD9, 0x38, 0x2D, 0x3D, 0x92, + 0xC4, 0xAF, 0x6D, 0xBB, 0x10, 0x02, 0x86, 0xC8, 0xDA, 0xC4, 0x5C, 0x04, + 0xF8, 0xDE, 0x93, 0x4B, 0xA6, 0xE3, 0xB1, 0x54, 0xCA, 0x5A, 0x1B, 0x62, + 0x54, 0xDA, 0x40, 0x88, 0x52, 0x2B, 0x04, 0x00, 0x0C, 0x11, 0x80, 0x08, + 0x84, 0xE0, 0xDE, 0x7B, 0xAD, 0x52, 0x10, 0x16, 0x4C, 0x98, 0xB4, 0x10, + 0x22, 0x84, 0x40, 0x4A, 0x19, 0xEE, 0x99, 0x9F, 0xA9, 0xF4, 0x62, 0x4C, + 0x94, 0x52, 0x00, 0xC2, 0x08, 0xA0, 0xF3, 0x01, 0x22, 0x38, 0x28, 0xDD, + 0x0F, 0x52, 0x19, 0xC3, 0x28, 0x2D, 0xB2, 0xEC, 0x10, 0xC5, 0xC8, 0x68, + 0x8C, 0x51, 0x69, 0x93, 0x96, 0x7F, 0x04, 0x23, 0x42, 0x09, 0x44, 0x00, + 0x42, 0xC4, 0x08, 0x71, 0xDE, 0x3B, 0x67, 0x13, 0x27, 0x21, 0xBD, 0x79, + 0xB4, 0x4E, 0xCF, 0x32, 0xA1, 0x28, 0x22, 0x8C, 0x21, 0x80, 0x88, 0x53, + 0x6D, 0x20, 0x23, 0x20, 0x58, 0x49, 0x49, 0xA6, 0x86, 0x06, 0x23, 0xD0, + 0x36, 0x9B, 0xBE, 0xDB, 0x78, 0x07, 0xD6, 0xAB, 0xCB, 0xD9, 0xA8, 0x82, + 0xBA, 0xFF, 0xFD, 0x8B, 0x77, 0x0F, 0xCE, 0x16, 0xC6, 0xC7, 0xED, 0xEA, + 0x9D, 0x0F, 0x2E, 0x42, 0x36, 0xDE, 0xCF, 0x20, 0x00, 0xFB, 0xBB, 0xFA, + 0xE1, 0xE3, 0x4F, 0x70, 0x70, 0x6D, 0xDD, 0xA8, 0xED, 0xC5, 0xB8, 0xC0, + 0xAD, 0xD6, 0x3C, 0x8B, 0x58, 0x5F, 0x59, 0x0B, 0x78, 0x31, 0x9E, 0x2E, + 0x79, 0xD3, 0xED, 0x06, 0xAB, 0x7D, 0x88, 0xAD, 0xDE, 0x11, 0x21, 0x1C, + 0x42, 0xBB, 0xD5, 0xBB, 0x3D, 0xB4, 0x7D, 0xB3, 0x9D, 0x2E, 0x1F, 0x60, + 0x7C, 0x4A, 0x49, 0x15, 0x63, 0x54, 0x7D, 0xCF, 0x38, 0x77, 0x10, 0x60, + 0xC2, 0x95, 0xEC, 0xAA, 0x6A, 0x4C, 0x31, 0x4C, 0x59, 0x70, 0x99, 0xA0, + 0x5A, 0xAB, 0xE5, 0xB8, 0xE8, 0x75, 0x8C, 0x80, 0x02, 0x1F, 0x38, 0x23, + 0x8C, 0x12, 0xEF, 0x03, 0xE7, 0x24, 0xF8, 0x00, 0x00, 0xB4, 0xC6, 0x42, + 0x10, 0x33, 0x41, 0x23, 0x60, 0x18, 0x41, 0x21, 0x18, 0x25, 0xB9, 0xD2, + 0x26, 0x35, 0x4D, 0x69, 0x00, 0x4C, 0x9F, 0x83, 0xF3, 0x4E, 0x2A, 0x15, + 0x42, 0xE0, 0x94, 0x11, 0x4C, 0x20, 0x84, 0xD6, 0x5A, 0x00, 0x61, 0x12, + 0xD7, 0x10, 0x92, 0x02, 0x84, 0x0E, 0xDF, 0xC7, 0x3E, 0x84, 0xAA, 0x2A, + 0xAB, 0x22, 0x13, 0x9C, 0x51, 0xC6, 0x52, 0xCC, 0x47, 0x26, 0xD2, 0x4D, + 0xDD, 0x03, 0xC0, 0x13, 0xAC, 0xC5, 0xB9, 0xE4, 0x66, 0x65, 0xF7, 0xFA, + 0x75, 0x1C, 0x23, 0x80, 0x30, 0x42, 0x08, 0x92, 0x74, 0x40, 0x0E, 0x12, + 0x50, 0x7E, 0xDC, 0x5E, 0xBE, 0xFC, 0xC3, 0xDF, 0x6E, 0x94, 0x1D, 0x57, + 0xA3, 0xB2, 0xA8, 0x96, 0x0F, 0x1E, 0x4D, 0x16, 0x47, 0x04, 0x43, 0x42, + 0xE9, 0xD0, 0x77, 0xFB, 0xBB, 0xAB, 0xF5, 0x7A, 0x13, 0x9C, 0x87, 0x10, + 0xE6, 0x45, 0xFE, 0xE2, 0xAB, 0x7F, 0xAC, 0x66, 0xFF, 0x66, 0x3C, 0x1E, + 0x8F, 0xA7, 0xD3, 0xAC, 0x28, 0xB6, 0x77, 0x37, 0x97, 0x2F, 0xBF, 0xD9, + 0xF7, 0x32, 0x46, 0x30, 0x62, 0xEC, 0xF1, 0xF3, 0x4F, 0xA7, 0xE7, 0xCF, + 0xD7, 0xFB, 0xA4, 0x58, 0x8C, 0xC9, 0x76, 0x89, 0x21, 0x82, 0x49, 0x2A, + 0x18, 0x23, 0x63, 0xD4, 0x39, 0x6F, 0xB4, 0xD5, 0x1E, 0x82, 0xBB, 0x8B, + 0x9B, 0x9B, 0x0B, 0x92, 0x8F, 0x10, 0x2D, 0xA4, 0x23, 0xE3, 0xE5, 0x79, + 0x0C, 0xC0, 0xB4, 0x2D, 0x23, 0x08, 0x02, 0xE8, 0x23, 0x00, 0xD1, 0xC5, + 0x10, 0x92, 0x71, 0xD5, 0x18, 0x93, 0x82, 0x79, 0x72, 0x21, 0x08, 0x26, + 0x10, 0x22, 0x04, 0xE2, 0x01, 0xA3, 0x16, 0x13, 0xA1, 0x8C, 0x43, 0x08, + 0xE1, 0x3D, 0xDD, 0x34, 0x75, 0xF4, 0x10, 0xA2, 0x41, 0x6A, 0x88, 0x60, + 0x55, 0xE4, 0x18, 0x23, 0xEB, 0x28, 0xA3, 0xA4, 0x1F, 0x74, 0xAA, 0x2F, + 0xDE, 0x7B, 0x10, 0xEF, 0x13, 0x8F, 0x7C, 0x48, 0xBC, 0x8A, 0x84, 0xA0, + 0x51, 0xDA, 0x68, 0xE3, 0x38, 0xA4, 0x10, 0x44, 0x04, 0x10, 0x82, 0x30, + 0x15, 0x4A, 0x6B, 0xED, 0x30, 0xC8, 0x3C, 0xCF, 0x38, 0xA7, 0x52, 0x7A, + 0xEF, 0x63, 0x0C, 0x11, 0x62, 0xE8, 0xBD, 0x47, 0x07, 0x72, 0x74, 0x88, + 0x31, 0x52, 0x0A, 0xEE, 0x07, 0x79, 0x98, 0xF6, 0x21, 0x20, 0x82, 0x37, + 0xEF, 0xAF, 0x3F, 0x7A, 0xFA, 0x30, 0xE5, 0x07, 0xA6, 0x9B, 0xEC, 0x01, + 0x52, 0x82, 0x50, 0xDA, 0xA8, 0x58, 0xE7, 0x71, 0x1A, 0x99, 0x31, 0xA6, + 0x94, 0x86, 0x18, 0xD3, 0x3E, 0x8F, 0x92, 0x43, 0x6E, 0x08, 0x42, 0x28, + 0xA9, 0x47, 0x93, 0xA4, 0x4E, 0x1B, 0xCB, 0x39, 0x6F, 0xDA, 0x46, 0x19, + 0xCB, 0x19, 0xA0, 0x08, 0x0F, 0x83, 0x6C, 0x9A, 0x0E, 0x1C, 0x82, 0xAD, + 0x62, 0x99, 0x65, 0x4A, 0x25, 0xD4, 0x38, 0x38, 0x28, 0xF1, 0x41, 0x2A, + 0xE2, 0x58, 0x08, 0x1E, 0xC2, 0x81, 0x72, 0xD9, 0x76, 0x83, 0x3E, 0x44, + 0xE1, 0x81, 0x43, 0x6D, 0x8D, 0x51, 0x2A, 0x4D, 0x09, 0xD2, 0xDA, 0x58, + 0xE7, 0xD3, 0xA5, 0x12, 0x63, 0x32, 0x48, 0xA5, 0x95, 0x52, 0x4A, 0x43, + 0x00, 0x21, 0x82, 0x07, 0xCB, 0xCA, 0xFD, 0xBB, 0x11, 0x21, 0xD4, 0xF5, + 0x83, 0x49, 0x0A, 0x20, 0x1F, 0x52, 0xD8, 0x6B, 0x1A, 0x51, 0xC1, 0x21, + 0xF0, 0x2D, 0x26, 0x9A, 0x0B, 0x67, 0xAC, 0xC8, 0xB3, 0x08, 0x00, 0x84, + 0x00, 0x01, 0x94, 0x8C, 0x89, 0xA3, 0xAA, 0x32, 0xE6, 0x00, 0x46, 0x47, + 0x18, 0x41, 0x88, 0x0E, 0xE9, 0xF4, 0x4A, 0x92, 0xA6, 0xEB, 0x07, 0xA9, + 0x00, 0x8C, 0xDE, 0xD9, 0x3C, 0x2B, 0x0E, 0x2C, 0x74, 0x00, 0x52, 0x21, + 0x84, 0x08, 0xB5, 0x5D, 0x1F, 0x13, 0x3C, 0x13, 0x23, 0x0C, 0xB1, 0xB1, + 0xD6, 0x69, 0x23, 0x38, 0x95, 0x52, 0x22, 0x8C, 0xF2, 0x2C, 0x8B, 0x31, + 0x5A, 0xEB, 0x21, 0x82, 0xD0, 0x07, 0x6B, 0x65, 0xEA, 0x11, 0x08, 0x84, + 0x08, 0x23, 0xA5, 0x0D, 0xC6, 0x28, 0x13, 0x42, 0x08, 0x9E, 0xCE, 0x3D, + 0xE8, 0xDE, 0x4F, 0x8F, 0x30, 0xD4, 0xC6, 0xC4, 0x10, 0x8C, 0x75, 0x9C, + 0xD3, 0xAA, 0xC8, 0x62, 0x04, 0x72, 0x18, 0x1C, 0x65, 0xF1, 0x1E, 0x28, + 0x1A, 0x41, 0xB4, 0x5A, 0xCB, 0x41, 0x61, 0x42, 0xD6, 0x57, 0x17, 0x67, + 0x8F, 0x1F, 0xAB, 0xBE, 0xF6, 0xDE, 0xCA, 0x7E, 0xB7, 0xDD, 0x6E, 0x09, + 0xA1, 0xD4, 0xEF, 0x47, 0x25, 0x45, 0x45, 0xD5, 0xB5, 0xDD, 0xE6, 0x8D, + 0x24, 0x98, 0xDC, 0xED, 0x74, 0xD7, 0xB6, 0x01, 0x62, 0xB9, 0xBD, 0xF5, + 0x28, 0x1B, 0x06, 0xF5, 0xF5, 0xD7, 0xDF, 0xCA, 0xF6, 0x12, 0x22, 0x1F, + 0x11, 0x17, 0x59, 0xB5, 0x5B, 0x5D, 0x60, 0x14, 0x1E, 0x3C, 0xFE, 0xC5, + 0x37, 0x5F, 0xFF, 0x0E, 0x45, 0x39, 0x1D, 0x71, 0x81, 0x2D, 0x86, 0xE5, + 0xE9, 0x83, 0x63, 0x29, 0xF7, 0x6E, 0xFF, 0x5D, 0x3B, 0xA8, 0xFA, 0xC6, + 0x3E, 0x38, 0x9A, 0xD7, 0xBB, 0x3D, 0x22, 0xB4, 0x6F, 0x1B, 0x29, 0x25, + 0x06, 0xB4, 0xCA, 0xB7, 0xBD, 0xD4, 0xDF, 0x7D, 0xFB, 0x87, 0xF1, 0x78, + 0x1C, 0xAA, 0xDC, 0xE9, 0xDC, 0xFA, 0xD5, 0xD0, 0xB7, 0x5C, 0x54, 0x02, + 0x4D, 0x95, 0x31, 0x75, 0xB3, 0x23, 0x84, 0xBB, 0xE6, 0xDA, 0x78, 0xEF, + 0x43, 0xA8, 0x26, 0xC7, 0xAA, 0x6F, 0xBC, 0x07, 0x31, 0x64, 0x9C, 0xC2, + 0xA6, 0xED, 0x19, 0xC1, 0x19, 0x03, 0x3E, 0x86, 0x82, 0x23, 0x17, 0x1C, + 0x46, 0x84, 0xE1, 0x40, 0x05, 0x43, 0x90, 0x0E, 0xDA, 0x61, 0x8C, 0x19, + 0xC1, 0x3E, 0xC4, 0x9C, 0x53, 0xC1, 0x69, 0xD7, 0xCB, 0xC0, 0x48, 0x32, + 0xFD, 0x92, 0x7B, 0x47, 0xAE, 0xF7, 0x0E, 0x41, 0x14, 0xE2, 0xA1, 0x0B, + 0x8B, 0x31, 0x08, 0x46, 0xBD, 0x4B, 0x26, 0x08, 0x68, 0x01, 0x00, 0x20, + 0x42, 0x88, 0xDC, 0x7D, 0x9B, 0x26, 0x95, 0x46, 0xF7, 0xA4, 0xC3, 0x83, + 0x5C, 0x16, 0x42, 0x48, 0x70, 0x04, 0x89, 0x9F, 0x18, 0xAD, 0xFD, 0xFF, + 0x51, 0x88, 0xDA, 0x1A, 0x10, 0x0F, 0xE9, 0x38, 0x11, 0x44, 0x17, 0x02, + 0x27, 0x44, 0x05, 0x74, 0x16, 0xDA, 0xFE, 0xF5, 0xDF, 0xBF, 0x58, 0x6D, + 0xCA, 0x72, 0x54, 0x8D, 0x46, 0x93, 0xC5, 0xD1, 0xC3, 0x8F, 0x3F, 0x17, + 0xC5, 0x8C, 0x40, 0x9F, 0x51, 0xDA, 0x2A, 0x09, 0x63, 0x98, 0x8E, 0x47, + 0x17, 0x17, 0x17, 0x75, 0x53, 0x23, 0x84, 0x6C, 0x5F, 0xF7, 0xDB, 0x95, + 0xA0, 0x48, 0x88, 0x0C, 0x01, 0xF0, 0xEA, 0xCB, 0x5F, 0x2F, 0xE6, 0xF3, + 0x46, 0xDD, 0x0E, 0x52, 0xB3, 0x82, 0x9E, 0x3C, 0xFA, 0xA0, 0x95, 0x4E, + 0x2A, 0x85, 0x10, 0xC6, 0x08, 0x7A, 0xEF, 0x23, 0x88, 0x0E, 0x26, 0xE0, + 0xEF, 0xC1, 0x42, 0xDB, 0xB4, 0x83, 0x35, 0x06, 0x13, 0xDE, 0x5E, 0xFD, + 0x20, 0x8D, 0x3F, 0x3F, 0xAA, 0x3A, 0x03, 0x35, 0xD0, 0xDE, 0x1A, 0xE7, + 0x1C, 0x04, 0x11, 0x23, 0xD4, 0xB4, 0xBD, 0xF1, 0xDE, 0x7B, 0x3F, 0x2E, + 0x0B, 0x1F, 0x83, 0x52, 0xDA, 0x3A, 0xA7, 0xB5, 0x16, 0xFC, 0xB0, 0x72, + 0xF6, 0x31, 0xA6, 0xDB, 0x65, 0x08, 0x01, 0x22, 0x84, 0x71, 0x02, 0x02, + 0x86, 0xB4, 0xDE, 0x4A, 0xE8, 0xB1, 0x44, 0xA0, 0xCA, 0x31, 0x66, 0x9C, + 0x12, 0x82, 0x07, 0x29, 0x21, 0x8C, 0x9C, 0x33, 0xEB, 0x3C, 0x25, 0xB4, + 0x1B, 0x24, 0x8A, 0x88, 0x71, 0x0A, 0x01, 0x3D, 0x80, 0x6E, 0x94, 0x21, + 0x94, 0x10, 0x4C, 0x28, 0xA3, 0x9C, 0xF3, 0xDD, 0xBE, 0xB5, 0xCE, 0x53, + 0x8C, 0xB5, 0xB6, 0x94, 0x92, 0x74, 0xAE, 0xA1, 0x94, 0x11, 0x12, 0x93, + 0x6E, 0x96, 0x31, 0xAA, 0xB5, 0x75, 0xCE, 0x21, 0x0F, 0x13, 0x14, 0x28, + 0x84, 0x88, 0x50, 0x52, 0xE1, 0xE8, 0x14, 0x8F, 0xE7, 0x3D, 0x0C, 0x69, + 0xB7, 0x4B, 0x69, 0xD7, 0xAB, 0xF7, 0xD7, 0xAB, 0xA7, 0x0F, 0x8F, 0xFD, + 0xFD, 0xCC, 0x98, 0x68, 0x82, 0x09, 0x61, 0x24, 0x95, 0x4E, 0xEA, 0x4E, + 0x00, 0x93, 0xC7, 0xD3, 0x30, 0x4A, 0x93, 0x77, 0x58, 0x1B, 0x4F, 0xEF, + 0xE9, 0x89, 0x31, 0x46, 0x84, 0x71, 0x8C, 0x30, 0x05, 0x44, 0x28, 0xA5, + 0x8D, 0x31, 0x19, 0x63, 0x4A, 0x6B, 0xEF, 0xC8, 0x7E, 0xDF, 0x26, 0x6A, + 0x43, 0x04, 0x20, 0x31, 0xF2, 0xD2, 0x93, 0x6E, 0x0F, 0xBD, 0xD8, 0xE1, + 0x3F, 0xE7, 0xFD, 0xD0, 0x0F, 0x08, 0x40, 0xAD, 0x8D, 0x4E, 0x32, 0xD7, + 0x7B, 0x7E, 0x53, 0xFA, 0x4E, 0x3A, 0x1C, 0xE8, 0x23, 0x0C, 0x00, 0xA8, + 0x41, 0xC1, 0x5C, 0x60, 0x84, 0xA4, 0x52, 0x7D, 0xD7, 0xFB, 0xE8, 0x21, + 0x04, 0x84, 0x60, 0x74, 0x30, 0xE7, 0x07, 0x6B, 0x6D, 0x9E, 0x89, 0xE9, + 0x64, 0xDC, 0xF5, 0x43, 0x3F, 0x48, 0x89, 0x10, 0x88, 0x31, 0x1D, 0xFD, + 0xA4, 0xD2, 0xDE, 0x7B, 0xC6, 0x18, 0x84, 0xD0, 0x1A, 0xE7, 0x9C, 0x9B, + 0x4E, 0x46, 0xB3, 0xD9, 0x64, 0xBD, 0xDE, 0x78, 0xEF, 0xF3, 0x3C, 0xFB, + 0xF1, 0x45, 0xAE, 0x94, 0x22, 0x04, 0x67, 0x19, 0xB7, 0xCE, 0x33, 0x9E, + 0x8D, 0x26, 0x23, 0x63, 0x4C, 0xD2, 0xA5, 0x87, 0x10, 0x88, 0x54, 0x3A, + 0x75, 0xD1, 0x9C, 0x52, 0x00, 0x61, 0x0C, 0x21, 0xA5, 0xE9, 0x18, 0x63, + 0x8D, 0x01, 0x31, 0x04, 0x42, 0x29, 0xE7, 0x38, 0x55, 0xCC, 0x14, 0x0B, + 0xC8, 0x28, 0x31, 0x46, 0x53, 0x82, 0x19, 0xE7, 0x49, 0x86, 0x0E, 0x20, + 0x44, 0x08, 0x3B, 0x1F, 0x9C, 0xB3, 0x31, 0xC6, 0x2A, 0xCB, 0x38, 0xA3, + 0xB9, 0xE0, 0x31, 0x02, 0x6B, 0x1C, 0xC6, 0xB8, 0x2C, 0xCB, 0xE4, 0x8C, + 0x26, 0x18, 0x0B, 0x46, 0x8D, 0xB1, 0x4D, 0x1B, 0x33, 0x4E, 0x41, 0x88, + 0x10, 0x63, 0xC1, 0x18, 0x00, 0x70, 0xBF, 0xDD, 0x06, 0xE7, 0xA7, 0xF3, + 0x05, 0xC6, 0x24, 0xC6, 0x60, 0x8D, 0x1E, 0xFA, 0xAE, 0x69, 0x36, 0x7D, + 0xD7, 0x44, 0x20, 0xD7, 0x97, 0xAF, 0x5F, 0xBF, 0xFE, 0xDB, 0x7A, 0xD7, + 0x14, 0x82, 0xF9, 0x60, 0x40, 0xF4, 0x93, 0x51, 0xA1, 0xFB, 0x7D, 0x59, + 0xE4, 0x79, 0x9E, 0xED, 0x6A, 0x49, 0x00, 0xC2, 0x64, 0xF4, 0xFB, 0x17, + 0x77, 0x37, 0x77, 0x77, 0xF3, 0xE5, 0xB1, 0xD4, 0x6E, 0x32, 0x2A, 0x67, + 0xF3, 0xA3, 0xEB, 0x37, 0x77, 0xCF, 0x3F, 0xF9, 0x67, 0xFB, 0xD5, 0x45, + 0xDF, 0xED, 0xD6, 0xB7, 0x77, 0x47, 0x0F, 0x9E, 0xF2, 0xAC, 0xBC, 0xB9, + 0xB9, 0x6D, 0x9B, 0x0B, 0x6B, 0xEA, 0x93, 0x93, 0x07, 0x79, 0x56, 0x2A, + 0xB5, 0x2D, 0x04, 0xA6, 0x30, 0xEE, 0xEA, 0xDA, 0x3A, 0x35, 0xAE, 0xCA, + 0x7A, 0xBF, 0x59, 0x4C, 0xC6, 0x4D, 0xB7, 0xDF, 0xED, 0xF6, 0xBB, 0xA6, + 0xE1, 0x4C, 0x30, 0x68, 0xBB, 0xBA, 0x99, 0x8F, 0x73, 0x21, 0x30, 0xF6, + 0xDB, 0xF5, 0x9B, 0x77, 0x05, 0x0B, 0x83, 0x05, 0x4F, 0x9E, 0x7E, 0xB8, + 0xBD, 0x7A, 0x75, 0x71, 0x75, 0x13, 0x63, 0x9C, 0x8D, 0xAA, 0xA3, 0xD3, + 0x67, 0xF5, 0x7E, 0x17, 0xBC, 0x9A, 0x88, 0xA1, 0xED, 0xDA, 0xD9, 0x28, + 0x9B, 0x65, 0xF8, 0xC5, 0x9B, 0x37, 0x56, 0xCA, 0xD1, 0x74, 0xD6, 0xEF, + 0x72, 0x2C, 0xE6, 0xC1, 0x49, 0xC1, 0x70, 0x3D, 0x48, 0x88, 0x45, 0x96, + 0x8D, 0x42, 0x84, 0x8C, 0xD2, 0xE4, 0x06, 0xAF, 0x72, 0x16, 0x21, 0xA4, + 0x10, 0x78, 0x46, 0x40, 0x08, 0x08, 0x41, 0x10, 0x01, 0x86, 0x88, 0x50, + 0xEC, 0x42, 0x4C, 0x91, 0x02, 0x94, 0x20, 0x10, 0x81, 0xD2, 0x86, 0x60, + 0xEC, 0x7C, 0x04, 0x90, 0x24, 0x51, 0x0E, 0x42, 0x10, 0x21, 0x96, 0x6E, + 0x8E, 0x49, 0xB4, 0x6D, 0x8C, 0x21, 0xF7, 0x6F, 0x8E, 0xB4, 0xAB, 0x0E, + 0x21, 0x24, 0x9A, 0x5B, 0x0A, 0x15, 0xC9, 0x04, 0x03, 0x00, 0x18, 0x6B, + 0xB5, 0xB5, 0xD6, 0x3B, 0x04, 0x11, 0xF0, 0x09, 0x1A, 0x05, 0x18, 0xA1, + 0x75, 0xAF, 0x4E, 0x73, 0x68, 0x2F, 0x7E, 0xF3, 0xE5, 0x9B, 0xB7, 0x59, + 0x56, 0x64, 0x22, 0x1B, 0x4F, 0xA7, 0xCF, 0x7F, 0xF1, 0xCF, 0x71, 0x75, + 0x72, 0xB1, 0x55, 0x31, 0x82, 0xA7, 0x22, 0xD2, 0xE0, 0x38, 0xE3, 0x84, + 0xC6, 0xA3, 0xC5, 0xF2, 0xE2, 0xC5, 0x77, 0xD1, 0xC7, 0x2F, 0x7E, 0xF2, + 0x0B, 0xE4, 0x35, 0x70, 0x8E, 0xE5, 0x63, 0xAF, 0x65, 0x90, 0xED, 0xF1, + 0xC9, 0xA9, 0x28, 0x27, 0x75, 0x27, 0xA7, 0x34, 0xD2, 0x6A, 0xD1, 0x28, + 0x1F, 0x11, 0xF3, 0x20, 0x42, 0x88, 0x00, 0x21, 0x18, 0x02, 0xA7, 0x65, + 0x18, 0x06, 0x80, 0x59, 0x20, 0xD4, 0x1A, 0xD7, 0x75, 0x43, 0x2B, 0x75, + 0x09, 0xF6, 0x97, 0xAF, 0xBF, 0x0E, 0x10, 0x55, 0xA3, 0x49, 0x59, 0x4D, + 0x4C, 0xAF, 0xEA, 0xB6, 0xB7, 0x49, 0x8F, 0x10, 0x82, 0x71, 0x2E, 0xE9, + 0xE9, 0x77, 0x4D, 0x9B, 0x3A, 0x2C, 0xEB, 0x1C, 0x4F, 0x55, 0x0C, 0xC2, + 0xD4, 0x78, 0xA6, 0x20, 0xB8, 0xC4, 0xCE, 0xEF, 0x07, 0x95, 0xBA, 0x95, + 0x24, 0xEB, 0x83, 0xF7, 0xD9, 0x28, 0x65, 0x71, 0x90, 0x4F, 0xF6, 0x83, + 0x44, 0x08, 0x32, 0x42, 0xD3, 0xDD, 0x46, 0x6B, 0x8D, 0x11, 0x64, 0x94, + 0xA7, 0xFB, 0x20, 0x21, 0x94, 0x31, 0xAE, 0x94, 0x01, 0x00, 0x68, 0x63, + 0xBA, 0xAE, 0x1F, 0x8D, 0x47, 0x79, 0xC6, 0x9B, 0xAE, 0xB7, 0x1E, 0x12, + 0x8C, 0xAC, 0xF3, 0x10, 0x44, 0x42, 0xB0, 0x73, 0xDE, 0x7B, 0x07, 0x00, + 0x34, 0xC6, 0xA5, 0x41, 0x29, 0xC6, 0x00, 0x11, 0x4E, 0x86, 0xD6, 0x94, + 0x4C, 0x04, 0x0F, 0x88, 0xDD, 0x88, 0x20, 0x71, 0x3E, 0x80, 0x10, 0x7D, + 0x08, 0xDE, 0x07, 0x42, 0xC8, 0xCD, 0xDD, 0x06, 0xC4, 0x70, 0x7A, 0x3C, + 0xA7, 0x04, 0xFF, 0x38, 0xEE, 0xA4, 0x7B, 0x22, 0x67, 0x34, 0x84, 0xF0, + 0xA3, 0xE3, 0x3D, 0x82, 0x44, 0x58, 0x23, 0x00, 0x00, 0x4A, 0x28, 0xF8, + 0x27, 0x5D, 0x8F, 0x3B, 0x50, 0x12, 0x3D, 0x88, 0x51, 0x1B, 0x13, 0x41, + 0x50, 0x5A, 0x49, 0x65, 0x9C, 0x1D, 0xB4, 0xB1, 0x11, 0xC0, 0x84, 0x53, + 0x27, 0x08, 0xFF, 0x78, 0x22, 0x83, 0x10, 0x22, 0x08, 0x52, 0x0E, 0x09, + 0x00, 0x10, 0x45, 0xA0, 0xA4, 0xC2, 0x10, 0x19, 0xE7, 0x7D, 0x8C, 0xF0, + 0x90, 0x83, 0x1B, 0x20, 0x44, 0x07, 0x52, 0x7A, 0x1A, 0x66, 0x53, 0xD8, + 0x0C, 0x88, 0x52, 0xE9, 0xE0, 0xBD, 0xD6, 0x3A, 0xED, 0x1C, 0x11, 0x46, + 0x84, 0xE0, 0xA4, 0xB2, 0xAE, 0x0A, 0xE1, 0x1C, 0x43, 0x08, 0x8D, 0x47, + 0x95, 0xF5, 0x4E, 0x1B, 0x83, 0x20, 0x2C, 0xB2, 0xDC, 0x79, 0x8F, 0x11, + 0x62, 0x84, 0x48, 0xA5, 0xC2, 0xC1, 0x6D, 0x8E, 0x30, 0x14, 0xD6, 0xDA, + 0xDB, 0xBB, 0x15, 0xA3, 0xCC, 0x5A, 0x2B, 0x07, 0x80, 0x10, 0xE4, 0x9C, + 0xC7, 0x10, 0x53, 0x11, 0x37, 0xC6, 0x72, 0x21, 0xBC, 0xF7, 0x29, 0xD4, + 0x35, 0xFD, 0x93, 0x9D, 0x73, 0x84, 0x51, 0xCA, 0x05, 0x1F, 0x06, 0x69, + 0x7D, 0xF0, 0xDE, 0x32, 0x4A, 0x31, 0xC6, 0x29, 0x37, 0xA4, 0x2A, 0x33, + 0x84, 0x90, 0x60, 0x78, 0x5B, 0xB7, 0x08, 0x42, 0xA5, 0xAD, 0xE0, 0x34, + 0x51, 0x62, 0xCA, 0x3C, 0x43, 0x08, 0x6B, 0xE7, 0x18, 0xE3, 0x98, 0x50, + 0xEB, 0xAC, 0x1C, 0x64, 0xBA, 0xE8, 0xE7, 0x19, 0xCF, 0x33, 0x31, 0x1B, + 0x95, 0x31, 0x46, 0xE3, 0x02, 0x88, 0x11, 0x22, 0x50, 0x72, 0x04, 0x11, + 0xC2, 0x10, 0xE6, 0x45, 0x41, 0x08, 0xEE, 0x7A, 0xA9, 0x95, 0x46, 0x5E, + 0x7B, 0x8C, 0x8C, 0x51, 0xBA, 0xA5, 0x7D, 0x57, 0x46, 0x67, 0xAB, 0xF1, + 0xE4, 0xB7, 0xBF, 0xF9, 0xFB, 0xCD, 0x66, 0x5B, 0xE6, 0xF4, 0xFD, 0xBB, + 0x97, 0x18, 0x85, 0xB6, 0xDD, 0x38, 0x2F, 0x11, 0xF2, 0xD1, 0x7A, 0x65, + 0xCC, 0xD1, 0xEC, 0xEC, 0xBA, 0x76, 0xEF, 0xAF, 0xEF, 0x3E, 0xF9, 0x70, + 0xB9, 0xAD, 0x2F, 0x39, 0x02, 0x57, 0xAB, 0x5D, 0x08, 0xF4, 0x64, 0xF9, + 0xB0, 0xA0, 0x78, 0xBD, 0xEF, 0x06, 0xA5, 0xF3, 0x3C, 0x77, 0xCE, 0x0C, + 0x43, 0x7F, 0x77, 0x7B, 0xB1, 0xA8, 0x8F, 0x1F, 0x9D, 0x3F, 0x5B, 0xAF, + 0x56, 0xE3, 0xC9, 0xD2, 0x7B, 0xFD, 0xD9, 0xA3, 0x9F, 0x41, 0x08, 0xDE, + 0xBE, 0xFC, 0x6D, 0x88, 0xB8, 0x6E, 0xF7, 0x18, 0xFA, 0x1F, 0x5E, 0xBE, + 0x76, 0xCE, 0x9D, 0x2C, 0xE7, 0x3A, 0xCF, 0xDA, 0xAE, 0xEF, 0x87, 0x61, + 0x39, 0x1D, 0xB7, 0x9D, 0xE9, 0xFB, 0x0D, 0x09, 0xB1, 0x57, 0xAA, 0xEB, + 0x0D, 0xC5, 0xCC, 0x1A, 0xDB, 0xEE, 0x6B, 0x8E, 0xB1, 0xC7, 0xA8, 0x93, + 0xFD, 0x76, 0xFF, 0x0D, 0x0E, 0xE1, 0x3A, 0x04, 0xC2, 0x29, 0x26, 0x40, + 0x77, 0x2D, 0x88, 0x30, 0x46, 0x3F, 0xC8, 0xB8, 0x5D, 0xBD, 0xA8, 0x77, + 0x35, 0x86, 0xE8, 0xD6, 0xED, 0x6D, 0x70, 0x23, 0x3A, 0xFF, 0xC3, 0x97, + 0xEF, 0x7B, 0xAD, 0x30, 0x00, 0x7B, 0xBF, 0x3D, 0x7F, 0xF0, 0xE9, 0xC5, + 0xD5, 0x6F, 0x39, 0xA5, 0x03, 0x42, 0x31, 0x40, 0x2E, 0xA6, 0x63, 0x31, + 0x1A, 0x4C, 0x30, 0x5A, 0xE7, 0x59, 0x31, 0x29, 0xC8, 0xAE, 0x33, 0x83, + 0x94, 0x8C, 0xE7, 0x52, 0x69, 0x82, 0x51, 0x41, 0xB9, 0xB1, 0x36, 0x46, + 0xAF, 0xA5, 0x66, 0xD0, 0x31, 0xEA, 0x50, 0xA8, 0x05, 0xF6, 0x04, 0x61, + 0x80, 0xBD, 0x05, 0xA2, 0xB3, 0xF9, 0x68, 0x59, 0x56, 0x19, 0xDF, 0xF6, + 0x3E, 0xD3, 0x5E, 0x70, 0xBA, 0xAD, 0x3B, 0x82, 0x62, 0x29, 0x28, 0x67, + 0x08, 0x13, 0x0E, 0x29, 0xCB, 0x18, 0x8E, 0x08, 0x22, 0x9C, 0xD2, 0x61, + 0x95, 0xE9, 0x1D, 0x0C, 0x96, 0x53, 0xD8, 0x3B, 0xE0, 0x01, 0x46, 0xD1, + 0x01, 0x00, 0xD3, 0xA2, 0x1A, 0xC2, 0x24, 0x6E, 0x23, 0x20, 0x18, 0x64, + 0xEA, 0x27, 0x8B, 0xF9, 0x4C, 0xBF, 0xFF, 0xAB, 0xF7, 0x97, 0x34, 0x2B, + 0x38, 0xA5, 0xB3, 0xC5, 0xF2, 0xF9, 0xCF, 0xFF, 0x14, 0x56, 0xE7, 0x57, + 0x6B, 0x69, 0x9D, 0x47, 0x08, 0xBF, 0xBA, 0x51, 0x59, 0x3B, 0xCC, 0x97, + 0x27, 0x74, 0x34, 0x2D, 0xAF, 0xDE, 0xFD, 0xAD, 0x52, 0xDA, 0xC5, 0xE2, + 0xC1, 0x4F, 0xDA, 0xB6, 0xB5, 0x91, 0xB7, 0x5D, 0x98, 0xE4, 0xF9, 0xE3, + 0xC7, 0x0F, 0xB7, 0x9D, 0xFB, 0xE8, 0x8B, 0x93, 0xCB, 0xDB, 0x0D, 0x55, + 0xDD, 0x44, 0x70, 0x14, 0x6A, 0xE7, 0x06, 0x8A, 0x90, 0xAE, 0xF7, 0xBB, + 0x4E, 0x0E, 0xCD, 0xD6, 0x6C, 0x6F, 0xB4, 0x92, 0x24, 0xAB, 0xE8, 0xC9, + 0xC7, 0x48, 0x4C, 0x82, 0xB1, 0x99, 0x1D, 0x9A, 0x77, 0xBF, 0xBB, 0x5A, + 0xAF, 0x33, 0xCE, 0x27, 0xCB, 0x33, 0xCA, 0x45, 0x7B, 0xB3, 0x96, 0x5A, + 0xDB, 0x83, 0x62, 0x03, 0xA3, 0xA4, 0x0D, 0x73, 0x1E, 0x22, 0x50, 0xE4, + 0x59, 0x12, 0x5E, 0xC0, 0xFB, 0xB8, 0x80, 0x18, 0x23, 0x25, 0x98, 0x31, + 0xAA, 0xB5, 0x41, 0x10, 0x1A, 0x1F, 0xFC, 0xFD, 0x3A, 0x09, 0x4B, 0x12, + 0xE2, 0xA8, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x22, 0xC8, + 0x19, 0xA9, 0x0A, 0xBE, 0x6F, 0xFB, 0x3C, 0xCB, 0x28, 0xC5, 0x5D, 0xDF, + 0x13, 0x8C, 0x8F, 0x97, 0x73, 0x63, 0x8C, 0xB1, 0x4E, 0x1B, 0xDB, 0xD6, + 0xED, 0xA0, 0x34, 0x84, 0x90, 0x51, 0x1A, 0x7C, 0x48, 0x2B, 0x30, 0x1F, + 0x3C, 0x63, 0x24, 0x46, 0x68, 0xAD, 0x65, 0x9C, 0x0D, 0xC3, 0x40, 0x08, + 0x11, 0x8C, 0x3A, 0x1F, 0x7E, 0x54, 0x0B, 0x02, 0x00, 0x10, 0x02, 0xC6, + 0xF8, 0x34, 0x38, 0x87, 0x90, 0xF2, 0x53, 0x80, 0xF3, 0x91, 0x1C, 0xA0, + 0x4C, 0x34, 0x61, 0x6F, 0x53, 0x1D, 0x75, 0xDE, 0x41, 0x08, 0x31, 0x44, + 0x11, 0x22, 0x6B, 0xAD, 0x73, 0x16, 0x42, 0xF4, 0xF6, 0xF2, 0xB6, 0x69, + 0xE5, 0xF9, 0xE9, 0x62, 0x34, 0xCA, 0x0F, 0x57, 0x41, 0x84, 0x52, 0x27, + 0x94, 0xC6, 0xBA, 0xE0, 0x3D, 0x88, 0x09, 0x44, 0x7C, 0x38, 0xBC, 0x26, + 0x3B, 0x81, 0x31, 0x16, 0x40, 0x18, 0x7C, 0x48, 0x01, 0xDB, 0x49, 0x68, + 0xD9, 0xF5, 0x12, 0x22, 0xD4, 0x76, 0xC3, 0x30, 0x68, 0x00, 0x40, 0x12, + 0x63, 0x39, 0xE7, 0x28, 0x21, 0x10, 0x22, 0xE7, 0x0E, 0x20, 0xDF, 0x24, + 0xB2, 0x3B, 0xAC, 0x02, 0x39, 0x0D, 0x3E, 0x80, 0x08, 0xB4, 0xB3, 0x69, + 0x5F, 0x1E, 0x40, 0x4C, 0x86, 0x13, 0xCA, 0x08, 0x67, 0x8C, 0x52, 0x92, + 0xC6, 0xA6, 0x24, 0xFB, 0x80, 0x10, 0x6A, 0xA5, 0xD2, 0xB4, 0x0E, 0x23, + 0x24, 0x18, 0x8B, 0x8C, 0x3B, 0xE7, 0xBD, 0x75, 0x08, 0x42, 0x04, 0x51, + 0x70, 0x56, 0x79, 0x73, 0x79, 0x79, 0x83, 0x09, 0x62, 0x98, 0x00, 0x08, + 0x08, 0xC1, 0x52, 0x6B, 0x07, 0x21, 0x23, 0xB8, 0x2A, 0x4B, 0xE7, 0x5C, + 0x91, 0xE7, 0x52, 0xA9, 0x61, 0x50, 0x65, 0x99, 0x59, 0x6B, 0xA3, 0xB7, + 0x18, 0x93, 0x18, 0x23, 0xC1, 0x14, 0xC4, 0x98, 0xB0, 0x2E, 0x10, 0x41, + 0x67, 0x6C, 0xD7, 0x77, 0x5A, 0x1B, 0x00, 0x40, 0x96, 0x09, 0xEF, 0x7D, + 0x62, 0x9A, 0x12, 0x84, 0xF1, 0x30, 0x0C, 0x4A, 0x69, 0x9E, 0x3C, 0xCA, + 0x84, 0x78, 0xEF, 0xCB, 0x5C, 0x2C, 0xA7, 0xE5, 0xB8, 0x14, 0x17, 0x77, + 0xFB, 0xBE, 0xB7, 0x11, 0xA0, 0xA6, 0xEB, 0xCB, 0x8C, 0x57, 0xB9, 0xD0, + 0xCE, 0x07, 0x1F, 0xF2, 0x4C, 0x18, 0x1F, 0x2A, 0x46, 0x43, 0x84, 0x11, + 0x00, 0x82, 0xC0, 0xA4, 0xCA, 0xAC, 0x0B, 0x94, 0x52, 0x46, 0x70, 0xDA, + 0xC2, 0x3A, 0x1F, 0x72, 0xC1, 0x18, 0xA3, 0x20, 0x06, 0x4E, 0xB1, 0x33, + 0xC6, 0x06, 0xA0, 0x31, 0x26, 0x0C, 0x54, 0x68, 0xE8, 0xF6, 0xEB, 0xD7, + 0x17, 0x6F, 0xA5, 0xD6, 0x08, 0x21, 0xCA, 0x59, 0x31, 0xAE, 0xC6, 0x93, + 0xE5, 0xFF, 0xF9, 0x9F, 0xFE, 0xD3, 0xF7, 0x2F, 0xBE, 0xA9, 0x77, 0x2B, + 0xC1, 0xE9, 0xD1, 0x72, 0x8C, 0x30, 0x85, 0xC0, 0xE5, 0x39, 0xE8, 0x07, + 0xC5, 0x30, 0x3F, 0x3B, 0x3E, 0xA5, 0xA4, 0xFC, 0xEE, 0x87, 0x1F, 0xDA, + 0x5E, 0xFD, 0xEE, 0xAB, 0xE1, 0xEC, 0xB4, 0x52, 0xB2, 0xC6, 0x90, 0x8E, + 0x47, 0xF3, 0xAF, 0x5E, 0x5C, 0x5C, 0xBE, 0x7F, 0xF3, 0xF9, 0xE7, 0x3F, + 0xDB, 0x6C, 0xD7, 0xE3, 0xF1, 0xA4, 0xEB, 0x87, 0x7D, 0xBD, 0x93, 0x43, + 0x1F, 0x40, 0x5C, 0x1E, 0x3D, 0xD8, 0x6C, 0x36, 0x4F, 0x3E, 0xFA, 0xB9, + 0x09, 0x62, 0x7B, 0xFB, 0x3A, 0xEA, 0x7D, 0x26, 0x44, 0x08, 0xA8, 0xA4, + 0x33, 0xE0, 0x9D, 0xD2, 0x3A, 0x42, 0x58, 0xEF, 0xDB, 0xDD, 0xA6, 0x79, + 0x78, 0xFE, 0xA8, 0xCC, 0x46, 0xCA, 0x28, 0xA9, 0xFB, 0xA7, 0xA7, 0x8B, + 0x7A, 0xDF, 0x5C, 0xAD, 0xD7, 0x90, 0x71, 0x67, 0xBD, 0x73, 0x2E, 0x48, + 0x43, 0x31, 0x21, 0x02, 0xDF, 0xDC, 0xAE, 0xAB, 0x3C, 0x17, 0x45, 0x2E, + 0x07, 0x45, 0x21, 0xBE, 0xBB, 0xBE, 0x99, 0x94, 0x93, 0x5C, 0xF0, 0xA6, + 0x93, 0x72, 0x70, 0x52, 0xAE, 0xBD, 0x8F, 0xCA, 0xA8, 0x71, 0x91, 0x41, + 0x44, 0x9B, 0xBD, 0xB2, 0xDE, 0x3B, 0x1B, 0x21, 0x25, 0x46, 0xDA, 0x97, + 0xDF, 0xFF, 0x03, 0xF4, 0x5E, 0xC3, 0x30, 0x38, 0x0F, 0x20, 0xAA, 0x8A, + 0x51, 0x94, 0xD7, 0x75, 0xD3, 0xB2, 0x7C, 0x5A, 0xD2, 0xE3, 0xEB, 0xD7, + 0xDB, 0x10, 0x28, 0x81, 0xE0, 0x68, 0xF2, 0x8C, 0x4F, 0x0A, 0xA0, 0x9B, + 0xBB, 0x5D, 0x9F, 0x8B, 0xB1, 0x56, 0x7D, 0xDC, 0xBF, 0xA0, 0x24, 0x0C, + 0x7D, 0x3D, 0xA8, 0xDE, 0x7A, 0x8F, 0x30, 0xF6, 0x36, 0x2C, 0x96, 0x53, + 0x0A, 0xB0, 0xAA, 0xB1, 0xE7, 0x1C, 0x53, 0x71, 0x3A, 0x5A, 0xC0, 0x18, + 0x9D, 0x7C, 0x7F, 0x34, 0x11, 0x00, 0x58, 0x00, 0x02, 0x8A, 0x62, 0x2C, + 0x46, 0x2A, 0x60, 0xC7, 0x1E, 0x38, 0x27, 0xA9, 0xBE, 0xD6, 0xB2, 0x99, + 0x06, 0xE8, 0x6D, 0x40, 0xC1, 0x46, 0x4B, 0x03, 0x3B, 0x8B, 0x90, 0x33, + 0xC2, 0x43, 0x84, 0x21, 0x78, 0xE7, 0x5D, 0xC1, 0xB1, 0xF5, 0xD0, 0x03, + 0xDC, 0xAE, 0xDE, 0x7E, 0x3C, 0x43, 0xAF, 0x57, 0x77, 0x40, 0x8C, 0x38, + 0x0C, 0x8B, 0xC5, 0xFC, 0xB3, 0x9F, 0xFD, 0xD2, 0x20, 0xF1, 0xEA, 0xFB, + 0xAF, 0x69, 0x36, 0x1D, 0x8D, 0x67, 0x18, 0xE3, 0xE0, 0x41, 0x1B, 0xAB, + 0xE1, 0xE6, 0xAB, 0x67, 0x0F, 0x9F, 0x05, 0xA5, 0x20, 0xC6, 0x46, 0xEB, + 0xED, 0x60, 0x9B, 0xCE, 0x0F, 0xCE, 0x19, 0xE7, 0x95, 0x63, 0x4F, 0x8E, + 0xCF, 0x03, 0xAB, 0xCB, 0xC9, 0x6C, 0x12, 0x38, 0x6E, 0x56, 0x17, 0xBF, + 0xF9, 0xBF, 0x6E, 0x6E, 0x6E, 0x01, 0x04, 0x54, 0x70, 0xCE, 0x05, 0x80, + 0x70, 0xBB, 0xDD, 0x1A, 0xA3, 0x99, 0xC8, 0x91, 0xEE, 0xFD, 0xED, 0x5B, + 0x80, 0xF9, 0xF2, 0xE8, 0xC1, 0x50, 0xAF, 0x7E, 0xF8, 0xE6, 0x0F, 0x26, + 0xC4, 0x69, 0x21, 0xCA, 0xE5, 0xF9, 0xA6, 0xEE, 0x28, 0x25, 0xD3, 0xC9, + 0xC8, 0x18, 0x9B, 0x5A, 0xD7, 0x5C, 0x70, 0xE3, 0x5C, 0xD7, 0x0F, 0xDE, + 0x7B, 0x63, 0xCC, 0x41, 0x07, 0x00, 0x00, 0xE7, 0xFC, 0x7E, 0x38, 0x0A, + 0xDE, 0x7A, 0x6B, 0x3D, 0x26, 0xD4, 0x3B, 0x97, 0xEE, 0x89, 0x00, 0xC0, + 0xE4, 0xA5, 0x4B, 0x91, 0xDD, 0x79, 0xC6, 0x87, 0x41, 0x61, 0x4C, 0x38, + 0x67, 0x9D, 0x94, 0xD6, 0xBA, 0xBA, 0x6E, 0x8C, 0x32, 0x31, 0xC6, 0xA2, + 0xC8, 0xD3, 0xA1, 0x39, 0x9D, 0xD5, 0x30, 0xC6, 0x29, 0x3A, 0xEB, 0xBE, + 0xC5, 0x83, 0x08, 0x21, 0x29, 0xE5, 0x61, 0x12, 0x83, 0x08, 0x22, 0xE4, + 0x9D, 0x43, 0x10, 0x62, 0x8C, 0x13, 0x72, 0x3E, 0x91, 0xA3, 0x93, 0x11, + 0xC7, 0x07, 0x1F, 0xED, 0x7D, 0x85, 0x3D, 0x04, 0x48, 0x83, 0x10, 0x23, + 0x3A, 0xD0, 0xC1, 0x63, 0x8C, 0x11, 0xE3, 0x14, 0xA9, 0x19, 0x30, 0x42, + 0x75, 0xDB, 0xF5, 0xFD, 0xB0, 0x9C, 0x8D, 0xCF, 0xCE, 0x96, 0x69, 0xEF, + 0x46, 0x29, 0xD5, 0x3A, 0x24, 0xFF, 0x9B, 0x09, 0xDE, 0x7B, 0x6F, 0x9C, + 0xA3, 0x04, 0x6B, 0x6D, 0x19, 0xA3, 0x8C, 0x52, 0xEF, 0x5C, 0x22, 0xD0, + 0x31, 0xC6, 0x21, 0x00, 0xC9, 0x92, 0xA9, 0x8D, 0xD1, 0xC6, 0x55, 0x65, + 0x11, 0xEF, 0xEF, 0xF4, 0xA9, 0xD0, 0x53, 0x42, 0x08, 0x42, 0x21, 0x51, + 0x64, 0xC0, 0x3D, 0xF2, 0x37, 0xC6, 0x18, 0xA3, 0x60, 0x2C, 0xF8, 0x90, + 0x32, 0x44, 0x12, 0x34, 0x31, 0xC6, 0x58, 0x95, 0x45, 0x9E, 0x89, 0x43, + 0x32, 0x61, 0x08, 0x10, 0x41, 0x0C, 0x0F, 0xDD, 0x50, 0x08, 0xCE, 0x19, + 0x1D, 0x5D, 0xF0, 0x29, 0xBD, 0x0C, 0x23, 0xC6, 0x29, 0xBA, 0xCF, 0x3C, + 0x84, 0x00, 0x4A, 0xA5, 0x95, 0xD2, 0x00, 0x41, 0x29, 0x87, 0x51, 0x55, + 0xE6, 0xB9, 0x20, 0x94, 0x38, 0xE7, 0x27, 0xE3, 0x4A, 0x6B, 0xE3, 0x9D, + 0x2F, 0x72, 0x61, 0x9D, 0xEB, 0x87, 0x21, 0xC4, 0x58, 0x96, 0x59, 0x26, + 0xF8, 0xA8, 0xCC, 0xB5, 0xD6, 0x11, 0xA6, 0xD5, 0x2E, 0x90, 0x5A, 0x03, + 0x10, 0x95, 0xD4, 0xD6, 0x58, 0x42, 0x30, 0x65, 0x0C, 0x82, 0x03, 0xCC, + 0x4A, 0x2B, 0x63, 0x8D, 0x4B, 0x39, 0x0E, 0x03, 0x00, 0x20, 0x05, 0xB1, + 0x78, 0x1F, 0x20, 0x88, 0x94, 0x60, 0xC1, 0x18, 0xC5, 0xF0, 0x6E, 0xDB, + 0x3A, 0x6B, 0x96, 0x23, 0xAA, 0x8C, 0x11, 0x04, 0x2F, 0xC6, 0x8C, 0x31, + 0x14, 0x01, 0xD5, 0x9E, 0x04, 0x80, 0x90, 0xD2, 0x08, 0x45, 0x17, 0x61, + 0x37, 0xA8, 0x52, 0x70, 0x82, 0x31, 0x21, 0xA1, 0x10, 0xD4, 0x5A, 0xE7, + 0x02, 0xB4, 0xD6, 0x0A, 0xCE, 0x30, 0x08, 0x5E, 0xB5, 0xD1, 0xC9, 0xBA, + 0xF3, 0x5E, 0xD5, 0xD6, 0xE8, 0x38, 0x5D, 0x00, 0xD8, 0xE8, 0x6E, 0xF5, + 0xED, 0x8B, 0xF7, 0x83, 0x0B, 0x1F, 0x7F, 0xF4, 0x91, 0xC8, 0xAA, 0x37, + 0x17, 0xD7, 0x5F, 0x7E, 0xFD, 0x9D, 0xC8, 0xAB, 0xED, 0xAE, 0x7E, 0xFC, + 0xF0, 0xBC, 0x1E, 0x71, 0x4A, 0x62, 0x5E, 0xCD, 0xEE, 0x56, 0xEB, 0xA7, + 0x8F, 0x9F, 0x21, 0x02, 0xD5, 0xF5, 0x9B, 0x4C, 0x54, 0x9B, 0x6D, 0x77, + 0x67, 0x6A, 0x35, 0xF4, 0x4A, 0xAA, 0x7A, 0xAF, 0xF6, 0xBB, 0xAD, 0xD2, + 0xDD, 0xD1, 0xFC, 0xF8, 0xF2, 0xF2, 0xE5, 0xED, 0xFA, 0xAE, 0xC8, 0xF3, + 0xD7, 0xEF, 0xDE, 0xBD, 0x7C, 0xFD, 0x6A, 0xB1, 0x38, 0x16, 0x22, 0x13, + 0x3C, 0x43, 0x10, 0x1B, 0x25, 0xB5, 0x1C, 0x8E, 0x1E, 0x7C, 0xF4, 0xEB, + 0xBF, 0xFD, 0x2F, 0x39, 0xF7, 0xB2, 0xBE, 0x78, 0xFC, 0xD1, 0x7F, 0xD5, + 0xB5, 0x35, 0xB1, 0xDD, 0x72, 0x7E, 0xD6, 0x6C, 0xB7, 0x8D, 0xF5, 0xE5, + 0x78, 0x72, 0x34, 0x3D, 0x1A, 0x8C, 0x9B, 0x8F, 0x67, 0x94, 0xA1, 0xCD, + 0xEE, 0xA6, 0x2C, 0xA7, 0xD3, 0xD1, 0xF4, 0xEE, 0xF6, 0x36, 0x42, 0x6C, + 0x94, 0x8C, 0x11, 0x6D, 0xB7, 0x1D, 0x9A, 0xC0, 0xB3, 0x93, 0x0A, 0xE3, + 0xF8, 0xE4, 0xF4, 0x94, 0x53, 0x72, 0xBB, 0xA9, 0x27, 0x65, 0x31, 0xAE, + 0xC6, 0x55, 0x9E, 0xAF, 0x76, 0x35, 0x0D, 0x01, 0x78, 0xFA, 0xFC, 0xD9, + 0xD3, 0xCB, 0xDB, 0xB7, 0x82, 0x61, 0x6F, 0x0D, 0x70, 0xC1, 0x3B, 0x5C, + 0x1B, 0x95, 0xE7, 0x62, 0x54, 0x8C, 0x42, 0x74, 0x5A, 0x75, 0x08, 0xC6, + 0xDD, 0x7E, 0x7F, 0x3C, 0x9F, 0x69, 0xEF, 0x00, 0x00, 0x46, 0x9A, 0xAE, + 0x7E, 0x27, 0x10, 0xBA, 0x59, 0x5F, 0xFE, 0xF6, 0x37, 0xFF, 0x79, 0x3E, + 0x1E, 0x3D, 0x3B, 0x7F, 0xB8, 0x3C, 0x7E, 0xF0, 0x6C, 0x3E, 0xBC, 0xBD, + 0x78, 0x05, 0x3D, 0x9C, 0x23, 0x50, 0x64, 0x9A, 0x16, 0xE0, 0x1F, 0xAF, + 0x87, 0x5F, 0xFD, 0xE3, 0x0B, 0x8C, 0x60, 0x55, 0xE6, 0x1E, 0x38, 0xCA, + 0x99, 0xB5, 0x7E, 0x90, 0x9B, 0x4C, 0x88, 0xBE, 0x1F, 0x8C, 0x36, 0x20, + 0xC6, 0x93, 0xC5, 0xF4, 0x64, 0x59, 0x8C, 0x28, 0x30, 0x5A, 0xAF, 0xB6, + 0xDB, 0x10, 0x91, 0xE0, 0xF4, 0xF6, 0xEA, 0xED, 0xD1, 0x72, 0x32, 0x9D, + 0xAD, 0x2F, 0xAE, 0x6E, 0x2F, 0xAF, 0x6E, 0xBB, 0xCE, 0x40, 0x08, 0x19, + 0xA7, 0x11, 0x12, 0x88, 0xA1, 0x10, 0x6F, 0x62, 0x40, 0xD5, 0x78, 0x59, + 0x94, 0x8F, 0xBB, 0x38, 0x82, 0x00, 0xBB, 0x00, 0x23, 0x88, 0x84, 0x65, + 0x1F, 0x7F, 0xF8, 0xEC, 0xFF, 0xF9, 0xD5, 0xDF, 0x70, 0x9E, 0x4D, 0x67, + 0xF3, 0xA7, 0xCF, 0x1E, 0x2D, 0x4E, 0x9E, 0xB4, 0x83, 0x7B, 0xF5, 0x0F, + 0xFF, 0x47, 0x14, 0x53, 0xC0, 0x33, 0x4B, 0xBF, 0x50, 0x56, 0x06, 0xA3, + 0xAB, 0x2C, 0xBE, 0x7C, 0xF1, 0xBD, 0x58, 0x9E, 0x2F, 0x4F, 0x9F, 0x06, + 0x52, 0xEC, 0xB7, 0x9B, 0x89, 0xD4, 0x52, 0x69, 0x00, 0x01, 0x44, 0x70, + 0xDF, 0x6A, 0x57, 0x66, 0x93, 0x71, 0x04, 0xDE, 0x01, 0x67, 0x76, 0x9B, + 0xD5, 0x0F, 0x17, 0x97, 0xD7, 0xB7, 0x6B, 0xCE, 0x18, 0x21, 0x78, 0x32, + 0x9F, 0x23, 0x84, 0x95, 0x8B, 0xFB, 0x4E, 0xE5, 0x1E, 0x8A, 0x2C, 0x83, + 0x88, 0xA8, 0xAE, 0xBE, 0x5D, 0xDF, 0x84, 0x00, 0x10, 0xE5, 0x05, 0x00, + 0xCF, 0x3F, 0xFE, 0x9C, 0xCD, 0x1E, 0xBC, 0xBB, 0xDC, 0x80, 0x18, 0xBC, + 0x3F, 0xE8, 0x78, 0x63, 0x04, 0x08, 0x01, 0x8A, 0x31, 0x21, 0x44, 0x29, + 0x35, 0x2A, 0x4B, 0xEF, 0x1D, 0x80, 0x28, 0x61, 0x48, 0x13, 0x71, 0x2C, + 0xDD, 0xC2, 0x62, 0x8C, 0x29, 0xBA, 0x25, 0x41, 0x50, 0x7E, 0x1C, 0xD3, + 0xDA, 0x4E, 0x07, 0xE7, 0x76, 0xFB, 0x1A, 0x00, 0x04, 0x62, 0xA8, 0xB5, + 0xDE, 0x6C, 0x7D, 0x42, 0x5F, 0x90, 0x74, 0x79, 0x87, 0x10, 0x42, 0x98, + 0x65, 0xE2, 0x90, 0xCA, 0x0C, 0x91, 0xF3, 0x1E, 0xC4, 0x48, 0x31, 0x46, + 0x79, 0x96, 0xB2, 0xE2, 0x39, 0x67, 0x5A, 0x5B, 0x08, 0x41, 0x88, 0x20, + 0x1D, 0x4F, 0xAD, 0xF7, 0x08, 0x42, 0x8C, 0x51, 0x08, 0x91, 0x10, 0x04, + 0x40, 0x44, 0x08, 0x3B, 0xE7, 0x04, 0x67, 0xC9, 0x85, 0x9E, 0x67, 0x5C, + 0x5B, 0x97, 0x89, 0x62, 0x18, 0xB4, 0xF3, 0x49, 0x85, 0x9B, 0x08, 0x25, + 0x21, 0x1D, 0x76, 0x28, 0x4E, 0x00, 0x82, 0xE0, 0x41, 0xBC, 0xB9, 0xDB, + 0xF6, 0x83, 0x5A, 0xCC, 0x27, 0xB3, 0xD9, 0xE8, 0x9E, 0x4E, 0x0E, 0x09, + 0xC1, 0x31, 0x52, 0x63, 0x6C, 0x0C, 0x01, 0x00, 0x9C, 0x20, 0xE9, 0x49, + 0xCA, 0x90, 0xE7, 0xF9, 0xE1, 0x66, 0x12, 0x42, 0xEA, 0xC8, 0xBA, 0x6E, + 0xA0, 0x84, 0x68, 0xAD, 0x62, 0xF0, 0x99, 0x60, 0x9D, 0xD4, 0x10, 0x21, + 0x04, 0x81, 0xA0, 0x54, 0x6B, 0x03, 0x61, 0x12, 0xDF, 0x05, 0x7F, 0x6F, + 0x6B, 0xA3, 0x84, 0x22, 0x00, 0xAC, 0x75, 0x21, 0x02, 0x00, 0x81, 0xF3, + 0x1E, 0x61, 0x5C, 0xE4, 0x59, 0xDA, 0xBB, 0x23, 0x84, 0xA4, 0x32, 0xCE, + 0xBB, 0x34, 0xE4, 0x16, 0x45, 0xD1, 0xF7, 0x83, 0xEC, 0x65, 0x4A, 0xF2, + 0x44, 0xE0, 0x7E, 0x3C, 0x44, 0x30, 0x35, 0x7D, 0xA9, 0x69, 0x53, 0x83, + 0x45, 0x08, 0xE7, 0x82, 0x31, 0x4E, 0xF3, 0x4C, 0x20, 0x84, 0x7D, 0x08, + 0x04, 0x41, 0x04, 0xA2, 0xE0, 0x94, 0x16, 0x59, 0x08, 0x81, 0x60, 0x9C, + 0x67, 0x8C, 0x31, 0x96, 0x36, 0x71, 0x75, 0xD3, 0x10, 0x42, 0x84, 0x38, + 0xB0, 0x98, 0x62, 0xF0, 0x10, 0x21, 0x21, 0xB8, 0xD1, 0xDA, 0xDA, 0x68, + 0x8C, 0x85, 0x30, 0x96, 0x65, 0x6E, 0xAC, 0xE7, 0x82, 0x95, 0x79, 0xA6, + 0x95, 0xC6, 0x9F, 0xFE, 0xFC, 0x5F, 0xA7, 0x2F, 0x36, 0x21, 0x98, 0x51, + 0x12, 0x62, 0xA4, 0x18, 0x70, 0x0C, 0x32, 0x86, 0x9D, 0x19, 0xE6, 0xA2, + 0x39, 0x9D, 0x6A, 0x0A, 0xF7, 0x47, 0xE3, 0x60, 0xE4, 0x76, 0x75, 0x73, + 0xA9, 0xFA, 0x8D, 0xEC, 0xEE, 0xA0, 0x6B, 0xC6, 0xD5, 0xC4, 0xD8, 0x80, + 0x09, 0x86, 0x10, 0x31, 0x8A, 0x49, 0x22, 0x94, 0x3A, 0xDB, 0x2B, 0x13, + 0x23, 0xA0, 0x18, 0xC8, 0x7A, 0xAD, 0xD7, 0x5F, 0x09, 0x77, 0xD5, 0xAC, + 0x5F, 0x62, 0x7B, 0x53, 0x71, 0x95, 0x61, 0xC5, 0x90, 0xDA, 0xEE, 0x6E, + 0xDB, 0xAE, 0xE1, 0x59, 0xFE, 0xD9, 0xA7, 0x9F, 0x8D, 0xAA, 0x49, 0x51, + 0x81, 0xD9, 0xD8, 0x06, 0xEF, 0x8C, 0xEC, 0x9E, 0x3F, 0x3A, 0x3A, 0x3B, + 0x1E, 0x03, 0x04, 0x1F, 0x3D, 0xFA, 0xF0, 0xA3, 0xE7, 0x9F, 0x7E, 0xF2, + 0xEC, 0xF1, 0x7A, 0x73, 0xF3, 0xEA, 0x87, 0x57, 0x08, 0x81, 0xEB, 0x9B, + 0x6B, 0x8C, 0x39, 0x20, 0xDC, 0x18, 0x6D, 0x9D, 0x1B, 0xCF, 0x16, 0xDE, + 0x7B, 0x1C, 0xD1, 0x20, 0x35, 0x46, 0x68, 0x54, 0x8D, 0x97, 0xCB, 0x93, + 0xBC, 0x1A, 0x53, 0x26, 0x56, 0x77, 0xD7, 0x9C, 0xF3, 0x5D, 0xBD, 0x6D, + 0x9B, 0xFA, 0x8B, 0x9F, 0xFE, 0xE2, 0xE9, 0xC7, 0x9F, 0xBF, 0x7F, 0xFD, + 0xFD, 0xE5, 0xBB, 0x57, 0x5C, 0x94, 0x0F, 0x1F, 0x3D, 0x59, 0x1C, 0x2D, + 0x96, 0x63, 0xF2, 0xC1, 0xE3, 0x79, 0x55, 0x89, 0x47, 0x0F, 0x8F, 0x26, + 0xF3, 0xA3, 0xF9, 0xF2, 0x8C, 0x52, 0x5C, 0x94, 0x65, 0xC6, 0x98, 0xF7, + 0xDA, 0xB9, 0x6E, 0x3E, 0x99, 0xEE, 0xF7, 0xE9, 0x00, 0x12, 0x18, 0x86, + 0x65, 0x91, 0x01, 0x84, 0x05, 0x81, 0x1C, 0xA3, 0x3C, 0xCF, 0x8A, 0xB2, + 0x94, 0xCA, 0x4C, 0x46, 0x23, 0x82, 0xF0, 0x6C, 0x34, 0xED, 0x54, 0x33, + 0x9E, 0x64, 0x4A, 0x76, 0x45, 0x96, 0xC9, 0x7E, 0x8B, 0xA0, 0xCF, 0x99, + 0xE0, 0x10, 0x0F, 0x52, 0x8F, 0xC7, 0x93, 0x18, 0x9D, 0x8F, 0xF6, 0xE2, + 0x6E, 0x95, 0x14, 0x00, 0xAB, 0xF5, 0xAE, 0x95, 0xBD, 0x31, 0xE1, 0xED, + 0xD5, 0x06, 0x45, 0xC0, 0x29, 0xFD, 0xE8, 0xE9, 0x43, 0xAD, 0xF4, 0x76, + 0x57, 0x7F, 0xF0, 0xE8, 0xC1, 0xE3, 0x07, 0x0F, 0x3A, 0xA9, 0xBC, 0xB5, + 0x97, 0xD7, 0x97, 0xDF, 0xBF, 0x7E, 0x35, 0xCA, 0xB3, 0xD3, 0xA3, 0x99, + 0xF7, 0xF6, 0xEA, 0x76, 0xFF, 0xEA, 0xFD, 0x9D, 0x94, 0xFD, 0x6C, 0x5A, + 0x41, 0x18, 0xE7, 0xF3, 0x31, 0x22, 0xD8, 0xFA, 0x68, 0xB4, 0xB5, 0xCE, + 0x55, 0xA3, 0xD2, 0xF9, 0x64, 0x67, 0x33, 0x57, 0x77, 0x3B, 0xA9, 0x0D, + 0x80, 0x91, 0x51, 0x4A, 0x30, 0x99, 0x4D, 0xC7, 0x57, 0xAB, 0xC6, 0x1B, + 0x3F, 0xF4, 0xDD, 0xDB, 0x8B, 0x3B, 0xCA, 0x04, 0xA5, 0x94, 0x71, 0xCE, + 0x85, 0xA0, 0x94, 0x30, 0x42, 0x41, 0xC4, 0xD6, 0xF8, 0xB6, 0xD9, 0x75, + 0xFB, 0xAB, 0x71, 0x8E, 0x3E, 0x7D, 0x3C, 0xFD, 0xF8, 0xBC, 0xD8, 0xB4, + 0x6E, 0xCC, 0x09, 0xE8, 0x6E, 0x42, 0x8C, 0x55, 0x99, 0x3F, 0xF9, 0xE0, + 0xF1, 0x67, 0x9F, 0x7D, 0x42, 0x31, 0x58, 0x5D, 0xBE, 0x08, 0xAA, 0x1E, + 0x65, 0x21, 0x9A, 0x86, 0x87, 0x56, 0x6B, 0x97, 0x53, 0x80, 0x29, 0xF2, + 0xC8, 0x4D, 0xA6, 0x74, 0xB6, 0x98, 0x19, 0xD3, 0x4E, 0xE6, 0x53, 0xC7, + 0x8E, 0xDB, 0x5E, 0xFB, 0xE0, 0x31, 0x04, 0x00, 0xA0, 0x32, 0xE3, 0x25, + 0x0B, 0x6D, 0xD7, 0xF7, 0x5D, 0x77, 0xFD, 0xF2, 0x9B, 0xCD, 0x66, 0xB3, + 0xAD, 0x77, 0x31, 0x06, 0x10, 0xE3, 0xD1, 0xF1, 0xE9, 0x83, 0xCF, 0x7E, + 0xA6, 0xE4, 0x60, 0x87, 0xA1, 0x1D, 0xBA, 0x7E, 0xE8, 0x39, 0x63, 0x65, + 0x91, 0xF7, 0xBD, 0xCA, 0xF3, 0x6C, 0x3A, 0x1A, 0x9D, 0x3C, 0x78, 0xFC, + 0xC5, 0x5F, 0xFC, 0xBB, 0x5F, 0x7F, 0x77, 0xB3, 0xAD, 0x7B, 0x67, 0x5D, + 0x9A, 0x2F, 0x22, 0x80, 0x11, 0xC0, 0x84, 0xB4, 0xF7, 0xCE, 0xE5, 0x99, + 0x10, 0x42, 0x40, 0xAF, 0x04, 0xF1, 0x08, 0x61, 0x1F, 0x61, 0xD2, 0x22, + 0x39, 0x1F, 0xA5, 0xD6, 0x20, 0x05, 0x09, 0xC7, 0xC3, 0x49, 0x34, 0xC6, + 0x90, 0xE7, 0xC2, 0x59, 0x97, 0xFC, 0xE1, 0x8C, 0x73, 0x74, 0x0F, 0x9E, + 0x4D, 0x61, 0x29, 0xD6, 0x3A, 0x0C, 0xF1, 0x8F, 0x45, 0x30, 0xFD, 0x6A, + 0x8A, 0x24, 0x27, 0x08, 0xC7, 0x10, 0xAD, 0x77, 0x99, 0x10, 0xC6, 0xDA, + 0x94, 0xE2, 0x9E, 0x38, 0x71, 0xA9, 0xF9, 0x4A, 0x9A, 0xE7, 0xB4, 0x9A, + 0x06, 0xC9, 0x4C, 0x8E, 0x51, 0xD2, 0x6D, 0x69, 0x63, 0x10, 0xC2, 0xA5, + 0x20, 0x0F, 0xE7, 0x45, 0xF4, 0x8E, 0x31, 0x11, 0x21, 0x0A, 0xF7, 0xB5, + 0x35, 0xFE, 0x53, 0x7B, 0x6C, 0x8C, 0x09, 0xB9, 0x0B, 0x22, 0xC0, 0x18, + 0x4B, 0xAD, 0x37, 0x75, 0xD3, 0xF7, 0x92, 0xA5, 0xC0, 0x0A, 0x00, 0x92, + 0x05, 0x0D, 0x02, 0xE4, 0x83, 0x4F, 0xE4, 0x02, 0x08, 0x0E, 0x7E, 0x26, + 0xCE, 0x58, 0x84, 0x30, 0x39, 0xF0, 0x21, 0x04, 0xD6, 0xDA, 0x6D, 0xDD, + 0x50, 0x4A, 0x9D, 0xB7, 0x89, 0x31, 0x6D, 0x5D, 0x08, 0x21, 0x30, 0x42, + 0xDC, 0x41, 0x26, 0x82, 0x62, 0x04, 0xF1, 0x5E, 0x75, 0x90, 0xD2, 0xC3, + 0x43, 0x08, 0x11, 0xC0, 0x90, 0xAE, 0x3D, 0x8C, 0x8D, 0x47, 0x55, 0x26, + 0x38, 0x00, 0x80, 0x61, 0x12, 0x63, 0x74, 0xDE, 0x4B, 0x29, 0x11, 0x44, + 0x9C, 0xB1, 0xAE, 0x1F, 0x94, 0xD2, 0xE9, 0x12, 0x45, 0x09, 0x1E, 0x8D, + 0x4B, 0x8C, 0x61, 0xB2, 0x00, 0x01, 0x10, 0x09, 0x82, 0x18, 0xA2, 0xE0, + 0x23, 0x00, 0x80, 0x71, 0x92, 0x67, 0x8C, 0x12, 0x82, 0x09, 0x89, 0x31, + 0xC0, 0x08, 0x9C, 0x77, 0x84, 0x90, 0x3C, 0xCB, 0xA4, 0x52, 0x49, 0x95, + 0x9D, 0x64, 0xB7, 0xCE, 0x39, 0xAD, 0x75, 0x8C, 0x21, 0xC1, 0x26, 0xDA, + 0xB6, 0xF7, 0xCE, 0x31, 0x46, 0x9D, 0x75, 0x04, 0x23, 0xC6, 0x68, 0x8C, + 0x87, 0x3B, 0x6F, 0x42, 0x8D, 0x62, 0x08, 0x85, 0xC8, 0x20, 0x46, 0xF8, + 0xF3, 0x5F, 0xFC, 0x39, 0x48, 0xFC, 0x2C, 0x4A, 0x40, 0xF4, 0x63, 0x1E, + 0x60, 0xF0, 0x1C, 0x03, 0xEF, 0x41, 0x94, 0x57, 0x37, 0xEF, 0xBE, 0xFF, + 0x87, 0x2F, 0x5F, 0xAD, 0xD7, 0xFB, 0xD5, 0xB6, 0xFF, 0xE1, 0xED, 0x6A, + 0x5F, 0x4B, 0xCE, 0xD9, 0xED, 0xED, 0xF5, 0xED, 0xF5, 0xE5, 0xB4, 0x82, + 0xD3, 0x8A, 0x7B, 0x0F, 0x67, 0x25, 0x1B, 0x94, 0x8B, 0x11, 0xE6, 0xA0, + 0xE7, 0xC8, 0xC7, 0x10, 0x73, 0x1A, 0xA2, 0xDC, 0xBB, 0xFA, 0xF5, 0x72, + 0x84, 0x79, 0x56, 0x8C, 0x47, 0x65, 0x84, 0x44, 0x64, 0xC5, 0x72, 0x36, + 0x82, 0x18, 0x0C, 0xBA, 0x7F, 0x7C, 0xBA, 0x78, 0xF6, 0xF8, 0x7C, 0x5C, + 0xF2, 0x42, 0x0C, 0x37, 0x37, 0xDF, 0xDD, 0xAC, 0x56, 0x9F, 0x7C, 0xF8, + 0xE0, 0xCF, 0xFF, 0xC5, 0x2F, 0x30, 0xF4, 0xDF, 0xFF, 0xF0, 0xBD, 0x37, + 0xE1, 0xDF, 0xFF, 0x9B, 0x7F, 0x5B, 0x15, 0xA2, 0x9A, 0x9D, 0x7D, 0xF2, + 0x93, 0x3F, 0xFE, 0xE1, 0xFB, 0x6F, 0x7E, 0xF8, 0xE1, 0x9D, 0x73, 0xF1, + 0xD1, 0xC3, 0xC5, 0x74, 0x36, 0xA9, 0xDB, 0x96, 0x50, 0xF6, 0xEC, 0xA3, + 0xCF, 0x3E, 0x7A, 0xF6, 0xC1, 0x17, 0xCF, 0x1F, 0x23, 0xCA, 0x03, 0xA4, + 0x85, 0x60, 0x14, 0x86, 0x7A, 0xB7, 0xFA, 0xF4, 0xF3, 0x9F, 0xCF, 0x8F, + 0xCE, 0xE4, 0xD0, 0x41, 0x84, 0x97, 0xCB, 0x93, 0x4F, 0x3E, 0xFB, 0x29, + 0xA5, 0xF8, 0x76, 0xB5, 0x9D, 0xCC, 0x16, 0xF3, 0x51, 0x7E, 0x7C, 0xF6, + 0x10, 0x42, 0xE9, 0x20, 0xAF, 0xEB, 0x6D, 0x27, 0x3B, 0x0F, 0x62, 0x5E, + 0x09, 0xEF, 0x74, 0x39, 0x12, 0x22, 0x03, 0x21, 0x28, 0x69, 0xCC, 0x6C, + 0x3A, 0xEE, 0x3A, 0x3B, 0xCA, 0xF3, 0xD3, 0xA3, 0x0A, 0xC1, 0x38, 0xAA, + 0x38, 0xC2, 0xE0, 0xFC, 0x7C, 0xF9, 0xFC, 0xE9, 0xF9, 0xA3, 0x07, 0x67, + 0x05, 0x13, 0x31, 0x06, 0x08, 0xF1, 0xC9, 0x7C, 0x0C, 0xA3, 0x69, 0xD5, + 0xD0, 0xEB, 0x61, 0xBD, 0xDB, 0x32, 0x80, 0xDE, 0xBD, 0xBB, 0xEC, 0xB5, + 0x3E, 0x5B, 0x1E, 0x45, 0xEF, 0x33, 0x91, 0x3B, 0x6B, 0xEB, 0x7D, 0x37, + 0x19, 0x57, 0x94, 0x51, 0x46, 0xF1, 0x2F, 0x3E, 0xFF, 0xC4, 0x2A, 0xF7, + 0x0F, 0xBF, 0xFF, 0x1E, 0x53, 0xDC, 0xF5, 0x32, 0x42, 0x30, 0x58, 0xC3, + 0x39, 0x16, 0x4C, 0xAC, 0xB7, 0x35, 0x25, 0xF8, 0xD1, 0xD9, 0x59, 0xF0, + 0x7E, 0x36, 0x9A, 0x22, 0x00, 0xB5, 0xB5, 0xE3, 0x6A, 0xC2, 0x28, 0xBD, + 0x5B, 0xD7, 0xDF, 0xBF, 0xBE, 0xFD, 0xEA, 0xD5, 0x6D, 0x0C, 0x6A, 0x31, + 0x15, 0xD6, 0xC7, 0x10, 0x41, 0xD3, 0x34, 0x83, 0xEC, 0x87, 0x5E, 0x23, + 0x84, 0x57, 0x77, 0xDB, 0xCD, 0xAE, 0x01, 0x20, 0x42, 0x14, 0xEB, 0x7D, + 0x9D, 0x16, 0x40, 0x5D, 0xDB, 0x31, 0xC1, 0x32, 0x46, 0x61, 0x84, 0xCB, + 0xD9, 0x78, 0x54, 0x16, 0x5A, 0x59, 0x88, 0xE0, 0x64, 0x32, 0xAA, 0x8A, + 0x22, 0x02, 0x80, 0x31, 0xE6, 0x99, 0x88, 0x10, 0x65, 0x99, 0xE0, 0x94, + 0xCE, 0x67, 0x13, 0x69, 0xF4, 0xE5, 0xE5, 0xAB, 0xB3, 0x09, 0xC2, 0xA0, + 0xD3, 0xFD, 0x96, 0x45, 0xED, 0xD4, 0x96, 0x32, 0x38, 0x9F, 0x8F, 0xCE, + 0x1F, 0x1E, 0x03, 0xBB, 0x1F, 0xA1, 0x9A, 0x13, 0xFD, 0xF8, 0xD1, 0xF1, + 0xF3, 0xC7, 0x47, 0xA7, 0xC7, 0x27, 0xC0, 0x4B, 0xC2, 0xAA, 0x9C, 0xC3, + 0x9B, 0xF7, 0xDF, 0x3F, 0x7F, 0x7E, 0x7A, 0x7D, 0x7B, 0xBD, 0x5F, 0x5D, + 0x2E, 0xE6, 0xE3, 0x3C, 0x17, 0x8B, 0x22, 0x32, 0x8A, 0x04, 0xA5, 0x0C, + 0x43, 0x69, 0x83, 0x32, 0x7E, 0xCA, 0x2D, 0x26, 0xF8, 0xC5, 0x8B, 0x57, + 0xD6, 0x1A, 0x0C, 0xC2, 0x6C, 0x32, 0x4E, 0xC8, 0x9B, 0xFD, 0x66, 0x7D, + 0xFE, 0xC9, 0xCF, 0x1F, 0x7F, 0xF4, 0x09, 0x41, 0x91, 0x80, 0x00, 0x01, + 0x28, 0xCB, 0x1C, 0x21, 0x98, 0x65, 0x94, 0x10, 0x58, 0x56, 0xF9, 0x9F, + 0xFD, 0x37, 0xFF, 0x76, 0xD5, 0xEE, 0x9A, 0x4E, 0x9E, 0x4C, 0x42, 0x8E, + 0xEA, 0x08, 0x08, 0x61, 0x45, 0x21, 0xD0, 0xA4, 0x40, 0xD1, 0x5B, 0xDD, + 0xBC, 0x29, 0x38, 0x01, 0x31, 0x00, 0xD3, 0xF6, 0xF5, 0x55, 0x34, 0x3B, + 0x44, 0xCA, 0x80, 0x18, 0xC1, 0xE8, 0xE0, 0xC6, 0xF5, 0xC1, 0xFB, 0x18, + 0xBC, 0x47, 0x20, 0xC6, 0xA0, 0x61, 0x70, 0x98, 0x90, 0x18, 0x23, 0x46, + 0xC8, 0x7B, 0x9F, 0xE7, 0xF9, 0xBD, 0x1E, 0x38, 0xA6, 0xB4, 0xB1, 0x04, + 0x5F, 0x4B, 0x9C, 0x28, 0x8C, 0x0E, 0x26, 0xEC, 0x14, 0xCB, 0x94, 0x00, + 0xD0, 0x8C, 0x62, 0x6B, 0xBD, 0xB1, 0x4E, 0x0E, 0x92, 0x33, 0x96, 0xDC, + 0xD4, 0xCE, 0xB9, 0x10, 0x3C, 0x82, 0x30, 0x86, 0x98, 0xF0, 0xFF, 0x00, + 0x46, 0x4A, 0x69, 0x08, 0x00, 0x63, 0xA2, 0xB4, 0x41, 0x10, 0x2D, 0x66, + 0xA3, 0x41, 0x9A, 0xA3, 0xB1, 0x58, 0x66, 0xF6, 0x66, 0x75, 0xD7, 0x77, + 0x1D, 0x62, 0x39, 0x80, 0x28, 0xFA, 0x03, 0x42, 0x19, 0xDC, 0x6B, 0x1A, + 0x0E, 0x13, 0xF2, 0xE1, 0x7F, 0x31, 0xA1, 0xE1, 0xA4, 0xD2, 0xEB, 0x4D, + 0x1D, 0x42, 0x28, 0xCB, 0x9C, 0x60, 0xE4, 0x9C, 0x77, 0xDE, 0x1D, 0x12, + 0xB9, 0x7C, 0x60, 0x34, 0xA1, 0x46, 0x63, 0xF2, 0xEA, 0x6A, 0xEB, 0x52, + 0x3D, 0xEA, 0x07, 0xA9, 0x8D, 0x21, 0x98, 0x68, 0xAD, 0x10, 0x44, 0xC6, + 0x46, 0x6D, 0x34, 0x86, 0x08, 0xA7, 0xC0, 0x07, 0x08, 0x41, 0x04, 0x89, + 0xE7, 0x99, 0xF4, 0xBD, 0x04, 0x23, 0xE7, 0x43, 0x48, 0xD2, 0xB9, 0x18, + 0xB3, 0x4C, 0x54, 0x45, 0x86, 0x0F, 0x4B, 0x37, 0x9C, 0x5C, 0x77, 0xE9, + 0x64, 0x01, 0x41, 0x0C, 0xDE, 0x5B, 0x6B, 0x10, 0xC6, 0x31, 0x02, 0x04, + 0x01, 0xE7, 0x34, 0x29, 0x1C, 0x21, 0x80, 0x21, 0x78, 0x10, 0x42, 0x08, + 0x51, 0x2B, 0x6B, 0x9D, 0xC3, 0x04, 0xE7, 0x59, 0x0A, 0x5D, 0x45, 0x3F, + 0x6E, 0x00, 0x92, 0x48, 0xC8, 0x18, 0xA3, 0xB5, 0x4E, 0x3F, 0x99, 0xE2, + 0x48, 0x52, 0x53, 0x85, 0x31, 0xEE, 0x7B, 0x39, 0x0C, 0xCA, 0x1A, 0xC7, + 0x39, 0x15, 0x82, 0x13, 0x4C, 0x86, 0x41, 0xA6, 0x1D, 0x02, 0xC6, 0x48, + 0x19, 0x2B, 0xB5, 0x65, 0x94, 0xA4, 0x40, 0x35, 0xCE, 0x05, 0xFE, 0xE9, + 0x1F, 0xFD, 0x85, 0x0F, 0x41, 0x2A, 0xA9, 0xB5, 0x3C, 0x1E, 0xF3, 0xE8, + 0x4C, 0x70, 0xC3, 0xD9, 0x04, 0x05, 0xD7, 0xA2, 0x20, 0x37, 0xF5, 0xFE, + 0xC5, 0xEB, 0xF7, 0x19, 0x2F, 0xAE, 0x6E, 0x36, 0xFB, 0xBA, 0xAF, 0xEB, + 0x3D, 0x86, 0xF8, 0xFC, 0xE4, 0x78, 0x54, 0xE5, 0x1C, 0x99, 0x69, 0x66, + 0x8F, 0x46, 0x6C, 0xC4, 0x10, 0x74, 0x52, 0xC4, 0xE6, 0xF1, 0xCC, 0x97, + 0x44, 0xCE, 0xC4, 0x30, 0xA1, 0xBA, 0xD9, 0xBC, 0x2B, 0xCB, 0x92, 0x64, + 0x33, 0xE5, 0x50, 0xF0, 0x7E, 0x3F, 0xE8, 0xAA, 0xCC, 0x8D, 0x81, 0x9D, + 0x36, 0x48, 0xB0, 0xC1, 0x03, 0x19, 0x7C, 0xA3, 0xA5, 0x34, 0xDD, 0xEB, + 0xB7, 0xEF, 0x9B, 0xDE, 0x03, 0x58, 0xBE, 0x78, 0xB3, 0xAF, 0xFB, 0xA1, + 0x2C, 0xCA, 0xE7, 0x0F, 0x1F, 0x5A, 0xBD, 0xFE, 0x7F, 0xBF, 0xFC, 0xFE, + 0xED, 0x6D, 0x7B, 0xF9, 0xFE, 0xDD, 0xF5, 0xC5, 0xC5, 0xE9, 0xD1, 0xFC, + 0xE1, 0xD9, 0xBC, 0xE4, 0xF0, 0xFA, 0x7A, 0xAB, 0x94, 0x5D, 0xCE, 0x96, + 0x8B, 0x1C, 0x2C, 0x17, 0x47, 0xBD, 0x45, 0x56, 0xF6, 0xCF, 0x3F, 0x38, + 0x17, 0x82, 0xA2, 0x08, 0xA7, 0xD3, 0x89, 0x28, 0xAA, 0x0F, 0xBF, 0xF8, + 0x13, 0x26, 0x8A, 0x7F, 0xF9, 0x67, 0xFF, 0xF5, 0xD1, 0xF1, 0xC9, 0x0F, + 0x2F, 0x5F, 0xA8, 0x76, 0xD7, 0x6C, 0xDE, 0x7E, 0xF1, 0x6C, 0x79, 0xFE, + 0xEC, 0xF3, 0xAB, 0xEB, 0xDB, 0x4D, 0xE3, 0x5E, 0xBE, 0x7A, 0x3F, 0x28, + 0x6D, 0x8C, 0x6F, 0x5B, 0xB9, 0xDD, 0x36, 0xD6, 0xE9, 0xEB, 0xBB, 0x75, + 0xF0, 0xA6, 0xEB, 0xBB, 0xBC, 0xCC, 0x8D, 0xD1, 0x10, 0xC0, 0x4F, 0x3F, + 0x3C, 0xF9, 0xFE, 0xCD, 0x9B, 0xE5, 0x72, 0xB6, 0xD9, 0xEF, 0xF6, 0x4D, + 0xFF, 0xE4, 0xF1, 0xD9, 0xF9, 0xF9, 0x71, 0x80, 0xF1, 0xEA, 0xE6, 0xF6, + 0xCD, 0xDB, 0x77, 0x47, 0x8B, 0x19, 0x80, 0x71, 0x5D, 0xD7, 0x3E, 0x42, + 0xA9, 0x06, 0xA9, 0x2D, 0xD0, 0x8E, 0x71, 0x4C, 0x98, 0x18, 0x15, 0xE5, + 0x93, 0xF3, 0xF3, 0xF9, 0x74, 0xDC, 0xB6, 0x03, 0x80, 0xE8, 0xF1, 0xC3, + 0xF3, 0x5D, 0x2D, 0x21, 0xA4, 0x6F, 0xDE, 0x6D, 0xB4, 0x89, 0x8F, 0x1F, + 0x1C, 0xED, 0xF7, 0xB5, 0x92, 0x1A, 0xA2, 0xC8, 0x28, 0x7B, 0xB8, 0x38, + 0xFA, 0xFE, 0xF5, 0x3B, 0x8C, 0x00, 0xCF, 0xC4, 0xDB, 0xEB, 0x5B, 0x82, + 0xA8, 0x31, 0xB6, 0xEB, 0x5B, 0x08, 0x28, 0x04, 0xD1, 0x3A, 0xEB, 0x42, + 0x74, 0x3E, 0x5A, 0xA3, 0xA6, 0x23, 0x26, 0x65, 0xD7, 0x69, 0xE7, 0xAD, + 0x02, 0x50, 0x61, 0x8C, 0x38, 0xE3, 0xD7, 0xB7, 0xEB, 0xD9, 0x64, 0x3C, + 0x9B, 0x14, 0xF5, 0xBE, 0x56, 0x6A, 0x60, 0x84, 0x3E, 0x7E, 0x70, 0x7C, + 0x36, 0x9F, 0x1E, 0xCD, 0xE7, 0x20, 0x02, 0x67, 0xE3, 0x6E, 0x3F, 0xAC, + 0x37, 0xCD, 0xBB, 0xAB, 0x95, 0xF7, 0x60, 0x5C, 0x95, 0xEF, 0x2E, 0xB6, + 0xDF, 0xBE, 0xB8, 0xBE, 0xBA, 0x5D, 0x67, 0x9C, 0x69, 0x63, 0x01, 0xC2, + 0x83, 0xD4, 0x4A, 0x9A, 0x57, 0x3F, 0xDC, 0x02, 0x82, 0x9E, 0x3E, 0x3C, + 0xEE, 0xA5, 0x1D, 0x94, 0xC2, 0xC0, 0x20, 0xA0, 0xF2, 0x8A, 0x48, 0x3B, + 0x44, 0xA0, 0xA3, 0x57, 0x47, 0xF3, 0x1C, 0x41, 0xD7, 0x0D, 0x8D, 0x31, + 0x43, 0x2B, 0x9B, 0x22, 0x17, 0x54, 0x64, 0xA7, 0xCB, 0xA2, 0xEF, 0xF7, + 0xB9, 0x60, 0x85, 0xC8, 0x6F, 0xAF, 0xB7, 0x93, 0x6A, 0xBA, 0x5B, 0x77, + 0x28, 0x44, 0x12, 0x9D, 0x6D, 0x57, 0x23, 0xD2, 0x96, 0x78, 0xC8, 0x89, + 0xE5, 0x50, 0x93, 0x28, 0x8F, 0x8E, 0x4E, 0xB6, 0x75, 0xF7, 0xE0, 0xEC, + 0xF8, 0xE3, 0x0F, 0x8E, 0x01, 0x88, 0x42, 0xE0, 0x07, 0x67, 0xCB, 0x10, + 0xED, 0xE9, 0x71, 0x7E, 0xFE, 0x70, 0x94, 0x8F, 0xF0, 0x78, 0x91, 0x3D, + 0xFA, 0xF0, 0x38, 0xAB, 0xC4, 0xD1, 0xA3, 0xD9, 0x7C, 0x59, 0x4C, 0x4F, + 0xAA, 0xA3, 0x27, 0x8B, 0x41, 0x6D, 0x82, 0x5E, 0xCD, 0x2A, 0x49, 0x63, + 0x6D, 0xD5, 0xBE, 0xC8, 0x60, 0xC5, 0xC3, 0xA3, 0x59, 0xC8, 0x90, 0x56, + 0x7D, 0xCD, 0x43, 0x4D, 0x5C, 0xED, 0xE5, 0x6D, 0x46, 0x71, 0xC1, 0xE8, + 0x64, 0xF9, 0xD4, 0x93, 0x52, 0x2B, 0xE3, 0x01, 0xEC, 0x95, 0x0D, 0x11, + 0x02, 0x00, 0x04, 0xC3, 0x10, 0x21, 0xEC, 0x9B, 0xA8, 0x1B, 0x48, 0xF3, + 0xD4, 0x31, 0xA5, 0xCD, 0x3D, 0x88, 0xC0, 0xFB, 0x34, 0x4E, 0x82, 0x10, + 0x42, 0x29, 0x78, 0x0A, 0xA6, 0x41, 0x10, 0x08, 0x4E, 0x09, 0x81, 0x11, + 0x00, 0x63, 0x9C, 0xBF, 0xBF, 0x1E, 0x24, 0x66, 0xA7, 0x71, 0x2E, 0x91, + 0x94, 0xB4, 0x31, 0x00, 0xC2, 0x74, 0x05, 0x0E, 0x2E, 0xA4, 0xF8, 0x2A, + 0x88, 0x60, 0xAA, 0x26, 0x31, 0x46, 0x6D, 0xDC, 0xA3, 0x93, 0xC5, 0x67, + 0xCF, 0x1F, 0x52, 0xE8, 0xCB, 0x22, 0xDF, 0x36, 0xC3, 0x59, 0x6E, 0x5F, + 0xBF, 0xFA, 0xC6, 0x21, 0xF6, 0x87, 0xDF, 0xFD, 0xDD, 0xED, 0xF5, 0xFB, + 0x6A, 0x72, 0x04, 0x11, 0x8E, 0xDE, 0x23, 0x08, 0x29, 0x23, 0x00, 0x46, + 0x10, 0x0F, 0x71, 0x27, 0x87, 0xB0, 0x2A, 0x08, 0xD3, 0x11, 0x30, 0xFD, + 0x68, 0x9A, 0xBE, 0x69, 0x7A, 0xC6, 0x68, 0x9E, 0x09, 0x70, 0x20, 0x38, + 0xC5, 0x54, 0x65, 0x82, 0x0F, 0xA9, 0x1A, 0x3A, 0xE7, 0xAD, 0x0F, 0x10, + 0x22, 0x6B, 0x9D, 0xD2, 0xDA, 0x5A, 0x4F, 0x08, 0x85, 0x10, 0xF9, 0x10, + 0xA5, 0xD4, 0x07, 0x9C, 0x7E, 0x08, 0xE1, 0x3E, 0x5D, 0x14, 0x80, 0x14, + 0xF0, 0x07, 0x78, 0xC2, 0xF5, 0xDC, 0x23, 0xED, 0x84, 0xE0, 0xA3, 0x32, + 0x4F, 0x62, 0x31, 0x17, 0x3C, 0x46, 0xD8, 0x3A, 0x1B, 0x23, 0x50, 0xCA, + 0x44, 0x1F, 0x20, 0x8C, 0x5A, 0x5B, 0x78, 0xAF, 0x59, 0x4B, 0xD8, 0xE7, + 0x64, 0x98, 0xF3, 0xCE, 0xD9, 0x14, 0x49, 0x12, 0x40, 0x32, 0x39, 0x94, + 0x45, 0x46, 0x08, 0x02, 0x07, 0x42, 0x67, 0x52, 0xD2, 0xF9, 0xC4, 0x79, + 0x56, 0x4A, 0x31, 0xC6, 0x52, 0xD1, 0x56, 0xDA, 0x40, 0x08, 0x31, 0x4A, + 0x6B, 0xC3, 0x40, 0x08, 0xD1, 0xDA, 0x30, 0x4E, 0x27, 0xD3, 0x31, 0x84, + 0x10, 0x61, 0xE2, 0x63, 0x00, 0x31, 0xD1, 0xB7, 0x01, 0xC2, 0x18, 0x13, + 0x9C, 0x12, 0x3F, 0x7C, 0x08, 0x18, 0x63, 0xF8, 0xDF, 0xFD, 0x87, 0xFF, + 0xAD, 0xE9, 0x86, 0xE0, 0x3D, 0x02, 0xBE, 0xC2, 0xFA, 0x93, 0x27, 0x13, + 0x0A, 0xBA, 0xBE, 0xAD, 0x09, 0x25, 0xCB, 0xE5, 0xE2, 0xAF, 0x7F, 0xFB, + 0xED, 0xD7, 0xDF, 0xBD, 0x41, 0x80, 0xEC, 0xEB, 0x2D, 0x42, 0x30, 0x46, + 0xFC, 0xB3, 0xCF, 0x3E, 0x81, 0x30, 0x7C, 0xF8, 0xF4, 0xEC, 0xEC, 0x68, + 0x9C, 0x51, 0xE4, 0xBD, 0xBF, 0xDD, 0xEE, 0x20, 0x34, 0x43, 0xDF, 0x44, + 0x08, 0x08, 0x81, 0xDA, 0x81, 0xAA, 0x98, 0x18, 0x07, 0xEB, 0xBA, 0xDF, + 0xD7, 0xC3, 0xE9, 0xD9, 0x42, 0xAB, 0x5A, 0x2B, 0x1F, 0x02, 0xD7, 0x16, + 0x4F, 0xE7, 0xA2, 0xED, 0xFB, 0xC1, 0x58, 0x88, 0xB0, 0x10, 0x9C, 0x32, + 0x3C, 0x2A, 0x29, 0x03, 0x26, 0x5A, 0x70, 0xB7, 0x51, 0x18, 0xC5, 0x6E, + 0xD0, 0x1F, 0x7F, 0xB8, 0xDC, 0x6C, 0x6E, 0x7D, 0xCC, 0xFB, 0x81, 0x70, + 0xCA, 0xD5, 0xB0, 0x1B, 0x8D, 0x88, 0xB3, 0xE1, 0xC5, 0x9B, 0x8D, 0x1C, + 0xD4, 0xB3, 0xC7, 0x67, 0xFF, 0xE2, 0x8F, 0x3E, 0x0F, 0x01, 0xFD, 0xE6, + 0xAB, 0xD7, 0x5D, 0x2C, 0x9E, 0x3E, 0x79, 0xBC, 0xAF, 0xF7, 0x4D, 0xBB, + 0xDF, 0xAE, 0xEF, 0x00, 0xA2, 0x5A, 0xF6, 0xA3, 0x6A, 0xFC, 0xF8, 0xD9, + 0xA7, 0x94, 0xA2, 0xEB, 0x9B, 0xBB, 0x10, 0xDC, 0xDD, 0xDD, 0xFA, 0xF9, + 0x07, 0x4F, 0x9A, 0x7A, 0x73, 0x77, 0x7B, 0x97, 0xD3, 0x81, 0x50, 0xD2, + 0xD4, 0xFD, 0x64, 0x2C, 0xCA, 0x9C, 0x05, 0xE7, 0x39, 0xC3, 0x08, 0xC3, + 0x9C, 0x33, 0x86, 0xE3, 0x7A, 0xD7, 0x00, 0x84, 0x01, 0x88, 0x19, 0xA3, + 0x14, 0xFA, 0x46, 0x69, 0x84, 0xB1, 0x33, 0x32, 0xAF, 0x26, 0x45, 0xC1, + 0x87, 0xAE, 0x57, 0x16, 0xB8, 0x60, 0x62, 0xF0, 0x56, 0x7B, 0x08, 0x02, + 0xA1, 0x39, 0x42, 0x78, 0xD0, 0xED, 0xC3, 0x07, 0xC7, 0xD1, 0x85, 0xAB, + 0xDB, 0xF5, 0xB4, 0x18, 0xFD, 0xEC, 0xD3, 0xCF, 0x21, 0x74, 0x5D, 0xDF, + 0x0F, 0xDA, 0x79, 0x84, 0x7C, 0x44, 0xCE, 0x05, 0x00, 0x01, 0x85, 0x44, + 0x30, 0xCA, 0x48, 0xD8, 0x6F, 0xEB, 0xFD, 0x7E, 0x37, 0x1A, 0xE7, 0x1F, + 0x3E, 0x7F, 0x5E, 0xEF, 0xF6, 0xB7, 0xBB, 0xF5, 0xF1, 0x72, 0x8E, 0x08, + 0x1E, 0x5C, 0x78, 0xF3, 0xFA, 0xE2, 0x78, 0x36, 0xB5, 0x4A, 0x55, 0xE5, + 0xD8, 0xE9, 0x61, 0x36, 0x9D, 0x16, 0xC5, 0xE8, 0xED, 0xD5, 0x7B, 0xAD, + 0x7B, 0x46, 0x19, 0x88, 0xC8, 0x43, 0x68, 0xE5, 0x1E, 0x12, 0x96, 0x8B, + 0xF1, 0xF1, 0x72, 0x31, 0x0C, 0xB6, 0x2C, 0x29, 0x82, 0xA4, 0xEB, 0xFB, + 0x76, 0x50, 0x94, 0xE2, 0x51, 0x21, 0x86, 0xC1, 0x34, 0xDD, 0x70, 0x73, + 0xB3, 0xEB, 0xA5, 0x1E, 0xA4, 0xD4, 0xCE, 0x5A, 0xE7, 0x3E, 0x7D, 0xFE, + 0x81, 0x56, 0xFA, 0xFD, 0xED, 0x06, 0x63, 0x7C, 0xB2, 0x9C, 0x64, 0x14, + 0x4C, 0x26, 0x73, 0x40, 0x88, 0xE0, 0xAC, 0x2A, 0xC4, 0xC5, 0xD5, 0xCE, + 0x7A, 0xFD, 0xE9, 0x07, 0x4B, 0xC6, 0xF9, 0xAE, 0x6B, 0x8A, 0x4C, 0x08, + 0x92, 0xBF, 0x7C, 0x7F, 0xE5, 0x9D, 0x39, 0x5D, 0x4E, 0x18, 0x23, 0xD1, + 0x75, 0x5D, 0xD7, 0x78, 0x17, 0x30, 0x21, 0x84, 0x33, 0x88, 0x58, 0x59, + 0x16, 0x10, 0xE1, 0x2C, 0xCB, 0xB4, 0x71, 0x7D, 0xA7, 0x66, 0x55, 0x65, + 0x6C, 0x70, 0xD6, 0x52, 0x2C, 0xAE, 0x56, 0xFB, 0xBF, 0xFB, 0xDD, 0x8B, + 0x61, 0xE8, 0x7F, 0xFA, 0xE9, 0x93, 0x8C, 0x45, 0xC1, 0xE2, 0x78, 0x3A, + 0x2D, 0xF2, 0xDC, 0x47, 0x5C, 0x66, 0x7C, 0x36, 0xCA, 0x99, 0xC8, 0x9B, + 0xED, 0x46, 0x1B, 0x73, 0x79, 0xF5, 0x6E, 0xBC, 0xAC, 0x10, 0xA7, 0xF5, + 0x60, 0x77, 0xDB, 0x66, 0x5B, 0x0F, 0xD2, 0x58, 0xE8, 0x23, 0x05, 0x71, + 0x3A, 0x2B, 0x37, 0x9B, 0x36, 0x02, 0x14, 0x22, 0xE8, 0x07, 0x83, 0x28, + 0x43, 0x08, 0x5B, 0xEB, 0xF2, 0x8C, 0x65, 0x4C, 0x30, 0x96, 0x95, 0x39, + 0xBD, 0xBA, 0x7C, 0xB7, 0x59, 0xAF, 0x04, 0x67, 0x0C, 0xE1, 0xF9, 0x6C, + 0xB6, 0x3C, 0x3A, 0xB7, 0x50, 0xC0, 0xE0, 0x1C, 0xC8, 0x7B, 0x13, 0x43, + 0x24, 0xB7, 0x8D, 0x5B, 0xF5, 0x9E, 0x46, 0x19, 0x74, 0x33, 0x80, 0x09, + 0x65, 0x9C, 0x12, 0x48, 0x31, 0x74, 0x3E, 0x26, 0x5B, 0x3E, 0x84, 0x48, + 0x70, 0x9A, 0x42, 0xB6, 0x32, 0x4E, 0xB5, 0xB1, 0xD6, 0xDA, 0x42, 0x30, + 0x17, 0x82, 0x0F, 0x81, 0x33, 0x2A, 0xB5, 0x8D, 0x11, 0x10, 0x0C, 0x29, + 0xC1, 0x52, 0x59, 0x1F, 0x62, 0x84, 0x20, 0xE7, 0x34, 0x19, 0xFE, 0x9B, + 0x5E, 0x4A, 0xA5, 0x38, 0x63, 0x4A, 0x4A, 0x80, 0x70, 0xE2, 0x32, 0xDF, + 0x1B, 0xBC, 0xD5, 0xB4, 0xE0, 0x7F, 0xFC, 0xD9, 0x23, 0x0A, 0xD4, 0x97, + 0xDF, 0xBF, 0x95, 0x8E, 0x00, 0xC4, 0x97, 0xE1, 0xF6, 0x76, 0x73, 0x37, + 0x3E, 0x7B, 0xF6, 0xE2, 0xE5, 0xAB, 0xF7, 0xEF, 0x5E, 0x62, 0x3E, 0x7A, + 0xF6, 0x93, 0x3F, 0x43, 0x30, 0x6A, 0x6D, 0x9D, 0xF7, 0x49, 0x74, 0x66, + 0x8C, 0x4D, 0xD7, 0xCF, 0x18, 0xE2, 0x81, 0x7A, 0x96, 0xD8, 0x26, 0x87, + 0x34, 0x78, 0x87, 0x20, 0x7C, 0xF8, 0xE0, 0xF8, 0xF4, 0x74, 0x19, 0x62, + 0x70, 0xCE, 0x0F, 0x83, 0x22, 0x24, 0x89, 0xDB, 0x08, 0x21, 0x89, 0x00, + 0xEE, 0x63, 0x8C, 0x5A, 0xEB, 0xF5, 0x7A, 0x8B, 0x31, 0x61, 0x82, 0x1B, + 0x6D, 0x9B, 0xA6, 0x91, 0x52, 0x1F, 0xCE, 0x93, 0xA9, 0x78, 0x01, 0x90, + 0xBC, 0x69, 0x00, 0x00, 0x8A, 0x11, 0x00, 0x20, 0x44, 0x18, 0xEE, 0xD5, + 0xB6, 0xA3, 0xB2, 0x08, 0x49, 0x63, 0x06, 0x22, 0xC2, 0xD8, 0x1F, 0x62, + 0x1F, 0x12, 0xD2, 0x03, 0x52, 0x82, 0x53, 0x3A, 0x2F, 0x42, 0x08, 0x23, + 0xC4, 0x29, 0x46, 0x08, 0xA6, 0xBF, 0xA8, 0xD1, 0x86, 0x60, 0x6C, 0xAC, + 0x8D, 0xF7, 0x59, 0x9C, 0xC9, 0x62, 0x98, 0xD6, 0x8E, 0x69, 0x15, 0x98, + 0x92, 0xF1, 0xE2, 0xFD, 0xA9, 0x37, 0x55, 0xB7, 0xF4, 0x8E, 0x71, 0xCE, + 0x82, 0xC3, 0xB6, 0x8E, 0x48, 0x6D, 0x04, 0xE7, 0x55, 0x55, 0xFA, 0x10, + 0x8C, 0xB3, 0xCE, 0xDA, 0xE0, 0xBC, 0x73, 0x0E, 0x63, 0x2A, 0x84, 0x20, + 0x34, 0x21, 0x4F, 0xBC, 0xB1, 0x16, 0x63, 0x0C, 0xFF, 0xFB, 0xFF, 0xF0, + 0x1F, 0x21, 0x00, 0x5E, 0x37, 0x19, 0x27, 0x30, 0xB8, 0x9F, 0x3C, 0x11, + 0xC1, 0x0D, 0x4D, 0xDD, 0xF8, 0x00, 0x29, 0x2F, 0x5F, 0xBE, 0xBD, 0xD9, + 0x77, 0x9D, 0x52, 0xEA, 0x6C, 0x59, 0x2E, 0x17, 0x39, 0x25, 0xA5, 0x73, + 0x9E, 0xB3, 0x50, 0x15, 0x23, 0xEB, 0xC3, 0x6A, 0xB3, 0xDB, 0xD7, 0x3B, + 0x69, 0x35, 0x63, 0xC4, 0x19, 0xCD, 0x68, 0xAC, 0x3B, 0x05, 0x10, 0x7F, + 0x78, 0x3A, 0x57, 0x26, 0x5C, 0xDF, 0xDC, 0xCD, 0xC6, 0xA3, 0xF9, 0x38, + 0x77, 0x11, 0xB4, 0xAD, 0x1F, 0x4C, 0x56, 0x15, 0x65, 0xAF, 0xD6, 0x97, + 0x77, 0x35, 0x80, 0x18, 0x61, 0x0C, 0x22, 0x60, 0x8C, 0x64, 0x45, 0xB6, + 0x9C, 0xE6, 0x28, 0x28, 0x14, 0xB5, 0xF5, 0xB0, 0xAE, 0x9B, 0x47, 0xE7, + 0x79, 0xDD, 0x74, 0x93, 0xE9, 0x98, 0xC1, 0x7C, 0x54, 0xCD, 0x94, 0x96, + 0x77, 0xAB, 0xD5, 0x7E, 0xEF, 0x01, 0x10, 0x9C, 0xE0, 0x3F, 0xFF, 0x67, + 0x5F, 0xD8, 0xA0, 0x3A, 0xE9, 0xDF, 0xDD, 0xAA, 0x17, 0xAF, 0xDF, 0xCF, + 0x66, 0x33, 0x02, 0xFA, 0x93, 0x69, 0xD6, 0xA9, 0x7E, 0xBD, 0x33, 0xD7, + 0xDB, 0x20, 0xB5, 0xF9, 0xE8, 0xE3, 0x9F, 0x6C, 0x36, 0xEB, 0x8B, 0xF7, + 0xAF, 0xBF, 0xF9, 0xFA, 0xB7, 0xA7, 0x47, 0x8B, 0x3F, 0xF9, 0xA3, 0x5F, + 0xD2, 0x72, 0xBE, 0xBD, 0x7B, 0x05, 0x5C, 0xB3, 0x58, 0xCC, 0x4F, 0xE6, + 0x0B, 0xE7, 0x6D, 0x91, 0x53, 0x10, 0x83, 0x77, 0x7E, 0x54, 0x8D, 0x87, + 0x7E, 0xB8, 0x7C, 0x7F, 0x29, 0x32, 0xBE, 0x6D, 0x6A, 0x13, 0x70, 0x74, + 0x06, 0x44, 0x2F, 0x5D, 0xFC, 0xEC, 0xF3, 0xA7, 0xCD, 0xBA, 0x61, 0xBC, + 0xC8, 0x73, 0x3E, 0x9F, 0xE6, 0x90, 0xE2, 0x77, 0x97, 0x57, 0x9B, 0x5D, + 0xBB, 0xDD, 0xB4, 0x79, 0xC6, 0x95, 0x76, 0x4A, 0xC9, 0xE5, 0x72, 0x32, + 0x9D, 0x8C, 0xBC, 0x73, 0x1F, 0x3C, 0x3C, 0xCB, 0x59, 0xDE, 0xF4, 0xFA, + 0xC5, 0xDB, 0x77, 0x5D, 0x67, 0x84, 0xC8, 0x11, 0x41, 0x11, 0x40, 0x4E, + 0xF1, 0x74, 0x5C, 0xCC, 0xAA, 0x8A, 0x20, 0x04, 0x40, 0x84, 0x00, 0x1C, + 0xCD, 0x4B, 0x46, 0x40, 0xA7, 0x2D, 0xA2, 0xA8, 0xEE, 0x87, 0xBA, 0x19, + 0x30, 0xA6, 0xC9, 0x34, 0x33, 0xCA, 0x33, 0x1A, 0x03, 0x88, 0xB0, 0xEF, + 0xDA, 0xD1, 0x68, 0x0C, 0x22, 0xFC, 0xFE, 0xE2, 0x1D, 0x27, 0x80, 0x20, + 0x42, 0x09, 0x05, 0xD0, 0x29, 0x35, 0x4C, 0x46, 0x33, 0x17, 0xA0, 0x94, + 0xCA, 0x3B, 0x44, 0x39, 0xDB, 0xED, 0x5A, 0x1F, 0x70, 0x84, 0x04, 0x02, + 0xB0, 0x9C, 0x95, 0xE3, 0x32, 0xCB, 0x04, 0x45, 0x30, 0xBA, 0x68, 0xA5, + 0x52, 0x7F, 0xF8, 0xEA, 0xED, 0x5F, 0xFF, 0xE6, 0xDB, 0x7F, 0xFF, 0x97, + 0xFF, 0xAA, 0xC8, 0xB3, 0xBA, 0xEF, 0xBB, 0x5E, 0x8E, 0xCA, 0xF2, 0xE1, + 0xF1, 0x52, 0x3A, 0xF8, 0x9B, 0xAF, 0x7E, 0xC8, 0x8B, 0xC3, 0xF7, 0xD9, + 0xE7, 0xCF, 0xCF, 0xAC, 0xE9, 0x8B, 0x92, 0x9F, 0x1C, 0x97, 0x31, 0x44, + 0x6B, 0x71, 0xF4, 0xA0, 0xCA, 0x98, 0x10, 0xB8, 0x6E, 0x37, 0x83, 0x6C, + 0x3D, 0x00, 0x9C, 0x31, 0xC1, 0x73, 0xC2, 0x33, 0x6B, 0x02, 0xF4, 0xF6, + 0xEA, 0x76, 0xB7, 0x6F, 0xFA, 0x56, 0x6A, 0x00, 0x60, 0x2E, 0x44, 0x55, + 0xE6, 0xD6, 0xD8, 0x71, 0x55, 0x0A, 0x91, 0xDD, 0x6D, 0x76, 0x38, 0x7A, + 0xE7, 0x83, 0x77, 0x7E, 0x3E, 0xCB, 0x03, 0x70, 0x4A, 0x69, 0xC6, 0x08, + 0x21, 0x74, 0x54, 0x54, 0x10, 0xA3, 0x4E, 0xEA, 0x10, 0xD0, 0x30, 0xB4, + 0x10, 0x63, 0x44, 0xC9, 0xAE, 0xE9, 0x69, 0x04, 0x55, 0x95, 0xDB, 0xE8, + 0x05, 0xA5, 0x08, 0xC2, 0xB6, 0xEB, 0x36, 0xBB, 0x9E, 0x09, 0x6E, 0xAC, + 0xD9, 0x6D, 0x9B, 0xAE, 0xB7, 0x83, 0xD4, 0x79, 0x91, 0x53, 0xCE, 0xAD, + 0x71, 0xCB, 0xC5, 0xC4, 0x68, 0x2B, 0x04, 0x2D, 0x4B, 0xEA, 0xAD, 0xE2, + 0x98, 0x5E, 0x5D, 0xDF, 0x4A, 0x27, 0x09, 0xF4, 0x93, 0x7C, 0x7A, 0x32, + 0x9B, 0x4B, 0xA7, 0x38, 0x2D, 0x42, 0xE4, 0xB4, 0x1A, 0xC9, 0x61, 0xB5, + 0x97, 0xB1, 0x1C, 0x9D, 0x44, 0x52, 0x60, 0x9C, 0x2B, 0x69, 0xB4, 0xD1, + 0x63, 0xD2, 0xE7, 0x45, 0x71, 0xB5, 0x55, 0x00, 0x31, 0xCE, 0xF1, 0x38, + 0x83, 0x39, 0xF7, 0xCE, 0x29, 0x91, 0x55, 0xAD, 0xE2, 0xB9, 0xE0, 0x75, + 0xEF, 0x36, 0xAD, 0xAD, 0x0A, 0x92, 0x31, 0xBA, 0x6B, 0x55, 0x3F, 0x98, + 0x9C, 0x22, 0xE3, 0x03, 0x67, 0xDC, 0x7B, 0x1F, 0x01, 0x88, 0x00, 0x6D, + 0x9A, 0x5E, 0xC9, 0xE1, 0xB3, 0x27, 0x27, 0xB7, 0xBB, 0x6E, 0xB5, 0xEF, + 0x26, 0x39, 0x8F, 0x00, 0x0E, 0xC6, 0x13, 0x82, 0x73, 0x4E, 0x04, 0x25, + 0x9F, 0x2E, 0xF1, 0xFB, 0xBB, 0xBB, 0xA3, 0xE3, 0x65, 0xB7, 0xDF, 0xAD, + 0x76, 0x9D, 0x37, 0x9A, 0x31, 0x72, 0xF4, 0xE8, 0x69, 0x96, 0x91, 0x77, + 0xEF, 0xAF, 0xEF, 0x36, 0xC3, 0x74, 0x71, 0xD6, 0x4A, 0x9B, 0x12, 0x73, + 0xDD, 0x61, 0xC2, 0x4A, 0x99, 0x8F, 0x87, 0x36, 0x10, 0x02, 0x98, 0x76, + 0xE7, 0x10, 0x22, 0x4A, 0xA9, 0xB1, 0x16, 0x46, 0x08, 0x43, 0x1C, 0x4D, + 0xAA, 0xC5, 0x72, 0x5A, 0x95, 0x79, 0xD7, 0xF5, 0x29, 0x10, 0x37, 0x19, + 0x80, 0x7C, 0x08, 0xDA, 0xF9, 0xE0, 0x7D, 0xDB, 0xB6, 0x77, 0xAB, 0xCD, + 0x64, 0x32, 0xD1, 0xCA, 0xF6, 0xFD, 0xD0, 0x4B, 0x99, 0xA6, 0x67, 0x04, + 0x81, 0xBF, 0x17, 0x6D, 0x24, 0x0D, 0x98, 0xBF, 0x0F, 0x24, 0x06, 0xF7, + 0x42, 0xF4, 0x22, 0x13, 0x94, 0x33, 0xEF, 0x5C, 0x92, 0x89, 0xC4, 0x7B, + 0xCF, 0x69, 0x6A, 0x33, 0x05, 0xA7, 0xC9, 0xEA, 0x60, 0x6D, 0x92, 0xE9, + 0xA1, 0x8C, 0xD1, 0x10, 0x93, 0xDB, 0x07, 0xC2, 0x08, 0x7C, 0x08, 0xD6, + 0x58, 0x21, 0x38, 0x26, 0xD8, 0xFB, 0x80, 0x11, 0x1E, 0x8D, 0x4A, 0x6B, + 0x8C, 0xF5, 0x2E, 0x85, 0x07, 0xA6, 0xF8, 0xD5, 0x54, 0x97, 0x95, 0x32, + 0x18, 0xE3, 0x2C, 0xE3, 0x29, 0xDE, 0x25, 0x69, 0xE1, 0xEE, 0xCD, 0x5E, + 0x50, 0x08, 0x9E, 0xE7, 0x79, 0xB2, 0x6D, 0xA4, 0x56, 0x8E, 0x12, 0x9A, + 0x54, 0x26, 0x79, 0x96, 0x61, 0x0C, 0x5D, 0x08, 0xA9, 0x9E, 0xC2, 0xFF, + 0xF1, 0x7F, 0xFA, 0x5F, 0x7D, 0x80, 0x24, 0x0E, 0xFB, 0xDD, 0x5D, 0x96, + 0x4F, 0x4A, 0xB8, 0x7E, 0xF9, 0xFA, 0x65, 0xB0, 0x11, 0x63, 0xBA, 0x38, + 0x3E, 0x2F, 0x8B, 0x5C, 0x9B, 0x1A, 0x12, 0xCC, 0x29, 0x1D, 0xE4, 0x3E, + 0x78, 0x00, 0x22, 0xC0, 0x10, 0xFA, 0xE0, 0x28, 0x23, 0xB7, 0xAB, 0x3A, + 0x13, 0x8C, 0x32, 0xB6, 0xAF, 0x9B, 0xE5, 0x6C, 0x66, 0x9C, 0xDD, 0x37, + 0xAD, 0x10, 0xF0, 0x64, 0x39, 0x33, 0xC6, 0x82, 0x18, 0x18, 0x65, 0x75, + 0xAB, 0xB4, 0x85, 0xBB, 0x5D, 0x0F, 0x62, 0x2E, 0x72, 0xEA, 0x81, 0x69, + 0xFB, 0x20, 0x44, 0xE6, 0x43, 0x94, 0x6A, 0x10, 0x5C, 0x10, 0x4C, 0x18, + 0xC3, 0x45, 0xC1, 0xFB, 0x6E, 0xDB, 0x76, 0xE6, 0xE3, 0xA7, 0x0B, 0x6B, + 0x6B, 0xAD, 0x95, 0xB1, 0x78, 0x94, 0x67, 0x45, 0xC9, 0x08, 0x23, 0xD3, + 0x62, 0x42, 0x71, 0x56, 0x14, 0xA3, 0xEB, 0xDB, 0x7A, 0x54, 0x08, 0xC2, + 0x00, 0x0C, 0x7E, 0xDB, 0xCA, 0x49, 0x95, 0xED, 0xB7, 0x2D, 0xE6, 0x78, + 0x94, 0xF3, 0x5E, 0xE9, 0xDE, 0x98, 0xD5, 0xBA, 0xDF, 0xD5, 0x52, 0x88, + 0x62, 0x3F, 0xC0, 0x5F, 0xFD, 0xEA, 0xAF, 0x27, 0x55, 0xF6, 0xDF, 0xFE, + 0xE5, 0x2F, 0x21, 0x34, 0x10, 0x16, 0x93, 0xE5, 0x83, 0xFD, 0xE6, 0x7D, + 0x59, 0x10, 0x74, 0x88, 0x66, 0xC0, 0x55, 0x31, 0x61, 0x9C, 0x3A, 0x17, + 0xDE, 0xBE, 0xB9, 0x42, 0x30, 0x5C, 0xAE, 0x37, 0xED, 0x20, 0x19, 0xC9, + 0x1E, 0x3F, 0x9C, 0x7B, 0x08, 0x76, 0xB5, 0xE4, 0x94, 0xBF, 0xF8, 0xFE, + 0xA6, 0xCC, 0xD9, 0x93, 0xF3, 0xA3, 0x10, 0x83, 0x87, 0xFE, 0xDD, 0xD5, + 0x45, 0x55, 0x8D, 0x41, 0x0C, 0x10, 0x86, 0x5E, 0xAA, 0xE8, 0xBD, 0xC8, + 0x04, 0x44, 0xE4, 0xC1, 0xD1, 0x94, 0x11, 0x62, 0x02, 0xB8, 0x5A, 0x6D, + 0x82, 0x45, 0x8C, 0x8A, 0x2C, 0xA3, 0x79, 0xC6, 0x40, 0x04, 0x08, 0x46, + 0x0C, 0x91, 0x94, 0x4E, 0x6A, 0x53, 0x55, 0x85, 0x96, 0x32, 0xCF, 0x19, + 0x27, 0xF8, 0xEE, 0x6E, 0xCF, 0x0B, 0xB1, 0xDE, 0xB6, 0x01, 0x00, 0xCA, + 0x30, 0x63, 0x84, 0x31, 0x8A, 0x11, 0x2C, 0x05, 0x3F, 0x59, 0x4E, 0x8B, + 0x8C, 0x0D, 0x83, 0x7C, 0x73, 0x71, 0xF1, 0xC3, 0xE5, 0x75, 0x2E, 0xC8, + 0x6C, 0x34, 0x51, 0x46, 0xFA, 0x60, 0x9C, 0x77, 0x39, 0x2F, 0x9C, 0xF5, + 0x18, 0xC3, 0x18, 0x90, 0x75, 0xF0, 0xF1, 0x83, 0x93, 0xA3, 0xC5, 0xC9, + 0xAF, 0xBF, 0x7C, 0x71, 0x7B, 0xB7, 0x79, 0x78, 0x76, 0xCA, 0x28, 0x8D, + 0x31, 0x8C, 0xCA, 0xEC, 0xE4, 0x78, 0x22, 0x07, 0x15, 0x82, 0x07, 0x04, + 0x30, 0x44, 0x87, 0xC1, 0xDD, 0xAE, 0x37, 0x4A, 0x99, 0xC5, 0x6C, 0x7E, + 0x7E, 0xBE, 0xE8, 0x8D, 0x6E, 0x7A, 0xD9, 0xB6, 0xF6, 0xCB, 0xAF, 0x7F, + 0x28, 0x8A, 0xD1, 0xD1, 0x7C, 0x1E, 0x5C, 0x33, 0x99, 0x89, 0xC5, 0xAC, + 0x58, 0x4E, 0xF2, 0xD1, 0x48, 0xB8, 0x00, 0x9D, 0x03, 0x7D, 0xE3, 0xCA, + 0x02, 0xF1, 0x0C, 0xDD, 0xDD, 0xED, 0x94, 0xB3, 0x20, 0x84, 0xD9, 0x74, + 0x64, 0xA4, 0xDB, 0xAE, 0x3B, 0x6D, 0x02, 0xC2, 0xB0, 0x9A, 0x64, 0x59, + 0xCE, 0x04, 0xE3, 0xFD, 0x60, 0xA5, 0xF3, 0xAB, 0xDB, 0x5D, 0x37, 0xD8, + 0xE7, 0x8F, 0x4F, 0x8E, 0xC7, 0xE5, 0x6F, 0x7F, 0xF7, 0xCD, 0x72, 0x36, + 0x45, 0x34, 0xBE, 0xBF, 0xBE, 0xA1, 0x84, 0x3F, 0x7B, 0x7A, 0xAA, 0x8C, + 0xBD, 0x5E, 0xED, 0x3C, 0x44, 0x6D, 0x67, 0x12, 0xF0, 0xA3, 0x64, 0xF4, + 0xE3, 0x8F, 0x4F, 0xB4, 0xF7, 0x08, 0xC3, 0x00, 0x22, 0xC5, 0xF8, 0xEA, + 0xFD, 0x6A, 0xB7, 0xEB, 0x21, 0xC2, 0x08, 0x63, 0x1F, 0x41, 0xBD, 0x6F, + 0x27, 0x93, 0xEA, 0xDD, 0xC5, 0x4A, 0x19, 0x57, 0x96, 0x39, 0x88, 0x20, + 0xE9, 0xB7, 0xF7, 0xFB, 0x8E, 0x52, 0x3A, 0x9B, 0x54, 0xA3, 0x8A, 0x0B, + 0x8E, 0x36, 0xDB, 0xCD, 0xCD, 0x7A, 0x45, 0x08, 0xA4, 0x84, 0x53, 0x44, + 0xCB, 0x9C, 0x16, 0x59, 0xB5, 0xDB, 0x75, 0xB9, 0xA0, 0xD6, 0x6B, 0x1F, + 0x81, 0x10, 0xEC, 0xC1, 0xE9, 0xD1, 0x6C, 0xB1, 0x10, 0x2C, 0xE3, 0x04, + 0x4C, 0x73, 0xDC, 0xD4, 0x5D, 0x00, 0x58, 0xDB, 0x00, 0x10, 0xF0, 0x56, + 0x46, 0xE8, 0x45, 0xC1, 0xA5, 0x72, 0x22, 0x2F, 0x30, 0x80, 0xBD, 0xCD, + 0x78, 0x7E, 0xF2, 0xF0, 0xC1, 0x91, 0xB6, 0x6E, 0xB5, 0x6E, 0x56, 0x5B, + 0x3D, 0xAF, 0xC4, 0x6A, 0x2F, 0x09, 0x81, 0xB3, 0x92, 0xEC, 0x5A, 0x0D, + 0x20, 0x72, 0x01, 0x30, 0x0C, 0x07, 0xE3, 0xDF, 0xAF, 0x3B, 0x8E, 0xE1, + 0xB4, 0xA0, 0xDE, 0xC7, 0xEB, 0x5D, 0x97, 0x0B, 0x72, 0x34, 0x1D, 0x0D, + 0x52, 0x3D, 0xCE, 0x6A, 0x20, 0xE8, 0xA8, 0x9C, 0x7C, 0xFD, 0xED, 0x9B, + 0xB7, 0xD7, 0x77, 0xB3, 0xD9, 0x1C, 0x61, 0xCA, 0x39, 0x3A, 0x3A, 0xCE, + 0x37, 0x7B, 0x19, 0x62, 0x91, 0x89, 0xF2, 0xF5, 0x4A, 0x5B, 0x63, 0x63, + 0x8C, 0x11, 0x00, 0x6D, 0x1D, 0x67, 0xC4, 0x47, 0xE0, 0xAD, 0x83, 0xE8, + 0xE0, 0xCB, 0x61, 0x94, 0xA6, 0x10, 0xCA, 0xD4, 0xAA, 0xA0, 0x84, 0x01, + 0x80, 0x10, 0x12, 0x3C, 0x9D, 0x54, 0x8B, 0xD9, 0x24, 0xCF, 0xB9, 0x36, + 0x8E, 0x11, 0x02, 0x10, 0xB2, 0xDE, 0xC5, 0x08, 0xFB, 0xBE, 0xDF, 0xEF, + 0xEB, 0x10, 0x22, 0xC2, 0x74, 0xB7, 0xAB, 0xBD, 0x73, 0x01, 0x80, 0x10, + 0x01, 0x02, 0x00, 0x43, 0xE8, 0x41, 0xDA, 0xFA, 0x25, 0x87, 0x76, 0x8A, + 0xA1, 0x82, 0x00, 0x44, 0x84, 0x20, 0xC2, 0x58, 0x30, 0xC6, 0x29, 0xD5, + 0xCE, 0xFD, 0x98, 0xA6, 0x7A, 0x70, 0x0B, 0x20, 0x04, 0x21, 0x92, 0x2A, + 0x49, 0x5E, 0x41, 0xBA, 0xB7, 0xA6, 0x23, 0x03, 0x46, 0x80, 0x53, 0xD6, + 0x0F, 0x03, 0x88, 0x31, 0xC1, 0x72, 0x31, 0x4E, 0xB8, 0x1C, 0x94, 0xA4, + 0xB6, 0xA3, 0x51, 0x89, 0x20, 0xB0, 0xD6, 0x28, 0xA9, 0x7D, 0x08, 0x8C, + 0x51, 0x42, 0x48, 0x72, 0x74, 0x25, 0x59, 0x3F, 0xE7, 0x3C, 0xD5, 0x29, + 0x74, 0xEF, 0x19, 0x00, 0x00, 0x58, 0x6B, 0x19, 0xA5, 0x94, 0x0B, 0x84, + 0xF1, 0xD0, 0x77, 0xC3, 0x20, 0x01, 0x88, 0x20, 0x02, 0x17, 0x22, 0x88, + 0x20, 0xCF, 0x33, 0x6D, 0x0C, 0x63, 0x34, 0x86, 0xE0, 0xBC, 0x27, 0xBE, + 0xDF, 0x60, 0x5A, 0x58, 0xDB, 0x76, 0xF5, 0xF6, 0xEA, 0xFD, 0x65, 0x56, + 0x90, 0xAC, 0x9A, 0x2E, 0xA7, 0x05, 0x23, 0x78, 0xDD, 0xF8, 0x6F, 0x7E, + 0xFF, 0x1D, 0xA7, 0xBE, 0xEF, 0xE4, 0x64, 0x36, 0x67, 0x0C, 0x7E, 0xFF, + 0xFD, 0xDB, 0x4F, 0x3F, 0x7C, 0x04, 0x20, 0xF2, 0x20, 0x56, 0x79, 0x78, + 0x78, 0x7E, 0x54, 0x56, 0x13, 0x39, 0xB4, 0x65, 0xC9, 0xA4, 0x85, 0xDA, + 0x84, 0xA2, 0xAC, 0x9C, 0x1B, 0x76, 0x8D, 0x72, 0xCE, 0x5A, 0x17, 0x33, + 0x0E, 0x06, 0x0D, 0x0B, 0x4E, 0x9C, 0xF7, 0xC3, 0xD0, 0x60, 0xCE, 0xA5, + 0x45, 0xDB, 0x6D, 0x9F, 0x65, 0x46, 0x1B, 0x23, 0x32, 0x01, 0x33, 0xEC, + 0x23, 0x68, 0x9A, 0x8E, 0x10, 0x64, 0x3C, 0xB9, 0xBC, 0xBA, 0xA6, 0x20, + 0xB4, 0x43, 0x7B, 0x7C, 0x54, 0x9C, 0x2C, 0xC7, 0xBB, 0x5D, 0xED, 0x11, + 0x1A, 0x47, 0xCA, 0x47, 0x59, 0x8C, 0xD4, 0xA8, 0xD8, 0x75, 0x9A, 0x51, + 0xB6, 0xBB, 0xDD, 0x6F, 0x76, 0xED, 0xC3, 0xF3, 0x69, 0x2F, 0x25, 0x84, + 0x78, 0xE8, 0xD5, 0xCB, 0x37, 0xEF, 0x95, 0xF1, 0xFD, 0xA0, 0x4A, 0xC1, + 0x3F, 0x7D, 0xF2, 0x40, 0x07, 0xFA, 0xFB, 0xFF, 0xF2, 0x65, 0x95, 0x8B, + 0xC7, 0xA7, 0xD3, 0xB7, 0x57, 0x97, 0x11, 0x01, 0x60, 0x6F, 0xA6, 0xF5, + 0x40, 0xB2, 0xFC, 0x76, 0x75, 0x25, 0x18, 0x3E, 0x5B, 0x4C, 0x17, 0x8B, + 0xA3, 0xCD, 0xB6, 0xEB, 0x6E, 0x9A, 0x88, 0xA0, 0xB2, 0xA0, 0x28, 0xB2, + 0x62, 0x32, 0xF3, 0xA8, 0x1D, 0x89, 0xD2, 0x39, 0xAA, 0xBD, 0xC1, 0x18, + 0xD7, 0xED, 0xD0, 0x19, 0x1D, 0x60, 0xD8, 0x34, 0x8D, 0x8F, 0x21, 0xCB, + 0xC5, 0x78, 0x3C, 0xD9, 0xEF, 0xFA, 0x18, 0x7D, 0x96, 0x73, 0x63, 0x3C, + 0x22, 0x08, 0x33, 0xE1, 0x9C, 0x7F, 0x77, 0xBD, 0xB5, 0xC6, 0x97, 0x65, + 0x56, 0xEF, 0x9B, 0xB2, 0x9C, 0xE4, 0x23, 0x6E, 0x7A, 0xB9, 0x53, 0xCA, + 0x68, 0x4F, 0x29, 0xB6, 0x2E, 0x80, 0x88, 0xB2, 0x9C, 0xD5, 0x7D, 0xBF, + 0xBA, 0xDB, 0x5A, 0x6D, 0xAB, 0xAA, 0x04, 0x11, 0xF8, 0x56, 0x39, 0x00, + 0x9B, 0xAE, 0x2D, 0x8B, 0x8C, 0x52, 0x0C, 0x62, 0x14, 0x99, 0xE8, 0x7B, + 0x7B, 0x71, 0xB5, 0x9A, 0x4D, 0xCA, 0x27, 0x67, 0x27, 0x4F, 0x1E, 0x3C, + 0x85, 0x40, 0xEC, 0xEB, 0xF5, 0x76, 0xD3, 0x52, 0x46, 0xA4, 0x76, 0x08, + 0x41, 0x5E, 0xE4, 0x0C, 0x19, 0x8C, 0x50, 0x3B, 0x58, 0xE3, 0x1D, 0xA1, + 0xEC, 0x76, 0xB5, 0x7D, 0x70, 0x94, 0x7F, 0xF4, 0x64, 0xBE, 0x98, 0xCD, + 0x8B, 0xBC, 0xF0, 0x3E, 0x58, 0xEB, 0x01, 0x08, 0xCE, 0x1A, 0x1F, 0xF1, + 0xC9, 0xD1, 0x24, 0x13, 0x6C, 0xBB, 0xA9, 0x1F, 0x3F, 0x9A, 0x32, 0xC1, + 0xDB, 0x6E, 0x00, 0xD8, 0x3B, 0xEA, 0xE6, 0x02, 0x3F, 0x7F, 0xB6, 0x7C, + 0xFA, 0xE8, 0x58, 0x05, 0x98, 0xE7, 0x86, 0xF3, 0x05, 0xA2, 0x04, 0x82, + 0x38, 0x29, 0x38, 0x02, 0x51, 0xB6, 0x3D, 0xA0, 0xF8, 0xD5, 0xBB, 0x0B, + 0xE7, 0xC1, 0x6C, 0x52, 0x46, 0xE7, 0x8C, 0xD7, 0x93, 0x71, 0xF6, 0xFA, + 0xC5, 0xED, 0x68, 0x5C, 0x1D, 0x9F, 0xCE, 0xB5, 0xB6, 0x79, 0x29, 0x94, + 0x54, 0xC6, 0x58, 0x6F, 0x43, 0xDD, 0x69, 0x69, 0xF4, 0x47, 0x1F, 0x9E, + 0xDC, 0x6C, 0xFB, 0x77, 0x37, 0xEB, 0xDD, 0x76, 0xFF, 0xD3, 0x2F, 0x9E, + 0x1A, 0x65, 0x2E, 0x57, 0x77, 0x67, 0x67, 0x73, 0x4E, 0x32, 0x63, 0xC2, + 0x9B, 0x8B, 0xD5, 0xA6, 0xED, 0xA4, 0x32, 0x6D, 0xDB, 0x67, 0x5C, 0x60, + 0x4C, 0xFF, 0xF8, 0x4F, 0xFF, 0x24, 0x27, 0x61, 0xBD, 0xBA, 0x33, 0x31, + 0x50, 0x86, 0x17, 0xB3, 0xF2, 0x17, 0x3F, 0x7D, 0x1C, 0x3D, 0xDC, 0x6D, + 0x07, 0xE3, 0x1C, 0x02, 0x18, 0x00, 0xD4, 0x4B, 0xF3, 0xF8, 0x64, 0xF9, + 0xD5, 0x77, 0xEF, 0x56, 0x75, 0x4F, 0x29, 0x35, 0xCE, 0xDA, 0xA6, 0x65, + 0x8C, 0x15, 0x19, 0xE5, 0x38, 0x8E, 0x32, 0x54, 0x95, 0xE2, 0xB3, 0x67, + 0x5F, 0x40, 0x10, 0x6C, 0x08, 0x83, 0x72, 0x46, 0xF9, 0x94, 0xFC, 0x52, + 0xE6, 0xDB, 0x7F, 0xFC, 0xEA, 0xA5, 0xF3, 0x41, 0x49, 0x6B, 0xBD, 0x6F, + 0x3B, 0xFF, 0x29, 0xA4, 0x77, 0xAB, 0x6F, 0x21, 0xF0, 0x8F, 0x4E, 0x4F, + 0x8F, 0x97, 0xCB, 0x8C, 0xE7, 0x46, 0x35, 0x30, 0xD2, 0x41, 0x21, 0x42, + 0x31, 0x8E, 0x99, 0xB7, 0xED, 0xD0, 0x75, 0x52, 0x6B, 0x00, 0xC1, 0x3C, + 0xB3, 0xB1, 0x0F, 0x7A, 0xD0, 0x58, 0x77, 0x67, 0x93, 0x62, 0x31, 0xCE, + 0xA7, 0x65, 0xCE, 0xC3, 0xBE, 0xAE, 0xAF, 0x66, 0x34, 0x32, 0x8A, 0xAB, + 0xBC, 0xF2, 0x20, 0xFB, 0xFE, 0x5A, 0x3D, 0x5E, 0x66, 0x67, 0x53, 0x81, + 0x60, 0x90, 0xC6, 0xCC, 0xC6, 0x82, 0x11, 0x02, 0x00, 0x5A, 0x16, 0xFE, + 0xC3, 0xD3, 0x23, 0x91, 0x97, 0x3F, 0xBC, 0x5D, 0x4D, 0xC6, 0x19, 0x21, + 0x73, 0x6B, 0x62, 0x9E, 0x7B, 0x8A, 0xED, 0xFE, 0x76, 0x0B, 0x11, 0xFC, + 0xC9, 0x47, 0xCB, 0xBE, 0x87, 0xD0, 0xF9, 0x00, 0x62, 0x5E, 0x8E, 0xD7, + 0x7B, 0xAF, 0x8C, 0x5B, 0xEF, 0x7A, 0x41, 0x50, 0x60, 0xB8, 0x95, 0x16, + 0x02, 0x90, 0x30, 0x73, 0x18, 0x63, 0xE7, 0x0C, 0x22, 0xD8, 0x07, 0x1F, + 0x03, 0x60, 0x98, 0x20, 0x8C, 0x22, 0x08, 0xF5, 0x76, 0x6F, 0x07, 0x79, + 0x7A, 0xBA, 0xAC, 0x26, 0x63, 0xE7, 0x7C, 0x0C, 0x01, 0x42, 0xA4, 0xB5, + 0x36, 0xDA, 0x0C, 0x83, 0x14, 0x3C, 0xDB, 0xED, 0x6A, 0xE3, 0xEC, 0xC1, + 0x85, 0x16, 0x0F, 0x53, 0x2A, 0x48, 0xF1, 0x63, 0x21, 0x26, 0x41, 0x49, + 0xE2, 0x33, 0xA6, 0xC9, 0x31, 0x79, 0x9E, 0x1A, 0xD3, 0x87, 0x18, 0x18, + 0x65, 0xF0, 0x90, 0x9B, 0x95, 0x02, 0x56, 0x1C, 0x25, 0x24, 0x04, 0xEF, + 0x03, 0x38, 0x80, 0xDA, 0x11, 0x02, 0x30, 0x42, 0x08, 0x8D, 0x75, 0xCE, + 0x0E, 0x82, 0x12, 0xA9, 0x8C, 0x0D, 0x16, 0x61, 0x8C, 0x30, 0xF2, 0xDE, + 0x11, 0x02, 0xF3, 0x3C, 0x53, 0x4A, 0x87, 0x54, 0x44, 0x21, 0xA2, 0x8C, + 0x02, 0x6B, 0x05, 0x17, 0x08, 0x23, 0x6B, 0x2D, 0x00, 0x20, 0xCB, 0x33, + 0x8C, 0x50, 0x0A, 0x79, 0xC8, 0xF3, 0x5C, 0x4A, 0x75, 0x7F, 0xF0, 0xC5, + 0x08, 0x21, 0x17, 0x02, 0x0A, 0xEE, 0xFE, 0x8C, 0x10, 0x11, 0x22, 0x8C, + 0x73, 0xA5, 0x15, 0x88, 0x51, 0x0F, 0x03, 0x26, 0xC4, 0x6B, 0x03, 0x11, + 0x0A, 0xD6, 0xC3, 0xFF, 0xFD, 0x3F, 0xFE, 0xCF, 0xAB, 0xED, 0xB0, 0xAB, + 0xF7, 0xCE, 0x9B, 0x22, 0xCF, 0x10, 0x02, 0x0F, 0x1E, 0x9E, 0xDC, 0xDD, + 0xDC, 0x6C, 0x36, 0xFB, 0xBA, 0xF5, 0x08, 0x44, 0xE9, 0xA1, 0xE0, 0xB9, + 0x8F, 0x10, 0x00, 0x85, 0x40, 0x3B, 0x5F, 0xCC, 0x82, 0x8B, 0x9D, 0x54, + 0xDA, 0xA8, 0xE5, 0xAC, 0xDC, 0xD6, 0x3D, 0x08, 0x00, 0x00, 0xDF, 0x0D, + 0x76, 0xBD, 0x56, 0x93, 0x49, 0xD9, 0xB6, 0xDD, 0xA8, 0x12, 0x3E, 0x18, + 0xAD, 0xFD, 0xB8, 0xE4, 0xCA, 0x04, 0x4A, 0x10, 0x44, 0xA8, 0x69, 0x34, + 0x00, 0x60, 0x5B, 0x0F, 0xBB, 0x7A, 0x60, 0x04, 0x87, 0x08, 0x27, 0xD3, + 0xE9, 0xA8, 0x2A, 0x43, 0x08, 0x20, 0x82, 0x5C, 0xE0, 0x07, 0x67, 0xCB, + 0xB6, 0x69, 0x67, 0x55, 0xC9, 0xB3, 0x7C, 0x3E, 0xCB, 0xCA, 0x9C, 0xE6, + 0x5C, 0x78, 0xEF, 0xDB, 0xB6, 0x43, 0x20, 0x16, 0x79, 0xB9, 0xDA, 0x76, + 0x5A, 0xBB, 0xB2, 0x2C, 0xDB, 0xA6, 0x63, 0x04, 0x07, 0x68, 0xEB, 0xAE, + 0x9B, 0x16, 0x23, 0xAD, 0xE5, 0xDB, 0x9B, 0x5B, 0xE7, 0xE3, 0xF1, 0x62, + 0xFA, 0x60, 0xB9, 0x68, 0x3B, 0xF9, 0xEE, 0x66, 0x7F, 0xD7, 0xF9, 0xED, + 0xF6, 0xAE, 0xDD, 0xDE, 0x7E, 0xF0, 0xF4, 0x98, 0x30, 0x94, 0x51, 0x3E, + 0x9D, 0x2C, 0xDA, 0x41, 0x5D, 0xDF, 0xDC, 0x6A, 0xA3, 0x7E, 0xF9, 0xF9, + 0xC7, 0x82, 0xE7, 0x5A, 0x69, 0x2E, 0x8A, 0xF5, 0xBE, 0x1D, 0x64, 0x17, + 0x82, 0x56, 0x2E, 0x00, 0x80, 0x96, 0xE3, 0x79, 0xD7, 0x75, 0xBB, 0xB6, + 0xC9, 0x32, 0x82, 0x31, 0x0A, 0x10, 0x6E, 0xB7, 0x6D, 0x74, 0xE1, 0x27, + 0x3F, 0x7D, 0xE6, 0xBD, 0xB7, 0xC6, 0x3A, 0x17, 0xBA, 0x41, 0x2A, 0x2D, + 0xEB, 0xBA, 0xC1, 0x18, 0x16, 0x55, 0x51, 0xE4, 0xB9, 0xEC, 0x8D, 0x96, + 0x66, 0x3C, 0x2A, 0x10, 0x0E, 0x10, 0x52, 0xA3, 0xDD, 0x6E, 0xDF, 0x12, + 0xCA, 0x22, 0x80, 0xD6, 0xDA, 0x6A, 0x54, 0xE5, 0xB9, 0xD8, 0x6F, 0x77, + 0x22, 0xE3, 0x52, 0x19, 0x04, 0xE0, 0x64, 0x54, 0x44, 0x00, 0xDB, 0xB6, + 0xA7, 0x9C, 0xBD, 0x7A, 0x73, 0x21, 0x38, 0x3F, 0x3D, 0x5D, 0x58, 0x63, + 0x36, 0xBB, 0xE6, 0xF4, 0x68, 0x91, 0x31, 0x94, 0x09, 0x56, 0x66, 0x6C, + 0x3E, 0x9D, 0xEF, 0xF6, 0xF2, 0x68, 0x96, 0xAD, 0x37, 0xBB, 0x76, 0x18, + 0xDA, 0x7E, 0x38, 0x3F, 0x3A, 0x1E, 0x55, 0xC5, 0xA8, 0x22, 0xA3, 0x51, + 0x7E, 0xB7, 0x6F, 0xBE, 0x7B, 0x75, 0x39, 0x1E, 0xE5, 0x1F, 0x3C, 0x3A, + 0xA7, 0x84, 0x12, 0x4A, 0xAB, 0xB2, 0x28, 0x84, 0x40, 0x11, 0xBD, 0x7E, + 0x7B, 0xCD, 0xA8, 0x8F, 0xC8, 0x01, 0xC4, 0x05, 0x63, 0x82, 0xD2, 0x7D, + 0xDD, 0x8E, 0xC7, 0x79, 0x04, 0xE1, 0x2D, 0x31, 0xC6, 0xEF, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xCD, 0xDB, 0xF7, 0xC6, 0xFA, 0x72, + 0x3C, 0x76, 0xD6, 0x4D, 0x67, 0xC7, 0x4A, 0xEB, 0xC5, 0x14, 0xB5, 0xBA, + 0xDF, 0xB5, 0xDA, 0x06, 0x30, 0x48, 0x83, 0x30, 0xC9, 0x32, 0x4E, 0x09, + 0xCE, 0x04, 0x75, 0xC6, 0x09, 0x00, 0x90, 0x8F, 0x2F, 0x7F, 0xB8, 0x59, + 0x6F, 0x5A, 0x91, 0x11, 0xE0, 0xC1, 0x67, 0x9F, 0x3F, 0xAE, 0x1B, 0xD9, + 0x4B, 0x35, 0x9F, 0x97, 0xED, 0x5E, 0x5E, 0x5C, 0xAD, 0x01, 0x44, 0x83, + 0x34, 0xC1, 0xF9, 0xF3, 0xB3, 0x85, 0x8C, 0xFE, 0xFC, 0x78, 0x81, 0x42, + 0x98, 0x8D, 0xF3, 0x51, 0x29, 0x10, 0x46, 0x52, 0x45, 0x08, 0x71, 0x08, + 0x5E, 0x5B, 0xCB, 0x38, 0x5A, 0xED, 0xF6, 0x77, 0xB7, 0x3B, 0x10, 0xF1, + 0x6C, 0x76, 0x34, 0xF4, 0xF2, 0xE5, 0xAB, 0xD7, 0x08, 0xBA, 0xB2, 0xAA, + 0x26, 0xA3, 0xEC, 0x5F, 0xFD, 0xC9, 0x87, 0xBD, 0x34, 0x9B, 0xFD, 0x20, + 0xA5, 0x25, 0x94, 0xC6, 0x10, 0xAD, 0xF5, 0x93, 0x69, 0x45, 0x31, 0x06, + 0x00, 0xB6, 0x52, 0xF7, 0xDA, 0x5C, 0x5F, 0xDF, 0x8D, 0x73, 0x0C, 0x20, + 0x9A, 0x4F, 0xC7, 0x3E, 0x58, 0xC6, 0x88, 0xE0, 0xD4, 0xB8, 0x78, 0xB7, + 0x6E, 0x94, 0xF1, 0x00, 0xA1, 0x61, 0xD0, 0x14, 0x33, 0xCE, 0x49, 0x55, + 0x08, 0x2D, 0xCD, 0xDD, 0x66, 0xFB, 0x9B, 0x2F, 0xBF, 0x93, 0xDA, 0xFC, + 0xF3, 0x5F, 0x7E, 0xCE, 0x09, 0xA2, 0x04, 0xCD, 0x16, 0x55, 0x80, 0xAE, + 0xEF, 0xBA, 0x49, 0x35, 0x2D, 0x45, 0x21, 0x08, 0x8F, 0x31, 0x84, 0x88, + 0x9C, 0x0D, 0x0E, 0x18, 0x82, 0x21, 0x40, 0x60, 0x3C, 0x29, 0x18, 0x45, + 0x75, 0x2D, 0x37, 0xAB, 0xC6, 0x33, 0x1C, 0x51, 0xA4, 0x84, 0x3E, 0x3E, + 0x5D, 0x76, 0xFB, 0x66, 0xD7, 0xF4, 0xC7, 0x27, 0x8B, 0xCD, 0x66, 0x3B, + 0xAB, 0xCA, 0xC9, 0xAC, 0x40, 0x98, 0x43, 0xC2, 0x80, 0x83, 0x4A, 0xB9, + 0xF1, 0x78, 0xDC, 0x0F, 0x92, 0x22, 0x34, 0x19, 0x95, 0x57, 0x37, 0x97, + 0x10, 0x84, 0xBE, 0x1F, 0xB6, 0xBB, 0xBD, 0x0F, 0xC0, 0x7B, 0x38, 0x19, + 0x4F, 0xFB, 0xA1, 0x0F, 0xCE, 0xAC, 0xEB, 0xDD, 0xD3, 0xA7, 0x4F, 0x8A, + 0x2C, 0xEF, 0xBB, 0x1E, 0x47, 0x47, 0x28, 0x1B, 0xCF, 0x47, 0xDB, 0x0E, + 0x78, 0x1D, 0x37, 0xB5, 0x15, 0x04, 0xAD, 0x15, 0xE8, 0x0D, 0x68, 0x1A, + 0xD5, 0x69, 0x77, 0x50, 0x9C, 0xC4, 0xE0, 0x43, 0x74, 0x3E, 0x44, 0x1F, + 0x29, 0xC2, 0x88, 0x00, 0x84, 0x10, 0x88, 0x30, 0x78, 0xCF, 0x28, 0x3D, + 0x3E, 0x3B, 0x9A, 0x4D, 0xC7, 0x21, 0x46, 0xEB, 0x43, 0x3F, 0xC8, 0xAE, + 0xEB, 0xD7, 0xEB, 0x5D, 0xCA, 0x73, 0xF0, 0x20, 0x02, 0x00, 0x7C, 0x08, + 0x14, 0xA2, 0xE4, 0xB0, 0xF5, 0x07, 0x93, 0x00, 0x70, 0xDE, 0x13, 0x8C, + 0x12, 0x10, 0x18, 0xC4, 0x98, 0x65, 0x59, 0xDA, 0x79, 0x25, 0x32, 0x7A, + 0x72, 0x0E, 0xA4, 0x7B, 0x28, 0x44, 0x49, 0x79, 0x4B, 0xB4, 0xF1, 0xDD, + 0xA0, 0x30, 0x46, 0x93, 0x82, 0x15, 0x9C, 0x00, 0x94, 0x2C, 0x04, 0x16, + 0x04, 0xCF, 0x09, 0xDE, 0x77, 0xCA, 0xC7, 0x43, 0x80, 0x58, 0x4A, 0xF0, + 0x4D, 0x37, 0xD3, 0x2C, 0x13, 0x65, 0x99, 0x19, 0x6D, 0xAC, 0x35, 0x29, + 0xFD, 0xAF, 0x28, 0xB2, 0x24, 0xF4, 0xE5, 0x9C, 0xA7, 0xBD, 0xBE, 0x77, + 0x16, 0x53, 0x4A, 0x09, 0x55, 0x5A, 0x32, 0xC6, 0xAA, 0xD1, 0xB8, 0x6D, + 0x3B, 0x63, 0x4C, 0xF0, 0x0E, 0xC4, 0x10, 0x23, 0x48, 0x18, 0x32, 0x91, + 0xE7, 0xCE, 0x59, 0xEF, 0x1C, 0x3A, 0x10, 0x95, 0x00, 0x02, 0x28, 0xC4, + 0x08, 0xFF, 0x97, 0xFF, 0xE1, 0xDF, 0x15, 0x22, 0xEB, 0xDA, 0xDA, 0x5A, + 0xF7, 0xD3, 0x8F, 0x1F, 0x42, 0x18, 0xAC, 0x07, 0xEB, 0x4D, 0xED, 0xBC, + 0xAD, 0x78, 0x55, 0xEF, 0x07, 0x8B, 0x8B, 0xD5, 0x00, 0x37, 0xAB, 0xCB, + 0x87, 0xE7, 0xB3, 0xAE, 0xAB, 0x31, 0x05, 0x30, 0xBA, 0x5E, 0x76, 0x9D, + 0xF2, 0xDE, 0xF9, 0x57, 0xAF, 0xEF, 0x3E, 0xFD, 0xF8, 0xA4, 0x6F, 0xBB, + 0xAE, 0x73, 0x22, 0xCF, 0xD3, 0xB8, 0x1A, 0xEC, 0x90, 0xE5, 0x24, 0x13, + 0x0C, 0xC3, 0x58, 0x8E, 0x46, 0x4D, 0xD7, 0x01, 0xE0, 0x33, 0x91, 0xBD, + 0x7D, 0xBF, 0x5E, 0xAD, 0xDA, 0xF9, 0x62, 0xDE, 0xB7, 0xCA, 0x59, 0x53, + 0xE6, 0x85, 0x72, 0xA1, 0x28, 0xB2, 0xD3, 0xE5, 0xF8, 0x8F, 0x3E, 0x7D, + 0x6A, 0x3D, 0x12, 0x39, 0x93, 0xCA, 0xD7, 0x8D, 0x0E, 0x21, 0x18, 0x63, + 0xB2, 0x9C, 0x5B, 0xA3, 0x19, 0x41, 0xD3, 0x11, 0x27, 0x8C, 0x18, 0x6B, + 0x28, 0x82, 0x39, 0xCB, 0x2F, 0x6F, 0x76, 0xAB, 0x6D, 0x2D, 0x72, 0xDC, + 0x0D, 0x83, 0x37, 0xE1, 0xFC, 0x64, 0x06, 0x00, 0xDC, 0x37, 0xDD, 0xF1, + 0x7C, 0xEA, 0x83, 0x7B, 0xFB, 0x7E, 0x23, 0xF2, 0x5C, 0x46, 0xFA, 0xFB, + 0x3F, 0xFC, 0x3E, 0xA3, 0xF0, 0xD9, 0xA3, 0x85, 0x32, 0x6A, 0x36, 0x9D, + 0xAE, 0xB7, 0x7B, 0xA3, 0x1D, 0x46, 0xF4, 0xE8, 0x68, 0x36, 0x1F, 0x8F, + 0xDF, 0xBD, 0xBF, 0x69, 0x9A, 0x6E, 0x32, 0x1D, 0x53, 0x21, 0x9C, 0xD7, + 0x82, 0xD3, 0x37, 0xEF, 0x57, 0x9B, 0x7D, 0x37, 0x1D, 0x4D, 0x31, 0xF2, + 0x01, 0x84, 0xD9, 0x78, 0x64, 0x9D, 0xF6, 0xC1, 0x51, 0x46, 0x07, 0x69, + 0x05, 0xE1, 0x22, 0x23, 0xD2, 0xF4, 0x31, 0x22, 0x63, 0x4C, 0x35, 0x2E, + 0xB7, 0xBB, 0xFD, 0x68, 0x54, 0xED, 0xB6, 0xB5, 0x92, 0xBA, 0x2A, 0x0B, + 0x8A, 0x71, 0x55, 0x16, 0x56, 0x9B, 0xA6, 0xED, 0x9B, 0x5E, 0x36, 0xBD, + 0x12, 0x5C, 0x50, 0xC6, 0xAD, 0xD1, 0xB3, 0xD9, 0x58, 0x70, 0x96, 0xE7, + 0x99, 0x56, 0x3A, 0x99, 0x75, 0x65, 0x3F, 0x64, 0x99, 0x88, 0x10, 0x69, + 0xAD, 0xEA, 0x56, 0x3A, 0xE7, 0x8A, 0x9C, 0xC5, 0x18, 0x07, 0x29, 0xC7, + 0xD5, 0x68, 0x36, 0xAB, 0x50, 0xF0, 0x8C, 0x60, 0xC6, 0xD9, 0x20, 0xED, + 0xB4, 0x1C, 0xCF, 0xA6, 0xD5, 0x7A, 0xBF, 0x26, 0x31, 0x0A, 0x26, 0x08, + 0x45, 0x8B, 0x45, 0xB6, 0xDF, 0x77, 0xD5, 0xB8, 0x02, 0x11, 0x84, 0x80, + 0x8B, 0xA2, 0xF0, 0x11, 0x48, 0xE5, 0xAF, 0xEF, 0xB6, 0x01, 0xC4, 0xA3, + 0xC9, 0x64, 0x9C, 0x13, 0xE7, 0xD5, 0xFB, 0xEB, 0xCD, 0x78, 0x54, 0x94, + 0x05, 0x13, 0x9C, 0x31, 0x4A, 0xA7, 0x55, 0x51, 0xD7, 0x1D, 0x20, 0x31, + 0xCB, 0x59, 0xD7, 0x6B, 0x69, 0xA2, 0x76, 0xDC, 0xCB, 0xBB, 0xA1, 0x53, + 0xBB, 0xBA, 0x0F, 0x38, 0x9E, 0x3E, 0x39, 0xDD, 0xEE, 0xDA, 0xB6, 0x93, + 0x2C, 0xCB, 0x11, 0x26, 0x55, 0xC1, 0x26, 0x15, 0xAF, 0x72, 0x3E, 0xCE, + 0xB2, 0xEB, 0x77, 0xB7, 0x4D, 0xD3, 0x2F, 0x8F, 0xA6, 0xC7, 0x27, 0xF3, + 0xAB, 0xAB, 0xF5, 0xA0, 0xAC, 0xB6, 0xEE, 0xEE, 0x7A, 0x43, 0x10, 0xA9, + 0x07, 0xF5, 0xEC, 0xC9, 0x93, 0x46, 0x1A, 0xAB, 0x2D, 0x8C, 0x91, 0x50, + 0xFC, 0x8B, 0xCF, 0x3E, 0xB8, 0x5B, 0x6F, 0x09, 0x8C, 0x59, 0x96, 0xFF, + 0xF0, 0xF6, 0xBA, 0x28, 0x44, 0x96, 0xD1, 0xE3, 0xA3, 0xE9, 0x76, 0xDF, + 0x7A, 0xFF, 0xFF, 0xF1, 0xF4, 0x26, 0x4B, 0x97, 0x65, 0xE7, 0x79, 0xDE, + 0xEA, 0xD7, 0xDA, 0xFD, 0x3E, 0xFD, 0xDF, 0x66, 0xF3, 0x57, 0x56, 0x5F, + 0x60, 0x15, 0x08, 0x90, 0x94, 0x44, 0x5B, 0x94, 0xC2, 0x52, 0xC8, 0x23, + 0x47, 0x28, 0x3C, 0xD3, 0xC0, 0xE1, 0x91, 0x07, 0x1E, 0x38, 0x7C, 0x05, + 0xBE, 0x28, 0x0F, 0x1C, 0xF6, 0xC8, 0xA6, 0x1D, 0xA2, 0x25, 0x8B, 0x00, + 0x01, 0x02, 0x20, 0x50, 0xC8, 0xCA, 0xCA, 0xFC, 0xFB, 0xD3, 0x9F, 0xDD, + 0xAE, 0xBD, 0x57, 0xEF, 0x41, 0x32, 0x74, 0x0B, 0xDF, 0xF4, 0x7B, 0x9E, + 0xF7, 0xF9, 0xC7, 0x4F, 0xFF, 0x87, 0xBB, 0xED, 0x30, 0xBA, 0xA7, 0xCD, + 0xC1, 0x07, 0x7B, 0x36, 0x13, 0x21, 0xB0, 0x3F, 0xFF, 0xC9, 0x8D, 0x0B, + 0xFA, 0x97, 0x7F, 0xF8, 0x50, 0xB7, 0x43, 0xD3, 0x8C, 0x8C, 0xF2, 0x49, + 0x11, 0x47, 0x42, 0x04, 0x04, 0x07, 0xA5, 0x93, 0x38, 0x5E, 0xAD, 0xE6, + 0x46, 0xEB, 0xD5, 0x54, 0x78, 0xEF, 0x1E, 0xD7, 0x6B, 0x11, 0x25, 0xDE, + 0x81, 0xB6, 0xEB, 0x02, 0x84, 0x5D, 0x3F, 0x36, 0xED, 0x40, 0x08, 0x0D, + 0x3E, 0x10, 0x4A, 0x83, 0x07, 0x21, 0x00, 0xC6, 0xF0, 0xA4, 0xC8, 0x63, + 0x4E, 0xF7, 0x87, 0x9D, 0x07, 0x7A, 0x36, 0x9B, 0x28, 0x63, 0xBD, 0x81, + 0x3C, 0x66, 0x49, 0x19, 0x7B, 0xE3, 0x59, 0x00, 0x00, 0x40, 0xA3, 0x4C, + 0x2C, 0x18, 0xA1, 0x88, 0x61, 0xD4, 0x76, 0xB2, 0xAA, 0x07, 0x42, 0x05, + 0xA1, 0xD8, 0x38, 0x75, 0x3C, 0x1D, 0xD2, 0x38, 0xEB, 0x8C, 0x66, 0x9C, + 0x21, 0x02, 0xCB, 0x2C, 0x5E, 0x95, 0xF9, 0xE5, 0xD9, 0x52, 0x6A, 0xF5, + 0xF8, 0xB4, 0x4F, 0xB2, 0x58, 0x2B, 0x35, 0x6A, 0x95, 0x16, 0x59, 0x70, + 0x2E, 0x63, 0x7C, 0x56, 0x2E, 0xD5, 0xA0, 0xAD, 0xB3, 0xBD, 0x1C, 0x4E, + 0x4D, 0x9B, 0x08, 0xA6, 0xF5, 0x78, 0xA8, 0xAA, 0xB2, 0x9C, 0x8D, 0xE3, + 0xB8, 0xD9, 0xEC, 0xE3, 0x38, 0x8D, 0x39, 0x3B, 0xB4, 0xC7, 0x00, 0xF8, + 0xA1, 0x0E, 0xA3, 0xB6, 0xAB, 0x59, 0x96, 0x27, 0xE2, 0xC3, 0xED, 0x13, + 0x40, 0x20, 0x89, 0x05, 0x46, 0x78, 0x3E, 0x2F, 0xB3, 0x2C, 0xD1, 0x1A, + 0x38, 0x07, 0x46, 0x0B, 0xD7, 0x95, 0xC7, 0x98, 0x29, 0x07, 0x94, 0xB1, + 0x10, 0x40, 0xEB, 0x5C, 0x16, 0x73, 0x08, 0xB1, 0xF5, 0xC1, 0xAA, 0xCE, + 0x38, 0x60, 0x02, 0x29, 0x33, 0x11, 0x27, 0x49, 0x92, 0x17, 0x84, 0x92, + 0xC3, 0xE1, 0x78, 0x38, 0xD4, 0xC6, 0x98, 0x44, 0xD0, 0x76, 0xD0, 0xE6, + 0x63, 0x87, 0xE6, 0x63, 0x2A, 0xE5, 0x23, 0xA0, 0x06, 0x01, 0x25, 0x84, + 0x10, 0xA4, 0x94, 0x71, 0xE1, 0x1F, 0xFB, 0x71, 0x94, 0x52, 0xC1, 0x79, + 0x00, 0x80, 0x60, 0xFC, 0x9F, 0x47, 0x07, 0xFE, 0xF3, 0xA6, 0x53, 0x00, + 0x00, 0x05, 0x47, 0x08, 0x2E, 0xB9, 0x22, 0x24, 0x00, 0x0F, 0x32, 0xE6, + 0x03, 0x50, 0xAD, 0x16, 0xBD, 0x89, 0x61, 0x40, 0xBD, 0xD4, 0x1E, 0x00, + 0xED, 0x5C, 0xC4, 0xC0, 0x34, 0xFD, 0x38, 0xCF, 0x0B, 0x01, 0x80, 0xBD, + 0x02, 0xCD, 0x80, 0x31, 0x26, 0x79, 0x9E, 0x20, 0x08, 0x3E, 0x4A, 0x44, + 0xD6, 0x58, 0xC6, 0x89, 0x10, 0x02, 0x42, 0xE4, 0x9D, 0xA3, 0x8C, 0x5A, + 0x6B, 0x3F, 0xA2, 0xC8, 0xDE, 0x79, 0x88, 0x90, 0xB1, 0x1F, 0xB7, 0x91, + 0xB1, 0x77, 0xDE, 0xBB, 0x8F, 0x56, 0x86, 0x73, 0xCE, 0x0D, 0x83, 0x56, + 0xA3, 0x4E, 0x12, 0x11, 0xC7, 0x0C, 0x06, 0xAB, 0x6D, 0x80, 0x88, 0x76, + 0x9D, 0xC4, 0x08, 0xE1, 0x3F, 0xF9, 0xE6, 0xF3, 0x80, 0x80, 0xF5, 0xE6, + 0x62, 0x31, 0xA9, 0x4E, 0x87, 0xA6, 0x6B, 0xDA, 0xBA, 0x15, 0x49, 0xDC, + 0xFB, 0xA0, 0x8D, 0x31, 0xD0, 0x31, 0xCE, 0x66, 0x65, 0xF1, 0x72, 0x95, + 0x08, 0x4A, 0x56, 0xCB, 0x45, 0x1C, 0x89, 0xBC, 0x48, 0x85, 0x10, 0xC1, + 0xFB, 0xC3, 0xFE, 0x44, 0x39, 0x27, 0x14, 0x22, 0x8C, 0x8B, 0x9C, 0x67, + 0x99, 0xA8, 0x9B, 0x81, 0x61, 0x20, 0x04, 0xC9, 0xF2, 0x54, 0x30, 0x64, + 0x9C, 0x1B, 0x94, 0x21, 0x88, 0xAC, 0x37, 0xC7, 0xCD, 0xBE, 0x09, 0x00, + 0x24, 0x49, 0x34, 0xC8, 0x71, 0x39, 0xCB, 0x2E, 0xCE, 0x16, 0x67, 0xB3, + 0x72, 0x5A, 0xA4, 0x9F, 0xBE, 0xB8, 0x7C, 0x71, 0xB6, 0x6C, 0xDA, 0xE1, + 0x79, 0x7B, 0xEC, 0x7A, 0x69, 0xAD, 0xC9, 0x53, 0x1A, 0x80, 0xA9, 0xDB, + 0x36, 0x8A, 0x99, 0xB1, 0xEE, 0xDD, 0xFB, 0x67, 0x1F, 0xA0, 0x0D, 0xA1, + 0x1F, 0x14, 0x22, 0x68, 0x73, 0xD8, 0x54, 0x5D, 0x73, 0x7E, 0x36, 0x7D, + 0xF3, 0xFA, 0x22, 0xCF, 0xD9, 0x34, 0x8F, 0x39, 0xA7, 0x51, 0xCC, 0x38, + 0xA3, 0x5A, 0xE9, 0xE0, 0x5D, 0x96, 0x45, 0x79, 0x16, 0x29, 0x35, 0x08, + 0xCE, 0x3E, 0xBF, 0xB9, 0x2A, 0xB3, 0x24, 0x00, 0xD0, 0xC9, 0xEE, 0x50, + 0x57, 0x01, 0xC1, 0xD7, 0x57, 0x0B, 0xCE, 0x89, 0x52, 0x4E, 0x69, 0xAD, + 0x9D, 0xC3, 0x04, 0x63, 0x82, 0xEA, 0xB6, 0x8A, 0x22, 0x11, 0x20, 0x7D, + 0xF7, 0xE1, 0x01, 0xA0, 0x40, 0x31, 0x44, 0x04, 0x6D, 0xB6, 0x07, 0x29, + 0xA5, 0x31, 0x16, 0x20, 0xB4, 0xDF, 0xD7, 0x87, 0x63, 0x0B, 0x60, 0x38, + 0x35, 0xAD, 0x1C, 0xF4, 0xA9, 0x6A, 0x21, 0x04, 0x8B, 0xE5, 0xDC, 0x07, + 0x28, 0xA5, 0xE9, 0x87, 0x91, 0x12, 0xC8, 0x30, 0x56, 0x83, 0x12, 0x9C, + 0x3D, 0xEF, 0xAB, 0xE7, 0x7D, 0x15, 0x31, 0x0E, 0x01, 0x50, 0xDA, 0xC8, + 0x61, 0xD4, 0xDA, 0xAD, 0xD7, 0xC7, 0x88, 0xF3, 0xAE, 0x97, 0xC3, 0xA8, + 0xD4, 0xA8, 0xD7, 0xDB, 0x83, 0x31, 0x96, 0x32, 0xB6, 0xDD, 0x1F, 0xA7, + 0x65, 0x3C, 0x9D, 0x24, 0x75, 0xDD, 0x6D, 0xF6, 0x55, 0x00, 0xA1, 0xAE, + 0xDB, 0xD3, 0xA9, 0x19, 0x47, 0x43, 0x19, 0xC9, 0xF3, 0x98, 0x52, 0xE2, + 0xAD, 0x1B, 0xC6, 0x31, 0x89, 0x39, 0xE7, 0x10, 0x61, 0x40, 0x31, 0xC0, + 0x18, 0xB6, 0x8D, 0x9C, 0xE4, 0xE9, 0xD9, 0x6C, 0x8A, 0x00, 0xD9, 0x1E, + 0x3A, 0x1E, 0x47, 0x83, 0x32, 0x71, 0xC4, 0x66, 0x65, 0xBC, 0xDB, 0xAD, + 0x27, 0x79, 0x92, 0xA4, 0x45, 0x1C, 0xA5, 0x69, 0x1E, 0x07, 0x04, 0x86, + 0x71, 0x44, 0x14, 0x42, 0x02, 0x03, 0x85, 0xD6, 0x1B, 0x08, 0x5C, 0x26, + 0xF0, 0x74, 0xBE, 0xEA, 0x5B, 0xD0, 0x1C, 0x76, 0xBB, 0x43, 0x63, 0x3C, + 0x28, 0xF3, 0xC2, 0x07, 0xDF, 0x0F, 0xA3, 0xF7, 0xC0, 0x59, 0xA3, 0xB5, + 0xD1, 0x72, 0x7C, 0x73, 0xB1, 0x88, 0x63, 0x71, 0x6C, 0x46, 0x11, 0x45, + 0xE7, 0xCB, 0x22, 0x2F, 0xA2, 0xEA, 0xD4, 0x34, 0xA7, 0x2E, 0x8E, 0xC4, + 0xDD, 0x87, 0xCD, 0xC7, 0x12, 0x0C, 0x23, 0x70, 0xB5, 0x98, 0xFC, 0xFE, + 0x87, 0xDB, 0xF3, 0x45, 0x5E, 0xA4, 0xA1, 0x48, 0xA9, 0xD2, 0xEA, 0xED, + 0xFB, 0xC7, 0x2F, 0xDE, 0xBC, 0xEA, 0x07, 0xFB, 0xE1, 0x61, 0x33, 0xCD, + 0xA3, 0xAE, 0x97, 0xA7, 0xB6, 0xAF, 0x5A, 0x59, 0x77, 0x83, 0xF5, 0xF0, + 0xD4, 0x0C, 0x93, 0x32, 0x7B, 0xF7, 0xE3, 0x8F, 0xC7, 0xAA, 0xC9, 0x92, + 0x08, 0x23, 0xBF, 0xD9, 0xB7, 0x45, 0x11, 0x3F, 0xAE, 0xF7, 0xFD, 0xA8, + 0x6C, 0xF0, 0x1F, 0xEE, 0xD6, 0xC7, 0xBA, 0x9D, 0x4E, 0xA6, 0x52, 0x8E, + 0x55, 0xDD, 0x61, 0x4C, 0x20, 0xC0, 0x75, 0xD3, 0x8D, 0xC3, 0x70, 0xAC, + 0xBA, 0xDF, 0xBE, 0xBD, 0x3F, 0xB6, 0xA3, 0x76, 0x00, 0x01, 0xA8, 0x8C, + 0x97, 0xA3, 0x1E, 0x95, 0x81, 0x18, 0x13, 0x4C, 0x3E, 0x36, 0x99, 0xE2, + 0x28, 0xC2, 0x84, 0xF8, 0x10, 0xBA, 0xAE, 0xC3, 0x84, 0xA6, 0x91, 0xB8, + 0x79, 0x75, 0x9E, 0xA4, 0x3C, 0x8D, 0x85, 0xB1, 0xC1, 0x5A, 0x57, 0x57, + 0x7D, 0xDD, 0x0C, 0xDB, 0x5D, 0x3D, 0x2A, 0x03, 0x21, 0xD1, 0x06, 0xC4, + 0x51, 0xC4, 0x38, 0x9B, 0x94, 0x79, 0xC4, 0x45, 0x92, 0x88, 0x8F, 0x32, + 0x50, 0x22, 0xA8, 0x56, 0xC3, 0xA8, 0xC6, 0x32, 0xCD, 0xE6, 0x79, 0x66, + 0x47, 0x07, 0x01, 0x7D, 0x78, 0xDA, 0xDF, 0xDE, 0x6D, 0xDF, 0xBE, 0x7D, + 0x7C, 0x5A, 0x57, 0x9B, 0x6D, 0xF3, 0xBC, 0x3E, 0xC8, 0x41, 0x13, 0x4C, + 0xE3, 0x34, 0xD2, 0x4E, 0x3F, 0x6D, 0xF7, 0x4F, 0x87, 0xE3, 0xC3, 0xF3, + 0x4E, 0x2B, 0xCF, 0x45, 0x3C, 0x2A, 0xA0, 0x34, 0xAC, 0x9B, 0x31, 0x80, + 0xD0, 0x74, 0xB2, 0xC8, 0xA2, 0xE5, 0x7C, 0xBA, 0x9A, 0xCD, 0x1E, 0x37, + 0xFB, 0x34, 0x4B, 0x8E, 0x55, 0xDD, 0x76, 0xB2, 0xE9, 0x3B, 0xA9, 0x07, + 0x00, 0xBD, 0x1A, 0xAD, 0x36, 0x6E, 0xBD, 0x3D, 0x3E, 0xAF, 0xB7, 0x75, + 0x5D, 0x6D, 0x77, 0xBB, 0x3C, 0x86, 0xAF, 0x57, 0xE2, 0x7A, 0x9E, 0xCC, + 0x8A, 0x28, 0x8B, 0xA0, 0x20, 0x36, 0x63, 0x7D, 0x91, 0x38, 0x4A, 0x8C, + 0x20, 0x88, 0x04, 0x5D, 0xA4, 0x29, 0xC2, 0x54, 0x10, 0x20, 0xE5, 0xD0, + 0xB4, 0x7D, 0x70, 0xD6, 0x2A, 0xAD, 0x95, 0xF6, 0x21, 0x20, 0x04, 0xEB, + 0x41, 0x79, 0xEF, 0x39, 0xA5, 0x18, 0x42, 0x4A, 0x08, 0xC5, 0x88, 0x52, + 0x22, 0x28, 0xA5, 0x04, 0x07, 0x1F, 0xDC, 0x3F, 0x36, 0xB4, 0x7C, 0x00, + 0x30, 0x12, 0x82, 0x62, 0xFC, 0x31, 0xD3, 0xFB, 0xD1, 0x1B, 0x67, 0x94, + 0x7E, 0x44, 0x85, 0x29, 0x26, 0x11, 0x0E, 0xDA, 0xFA, 0x65, 0x6C, 0x63, + 0xFB, 0xDC, 0xD5, 0x1B, 0xE2, 0xE5, 0xA9, 0x3E, 0xAC, 0xB7, 0x3B, 0x37, + 0x36, 0x45, 0x0A, 0x38, 0x26, 0x00, 0x50, 0x88, 0x91, 0x73, 0x6E, 0xC9, + 0x5B, 0xB9, 0x7B, 0x7F, 0xDC, 0x3F, 0x3B, 0x53, 0xC9, 0xFE, 0x40, 0x42, + 0x1F, 0x0B, 0x06, 0x49, 0xDC, 0xF5, 0xC3, 0xC7, 0xD0, 0x17, 0x0C, 0x9A, + 0xA0, 0x10, 0x02, 0x34, 0x46, 0x07, 0x48, 0x30, 0x21, 0x3E, 0x00, 0x8C, + 0xA0, 0x36, 0xCE, 0x18, 0xF3, 0x91, 0xEC, 0x1F, 0x95, 0x82, 0xFF, 0xB8, + 0x85, 0x62, 0xAD, 0x36, 0x10, 0x04, 0x84, 0x21, 0x67, 0x1C, 0x13, 0x98, + 0xA6, 0x09, 0x41, 0x3E, 0x78, 0x03, 0x20, 0x87, 0x08, 0x7F, 0xE4, 0x53, + 0x84, 0xE0, 0xF0, 0x7F, 0xF8, 0xEF, 0xFE, 0x5B, 0xE5, 0x8D, 0x52, 0xC3, + 0x24, 0x8B, 0x47, 0x25, 0x47, 0x63, 0x01, 0xC0, 0xBD, 0xF6, 0xEB, 0xFD, + 0x71, 0x31, 0x9B, 0x86, 0xE0, 0x09, 0xC6, 0x99, 0x38, 0x63, 0xAE, 0xE5, + 0x04, 0xDA, 0xE0, 0x21, 0x05, 0x52, 0x39, 0x6D, 0x6D, 0xC4, 0x99, 0x1E, + 0xC7, 0xFB, 0xA7, 0xDD, 0x6C, 0x9A, 0x47, 0x82, 0x61, 0xE8, 0x29, 0xA3, + 0x20, 0x20, 0x35, 0x1A, 0x44, 0x10, 0x44, 0x50, 0xCA, 0x0E, 0x42, 0x22, + 0x84, 0x30, 0xD6, 0x57, 0x75, 0x0B, 0x20, 0x40, 0xD0, 0x77, 0xFD, 0x98, + 0x25, 0x62, 0x3E, 0x9B, 0xCC, 0xF2, 0x92, 0x40, 0xE2, 0xAC, 0x33, 0xC6, + 0x37, 0xED, 0x50, 0x77, 0x7D, 0x08, 0xFE, 0x6C, 0x35, 0x59, 0x2E, 0x52, + 0x1F, 0x3C, 0x20, 0x1F, 0x61, 0x44, 0x68, 0x6D, 0xF0, 0x21, 0xEC, 0x76, + 0xDD, 0xFE, 0xD8, 0x45, 0x31, 0x8F, 0x22, 0xDF, 0xB5, 0x1B, 0x84, 0xD8, + 0xCB, 0x8B, 0xCB, 0x24, 0x4E, 0x76, 0xFB, 0xE3, 0x20, 0xA5, 0x31, 0x76, + 0x3A, 0x9F, 0xF4, 0xBD, 0x9C, 0x97, 0xF9, 0x72, 0x31, 0x35, 0xDA, 0x20, + 0x4C, 0xBC, 0x07, 0x83, 0x1C, 0xD5, 0xA8, 0x37, 0xBB, 0x63, 0xD3, 0xB4, + 0xBB, 0xBA, 0xE1, 0x22, 0x9D, 0xCF, 0x26, 0x7D, 0xDF, 0x63, 0x84, 0x05, + 0xE7, 0x00, 0x06, 0x6B, 0x83, 0xB5, 0xCA, 0xD8, 0x71, 0x34, 0xA3, 0x1C, + 0x4C, 0x2B, 0xFD, 0xF3, 0xE6, 0xD4, 0xB6, 0xCD, 0x24, 0x4F, 0x30, 0x82, + 0x93, 0x32, 0xD9, 0x9F, 0xBA, 0x38, 0x12, 0x4A, 0x6B, 0x6D, 0xA0, 0x52, + 0x2A, 0x89, 0x28, 0x8F, 0x84, 0x73, 0xBE, 0xEB, 0xDB, 0x24, 0x89, 0xB2, + 0x38, 0x36, 0xD6, 0x31, 0x4E, 0x5E, 0x5D, 0xCD, 0xBE, 0xBA, 0xB9, 0x2C, + 0xB3, 0x54, 0x8E, 0x36, 0xCB, 0xB2, 0xBF, 0xFD, 0xD5, 0xF7, 0xFF, 0xEF, + 0x2F, 0xFF, 0x58, 0xE6, 0x99, 0xEC, 0x3A, 0xCE, 0x71, 0x59, 0x64, 0x67, + 0xCB, 0xD2, 0x07, 0x03, 0x3C, 0x22, 0x94, 0x6C, 0xF6, 0xD5, 0xFB, 0xDB, + 0xCD, 0xAC, 0x2C, 0x8B, 0x32, 0xFE, 0xE6, 0xEB, 0xEB, 0xFD, 0xFE, 0xF4, + 0xC9, 0xEB, 0x15, 0x46, 0x64, 0x7B, 0xE8, 0x5C, 0xF0, 0x83, 0x1C, 0x9D, + 0xF1, 0x08, 0xC1, 0xE3, 0xB1, 0x93, 0xFD, 0x38, 0x9D, 0xA4, 0x2C, 0xE2, + 0x4D, 0xDB, 0x51, 0xCC, 0xCE, 0x57, 0xB3, 0x58, 0x90, 0xAE, 0x6B, 0x04, + 0xA3, 0xAF, 0x5F, 0x5E, 0xE7, 0x91, 0x18, 0x07, 0xA9, 0x94, 0x69, 0x3B, + 0x87, 0x18, 0x6F, 0x47, 0x23, 0x47, 0x17, 0xC7, 0x8C, 0x11, 0xD3, 0xF7, + 0x43, 0x99, 0xAF, 0xAA, 0xBA, 0x7B, 0x77, 0x7B, 0xCF, 0x39, 0x2C, 0x4A, + 0x36, 0x9B, 0xA7, 0x08, 0x84, 0xFB, 0xDB, 0x0D, 0x0E, 0xE0, 0x9B, 0x2F, + 0x5F, 0x72, 0x46, 0xA1, 0x83, 0x12, 0x2D, 0x7E, 0xFB, 0xF7, 0xFF, 0x00, + 0xBD, 0xD2, 0x7A, 0xA8, 0x3B, 0xD9, 0x49, 0x95, 0xC4, 0xBC, 0x57, 0x03, + 0x22, 0x98, 0x73, 0xE6, 0x82, 0xFF, 0xF4, 0xD5, 0xD5, 0x3C, 0x9B, 0xFC, + 0x70, 0xBB, 0xA6, 0x11, 0x9E, 0xCE, 0xB2, 0x69, 0xCE, 0x13, 0x41, 0xAA, + 0xC3, 0xDE, 0xE8, 0x90, 0xC4, 0xF9, 0x20, 0xC7, 0x38, 0xE1, 0xDE, 0xD9, + 0x3C, 0x8F, 0x9D, 0x0E, 0x52, 0x5B, 0xA5, 0xDA, 0x61, 0xEC, 0x23, 0x11, + 0xBB, 0x00, 0xD3, 0x74, 0xB9, 0xDD, 0x56, 0xFD, 0xA0, 0x39, 0x23, 0x89, + 0x20, 0x84, 0xF1, 0xA7, 0x43, 0xD5, 0xCB, 0xE1, 0xF5, 0xD5, 0x4A, 0xD9, + 0xF0, 0xB8, 0x3E, 0x4E, 0xF2, 0x38, 0x4D, 0xE8, 0x87, 0x0F, 0x4F, 0x7D, + 0x2B, 0xCF, 0x96, 0xD9, 0xF9, 0xE5, 0xA2, 0xCC, 0xE3, 0xCD, 0xB6, 0x56, + 0x4A, 0xBF, 0xBD, 0x7B, 0xFE, 0xE3, 0xED, 0x61, 0x90, 0xB2, 0xCC, 0xF3, + 0x4F, 0x5E, 0x5E, 0xFC, 0xE1, 0xED, 0x8F, 0x82, 0x8B, 0x57, 0xD7, 0x97, + 0x6D, 0xDB, 0xBC, 0xBA, 0xBE, 0xE8, 0x07, 0x59, 0xF5, 0x5D, 0x9A, 0x24, + 0x04, 0xC1, 0x51, 0x0E, 0x69, 0x96, 0x9F, 0xAA, 0x7A, 0x18, 0xC7, 0x28, + 0x89, 0xBC, 0x0F, 0x82, 0x73, 0x08, 0xA0, 0x35, 0x56, 0x44, 0x62, 0x18, + 0x47, 0x4A, 0x70, 0x99, 0x67, 0xC0, 0xFB, 0x2C, 0x15, 0x01, 0xFA, 0x3F, + 0xBC, 0xBD, 0x3F, 0x5B, 0x4D, 0xE7, 0x93, 0xAC, 0x28, 0xF3, 0xB6, 0x92, + 0xC1, 0x78, 0x67, 0xB5, 0xB6, 0x61, 0x32, 0x99, 0xDD, 0x3E, 0x6E, 0x11, + 0x41, 0x8C, 0xA1, 0x58, 0x50, 0xA5, 0xF4, 0xEE, 0x70, 0xFA, 0xEC, 0xF3, + 0xAB, 0x2C, 0x13, 0xCE, 0x58, 0x0A, 0xB1, 0x56, 0x76, 0xB3, 0x3E, 0xF5, + 0xA3, 0x25, 0x94, 0xE9, 0x41, 0x21, 0x14, 0xEE, 0x9E, 0x9E, 0x3D, 0x46, + 0x84, 0xA0, 0x9F, 0xFD, 0xEC, 0x53, 0xCE, 0xB9, 0xA0, 0xCC, 0x58, 0xD7, + 0xF7, 0x63, 0x91, 0x27, 0x84, 0x11, 0x6B, 0x1D, 0x08, 0x10, 0x23, 0xE4, + 0x03, 0x50, 0x83, 0x3A, 0x9D, 0xDA, 0xAA, 0x92, 0x9C, 0xB1, 0xCF, 0x3E, + 0x39, 0x4F, 0xD3, 0x28, 0x78, 0x2F, 0xC7, 0x51, 0x19, 0x1D, 0x02, 0xDA, + 0x1E, 0xAA, 0xA6, 0xED, 0x8A, 0x49, 0xEE, 0x3C, 0x90, 0xF5, 0xF0, 0xFA, + 0xFA, 0xBC, 0x69, 0xDA, 0xAE, 0x6B, 0xE3, 0x58, 0xB4, 0xED, 0x48, 0x48, + 0x38, 0x5B, 0x64, 0x2F, 0xAF, 0xAE, 0x3A, 0x39, 0x4A, 0xE5, 0xB4, 0x0D, + 0xBF, 0xFE, 0xDD, 0xF7, 0xC3, 0x68, 0xFA, 0xB1, 0xBF, 0xBA, 0xBC, 0x7C, + 0xF5, 0xE2, 0x6B, 0xC1, 0xE2, 0x3C, 0x21, 0x52, 0x8E, 0x00, 0xD1, 0x38, + 0xCB, 0x29, 0x41, 0xBD, 0xD4, 0x0F, 0xBB, 0xAE, 0x6D, 0xBB, 0x56, 0x0E, + 0x0A, 0x30, 0x8C, 0x49, 0x44, 0x7C, 0x16, 0xC7, 0xDA, 0x58, 0x8A, 0xA0, + 0x10, 0x54, 0x1B, 0x0B, 0x11, 0x62, 0x8C, 0x1D, 0x1A, 0xB9, 0xAD, 0x3A, + 0x6D, 0x5D, 0x1E, 0x8B, 0x00, 0xE0, 0xC7, 0xA9, 0x45, 0xEF, 0x1C, 0xC4, + 0x84, 0x52, 0xE2, 0x3D, 0x30, 0x6A, 0x5C, 0x4C, 0x32, 0x4E, 0xD0, 0x38, + 0x0E, 0x08, 0xB9, 0x05, 0xEF, 0x7F, 0xF3, 0xBB, 0x5F, 0x2B, 0xE3, 0xF3, + 0x2C, 0x01, 0x08, 0x0C, 0xDA, 0x12, 0x4C, 0x21, 0x08, 0xD6, 0xD9, 0xE5, + 0xF9, 0x37, 0x1E, 0xA5, 0x2C, 0x48, 0x33, 0x1C, 0x1F, 0x1E, 0xEE, 0x94, + 0x73, 0x8B, 0xB3, 0xF2, 0x70, 0xAC, 0x19, 0x25, 0xD3, 0x32, 0x8B, 0xF2, + 0xAB, 0x6C, 0xF2, 0x7A, 0xD4, 0x1A, 0x43, 0xDF, 0x1C, 0x1F, 0x09, 0xCF, + 0x18, 0xF6, 0x45, 0x12, 0x46, 0x1B, 0x9C, 0x77, 0x30, 0x00, 0x4A, 0x79, + 0x3D, 0xD0, 0x46, 0x9A, 0x58, 0xB0, 0x51, 0x1B, 0xE7, 0x3D, 0x25, 0x14, + 0xF8, 0x40, 0x31, 0x54, 0xDA, 0xE6, 0x69, 0x64, 0x8C, 0x8E, 0x38, 0x81, + 0x98, 0x6A, 0x07, 0xED, 0x50, 0x19, 0x3B, 0x7A, 0x94, 0x32, 0x4A, 0x80, + 0x0F, 0x52, 0x9B, 0x28, 0x8A, 0xE0, 0xBF, 0xFD, 0xB7, 0xFF, 0xA6, 0xED, + 0x07, 0x04, 0xBD, 0x35, 0x23, 0x61, 0xF4, 0xC3, 0xFD, 0x73, 0x08, 0x80, + 0x31, 0xDE, 0x77, 0x5D, 0x14, 0xC7, 0x09, 0x67, 0x11, 0x67, 0x71, 0x7A, + 0x2E, 0x90, 0x62, 0x0C, 0x41, 0x10, 0x10, 0x25, 0x9D, 0xD4, 0x1E, 0xF8, + 0x2C, 0x89, 0xCE, 0xE7, 0x65, 0xC4, 0x89, 0x37, 0x61, 0x1C, 0x0D, 0xA5, + 0x08, 0x04, 0xF7, 0xE1, 0x6E, 0xC7, 0x38, 0x17, 0x82, 0x64, 0x69, 0x2C, + 0x07, 0x67, 0x9D, 0xC5, 0x08, 0x6A, 0xE7, 0x06, 0xA9, 0x8C, 0xB7, 0xCE, + 0x99, 0xA2, 0xC8, 0x9A, 0xAE, 0x4D, 0x85, 0xD8, 0xEC, 0x8E, 0x45, 0x9C, + 0x2E, 0xCA, 0x12, 0x11, 0x1A, 0x09, 0xF1, 0xC3, 0xFB, 0x87, 0xB2, 0x48, + 0x16, 0xF3, 0x6C, 0x90, 0xA3, 0x76, 0x76, 0x18, 0x75, 0x2F, 0x47, 0x00, + 0x91, 0x75, 0x7E, 0xB5, 0x28, 0x39, 0xA7, 0x5A, 0xF9, 0x0F, 0xF7, 0x7B, + 0xA5, 0x0D, 0x02, 0xA3, 0x1A, 0x87, 0x2C, 0xCF, 0x39, 0x67, 0x59, 0x12, + 0x89, 0x88, 0x00, 0x08, 0xE7, 0xAB, 0xB9, 0x51, 0x9A, 0x53, 0x0C, 0x03, + 0x30, 0xCE, 0x0F, 0x83, 0x72, 0xC6, 0x23, 0x8C, 0x38, 0x44, 0x93, 0x22, + 0x35, 0x56, 0x0F, 0x63, 0xD8, 0x9F, 0x7A, 0x08, 0x11, 0x8F, 0xC8, 0x74, + 0x99, 0x69, 0xA3, 0xA8, 0xA0, 0x9C, 0xF1, 0xF5, 0xE3, 0x6E, 0x50, 0xF2, + 0xF9, 0x79, 0x57, 0xD7, 0xBD, 0xB6, 0x76, 0x77, 0x18, 0x4E, 0xA7, 0x7E, + 0x39, 0x2F, 0xCE, 0x26, 0x31, 0xC2, 0xFE, 0x0F, 0x3F, 0x3E, 0x43, 0x84, + 0x94, 0x32, 0x94, 0x90, 0x34, 0x89, 0xB6, 0xFB, 0x26, 0xCB, 0x13, 0x35, + 0x2A, 0x84, 0x01, 0x65, 0x84, 0x22, 0xCA, 0x44, 0xF4, 0xF3, 0x9F, 0xBC, + 0xFE, 0xF6, 0xD3, 0x2B, 0x6D, 0x5D, 0xD3, 0x0F, 0xA3, 0xF1, 0x18, 0x63, + 0x04, 0x11, 0xA6, 0x28, 0x4F, 0x44, 0x77, 0x38, 0x06, 0x67, 0xA3, 0x38, + 0x3E, 0x36, 0x15, 0xC2, 0x10, 0x04, 0xC8, 0x04, 0x77, 0xDE, 0xEF, 0xD6, + 0xD5, 0x72, 0x39, 0x3D, 0x3F, 0x9F, 0x75, 0xAD, 0xD4, 0xCE, 0x4A, 0xA9, + 0xBB, 0x6E, 0x0C, 0x00, 0x88, 0x48, 0x20, 0x08, 0x97, 0x8B, 0x3C, 0x4B, + 0xC5, 0xA8, 0x4C, 0x55, 0xC9, 0xDD, 0xB1, 0x76, 0x2E, 0x18, 0xE7, 0x0F, + 0x4D, 0xB7, 0x9C, 0xCD, 0x31, 0x70, 0x0C, 0x81, 0x44, 0xF0, 0x17, 0x97, + 0x67, 0x79, 0xC4, 0x87, 0x41, 0x05, 0x1F, 0x08, 0x66, 0x84, 0xB1, 0x5E, + 0x8E, 0xB5, 0x54, 0x00, 0x82, 0xB3, 0x55, 0x01, 0x10, 0x7B, 0xDE, 0x54, + 0xEB, 0xCD, 0xF3, 0xDD, 0xDD, 0xE3, 0xE7, 0x6F, 0xCE, 0x31, 0x42, 0xDB, + 0xFD, 0xE9, 0x69, 0xB3, 0x07, 0x16, 0xBE, 0x7E, 0x71, 0x7E, 0xBE, 0x9A, + 0x55, 0x95, 0x44, 0x54, 0xC0, 0xE2, 0xEA, 0x6F, 0xFE, 0xFA, 0xFF, 0x18, + 0xC6, 0x61, 0x18, 0x95, 0x1C, 0x86, 0x7E, 0x18, 0x63, 0xCE, 0x13, 0xC1, + 0x85, 0x60, 0x75, 0xDB, 0xBD, 0x7A, 0xB9, 0xFA, 0xC9, 0x97, 0x5F, 0x10, + 0x2C, 0x3E, 0x3C, 0x6C, 0x10, 0x06, 0x10, 0xF8, 0xBC, 0x4C, 0xE6, 0x93, + 0x48, 0x10, 0x40, 0x39, 0x62, 0x3C, 0xEE, 0x8E, 0xBD, 0xB1, 0x0A, 0x01, + 0x47, 0x18, 0x6D, 0x6B, 0x19, 0x67, 0x02, 0x78, 0x9F, 0xA4, 0x59, 0x1A, + 0x73, 0x00, 0xE9, 0xED, 0xDD, 0xEE, 0xFE, 0xEE, 0x99, 0x47, 0x11, 0xA3, + 0x78, 0x31, 0x2B, 0xA7, 0xCB, 0xE5, 0xFF, 0xF3, 0x9F, 0x7E, 0xF3, 0x93, + 0xCF, 0x6F, 0xF4, 0xA8, 0x4E, 0xBD, 0xC6, 0x18, 0x9D, 0x4E, 0xD5, 0xA4, + 0xCC, 0x38, 0x85, 0x20, 0xD8, 0xBC, 0xC8, 0x7A, 0x39, 0xA6, 0x89, 0x40, + 0x00, 0x1C, 0xF7, 0xB5, 0x23, 0xEC, 0x3F, 0xFC, 0xDD, 0xEF, 0x8D, 0x75, + 0xB2, 0x1F, 0x97, 0xB3, 0x62, 0xB3, 0x3F, 0x71, 0x4A, 0x62, 0x21, 0xBC, + 0xB3, 0xDF, 0x7C, 0xF1, 0x29, 0xC2, 0x68, 0xBD, 0x3F, 0xCA, 0x61, 0xC8, + 0xB3, 0x58, 0x76, 0x12, 0x20, 0x32, 0x8C, 0x43, 0x1C, 0x89, 0x71, 0x1C, + 0x99, 0x10, 0x9C, 0x52, 0x3D, 0xEA, 0x61, 0x1C, 0x93, 0x24, 0x06, 0x10, + 0x02, 0x10, 0x9C, 0xB5, 0x91, 0xE0, 0x45, 0x96, 0x44, 0x82, 0x57, 0x4D, + 0xFF, 0xC7, 0xF7, 0xF7, 0xE7, 0x67, 0xB3, 0xC5, 0x24, 0xCF, 0x04, 0xDB, + 0x6D, 0x4E, 0x49, 0x12, 0x5D, 0x5E, 0xAC, 0x10, 0x66, 0xC6, 0x5A, 0x2E, + 0x68, 0x08, 0xD0, 0x78, 0x87, 0x60, 0xB8, 0xBB, 0x7F, 0x2E, 0xCB, 0x2C, + 0x89, 0x88, 0xD2, 0xCE, 0x59, 0x7B, 0xB1, 0x9A, 0xB4, 0x9D, 0xEC, 0xA4, + 0x8E, 0x05, 0x1B, 0x46, 0x73, 0xB1, 0x98, 0x3C, 0x3C, 0x6F, 0x44, 0xC4, + 0x10, 0x41, 0xD3, 0xD5, 0x44, 0x8F, 0xE6, 0x69, 0x7D, 0x34, 0xD6, 0xF7, + 0x83, 0x72, 0xD6, 0x15, 0x45, 0xE6, 0x21, 0xC8, 0xD3, 0x88, 0x53, 0x0A, + 0x21, 0x98, 0x4D, 0x53, 0xAD, 0xB5, 0xE9, 0xF4, 0xD0, 0x29, 0xA9, 0xBC, + 0xB6, 0xEA, 0x69, 0xBD, 0xA3, 0x14, 0x5F, 0x5F, 0x2E, 0xC6, 0xD1, 0x6C, + 0x0E, 0x95, 0x32, 0x16, 0x00, 0xAC, 0x4D, 0xC8, 0x12, 0x11, 0x45, 0xAC, + 0xA9, 0xFB, 0xF9, 0x24, 0x27, 0x18, 0x25, 0x11, 0xF7, 0xCE, 0x4C, 0xCA, + 0x14, 0x43, 0xD0, 0x0D, 0x46, 0xEB, 0xA1, 0x69, 0x1A, 0xE9, 0xE0, 0x74, + 0xB2, 0x18, 0x4C, 0x88, 0x23, 0xF2, 0xE2, 0x6C, 0x99, 0xC7, 0xC9, 0xB4, + 0xCC, 0x31, 0x62, 0x59, 0x9E, 0x01, 0x08, 0x46, 0xED, 0xAD, 0xB1, 0x45, + 0x91, 0xEF, 0x8E, 0xF5, 0xED, 0x87, 0x5B, 0x63, 0x41, 0xDD, 0x75, 0x08, + 0xE0, 0x97, 0xD7, 0x17, 0x45, 0xCA, 0x41, 0xF0, 0x79, 0x9E, 0xDC, 0x3F, + 0x1F, 0x31, 0x65, 0x87, 0xD6, 0x3E, 0x6E, 0x0E, 0xBB, 0x46, 0x05, 0xC4, + 0xCE, 0xA6, 0xF9, 0xB1, 0xE9, 0x3E, 0xE6, 0x54, 0x4F, 0xED, 0x18, 0x30, + 0x59, 0x4D, 0x53, 0x67, 0x6D, 0x44, 0xC2, 0x3C, 0x81, 0x8C, 0xD1, 0x34, + 0x42, 0x11, 0xB5, 0x3F, 0xFC, 0xF8, 0xE1, 0xFD, 0xC3, 0x6D, 0x91, 0x72, + 0xE7, 0x81, 0x09, 0xF8, 0xF9, 0xD0, 0xF8, 0x00, 0x9F, 0x37, 0x07, 0xAB, + 0xC7, 0x2F, 0x3E, 0xFB, 0xA2, 0x2C, 0xA6, 0xCF, 0xEB, 0x8D, 0xD6, 0x6E, + 0x18, 0x7A, 0x84, 0x01, 0xC6, 0x68, 0x34, 0x3A, 0x8A, 0x04, 0x84, 0x28, + 0xCB, 0xE2, 0xE5, 0xE2, 0x02, 0x89, 0x95, 0x53, 0x0D, 0x27, 0x8C, 0x53, + 0x63, 0xD5, 0x7A, 0xD4, 0xAA, 0x6E, 0x65, 0xDD, 0x0E, 0x08, 0x11, 0x00, + 0xA1, 0x88, 0x52, 0x11, 0x4D, 0x07, 0x30, 0x95, 0xCA, 0x25, 0x82, 0xC2, + 0x10, 0x38, 0x76, 0x49, 0x24, 0x66, 0x93, 0xE4, 0xE5, 0x12, 0x29, 0x47, + 0xA5, 0x94, 0x7F, 0xF8, 0xE1, 0x51, 0x6A, 0x5A, 0xC4, 0x16, 0xD2, 0x44, + 0x24, 0xF3, 0x5E, 0x0E, 0x75, 0x3B, 0x44, 0x51, 0x94, 0x46, 0x18, 0xFE, + 0xFC, 0xCF, 0xBF, 0x0B, 0x08, 0x75, 0x4D, 0x13, 0x51, 0x2A, 0x65, 0x27, + 0xE5, 0xB8, 0x9C, 0xCF, 0x23, 0xC1, 0x11, 0xC6, 0x56, 0x99, 0xB3, 0xC5, + 0x12, 0x63, 0x38, 0x5A, 0xBC, 0x9C, 0x26, 0x71, 0x44, 0x95, 0xD3, 0x7F, + 0xFC, 0x70, 0x8F, 0x09, 0xD5, 0x5A, 0x7E, 0x72, 0x7D, 0x99, 0xF2, 0x58, + 0x49, 0xA3, 0xAD, 0x3F, 0xD6, 0xBD, 0x10, 0xFC, 0x6C, 0x9E, 0xA7, 0x82, + 0x6A, 0x67, 0x05, 0xA7, 0xC6, 0xB8, 0xAA, 0x91, 0x75, 0xD3, 0xED, 0x4F, + 0xAD, 0xB5, 0xDE, 0x68, 0x7B, 0xAC, 0x4F, 0x3C, 0x22, 0xDA, 0x29, 0x84, + 0xE1, 0x2C, 0x4F, 0xA6, 0x93, 0xC9, 0x17, 0xAF, 0x5E, 0x7B, 0xFF, 0x51, + 0xE2, 0xB5, 0x00, 0x05, 0x11, 0x63, 0x6B, 0x7D, 0x7D, 0xEA, 0x8A, 0x22, + 0xB2, 0xC6, 0x40, 0x80, 0x9C, 0x0F, 0x75, 0x3D, 0x54, 0xD5, 0xE9, 0xEA, + 0x72, 0x9E, 0xE5, 0x93, 0x87, 0x75, 0xF5, 0xBC, 0x3E, 0x8E, 0xCA, 0x6E, + 0x77, 0xFB, 0xB3, 0x59, 0xF1, 0xF5, 0xD7, 0xAF, 0xE3, 0x9C, 0x4B, 0xA5, + 0xFB, 0xD1, 0x38, 0xEB, 0x77, 0x9B, 0x0A, 0x41, 0xA0, 0xB4, 0xF5, 0xCE, + 0xD6, 0x4D, 0xAB, 0x46, 0x53, 0x94, 0x79, 0x19, 0x47, 0xCB, 0x79, 0x91, + 0xA5, 0x11, 0x40, 0x60, 0x5E, 0x66, 0xD3, 0x49, 0xDA, 0xF6, 0x32, 0x4E, + 0xB9, 0xD4, 0xBA, 0xEE, 0x47, 0x17, 0x42, 0x00, 0xC8, 0x18, 0x57, 0xD5, + 0x75, 0xCA, 0x10, 0xF4, 0xAE, 0xEB, 0x47, 0x88, 0x70, 0x59, 0x64, 0x59, + 0xC4, 0x21, 0x44, 0x4D, 0x3B, 0xF4, 0xDD, 0x58, 0xD7, 0x1D, 0x61, 0xE8, + 0xFD, 0xFB, 0x35, 0xC1, 0x34, 0xCF, 0xA3, 0x5F, 0xFF, 0xFE, 0xC7, 0x6E, + 0x50, 0x6D, 0x37, 0x2C, 0x17, 0x53, 0x41, 0xE9, 0xBF, 0xF8, 0x8B, 0x3F, + 0x01, 0x1E, 0xF4, 0x5A, 0x59, 0x08, 0x9A, 0xA6, 0x1F, 0x07, 0xB9, 0x9C, + 0x15, 0x79, 0x1E, 0x41, 0xEB, 0x4F, 0xFB, 0x06, 0x11, 0xB4, 0x3B, 0xD6, + 0x88, 0xC0, 0x8F, 0xAE, 0x06, 0x40, 0x70, 0x1C, 0x4C, 0x91, 0x46, 0x8C, + 0x33, 0xA3, 0x20, 0x21, 0x42, 0x8E, 0x63, 0x24, 0x20, 0x82, 0x20, 0x00, + 0xD8, 0x4B, 0x13, 0x00, 0x8A, 0x04, 0xB3, 0xD6, 0x2D, 0x96, 0xF9, 0x64, + 0x92, 0xF4, 0xBD, 0xDC, 0x3C, 0xEF, 0x43, 0x40, 0x1E, 0xC0, 0xAB, 0xC5, + 0xA2, 0x48, 0x53, 0x6B, 0xEC, 0xD9, 0xBC, 0x48, 0x23, 0xB1, 0x3E, 0x54, + 0xAD, 0x54, 0x21, 0xF8, 0x4E, 0x0E, 0x49, 0x92, 0x5A, 0xEF, 0x86, 0xC1, + 0x18, 0xEF, 0xAE, 0x2F, 0x66, 0x45, 0xC6, 0x29, 0x05, 0xCF, 0xEB, 0xED, + 0xDB, 0xB7, 0x77, 0x10, 0x82, 0xB6, 0x55, 0xCA, 0x04, 0x00, 0xDD, 0x77, + 0x5F, 0x7E, 0x29, 0x47, 0x93, 0xE7, 0xB9, 0xD1, 0x83, 0x34, 0xCE, 0x8B, + 0xE9, 0xFF, 0xFE, 0xBF, 0xFD, 0xAF, 0x55, 0x2B, 0xBF, 0xFC, 0xE4, 0x05, + 0x41, 0x3E, 0x8D, 0x23, 0x63, 0xDD, 0x38, 0x8E, 0x1E, 0x00, 0xCA, 0xC9, + 0x67, 0x37, 0xAF, 0x8C, 0x01, 0x94, 0x26, 0x8D, 0x6C, 0x29, 0xA7, 0x5A, + 0x83, 0x32, 0xA7, 0x67, 0x8B, 0xD4, 0x6A, 0xED, 0xAD, 0x09, 0xD8, 0x1F, + 0xAB, 0x8A, 0x00, 0x7F, 0xB6, 0x98, 0xFE, 0xF0, 0xE1, 0xF6, 0xEA, 0xEC, + 0x62, 0x94, 0x6A, 0x75, 0x3E, 0xDF, 0x1D, 0x76, 0xF3, 0xE5, 0x59, 0x92, + 0x65, 0x77, 0x3F, 0x3E, 0x8E, 0xBD, 0x3D, 0x54, 0x83, 0x20, 0xFE, 0xE5, + 0xE5, 0xE5, 0xDB, 0xA7, 0x6D, 0x37, 0xA8, 0x7F, 0xF7, 0xDF, 0xFC, 0xCB, + 0x7F, 0x78, 0xFB, 0x50, 0x4B, 0xFD, 0xB4, 0x5E, 0x73, 0x4E, 0x31, 0x46, + 0x22, 0xA2, 0x51, 0x44, 0x8C, 0xF6, 0x3F, 0xBE, 0xDF, 0xBC, 0x38, 0x9F, + 0xA5, 0x82, 0x22, 0x42, 0xF7, 0x8D, 0xB4, 0xDE, 0x88, 0x48, 0x74, 0xED, + 0x30, 0xC9, 0x62, 0x42, 0xC9, 0xEF, 0xFE, 0xF0, 0x63, 0xDD, 0x4A, 0x35, + 0xA8, 0xD5, 0x7C, 0x3A, 0x6A, 0x9D, 0x97, 0x19, 0x40, 0xC8, 0x1A, 0x35, + 0xB6, 0xF2, 0xD4, 0x74, 0x88, 0xE0, 0x8F, 0x5E, 0xD7, 0xD9, 0xE5, 0x2A, + 0x68, 0xCB, 0x29, 0x0F, 0x20, 0x08, 0x46, 0xE5, 0x30, 0x0E, 0x6A, 0x0C, + 0xC1, 0x73, 0xC6, 0x28, 0xC6, 0x93, 0x3C, 0x4B, 0xD3, 0xE4, 0x97, 0xBF, + 0x7B, 0xDB, 0x0F, 0xC3, 0x6A, 0x96, 0xBF, 0xB9, 0xBA, 0x2A, 0xF3, 0x82, + 0x09, 0x5A, 0xB7, 0xD2, 0x03, 0x50, 0xB7, 0x52, 0x1B, 0x97, 0xA5, 0x09, + 0x41, 0x60, 0x92, 0x27, 0x93, 0x3C, 0xF1, 0x2E, 0x68, 0x2D, 0xBB, 0x5E, + 0x11, 0x0C, 0xD3, 0x94, 0x6B, 0xE7, 0x42, 0x08, 0xC6, 0x2A, 0xC6, 0x85, + 0x1A, 0xEC, 0xD9, 0xA2, 0x70, 0xC1, 0x41, 0x8A, 0xBA, 0x76, 0x30, 0xC6, + 0x1A, 0x00, 0x1E, 0x9E, 0x77, 0xDA, 0x85, 0xBE, 0x57, 0xCF, 0x0F, 0xDB, + 0x72, 0x9A, 0x62, 0x8C, 0x27, 0x65, 0xDE, 0x37, 0xFD, 0x7C, 0x5E, 0x9E, + 0xAF, 0x26, 0xC1, 0x5A, 0x02, 0xE0, 0xD5, 0xF9, 0xEA, 0xFD, 0xE3, 0xA6, + 0xEB, 0xCD, 0x38, 0x0C, 0x94, 0x40, 0x42, 0x48, 0x39, 0xCD, 0x95, 0x55, + 0xE3, 0x68, 0xB4, 0xF6, 0x6D, 0x37, 0xEC, 0x76, 0x95, 0xD2, 0xA6, 0x97, + 0xEA, 0x93, 0x97, 0x57, 0xCE, 0x99, 0xAB, 0xB3, 0xF2, 0xE5, 0xF9, 0x2C, + 0x8E, 0xE2, 0x63, 0xAD, 0x8C, 0x1E, 0x00, 0xC2, 0x71, 0x1C, 0xE5, 0xF9, + 0xE4, 0x69, 0xB7, 0xF5, 0xCE, 0x7A, 0x67, 0xC7, 0x71, 0xE4, 0x9C, 0x97, + 0x65, 0xAE, 0x75, 0xA8, 0xAA, 0xFE, 0x6E, 0x53, 0x03, 0x80, 0x6E, 0xCE, + 0x8B, 0xCD, 0xF1, 0x04, 0x00, 0xB8, 0x5F, 0x1F, 0x3E, 0xDC, 0xDF, 0x7E, + 0xFB, 0xC5, 0xAB, 0xFF, 0xF2, 0xBB, 0x2F, 0x18, 0x65, 0xCA, 0xFB, 0xE5, + 0x7C, 0x7E, 0xAC, 0xE5, 0xBF, 0xFF, 0xD5, 0xAF, 0xD3, 0x28, 0xCA, 0xCA, + 0x73, 0x07, 0x85, 0x96, 0x4D, 0x96, 0xE5, 0xB5, 0xB4, 0x5A, 0xF6, 0x7E, + 0xD8, 0x13, 0x3E, 0x29, 0x17, 0xD7, 0x2C, 0xF4, 0x18, 0x0E, 0x84, 0x38, + 0x63, 0xB4, 0xE0, 0x68, 0x51, 0xE4, 0xC7, 0xBA, 0x73, 0xC1, 0x6F, 0x0F, + 0xDB, 0xBE, 0xEB, 0x76, 0xA7, 0xAE, 0x53, 0x5E, 0x3B, 0xF8, 0x31, 0x74, + 0xCD, 0x29, 0x9D, 0x4E, 0xCB, 0x32, 0xCF, 0xEE, 0xEF, 0x77, 0xFD, 0x30, + 0xA4, 0x49, 0x32, 0xC9, 0xF3, 0xE7, 0xF5, 0xC6, 0x03, 0x5F, 0x4C, 0x8A, + 0xC3, 0xA1, 0xC9, 0x52, 0x8A, 0x80, 0xFE, 0x67, 0xFF, 0xE4, 0xAF, 0xBC, + 0xB1, 0x69, 0x12, 0x3F, 0x3D, 0xBD, 0xFF, 0xF0, 0xF0, 0xB0, 0x3B, 0xF6, + 0x10, 0xA1, 0x00, 0x61, 0xDF, 0x8F, 0x59, 0x9E, 0x83, 0xE0, 0x03, 0x08, + 0x6F, 0x3E, 0xFD, 0xFA, 0xEA, 0xE2, 0xE6, 0xD0, 0x18, 0x02, 0xF5, 0x79, + 0xA1, 0xDE, 0x5C, 0x4F, 0x04, 0xB1, 0xCF, 0xBB, 0xE7, 0xBA, 0xF7, 0x88, + 0x24, 0xA3, 0xFA, 0x98, 0x92, 0xF0, 0x67, 0x17, 0x6F, 0xA4, 0x54, 0x3F, + 0xDC, 0x77, 0x82, 0xF3, 0x17, 0xAB, 0xB2, 0xEF, 0x3B, 0xF8, 0xAF, 0xFF, + 0xD5, 0x3F, 0xDF, 0x57, 0x35, 0x84, 0x62, 0x35, 0xC9, 0xEB, 0xC3, 0x36, + 0x8D, 0x93, 0x3C, 0x2F, 0x10, 0x0C, 0x08, 0x41, 0xEF, 0x82, 0x94, 0xE3, + 0x74, 0xB9, 0xC2, 0xF1, 0x74, 0x38, 0xBC, 0x2F, 0xF2, 0x5C, 0x3B, 0xB3, + 0x3D, 0xEC, 0x57, 0xCB, 0x99, 0x77, 0xC8, 0x68, 0xD5, 0x36, 0x03, 0xC5, + 0xEC, 0xD4, 0xF4, 0x65, 0x91, 0x41, 0x84, 0x47, 0x35, 0x2A, 0x35, 0x00, + 0xE0, 0x05, 0xA7, 0x59, 0x1C, 0x61, 0x04, 0xCE, 0x57, 0xB3, 0xE7, 0x6D, + 0x75, 0xF7, 0xB8, 0xF5, 0x0E, 0x3C, 0x6D, 0xD7, 0x69, 0x1A, 0x13, 0xC6, + 0xB2, 0x84, 0x7C, 0xF6, 0xE2, 0x7C, 0x3E, 0x5B, 0x1A, 0x1B, 0x92, 0x18, + 0x3A, 0xD5, 0x31, 0x2E, 0x06, 0xD5, 0xEF, 0x8E, 0x2D, 0x04, 0x64, 0x3E, + 0xCB, 0xD3, 0x88, 0x8F, 0x63, 0x17, 0x8B, 0xD8, 0x7A, 0xD4, 0xF7, 0x6D, + 0xD7, 0x55, 0xCB, 0xD5, 0x42, 0x69, 0x56, 0xB7, 0x3D, 0x40, 0xE4, 0x57, + 0xBF, 0x7B, 0x9C, 0x96, 0xF1, 0xA7, 0xAF, 0xA7, 0x88, 0x60, 0xA9, 0x74, + 0xD5, 0xEB, 0xCD, 0xB6, 0xF2, 0xC1, 0xCB, 0x5E, 0x39, 0xEB, 0x02, 0x08, + 0x38, 0x84, 0xBB, 0xFB, 0x35, 0xA6, 0x2C, 0x89, 0xC5, 0xC5, 0x62, 0x4A, + 0x30, 0xF6, 0xC1, 0x71, 0x4E, 0x08, 0xC2, 0x1E, 0x02, 0x67, 0xFC, 0x72, + 0x91, 0x8B, 0x48, 0x4C, 0xCB, 0xD4, 0x79, 0x3F, 0x2A, 0x87, 0x00, 0x98, + 0xCD, 0x12, 0xCE, 0x91, 0x1A, 0x95, 0xD1, 0xD6, 0x58, 0xB3, 0xDE, 0xD6, + 0x75, 0x33, 0x14, 0x79, 0xEC, 0x8C, 0x67, 0x94, 0x26, 0x82, 0xBB, 0xE0, + 0xD2, 0x88, 0x71, 0xC2, 0xE3, 0x98, 0x01, 0xE8, 0xD6, 0xFB, 0xA3, 0x86, + 0x50, 0xDB, 0x81, 0x63, 0x42, 0x80, 0x30, 0x2E, 0x78, 0x08, 0x7A, 0xA9, + 0xFA, 0x6E, 0xE0, 0x14, 0x9F, 0xAD, 0xCA, 0xAA, 0x3A, 0xC4, 0x54, 0x9C, + 0x2A, 0xE9, 0x82, 0xEB, 0x86, 0x91, 0x30, 0xB4, 0xDB, 0x57, 0x8C, 0xB3, + 0xAE, 0x1B, 0xBC, 0x87, 0x00, 0x02, 0x3D, 0x9A, 0x53, 0xAD, 0x56, 0xAB, + 0xE5, 0x97, 0x9F, 0x9E, 0x71, 0x0E, 0x08, 0x42, 0x94, 0xD2, 0xB7, 0x3F, + 0xEE, 0x7E, 0x78, 0xFF, 0x94, 0x25, 0xF1, 0x7C, 0x5A, 0x50, 0x4A, 0x29, + 0x85, 0xDF, 0x7D, 0xF3, 0xFA, 0x74, 0xAC, 0x31, 0xC4, 0xB3, 0xB2, 0x04, + 0x1E, 0xBC, 0xFD, 0xF0, 0x94, 0x46, 0x7C, 0x3E, 0x2D, 0x0E, 0x75, 0xD7, + 0xC9, 0xB1, 0x69, 0x65, 0x40, 0xC8, 0x79, 0x87, 0x10, 0xE9, 0xE4, 0xB8, + 0x39, 0xD4, 0x65, 0x1E, 0xE7, 0x31, 0x8D, 0x18, 0x7A, 0xF3, 0xFA, 0xE2, + 0x70, 0x38, 0xFD, 0xDD, 0x6F, 0xBE, 0xE7, 0x04, 0x7F, 0x76, 0xF3, 0xE2, + 0xD8, 0x0C, 0x87, 0x53, 0xF5, 0x27, 0x5F, 0x7D, 0x3D, 0x9B, 0x09, 0x44, + 0xF0, 0xED, 0x87, 0x47, 0x91, 0x4E, 0x0C, 0x2D, 0x86, 0xEA, 0x07, 0xAD, + 0x34, 0xF6, 0x70, 0x3E, 0x2F, 0x39, 0x27, 0xCE, 0x7B, 0x63, 0x8C, 0x54, + 0xF6, 0xE1, 0xF9, 0x84, 0x00, 0x79, 0x71, 0x75, 0xF1, 0xF8, 0xB4, 0x8B, + 0x12, 0x06, 0xA9, 0x30, 0x46, 0x5D, 0x9C, 0xE7, 0x0C, 0xB3, 0x51, 0xE9, + 0xE0, 0x40, 0x12, 0xF3, 0x77, 0xEF, 0x7F, 0x18, 0x86, 0x66, 0x39, 0x9F, + 0x18, 0xA3, 0xE7, 0xF9, 0x0C, 0x7B, 0x18, 0xA0, 0xA9, 0x95, 0xE3, 0x31, + 0x4F, 0xA2, 0x08, 0x04, 0x30, 0x99, 0x2D, 0xF7, 0xBB, 0xAD, 0x6E, 0x87, + 0x71, 0xF4, 0x3F, 0xDC, 0x6F, 0x7E, 0xF6, 0xED, 0x57, 0x65, 0x9E, 0x9E, + 0xBA, 0xF1, 0x87, 0xBB, 0xC7, 0xC3, 0xE1, 0xB4, 0x9C, 0x97, 0x91, 0x40, + 0xCE, 0x39, 0x84, 0x09, 0x67, 0x7C, 0x1C, 0xE5, 0xBC, 0xC8, 0x28, 0x66, + 0xCD, 0xA0, 0x87, 0x71, 0x7C, 0xFF, 0xB0, 0xC9, 0x92, 0xF4, 0xE7, 0xDF, + 0x7E, 0x4A, 0x08, 0xEE, 0x65, 0x1F, 0x20, 0x54, 0xC6, 0x7D, 0x78, 0xFF, + 0x78, 0x38, 0x55, 0x87, 0xAA, 0xBD, 0xBA, 0x98, 0x23, 0x84, 0xB5, 0x36, + 0xC0, 0xBA, 0x43, 0xD5, 0x5A, 0xEF, 0x28, 0xA7, 0xD3, 0xF9, 0x04, 0x04, + 0x40, 0x00, 0xEC, 0x5A, 0x99, 0xC6, 0x11, 0x44, 0xB0, 0x69, 0xFA, 0x32, + 0x4F, 0x95, 0xB5, 0x1E, 0x06, 0x8A, 0xB0, 0x77, 0xBE, 0xC8, 0xD3, 0x41, + 0xE9, 0x87, 0xE7, 0xFD, 0x27, 0xD7, 0x97, 0xCB, 0xE9, 0x74, 0x7B, 0x3C, + 0x26, 0x59, 0xFC, 0xB4, 0x39, 0x3D, 0xAE, 0xF7, 0x08, 0x63, 0xA5, 0xB5, + 0xE0, 0x3C, 0x13, 0xEC, 0xAB, 0x37, 0xAF, 0xBD, 0xD3, 0x6D, 0xD7, 0x0D, + 0xE3, 0x18, 0x3C, 0x40, 0x18, 0x9D, 0x9F, 0xCD, 0x9A, 0x56, 0x17, 0x45, + 0x01, 0x83, 0xF4, 0xC1, 0x37, 0x9D, 0x86, 0x88, 0x58, 0xAB, 0xCE, 0x2F, + 0xA7, 0xA7, 0x7D, 0x17, 0x82, 0xCF, 0xCA, 0xB8, 0x6E, 0x7A, 0x00, 0xF1, + 0xB1, 0x6E, 0xAB, 0x53, 0x33, 0x99, 0xE6, 0xD6, 0x39, 0x6F, 0x0C, 0x67, + 0x2C, 0x12, 0x22, 0x89, 0x19, 0x82, 0x70, 0x90, 0xEA, 0xFC, 0x6C, 0x56, + 0xE6, 0xC9, 0x72, 0x36, 0x7B, 0x7F, 0xF7, 0x8C, 0x02, 0x78, 0x71, 0x7D, + 0xEE, 0x80, 0xD5, 0x5A, 0xF5, 0xD2, 0x3A, 0xEB, 0xDF, 0xBE, 0xBB, 0xD7, + 0xD6, 0x0E, 0xC3, 0xF8, 0xE5, 0xA7, 0xAF, 0xE2, 0x34, 0x92, 0x43, 0x6D, + 0x95, 0xEE, 0x3A, 0x35, 0x2B, 0x8A, 0x34, 0x11, 0x71, 0x92, 0x9F, 0x9D, + 0x9D, 0x99, 0x51, 0xFE, 0xF1, 0xDD, 0xED, 0xDB, 0x0F, 0xCF, 0x75, 0x3B, + 0x70, 0x8E, 0x09, 0x46, 0x21, 0xF8, 0x2C, 0x8F, 0x04, 0xE3, 0x82, 0xC7, + 0x98, 0xD0, 0xF9, 0x2C, 0x97, 0x7D, 0xF7, 0xE3, 0xED, 0xD3, 0x30, 0xBA, + 0xCD, 0xA1, 0x69, 0x46, 0xF5, 0xE9, 0x8B, 0xE9, 0xD7, 0x37, 0x17, 0x4F, + 0xEB, 0x43, 0x51, 0x14, 0x9D, 0xC6, 0xFB, 0xAA, 0x6D, 0xBA, 0xF5, 0x72, + 0x96, 0x46, 0xF9, 0x05, 0x01, 0x08, 0x3B, 0x9B, 0x67, 0x09, 0xA6, 0xCC, + 0x5B, 0xD3, 0xB5, 0xBD, 0xB1, 0x76, 0x77, 0x38, 0x5A, 0x63, 0x8B, 0x34, + 0x72, 0xD8, 0x2C, 0xA7, 0xD9, 0x17, 0x37, 0x57, 0xF7, 0x8F, 0x07, 0x6D, + 0x00, 0x67, 0xA4, 0xEB, 0xFB, 0x6E, 0x30, 0x87, 0xA6, 0xB3, 0xC6, 0x49, + 0xA5, 0xFB, 0x61, 0x4C, 0x22, 0x5E, 0xD5, 0xF5, 0xD9, 0xF9, 0x82, 0x50, + 0x7C, 0x7F, 0xB7, 0x57, 0xC6, 0x10, 0x88, 0x20, 0x80, 0xC6, 0x3A, 0xCE, + 0x99, 0x73, 0x0E, 0x53, 0x86, 0x91, 0x4F, 0x13, 0xF1, 0xE6, 0x93, 0x4F, + 0x57, 0x93, 0x62, 0x94, 0xF5, 0x8F, 0xB7, 0xB7, 0x77, 0xCF, 0xA7, 0xBA, + 0x1B, 0xFA, 0x5E, 0x2E, 0x66, 0xE5, 0xC5, 0x72, 0xF1, 0xE3, 0xC3, 0x96, + 0x32, 0xE2, 0x43, 0xF8, 0xE4, 0xD5, 0xD5, 0x5F, 0xFE, 0xFC, 0x2F, 0x18, + 0xA5, 0xCB, 0x69, 0xC6, 0x51, 0x7D, 0x7B, 0xFB, 0xF6, 0xC7, 0x0F, 0xDB, + 0xE7, 0xE3, 0x09, 0x11, 0x5A, 0xE6, 0x2B, 0x88, 0x08, 0x00, 0x56, 0xC4, + 0xB1, 0x1C, 0xD5, 0x72, 0x36, 0xE7, 0xAC, 0xB0, 0x66, 0x64, 0x04, 0x17, + 0x69, 0x0E, 0xFF, 0xEC, 0xBB, 0x6F, 0xF6, 0x75, 0xFB, 0xC5, 0x17, 0xDF, + 0xCA, 0xE3, 0x63, 0x96, 0xA4, 0xC1, 0xFB, 0x24, 0x4B, 0x9F, 0x9E, 0x37, + 0x54, 0x90, 0xA7, 0xA7, 0xCD, 0xAB, 0xEB, 0x97, 0x17, 0xAF, 0xBF, 0x7A, + 0xF7, 0xF6, 0x1F, 0xBC, 0x96, 0x9C, 0xD2, 0x49, 0x11, 0x71, 0x8A, 0x3C, + 0x20, 0xCA, 0x20, 0xE7, 0xF5, 0xE5, 0x2A, 0x47, 0x18, 0xED, 0x0E, 0x9D, + 0x32, 0x6E, 0x7F, 0xEC, 0x5C, 0xD0, 0x71, 0x4C, 0x26, 0x93, 0x7C, 0xBB, + 0x6F, 0x82, 0x0B, 0x4D, 0xDD, 0x08, 0xCE, 0xBE, 0x78, 0xFD, 0x8A, 0x53, + 0xF2, 0x9B, 0x3F, 0xDE, 0x3E, 0x6E, 0xF7, 0xFF, 0xF4, 0x4F, 0xBF, 0xBD, + 0xBA, 0x58, 0x4C, 0x33, 0x66, 0xCD, 0xB0, 0x3F, 0x9E, 0x1C, 0x40, 0x65, + 0x59, 0x3A, 0x6B, 0x39, 0x47, 0x4A, 0x8F, 0x01, 0x20, 0x18, 0x2C, 0x0C, + 0xEE, 0x74, 0xAC, 0x43, 0x50, 0x45, 0x9E, 0xD9, 0x80, 0xDA, 0xEE, 0x84, + 0x11, 0x9C, 0xCF, 0x2F, 0x7B, 0xA9, 0x95, 0xF6, 0x71, 0x1A, 0x65, 0x19, + 0x2F, 0x52, 0x61, 0x1C, 0xF8, 0xFE, 0xED, 0x43, 0xDF, 0xEB, 0x40, 0xC9, + 0xD3, 0xFA, 0xB8, 0xDB, 0x1E, 0x03, 0xC0, 0x22, 0x8A, 0x40, 0x70, 0x6A, + 0x1C, 0x9E, 0xD6, 0x07, 0x8C, 0xA8, 0x52, 0xF2, 0xE5, 0xC5, 0xD9, 0xD5, + 0xD5, 0xC2, 0x5A, 0x2B, 0x38, 0x1D, 0xB5, 0xED, 0xFA, 0x11, 0x00, 0xE0, + 0xAC, 0x7B, 0x79, 0x79, 0xB1, 0x98, 0x4D, 0x0F, 0xC7, 0x26, 0xCB, 0x73, + 0x82, 0x3C, 0x46, 0xA0, 0xEA, 0x46, 0x65, 0xCC, 0xD9, 0x22, 0x67, 0x18, + 0x40, 0x6F, 0x76, 0xFB, 0x2A, 0xC9, 0x84, 0xD3, 0x8E, 0x11, 0x9A, 0xA6, + 0xD1, 0x30, 0x8C, 0x8B, 0x45, 0x5E, 0x35, 0xBD, 0x1C, 0x4D, 0x92, 0x44, + 0x65, 0x11, 0x11, 0x81, 0xAB, 0xAE, 0x0F, 0x01, 0x74, 0x8D, 0x7C, 0x7C, + 0xD8, 0x2B, 0xE3, 0xF2, 0x2C, 0x61, 0x18, 0xCD, 0xCA, 0x5C, 0x59, 0xD7, + 0x75, 0xBD, 0xEC, 0x7A, 0x29, 0xC7, 0xBA, 0xED, 0xE2, 0x38, 0x3A, 0xD5, + 0x6D, 0xD5, 0xF6, 0x1F, 0x43, 0xA7, 0x04, 0x23, 0xCE, 0xC9, 0xC5, 0x22, + 0xFF, 0xE4, 0xF5, 0x3C, 0x4E, 0xE2, 0xF9, 0x62, 0xB1, 0x3B, 0xD5, 0x4F, + 0x9B, 0x13, 0x04, 0x70, 0x31, 0x9D, 0xFD, 0xF2, 0x57, 0xEF, 0x8C, 0x72, + 0x93, 0x2C, 0x0D, 0x00, 0xDC, 0x5C, 0x2F, 0xCF, 0x17, 0x93, 0xC3, 0xA9, + 0xAD, 0x3B, 0x29, 0xB8, 0x90, 0x83, 0xF5, 0x21, 0x24, 0x82, 0x75, 0x52, + 0x1E, 0x4E, 0xAD, 0x07, 0x21, 0x00, 0xF8, 0x51, 0x24, 0xAE, 0xEA, 0xEE, + 0xF6, 0x71, 0xF3, 0xE6, 0xE6, 0x7A, 0x5E, 0xC6, 0x4D, 0xDD, 0x31, 0x42, + 0x26, 0x79, 0x64, 0x8C, 0x9D, 0x96, 0xD9, 0xBC, 0x4C, 0x36, 0xC7, 0xBA, + 0x95, 0x03, 0xE3, 0x62, 0x39, 0x9B, 0x18, 0xDF, 0x5A, 0x6F, 0xBB, 0x7E, + 0x70, 0x28, 0x7B, 0xDC, 0x8C, 0x67, 0xE5, 0x38, 0xCB, 0x92, 0xC5, 0x74, + 0xB2, 0x3F, 0x35, 0xA3, 0x52, 0x72, 0xD0, 0x01, 0x80, 0xD3, 0xB1, 0xD9, + 0x6C, 0xDB, 0xC9, 0x6C, 0x36, 0x99, 0x66, 0xBB, 0xDD, 0x41, 0x7B, 0xDC, + 0xF5, 0x0E, 0x83, 0x21, 0x2B, 0x72, 0xA5, 0x54, 0x5E, 0xA4, 0x01, 0x62, + 0x02, 0xE1, 0xAC, 0x48, 0xFA, 0xA1, 0x7E, 0xFF, 0xFE, 0xDD, 0x27, 0x2F, + 0x5F, 0xAE, 0x26, 0x33, 0x33, 0x68, 0xE3, 0xFD, 0xA0, 0xE5, 0xC7, 0xE6, + 0xF6, 0xE8, 0xB5, 0xE0, 0x2C, 0xE1, 0x7C, 0x12, 0xCF, 0x7E, 0xF7, 0xFD, + 0xAD, 0x0D, 0xE0, 0xA7, 0x3F, 0xFD, 0xEC, 0x69, 0x5D, 0x1D, 0xAA, 0xF6, + 0xF1, 0x69, 0xF3, 0x17, 0x3F, 0x7D, 0xFD, 0xE6, 0x66, 0x36, 0x0C, 0x63, + 0xDF, 0xF6, 0xCE, 0x3B, 0x00, 0xC9, 0x7A, 0x7D, 0x3A, 0x9D, 0x1C, 0x00, + 0x98, 0x30, 0x3A, 0x8C, 0xEA, 0xC3, 0xD3, 0xF6, 0x93, 0x97, 0x97, 0x9C, + 0xD2, 0x00, 0x03, 0xA1, 0x04, 0x84, 0xB0, 0x98, 0x4F, 0x9E, 0x9E, 0x37, + 0xFF, 0xE7, 0xBF, 0xFF, 0xC5, 0xF5, 0xF5, 0x0A, 0x06, 0xEF, 0x4D, 0xB8, + 0xB9, 0x3A, 0x13, 0x82, 0xA5, 0x19, 0xDF, 0x9D, 0x6A, 0x63, 0x7C, 0x96, + 0xE7, 0xD9, 0x2C, 0x8F, 0x63, 0xF1, 0xFD, 0x1F, 0xEE, 0x18, 0x65, 0x87, + 0xDD, 0x3E, 0x62, 0x22, 0x04, 0x7F, 0xEA, 0xC7, 0xA6, 0xED, 0x10, 0x00, + 0x08, 0x42, 0x8A, 0x21, 0xC4, 0x28, 0x4F, 0x0B, 0x10, 0xA0, 0x1C, 0x07, + 0x4C, 0x69, 0x3F, 0xA8, 0xFD, 0xB1, 0xAD, 0xDB, 0x66, 0x36, 0x9D, 0x70, + 0x46, 0x31, 0x89, 0x38, 0x46, 0xD7, 0xAB, 0xE9, 0x76, 0xB7, 0x39, 0x9C, + 0xAA, 0x51, 0x6B, 0xC1, 0x79, 0x00, 0xF0, 0xC5, 0xD5, 0x25, 0x46, 0x38, + 0xCD, 0xCA, 0x79, 0x49, 0x1E, 0xD6, 0xFB, 0x71, 0xD4, 0xBB, 0xC3, 0x89, + 0x73, 0xFA, 0xE2, 0x7A, 0xF1, 0xF0, 0xB8, 0x25, 0x84, 0x20, 0x08, 0x45, + 0x14, 0x25, 0x49, 0x72, 0xFF, 0xF8, 0x14, 0x27, 0x91, 0x73, 0xBE, 0xAE, + 0x1B, 0x84, 0x30, 0xA1, 0x18, 0x06, 0x3F, 0x2D, 0xB3, 0x34, 0x89, 0xCB, + 0x34, 0x2D, 0x8A, 0x0C, 0x22, 0x8F, 0x31, 0x41, 0x08, 0x66, 0x89, 0xA8, + 0xAB, 0x9E, 0x47, 0x02, 0x23, 0xB0, 0xD9, 0x35, 0x08, 0x60, 0x6B, 0x2C, + 0xC6, 0x20, 0xE2, 0x98, 0x51, 0xAC, 0x9C, 0x81, 0x00, 0xB6, 0x9D, 0x1C, + 0x06, 0x95, 0xA5, 0x05, 0xE3, 0x91, 0xB6, 0x8E, 0x51, 0x9A, 0x08, 0x56, + 0xD5, 0x4D, 0xD3, 0xAB, 0xF5, 0x66, 0x1F, 0x9C, 0x71, 0xDE, 0x3B, 0xE7, + 0x18, 0x27, 0x71, 0xC4, 0xCF, 0xE6, 0xB3, 0xEF, 0xBE, 0x7D, 0xF3, 0xFA, + 0x66, 0xD9, 0xF7, 0x6A, 0xB7, 0xDE, 0xBF, 0x7B, 0xFF, 0xDC, 0x4B, 0x1B, + 0x90, 0x80, 0x98, 0x0B, 0xA2, 0x9D, 0xF3, 0xCE, 0x43, 0x65, 0xDD, 0xFA, + 0x78, 0x7C, 0x78, 0x7A, 0x3F, 0x8C, 0x43, 0x91, 0xC5, 0x01, 0xE0, 0xB3, + 0xC5, 0xC5, 0xCD, 0x8B, 0xD5, 0xFE, 0xD0, 0x2D, 0x26, 0x53, 0x82, 0x91, + 0x35, 0x12, 0x04, 0xDB, 0x76, 0x9A, 0x51, 0xFC, 0xF5, 0x17, 0xE7, 0x67, + 0xF3, 0x22, 0x12, 0xE2, 0x7E, 0xD3, 0x34, 0xED, 0x30, 0x0C, 0x6A, 0x7B, + 0xA8, 0x9F, 0x36, 0x95, 0xF7, 0x30, 0x58, 0x53, 0x4E, 0xA6, 0x16, 0x80, + 0xE3, 0xE9, 0xB8, 0xD9, 0x6C, 0xAD, 0x1F, 0x03, 0x04, 0xAF, 0xAE, 0x5F, + 0xCB, 0x61, 0x7C, 0x7C, 0x5A, 0x5F, 0x9D, 0x5F, 0xC4, 0x22, 0x9A, 0x4F, + 0xD2, 0x0F, 0xF7, 0x4F, 0xF7, 0xDB, 0x7D, 0x91, 0xC5, 0x71, 0x1C, 0x4F, + 0xA7, 0x53, 0x81, 0xA1, 0xD1, 0x2A, 0x8E, 0xE3, 0x87, 0xED, 0x7E, 0xD0, + 0xAE, 0x6D, 0xDA, 0x97, 0x57, 0x8B, 0x48, 0xC4, 0x3F, 0xDC, 0x3E, 0x43, + 0x48, 0x37, 0xDB, 0xED, 0xF9, 0x6A, 0x31, 0x9F, 0x94, 0x67, 0xF3, 0x29, + 0xA3, 0x18, 0x21, 0x60, 0x94, 0xAA, 0x8E, 0xA7, 0xC9, 0x6C, 0x8A, 0x09, + 0xD1, 0xCA, 0x42, 0x48, 0xB4, 0xD1, 0x72, 0x94, 0xA3, 0x72, 0xD3, 0xB2, + 0xC8, 0xB3, 0xCC, 0x68, 0x15, 0x73, 0xCA, 0x28, 0x86, 0x3F, 0xFB, 0xC9, + 0xD7, 0x5C, 0xC4, 0x67, 0x2F, 0x3E, 0x37, 0xA3, 0x54, 0x7D, 0x1D, 0x9C, + 0xC5, 0x18, 0x76, 0xB2, 0x75, 0xDE, 0x55, 0xA7, 0xFA, 0xE5, 0x27, 0x5F, + 0xEF, 0xF6, 0xFB, 0x9C, 0x0E, 0x84, 0x52, 0xC6, 0xA2, 0xD5, 0x2C, 0x1B, + 0xE4, 0xC0, 0x98, 0xE0, 0x9C, 0x23, 0xE4, 0x31, 0x45, 0xEB, 0x6D, 0x95, + 0x16, 0xB1, 0xB1, 0xB6, 0xE9, 0xC7, 0x38, 0x11, 0x08, 0x38, 0xEB, 0xFD, + 0xF6, 0xD0, 0x61, 0x1A, 0x1D, 0x9E, 0x36, 0x6A, 0xD4, 0x59, 0x9A, 0x2F, + 0xCA, 0x2C, 0x8E, 0xE3, 0x4A, 0xDA, 0x9B, 0x8B, 0x42, 0x30, 0xD8, 0x34, + 0xFD, 0xE6, 0xB0, 0xAD, 0x1B, 0x8D, 0x30, 0x0F, 0x90, 0x8A, 0x88, 0x22, + 0x1C, 0x8C, 0x35, 0x9C, 0xD1, 0xCB, 0xF3, 0x09, 0x0A, 0xBA, 0x6F, 0xEA, + 0x00, 0x82, 0x73, 0x46, 0x8D, 0x75, 0x12, 0x33, 0x4C, 0xB8, 0xB1, 0x7A, + 0xB5, 0xBA, 0x84, 0x48, 0x50, 0x86, 0xD2, 0x34, 0x23, 0x98, 0x62, 0x2A, + 0xEA, 0x46, 0x0E, 0x52, 0x52, 0x81, 0xD7, 0xFB, 0xAE, 0x1F, 0xD4, 0xDB, + 0xB7, 0x0F, 0xC7, 0x63, 0xBF, 0x5A, 0xCD, 0xD4, 0x28, 0x09, 0x81, 0x18, + 0x23, 0x42, 0x09, 0x08, 0x48, 0x50, 0x12, 0x0B, 0xA2, 0xB5, 0x6F, 0x3A, + 0xD9, 0x4B, 0xD5, 0xC9, 0x71, 0x31, 0x9B, 0x7F, 0xF9, 0xE6, 0x55, 0x5D, + 0x35, 0x45, 0x39, 0xE9, 0x47, 0xBD, 0x3F, 0x9E, 0xEA, 0xA6, 0xE1, 0x14, + 0x1B, 0x17, 0x12, 0x41, 0x23, 0x8A, 0x6F, 0xAE, 0x67, 0x79, 0x16, 0x05, + 0x60, 0x29, 0x44, 0x71, 0xC4, 0x20, 0x0C, 0x36, 0x58, 0xEB, 0xDD, 0xE3, + 0xFA, 0xD4, 0x4A, 0x13, 0x27, 0xE9, 0xE3, 0xE3, 0x46, 0x3B, 0x33, 0x99, + 0x15, 0x49, 0xC4, 0x63, 0x41, 0x01, 0x80, 0x4D, 0x37, 0x76, 0x5D, 0x27, + 0x18, 0xB9, 0x5C, 0xCE, 0xB8, 0x60, 0xB7, 0xF7, 0xDB, 0xBE, 0x1B, 0xF2, + 0x34, 0xDE, 0x6E, 0x4F, 0xD6, 0x3A, 0x63, 0xCD, 0xE6, 0xD4, 0x40, 0x08, + 0xFF, 0xE5, 0x5F, 0x7D, 0xE3, 0xB4, 0x79, 0xF9, 0x72, 0x91, 0xA5, 0xD1, + 0xC3, 0x87, 0xA7, 0xFB, 0xA7, 0x9D, 0xF2, 0x61, 0xBB, 0x6E, 0x11, 0xC6, + 0xCB, 0x79, 0x39, 0xCD, 0xF3, 0x80, 0xF0, 0xC5, 0x72, 0x12, 0xB4, 0xA7, + 0x44, 0x9C, 0x9A, 0xE1, 0x79, 0x77, 0x74, 0xCE, 0xC7, 0x91, 0x18, 0xB4, + 0xDD, 0xEE, 0x4F, 0xCB, 0xF9, 0xB4, 0x69, 0xDB, 0x10, 0x40, 0xF0, 0x8E, + 0x31, 0xDA, 0xF6, 0xC3, 0xA0, 0xD4, 0xC7, 0xC6, 0xC4, 0xC5, 0x6A, 0xF6, + 0x6F, 0xFE, 0xF9, 0xCF, 0xFF, 0xAF, 0xBF, 0xF9, 0x65, 0x2F, 0x35, 0xC2, + 0x38, 0x12, 0xDC, 0x3B, 0x27, 0x44, 0x24, 0x95, 0x12, 0x11, 0x1A, 0xB4, + 0x89, 0x84, 0x30, 0xA3, 0x6D, 0xFB, 0x2A, 0x38, 0x53, 0x96, 0xE9, 0x64, + 0xF9, 0xBA, 0x69, 0x36, 0x93, 0xD8, 0x67, 0x2C, 0x26, 0x98, 0x1C, 0x9B, + 0x56, 0x6B, 0x1B, 0x09, 0x61, 0x8C, 0xC5, 0x18, 0x61, 0x4C, 0x5A, 0xA9, + 0x4F, 0x4D, 0x5B, 0x4B, 0x30, 0x9D, 0xAF, 0x64, 0xB3, 0xBD, 0xBB, 0x7F, + 0x4A, 0xD3, 0xA4, 0x2C, 0xF3, 0xAB, 0x57, 0x97, 0x52, 0x4A, 0x88, 0x88, + 0x53, 0x6A, 0x9A, 0x27, 0xC0, 0xD9, 0xE3, 0x71, 0x73, 0xBE, 0x5C, 0x08, + 0xC6, 0x38, 0x67, 0xCE, 0x8C, 0xA3, 0xB2, 0x72, 0xEC, 0x4D, 0x70, 0x69, + 0xC4, 0x3F, 0x7F, 0xFD, 0x89, 0x77, 0xE1, 0x71, 0x77, 0x88, 0xD3, 0xE8, + 0xE2, 0xAC, 0x1C, 0x47, 0x65, 0x8D, 0x01, 0x01, 0xE8, 0x31, 0x40, 0x0A, + 0xFE, 0xF0, 0xFD, 0xC3, 0xEA, 0x2C, 0xB9, 0xBA, 0x9C, 0x06, 0x0F, 0xFA, + 0x46, 0xDD, 0x3F, 0xB4, 0x6D, 0xA7, 0x27, 0xD3, 0xC9, 0x60, 0xAC, 0xF3, + 0x2E, 0x4D, 0x22, 0x6B, 0x4C, 0x08, 0xBE, 0x1D, 0xB4, 0x94, 0x43, 0x08, + 0x30, 0x49, 0xE2, 0x0F, 0xF7, 0xF7, 0xAF, 0x2F, 0x16, 0x82, 0x92, 0x24, + 0x8A, 0x83, 0x0F, 0x98, 0x82, 0x28, 0x65, 0xB2, 0x1F, 0x05, 0x13, 0x08, + 0x11, 0x0F, 0x03, 0xE2, 0xCC, 0x07, 0x14, 0x30, 0x7A, 0xFF, 0xEE, 0x6E, + 0x59, 0x96, 0xB7, 0xF7, 0xEB, 0x63, 0xA3, 0x9C, 0xD5, 0x18, 0x05, 0x39, + 0x8E, 0xCE, 0xDA, 0x69, 0x91, 0xB7, 0x52, 0x79, 0x00, 0xDB, 0xAE, 0x2F, + 0x8A, 0xF2, 0x79, 0xBB, 0xFB, 0x58, 0x4E, 0xCA, 0xF3, 0x32, 0x8E, 0x62, + 0x42, 0x69, 0x9E, 0xC4, 0xDE, 0xC8, 0xFD, 0xE1, 0xA0, 0x8C, 0x1D, 0xD5, + 0x38, 0x9D, 0xCE, 0xA2, 0x28, 0xB9, 0x5C, 0x2E, 0x7D, 0x00, 0x91, 0x88, + 0x28, 0x72, 0x87, 0xBA, 0x36, 0xD6, 0x20, 0x1C, 0x28, 0xC6, 0xFB, 0x63, + 0x95, 0x66, 0xB1, 0x33, 0xA6, 0x6D, 0x07, 0x07, 0x50, 0x96, 0xA6, 0x7D, + 0xDF, 0x52, 0xCE, 0x62, 0x1E, 0xD5, 0x75, 0x73, 0xAC, 0xAA, 0xEB, 0x57, + 0x97, 0x9C, 0x93, 0xA1, 0x6E, 0xF3, 0x24, 0x16, 0x9C, 0xE5, 0x79, 0x5E, + 0x37, 0xDD, 0x38, 0xAA, 0xB2, 0xCC, 0x38, 0xC7, 0xF3, 0x69, 0x99, 0x26, + 0xE9, 0xC3, 0x7A, 0x83, 0x08, 0x16, 0x8C, 0x39, 0xEB, 0x87, 0x4E, 0xA5, + 0x51, 0x22, 0x65, 0xA3, 0x3D, 0x42, 0x84, 0xE4, 0x19, 0x47, 0x20, 0x18, + 0x8F, 0x4F, 0xB5, 0x1E, 0x46, 0x9B, 0xA6, 0xB1, 0xB3, 0xA6, 0xEF, 0xDB, + 0xC9, 0x74, 0xEA, 0xB4, 0xF4, 0x56, 0x1F, 0xAB, 0xE6, 0x54, 0x55, 0x51, + 0xCC, 0xD4, 0xA8, 0x92, 0x28, 0x7A, 0x71, 0xB5, 0xFA, 0xF2, 0xD3, 0xCB, + 0xC5, 0xBC, 0xA8, 0x1B, 0xA9, 0x95, 0xC5, 0x58, 0x38, 0x13, 0xEA, 0x5E, + 0x87, 0xE0, 0xDB, 0x7E, 0x50, 0xC6, 0x4D, 0x8A, 0xC4, 0x7A, 0xDF, 0x74, + 0x5D, 0xDB, 0x9C, 0x42, 0xC0, 0x5D, 0xDF, 0x30, 0x0A, 0x9B, 0xAE, 0xBB, + 0x3C, 0x3F, 0xBF, 0x98, 0xA6, 0x18, 0xFB, 0x38, 0x49, 0x1C, 0xC0, 0xC6, + 0xDB, 0x59, 0x0A, 0xB1, 0xE9, 0x0F, 0xA7, 0xCE, 0x41, 0x12, 0xC5, 0xF1, + 0xD9, 0xE5, 0xD5, 0xA1, 0x71, 0xBF, 0xFE, 0xED, 0x7B, 0x4E, 0x19, 0x0E, + 0x1E, 0x40, 0x40, 0xB9, 0x78, 0xDA, 0x35, 0x55, 0xD3, 0x2D, 0x67, 0xD3, + 0xE3, 0x61, 0x9D, 0x97, 0xE9, 0x67, 0xAF, 0xAF, 0xB9, 0xA0, 0xCA, 0xFA, + 0x61, 0x0C, 0xD7, 0xB3, 0x58, 0x60, 0x74, 0x68, 0xC6, 0xF5, 0xF6, 0x88, + 0x19, 0x3E, 0xD4, 0x55, 0x9E, 0x15, 0x4D, 0x37, 0x26, 0x71, 0x02, 0x00, + 0xD8, 0x56, 0xAD, 0xF5, 0x80, 0x21, 0x38, 0x2F, 0x63, 0xED, 0x40, 0x92, + 0x14, 0x94, 0x45, 0x4A, 0xAB, 0xAE, 0x6E, 0xAC, 0x19, 0x30, 0x46, 0x6A, + 0xD4, 0x18, 0x51, 0x67, 0xC7, 0x3C, 0x4B, 0xAC, 0xB5, 0xBB, 0xC3, 0x91, + 0xB2, 0x08, 0x41, 0xD4, 0x76, 0x6D, 0xD3, 0xB6, 0x65, 0x39, 0xEB, 0x65, + 0x1F, 0x31, 0x92, 0x44, 0xD1, 0xF6, 0x78, 0xA8, 0xDB, 0x16, 0xFF, 0xFC, + 0xBB, 0xAF, 0xB2, 0x98, 0xBB, 0xA1, 0xD6, 0x6A, 0x54, 0xDA, 0x88, 0x24, + 0x4A, 0xF2, 0x34, 0x4B, 0x29, 0x67, 0xFE, 0xE6, 0xE6, 0x05, 0xE6, 0x42, + 0xB6, 0xFB, 0x44, 0xA0, 0xAB, 0xF3, 0x89, 0x56, 0xAE, 0x48, 0x92, 0x38, + 0x62, 0x55, 0x2D, 0xD7, 0xBB, 0x0A, 0x23, 0xDC, 0x74, 0xE3, 0xFD, 0xFD, + 0x56, 0x2B, 0x27, 0x18, 0x4B, 0x22, 0xE4, 0x83, 0x1D, 0x8D, 0xAF, 0xAA, + 0xC6, 0xFB, 0x00, 0x41, 0x38, 0x5B, 0xCD, 0xA9, 0x07, 0xF3, 0x69, 0x31, + 0x2B, 0xB3, 0x8B, 0xE5, 0x64, 0x56, 0xE6, 0x0C, 0xFB, 0x71, 0xB4, 0x4F, + 0xDB, 0xD3, 0x2F, 0x7F, 0xFB, 0x16, 0x23, 0xF2, 0xF5, 0x97, 0x6F, 0xA2, + 0x88, 0xC5, 0x82, 0x47, 0x9C, 0x4F, 0xB2, 0x4C, 0x50, 0x8A, 0x20, 0xB2, + 0x56, 0x7B, 0x3F, 0x54, 0xED, 0x30, 0x0C, 0xE1, 0xCB, 0xAB, 0x09, 0x23, + 0xE0, 0xD4, 0x39, 0x11, 0xA5, 0x69, 0x59, 0x58, 0x2D, 0xD5, 0x60, 0x07, + 0xE9, 0x8B, 0x24, 0xFD, 0x70, 0xFF, 0xFC, 0xB4, 0x3E, 0xDC, 0xDE, 0xAD, + 0x1F, 0x9F, 0x4E, 0x84, 0x92, 0x28, 0x16, 0x71, 0xCC, 0x36, 0xCF, 0x9B, + 0x3C, 0x8B, 0xA7, 0xD3, 0xEC, 0x27, 0x5F, 0xDF, 0x5C, 0x5D, 0x2F, 0x19, + 0x67, 0x8C, 0x0B, 0xEB, 0x5C, 0x70, 0x4E, 0xCA, 0xF1, 0x71, 0xB3, 0x0F, + 0x10, 0x6F, 0xF7, 0xC7, 0x32, 0xCF, 0x07, 0xE5, 0x1E, 0xB7, 0x87, 0x00, + 0xC0, 0xDD, 0xE3, 0xD3, 0xEE, 0xB0, 0xE7, 0x9C, 0x69, 0xA3, 0x7B, 0x29, + 0x2F, 0x57, 0xD3, 0x2C, 0x61, 0xDE, 0xA1, 0xF5, 0xB6, 0xB5, 0xC6, 0x24, + 0x11, 0xD2, 0xC6, 0x6C, 0x0E, 0xF5, 0xDB, 0xF7, 0xEB, 0x61, 0x30, 0x8C, + 0xF1, 0xF3, 0xB3, 0x79, 0xF0, 0x7E, 0xB7, 0xAF, 0x82, 0xF7, 0x87, 0x63, + 0xDD, 0x74, 0xE3, 0x38, 0x2A, 0x0F, 0x40, 0x14, 0xF1, 0x45, 0x99, 0x4E, + 0x27, 0x69, 0x39, 0xCB, 0x29, 0xA3, 0xB3, 0x59, 0x51, 0xCE, 0xCA, 0x8B, + 0x8B, 0xE5, 0xE5, 0xC5, 0xE5, 0x72, 0x35, 0x7B, 0x71, 0xBD, 0xBC, 0xB9, + 0xB9, 0xFA, 0xFA, 0x9B, 0x4F, 0x16, 0x8B, 0x32, 0x8D, 0x93, 0xBE, 0xED, + 0xDA, 0xBE, 0xFF, 0xCD, 0xEF, 0x1E, 0xF4, 0x68, 0x29, 0xA7, 0x0F, 0xCF, + 0x8D, 0x55, 0x5A, 0xF7, 0xE3, 0xE1, 0xD0, 0x6E, 0x36, 0xC7, 0xAF, 0xDE, + 0xBC, 0xB0, 0xC6, 0xFD, 0xDD, 0xEF, 0x3F, 0xFC, 0x70, 0xF7, 0x6C, 0x6C, + 0xC0, 0x18, 0xE4, 0x59, 0x74, 0xFF, 0xB4, 0x01, 0x10, 0x3A, 0xEF, 0xDB, + 0xAE, 0x57, 0x46, 0xA7, 0x69, 0x3C, 0x2A, 0xCD, 0xA3, 0x14, 0x52, 0xE1, + 0x31, 0xD7, 0x4A, 0x7D, 0xF9, 0xFA, 0xF2, 0xD7, 0x7F, 0x78, 0xB7, 0xDE, + 0x9E, 0x8A, 0xA2, 0x00, 0x21, 0xAC, 0x16, 0xD3, 0x24, 0x4E, 0x9E, 0xF6, + 0x6D, 0x33, 0x58, 0xCE, 0x69, 0x51, 0xE6, 0xA7, 0xAA, 0xA3, 0x8C, 0x42, + 0x84, 0x7E, 0x80, 0xAC, 0x12, 0x22, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0xF7, 0xFB, 0x77, 0x3F, 0xFB, 0xCB, 0xFF, 0x7A, 0x90, 0x32, + 0x47, 0x5B, 0x46, 0xF8, 0x7A, 0xD3, 0x54, 0x4D, 0xBF, 0xDE, 0x37, 0xFD, + 0xA0, 0xF2, 0x49, 0x52, 0xD7, 0xDD, 0x38, 0x9A, 0x41, 0x1B, 0x29, 0x25, + 0x89, 0x0A, 0x80, 0x58, 0x4E, 0x87, 0x00, 0xBC, 0xB2, 0x1E, 0x41, 0x90, + 0x94, 0x17, 0x34, 0xCA, 0xEB, 0xD3, 0x3E, 0x38, 0x9B, 0x24, 0xE2, 0x54, + 0xB5, 0x00, 0x40, 0x04, 0xC2, 0xA9, 0x3A, 0x79, 0x60, 0x11, 0x41, 0x9C, + 0x47, 0xC3, 0xA0, 0x42, 0x00, 0x2F, 0xAF, 0x5F, 0x50, 0x22, 0x0E, 0x55, + 0xD3, 0x8F, 0x3A, 0x4E, 0x12, 0x65, 0xFD, 0xE9, 0xA4, 0x8E, 0x27, 0xE5, + 0x3C, 0xA0, 0x98, 0x58, 0x1B, 0xD6, 0xBB, 0xEE, 0xDD, 0xED, 0x13, 0x15, + 0xAC, 0x93, 0xEE, 0xC3, 0x87, 0xAD, 0xB5, 0x61, 0x31, 0xCF, 0x29, 0x21, + 0xDB, 0x63, 0x1B, 0x40, 0x68, 0xDA, 0x6E, 0xBF, 0xAF, 0x20, 0x42, 0x79, + 0x96, 0x54, 0x75, 0xC7, 0x39, 0xD7, 0xDA, 0x10, 0x82, 0x30, 0x42, 0xF7, + 0x4F, 0x87, 0xB6, 0xD3, 0xDA, 0xD8, 0x5F, 0xFF, 0xE1, 0x7D, 0x37, 0xEA, + 0xE7, 0xCD, 0xE9, 0xC3, 0xDD, 0xB6, 0x1B, 0xB4, 0x75, 0x16, 0x01, 0x3C, + 0x0C, 0xD6, 0xFB, 0x00, 0xAC, 0x5B, 0x4C, 0xCB, 0x49, 0x99, 0xDD, 0xDD, + 0x6D, 0x28, 0xA6, 0x20, 0xF8, 0xAE, 0x97, 0xC3, 0xA8, 0xB9, 0xE0, 0x8C, + 0xB2, 0xBB, 0xC7, 0xCD, 0x7A, 0x77, 0x18, 0x95, 0x31, 0xD6, 0x22, 0x44, + 0xE4, 0x20, 0x01, 0x80, 0x94, 0x12, 0x35, 0xF6, 0x04, 0x63, 0x82, 0xD0, + 0x7E, 0xBF, 0x31, 0x2E, 0xB8, 0x00, 0xF2, 0x34, 0x66, 0x94, 0x77, 0x5D, + 0x57, 0x4C, 0xE6, 0x65, 0x39, 0x69, 0x9B, 0xD3, 0xDD, 0xC3, 0xFD, 0x76, + 0xB7, 0x07, 0x10, 0x47, 0xB1, 0xD8, 0xED, 0xAB, 0x56, 0x6A, 0xCC, 0x30, + 0x44, 0x81, 0x32, 0xC2, 0x62, 0xDA, 0xF6, 0x43, 0x00, 0x01, 0x13, 0x6C, + 0x3D, 0xE0, 0x9C, 0xF7, 0xBD, 0x0C, 0xCE, 0x2E, 0x56, 0x73, 0x29, 0x65, + 0x5B, 0x77, 0x3E, 0x84, 0x58, 0xF0, 0xD9, 0x34, 0xB9, 0xBE, 0x9C, 0x17, + 0x85, 0x48, 0xD3, 0x48, 0x30, 0xC6, 0x08, 0x2A, 0x8B, 0x54, 0x10, 0x36, + 0x8E, 0x8A, 0x46, 0x78, 0xB1, 0x48, 0xF3, 0x49, 0x44, 0x05, 0x0E, 0x30, + 0x64, 0x93, 0x08, 0x51, 0xC8, 0x63, 0x7E, 0xB1, 0x9C, 0x40, 0x68, 0x0F, + 0x87, 0xE3, 0x66, 0xB3, 0x89, 0x05, 0x86, 0x08, 0x59, 0x63, 0x39, 0x45, + 0x04, 0xE3, 0xC7, 0xE7, 0xCD, 0xA0, 0xD4, 0xB4, 0x88, 0x13, 0xC1, 0x3F, + 0xBB, 0xB9, 0xCA, 0x52, 0x56, 0xD7, 0xED, 0x7E, 0xDF, 0x3C, 0x6D, 0xF7, + 0x4A, 0x2B, 0xA5, 0x1D, 0xA5, 0xC4, 0x39, 0x87, 0x10, 0xEC, 0xBA, 0xBE, + 0x6B, 0x3B, 0x86, 0x41, 0xDB, 0x75, 0x21, 0x80, 0x37, 0x2F, 0x57, 0xE7, + 0x8B, 0xF2, 0x93, 0x97, 0x97, 0x69, 0x14, 0xBF, 0x3C, 0xBF, 0x3A, 0x9F, + 0x16, 0xC0, 0x39, 0x39, 0xDA, 0xBA, 0x19, 0x86, 0x71, 0x5C, 0x4C, 0x72, + 0xAD, 0xC6, 0x87, 0xC7, 0x83, 0x32, 0xD8, 0x07, 0x2C, 0x47, 0x23, 0x07, + 0x63, 0x1D, 0xE6, 0x34, 0x13, 0x34, 0x32, 0xD6, 0x7B, 0x80, 0xAC, 0xD1, + 0xC1, 0xD9, 0x24, 0x8A, 0x3E, 0xC2, 0x66, 0x59, 0x9C, 0x67, 0x29, 0x9D, + 0x4E, 0x12, 0xEF, 0xE0, 0xE1, 0xB0, 0xF7, 0x4E, 0x6B, 0x3D, 0x2E, 0x17, + 0xCB, 0x97, 0x97, 0xE7, 0x8B, 0x69, 0x19, 0x82, 0x7F, 0x7C, 0x5A, 0x1F, + 0x8F, 0x4D, 0x12, 0x45, 0x10, 0x62, 0x39, 0x28, 0x63, 0x83, 0x1A, 0x87, + 0xDB, 0xBB, 0x7B, 0x4E, 0xE8, 0xCD, 0xCB, 0xEB, 0x34, 0x61, 0x82, 0xE2, + 0x32, 0x15, 0x45, 0x9A, 0x21, 0x88, 0xE2, 0x24, 0x6B, 0xFB, 0xDE, 0x7B, + 0xA3, 0x8D, 0x7B, 0xDE, 0x1D, 0x62, 0x11, 0x2D, 0x26, 0x39, 0x82, 0x3E, + 0x89, 0x44, 0x24, 0xA2, 0xFD, 0xA9, 0x6E, 0xFB, 0xEE, 0x69, 0xBB, 0xDD, + 0x57, 0xA7, 0xF5, 0xFE, 0x00, 0x10, 0x86, 0xFF, 0xF3, 0xFF, 0xF8, 0xEF, + 0xCE, 0x57, 0xA5, 0x32, 0x76, 0xBD, 0xDD, 0x73, 0x42, 0x86, 0x61, 0x80, + 0x18, 0x2A, 0xE5, 0x10, 0x84, 0xDA, 0x38, 0x84, 0x08, 0x0A, 0x90, 0x40, + 0xC8, 0x90, 0x4D, 0x58, 0x98, 0x4D, 0x57, 0x00, 0x80, 0xE7, 0x5D, 0xE5, + 0x3C, 0x2E, 0xCB, 0x92, 0x12, 0x6C, 0xF4, 0x80, 0x08, 0xEB, 0xFB, 0xFE, + 0x54, 0x3D, 0xFE, 0xFD, 0x1F, 0xD7, 0x3A, 0x40, 0x80, 0x51, 0xB0, 0xE6, + 0x6C, 0x36, 0xFD, 0xF4, 0xE6, 0xE5, 0xD0, 0x28, 0xCE, 0x59, 0xC4, 0xE9, + 0x66, 0x77, 0x20, 0x14, 0x97, 0x65, 0x7A, 0xFF, 0x7C, 0x7C, 0x5A, 0x1F, + 0x5E, 0x5D, 0xA4, 0xD7, 0x17, 0x33, 0xED, 0x08, 0xA1, 0xA2, 0xED, 0xBD, + 0x87, 0x74, 0x7B, 0x38, 0x31, 0x04, 0x66, 0xB9, 0xE0, 0x1C, 0x19, 0x7D, + 0xA2, 0x34, 0x75, 0x3E, 0xC0, 0x30, 0x76, 0x5D, 0x2D, 0x15, 0x1E, 0xF4, + 0xD8, 0xC9, 0x1E, 0x7A, 0xC4, 0x68, 0x74, 0x76, 0x31, 0xEF, 0xA5, 0xED, + 0xFB, 0xA1, 0x28, 0x52, 0xAB, 0xFD, 0x62, 0x9A, 0x9C, 0x86, 0x61, 0x57, + 0xD5, 0x5A, 0xEB, 0xE3, 0xBE, 0x92, 0xFD, 0x88, 0x30, 0xBF, 0x38, 0x5B, + 0x60, 0x04, 0x8D, 0x33, 0xDE, 0xFB, 0xBA, 0x69, 0xCA, 0x24, 0x05, 0x10, + 0xAE, 0x0F, 0xD5, 0xE1, 0xD4, 0x4D, 0x8B, 0xFC, 0xCB, 0x37, 0x37, 0xC7, + 0xBA, 0xE3, 0x82, 0x1F, 0xAA, 0xF6, 0x78, 0x3C, 0xCE, 0x67, 0x93, 0x61, + 0x18, 0x29, 0xC1, 0xA3, 0xD2, 0x59, 0xC4, 0xCA, 0x24, 0x7A, 0xD8, 0x1E, + 0xCA, 0x2C, 0xF9, 0xE2, 0xE5, 0x62, 0x34, 0xAA, 0x1B, 0xAD, 0x1C, 0x24, + 0x44, 0x28, 0xCF, 0x72, 0xAD, 0x54, 0x96, 0x47, 0xFB, 0xFD, 0x09, 0x40, + 0x64, 0x9D, 0x3D, 0x54, 0x15, 0x44, 0x14, 0x43, 0x18, 0x20, 0x78, 0xF5, + 0xEA, 0xEC, 0x7A, 0x31, 0x0D, 0x20, 0xB4, 0x72, 0xE8, 0x3A, 0xED, 0x03, + 0xF2, 0xDE, 0x1B, 0xE7, 0xA2, 0x28, 0x26, 0x18, 0x1B, 0xE3, 0xBA, 0xBA, + 0xE5, 0x02, 0x83, 0x10, 0xB8, 0xA0, 0x45, 0x2E, 0xAC, 0xE9, 0x1F, 0x1F, + 0x0F, 0x0C, 0xD3, 0x43, 0xDB, 0x1D, 0x9B, 0x6E, 0x9E, 0x89, 0x2F, 0x5E, + 0x5D, 0xB4, 0xD2, 0x27, 0x22, 0x3E, 0x5B, 0xAC, 0xEE, 0xD7, 0xEB, 0x53, + 0x23, 0x47, 0xE3, 0x9D, 0x73, 0xCE, 0x59, 0xAD, 0x8D, 0xF5, 0x80, 0x51, + 0xBA, 0xDE, 0x1D, 0x2E, 0xCF, 0x96, 0x14, 0x03, 0xC6, 0xA3, 0xF3, 0x8B, + 0xCB, 0x5E, 0x0E, 0x8F, 0xDB, 0xD3, 0xC3, 0xF3, 0xFA, 0xB3, 0xAB, 0xE5, + 0xA2, 0x4C, 0xFF, 0xEF, 0xBF, 0xFD, 0xF5, 0xB4, 0x28, 0x00, 0x80, 0x9F, + 0xBF, 0x79, 0xBD, 0x9A, 0x17, 0x9D, 0x1A, 0xFE, 0xE3, 0xDF, 0xBD, 0x5B, + 0x2E, 0x8A, 0x38, 0x25, 0x01, 0x50, 0xD9, 0x8D, 0x8B, 0x92, 0x7F, 0xB8, + 0x7D, 0xE0, 0xD9, 0x62, 0xBE, 0xB8, 0xBC, 0xFD, 0xFD, 0x5F, 0xFF, 0xEB, + 0xBF, 0xFA, 0xE2, 0xF6, 0x41, 0x6A, 0xEF, 0x4F, 0xC7, 0xFE, 0xE2, 0xC5, + 0x65, 0x9E, 0x85, 0xBE, 0xE9, 0x07, 0xE9, 0xEB, 0x5A, 0xFB, 0xE0, 0xA2, + 0xA4, 0xD0, 0x16, 0x0E, 0xF5, 0x26, 0x49, 0xE3, 0xC7, 0x4D, 0x75, 0xAA, + 0x9A, 0xC5, 0x6C, 0x1E, 0x15, 0xB3, 0xB6, 0xDE, 0x31, 0x8A, 0x2F, 0xCE, + 0x17, 0x79, 0x9E, 0xEC, 0xAA, 0x36, 0xA6, 0x28, 0x66, 0x81, 0xA0, 0x00, + 0x11, 0xC4, 0x98, 0x95, 0x69, 0x3E, 0x2A, 0xD5, 0xF7, 0xC3, 0x74, 0x3A, + 0xF3, 0x0E, 0x9C, 0xAA, 0x46, 0x29, 0x1D, 0x20, 0xEC, 0xA4, 0xA6, 0x84, + 0x3B, 0xE7, 0xA8, 0xC0, 0x59, 0xC2, 0xA6, 0x45, 0xEA, 0x9C, 0xDF, 0x6D, + 0x77, 0x8F, 0x9B, 0xC3, 0xA0, 0xD4, 0x8B, 0xB3, 0x19, 0x40, 0x30, 0x66, + 0x78, 0x56, 0x4E, 0xAA, 0x4A, 0x8D, 0x56, 0x3F, 0x6D, 0xF6, 0x93, 0x22, + 0x87, 0x10, 0xCC, 0xCB, 0xDC, 0x05, 0x68, 0xAD, 0x2D, 0xCA, 0xD2, 0x9A, + 0xD1, 0x6A, 0xC5, 0x19, 0xEB, 0x95, 0xFD, 0xF1, 0xF6, 0x69, 0xB5, 0x9A, + 0xC6, 0xB1, 0xC8, 0x62, 0x91, 0x66, 0x6C, 0xD0, 0xF6, 0xB0, 0xAB, 0x17, + 0xB3, 0xC9, 0xF3, 0xBE, 0x62, 0x51, 0x6A, 0xE5, 0xF0, 0xA7, 0xDF, 0xDC, + 0x8C, 0xCE, 0xFE, 0xDD, 0xAF, 0xDE, 0x0D, 0x83, 0x52, 0xD6, 0x29, 0x35, + 0x4E, 0xA7, 0xB9, 0xE0, 0x94, 0x10, 0xFA, 0xB8, 0xDD, 0x37, 0x4D, 0xE7, + 0x5D, 0x88, 0x45, 0x74, 0xB7, 0xDE, 0xC9, 0x61, 0x9C, 0x4F, 0xA7, 0x10, + 0x41, 0x0C, 0x81, 0x20, 0xB8, 0xED, 0xDA, 0x7D, 0xD3, 0xCE, 0xA7, 0x93, + 0xB2, 0xC8, 0x39, 0x13, 0x71, 0x3A, 0xF9, 0xF0, 0xFE, 0xDD, 0x6C, 0x3A, + 0x3B, 0x5B, 0xCC, 0xB7, 0xDB, 0xED, 0x47, 0x4E, 0x68, 0xD4, 0xDA, 0xFB, + 0x90, 0xA5, 0x1C, 0x62, 0xD4, 0xC9, 0x61, 0x3E, 0xCB, 0x61, 0x70, 0x5C, + 0x70, 0x07, 0x90, 0xF3, 0x60, 0xEC, 0x07, 0x1F, 0x10, 0xE7, 0x74, 0xEC, + 0x3B, 0xE8, 0x5C, 0x39, 0xCF, 0xF5, 0x30, 0xD6, 0x75, 0xFF, 0xCF, 0xFE, + 0xFC, 0xAB, 0x59, 0x96, 0x4A, 0x39, 0x1C, 0x9A, 0xC1, 0x79, 0x4B, 0x09, + 0xD4, 0xCA, 0x00, 0x48, 0x8C, 0xC5, 0x3E, 0x20, 0xCA, 0x41, 0x14, 0x11, + 0x08, 0x3C, 0x12, 0xEC, 0x78, 0x68, 0xFB, 0x7E, 0x28, 0x26, 0x85, 0x1A, + 0x35, 0x40, 0x30, 0x66, 0x74, 0x39, 0x9B, 0x04, 0xEF, 0xBD, 0xF3, 0x8B, + 0x45, 0x99, 0xC4, 0x82, 0x13, 0xD1, 0x34, 0xED, 0x30, 0x8C, 0x7D, 0xD7, + 0x10, 0x4C, 0x63, 0xCE, 0xBA, 0xBE, 0xAB, 0xFB, 0xE6, 0x58, 0xB7, 0x11, + 0x17, 0x75, 0xDD, 0x9F, 0x9D, 0x2F, 0xD2, 0x34, 0x46, 0x18, 0x72, 0xC6, + 0x3E, 0xEE, 0x17, 0x20, 0x8C, 0x30, 0xC1, 0x46, 0xAB, 0x5E, 0xAA, 0xFA, + 0x20, 0x8D, 0x0A, 0xC6, 0x2B, 0xEB, 0x6C, 0x96, 0x44, 0x5F, 0x7C, 0xF6, + 0x5A, 0x20, 0xCC, 0x10, 0xEF, 0xA4, 0x62, 0x8C, 0x0C, 0xAA, 0x5F, 0xEF, + 0x8E, 0x1E, 0x84, 0xB6, 0x1B, 0xB2, 0x24, 0x22, 0x94, 0x34, 0x9D, 0x8C, + 0x38, 0x27, 0x84, 0x51, 0x22, 0x7C, 0xF0, 0xA3, 0x32, 0xDE, 0xDB, 0x22, + 0x67, 0x69, 0x9E, 0x58, 0x17, 0xA4, 0xB4, 0xBB, 0xFD, 0xC9, 0x6A, 0x47, + 0x88, 0x35, 0x76, 0xDC, 0x1F, 0x95, 0x36, 0x3E, 0x4F, 0xE9, 0xCD, 0xF5, + 0x72, 0x39, 0x9B, 0x36, 0xED, 0x30, 0x18, 0x8F, 0x31, 0xC3, 0x04, 0x1C, + 0x0E, 0x07, 0xAF, 0x8D, 0x32, 0xE6, 0x77, 0xEF, 0x1E, 0x10, 0x66, 0xD6, + 0xD9, 0xF7, 0xF7, 0x4F, 0x93, 0x3C, 0xFB, 0xFC, 0xE6, 0xE5, 0xFE, 0x74, + 0x48, 0xE2, 0x68, 0xBE, 0x58, 0x4C, 0xCB, 0x49, 0x2C, 0x92, 0x57, 0x2F, + 0x5F, 0x5B, 0x67, 0x0F, 0xA7, 0x1D, 0x42, 0x4C, 0x0E, 0x63, 0x7D, 0xB8, + 0xED, 0xDB, 0x26, 0x00, 0x96, 0xA5, 0x05, 0xA5, 0xFC, 0xEE, 0x79, 0x53, + 0x96, 0x85, 0xD1, 0x5A, 0x99, 0x51, 0x2B, 0xB3, 0x98, 0x9F, 0x93, 0x1F, + 0x7E, 0x7C, 0xD8, 0xEF, 0x4F, 0xB3, 0x79, 0x6C, 0x94, 0x6B, 0x1B, 0xBD, + 0xD9, 0x1E, 0xAD, 0x77, 0xC3, 0x68, 0x9A, 0x5A, 0x41, 0x04, 0x09, 0x42, + 0x11, 0x27, 0x08, 0xFA, 0xCF, 0x6F, 0x32, 0x42, 0x48, 0x33, 0x1C, 0x29, + 0x61, 0x59, 0x42, 0x93, 0x24, 0x21, 0x8C, 0xC4, 0x1C, 0x3B, 0x97, 0x36, + 0x7D, 0x7B, 0x52, 0xCF, 0x08, 0xF5, 0x9F, 0x7F, 0x7E, 0x65, 0x90, 0xB0, + 0x2E, 0x18, 0xA5, 0x5E, 0x2E, 0x16, 0xB2, 0x95, 0x2E, 0xF8, 0x6E, 0x90, + 0x6F, 0x3F, 0xEC, 0xA5, 0xD2, 0x11, 0x87, 0xBB, 0x8A, 0xF5, 0x83, 0x89, + 0x63, 0x3A, 0x2D, 0xCB, 0xC7, 0x67, 0xA9, 0x6D, 0x60, 0x91, 0xF9, 0xFB, + 0xB7, 0x0F, 0x5D, 0xD7, 0x5E, 0x9E, 0x9F, 0x67, 0x11, 0x47, 0x10, 0xC0, + 0x1E, 0x45, 0x2C, 0x43, 0x88, 0x1A, 0x2B, 0xA5, 0x54, 0x51, 0x54, 0xAE, + 0xF2, 0xB4, 0xD5, 0x68, 0x81, 0xD1, 0x0F, 0x6F, 0xFF, 0xB0, 0x5F, 0x1F, + 0xAF, 0xAF, 0x2F, 0x3C, 0x02, 0x01, 0x85, 0xA6, 0xAD, 0xCC, 0x18, 0x30, + 0x0A, 0xDD, 0x38, 0xBE, 0x58, 0x14, 0x5C, 0x70, 0xF0, 0xEA, 0xA2, 0x6B, + 0xC7, 0x63, 0x63, 0x22, 0x4E, 0xB3, 0x8C, 0x74, 0xCA, 0x3E, 0x3D, 0x1F, + 0xE6, 0x59, 0x91, 0xC6, 0x51, 0xD3, 0x36, 0xA3, 0x94, 0x82, 0xE0, 0xCF, + 0x5E, 0x5E, 0xA6, 0x69, 0x1A, 0x82, 0x1D, 0xC7, 0xD1, 0x59, 0x3B, 0x9F, + 0x4E, 0xBA, 0xB6, 0x61, 0x04, 0x71, 0x04, 0x10, 0xC7, 0x45, 0x84, 0xB5, + 0xEA, 0x9D, 0x51, 0xC3, 0x10, 0xFA, 0x21, 0xDF, 0x1E, 0x2B, 0x26, 0x18, + 0xE5, 0x6C, 0x52, 0xE6, 0xB2, 0x1F, 0xF3, 0x32, 0x39, 0x1D, 0xEB, 0x61, + 0xD4, 0x1F, 0x27, 0x6B, 0x40, 0x80, 0xC6, 0x98, 0xC1, 0x38, 0x82, 0xB1, + 0x55, 0x1A, 0x05, 0x72, 0xFF, 0xBC, 0x7B, 0xDA, 0x6C, 0xE3, 0x2C, 0xF1, + 0x1E, 0x30, 0x4A, 0xE5, 0xA8, 0x8D, 0xF3, 0xC3, 0xE0, 0x37, 0xBB, 0x6E, + 0x91, 0xE3, 0x9B, 0x17, 0x17, 0x51, 0x8C, 0xA3, 0x38, 0xA2, 0x44, 0x28, + 0x95, 0x5E, 0x2C, 0xE7, 0x10, 0x82, 0xBF, 0xFE, 0x9B, 0xDF, 0xD4, 0xC7, + 0xFA, 0xDB, 0xCF, 0x2F, 0x49, 0x84, 0x0B, 0x4C, 0x12, 0x2E, 0x6E, 0x1F, + 0x1F, 0xEF, 0x9E, 0x36, 0x84, 0x8A, 0x28, 0x8A, 0x4E, 0x7D, 0x6F, 0xAC, + 0x3D, 0xB6, 0x72, 0x31, 0x99, 0x18, 0xEB, 0x3E, 0xA2, 0x83, 0xC6, 0xC3, + 0xD5, 0x74, 0xFE, 0x8B, 0xBF, 0xFB, 0xD5, 0x30, 0x2A, 0xE7, 0xEC, 0x2C, + 0x4D, 0xFE, 0xF4, 0xAB, 0x4F, 0xFE, 0xC3, 0xAF, 0x7E, 0x5B, 0x4E, 0xE6, + 0x84, 0x90, 0x57, 0xAF, 0x2E, 0x38, 0x63, 0x6D, 0xD7, 0xBC, 0xF9, 0x3C, + 0xFE, 0xFE, 0x47, 0x4A, 0x29, 0x0A, 0xC0, 0x12, 0x86, 0x96, 0x0B, 0x66, + 0x7D, 0xB4, 0xBA, 0xBA, 0xF9, 0xEE, 0x4F, 0x96, 0xBF, 0xF8, 0xDB, 0x5F, + 0x7D, 0xFB, 0xDD, 0x8D, 0xA1, 0x8C, 0x24, 0x32, 0x66, 0xEC, 0xEA, 0xF5, + 0x32, 0xE5, 0x18, 0xD8, 0x26, 0x66, 0xE4, 0xE1, 0x59, 0x75, 0xDD, 0x78, + 0x7E, 0x79, 0x56, 0xCC, 0xCF, 0x7E, 0xF3, 0x8B, 0xFF, 0xB8, 0x9C, 0x97, + 0xA7, 0xB6, 0x2F, 0x0B, 0x61, 0x9D, 0x4B, 0xCA, 0x89, 0x1C, 0x0E, 0x10, + 0xF8, 0xD9, 0x62, 0x85, 0xA8, 0xD8, 0x1E, 0xAB, 0xE0, 0x1D, 0x20, 0x2C, + 0xCB, 0x33, 0x82, 0x21, 0xE3, 0x42, 0x8F, 0x1A, 0x53, 0xC4, 0xB0, 0x68, + 0xFA, 0xE1, 0xFE, 0x61, 0x93, 0xC4, 0x29, 0x42, 0xF8, 0x67, 0xDF, 0x7D, + 0xF9, 0xE1, 0x7E, 0x7B, 0xF7, 0xF0, 0x3D, 0xE3, 0xBC, 0x2C, 0xB3, 0xBA, + 0x6D, 0x9D, 0x8F, 0xFB, 0x41, 0xEB, 0x51, 0x5F, 0x9F, 0x2F, 0x0F, 0xCD, + 0xC8, 0x38, 0x1A, 0x94, 0xDE, 0x1F, 0xDB, 0xB2, 0x14, 0x8B, 0xD5, 0x02, + 0x41, 0xD5, 0xB5, 0xDD, 0xB4, 0x48, 0xF3, 0x2C, 0x8F, 0x04, 0x7B, 0x7E, + 0x7C, 0x5A, 0x2E, 0x17, 0xDA, 0x3A, 0x8A, 0x70, 0x00, 0x24, 0xCF, 0x59, + 0x14, 0xF1, 0x68, 0x30, 0xE5, 0x37, 0xAF, 0x27, 0x93, 0xCC, 0x68, 0xD0, + 0x77, 0x92, 0x00, 0x94, 0x0A, 0x3A, 0x7D, 0x73, 0xD6, 0xF6, 0x43, 0x92, + 0xF2, 0x41, 0x19, 0x63, 0x6D, 0xD3, 0xB5, 0x79, 0x96, 0x7D, 0xF6, 0xC9, + 0xCB, 0x76, 0x1C, 0xEB, 0xAA, 0xCE, 0x93, 0x94, 0x52, 0x88, 0x09, 0xA4, + 0x0C, 0x9F, 0x9D, 0x65, 0x5C, 0xD0, 0xC3, 0xA1, 0x1D, 0x3A, 0x35, 0x5A, + 0x1D, 0x40, 0xB9, 0x98, 0x4C, 0x9F, 0x9E, 0x37, 0xD6, 0xE8, 0x46, 0x1A, + 0x82, 0xD1, 0x6A, 0x3A, 0xBD, 0xBE, 0x5C, 0x05, 0x8F, 0xB4, 0x0D, 0x4D, + 0x5D, 0x7D, 0x7A, 0x73, 0xFE, 0xE9, 0xCD, 0xBC, 0xEF, 0x54, 0xCC, 0x0A, + 0x4A, 0x67, 0xD6, 0xC1, 0x1F, 0x1F, 0x36, 0x75, 0x33, 0x20, 0x00, 0x18, + 0xC1, 0x1A, 0xE2, 0x49, 0x92, 0xDF, 0x3D, 0xAE, 0xD5, 0xAE, 0xC9, 0x53, + 0xE6, 0x02, 0x00, 0x84, 0xF5, 0x6D, 0xD7, 0x9C, 0x5C, 0x1E, 0xF3, 0x2C, + 0xE5, 0xA6, 0xEF, 0x5F, 0x5E, 0x9F, 0x2F, 0x7F, 0x3A, 0xCD, 0x12, 0x21, + 0x7B, 0x0D, 0x29, 0x5F, 0x2D, 0x23, 0x42, 0x89, 0x33, 0xEE, 0xF1, 0x79, + 0xED, 0x4C, 0x30, 0xDA, 0xBE, 0xBD, 0xDF, 0x58, 0xAB, 0x5F, 0x5D, 0xCF, + 0xEB, 0xBA, 0x8D, 0xB3, 0x58, 0x8D, 0x3A, 0x00, 0x38, 0x8E, 0x2E, 0x4A, + 0xE3, 0xE6, 0xD4, 0xCC, 0x27, 0xF9, 0x3E, 0xD4, 0x84, 0xE0, 0xCB, 0xB3, + 0xB9, 0x0F, 0x60, 0xB9, 0x98, 0xCB, 0xAA, 0x05, 0x41, 0xC7, 0x71, 0x98, + 0x16, 0x45, 0x2F, 0x43, 0xDB, 0x5B, 0x15, 0x60, 0x40, 0xEC, 0xEA, 0xE2, + 0x2A, 0x8E, 0x44, 0x51, 0xB4, 0x5C, 0x08, 0x6D, 0x8C, 0x57, 0xC1, 0x28, + 0xE8, 0xA1, 0x6E, 0xEB, 0x1E, 0x53, 0x26, 0x62, 0x01, 0x02, 0xF4, 0x84, + 0x4C, 0xCE, 0x4B, 0x6C, 0x7D, 0xD3, 0x0D, 0x8C, 0x11, 0xC1, 0xD9, 0xDD, + 0xD3, 0x16, 0x04, 0xC0, 0x19, 0x8F, 0x38, 0x4F, 0xA0, 0x90, 0x52, 0x3F, + 0x6E, 0xAA, 0xBB, 0xC7, 0x0D, 0x63, 0x2C, 0xCB, 0x12, 0x1F, 0x82, 0x33, + 0x96, 0x0B, 0x26, 0x78, 0x84, 0x61, 0xE0, 0x9C, 0xE4, 0x79, 0x16, 0x73, + 0x7A, 0x38, 0xD6, 0xBF, 0x7B, 0xFB, 0x60, 0x5C, 0x10, 0x82, 0x66, 0x79, + 0x7C, 0x76, 0x5E, 0x7A, 0x63, 0x3C, 0xCC, 0x47, 0x75, 0x7C, 0x78, 0xDE, + 0x6F, 0x0F, 0xD5, 0xFE, 0xD8, 0x72, 0xFA, 0xBD, 0xD1, 0x1A, 0xD3, 0xE8, + 0xFC, 0xFC, 0x65, 0x1C, 0x51, 0x4E, 0xA9, 0xF1, 0x26, 0x2F, 0xCA, 0x6F, + 0x10, 0xE2, 0x51, 0xF6, 0xC3, 0xDD, 0x73, 0x51, 0xCE, 0x30, 0x66, 0x49, + 0x42, 0x9F, 0xB6, 0xFB, 0xFE, 0x78, 0xE8, 0xB4, 0xB9, 0x7F, 0x3E, 0xE4, + 0xA9, 0xF8, 0xE5, 0xEF, 0x7E, 0x3D, 0x9F, 0xCE, 0xE6, 0xB3, 0x65, 0x00, + 0x38, 0x11, 0x71, 0xDD, 0xE9, 0x7F, 0xF8, 0xFE, 0xBD, 0x32, 0xF6, 0xF3, + 0x37, 0x5F, 0x7D, 0xFA, 0xFA, 0xCD, 0xEB, 0x17, 0x04, 0x22, 0xA8, 0x95, + 0x32, 0x1A, 0x11, 0x12, 0x19, 0xAB, 0xF1, 0x4F, 0x7F, 0x72, 0x03, 0x20, + 0xBC, 0x7F, 0xD8, 0x7F, 0xB8, 0xDD, 0xB5, 0x9D, 0x3A, 0x56, 0xF5, 0xE1, + 0x58, 0xC7, 0x31, 0x3F, 0x9C, 0xDA, 0xBE, 0x37, 0x4A, 0x1B, 0x46, 0x7D, + 0x00, 0x63, 0x37, 0xC8, 0xAA, 0x1D, 0x02, 0xD0, 0x6D, 0x2B, 0x23, 0x11, + 0x85, 0xE0, 0x94, 0x91, 0xB5, 0xEC, 0xDE, 0xDE, 0xEE, 0xFF, 0xBF, 0x5F, + 0x7E, 0xFF, 0xB0, 0x3E, 0x68, 0x1D, 0x30, 0x25, 0x71, 0x9C, 0xB6, 0x4D, + 0xE7, 0xAC, 0x69, 0xA5, 0x14, 0x09, 0x9D, 0xCD, 0x93, 0xA2, 0xE0, 0x69, + 0x26, 0x48, 0xCC, 0x09, 0x06, 0xC7, 0xA6, 0xF3, 0x1E, 0x16, 0x69, 0x62, + 0x74, 0xB0, 0x1E, 0x5B, 0x80, 0x1F, 0xB6, 0x95, 0xF5, 0x21, 0x89, 0x45, + 0xC2, 0xE9, 0xA0, 0xC6, 0xED, 0xA9, 0xDD, 0xD7, 0xFD, 0xF3, 0xA1, 0x5A, + 0x1F, 0xFB, 0x63, 0xA3, 0x06, 0xE5, 0xBD, 0x85, 0xBB, 0x93, 0x6C, 0xA5, + 0xC3, 0xD0, 0x5F, 0x2C, 0x27, 0x45, 0x16, 0x9D, 0x1A, 0x89, 0xBD, 0x32, + 0xAA, 0xA9, 0x1A, 0x29, 0xD5, 0xD0, 0x76, 0xE3, 0xA7, 0xAF, 0x5E, 0x30, + 0x4C, 0x4F, 0xA7, 0x91, 0xB2, 0x28, 0x00, 0x72, 0x75, 0x3E, 0x85, 0x10, + 0x07, 0x88, 0xB5, 0x76, 0x08, 0xE2, 0xEB, 0xB3, 0x95, 0x1A, 0xD5, 0x1F, + 0x7F, 0xBC, 0x9B, 0x4D, 0x8A, 0x6F, 0x3F, 0x7B, 0x45, 0x69, 0xE2, 0x00, + 0x6A, 0x8E, 0x7B, 0x0A, 0xCC, 0x7C, 0x56, 0x9C, 0x9A, 0x56, 0x0D, 0x27, + 0x86, 0x21, 0x70, 0x3E, 0x89, 0x84, 0x60, 0x10, 0x38, 0x17, 0x47, 0xAC, + 0xCC, 0x45, 0xDB, 0xC8, 0xDD, 0xB1, 0x3E, 0x56, 0xED, 0x24, 0xCF, 0x81, + 0x0B, 0x7D, 0x3F, 0x60, 0x08, 0x8D, 0x52, 0x49, 0x9C, 0x1E, 0x9B, 0xB1, + 0x9C, 0xA4, 0xCB, 0x59, 0xD9, 0x34, 0x9D, 0xD1, 0x5A, 0x08, 0xFC, 0xE6, + 0xC5, 0x95, 0x60, 0xC9, 0x87, 0x87, 0xE7, 0x2C, 0x4E, 0x08, 0xC5, 0x4D, + 0xD3, 0xAA, 0x61, 0x3C, 0x1E, 0x9B, 0x69, 0x1A, 0x57, 0x75, 0x47, 0x09, + 0xFD, 0x27, 0x3F, 0x7D, 0xE9, 0x80, 0xFD, 0x70, 0xBF, 0xBF, 0xBF, 0x3F, + 0x9C, 0xEA, 0xF6, 0xF6, 0x76, 0xBB, 0xDB, 0x77, 0x08, 0xC3, 0xB3, 0xD5, + 0xF4, 0xEA, 0x72, 0x19, 0x82, 0x3F, 0x9D, 0x3A, 0xAB, 0xD4, 0x30, 0x8E, + 0x9B, 0x7D, 0x15, 0x30, 0xC5, 0x88, 0xDC, 0x3F, 0x3E, 0xB5, 0x9D, 0xF4, + 0x20, 0x1C, 0xAB, 0x06, 0x42, 0xB0, 0x39, 0xD4, 0x04, 0xA1, 0xFD, 0xA9, + 0x3A, 0xBF, 0x7A, 0x79, 0xD8, 0x3E, 0x57, 0x75, 0x13, 0xC5, 0xC9, 0x97, + 0x9F, 0xBC, 0xF8, 0x57, 0xFF, 0xC5, 0xCF, 0x7E, 0xFF, 0xEE, 0xEE, 0x3F, + 0xFD, 0xE6, 0xFB, 0xC5, 0x62, 0xF5, 0x93, 0xEF, 0xFE, 0x6C, 0x92, 0xD3, + 0xBA, 0xD9, 0xDA, 0xB1, 0x0A, 0xC6, 0xF4, 0xCA, 0x42, 0x84, 0x2E, 0xAF, + 0xA6, 0xCE, 0x48, 0x04, 0xE9, 0x62, 0x9E, 0xE6, 0xDC, 0x0C, 0xF5, 0xDD, + 0xC5, 0x45, 0xCA, 0x08, 0xB0, 0x66, 0x78, 0x75, 0x9E, 0x7B, 0x67, 0x09, + 0x04, 0xCE, 0xA8, 0xA6, 0xE9, 0x1D, 0xC4, 0xC7, 0xD3, 0x68, 0x8C, 0x0E, + 0x48, 0x38, 0x5B, 0x4D, 0x67, 0xC2, 0x38, 0x3F, 0x9D, 0xA5, 0x8B, 0xCB, + 0x15, 0x8F, 0xE6, 0xDB, 0xDD, 0xCE, 0x7B, 0x54, 0x94, 0xD3, 0x80, 0x28, + 0x26, 0xAC, 0xDA, 0x6F, 0x9F, 0x1F, 0x36, 0x14, 0x53, 0x00, 0xE0, 0xDD, + 0xFD, 0xAE, 0xEB, 0x06, 0x6D, 0xFD, 0xFB, 0xF7, 0x5B, 0x00, 0x21, 0x63, + 0x14, 0x22, 0x54, 0xD7, 0xDD, 0xF1, 0xD8, 0xD6, 0xDD, 0xA0, 0x8C, 0xF5, + 0x21, 0x6C, 0xF6, 0xC7, 0x51, 0xE9, 0xE0, 0xBD, 0xF3, 0xBE, 0xE9, 0x86, + 0x61, 0xB4, 0x9D, 0xD4, 0x8B, 0x69, 0x39, 0x9B, 0x24, 0x88, 0x12, 0x88, + 0x08, 0x15, 0xD8, 0xF9, 0x60, 0x47, 0x4F, 0x30, 0xE6, 0x2C, 0x2C, 0x66, + 0x49, 0x99, 0xA5, 0x7A, 0xD4, 0xD7, 0xE7, 0xAB, 0xD5, 0xA2, 0xC0, 0x84, + 0x6D, 0x76, 0xA7, 0xBC, 0xE0, 0x16, 0x90, 0xED, 0xAE, 0x99, 0x16, 0x29, + 0x86, 0xE8, 0x58, 0x75, 0x51, 0xC4, 0x41, 0x08, 0x94, 0x62, 0xEF, 0x82, + 0x0F, 0x80, 0x32, 0x02, 0x43, 0x58, 0xCD, 0xCB, 0x2C, 0x62, 0x9C, 0x90, + 0xED, 0xA1, 0x81, 0x18, 0xAE, 0x96, 0x79, 0xD3, 0x48, 0x29, 0xC7, 0xC3, + 0xA9, 0xDD, 0x57, 0x7D, 0x5D, 0x0F, 0xBB, 0x6D, 0x9D, 0xE7, 0x59, 0x31, + 0xCD, 0xA6, 0xD3, 0x82, 0x22, 0x54, 0x66, 0xEC, 0xCB, 0xCF, 0xAE, 0xA7, + 0x45, 0x51, 0x64, 0xD9, 0x3F, 0xFD, 0xF9, 0x57, 0xF3, 0x69, 0x52, 0xE4, + 0x49, 0xCC, 0xA9, 0xB6, 0x36, 0xA2, 0x60, 0x39, 0x89, 0x77, 0x87, 0x4A, + 0x8D, 0xF6, 0x7C, 0x5E, 0xCE, 0xA7, 0x45, 0x9E, 0xB2, 0x17, 0x97, 0x93, + 0x32, 0x8D, 0x2E, 0x17, 0xE5, 0xF5, 0x59, 0x9E, 0x70, 0x76, 0xFF, 0xB4, + 0x33, 0xD6, 0xBE, 0xB8, 0x9A, 0x9D, 0xAF, 0xA6, 0x57, 0x67, 0x8B, 0xC5, + 0xB4, 0x7C, 0x7A, 0xDA, 0x49, 0xD9, 0x5F, 0xAC, 0x32, 0x65, 0xED, 0x64, + 0x52, 0x9C, 0x2D, 0x56, 0xCF, 0xEB, 0x36, 0x00, 0x34, 0x68, 0xD3, 0x49, + 0xD5, 0x76, 0xC3, 0xC3, 0xC3, 0x3E, 0x40, 0x7C, 0x71, 0xB9, 0x58, 0xCD, + 0x27, 0x4D, 0xDF, 0xDD, 0x3E, 0xAC, 0x47, 0xA5, 0x16, 0xD3, 0xC9, 0x76, + 0x7F, 0x94, 0xBD, 0x2A, 0x26, 0xD9, 0xFD, 0xFD, 0x66, 0x1C, 0xF5, 0x20, + 0x07, 0xEF, 0xFC, 0x7C, 0x3A, 0x35, 0x4A, 0xC3, 0x00, 0x8B, 0x24, 0x59, + 0x4C, 0x0A, 0xA3, 0xEC, 0xF3, 0xF3, 0x5E, 0x29, 0xED, 0x02, 0x7A, 0x5E, + 0x1F, 0x76, 0xA7, 0x4A, 0x79, 0x6B, 0x83, 0x03, 0x88, 0x1A, 0x1B, 0x20, + 0x20, 0x4A, 0x99, 0x0F, 0x1F, 0x9E, 0xC7, 0x41, 0x77, 0xED, 0x78, 0x7B, + 0xF7, 0x7C, 0xFF, 0xB8, 0x11, 0x82, 0x03, 0x88, 0xFA, 0x56, 0x9E, 0x6A, + 0x79, 0xDA, 0x57, 0xDA, 0x58, 0x40, 0x10, 0xE3, 0x22, 0x38, 0xFF, 0xB1, + 0xFB, 0xDB, 0xF6, 0xE3, 0x7A, 0x7F, 0xDA, 0xD7, 0xCD, 0xA1, 0xEE, 0x06, + 0xE3, 0xF3, 0x49, 0x02, 0x29, 0xFA, 0x68, 0x65, 0x3E, 0x6F, 0x0E, 0x84, + 0x92, 0x43, 0xDD, 0x00, 0x08, 0x3B, 0x39, 0x48, 0x39, 0x36, 0x9D, 0x74, + 0xCE, 0x2B, 0x65, 0x5B, 0x69, 0x46, 0xEB, 0xAC, 0x73, 0xA3, 0x36, 0xC7, + 0xBA, 0x9D, 0x96, 0x65, 0x56, 0x4C, 0xA2, 0xA8, 0x0C, 0x01, 0x12, 0x82, + 0x9B, 0xAE, 0x2F, 0xB2, 0xDC, 0xFB, 0xA0, 0xB4, 0xA7, 0x98, 0x6E, 0xF7, + 0x55, 0x27, 0xD5, 0xD3, 0xF6, 0x74, 0xF7, 0xB4, 0x3B, 0x54, 0xB2, 0x1F, + 0x95, 0x36, 0xC3, 0xF9, 0x62, 0xCE, 0x44, 0x4C, 0x18, 0xAD, 0xBB, 0xBE, + 0xAA, 0x07, 0xCE, 0xA2, 0x38, 0x9B, 0xB6, 0x83, 0xF3, 0x80, 0x50, 0x22, + 0xCA, 0x24, 0xAF, 0xAB, 0xB6, 0xED, 0xBA, 0x63, 0xD5, 0xD6, 0x9D, 0x62, + 0x4C, 0x7C, 0xF1, 0xE9, 0x97, 0x6D, 0xD3, 0x0C, 0x4A, 0x87, 0x78, 0x01, + 0x30, 0xE6, 0xA1, 0x02, 0xC0, 0x30, 0xEC, 0xE0, 0xFF, 0xF2, 0x3F, 0xFD, + 0xF7, 0xBB, 0x43, 0xFD, 0xFD, 0x8F, 0x0F, 0xFB, 0xAA, 0xA9, 0xDA, 0x61, + 0x54, 0x9A, 0x52, 0x7E, 0xB6, 0x8A, 0xE5, 0xA0, 0xBE, 0x7F, 0xBB, 0x4E, + 0x12, 0xFA, 0xC5, 0x27, 0xD3, 0x61, 0x18, 0xA5, 0x52, 0x6F, 0x5E, 0x5C, + 0xDD, 0xBC, 0xB8, 0x4A, 0x78, 0x2C, 0x04, 0x33, 0xCE, 0x76, 0xA3, 0x46, + 0x04, 0x3B, 0x6B, 0x21, 0xC4, 0xC6, 0x04, 0xA3, 0x64, 0xD3, 0x8D, 0x7D, + 0x6F, 0xFB, 0xBE, 0x9B, 0x2F, 0x0A, 0xCC, 0x88, 0xB1, 0x7E, 0x3E, 0xCD, + 0x0B, 0xCE, 0x20, 0xF0, 0x49, 0xC6, 0xB3, 0x3C, 0x1D, 0x8C, 0xFA, 0xFE, + 0xF7, 0x1F, 0xB0, 0xE7, 0x8C, 0xF2, 0x7D, 0x35, 0x54, 0xBD, 0x36, 0x01, + 0x01, 0x60, 0xEB, 0x6A, 0xDB, 0xF4, 0x26, 0x49, 0x32, 0x67, 0xAD, 0x73, + 0xDE, 0xF9, 0x70, 0xBE, 0x2C, 0xF3, 0x4C, 0x5C, 0x9D, 0x17, 0x31, 0x47, + 0xC6, 0x04, 0x17, 0x50, 0x73, 0xA8, 0xAD, 0x1C, 0xE6, 0xCB, 0xB9, 0x0A, + 0xA0, 0x6F, 0xF7, 0x80, 0xB0, 0xB6, 0xEF, 0x10, 0xF4, 0xD3, 0xC9, 0xF2, + 0x78, 0x90, 0x49, 0x46, 0x26, 0xF9, 0xC4, 0x06, 0x98, 0x26, 0x74, 0x3A, + 0x15, 0x2E, 0x60, 0xA5, 0x3D, 0xA5, 0x28, 0x62, 0xA4, 0xDE, 0xF7, 0xFB, + 0xAA, 0xD5, 0x1E, 0x5D, 0x9C, 0x15, 0xFD, 0xF1, 0xD4, 0x0E, 0x84, 0x32, + 0x4A, 0x5C, 0x43, 0x78, 0x78, 0xDA, 0xD6, 0xDB, 0x43, 0x73, 0xBD, 0x2A, + 0xEC, 0xE8, 0x08, 0x61, 0x80, 0x50, 0x67, 0x87, 0x2C, 0x8B, 0x94, 0x03, + 0xC1, 0x03, 0x6B, 0x1C, 0x08, 0xFE, 0xE1, 0x71, 0xF7, 0xFA, 0xF5, 0x45, + 0x44, 0x99, 0x0D, 0xFE, 0xF6, 0xFE, 0xFE, 0x72, 0xB5, 0xDA, 0x1D, 0xAB, + 0x63, 0xD7, 0x2F, 0x56, 0x93, 0xEA, 0xD8, 0x56, 0x55, 0xBB, 0x98, 0x67, + 0x45, 0x19, 0x2F, 0x67, 0xF3, 0xE0, 0xC9, 0xDD, 0xDD, 0x23, 0xC6, 0xB8, + 0x1F, 0x54, 0x31, 0x89, 0x8D, 0x52, 0x4D, 0x3D, 0xCE, 0x67, 0xF9, 0xDD, + 0xE3, 0xEE, 0x4F, 0xBF, 0xBD, 0x81, 0xC0, 0xEF, 0x4E, 0x95, 0x31, 0x7E, + 0xBD, 0xA9, 0x29, 0xC5, 0x59, 0x9A, 0x74, 0xFD, 0x00, 0x81, 0xBF, 0xB8, + 0x98, 0x8F, 0x83, 0x1B, 0x86, 0x76, 0xB9, 0x2C, 0x82, 0x37, 0x75, 0x3B, + 0x68, 0xED, 0x9D, 0xC5, 0xD5, 0x51, 0x2A, 0xAD, 0x29, 0x25, 0x10, 0xC1, + 0x62, 0x22, 0x70, 0x60, 0x88, 0xB0, 0x9B, 0xAB, 0xD9, 0xB4, 0x2C, 0x02, + 0xE4, 0x66, 0x6C, 0xAD, 0x83, 0x6A, 0x54, 0x88, 0xD0, 0xC5, 0x2C, 0xDF, + 0x57, 0x8D, 0xB5, 0x36, 0x2B, 0x4A, 0x1C, 0x2F, 0xFA, 0xF6, 0x3D, 0x85, + 0x92, 0x04, 0x6E, 0x0D, 0xD4, 0x44, 0x9B, 0x20, 0x60, 0x38, 0xF5, 0x6D, + 0x83, 0x20, 0x03, 0x40, 0xBB, 0x7E, 0x30, 0xDA, 0x27, 0xF3, 0x8C, 0x20, + 0x88, 0xBC, 0xF1, 0xDE, 0x69, 0x63, 0xAD, 0x85, 0xCB, 0x79, 0x71, 0x6C, + 0x3A, 0x69, 0xB1, 0xEC, 0xD4, 0xAB, 0x17, 0xD7, 0x6F, 0xDF, 0x57, 0x17, + 0x67, 0x98, 0xB2, 0xE8, 0xFE, 0x51, 0x96, 0x25, 0xE9, 0xA5, 0xAD, 0xEA, + 0x5E, 0x8D, 0xED, 0xE5, 0x6A, 0xA1, 0x03, 0xDE, 0x1F, 0xEA, 0xFD, 0xB6, + 0xAA, 0x4F, 0x2D, 0x65, 0xEC, 0x8B, 0x2F, 0x3E, 0x49, 0x53, 0x32, 0x48, + 0x29, 0xDB, 0x91, 0x32, 0x9A, 0x67, 0x99, 0xB3, 0x9E, 0x12, 0x58, 0x94, + 0x31, 0x0C, 0xE8, 0xF1, 0xE1, 0x74, 0xB7, 0xDE, 0x4E, 0xCA, 0x02, 0x23, + 0xB4, 0xDB, 0x1F, 0x44, 0x92, 0x96, 0x59, 0x9C, 0xA5, 0xA2, 0x69, 0xFA, + 0xDD, 0xA9, 0xBD, 0x3C, 0x3F, 0xB3, 0x5A, 0x47, 0x82, 0xCC, 0xE6, 0x13, + 0xC1, 0xE8, 0x38, 0x0E, 0xF3, 0x49, 0x66, 0x46, 0xF5, 0xF8, 0xF4, 0x14, + 0x47, 0xE4, 0xEC, 0xAC, 0x84, 0xCE, 0xCF, 0xCA, 0x05, 0xC5, 0x34, 0x4B, + 0x89, 0x54, 0x76, 0x7F, 0xA8, 0x08, 0x8B, 0x1B, 0xE9, 0x81, 0x77, 0x89, + 0x60, 0xC6, 0xFA, 0xDD, 0xA9, 0x3E, 0x1C, 0x6A, 0x1E, 0xD1, 0xA2, 0x88, + 0xBB, 0x61, 0xBC, 0xBA, 0x98, 0x05, 0x1B, 0xAC, 0x35, 0x49, 0x12, 0xA5, + 0x9C, 0xAE, 0xB7, 0xBB, 0x61, 0xF0, 0xD3, 0xF9, 0xDC, 0x01, 0x7B, 0x3C, + 0xB5, 0x55, 0x33, 0xEC, 0x8F, 0x95, 0xF3, 0x20, 0x12, 0x3C, 0x8D, 0xA3, + 0x38, 0xE2, 0x2E, 0xF8, 0xD9, 0x3C, 0xC7, 0x1E, 0x46, 0x0C, 0x11, 0x4A, + 0xAC, 0xF3, 0xF3, 0xB3, 0xD4, 0x18, 0x1D, 0x20, 0xB0, 0x2E, 0x0C, 0xA3, + 0x62, 0x9C, 0x9B, 0xD1, 0xBE, 0xFD, 0xFE, 0x69, 0xBB, 0x3D, 0x5C, 0x5F, + 0x5C, 0x20, 0x08, 0x4F, 0x4D, 0x8F, 0x31, 0x0A, 0xC1, 0xCD, 0xA7, 0x25, + 0xC1, 0x70, 0x31, 0x4B, 0xD4, 0xA8, 0xF7, 0x75, 0x37, 0x29, 0xD3, 0xE5, + 0xBC, 0xEC, 0x07, 0x83, 0x10, 0x1D, 0xA4, 0x7A, 0xDA, 0x57, 0x55, 0x7D, + 0xEA, 0xFA, 0x46, 0x6A, 0xF0, 0xF2, 0xEC, 0x0C, 0x05, 0x64, 0xBD, 0x8F, + 0x62, 0xDE, 0xF6, 0x6D, 0x2F, 0xD5, 0xF6, 0x50, 0x3F, 0x6F, 0x8E, 0x37, + 0x2F, 0x2E, 0x5E, 0x9C, 0x4F, 0x17, 0x8B, 0xCC, 0x21, 0x5F, 0x1D, 0xA5, + 0x36, 0x5E, 0x8D, 0xEA, 0xEE, 0xE1, 0x99, 0x70, 0x92, 0x24, 0xA2, 0x3E, + 0xF4, 0x18, 0xE3, 0x2F, 0xDE, 0x5C, 0xCF, 0xE7, 0xA5, 0x33, 0x5E, 0x4A, + 0xFD, 0xE2, 0xF2, 0x4C, 0xF6, 0xFD, 0x72, 0x3E, 0x31, 0xCE, 0xAF, 0x37, + 0x87, 0xCD, 0xEE, 0x38, 0x9B, 0x95, 0x10, 0x85, 0xAA, 0x3B, 0x58, 0x6B, + 0x16, 0xCB, 0x49, 0x00, 0xE8, 0xEE, 0xF1, 0x04, 0x2C, 0x49, 0x63, 0x5E, + 0xE4, 0x3C, 0x8D, 0x12, 0x0C, 0xF1, 0x2F, 0x7E, 0xF5, 0xF7, 0x83, 0xD2, + 0xD7, 0x2F, 0xCE, 0x79, 0xC4, 0x9B, 0xB6, 0x27, 0x91, 0xE8, 0x4E, 0xED, + 0x30, 0xA8, 0xE5, 0xD5, 0x19, 0x81, 0xE8, 0xB8, 0x3B, 0xA6, 0x79, 0xB4, + 0x58, 0x4C, 0x02, 0x80, 0x5D, 0x3D, 0x08, 0x42, 0x29, 0xA7, 0x3F, 0x7C, + 0x78, 0x36, 0xC6, 0x2E, 0x16, 0x25, 0xC1, 0x28, 0x8E, 0xF8, 0xF3, 0xE3, + 0xDE, 0x5A, 0x77, 0xEA, 0x3A, 0xC1, 0x99, 0x1A, 0x4D, 0x96, 0x25, 0xCE, + 0xB8, 0x8F, 0x37, 0x04, 0x00, 0x7C, 0x78, 0xDA, 0x12, 0x2E, 0x8C, 0x31, + 0x93, 0x22, 0x61, 0x18, 0x9E, 0x9F, 0x5D, 0x30, 0x9E, 0x0F, 0xC3, 0x10, + 0x11, 0x5B, 0x64, 0x0C, 0x23, 0x7C, 0x38, 0x9D, 0x16, 0xB3, 0x02, 0x04, + 0xB4, 0xD9, 0x57, 0x00, 0x80, 0x53, 0xD3, 0x2E, 0x26, 0x05, 0xC6, 0xB0, + 0xEB, 0x86, 0x51, 0xAB, 0x7E, 0x1C, 0x77, 0x87, 0x8A, 0x33, 0x31, 0x5F, + 0x5D, 0x11, 0x16, 0xA9, 0xBE, 0x82, 0x98, 0xA4, 0xE5, 0xB2, 0x5C, 0x5C, + 0x04, 0xEF, 0x37, 0xEF, 0x7E, 0x7B, 0xFB, 0xFE, 0x6D, 0x9A, 0x17, 0xFB, + 0xEA, 0x04, 0x20, 0x9D, 0x4C, 0x4A, 0xC1, 0x58, 0x2B, 0x47, 0x4E, 0x09, + 0x80, 0x30, 0x16, 0x9E, 0x21, 0x29, 0x47, 0xBD, 0xD9, 0x9E, 0xC8, 0xED, + 0xC3, 0x2E, 0x8B, 0xE3, 0x6F, 0x3F, 0x7F, 0x33, 0x8C, 0xFA, 0x77, 0xEF, + 0xEE, 0x1F, 0xF7, 0xB5, 0x32, 0xBA, 0x97, 0x87, 0x51, 0xF9, 0xB3, 0x39, + 0xA1, 0x14, 0x5A, 0x0F, 0x94, 0xF2, 0x5F, 0xDD, 0x7C, 0x76, 0xBE, 0xBA, + 0x94, 0xD2, 0x34, 0x7D, 0x67, 0x8C, 0xEE, 0x07, 0x75, 0xAA, 0x25, 0xA6, + 0x74, 0x94, 0xC3, 0xA4, 0xCC, 0x84, 0x10, 0x79, 0x22, 0xCA, 0x69, 0xBE, + 0x38, 0xC3, 0x8F, 0x0F, 0x78, 0x96, 0x97, 0x79, 0x96, 0x29, 0x6B, 0x93, + 0x58, 0x4C, 0x52, 0x4C, 0x31, 0x82, 0x38, 0x3C, 0x3E, 0xEE, 0xE2, 0x88, + 0x7E, 0xF6, 0xFA, 0x42, 0xF0, 0xD8, 0x6A, 0x10, 0xA7, 0x7D, 0xD6, 0xF5, + 0x93, 0x49, 0x16, 0xBC, 0x6D, 0xFA, 0x3C, 0x04, 0xF4, 0xF0, 0x78, 0x6C, + 0x7B, 0xE9, 0x3C, 0xFC, 0xEE, 0xCB, 0xCB, 0x4F, 0x6F, 0x16, 0xBD, 0x1A, + 0xEB, 0x7A, 0x0C, 0x01, 0x76, 0x43, 0xBF, 0x5C, 0x94, 0xD3, 0x62, 0xD5, + 0x54, 0x5D, 0xC4, 0xE8, 0xCB, 0x49, 0xF6, 0xB0, 0x03, 0xEF, 0x9F, 0x76, + 0xE7, 0x67, 0xC5, 0xB4, 0x28, 0x84, 0x48, 0x62, 0xDE, 0x4C, 0xE7, 0x91, + 0x77, 0x28, 0xCF, 0x12, 0x11, 0x61, 0xED, 0xD4, 0x60, 0x34, 0x22, 0xD6, + 0xDA, 0x10, 0x78, 0x9A, 0x4C, 0x48, 0x3C, 0x9F, 0x21, 0x84, 0xA7, 0x45, + 0xEA, 0xCE, 0x22, 0xA3, 0x5C, 0x96, 0x64, 0x9B, 0x0D, 0x56, 0xBD, 0x5C, + 0x7E, 0x96, 0x13, 0x8A, 0xBC, 0x71, 0x10, 0x33, 0xA9, 0xAD, 0xD6, 0x56, + 0xE9, 0x2C, 0x2D, 0x33, 0xEB, 0x3C, 0x80, 0x80, 0x0B, 0xDE, 0x77, 0x8D, + 0x48, 0x18, 0xA6, 0x78, 0x31, 0x2B, 0x8E, 0x55, 0x7B, 0x7D, 0x7D, 0x15, + 0xBC, 0xB7, 0x50, 0x33, 0x06, 0x41, 0x00, 0x4C, 0xD0, 0xD7, 0xAF, 0x57, + 0x79, 0x1A, 0x53, 0xC6, 0x10, 0x26, 0x55, 0x55, 0xA9, 0x71, 0x28, 0xA7, + 0x05, 0xC2, 0xBC, 0x3A, 0xEE, 0x05, 0x86, 0x57, 0xAB, 0xC9, 0xED, 0xFA, + 0x10, 0x73, 0xE2, 0x94, 0xBE, 0x7F, 0xDA, 0x62, 0x46, 0x9C, 0x35, 0xAF, + 0xAF, 0x26, 0x0E, 0xD0, 0x77, 0x77, 0xCF, 0x52, 0x8E, 0xB2, 0xD7, 0x3E, + 0x40, 0x88, 0x00, 0xA3, 0xBE, 0x95, 0xD2, 0x5B, 0xAF, 0x54, 0x38, 0xB5, + 0x3D, 0x45, 0x70, 0x3A, 0xCB, 0xD4, 0x80, 0xDB, 0x76, 0x78, 0x79, 0x75, + 0xF1, 0xE2, 0x7A, 0x42, 0x11, 0xBF, 0xBC, 0x9C, 0x61, 0x84, 0x36, 0x07, + 0x43, 0x59, 0x34, 0x4D, 0x11, 0xA3, 0x64, 0x7B, 0x94, 0x98, 0x90, 0x9B, + 0xEB, 0xD5, 0xBC, 0x8C, 0x4F, 0x8D, 0x14, 0x71, 0xE2, 0xE1, 0xB6, 0xAF, + 0x4F, 0xC0, 0x49, 0xC8, 0xB3, 0x3F, 0xBE, 0x7B, 0x12, 0xA5, 0xA0, 0x08, + 0x5A, 0xDD, 0x3C, 0x6D, 0xBB, 0x2C, 0x8F, 0x29, 0x23, 0x09, 0xC6, 0x26, + 0xB8, 0x61, 0x34, 0xC6, 0x98, 0xE3, 0x6E, 0x87, 0x30, 0xCE, 0xF3, 0xD8, + 0x28, 0x0D, 0x9D, 0x8A, 0xB2, 0x98, 0x70, 0x58, 0xA4, 0x69, 0x33, 0xF0, + 0x88, 0xAB, 0x32, 0x9D, 0x0C, 0x8A, 0x26, 0xC2, 0xF4, 0x6D, 0x6D, 0x2C, + 0xAC, 0xAB, 0xF6, 0x27, 0xDF, 0xDC, 0x24, 0x71, 0xF4, 0xFD, 0x0F, 0xB7, + 0xF3, 0x59, 0x0A, 0x11, 0xF0, 0xC0, 0x53, 0x26, 0x36, 0xBB, 0xD3, 0xE6, + 0xD9, 0x85, 0xE0, 0xF3, 0x3C, 0xDE, 0x3D, 0x1E, 0xF1, 0x0B, 0xDA, 0x4B, + 0x75, 0xAA, 0x9A, 0xB3, 0xC5, 0x24, 0xCF, 0x92, 0x24, 0x13, 0xE4, 0x40, + 0x6F, 0x1F, 0xB7, 0x97, 0xAB, 0x85, 0x71, 0x5E, 0x37, 0x6D, 0x12, 0x47, + 0x6D, 0x3F, 0x1A, 0xEB, 0xB5, 0x71, 0xF7, 0x8F, 0xEB, 0x34, 0x16, 0xA3, + 0xA6, 0x00, 0x09, 0x6F, 0xDB, 0xB2, 0x8C, 0xB7, 0xFB, 0x3E, 0x89, 0xC8, + 0xD5, 0xCB, 0xEB, 0x5E, 0x8E, 0x90, 0x24, 0x2F, 0x5F, 0x9F, 0xB5, 0x55, + 0x85, 0x38, 0xDD, 0x4B, 0x3D, 0x8C, 0x63, 0x3A, 0x2D, 0x08, 0xE4, 0x4C, + 0x04, 0x4A, 0x51, 0xD3, 0xF4, 0x20, 0x40, 0x82, 0xC0, 0xE5, 0xCB, 0x65, + 0x39, 0xCB, 0xA0, 0xF7, 0x78, 0x5F, 0x01, 0x0F, 0xA3, 0x48, 0x78, 0x18, + 0x75, 0x5D, 0xAF, 0x95, 0x13, 0x71, 0x5E, 0x94, 0x91, 0x1C, 0xEC, 0xC3, + 0xE3, 0x76, 0xBD, 0xDD, 0xCC, 0x97, 0xF3, 0xAF, 0xBF, 0xBA, 0xD9, 0x6C, + 0x8E, 0x18, 0x22, 0xA3, 0xED, 0xBB, 0xF7, 0x8F, 0x93, 0x49, 0x31, 0x0E, + 0x6A, 0x35, 0x2F, 0xA1, 0x67, 0xAA, 0x69, 0xA8, 0xC0, 0xBF, 0xFF, 0xED, + 0x7E, 0x50, 0xDA, 0x84, 0xD0, 0x0F, 0x23, 0x8B, 0x85, 0x1A, 0xD5, 0x62, + 0x35, 0x9B, 0x9E, 0x4F, 0xF2, 0x49, 0x0A, 0x35, 0x7E, 0x5A, 0x1F, 0xB4, + 0x55, 0xC7, 0xBA, 0x4B, 0x93, 0x28, 0x4B, 0x92, 0x83, 0x54, 0xBB, 0x43, + 0x13, 0x20, 0xC8, 0xB3, 0x74, 0xBD, 0x93, 0x55, 0xA3, 0x38, 0xA3, 0x55, + 0xD5, 0x2B, 0x33, 0x5E, 0x5E, 0xCD, 0x31, 0x8A, 0xAD, 0x35, 0x69, 0xCC, + 0xCB, 0x34, 0x95, 0x83, 0x74, 0xD6, 0x1F, 0xAB, 0x53, 0x37, 0x0C, 0xCE, + 0x81, 0xE3, 0xF1, 0x24, 0x87, 0x3E, 0x00, 0x8F, 0x11, 0x92, 0x72, 0x74, + 0x30, 0x80, 0x00, 0xB2, 0x2C, 0x62, 0x0C, 0xDD, 0xDC, 0x9C, 0x4D, 0xA7, + 0x29, 0xB4, 0xEE, 0xEA, 0xCF, 0xBE, 0x01, 0x08, 0x20, 0x4C, 0xE2, 0x98, + 0x53, 0x04, 0x84, 0x88, 0xF4, 0x60, 0x41, 0xCE, 0x18, 0xE3, 0xDF, 0xBF, + 0x7F, 0xDE, 0x9F, 0x2A, 0x00, 0x01, 0x66, 0xE4, 0xFE, 0xE9, 0x51, 0xBB, + 0xB1, 0xC8, 0xE3, 0xFB, 0x87, 0x35, 0xE3, 0x5C, 0x8F, 0x6E, 0x54, 0x8A, + 0x44, 0x38, 0x45, 0x1C, 0x32, 0xF0, 0xF4, 0xB4, 0x16, 0x09, 0x79, 0x79, + 0xB3, 0x9C, 0x4E, 0xE7, 0x3F, 0xFE, 0x70, 0xD7, 0xB6, 0x92, 0x69, 0xD3, + 0x76, 0x03, 0xA1, 0x38, 0x04, 0xBF, 0xD9, 0x1D, 0xB9, 0x60, 0xC6, 0xDA, + 0xD3, 0xA9, 0xB5, 0xD6, 0xE6, 0x65, 0x0E, 0x03, 0x81, 0x00, 0xBD, 0x7A, + 0xB9, 0xEA, 0x86, 0x41, 0x08, 0x7A, 0x7F, 0xBB, 0x2F, 0xB3, 0xF4, 0x6C, + 0x35, 0x3D, 0xD5, 0xED, 0xB1, 0x6E, 0x9D, 0xB1, 0x10, 0x86, 0xAE, 0x97, + 0xCE, 0x07, 0x63, 0xAC, 0xB3, 0x6E, 0x3A, 0xC9, 0x92, 0x88, 0xFF, 0xF8, + 0xB0, 0xC9, 0xB3, 0x14, 0x95, 0xE9, 0xF9, 0x6A, 0x2A, 0x88, 0x93, 0xF2, + 0xD0, 0xF5, 0x43, 0x32, 0xCF, 0x01, 0xF6, 0xCA, 0x38, 0xE7, 0xDD, 0xE9, + 0x54, 0x97, 0x45, 0x31, 0x29, 0xD2, 0xBA, 0x6D, 0x16, 0xB3, 0x1C, 0x43, + 0x74, 0x3C, 0xB5, 0x71, 0x92, 0x44, 0x84, 0xC5, 0x59, 0x32, 0x9D, 0xCC, + 0x64, 0xD7, 0x9F, 0xCF, 0x92, 0xF9, 0xC5, 0xEB, 0xBA, 0x3A, 0x9C, 0x76, + 0xDB, 0xD9, 0x34, 0x75, 0x41, 0x3D, 0x1F, 0xEB, 0x87, 0xCD, 0x7A, 0x7D, + 0x3C, 0x5C, 0x52, 0x9C, 0x45, 0xD1, 0xE5, 0xD9, 0x6A, 0x3E, 0xCD, 0x4E, + 0xB5, 0x3C, 0x5F, 0x4E, 0x7D, 0x70, 0x4D, 0xD7, 0xE5, 0x09, 0xF6, 0x1E, + 0xC7, 0x09, 0xA4, 0x94, 0xC3, 0xFF, 0xEA, 0x2F, 0xFF, 0x9C, 0x12, 0x42, + 0x09, 0xC3, 0x10, 0x4E, 0xF2, 0x74, 0x73, 0xAC, 0x7E, 0xF1, 0xDB, 0x5F, + 0x27, 0x09, 0xD2, 0x06, 0x10, 0x02, 0x9C, 0x85, 0x37, 0xAF, 0x5F, 0xCD, + 0x27, 0xB3, 0x51, 0xFA, 0x53, 0x55, 0x9D, 0x9D, 0x4F, 0x77, 0xC7, 0x7A, + 0x7B, 0x68, 0xFB, 0xAE, 0xB7, 0xCE, 0x1B, 0xA3, 0x7D, 0x00, 0x10, 0x92, + 0xE0, 0x5D, 0x96, 0x65, 0x22, 0x82, 0x3F, 0xFB, 0xE6, 0xC5, 0x62, 0x32, + 0xB1, 0x1A, 0x3A, 0xFF, 0xFF, 0xB3, 0xF4, 0x1E, 0x3B, 0xB7, 0x65, 0x59, + 0x76, 0xDE, 0xF2, 0x6B, 0x6D, 0xBF, 0x8F, 0xFD, 0xED, 0x75, 0x61, 0x33, + 0x23, 0x2D, 0xAA, 0x2A, 0x59, 0x44, 0xA9, 0x23, 0x02, 0xEC, 0x48, 0x20, + 0x28, 0x40, 0xCF, 0xAB, 0x9E, 0x20, 0x40, 0x82, 0x24, 0x8A, 0x60, 0x95, + 0x32, 0x23, 0x33, 0x32, 0xE2, 0xC6, 0x35, 0xBF, 0x3B, 0x6E, 0xFB, 0xE5, + 0x8D, 0x1A, 0xA1, 0x87, 0x98, 0x8D, 0x39, 0xC7, 0xFC, 0xC6, 0x87, 0x7D, + 0xB4, 0x00, 0x40, 0x4A, 0x70, 0x5B, 0x65, 0x84, 0x40, 0xAD, 0x34, 0x00, + 0xD0, 0x25, 0x9F, 0xE5, 0x4C, 0x4A, 0x6B, 0x6D, 0xF4, 0x31, 0x28, 0x63, + 0xA4, 0x34, 0x52, 0x9A, 0xA6, 0x29, 0xDB, 0xBA, 0x62, 0x9C, 0xC5, 0xE8, + 0x5F, 0x5F, 0xB5, 0xC7, 0xCB, 0xD8, 0x0D, 0x72, 0x1A, 0xCD, 0x30, 0x2C, + 0x9F, 0x9E, 0x8E, 0x6D, 0x5D, 0x08, 0x02, 0x1C, 0x48, 0xEF, 0x5E, 0xED, + 0xF7, 0xAB, 0x82, 0xF3, 0x0C, 0x11, 0x68, 0x9C, 0x9E, 0x95, 0x75, 0xC6, + 0x35, 0x75, 0xA1, 0x6D, 0x78, 0x7A, 0x3C, 0x12, 0x8C, 0xCA, 0x3C, 0x9B, + 0x95, 0x26, 0x8C, 0x44, 0x08, 0x5E, 0x4E, 0x7D, 0xDF, 0xCD, 0xAB, 0x55, + 0x2E, 0x72, 0x8E, 0x09, 0xC9, 0x05, 0x5F, 0xD5, 0xC5, 0x76, 0x53, 0x50, + 0x4C, 0xBC, 0x75, 0x34, 0xC1, 0x60, 0x82, 0xD6, 0x32, 0xE3, 0xCC, 0xF8, + 0x88, 0x79, 0x7E, 0x3A, 0xCC, 0x11, 0x80, 0x4E, 0x2E, 0x59, 0x96, 0x63, + 0x9A, 0xB2, 0x02, 0x0F, 0xD3, 0x34, 0x0C, 0x06, 0x41, 0x78, 0xB3, 0x6D, + 0x21, 0x48, 0xED, 0x7A, 0x35, 0x2F, 0x73, 0xCE, 0x79, 0x99, 0xE7, 0xC6, + 0x99, 0x08, 0x62, 0x95, 0x0B, 0xEB, 0xBC, 0x31, 0x76, 0xEE, 0xEC, 0x5F, + 0xBE, 0xFF, 0xE1, 0xE6, 0xFE, 0x2A, 0xC6, 0xF8, 0xF1, 0xE3, 0x03, 0xE5, + 0xB8, 0xE0, 0xB4, 0xCA, 0x8B, 0xF5, 0xEE, 0x76, 0x9A, 0xE6, 0xC7, 0xA7, + 0xCF, 0x7F, 0x7F, 0xFF, 0x58, 0x94, 0xD9, 0xDB, 0x57, 0x1B, 0xCE, 0xD8, + 0x0F, 0x3F, 0x1F, 0x06, 0x69, 0x20, 0x84, 0x5A, 0xB9, 0x5C, 0x90, 0xD7, + 0xF7, 0x1B, 0x42, 0xC9, 0x38, 0x4E, 0x99, 0x60, 0x21, 0xB8, 0x63, 0xA7, + 0x62, 0x08, 0x37, 0xBB, 0x46, 0x8E, 0x96, 0x53, 0xF1, 0x87, 0xDF, 0xBE, + 0xAB, 0x32, 0x96, 0x22, 0x04, 0x3C, 0xC4, 0x20, 0x46, 0x2D, 0xAE, 0xEF, + 0xDE, 0xF6, 0x2F, 0x3F, 0x6B, 0x63, 0x08, 0x87, 0x55, 0x96, 0x1D, 0x4F, + 0x5D, 0x9D, 0x31, 0x4E, 0xE9, 0xF5, 0x8E, 0x7D, 0x7C, 0xF9, 0xFE, 0xFB, + 0x1F, 0x9F, 0x2A, 0x41, 0x68, 0xBD, 0x19, 0xB5, 0x43, 0x66, 0x4E, 0xDE, + 0x74, 0x83, 0x3B, 0x0D, 0x26, 0x02, 0xF0, 0xD5, 0xBB, 0xA6, 0xEF, 0xF4, + 0xE9, 0x2C, 0x31, 0x25, 0x9C, 0xA5, 0x2A, 0xA7, 0x09, 0x61, 0xA9, 0xA3, + 0x9C, 0xE5, 0xCD, 0xAE, 0xA6, 0x59, 0xAE, 0x54, 0xBF, 0xBF, 0x7E, 0x7B, + 0x3C, 0xE9, 0x9B, 0x35, 0xA6, 0x90, 0x5D, 0x06, 0x09, 0xB0, 0x36, 0xD2, + 0xFF, 0xEB, 0x0F, 0xC3, 0x6F, 0x7E, 0xFF, 0x0D, 0x23, 0xE1, 0x70, 0xEC, + 0x20, 0x88, 0x55, 0x2D, 0xBE, 0xFF, 0xDB, 0x71, 0xB3, 0x59, 0x1F, 0x5F, + 0x3A, 0x98, 0xB0, 0xB1, 0x76, 0xBF, 0x5D, 0x2B, 0xA5, 0xC6, 0x69, 0xFE, + 0xE6, 0xAB, 0x57, 0x21, 0xC6, 0x97, 0x43, 0xC7, 0x38, 0xBD, 0xBD, 0x5A, + 0x69, 0xA9, 0x16, 0xE5, 0x5E, 0x4E, 0x13, 0x25, 0x04, 0x80, 0x88, 0x10, + 0xBC, 0xBF, 0xBE, 0x86, 0x30, 0x6A, 0x1B, 0x67, 0x65, 0xAF, 0xB7, 0x6D, + 0x7F, 0x39, 0x57, 0x65, 0x29, 0xB5, 0x5D, 0x94, 0xA9, 0xCA, 0x6C, 0xBF, + 0x59, 0x29, 0xA5, 0xD7, 0xEB, 0xD5, 0xAF, 0xBE, 0xBE, 0x09, 0x4E, 0x9F, + 0xCF, 0x43, 0xD7, 0x8F, 0x3E, 0xC4, 0x84, 0x30, 0xE3, 0x84, 0xE7, 0xDC, + 0x68, 0x8B, 0x21, 0xDE, 0x6E, 0x6B, 0x82, 0x10, 0xC1, 0xA1, 0xCA, 0xD8, + 0x24, 0x2D, 0x13, 0x94, 0x11, 0x9C, 0x53, 0xA1, 0xA5, 0xEB, 0x47, 0x65, + 0x12, 0xF0, 0x31, 0x90, 0x08, 0x00, 0xA4, 0xDD, 0x28, 0x61, 0x8C, 0xD3, + 0x74, 0x61, 0x82, 0x71, 0x91, 0x11, 0x8E, 0xF2, 0xAC, 0xA4, 0x58, 0xFC, + 0xDB, 0x9F, 0xFF, 0xEA, 0x43, 0x2A, 0xCA, 0x02, 0xA7, 0x28, 0x28, 0x2E, + 0xAB, 0xA2, 0xAC, 0x50, 0x08, 0x61, 0xE8, 0xD4, 0x65, 0x9C, 0xB4, 0x77, + 0xC7, 0x63, 0xDF, 0x6C, 0x5B, 0x4A, 0x31, 0x42, 0x10, 0x81, 0xB4, 0x6E, + 0xEA, 0x3A, 0x2F, 0x9F, 0x9F, 0x3B, 0x67, 0x0C, 0xC6, 0x68, 0x56, 0x4E, + 0x69, 0x57, 0xE6, 0x1C, 0xA1, 0x84, 0x28, 0x3D, 0x5D, 0xE6, 0x18, 0xE2, + 0xA6, 0x2D, 0xAA, 0xB2, 0xC8, 0x38, 0xBF, 0xB9, 0xA9, 0xBB, 0xE1, 0xDC, + 0xD6, 0x95, 0xB7, 0xBF, 0x54, 0xB0, 0xA6, 0x79, 0x94, 0x80, 0xE0, 0x63, + 0x37, 0x8E, 0xB3, 0x74, 0xD6, 0x3D, 0x1F, 0xCF, 0x08, 0xA2, 0x57, 0xB7, + 0x57, 0xD7, 0xDB, 0x76, 0x5C, 0x46, 0x51, 0x65, 0x08, 0x12, 0xAD, 0x55, + 0x59, 0xF1, 0xD7, 0xFB, 0x2D, 0x8E, 0xC0, 0xDA, 0x38, 0x2B, 0xF9, 0x72, + 0xEC, 0x94, 0x0E, 0xD7, 0x57, 0xAB, 0x69, 0x9C, 0xCA, 0x9A, 0x73, 0x41, + 0xDB, 0xB2, 0xD8, 0xAD, 0xD6, 0xDA, 0x44, 0x69, 0x6C, 0x37, 0xCC, 0x9F, + 0x9E, 0x8E, 0x88, 0xC2, 0x2C, 0x17, 0xC6, 0x99, 0x69, 0x18, 0xD6, 0x6D, + 0x1B, 0x01, 0x4A, 0x20, 0x05, 0x90, 0x8C, 0xF4, 0x77, 0x37, 0x9B, 0x18, + 0x43, 0x7F, 0x39, 0xDE, 0xDE, 0xDE, 0xC8, 0xC5, 0x76, 0xA7, 0x0E, 0x33, + 0x74, 0xEE, 0x16, 0x44, 0xA8, 0xC8, 0x08, 0xC6, 0x28, 0x44, 0x44, 0x39, + 0x57, 0xD3, 0x12, 0x5C, 0x58, 0xB5, 0x15, 0x27, 0x34, 0x02, 0xE4, 0x23, + 0x6C, 0xDB, 0x8C, 0xD2, 0x18, 0x53, 0x82, 0x08, 0xA7, 0x98, 0x18, 0x42, + 0xD6, 0x58, 0x1F, 0xD2, 0xE5, 0x3C, 0x8E, 0xA3, 0x5D, 0xB4, 0x3B, 0x0F, + 0x63, 0xF1, 0x0B, 0xF5, 0xC5, 0x69, 0x08, 0xF1, 0x5F, 0x7F, 0x78, 0x4F, + 0x08, 0xFD, 0x1F, 0xFE, 0xE3, 0x9F, 0x7E, 0xF3, 0xEB, 0xFB, 0x69, 0x92, + 0x08, 0xE2, 0xB1, 0x1F, 0x30, 0x86, 0x45, 0x59, 0xA4, 0x04, 0x96, 0x49, + 0x79, 0x1F, 0x12, 0x40, 0x98, 0xE0, 0x45, 0xD9, 0x65, 0xD1, 0x55, 0x91, + 0x31, 0xC2, 0x9E, 0x5F, 0x06, 0x9B, 0xAC, 0xD3, 0x3E, 0x25, 0x48, 0x30, + 0xBE, 0xD9, 0x35, 0xAF, 0x6E, 0x76, 0xEB, 0xA6, 0xB6, 0xCE, 0x2D, 0x5A, + 0x8F, 0xE3, 0xBC, 0x98, 0xF8, 0xFE, 0xE7, 0x8F, 0x84, 0xD2, 0xDB, 0x6D, + 0x63, 0x9C, 0xCF, 0xF2, 0x4C, 0x2E, 0x8B, 0xD4, 0x16, 0x20, 0xD8, 0x8F, + 0xDD, 0xB8, 0x98, 0x3C, 0x47, 0xFB, 0xED, 0x3A, 0x46, 0x20, 0x18, 0xC3, + 0x77, 0xD7, 0x57, 0x00, 0x00, 0x25, 0x15, 0xC2, 0xB8, 0x1B, 0xC7, 0x55, + 0x53, 0xBC, 0xDA, 0xEF, 0x86, 0x45, 0xBF, 0x9C, 0xC7, 0x65, 0x31, 0x75, + 0x2D, 0xBA, 0x5E, 0x0F, 0x53, 0xEC, 0xE7, 0xF9, 0xE7, 0x4F, 0x1F, 0x8D, + 0x8B, 0x0F, 0xCF, 0x7D, 0x48, 0x48, 0x2A, 0xED, 0xAC, 0x29, 0xCA, 0xCA, + 0x87, 0x60, 0x8C, 0x0A, 0x31, 0x42, 0x48, 0x7E, 0xFF, 0xAB, 0x6F, 0xEA, + 0x22, 0x9B, 0xA5, 0xD3, 0x1E, 0xFC, 0xEB, 0xF7, 0xEF, 0x83, 0x0F, 0x75, + 0x99, 0x75, 0xFD, 0x32, 0x4C, 0x7A, 0x98, 0x8C, 0x34, 0xAE, 0xEF, 0x66, + 0xA9, 0xFD, 0xA7, 0xA7, 0xF3, 0xCB, 0xA9, 0x7F, 0x3A, 0x74, 0x8F, 0x2F, + 0xFD, 0x34, 0xEB, 0x45, 0x59, 0xEB, 0xBD, 0xB6, 0xE1, 0xF3, 0xD3, 0xE9, + 0x74, 0x1E, 0xB4, 0x0B, 0xA3, 0xB4, 0x08, 0x51, 0x08, 0x60, 0x9E, 0x15, + 0x10, 0x12, 0xC6, 0x58, 0x5B, 0xF0, 0xC3, 0xB9, 0x2B, 0xCB, 0x2C, 0xCF, + 0xB2, 0x18, 0x03, 0xC6, 0xF8, 0xC3, 0xC7, 0x8B, 0x54, 0xEE, 0xEF, 0xEF, + 0x1F, 0x2F, 0xFD, 0x0C, 0x00, 0xBC, 0x74, 0x73, 0x04, 0x50, 0x1B, 0xDB, + 0x4F, 0xFA, 0xF3, 0xC3, 0xD9, 0xBA, 0xB4, 0x48, 0xEB, 0x9C, 0x4F, 0x08, + 0x56, 0x55, 0x89, 0x19, 0x09, 0x09, 0x8C, 0xA3, 0x54, 0x36, 0x3C, 0x7E, + 0x3A, 0xA6, 0x18, 0x41, 0x00, 0x01, 0x24, 0x2E, 0x68, 0x9E, 0x65, 0x11, + 0x02, 0x17, 0x02, 0x13, 0xB8, 0xAE, 0xD8, 0x76, 0x9D, 0x11, 0x02, 0x8B, + 0x82, 0x41, 0x1C, 0x38, 0x4E, 0xDF, 0x7E, 0xF1, 0x6A, 0xD5, 0xE6, 0xEB, + 0xA6, 0x6C, 0xCB, 0x22, 0xCF, 0x98, 0x60, 0x88, 0x61, 0x46, 0x00, 0x1D, + 0x47, 0x33, 0x2F, 0x66, 0x9C, 0x16, 0xE7, 0xC3, 0xBC, 0xA8, 0xB6, 0xC9, + 0xAB, 0x3C, 0x5B, 0xAD, 0x2A, 0x40, 0x82, 0x75, 0x66, 0xB7, 0xDF, 0xAC, + 0x56, 0x75, 0x2E, 0x44, 0x02, 0x78, 0x5A, 0x66, 0xC6, 0x81, 0x89, 0x76, + 0x7B, 0xD5, 0xFE, 0xC3, 0x1F, 0xBF, 0x1C, 0x26, 0xF5, 0xE9, 0xB1, 0xAF, + 0x9A, 0x02, 0xE2, 0x18, 0x93, 0x0F, 0xDE, 0xE6, 0x19, 0xE3, 0x9C, 0x9F, + 0xFB, 0x59, 0x19, 0x17, 0xBC, 0x1F, 0xA7, 0xB9, 0xAA, 0xCA, 0xEB, 0x9B, + 0x9A, 0x51, 0xB0, 0x6E, 0xAB, 0x2F, 0xBF, 0xBC, 0xBB, 0xBD, 0xAD, 0x61, + 0x0A, 0xCE, 0xAA, 0x84, 0x91, 0xC8, 0xF8, 0xAC, 0xFC, 0xE3, 0x61, 0x38, + 0x1C, 0x3F, 0x12, 0x62, 0x94, 0xC1, 0x1F, 0x3E, 0x7D, 0xD6, 0xA6, 0x07, + 0x31, 0x96, 0xDC, 0xBC, 0xFF, 0xF0, 0xF4, 0xFE, 0xF9, 0xA2, 0x8D, 0x3B, + 0x9D, 0x54, 0x53, 0x30, 0xCC, 0xAC, 0x55, 0xF6, 0xC3, 0xA7, 0x11, 0x0B, + 0x16, 0x83, 0x4F, 0x29, 0x60, 0x0C, 0x7F, 0xFA, 0x30, 0xCC, 0x32, 0xE6, + 0x02, 0xEE, 0xF6, 0xF5, 0xE7, 0x17, 0x39, 0xCF, 0x96, 0x73, 0x4A, 0x30, + 0x81, 0x00, 0xC7, 0x94, 0x94, 0x01, 0x4F, 0x0F, 0x03, 0x8A, 0x0E, 0xA1, + 0xEC, 0xE5, 0xF9, 0x10, 0x62, 0xA0, 0x94, 0x7F, 0x7A, 0x18, 0x23, 0xCC, + 0x5E, 0xBD, 0xDA, 0x41, 0xA0, 0x63, 0x8C, 0x8C, 0xF2, 0x71, 0x9A, 0xF2, + 0x62, 0xAD, 0x16, 0xA5, 0x26, 0xE9, 0xBC, 0xF3, 0xDE, 0xEF, 0x77, 0x6B, + 0x6D, 0xAC, 0x10, 0xAC, 0xAE, 0x72, 0x6B, 0x03, 0xA6, 0xB4, 0xC8, 0x78, + 0x59, 0xF0, 0x73, 0x3F, 0x66, 0x8C, 0x49, 0x65, 0x42, 0x88, 0x4D, 0x5B, + 0x7E, 0xF7, 0xED, 0xAB, 0xFB, 0xEB, 0x75, 0x4A, 0xF0, 0x78, 0x1E, 0xCA, + 0x3C, 0xBB, 0xD9, 0xB6, 0x21, 0x84, 0xB6, 0xAD, 0xCF, 0xDD, 0x90, 0x40, + 0x2A, 0x84, 0xA8, 0xCA, 0x22, 0x45, 0xB0, 0xAA, 0xCB, 0x52, 0xF0, 0xFF, + 0xEB, 0xFF, 0xFE, 0x7F, 0x3F, 0x3D, 0x9C, 0x12, 0x40, 0xB3, 0xB6, 0xE3, + 0xB0, 0x38, 0xEF, 0xE7, 0x69, 0x59, 0x16, 0xED, 0x23, 0xE8, 0xFA, 0xB9, + 0x1F, 0x97, 0xC3, 0xA9, 0x53, 0x5A, 0x5B, 0xEB, 0xFA, 0x7E, 0x90, 0x52, + 0x9D, 0xCE, 0xA3, 0x92, 0x12, 0x63, 0x38, 0xCD, 0x76, 0x1C, 0x24, 0xE1, + 0xC4, 0x79, 0x3F, 0x0C, 0x43, 0x37, 0x1D, 0x27, 0x6B, 0xBA, 0x41, 0xFF, + 0xFC, 0xF1, 0xF3, 0xB9, 0xEB, 0x53, 0x82, 0xE3, 0xA4, 0x01, 0xC0, 0x98, + 0x32, 0xEB, 0x7C, 0x5B, 0xE7, 0x9B, 0x55, 0xCD, 0x38, 0x90, 0x52, 0x41, + 0x4C, 0x7C, 0x8A, 0x52, 0x19, 0xE7, 0x7D, 0x82, 0x20, 0xA6, 0x88, 0x20, + 0x64, 0x8C, 0xA6, 0x10, 0x21, 0x22, 0x08, 0xD8, 0xED, 0xBE, 0xC1, 0x84, + 0x7E, 0x7A, 0x38, 0x4A, 0xA5, 0x5F, 0xCE, 0x97, 0xDD, 0xAA, 0x4D, 0x30, + 0x76, 0x43, 0x97, 0x92, 0xBB, 0xB9, 0x2A, 0x31, 0x02, 0x18, 0x21, 0x4C, + 0x93, 0x51, 0x36, 0x06, 0x64, 0x6C, 0x0C, 0x31, 0x20, 0x8A, 0x37, 0x9B, + 0xE6, 0xCD, 0xED, 0x5E, 0x1B, 0xF3, 0xD7, 0x1F, 0x3E, 0x6E, 0x9A, 0xBA, + 0xCA, 0xB8, 0xD6, 0x46, 0x70, 0x9A, 0x71, 0x2E, 0x72, 0xB1, 0x18, 0xCD, + 0x73, 0x02, 0x31, 0xF4, 0x29, 0x70, 0x8E, 0xA1, 0xC5, 0x4A, 0xD9, 0x84, + 0x41, 0x84, 0x29, 0x41, 0xE8, 0x42, 0xCC, 0x73, 0xAE, 0xB4, 0xB3, 0x1E, + 0x4C, 0x8B, 0x1C, 0x95, 0x3C, 0x5D, 0x86, 0x45, 0x1B, 0xEF, 0x7D, 0x5D, + 0x97, 0x08, 0x42, 0x4C, 0xF9, 0x6A, 0xBD, 0x79, 0x39, 0x9E, 0xCB, 0xAA, + 0x28, 0xCA, 0x0C, 0xC2, 0x10, 0xA3, 0x23, 0x04, 0xD5, 0x55, 0x01, 0x09, + 0x74, 0xCE, 0x10, 0x8C, 0x10, 0xC2, 0x31, 0x01, 0x44, 0xB1, 0x28, 0xE8, + 0x66, 0xDD, 0xDE, 0xBF, 0xBA, 0x66, 0x02, 0x13, 0x84, 0x31, 0x41, 0xDE, + 0x3A, 0x10, 0x80, 0x9E, 0x15, 0x27, 0x28, 0x67, 0xC2, 0x6A, 0x4F, 0x10, + 0x24, 0x08, 0x53, 0x48, 0x8E, 0x4F, 0x27, 0x35, 0x2B, 0x46, 0x08, 0x26, + 0x04, 0xF8, 0x84, 0x10, 0xDA, 0x6F, 0xD7, 0x6D, 0x9B, 0x27, 0x80, 0xCB, + 0x5C, 0x48, 0xA9, 0x9A, 0x36, 0x27, 0x18, 0x6E, 0x57, 0xD5, 0xCD, 0x76, + 0x7D, 0xBB, 0x6F, 0xFF, 0xF4, 0x87, 0x3B, 0x1F, 0x5D, 0xF4, 0xB6, 0xCA, + 0xC4, 0xD4, 0x0F, 0x20, 0x85, 0xC7, 0x97, 0xD3, 0xE9, 0x3C, 0x58, 0xE7, + 0xFB, 0x71, 0x51, 0xC6, 0x3E, 0x1D, 0x2E, 0x52, 0xDB, 0xBC, 0x28, 0x29, + 0x23, 0x88, 0x40, 0x42, 0x52, 0x96, 0xA1, 0x3C, 0x67, 0x29, 0x81, 0x79, + 0xD1, 0x00, 0xA4, 0x2A, 0xE7, 0x30, 0x86, 0xB2, 0xC8, 0xAD, 0x94, 0x20, + 0x85, 0x82, 0xA2, 0xAB, 0xCD, 0xEA, 0xF7, 0xDF, 0xBE, 0x2E, 0x38, 0x2B, + 0x72, 0x7E, 0xB5, 0xDB, 0xD4, 0x45, 0x96, 0xE7, 0x82, 0x60, 0x0C, 0x12, + 0x44, 0x08, 0x3B, 0xEB, 0x8B, 0x8C, 0xAF, 0xDA, 0x0A, 0x45, 0x04, 0xFF, + 0xF4, 0xC7, 0x3F, 0xA6, 0x18, 0x52, 0xF0, 0x55, 0x55, 0x86, 0x10, 0x18, + 0x45, 0xDB, 0x55, 0xAD, 0x6D, 0xFC, 0x7F, 0xFE, 0xFC, 0x67, 0xCE, 0x2C, + 0xE7, 0xE2, 0x32, 0xBA, 0xFD, 0xAA, 0xB9, 0xB9, 0xD9, 0xFD, 0xDB, 0xF7, + 0x0F, 0x5A, 0xD9, 0xFB, 0x9B, 0x9B, 0xC4, 0x8A, 0x9F, 0xDF, 0xFF, 0x74, + 0x77, 0xB3, 0xF7, 0x31, 0xBD, 0xFF, 0xF9, 0x23, 0x82, 0xA0, 0x2A, 0xCB, + 0xED, 0x66, 0xF5, 0xCD, 0x9B, 0xBB, 0x61, 0x9A, 0x1F, 0x0F, 0x47, 0xCE, + 0x73, 0xAD, 0x96, 0xEF, 0xBE, 0x7C, 0xEB, 0x9C, 0x4B, 0x29, 0x51, 0xCE, + 0xBA, 0x7E, 0x70, 0xD6, 0x46, 0xEF, 0x31, 0xE3, 0x3E, 0x05, 0x91, 0x0B, + 0x6B, 0x43, 0xD7, 0x0F, 0x5A, 0x9B, 0x37, 0xAF, 0x6F, 0xAC, 0xB3, 0x98, + 0xE0, 0xFE, 0xD2, 0xD7, 0x75, 0x5D, 0xD7, 0x45, 0x4A, 0x10, 0x26, 0xD0, + 0xD4, 0xD9, 0xA6, 0x6D, 0x20, 0xA0, 0xF3, 0x30, 0x79, 0x6B, 0x52, 0xF2, + 0x77, 0xB7, 0x2B, 0xEF, 0xBC, 0x32, 0xEE, 0xE1, 0xB1, 0xEB, 0x46, 0xB9, + 0xDB, 0xE5, 0xD2, 0x6A, 0xE3, 0xE2, 0xF1, 0xB9, 0xA3, 0x94, 0x96, 0x55, + 0x16, 0x42, 0x9A, 0x26, 0x89, 0x31, 0x74, 0x3E, 0x68, 0x6B, 0x39, 0x23, + 0x2C, 0x17, 0x08, 0xA6, 0xBB, 0x57, 0x7B, 0x8C, 0xA0, 0x73, 0x91, 0x67, + 0xE2, 0xE9, 0xC3, 0x23, 0xC1, 0xE9, 0xF7, 0xDF, 0x7D, 0xE1, 0xBC, 0xDD, + 0x6D, 0x4A, 0xA3, 0xFD, 0xF1, 0x3C, 0x77, 0xFD, 0x64, 0xAC, 0xAF, 0xF2, + 0xAC, 0xBF, 0x8C, 0xFF, 0xE1, 0xDF, 0xFF, 0xFE, 0x87, 0x8F, 0x07, 0xE3, + 0xEC, 0xAF, 0xBF, 0xB8, 0x29, 0xDA, 0xFA, 0x2F, 0x3F, 0xFD, 0x5C, 0xE7, + 0x95, 0x56, 0xAE, 0xEB, 0x94, 0x73, 0xC0, 0xC7, 0x64, 0x9C, 0xE7, 0x1C, + 0x29, 0xAD, 0x53, 0x08, 0xAF, 0x6E, 0x37, 0xC1, 0x7B, 0xCA, 0x30, 0x82, + 0x38, 0xCB, 0x58, 0xD1, 0xB0, 0xCD, 0x6A, 0x6D, 0xAC, 0xB6, 0xDA, 0x45, + 0xEB, 0xBB, 0x69, 0x2C, 0x57, 0x85, 0x77, 0x16, 0x63, 0xD4, 0xD4, 0x05, + 0x82, 0xF8, 0xF1, 0xE1, 0x1C, 0x02, 0x30, 0xD6, 0x61, 0x04, 0x67, 0xB9, + 0x28, 0xE5, 0xC7, 0x59, 0x4E, 0xF3, 0x72, 0xEA, 0x16, 0xE3, 0xE2, 0xAE, + 0xC9, 0xBE, 0xFD, 0x7A, 0x5D, 0x56, 0xC8, 0x39, 0x8D, 0x12, 0x5E, 0x57, + 0x6B, 0xC1, 0xB2, 0x10, 0xE6, 0x71, 0xD0, 0x98, 0x52, 0x17, 0xAC, 0xE0, + 0xB4, 0x9B, 0x74, 0xDF, 0xAB, 0xAB, 0x75, 0x96, 0x17, 0xD7, 0x4F, 0x2F, + 0xF3, 0xDB, 0x1B, 0x06, 0xA1, 0x20, 0xC4, 0x4B, 0x3B, 0x9D, 0xBA, 0xB8, + 0xDE, 0x97, 0xFF, 0xFB, 0xFF, 0xF9, 0x3D, 0xB0, 0xCB, 0xEF, 0xBE, 0xBD, + 0x2A, 0x5B, 0xF4, 0xBF, 0xFC, 0xAF, 0x3F, 0x8F, 0x33, 0xDC, 0xEE, 0xF2, + 0xF3, 0x79, 0x29, 0x0A, 0x4C, 0x30, 0x1A, 0x97, 0xF0, 0x74, 0x58, 0x6E, + 0xF6, 0xC5, 0x1F, 0x7F, 0x77, 0xF5, 0xBF, 0xFD, 0x1F, 0xCF, 0xD6, 0xD8, + 0x4D, 0x4B, 0xF7, 0x9B, 0x7C, 0x9E, 0x81, 0x09, 0x69, 0xB5, 0x12, 0xC1, + 0x38, 0x04, 0xD0, 0x34, 0xBB, 0xBC, 0x10, 0x2C, 0x17, 0xCF, 0x87, 0x71, + 0x9C, 0xE5, 0xDD, 0xFD, 0xA6, 0x2C, 0xF0, 0x66, 0x5D, 0x3A, 0x8F, 0x16, + 0x9D, 0xDA, 0x32, 0xEB, 0x2F, 0xE7, 0xA1, 0x57, 0x4A, 0x86, 0x53, 0xBF, + 0xAC, 0xAA, 0xAA, 0x2A, 0x8B, 0x6E, 0x9C, 0x09, 0x41, 0xDE, 0xBB, 0xA2, + 0xCC, 0xB5, 0x76, 0x0C, 0x13, 0xE3, 0x74, 0x95, 0x0B, 0xC6, 0x98, 0x8B, + 0x00, 0x40, 0x7C, 0x73, 0xB5, 0xAD, 0x0B, 0xE8, 0x5D, 0xE8, 0x47, 0x8D, + 0x90, 0xC8, 0x04, 0xE5, 0x8C, 0x58, 0x67, 0x21, 0x24, 0x7F, 0xFF, 0xF1, + 0xC3, 0xF5, 0xF5, 0x9E, 0xC2, 0x58, 0x96, 0xA4, 0x2C, 0x9B, 0x55, 0xDB, + 0x3C, 0x3F, 0xBC, 0x3C, 0x3C, 0x1F, 0xE7, 0x59, 0x19, 0xEF, 0xAF, 0x6E, + 0xB6, 0x2F, 0x2F, 0x27, 0xE7, 0x2D, 0xC6, 0x98, 0x50, 0x4E, 0x19, 0xA5, + 0x94, 0xC4, 0xE0, 0x18, 0x45, 0x94, 0xA6, 0x57, 0x77, 0xB7, 0x30, 0x86, + 0x2C, 0xE3, 0xCE, 0xC6, 0x14, 0x03, 0x23, 0x04, 0x63, 0x8A, 0x11, 0xCA, + 0xCA, 0x7C, 0x91, 0xF6, 0x6F, 0x3F, 0xFC, 0xF4, 0x97, 0x1F, 0xDF, 0x87, + 0x84, 0xA3, 0x8F, 0xAB, 0x55, 0x91, 0x89, 0xBC, 0x2E, 0x0A, 0x8C, 0xB1, + 0xF5, 0xC0, 0x7A, 0x08, 0x61, 0xF8, 0xE6, 0xDD, 0xDE, 0x69, 0xA3, 0x94, + 0xC5, 0x08, 0x25, 0x08, 0xB4, 0x33, 0xE7, 0x73, 0xDF, 0x8F, 0x73, 0x56, + 0x08, 0xE3, 0x3C, 0x21, 0xE4, 0x8B, 0xB7, 0xB7, 0x72, 0x51, 0xD6, 0xC5, + 0x9A, 0x07, 0x0F, 0x01, 0x2F, 0x1A, 0x27, 0xCD, 0xD3, 0xE3, 0x11, 0x02, + 0xD2, 0xD6, 0xE5, 0x20, 0xD5, 0xF5, 0x55, 0xEE, 0xBD, 0xB4, 0xCE, 0x17, + 0x59, 0x31, 0xCF, 0xDE, 0x85, 0x58, 0xE5, 0x55, 0x51, 0x14, 0x52, 0x8F, + 0x59, 0x91, 0x79, 0x97, 0xD6, 0x75, 0xB9, 0x59, 0x95, 0xA7, 0x7E, 0x50, + 0x0A, 0x66, 0x98, 0x0D, 0xE3, 0xF0, 0x7C, 0x3A, 0x7D, 0xFD, 0xD5, 0x2B, + 0x9E, 0xF1, 0x8F, 0x0F, 0x2F, 0xDD, 0xA2, 0x29, 0x4D, 0x8B, 0x9C, 0x6E, + 0xAF, 0x76, 0xB7, 0x57, 0xEB, 0x55, 0x59, 0x42, 0x84, 0x16, 0x69, 0x53, + 0x04, 0xD6, 0x7A, 0x4C, 0x90, 0xD2, 0x6E, 0x9A, 0x95, 0xD4, 0x76, 0x9E, + 0x66, 0x08, 0x80, 0x77, 0x96, 0x31, 0x06, 0x00, 0x6A, 0xAA, 0xFC, 0x7A, + 0xBB, 0x71, 0x09, 0xB9, 0x94, 0x10, 0xB2, 0x9C, 0x21, 0x0C, 0xA1, 0x52, + 0x9A, 0x51, 0x0A, 0x29, 0x09, 0x31, 0x28, 0xAD, 0x2F, 0xC7, 0x8E, 0xE7, + 0x9C, 0x30, 0x81, 0x11, 0x89, 0x29, 0x38, 0x67, 0x28, 0xE5, 0xBF, 0x18, + 0xD9, 0x52, 0x48, 0xD6, 0x98, 0x2C, 0x2B, 0x57, 0x75, 0xC3, 0x08, 0x20, + 0x18, 0x21, 0x80, 0x0F, 0xCF, 0xE3, 0x7E, 0xBB, 0xC1, 0x18, 0x6A, 0xB5, + 0x58, 0x6F, 0x8D, 0x0D, 0x55, 0x59, 0x16, 0x45, 0xC6, 0x39, 0x9F, 0xE5, + 0x84, 0x29, 0xD3, 0xCE, 0x40, 0x8C, 0x9D, 0xB1, 0x0F, 0x9F, 0xCF, 0x79, + 0xC6, 0x36, 0xAB, 0xD6, 0x99, 0x50, 0x55, 0x05, 0x17, 0x51, 0x2E, 0x2F, + 0x10, 0x40, 0xBD, 0x44, 0xAD, 0x03, 0xA6, 0xF0, 0xE5, 0xD8, 0x85, 0x94, + 0x10, 0x21, 0xD6, 0xC4, 0x22, 0xCF, 0x7F, 0x31, 0x57, 0x41, 0x88, 0x8B, + 0xB2, 0x32, 0xDA, 0xD5, 0x55, 0x56, 0x57, 0xFC, 0xE9, 0xE9, 0x80, 0x08, + 0xC9, 0xCA, 0x0C, 0x42, 0xE4, 0x4C, 0xCC, 0x19, 0xDE, 0xD4, 0xAB, 0xCD, + 0x6A, 0x1D, 0x63, 0x8A, 0xDE, 0x0A, 0x4A, 0xF2, 0x9C, 0x2F, 0xCB, 0xA2, + 0x94, 0xE1, 0x59, 0x41, 0x18, 0x81, 0x29, 0x09, 0xC1, 0x62, 0x8A, 0x87, + 0x73, 0xFF, 0xE1, 0xE3, 0x03, 0x84, 0x60, 0xB3, 0x6E, 0x30, 0x86, 0xFD, + 0x20, 0xE1, 0xAF, 0xBF, 0xFE, 0xC6, 0x39, 0x97, 0x67, 0x82, 0x31, 0x1C, + 0x62, 0xE0, 0x94, 0xC2, 0xE8, 0xAF, 0xF6, 0x3B, 0x63, 0x74, 0x8A, 0x0A, + 0xB3, 0xF4, 0xF9, 0xE5, 0xB4, 0x5E, 0x5D, 0xB9, 0x58, 0xD9, 0xC8, 0x5B, + 0x91, 0x9E, 0x0F, 0x87, 0xC3, 0x79, 0xB8, 0x5C, 0x4E, 0x59, 0xC6, 0x63, + 0x8C, 0x9C, 0xB2, 0xAB, 0xDD, 0xA6, 0x29, 0xC5, 0xEB, 0xFB, 0x9B, 0xBF, + 0xFE, 0xFD, 0xE1, 0xD0, 0x0D, 0x94, 0x60, 0x1F, 0xFC, 0xFD, 0x7E, 0x7D, + 0x77, 0x75, 0xAD, 0x8C, 0xED, 0xA7, 0xD9, 0x38, 0x2F, 0xE5, 0xA2, 0xA5, + 0x34, 0xD6, 0xB4, 0xEB, 0x6D, 0x53, 0x17, 0xD3, 0x22, 0x13, 0x80, 0x4F, + 0xCF, 0xCF, 0x10, 0x80, 0xD7, 0xF7, 0xF7, 0x00, 0x46, 0x63, 0x0D, 0xC6, + 0xB8, 0xAA, 0xCA, 0xCB, 0x79, 0x90, 0x52, 0x5F, 0xDF, 0x6C, 0x05, 0xA7, + 0x55, 0xC1, 0x37, 0x6D, 0xAD, 0xBB, 0x0B, 0x04, 0x98, 0x66, 0x99, 0xB3, + 0x6E, 0x99, 0xE5, 0xAC, 0xCC, 0x28, 0xF5, 0x7E, 0xDF, 0x70, 0x8A, 0x3F, + 0x3F, 0x9F, 0x16, 0x69, 0x7F, 0x01, 0xBB, 0x94, 0xB6, 0xDA, 0xE8, 0x37, + 0xAF, 0x6E, 0x63, 0x0C, 0xFD, 0x38, 0x23, 0x8C, 0x10, 0x82, 0xCE, 0xDA, + 0xF5, 0xA6, 0xD9, 0x6D, 0xDA, 0xEE, 0xD2, 0x8B, 0x8C, 0xE5, 0x4D, 0x31, + 0x0D, 0x23, 0x4A, 0x69, 0x1A, 0x25, 0x23, 0x18, 0x63, 0x34, 0x8C, 0x66, + 0x5A, 0x54, 0x99, 0x31, 0x4A, 0xE9, 0x30, 0x6B, 0x6F, 0xC3, 0x7F, 0xFA, + 0x0F, 0xFF, 0x7C, 0x1A, 0x96, 0x8C, 0xB3, 0xCD, 0xBA, 0xFC, 0xEB, 0x87, + 0xCF, 0x9F, 0x3F, 0xBF, 0xAC, 0xDB, 0xC6, 0x87, 0xF8, 0xEB, 0x2F, 0x5E, + 0x77, 0xA3, 0xFC, 0xFB, 0xC7, 0xC3, 0xCD, 0xF5, 0xF6, 0x78, 0x3E, 0x49, + 0xAD, 0x36, 0x75, 0xF9, 0xF6, 0x76, 0x17, 0x9C, 0xB7, 0x3E, 0x30, 0x41, + 0x21, 0x84, 0xEB, 0x55, 0x75, 0x7B, 0xBD, 0x39, 0x9E, 0x0F, 0x6D, 0x53, + 0x2F, 0x8B, 0xE1, 0x0C, 0x1C, 0x86, 0x29, 0x81, 0xA0, 0x94, 0x49, 0x91, + 0x28, 0xE5, 0xA4, 0xB6, 0xC6, 0xD8, 0xE4, 0x7D, 0x5D, 0x55, 0x8C, 0x31, + 0x0C, 0x43, 0xC6, 0x89, 0x54, 0x6A, 0x8E, 0x8A, 0x00, 0xD4, 0x06, 0x6F, + 0x0A, 0xCC, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x70, 0xBA, + 0x6A, 0x51, 0x4A, 0xDE, 0x07, 0x53, 0x72, 0xCA, 0x30, 0x1F, 0xA5, 0x43, + 0x28, 0x9E, 0x8E, 0x33, 0x80, 0x40, 0x07, 0x17, 0x21, 0xC1, 0x48, 0xBF, + 0xBA, 0xDE, 0x3B, 0x8B, 0xCF, 0x83, 0xCA, 0x98, 0xDC, 0xB6, 0x3B, 0x80, + 0x79, 0xB7, 0xCC, 0xA7, 0x8B, 0xBE, 0xBF, 0xDF, 0x15, 0x19, 0x78, 0x78, + 0x59, 0xAE, 0x76, 0x59, 0x4D, 0xFC, 0x7F, 0xFB, 0xE1, 0xF0, 0x78, 0x56, + 0xF7, 0x77, 0x37, 0x8B, 0x74, 0x09, 0xC5, 0xE8, 0x16, 0x29, 0xE5, 0xD3, + 0xD1, 0xB4, 0x8D, 0x78, 0x75, 0x53, 0x9E, 0xCE, 0xFD, 0x5F, 0xFE, 0x36, + 0x31, 0x82, 0x9A, 0x92, 0x59, 0x1D, 0xBB, 0xD1, 0x15, 0x15, 0xA5, 0x04, + 0x06, 0x9F, 0x56, 0xEB, 0x86, 0x10, 0xBA, 0x4C, 0x3A, 0x84, 0xE4, 0x63, + 0x2C, 0x6B, 0xF2, 0xE6, 0xF5, 0x0A, 0x41, 0xC0, 0x45, 0xF5, 0xF1, 0xE1, + 0x58, 0x95, 0x02, 0x04, 0x15, 0x22, 0x20, 0x28, 0x7B, 0x7C, 0x1E, 0x62, + 0x00, 0x39, 0x63, 0x2F, 0xA7, 0x71, 0x98, 0x15, 0x22, 0x28, 0xF9, 0xB8, + 0xDF, 0xAE, 0x16, 0x69, 0x86, 0x49, 0x72, 0x8A, 0xBE, 0x7D, 0xFB, 0xFA, + 0x3C, 0x4A, 0x80, 0x61, 0x51, 0xE4, 0x75, 0xC9, 0x93, 0x93, 0x31, 0x40, + 0x2E, 0x2A, 0x96, 0x09, 0x4A, 0x41, 0xB0, 0x06, 0x21, 0xB4, 0x6A, 0x57, + 0x4A, 0xDB, 0xAA, 0xAC, 0xCF, 0xA7, 0xC7, 0xAC, 0xC2, 0xB7, 0x57, 0x57, + 0x20, 0x82, 0xCF, 0x9F, 0x9E, 0xBC, 0x8D, 0x8B, 0x54, 0xEF, 0x1F, 0xCE, + 0xDB, 0xED, 0x76, 0x1C, 0xFB, 0x59, 0x29, 0x1F, 0x82, 0x31, 0xA1, 0xA8, + 0x0A, 0x0A, 0xD3, 0xAF, 0xBE, 0xBA, 0xDF, 0x6E, 0xEA, 0x90, 0x1C, 0x67, + 0xE5, 0xD0, 0x2B, 0x42, 0x40, 0x59, 0x88, 0x71, 0xD2, 0x84, 0xA2, 0x18, + 0x22, 0x42, 0x88, 0x10, 0x9C, 0x12, 0x92, 0xCB, 0xFC, 0xE1, 0xD3, 0xE3, + 0xF3, 0x61, 0x68, 0xAA, 0xAC, 0xAE, 0x0B, 0x8C, 0xB9, 0xF3, 0x1E, 0x93, + 0xB4, 0xDD, 0xAD, 0x13, 0x80, 0x08, 0x43, 0x60, 0xEC, 0xE5, 0x32, 0xD4, + 0x75, 0xDD, 0xB4, 0x65, 0xDF, 0x8D, 0xEB, 0xA6, 0x9C, 0x94, 0xB4, 0x20, + 0x61, 0x04, 0x43, 0xF4, 0xFB, 0xF5, 0x1A, 0x02, 0xFC, 0xAF, 0xDF, 0xFF, + 0x8D, 0x42, 0x2C, 0xB0, 0xBB, 0xA8, 0x20, 0x8A, 0xFA, 0xCD, 0x6D, 0xDD, + 0x5F, 0xE4, 0xF3, 0xD3, 0x78, 0x7B, 0xBB, 0xF1, 0x00, 0xC5, 0x30, 0x3B, + 0x3B, 0x63, 0x8C, 0x28, 0x11, 0xD6, 0x25, 0x84, 0x0B, 0xA3, 0x1C, 0x63, + 0xB1, 0x28, 0x79, 0x4C, 0x68, 0x9E, 0x64, 0x88, 0x71, 0x31, 0x2A, 0x46, + 0xB0, 0x5D, 0x6F, 0x9B, 0xA2, 0xE6, 0x14, 0x84, 0x08, 0x9C, 0x0B, 0x52, + 0x4E, 0x36, 0x3A, 0x44, 0xA0, 0xE0, 0xA4, 0xCE, 0xF9, 0xA6, 0xAE, 0xB5, + 0xF6, 0xE3, 0xA2, 0xAC, 0x8B, 0xCB, 0x62, 0xA4, 0x32, 0x45, 0x99, 0x59, + 0xEF, 0x9C, 0x0F, 0x10, 0xC2, 0xA6, 0xAE, 0x11, 0xC2, 0x3E, 0x04, 0xCE, + 0xE8, 0xD3, 0xE3, 0x61, 0x9E, 0x97, 0xB6, 0x29, 0xF3, 0x8C, 0x8A, 0xAC, + 0x84, 0x10, 0x16, 0x39, 0x7C, 0x7E, 0x1A, 0x9A, 0xAA, 0x28, 0xCB, 0xCC, + 0xFA, 0xE8, 0x5C, 0x60, 0x9C, 0x20, 0x04, 0xAC, 0xD1, 0x2E, 0x06, 0xED, + 0x55, 0x96, 0x67, 0xB3, 0x5C, 0x9C, 0xF7, 0x21, 0x41, 0x04, 0x21, 0xA5, + 0x1C, 0x84, 0x98, 0xE7, 0x59, 0x51, 0x94, 0x20, 0x25, 0xCE, 0x58, 0x8A, + 0xB1, 0xC8, 0x8B, 0x5F, 0x2C, 0x9C, 0x04, 0x42, 0x6F, 0x9D, 0x75, 0x5E, + 0x2F, 0x7E, 0xDD, 0x36, 0xF3, 0x3C, 0x6B, 0x6B, 0x98, 0xA0, 0x84, 0xA2, + 0x10, 0xC1, 0x38, 0x2B, 0x17, 0xC0, 0xAE, 0x69, 0x63, 0x80, 0x4A, 0x7B, + 0xCA, 0x48, 0x88, 0xC1, 0x7A, 0x73, 0x77, 0x55, 0x46, 0xBD, 0x1C, 0x0E, + 0x97, 0xAB, 0xAB, 0xAB, 0x87, 0x97, 0xA7, 0xCB, 0xA0, 0xDA, 0x32, 0x5B, + 0xAF, 0xEA, 0x3C, 0xCB, 0x39, 0xA1, 0x79, 0x91, 0x11, 0x46, 0x95, 0x72, + 0xCA, 0x78, 0xED, 0x1C, 0x82, 0x70, 0x1C, 0x27, 0xEF, 0xDD, 0xDB, 0x57, + 0x5B, 0x88, 0xD1, 0x2C, 0xCD, 0x34, 0x59, 0x44, 0x20, 0x85, 0x88, 0x53, + 0x0E, 0x02, 0xE0, 0x04, 0x12, 0x14, 0x08, 0xE5, 0x31, 0xC2, 0xFD, 0x6E, + 0x53, 0xD6, 0x55, 0xF0, 0xEE, 0x97, 0x3A, 0x7F, 0x6D, 0x6D, 0x51, 0x54, + 0x87, 0xC3, 0x81, 0x12, 0xBC, 0xDD, 0x6C, 0xA6, 0x79, 0x16, 0x42, 0xC0, + 0x77, 0xAF, 0x5F, 0x1B, 0x6D, 0x29, 0x25, 0x9C, 0xD3, 0xA2, 0xC8, 0x82, + 0x0F, 0xD6, 0xC8, 0xCD, 0xBA, 0x2A, 0x45, 0x41, 0x29, 0x7B, 0xFF, 0x7C, + 0x09, 0x11, 0x6D, 0x77, 0xAF, 0x10, 0x02, 0xD3, 0xD8, 0x37, 0x05, 0xF9, + 0xEB, 0xFB, 0x8F, 0x4E, 0x2F, 0x22, 0xE3, 0x84, 0xD0, 0xE7, 0xC3, 0xE9, + 0x5F, 0xFE, 0xE1, 0x8F, 0xAB, 0x4A, 0xCC, 0x6A, 0x0A, 0x11, 0xFF, 0xF9, + 0x87, 0x8F, 0xB3, 0x54, 0xD6, 0x98, 0x77, 0xF7, 0xFB, 0xBB, 0xAB, 0x5D, + 0x4C, 0xCC, 0x38, 0xAB, 0x8C, 0x1E, 0xE7, 0xC5, 0x87, 0xF8, 0x72, 0x38, + 0x64, 0x9C, 0xBF, 0x7B, 0xF7, 0x0E, 0xC1, 0xE4, 0x83, 0x8B, 0x10, 0x9E, + 0xCF, 0x1D, 0x4C, 0x90, 0x10, 0x5C, 0x56, 0xB9, 0x73, 0x0E, 0x23, 0x04, + 0x31, 0xF2, 0x3E, 0x69, 0xA5, 0xAD, 0xD1, 0x57, 0xD7, 0x5B, 0x08, 0x61, + 0x46, 0x71, 0x23, 0x22, 0x04, 0x90, 0xF2, 0xF2, 0x7C, 0x5E, 0x46, 0x69, + 0x10, 0x4C, 0xD3, 0x3C, 0xBF, 0x7E, 0x75, 0x65, 0xAC, 0x7D, 0x39, 0x8D, + 0x21, 0x24, 0x46, 0x90, 0x0B, 0xE9, 0xF9, 0x74, 0xAA, 0x0A, 0xD1, 0xD6, + 0xCD, 0xF1, 0x72, 0x71, 0xCE, 0x6F, 0x56, 0x0D, 0xA3, 0xF8, 0x74, 0xEA, + 0xAA, 0xAA, 0xFC, 0xE2, 0xED, 0xDD, 0x4F, 0x1F, 0x3E, 0x67, 0x82, 0x15, + 0x25, 0xDF, 0x6D, 0xEA, 0xA1, 0x9F, 0xC7, 0x69, 0xA1, 0x94, 0xFD, 0xFD, + 0xC7, 0xC7, 0x3C, 0x13, 0xFF, 0xF8, 0xFB, 0x6F, 0x9E, 0x4F, 0xE7, 0xAE, + 0x9B, 0x10, 0x64, 0x6F, 0xEE, 0xF7, 0xC1, 0x9B, 0xAA, 0x6C, 0xD6, 0x4D, + 0xF3, 0xE3, 0xE7, 0xE7, 0x9F, 0x3E, 0x7C, 0xDE, 0xB4, 0xE5, 0xFE, 0x6A, + 0x7B, 0x3A, 0x76, 0x84, 0x90, 0x80, 0xD8, 0xA5, 0xEB, 0xAB, 0x42, 0xA4, + 0xE8, 0x9F, 0x8F, 0x97, 0x6F, 0xDE, 0x5C, 0xBF, 0xBE, 0xDE, 0x8E, 0xF3, + 0x62, 0x43, 0x80, 0x08, 0xCA, 0xC5, 0xEC, 0xB6, 0xEB, 0xA6, 0xCE, 0x10, + 0x0C, 0x08, 0xA1, 0x0F, 0x0F, 0xC7, 0x7F, 0xF8, 0xFD, 0xBB, 0x51, 0xEA, + 0x84, 0x7C, 0x91, 0x89, 0xB1, 0x73, 0x20, 0x81, 0x2C, 0xC7, 0x30, 0x05, + 0xE3, 0x89, 0x36, 0x20, 0x9A, 0x0E, 0x13, 0x74, 0xB5, 0xDF, 0x56, 0x79, + 0x3A, 0xCF, 0x87, 0x9C, 0x63, 0x37, 0x2F, 0x88, 0xE7, 0x8B, 0x1A, 0x09, + 0x02, 0xDE, 0xD3, 0xCF, 0xCF, 0xC3, 0xB0, 0x8C, 0xC3, 0xE4, 0xFB, 0xDE, + 0x57, 0x39, 0xDA, 0x6C, 0x73, 0x1D, 0x82, 0xA0, 0xE0, 0x7E, 0x5B, 0xFA, + 0x08, 0x32, 0x81, 0x97, 0x45, 0xA3, 0x10, 0x02, 0xE6, 0x4C, 0x08, 0x63, + 0x3D, 0xA3, 0x84, 0x30, 0x5C, 0x94, 0xB5, 0xD5, 0xFA, 0xE9, 0xA9, 0xDF, + 0xBE, 0xFA, 0xA6, 0x2E, 0x05, 0x42, 0x49, 0x4A, 0xED, 0x23, 0x20, 0x48, + 0xFD, 0xF5, 0xCF, 0x7F, 0x9E, 0x16, 0xF0, 0x87, 0xEF, 0xAE, 0x8E, 0xA7, + 0xF9, 0xE3, 0xC3, 0xD0, 0xF5, 0xD6, 0x2A, 0x50, 0x15, 0x18, 0x02, 0x38, + 0xCE, 0x9E, 0x32, 0xC4, 0x19, 0xC1, 0x04, 0x31, 0x46, 0x9F, 0x9F, 0x87, + 0x32, 0x67, 0x99, 0x40, 0x4D, 0x5B, 0x32, 0xC1, 0x09, 0x72, 0xF7, 0xD7, + 0xAD, 0x8B, 0x69, 0x98, 0x2D, 0x67, 0x60, 0x92, 0x4B, 0x5D, 0xAD, 0xE7, + 0xC9, 0x9C, 0xCF, 0xD2, 0xBA, 0x00, 0x21, 0xD4, 0x2E, 0x30, 0x4E, 0x17, + 0x69, 0x08, 0x66, 0xD3, 0xB0, 0x68, 0xE5, 0x00, 0x22, 0x5F, 0x5E, 0x6F, + 0x00, 0x80, 0x11, 0xD1, 0xCD, 0xBA, 0x7E, 0x3C, 0x9E, 0x29, 0x81, 0x29, + 0x25, 0x67, 0x74, 0xD3, 0x6E, 0x46, 0x69, 0xB6, 0xAB, 0x6A, 0xDD, 0x56, + 0x09, 0x24, 0x82, 0xA1, 0xF3, 0xD1, 0x19, 0x63, 0xDC, 0xBC, 0xDF, 0x97, + 0x14, 0x50, 0x82, 0xD8, 0xC3, 0xC3, 0x67, 0xE7, 0xED, 0xB4, 0x78, 0xA9, + 0xDD, 0x7E, 0xB7, 0xB7, 0xC1, 0x1D, 0x4E, 0x47, 0xAD, 0xBC, 0x0D, 0x10, + 0x20, 0x78, 0xB5, 0xAE, 0xFE, 0xF4, 0xDB, 0x6F, 0x2E, 0xFD, 0x1C, 0x93, + 0x0B, 0x3E, 0xF9, 0x08, 0x19, 0xA3, 0xC3, 0x2C, 0x09, 0x25, 0xDE, 0xF9, + 0x5F, 0x70, 0x9C, 0x3C, 0xCF, 0xE7, 0x59, 0xFD, 0xEA, 0xCB, 0xDB, 0x75, + 0x5D, 0x8C, 0x93, 0xBD, 0xBB, 0x5E, 0x9F, 0x7B, 0x75, 0xBE, 0x0C, 0x94, + 0x93, 0xF5, 0x9A, 0x53, 0x4A, 0x09, 0x42, 0x11, 0x84, 0x79, 0x58, 0xF6, + 0xBB, 0x15, 0x40, 0x00, 0x41, 0x2C, 0x17, 0x49, 0x08, 0x9E, 0x97, 0x65, + 0x56, 0xD6, 0x45, 0x78, 0x3E, 0x1E, 0xBF, 0x7C, 0x75, 0x23, 0x6D, 0xD4, + 0xDE, 0x62, 0x8C, 0x86, 0xE3, 0x53, 0x6F, 0x42, 0x5E, 0xD4, 0x95, 0x80, + 0x39, 0x2F, 0x94, 0x8C, 0xCA, 0x48, 0xCC, 0x90, 0xD6, 0xDA, 0x3B, 0x09, + 0x23, 0xE6, 0x59, 0x56, 0x94, 0x3C, 0xE3, 0xED, 0xF3, 0xF3, 0x85, 0x92, + 0x40, 0x05, 0xA1, 0x84, 0x1B, 0xAB, 0x19, 0xA5, 0xC7, 0xD3, 0xA5, 0x2E, + 0x37, 0xF3, 0x32, 0x6A, 0x6B, 0xEA, 0x52, 0xAC, 0xEA, 0xD5, 0xA5, 0x5B, + 0xCA, 0x92, 0x63, 0x1C, 0xBF, 0x7C, 0xBB, 0xC3, 0x90, 0xEB, 0x65, 0x94, + 0xF3, 0xF2, 0xE3, 0xE7, 0x91, 0x32, 0xEC, 0x62, 0xEC, 0x87, 0x39, 0xC6, + 0x58, 0x55, 0xA5, 0x73, 0x1E, 0x60, 0x48, 0x29, 0xC9, 0xF2, 0x1C, 0x21, + 0x8C, 0x08, 0xB1, 0xDA, 0x64, 0x9C, 0xC4, 0x60, 0x18, 0x67, 0x55, 0x25, + 0x32, 0xC1, 0x53, 0xC2, 0xC7, 0x73, 0xAF, 0xA4, 0xE3, 0x94, 0x10, 0x0C, + 0xFB, 0x41, 0x4E, 0x93, 0xD6, 0xD6, 0x15, 0x39, 0x2F, 0x0B, 0xC1, 0xB3, + 0x1C, 0xE3, 0x00, 0x90, 0x05, 0x20, 0x50, 0xC6, 0x6C, 0x70, 0xFD, 0x20, + 0x9F, 0x9E, 0x2E, 0xFB, 0xAB, 0x35, 0x65, 0x34, 0x13, 0x19, 0x42, 0x10, + 0x04, 0xC4, 0x09, 0x05, 0x28, 0xFA, 0xE0, 0x87, 0x41, 0x73, 0x91, 0x6D, + 0x9A, 0x7A, 0x19, 0x14, 0x08, 0x10, 0x40, 0xF4, 0x74, 0x38, 0x87, 0xE0, + 0x04, 0xC7, 0xDE, 0x87, 0xA6, 0xA9, 0xBC, 0x8F, 0xF3, 0x62, 0xEB, 0xAA, + 0x01, 0x09, 0x06, 0x00, 0x00, 0x8C, 0x52, 0x1B, 0x29, 0xF5, 0xBB, 0xD7, + 0xD7, 0x9B, 0x36, 0xCF, 0x32, 0x16, 0xAC, 0xF9, 0xF9, 0xE7, 0x9F, 0xCB, + 0x22, 0xFF, 0xE6, 0x8B, 0xD7, 0x4A, 0xEB, 0x08, 0x40, 0x02, 0x28, 0xC4, + 0x64, 0x43, 0x34, 0xD6, 0x69, 0xE7, 0x84, 0x60, 0x56, 0x87, 0xD3, 0x79, + 0x00, 0x29, 0x06, 0x67, 0x43, 0x8C, 0xBF, 0xF9, 0xEE, 0x1D, 0xC1, 0x84, + 0x40, 0xB4, 0x2C, 0xF3, 0x7A, 0xB5, 0xC5, 0x00, 0x81, 0xE0, 0xA6, 0x65, + 0x50, 0xD6, 0x31, 0x8C, 0x57, 0x4D, 0x85, 0x30, 0x75, 0x1E, 0x30, 0x46, + 0x4F, 0xC3, 0x84, 0x21, 0x20, 0x18, 0x65, 0x22, 0xA3, 0x08, 0xDE, 0xDF, + 0x5F, 0x51, 0xCA, 0x83, 0xF3, 0xF0, 0x3F, 0xFF, 0xA7, 0xFF, 0x68, 0x8C, + 0x7D, 0x7E, 0x3C, 0x9D, 0x2F, 0x5D, 0x9E, 0xF1, 0xE8, 0x03, 0xC2, 0x20, + 0x85, 0xD8, 0x54, 0x05, 0xCF, 0xEA, 0x88, 0x73, 0xB3, 0x4C, 0xC9, 0x0F, + 0x84, 0x67, 0x31, 0xE2, 0x9F, 0x3E, 0x3D, 0x02, 0x08, 0xF7, 0x6D, 0x35, + 0x6A, 0xE7, 0xBC, 0x17, 0x8C, 0xDF, 0x5D, 0x5F, 0xF7, 0x97, 0x97, 0xED, + 0xA6, 0x98, 0x95, 0xEF, 0x27, 0xC3, 0x28, 0xDC, 0xD6, 0x59, 0x55, 0x94, + 0x00, 0x62, 0xE7, 0x51, 0xD7, 0x5F, 0x8C, 0xD3, 0xB3, 0x34, 0xFD, 0x38, + 0x69, 0xAD, 0xCA, 0xB2, 0xA0, 0x84, 0x51, 0xCA, 0x20, 0x48, 0x08, 0x63, + 0x80, 0x92, 0x35, 0x9A, 0x31, 0xD1, 0x34, 0xCD, 0xB2, 0x2C, 0x87, 0x97, + 0x97, 0xCD, 0x76, 0x03, 0x00, 0x24, 0x84, 0xCC, 0xD3, 0x4C, 0x19, 0xC9, + 0xF3, 0x6C, 0xEA, 0xFA, 0x9B, 0x7D, 0x93, 0x0B, 0x21, 0xB5, 0x97, 0x26, + 0xF8, 0x44, 0x18, 0x8E, 0x7D, 0x7F, 0xB9, 0xBB, 0xB9, 0x06, 0x08, 0x8C, + 0xB3, 0x46, 0x10, 0xF9, 0x10, 0x1E, 0x1E, 0x5F, 0xDA, 0xB6, 0x62, 0x8C, + 0xCA, 0x45, 0xCF, 0x6A, 0x69, 0x9B, 0xA6, 0xEB, 0x06, 0x08, 0x22, 0x48, + 0xE0, 0xFE, 0xE6, 0xA6, 0x2A, 0xF2, 0x53, 0xDF, 0x5B, 0x6B, 0x76, 0xDB, + 0xFA, 0x8B, 0x57, 0xD7, 0x04, 0xA5, 0x6F, 0x7E, 0x75, 0xE7, 0x42, 0xB8, + 0x5C, 0xA6, 0x4C, 0xF0, 0xA6, 0xAC, 0x86, 0xD9, 0x98, 0x45, 0x1B, 0xE9, + 0x5F, 0xCE, 0x87, 0xFD, 0x6E, 0xED, 0x0D, 0x4A, 0x09, 0x2E, 0xDA, 0x28, + 0x63, 0x08, 0x27, 0xE7, 0xF3, 0xA0, 0xA4, 0x7A, 0xE9, 0xC6, 0xB2, 0x6A, + 0xA3, 0x57, 0x55, 0x21, 0xBC, 0x75, 0x94, 0xF3, 0x7F, 0xFC, 0xED, 0x57, + 0xEF, 0x3F, 0x3C, 0x28, 0x65, 0x00, 0x84, 0x84, 0x92, 0x18, 0x63, 0x5E, + 0xAD, 0x8E, 0xE7, 0xC3, 0xAA, 0x66, 0x94, 0x30, 0xA9, 0xF4, 0x6F, 0x7F, + 0xFD, 0xAA, 0x1F, 0x96, 0xF5, 0x36, 0xDB, 0x34, 0x15, 0xC5, 0xCC, 0x7B, + 0x0B, 0x41, 0x8C, 0x21, 0x14, 0x75, 0x73, 0x1E, 0xA4, 0x99, 0xBB, 0x4C, + 0x70, 0x4E, 0xD9, 0x7C, 0x79, 0x38, 0x4F, 0x63, 0xD5, 0xAC, 0x9D, 0x99, + 0x07, 0x39, 0x07, 0xEF, 0x11, 0xE4, 0x0F, 0x27, 0xF5, 0x74, 0x18, 0x9B, + 0x8A, 0xD9, 0x10, 0x95, 0x46, 0x97, 0x5E, 0x55, 0x15, 0x25, 0x38, 0x5E, + 0xAD, 0x0B, 0xEF, 0xD3, 0x6C, 0x4C, 0x2E, 0xE8, 0x38, 0x78, 0xC6, 0xE0, + 0xFD, 0x55, 0x0E, 0x93, 0x97, 0x96, 0x42, 0x9C, 0x9A, 0x2A, 0x4B, 0x09, + 0x1F, 0xCF, 0x4B, 0x40, 0xEC, 0xCD, 0xEB, 0x7B, 0x80, 0x30, 0x46, 0x70, + 0x38, 0x1D, 0xB2, 0xA2, 0xBA, 0xB9, 0xDB, 0x0B, 0x30, 0x4C, 0xA7, 0x97, + 0x8F, 0x9F, 0xFA, 0x0F, 0x4F, 0xCB, 0x65, 0x94, 0xD7, 0xBB, 0x0D, 0xA7, + 0xEC, 0x78, 0xEA, 0x8B, 0x22, 0x93, 0x8B, 0x87, 0x30, 0xB6, 0x15, 0x57, + 0xD6, 0xA7, 0x18, 0x09, 0xA5, 0x59, 0x93, 0x45, 0x6D, 0xAF, 0x37, 0x1B, + 0x07, 0x82, 0xB3, 0x8A, 0x42, 0x5F, 0x16, 0xB9, 0x4D, 0x31, 0x24, 0xCB, + 0xB3, 0xCC, 0x39, 0xE0, 0x23, 0xD0, 0x36, 0x55, 0x65, 0xF5, 0xF1, 0xE1, + 0x28, 0xA5, 0x47, 0x09, 0x4E, 0x52, 0x13, 0x42, 0xEA, 0x22, 0x8F, 0x06, + 0x58, 0xE7, 0x5F, 0xED, 0x73, 0xE7, 0xCD, 0xBA, 0x59, 0x75, 0xB3, 0x99, + 0x74, 0xBC, 0x74, 0x5D, 0x55, 0x35, 0xCF, 0x2F, 0x4F, 0x45, 0x59, 0xE5, + 0x59, 0xB6, 0x69, 0x6A, 0xA5, 0xCD, 0x38, 0x4F, 0x09, 0xA4, 0x69, 0x1A, + 0x9D, 0xF3, 0xB7, 0xD7, 0xDB, 0xFB, 0x9B, 0x2D, 0x86, 0x70, 0xD3, 0x34, + 0xC7, 0x73, 0x37, 0xC9, 0x29, 0x86, 0xB0, 0xD9, 0x54, 0xAC, 0xA8, 0xDE, + 0x7F, 0xF8, 0x6C, 0xAD, 0x2D, 0xF2, 0xA2, 0x1F, 0x55, 0x9E, 0xF3, 0xDF, + 0x7C, 0x75, 0xE7, 0x8D, 0xFD, 0xF0, 0x78, 0xC9, 0xB3, 0x5C, 0x4A, 0x87, + 0x19, 0x2E, 0x8A, 0xFC, 0xC3, 0xA7, 0x93, 0x0B, 0x2E, 0x84, 0xF0, 0x9B, + 0x6F, 0xDF, 0x3C, 0x3D, 0x9F, 0x87, 0x51, 0x52, 0xC6, 0xF6, 0xEB, 0x7A, + 0xDB, 0x96, 0x84, 0xD2, 0xAF, 0xDF, 0xEC, 0x10, 0x66, 0x38, 0x79, 0x4A, + 0x90, 0x0D, 0x0E, 0x21, 0xA2, 0xB4, 0x03, 0x18, 0x30, 0xCC, 0x7C, 0x70, + 0x8B, 0x31, 0xBB, 0x4D, 0xD5, 0x8F, 0xF3, 0x38, 0x2A, 0x46, 0xA9, 0x56, + 0xFE, 0x32, 0xC8, 0xCB, 0xF9, 0x70, 0xBD, 0xDD, 0x40, 0x46, 0x13, 0x08, + 0x3E, 0x38, 0x2F, 0x65, 0xE2, 0x34, 0x2F, 0x18, 0x41, 0xDC, 0x48, 0x4B, + 0x10, 0x49, 0x29, 0xC5, 0x04, 0x07, 0xD9, 0x43, 0x08, 0x11, 0x00, 0x28, + 0xC5, 0xB2, 0x2C, 0x7C, 0x88, 0xCE, 0x24, 0xC1, 0x19, 0xA1, 0xF0, 0xD4, + 0x8D, 0xDB, 0xDD, 0x56, 0x60, 0x3C, 0x8E, 0x63, 0x82, 0x99, 0x33, 0x26, + 0x26, 0x7F, 0x73, 0xD5, 0x16, 0x39, 0xF3, 0x11, 0x40, 0x88, 0x32, 0x8E, + 0x18, 0x63, 0x46, 0x07, 0x46, 0x10, 0x46, 0x48, 0xE9, 0x80, 0x31, 0xEC, + 0x86, 0xF9, 0x32, 0x4C, 0xC6, 0xB9, 0x71, 0x5C, 0x12, 0x48, 0xD6, 0x7B, + 0xEB, 0x42, 0x96, 0x09, 0x48, 0x09, 0x44, 0xB8, 0xAD, 0xB3, 0xFD, 0x2A, + 0xA7, 0x18, 0xB8, 0x98, 0x60, 0x4C, 0xDE, 0x7A, 0xE3, 0x03, 0x13, 0x19, + 0x61, 0x34, 0xC6, 0x80, 0x10, 0x98, 0x47, 0xFB, 0xF7, 0x1F, 0x1E, 0x67, + 0xA3, 0x29, 0xC6, 0x82, 0x60, 0x4C, 0x39, 0x17, 0x2C, 0xCF, 0xE9, 0x34, + 0x4D, 0xD6, 0xFA, 0xD5, 0x2A, 0x2B, 0x6B, 0xF1, 0xE9, 0xF9, 0xA4, 0x8C, + 0xE6, 0x9C, 0x17, 0x45, 0xC1, 0x08, 0x4E, 0x21, 0xAE, 0xAA, 0x62, 0x59, + 0x06, 0x1F, 0x91, 0xF6, 0x08, 0x27, 0x52, 0x15, 0xD5, 0xE5, 0x3C, 0x7E, + 0x7E, 0x78, 0xBE, 0xBB, 0xBD, 0xA2, 0x98, 0xDC, 0xDE, 0xEC, 0x21, 0x0A, + 0xDF, 0xFF, 0xED, 0xBD, 0xD6, 0x6E, 0xB3, 0x5D, 0x33, 0x46, 0x11, 0xC6, + 0x65, 0xC6, 0xEA, 0x26, 0x27, 0x94, 0x3A, 0xE7, 0xF3, 0x8C, 0x20, 0x80, + 0x42, 0xF0, 0x00, 0x62, 0x84, 0x21, 0xA3, 0x88, 0x11, 0x1C, 0x5C, 0x50, + 0xC6, 0xC8, 0x45, 0x41, 0x48, 0xBA, 0xCB, 0x62, 0x83, 0x8F, 0x29, 0x41, + 0x08, 0x10, 0x46, 0x54, 0xB0, 0x14, 0x53, 0x46, 0xF9, 0x38, 0x4B, 0x84, + 0x11, 0xA1, 0x58, 0x2A, 0xD5, 0x54, 0x05, 0x42, 0x89, 0x53, 0xC2, 0x10, + 0xE4, 0x98, 0x01, 0x00, 0x7C, 0x70, 0x4A, 0x19, 0x1F, 0x93, 0x36, 0x8E, + 0x50, 0x0E, 0x52, 0x22, 0x84, 0xAC, 0x9A, 0x5A, 0x1B, 0x37, 0x2F, 0x5A, + 0x30, 0x7A, 0x7B, 0xBD, 0x59, 0xD7, 0x79, 0x2E, 0x04, 0xFC, 0x9F, 0xFF, + 0xA7, 0xFF, 0x11, 0x21, 0x18, 0x00, 0x98, 0xA6, 0xC5, 0x1A, 0x9B, 0x82, + 0x7F, 0xFC, 0xFC, 0x10, 0x9C, 0xCF, 0x33, 0x21, 0xB2, 0x12, 0x42, 0x2C, + 0xC7, 0x43, 0xD5, 0x08, 0x69, 0x7C, 0x55, 0x57, 0x2E, 0xC2, 0xBA, 0xAA, + 0xE6, 0x49, 0x5F, 0x26, 0xB7, 0xCC, 0x0B, 0xC1, 0x30, 0x05, 0x1B, 0x9C, + 0x03, 0x30, 0x2E, 0xDA, 0x43, 0x48, 0xFF, 0xF8, 0x9B, 0x57, 0xAB, 0x22, + 0xEF, 0x27, 0xA7, 0x8D, 0xFA, 0xF9, 0xE3, 0x53, 0x59, 0x55, 0xFD, 0xD0, + 0x53, 0xC1, 0x40, 0x4C, 0x5D, 0xD7, 0x6D, 0xD6, 0x4D, 0x3F, 0x4A, 0x00, + 0x11, 0x80, 0x89, 0x20, 0xC2, 0x28, 0x71, 0xDE, 0x48, 0x65, 0xB7, 0xDB, + 0xBD, 0xE0, 0xB4, 0xEF, 0xFB, 0x3C, 0xCF, 0x94, 0x36, 0x6D, 0xDB, 0x28, + 0x29, 0x7D, 0x70, 0x04, 0x22, 0x46, 0x71, 0x5D, 0xE4, 0xD3, 0x2C, 0xAD, + 0x8F, 0xFD, 0xB4, 0x5C, 0x5F, 0x6D, 0x6E, 0x6F, 0x37, 0xF3, 0x2C, 0x97, + 0xF1, 0x97, 0x37, 0x4B, 0xB0, 0x48, 0x4D, 0x08, 0xEE, 0x86, 0x41, 0x70, + 0xC1, 0x19, 0xAB, 0xAA, 0x62, 0x1C, 0x86, 0x6F, 0xBE, 0xBC, 0x67, 0x9C, + 0x78, 0xE7, 0xAE, 0x77, 0xEB, 0xD5, 0xBA, 0x5D, 0xE4, 0x12, 0x62, 0x1A, + 0x86, 0x69, 0xB5, 0xAA, 0xAE, 0xDB, 0xB6, 0x2A, 0xC8, 0xF1, 0x32, 0xCC, + 0x52, 0x57, 0x65, 0xB1, 0xDF, 0xD6, 0xC7, 0xD3, 0xC4, 0xA9, 0x28, 0x72, + 0x41, 0x09, 0x67, 0x22, 0x1A, 0x6B, 0xED, 0x02, 0x9B, 0xBA, 0xEA, 0x87, + 0xF9, 0xE9, 0xD4, 0x7D, 0x7C, 0x3E, 0x50, 0x24, 0x7E, 0xF8, 0xF1, 0x87, + 0xDD, 0xB6, 0xFE, 0xF5, 0xD7, 0x6F, 0x56, 0x4D, 0x31, 0x9B, 0x18, 0x13, + 0x66, 0x2C, 0x83, 0x30, 0x39, 0x6B, 0xAB, 0x42, 0x2C, 0xCB, 0xD2, 0x75, + 0x43, 0x42, 0xB1, 0x9B, 0xDD, 0xCB, 0xCB, 0xCB, 0x3F, 0xFD, 0xE1, 0x0B, + 0x9A, 0x21, 0x6F, 0xC2, 0xAA, 0xCE, 0x9F, 0x4F, 0xFD, 0xF5, 0xAE, 0x2D, + 0x32, 0xAA, 0x94, 0x4E, 0x31, 0x70, 0x21, 0x7C, 0x70, 0x8B, 0x9A, 0x04, + 0x27, 0xD1, 0xE7, 0x56, 0x9B, 0x18, 0xDD, 0x2F, 0x99, 0x2F, 0xC6, 0x62, + 0x56, 0xC6, 0x03, 0x8F, 0x43, 0xF8, 0xF0, 0xF0, 0xF0, 0xF1, 0xF9, 0x54, + 0x67, 0x3C, 0x04, 0x65, 0x62, 0x9C, 0x15, 0x98, 0x54, 0x50, 0xDA, 0x7E, + 0xFB, 0xAE, 0xD1, 0xCA, 0x7E, 0xFF, 0xE3, 0x58, 0x16, 0x62, 0xD3, 0x52, + 0x67, 0xDC, 0x6E, 0xC5, 0xB3, 0x8A, 0x1D, 0x9E, 0x07, 0x51, 0x6D, 0x43, + 0x72, 0x5E, 0x2F, 0xB7, 0xB7, 0x5B, 0x97, 0x04, 0x63, 0x9C, 0x10, 0x72, + 0x3E, 0x4F, 0x98, 0x0A, 0x8C, 0x11, 0x0C, 0xB1, 0x5D, 0xB7, 0x6D, 0x5D, + 0x46, 0xDD, 0x2F, 0xD3, 0xC5, 0xCA, 0xF1, 0xF1, 0xE8, 0x44, 0x96, 0x8F, + 0xF3, 0x98, 0xB3, 0xAC, 0xCE, 0x6B, 0x1F, 0xE1, 0x38, 0x2D, 0xDF, 0x7D, + 0xFD, 0x0A, 0x21, 0x82, 0x10, 0x74, 0xDE, 0x53, 0x26, 0x10, 0x80, 0x6D, + 0x55, 0x94, 0xB9, 0x38, 0x8F, 0xFD, 0xCB, 0xF3, 0x63, 0x95, 0x97, 0x75, + 0x5B, 0x5A, 0xA7, 0x17, 0xA5, 0x0E, 0xDD, 0xC1, 0x04, 0x40, 0x59, 0xA1, + 0x94, 0x05, 0x10, 0x82, 0x04, 0x08, 0xCE, 0x1F, 0x0F, 0x17, 0xC1, 0xF9, + 0xF5, 0x6E, 0xB5, 0xCC, 0x6A, 0x5D, 0x50, 0x65, 0x8E, 0xC7, 0xD3, 0x5C, + 0x97, 0x25, 0xCF, 0x57, 0x5A, 0x83, 0x53, 0x37, 0x94, 0x45, 0xAE, 0xB5, + 0xCC, 0x28, 0x4B, 0x88, 0x42, 0x14, 0x39, 0xB5, 0x94, 0x11, 0xE9, 0xC8, + 0xF9, 0x38, 0x01, 0x10, 0x57, 0x4D, 0xBD, 0xDB, 0xAE, 0x93, 0x0F, 0x8C, + 0x90, 0x7E, 0x1C, 0x12, 0x4D, 0x28, 0x19, 0x67, 0x82, 0xF1, 0xFE, 0xE7, + 0x4F, 0x87, 0xCD, 0x7A, 0xF5, 0xD5, 0xBB, 0x7B, 0x88, 0x60, 0x51, 0xF0, + 0xB1, 0x3F, 0x8D, 0xD3, 0x72, 0x99, 0x83, 0x60, 0xE5, 0x3C, 0xBB, 0x3C, + 0x67, 0x10, 0xC2, 0x4F, 0x4F, 0xE7, 0x79, 0x99, 0xEB, 0xB2, 0xFA, 0xEE, + 0xDB, 0xAF, 0x9E, 0x5E, 0x9E, 0xAD, 0xB1, 0xDB, 0x6D, 0x9B, 0x71, 0x36, + 0x8E, 0xCB, 0xBB, 0xBB, 0xED, 0xB7, 0x6F, 0xB6, 0xB3, 0xD4, 0x04, 0x93, + 0x65, 0xD1, 0x90, 0x80, 0xBC, 0xE0, 0x8B, 0x0C, 0xDD, 0x30, 0x61, 0x84, + 0xAA, 0x2A, 0xF7, 0x21, 0x40, 0xF8, 0x8B, 0x48, 0x16, 0x56, 0x65, 0x61, + 0xA4, 0x07, 0x08, 0x2A, 0x35, 0x69, 0x65, 0x8D, 0x55, 0x2E, 0x78, 0xAD, + 0x2C, 0xF4, 0xC9, 0xC2, 0xE4, 0xA3, 0x69, 0xCB, 0xAA, 0xAD, 0xB6, 0x8C, + 0x71, 0x90, 0xA0, 0x75, 0x1A, 0x40, 0x5F, 0x95, 0xC5, 0x3C, 0x0D, 0x18, + 0x44, 0x80, 0x78, 0xD3, 0xB6, 0x14, 0x91, 0xF3, 0xE5, 0xF4, 0xF9, 0xF9, + 0x31, 0x2B, 0xAB, 0xA6, 0x59, 0x4D, 0xFD, 0x50, 0xE6, 0xB9, 0x56, 0x56, + 0x70, 0x9E, 0x67, 0x8C, 0x52, 0x31, 0x4D, 0x7D, 0x51, 0x97, 0xC7, 0xC3, + 0x04, 0x40, 0x64, 0x8C, 0x2B, 0x6D, 0xF3, 0x9C, 0x4B, 0x6D, 0x38, 0x63, + 0x08, 0xA2, 0xAA, 0xCE, 0xDB, 0x9C, 0xD9, 0x18, 0xA5, 0xD3, 0xC6, 0x99, + 0xE7, 0xA7, 0xB3, 0x60, 0xC2, 0xB9, 0xD8, 0x8D, 0x33, 0x40, 0xE9, 0xE6, + 0x6A, 0x57, 0x66, 0xFC, 0xE5, 0xF1, 0x54, 0xB6, 0x94, 0xA2, 0x74, 0x38, + 0x49, 0x9E, 0x89, 0x79, 0xD2, 0x55, 0x5D, 0x1A, 0xE7, 0x10, 0x42, 0xAB, + 0xA6, 0x81, 0x00, 0x26, 0x04, 0x3F, 0xFE, 0xFC, 0xA4, 0xA5, 0x52, 0x2E, + 0x70, 0x21, 0x78, 0x46, 0x00, 0x08, 0x31, 0x00, 0x29, 0xD5, 0x6A, 0x5D, + 0x50, 0x8E, 0x3E, 0x7C, 0x7E, 0x01, 0x00, 0x42, 0x08, 0xAB, 0x9C, 0x5C, + 0x6F, 0x4B, 0xA5, 0xFD, 0xB8, 0x18, 0x42, 0x08, 0x67, 0x82, 0x02, 0x81, + 0x31, 0x89, 0x28, 0x26, 0xEF, 0x39, 0x11, 0xBF, 0xFA, 0xEA, 0x75, 0x96, + 0x0B, 0x44, 0xD0, 0xB0, 0x2C, 0xC6, 0x38, 0x63, 0x6D, 0x88, 0x71, 0xB5, + 0xAE, 0x92, 0x0F, 0xDE, 0xF9, 0x69, 0xD6, 0x3C, 0xE3, 0x42, 0x08, 0xAB, + 0x0D, 0x02, 0x30, 0x21, 0xA8, 0x8C, 0x9B, 0x87, 0xC9, 0xBA, 0x88, 0x18, + 0xE6, 0x84, 0x50, 0x02, 0x63, 0x08, 0x14, 0xD3, 0x71, 0x94, 0x52, 0x1A, + 0x84, 0xB0, 0xB1, 0xB6, 0x59, 0x57, 0xC1, 0x87, 0xFE, 0x32, 0xAD, 0x56, + 0x15, 0x17, 0xCC, 0xBA, 0x88, 0x11, 0x98, 0xE6, 0x19, 0x12, 0xEC, 0x9C, + 0xB5, 0x56, 0x5B, 0xE3, 0x8D, 0xF4, 0x4D, 0x99, 0x79, 0x1F, 0xC7, 0x45, + 0x97, 0x05, 0xAF, 0x2B, 0x81, 0x10, 0x24, 0x84, 0x10, 0x42, 0x20, 0x22, + 0x9C, 0x32, 0xEF, 0xA2, 0x75, 0xF1, 0x9B, 0x37, 0x37, 0xEB, 0x3A, 0x83, + 0xFF, 0xFC, 0x4F, 0xFF, 0x9C, 0x09, 0xCA, 0x05, 0xC3, 0x8C, 0x41, 0x84, + 0x39, 0xC7, 0x4A, 0xC9, 0xFE, 0x74, 0xEE, 0x4E, 0x67, 0x10, 0xE2, 0x66, + 0xB7, 0x25, 0x24, 0x36, 0x6D, 0x09, 0x21, 0xC8, 0x84, 0xA8, 0xAB, 0x42, + 0x5A, 0xBB, 0x28, 0xC3, 0x39, 0x9F, 0x46, 0xF5, 0x7C, 0x18, 0x3E, 0x3F, + 0x74, 0x72, 0x19, 0x95, 0xD6, 0x3E, 0x84, 0xDD, 0xB6, 0xF9, 0xDD, 0xAF, + 0x5F, 0x3F, 0x7D, 0x3A, 0x1D, 0x4E, 0xFD, 0x7E, 0xB7, 0xFA, 0xFC, 0x72, + 0xA1, 0x5C, 0x58, 0xA3, 0xDE, 0xBD, 0xBA, 0x39, 0x9C, 0xFB, 0x97, 0xE3, + 0xF1, 0xD5, 0xCD, 0x0E, 0x11, 0x62, 0x5D, 0x34, 0xD6, 0x44, 0x1F, 0x39, + 0xA7, 0x5D, 0x3F, 0xC6, 0x94, 0x04, 0xCF, 0xCA, 0x5C, 0x20, 0x84, 0xBA, + 0x61, 0xB4, 0xCE, 0xB5, 0x6D, 0xA3, 0x94, 0xA2, 0x14, 0x5B, 0x6D, 0x9B, + 0x2A, 0x4F, 0x09, 0x18, 0xEB, 0xC6, 0x69, 0xB9, 0xBD, 0xB9, 0xFA, 0xFA, + 0x8B, 0x57, 0x52, 0xEB, 0x45, 0x29, 0x39, 0xA9, 0x45, 0xEA, 0x49, 0xAA, + 0x10, 0x43, 0x08, 0xC1, 0x87, 0x70, 0xB5, 0xDD, 0xC7, 0x98, 0x6E, 0x77, + 0xCD, 0x37, 0x6F, 0x5F, 0xED, 0x77, 0x4D, 0xF0, 0x1E, 0x40, 0x30, 0x4C, + 0xB3, 0x07, 0xA0, 0xAC, 0x79, 0x51, 0x08, 0x6D, 0x0D, 0x63, 0xC2, 0x2D, + 0xFA, 0xE3, 0xCF, 0x0F, 0x8C, 0x32, 0xE7, 0x43, 0x53, 0x17, 0xEB, 0x75, + 0xF5, 0xF8, 0xD4, 0x6D, 0x56, 0x6D, 0x59, 0x50, 0x84, 0x30, 0xCF, 0x28, + 0x82, 0xF1, 0x7A, 0xBB, 0x4D, 0x01, 0x7F, 0x7A, 0x7C, 0xA1, 0x9C, 0x13, + 0xC6, 0xE4, 0xEC, 0x96, 0x79, 0x12, 0x1C, 0x29, 0x27, 0x3F, 0x3E, 0x8F, + 0xF3, 0x1C, 0x7C, 0x08, 0x08, 0x61, 0xE7, 0xF4, 0xAA, 0xCD, 0x09, 0xC1, + 0x00, 0xA0, 0x42, 0x64, 0x45, 0x41, 0x4F, 0xDD, 0x78, 0x3C, 0x9C, 0xFF, + 0xF8, 0xDB, 0xB7, 0x9C, 0x23, 0x84, 0xA0, 0xF3, 0x21, 0xC4, 0x44, 0x31, + 0x0B, 0xC1, 0x4E, 0xF3, 0xCC, 0x39, 0x56, 0xDA, 0xA6, 0xE4, 0xB5, 0x9C, + 0x8B, 0x8C, 0xD7, 0xE5, 0xCD, 0xB2, 0x4C, 0x90, 0x60, 0x8C, 0x69, 0x4A, + 0xBF, 0x98, 0x36, 0x31, 0xE3, 0x88, 0x60, 0x08, 0xA2, 0x1F, 0x26, 0x1D, + 0x01, 0x30, 0x6E, 0xB1, 0x4E, 0x2D, 0xCA, 0xBA, 0x10, 0x4E, 0x97, 0xDE, + 0x18, 0xDB, 0x4F, 0xDE, 0xDA, 0xF0, 0xE6, 0xCD, 0xFA, 0xC3, 0x87, 0x7E, + 0x5D, 0x21, 0x0A, 0x63, 0x56, 0x97, 0xEB, 0xED, 0xFA, 0xE3, 0x87, 0xC3, + 0xF1, 0xB2, 0xDC, 0xEE, 0xF3, 0x8C, 0xE1, 0x00, 0x48, 0xD5, 0x94, 0xCE, + 0x46, 0xE3, 0x92, 0xF7, 0xA8, 0x5D, 0xAF, 0x51, 0x72, 0x82, 0x61, 0x9E, + 0x55, 0x59, 0x46, 0x8D, 0xBA, 0xBC, 0xDA, 0x5E, 0x19, 0x0D, 0x47, 0xA9, + 0x18, 0xC5, 0x08, 0x80, 0x32, 0x2F, 0x42, 0x00, 0x2E, 0x44, 0x42, 0x30, + 0x02, 0x11, 0x13, 0xAC, 0x16, 0x63, 0x6D, 0x80, 0x10, 0x38, 0x6B, 0xEE, + 0xAE, 0x76, 0xF3, 0x62, 0x84, 0xA0, 0x31, 0x45, 0xCE, 0x58, 0x02, 0x50, + 0xCB, 0x61, 0x94, 0xC7, 0x6E, 0x98, 0x08, 0xC9, 0x70, 0x96, 0x8F, 0xE3, + 0x4C, 0x31, 0xD5, 0x26, 0x3A, 0x9F, 0x18, 0x43, 0xCE, 0xBB, 0xB2, 0xA0, + 0x0D, 0x4F, 0xC7, 0xF3, 0x24, 0x0D, 0x8A, 0x3E, 0x48, 0x65, 0x10, 0xE1, + 0x09, 0xB3, 0xEB, 0x7D, 0x8D, 0xA2, 0xC6, 0x00, 0x23, 0x2A, 0x16, 0x39, + 0x40, 0xE0, 0x16, 0x65, 0xEA, 0xA6, 0x5C, 0x95, 0x15, 0x40, 0x7C, 0x92, + 0x8E, 0x62, 0xF2, 0xE1, 0xC3, 0x13, 0xE5, 0x62, 0x5A, 0x66, 0x48, 0xD2, + 0xF3, 0xF3, 0x31, 0x25, 0x92, 0xA2, 0xA3, 0x04, 0xBD, 0x7E, 0xFD, 0x66, + 0xDD, 0xB4, 0x31, 0xBA, 0xD3, 0x65, 0x80, 0x71, 0x16, 0x82, 0x7E, 0x7E, + 0x9E, 0x08, 0xE5, 0xCE, 0xC7, 0x3C, 0xCF, 0x87, 0x71, 0xB9, 0xF4, 0x1D, + 0xC2, 0xB8, 0xAE, 0x5A, 0x82, 0xB1, 0xB5, 0x3A, 0x04, 0x7F, 0x7F, 0xBB, + 0x7B, 0x75, 0xBD, 0xDA, 0xD6, 0x35, 0x02, 0x28, 0xE3, 0xF0, 0xD3, 0x73, + 0x57, 0xE4, 0x79, 0x5B, 0xB3, 0x97, 0x73, 0xE7, 0x63, 0x24, 0x84, 0x5A, + 0x1B, 0x20, 0x88, 0x55, 0x55, 0x3A, 0xEF, 0x83, 0x8B, 0x59, 0x29, 0xFA, + 0x61, 0xCA, 0x0A, 0x61, 0xA4, 0x6D, 0xD6, 0xD7, 0x34, 0x2B, 0x29, 0x9C, + 0xB4, 0x96, 0x00, 0xA6, 0xA1, 0xEB, 0xA3, 0x89, 0x8B, 0x56, 0x2F, 0x97, + 0x4B, 0x4C, 0xF4, 0xDD, 0xED, 0xFD, 0xAF, 0xBE, 0xB8, 0xAE, 0x4A, 0x21, + 0x95, 0x61, 0x9C, 0x52, 0x8C, 0x18, 0x26, 0x52, 0x69, 0x84, 0x49, 0x51, + 0x95, 0x5A, 0x9B, 0xC5, 0xC9, 0x7E, 0x99, 0xAD, 0x76, 0xE3, 0x30, 0xF9, + 0x90, 0x9A, 0x36, 0xDF, 0xD6, 0x9B, 0x14, 0x81, 0x0F, 0x88, 0x51, 0xBA, + 0xC8, 0x91, 0x10, 0xAA, 0xA4, 0x0D, 0xC1, 0x69, 0xE3, 0x2E, 0xDD, 0xF8, + 0x72, 0xE9, 0x7C, 0x88, 0x77, 0xB7, 0x37, 0xC3, 0xB8, 0x20, 0x8E, 0xBE, + 0xB8, 0xD9, 0x55, 0x65, 0xB9, 0x18, 0xD9, 0xF7, 0x1D, 0xE7, 0xA2, 0xAD, + 0x8A, 0xBE, 0x9F, 0xFF, 0xFA, 0xC3, 0x87, 0x90, 0xE2, 0x97, 0x6F, 0x5F, + 0x97, 0x05, 0xFB, 0xEB, 0xDF, 0x3E, 0xDE, 0xDF, 0xD5, 0x4A, 0x4B, 0x9F, + 0x68, 0xB0, 0x28, 0x04, 0x50, 0x14, 0x99, 0x34, 0x1A, 0xA4, 0x48, 0x29, + 0x25, 0x4C, 0x64, 0x39, 0xAB, 0xAB, 0xDC, 0xCE, 0xEA, 0xD8, 0x4D, 0xCF, + 0xC7, 0x3E, 0xC4, 0x28, 0x04, 0x46, 0x08, 0x20, 0x42, 0x38, 0x01, 0x59, + 0xCE, 0x00, 0x00, 0xD3, 0xAC, 0x00, 0x80, 0x4D, 0x8E, 0x20, 0xB4, 0xB3, + 0x41, 0xA7, 0x5E, 0xA5, 0xE8, 0xD7, 0xAB, 0x55, 0x59, 0x96, 0x7D, 0x3F, + 0x3A, 0x6D, 0xDF, 0xBD, 0xBA, 0xBF, 0xBB, 0xBA, 0xC6, 0x08, 0x9D, 0xBA, + 0xF1, 0x74, 0xBE, 0x00, 0x04, 0x08, 0xC6, 0xF3, 0x24, 0x95, 0xD4, 0x44, + 0xB0, 0x94, 0x62, 0x4A, 0x69, 0xD5, 0x56, 0x31, 0xC4, 0x84, 0x31, 0x42, + 0x90, 0x12, 0xE2, 0x63, 0x42, 0x08, 0x05, 0x17, 0xF2, 0x22, 0x47, 0x08, + 0x2D, 0xB3, 0x22, 0x9C, 0x69, 0x29, 0x83, 0x33, 0xAB, 0x3A, 0xF7, 0xDE, + 0xCF, 0xD2, 0x5D, 0xBA, 0x79, 0xBD, 0x59, 0x59, 0xE3, 0x10, 0x04, 0x4D, + 0xC9, 0x61, 0xF2, 0x11, 0x22, 0x41, 0xA9, 0x10, 0x2C, 0x26, 0x30, 0x1B, + 0x77, 0x1E, 0x26, 0x25, 0x95, 0xD3, 0x4E, 0x2A, 0x5D, 0x64, 0x99, 0x32, + 0x06, 0x82, 0xD4, 0xD6, 0xA2, 0x69, 0xCA, 0x65, 0x31, 0x00, 0x41, 0x6B, + 0x9D, 0x60, 0xBC, 0x2A, 0xF2, 0xA2, 0x28, 0x51, 0x82, 0x9C, 0x13, 0xF8, + 0xA7, 0x7F, 0xF8, 0x23, 0x42, 0x6C, 0x5E, 0x54, 0x5D, 0x57, 0xE3, 0xB8, + 0x24, 0x10, 0xF7, 0xD7, 0x2D, 0x04, 0x49, 0x4E, 0x63, 0x5D, 0x32, 0x2E, + 0x04, 0x82, 0x04, 0x84, 0xC8, 0x18, 0x09, 0x21, 0x5A, 0xEB, 0x00, 0x46, + 0x46, 0x6B, 0x4A, 0x60, 0x5D, 0x97, 0xED, 0x7A, 0x7D, 0x38, 0xAA, 0xBF, + 0xBF, 0x7F, 0x10, 0x9C, 0x97, 0xA5, 0xD0, 0x6A, 0x42, 0x61, 0x3E, 0x0D, + 0xF2, 0xF1, 0xB1, 0x47, 0x18, 0xED, 0xB7, 0x4D, 0x3F, 0xCA, 0x37, 0xAF, + 0xF7, 0x97, 0xB3, 0x9C, 0xA4, 0xEC, 0xFB, 0x61, 0xBB, 0xAA, 0x29, 0xA3, + 0x11, 0x82, 0x65, 0x9E, 0xD7, 0x6D, 0x3B, 0x8E, 0x53, 0x3F, 0x8C, 0x22, + 0xCB, 0x10, 0xC0, 0x9C, 0xE3, 0x45, 0x4A, 0x65, 0x1C, 0xC6, 0x28, 0xCF, + 0x85, 0xD6, 0x26, 0x2F, 0xF8, 0xBB, 0xD7, 0xEB, 0xF3, 0x45, 0x7D, 0xFC, + 0x74, 0xDA, 0xAC, 0x1B, 0xCA, 0x98, 0x5A, 0xDC, 0xFD, 0xED, 0x96, 0x60, + 0xE4, 0x43, 0x30, 0xCA, 0x60, 0x04, 0x1F, 0x4F, 0x97, 0x65, 0x51, 0xBF, + 0x64, 0x14, 0x6D, 0xD5, 0x5C, 0xC6, 0xF1, 0x9F, 0x7F, 0xFF, 0xDB, 0xDF, + 0xFF, 0xFA, 0x9D, 0x75, 0xFA, 0xC3, 0xA7, 0xE7, 0xBC, 0x16, 0xBF, 0x14, + 0x49, 0x57, 0x75, 0x6E, 0xAC, 0xD6, 0xD6, 0x31, 0x4C, 0x97, 0x69, 0x66, + 0x94, 0xE6, 0x9C, 0xA6, 0x98, 0x56, 0xEB, 0x8D, 0xD6, 0x1A, 0x21, 0xE8, + 0xA2, 0xB5, 0x4A, 0x39, 0x17, 0xEA, 0xB2, 0x5A, 0xAD, 0x4A, 0xAD, 0xED, + 0x22, 0x95, 0xB4, 0x1A, 0x02, 0x5C, 0x17, 0x05, 0x08, 0xD8, 0xB8, 0xE8, + 0xBD, 0x0D, 0x20, 0x85, 0x08, 0xA4, 0x8E, 0xE3, 0xAC, 0x63, 0xF4, 0x21, + 0xBA, 0xB2, 0xC8, 0x30, 0x82, 0x11, 0x00, 0xA3, 0x3C, 0x67, 0x04, 0x22, + 0x10, 0xBD, 0xDB, 0x6D, 0x9A, 0xE8, 0x92, 0x0F, 0xEE, 0xD4, 0x8D, 0x65, + 0x91, 0x1B, 0x6B, 0xA7, 0x69, 0x1A, 0xA6, 0xE5, 0xEB, 0x2F, 0x76, 0xAF, + 0x6F, 0xB6, 0x45, 0xCE, 0x21, 0x88, 0x59, 0x5E, 0xCC, 0xD2, 0x63, 0x8C, + 0x20, 0x80, 0x00, 0x22, 0x17, 0x1D, 0x48, 0x10, 0x21, 0x08, 0x11, 0xC4, + 0x18, 0x07, 0x97, 0xA6, 0xC5, 0xB6, 0xAB, 0x2A, 0x26, 0xE3, 0x9D, 0x56, + 0xD6, 0x3C, 0x3F, 0xBE, 0x70, 0x9E, 0xCD, 0xCA, 0x60, 0x12, 0x1E, 0x9E, + 0x3B, 0x2E, 0xC8, 0xF3, 0x61, 0x49, 0xC1, 0xDD, 0xEE, 0x38, 0xCF, 0xCB, + 0xD7, 0x6F, 0x6E, 0xFE, 0xFE, 0xE3, 0xD3, 0x30, 0xCA, 0x52, 0x20, 0x6B, + 0xA2, 0xC8, 0xB9, 0x36, 0xE1, 0xD2, 0xE9, 0xED, 0xBE, 0x5E, 0x46, 0x4B, + 0x21, 0xAD, 0x1B, 0x9E, 0x67, 0x80, 0xB0, 0xBC, 0x5E, 0x55, 0x88, 0xF0, + 0xAF, 0xEF, 0xEF, 0x86, 0x61, 0x41, 0x90, 0x2C, 0xA3, 0xD4, 0x4A, 0x49, + 0x25, 0xAD, 0x0F, 0x94, 0x92, 0xCB, 0x65, 0xF4, 0x31, 0x15, 0x79, 0x26, + 0x32, 0xEA, 0x9D, 0x03, 0x31, 0x15, 0x45, 0xD6, 0x14, 0xE5, 0xE1, 0xD4, + 0x65, 0x99, 0xB0, 0xCE, 0xE6, 0x79, 0x56, 0xE6, 0x39, 0x81, 0x29, 0xCB, + 0x98, 0xD6, 0x53, 0x2E, 0x32, 0x0F, 0xA0, 0xF3, 0x91, 0x12, 0xD6, 0xF5, + 0x1D, 0xE3, 0xD9, 0xF3, 0xE1, 0x90, 0x30, 0x6E, 0xB8, 0x80, 0x76, 0x81, + 0x84, 0x4B, 0xE3, 0xA5, 0x32, 0xCE, 0xBB, 0xF5, 0xAA, 0xB9, 0xB9, 0xBF, + 0x8A, 0x31, 0x38, 0x2B, 0xAF, 0xAF, 0xD6, 0x84, 0x8A, 0xA7, 0xE7, 0x67, + 0x65, 0x4C, 0x88, 0xA8, 0xEF, 0x86, 0x2A, 0x13, 0xD6, 0xE3, 0xCF, 0x8F, + 0x47, 0xEF, 0x9C, 0xF5, 0x31, 0x2B, 0xD9, 0xAA, 0xAD, 0x21, 0x84, 0x43, + 0x3F, 0x2F, 0x06, 0x0B, 0x9E, 0x56, 0xA5, 0x68, 0x8A, 0x76, 0x5C, 0xDC, + 0xF9, 0x72, 0xEE, 0x87, 0xCB, 0xDB, 0xBB, 0xED, 0x22, 0xF5, 0xCF, 0x4F, + 0x67, 0x65, 0xC3, 0xAA, 0xAD, 0x8F, 0x97, 0xBE, 0x2A, 0xCA, 0xD5, 0x7A, + 0xD5, 0x75, 0xBD, 0x36, 0x86, 0x53, 0x4A, 0x08, 0x59, 0xE4, 0xF2, 0xC5, + 0xAB, 0xBB, 0xAF, 0xEF, 0x57, 0x04, 0x51, 0x65, 0x62, 0x59, 0x30, 0x80, + 0x62, 0x3F, 0x48, 0x1F, 0x42, 0x04, 0x01, 0x80, 0x34, 0x4C, 0x8A, 0x51, + 0x7E, 0xE9, 0x7B, 0xC1, 0x58, 0xBB, 0xAA, 0xA7, 0x71, 0x66, 0x5C, 0x58, + 0xA3, 0x9B, 0xF5, 0x2A, 0x6F, 0xEE, 0xAD, 0xF3, 0xE3, 0xF9, 0xD3, 0xED, + 0xF5, 0x1A, 0x63, 0x48, 0x29, 0xCC, 0x8B, 0x3C, 0xC5, 0x98, 0xA2, 0x5F, + 0x17, 0x42, 0x7B, 0x1F, 0x7C, 0x04, 0x3E, 0x38, 0x1F, 0x4E, 0x97, 0x09, + 0x42, 0x90, 0x09, 0x6E, 0xAD, 0x47, 0x08, 0x61, 0x8C, 0x43, 0x8C, 0x09, + 0x24, 0x1F, 0x3C, 0xA2, 0x78, 0xB5, 0x69, 0x08, 0x44, 0x18, 0xA1, 0x61, + 0x1E, 0x28, 0xE5, 0xC1, 0x45, 0x82, 0x09, 0x86, 0x10, 0x42, 0x18, 0x40, + 0x20, 0x10, 0x1F, 0xFB, 0xE1, 0xD3, 0xC3, 0x81, 0x33, 0x3C, 0x2F, 0x16, + 0x22, 0x68, 0x8C, 0x97, 0xDA, 0x6E, 0xB6, 0xB5, 0xB7, 0x09, 0xE0, 0xB4, + 0x5B, 0xD5, 0x4D, 0x2E, 0x2E, 0xFD, 0x58, 0x96, 0xF9, 0x32, 0xA9, 0x53, + 0x37, 0xBE, 0x1C, 0xBB, 0x3F, 0x7E, 0xF7, 0x9D, 0xB1, 0x43, 0x4A, 0x20, + 0x86, 0xB0, 0xC8, 0xA9, 0x59, 0x97, 0x9F, 0x3E, 0x4C, 0x18, 0xD3, 0x10, + 0x22, 0xA7, 0x70, 0xB3, 0x2D, 0x2F, 0xDD, 0x42, 0x28, 0x73, 0x21, 0x7E, + 0xF9, 0x6E, 0x47, 0x18, 0xA7, 0x9C, 0x9F, 0x0E, 0x1D, 0xF2, 0x01, 0xA3, + 0xF4, 0xD2, 0x8D, 0x84, 0xD1, 0x3D, 0x27, 0x81, 0xD1, 0x59, 0xC9, 0x7A, + 0x55, 0xEF, 0x77, 0xFB, 0xF9, 0xF2, 0x8C, 0x50, 0x3A, 0x0F, 0xF2, 0xB2, + 0x38, 0x08, 0x61, 0xD3, 0x34, 0xD3, 0xBC, 0x08, 0x46, 0xDB, 0xAA, 0xAC, + 0xF2, 0xCA, 0x99, 0x64, 0x5D, 0xE8, 0xFA, 0x71, 0x9A, 0x67, 0xEB, 0xFC, + 0x38, 0x2E, 0xD6, 0xD9, 0xA2, 0xC8, 0x56, 0x75, 0x49, 0x48, 0xCA, 0xAA, + 0xA2, 0x2E, 0x73, 0xEF, 0xC2, 0xA9, 0x9B, 0x31, 0x46, 0x00, 0x41, 0xEF, + 0x3C, 0xF8, 0x65, 0x6B, 0x2E, 0x72, 0x8C, 0x90, 0x77, 0x3E, 0xC4, 0x54, + 0x97, 0x0C, 0x25, 0x63, 0x55, 0x20, 0x1C, 0x4E, 0xD2, 0x8F, 0xA3, 0x82, + 0x08, 0xBF, 0x3C, 0x9F, 0x57, 0x65, 0xC6, 0x84, 0x50, 0x5A, 0xF1, 0x8C, + 0x03, 0x80, 0xCA, 0x22, 0xAF, 0x4B, 0x51, 0x14, 0xD9, 0x71, 0x18, 0x8D, + 0xB5, 0x53, 0x3F, 0x5A, 0x17, 0x18, 0xE3, 0xC1, 0x5B, 0xEF, 0x42, 0x4C, + 0x01, 0x24, 0x98, 0x00, 0xAC, 0xAA, 0x3C, 0x46, 0x0F, 0x21, 0xCE, 0x33, + 0x76, 0xB5, 0x5D, 0x23, 0x48, 0x00, 0x04, 0xF0, 0xBF, 0xFB, 0xF7, 0xFF, + 0xEE, 0xE5, 0xD8, 0x4F, 0xD3, 0x72, 0x7B, 0x7B, 0x25, 0xA5, 0xB6, 0xC6, + 0xB4, 0xAB, 0x92, 0x51, 0x04, 0x53, 0xC0, 0x98, 0x4C, 0xA3, 0x3C, 0x9E, + 0x3A, 0x8C, 0xD0, 0xEB, 0xFB, 0x7D, 0x4A, 0x9E, 0x32, 0xCE, 0x39, 0x2B, + 0x32, 0x7A, 0xB5, 0x5D, 0x11, 0x92, 0x21, 0x8C, 0x20, 0x4A, 0x8B, 0x72, + 0x08, 0x81, 0x55, 0x93, 0x4D, 0x8B, 0xC1, 0x24, 0x3A, 0x6F, 0x9F, 0x9F, + 0xBA, 0xD3, 0x65, 0xE4, 0xC8, 0x7D, 0x78, 0x98, 0x22, 0x00, 0x98, 0xD0, + 0xF3, 0xB9, 0xC7, 0x28, 0x3A, 0xEF, 0xB5, 0x71, 0x59, 0xC6, 0x72, 0x91, + 0x71, 0x46, 0x0F, 0xE7, 0x6E, 0xB3, 0x69, 0xEF, 0xAE, 0xD7, 0x65, 0x5E, + 0x76, 0xA3, 0x7C, 0x3A, 0x9E, 0x97, 0x79, 0x89, 0xD1, 0x21, 0x04, 0x39, + 0x27, 0x9C, 0x55, 0xDE, 0xCB, 0xB6, 0x11, 0x6F, 0x6F, 0xDF, 0xE4, 0x22, + 0x53, 0xCE, 0xFD, 0xDB, 0xF7, 0x3F, 0x2B, 0x65, 0x72, 0x0E, 0x6F, 0x77, + 0x5B, 0x00, 0x52, 0xDB, 0x94, 0xD6, 0xFB, 0x87, 0xA7, 0x97, 0xA6, 0xC9, + 0xAD, 0xF6, 0xC7, 0x61, 0xAA, 0xCA, 0xFA, 0x4F, 0xBF, 0xFB, 0x4D, 0x53, + 0x17, 0xC3, 0xD4, 0x8F, 0x52, 0xB9, 0x94, 0xB4, 0x33, 0x08, 0x23, 0x39, + 0xEB, 0x79, 0x5E, 0x30, 0x45, 0x6A, 0xD6, 0x8C, 0x73, 0xCE, 0xC8, 0x32, + 0x0C, 0xF7, 0x57, 0xFB, 0xC7, 0xC3, 0x39, 0x58, 0xDB, 0xAE, 0x0A, 0x0F, + 0x93, 0x35, 0xA1, 0xCC, 0xB3, 0x61, 0x50, 0xEB, 0xB6, 0x39, 0x77, 0x5D, + 0x44, 0x20, 0x80, 0x58, 0x88, 0xBC, 0x14, 0x6C, 0x1C, 0x64, 0x59, 0xD5, + 0x4F, 0x87, 0xE3, 0xAB, 0x9B, 0xFD, 0xF1, 0xD4, 0x61, 0x4C, 0x11, 0xA1, + 0xF3, 0x22, 0x11, 0x46, 0x8B, 0x54, 0xDE, 0x79, 0x84, 0x10, 0xC2, 0xC4, + 0x1A, 0x5D, 0x97, 0xF9, 0x6E, 0xDD, 0x8E, 0xB3, 0x9C, 0xA5, 0x8E, 0x21, + 0x52, 0x82, 0x04, 0x67, 0xCF, 0xC7, 0x8B, 0x73, 0x56, 0x30, 0xF2, 0xDF, + 0xFF, 0xBB, 0x5F, 0xBF, 0xBE, 0xDB, 0x1D, 0x2E, 0x3D, 0x24, 0xF8, 0x78, + 0xE9, 0x63, 0x82, 0x4E, 0x87, 0xAE, 0x5F, 0xDA, 0x4D, 0x15, 0x7D, 0x0C, + 0x31, 0x02, 0x0C, 0x53, 0x02, 0x46, 0x9A, 0xF5, 0xBA, 0xB5, 0xD6, 0xB1, + 0x8C, 0x95, 0x79, 0xE6, 0x8C, 0xC9, 0xCA, 0xEC, 0x78, 0xB8, 0x2C, 0x52, + 0xAE, 0xB6, 0x2B, 0xAB, 0x67, 0xA5, 0x96, 0x97, 0xF3, 0xF4, 0x74, 0x1C, + 0xBF, 0xFD, 0x62, 0x43, 0x09, 0x98, 0x26, 0xC7, 0x38, 0xC6, 0x84, 0x7C, + 0x7E, 0xEC, 0x61, 0x0A, 0x85, 0xC0, 0x4A, 0x27, 0x1F, 0x50, 0x5E, 0x09, + 0x84, 0xA0, 0x33, 0xB0, 0xAC, 0x2A, 0x39, 0xCD, 0x08, 0xB9, 0x3C, 0xA7, + 0x94, 0x80, 0xBB, 0x9B, 0x6B, 0xE3, 0x38, 0x66, 0x9C, 0x41, 0x04, 0x01, + 0xF2, 0xCE, 0x5E, 0xCE, 0x97, 0x94, 0x22, 0x00, 0xE8, 0xD4, 0x8D, 0x3C, + 0x13, 0x20, 0xC4, 0x5C, 0x50, 0x2E, 0xF8, 0x2C, 0x95, 0xD2, 0xFA, 0x7E, + 0xBF, 0x0D, 0x31, 0x11, 0x46, 0x19, 0xC3, 0xBF, 0x28, 0x60, 0x39, 0x23, + 0x55, 0x59, 0x10, 0x82, 0xEF, 0x76, 0x2D, 0xC1, 0xC1, 0x1A, 0x17, 0x22, + 0x59, 0x94, 0xFE, 0xFB, 0xA7, 0x67, 0xA3, 0xCD, 0xFD, 0xFD, 0x2B, 0x3B, + 0x0E, 0x4E, 0xCB, 0x10, 0x03, 0x20, 0x8C, 0x72, 0x5E, 0x35, 0x65, 0xCE, + 0x79, 0x59, 0x62, 0x04, 0x61, 0x51, 0x67, 0x84, 0xD0, 0xBE, 0x9B, 0x53, + 0x8A, 0x80, 0xC2, 0x59, 0xEA, 0xEE, 0x3C, 0x69, 0x65, 0x10, 0xA4, 0xF3, + 0x3C, 0xA4, 0xE0, 0x66, 0x03, 0x8A, 0x22, 0x6F, 0xEB, 0xBA, 0xEF, 0x47, + 0x42, 0xD8, 0x87, 0xCF, 0x0F, 0x18, 0xC7, 0xAF, 0x5E, 0xDF, 0xAF, 0xEA, + 0xFA, 0xE7, 0xC7, 0xEE, 0xE9, 0xE9, 0x20, 0x8D, 0xDC, 0xB6, 0xD5, 0xE3, + 0xD3, 0x01, 0x73, 0x6E, 0x7C, 0xD4, 0x0E, 0x78, 0x67, 0xDA, 0x66, 0xC5, + 0x28, 0x7D, 0x3E, 0x3C, 0x53, 0x4A, 0x84, 0xC8, 0x9D, 0xF3, 0x84, 0x92, + 0x7F, 0xFA, 0xEE, 0x8B, 0xB7, 0x57, 0xC5, 0xE7, 0xA7, 0x91, 0x67, 0xA5, + 0x10, 0xE4, 0xE5, 0x78, 0x82, 0x10, 0x74, 0xE3, 0x4C, 0x28, 0x6E, 0xAA, + 0xF2, 0x87, 0x9F, 0x1E, 0x78, 0xC6, 0x30, 0x46, 0x65, 0xBD, 0x55, 0x73, + 0xBF, 0x48, 0x59, 0x94, 0xAB, 0xEB, 0xFD, 0x86, 0xE4, 0xCD, 0xA7, 0x8F, + 0xEF, 0x8D, 0x9C, 0xB6, 0x9B, 0x15, 0x86, 0x20, 0xC1, 0x04, 0x52, 0xBC, + 0xDA, 0xAF, 0x12, 0x00, 0xCB, 0x22, 0xEB, 0x82, 0x63, 0x8C, 0x08, 0xC6, + 0x45, 0x59, 0x3C, 0x3D, 0x1C, 0x42, 0x70, 0x59, 0x26, 0x9C, 0x8F, 0x82, + 0xB3, 0x42, 0x88, 0x7E, 0x54, 0xDA, 0x1A, 0xA3, 0x2D, 0xC2, 0x08, 0x00, + 0x88, 0x08, 0xCE, 0x0A, 0x86, 0x50, 0x04, 0x09, 0x68, 0x6B, 0xB3, 0x3C, + 0x43, 0x30, 0x36, 0x45, 0x65, 0xAC, 0xEB, 0xA7, 0x71, 0xB7, 0xDD, 0x1D, + 0x2F, 0xFD, 0x30, 0x2D, 0x75, 0x59, 0x9C, 0x4F, 0x5D, 0xBB, 0x2E, 0x87, + 0x7E, 0x4A, 0x30, 0xF6, 0x27, 0x59, 0x54, 0x6C, 0xBD, 0x6D, 0x18, 0x2F, + 0x39, 0x4E, 0xCF, 0x4F, 0x87, 0x14, 0x88, 0x36, 0x76, 0x59, 0x64, 0xDB, + 0x6C, 0x33, 0x5E, 0x77, 0xDD, 0x39, 0x24, 0x75, 0x3C, 0xF5, 0x5F, 0xBD, + 0xDD, 0x8B, 0x1C, 0x17, 0x65, 0xD3, 0x56, 0x39, 0x8C, 0x11, 0x51, 0x1C, + 0x11, 0x1A, 0x87, 0x65, 0x1A, 0xA4, 0x54, 0x12, 0x63, 0x6A, 0x12, 0x6A, + 0x9A, 0xA2, 0x2D, 0x44, 0x41, 0x82, 0x8A, 0x70, 0x9C, 0x5C, 0x74, 0x0E, + 0xCC, 0xCA, 0x0B, 0x4A, 0xB3, 0x06, 0xC4, 0x70, 0xB5, 0xCE, 0x9D, 0xB3, + 0xC1, 0x48, 0x2A, 0xB2, 0xC4, 0xB3, 0x8C, 0x73, 0xC1, 0xE9, 0xA2, 0x54, + 0x4A, 0x00, 0x41, 0xA0, 0xB5, 0x53, 0xD2, 0xC5, 0x04, 0xCF, 0xE7, 0x6E, + 0x98, 0x16, 0x63, 0x75, 0x9E, 0x67, 0x00, 0x21, 0x4A, 0x31, 0x0A, 0xFE, + 0x6E, 0x5B, 0x0E, 0x36, 0xC2, 0x04, 0x8C, 0x8B, 0xE3, 0xAC, 0xDB, 0x4D, + 0xBB, 0x4C, 0xD2, 0x19, 0xE3, 0x63, 0xC2, 0x84, 0x52, 0x82, 0xD7, 0x4D, + 0x7D, 0x3C, 0x75, 0x94, 0x52, 0x90, 0xE2, 0xAA, 0x44, 0x45, 0x46, 0xA4, + 0x92, 0x8C, 0x17, 0xD2, 0xF8, 0xEE, 0x2C, 0x71, 0x0A, 0xCA, 0x2D, 0x0E, + 0x35, 0x8B, 0x72, 0xC3, 0x30, 0x20, 0x14, 0x6F, 0xAF, 0xF7, 0xBF, 0x58, + 0x13, 0xAB, 0x32, 0x3B, 0x9D, 0x4F, 0xFD, 0xD0, 0xC7, 0x08, 0x40, 0x02, + 0x21, 0x78, 0x00, 0xC0, 0x22, 0x6D, 0x8C, 0xA9, 0xAA, 0x32, 0xA3, 0x1D, + 0xC6, 0x10, 0x42, 0x50, 0xD6, 0x05, 0x8A, 0x70, 0x55, 0x97, 0x10, 0x41, + 0x22, 0x4D, 0x9C, 0xC7, 0xFE, 0x7A, 0xBB, 0x3A, 0x1E, 0xCF, 0x4D, 0x5D, + 0xAC, 0xF6, 0x79, 0x02, 0x31, 0x7A, 0x67, 0xB4, 0x7D, 0xFF, 0xF1, 0xA5, + 0x6D, 0x56, 0x84, 0xE7, 0x31, 0xB8, 0xA6, 0xA9, 0x6E, 0x76, 0x9B, 0x76, + 0xD5, 0x5A, 0xEF, 0x30, 0x02, 0x29, 0x82, 0x18, 0x13, 0x42, 0x08, 0x80, + 0x14, 0xAC, 0xFB, 0xEB, 0x4F, 0x4F, 0x59, 0x51, 0x20, 0x9A, 0x8A, 0x8C, + 0xE7, 0x39, 0x5F, 0xAF, 0x57, 0xF7, 0xF7, 0xD7, 0xDD, 0xE1, 0x38, 0x8C, + 0x16, 0x60, 0xBA, 0xDD, 0x54, 0xE7, 0xD3, 0xA9, 0xCA, 0xC5, 0x28, 0x81, + 0x57, 0x96, 0x62, 0xB4, 0xAB, 0xB3, 0x9F, 0x1E, 0x0E, 0xD6, 0xC5, 0xBA, + 0xAE, 0x19, 0x23, 0x9F, 0x1F, 0x1F, 0xCF, 0xBD, 0x32, 0xC6, 0x20, 0x08, + 0xA3, 0x4F, 0x80, 0x20, 0x6B, 0xE2, 0x3C, 0xF6, 0xFB, 0x4D, 0xFB, 0xCF, + 0xDF, 0xFD, 0x3E, 0x63, 0x1C, 0x11, 0x9C, 0x92, 0xFB, 0xFA, 0xBE, 0xF9, + 0xF0, 0xF0, 0xFC, 0x5F, 0xFE, 0xEB, 0x4F, 0x75, 0x91, 0x6D, 0xB6, 0x6D, + 0x8A, 0xC1, 0x5B, 0xB7, 0xFA, 0xE6, 0x75, 0x44, 0x29, 0x78, 0xF8, 0xFB, + 0x3F, 0xFC, 0xE3, 0x6E, 0xBD, 0x19, 0xC7, 0xF3, 0x0F, 0x3F, 0x3F, 0xC4, + 0x14, 0x67, 0xA5, 0xC6, 0x59, 0xFA, 0xE0, 0x19, 0xC3, 0x10, 0x42, 0x29, + 0x0D, 0x80, 0x29, 0xCB, 0x8B, 0x79, 0x96, 0xE3, 0xE8, 0x29, 0x86, 0x1F, + 0x1E, 0x0E, 0x29, 0x26, 0x42, 0xF0, 0xE7, 0xE7, 0x53, 0x5E, 0x8A, 0x2C, + 0x2B, 0xA7, 0xC5, 0x00, 0x08, 0xDF, 0x7F, 0x7E, 0x72, 0x3E, 0x60, 0x4A, + 0x94, 0xF1, 0x26, 0x8B, 0x78, 0xDD, 0x7A, 0x1F, 0xAD, 0xB5, 0x77, 0x77, + 0x37, 0xD3, 0x3C, 0xBB, 0x14, 0x28, 0x82, 0x04, 0x42, 0x63, 0x14, 0x42, + 0x98, 0x60, 0x7A, 0x3C, 0x75, 0x57, 0xBB, 0x8D, 0xB5, 0x46, 0x19, 0x4D, + 0x30, 0xEE, 0xC6, 0xE5, 0xE9, 0xE5, 0x82, 0x08, 0x8A, 0x31, 0x41, 0x10, + 0x63, 0x8C, 0xBB, 0x56, 0xFC, 0xC3, 0x6F, 0x7E, 0x03, 0x52, 0x2A, 0x72, + 0xF6, 0xFD, 0x8F, 0x0F, 0x2F, 0x97, 0x7E, 0x18, 0x97, 0x10, 0x22, 0xE7, + 0x9C, 0x51, 0x46, 0x29, 0x36, 0xCA, 0x20, 0x82, 0x16, 0x6D, 0x8D, 0x8B, + 0xCE, 0xBA, 0xBA, 0xCE, 0x2E, 0xFD, 0xE8, 0x9C, 0xE7, 0x2E, 0xD3, 0xCA, + 0x6B, 0xA5, 0xC4, 0xA2, 0xBD, 0x4F, 0x98, 0xB3, 0x69, 0xEE, 0xBD, 0xF3, + 0x31, 0x41, 0xEB, 0x43, 0x70, 0xC9, 0x27, 0x10, 0x5C, 0x10, 0x19, 0xFA, + 0xF8, 0x30, 0x70, 0x86, 0xA7, 0xD9, 0x21, 0x90, 0xAA, 0x8C, 0x86, 0x18, + 0x19, 0x23, 0x9B, 0x6D, 0x11, 0x13, 0xF6, 0x36, 0x41, 0x80, 0xBC, 0x8F, + 0x4A, 0xB9, 0xC7, 0xE7, 0x79, 0xBF, 0x2D, 0x0A, 0xB1, 0x48, 0x2B, 0xB9, + 0xC8, 0x09, 0x42, 0x65, 0x59, 0x41, 0x4C, 0x9C, 0x0F, 0x8C, 0xD0, 0xD9, + 0x18, 0xC2, 0xE9, 0x30, 0x2C, 0x8C, 0x33, 0x80, 0x50, 0x48, 0x96, 0x71, + 0xA1, 0x95, 0x46, 0x04, 0x06, 0x17, 0xFB, 0x7E, 0x74, 0x21, 0x20, 0x8C, + 0x16, 0xE9, 0x52, 0x8C, 0x37, 0xFB, 0x35, 0xE7, 0xA4, 0x1F, 0xE7, 0xA6, + 0xA0, 0x82, 0xE3, 0xA6, 0xAC, 0x7D, 0x84, 0x08, 0xD2, 0x4D, 0x5B, 0x6C, + 0x9A, 0x92, 0xAC, 0x8A, 0x90, 0x92, 0x52, 0xBA, 0x2C, 0x73, 0x63, 0xDC, + 0x28, 0xF5, 0xE7, 0x97, 0x6E, 0x6B, 0x98, 0x55, 0xD2, 0xA7, 0x14, 0x31, + 0x11, 0x82, 0xA1, 0x04, 0x01, 0x00, 0x84, 0x91, 0xB6, 0x6D, 0x42, 0x15, + 0x84, 0x10, 0x97, 0x23, 0x39, 0xBE, 0x9C, 0xF7, 0xAB, 0x66, 0x9E, 0xA5, + 0x55, 0xD1, 0x1B, 0xBF, 0x2C, 0x6E, 0xD3, 0x96, 0xE3, 0x38, 0x81, 0x18, + 0x60, 0x5A, 0xAA, 0x12, 0xF6, 0x99, 0x08, 0xC9, 0x4F, 0xB3, 0xDA, 0xEF, + 0x76, 0x10, 0x93, 0xA7, 0x6E, 0x62, 0xC9, 0x4B, 0xE9, 0x62, 0xF4, 0x31, + 0xC4, 0x2A, 0xE3, 0x6D, 0x55, 0x3C, 0x9D, 0xBB, 0xFD, 0x6E, 0x57, 0x15, + 0xA5, 0xD6, 0xD6, 0xDA, 0xDC, 0x07, 0xC0, 0x21, 0x3A, 0x5D, 0x46, 0xA9, + 0xBC, 0x0F, 0x16, 0x61, 0xF4, 0x0B, 0x0F, 0x4B, 0x28, 0x7E, 0x7A, 0x39, + 0x6D, 0xD6, 0xDB, 0x7A, 0x45, 0xA5, 0x76, 0x79, 0x51, 0x7C, 0xF3, 0xBB, + 0x7F, 0x7A, 0x7A, 0x78, 0x3A, 0x7C, 0xFF, 0xDF, 0xAA, 0x32, 0xDB, 0x5F, + 0x6F, 0xF7, 0x9B, 0x66, 0xBF, 0x6D, 0x42, 0x08, 0xDD, 0x30, 0xAD, 0xDB, + 0x52, 0x1A, 0x8B, 0x41, 0xEA, 0xFA, 0xF1, 0x7A, 0xDF, 0x78, 0xEF, 0xFE, + 0xF2, 0xB7, 0x0F, 0x9B, 0x75, 0x83, 0x3C, 0xD4, 0xC6, 0x43, 0x8C, 0x20, + 0x46, 0xCA, 0x39, 0x1F, 0xA3, 0xB1, 0x9E, 0x67, 0xC2, 0xBA, 0x10, 0x43, + 0x88, 0x3E, 0x8C, 0xE3, 0x32, 0x4C, 0xF3, 0xF3, 0xE1, 0x92, 0x00, 0xBC, + 0xBB, 0xDB, 0x12, 0x1C, 0xC0, 0x0D, 0x5E, 0x94, 0x12, 0x5C, 0x3C, 0xBE, + 0x1C, 0x42, 0x84, 0x84, 0x50, 0x63, 0xDC, 0x7A, 0xD3, 0x2C, 0xCB, 0xD4, + 0x54, 0x39, 0x61, 0x24, 0x17, 0x62, 0xB3, 0xA9, 0x2E, 0xC3, 0x78, 0x38, + 0x9F, 0x9B, 0x92, 0xAF, 0x77, 0xCD, 0xB2, 0x18, 0x40, 0x52, 0x2E, 0x56, + 0x18, 0x65, 0x97, 0xBE, 0xEB, 0xC6, 0xC1, 0x19, 0x95, 0xE7, 0x62, 0xB7, + 0xAB, 0x8B, 0x8C, 0x6D, 0x36, 0xFB, 0xA9, 0xEF, 0x59, 0x91, 0x05, 0x00, + 0x8D, 0x71, 0x57, 0xFB, 0x7A, 0xDF, 0xB2, 0x4B, 0x8F, 0x44, 0xD5, 0x3C, + 0xBF, 0x4C, 0x04, 0x06, 0x63, 0x16, 0xE7, 0x09, 0x26, 0x62, 0xB7, 0x2B, + 0x29, 0x42, 0xD1, 0xF8, 0xEB, 0x5D, 0xF5, 0xF1, 0x14, 0xB4, 0xB6, 0x04, + 0xFB, 0x42, 0xD4, 0x53, 0x70, 0xCB, 0x6C, 0xA9, 0x27, 0x2C, 0x6B, 0x9E, + 0x1E, 0x5F, 0x00, 0x4A, 0x43, 0x3F, 0xC7, 0x18, 0x33, 0x21, 0x9A, 0xB6, + 0x4A, 0x21, 0xAE, 0xDF, 0xDE, 0x2C, 0x8B, 0xE2, 0x19, 0xAA, 0xAB, 0x72, + 0x5C, 0xAC, 0xF5, 0x6E, 0xEC, 0xC6, 0x18, 0x53, 0x58, 0xA4, 0xB3, 0x16, + 0xE4, 0x39, 0xCF, 0xC5, 0xF9, 0x34, 0xA4, 0x90, 0xAA, 0xA6, 0xD0, 0xC6, + 0x6A, 0x65, 0xEF, 0xAF, 0xB6, 0xC7, 0x53, 0x37, 0x2B, 0xB3, 0x16, 0xC2, + 0xE8, 0x78, 0x19, 0xD5, 0xAA, 0xCD, 0x04, 0x4E, 0x01, 0xBA, 0x6E, 0x32, + 0xD6, 0xEA, 0x76, 0x25, 0x4A, 0x5E, 0x3F, 0x1D, 0x21, 0x21, 0x0C, 0x22, + 0x84, 0x20, 0x9C, 0x67, 0xAB, 0xB5, 0x39, 0x77, 0xF3, 0xFD, 0xCD, 0xBE, + 0xC8, 0xEB, 0xCB, 0x65, 0xD0, 0xDA, 0x00, 0x08, 0x16, 0xA9, 0xB8, 0x10, + 0x84, 0x89, 0x2A, 0xCF, 0xB6, 0x6D, 0x69, 0xB4, 0x31, 0xD6, 0xBE, 0x7B, + 0x7D, 0xAF, 0xAC, 0xEE, 0x07, 0xD5, 0x34, 0x3B, 0x69, 0x0C, 0x2E, 0x73, + 0xF2, 0x7A, 0x5F, 0x3F, 0xBD, 0x74, 0xDA, 0x9A, 0xED, 0x26, 0x1B, 0x87, + 0x5E, 0x29, 0x9B, 0xE7, 0x62, 0x18, 0xE6, 0xBA, 0xC9, 0xB4, 0x8E, 0xC6, + 0x68, 0xE7, 0xDD, 0x6F, 0xBF, 0x7E, 0xCB, 0x68, 0xF6, 0xF3, 0xC7, 0xE3, + 0xFB, 0x8F, 0x4F, 0xFF, 0xE5, 0xBF, 0xFE, 0x55, 0x2A, 0xA3, 0x8C, 0xFE, + 0xF8, 0xF9, 0x49, 0x2E, 0x3A, 0x86, 0xB8, 0x6E, 0x6B, 0xC6, 0x88, 0x77, + 0xF1, 0xA7, 0x9F, 0x1F, 0xA5, 0x4D, 0x3F, 0xBE, 0x3F, 0x12, 0x2C, 0x22, + 0x40, 0xFB, 0x5D, 0xBB, 0xDB, 0x14, 0x18, 0x43, 0x02, 0x80, 0x60, 0x3C, + 0xA4, 0xB4, 0xAE, 0x6A, 0x41, 0xD0, 0xF5, 0xA6, 0x3C, 0xF4, 0x8B, 0x71, + 0x01, 0x22, 0x30, 0xCF, 0xB2, 0xEF, 0xE6, 0x73, 0x3F, 0xB4, 0x65, 0x09, + 0x11, 0xB1, 0x3E, 0x42, 0x88, 0xA6, 0x59, 0x96, 0x82, 0xFF, 0xE6, 0xEB, + 0xAF, 0x7D, 0x84, 0xA7, 0x7E, 0x34, 0xD6, 0x77, 0xC3, 0xB4, 0x2C, 0x52, + 0x08, 0x74, 0xBD, 0x6B, 0x9A, 0xBA, 0xF8, 0xF0, 0xF1, 0xF4, 0xFC, 0x74, + 0x60, 0x8C, 0xB7, 0x6D, 0xCB, 0x38, 0x23, 0x34, 0x0F, 0x9E, 0x5C, 0xCE, + 0xDD, 0x22, 0x97, 0x97, 0x73, 0xFF, 0x72, 0x1E, 0x45, 0xC1, 0x21, 0x22, + 0x72, 0xD1, 0x10, 0x21, 0xC2, 0x28, 0x42, 0x28, 0xCB, 0x32, 0x4A, 0x29, + 0x48, 0x00, 0xC4, 0x04, 0x00, 0xE8, 0x86, 0x69, 0x9C, 0x96, 0x49, 0xAB, + 0x98, 0xC2, 0xA6, 0xAE, 0xAF, 0xD6, 0x5B, 0x29, 0xD5, 0x62, 0xAD, 0x89, + 0x09, 0x23, 0x8C, 0x31, 0xC5, 0x24, 0x2B, 0xCA, 0x76, 0xB7, 0xDB, 0xD7, + 0x55, 0x96, 0x65, 0x62, 0x1A, 0xFA, 0xFD, 0xF5, 0x7E, 0x7F, 0xB5, 0x32, + 0xDA, 0xF8, 0x90, 0x04, 0xE3, 0x31, 0x42, 0x08, 0x61, 0x53, 0x97, 0x79, + 0x26, 0x52, 0xF4, 0xDE, 0x07, 0x6D, 0xAD, 0xD2, 0x92, 0x33, 0x08, 0x63, + 0xD8, 0x6F, 0x9B, 0xAB, 0x4D, 0xFD, 0xC5, 0xDD, 0xEE, 0x9F, 0xFF, 0xF0, + 0x05, 0x42, 0xA8, 0xEB, 0xE7, 0x7E, 0x5A, 0x3E, 0x3D, 0x5F, 0xEA, 0x5A, + 0x30, 0x4A, 0x05, 0xE7, 0xD6, 0xB8, 0xF5, 0xBA, 0x94, 0xD2, 0x38, 0x1F, + 0xE7, 0x45, 0x01, 0x08, 0x21, 0x00, 0x9C, 0x63, 0x4A, 0x89, 0xB3, 0xDE, + 0x18, 0x97, 0x00, 0x48, 0x20, 0x1D, 0x4E, 0x43, 0xDF, 0xCF, 0x98, 0x41, + 0xE3, 0x9C, 0xB7, 0x0E, 0xA6, 0x30, 0x8E, 0xB3, 0x54, 0x1E, 0x61, 0x94, + 0x92, 0x43, 0x29, 0x7E, 0xF8, 0xBC, 0x28, 0x1D, 0x9D, 0x4D, 0x6D, 0x89, + 0x53, 0x82, 0x65, 0x21, 0xB6, 0xDB, 0x3A, 0x04, 0xEB, 0x5D, 0x00, 0x00, + 0x06, 0x17, 0xBD, 0x4F, 0x97, 0xCB, 0x40, 0x19, 0x25, 0x04, 0x6E, 0xB6, + 0xEB, 0xD5, 0x7A, 0x35, 0x2B, 0x33, 0x0F, 0x0B, 0x40, 0xF0, 0x74, 0xEA, + 0x7F, 0x11, 0x93, 0x8C, 0xD3, 0x6C, 0xBD, 0xCF, 0xCA, 0xF2, 0xE1, 0xF1, + 0x19, 0x13, 0x66, 0xBD, 0x87, 0x08, 0x97, 0x55, 0x91, 0x62, 0xC8, 0xB9, + 0x38, 0x0F, 0x4B, 0x3F, 0x2E, 0x87, 0x73, 0x0F, 0x11, 0x3E, 0x9C, 0xFA, + 0x71, 0x5E, 0x9C, 0x07, 0xFD, 0x28, 0x87, 0x79, 0x59, 0xB4, 0x6A, 0xEB, + 0x7C, 0xB5, 0xA9, 0x06, 0x2D, 0x6F, 0x6F, 0x76, 0xBB, 0x4D, 0x83, 0x11, + 0x72, 0x11, 0x58, 0xEF, 0x43, 0x82, 0x31, 0x24, 0x00, 0x60, 0x56, 0x8A, + 0xAA, 0x64, 0xDE, 0xFA, 0xC3, 0x61, 0x9C, 0x16, 0x7D, 0x3C, 0x5E, 0xB4, + 0xB5, 0xC3, 0xA2, 0xC7, 0x45, 0x8F, 0x83, 0x4A, 0x09, 0x33, 0x26, 0xAC, + 0xF5, 0x75, 0x59, 0xDF, 0x5E, 0xDD, 0xAC, 0xDA, 0x6A, 0xBD, 0x6A, 0xDB, + 0x66, 0xC5, 0x18, 0x2B, 0xAB, 0x66, 0x7B, 0x75, 0xF7, 0xFA, 0xEE, 0x1A, + 0x27, 0xF5, 0x78, 0x7C, 0xE4, 0x3C, 0xAF, 0x44, 0xA1, 0xB5, 0x11, 0x19, + 0x82, 0x00, 0x1A, 0x13, 0x29, 0x82, 0x29, 0x18, 0x42, 0x50, 0x91, 0xE5, + 0x4A, 0xCE, 0xBF, 0xFE, 0xE2, 0xEA, 0x6A, 0xDB, 0x70, 0x41, 0xDA, 0x2A, + 0x63, 0xD0, 0xB7, 0x55, 0x89, 0xB1, 0x48, 0x88, 0x6A, 0xEB, 0x3F, 0x7C, + 0xFA, 0x0C, 0x00, 0xC4, 0x08, 0x58, 0x1F, 0x2F, 0xFD, 0x94, 0x67, 0x05, + 0xC6, 0xF0, 0xDC, 0x4D, 0x98, 0xF0, 0xB2, 0xAC, 0x44, 0xD9, 0x9E, 0x5E, + 0x9E, 0x7E, 0xF5, 0x87, 0x7F, 0x91, 0xE7, 0x4F, 0xFB, 0x0A, 0x7F, 0xF9, + 0xF6, 0xCD, 0x97, 0xF7, 0xD7, 0x99, 0x20, 0xBF, 0x9C, 0x81, 0x38, 0x25, + 0x9C, 0x33, 0x4E, 0x59, 0x59, 0x66, 0x77, 0xD7, 0xDB, 0xEB, 0xAB, 0x0D, + 0x63, 0xD4, 0x99, 0xB8, 0xDF, 0x6D, 0x18, 0xE7, 0x4C, 0x70, 0x1F, 0xE2, + 0xF3, 0xE3, 0xF1, 0x70, 0xEE, 0x21, 0x86, 0x4A, 0x5B, 0x6D, 0x9C, 0xB5, + 0xC1, 0x39, 0x0F, 0x31, 0x14, 0x22, 0x83, 0x10, 0x22, 0x08, 0xA7, 0x59, + 0x2B, 0xEB, 0x09, 0xC1, 0x0F, 0xCF, 0x97, 0xE0, 0xE3, 0x34, 0x2F, 0xC3, + 0x6C, 0x16, 0x69, 0x3F, 0x7C, 0xFC, 0x1C, 0x7C, 0x2C, 0x72, 0xEA, 0x9D, + 0x7B, 0x39, 0x0D, 0x09, 0x02, 0xE7, 0xE3, 0x22, 0x2D, 0x23, 0xB8, 0xAD, + 0xF3, 0x14, 0x63, 0x5E, 0x70, 0x8C, 0x41, 0xD3, 0x54, 0x55, 0x59, 0x1A, + 0x6D, 0xBF, 0x7C, 0xBB, 0xDB, 0x6E, 0xF9, 0x77, 0x5F, 0xBF, 0xFB, 0xD5, + 0xD7, 0x77, 0xCE, 0x4A, 0x6D, 0x8C, 0x33, 0x29, 0x00, 0x68, 0x23, 0x3C, + 0x5F, 0xE6, 0x45, 0xD9, 0xCB, 0xF1, 0xA0, 0xC6, 0xE1, 0x78, 0x99, 0x62, + 0x74, 0x4D, 0x5D, 0xC5, 0x60, 0xF3, 0x2C, 0xE7, 0x2C, 0x0B, 0x2E, 0x2E, + 0xE3, 0xD2, 0x5D, 0xA6, 0x18, 0xE3, 0xE1, 0xD8, 0xF5, 0xE3, 0xF8, 0x72, + 0x1C, 0xFE, 0xF2, 0xD7, 0x9F, 0x30, 0x84, 0x97, 0x7E, 0x96, 0x32, 0x50, + 0xCA, 0xA4, 0x36, 0x52, 0x49, 0xA5, 0x6D, 0x02, 0xC0, 0xFB, 0xA8, 0xA5, + 0x15, 0x94, 0x82, 0x04, 0x86, 0x69, 0xB1, 0xC6, 0x2B, 0x69, 0x17, 0x6D, + 0x20, 0x82, 0x19, 0xE5, 0x4D, 0x51, 0x34, 0x6D, 0x53, 0xE6, 0x02, 0x13, + 0x3A, 0x2F, 0x5A, 0x6B, 0x27, 0x17, 0x9D, 0x67, 0x8C, 0x40, 0xF8, 0x72, + 0x38, 0x57, 0x45, 0x8E, 0x21, 0x3A, 0x74, 0xA3, 0xD1, 0xD6, 0x3B, 0x1B, + 0x42, 0x14, 0x04, 0x6A, 0xD9, 0xCB, 0x90, 0xB4, 0xF7, 0x00, 0x42, 0x04, + 0x63, 0xC4, 0x4E, 0x5A, 0x44, 0x28, 0x9E, 0xC6, 0x81, 0xE3, 0x74, 0x7F, + 0x7B, 0xBB, 0x28, 0xD3, 0xF7, 0xBD, 0x94, 0x6A, 0x9A, 0x25, 0x04, 0x20, + 0xC5, 0xE0, 0x9D, 0x45, 0x04, 0x8F, 0x93, 0x34, 0x26, 0xFC, 0xEE, 0x57, + 0xDF, 0x7D, 0xF3, 0xEA, 0xFA, 0xDD, 0xAB, 0xAB, 0xDB, 0xAB, 0xCD, 0x66, + 0xB3, 0xD9, 0xAC, 0x77, 0x59, 0x56, 0x34, 0x75, 0xDD, 0xD4, 0x0D, 0xE3, + 0x39, 0xFC, 0x97, 0x7F, 0xFA, 0x66, 0x1C, 0xD4, 0x30, 0xEB, 0xFB, 0xFB, + 0x35, 0xE3, 0xA8, 0xBB, 0xCC, 0x10, 0x53, 0x8A, 0x11, 0xC6, 0xF0, 0xCD, + 0xDB, 0x77, 0xDF, 0xFF, 0xF5, 0xA9, 0xCA, 0xD3, 0xEB, 0x9B, 0x5B, 0x42, + 0x2A, 0x63, 0xFD, 0xE7, 0xE7, 0xD3, 0xD3, 0xCB, 0xCB, 0xF1, 0x7C, 0xB8, + 0xBF, 0xDE, 0xB5, 0x4D, 0xB9, 0x48, 0x35, 0xCF, 0x92, 0x13, 0xF6, 0xED, + 0xD7, 0xEF, 0x38, 0x67, 0xE3, 0xAC, 0xBA, 0x71, 0x76, 0x09, 0x50, 0xCA, + 0xB5, 0x36, 0x55, 0x91, 0x55, 0x05, 0xAE, 0x0A, 0xD1, 0x75, 0x27, 0x39, + 0x8D, 0xBB, 0xCD, 0xF6, 0x3C, 0x5C, 0x28, 0x26, 0xC6, 0x9A, 0xC3, 0x49, + 0x76, 0x8B, 0x36, 0xC6, 0x42, 0x98, 0x38, 0x25, 0x04, 0x23, 0xE7, 0x42, + 0x5B, 0xD7, 0xE7, 0x61, 0xE2, 0x9C, 0x9F, 0x2F, 0xFD, 0xD7, 0xAF, 0xF7, + 0xFB, 0xED, 0x55, 0x96, 0x37, 0xC3, 0xBC, 0xF4, 0xE3, 0x30, 0xCF, 0x13, + 0x00, 0x31, 0x84, 0x74, 0x7F, 0x53, 0xA7, 0x18, 0x21, 0x24, 0xBB, 0x55, + 0x3B, 0x0E, 0x13, 0x44, 0x6C, 0xB3, 0x5B, 0x69, 0xB3, 0x44, 0x18, 0x87, + 0x61, 0x9E, 0x26, 0x17, 0x13, 0xEE, 0xC7, 0xFF, 0x7F, 0x68, 0x8D, 0x05, + 0xFB, 0x9B, 0xDB, 0xAE, 0x7B, 0xB2, 0x5A, 0x95, 0x65, 0x0E, 0x11, 0x92, + 0x8B, 0x66, 0x8C, 0x12, 0x84, 0xB4, 0x54, 0xC3, 0x38, 0x59, 0xE7, 0x42, + 0x0A, 0x77, 0xFB, 0x16, 0x06, 0x68, 0x7C, 0x1C, 0xE6, 0x99, 0x95, 0x39, + 0x4C, 0xC8, 0x59, 0x87, 0x10, 0xBA, 0xBA, 0xBA, 0x65, 0x9C, 0xDF, 0x6D, + 0xF2, 0x60, 0x34, 0x13, 0xB4, 0xAA, 0x32, 0x48, 0x60, 0x0C, 0xC1, 0x19, + 0x97, 0x30, 0x52, 0xD2, 0x29, 0x15, 0xBE, 0xFF, 0xE1, 0xC3, 0xBA, 0xA9, + 0xEB, 0x4A, 0x0C, 0xE3, 0xBC, 0x28, 0xB3, 0x6D, 0xAB, 0xBB, 0xFD, 0xEA, + 0xF5, 0xF5, 0x1A, 0x00, 0xD4, 0x36, 0x19, 0x84, 0xD0, 0x18, 0x6F, 0x6C, + 0x50, 0xDA, 0xAD, 0x56, 0x15, 0xC1, 0xC0, 0x58, 0x0B, 0x20, 0x32, 0xCE, + 0x3C, 0x1E, 0x3A, 0x80, 0x62, 0x88, 0xA1, 0xEB, 0xF5, 0xDF, 0x7E, 0xF8, + 0xBC, 0x5E, 0x97, 0x75, 0x53, 0xF4, 0xBD, 0x2C, 0xDB, 0x92, 0xC0, 0x94, + 0x12, 0x54, 0xD2, 0x20, 0x00, 0x01, 0xC5, 0x98, 0xD2, 0x69, 0x18, 0x9A, + 0x26, 0x5B, 0x94, 0x53, 0x8B, 0x45, 0x20, 0xCC, 0x72, 0x02, 0x08, 0xAC, + 0xB7, 0xD5, 0x32, 0xC9, 0x79, 0xD4, 0x97, 0xC1, 0xDF, 0xBD, 0xDD, 0xF4, + 0xA7, 0x29, 0xE7, 0x10, 0x02, 0x78, 0xE9, 0x4C, 0x5D, 0xA1, 0xAA, 0xE6, + 0x10, 0x12, 0xE3, 0xC0, 0x34, 0xBA, 0xB2, 0x10, 0x7D, 0x3F, 0x32, 0x46, + 0x40, 0x4C, 0xBB, 0xCD, 0xBA, 0xA8, 0x0A, 0x65, 0xA3, 0x33, 0xDE, 0x3B, + 0x13, 0x01, 0x8C, 0x09, 0x32, 0x8C, 0x32, 0xCE, 0xA4, 0x36, 0x09, 0xC2, + 0x87, 0xC7, 0xA7, 0x2C, 0x2B, 0xF2, 0x9C, 0x07, 0x1F, 0x04, 0xE7, 0x19, + 0x27, 0x85, 0x10, 0xEF, 0x1F, 0x5E, 0x8C, 0x35, 0x14, 0x13, 0x2E, 0x38, + 0xC2, 0x60, 0x9E, 0x15, 0xA5, 0x2C, 0xC6, 0xC8, 0x19, 0xFE, 0xE6, 0xDD, + 0x4D, 0x5B, 0x14, 0x3C, 0x2F, 0x28, 0x49, 0x14, 0x83, 0xBA, 0xCA, 0x52, + 0xCA, 0x4E, 0xA7, 0xA9, 0x2C, 0xD0, 0xB2, 0x38, 0xCE, 0x29, 0x04, 0x40, + 0x14, 0x74, 0x59, 0xBA, 0x4F, 0x9F, 0x4E, 0x8B, 0x8C, 0xED, 0xAA, 0xEC, + 0xC7, 0xC9, 0x1A, 0x6F, 0x9C, 0x9F, 0x95, 0xAE, 0xCA, 0x9A, 0x50, 0xEA, + 0x8C, 0x69, 0xEB, 0x55, 0xDB, 0x34, 0x6D, 0xC9, 0x31, 0x8E, 0x4C, 0xD0, + 0x22, 0xE3, 0x14, 0x01, 0xEB, 0xBC, 0xB3, 0x61, 0x99, 0x2E, 0xF3, 0x74, + 0x0E, 0x10, 0x62, 0xCC, 0x9A, 0xB2, 0x06, 0x18, 0xEA, 0x20, 0xBD, 0xC1, + 0x6A, 0xF6, 0x3E, 0x18, 0x51, 0xD0, 0xDD, 0xAE, 0x1A, 0x7B, 0xAD, 0xA4, + 0xDA, 0x6C, 0x1A, 0x4A, 0xF0, 0xF9, 0x32, 0x12, 0x42, 0x8A, 0x4C, 0xF8, + 0xC0, 0x23, 0x10, 0xE7, 0xCB, 0xA5, 0xBA, 0x7A, 0xF3, 0xF4, 0xF0, 0x11, + 0x98, 0x09, 0xC2, 0xF4, 0x74, 0x38, 0x24, 0xDA, 0x2D, 0x89, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0xD5, 0x6D, 0x5B, 0xB4, 0x57, 0x0F, + 0x1F, 0xFE, 0x76, 0x1E, 0xA6, 0xA2, 0xA8, 0xBE, 0xFE, 0xF5, 0x1F, 0x78, + 0x92, 0xFB, 0x75, 0xB9, 0xC0, 0x5D, 0x03, 0xCE, 0xD7, 0x9B, 0xEC, 0x78, + 0x99, 0xC6, 0x49, 0x95, 0x4D, 0xDD, 0x77, 0x87, 0x22, 0x2F, 0x10, 0x84, + 0xD6, 0x39, 0x42, 0x10, 0xC6, 0xA9, 0xAA, 0x2B, 0xEF, 0x1D, 0xC6, 0x38, + 0xC6, 0x64, 0x5D, 0xBC, 0xB9, 0x6E, 0x3F, 0x3D, 0x1F, 0x1F, 0x3E, 0x9F, + 0x21, 0x84, 0xCA, 0xBA, 0xE0, 0x2C, 0x46, 0x44, 0x99, 0xE0, 0x9C, 0x17, + 0x82, 0xC5, 0x18, 0xCA, 0x32, 0x8F, 0x21, 0x08, 0x41, 0x1F, 0x0F, 0xDD, + 0x22, 0xED, 0xFD, 0x5D, 0x7B, 0xEC, 0xC6, 0xDD, 0x66, 0xE5, 0x8C, 0x63, + 0x94, 0xAC, 0xDB, 0x22, 0xA6, 0x24, 0x38, 0x05, 0x20, 0x44, 0x17, 0x94, + 0x0D, 0xE7, 0x61, 0x5C, 0x94, 0x4D, 0x29, 0x61, 0x10, 0x53, 0x8C, 0x79, + 0x91, 0x5F, 0xEF, 0xAB, 0xB6, 0xCC, 0x86, 0xD9, 0xB6, 0xED, 0x55, 0x93, + 0xE7, 0xD3, 0x70, 0x71, 0xD1, 0x81, 0xC0, 0xBA, 0x7E, 0xEA, 0x47, 0x59, + 0x95, 0xB0, 0xCE, 0xB9, 0x4D, 0xD0, 0x78, 0xD0, 0x0D, 0x0A, 0x62, 0x54, + 0x66, 0x28, 0x98, 0x79, 0x91, 0x8E, 0x67, 0x1B, 0xE7, 0xE6, 0xAB, 0x2D, + 0xAD, 0xCB, 0xAD, 0x35, 0xE8, 0xE5, 0xF0, 0xD2, 0x8F, 0x23, 0x43, 0xD9, + 0xD5, 0x7E, 0xFF, 0xF9, 0xF9, 0x45, 0x5B, 0xEB, 0x5C, 0xA8, 0x8A, 0xE2, + 0xFE, 0x6A, 0x63, 0xAD, 0xCB, 0x8A, 0x4C, 0x2A, 0xDB, 0xAE, 0xEA, 0xA7, + 0xC3, 0xCB, 0x8F, 0x1F, 0x1E, 0x31, 0xC6, 0x08, 0xA1, 0xAB, 0x75, 0x5B, + 0x16, 0xB9, 0xF7, 0xBE, 0x28, 0x85, 0x73, 0x8E, 0x60, 0x4C, 0x18, 0xD1, + 0xDA, 0x30, 0xC6, 0x00, 0x48, 0x79, 0x2E, 0x04, 0x63, 0x18, 0x13, 0xA5, + 0x4D, 0xD7, 0x8F, 0xC1, 0x87, 0x04, 0x40, 0x51, 0xB2, 0xBF, 0xBF, 0x7F, + 0x7E, 0xF7, 0xE6, 0xFE, 0xF1, 0xA5, 0xF3, 0x09, 0x28, 0xA9, 0x08, 0x8C, + 0x5F, 0xBC, 0x6A, 0xB7, 0x8D, 0xF8, 0xE1, 0xE7, 0xE7, 0xD9, 0xF9, 0x10, + 0x5D, 0x91, 0x91, 0xBB, 0xFD, 0xFE, 0x2F, 0x3F, 0x3E, 0x42, 0x9C, 0xD7, + 0x05, 0xA5, 0x38, 0x6A, 0x8D, 0x8C, 0x67, 0x31, 0xE1, 0xBE, 0xBF, 0x00, + 0x90, 0xF6, 0xDB, 0xCD, 0xD3, 0xF3, 0xD3, 0xCD, 0x7E, 0xA3, 0xD4, 0xD2, + 0x4F, 0x8B, 0x52, 0xFA, 0x8B, 0xB7, 0x5F, 0x5D, 0xEF, 0xAE, 0x09, 0xB0, + 0x79, 0x4E, 0x43, 0x0C, 0xCF, 0xC7, 0xA9, 0xAC, 0x6A, 0x0C, 0x01, 0xA5, + 0x78, 0x56, 0x26, 0xA5, 0x88, 0x7F, 0xF5, 0xCD, 0x0D, 0x84, 0xE9, 0xF5, + 0xFD, 0x2E, 0x2F, 0x09, 0xC1, 0x50, 0x08, 0xBE, 0xDD, 0xAD, 0x8B, 0x8C, + 0x34, 0x55, 0x61, 0x55, 0x7C, 0xF7, 0xEA, 0xFA, 0xED, 0xED, 0xEE, 0x74, + 0x1C, 0xC7, 0xD9, 0x18, 0xE7, 0x0F, 0xE7, 0x33, 0x44, 0x68, 0xB3, 0xD9, + 0x5C, 0xFA, 0x4E, 0x29, 0x6D, 0x5C, 0x38, 0x9D, 0xFB, 0xD7, 0xAF, 0xEE, + 0x7C, 0x4C, 0xE3, 0x34, 0x23, 0x84, 0x66, 0x39, 0x9F, 0x2F, 0x03, 0x42, + 0x68, 0x5E, 0x96, 0x75, 0x5B, 0x72, 0xCE, 0xE7, 0x51, 0x2D, 0xF3, 0xC5, + 0x7B, 0x3B, 0xCC, 0x23, 0x25, 0xC4, 0xA7, 0x38, 0x2C, 0x53, 0xC6, 0xD9, + 0xFD, 0xED, 0x55, 0xC5, 0xE9, 0xD5, 0xAA, 0xE1, 0x8C, 0x73, 0x42, 0x6F, + 0xF6, 0x1B, 0x00, 0x60, 0x55, 0x88, 0xB6, 0x2A, 0xEF, 0xAE, 0x76, 0x77, + 0x37, 0xD7, 0x88, 0x8A, 0x9F, 0x1F, 0x4F, 0xE3, 0x22, 0xE7, 0x45, 0x0A, + 0x4E, 0xBC, 0xF7, 0x21, 0x81, 0xC7, 0xC3, 0x10, 0x22, 0xE4, 0x94, 0xDC, + 0x5C, 0x6F, 0x56, 0xDB, 0x86, 0x30, 0x02, 0x10, 0xD2, 0xCE, 0xCE, 0x4A, + 0x43, 0x42, 0x16, 0x63, 0x13, 0x06, 0x4C, 0x88, 0xE7, 0xE7, 0x23, 0xA1, + 0x54, 0xCA, 0x29, 0xCB, 0xAB, 0xE0, 0xBD, 0x35, 0x7A, 0x91, 0xCB, 0xE9, + 0x74, 0x81, 0x08, 0x10, 0x82, 0xA5, 0x92, 0x4A, 0xE9, 0x22, 0x23, 0xDA, + 0xBA, 0xBB, 0xEB, 0xD5, 0xF5, 0x76, 0xF5, 0xE1, 0xA5, 0x53, 0x3E, 0x66, + 0x82, 0xE5, 0x59, 0xAE, 0xB5, 0x5D, 0x16, 0xC5, 0x18, 0x8B, 0x29, 0x54, + 0x65, 0xEE, 0xB5, 0xC7, 0x30, 0xCD, 0x6A, 0xE9, 0xC7, 0xB1, 0xEF, 0x26, + 0x6B, 0x1C, 0x84, 0x40, 0x2E, 0x0A, 0x82, 0x84, 0x18, 0xBC, 0xBE, 0xD9, + 0x13, 0x04, 0x6F, 0xAF, 0x57, 0x5A, 0xEB, 0xA6, 0xCC, 0xBF, 0x7A, 0x75, + 0x9B, 0xF1, 0x1C, 0x20, 0x16, 0x02, 0x18, 0xA7, 0x65, 0x1C, 0x25, 0x48, + 0x29, 0x26, 0x68, 0xB4, 0x1F, 0x97, 0xF9, 0x70, 0xBE, 0x18, 0xE7, 0xA5, + 0x75, 0xA7, 0x61, 0xCA, 0x0A, 0x21, 0xF2, 0x0C, 0x00, 0xB0, 0x5A, 0x95, + 0x77, 0xD7, 0xF5, 0xBB, 0x2F, 0xF7, 0x84, 0x20, 0x82, 0x60, 0x5E, 0x65, + 0x65, 0x53, 0x54, 0x95, 0x90, 0x52, 0x07, 0xEF, 0x57, 0xFB, 0xFA, 0xF0, + 0x72, 0xD8, 0x6E, 0xCA, 0x22, 0xE3, 0x84, 0x10, 0x00, 0xE2, 0xB4, 0x18, + 0x1F, 0xED, 0xEB, 0xFB, 0x3A, 0x44, 0x78, 0x3C, 0xCC, 0x8B, 0x0A, 0x18, + 0xA3, 0x10, 0x02, 0x26, 0xD0, 0xBA, 0x18, 0x13, 0xA0, 0x14, 0x0A, 0x4E, + 0x18, 0x46, 0x2E, 0x00, 0x65, 0x42, 0x4A, 0x40, 0x64, 0xA4, 0x6D, 0x85, + 0x92, 0x56, 0x70, 0x92, 0x0B, 0xFA, 0xF1, 0xF1, 0x02, 0x12, 0x7A, 0x7E, + 0x39, 0x8A, 0x4C, 0x6C, 0x76, 0x2B, 0xC2, 0xA8, 0x31, 0x76, 0x1C, 0x17, + 0xEB, 0xFC, 0xE9, 0x72, 0xF9, 0xA5, 0x93, 0xD6, 0x39, 0xE7, 0x43, 0x70, + 0x3E, 0x28, 0x29, 0xA9, 0xE0, 0x97, 0x7E, 0xE4, 0x9C, 0xAD, 0xD7, 0xF5, + 0x76, 0x53, 0x12, 0x0A, 0x01, 0x84, 0x45, 0x91, 0x19, 0x6D, 0x41, 0x8A, + 0xEF, 0xEE, 0xAF, 0x1F, 0x5E, 0xFA, 0x71, 0x32, 0x46, 0x1B, 0x67, 0x2C, + 0x44, 0xFE, 0xE9, 0xF9, 0x72, 0xE9, 0xCE, 0xCE, 0xDA, 0x97, 0xE3, 0x80, + 0x11, 0x7A, 0x79, 0x79, 0x9E, 0xC6, 0xC1, 0x78, 0x33, 0x2E, 0xF2, 0x78, + 0x9E, 0xAC, 0x4F, 0x11, 0xA6, 0xE3, 0x65, 0xE2, 0x22, 0x23, 0x94, 0x0E, + 0xA3, 0xF2, 0x3E, 0xAD, 0xD6, 0x5B, 0xC2, 0x78, 0x3F, 0xAB, 0x9F, 0x3E, + 0x7C, 0x9E, 0xFE, 0x3F, 0x9A, 0xEE, 0x6B, 0x57, 0xB3, 0x23, 0x4D, 0x13, + 0x73, 0x78, 0xB3, 0xEC, 0xEF, 0xB7, 0xCB, 0x9D, 0x4C, 0xB2, 0x58, 0xC5, + 0x62, 0x57, 0x75, 0xCF, 0x4C, 0x0B, 0x1A, 0x08, 0x3A, 0xD2, 0xA9, 0xEE, + 0x5B, 0x3A, 0x19, 0xA0, 0x31, 0x18, 0xA8, 0xBB, 0x7A, 0xBA, 0x48, 0x26, + 0xD3, 0x6E, 0xF3, 0xBB, 0xE5, 0xC3, 0x1B, 0x1D, 0xA4, 0x74, 0x0F, 0x11, + 0x40, 0xBC, 0x9F, 0x79, 0x62, 0x99, 0x43, 0x0C, 0xA7, 0x4B, 0x77, 0xEA, + 0xE6, 0x4B, 0xBF, 0x08, 0x0A, 0xCB, 0x42, 0x60, 0x42, 0x8C, 0x37, 0x94, + 0xE3, 0xA6, 0x2E, 0xB4, 0x9B, 0x9F, 0x8F, 0xE7, 0xB6, 0xAA, 0xEF, 0xF7, + 0xBB, 0xED, 0xA6, 0x06, 0x10, 0xEB, 0x25, 0xC2, 0x0C, 0xAA, 0x4A, 0x32, + 0x4E, 0xAC, 0x32, 0x4A, 0xC5, 0xA2, 0x5C, 0x53, 0xCC, 0x11, 0x62, 0x93, + 0x0A, 0xD6, 0xAA, 0xFE, 0x7A, 0x92, 0xED, 0x7E, 0xB3, 0x3D, 0x4C, 0xC3, + 0x70, 0xB9, 0x5E, 0x76, 0xFB, 0xBD, 0x28, 0xEB, 0xEE, 0x72, 0x64, 0x94, + 0xD5, 0x75, 0x85, 0x11, 0x7D, 0x7B, 0xBB, 0x99, 0xA7, 0x65, 0xBD, 0xBB, + 0x3D, 0x3E, 0x7F, 0xFD, 0xF8, 0xE9, 0xCB, 0x38, 0xCF, 0x29, 0x87, 0x45, + 0x19, 0x6B, 0xCC, 0x38, 0x2D, 0x0F, 0x77, 0x7B, 0xE3, 0x96, 0xDD, 0xB6, + 0x2D, 0x04, 0x6F, 0x9B, 0x22, 0xE7, 0x94, 0x11, 0x48, 0x30, 0x1B, 0x6F, + 0x87, 0x49, 0x01, 0x00, 0xB7, 0x9B, 0xFA, 0xBB, 0xC7, 0xC3, 0x7E, 0x55, + 0x39, 0x63, 0x61, 0x02, 0xA5, 0x64, 0x4D, 0x5D, 0x6A, 0x63, 0x00, 0xCC, + 0xF3, 0x34, 0x97, 0x25, 0x87, 0x28, 0x0D, 0xB3, 0x82, 0x10, 0x15, 0x25, + 0xDE, 0x6C, 0x6A, 0xE7, 0xEC, 0x5F, 0x7F, 0x7A, 0xF8, 0x87, 0xEF, 0xEF, + 0x1F, 0x6F, 0xB6, 0x9B, 0x55, 0x5D, 0x57, 0x42, 0x10, 0xBE, 0xDB, 0xAC, + 0x9A, 0xB2, 0x6C, 0xAB, 0x4A, 0x72, 0xC6, 0x28, 0x32, 0xCA, 0xEC, 0x1B, + 0x49, 0x09, 0x64, 0x14, 0x63, 0x8C, 0x52, 0x46, 0xD7, 0x6B, 0xFF, 0xFE, + 0xF3, 0x07, 0x13, 0x80, 0x0F, 0x41, 0x5B, 0x7D, 0x3C, 0x8F, 0x28, 0x87, + 0x4D, 0x2B, 0x28, 0xE1, 0x97, 0x4E, 0x2D, 0xB3, 0xED, 0xBA, 0x41, 0xCD, + 0x0B, 0xA3, 0x99, 0x61, 0x9C, 0x73, 0x06, 0x6C, 0xE5, 0xCD, 0xB8, 0x2C, + 0x76, 0x59, 0xD2, 0x3C, 0x0E, 0xBF, 0x7D, 0x7C, 0x4A, 0x08, 0xBD, 0x7D, + 0x78, 0x93, 0x01, 0x52, 0x46, 0x21, 0x00, 0x00, 0x00, 0x9C, 0xF1, 0xC7, + 0xBB, 0x03, 0xC2, 0x30, 0xA4, 0xE8, 0x63, 0x10, 0x82, 0x5F, 0xFB, 0x81, + 0x51, 0x2E, 0x04, 0x3F, 0x1C, 0xD6, 0x30, 0x03, 0xE7, 0x7C, 0xCE, 0xB9, + 0x90, 0xCC, 0x5A, 0x6F, 0xAC, 0xFB, 0x56, 0x0D, 0x18, 0xA7, 0x39, 0x82, + 0x64, 0xB4, 0x53, 0xDA, 0x9D, 0x2F, 0x3D, 0xC2, 0x68, 0xB7, 0x59, 0x55, + 0x25, 0x07, 0xD9, 0x58, 0x3B, 0x41, 0x04, 0x6E, 0xB7, 0x4D, 0x3F, 0x4C, + 0xCE, 0xC7, 0xA9, 0x1F, 0xCA, 0xB2, 0xDA, 0xEF, 0x77, 0x1F, 0xBE, 0x7E, + 0xB0, 0x31, 0x6D, 0x57, 0x07, 0x82, 0x13, 0x48, 0x38, 0x03, 0x9A, 0x20, + 0x26, 0x84, 0x2A, 0x1D, 0xA7, 0x25, 0x6F, 0xD6, 0x5B, 0xE7, 0xD3, 0xA2, + 0x34, 0xC1, 0x64, 0xBD, 0xDE, 0x2C, 0x6A, 0xF1, 0xDE, 0x05, 0x1F, 0xEE, + 0x0F, 0xFB, 0xDD, 0xE6, 0xB0, 0xDE, 0xDC, 0x0A, 0x21, 0xE7, 0x69, 0x9C, + 0xE7, 0x79, 0x54, 0xEE, 0xE9, 0xD8, 0x2B, 0x6D, 0x16, 0x6D, 0xB4, 0xB5, + 0xD3, 0xBC, 0x28, 0xED, 0x42, 0x82, 0x44, 0x08, 0x56, 0xD5, 0xB2, 0x2C, + 0xEA, 0x79, 0x9E, 0xC6, 0xC5, 0x10, 0x2E, 0x62, 0xF0, 0xBB, 0x55, 0x43, + 0x09, 0x8B, 0x01, 0x5B, 0xE3, 0xFE, 0xE3, 0xEB, 0xF1, 0x7C, 0xEE, 0xEE, + 0xEE, 0xDF, 0xDA, 0x10, 0x10, 0x42, 0x37, 0xBB, 0x83, 0xF3, 0x3E, 0xA4, + 0xE4, 0xD4, 0x54, 0x57, 0xE5, 0xA2, 0xF4, 0xB5, 0x1F, 0xEE, 0xEE, 0x6E, + 0xBA, 0x61, 0xFC, 0xA6, 0x83, 0x37, 0x15, 0x87, 0xC9, 0xE5, 0xE8, 0x7E, + 0xF9, 0xF5, 0xC3, 0x7A, 0xBD, 0x12, 0x04, 0xE6, 0x8C, 0x5E, 0x8E, 0xD7, + 0xD5, 0xAA, 0x46, 0x38, 0x8C, 0xB3, 0xE2, 0x8C, 0xF9, 0xA0, 0x40, 0x20, + 0xDF, 0xDD, 0x6D, 0xB5, 0x8F, 0xCB, 0xEB, 0x78, 0x77, 0xD8, 0x08, 0xCE, + 0xE2, 0xF5, 0x7A, 0xD8, 0xB6, 0x20, 0x03, 0x6D, 0xC3, 0xCB, 0x79, 0x44, + 0x54, 0x9C, 0xCE, 0x2F, 0x29, 0xE5, 0x9C, 0x93, 0x35, 0x20, 0x84, 0xE0, + 0x43, 0x68, 0x9B, 0x6A, 0xBB, 0x6A, 0x6F, 0x76, 0x87, 0x45, 0xE3, 0x8A, + 0x50, 0x80, 0x7C, 0x37, 0x8C, 0xE3, 0xB4, 0x00, 0x98, 0x5D, 0x48, 0x19, + 0x00, 0x8C, 0xD0, 0xEB, 0xCB, 0x39, 0xA6, 0x94, 0x12, 0x34, 0xC6, 0x0E, + 0xFD, 0xA8, 0xF5, 0x64, 0xF4, 0x74, 0x38, 0xDC, 0xBF, 0xFB, 0xEE, 0x50, + 0x55, 0x45, 0xF0, 0xB6, 0x1F, 0x7A, 0x4A, 0x49, 0x4E, 0x71, 0xBD, 0x56, + 0xFF, 0xF8, 0xC7, 0xC7, 0xE7, 0xCB, 0xB0, 0xDE, 0x6D, 0x25, 0x23, 0x4D, + 0xC3, 0xAD, 0x0B, 0x00, 0x64, 0xCA, 0x68, 0x55, 0xF2, 0x61, 0x9C, 0x9C, + 0xAD, 0xEE, 0xEF, 0x6F, 0xBC, 0x31, 0x3E, 0x92, 0x00, 0xFC, 0xF1, 0xD4, + 0x17, 0x52, 0x14, 0x15, 0x9F, 0x86, 0x45, 0xCA, 0xC2, 0x38, 0x0D, 0x11, + 0x24, 0x18, 0xFF, 0xDB, 0x7F, 0x9C, 0x41, 0x84, 0x9C, 0xF2, 0xD7, 0xD3, + 0x20, 0xB8, 0xF4, 0x61, 0xF4, 0xC1, 0x77, 0xFD, 0xD0, 0x14, 0xF4, 0xC7, + 0x1F, 0x1E, 0x8E, 0xE7, 0xA3, 0xB1, 0x0E, 0x13, 0x18, 0x73, 0xB6, 0xC7, + 0x1E, 0x53, 0x02, 0x31, 0xB8, 0x76, 0x13, 0xA5, 0xE8, 0xE6, 0xCD, 0x0D, + 0x48, 0xA1, 0x59, 0x15, 0xB2, 0x94, 0x75, 0x55, 0xDE, 0xED, 0xDB, 0x94, + 0x61, 0xD9, 0xB4, 0xE3, 0x30, 0x34, 0x92, 0x03, 0x88, 0x42, 0xF4, 0x24, + 0xED, 0xC7, 0x51, 0xBF, 0x9E, 0x2F, 0x84, 0x51, 0xCA, 0x49, 0x51, 0x60, + 0xEC, 0x98, 0x32, 0xF9, 0xE5, 0x75, 0xB4, 0x2E, 0xAE, 0x56, 0xDC, 0x87, + 0x94, 0x73, 0x0E, 0x21, 0xC7, 0x10, 0xAB, 0xB6, 0xA8, 0x4B, 0x9A, 0x1C, + 0xA8, 0x2A, 0x36, 0x99, 0xA0, 0x8C, 0x86, 0x30, 0x8F, 0xC3, 0x52, 0x95, + 0x1C, 0x23, 0xC4, 0x28, 0x59, 0xB4, 0x29, 0x2A, 0xF1, 0xAD, 0xDA, 0x25, + 0x04, 0x31, 0xF3, 0x3C, 0xCF, 0x3A, 0x43, 0xA8, 0x8D, 0xCE, 0x19, 0x40, + 0x08, 0x31, 0xC6, 0x94, 0x12, 0xEF, 0x03, 0x21, 0xB8, 0x6E, 0x8A, 0xD3, + 0xEB, 0x69, 0x9E, 0x67, 0x4A, 0x10, 0x04, 0x49, 0x72, 0xD2, 0x94, 0x55, + 0xC9, 0xE8, 0xBA, 0x6A, 0xCA, 0x46, 0xFE, 0x06, 0x9C, 0x37, 0x11, 0xE6, + 0x38, 0xCE, 0x53, 0x55, 0x53, 0xDD, 0x79, 0x4E, 0xA2, 0x72, 0xA1, 0xBF, + 0x0C, 0x6D, 0xC3, 0xDE, 0x7F, 0xEC, 0x62, 0x42, 0xC6, 0xFA, 0xE8, 0x95, + 0x2C, 0x88, 0xB9, 0xC4, 0x94, 0x73, 0xCA, 0x79, 0x51, 0x76, 0xB5, 0x2E, + 0xB5, 0xB1, 0x31, 0x81, 0x52, 0x8A, 0x87, 0xBB, 0xDB, 0x0C, 0xC8, 0x38, + 0x2F, 0xC3, 0xF0, 0xDC, 0x36, 0xF5, 0x9B, 0xBB, 0x1B, 0xEB, 0x96, 0x69, + 0x36, 0xDE, 0xFB, 0x7E, 0x54, 0x84, 0x30, 0xEF, 0x13, 0xA7, 0x68, 0x55, + 0x17, 0x2E, 0x92, 0xA7, 0xAF, 0xE7, 0xF3, 0x75, 0xB8, 0x76, 0xDD, 0xB6, + 0x6D, 0x9D, 0xB5, 0xB9, 0x4E, 0xE3, 0x14, 0xAE, 0x57, 0x1B, 0x93, 0xB7, + 0xD6, 0x72, 0x86, 0x71, 0xB2, 0x75, 0x53, 0x97, 0x75, 0x63, 0x5D, 0x2A, + 0x65, 0x31, 0x0C, 0x03, 0x84, 0xB0, 0xDD, 0x94, 0x54, 0x4D, 0x28, 0xF7, + 0x11, 0x3E, 0x12, 0x26, 0x0A, 0x81, 0xC7, 0xA1, 0x47, 0xBC, 0x99, 0x17, + 0xFD, 0xD7, 0x9F, 0xDE, 0xFC, 0xE5, 0xA7, 0x1F, 0xFE, 0xFB, 0x2F, 0xFD, + 0xA7, 0xE7, 0xAE, 0x24, 0x29, 0x65, 0xD8, 0x0D, 0x33, 0x4A, 0xC1, 0x38, + 0x9B, 0x52, 0xDA, 0x6F, 0xAA, 0xC7, 0xFB, 0x4D, 0xD3, 0x36, 0x10, 0x00, + 0xC2, 0xD8, 0xC7, 0xA7, 0x17, 0x4E, 0x49, 0x7A, 0x89, 0x52, 0x16, 0xDA, + 0x46, 0xCA, 0xA9, 0x94, 0x4C, 0x70, 0x9A, 0x52, 0x22, 0x08, 0x06, 0xE3, + 0x1B, 0x29, 0xFE, 0xE1, 0xCF, 0x8F, 0x6A, 0x89, 0x18, 0xE0, 0x98, 0x93, + 0x52, 0xAB, 0x04, 0x23, 0x44, 0x68, 0x55, 0x17, 0x94, 0xC2, 0x87, 0xC3, + 0xF4, 0xFE, 0xF3, 0x71, 0xB7, 0x2A, 0xEE, 0xF6, 0x5B, 0x8C, 0x48, 0x5B, + 0xC9, 0x18, 0x92, 0xC9, 0x11, 0x51, 0x4C, 0x30, 0x64, 0x09, 0xA6, 0x04, + 0x08, 0x26, 0x6D, 0x55, 0x57, 0x65, 0x81, 0x40, 0x96, 0x3F, 0x93, 0xF3, + 0xCB, 0xEB, 0xF1, 0x7A, 0x79, 0x79, 0xED, 0x5C, 0x08, 0xBB, 0xDD, 0xFA, + 0x7C, 0xBE, 0x6E, 0xF7, 0x87, 0xBA, 0x2C, 0x00, 0x08, 0x31, 0x65, 0x8C, + 0x13, 0x82, 0xF9, 0xD2, 0x69, 0x4C, 0x53, 0x4A, 0x28, 0xB8, 0xE5, 0x61, + 0x5F, 0x95, 0x6D, 0xA5, 0x96, 0x05, 0x44, 0x88, 0x11, 0x6C, 0xAB, 0x18, + 0x69, 0xBD, 0x2C, 0xF6, 0x66, 0xDF, 0xCC, 0xCB, 0xFC, 0xFD, 0x0F, 0xF7, + 0xEB, 0xA6, 0xC1, 0x10, 0x65, 0x04, 0xDF, 0x7D, 0x77, 0x4B, 0x10, 0xD0, + 0x4A, 0x95, 0x45, 0xDD, 0x0F, 0x43, 0x37, 0xCC, 0x98, 0x20, 0x65, 0xF5, + 0xB9, 0x9F, 0xA4, 0x94, 0xCB, 0xB2, 0x2C, 0xC6, 0x9D, 0x2E, 0x53, 0x5B, + 0xF2, 0xFD, 0xBA, 0xC9, 0x00, 0x3C, 0xBF, 0x5E, 0x33, 0x80, 0x04, 0xC3, + 0xD3, 0xB9, 0x67, 0x9C, 0x62, 0x82, 0xF3, 0x62, 0xCA, 0x42, 0x30, 0x8E, + 0x00, 0x42, 0xFD, 0x30, 0x1B, 0xE3, 0xB8, 0xE4, 0x84, 0xF2, 0xA9, 0xBB, + 0x4E, 0x8B, 0xED, 0xE7, 0xCB, 0xBA, 0x81, 0xFE, 0x1A, 0xB6, 0xFB, 0xFD, + 0x61, 0x7F, 0xFF, 0xEB, 0x87, 0x57, 0x02, 0xC9, 0xC3, 0xED, 0x83, 0x60, + 0xD5, 0x94, 0x74, 0xBB, 0xDD, 0xFC, 0xFA, 0xF1, 0xB4, 0xDB, 0x57, 0xC7, + 0xCB, 0x25, 0x45, 0x2F, 0xE5, 0x66, 0x19, 0xA7, 0xBE, 0x1B, 0x04, 0x27, + 0x65, 0xD5, 0xFE, 0xFD, 0xF7, 0xDF, 0x36, 0x6D, 0xF5, 0xF6, 0xFE, 0x56, + 0x6B, 0x27, 0x8A, 0xE2, 0xF5, 0xD8, 0xE7, 0x0C, 0x63, 0x06, 0xD1, 0xAB, + 0x75, 0x53, 0x20, 0x18, 0xD7, 0xAD, 0xB8, 0xDD, 0x55, 0x98, 0xE1, 0xF3, + 0x79, 0x79, 0x38, 0x6C, 0xAD, 0x0B, 0x75, 0xDD, 0xE2, 0x77, 0xDF, 0x1D, + 0xAE, 0xDD, 0x04, 0x20, 0x1A, 0xA6, 0xD1, 0x87, 0x94, 0x32, 0x28, 0x28, + 0x5D, 0xD7, 0xED, 0xA2, 0x5C, 0x3F, 0xCE, 0xC7, 0xD3, 0x88, 0x10, 0x5D, + 0x94, 0x6A, 0xDA, 0x95, 0xB1, 0x1E, 0x13, 0xE6, 0x83, 0xEF, 0xFA, 0xAB, + 0xD1, 0x06, 0x62, 0x72, 0xB3, 0xDB, 0x55, 0x65, 0x29, 0x05, 0x2B, 0x0B, + 0xD1, 0x0F, 0xBD, 0xB3, 0xFE, 0xCF, 0x7F, 0xFE, 0x73, 0x53, 0x17, 0xE7, + 0xF3, 0xC5, 0xDA, 0x40, 0x18, 0xBB, 0x5E, 0xAF, 0xEB, 0xB6, 0x41, 0x84, + 0x21, 0x08, 0x62, 0xF4, 0x31, 0x46, 0x08, 0xE1, 0xDB, 0x87, 0xFB, 0x71, + 0x52, 0x20, 0x02, 0x0C, 0xE9, 0x75, 0x54, 0xEB, 0xBA, 0xFC, 0xE1, 0xF1, + 0x16, 0x13, 0xF8, 0xF6, 0xE1, 0x66, 0x9E, 0x17, 0x08, 0x93, 0x75, 0x69, + 0x52, 0xFE, 0xF7, 0xDF, 0xDF, 0x2B, 0xB3, 0xCC, 0xCB, 0x64, 0xAC, 0xB6, + 0xCE, 0xFB, 0x10, 0x19, 0x21, 0xDF, 0xDF, 0xED, 0x10, 0xC4, 0xEB, 0xF5, + 0x96, 0xF2, 0x42, 0xEB, 0xF8, 0xE9, 0xD3, 0x57, 0x6B, 0x5D, 0x02, 0x40, + 0x6B, 0x37, 0x8E, 0x4B, 0x8C, 0x71, 0x1C, 0x97, 0x79, 0x56, 0x39, 0xE7, + 0x10, 0xA3, 0x73, 0x0E, 0x41, 0x3C, 0xF4, 0x17, 0x00, 0xD0, 0xCD, 0xCD, + 0x63, 0x8C, 0xB9, 0x28, 0x56, 0xF7, 0xF7, 0xEF, 0x76, 0xBB, 0xDB, 0x94, + 0x41, 0xDB, 0x6C, 0xEF, 0x76, 0x6B, 0x90, 0xB2, 0xCE, 0xB4, 0xEB, 0x2F, + 0x88, 0x60, 0xEB, 0x02, 0x42, 0x44, 0x6B, 0xBD, 0x6E, 0xC4, 0x7F, 0xFD, + 0xCF, 0x3F, 0xDC, 0xDF, 0xAC, 0xD6, 0xAB, 0xC2, 0xAA, 0xE5, 0x7C, 0xE9, + 0x8D, 0xF3, 0x5C, 0x30, 0x4C, 0x18, 0x46, 0x28, 0x81, 0x08, 0xA9, 0xF0, + 0x09, 0x58, 0xE3, 0xA6, 0xD9, 0x5A, 0x17, 0x62, 0x02, 0xCF, 0xC7, 0xEE, + 0xEB, 0xEB, 0x25, 0x03, 0x28, 0x18, 0x3B, 0x77, 0x7D, 0x08, 0x51, 0x08, + 0x72, 0xD8, 0xB7, 0x4F, 0xAF, 0xD7, 0xFF, 0xF9, 0xFE, 0x6B, 0xCA, 0xB1, + 0x6D, 0x4B, 0xE7, 0xC3, 0xA2, 0xCC, 0xF9, 0xD4, 0xCB, 0x52, 0xCC, 0xCB, + 0x32, 0x4D, 0xB3, 0x51, 0x3A, 0xA7, 0x94, 0x73, 0x5E, 0x66, 0x65, 0x4C, + 0xC8, 0x08, 0xA5, 0x98, 0x42, 0x48, 0x4A, 0xBB, 0x1C, 0x43, 0x74, 0x0E, + 0x82, 0x2C, 0x04, 0xDB, 0x6E, 0xB7, 0x82, 0x53, 0xC6, 0xF0, 0xD0, 0x0F, + 0x6A, 0x31, 0x08, 0x02, 0x8C, 0x70, 0xCA, 0x30, 0xC6, 0xB4, 0x2C, 0x3E, + 0xA5, 0x5C, 0x57, 0xF4, 0x7A, 0x31, 0x87, 0x5D, 0x9D, 0x33, 0x1C, 0x07, + 0x55, 0x15, 0x6C, 0xBB, 0xDF, 0x9F, 0x2F, 0x93, 0xD2, 0x3E, 0x67, 0x60, + 0xB4, 0x33, 0xC6, 0x53, 0x42, 0x18, 0xE5, 0xC6, 0x45, 0x2E, 0xE9, 0xBC, + 0x68, 0xAD, 0x94, 0x10, 0x08, 0x42, 0x30, 0x5C, 0xE7, 0xAA, 0x12, 0xDE, + 0x07, 0x26, 0x48, 0x08, 0x31, 0xA7, 0xBC, 0x5A, 0x37, 0x10, 0xC1, 0x1C, + 0xB2, 0x73, 0x9E, 0x53, 0x54, 0x4B, 0x96, 0x20, 0x68, 0x9A, 0x2D, 0xC1, + 0x48, 0x30, 0xEE, 0x4C, 0xF0, 0x21, 0x5D, 0xAF, 0x7D, 0x0C, 0xFE, 0x9F, + 0xFE, 0xF4, 0xC3, 0x7F, 0xFC, 0xF6, 0x55, 0x48, 0x51, 0xCA, 0x02, 0x62, + 0xEA, 0x7C, 0x4C, 0x89, 0xCC, 0xCB, 0x7C, 0xED, 0xA6, 0x63, 0x37, 0xB9, + 0x10, 0xA5, 0x20, 0xDE, 0xC7, 0x10, 0xF3, 0xF1, 0x32, 0x42, 0x08, 0x76, + 0x9B, 0x75, 0xCE, 0x59, 0x19, 0x83, 0xF1, 0x37, 0xDE, 0xBA, 0x8B, 0x09, + 0x1A, 0x67, 0xFB, 0xBE, 0xD3, 0x7A, 0x06, 0x39, 0x73, 0xCE, 0xE6, 0xC5, + 0xFC, 0xF2, 0xFB, 0xA7, 0x45, 0xBB, 0x45, 0x29, 0x84, 0x21, 0xA7, 0x0C, + 0x61, 0xA8, 0xB4, 0x45, 0x88, 0xC0, 0x0C, 0x82, 0x0F, 0x87, 0xCD, 0xEE, + 0x66, 0xB7, 0xDB, 0xAC, 0xF7, 0x18, 0xD2, 0x79, 0xB1, 0x19, 0xA4, 0xE0, + 0x0D, 0xA3, 0x70, 0xDD, 0xC8, 0x4D, 0xC3, 0x01, 0x84, 0x9C, 0x33, 0xAB, + 0x17, 0x42, 0x32, 0x15, 0x10, 0xA0, 0x44, 0x08, 0x91, 0x82, 0x97, 0xD5, + 0xC6, 0x5B, 0x15, 0x32, 0xAE, 0x9B, 0x4D, 0x48, 0x64, 0xB5, 0x3D, 0x04, + 0xDB, 0x3F, 0x1C, 0xDA, 0x62, 0xFD, 0xE6, 0xE9, 0xB5, 0x5F, 0x15, 0x14, + 0x82, 0x84, 0x8A, 0x75, 0x77, 0x7A, 0x82, 0x20, 0xF7, 0xE3, 0x72, 0xBB, + 0x5B, 0xFD, 0xF1, 0xED, 0x9E, 0x31, 0xFC, 0xF4, 0x72, 0xFE, 0xFB, 0xC7, + 0xD7, 0x59, 0x5B, 0x63, 0x9C, 0xF5, 0xD1, 0xFA, 0x34, 0x2E, 0xFE, 0x78, + 0xEA, 0xAD, 0x0F, 0xFD, 0xA8, 0x27, 0x65, 0x16, 0x63, 0x87, 0x7E, 0xCC, + 0x40, 0x0F, 0xCB, 0xF4, 0xEB, 0x2F, 0xC7, 0x61, 0x34, 0xCF, 0xA7, 0xFE, + 0xF9, 0xD4, 0xBD, 0x9E, 0x87, 0xAF, 0x2F, 0xD7, 0x97, 0x53, 0xD7, 0xF5, + 0x4B, 0xF0, 0x49, 0x32, 0x7E, 0xB3, 0x5D, 0x1D, 0xD6, 0x1B, 0x82, 0x28, + 0x41, 0x44, 0x2F, 0xFE, 0xDA, 0x2B, 0xE7, 0xD3, 0xF1, 0x38, 0x1E, 0x4F, + 0xF3, 0xEB, 0xEB, 0xEC, 0x42, 0x9E, 0x17, 0xE7, 0x5D, 0x84, 0x08, 0x35, + 0x95, 0x54, 0x46, 0x8D, 0xCA, 0xDC, 0xDF, 0xDF, 0x4A, 0xCA, 0xDB, 0xBA, + 0x52, 0xD6, 0x50, 0xCE, 0xF6, 0x9B, 0xED, 0x66, 0xDD, 0x4E, 0xD3, 0x04, + 0x12, 0xF8, 0xEE, 0xF1, 0x6E, 0xB3, 0x5D, 0xE5, 0x04, 0xB9, 0xC4, 0xB2, + 0xE4, 0xAB, 0xF5, 0xCE, 0x85, 0x9C, 0x12, 0x48, 0x99, 0x00, 0x00, 0xBE, + 0x7B, 0x7B, 0x0F, 0x61, 0x6C, 0xEB, 0xAA, 0x6D, 0x6A, 0xC6, 0xA8, 0xAC, + 0x8A, 0xEF, 0xBF, 0xBB, 0xC9, 0x20, 0x51, 0x4A, 0x00, 0x88, 0x39, 0xFB, + 0x97, 0xF3, 0xEB, 0xAC, 0xBA, 0x4B, 0x3F, 0x3F, 0x1D, 0x7B, 0xE3, 0xE3, + 0xF3, 0xF9, 0x7A, 0xED, 0x17, 0x6D, 0x22, 0x21, 0x6C, 0x59, 0xA6, 0xAA, + 0x60, 0xB7, 0x7B, 0xB6, 0x5D, 0xA3, 0xAE, 0xD7, 0xB3, 0xF2, 0xE7, 0x6E, + 0x99, 0x95, 0xE6, 0x9C, 0xC9, 0x42, 0x5A, 0xE7, 0xAD, 0x71, 0x98, 0x51, + 0x63, 0xAC, 0xD6, 0x0E, 0x42, 0x38, 0xCD, 0x6A, 0x9C, 0x96, 0x04, 0x40, + 0x0C, 0x40, 0xF2, 0x8A, 0x20, 0x74, 0xEE, 0xA6, 0x9C, 0x20, 0x2D, 0xB6, + 0x55, 0xB5, 0x01, 0x61, 0xD9, 0xB6, 0xF2, 0xB0, 0xDE, 0x5B, 0x97, 0xE6, + 0x79, 0x6A, 0xAA, 0x86, 0x52, 0x1E, 0x33, 0x92, 0x42, 0xBC, 0xBE, 0x76, + 0x77, 0x2B, 0xF6, 0xE5, 0xF9, 0x7A, 0x58, 0x37, 0xD3, 0xB2, 0x3C, 0x1E, + 0x76, 0xC6, 0x85, 0x73, 0x77, 0x7D, 0xF7, 0x70, 0x2B, 0xB8, 0xB0, 0x3E, + 0x11, 0xCC, 0xBB, 0x7E, 0x28, 0x8B, 0xB2, 0x94, 0xFC, 0x61, 0x5B, 0x7E, + 0xFF, 0xB8, 0xBD, 0xBF, 0x6D, 0x82, 0xF7, 0x6A, 0x59, 0x30, 0x04, 0x9B, + 0xBA, 0x44, 0x30, 0x11, 0x06, 0xA2, 0xD7, 0xF8, 0x70, 0xA8, 0x01, 0x00, + 0xD6, 0x98, 0x79, 0x56, 0x6D, 0xDB, 0x6C, 0x57, 0xAB, 0x75, 0x59, 0x7F, + 0xF9, 0x7A, 0xFE, 0xFD, 0xD3, 0xE9, 0xC3, 0xA7, 0x67, 0x08, 0x11, 0xC8, + 0xB0, 0x90, 0x05, 0x2B, 0x37, 0x65, 0xDD, 0xCC, 0x8B, 0xD2, 0xC6, 0xF4, + 0x43, 0x37, 0x4D, 0xE3, 0xBB, 0x77, 0xDF, 0x33, 0xC6, 0x16, 0xB5, 0x18, + 0x63, 0x42, 0xF4, 0x7F, 0x7F, 0xFF, 0x7B, 0x37, 0xCD, 0x00, 0x30, 0xA3, + 0xB5, 0xB1, 0xDA, 0x18, 0x5B, 0x55, 0x92, 0x31, 0x62, 0xAD, 0x2B, 0x0B, + 0xE9, 0x9D, 0x0D, 0xCE, 0x49, 0x5E, 0x50, 0x4C, 0xAE, 0x7D, 0xD7, 0x56, + 0xC5, 0xB6, 0x5E, 0x2F, 0x8B, 0x29, 0x84, 0xBC, 0xDD, 0xB5, 0xD6, 0x6B, + 0x46, 0x71, 0xDF, 0x8D, 0x3E, 0x47, 0x4C, 0x91, 0xF6, 0xE1, 0x74, 0x3E, + 0x83, 0xEC, 0x72, 0xCE, 0x5C, 0xCA, 0xB6, 0xAD, 0xAA, 0x82, 0xDE, 0xDF, + 0xEE, 0x7F, 0x78, 0xFB, 0x6E, 0xBF, 0xBB, 0x79, 0x73, 0xFF, 0xD0, 0xD4, + 0x72, 0xB5, 0xC1, 0x75, 0x4D, 0xEE, 0x6F, 0x37, 0x10, 0x61, 0xAD, 0xDD, + 0xF1, 0xD4, 0x89, 0x42, 0xE4, 0x9C, 0xAE, 0x97, 0x2E, 0x23, 0x4C, 0x09, + 0x4B, 0x29, 0x7C, 0x7B, 0x02, 0x04, 0x67, 0x09, 0xA1, 0x39, 0x27, 0xAD, + 0x97, 0xF5, 0x6A, 0x9B, 0x52, 0xFC, 0xF5, 0xD7, 0xBF, 0x3F, 0x3D, 0x3F, + 0xF5, 0x7D, 0x3F, 0x4D, 0xC3, 0xC7, 0xAF, 0x5F, 0x12, 0x70, 0x36, 0x04, + 0x1F, 0x40, 0x0A, 0x11, 0x23, 0xFA, 0xF6, 0x7E, 0xFD, 0x5F, 0xFE, 0xE1, + 0x91, 0x52, 0xE2, 0x42, 0xD6, 0xDA, 0xF5, 0xDD, 0x80, 0x29, 0xB2, 0x31, + 0x69, 0xED, 0x60, 0xCE, 0xA7, 0x6B, 0x6F, 0x7D, 0x9C, 0x16, 0xDD, 0x0D, + 0xE3, 0xF9, 0x3A, 0x40, 0xCC, 0xB4, 0x35, 0xD6, 0x79, 0x4E, 0xF1, 0xBA, + 0x91, 0x29, 0x43, 0x1F, 0x61, 0x0C, 0xF6, 0xCD, 0xDD, 0x9E, 0x60, 0x94, + 0x40, 0x72, 0x3E, 0x18, 0x6B, 0x1F, 0x1E, 0xF6, 0xD6, 0x04, 0xEF, 0xA3, + 0xF3, 0xB1, 0x5D, 0xD7, 0x29, 0x06, 0xEB, 0xDC, 0xA2, 0x3C, 0xA5, 0x94, + 0x31, 0xD6, 0x75, 0x63, 0x4A, 0xF9, 0x74, 0x1A, 0xAF, 0xA3, 0x1E, 0xC6, + 0xE5, 0xF8, 0x7A, 0x5D, 0xB4, 0xE5, 0x42, 0x6A, 0x1B, 0x8C, 0x09, 0x00, + 0x82, 0xEB, 0xE9, 0xCA, 0x05, 0x5F, 0xAD, 0x2A, 0x42, 0xA9, 0x36, 0x41, + 0x1B, 0x7F, 0xED, 0x66, 0x88, 0x30, 0x17, 0x88, 0x12, 0xE8, 0x5C, 0xD2, + 0x3A, 0x00, 0x00, 0x8B, 0x82, 0x5A, 0x6B, 0x43, 0x48, 0x75, 0x53, 0x2C, + 0x8B, 0x3A, 0x5F, 0x67, 0x4C, 0x48, 0x5D, 0xD7, 0xC6, 0x38, 0x08, 0xF2, + 0x7A, 0xDD, 0x30, 0x4E, 0x00, 0x84, 0x10, 0xC2, 0xB2, 0x14, 0x6D, 0x5D, + 0x94, 0x95, 0x64, 0x04, 0x57, 0x85, 0x68, 0x9A, 0x82, 0x09, 0xCC, 0x18, + 0xE9, 0x7B, 0xC5, 0x25, 0x33, 0xCA, 0x70, 0x4E, 0xBF, 0x11, 0x09, 0xC1, + 0xC7, 0xAA, 0x10, 0xEB, 0xF5, 0x7A, 0x9A, 0x4D, 0x21, 0x8B, 0x45, 0x29, + 0xAD, 0xAD, 0x0B, 0xC1, 0xB9, 0x30, 0x4D, 0xBE, 0x94, 0xFC, 0xDF, 0xDF, + 0x7F, 0xA2, 0x84, 0x5A, 0xA3, 0x97, 0x65, 0x56, 0x5A, 0x1D, 0xCF, 0x27, + 0x29, 0x4B, 0x00, 0x90, 0x2C, 0x2A, 0x84, 0xD0, 0x7E, 0xD3, 0x68, 0x63, + 0xAC, 0x0F, 0x19, 0xE4, 0x6F, 0x9F, 0xB0, 0xCD, 0x8B, 0xFA, 0xE6, 0x53, + 0x60, 0x8C, 0x94, 0x31, 0xCE, 0x39, 0x00, 0x00, 0x84, 0x08, 0x22, 0xB4, + 0x59, 0xAF, 0x87, 0x69, 0xB2, 0x3E, 0x42, 0x84, 0x18, 0x63, 0x3E, 0x84, + 0xC3, 0xA6, 0xF9, 0xE7, 0xBF, 0xFC, 0x50, 0x49, 0xBE, 0xAA, 0x9B, 0xBB, + 0xFD, 0x5E, 0xB0, 0xF2, 0xF1, 0xEE, 0xF1, 0xCD, 0xED, 0x5D, 0x5D, 0xB5, + 0x85, 0x28, 0x05, 0x25, 0x87, 0x4D, 0xF5, 0xF6, 0x6E, 0xC5, 0x71, 0xBE, + 0xBD, 0x69, 0x21, 0x41, 0xCB, 0x32, 0x63, 0xC6, 0x09, 0x25, 0xEB, 0x9D, + 0xA4, 0x9C, 0xAC, 0x77, 0xAD, 0x2C, 0x59, 0x8E, 0xA1, 0x2C, 0x28, 0x24, + 0x25, 0x65, 0x70, 0x53, 0xE9, 0xD5, 0x5A, 0x12, 0x2A, 0x2F, 0xBD, 0xF9, + 0xFE, 0x96, 0x6F, 0xB7, 0x37, 0x1A, 0xDF, 0x74, 0xA7, 0xE7, 0xE3, 0xD7, + 0xDF, 0x23, 0x29, 0x5C, 0xC8, 0xBF, 0xFE, 0xFD, 0x5F, 0xAB, 0x32, 0xF6, + 0xE3, 0xB4, 0x6A, 0x9A, 0xB6, 0x6E, 0x3F, 0x3C, 0x1D, 0x33, 0x4E, 0xDD, + 0x55, 0x4D, 0x8B, 0xB6, 0x36, 0x5A, 0x9B, 0x87, 0x51, 0xA7, 0x9C, 0x43, + 0xCC, 0xB3, 0x32, 0x8B, 0xD6, 0xE3, 0x38, 0xE7, 0x1C, 0x09, 0x05, 0xFB, + 0x3D, 0x57, 0x66, 0xB1, 0x0E, 0x68, 0xED, 0x63, 0x8C, 0x8C, 0x92, 0x98, + 0x13, 0x22, 0xE4, 0xDA, 0x4D, 0xA5, 0x28, 0xBE, 0xFF, 0xEE, 0xCD, 0xC7, + 0x2F, 0xAF, 0x31, 0xA2, 0x7E, 0x74, 0xC6, 0xA7, 0x8C, 0xE0, 0xA4, 0x6C, + 0x37, 0xAA, 0xE3, 0x65, 0x5C, 0x66, 0x45, 0x19, 0x19, 0x16, 0xFD, 0x7C, + 0xBC, 0x4E, 0xCB, 0xAC, 0xBD, 0x87, 0xD1, 0x76, 0xC3, 0xF4, 0xF7, 0x0F, + 0x5F, 0x5E, 0xCF, 0xD7, 0x94, 0x48, 0x21, 0xCB, 0xC3, 0x7E, 0x4B, 0x08, + 0x46, 0x84, 0x40, 0x88, 0x7D, 0x08, 0xC6, 0x98, 0x55, 0xDB, 0x70, 0x4E, + 0xAD, 0x71, 0x20, 0x41, 0x00, 0xE0, 0xF3, 0xCB, 0xF5, 0xEB, 0x4B, 0xFF, + 0x7A, 0xBA, 0x52, 0x4A, 0x2B, 0x29, 0xD7, 0xAB, 0xCA, 0x1A, 0x35, 0x4F, + 0xEA, 0x78, 0x1C, 0xBE, 0xC5, 0x14, 0x90, 0xC1, 0xD8, 0x2F, 0xC3, 0xB0, + 0x9C, 0xCF, 0xC3, 0xE5, 0xDC, 0x7D, 0xF8, 0xFA, 0x12, 0x21, 0xF1, 0x1E, + 0x0C, 0x83, 0xE1, 0x52, 0x40, 0x84, 0x42, 0xCC, 0x42, 0x8A, 0xB6, 0xE1, + 0x82, 0xB8, 0xA6, 0xA4, 0xB3, 0xD6, 0x85, 0x08, 0xD6, 0xD9, 0x0F, 0x4F, + 0x33, 0xC2, 0x94, 0x30, 0xF1, 0x72, 0x3A, 0x52, 0x4C, 0x05, 0x67, 0x19, + 0xA1, 0x45, 0x99, 0x6F, 0x19, 0x13, 0x00, 0x88, 0x31, 0x86, 0x18, 0x66, + 0x00, 0x63, 0x4C, 0x3E, 0x04, 0x90, 0x61, 0x55, 0x14, 0x18, 0x4B, 0xE5, + 0x0B, 0x8E, 0x81, 0x60, 0x71, 0xDD, 0x56, 0x9C, 0x42, 0xE7, 0x35, 0x02, + 0x46, 0x72, 0xD8, 0x36, 0x35, 0x24, 0xF4, 0xF1, 0xE1, 0xE0, 0xED, 0xB2, + 0x6E, 0x85, 0x10, 0xAD, 0x10, 0x4D, 0x59, 0x8A, 0x7D, 0x5B, 0x65, 0x00, + 0x37, 0xEB, 0x46, 0x1B, 0xB7, 0x6E, 0x1A, 0xE3, 0xD2, 0xBA, 0x2E, 0x2E, + 0x5D, 0xBF, 0x68, 0xBD, 0xAA, 0x9B, 0xF5, 0xAA, 0x39, 0xAC, 0xA5, 0xD1, + 0xF3, 0x6F, 0x9F, 0x8E, 0xC3, 0x38, 0xBF, 0x7B, 0xB8, 0xF3, 0x1E, 0x58, + 0x17, 0xCE, 0xD7, 0x7E, 0x98, 0xD4, 0x38, 0xCE, 0xC4, 0x58, 0x07, 0x21, + 0x3A, 0x9F, 0x3A, 0x98, 0xD0, 0x5F, 0x7E, 0xFC, 0x99, 0x22, 0xA2, 0x6D, + 0x84, 0x88, 0x16, 0x85, 0x30, 0xDE, 0x60, 0x02, 0x9B, 0x5A, 0x0A, 0xD9, + 0xDC, 0xDE, 0xEF, 0x9C, 0x73, 0xD3, 0xC4, 0x52, 0x4E, 0x45, 0x51, 0x2B, + 0x6D, 0xB2, 0x9F, 0x75, 0x80, 0x19, 0x78, 0xE3, 0xCD, 0xB9, 0xBB, 0x18, + 0xEB, 0x24, 0x17, 0xC7, 0xD3, 0x13, 0x02, 0xB9, 0x6D, 0xEA, 0x75, 0x5B, + 0x2F, 0x6A, 0xC1, 0x98, 0x50, 0xCA, 0xBC, 0xB7, 0x21, 0x04, 0x8C, 0x68, + 0x0C, 0xA1, 0x2A, 0x85, 0x36, 0x66, 0x5D, 0x71, 0x4A, 0xB0, 0x04, 0x4D, + 0x21, 0x48, 0x48, 0xEE, 0xDA, 0xF5, 0xE3, 0xA4, 0x43, 0x08, 0x4C, 0xF2, + 0xD9, 0xFA, 0x18, 0x52, 0xDB, 0x14, 0xEB, 0xB6, 0x26, 0xB4, 0x90, 0x55, + 0xED, 0xED, 0xFC, 0xE6, 0x6E, 0xAF, 0x6D, 0x7C, 0x7E, 0xE9, 0x08, 0x21, + 0x1F, 0x3F, 0x7F, 0x5A, 0xB4, 0x82, 0x38, 0x6E, 0x37, 0x35, 0x22, 0x28, + 0x46, 0x70, 0xFF, 0xD0, 0x82, 0x1C, 0xC7, 0x49, 0x7F, 0x3C, 0x5E, 0x32, + 0x84, 0x20, 0x85, 0x45, 0x2F, 0x8C, 0x4B, 0x90, 0x13, 0x48, 0x2E, 0x83, + 0x0C, 0x00, 0x30, 0xC6, 0xFC, 0xF9, 0xA7, 0xBF, 0x08, 0xCE, 0xCF, 0xE7, + 0xF3, 0x34, 0x2F, 0xCE, 0x79, 0xE7, 0xF4, 0x34, 0x99, 0xBA, 0xE1, 0x2F, + 0xAF, 0x47, 0x59, 0x94, 0xBB, 0xB6, 0xBC, 0x3F, 0x34, 0x4D, 0x2B, 0xCC, + 0xA2, 0x8F, 0xE7, 0xBE, 0x1B, 0x66, 0x48, 0x44, 0x4E, 0x09, 0x31, 0xD6, + 0x0D, 0xC3, 0xB5, 0x5B, 0x6C, 0x00, 0x04, 0xC3, 0xED, 0x6E, 0x93, 0xBC, + 0xF3, 0xC1, 0xCD, 0xB3, 0xCA, 0x00, 0x4D, 0x43, 0xCF, 0x09, 0x32, 0x2E, + 0x3C, 0xDC, 0x6E, 0xDE, 0xDC, 0xAC, 0x57, 0xED, 0x16, 0x40, 0x5C, 0x30, + 0x08, 0x01, 0xFE, 0xF5, 0xE3, 0x55, 0x70, 0x4C, 0x09, 0xA6, 0x94, 0xBC, + 0xFF, 0xF0, 0x62, 0xAD, 0x2F, 0xA4, 0xB8, 0x39, 0xAC, 0x8D, 0x35, 0xF3, + 0xA2, 0x28, 0xA7, 0x87, 0x87, 0xED, 0x32, 0xEA, 0x97, 0xD7, 0x4E, 0x4A, + 0x82, 0x4C, 0x28, 0x9A, 0xCA, 0x3A, 0x3F, 0xF4, 0x23, 0x41, 0x98, 0x23, + 0x3C, 0x4E, 0x9A, 0x73, 0x52, 0xAD, 0x1B, 0xB3, 0xA8, 0x72, 0xB5, 0xF1, + 0xCE, 0x77, 0xBD, 0x76, 0x1E, 0x3C, 0xBE, 0x7D, 0x30, 0xC6, 0x9C, 0x2F, + 0x97, 0x18, 0x3D, 0xC8, 0x19, 0x49, 0x70, 0x77, 0x53, 0xF8, 0x10, 0x9B, + 0xA6, 0x4E, 0x21, 0x30, 0x82, 0xBE, 0x3E, 0x1F, 0x83, 0xB3, 0x08, 0x24, + 0x46, 0x80, 0xF1, 0x7E, 0xE8, 0xC7, 0xB2, 0x64, 0xDB, 0x4D, 0xDD, 0x36, + 0xF5, 0x38, 0xCC, 0x9B, 0x8D, 0x74, 0x36, 0x6C, 0x37, 0x0D, 0x42, 0x28, + 0xE5, 0x5C, 0x08, 0xF6, 0x6D, 0x20, 0x9B, 0x20, 0xD2, 0x8F, 0x73, 0x0A, + 0x29, 0x26, 0x60, 0xB5, 0xEF, 0xC6, 0x59, 0x08, 0xC6, 0x29, 0x8D, 0x10, + 0x12, 0x42, 0x11, 0xA2, 0x21, 0x44, 0xEB, 0xF3, 0x34, 0x2A, 0x98, 0x63, + 0x55, 0x97, 0x18, 0xD3, 0x87, 0xDB, 0xF6, 0xF5, 0x32, 0xB4, 0x4D, 0xAD, + 0x8D, 0x5D, 0x92, 0x87, 0x10, 0x7A, 0x97, 0x8A, 0xAA, 0x60, 0x82, 0x2F, + 0x4B, 0xCA, 0x00, 0x3A, 0x1F, 0x7E, 0xFD, 0xF4, 0xE2, 0x9C, 0x53, 0xD6, + 0x02, 0x00, 0x00, 0x00, 0xD6, 0xA7, 0x42, 0xF2, 0x65, 0xD1, 0x3E, 0x44, + 0xC2, 0x08, 0x25, 0x14, 0x21, 0x4A, 0x08, 0x8D, 0x31, 0x16, 0x45, 0x99, + 0x01, 0x1A, 0xE7, 0xD1, 0x18, 0x53, 0x55, 0x0D, 0x44, 0x98, 0x51, 0x2C, + 0x28, 0x9A, 0xA7, 0x99, 0x31, 0x16, 0x62, 0xEC, 0x86, 0x25, 0x67, 0x30, + 0x2E, 0xF6, 0x3A, 0x0C, 0x8C, 0x42, 0xEF, 0x33, 0x42, 0x40, 0x70, 0xBA, + 0x5D, 0xB5, 0xB2, 0xDA, 0xA6, 0x1C, 0x9C, 0x33, 0x80, 0xC9, 0x7A, 0xD3, + 0x82, 0x1C, 0xAD, 0x77, 0x19, 0x82, 0x0F, 0xFF, 0xF3, 0x98, 0x21, 0x0C, + 0x31, 0x54, 0xB5, 0x8C, 0xA1, 0x7F, 0x7A, 0x9E, 0x7F, 0xFC, 0xE1, 0xBB, + 0x60, 0xC7, 0x75, 0x23, 0x5F, 0xCE, 0x9A, 0x49, 0xE2, 0xE8, 0xEE, 0xF8, + 0x7A, 0x8C, 0x76, 0x34, 0xCE, 0xD5, 0x72, 0x73, 0x7A, 0x7D, 0xEA, 0xA7, + 0xF9, 0x3F, 0xFD, 0x24, 0x28, 0x29, 0x8A, 0xA2, 0x18, 0x97, 0x29, 0xA6, + 0xB0, 0x4C, 0xB9, 0x9F, 0x4D, 0x08, 0x51, 0x4A, 0x1A, 0x82, 0xAB, 0x1B, + 0x1A, 0x63, 0xC4, 0xC0, 0xDF, 0xDE, 0xAF, 0x5E, 0xCF, 0xB3, 0xF7, 0x2E, + 0x85, 0x25, 0x39, 0x76, 0x7D, 0xD1, 0x31, 0x01, 0x08, 0x19, 0xC6, 0x04, + 0x12, 0x80, 0x08, 0xA2, 0x89, 0x79, 0xE3, 0x1F, 0x6E, 0xB6, 0xBB, 0xF5, + 0xE6, 0xFF, 0xFE, 0x6F, 0x7F, 0xEB, 0x86, 0xF1, 0x1F, 0x7F, 0xFA, 0x11, + 0x40, 0x70, 0xEE, 0xE7, 0xF5, 0x6A, 0xE5, 0xA3, 0x8D, 0x39, 0x1B, 0xEB, + 0xB7, 0x4D, 0xE1, 0xBC, 0xC1, 0x2C, 0x8B, 0x88, 0x8C, 0xB1, 0xE6, 0x3C, + 0x47, 0x45, 0x7D, 0xE2, 0x31, 0x0B, 0x46, 0xB8, 0xB1, 0xE0, 0x92, 0x74, + 0x37, 0xD9, 0xB2, 0xE4, 0x4D, 0xC3, 0x9C, 0xF1, 0x53, 0x3F, 0xB4, 0xED, + 0x0A, 0x41, 0xFC, 0xFC, 0xE5, 0xEC, 0x8C, 0x8F, 0x08, 0xBF, 0x9C, 0x8E, + 0x10, 0x02, 0x6B, 0x83, 0xE4, 0xB8, 0x29, 0xE4, 0xB6, 0x29, 0x6D, 0xB0, + 0x3E, 0xA6, 0xB2, 0x96, 0xAB, 0x5D, 0x93, 0x63, 0x46, 0x00, 0x4E, 0xE3, + 0x72, 0xBE, 0x0E, 0x21, 0x24, 0x1F, 0xBF, 0xAD, 0x3A, 0x41, 0xEA, 0x53, + 0xF2, 0x19, 0x63, 0x82, 0x20, 0xA8, 0xAB, 0x22, 0xE7, 0x24, 0x4B, 0xA2, + 0x94, 0xFA, 0x7A, 0xD4, 0x05, 0x67, 0x39, 0xA3, 0x0F, 0x5F, 0x55, 0x55, + 0x60, 0x65, 0x3D, 0x80, 0x8A, 0xD2, 0xD0, 0x54, 0x35, 0xC1, 0x68, 0x98, + 0x16, 0x08, 0x90, 0x10, 0x22, 0xA6, 0xA0, 0xB5, 0x75, 0x2E, 0xE4, 0x04, + 0x08, 0xC1, 0xAB, 0x75, 0x93, 0x62, 0xF4, 0x3E, 0xE8, 0x0C, 0x19, 0xA3, + 0x29, 0xA7, 0xDD, 0x8A, 0x57, 0x1C, 0x87, 0x9C, 0xB4, 0x9E, 0xAB, 0x92, + 0x03, 0xE0, 0xDA, 0xA6, 0xDE, 0x54, 0xC5, 0x30, 0x4D, 0xB2, 0xA4, 0xC1, + 0x86, 0xBB, 0x43, 0x35, 0xCE, 0x29, 0x27, 0xD4, 0x34, 0x8D, 0xF5, 0x91, + 0xE3, 0x44, 0x31, 0x1D, 0x66, 0x87, 0x31, 0x29, 0x64, 0x11, 0xA2, 0x2A, + 0x18, 0xAE, 0x38, 0xDA, 0xD5, 0xBB, 0x77, 0x6F, 0x36, 0x2A, 0xC4, 0xF7, + 0xAF, 0xE3, 0xFB, 0xDF, 0x7E, 0x81, 0x10, 0xFC, 0xF8, 0xDD, 0xDD, 0xB9, + 0xEB, 0xB5, 0xB3, 0xCB, 0xE2, 0x73, 0x02, 0x94, 0xE1, 0x94, 0x23, 0x31, + 0x26, 0x18, 0x6D, 0xEF, 0xB6, 0xBB, 0x7F, 0xFE, 0x87, 0x9F, 0x33, 0x64, + 0x8C, 0x53, 0x1F, 0x01, 0x22, 0x62, 0xB3, 0xDD, 0xFD, 0x53, 0xF3, 0xC7, + 0x69, 0x5A, 0x40, 0x02, 0x52, 0x08, 0x0A, 0x17, 0xE5, 0xF4, 0xC3, 0x6D, + 0x15, 0x63, 0xF1, 0xAF, 0x7A, 0x26, 0x39, 0xD1, 0x6C, 0x9D, 0xF7, 0x7F, + 0xFE, 0xD3, 0x63, 0x44, 0xE8, 0x78, 0xBA, 0xBE, 0xD5, 0x7B, 0xC6, 0xE8, + 0x6A, 0x53, 0x9F, 0x5F, 0x7B, 0xA3, 0x7D, 0x21, 0xB9, 0x3F, 0x5A, 0x63, + 0x6C, 0x06, 0xF0, 0x74, 0x9A, 0xFE, 0xF0, 0xDD, 0xE3, 0xEB, 0xE5, 0x92, + 0x40, 0xA8, 0x0B, 0x99, 0x42, 0x7E, 0x7E, 0x59, 0x08, 0xCB, 0x09, 0xC4, + 0xE0, 0xA8, 0x8F, 0xC9, 0x98, 0xD8, 0xCF, 0x81, 0x50, 0x08, 0x12, 0xFC, + 0xF2, 0x74, 0xD9, 0xAC, 0xD6, 0x0F, 0x77, 0xF7, 0x04, 0x22, 0x1B, 0xF3, + 0x7A, 0x53, 0x60, 0xDC, 0x5C, 0xCE, 0x73, 0x70, 0xE6, 0xF1, 0x61, 0x55, + 0x14, 0xE9, 0xF7, 0x8F, 0xE3, 0x75, 0x9A, 0x1E, 0xEE, 0xB7, 0xCE, 0x05, + 0x10, 0x91, 0xB6, 0x76, 0x31, 0xA6, 0x69, 0x8A, 0xF5, 0xBA, 0xEE, 0xE7, + 0xA1, 0x10, 0xA2, 0x1B, 0x26, 0x4C, 0x78, 0xBD, 0xDA, 0x78, 0x63, 0x96, + 0xE9, 0x82, 0x10, 0x72, 0xDE, 0xEE, 0xF7, 0xB7, 0x29, 0xE5, 0xD3, 0xF9, + 0xA8, 0xAD, 0x0D, 0x39, 0x5A, 0xAB, 0x01, 0xF0, 0x82, 0xE1, 0x65, 0xD6, + 0x8F, 0x6F, 0xF6, 0xDB, 0x75, 0x9B, 0x83, 0x5B, 0xA6, 0x31, 0x46, 0xF3, + 0xFA, 0xDC, 0x03, 0x8C, 0xB5, 0xB6, 0xDB, 0x1D, 0x14, 0x82, 0xFF, 0xF6, + 0xFB, 0x69, 0x9C, 0x16, 0x59, 0x0A, 0x41, 0xF1, 0x70, 0x9D, 0xBF, 0x3B, + 0x80, 0x28, 0x48, 0x59, 0x6C, 0x32, 0x20, 0x29, 0x47, 0x8E, 0x93, 0xA0, + 0x74, 0xD3, 0xCA, 0xDB, 0xC3, 0xBA, 0xA9, 0x57, 0x41, 0xC5, 0x71, 0x9C, + 0x26, 0x9D, 0x72, 0x46, 0x4D, 0x5D, 0xA4, 0x9C, 0xB4, 0xD6, 0xD3, 0xB7, + 0x7B, 0x8B, 0xD1, 0x38, 0x2B, 0x0C, 0x51, 0x48, 0x31, 0x01, 0xD0, 0x8D, + 0x53, 0xD7, 0x2F, 0x94, 0xB1, 0xE8, 0x63, 0x4C, 0xB2, 0x1F, 0xD4, 0xE1, + 0xF6, 0x1B, 0x87, 0x92, 0x58, 0x29, 0x13, 0x40, 0xAF, 0xAF, 0x1D, 0x25, + 0x08, 0x93, 0x1E, 0xE6, 0xCC, 0x28, 0x2D, 0xAA, 0x02, 0x13, 0x52, 0x71, + 0x11, 0x53, 0xC6, 0x98, 0xDC, 0xDD, 0xDD, 0x50, 0x8A, 0x09, 0x44, 0xCB, + 0xE2, 0x21, 0x04, 0x08, 0x82, 0x98, 0x80, 0x28, 0x58, 0x51, 0xF0, 0xA6, + 0xA8, 0x65, 0x41, 0x10, 0x81, 0xBF, 0x7D, 0x7C, 0x09, 0x11, 0x7C, 0xFA, + 0xFC, 0x72, 0xD8, 0x35, 0x9B, 0x55, 0x9D, 0x12, 0xAC, 0xCA, 0x02, 0x13, + 0x4C, 0x20, 0x0A, 0x21, 0x7A, 0x67, 0xB9, 0xE0, 0x08, 0x21, 0xC6, 0x28, + 0xC8, 0x20, 0xC6, 0x54, 0x17, 0xC5, 0xFF, 0xF2, 0x4F, 0x3F, 0x2D, 0xB3, + 0xFE, 0xF5, 0xFD, 0xF3, 0xB5, 0x9F, 0x96, 0xC5, 0xCC, 0x39, 0x11, 0x8C, + 0xB7, 0x6D, 0xD2, 0x5A, 0x43, 0x08, 0xB5, 0x56, 0x08, 0x93, 0x94, 0xB0, + 0x36, 0x01, 0xA4, 0xD0, 0x56, 0xB5, 0xB1, 0x6E, 0xB3, 0x6E, 0x10, 0x42, + 0x5F, 0xBF, 0xBE, 0x5A, 0xEF, 0x9B, 0xAA, 0x12, 0x9C, 0x3F, 0x3F, 0x3F, + 0xC7, 0x94, 0x33, 0x00, 0x08, 0x22, 0x84, 0x10, 0x61, 0x82, 0xA7, 0xCC, + 0x05, 0x93, 0x5C, 0x30, 0x8E, 0x86, 0x71, 0x09, 0x31, 0xB4, 0x6D, 0x39, + 0x4E, 0x06, 0x42, 0x68, 0xAD, 0x06, 0x00, 0x00, 0x90, 0x8D, 0x51, 0xD3, + 0x34, 0xE4, 0x9C, 0x01, 0x00, 0xD6, 0x1A, 0x67, 0xCD, 0xB6, 0xAD, 0x04, + 0xE3, 0xD6, 0x3A, 0x90, 0x01, 0x44, 0xA4, 0xEB, 0x47, 0x8C, 0x09, 0x44, + 0x60, 0x5A, 0x94, 0xD6, 0xFA, 0xEE, 0xB0, 0xA6, 0x94, 0x28, 0xE3, 0xCE, + 0xBD, 0x66, 0x8C, 0x34, 0x05, 0xE7, 0x52, 0x7A, 0x95, 0x9F, 0x9F, 0x4F, + 0x21, 0xC5, 0x45, 0xF9, 0x4B, 0x37, 0x13, 0x4E, 0xA6, 0xF9, 0xFF, 0x0B, + 0x07, 0x04, 0xE3, 0x98, 0xC5, 0xCB, 0x79, 0xE6, 0x8C, 0x8E, 0x16, 0x87, + 0x18, 0x46, 0x5B, 0x33, 0x8D, 0x74, 0xFF, 0x9E, 0x20, 0xB3, 0xBD, 0x7D, + 0x44, 0x29, 0x1D, 0xDA, 0xEE, 0xE6, 0x7F, 0xDD, 0x30, 0x80, 0x1F, 0x6F, + 0x2A, 0x48, 0x72, 0x4E, 0x66, 0xD5, 0xF2, 0x59, 0xF9, 0xFF, 0xF4, 0x97, + 0x07, 0x00, 0xBC, 0x52, 0xE1, 0xF8, 0xDA, 0xDD, 0xDD, 0x35, 0xC3, 0x10, + 0x18, 0x0C, 0x6F, 0x6F, 0xA1, 0xB5, 0x31, 0x45, 0x52, 0x11, 0xB8, 0x5B, + 0x71, 0x97, 0xCB, 0xBE, 0x9B, 0xFE, 0xC7, 0xDF, 0xBE, 0x38, 0x9F, 0xD6, + 0xAB, 0x82, 0x33, 0x52, 0x97, 0xCD, 0x75, 0x98, 0x18, 0x86, 0xD6, 0xC5, + 0x73, 0xD7, 0xB5, 0x75, 0x05, 0x10, 0x84, 0x29, 0x6E, 0x56, 0x72, 0x98, + 0xC6, 0xE7, 0xD7, 0x63, 0x51, 0xC8, 0xB7, 0x77, 0xBB, 0x10, 0xE3, 0xC7, + 0xCF, 0xD7, 0x0C, 0xFC, 0x8F, 0x3F, 0x3C, 0x2C, 0x0A, 0xE7, 0x24, 0xBC, + 0x55, 0x90, 0x42, 0x0C, 0xC0, 0x30, 0xE8, 0x59, 0xFB, 0x55, 0x5B, 0x63, + 0x0C, 0xB4, 0xF3, 0x85, 0xA3, 0x04, 0x81, 0xBA, 0xAE, 0x05, 0x15, 0xA7, + 0xD7, 0x4B, 0x3F, 0x2C, 0x00, 0xA2, 0x5F, 0x3F, 0x7F, 0x9A, 0x94, 0xFE, + 0xF9, 0x87, 0x7B, 0x2A, 0xC9, 0x62, 0x1D, 0xC0, 0xB1, 0x59, 0x17, 0xB3, + 0x86, 0x12, 0xCA, 0xAA, 0x14, 0x31, 0x04, 0xAB, 0x83, 0x10, 0xBC, 0xAC, + 0x2B, 0xE7, 0x03, 0x84, 0x10, 0x33, 0x5C, 0xD7, 0xB2, 0xAE, 0x0B, 0x46, + 0xF1, 0x38, 0xCE, 0x9B, 0xB6, 0x6A, 0xCA, 0x6A, 0xB5, 0x6E, 0x66, 0x6D, + 0xFA, 0x69, 0x2A, 0xB8, 0xF0, 0x11, 0xBC, 0xFF, 0xFD, 0xB3, 0xF5, 0xE1, + 0xE5, 0x38, 0xF4, 0x83, 0x29, 0x4B, 0xF9, 0xE6, 0xB0, 0xE9, 0x27, 0xB5, + 0x69, 0xD7, 0x39, 0xE5, 0x69, 0x51, 0x10, 0x42, 0xE4, 0x73, 0x51, 0x49, + 0x4A, 0x89, 0x36, 0x53, 0xCA, 0xD9, 0x5B, 0x97, 0xAE, 0x63, 0x51, 0x4A, + 0x90, 0x52, 0x0E, 0x4E, 0x51, 0xE4, 0x9C, 0x65, 0x02, 0x75, 0x53, 0x4C, + 0x21, 0x12, 0x42, 0xA6, 0x71, 0xE4, 0x38, 0x49, 0x26, 0x4E, 0xDD, 0x98, + 0x61, 0xB2, 0x73, 0x00, 0x29, 0x5F, 0xAF, 0xA3, 0xB6, 0xB6, 0x90, 0x6C, + 0x18, 0x35, 0xC1, 0x14, 0x22, 0x74, 0xBB, 0xDF, 0xF8, 0x98, 0x6F, 0x0F, + 0x05, 0xE5, 0xE8, 0xA1, 0x68, 0x63, 0x88, 0xBB, 0x4D, 0xBD, 0xAD, 0x0B, + 0x4E, 0xD3, 0x97, 0xD7, 0xA7, 0xFE, 0x32, 0x21, 0x4A, 0x7F, 0xFE, 0xC3, + 0x4D, 0x25, 0x58, 0x4C, 0xF9, 0x3A, 0x69, 0x2E, 0x98, 0xF3, 0xF1, 0xD4, + 0xF5, 0x65, 0x21, 0xE0, 0xFF, 0xF9, 0x7F, 0xFC, 0x6F, 0xDF, 0xDD, 0xEF, + 0x09, 0x26, 0x39, 0x81, 0x51, 0x99, 0x98, 0x53, 0x08, 0x91, 0x60, 0xEC, + 0x43, 0x4E, 0x39, 0xBF, 0x1C, 0xCF, 0x4F, 0xCF, 0xE7, 0x1F, 0x7F, 0xB8, + 0x87, 0x19, 0x94, 0x85, 0xA0, 0x82, 0x13, 0x02, 0x30, 0xA6, 0xAF, 0x4F, + 0x2F, 0xA5, 0xE0, 0x00, 0x86, 0x0C, 0x01, 0x16, 0x4C, 0x7B, 0x07, 0x10, + 0xF2, 0x3E, 0x54, 0x85, 0x28, 0xEB, 0x02, 0x03, 0x58, 0x0A, 0x06, 0x21, + 0xE8, 0x7A, 0xFD, 0xE5, 0xEB, 0xD9, 0x2C, 0x76, 0xB7, 0xD9, 0x28, 0x1B, + 0x73, 0x76, 0x05, 0x4B, 0x18, 0xA2, 0xE7, 0x97, 0x11, 0x63, 0x4C, 0x49, + 0xC6, 0x18, 0x0B, 0x51, 0x9C, 0xCE, 0xC3, 0x79, 0xB2, 0x46, 0xAB, 0x90, + 0x33, 0x21, 0x6C, 0xB7, 0xD9, 0x1C, 0xB6, 0x4D, 0x74, 0x7A, 0xBD, 0xAB, + 0xB8, 0x80, 0xD3, 0x64, 0x95, 0x72, 0x14, 0x23, 0xA5, 0xCC, 0x76, 0xD7, + 0xC6, 0x04, 0x62, 0x8A, 0x7F, 0xF8, 0xE1, 0x2E, 0x65, 0xB0, 0x68, 0xC3, + 0x39, 0xBD, 0x9E, 0xC7, 0x79, 0x52, 0x42, 0xF2, 0x9C, 0xA1, 0xE0, 0xE8, + 0x7F, 0xFC, 0xEB, 0xFB, 0x0F, 0x9F, 0x5E, 0x28, 0x2F, 0x21, 0x04, 0x5A, + 0x4D, 0x94, 0x09, 0xC6, 0xC4, 0xFD, 0xDD, 0x3D, 0x42, 0x40, 0x9B, 0x59, + 0x1B, 0x15, 0x73, 0x0E, 0x21, 0x04, 0xE7, 0x41, 0x0A, 0x31, 0x84, 0x3F, + 0xFD, 0x70, 0xBF, 0x6E, 0xAA, 0x45, 0x29, 0xAD, 0x34, 0xA5, 0xB8, 0xA8, + 0x0A, 0xCA, 0x18, 0xC8, 0x40, 0x29, 0xB7, 0xD8, 0x70, 0x68, 0xAB, 0xFF, + 0xF6, 0xFF, 0xFC, 0x92, 0x00, 0x7A, 0xF7, 0xF6, 0xE6, 0xE5, 0xE9, 0xF4, + 0xE7, 0x1F, 0xDF, 0x7E, 0x79, 0x39, 0x95, 0x42, 0xEC, 0xF7, 0xEB, 0xBF, + 0xFC, 0x7C, 0xDF, 0x75, 0xD7, 0xDD, 0xBA, 0xAE, 0x0B, 0x36, 0xCE, 0x06, + 0x41, 0x3E, 0x5E, 0xCD, 0xF1, 0xD8, 0x05, 0x1F, 0x20, 0x21, 0x2F, 0xE7, + 0x4E, 0x72, 0x7E, 0xEE, 0x06, 0xC6, 0x48, 0x5D, 0xCA, 0x4B, 0x37, 0xBD, + 0x7B, 0x3C, 0xBC, 0x9C, 0x86, 0x73, 0x3F, 0x33, 0x41, 0x11, 0x84, 0xEB, + 0x55, 0xBB, 0xD9, 0xD6, 0x97, 0xEB, 0x80, 0x31, 0x46, 0x04, 0x52, 0x08, + 0x32, 0x04, 0xCE, 0x87, 0x69, 0x54, 0x18, 0x13, 0xCE, 0x28, 0xA2, 0x78, + 0xEC, 0xC7, 0x42, 0xB2, 0xA6, 0xAD, 0xBA, 0xD3, 0xD8, 0xAC, 0x1B, 0x17, + 0xE2, 0x32, 0x2F, 0x75, 0x29, 0x33, 0x04, 0x19, 0x40, 0xBD, 0x58, 0x42, + 0xA9, 0x77, 0x69, 0x9E, 0xF5, 0xAC, 0xD4, 0xDD, 0x61, 0xF3, 0xF8, 0xE6, + 0x40, 0x30, 0x76, 0xDE, 0xC9, 0x92, 0x61, 0x88, 0x42, 0x4A, 0x29, 0xC5, + 0x9C, 0x72, 0x0A, 0xF1, 0xD3, 0x97, 0xA7, 0x45, 0x39, 0x59, 0x08, 0xEF, + 0xE3, 0x38, 0xA8, 0xAA, 0x14, 0xB7, 0x87, 0xB5, 0x5A, 0x4C, 0x51, 0x70, + 0x00, 0x40, 0xF0, 0x49, 0xCA, 0x42, 0x08, 0x52, 0x57, 0xA5, 0xD6, 0xF6, + 0xFD, 0xE7, 0x97, 0xEB, 0xB0, 0x74, 0xFD, 0xB0, 0xDF, 0xB6, 0x82, 0x92, + 0x90, 0xA1, 0xF5, 0x00, 0x13, 0xE6, 0x9D, 0x2B, 0x8A, 0x32, 0xE5, 0x5C, + 0xD2, 0x64, 0xAD, 0x1F, 0xE6, 0x49, 0x0A, 0xD2, 0xAE, 0x9A, 0xE7, 0x97, + 0x1E, 0x60, 0x08, 0xA2, 0xAF, 0xCB, 0x72, 0x9C, 0x4D, 0x02, 0x30, 0xE7, + 0x44, 0x30, 0x09, 0xC1, 0x31, 0xC6, 0xB5, 0xD6, 0x94, 0xA0, 0xA6, 0x2A, + 0xB5, 0xD1, 0x84, 0xE0, 0x14, 0x63, 0xCE, 0xD9, 0xFA, 0x10, 0x33, 0x40, + 0x88, 0x33, 0xC6, 0xBD, 0x37, 0x8C, 0xA2, 0x42, 0xF2, 0x45, 0x19, 0x4A, + 0xE5, 0x34, 0x4D, 0x55, 0xC1, 0x1E, 0x0E, 0x37, 0x8C, 0x52, 0x4A, 0xD0, + 0xE9, 0x72, 0x05, 0x10, 0x72, 0x46, 0xAD, 0x73, 0x29, 0x67, 0xC1, 0x58, + 0xCE, 0x69, 0xBB, 0x2E, 0x73, 0xCA, 0x75, 0xDD, 0x68, 0x6D, 0x01, 0x04, + 0x82, 0x51, 0x42, 0x80, 0xF3, 0x7E, 0x56, 0xCB, 0xD3, 0xCB, 0x79, 0x9C, + 0x2D, 0x21, 0x68, 0xB3, 0x6B, 0xBB, 0x6E, 0xC2, 0x18, 0x71, 0x4E, 0x9D, + 0xF5, 0xDE, 0x27, 0x88, 0x68, 0x06, 0x89, 0x89, 0xBA, 0x59, 0xDF, 0xDC, + 0xDD, 0x3F, 0x0E, 0xDD, 0xB5, 0x7F, 0xF9, 0xD7, 0xC3, 0xED, 0x1D, 0x65, + 0x75, 0x05, 0x9E, 0x4C, 0xBC, 0xCE, 0x01, 0x8F, 0xD7, 0x28, 0x05, 0x69, + 0x1B, 0xD1, 0x56, 0x92, 0x73, 0xC6, 0x68, 0x91, 0x92, 0x82, 0x28, 0x97, + 0xE5, 0x8D, 0x0B, 0x13, 0x00, 0x65, 0x34, 0x21, 0x44, 0x8D, 0x91, 0x3A, + 0x0F, 0xEE, 0x74, 0xD1, 0x8F, 0x37, 0xE2, 0xA7, 0x3F, 0xFC, 0xF0, 0xE5, + 0x69, 0xFC, 0xF0, 0xF2, 0xF5, 0xE3, 0x93, 0x75, 0x36, 0x34, 0xA5, 0x90, + 0xB2, 0x2A, 0x04, 0xDD, 0x6D, 0x57, 0xC1, 0x07, 0x8C, 0xB1, 0xE4, 0xB4, + 0xAE, 0xE4, 0xE5, 0xDA, 0x2F, 0x8B, 0x32, 0xCE, 0x85, 0x08, 0x19, 0xE3, + 0x1F, 0x3F, 0x1F, 0xD7, 0xAB, 0xB6, 0x9F, 0x26, 0x21, 0xE5, 0x76, 0x55, + 0x34, 0x25, 0x99, 0xB4, 0xED, 0xC6, 0x9E, 0x61, 0x08, 0x11, 0x49, 0x19, + 0x0D, 0x93, 0xA3, 0x54, 0x2C, 0xB3, 0xA9, 0x2A, 0x71, 0x77, 0xB7, 0x8B, + 0xDE, 0x31, 0x8E, 0x2B, 0xC9, 0x09, 0xC0, 0xDD, 0x75, 0x9C, 0xE6, 0x05, + 0x12, 0x7C, 0xBE, 0x5E, 0xD6, 0xAB, 0x42, 0x72, 0xE1, 0x6C, 0xDC, 0x6E, + 0x9A, 0xBB, 0x9B, 0xDD, 0xC7, 0x8F, 0xCF, 0x98, 0xD2, 0xB6, 0x69, 0x97, + 0xC5, 0xA4, 0x18, 0xA2, 0x8F, 0x6D, 0x53, 0x63, 0x02, 0x95, 0xB6, 0x84, + 0x82, 0xF5, 0xAA, 0x64, 0x94, 0x2E, 0xDA, 0x64, 0x08, 0x38, 0x47, 0x20, + 0x67, 0x90, 0xD1, 0xA4, 0x6C, 0x5D, 0x96, 0x5A, 0x2D, 0x75, 0x59, 0xC9, + 0xAA, 0xD0, 0xD6, 0xCD, 0x4A, 0x3D, 0x3D, 0x5F, 0xDE, 0x7F, 0x78, 0x65, + 0x04, 0x15, 0x42, 0xC4, 0x84, 0x16, 0x13, 0x0E, 0xFB, 0xCD, 0xE9, 0x7C, + 0xEA, 0xC7, 0xA9, 0xAE, 0x2A, 0xCE, 0x49, 0xCE, 0x59, 0xDB, 0x00, 0x20, + 0x04, 0x20, 0x75, 0xD7, 0x81, 0x32, 0xCA, 0x19, 0x2D, 0x38, 0xF7, 0xC1, + 0xED, 0x0F, 0x2D, 0x25, 0x78, 0x99, 0x16, 0xEF, 0xA2, 0x94, 0x45, 0x0C, + 0xBE, 0xE4, 0x58, 0x19, 0x8F, 0x09, 0x29, 0x0B, 0xC1, 0x29, 0xF2, 0xCE, + 0x5E, 0x87, 0x21, 0x02, 0x28, 0x05, 0x87, 0x10, 0x46, 0x17, 0x00, 0x04, + 0x9C, 0x53, 0x26, 0xF9, 0x30, 0x2D, 0x45, 0xD1, 0xDE, 0xAE, 0x1B, 0x8C, + 0xC9, 0xB8, 0x2C, 0x35, 0x47, 0xDD, 0x68, 0xBF, 0x9E, 0x15, 0x4E, 0xEA, + 0x4F, 0xDF, 0xBF, 0x09, 0x31, 0x74, 0xE3, 0x70, 0xBC, 0x2C, 0x65, 0x21, + 0xA5, 0xE4, 0xDD, 0xB4, 0x7C, 0xF3, 0x87, 0xF1, 0xFF, 0xFE, 0x5F, 0xFE, + 0x3A, 0x4C, 0xF6, 0x3C, 0xCC, 0xBF, 0xBE, 0xFF, 0xE2, 0x42, 0xBA, 0xF4, + 0xD3, 0xCB, 0xF1, 0x9C, 0x40, 0xBE, 0x0E, 0xD3, 0xD0, 0x8F, 0xB3, 0x56, + 0xBF, 0x7F, 0xF9, 0x5A, 0xCA, 0xB2, 0x2C, 0x04, 0xA5, 0x54, 0x2D, 0xF6, + 0xDA, 0x4F, 0xDA, 0x99, 0x1C, 0x43, 0xDD, 0x36, 0xA2, 0xA8, 0x28, 0x61, + 0x4D, 0x51, 0x79, 0xED, 0x82, 0x77, 0x7A, 0x54, 0x66, 0xB2, 0x95, 0x10, + 0x1C, 0xE3, 0x60, 0xBC, 0x60, 0x1C, 0x02, 0xB4, 0x5D, 0xD5, 0x0F, 0x0F, + 0xBB, 0x76, 0x23, 0xF7, 0xFB, 0x76, 0xBF, 0x6F, 0x09, 0x23, 0xFB, 0xDB, + 0xCD, 0xFE, 0x66, 0x05, 0x41, 0xE4, 0x05, 0x59, 0x94, 0x1A, 0xA6, 0x89, + 0x20, 0xE8, 0x63, 0x26, 0x84, 0xEC, 0xD6, 0xAB, 0xFD, 0x66, 0xF3, 0x78, + 0xD7, 0x80, 0x6C, 0x19, 0x05, 0x45, 0x41, 0xC6, 0x49, 0x9F, 0xCF, 0x3D, + 0x86, 0x80, 0x12, 0x1C, 0x02, 0xAA, 0xCA, 0x52, 0x96, 0x05, 0x25, 0xEC, + 0xCB, 0x97, 0xEB, 0xE7, 0x8F, 0x67, 0xCE, 0x48, 0x8E, 0x20, 0xBA, 0x48, + 0x31, 0xE1, 0x82, 0xA5, 0x0C, 0x7E, 0xFD, 0xF5, 0xE9, 0xB0, 0x5D, 0x31, + 0x8A, 0xCE, 0xDD, 0x82, 0x10, 0x8C, 0x21, 0x84, 0x10, 0x76, 0xDB, 0x75, + 0x55, 0x17, 0xDD, 0xF8, 0xEA, 0xBD, 0xF3, 0xC1, 0xC5, 0xE0, 0xEA, 0x52, + 0x96, 0x05, 0x8F, 0xD1, 0x97, 0x92, 0xE5, 0x90, 0x53, 0x4C, 0xD3, 0xAC, + 0x9D, 0x0F, 0x00, 0x82, 0xFD, 0x6E, 0x9D, 0x52, 0x76, 0x2E, 0x0C, 0x83, + 0x72, 0xD6, 0x4A, 0xC1, 0x4F, 0xDD, 0xF4, 0xD7, 0x9F, 0xEE, 0xF7, 0xAB, + 0xBA, 0x1F, 0x15, 0x13, 0xFC, 0x76, 0x55, 0xAE, 0xEB, 0xEA, 0x76, 0x5F, + 0x23, 0x90, 0x5F, 0x5E, 0xAF, 0x7D, 0xBF, 0xBC, 0xBC, 0xAA, 0x97, 0xAF, + 0xA3, 0xD1, 0xEE, 0xB5, 0xEB, 0x27, 0x35, 0xC6, 0x0C, 0x8B, 0xB2, 0x46, + 0x28, 0x07, 0xA7, 0x52, 0x06, 0xEB, 0xBA, 0x2E, 0x0B, 0x19, 0x42, 0x74, + 0x21, 0x76, 0xB3, 0x5E, 0xB4, 0xB1, 0xCE, 0xBF, 0x7B, 0xBC, 0x1B, 0xC6, + 0x65, 0xE8, 0x07, 0xC6, 0xB0, 0xD1, 0x06, 0x13, 0x94, 0x72, 0x86, 0x00, + 0xA4, 0x94, 0x29, 0x67, 0xC3, 0x30, 0x83, 0x9C, 0x01, 0x00, 0x8C, 0x13, + 0x4A, 0xB0, 0x37, 0x9E, 0x50, 0x72, 0xB9, 0xF4, 0xC6, 0x3A, 0x88, 0x00, + 0x04, 0x20, 0x43, 0x38, 0x8D, 0x4B, 0xCA, 0x39, 0xC6, 0xE4, 0xAC, 0xAF, + 0xDB, 0xA2, 0x90, 0x64, 0xBD, 0x96, 0x39, 0x03, 0xEF, 0xD3, 0x34, 0x2A, + 0xAD, 0xAC, 0x75, 0xD6, 0xFB, 0xA0, 0x66, 0x6B, 0x8C, 0x23, 0x8C, 0x12, + 0x46, 0xB5, 0x32, 0xC3, 0xA8, 0xAE, 0xDD, 0x42, 0x28, 0x69, 0x9A, 0x0A, + 0x02, 0xA8, 0x9D, 0xC3, 0x98, 0x58, 0xEB, 0x01, 0xC0, 0x31, 0x81, 0x14, + 0xF3, 0xEB, 0xF1, 0xEA, 0x43, 0xDC, 0xAC, 0x9A, 0x42, 0xF2, 0x6B, 0x3F, + 0xE5, 0x94, 0x8D, 0x71, 0x8C, 0x49, 0xCA, 0xB8, 0xD6, 0x1A, 0x82, 0x9C, + 0x21, 0x40, 0x10, 0x30, 0x94, 0xBB, 0x61, 0xF4, 0x21, 0x28, 0xA5, 0x43, + 0xC8, 0x31, 0xE5, 0x9C, 0x62, 0x51, 0xF0, 0xA2, 0x28, 0x21, 0x11, 0x4A, + 0xCD, 0x10, 0xC2, 0x0C, 0x80, 0x35, 0x06, 0x42, 0x10, 0x53, 0xCC, 0x29, + 0x21, 0x88, 0x9D, 0xB5, 0x19, 0x66, 0x65, 0x9C, 0xD2, 0x8E, 0x52, 0x01, + 0x21, 0x01, 0x39, 0x63, 0x42, 0x11, 0x44, 0x8C, 0x7E, 0x5B, 0xE9, 0xE5, + 0x5A, 0x1B, 0x29, 0x58, 0x29, 0x25, 0xA6, 0x42, 0xC8, 0xEA, 0xF3, 0xD7, + 0x2F, 0xB3, 0x52, 0x21, 0xC6, 0x59, 0xDB, 0xEB, 0x30, 0x29, 0x6D, 0x84, + 0x90, 0xC7, 0xEB, 0x60, 0x5C, 0x48, 0x19, 0x0D, 0xE3, 0xA4, 0xB5, 0x45, + 0x18, 0x5D, 0xBB, 0x71, 0x18, 0x97, 0x6F, 0x60, 0xFA, 0xF1, 0x3A, 0x1A, + 0x1F, 0x20, 0x84, 0xCE, 0x85, 0x0C, 0xA0, 0x60, 0x94, 0x52, 0x52, 0xD6, + 0x7C, 0x9E, 0x8D, 0xB6, 0x01, 0x42, 0x50, 0xD5, 0x2B, 0xCE, 0xAB, 0xA1, + 0xBF, 0x2E, 0xC3, 0xC7, 0xC7, 0x3B, 0x81, 0x11, 0xC7, 0xF6, 0xC9, 0x86, + 0x4E, 0x7B, 0x71, 0xEA, 0xC1, 0xCB, 0x79, 0x11, 0x1C, 0x08, 0x01, 0xBF, + 0xBC, 0x5E, 0xFB, 0x71, 0x99, 0x8C, 0x7D, 0x3A, 0xBD, 0xC4, 0x9C, 0x5F, + 0xCE, 0xC7, 0x4F, 0xCF, 0x27, 0x41, 0xA9, 0x31, 0xC3, 0x38, 0x6B, 0x46, + 0x4B, 0xC1, 0xA1, 0x2C, 0x73, 0x21, 0x57, 0xD1, 0x51, 0x84, 0x5C, 0x51, + 0xE2, 0x77, 0x6F, 0x6F, 0xDF, 0x1C, 0xE4, 0xF7, 0x77, 0xEB, 0xF5, 0xBA, + 0x7D, 0x73, 0xBF, 0x95, 0x94, 0xDF, 0xEC, 0x5B, 0x0C, 0x32, 0xA7, 0x18, + 0x81, 0x1C, 0xFC, 0xC2, 0x45, 0x02, 0x30, 0x3E, 0xDE, 0xED, 0x1F, 0x1F, + 0xF6, 0x55, 0x45, 0x0F, 0xAB, 0xFA, 0xC7, 0x77, 0x77, 0xBB, 0x4D, 0xFD, + 0x78, 0xB3, 0x8D, 0x01, 0x71, 0xC1, 0x01, 0x88, 0x6A, 0x54, 0x04, 0xE1, + 0x61, 0x74, 0x82, 0xD2, 0x1C, 0x6C, 0x21, 0xF0, 0x62, 0x82, 0xD1, 0xCE, + 0x1A, 0x3B, 0x0C, 0xB3, 0x75, 0x21, 0x23, 0x08, 0x39, 0xE5, 0x05, 0x87, + 0xD9, 0xDF, 0x3D, 0x1C, 0x36, 0xDB, 0x75, 0x55, 0x17, 0x6F, 0xDF, 0xDE, + 0x96, 0x52, 0x20, 0x80, 0x64, 0x59, 0x59, 0x1B, 0x4E, 0xE7, 0x6E, 0x98, + 0x26, 0x67, 0x6C, 0xDB, 0x96, 0x31, 0xA5, 0xAE, 0x9F, 0x3F, 0x3E, 0x1D, + 0x5D, 0xF0, 0xFB, 0x4D, 0xF3, 0xE5, 0xE9, 0x05, 0x33, 0xCC, 0x28, 0x3B, + 0x5E, 0xFB, 0x61, 0x52, 0x2F, 0xA7, 0x2B, 0xA7, 0x1C, 0xE6, 0x14, 0x43, + 0xB2, 0x2E, 0x12, 0x4A, 0x8D, 0xB5, 0xB3, 0xD2, 0x45, 0x21, 0xDB, 0xB6, + 0x3A, 0x5D, 0x7A, 0x26, 0x59, 0xCA, 0x30, 0x02, 0xB4, 0xA8, 0x25, 0xE5, + 0xB8, 0x6A, 0x6B, 0x00, 0x81, 0xD2, 0x56, 0x1B, 0x97, 0x12, 0x48, 0x31, + 0x95, 0x25, 0x4F, 0x11, 0xC4, 0x18, 0x29, 0xC6, 0x84, 0x90, 0x69, 0x9A, + 0x0B, 0xC9, 0x29, 0x46, 0x3E, 0x64, 0xE3, 0xC2, 0xF9, 0x3A, 0x0D, 0xD3, + 0x92, 0x01, 0xF6, 0x21, 0xF8, 0x14, 0xC6, 0x69, 0xC9, 0x08, 0x26, 0x88, + 0x74, 0x88, 0x36, 0x26, 0x00, 0x91, 0x75, 0xCE, 0x3A, 0x8B, 0x28, 0x24, + 0x84, 0x74, 0x93, 0x32, 0x2E, 0x41, 0x04, 0x11, 0x82, 0xF3, 0xA2, 0x39, + 0x45, 0xE3, 0x30, 0x7E, 0xF8, 0x72, 0xAC, 0x0A, 0x7C, 0x77, 0xD8, 0x71, + 0x2E, 0xFF, 0xFE, 0xFE, 0x8B, 0xF6, 0x20, 0x67, 0x1C, 0x62, 0x9C, 0x94, + 0xF6, 0x3E, 0x2C, 0xDA, 0x12, 0x8C, 0xF1, 0x61, 0xB7, 0x1E, 0x46, 0xF5, + 0xFE, 0xD3, 0xD3, 0xD7, 0xD7, 0xF3, 0xAC, 0x4C, 0xC8, 0xE8, 0xF3, 0xF3, + 0x29, 0x24, 0x00, 0x20, 0x94, 0x82, 0x33, 0x46, 0x56, 0xEB, 0xA6, 0x28, + 0xE5, 0x38, 0x0D, 0xCB, 0xB2, 0x8C, 0x8B, 0x0A, 0x29, 0x32, 0x86, 0xBE, + 0xF1, 0xB0, 0x08, 0x61, 0x1F, 0x00, 0xC8, 0x84, 0x12, 0xD6, 0x54, 0xD5, + 0x76, 0xDB, 0x60, 0x84, 0x19, 0x26, 0x20, 0x26, 0x08, 0xA1, 0xD1, 0x6E, + 0x9C, 0xEC, 0x30, 0xDB, 0x71, 0x5C, 0x7C, 0x06, 0xC6, 0xBA, 0x45, 0xE9, + 0xE7, 0xCF, 0xA7, 0xF1, 0xA2, 0xAC, 0xCB, 0x21, 0x01, 0xED, 0xA3, 0x28, + 0x24, 0xA3, 0x08, 0x40, 0xF0, 0xEE, 0xCD, 0xFD, 0x5F, 0x7F, 0xFE, 0xE1, + 0xF6, 0x66, 0xCD, 0x49, 0xAA, 0x6B, 0x9E, 0x73, 0x16, 0x42, 0x20, 0x4C, + 0x56, 0x9B, 0xB6, 0x2C, 0xEA, 0x9C, 0xC1, 0xCD, 0xDD, 0x81, 0x30, 0x36, + 0x2D, 0xF6, 0xE5, 0xE5, 0x1A, 0x53, 0x3C, 0x5F, 0xC6, 0xF5, 0xBA, 0xDE, + 0xEE, 0xDA, 0xC5, 0xDA, 0x0C, 0x91, 0xB1, 0x1E, 0x22, 0xE8, 0x9D, 0x0B, + 0x31, 0xBD, 0x9E, 0x3A, 0x40, 0xF0, 0x34, 0x8C, 0x00, 0xC2, 0x0C, 0x61, + 0x53, 0x95, 0x84, 0x44, 0x17, 0xEC, 0x37, 0x6D, 0x26, 0xA5, 0x44, 0x29, + 0xFE, 0xF1, 0xDD, 0xDD, 0xD7, 0x97, 0x33, 0x45, 0x19, 0xE6, 0x8C, 0x29, + 0xDA, 0xEF, 0xDB, 0xAA, 0x96, 0xDA, 0x2C, 0x0F, 0x37, 0xBB, 0x10, 0xE2, + 0xE5, 0x7A, 0x19, 0xC7, 0x85, 0x60, 0xB4, 0x69, 0x38, 0x93, 0xEC, 0xC7, + 0x1F, 0xEE, 0x9A, 0x92, 0x0B, 0xC1, 0xD7, 0xEB, 0x6A, 0x9C, 0xFB, 0x6D, + 0x53, 0x2B, 0x13, 0x21, 0xE2, 0x7F, 0x7F, 0xFF, 0xF5, 0xC3, 0xD7, 0xF3, + 0x38, 0xA9, 0x98, 0x51, 0x37, 0xCE, 0x1F, 0x9F, 0x9E, 0x3F, 0xBD, 0x74, + 0xA3, 0xB6, 0x75, 0x5D, 0x5B, 0x6F, 0x94, 0xD1, 0xD3, 0x62, 0x18, 0xE7, + 0xD6, 0xF9, 0x79, 0x59, 0x76, 0x9B, 0xD5, 0x64, 0x1C, 0xC2, 0xB8, 0x1F, + 0xA6, 0xBB, 0xBB, 0x83, 0xD1, 0xEE, 0xF5, 0x7C, 0xDE, 0x6C, 0x1B, 0x1F, + 0x42, 0xCE, 0x29, 0x65, 0x18, 0x43, 0x36, 0xDA, 0xAC, 0xD6, 0x95, 0xD6, + 0xA6, 0x6C, 0x4A, 0x21, 0x59, 0x59, 0x17, 0x29, 0xA5, 0x14, 0x93, 0xF3, + 0x3E, 0x85, 0xE4, 0x63, 0x0A, 0x21, 0x72, 0x4E, 0x8D, 0xB6, 0x00, 0xE4, + 0x65, 0x36, 0xCE, 0x85, 0x71, 0x5C, 0x0A, 0x41, 0x1F, 0xEE, 0x57, 0x87, + 0xDB, 0xF6, 0xB0, 0x6F, 0x28, 0x86, 0x4D, 0x23, 0x8D, 0xB1, 0x21, 0x44, + 0x46, 0xC9, 0xC7, 0x4F, 0xC7, 0x18, 0x13, 0x63, 0xD4, 0x1A, 0x13, 0x42, + 0xD8, 0xEE, 0xD7, 0xCE, 0xC7, 0x94, 0xF2, 0x6E, 0xBB, 0xB6, 0xC6, 0x4D, + 0xB3, 0xC2, 0x14, 0x1B, 0xE3, 0x7C, 0x48, 0x00, 0x43, 0x6B, 0x83, 0x8F, + 0x89, 0x10, 0x92, 0x33, 0x50, 0x4A, 0x37, 0x4D, 0x21, 0x05, 0x3F, 0x5D, + 0x07, 0x84, 0x60, 0xCE, 0x49, 0xCA, 0x62, 0x5E, 0x66, 0x6B, 0x15, 0xC6, + 0xA8, 0x29, 0x28, 0xC2, 0x48, 0x19, 0xA3, 0x8D, 0x0D, 0x29, 0x69, 0x6B, + 0xBD, 0xF7, 0xD6, 0x39, 0x8A, 0x71, 0x51, 0xD6, 0xD3, 0x34, 0x3B, 0xAB, + 0x39, 0x97, 0x10, 0x02, 0x90, 0x53, 0x88, 0x11, 0x42, 0x48, 0x30, 0xF6, + 0x31, 0xE6, 0x1C, 0x33, 0x00, 0x19, 0xE2, 0xB2, 0x5A, 0xA5, 0x94, 0x21, + 0x84, 0x08, 0x61, 0xC6, 0x05, 0x21, 0xC4, 0x59, 0xEB, 0x43, 0x4A, 0x10, + 0x21, 0x04, 0x56, 0xB5, 0x4C, 0x19, 0xAF, 0xB7, 0xB7, 0xC3, 0x70, 0x2D, + 0x04, 0xBB, 0xDD, 0xAD, 0x53, 0x8A, 0x4F, 0xC7, 0x73, 0x4C, 0x29, 0xA4, + 0xD4, 0x34, 0x6B, 0xA5, 0x15, 0x00, 0x80, 0x10, 0x4C, 0x09, 0x1E, 0xA6, + 0xE5, 0xDB, 0x59, 0x2D, 0x8B, 0xC2, 0xD8, 0xE0, 0xBD, 0x5F, 0x8C, 0xCD, + 0x00, 0x40, 0x84, 0x18, 0xC1, 0x82, 0xD1, 0x79, 0x31, 0x14, 0xE3, 0x7E, + 0x50, 0x39, 0xE5, 0x14, 0x23, 0x26, 0xB8, 0x2A, 0x1B, 0x6B, 0xBC, 0xA4, + 0x79, 0xE8, 0x5F, 0x21, 0x4A, 0xDE, 0x99, 0x7E, 0x72, 0x2E, 0x96, 0x21, + 0xA1, 0x59, 0xEB, 0xE0, 0x23, 0xC6, 0xF0, 0x3C, 0xD8, 0xD3, 0xC5, 0x2B, + 0x03, 0x5E, 0x4F, 0xD3, 0xEB, 0xD9, 0x53, 0x02, 0x86, 0xC9, 0x5E, 0xBA, + 0x70, 0xEE, 0x47, 0xE3, 0xF4, 0xCB, 0x69, 0xD6, 0xDE, 0x09, 0x9A, 0x97, + 0xC5, 0x0A, 0xBE, 0xFA, 0xFA, 0x72, 0x89, 0x04, 0x5B, 0x17, 0xBD, 0x27, + 0x97, 0x6E, 0x1E, 0x86, 0x79, 0x9C, 0x96, 0x53, 0x3F, 0xC7, 0x94, 0xA3, + 0xCB, 0xD7, 0xEE, 0xF2, 0xEB, 0xC7, 0x97, 0x98, 0xE1, 0xA4, 0xD4, 0xEB, + 0x75, 0xBA, 0x3D, 0xEC, 0xC6, 0xD1, 0x7C, 0xFC, 0x7C, 0xBC, 0xDB, 0xD7, + 0x21, 0xE5, 0x6B, 0xA7, 0x39, 0x13, 0xDD, 0xE0, 0x16, 0xA5, 0x36, 0xEB, + 0x02, 0xE7, 0xFC, 0xFD, 0x9B, 0xB7, 0x87, 0xC3, 0xCD, 0x66, 0xDD, 0x6C, + 0x77, 0xED, 0x30, 0xCC, 0x2E, 0x38, 0x08, 0x53, 0x21, 0xC4, 0x38, 0x1B, + 0x00, 0x21, 0x40, 0xD8, 0x19, 0x4F, 0x39, 0x4D, 0xC1, 0x57, 0x45, 0x25, + 0x45, 0x05, 0x11, 0xE1, 0x82, 0x3B, 0x1F, 0x12, 0xC8, 0x77, 0x37, 0x1B, + 0x97, 0x12, 0x13, 0x54, 0x14, 0x5C, 0x08, 0xCE, 0x38, 0xED, 0xBB, 0xE1, + 0xD2, 0x8D, 0xA7, 0x6E, 0x08, 0xD1, 0x3F, 0xDC, 0x6D, 0xAA, 0x42, 0x9C, + 0xAF, 0x03, 0xC4, 0x70, 0x98, 0x96, 0xCB, 0x75, 0xB4, 0xCA, 0x37, 0x65, + 0xB1, 0xAA, 0xEB, 0x9C, 0x41, 0x3F, 0x2D, 0x31, 0xE5, 0xCF, 0x4F, 0xA7, + 0x41, 0xE9, 0xD3, 0x79, 0x9A, 0x95, 0x49, 0x00, 0xD4, 0x75, 0x91, 0x73, + 0x56, 0xDA, 0x14, 0xFB, 0x09, 0x8A, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, + 0x41, 0x54, 0x18, 0x67, 0x66, 0x35, 0x3B, 0xE7, 0x57, 0xAB, 0xAA, 0xAE, + 0x4B, 0xE7, 0xFC, 0xA5, 0x1B, 0x42, 0xF0, 0x00, 0x82, 0xF5, 0xBA, 0xF4, + 0x21, 0x21, 0x80, 0xCA, 0x42, 0xCC, 0x8B, 0xDA, 0x6E, 0xDB, 0x18, 0xC2, + 0xF1, 0xD8, 0xC7, 0x0C, 0x28, 0xA3, 0xA7, 0xCB, 0xB5, 0x28, 0x64, 0x4C, + 0xC1, 0x85, 0x20, 0x4A, 0xB6, 0x3B, 0x6C, 0x79, 0x21, 0x98, 0xE0, 0x37, + 0x87, 0x6D, 0x5D, 0x16, 0x65, 0x59, 0x96, 0x65, 0x49, 0x05, 0x3F, 0x5D, + 0x06, 0x42, 0xA8, 0xB1, 0x8E, 0x33, 0xAE, 0xB5, 0x31, 0xDA, 0x50, 0x84, + 0x9D, 0x8B, 0xD6, 0x04, 0x2E, 0x84, 0x60, 0x9C, 0x51, 0x76, 0xBA, 0x4E, + 0x2F, 0xA7, 0x73, 0xDB, 0x36, 0x29, 0x84, 0x94, 0x53, 0x5D, 0x0B, 0xE3, + 0x03, 0x21, 0x38, 0xC5, 0x84, 0xDB, 0xB2, 0x9E, 0x95, 0xE9, 0x26, 0x45, + 0xB9, 0xC8, 0x10, 0x66, 0x00, 0xC6, 0x69, 0x68, 0x57, 0x8D, 0x5A, 0xB4, + 0xB5, 0xD6, 0x47, 0x4F, 0x09, 0x89, 0x31, 0x5A, 0x6B, 0x11, 0xC6, 0xC6, + 0x7A, 0x98, 0xC1, 0xCD, 0xBE, 0x81, 0x08, 0x38, 0xEB, 0x01, 0xC8, 0xDD, + 0x30, 0x7E, 0xF8, 0xF2, 0xF2, 0x74, 0x7C, 0x55, 0x66, 0xBE, 0x76, 0x83, + 0xB5, 0x21, 0xF8, 0x9C, 0x00, 0x9C, 0x16, 0xF3, 0xF2, 0x32, 0x84, 0x10, + 0xA6, 0x59, 0x19, 0xED, 0x7D, 0xCA, 0xDA, 0xB8, 0x9C, 0xE0, 0x3C, 0xCD, + 0x00, 0x00, 0x6D, 0x93, 0x77, 0x81, 0x0B, 0x5A, 0x16, 0xFC, 0xF1, 0xF1, + 0xAE, 0x59, 0x6D, 0x62, 0xC8, 0x39, 0x26, 0x00, 0x72, 0x53, 0x56, 0x98, + 0x50, 0x59, 0xC8, 0x69, 0x32, 0x2E, 0x04, 0xAD, 0x74, 0x55, 0x49, 0x4C, + 0xA8, 0xF3, 0xDE, 0x07, 0xA7, 0xB4, 0x02, 0x39, 0xDD, 0x3F, 0xEC, 0x05, + 0xA7, 0x84, 0xC1, 0x6B, 0x37, 0x0C, 0xDD, 0xEC, 0xBD, 0x8F, 0x31, 0x86, + 0x10, 0x01, 0x00, 0x8C, 0x91, 0x7E, 0x9C, 0xC6, 0x41, 0x51, 0x42, 0x94, + 0x52, 0x31, 0x86, 0x77, 0x6F, 0xEE, 0x94, 0x35, 0x93, 0x52, 0x39, 0x67, + 0x08, 0x53, 0x25, 0xF1, 0x77, 0x77, 0x6B, 0xA3, 0x67, 0x4C, 0xD0, 0x5F, + 0x7F, 0xFC, 0xEE, 0xDD, 0xE3, 0x2D, 0x40, 0xA0, 0x6E, 0xCA, 0x9B, 0xC3, + 0x7A, 0xBB, 0x2E, 0xDF, 0xBE, 0x3D, 0x20, 0xC2, 0xF6, 0xFB, 0xF5, 0xFE, + 0xB0, 0xAD, 0xEB, 0xB2, 0x28, 0xC4, 0xAA, 0x29, 0xF4, 0x64, 0xE7, 0x29, + 0xFA, 0xE0, 0x43, 0xF2, 0x31, 0x44, 0x1F, 0xD3, 0xA4, 0x86, 0x6E, 0x9A, + 0x23, 0x80, 0xCE, 0x85, 0xBB, 0xBB, 0x83, 0x0F, 0xEE, 0xDC, 0xF5, 0xC3, + 0x62, 0x84, 0x14, 0x00, 0xA2, 0x9C, 0xFC, 0x30, 0x8E, 0x2E, 0x84, 0x42, + 0x16, 0x00, 0xD3, 0x7E, 0x18, 0x0F, 0xDB, 0x86, 0x32, 0xF6, 0x7A, 0xBE, + 0x96, 0x52, 0x52, 0x82, 0x37, 0xAB, 0xF6, 0xEF, 0xEF, 0x3F, 0xDD, 0x1E, + 0xB6, 0x8C, 0xD1, 0xCB, 0x79, 0xF4, 0x3E, 0x32, 0xC6, 0x32, 0xC8, 0xD6, + 0x38, 0x1F, 0x22, 0x00, 0x80, 0x60, 0x04, 0x31, 0xF4, 0xC6, 0xF8, 0x10, + 0x97, 0x59, 0xE7, 0x0C, 0xB4, 0x71, 0xDE, 0xBB, 0xDD, 0xB6, 0xC6, 0x28, + 0x4B, 0x4E, 0x60, 0x4C, 0x95, 0xA4, 0xEB, 0x9A, 0xDE, 0x6E, 0xDB, 0xBB, + 0x7D, 0x43, 0x28, 0x20, 0x14, 0x07, 0x1F, 0x31, 0xC9, 0x8C, 0x41, 0x59, + 0x32, 0x26, 0x28, 0x21, 0x78, 0xBB, 0xAD, 0xB8, 0x60, 0x10, 0xA0, 0xA2, + 0x28, 0x28, 0x25, 0x94, 0x52, 0x21, 0xB8, 0x94, 0xEC, 0xF9, 0xEB, 0x89, + 0x10, 0x9C, 0x33, 0x48, 0x29, 0xA7, 0x94, 0x33, 0x00, 0x29, 0xA7, 0x14, + 0x73, 0x08, 0x01, 0x62, 0xB8, 0x2C, 0xAA, 0xAC, 0xAA, 0x10, 0x22, 0x42, + 0x19, 0x82, 0x84, 0x40, 0xCE, 0x31, 0xD6, 0x4D, 0x6D, 0xBC, 0x63, 0x94, + 0xD6, 0x55, 0x99, 0x53, 0x82, 0x18, 0x2D, 0x5A, 0x43, 0x08, 0xDB, 0xB6, + 0x11, 0x82, 0x42, 0x04, 0x18, 0xA7, 0x9C, 0xD3, 0x71, 0x1C, 0x87, 0x71, + 0xC4, 0x18, 0x23, 0x08, 0xAC, 0x77, 0x21, 0x86, 0x94, 0x12, 0x04, 0x30, + 0xE6, 0x04, 0x21, 0x74, 0x3E, 0x38, 0x1F, 0x28, 0x15, 0x20, 0x27, 0x6B, + 0x14, 0x21, 0x4C, 0x16, 0xB5, 0x52, 0x33, 0x04, 0x29, 0x04, 0x47, 0x99, + 0xD0, 0x5A, 0x97, 0x05, 0xC5, 0x10, 0x51, 0xCA, 0x31, 0x46, 0xCB, 0x32, + 0x2F, 0xCB, 0x2C, 0x19, 0xFF, 0x7A, 0x3C, 0x87, 0x98, 0x38, 0xE3, 0x10, + 0x82, 0x18, 0xA3, 0x0F, 0x5E, 0x0A, 0x56, 0x08, 0xB6, 0x28, 0x1D, 0x62, + 0x38, 0x5E, 0x7B, 0x6B, 0xE3, 0xA2, 0x0D, 0x00, 0x80, 0x12, 0xDC, 0x0F, + 0x43, 0xBB, 0xAA, 0x63, 0x8C, 0x82, 0x73, 0x02, 0x91, 0xF1, 0x61, 0x9C, + 0x4D, 0x4C, 0x29, 0xC4, 0x9C, 0x40, 0xB6, 0xD6, 0x57, 0x55, 0xDB, 0x75, + 0x97, 0xF5, 0xF6, 0x9E, 0xD0, 0xE2, 0xF7, 0xDF, 0x3F, 0x4A, 0x2E, 0x57, + 0xEB, 0x52, 0x2D, 0x97, 0xD3, 0xB5, 0x77, 0x21, 0x53, 0x0A, 0x7D, 0xC8, + 0xCB, 0x92, 0xBC, 0x07, 0x18, 0x61, 0xEF, 0x01, 0xC1, 0xA0, 0x92, 0x84, + 0x60, 0x7A, 0xBC, 0x68, 0xA3, 0xB3, 0xF7, 0x68, 0x5C, 0x62, 0x51, 0x96, + 0x42, 0x34, 0xDA, 0xE6, 0x6E, 0xB6, 0x9F, 0x5E, 0x2F, 0x4F, 0xAF, 0xCF, + 0x31, 0x25, 0x8C, 0x99, 0x0B, 0x5E, 0x96, 0xE2, 0xDA, 0x2F, 0xB3, 0x0D, + 0xDB, 0x6D, 0xB3, 0x5E, 0x8B, 0xD7, 0xEB, 0x79, 0xB3, 0x6F, 0x17, 0xAD, + 0x7F, 0xFD, 0xF0, 0xBC, 0xDF, 0xDF, 0x72, 0x88, 0x97, 0x6F, 0x7D, 0xE1, + 0x94, 0x08, 0x25, 0x55, 0x25, 0x19, 0x95, 0xDD, 0xA4, 0x73, 0x36, 0x97, + 0xEB, 0xAB, 0x77, 0x00, 0xE0, 0xE2, 0xD3, 0xD3, 0x05, 0x64, 0x58, 0x96, + 0x42, 0x16, 0xEC, 0xF9, 0xB5, 0x2F, 0x8B, 0x02, 0xC4, 0xE4, 0x42, 0x30, + 0xDA, 0x81, 0x0C, 0xA4, 0x60, 0x14, 0xA1, 0x9C, 0x50, 0x59, 0x54, 0xC6, + 0xDA, 0x65, 0x36, 0x39, 0xC1, 0xE7, 0xAF, 0x57, 0x8C, 0xB0, 0xD1, 0xFE, + 0xD3, 0xD7, 0xEB, 0xB2, 0x18, 0x4C, 0x19, 0x15, 0x54, 0xD6, 0x85, 0xAC, + 0x24, 0xC0, 0xF0, 0xD3, 0xE7, 0xD7, 0xD5, 0xAA, 0x2C, 0x38, 0xED, 0xC7, + 0xB9, 0xEB, 0x67, 0xEF, 0xE3, 0x38, 0xEB, 0xF3, 0x75, 0x2A, 0x4A, 0xC1, + 0x28, 0x7E, 0x3E, 0x1E, 0x9F, 0x5E, 0x07, 0x6B, 0xC3, 0xD3, 0xA9, 0x9B, + 0xB5, 0x63, 0x8C, 0x85, 0x98, 0xB5, 0x75, 0x10, 0xC2, 0x18, 0x22, 0xE3, + 0xCC, 0x85, 0xA0, 0x16, 0x43, 0x28, 0x89, 0x31, 0x8D, 0xE3, 0xDC, 0x75, + 0x23, 0x80, 0x08, 0xE4, 0x8C, 0x31, 0x8E, 0x31, 0xE5, 0x98, 0x53, 0x4A, + 0x3E, 0xC4, 0x94, 0x01, 0xC8, 0x30, 0x86, 0xF8, 0xAD, 0x25, 0x1D, 0x63, + 0x8C, 0x31, 0xA6, 0xF8, 0xCD, 0x01, 0xCB, 0xED, 0xAA, 0x12, 0x82, 0x05, + 0x1F, 0x72, 0x4C, 0x6A, 0x36, 0xDD, 0x75, 0xC8, 0x20, 0x6F, 0xDB, 0x4D, + 0x2D, 0x18, 0x82, 0xA0, 0xAA, 0x8A, 0x18, 0x3C, 0xA7, 0x44, 0x6B, 0x7B, + 0xBC, 0x8C, 0x20, 0x67, 0xCE, 0xD0, 0xA8, 0xB5, 0xF7, 0x11, 0x61, 0x3C, + 0x2B, 0xBD, 0x6A, 0x8B, 0x0C, 0x81, 0xF7, 0x7E, 0xBB, 0xAA, 0x4A, 0xC9, + 0xCB, 0x4A, 0x52, 0x46, 0xAA, 0xBA, 0xD8, 0xB4, 0xAB, 0x10, 0x12, 0xBE, + 0xDD, 0xEF, 0x7D, 0x0C, 0xC6, 0x7A, 0x6D, 0x2D, 0x63, 0x0C, 0x02, 0xE0, + 0x9D, 0x33, 0xD6, 0xCE, 0xF3, 0x52, 0x96, 0x22, 0xE6, 0xA4, 0x94, 0xC5, + 0x88, 0x86, 0x10, 0xCB, 0xB2, 0x20, 0x84, 0x38, 0xEF, 0xC6, 0x59, 0x75, + 0xDD, 0x64, 0xBD, 0x33, 0xD6, 0x61, 0x0A, 0x79, 0x81, 0x7D, 0x74, 0xD7, + 0x6E, 0x20, 0x88, 0x38, 0x97, 0x4E, 0xD7, 0x69, 0xD1, 0xBE, 0x1B, 0xE6, + 0xCB, 0x30, 0xBE, 0x9E, 0x3B, 0x63, 0x1D, 0x22, 0xC4, 0xDA, 0x40, 0x28, + 0x8D, 0x29, 0xCA, 0x82, 0x07, 0x00, 0x84, 0x94, 0x87, 0x9B, 0x36, 0xC5, + 0x2C, 0x6B, 0x39, 0x4D, 0x36, 0x86, 0xA4, 0x8D, 0x7B, 0x7A, 0x3A, 0x4E, + 0x93, 0x02, 0x99, 0x18, 0x1B, 0x2E, 0xFD, 0xF0, 0xCB, 0xFB, 0xAF, 0xFD, + 0x30, 0x6B, 0x1D, 0x3E, 0x7D, 0x3A, 0x2E, 0xDA, 0x34, 0x4D, 0xA9, 0x94, + 0xF6, 0x3E, 0x5C, 0xAE, 0x7D, 0x86, 0x70, 0x98, 0xD5, 0x34, 0x2B, 0xC6, + 0xA5, 0x5A, 0x74, 0xCA, 0xD9, 0x68, 0x67, 0x8C, 0xA3, 0x8C, 0x2C, 0xB3, + 0x12, 0x05, 0x4B, 0x31, 0x75, 0xC3, 0xE4, 0xBC, 0x47, 0x08, 0x11, 0x8A, + 0xB5, 0x35, 0x84, 0x62, 0xC9, 0xE0, 0xED, 0x56, 0x3C, 0xDE, 0xD6, 0x08, + 0x3A, 0x29, 0xF0, 0x4F, 0x3F, 0x7E, 0xDF, 0x16, 0xA5, 0x2C, 0x4A, 0x51, + 0x15, 0x4C, 0x96, 0x43, 0x37, 0x6E, 0xB7, 0x35, 0xE7, 0x52, 0x08, 0x59, + 0x08, 0x09, 0x32, 0xA2, 0x8C, 0x2E, 0xD6, 0xBC, 0xBE, 0xF6, 0x8C, 0x15, + 0x43, 0xDF, 0x0F, 0x7A, 0x91, 0x3C, 0x69, 0x65, 0x65, 0x19, 0x30, 0xF1, + 0x37, 0x87, 0xFB, 0xCD, 0xA6, 0xDE, 0x6E, 0x57, 0x08, 0x21, 0x46, 0xF1, + 0xED, 0x6E, 0xE5, 0x42, 0x0A, 0x29, 0x32, 0x42, 0x16, 0x6D, 0x7C, 0x4C, + 0x9C, 0x12, 0x90, 0x41, 0x82, 0x90, 0x0B, 0x51, 0x70, 0xF6, 0xFC, 0x72, + 0x0A, 0x21, 0xCE, 0xF3, 0xB2, 0x69, 0xDB, 0x8F, 0x5F, 0x5F, 0x5C, 0x08, + 0x42, 0xC8, 0x71, 0x9C, 0x31, 0xC6, 0x6D, 0x53, 0xCD, 0xD3, 0x82, 0x29, + 0xC1, 0x14, 0x6B, 0x65, 0x62, 0x88, 0x18, 0x64, 0x6F, 0x9C, 0xF3, 0xDE, + 0xDB, 0xA0, 0x17, 0x83, 0x29, 0xAE, 0x1A, 0xB9, 0x6A, 0x64, 0x21, 0xE8, + 0x66, 0xD5, 0x4A, 0x81, 0xD7, 0x4D, 0xD9, 0x96, 0x94, 0x92, 0xB4, 0xDF, + 0xAD, 0x72, 0x4E, 0xE3, 0xB0, 0x74, 0x97, 0x31, 0x82, 0xD4, 0x5D, 0x26, + 0x6D, 0xFC, 0x38, 0x28, 0x1F, 0x02, 0x65, 0x58, 0x4A, 0x86, 0x29, 0x09, + 0x19, 0x8C, 0xC3, 0x3C, 0x8C, 0x4A, 0x29, 0x8F, 0x08, 0x29, 0xEB, 0x02, + 0x63, 0xD4, 0xAE, 0xEB, 0x94, 0xD2, 0x30, 0xCE, 0x94, 0x90, 0xE0, 0xC3, + 0x3C, 0x2F, 0x20, 0x03, 0x84, 0xE1, 0xF5, 0x3A, 0x50, 0x82, 0xAD, 0xF3, + 0x5A, 0x29, 0x63, 0x6C, 0x53, 0x17, 0xA7, 0x6E, 0xE4, 0x52, 0x66, 0x98, + 0x01, 0x48, 0x52, 0x4A, 0x4C, 0x28, 0xC2, 0xF0, 0x78, 0x3E, 0x43, 0x04, + 0xA5, 0xE4, 0x8C, 0x32, 0x21, 0x69, 0x51, 0x30, 0x42, 0x60, 0xD3, 0x54, + 0x10, 0x61, 0x67, 0x03, 0xC2, 0xD8, 0x3B, 0x17, 0x42, 0x40, 0x18, 0xA5, + 0x9C, 0x30, 0x46, 0x10, 0x81, 0xFC, 0x0D, 0xAD, 0xC2, 0x28, 0xE7, 0x94, + 0x41, 0xCA, 0x20, 0x53, 0xC6, 0x30, 0x46, 0x29, 0x58, 0xE7, 0xDD, 0xDD, + 0xDD, 0x77, 0x00, 0xA4, 0x14, 0xFD, 0xAA, 0xE2, 0xFB, 0x55, 0xB5, 0x5B, + 0x55, 0x4A, 0xA9, 0xE3, 0xE5, 0x1A, 0x53, 0x0C, 0xC1, 0x8F, 0x8B, 0x02, + 0x00, 0x62, 0x8C, 0x72, 0xCE, 0x5C, 0x14, 0x08, 0x21, 0x63, 0x6D, 0xCE, + 0x20, 0xE5, 0x84, 0x10, 0xD0, 0xD6, 0x61, 0x42, 0x16, 0x65, 0x18, 0x21, + 0x6D, 0x83, 0x62, 0x0A, 0xDE, 0xE5, 0x10, 0x03, 0xA3, 0x24, 0x84, 0x04, + 0x73, 0x0E, 0xD1, 0x59, 0x9F, 0x00, 0x00, 0xD6, 0xF9, 0x18, 0x53, 0x59, + 0xB6, 0x88, 0xF2, 0xED, 0x8A, 0x46, 0xFD, 0x9A, 0x12, 0x05, 0x19, 0x09, + 0x16, 0x63, 0xF4, 0x84, 0xC9, 0x69, 0xF1, 0xD6, 0x26, 0x63, 0x72, 0x8C, + 0x10, 0x61, 0x08, 0x51, 0x06, 0x39, 0xC7, 0x94, 0x01, 0x44, 0x5D, 0x6F, + 0xAA, 0x42, 0x70, 0x46, 0xE7, 0xC9, 0xEC, 0xB7, 0x35, 0x25, 0x04, 0x80, + 0xAC, 0xB4, 0x8D, 0x90, 0x32, 0x06, 0x31, 0x8A, 0x9C, 0x4B, 0x63, 0xB5, + 0xF3, 0xC6, 0x79, 0xDF, 0xAE, 0xDA, 0x87, 0x9B, 0xF6, 0x7C, 0x1E, 0xC6, + 0x79, 0xFA, 0xFC, 0xF5, 0x92, 0x23, 0xFA, 0xF2, 0xF5, 0x24, 0x8B, 0x3A, + 0x3A, 0x9F, 0x62, 0x82, 0x18, 0xF6, 0xFD, 0x92, 0x21, 0x0C, 0x01, 0x60, + 0x94, 0x27, 0x15, 0xA6, 0x79, 0xA4, 0x94, 0xED, 0xDB, 0x0A, 0x60, 0x3A, + 0x2B, 0xC7, 0x28, 0xA5, 0x84, 0x28, 0xAD, 0x63, 0x8C, 0x7F, 0xFC, 0xC3, + 0x1B, 0xA5, 0xEC, 0xDF, 0x7F, 0xFB, 0x92, 0x01, 0x24, 0x84, 0xDE, 0xEE, + 0x37, 0xAB, 0x75, 0x93, 0x42, 0x8C, 0x11, 0x7E, 0xFE, 0x7A, 0x7C, 0x7A, + 0xBD, 0x18, 0x1B, 0x8D, 0xB6, 0xE7, 0x4B, 0xD7, 0x8F, 0xDA, 0xDA, 0xAC, + 0x8C, 0x25, 0x0C, 0x2D, 0x8B, 0x7E, 0x3D, 0xF6, 0x2F, 0x2F, 0x3D, 0x65, + 0x9C, 0x12, 0xA4, 0x94, 0xFD, 0xC3, 0x1F, 0xDF, 0x2D, 0xD3, 0xF2, 0x72, + 0xBC, 0x5A, 0x17, 0x62, 0x4C, 0x21, 0x24, 0x48, 0x10, 0x63, 0xF4, 0xE3, + 0xE7, 0xD7, 0x7E, 0x34, 0x92, 0x0B, 0xB5, 0xA8, 0xC5, 0xB8, 0xB6, 0xAE, + 0xBD, 0x73, 0xE7, 0x6E, 0x19, 0x47, 0x43, 0x30, 0x0E, 0x21, 0x70, 0x82, + 0xB9, 0x60, 0xF3, 0xB4, 0xF8, 0x10, 0x21, 0x42, 0xF9, 0xFF, 0x4F, 0x57, + 0x29, 0x45, 0xC2, 0x30, 0xC1, 0xD8, 0xFB, 0xA8, 0xB5, 0xA5, 0x0C, 0xA7, + 0x0C, 0x95, 0xB1, 0xDA, 0x1A, 0xC1, 0xB9, 0xB1, 0xD6, 0x18, 0x67, 0x8D, + 0x6D, 0xDB, 0x42, 0x08, 0x2C, 0x39, 0x9B, 0xE6, 0x59, 0x2B, 0x37, 0x8F, + 0x6E, 0x9A, 0xF5, 0x38, 0x2D, 0xE3, 0xBC, 0x40, 0x00, 0x0A, 0x0A, 0x97, + 0xA9, 0x8B, 0x31, 0xCF, 0xB3, 0xAB, 0xAB, 0xDA, 0xB8, 0xA0, 0xAD, 0xC5, + 0x04, 0x23, 0x08, 0x27, 0x3D, 0x12, 0x8A, 0x7E, 0x78, 0xFB, 0xB6, 0xA9, + 0xAA, 0x42, 0xB2, 0xB7, 0xF7, 0x07, 0xE7, 0x52, 0x53, 0xD5, 0x65, 0x21, + 0x73, 0x0A, 0x31, 0xA6, 0x69, 0xD6, 0x00, 0xA6, 0x71, 0xD2, 0x4D, 0x53, + 0xE2, 0xFB, 0xC3, 0x76, 0x31, 0x66, 0xB5, 0xAA, 0xB4, 0x71, 0x04, 0x63, + 0x84, 0x50, 0x06, 0x79, 0x1A, 0x47, 0xC6, 0x68, 0x59, 0x14, 0x09, 0x80, + 0x71, 0x50, 0xD3, 0xA2, 0x65, 0x51, 0x3B, 0x17, 0x86, 0x61, 0xCC, 0x00, + 0xF8, 0x10, 0xBA, 0xEB, 0x68, 0xAC, 0x93, 0xA5, 0x34, 0xDE, 0x43, 0x9C, + 0x53, 0x8C, 0x5C, 0x88, 0x5A, 0x36, 0xCE, 0xA5, 0xCF, 0xAF, 0xAF, 0x19, + 0xE4, 0x94, 0x63, 0x3F, 0xCE, 0x29, 0xE5, 0x9C, 0xF3, 0xA8, 0x8C, 0x75, + 0x5E, 0x29, 0xF3, 0xE1, 0xD3, 0xD3, 0xF3, 0xD3, 0xB9, 0xA8, 0x8A, 0xE0, + 0xBC, 0x52, 0xD6, 0xDA, 0x30, 0x0E, 0x3A, 0xE7, 0x1C, 0xA3, 0xCB, 0x31, + 0xAE, 0x76, 0x6D, 0x0C, 0x99, 0x11, 0x96, 0x01, 0x48, 0x31, 0x7B, 0x1F, + 0x8B, 0x82, 0x51, 0x86, 0x5E, 0x5E, 0xCE, 0xF7, 0x0F, 0x37, 0xCE, 0xF8, + 0x9C, 0x53, 0xB3, 0xAE, 0xD7, 0xEB, 0x3A, 0x84, 0xE0, 0x43, 0xB4, 0xCE, + 0x07, 0xEF, 0xEB, 0x55, 0x75, 0x7A, 0xED, 0x9C, 0x0F, 0x39, 0x25, 0xE7, + 0x1C, 0x24, 0x38, 0xC3, 0xCC, 0x39, 0x59, 0x66, 0x57, 0x55, 0x25, 0xCC, + 0x71, 0xB5, 0x2A, 0x42, 0x48, 0x9B, 0xA6, 0x09, 0xDE, 0x11, 0x04, 0xFB, + 0x59, 0xF7, 0xA3, 0xC2, 0x98, 0xA1, 0xCC, 0xC7, 0xC1, 0x7C, 0xFC, 0x72, + 0x8E, 0x19, 0xF8, 0x10, 0xFB, 0x61, 0xD2, 0xCA, 0x3F, 0x3D, 0x5F, 0x94, + 0xD2, 0x5F, 0x3E, 0x5F, 0x17, 0x85, 0x8C, 0x57, 0xCA, 0x85, 0x65, 0x36, + 0x31, 0xF8, 0x61, 0x9E, 0x3F, 0xBF, 0x5E, 0x5D, 0x08, 0x4F, 0xC7, 0x59, + 0x69, 0x47, 0x41, 0x51, 0x0B, 0xF9, 0xCB, 0x6F, 0x9F, 0x97, 0x45, 0xE5, + 0x94, 0x21, 0x84, 0x4D, 0xC1, 0x09, 0xA5, 0x55, 0x29, 0x61, 0xF6, 0xFD, + 0x68, 0x4A, 0x29, 0x30, 0x40, 0xD7, 0x61, 0x7A, 0xF7, 0xDD, 0x9B, 0x42, + 0xD2, 0x10, 0xCC, 0x66, 0xD7, 0x70, 0x41, 0x64, 0x51, 0xEC, 0x0E, 0xEB, + 0x94, 0x7D, 0xDD, 0x14, 0xD3, 0xA4, 0x40, 0xCA, 0xE3, 0xA4, 0x00, 0xC8, + 0x10, 0xC1, 0x6F, 0x9F, 0xA4, 0xD6, 0x95, 0x2C, 0x0A, 0x3E, 0x8D, 0xCA, + 0x85, 0xE8, 0x43, 0x1A, 0xC7, 0xC5, 0x87, 0xE4, 0xAD, 0x77, 0xCE, 0x19, + 0xE3, 0x86, 0xC1, 0x62, 0x8C, 0x5F, 0xCF, 0x83, 0xF3, 0x3E, 0xC5, 0xA8, + 0x9D, 0xF7, 0x31, 0xC5, 0x08, 0x42, 0xCA, 0x80, 0x62, 0x6B, 0x5D, 0x77, + 0x5D, 0x5C, 0x48, 0xD6, 0x87, 0x61, 0x58, 0xBA, 0x6E, 0xBA, 0x9E, 0xA7, + 0x0C, 0x61, 0x30, 0x2E, 0xA6, 0x94, 0x00, 0x98, 0x95, 0x41, 0x14, 0x59, + 0xEB, 0x6F, 0x1F, 0x6E, 0x11, 0x82, 0xF5, 0xAA, 0xDE, 0xED, 0x37, 0x9B, + 0x6D, 0xDB, 0xB4, 0x35, 0x00, 0x70, 0x1C, 0x67, 0x98, 0x01, 0x17, 0xAC, + 0x92, 0xF2, 0x74, 0xED, 0x25, 0x67, 0x21, 0x44, 0x8C, 0x11, 0x40, 0xC8, + 0x27, 0x64, 0x9D, 0xA7, 0x94, 0x84, 0x10, 0x21, 0xA2, 0xCE, 0x98, 0xA6, + 0x6E, 0x73, 0xCE, 0x21, 0x84, 0x94, 0xB2, 0xB3, 0x8E, 0x52, 0x12, 0x7C, + 0x60, 0x5C, 0xF8, 0x90, 0xD5, 0xA2, 0x63, 0x8C, 0x29, 0x65, 0x00, 0x33, + 0xC6, 0x14, 0x42, 0x48, 0x08, 0x26, 0x18, 0x21, 0x04, 0x52, 0xCA, 0x52, + 0x72, 0x00, 0x72, 0xDB, 0x14, 0xA5, 0x64, 0xCB, 0xA2, 0x04, 0x23, 0x31, + 0xB8, 0x94, 0x81, 0x14, 0x32, 0xDA, 0xB9, 0x2C, 0x98, 0xA0, 0x6C, 0xBB, + 0xAE, 0x31, 0x04, 0x2F, 0xA7, 0x6E, 0x5A, 0x94, 0xE0, 0x9C, 0x50, 0xDC, + 0x0D, 0x73, 0x59, 0x14, 0x92, 0x51, 0x6D, 0xED, 0xA2, 0x96, 0x14, 0x83, + 0x36, 0x1A, 0x63, 0xBC, 0xAA, 0x2B, 0xEB, 0x9C, 0x94, 0x32, 0xE5, 0x4C, + 0x30, 0x72, 0xCE, 0x41, 0x08, 0x05, 0x63, 0xD7, 0x7E, 0x56, 0xD6, 0x53, + 0x80, 0xB4, 0xF5, 0x4D, 0x4B, 0x0F, 0x3B, 0xFE, 0x7A, 0x31, 0x10, 0x00, + 0x08, 0x80, 0x64, 0xF8, 0x87, 0xC7, 0xED, 0x6C, 0x51, 0x81, 0x07, 0x81, + 0x5E, 0xDB, 0xAA, 0x22, 0x88, 0x54, 0x32, 0x17, 0x12, 0xC7, 0xEC, 0x4F, + 0x9D, 0x41, 0x18, 0x03, 0x08, 0x11, 0x84, 0xC1, 0x27, 0x1F, 0xB2, 0x33, + 0x89, 0x33, 0x4A, 0x31, 0xF1, 0x11, 0xDF, 0xDF, 0xAD, 0x2A, 0x4E, 0xFE, + 0xF1, 0x2F, 0x7F, 0x7A, 0xB8, 0xBB, 0x79, 0xF7, 0x78, 0x7F, 0xD8, 0x6D, + 0xDA, 0xA6, 0x79, 0x7B, 0xBF, 0x7B, 0x7B, 0x7F, 0x38, 0xB4, 0x1B, 0x2E, + 0xA4, 0x36, 0xE1, 0x74, 0x1E, 0xDA, 0xAA, 0x41, 0x10, 0x7F, 0x7D, 0x7A, + 0x7D, 0x3D, 0x4D, 0xC7, 0xEB, 0xB4, 0xDF, 0xDD, 0x8C, 0xC3, 0xB4, 0x5E, + 0x55, 0x9B, 0xCD, 0x9A, 0x11, 0x52, 0x95, 0xD2, 0x87, 0x8C, 0x08, 0x9E, + 0x66, 0xDB, 0xF5, 0x0B, 0x97, 0xEC, 0x32, 0x1B, 0xAF, 0x15, 0x86, 0xFE, + 0x3A, 0x4E, 0xE7, 0x73, 0x97, 0x72, 0xF0, 0x21, 0xC5, 0xE8, 0x8C, 0xB3, + 0x18, 0x93, 0xAA, 0x92, 0x54, 0x30, 0x21, 0xC5, 0xE5, 0x3A, 0x60, 0x84, + 0xDA, 0xBA, 0xCC, 0x39, 0x2B, 0xAB, 0x5F, 0x5F, 0xCF, 0x19, 0x64, 0x6D, + 0x1C, 0xA3, 0x38, 0xF8, 0x18, 0x52, 0x2E, 0x8B, 0x72, 0x98, 0xA6, 0xB6, + 0xA9, 0xEA, 0xAA, 0x70, 0xD6, 0x0D, 0x93, 0xBA, 0xF6, 0x8A, 0x12, 0x8A, + 0x11, 0xDA, 0x6E, 0xD6, 0xCE, 0xFA, 0xA2, 0x92, 0xC3, 0x38, 0x5B, 0xAB, + 0x19, 0x43, 0xD3, 0x6C, 0xCA, 0x92, 0x53, 0x8C, 0xAD, 0xCD, 0x42, 0xCA, + 0x94, 0x82, 0xD6, 0x16, 0x00, 0xB4, 0x6D, 0x5B, 0xEB, 0xF3, 0xF1, 0xDA, + 0x39, 0xE7, 0x01, 0x00, 0x8C, 0x12, 0x82, 0x61, 0x48, 0xA9, 0x2C, 0x8B, + 0x14, 0x23, 0xC1, 0x24, 0xE7, 0x1C, 0x43, 0x62, 0x94, 0x22, 0x0C, 0x25, + 0x25, 0xAB, 0xBA, 0x38, 0xF7, 0x63, 0xCC, 0xA9, 0xA9, 0x1B, 0x63, 0xCD, + 0x3C, 0x4F, 0x8C, 0x71, 0xE7, 0xC2, 0xAC, 0x94, 0x8F, 0x51, 0x4A, 0x2A, + 0x24, 0x65, 0x38, 0x48, 0x0A, 0x86, 0x39, 0x58, 0xE3, 0x87, 0x59, 0xC7, + 0x14, 0x09, 0x41, 0x94, 0xC0, 0x55, 0x53, 0x2C, 0x4A, 0x0F, 0x93, 0xCB, + 0x09, 0xC8, 0xB2, 0x7C, 0xBD, 0x2E, 0xCE, 0xE7, 0xF5, 0xA6, 0xD1, 0xDA, + 0xCD, 0xCA, 0xDC, 0x6C, 0x36, 0x3F, 0xFF, 0xF0, 0x27, 0x8C, 0x0A, 0x21, + 0x24, 0xA5, 0x0C, 0x23, 0x26, 0x44, 0x55, 0x88, 0x92, 0x73, 0x9E, 0x32, + 0xB8, 0xBD, 0xDD, 0x59, 0x17, 0xC7, 0x71, 0x5A, 0x8C, 0x35, 0x2E, 0xE0, + 0x52, 0x0A, 0xEB, 0x82, 0xF7, 0xBE, 0x2C, 0xE5, 0xA2, 0xCC, 0xA5, 0xEB, + 0xA6, 0x69, 0xC8, 0x10, 0x16, 0xB2, 0x1A, 0xA6, 0xD1, 0x5B, 0x3F, 0xCE, + 0x93, 0x90, 0x0C, 0x61, 0x32, 0x4C, 0x43, 0x88, 0x3E, 0x82, 0x44, 0x29, + 0xC9, 0x09, 0xB4, 0x4D, 0x19, 0x63, 0x38, 0x9D, 0x7A, 0x6B, 0x5D, 0x4A, + 0x09, 0x02, 0xBC, 0xA8, 0x48, 0x09, 0x5D, 0xAD, 0x6B, 0xE3, 0xBC, 0xCF, + 0xD9, 0x79, 0x3F, 0x4D, 0x0B, 0x26, 0xDC, 0x58, 0xAD, 0x94, 0x31, 0xDA, + 0x2A, 0xA5, 0x43, 0xCA, 0xDE, 0xC5, 0xD3, 0xA9, 0x5B, 0x94, 0x4D, 0x31, + 0x85, 0x10, 0x52, 0x8A, 0xD6, 0x58, 0x63, 0xC3, 0xB2, 0x98, 0xE0, 0x43, + 0x3F, 0xCE, 0x55, 0x5D, 0x61, 0x88, 0xB6, 0x9B, 0x7A, 0xB7, 0xAE, 0xDF, + 0xBD, 0xDD, 0x5A, 0xED, 0x2E, 0xC3, 0x74, 0xB9, 0xF6, 0xD3, 0xAC, 0x10, + 0xC2, 0x4A, 0x59, 0x80, 0xA0, 0x56, 0x9A, 0x09, 0xEE, 0x5D, 0x38, 0x9F, + 0xFB, 0x94, 0x93, 0xD1, 0x26, 0x04, 0xB7, 0xDD, 0xDD, 0x10, 0x26, 0x41, + 0x74, 0x37, 0x87, 0xED, 0x3F, 0xFC, 0xE9, 0xFB, 0xA6, 0xAE, 0x0F, 0xB7, + 0xEB, 0xB7, 0x6F, 0x6E, 0xA3, 0x87, 0x10, 0x30, 0xA5, 0xFC, 0x34, 0xDB, + 0x61, 0xD2, 0x8B, 0x4A, 0xCF, 0xC7, 0x69, 0x99, 0xE3, 0x6E, 0xD5, 0xCE, + 0xCE, 0x4F, 0xB3, 0xA1, 0x8C, 0xEE, 0x6F, 0x76, 0x9F, 0xBF, 0x5C, 0xFA, + 0x69, 0xC6, 0x14, 0x8E, 0x2A, 0x68, 0x93, 0xAC, 0xD3, 0x00, 0x62, 0x18, + 0x53, 0x21, 0xD8, 0x4B, 0xB7, 0x58, 0x1B, 0x32, 0x20, 0x31, 0x82, 0x0C, + 0xE8, 0x6E, 0x55, 0x75, 0x57, 0xF5, 0x7A, 0x1E, 0x0F, 0x9B, 0x56, 0xCF, + 0x33, 0xA3, 0x59, 0x19, 0xEF, 0x9C, 0xCF, 0x29, 0x5A, 0x9F, 0xBD, 0x8F, + 0x29, 0x26, 0x00, 0x41, 0x55, 0x88, 0x87, 0xFB, 0xCD, 0xCD, 0x4D, 0xBD, + 0xBF, 0x6B, 0x9B, 0x4D, 0xF3, 0xE6, 0xBB, 0x87, 0xED, 0x61, 0x2D, 0x4B, + 0xF1, 0xF6, 0xF1, 0xE6, 0xE6, 0x66, 0x7B, 0x73, 0xBB, 0xBA, 0xBB, 0x5B, + 0x13, 0x8C, 0xBC, 0x0B, 0x4A, 0x99, 0xED, 0xA6, 0xBC, 0xDF, 0x6F, 0xA6, + 0x79, 0x99, 0x17, 0x37, 0x2D, 0x1A, 0x42, 0xE0, 0x7C, 0x34, 0x26, 0xC4, + 0x10, 0x09, 0xC1, 0x31, 0x26, 0xCE, 0x29, 0x61, 0x14, 0x61, 0x78, 0xBE, + 0xF4, 0x97, 0xEB, 0xAC, 0x8D, 0x83, 0x08, 0xCD, 0xCA, 0x3F, 0x9F, 0xFA, + 0x61, 0xD2, 0x5A, 0xB9, 0xF3, 0x79, 0x5E, 0x94, 0x45, 0x18, 0xC5, 0x94, + 0xF4, 0x62, 0x21, 0x44, 0x3E, 0xA4, 0x9C, 0x22, 0x21, 0x38, 0xFA, 0x14, + 0x7C, 0xA0, 0x9C, 0x84, 0x10, 0x43, 0x4C, 0xC3, 0x30, 0x41, 0x88, 0x30, + 0x21, 0xFD, 0x30, 0x82, 0x0C, 0x39, 0xA7, 0x87, 0x9B, 0x1D, 0xA5, 0xB8, + 0xEB, 0x47, 0x4E, 0x48, 0xCA, 0xC9, 0x87, 0x88, 0x10, 0x0C, 0x31, 0x02, + 0x00, 0x64, 0xC1, 0xA7, 0x45, 0x87, 0x10, 0x8D, 0xB1, 0x29, 0x01, 0x67, + 0xBD, 0x60, 0x5C, 0xF0, 0xB2, 0x1F, 0xFA, 0x7E, 0x18, 0x63, 0xCC, 0x10, + 0x82, 0x94, 0x30, 0xA5, 0x4C, 0xF0, 0xE2, 0xEB, 0xD7, 0xE7, 0x10, 0x02, + 0x67, 0x2C, 0xE5, 0x8C, 0x10, 0x86, 0x10, 0x10, 0x4C, 0xBC, 0xF7, 0x00, + 0x00, 0x42, 0x48, 0x4C, 0x19, 0x21, 0x08, 0x00, 0xD8, 0x6E, 0xEA, 0xBA, + 0x12, 0xA5, 0xA0, 0xCE, 0x85, 0x92, 0x73, 0x82, 0x31, 0x01, 0xC1, 0x7B, + 0x13, 0x42, 0xD2, 0x1E, 0x14, 0x52, 0x1A, 0xE7, 0xFB, 0x49, 0x3D, 0xDC, + 0xEE, 0xBD, 0x0F, 0x04, 0xE3, 0xDD, 0x6E, 0xD5, 0x36, 0x55, 0x8A, 0x31, + 0x86, 0x88, 0x11, 0x4A, 0x29, 0x41, 0x08, 0x73, 0x06, 0xF1, 0xDB, 0x26, + 0x44, 0x4E, 0xF3, 0xB2, 0x50, 0x82, 0x62, 0x0C, 0xD6, 0x05, 0x0C, 0xC9, + 0x69, 0x98, 0x00, 0x00, 0xAB, 0x5A, 0x50, 0x82, 0x01, 0x89, 0x55, 0x49, + 0xAD, 0xC9, 0x8C, 0x22, 0x63, 0xD3, 0x8F, 0x6F, 0xF7, 0x37, 0x87, 0xFD, + 0x32, 0x5F, 0x09, 0x58, 0xFE, 0xF8, 0xEE, 0x4F, 0x45, 0xB5, 0xDA, 0xAD, + 0x2A, 0x4A, 0x79, 0x46, 0xD8, 0x7A, 0xB4, 0x5B, 0xB7, 0xEB, 0x8A, 0x13, + 0x9C, 0xAF, 0x57, 0x03, 0x00, 0xA0, 0x94, 0xB4, 0x8D, 0x58, 0xD7, 0xAC, + 0xAE, 0xE5, 0x6E, 0x53, 0xED, 0xDB, 0xF2, 0xFB, 0xC7, 0x37, 0xEB, 0xF5, + 0x1A, 0x21, 0x60, 0x8D, 0x85, 0x00, 0xE8, 0xD1, 0x30, 0x4A, 0x73, 0x4E, + 0x8C, 0xD5, 0xAB, 0x76, 0xDD, 0xB6, 0x75, 0x59, 0x16, 0xB7, 0xFB, 0xFD, + 0x38, 0xF4, 0x82, 0x72, 0x4C, 0x88, 0x94, 0x75, 0x3F, 0x0C, 0x08, 0x66, + 0xC1, 0xD9, 0x64, 0xE6, 0x94, 0x03, 0x63, 0x66, 0x9A, 0x43, 0x0C, 0x71, + 0xDD, 0x96, 0x05, 0x27, 0x11, 0xE4, 0xE0, 0x5C, 0x21, 0x28, 0x23, 0xD9, + 0xF8, 0xC4, 0x99, 0x34, 0xCA, 0xFA, 0x10, 0x10, 0x86, 0x08, 0xE3, 0xF5, + 0xAA, 0xFD, 0xF5, 0xFD, 0xF3, 0x38, 0x2D, 0xFB, 0x7D, 0x5B, 0x48, 0x59, + 0x0A, 0xD6, 0x36, 0xC5, 0xF5, 0x72, 0x89, 0xD1, 0xBD, 0x7B, 0x3C, 0xFC, + 0xF4, 0xFD, 0x9B, 0x79, 0x5E, 0xDE, 0xDC, 0xEF, 0x87, 0x71, 0x06, 0x10, + 0xFE, 0xF0, 0xDD, 0xE3, 0x2F, 0xEF, 0x3F, 0xFA, 0x10, 0x52, 0x4A, 0x10, + 0x91, 0xA6, 0x5D, 0x2F, 0x6A, 0xF2, 0xD1, 0x95, 0x75, 0x09, 0x21, 0xBC, + 0x5E, 0x87, 0xA2, 0x10, 0x52, 0x92, 0x9B, 0x9B, 0xCD, 0xE1, 0x66, 0xBF, + 0x5A, 0x37, 0x6D, 0x5B, 0x8A, 0x42, 0x18, 0xEB, 0x11, 0xCA, 0xE3, 0x38, + 0x75, 0xC3, 0xB2, 0x5D, 0xD5, 0x9C, 0x93, 0xCB, 0xB8, 0x0C, 0xB3, 0xB2, + 0x56, 0x13, 0x4C, 0x39, 0xA5, 0x10, 0x24, 0xC6, 0x05, 0xCC, 0x89, 0x62, + 0x72, 0xB9, 0x8E, 0x8B, 0x36, 0x75, 0x59, 0x16, 0x42, 0x80, 0x14, 0x6F, + 0xD6, 0xD5, 0x75, 0x50, 0x00, 0x42, 0x63, 0x2D, 0xC6, 0xD4, 0x39, 0xFB, + 0x6D, 0x9D, 0x9E, 0x60, 0x08, 0x20, 0x20, 0x08, 0x73, 0x41, 0xC6, 0xC5, + 0x2C, 0x8B, 0xF5, 0xDE, 0xC7, 0x04, 0x31, 0x84, 0x31, 0x65, 0x42, 0x18, + 0x41, 0x50, 0x72, 0x5A, 0x95, 0x85, 0xB5, 0x3E, 0x24, 0x34, 0xCE, 0x66, + 0xD1, 0x66, 0x54, 0xC6, 0xDA, 0x28, 0xB9, 0x30, 0x46, 0x79, 0x9F, 0x7F, + 0x7A, 0xFB, 0x96, 0x20, 0x3A, 0x2B, 0x73, 0xE9, 0x26, 0xE7, 0xC3, 0xB9, + 0x1B, 0x7E, 0xFB, 0xFC, 0x72, 0x19, 0x96, 0x4B, 0x3F, 0x64, 0x04, 0x39, + 0x17, 0x95, 0xAC, 0x10, 0x46, 0xB3, 0x32, 0x8B, 0x76, 0xB0, 0x2E, 0xEB, + 0xBA, 0x12, 0x8C, 0x91, 0x9C, 0xD1, 0xB4, 0xD8, 0x65, 0x51, 0x45, 0x21, + 0xAC, 0x33, 0x00, 0x20, 0xC6, 0x88, 0xE4, 0xEC, 0xF5, 0x78, 0x6E, 0xDA, + 0xBA, 0xA9, 0x2B, 0xC6, 0xD0, 0x38, 0x4E, 0x08, 0x21, 0x84, 0x71, 0x8A, + 0xD0, 0x3B, 0xDF, 0xAE, 0x0A, 0x00, 0x40, 0x4C, 0x81, 0x33, 0xC6, 0x18, + 0x0B, 0x3E, 0xE9, 0x59, 0x11, 0xC1, 0x30, 0x63, 0x29, 0x26, 0xA5, 0xD4, + 0xE5, 0xDC, 0xAF, 0x57, 0xFB, 0x79, 0x9E, 0xAC, 0x33, 0x37, 0xFB, 0xB5, + 0x14, 0x12, 0x62, 0x7C, 0x3E, 0x77, 0xD7, 0xEE, 0x8A, 0x31, 0xB9, 0xBF, + 0xD9, 0xE7, 0x94, 0xAA, 0x5A, 0x10, 0x42, 0x40, 0xC4, 0xBB, 0xDD, 0xEA, + 0x7A, 0xBD, 0x3A, 0x17, 0x20, 0xA1, 0x8C, 0x90, 0xA6, 0x16, 0xF0, 0xDB, + 0x70, 0x5D, 0xB4, 0xFF, 0xFD, 0x6F, 0xBF, 0xD4, 0x4D, 0xC5, 0x08, 0xD3, + 0xCA, 0x61, 0x82, 0x9A, 0xB6, 0x8C, 0x31, 0xA4, 0x98, 0xA7, 0x59, 0xF7, + 0xC3, 0x74, 0xD8, 0x35, 0x8C, 0x92, 0xAE, 0x9B, 0x6E, 0x1E, 0x7E, 0xF8, + 0xE7, 0x7F, 0xFA, 0xD3, 0xDD, 0x86, 0xFC, 0xCB, 0xBF, 0xFD, 0x7B, 0x21, + 0x4B, 0xE7, 0x20, 0xC6, 0x8E, 0x12, 0x04, 0x32, 0x9E, 0x16, 0xBB, 0xCC, + 0x7A, 0x53, 0x4A, 0x88, 0xF1, 0xFF, 0xF5, 0x2F, 0x7F, 0x53, 0xC6, 0x4A, + 0x46, 0x7E, 0xFE, 0xFE, 0xFE, 0xEB, 0x45, 0xAD, 0xDA, 0x8A, 0x92, 0x2C, + 0x0B, 0xA1, 0x94, 0xBE, 0xBF, 0xDF, 0x65, 0x10, 0x52, 0x16, 0xF3, 0x34, + 0xFC, 0xFE, 0xFB, 0xE7, 0x9C, 0xD1, 0xB6, 0x95, 0x29, 0xE7, 0xCF, 0xAF, + 0x5D, 0x0C, 0x29, 0xC6, 0x20, 0x38, 0x26, 0x98, 0xAC, 0x9B, 0x02, 0x03, + 0x48, 0x45, 0xD1, 0xD6, 0xF4, 0x72, 0x3E, 0x6D, 0xD6, 0xAD, 0xB6, 0xA9, + 0x1F, 0xA7, 0x3F, 0xFD, 0xF8, 0xF8, 0x70, 0xBF, 0x1B, 0xE7, 0xC5, 0xF9, + 0x58, 0xB7, 0x75, 0xD7, 0xF5, 0x85, 0x2C, 0x10, 0x00, 0x97, 0x7E, 0x98, + 0x67, 0x0B, 0x31, 0xCE, 0x00, 0x62, 0x4C, 0xAC, 0x31, 0x94, 0x90, 0xB2, + 0xAE, 0x60, 0xF2, 0x6D, 0x53, 0x5A, 0x1F, 0x57, 0x05, 0xDF, 0xB5, 0xD5, + 0xBF, 0xFD, 0xFB, 0x07, 0xC0, 0xF0, 0x6F, 0x1F, 0x5E, 0x43, 0xF0, 0x43, + 0xAF, 0x28, 0x86, 0x5C, 0xD0, 0x10, 0xD2, 0x6E, 0x57, 0x53, 0xCE, 0xA6, + 0x51, 0x7B, 0x17, 0x9C, 0x0B, 0x94, 0x62, 0xC6, 0x88, 0xD5, 0xB6, 0x90, + 0x62, 0x5A, 0x0C, 0x25, 0x48, 0x6B, 0x1B, 0x12, 0x28, 0x0B, 0x91, 0x01, + 0x80, 0x20, 0x8B, 0x82, 0x33, 0x41, 0x01, 0x84, 0x39, 0x65, 0x4A, 0x30, + 0x46, 0x18, 0x20, 0x64, 0xAD, 0xCF, 0x19, 0x58, 0xEB, 0x01, 0xC6, 0xCE, + 0xF9, 0xA2, 0x90, 0x18, 0x23, 0xAD, 0x2D, 0x04, 0x00, 0x21, 0x04, 0x53, + 0x6C, 0x9B, 0x22, 0xC4, 0x34, 0xF7, 0x53, 0x37, 0xCC, 0xC6, 0xA5, 0x10, + 0x93, 0x64, 0x64, 0xD3, 0x56, 0xDA, 0xB9, 0x4B, 0x3F, 0x23, 0x8C, 0x41, + 0x4E, 0x9C, 0x51, 0x84, 0xF0, 0x7F, 0xFD, 0xCF, 0x3F, 0x77, 0x43, 0xA7, + 0xCC, 0xD2, 0x75, 0x66, 0x5C, 0xDC, 0xA2, 0x74, 0xCE, 0xB1, 0x2A, 0x4A, + 0xC2, 0x58, 0xF0, 0xB6, 0x14, 0xCC, 0x87, 0xE4, 0x63, 0x8A, 0x31, 0x84, + 0x10, 0x01, 0x84, 0x39, 0x03, 0x8C, 0x60, 0xCC, 0x19, 0x64, 0x80, 0x50, + 0x86, 0x10, 0x51, 0x82, 0xF6, 0xFB, 0x66, 0xDF, 0x4A, 0x63, 0x73, 0x5D, + 0x54, 0x2E, 0xE4, 0x65, 0xE8, 0x10, 0x46, 0xB3, 0xC3, 0xB3, 0x0E, 0xFB, + 0x4D, 0x9D, 0xA2, 0x4B, 0x21, 0x14, 0x85, 0x78, 0xFF, 0xF9, 0x49, 0x0A, + 0xB9, 0x5B, 0x37, 0xFD, 0x38, 0x0D, 0xC3, 0x88, 0x31, 0x46, 0x08, 0x3A, + 0xEF, 0x21, 0x84, 0xC6, 0x85, 0x4A, 0xCA, 0xBB, 0xC3, 0x5E, 0x0A, 0x81, + 0x10, 0x86, 0x00, 0x22, 0x0C, 0x72, 0xB2, 0xCE, 0x8E, 0x9F, 0x8E, 0xE3, + 0x3C, 0xDB, 0x7F, 0xFE, 0xF9, 0x91, 0x60, 0x8B, 0x49, 0xC4, 0xD8, 0x9B, + 0x94, 0x5F, 0x4E, 0x3E, 0x46, 0x7C, 0x7F, 0xD8, 0x56, 0x3C, 0xDF, 0xAC, + 0x6F, 0xAC, 0x4B, 0x52, 0xC8, 0xE3, 0xE5, 0x92, 0x72, 0xE4, 0xA2, 0xC8, + 0x08, 0x52, 0x4E, 0x09, 0x81, 0x98, 0x90, 0x14, 0xD3, 0xE9, 0xDC, 0xA5, + 0x9C, 0x29, 0x23, 0x20, 0x01, 0x6F, 0x16, 0xCE, 0x38, 0xCA, 0x01, 0x00, + 0xB0, 0xD9, 0xDD, 0x1E, 0x2F, 0x97, 0x79, 0x9E, 0x63, 0x86, 0x6D, 0x2B, + 0x9B, 0xA2, 0xB8, 0x5E, 0xF4, 0xDD, 0xE3, 0x21, 0x86, 0x18, 0x53, 0x4A, + 0x29, 0xD5, 0x75, 0x2D, 0x24, 0x1F, 0x2E, 0x57, 0x3D, 0x4D, 0x83, 0xC9, + 0x19, 0xD2, 0x8F, 0x9F, 0x3F, 0x1F, 0xD6, 0xB2, 0xAA, 0x8B, 0xA7, 0xD3, + 0x85, 0x90, 0xFC, 0xF4, 0x34, 0x3D, 0xDC, 0xDC, 0x10, 0x18, 0x04, 0x83, + 0x8C, 0xB3, 0xD9, 0x00, 0x86, 0x42, 0x4A, 0x61, 0x52, 0xAA, 0x28, 0xDA, + 0xA1, 0x37, 0x9C, 0xB3, 0x9B, 0xC3, 0x56, 0x6B, 0x93, 0x52, 0xD2, 0x2E, + 0xBE, 0x9E, 0xE7, 0xC3, 0xAE, 0xE1, 0x04, 0x70, 0xC1, 0x8E, 0xE7, 0x81, + 0x12, 0x52, 0x70, 0xC6, 0x38, 0x66, 0x18, 0xA7, 0x94, 0xF7, 0xFB, 0x03, + 0x41, 0x68, 0x9C, 0xB4, 0x8F, 0x09, 0x24, 0x8F, 0x29, 0xCA, 0x00, 0xFC, + 0xF2, 0xFB, 0x57, 0xCE, 0xCB, 0x71, 0x59, 0x2E, 0xD7, 0xCB, 0x6A, 0x55, + 0xBD, 0x7B, 0xF7, 0xC6, 0x6A, 0x3B, 0x4D, 0xEA, 0xCD, 0xDD, 0xAE, 0x2E, + 0x79, 0x55, 0xC9, 0x18, 0x5D, 0x88, 0x5E, 0x94, 0x55, 0xCA, 0x28, 0x38, + 0x1F, 0x53, 0xEC, 0xBB, 0xEB, 0xE5, 0x75, 0xCC, 0x20, 0xF6, 0x93, 0x5A, + 0xD5, 0x1B, 0x4C, 0xBE, 0xA1, 0x69, 0x14, 0xE4, 0xF8, 0xDD, 0xE3, 0x0D, + 0x2B, 0x85, 0x1A, 0x4C, 0x37, 0xCE, 0x4F, 0xCF, 0xD7, 0x61, 0x9C, 0x77, + 0xEB, 0x76, 0x98, 0x97, 0xBB, 0xDD, 0x1A, 0xE4, 0x1C, 0x52, 0xDE, 0x6D, + 0x56, 0xFF, 0xF2, 0xB7, 0x5F, 0x72, 0x86, 0xD6, 0x19, 0xC6, 0x78, 0x2D, + 0x45, 0x4A, 0x39, 0xA6, 0x98, 0x72, 0x8E, 0xC9, 0x71, 0x46, 0x2B, 0x21, + 0x72, 0x4E, 0xCA, 0x04, 0x00, 0x60, 0x53, 0xD5, 0x85, 0x14, 0x5A, 0xCF, + 0x19, 0x78, 0x0C, 0xB1, 0x52, 0xAE, 0x69, 0x0A, 0x65, 0x9D, 0xB6, 0x51, + 0x16, 0xC5, 0xB5, 0x5F, 0xCA, 0x42, 0x52, 0x9C, 0x09, 0x44, 0x77, 0xDB, + 0x4D, 0xCE, 0x59, 0xC8, 0x72, 0x18, 0x27, 0xCA, 0x88, 0x32, 0xCE, 0xF8, + 0x14, 0x62, 0x04, 0x20, 0x72, 0x46, 0x24, 0x17, 0x82, 0xF3, 0xCD, 0xAA, + 0x3A, 0x5D, 0x4E, 0xBF, 0x7D, 0x7A, 0x82, 0x77, 0x37, 0x07, 0xC9, 0x59, + 0x8C, 0x61, 0x56, 0xC6, 0x47, 0xE4, 0x9D, 0x5B, 0xAF, 0xAB, 0x6F, 0xBA, + 0x16, 0xA5, 0x74, 0x18, 0x27, 0x63, 0x2C, 0x17, 0xA2, 0x94, 0x05, 0xA3, + 0x40, 0x29, 0x9D, 0x21, 0x52, 0x8B, 0xF9, 0x7F, 0x59, 0x7A, 0x8F, 0x25, + 0xCB, 0xB2, 0xEC, 0x4C, 0x6F, 0xEB, 0xBD, 0x8F, 0x3E, 0xE7, 0x4A, 0x77, + 0x0F, 0xE1, 0x21, 0x32, 0xB3, 0x2A, 0x4B, 0xA0, 0x0A, 0x20, 0x80, 0x26, + 0x8D, 0x34, 0xA3, 0xF5, 0x94, 0xC3, 0x1E, 0x70, 0xC6, 0x07, 0xE0, 0x43, + 0xD2, 0x38, 0xE1, 0x80, 0x66, 0xB4, 0x46, 0xA3, 0x40, 0xA0, 0x80, 0x94, + 0x11, 0x19, 0x11, 0x2E, 0xAF, 0x3A, 0x72, 0x6B, 0xC1, 0x41, 0xF2, 0x29, + 0xD6, 0xB2, 0x5F, 0x7C, 0x3F, 0xC2, 0xD8, 0x79, 0x5F, 0xE4, 0x19, 0x82, + 0x30, 0xCB, 0x99, 0xB7, 0xAE, 0x2A, 0x73, 0xA3, 0xED, 0xA2, 0xB4, 0x10, + 0x0C, 0x40, 0x88, 0x31, 0x9E, 0xA6, 0x85, 0x51, 0x66, 0x7D, 0x34, 0xC6, + 0x8B, 0x4C, 0x54, 0x85, 0x40, 0x00, 0x03, 0x00, 0x21, 0x00, 0x8C, 0x41, + 0xC6, 0xB0, 0xF5, 0x60, 0x9C, 0x97, 0xA2, 0xE4, 0xFF, 0xE9, 0x0F, 0x5F, + 0x43, 0x48, 0x3E, 0xDE, 0x1F, 0x7E, 0xFA, 0xF0, 0xB9, 0xAA, 0x8B, 0x32, + 0xE3, 0x8B, 0xB4, 0xC3, 0x24, 0x73, 0x2E, 0x6E, 0x6E, 0xD6, 0x10, 0x86, + 0x61, 0x9A, 0xA5, 0xD2, 0x10, 0xE2, 0xAC, 0xC8, 0x30, 0x22, 0xE7, 0xC3, + 0x89, 0x10, 0x1C, 0x63, 0x04, 0x00, 0xD4, 0x75, 0x3E, 0x8C, 0xA3, 0xD2, + 0x06, 0x44, 0xF0, 0x0F, 0x7F, 0xFA, 0xD3, 0xBB, 0x3F, 0xFC, 0xC3, 0xBF, + 0xFC, 0xD7, 0xFF, 0xE3, 0xDC, 0x1F, 0xB2, 0x62, 0x93, 0x82, 0x11, 0x14, + 0x02, 0x00, 0x10, 0x82, 0x3E, 0xA6, 0x32, 0x2F, 0x1A, 0xC1, 0x2F, 0xCA, + 0x3E, 0x9E, 0x96, 0xBE, 0x9F, 0x9D, 0x1C, 0xAC, 0xB1, 0xDD, 0xF6, 0xC5, + 0xEB, 0x17, 0xDB, 0xE0, 0x35, 0xE3, 0x02, 0x82, 0x84, 0x09, 0x12, 0x82, + 0x41, 0x52, 0xC1, 0xD4, 0xFF, 0xFC, 0xE1, 0xDE, 0xF9, 0x18, 0xBC, 0xEB, + 0xFB, 0xE9, 0xD4, 0xCF, 0x31, 0xC2, 0x52, 0x90, 0xF5, 0xA6, 0xF6, 0x1E, + 0x58, 0xA5, 0x6F, 0x6F, 0xD6, 0x65, 0x55, 0x7E, 0xB8, 0x7F, 0x5A, 0x55, + 0xA2, 0x2C, 0x0B, 0x6B, 0xDC, 0x7A, 0xD5, 0xBE, 0x79, 0xB3, 0x9D, 0x67, + 0x89, 0x29, 0x8E, 0x00, 0x00, 0x88, 0x01, 0x82, 0x63, 0xBF, 0x40, 0x04, + 0x2F, 0xE3, 0xF2, 0xF9, 0xF3, 0x31, 0x45, 0xF0, 0xEB, 0x36, 0x2A, 0xC2, + 0x08, 0x01, 0x90, 0x09, 0xE1, 0xB4, 0x2C, 0x72, 0x5E, 0x94, 0xD5, 0x6E, + 0xDD, 0x22, 0x00, 0x5C, 0xF0, 0x59, 0x2E, 0xC6, 0x69, 0xC1, 0x20, 0xA5, + 0x90, 0x20, 0x4A, 0xC6, 0xD8, 0xB2, 0xCA, 0xEA, 0xAE, 0xBD, 0x5C, 0x86, + 0xA7, 0xA7, 0x8B, 0xF3, 0xDE, 0x3B, 0x0F, 0x21, 0xF6, 0xDE, 0x2A, 0x65, + 0xFA, 0x41, 0x4B, 0x65, 0x32, 0x41, 0x04, 0xE7, 0x00, 0xA0, 0xBA, 0xC9, + 0x05, 0x23, 0x31, 0xFA, 0x2C, 0xE3, 0x79, 0x91, 0x01, 0x90, 0x22, 0x00, + 0x97, 0x7E, 0x0E, 0x2E, 0x26, 0x04, 0x8D, 0x73, 0x72, 0xB1, 0x10, 0x00, + 0x4C, 0xA9, 0x75, 0x1E, 0x83, 0xE4, 0x7C, 0x74, 0xCE, 0x13, 0xC6, 0x40, + 0x4A, 0x0C, 0xC3, 0xAB, 0xAB, 0x15, 0xA1, 0x64, 0xD5, 0x35, 0x1F, 0x7E, + 0xFA, 0x72, 0xEE, 0x17, 0x08, 0x61, 0xC6, 0x28, 0x82, 0x89, 0x30, 0xB6, + 0x5A, 0x57, 0x18, 0xA3, 0xF5, 0xAA, 0x4A, 0x29, 0x20, 0x98, 0xD6, 0xEB, + 0x26, 0x86, 0x44, 0x09, 0x76, 0xCE, 0x3F, 0x1F, 0xFA, 0x51, 0xFA, 0xFB, + 0xFB, 0xD3, 0xAA, 0x6D, 0xB4, 0x92, 0xD3, 0xAC, 0x0F, 0xA7, 0x1E, 0x61, + 0x1C, 0x12, 0xB4, 0xD6, 0x01, 0x10, 0x21, 0xC2, 0x9C, 0x92, 0x6F, 0xBF, + 0xDA, 0x26, 0x04, 0x86, 0x5E, 0x7A, 0xE7, 0x7F, 0xFA, 0x74, 0x84, 0x10, + 0xB6, 0x95, 0xD8, 0xAF, 0xAB, 0x32, 0x2F, 0xE7, 0xC5, 0x04, 0x1F, 0xEB, + 0x9C, 0x46, 0x88, 0x74, 0x60, 0x77, 0x4F, 0xCF, 0xFB, 0x6D, 0x47, 0x31, + 0xD2, 0x52, 0x4A, 0xAD, 0x13, 0x44, 0x5A, 0x19, 0x21, 0x84, 0x71, 0x66, + 0x9A, 0x97, 0xFD, 0x7A, 0x85, 0x10, 0x7A, 0x3A, 0x9D, 0x76, 0xAB, 0x2E, + 0xE7, 0x3C, 0xCF, 0x72, 0x08, 0x51, 0x4C, 0x20, 0xCB, 0x72, 0x63, 0x2D, + 0x42, 0x11, 0xE2, 0x65, 0x5E, 0x46, 0xE7, 0x53, 0x57, 0xD4, 0x9B, 0x66, + 0xFD, 0x74, 0x78, 0x94, 0x7A, 0xD1, 0xC1, 0x29, 0x1F, 0x7C, 0x4C, 0x6D, + 0x93, 0x21, 0x88, 0xFF, 0xF8, 0xF6, 0x36, 0xA7, 0x75, 0x08, 0xE9, 0xEE, + 0xF1, 0x71, 0x52, 0x2A, 0x01, 0xCC, 0x29, 0xF3, 0xC1, 0xF3, 0x8C, 0x86, + 0xE8, 0xBA, 0x75, 0x6B, 0x75, 0x70, 0xD6, 0x11, 0x02, 0x39, 0x63, 0x45, + 0x2E, 0x70, 0x8A, 0x14, 0x23, 0xE3, 0xAD, 0xB5, 0xE0, 0xFE, 0xE9, 0x74, + 0xEC, 0x7B, 0x4C, 0x39, 0x22, 0x61, 0xBD, 0x2A, 0x72, 0x91, 0x3F, 0x3D, + 0xF6, 0xEF, 0x6E, 0xAF, 0xA7, 0x45, 0x36, 0xAB, 0x2E, 0x85, 0x50, 0x55, + 0x05, 0xC2, 0x54, 0x4F, 0x63, 0x9E, 0xE7, 0xF7, 0xC7, 0xE1, 0xF9, 0xE9, + 0x29, 0xA5, 0xD0, 0xE4, 0x05, 0xC2, 0xC0, 0x85, 0x40, 0x29, 0x26, 0x28, + 0x51, 0x42, 0x60, 0xC4, 0xCA, 0x78, 0x6D, 0x6D, 0x4A, 0x10, 0x11, 0x47, + 0x19, 0x77, 0x21, 0xC4, 0x10, 0xC6, 0x8B, 0xC2, 0x94, 0x77, 0x95, 0xB8, + 0x7F, 0xE8, 0x57, 0x5D, 0xFB, 0xE5, 0x79, 0x70, 0x21, 0x6D, 0x37, 0xAD, + 0xA0, 0xB8, 0xC8, 0xD9, 0xE1, 0xD4, 0x3F, 0x3C, 0xF5, 0x6D, 0x53, 0x56, + 0x79, 0x26, 0xA5, 0x2A, 0x32, 0xBE, 0xDD, 0x6D, 0x31, 0x0C, 0x55, 0x59, + 0x12, 0x82, 0xC7, 0x69, 0xC1, 0x04, 0x30, 0xCE, 0xC7, 0x51, 0x3D, 0x3E, + 0x3D, 0x5F, 0xE6, 0x65, 0xBF, 0x5F, 0x13, 0x0C, 0x09, 0x61, 0x5A, 0x1B, + 0xAD, 0xF5, 0x6E, 0x55, 0x33, 0x04, 0x43, 0xF0, 0xD3, 0xA4, 0xEA, 0xB6, + 0xA9, 0x9B, 0x26, 0x25, 0x64, 0x8C, 0x69, 0xBA, 0x96, 0x32, 0x88, 0x92, + 0x1F, 0xA6, 0xE1, 0x78, 0x9C, 0xBA, 0xB2, 0x2B, 0x38, 0x62, 0x1C, 0x41, + 0x1C, 0x63, 0x00, 0x00, 0xE0, 0xA2, 0xE3, 0x00, 0x44, 0xEB, 0x80, 0x5A, + 0xB4, 0x55, 0x2E, 0xCF, 0x98, 0x92, 0x7A, 0xB8, 0xC8, 0xFB, 0xC3, 0xD0, + 0xAD, 0x3A, 0xA3, 0xF4, 0xF7, 0xBF, 0x7C, 0xEE, 0xEA, 0x7A, 0x58, 0x24, + 0x21, 0x74, 0x55, 0x88, 0xA7, 0xF3, 0x90, 0x09, 0x16, 0x53, 0x84, 0x18, + 0xBE, 0x5A, 0x77, 0xCF, 0x97, 0x51, 0xF0, 0xCC, 0x28, 0x99, 0x00, 0x58, + 0xAF, 0x36, 0x5A, 0x2F, 0x08, 0xC3, 0x59, 0x2A, 0x00, 0x22, 0xA7, 0xDC, + 0x7A, 0x7F, 0x9A, 0x15, 0x21, 0xB4, 0x2E, 0x0B, 0x63, 0xFD, 0xBA, 0x69, + 0x18, 0xC1, 0x45, 0x26, 0x20, 0x4C, 0xC3, 0x30, 0x67, 0x42, 0xB8, 0x10, + 0x86, 0x79, 0x5E, 0xA4, 0x21, 0x3C, 0xF3, 0x31, 0x4D, 0xD3, 0xF0, 0xEE, + 0xE5, 0x15, 0x42, 0x40, 0x2A, 0x4B, 0xB9, 0x58, 0xB7, 0xC5, 0xB2, 0x0C, + 0xF0, 0xEB, 0xB7, 0xAF, 0x9E, 0x4F, 0x83, 0x77, 0xBE, 0xA9, 0x33, 0xE3, + 0x20, 0xC2, 0x58, 0xAB, 0x85, 0x62, 0x08, 0x31, 0x98, 0x17, 0xED, 0x5D, + 0x88, 0x31, 0x62, 0x42, 0x29, 0xA5, 0x8C, 0xE2, 0x4C, 0x50, 0xA9, 0xF4, + 0xB2, 0x68, 0x21, 0x78, 0x56, 0xE4, 0xC1, 0x7B, 0x67, 0x5C, 0x55, 0x66, + 0x31, 0x44, 0xC1, 0x88, 0xD2, 0x16, 0x62, 0x24, 0x38, 0x33, 0xD6, 0x86, + 0x10, 0x72, 0xC1, 0x11, 0x61, 0x97, 0x49, 0x7B, 0xE7, 0x38, 0x13, 0x29, + 0x25, 0x63, 0xCC, 0xCD, 0xA6, 0xBE, 0xD9, 0x6F, 0x95, 0x0F, 0x20, 0x39, + 0x4A, 0xD9, 0xD3, 0x61, 0xFC, 0xF6, 0xAB, 0x57, 0xB7, 0xFB, 0xEE, 0xFF, + 0xFD, 0xEE, 0xD3, 0xF7, 0x9F, 0xEE, 0x1E, 0x0E, 0xC7, 0xAF, 0x6E, 0x5F, + 0xFE, 0xA7, 0x3F, 0x7E, 0xF5, 0x7F, 0xFE, 0xDF, 0xFF, 0x32, 0x2B, 0xDF, + 0xD6, 0x55, 0x53, 0x67, 0x45, 0xC6, 0x33, 0x21, 0x3E, 0x7E, 0xB9, 0x53, + 0xC6, 0x65, 0x79, 0xC6, 0x05, 0xC3, 0x00, 0x9C, 0x8E, 0xFD, 0x2C, 0x15, + 0xA3, 0xB8, 0xAD, 0xF3, 0xC5, 0x98, 0x18, 0xFD, 0x9F, 0xDE, 0xBF, 0xDD, + 0xAF, 0x37, 0x1F, 0x4E, 0xF6, 0xCB, 0x97, 0xFF, 0xD8, 0xED, 0x6E, 0x5E, + 0xBD, 0x7A, 0x7F, 0xEE, 0x1F, 0x1F, 0x1F, 0xEE, 0xFB, 0xCB, 0x40, 0x29, + 0xE9, 0xBA, 0xAE, 0x16, 0x78, 0xDD, 0x94, 0x9F, 0x9F, 0x2E, 0x10, 0x91, + 0x6F, 0xDE, 0xBC, 0x1C, 0x86, 0xE9, 0xCB, 0xD3, 0xE5, 0xE6, 0x66, 0x6F, + 0xB5, 0xD2, 0xD6, 0x32, 0x46, 0x31, 0x86, 0x10, 0xA1, 0x10, 0x41, 0x56, + 0xAD, 0x3E, 0x7F, 0xFC, 0x81, 0x31, 0x5C, 0x35, 0x55, 0xC6, 0x98, 0xE0, + 0xE8, 0xCB, 0xC3, 0xE1, 0x78, 0x1E, 0x71, 0x0C, 0x8C, 0xF1, 0x71, 0x92, + 0xAB, 0xA6, 0x7A, 0xF7, 0xF2, 0xEA, 0x2F, 0xDF, 0xFD, 0x34, 0x29, 0xFB, + 0xED, 0xDB, 0xEB, 0xAC, 0x62, 0x5D, 0x59, 0xC3, 0xC8, 0xE7, 0x65, 0x5A, + 0xD4, 0xA2, 0x7D, 0xB0, 0xC6, 0x8A, 0x9C, 0xF2, 0x9C, 0xFD, 0x0A, 0xDE, + 0x5B, 0x16, 0x73, 0x3E, 0x4D, 0x8B, 0x34, 0x21, 0x24, 0x88, 0x00, 0x42, + 0xD8, 0x1A, 0x2B, 0xA7, 0x05, 0x02, 0xF0, 0xEA, 0xC5, 0x8E, 0x10, 0xEA, + 0xB4, 0xE7, 0x19, 0xC7, 0x08, 0xF2, 0x8C, 0x26, 0x08, 0x61, 0x8A, 0x5D, + 0x57, 0x19, 0xAD, 0xCB, 0xB2, 0x80, 0x21, 0x98, 0x10, 0x10, 0x82, 0x10, + 0x40, 0x1F, 0xFD, 0xF1, 0xF0, 0xAC, 0x54, 0x1C, 0xC7, 0xC5, 0xC7, 0x68, + 0x5C, 0x34, 0xC6, 0x6F, 0x56, 0x75, 0x08, 0x2E, 0xA5, 0x48, 0x21, 0x7A, + 0x75, 0xBD, 0x2D, 0x0B, 0x9E, 0x10, 0x80, 0x18, 0xCD, 0xC3, 0x94, 0x20, + 0xF0, 0x09, 0x10, 0xC2, 0x9C, 0x0F, 0x80, 0xA0, 0xC3, 0x73, 0x3F, 0x8E, + 0xD2, 0x85, 0x88, 0x31, 0x29, 0x04, 0x59, 0xB4, 0x0B, 0x21, 0x6C, 0xB6, + 0xDD, 0x66, 0xD5, 0x14, 0x82, 0x94, 0x45, 0x2E, 0x95, 0xE2, 0x99, 0xF0, + 0xDE, 0x3B, 0xEB, 0x52, 0x4A, 0x84, 0x40, 0x08, 0x92, 0x77, 0x09, 0x42, + 0xA4, 0x94, 0x31, 0xDA, 0x62, 0x0A, 0x63, 0x08, 0xEB, 0x75, 0x8D, 0x30, + 0x81, 0x20, 0x11, 0x8A, 0xBC, 0x0B, 0x94, 0x61, 0x08, 0x50, 0xD7, 0xD6, + 0x6A, 0x31, 0xF7, 0x8F, 0xFD, 0x24, 0x8D, 0x36, 0x7E, 0x9A, 0xAC, 0x56, + 0x73, 0x00, 0xC8, 0xB8, 0x94, 0x33, 0xFC, 0xFE, 0x55, 0xCD, 0x38, 0x0C, + 0x8E, 0x4C, 0x8A, 0x3D, 0x9C, 0x2E, 0xCF, 0xCF, 0x0F, 0x4D, 0xCE, 0xCA, + 0x9C, 0x39, 0x1F, 0x05, 0xC1, 0x08, 0x42, 0x46, 0x31, 0xE3, 0xE4, 0xF9, + 0x22, 0xCF, 0xA3, 0xDC, 0xAE, 0x3B, 0x6B, 0x2C, 0x06, 0x89, 0x10, 0x92, + 0x52, 0x1C, 0x17, 0xA5, 0x9D, 0x17, 0x9C, 0x5E, 0xC6, 0xB9, 0x29, 0x4B, + 0x6D, 0x0C, 0xC1, 0xE8, 0xFD, 0xED, 0x6B, 0x82, 0xF0, 0xBC, 0xC8, 0x71, + 0x5E, 0x20, 0x42, 0xEB, 0xD5, 0xEA, 0x97, 0x2F, 0x77, 0x79, 0xCE, 0x42, + 0x34, 0x00, 0xB9, 0x17, 0x9B, 0xED, 0xED, 0xD5, 0xCB, 0xC7, 0xE7, 0x7E, + 0x98, 0x06, 0x08, 0xD3, 0xF3, 0x65, 0x50, 0xDE, 0x72, 0x0E, 0x37, 0x2B, + 0x3A, 0x2F, 0xF1, 0xCF, 0x5F, 0xFF, 0x21, 0xBA, 0xE4, 0xAC, 0xFB, 0x72, + 0x3C, 0x2A, 0xE3, 0xB4, 0xB6, 0x59, 0x26, 0xBA, 0xBA, 0x0C, 0xC1, 0x1F, + 0xCE, 0xFD, 0xD5, 0xBE, 0x93, 0x8B, 0x16, 0x22, 0x27, 0x04, 0x78, 0xE7, + 0x09, 0x45, 0x20, 0x25, 0x82, 0xF0, 0x8B, 0x57, 0x57, 0x5A, 0xD9, 0xE3, + 0xF1, 0xFC, 0x7C, 0x19, 0xCE, 0x97, 0x79, 0xBB, 0xCB, 0xEA, 0x22, 0x8B, + 0x20, 0x35, 0x65, 0x1D, 0xB4, 0x43, 0x0C, 0x03, 0x8A, 0xAC, 0xB1, 0x08, + 0xC3, 0xB2, 0xC8, 0xA3, 0xD5, 0x5C, 0x54, 0xE3, 0x34, 0x07, 0xAF, 0xAB, + 0x4C, 0x58, 0xE9, 0x12, 0xC2, 0x4D, 0x5D, 0x6A, 0x2D, 0xB5, 0xF5, 0x65, + 0x55, 0x27, 0x6F, 0x53, 0x84, 0x19, 0xA7, 0xDA, 0x6B, 0xE3, 0x7D, 0x55, + 0xB6, 0x18, 0x05, 0x08, 0x08, 0x45, 0xD8, 0x1A, 0x13, 0x7C, 0x04, 0x09, + 0xD5, 0x4D, 0xFB, 0xE3, 0xE7, 0x07, 0xE3, 0x5C, 0x59, 0x64, 0xDA, 0x06, + 0x84, 0x20, 0x42, 0xD0, 0x68, 0x9D, 0xE5, 0x59, 0x53, 0x37, 0xC3, 0xD0, + 0x6B, 0x63, 0x8D, 0x09, 0x10, 0xC6, 0xDD, 0xBA, 0xC5, 0x10, 0x0C, 0xA3, + 0x4D, 0x04, 0x7B, 0x67, 0x38, 0x25, 0x09, 0x02, 0x65, 0x8C, 0xB1, 0x4E, + 0x1B, 0x93, 0xE7, 0xCC, 0xBB, 0x20, 0x38, 0x80, 0x11, 0xE6, 0xF9, 0x06, + 0x21, 0xE6, 0xAC, 0xBC, 0xBE, 0xB9, 0x41, 0x29, 0x0D, 0xE3, 0xA4, 0xAD, + 0xDB, 0x5D, 0x5F, 0x7B, 0x23, 0xEB, 0x2A, 0x47, 0x30, 0x09, 0xC1, 0x96, + 0x59, 0x0F, 0xA7, 0xB3, 0x52, 0x2A, 0x46, 0x9F, 0x65, 0x59, 0x82, 0x08, + 0x91, 0x84, 0x11, 0x84, 0x18, 0x88, 0x82, 0x16, 0xB9, 0x40, 0x00, 0x20, + 0x80, 0x94, 0xB4, 0x45, 0x59, 0xDE, 0x3F, 0xF4, 0xFF, 0xF6, 0xFD, 0x3D, + 0x88, 0xBE, 0x6B, 0x4A, 0x82, 0x90, 0x5A, 0xE6, 0x04, 0x31, 0x22, 0x28, + 0xE3, 0x40, 0x30, 0x02, 0x31, 0x75, 0x4A, 0x2D, 0x0E, 0x5C, 0xEF, 0x6F, + 0xFA, 0xD3, 0x13, 0xE3, 0x39, 0x21, 0x5C, 0xCA, 0x51, 0x9A, 0xA5, 0xAA, + 0x4B, 0xEF, 0x43, 0x99, 0x95, 0x1F, 0x1F, 0x0E, 0xA7, 0x71, 0xC4, 0x10, + 0x35, 0x65, 0xD1, 0xB5, 0x8D, 0x92, 0x7A, 0x9E, 0xA7, 0xDD, 0x76, 0x2F, + 0x38, 0xB3, 0x46, 0x87, 0x98, 0x8C, 0xF5, 0x10, 0x63, 0x6D, 0xEC, 0xF3, + 0xF9, 0xBC, 0x48, 0x55, 0x97, 0x85, 0xE0, 0xA2, 0x2C, 0xC4, 0xA2, 0x96, + 0x8C, 0x17, 0x55, 0x55, 0x08, 0x06, 0x30, 0xE7, 0x1C, 0x13, 0x6A, 0xAD, + 0xFD, 0x55, 0xB5, 0x55, 0x4A, 0x59, 0x17, 0xF2, 0x5C, 0x48, 0x65, 0x9C, + 0xF5, 0x08, 0x21, 0x00, 0x40, 0x55, 0x66, 0xDB, 0x6D, 0xE3, 0x9D, 0x17, + 0x19, 0x27, 0x94, 0x64, 0xB9, 0x70, 0xCE, 0x61, 0x8C, 0x56, 0xEB, 0x26, + 0xCB, 0x28, 0x86, 0x50, 0x29, 0x45, 0x28, 0x4E, 0x10, 0x78, 0xE7, 0xAD, + 0xF3, 0xE3, 0xA2, 0xD7, 0xAB, 0xB2, 0x2A, 0xEB, 0xF3, 0xB8, 0x20, 0x04, + 0x40, 0x02, 0x52, 0x29, 0x6B, 0x4D, 0x2E, 0xB2, 0xB6, 0xCA, 0xCF, 0xC3, + 0x34, 0x4C, 0xF2, 0xC5, 0xA6, 0xD5, 0xCA, 0x22, 0xCC, 0x5E, 0xED, 0xD6, + 0x9F, 0xEF, 0x9F, 0xF6, 0xDB, 0xEE, 0xBB, 0x0F, 0x9F, 0x31, 0x46, 0xDF, + 0xBC, 0xBE, 0x7E, 0x3E, 0x0F, 0x89, 0x90, 0xA2, 0x28, 0x2E, 0xFD, 0xE0, + 0xAC, 0xCF, 0x18, 0x05, 0x20, 0x4D, 0xD3, 0x72, 0x38, 0xF5, 0x10, 0x21, + 0xCE, 0x88, 0x5C, 0x14, 0x42, 0x68, 0xD5, 0xD5, 0xD3, 0x32, 0x33, 0x46, + 0x52, 0x82, 0xA5, 0x10, 0x6F, 0xAE, 0xF7, 0xBF, 0x3C, 0x3C, 0xDE, 0xDD, + 0x7F, 0x5E, 0x5D, 0xBD, 0xC5, 0x88, 0x2B, 0x39, 0x2D, 0x3A, 0xDD, 0x7D, + 0xFE, 0x64, 0x3D, 0xE8, 0xDA, 0x36, 0x13, 0xEC, 0xE9, 0xE9, 0xF4, 0xE9, + 0xE1, 0x68, 0xAD, 0x63, 0x98, 0x68, 0x6D, 0xCE, 0xC3, 0x52, 0x95, 0xF9, + 0xF3, 0xF3, 0x73, 0x84, 0xB4, 0x28, 0x5B, 0xEF, 0x02, 0x84, 0xC9, 0x18, + 0x15, 0x12, 0x0E, 0x11, 0x49, 0x65, 0x00, 0xC2, 0x53, 0xDF, 0x23, 0x90, + 0xD4, 0xA2, 0x12, 0x04, 0x75, 0x95, 0x33, 0x46, 0xCB, 0xB2, 0x88, 0x31, + 0xAE, 0xBB, 0x6E, 0x5A, 0xA6, 0xC7, 0xE3, 0x69, 0xBF, 0x6D, 0x77, 0xBB, + 0xEA, 0x6A, 0xBB, 0x4E, 0x81, 0x3F, 0x3E, 0xCF, 0xD3, 0xA2, 0x17, 0x69, + 0xAC, 0xF3, 0xF3, 0xF2, 0x6B, 0x94, 0x22, 0x69, 0x6D, 0x1F, 0xEF, 0x8F, + 0x59, 0x59, 0x94, 0x55, 0x86, 0x30, 0x98, 0xC6, 0x85, 0x09, 0x1E, 0x13, + 0x90, 0x8B, 0x72, 0x31, 0x06, 0xE3, 0x8A, 0xBC, 0xFC, 0xE1, 0xC3, 0x1D, + 0xA2, 0x28, 0x17, 0x3C, 0xF8, 0x10, 0x52, 0x7C, 0x7A, 0x3A, 0x2F, 0x4A, + 0xB9, 0x10, 0x8E, 0xC7, 0x5E, 0x4A, 0x4D, 0xB8, 0x38, 0x9F, 0x86, 0xD3, + 0xA5, 0x0F, 0x31, 0x11, 0x8C, 0x09, 0x61, 0x79, 0x91, 0x4F, 0xD3, 0xE2, + 0xAD, 0x17, 0x9C, 0xBF, 0x7F, 0xFB, 0xAA, 0xA9, 0xB8, 0x77, 0x76, 0xD3, + 0x36, 0x6D, 0x55, 0xB6, 0xED, 0x0A, 0x43, 0xEA, 0x8C, 0x39, 0x1D, 0x07, + 0x17, 0xC2, 0x30, 0x2C, 0x00, 0xA0, 0xB9, 0x97, 0xD1, 0x45, 0x18, 0xD2, + 0xBA, 0xAB, 0x36, 0xEB, 0x26, 0x78, 0xED, 0x9D, 0xE6, 0x8C, 0x46, 0x90, + 0xB6, 0xEB, 0xF2, 0xDD, 0x8B, 0x0D, 0x0C, 0x61, 0x9A, 0xE4, 0x30, 0x2C, + 0x97, 0xD3, 0xA0, 0x94, 0x3E, 0x9E, 0x86, 0xD3, 0x65, 0x58, 0x16, 0xF9, + 0x7C, 0x7F, 0xCE, 0x33, 0xEE, 0x82, 0xF7, 0x3E, 0x7E, 0xB9, 0x3B, 0x3D, + 0x3D, 0x5F, 0xAA, 0x92, 0x65, 0x45, 0x06, 0x12, 0xF0, 0xC9, 0x3B, 0x6F, + 0x13, 0x4A, 0x2C, 0x63, 0x10, 0x02, 0x4A, 0xB1, 0x73, 0x6E, 0x5E, 0x16, + 0x51, 0xF0, 0xB2, 0x2A, 0xCA, 0x82, 0xD7, 0x05, 0xCF, 0x33, 0x7A, 0x1E, + 0x34, 0x25, 0xEC, 0xEB, 0xDB, 0xEB, 0xFE, 0x3C, 0x04, 0x97, 0x0E, 0xC7, + 0x71, 0xD2, 0xBE, 0x5B, 0xEF, 0xCA, 0x9C, 0x73, 0x0A, 0xDA, 0xBA, 0x14, + 0x8C, 0x68, 0xA3, 0x52, 0xF4, 0x82, 0xA2, 0x98, 0x22, 0x40, 0x2C, 0x26, + 0x64, 0xAC, 0x7D, 0x77, 0xB3, 0xA7, 0x18, 0x48, 0xA5, 0xDE, 0x5C, 0x77, + 0xC7, 0xCB, 0x98, 0x40, 0x0C, 0x21, 0x64, 0x94, 0x58, 0xE7, 0x04, 0xA3, + 0x6F, 0x5E, 0x5C, 0x39, 0xE7, 0x39, 0x67, 0x31, 0x06, 0x10, 0x23, 0x65, + 0xEC, 0xD4, 0x0F, 0xC6, 0x6A, 0x8C, 0x30, 0x86, 0xE8, 0xCD, 0xCD, 0xB6, + 0x64, 0xF9, 0x79, 0x50, 0xD2, 0x5A, 0x1F, 0x54, 0x5B, 0xC5, 0x7E, 0x32, + 0x82, 0xC7, 0xED, 0x8A, 0xF4, 0xBD, 0x8F, 0x11, 0xEE, 0x57, 0xBB, 0xE0, + 0x81, 0x0D, 0x71, 0x5C, 0xA4, 0x32, 0xB6, 0x6E, 0xCA, 0xD5, 0xBA, 0x3B, + 0x9E, 0xFA, 0x98, 0x22, 0x26, 0x64, 0x18, 0x65, 0xDB, 0xD4, 0xAF, 0x5E, + 0x5C, 0x2F, 0xD6, 0xF5, 0xD3, 0xAC, 0x9D, 0x8F, 0x00, 0x38, 0x1F, 0x9D, + 0x0B, 0x65, 0x25, 0xBA, 0xAE, 0xA9, 0xCB, 0x5F, 0xDB, 0x1F, 0x74, 0x5E, + 0x16, 0xA5, 0x9D, 0xD6, 0x1A, 0xC0, 0xE4, 0x82, 0x9B, 0x17, 0x75, 0x19, + 0x26, 0xB9, 0xA8, 0xF1, 0xD2, 0x6B, 0xE3, 0x8E, 0xFD, 0xF9, 0x74, 0xEC, + 0x31, 0x22, 0x14, 0x93, 0xAC, 0xC8, 0xA4, 0x54, 0xE3, 0x22, 0x9F, 0x4E, + 0x52, 0xCA, 0x18, 0xDD, 0xE8, 0xAC, 0x36, 0xC6, 0x27, 0x08, 0x30, 0x23, + 0xC1, 0x06, 0x6F, 0xAC, 0x37, 0x81, 0x42, 0x31, 0x5C, 0x86, 0x18, 0x3C, + 0x21, 0x84, 0x53, 0x9A, 0x67, 0x62, 0xB3, 0xAA, 0xBA, 0x3A, 0xDB, 0xAE, + 0xEA, 0xAB, 0x7D, 0xD3, 0x94, 0x39, 0x48, 0xB1, 0x5B, 0x55, 0x59, 0x21, + 0x8A, 0x42, 0xAC, 0x56, 0xD5, 0x7A, 0x53, 0x97, 0x85, 0xD0, 0xCE, 0x2D, + 0xE3, 0x82, 0x31, 0xE5, 0x22, 0x77, 0x56, 0x11, 0x18, 0x08, 0x21, 0x10, + 0xA1, 0x69, 0x96, 0xFD, 0x20, 0x17, 0xA9, 0x83, 0xF3, 0x18, 0x25, 0x0C, + 0x61, 0x53, 0xAC, 0x45, 0xB1, 0x59, 0x94, 0xC3, 0x10, 0x74, 0x6D, 0x0B, + 0x83, 0xD3, 0x1E, 0xF0, 0xA2, 0x0A, 0xDE, 0x51, 0xCE, 0x17, 0xAD, 0xAC, + 0xB6, 0x00, 0xF2, 0x8C, 0x33, 0xAB, 0x55, 0x08, 0x71, 0x9C, 0xA5, 0xF1, + 0xE0, 0xD8, 0x2F, 0x77, 0x0F, 0x17, 0x90, 0x90, 0x35, 0xD6, 0x38, 0x7F, + 0xE9, 0xE7, 0xE7, 0x43, 0x9F, 0x70, 0x32, 0xDE, 0x5B, 0xEF, 0x44, 0x8E, + 0x9B, 0x75, 0xBD, 0xAA, 0xAB, 0x42, 0xB0, 0xB6, 0x29, 0xDB, 0xBA, 0x5A, + 0x94, 0xBD, 0x7D, 0xF5, 0x62, 0xB7, 0xD9, 0x60, 0x88, 0xAB, 0xB2, 0xF2, + 0x31, 0x95, 0xE5, 0x26, 0xE3, 0x14, 0xA5, 0xB8, 0xEA, 0x36, 0xC6, 0xFB, + 0x45, 0x4A, 0x80, 0x20, 0xE7, 0xC2, 0x58, 0x27, 0x95, 0x62, 0x4C, 0x60, + 0x8C, 0xDA, 0xBA, 0xDA, 0xAC, 0xD6, 0xE7, 0xF3, 0xF0, 0x2B, 0xD8, 0xBA, + 0xAA, 0xBA, 0x61, 0xE8, 0x8D, 0x5E, 0x42, 0x8C, 0x21, 0x24, 0x69, 0x6C, + 0xDB, 0x56, 0x10, 0xE2, 0xDD, 0xBA, 0x6D, 0xF3, 0xAC, 0xAB, 0x6B, 0x88, + 0xF9, 0xDD, 0xC3, 0x53, 0x93, 0x67, 0x4A, 0x1B, 0x6D, 0x2C, 0x86, 0x08, + 0x03, 0x00, 0xAD, 0x35, 0x21, 0xC6, 0xB2, 0xCC, 0x30, 0x84, 0x00, 0xC0, + 0x32, 0x13, 0xC1, 0x07, 0x88, 0x60, 0x55, 0x66, 0x05, 0xA3, 0xDA, 0xB8, + 0x2A, 0xCF, 0x83, 0xF3, 0xFD, 0x65, 0x42, 0x08, 0x82, 0x98, 0xA4, 0x54, + 0xB9, 0xE0, 0x14, 0x21, 0xE7, 0x9C, 0x71, 0x96, 0x21, 0xB4, 0xDB, 0x76, + 0x52, 0xDA, 0xA6, 0xAA, 0x4E, 0xFD, 0x80, 0x11, 0xDC, 0x75, 0x75, 0xC6, + 0xC4, 0xA7, 0xFB, 0x47, 0x04, 0x62, 0x8A, 0x91, 0x53, 0x5C, 0xE6, 0xB9, + 0x31, 0xBA, 0x9F, 0x26, 0xEB, 0x3C, 0x42, 0xF0, 0x3C, 0x2E, 0x9F, 0x1E, + 0xCF, 0xA5, 0x60, 0x04, 0x06, 0x44, 0xD1, 0x5F, 0x7E, 0xFC, 0xC5, 0x79, + 0x7F, 0xB5, 0x6D, 0x3F, 0xDE, 0x1D, 0x8D, 0xF5, 0x6F, 0xDF, 0xBC, 0xFC, + 0xF4, 0xE5, 0xBE, 0x1F, 0x47, 0x4C, 0x59, 0x88, 0x51, 0x70, 0x1C, 0xBC, + 0x9F, 0x16, 0xD5, 0xB6, 0xF5, 0xE5, 0x7C, 0x69, 0xCA, 0xAC, 0x6B, 0xEA, + 0xBE, 0x1F, 0x5F, 0xDF, 0x6C, 0x21, 0x44, 0xE3, 0x30, 0xBE, 0xB9, 0xD9, + 0x1B, 0xE7, 0x3E, 0xDE, 0x3D, 0x0A, 0x4E, 0xAE, 0xF6, 0xD7, 0x97, 0xD9, + 0x25, 0x2C, 0xE4, 0x74, 0x7A, 0x3E, 0x1C, 0x08, 0xE1, 0x55, 0x2E, 0xA6, + 0x71, 0xF2, 0x3E, 0xFC, 0xFD, 0xDF, 0x7C, 0xB5, 0xD9, 0xD4, 0x98, 0xE2, + 0xFB, 0xFB, 0xE3, 0xF3, 0xE9, 0xE4, 0x8C, 0xB6, 0xDE, 0xAD, 0xAF, 0xDF, + 0x14, 0x8C, 0x5C, 0xDD, 0xDC, 0xFC, 0xFC, 0xE1, 0xCB, 0xA2, 0x42, 0x55, + 0x6F, 0x8F, 0xE7, 0x1E, 0x40, 0x60, 0xED, 0xE2, 0x5C, 0x08, 0xD6, 0xC5, + 0x94, 0xE6, 0x59, 0x32, 0x42, 0xEA, 0x32, 0x5F, 0x35, 0xD5, 0x7E, 0xB7, + 0xC9, 0x33, 0x36, 0x4C, 0xF3, 0xD5, 0x8B, 0xF7, 0xAF, 0x6E, 0xBF, 0xE2, + 0x2C, 0x37, 0x0A, 0x0E, 0x93, 0x53, 0x11, 0x9D, 0x2F, 0x97, 0x10, 0x62, + 0x8C, 0x81, 0x32, 0x3C, 0x4E, 0x4B, 0x5E, 0x08, 0x6B, 0x2D, 0x17, 0xCC, + 0x1A, 0x13, 0xBC, 0x2B, 0x8B, 0xDC, 0x5A, 0x2B, 0x17, 0xE3, 0x9D, 0xF7, + 0x21, 0xC8, 0x59, 0x6E, 0xDA, 0xFA, 0xE9, 0xD4, 0x4B, 0x6D, 0xDA, 0x3A, + 0x2B, 0x32, 0xEE, 0x43, 0x3C, 0x3C, 0x9F, 0x8F, 0xC7, 0x73, 0x5B, 0x17, + 0x29, 0x46, 0x00, 0x61, 0x8A, 0x70, 0xEA, 0x25, 0xA6, 0x84, 0x72, 0x86, + 0x30, 0x19, 0x86, 0x39, 0x17, 0x39, 0x42, 0x08, 0x41, 0x58, 0x64, 0xA2, + 0x5B, 0xD5, 0xCE, 0xAB, 0xE0, 0x42, 0x53, 0x94, 0x82, 0x32, 0xA5, 0x7C, + 0x48, 0xA1, 0x1F, 0x86, 0xE0, 0xC2, 0x22, 0x35, 0xE1, 0x64, 0x77, 0xDD, + 0x3C, 0x3E, 0x8E, 0xF3, 0x6C, 0xAA, 0x2A, 0xB7, 0xCA, 0x4F, 0x93, 0x16, + 0x8C, 0xE7, 0x9C, 0xD4, 0x15, 0x07, 0x10, 0x5F, 0xEF, 0xB7, 0xCE, 0x79, + 0x0A, 0xD2, 0x6A, 0xDB, 0xB8, 0x18, 0x29, 0x41, 0x55, 0x5B, 0x61, 0x04, + 0xBD, 0x8B, 0x3E, 0xF8, 0x79, 0x94, 0x20, 0x61, 0x46, 0x08, 0x26, 0x58, + 0x69, 0x0B, 0x21, 0xA8, 0xDB, 0x1C, 0xC3, 0xB8, 0x59, 0x97, 0x94, 0x10, + 0x42, 0xA0, 0x9C, 0xA5, 0x5C, 0x64, 0x7F, 0x19, 0xBC, 0x71, 0xC1, 0x04, + 0xB5, 0xE8, 0xB2, 0xCE, 0x09, 0x65, 0x28, 0x41, 0x46, 0x70, 0x59, 0xF1, + 0xD5, 0xAA, 0x5E, 0x35, 0x45, 0x55, 0xF0, 0x10, 0xDC, 0xB9, 0x9F, 0x9D, + 0x73, 0xD2, 0xD8, 0x0F, 0x5F, 0xEE, 0x53, 0x30, 0x82, 0x23, 0x8A, 0x61, + 0x46, 0x19, 0x04, 0xF0, 0x74, 0x19, 0x18, 0x61, 0xEB, 0xBA, 0x4C, 0x00, + 0x73, 0xC6, 0x8E, 0xA7, 0xE3, 0xBA, 0xA9, 0xCB, 0x3C, 0xFB, 0xEE, 0xC3, + 0x2F, 0xFB, 0x55, 0xF5, 0x70, 0xEC, 0x63, 0x8C, 0x14, 0xE3, 0x10, 0x13, + 0xC5, 0x68, 0x94, 0xFA, 0xD5, 0xBE, 0x03, 0x20, 0x49, 0xA9, 0x31, 0x8C, + 0xD3, 0x3C, 0xA7, 0x14, 0x4F, 0xFD, 0x00, 0x40, 0x2C, 0xF2, 0xCC, 0x3A, + 0x53, 0x64, 0x05, 0xA5, 0xF9, 0xF1, 0x32, 0xDC, 0x1F, 0x07, 0xEB, 0x96, + 0xEB, 0x1D, 0xF8, 0xF2, 0xBC, 0x48, 0xE3, 0x43, 0x4C, 0xC6, 0x23, 0x00, + 0xC8, 0xDB, 0x57, 0xBB, 0xA6, 0xDA, 0x32, 0x51, 0x60, 0x42, 0x43, 0x04, + 0x6D, 0x5D, 0x67, 0x82, 0x1D, 0x4E, 0x97, 0xD3, 0xE5, 0xF2, 0xCD, 0x57, + 0x2F, 0x08, 0x86, 0xDA, 0xBA, 0xA2, 0xC8, 0xEF, 0x1E, 0x9F, 0xA4, 0xB5, + 0xF3, 0xAC, 0x28, 0xE3, 0xDE, 0x07, 0x04, 0xC0, 0x7E, 0xB7, 0x22, 0x14, + 0x73, 0xCE, 0x31, 0x82, 0x65, 0x99, 0xAF, 0xD7, 0x5D, 0x3F, 0xCC, 0x77, + 0x0F, 0xBD, 0x35, 0x21, 0xC6, 0x70, 0x19, 0x97, 0x69, 0xD1, 0xCE, 0x25, + 0x6D, 0x3C, 0xC1, 0x44, 0x9B, 0x78, 0xEA, 0x55, 0x5D, 0x55, 0x20, 0xA1, + 0x61, 0x99, 0x17, 0xE3, 0x94, 0xF5, 0xE7, 0xB3, 0xC4, 0x08, 0x4B, 0xA5, + 0x09, 0x4C, 0xD6, 0x3B, 0xE5, 0x92, 0x31, 0xFE, 0x74, 0x1E, 0x95, 0xF1, + 0xA7, 0xF3, 0x0C, 0x21, 0x38, 0x0E, 0xA3, 0xD4, 0xFA, 0xD0, 0xAB, 0xF3, + 0x6C, 0xCF, 0xA3, 0x1C, 0x67, 0xDD, 0x8F, 0xF3, 0x2C, 0xF5, 0xB2, 0x2C, + 0x30, 0x05, 0x4E, 0xA9, 0xC8, 0x04, 0xC4, 0xC8, 0x79, 0xEF, 0xBD, 0xD7, + 0xCA, 0xCC, 0xB3, 0x62, 0x04, 0xBD, 0xBC, 0xD9, 0x96, 0x75, 0x89, 0x30, + 0xBA, 0x0C, 0x83, 0xF3, 0x8A, 0xB1, 0xBC, 0x9F, 0xF5, 0x38, 0x2E, 0xD6, + 0xBA, 0x71, 0x9E, 0xAF, 0x37, 0xCD, 0x7E, 0xBD, 0xA1, 0xAC, 0xB4, 0x1E, + 0x39, 0x0F, 0x8D, 0x0B, 0x5C, 0x64, 0x4D, 0xC9, 0x73, 0x41, 0x82, 0x51, + 0x2A, 0xC8, 0x61, 0xBE, 0x18, 0x37, 0xF7, 0x63, 0x2F, 0xE5, 0x32, 0x4D, + 0xE3, 0xBC, 0xC8, 0x79, 0x94, 0x65, 0x59, 0x70, 0x4E, 0x09, 0x11, 0x8B, + 0x76, 0xE7, 0x61, 0xF6, 0x31, 0x65, 0x99, 0x90, 0xCA, 0x30, 0xC1, 0xA5, + 0xB2, 0x77, 0x5F, 0xCE, 0xC1, 0xFB, 0x65, 0xD1, 0xCA, 0x9A, 0xF3, 0xB9, + 0xE7, 0x0C, 0x36, 0x95, 0x30, 0x6A, 0x41, 0x30, 0x54, 0x55, 0x99, 0x09, + 0x41, 0x29, 0x9B, 0x67, 0x13, 0x13, 0x9A, 0x17, 0x9D, 0xE7, 0x45, 0x5D, + 0xD7, 0xC9, 0xFB, 0x10, 0xC2, 0xE1, 0x70, 0x20, 0x9C, 0xBC, 0xB8, 0x59, + 0x6D, 0xDA, 0x7A, 0xB3, 0xEE, 0xAC, 0xB3, 0x59, 0x5E, 0xB6, 0x4D, 0x99, + 0x33, 0x0C, 0x13, 0xD0, 0xC6, 0x58, 0x17, 0xAD, 0x73, 0x82, 0x67, 0x72, + 0x99, 0xFB, 0xF1, 0x82, 0x31, 0x32, 0xD6, 0x8D, 0x52, 0x85, 0x18, 0xEB, + 0xA6, 0x56, 0x4A, 0x56, 0x82, 0x96, 0x65, 0x96, 0x40, 0x7A, 0xEC, 0xA7, + 0x75, 0xD7, 0xF8, 0x90, 0x06, 0xA9, 0x53, 0xF0, 0xB8, 0xA9, 0x2B, 0x6B, + 0x2D, 0x84, 0xA9, 0xCA, 0x85, 0x54, 0x9A, 0x63, 0xC4, 0x09, 0xA2, 0x8C, + 0x60, 0x4A, 0xDA, 0xB2, 0xDC, 0xAE, 0x6A, 0xA9, 0x95, 0x94, 0x06, 0x45, + 0xC0, 0x19, 0x99, 0x95, 0xC9, 0x05, 0x8F, 0x00, 0x44, 0x1F, 0x57, 0x6D, + 0x8B, 0x09, 0xD2, 0xDA, 0xD6, 0x19, 0x6B, 0xCA, 0xDC, 0xF9, 0xA8, 0x8D, + 0xAF, 0x9A, 0x1A, 0xA4, 0xF0, 0xE2, 0x7A, 0x95, 0x10, 0x7F, 0x7C, 0x3A, + 0x7A, 0xE7, 0x32, 0x2E, 0xFE, 0xF8, 0xBB, 0x6F, 0xFE, 0xEE, 0xF7, 0x5F, + 0x57, 0x65, 0x09, 0x80, 0x17, 0x1C, 0x73, 0xC6, 0x9B, 0xA6, 0x32, 0xDE, + 0x78, 0x6B, 0xBE, 0x7D, 0xF3, 0x62, 0xBD, 0xAE, 0x46, 0xA7, 0xC7, 0x45, + 0x27, 0x1F, 0x42, 0x88, 0x8B, 0xD2, 0x6F, 0x5F, 0xBF, 0x08, 0xDE, 0x9D, + 0xCE, 0x17, 0x21, 0x78, 0x8C, 0x89, 0x11, 0x2A, 0x18, 0xC9, 0x84, 0x58, + 0xB5, 0x8D, 0x96, 0x2A, 0xA7, 0xE8, 0xEB, 0x77, 0xAF, 0x9F, 0x8F, 0x67, + 0x82, 0xD0, 0xE1, 0x32, 0xF6, 0xFD, 0x70, 0xB3, 0x59, 0x17, 0x65, 0xF5, + 0x4F, 0xFF, 0xFE, 0x43, 0x55, 0x96, 0xEB, 0xBA, 0x00, 0x44, 0x88, 0x62, + 0x6D, 0xCC, 0x32, 0x5C, 0x9E, 0x9A, 0xBA, 0xF8, 0xED, 0xBB, 0x57, 0x52, + 0x49, 0x00, 0xD2, 0xB7, 0xEF, 0x5F, 0x59, 0x97, 0x86, 0x59, 0xA3, 0xE8, + 0xCA, 0xA2, 0xF8, 0xE3, 0x6F, 0xDE, 0x7F, 0xFB, 0xD5, 0xED, 0xEE, 0xF6, + 0x8F, 0xCA, 0xA6, 0xAA, 0xDB, 0x43, 0x56, 0x3C, 0x9F, 0xFA, 0xDD, 0xEE, + 0xAA, 0x60, 0x28, 0xAA, 0xD1, 0xC8, 0x21, 0x06, 0xFF, 0xD5, 0xCB, 0x6D, + 0x8A, 0x7E, 0xB5, 0xAE, 0x5F, 0xED, 0xB6, 0xD7, 0x9B, 0x75, 0x91, 0xE5, + 0x79, 0x96, 0xC5, 0x10, 0x31, 0x21, 0x65, 0xDD, 0xA5, 0x94, 0x8F, 0x8D, + 0x68, 0x52, 0x00, 0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1D, 0x8E, + 0x63, 0x02, 0xE2, 0xD3, 0xE7, 0xFB, 0x61, 0x9A, 0xA6, 0x79, 0x3A, 0x9E, + 0x8F, 0x59, 0x5E, 0x70, 0x8A, 0x29, 0x23, 0x52, 0x19, 0x67, 0x1D, 0x25, + 0x18, 0x42, 0x34, 0xF4, 0xD3, 0xCD, 0x66, 0xE5, 0x9C, 0x03, 0x08, 0x69, + 0x6D, 0xC7, 0x71, 0xA1, 0x9C, 0xB4, 0x05, 0x1F, 0xC6, 0x79, 0x56, 0xEA, + 0xC5, 0xAE, 0x6B, 0xDB, 0xF2, 0x32, 0xC8, 0x61, 0x5E, 0xF6, 0xDB, 0xE6, + 0x66, 0xBF, 0xFA, 0xB5, 0xF6, 0x0C, 0x12, 0x08, 0x3E, 0x12, 0xC6, 0x7C, + 0x88, 0x45, 0xDD, 0x68, 0xE3, 0x87, 0x61, 0x0A, 0x21, 0x06, 0x17, 0x28, + 0xA1, 0x18, 0xE3, 0x61, 0x1C, 0x01, 0x88, 0x08, 0x41, 0xEF, 0x7D, 0x04, + 0xE1, 0x70, 0xEC, 0xC7, 0x59, 0x61, 0x82, 0xFA, 0x71, 0xC1, 0x18, 0x63, + 0x44, 0x17, 0x69, 0x2F, 0xFD, 0x8C, 0x30, 0xC6, 0x18, 0x49, 0xE3, 0x22, + 0x00, 0x21, 0x00, 0x67, 0xFC, 0x38, 0x29, 0x00, 0x90, 0xB3, 0x41, 0x64, + 0xE4, 0xEA, 0xBA, 0x0B, 0x20, 0x38, 0xE7, 0x29, 0x46, 0x84, 0x62, 0x9E, + 0x33, 0x84, 0x20, 0x80, 0x69, 0xB7, 0x5F, 0x97, 0x15, 0xCF, 0x2B, 0x61, + 0x4C, 0x2C, 0x4A, 0x4E, 0x70, 0x2A, 0x0A, 0xEA, 0xAC, 0x8B, 0x3E, 0x8E, + 0xBD, 0xEA, 0xCF, 0x8B, 0x54, 0xF6, 0xEE, 0xE1, 0xAC, 0xA5, 0xA5, 0x58, + 0x18, 0x99, 0x82, 0x4F, 0x97, 0x93, 0x54, 0x4B, 0x98, 0x67, 0xAD, 0x94, + 0x92, 0x4A, 0x5F, 0xFA, 0x19, 0xC0, 0x24, 0x32, 0x9C, 0x17, 0xE2, 0xC5, + 0xCB, 0xAD, 0xB1, 0x5E, 0x69, 0x33, 0x4E, 0x92, 0x51, 0x18, 0x9D, 0xE3, + 0x84, 0xF9, 0x10, 0x87, 0x45, 0x43, 0x80, 0xAA, 0xA2, 0x60, 0x14, 0x4D, + 0x4A, 0xF3, 0x0C, 0x12, 0x94, 0xD6, 0x6D, 0x3B, 0x2C, 0x8A, 0x53, 0x92, + 0x62, 0x98, 0x94, 0xAB, 0xAB, 0x82, 0x60, 0x44, 0x31, 0x1E, 0xA5, 0x6A, + 0xAB, 0x32, 0xCF, 0x18, 0x04, 0x89, 0x51, 0xC4, 0x48, 0xD2, 0xD6, 0x0B, + 0x86, 0x09, 0x01, 0x14, 0x13, 0xA3, 0xB5, 0x76, 0x6E, 0xDB, 0xE4, 0x85, + 0xA0, 0x9F, 0x9F, 0xCF, 0x04, 0x27, 0x0C, 0xC1, 0x2F, 0x9F, 0x07, 0x63, + 0x82, 0xD4, 0x49, 0xE9, 0xB8, 0x5D, 0x55, 0xFF, 0xF8, 0xFB, 0x37, 0x20, + 0x66, 0x54, 0x74, 0xF3, 0xA2, 0x86, 0xF1, 0x12, 0xBD, 0xB7, 0xCE, 0x9E, + 0xFB, 0xE1, 0xF1, 0x70, 0xEC, 0x9A, 0x4A, 0x50, 0xAE, 0x94, 0x4E, 0x09, + 0x4C, 0x8B, 0x9A, 0x66, 0xE9, 0x7D, 0x30, 0xC6, 0x11, 0x84, 0xEB, 0x22, + 0xCF, 0xB2, 0x5C, 0x29, 0x2B, 0xA5, 0x81, 0x00, 0xA6, 0x04, 0xA4, 0x34, + 0x18, 0xE2, 0xA6, 0x6C, 0x04, 0xA3, 0xF3, 0xA2, 0x94, 0xB2, 0x8B, 0xF2, + 0x31, 0x25, 0xEB, 0x42, 0x0C, 0x09, 0x43, 0xA8, 0xB4, 0x87, 0x88, 0x22, + 0xCC, 0xC6, 0x71, 0xBE, 0xF4, 0xF3, 0xB9, 0x9F, 0xC7, 0xC9, 0x40, 0x44, + 0xA4, 0xB6, 0xC3, 0xAC, 0x22, 0x04, 0x36, 0xF8, 0xC5, 0x78, 0x80, 0xD0, + 0xAC, 0xCD, 0x71, 0xD0, 0x93, 0xB4, 0x36, 0xB8, 0xC5, 0xE8, 0xCB, 0xAC, + 0x67, 0xE5, 0xA4, 0x76, 0xD6, 0x27, 0xE3, 0x62, 0x02, 0x29, 0x06, 0xAF, + 0x8C, 0xD6, 0xC6, 0x1A, 0x6D, 0x83, 0x75, 0xE7, 0x61, 0x9A, 0x95, 0x81, + 0x10, 0x27, 0x00, 0xAD, 0x8E, 0x87, 0xA7, 0xE7, 0x59, 0xCE, 0x88, 0x31, + 0x14, 0x5D, 0x95, 0xA1, 0xCB, 0xA0, 0x3F, 0x7C, 0x3E, 0x86, 0x18, 0x77, + 0x9B, 0x2E, 0x58, 0xD3, 0x16, 0x30, 0xE7, 0xAC, 0x6D, 0x37, 0x87, 0xCB, + 0xF2, 0x74, 0x3C, 0x1B, 0xA3, 0xF3, 0x9C, 0x01, 0x60, 0x19, 0x4D, 0x52, + 0x4E, 0xC1, 0xF5, 0xC6, 0x5E, 0xFA, 0x59, 0x6A, 0x6D, 0x29, 0xC6, 0x4A, + 0xEA, 0x0F, 0x1F, 0xEF, 0xBC, 0x4F, 0x8C, 0x88, 0x18, 0xD1, 0xE9, 0x3C, + 0x4C, 0xD2, 0x0C, 0x8B, 0xFE, 0x55, 0x29, 0x5A, 0xB4, 0x75, 0xC1, 0xE7, + 0x05, 0x9D, 0x46, 0xC9, 0x72, 0x0E, 0x10, 0x02, 0x10, 0x1A, 0x1B, 0x08, + 0x63, 0xDE, 0x04, 0xEB, 0x5C, 0x04, 0x51, 0x69, 0x5D, 0x70, 0x2E, 0x38, + 0xF2, 0xDE, 0x69, 0x63, 0x9A, 0xBA, 0x00, 0x29, 0x72, 0x26, 0xBC, 0xB5, + 0x31, 0x46, 0x9E, 0x17, 0xA2, 0xC8, 0x43, 0xF4, 0x52, 0x5B, 0xE7, 0x2C, + 0x21, 0x38, 0xCF, 0x39, 0x80, 0x11, 0x91, 0x90, 0x7C, 0x30, 0xCA, 0x68, + 0x2B, 0xB5, 0xD6, 0xD6, 0x79, 0xE7, 0x7C, 0x0C, 0xAE, 0xA9, 0x2B, 0x1F, + 0xE2, 0xAC, 0x54, 0x5D, 0x66, 0x37, 0xBB, 0xDD, 0x34, 0xCE, 0x7D, 0xDF, + 0xA7, 0x18, 0x8B, 0x2C, 0x5B, 0x16, 0x89, 0x09, 0x73, 0xDE, 0x8F, 0x52, + 0xD7, 0x65, 0x19, 0x9C, 0xC6, 0x45, 0x96, 0x69, 0x63, 0x19, 0x06, 0x94, + 0xE0, 0x59, 0xEA, 0x9B, 0x4D, 0xC3, 0x19, 0x7D, 0xEE, 0xC7, 0xDD, 0x7E, + 0xA7, 0x95, 0x5A, 0x96, 0x05, 0x00, 0xB0, 0x6B, 0x4B, 0x63, 0x3D, 0x48, + 0x80, 0x50, 0xC2, 0x19, 0xBD, 0x0C, 0x73, 0x55, 0x14, 0xAF, 0xAE, 0xD6, + 0xD6, 0x3B, 0x63, 0xDC, 0xD5, 0xAA, 0xAE, 0xAB, 0xC2, 0x07, 0x40, 0x09, + 0x2E, 0x73, 0x01, 0x93, 0xF7, 0xC1, 0x5B, 0x1F, 0xBC, 0xD6, 0x19, 0x67, + 0x65, 0x55, 0xBE, 0xBB, 0x7D, 0x6D, 0xAC, 0x4D, 0x29, 0x32, 0x8C, 0x6E, + 0xF6, 0x5B, 0x90, 0x60, 0x56, 0x30, 0x1C, 0xCD, 0xEF, 0xDE, 0xBF, 0xBE, + 0xD9, 0x77, 0xB3, 0xB1, 0x29, 0xF9, 0x08, 0xC0, 0x66, 0xB7, 0x72, 0x31, + 0xBD, 0x7D, 0xFF, 0x1A, 0xA6, 0xA4, 0x8C, 0x62, 0x14, 0x5B, 0xE3, 0x05, + 0x25, 0x8C, 0xA2, 0x97, 0xD7, 0xBB, 0x2C, 0x13, 0xA7, 0xCB, 0x25, 0x67, + 0xF8, 0xF5, 0x8B, 0xAB, 0x1F, 0x7E, 0x79, 0x38, 0x0F, 0xD3, 0xAF, 0xAF, + 0xDF, 0xAA, 0x2A, 0xFE, 0xF8, 0xED, 0x37, 0x77, 0x8F, 0x87, 0x18, 0xC1, + 0x1F, 0x7E, 0xFB, 0x9E, 0xE5, 0x4D, 0xD6, 0xBE, 0x8C, 0x31, 0x0C, 0xA7, + 0x2F, 0x02, 0x83, 0xD7, 0x37, 0x7B, 0x46, 0x49, 0x2E, 0xF8, 0xCB, 0x5D, + 0xF7, 0x78, 0x38, 0x3B, 0x54, 0x07, 0xE7, 0xDB, 0x8C, 0xFE, 0xE9, 0x77, + 0xDF, 0x76, 0x4D, 0xDB, 0xFB, 0xE2, 0xC3, 0xC3, 0x69, 0xE9, 0x8F, 0x34, + 0xE9, 0xF9, 0xF8, 0x85, 0x04, 0x79, 0xBB, 0x29, 0xB6, 0x5D, 0x96, 0x0B, + 0xF1, 0xE2, 0x6A, 0xFF, 0xF6, 0xC5, 0x55, 0x29, 0x48, 0xB7, 0xEA, 0x36, + 0x5D, 0x23, 0x08, 0xBC, 0x7F, 0xEE, 0x9F, 0xCF, 0xE3, 0xE3, 0xF1, 0xFC, + 0x70, 0x18, 0x7F, 0xF9, 0x7C, 0x30, 0xC6, 0x4D, 0xE3, 0x64, 0xB4, 0x3C, + 0x1E, 0x9F, 0x2F, 0x97, 0x13, 0x04, 0x61, 0xB7, 0xCA, 0x94, 0x01, 0x5C, + 0xE4, 0x55, 0xC1, 0x42, 0xF2, 0x52, 0x1A, 0x6B, 0xC3, 0x34, 0x49, 0x6F, + 0xC3, 0x76, 0xD5, 0xEC, 0x76, 0xDD, 0x0F, 0x1F, 0xEF, 0xCB, 0xBA, 0x02, + 0x08, 0x3E, 0x3F, 0x1C, 0xAB, 0x82, 0x16, 0x05, 0x5D, 0x96, 0xB9, 0xCC, + 0xB3, 0xBA, 0xCA, 0xA5, 0xB6, 0xFD, 0xA4, 0x08, 0x82, 0x28, 0x25, 0x65, + 0xFC, 0x65, 0x94, 0x2E, 0x04, 0x0C, 0xD1, 0x30, 0xCA, 0x79, 0x51, 0x08, + 0x13, 0x17, 0xD2, 0xE7, 0xCF, 0xF7, 0x8C, 0x12, 0x04, 0x91, 0xB3, 0x2E, + 0xCF, 0x85, 0x54, 0xF2, 0xBB, 0xEF, 0x3F, 0xCF, 0x8B, 0x36, 0xC6, 0x0E, + 0x93, 0x24, 0x8C, 0xF4, 0x93, 0xEE, 0x07, 0x69, 0x63, 0x78, 0x3C, 0xF6, + 0x82, 0x67, 0x52, 0x59, 0xE7, 0x02, 0x23, 0x98, 0x12, 0x9A, 0x71, 0xF1, + 0x7C, 0xEA, 0x8D, 0xF7, 0x2E, 0xF8, 0x69, 0x91, 0xCA, 0x58, 0x65, 0x34, + 0xE1, 0xE0, 0x7A, 0xD7, 0xCE, 0xFD, 0x62, 0x94, 0x9F, 0x46, 0xF5, 0xE5, + 0xD3, 0x51, 0x4B, 0x6B, 0x7D, 0x04, 0x18, 0x08, 0xC1, 0x18, 0x23, 0x5A, + 0x2B, 0x88, 0x40, 0x04, 0xE9, 0xF4, 0x7C, 0x64, 0x0C, 0xC5, 0x18, 0x09, + 0x25, 0xD3, 0xB8, 0xCC, 0x4B, 0x50, 0xD6, 0xF5, 0xFD, 0x7C, 0xE9, 0xD5, + 0x38, 0x5B, 0x86, 0xD8, 0x22, 0xFD, 0x38, 0x4B, 0x84, 0xD0, 0xE3, 0xE3, + 0x39, 0x26, 0xD8, 0xF7, 0xFD, 0x24, 0xED, 0x22, 0xED, 0x79, 0x98, 0xAD, + 0xF5, 0xC3, 0xB8, 0x38, 0x6B, 0xDB, 0x75, 0xB3, 0xDD, 0xB5, 0x55, 0x29, + 0x72, 0x8E, 0xBD, 0x4D, 0x94, 0xB2, 0x04, 0xD2, 0xB4, 0x68, 0x84, 0x49, + 0xB0, 0x3A, 0x17, 0x62, 0xB2, 0xEE, 0x3C, 0x4D, 0x4D, 0x9E, 0x95, 0x45, + 0x09, 0x11, 0x98, 0xA5, 0x2B, 0x04, 0x45, 0x18, 0x6E, 0xB7, 0xDD, 0xED, + 0xD5, 0x4A, 0x7B, 0xD0, 0xB5, 0x45, 0x55, 0x08, 0x4C, 0x61, 0x9E, 0x27, + 0x8C, 0x93, 0xB7, 0x1E, 0x82, 0x18, 0x93, 0x4B, 0x29, 0x9D, 0x27, 0xD9, + 0x95, 0xD9, 0x4D, 0x57, 0x41, 0x00, 0x16, 0xAD, 0x8C, 0xB3, 0x5D, 0x53, + 0xBE, 0x7F, 0xBD, 0xCF, 0x04, 0xDD, 0xAE, 0xAA, 0x17, 0xFB, 0xCA, 0x38, + 0xB7, 0xEB, 0xDA, 0x8C, 0x94, 0xC7, 0x8B, 0xEE, 0xC7, 0xF9, 0xE3, 0x97, + 0xCF, 0xF3, 0xB2, 0x68, 0xAD, 0xFB, 0x71, 0xB4, 0xD6, 0xDB, 0x10, 0xCA, + 0x3C, 0xEF, 0x87, 0x59, 0x1B, 0x15, 0x13, 0xD0, 0xD6, 0xDB, 0x5F, 0x8F, + 0x10, 0x42, 0x30, 0x81, 0xAA, 0xA8, 0xCA, 0x22, 0x7F, 0x78, 0x3A, 0x40, + 0xCC, 0xBC, 0x0F, 0x97, 0x7E, 0xC6, 0x18, 0x07, 0xEB, 0x62, 0x08, 0x79, + 0x59, 0x14, 0x65, 0x1E, 0x43, 0x98, 0x66, 0x29, 0x04, 0x9B, 0x16, 0x07, + 0x01, 0x30, 0xD6, 0x73, 0x91, 0x43, 0x88, 0x97, 0x45, 0x2A, 0x6D, 0x21, + 0x80, 0x2E, 0x00, 0x1F, 0x13, 0xC2, 0xD8, 0x86, 0xA8, 0xAD, 0x23, 0x18, + 0x86, 0x00, 0x7C, 0x00, 0xB3, 0xB2, 0xF3, 0x6C, 0x43, 0x04, 0x79, 0x96, + 0x85, 0x98, 0x8C, 0x09, 0x3E, 0x04, 0xCE, 0x31, 0x44, 0x58, 0x6A, 0xF7, + 0xAB, 0x99, 0x26, 0xB5, 0x8A, 0x20, 0x58, 0x1B, 0xAD, 0x72, 0x52, 0x1B, + 0xEB, 0x63, 0x3F, 0x48, 0x17, 0xD2, 0x3C, 0x6B, 0x1F, 0x22, 0x65, 0x54, + 0x2A, 0xAB, 0x17, 0x59, 0x09, 0x9E, 0x65, 0xE4, 0xD4, 0x0F, 0xD6, 0xB9, + 0x97, 0xDB, 0x1A, 0x01, 0xCF, 0x19, 0xE0, 0x18, 0x52, 0x96, 0x7F, 0x79, + 0x7A, 0x32, 0x6E, 0xC1, 0x30, 0x6C, 0x57, 0x19, 0x22, 0x7E, 0x5C, 0x06, + 0xEF, 0x4D, 0x3F, 0x5F, 0x9A, 0x92, 0x1C, 0xCF, 0xF3, 0x69, 0xB4, 0x21, + 0x44, 0x2D, 0xCD, 0xE1, 0x78, 0x01, 0x90, 0xBC, 0x7F, 0xFF, 0xBB, 0xBC, + 0xA8, 0x94, 0x52, 0xD3, 0x34, 0x69, 0xE3, 0x66, 0x65, 0xC6, 0x79, 0xAC, + 0xAA, 0xC2, 0x3B, 0xBD, 0x5A, 0x15, 0x6D, 0xC3, 0x39, 0xC3, 0xCA, 0xD8, + 0x14, 0xD3, 0x30, 0x2E, 0x45, 0x21, 0x78, 0x9E, 0xA9, 0x45, 0x2B, 0x65, + 0x28, 0xC7, 0x9C, 0x65, 0x21, 0x60, 0x6D, 0x62, 0x3F, 0x4D, 0x21, 0x86, + 0x10, 0xE2, 0x30, 0xCF, 0xCA, 0x8C, 0x18, 0xA9, 0x8C, 0xC7, 0xD3, 0x68, + 0x20, 0x82, 0xE3, 0x38, 0x58, 0x6B, 0x86, 0x79, 0xFE, 0xF9, 0xD3, 0x43, + 0x4A, 0xE9, 0xF1, 0x70, 0x7A, 0x78, 0x38, 0x14, 0x79, 0xB1, 0xDE, 0x6E, + 0x42, 0x70, 0x5D, 0xDB, 0x32, 0x4A, 0x67, 0xA5, 0x2F, 0xC3, 0x98, 0x42, + 0xB4, 0xCE, 0x01, 0x08, 0xEB, 0xAA, 0x14, 0x94, 0x65, 0x02, 0x21, 0xE0, + 0x04, 0x25, 0x4D, 0x51, 0x2A, 0x6D, 0xAC, 0xB1, 0xFD, 0x30, 0x66, 0x42, + 0x14, 0x99, 0x98, 0xE7, 0x09, 0xC7, 0x98, 0x10, 0x4C, 0x7F, 0xF8, 0xFA, + 0xED, 0x22, 0xCD, 0xAB, 0xEB, 0xDD, 0x8B, 0xFD, 0x2A, 0x84, 0xB8, 0x6A, + 0x2B, 0xA9, 0x35, 0x67, 0xAC, 0x10, 0xEC, 0xD5, 0x6E, 0xF5, 0x78, 0xEC, + 0x21, 0x84, 0x18, 0x23, 0x0C, 0x20, 0xA7, 0x44, 0x19, 0xFB, 0x9B, 0xB7, + 0x2F, 0x85, 0x60, 0xE3, 0xA8, 0xDA, 0x22, 0x23, 0x30, 0x09, 0xC6, 0xE6, + 0x59, 0x5F, 0x5F, 0x5F, 0x33, 0x46, 0x43, 0x0C, 0x52, 0x4B, 0x02, 0x11, + 0x67, 0xE4, 0xF1, 0x3C, 0xDD, 0xBE, 0x7C, 0xD5, 0xB5, 0x45, 0x70, 0xCA, + 0xAB, 0x69, 0xB7, 0x2E, 0x0B, 0xC1, 0x5E, 0x5E, 0xD5, 0x9B, 0x36, 0xFB, + 0xF3, 0xEF, 0x5F, 0x7F, 0xF3, 0xD5, 0xCE, 0xF8, 0x90, 0x67, 0x7C, 0x53, + 0x67, 0xB7, 0x2F, 0xBA, 0x22, 0x67, 0x57, 0xFB, 0x8E, 0x12, 0xDA, 0x8F, + 0x93, 0xB3, 0x36, 0xB9, 0x14, 0x13, 0xA2, 0x18, 0xDF, 0xBE, 0xD8, 0x63, + 0x04, 0x7F, 0xF9, 0xFC, 0x90, 0x0B, 0xBE, 0x5F, 0xD5, 0xA3, 0x4D, 0x01, + 0x17, 0xA7, 0xD3, 0xE9, 0x7A, 0xD7, 0xFD, 0xE6, 0xDD, 0xAB, 0xDB, 0xDB, + 0xD7, 0x37, 0x37, 0x57, 0xB9, 0x60, 0xEB, 0xF5, 0x26, 0x22, 0x72, 0x75, + 0xFB, 0xBB, 0xEF, 0xBF, 0xFF, 0x1E, 0x27, 0xFD, 0xFA, 0xAA, 0x60, 0x98, + 0x9C, 0x4E, 0x17, 0x82, 0x51, 0x5B, 0x95, 0xFB, 0x6D, 0x33, 0xF4, 0xD3, + 0xD5, 0xFE, 0x6A, 0xD3, 0x35, 0xB7, 0x37, 0xDB, 0x2F, 0x0F, 0x87, 0xE7, + 0x09, 0xFC, 0xD3, 0xBF, 0xFE, 0x6B, 0x16, 0xC7, 0x4D, 0x9B, 0x3B, 0x35, + 0x55, 0x19, 0xD3, 0xDA, 0xF8, 0x18, 0x3E, 0x7E, 0xFE, 0xAC, 0xF4, 0xA4, + 0xE4, 0x72, 0x3C, 0x1E, 0x87, 0xC5, 0xE1, 0x72, 0x6F, 0x03, 0xB4, 0xC6, + 0x00, 0xE0, 0x18, 0xC3, 0x3E, 0x38, 0xCE, 0x59, 0x4C, 0x69, 0x91, 0xF6, + 0x3C, 0xF4, 0x4A, 0x9B, 0x4B, 0x7F, 0x99, 0xE5, 0x52, 0x66, 0x74, 0xD5, + 0x75, 0xDA, 0x03, 0x08, 0x92, 0x33, 0x6A, 0xE8, 0x67, 0xC2, 0x48, 0x80, + 0xE9, 0xCD, 0xCD, 0xCE, 0xB9, 0xF0, 0xFB, 0x6F, 0xDE, 0x7C, 0xBA, 0x3F, + 0x5C, 0xFA, 0x11, 0x81, 0x88, 0x10, 0x14, 0x19, 0xA5, 0x30, 0x39, 0x1F, + 0x01, 0x22, 0x9C, 0x32, 0xA5, 0x7D, 0x4C, 0x70, 0xD5, 0x16, 0x20, 0xC5, + 0x0F, 0x5F, 0x8E, 0x21, 0x22, 0x42, 0xC9, 0xE1, 0xD8, 0x8B, 0x2C, 0x4F, + 0x29, 0x26, 0x00, 0x11, 0x45, 0xA7, 0xF3, 0xB1, 0xCE, 0x05, 0xE7, 0x84, + 0x70, 0x56, 0xE5, 0x85, 0x36, 0xE6, 0x32, 0xF5, 0x5D, 0xD7, 0x12, 0x82, + 0x2F, 0xC3, 0x32, 0xCE, 0x66, 0x9A, 0xCD, 0xB8, 0xE8, 0xB2, 0xC8, 0x29, + 0x85, 0xE7, 0x49, 0x62, 0x84, 0x28, 0xC5, 0x5A, 0x69, 0xE7, 0xA2, 0xF1, + 0x61, 0xD1, 0xD6, 0x58, 0x27, 0x38, 0x9E, 0x17, 0x79, 0xBA, 0x4C, 0x94, + 0xD3, 0xCD, 0xB6, 0xBA, 0xDA, 0x75, 0x6A, 0x76, 0x9F, 0x3E, 0x5F, 0x04, + 0xE7, 0xB3, 0x54, 0xC7, 0xCB, 0xC2, 0x18, 0xBD, 0x9C, 0x67, 0x6B, 0xB4, + 0x71, 0xE1, 0x74, 0x9C, 0xBE, 0xFC, 0xFC, 0xAC, 0x95, 0x95, 0x8B, 0x3A, + 0x9E, 0xE6, 0x94, 0xC0, 0x78, 0x91, 0x6A, 0x36, 0xCE, 0x79, 0x65, 0x82, + 0x76, 0xE1, 0xD2, 0xCF, 0x5C, 0xF0, 0x3C, 0x2F, 0xAF, 0x36, 0x1B, 0x63, + 0x4D, 0x82, 0x78, 0x96, 0x2A, 0x21, 0x46, 0x08, 0x24, 0x04, 0x01, 0x44, + 0x7C, 0x4A, 0x5A, 0x6A, 0xCA, 0x68, 0x82, 0x40, 0x2E, 0xCA, 0x1A, 0xE7, + 0x7D, 0x2C, 0xCB, 0x3C, 0x17, 0x99, 0x73, 0x41, 0x69, 0x29, 0x04, 0xCB, + 0x05, 0x79, 0xB1, 0xEB, 0x62, 0x8A, 0x9C, 0x65, 0xC7, 0xCB, 0x50, 0x67, + 0xE2, 0x66, 0xB3, 0x6A, 0x9A, 0x72, 0x9E, 0x66, 0x02, 0xE0, 0x76, 0xD5, + 0x0C, 0xB3, 0xBA, 0xD9, 0xAC, 0x10, 0xC4, 0x3E, 0x31, 0x2E, 0xA8, 0x94, + 0xB2, 0x2A, 0xF3, 0x42, 0xA0, 0xF3, 0xA5, 0xE7, 0x59, 0x9E, 0xF1, 0x44, + 0x38, 0x26, 0x8C, 0x73, 0xC6, 0xDF, 0xBC, 0xD8, 0x5C, 0x5D, 0xAD, 0x6E, + 0x6E, 0x6E, 0xAE, 0xAF, 0xF6, 0xD7, 0xBB, 0xD5, 0xBB, 0xD7, 0xAF, 0xDA, + 0xA6, 0xBA, 0xDA, 0xAD, 0x5E, 0xBC, 0xBA, 0xAE, 0xDB, 0xFA, 0xAB, 0xF7, + 0x2F, 0xBB, 0xB6, 0x9B, 0xA4, 0xF5, 0xC1, 0x6B, 0xAB, 0x94, 0xD2, 0x6F, + 0x5F, 0xBD, 0x20, 0x18, 0x10, 0x14, 0x67, 0x29, 0x6D, 0x08, 0xDA, 0x58, + 0x65, 0x0C, 0xC5, 0xA0, 0xC8, 0x32, 0x6D, 0x9C, 0xF5, 0x5E, 0x88, 0x7C, + 0x59, 0x24, 0xC6, 0x68, 0x5A, 0xE4, 0xE3, 0xE1, 0x59, 0x1A, 0x57, 0x35, + 0x6B, 0xC1, 0x88, 0xB7, 0xF6, 0x7A, 0xB7, 0x2E, 0x84, 0x68, 0xDB, 0xBC, + 0x29, 0xF3, 0x5D, 0xDB, 0x6C, 0xBB, 0x6A, 0xDD, 0xE6, 0x2F, 0xAF, 0xB6, + 0x75, 0xCE, 0x95, 0xB2, 0x79, 0x9E, 0x25, 0x88, 0xCE, 0xE7, 0x01, 0x42, + 0x40, 0x08, 0x46, 0x00, 0x24, 0x08, 0x7D, 0x88, 0x18, 0x21, 0x82, 0x51, + 0x59, 0x70, 0x4A, 0x90, 0x92, 0x8E, 0x53, 0x6C, 0x5C, 0x24, 0x94, 0x95, + 0x79, 0xB6, 0x2C, 0xCA, 0x5A, 0x0F, 0x21, 0xF2, 0x21, 0x42, 0x84, 0x9D, + 0x07, 0x09, 0x80, 0x77, 0x37, 0xDD, 0xC3, 0x61, 0x40, 0x98, 0x94, 0x9C, + 0x30, 0x0C, 0x46, 0x69, 0x74, 0x0C, 0x88, 0x20, 0x98, 0x20, 0x15, 0x6C, + 0x5A, 0x94, 0x75, 0x8E, 0x72, 0xE6, 0xA4, 0x2E, 0x38, 0x45, 0x10, 0x1D, + 0xCF, 0x3D, 0x13, 0x6C, 0x5D, 0x12, 0xEF, 0xAC, 0x73, 0x9E, 0x13, 0x2C, + 0x18, 0xA5, 0x82, 0x5A, 0xAF, 0x9C, 0x0D, 0x6D, 0x27, 0x8C, 0xF3, 0xDA, + 0xB8, 0x3A, 0x17, 0x1C, 0xA6, 0x4D, 0x93, 0x1F, 0x2F, 0xF3, 0xE3, 0xC5, + 0xF8, 0x08, 0xCE, 0x97, 0x45, 0x4A, 0xD3, 0x36, 0xF5, 0xBB, 0x77, 0xBF, + 0xDB, 0xAC, 0xB6, 0xE3, 0x70, 0x19, 0xA7, 0x29, 0x46, 0xB3, 0xDA, 0xD6, + 0x84, 0x20, 0xC1, 0x38, 0xC1, 0x00, 0xA4, 0x50, 0x70, 0x1A, 0x8C, 0xC7, + 0x0C, 0x47, 0x90, 0xBC, 0x8F, 0xAB, 0x55, 0x4B, 0x10, 0x31, 0x52, 0x59, + 0xE3, 0xD5, 0xAC, 0x53, 0x48, 0x08, 0x11, 0x6B, 0x62, 0x3F, 0x19, 0xE7, + 0xC3, 0x38, 0x8C, 0x08, 0x13, 0x65, 0x9D, 0x75, 0xE3, 0x65, 0x98, 0x13, + 0x00, 0x8B, 0xD4, 0x87, 0xD3, 0xD9, 0x58, 0x67, 0x7D, 0x78, 0x78, 0x3E, + 0x46, 0x88, 0x28, 0xA5, 0xF3, 0xBC, 0x18, 0xEB, 0x09, 0xA5, 0x88, 0x33, + 0x9E, 0x67, 0x6D, 0xC3, 0x23, 0x4A, 0x59, 0x8E, 0x76, 0x9B, 0x7C, 0xD5, + 0x55, 0x94, 0x91, 0x90, 0x20, 0x48, 0x80, 0x42, 0x2F, 0x08, 0x0A, 0xCE, + 0xFA, 0x10, 0xCA, 0x8C, 0x3F, 0x9F, 0x7B, 0x84, 0x50, 0x5B, 0x96, 0x10, + 0x41, 0xA5, 0xAD, 0x75, 0x0E, 0x0B, 0x8E, 0x5E, 0xED, 0xD6, 0xBB, 0x55, + 0x8B, 0x41, 0xFA, 0xFB, 0x3F, 0xFE, 0xD6, 0x58, 0xB7, 0x5A, 0xD5, 0x8B, + 0x31, 0x30, 0x86, 0xAE, 0x2A, 0xAA, 0x8C, 0x2C, 0x8B, 0xF2, 0x21, 0x31, + 0xC6, 0x0F, 0xE7, 0x61, 0xB7, 0x5B, 0xED, 0xB6, 0xEB, 0x75, 0x53, 0x57, + 0x79, 0x16, 0x62, 0xF4, 0x3E, 0x54, 0x05, 0x83, 0x88, 0xBC, 0x7F, 0xF7, + 0x55, 0xDD, 0x75, 0x55, 0x55, 0xA5, 0x94, 0xA6, 0x69, 0xA4, 0x84, 0xD6, + 0x55, 0x4E, 0x08, 0xDE, 0x74, 0xC5, 0xDF, 0xFC, 0xF6, 0x65, 0x5B, 0xD2, + 0x8C, 0x82, 0xBA, 0xE4, 0xAF, 0xAE, 0x1B, 0x90, 0x82, 0xD4, 0x6E, 0xE8, + 0x07, 0x63, 0xE2, 0xB0, 0xB8, 0xA3, 0x2C, 0x71, 0xB0, 0x94, 0x44, 0x82, + 0xD1, 0xA6, 0xCD, 0xBA, 0x4A, 0x34, 0x39, 0xAB, 0x0B, 0xDE, 0x14, 0xE2, + 0x7A, 0xDB, 0x6C, 0x56, 0xC5, 0xDB, 0x57, 0x9B, 0x6D, 0x57, 0x9F, 0x8F, + 0x97, 0x52, 0xF0, 0x57, 0xD7, 0xFB, 0x08, 0xB1, 0xB1, 0xAE, 0xDB, 0xBC, + 0xA8, 0x32, 0x7A, 0xBD, 0xBB, 0xE2, 0x3C, 0xFF, 0xFD, 0x6F, 0xDE, 0x20, + 0x94, 0xAA, 0xB2, 0xBC, 0x4C, 0x52, 0xB4, 0xAF, 0xFE, 0xF2, 0xCF, 0xFF, + 0x0D, 0xBA, 0xD3, 0xEF, 0xBE, 0xDA, 0x62, 0x0E, 0x30, 0xC1, 0x5D, 0x5B, + 0x8A, 0x8C, 0x6C, 0xDA, 0xB2, 0xA9, 0x8B, 0xAB, 0xDD, 0x2A, 0x81, 0x98, + 0x97, 0x1D, 0x01, 0x7E, 0xD6, 0xFE, 0xBC, 0xB8, 0x1C, 0xBB, 0x55, 0x5D, + 0xCC, 0x72, 0xD1, 0xC6, 0x0E, 0xD3, 0x0C, 0x31, 0x94, 0x52, 0xBA, 0xE0, + 0x2E, 0xE3, 0xBC, 0x68, 0xA5, 0x3C, 0x2A, 0xF7, 0xBF, 0xB9, 0x4C, 0xCB, + 0x77, 0xFF, 0xFE, 0xAF, 0xF3, 0x3C, 0xC4, 0x14, 0xB5, 0x31, 0x94, 0x53, + 0x91, 0xB1, 0xCD, 0xBA, 0xC2, 0x31, 0x0A, 0x46, 0xCF, 0xE3, 0x62, 0xAD, + 0xDE, 0x6D, 0x6B, 0xED, 0x3C, 0xC2, 0xE4, 0x70, 0x38, 0xED, 0xBA, 0x0C, + 0x42, 0x8C, 0x20, 0xA8, 0x72, 0x4E, 0x00, 0x68, 0x0B, 0xE1, 0x7C, 0xF8, + 0xED, 0xFB, 0xDB, 0xBF, 0xFC, 0xC7, 0x4F, 0x4D, 0x5B, 0x31, 0x42, 0xA4, + 0x52, 0x75, 0xDB, 0x9C, 0x8E, 0x03, 0x4C, 0x89, 0x60, 0x8A, 0x11, 0xB4, + 0x21, 0x3A, 0x6B, 0x9D, 0xF7, 0x52, 0x59, 0x6B, 0x7D, 0x04, 0x30, 0x46, + 0x68, 0x8C, 0xB6, 0x2E, 0x71, 0x46, 0xB3, 0x2C, 0xB3, 0xCE, 0x18, 0xA5, + 0x8A, 0x8C, 0xF2, 0x8C, 0x81, 0x08, 0x33, 0x41, 0x4E, 0x97, 0xCB, 0xB4, + 0xA8, 0xDD, 0xA6, 0x95, 0x4A, 0x2F, 0xDA, 0x66, 0x19, 0x5F, 0x16, 0xFD, + 0x87, 0x6F, 0x6E, 0x8B, 0x9C, 0xB7, 0x25, 0x52, 0xC6, 0x39, 0x17, 0x38, + 0xA3, 0xA7, 0xCB, 0x88, 0x30, 0x4A, 0x10, 0x9D, 0x87, 0xB1, 0xA9, 0xC4, + 0x9B, 0xD7, 0x7B, 0x42, 0x71, 0x59, 0xB0, 0x97, 0x37, 0x1D, 0xC3, 0xA8, + 0x2A, 0xF2, 0xC7, 0xC7, 0x49, 0x08, 0xE1, 0xBC, 0xFF, 0xE5, 0xCB, 0x61, + 0xBF, 0x6F, 0x7E, 0xFB, 0xCD, 0x2B, 0x6D, 0x9D, 0x5C, 0x8C, 0x0F, 0x41, + 0x4B, 0x87, 0x08, 0x39, 0x9D, 0x67, 0x6B, 0x7D, 0x08, 0x41, 0x2D, 0xCE, + 0xBA, 0xE8, 0x7C, 0x02, 0x10, 0x4D, 0xB3, 0x51, 0xDA, 0x2A, 0xE3, 0x09, + 0xE5, 0xB9, 0xC8, 0x96, 0x65, 0x11, 0x9C, 0x34, 0x55, 0x75, 0xF7, 0xF8, + 0xE4, 0xBC, 0xA7, 0x08, 0x3B, 0x0F, 0xA4, 0xD4, 0x31, 0x06, 0xA3, 0x5D, + 0x0C, 0x11, 0x81, 0x84, 0x10, 0x9C, 0x66, 0x5D, 0xE4, 0x42, 0x2D, 0x32, + 0x85, 0x54, 0xE5, 0xE2, 0x66, 0xBF, 0xDE, 0x6F, 0xDA, 0xA6, 0xE0, 0x39, + 0xA3, 0x45, 0x91, 0x21, 0x80, 0x36, 0x75, 0xBE, 0x6E, 0x72, 0x91, 0x57, + 0x3E, 0x84, 0xFE, 0x72, 0x21, 0x18, 0x52, 0x4E, 0xCB, 0x9C, 0x0C, 0x93, + 0xB2, 0x2E, 0x06, 0xBB, 0x2C, 0x8B, 0xD9, 0x74, 0x75, 0xF4, 0xCE, 0x28, + 0x05, 0x10, 0x8F, 0x21, 0x25, 0x98, 0x6C, 0x48, 0xEF, 0x5F, 0xBF, 0xB8, + 0xD9, 0x75, 0xEB, 0xAE, 0x6B, 0x9B, 0x2E, 0x02, 0xA6, 0x74, 0x48, 0x09, + 0x2A, 0x65, 0x3F, 0x7D, 0x79, 0x7E, 0x7C, 0xEE, 0xCF, 0x97, 0xC9, 0x85, + 0xD0, 0x0F, 0x1A, 0x51, 0x26, 0x72, 0xD1, 0xB5, 0xC5, 0xBA, 0x2D, 0x5E, + 0xBD, 0x58, 0xEF, 0xB7, 0xCD, 0x7E, 0xDB, 0x5E, 0x6D, 0x5B, 0x84, 0x31, + 0x48, 0xA9, 0xA9, 0x8A, 0x4C, 0x08, 0x0C, 0x20, 0x4C, 0xE9, 0x38, 0x4C, + 0x00, 0x00, 0xCE, 0xD8, 0x76, 0xDD, 0xF4, 0xFD, 0xB0, 0xDB, 0x6E, 0x12, + 0x44, 0x00, 0x80, 0x14, 0xE3, 0xEB, 0xAB, 0x6D, 0x5B, 0x15, 0x18, 0xC0, + 0x10, 0xA2, 0xD6, 0x4E, 0xA9, 0xE5, 0x3C, 0x0C, 0xC6, 0x5A, 0x04, 0x71, + 0x59, 0xE7, 0x37, 0x9B, 0xD5, 0xCD, 0xBE, 0xDB, 0x6D, 0xCA, 0xBB, 0x87, + 0x93, 0xB6, 0xBE, 0x2C, 0xB3, 0x14, 0x03, 0x84, 0xBF, 0xCE, 0x7C, 0xE0, + 0xB2, 0xE4, 0x52, 0xDB, 0xAE, 0xC9, 0x82, 0x8F, 0x29, 0xA6, 0x97, 0xFB, + 0xCD, 0x8B, 0xDD, 0xAA, 0x6B, 0x8A, 0x65, 0x96, 0xC6, 0xD8, 0x32, 0x17, + 0xDA, 0xF8, 0x08, 0x00, 0x44, 0x54, 0x4A, 0x95, 0x09, 0x66, 0xB4, 0x9D, + 0xA4, 0xA2, 0x18, 0x76, 0x35, 0xBB, 0xF4, 0x32, 0x02, 0x50, 0xD5, 0x42, + 0x64, 0x59, 0x5E, 0x30, 0x8C, 0x52, 0xB3, 0xAA, 0xAA, 0xB6, 0x32, 0xCE, + 0x95, 0x8C, 0x7A, 0x6B, 0x16, 0xA5, 0x13, 0x44, 0x29, 0xF9, 0xCB, 0x30, + 0x65, 0x9C, 0xB5, 0x55, 0x4E, 0x18, 0x66, 0xA2, 0x8A, 0xC9, 0x39, 0xE7, + 0x52, 0x02, 0xCF, 0xBD, 0x26, 0x18, 0x39, 0xA7, 0xF3, 0x9C, 0x57, 0x25, + 0x3F, 0xF7, 0x6A, 0x98, 0x97, 0x75, 0x57, 0x94, 0x9C, 0xB6, 0x55, 0x76, + 0xBD, 0xA9, 0x36, 0xAB, 0x1B, 0x42, 0x8B, 0xC3, 0xD3, 0xC3, 0xE9, 0x74, + 0x80, 0x28, 0xEE, 0xF7, 0x5D, 0x96, 0x21, 0xC1, 0x08, 0x63, 0x2C, 0xC6, + 0xB8, 0x48, 0x15, 0x7D, 0x2C, 0xB3, 0xFC, 0x3C, 0x4C, 0x4A, 0xDB, 0xFD, + 0x6E, 0x93, 0x53, 0xF6, 0xE5, 0xEE, 0xC0, 0x19, 0x95, 0x8B, 0xCE, 0x72, + 0x16, 0x22, 0x42, 0x00, 0xA6, 0x14, 0xAC, 0x8B, 0x8C, 0xB3, 0x32, 0xE7, + 0x65, 0x91, 0x7B, 0x6F, 0xBC, 0x4B, 0xFD, 0x1C, 0xAC, 0x4F, 0x82, 0xE1, + 0xE3, 0x65, 0x9C, 0x16, 0x67, 0x8C, 0xAD, 0xCA, 0xF2, 0xFD, 0xED, 0x6B, + 0x65, 0xA4, 0x35, 0x36, 0xF8, 0x24, 0x44, 0xF6, 0xF0, 0x74, 0xB0, 0x56, + 0x69, 0xAD, 0x7E, 0xFE, 0xFC, 0x04, 0x49, 0xA4, 0x8C, 0x23, 0xC6, 0x78, + 0x86, 0x6F, 0x6E, 0x36, 0x55, 0x41, 0x2B, 0x81, 0x42, 0xD4, 0x75, 0x9E, + 0xDD, 0x5C, 0xBD, 0x8E, 0xC1, 0x4F, 0x8B, 0x7C, 0xFF, 0xF6, 0x4D, 0x4A, + 0x69, 0x59, 0x96, 0xEB, 0xEB, 0xEB, 0xF5, 0x7A, 0x8D, 0xFF, 0xF3, 0xFF, + 0xF4, 0xDF, 0xD5, 0x4D, 0x6B, 0xE5, 0xF2, 0xE7, 0xDF, 0x7F, 0x2D, 0xB5, + 0xB7, 0x4A, 0x41, 0x8C, 0x42, 0x4C, 0xEF, 0xDE, 0xBC, 0xCC, 0x8B, 0xC2, + 0x58, 0x67, 0x6C, 0xA8, 0x9A, 0x35, 0xC6, 0x69, 0xBB, 0x6D, 0xAF, 0xAE, + 0x77, 0xEB, 0x75, 0x55, 0x08, 0x86, 0x30, 0x70, 0x3E, 0x36, 0x55, 0xD1, + 0xD4, 0xCD, 0xD5, 0xFE, 0x7A, 0xB7, 0xDF, 0x5B, 0xEB, 0x11, 0x4C, 0xCE, + 0x48, 0x6B, 0x34, 0xA6, 0xF8, 0x9B, 0xDB, 0x9B, 0xD7, 0x57, 0xDD, 0xCB, + 0x6D, 0x63, 0x94, 0x1A, 0xC6, 0x45, 0x29, 0x7B, 0x38, 0x8D, 0x77, 0x8F, + 0xE7, 0x2F, 0xCF, 0xFA, 0xC3, 0xA7, 0xC3, 0xC3, 0xD3, 0x30, 0x8C, 0x6A, + 0xD6, 0x54, 0x86, 0xEC, 0x72, 0xB8, 0xAF, 0x72, 0x34, 0xCC, 0xEA, 0xF9, + 0x38, 0xDC, 0xDD, 0x1F, 0x62, 0xF2, 0x59, 0x4E, 0x0A, 0xC1, 0xD6, 0x6D, + 0xB1, 0xDD, 0xE4, 0x8C, 0x41, 0xC1, 0xF0, 0x66, 0xDD, 0xEC, 0x37, 0x55, + 0x80, 0xE4, 0xD3, 0xF3, 0x12, 0xCC, 0x42, 0x79, 0x86, 0x28, 0x73, 0xEA, + 0x12, 0x23, 0x5A, 0xB5, 0x19, 0xF4, 0xCA, 0x3A, 0xF0, 0x34, 0xC2, 0xC7, + 0xC3, 0x29, 0x03, 0xCB, 0xFF, 0xFC, 0x3F, 0xFE, 0xED, 0xB1, 0x3F, 0x9F, + 0x2F, 0x17, 0x88, 0x00, 0x00, 0xC1, 0x04, 0x47, 0x19, 0x76, 0xC6, 0xCE, + 0x52, 0x51, 0x82, 0x54, 0x10, 0xFF, 0xFE, 0xE3, 0xA7, 0x41, 0xBA, 0x4F, + 0x5F, 0x3E, 0x6F, 0xEA, 0xE2, 0x78, 0x3E, 0x73, 0x46, 0xBD, 0x8F, 0xA7, + 0x7E, 0x18, 0xE7, 0x65, 0x96, 0xEA, 0xE3, 0xDD, 0xA9, 0x6B, 0xBB, 0x5C, + 0xD0, 0xC8, 0x57, 0x93, 0x5C, 0x86, 0xD3, 0x5D, 0x5E, 0x55, 0x56, 0x1B, + 0x6B, 0xF5, 0xDD, 0xF3, 0x39, 0x21, 0x78, 0x3E, 0x0F, 0x46, 0x9B, 0x4D, + 0x57, 0x63, 0x08, 0x8D, 0x31, 0xE3, 0xB2, 0x6C, 0x56, 0x15, 0x84, 0xF0, + 0x7C, 0x3A, 0x0F, 0xD3, 0x54, 0x64, 0xD9, 0xC7, 0xBB, 0xA7, 0x17, 0xBB, + 0x4E, 0x6B, 0xFB, 0xA7, 0x6F, 0x5E, 0xFF, 0xDB, 0x0F, 0x9F, 0x6E, 0xF6, + 0x3B, 0x4C, 0xF9, 0x7F, 0xFC, 0xF0, 0xB1, 0xCC, 0x45, 0x8C, 0x81, 0x63, + 0x02, 0x40, 0xB2, 0xCE, 0xBD, 0xB9, 0xDA, 0x4D, 0xB3, 0xDC, 0x74, 0x35, + 0x04, 0x50, 0x70, 0x11, 0x00, 0x98, 0x66, 0x45, 0x08, 0x09, 0x31, 0x40, + 0x08, 0x08, 0xC5, 0x8B, 0x94, 0x9B, 0xF5, 0x6A, 0x51, 0xCA, 0x39, 0xDB, + 0x36, 0x65, 0x59, 0x08, 0x6D, 0x1C, 0x86, 0x48, 0x1A, 0x93, 0x40, 0xCA, + 0x58, 0xE6, 0xAC, 0x1B, 0x97, 0x45, 0x1B, 0x17, 0x42, 0xEC, 0xAA, 0xEC, + 0x72, 0x99, 0x87, 0x69, 0x68, 0x6B, 0xDE, 0x95, 0x02, 0x03, 0xF4, 0xE5, + 0xF1, 0xE4, 0x7C, 0xF0, 0xDE, 0x43, 0x0C, 0x32, 0xCE, 0xEB, 0x92, 0x15, + 0x39, 0x16, 0x9C, 0x32, 0xCC, 0x82, 0x73, 0x4D, 0x99, 0x39, 0x93, 0x0E, + 0xA7, 0xE9, 0xD7, 0xA7, 0xE0, 0x74, 0x19, 0xAF, 0x36, 0x9B, 0xA1, 0x9F, + 0xE7, 0x45, 0xD6, 0x55, 0x5E, 0x66, 0x59, 0x88, 0x7E, 0xD6, 0x56, 0x6B, + 0x23, 0x17, 0x9D, 0x12, 0x88, 0x09, 0x68, 0x1B, 0x44, 0xC6, 0x21, 0x46, + 0x4A, 0x79, 0xE7, 0x7C, 0x5D, 0xE7, 0xB9, 0xE0, 0x4D, 0xDD, 0xD4, 0xF5, + 0xEA, 0xF5, 0xCB, 0xFD, 0x8B, 0x5D, 0xFD, 0xFE, 0xF6, 0x6A, 0xB7, 0xED, + 0x9A, 0xBA, 0x9C, 0xA6, 0x99, 0x52, 0xE2, 0xBC, 0x9F, 0x66, 0xE5, 0x7C, + 0xC8, 0x19, 0x9E, 0x26, 0xED, 0x43, 0xAA, 0x33, 0xEE, 0xAC, 0xD5, 0x46, + 0x37, 0x55, 0x05, 0x01, 0x18, 0x86, 0x19, 0x04, 0x10, 0x7D, 0x74, 0x2E, + 0xED, 0x76, 0x9B, 0xED, 0xAA, 0x59, 0xAF, 0x3A, 0xCE, 0x05, 0x04, 0x28, + 0xC5, 0x50, 0xD7, 0xA5, 0x4F, 0xD6, 0xFA, 0x88, 0xA9, 0x68, 0x9A, 0x3C, + 0x45, 0xDD, 0xAD, 0x3A, 0x9E, 0x97, 0x72, 0x91, 0x28, 0x21, 0x84, 0x58, + 0x5E, 0xE4, 0xDE, 0xA7, 0xD7, 0xD7, 0x37, 0x6D, 0xDE, 0xF5, 0x93, 0x12, + 0x22, 0x3F, 0xF5, 0xE6, 0xEE, 0xE9, 0xF2, 0xE5, 0xE1, 0xF1, 0xD4, 0x0F, + 0x00, 0x26, 0x17, 0xA2, 0xF3, 0xB1, 0xC8, 0x2B, 0x80, 0xD0, 0xE3, 0xF3, + 0xC5, 0x79, 0x1F, 0x82, 0x1F, 0x2E, 0xE3, 0x3C, 0x69, 0x8C, 0xC9, 0xE3, + 0xF3, 0xE5, 0xC3, 0xE7, 0x67, 0x88, 0x28, 0x63, 0xEC, 0xF5, 0xD5, 0xE6, + 0xD5, 0xF5, 0xFA, 0xE5, 0xF5, 0x6A, 0xD3, 0x55, 0xCB, 0x2C, 0x27, 0xA9, + 0x01, 0x42, 0xEF, 0x5F, 0x5F, 0xBF, 0x7F, 0xF3, 0x1A, 0x42, 0xD8, 0xB4, + 0x75, 0x53, 0x17, 0x82, 0xE1, 0xEB, 0x55, 0xE9, 0xAC, 0x3F, 0x9E, 0x47, + 0xEB, 0xC2, 0xA2, 0xD4, 0xC3, 0xA1, 0xFF, 0xFC, 0x74, 0x3C, 0x9D, 0xA7, + 0x59, 0x1A, 0x65, 0xDC, 0xBC, 0xE8, 0xE3, 0x65, 0xD4, 0xCE, 0x85, 0x98, + 0x36, 0x9B, 0xCA, 0x5A, 0x2F, 0x95, 0xB1, 0xD6, 0x01, 0x04, 0x04, 0xC7, + 0xB9, 0xC0, 0x9C, 0x73, 0x63, 0x9C, 0x36, 0x0E, 0x00, 0xF0, 0xCD, 0x9B, + 0x17, 0xDF, 0xBC, 0x7B, 0xBB, 0x6E, 0x4A, 0xC1, 0x88, 0x52, 0x5A, 0x30, + 0x9A, 0x0B, 0xAA, 0x8C, 0xF3, 0x21, 0xC5, 0x10, 0x43, 0x8C, 0x8C, 0xE0, + 0x49, 0x3A, 0x82, 0x11, 0x4C, 0xC1, 0x79, 0x1F, 0x01, 0x12, 0x1C, 0x5F, + 0x2E, 0x33, 0x42, 0xD1, 0x5A, 0x6B, 0x8D, 0xB5, 0x46, 0x39, 0xA7, 0xCB, + 0x9C, 0x0B, 0x04, 0xA2, 0x77, 0x01, 0x42, 0x2E, 0x58, 0x5E, 0x8A, 0xAC, + 0x40, 0xC9, 0x25, 0x1F, 0xC3, 0x79, 0x92, 0x31, 0x61, 0x08, 0xA2, 0xD4, + 0xDA, 0x27, 0x42, 0x10, 0xB8, 0x5A, 0x67, 0x84, 0x60, 0x4C, 0xE0, 0xA2, + 0xCC, 0x30, 0x2D, 0x8C, 0x72, 0x92, 0x10, 0x80, 0x69, 0xDD, 0xE5, 0xEB, + 0xD5, 0x55, 0x4C, 0xFC, 0x7C, 0x3E, 0x68, 0x3D, 0x09, 0xC1, 0x5E, 0xBF, + 0xEA, 0x60, 0x8C, 0x7A, 0x36, 0x4D, 0x99, 0x7F, 0xBE, 0xBB, 0x77, 0xC1, + 0x0E, 0xE3, 0x52, 0xE5, 0x45, 0x3F, 0x4B, 0x96, 0x61, 0x81, 0x49, 0x95, + 0x97, 0x3F, 0xFD, 0x7C, 0xBF, 0xDE, 0xB4, 0x04, 0x21, 0xA3, 0x35, 0x44, + 0x90, 0xD1, 0x0C, 0xA4, 0xB8, 0x28, 0x59, 0x56, 0x85, 0x5C, 0x34, 0x81, + 0x88, 0x10, 0x22, 0x97, 0x79, 0x9C, 0x4D, 0xD7, 0xB6, 0x11, 0x3A, 0xEB, + 0x4D, 0x57, 0xE7, 0x29, 0x81, 0x97, 0x37, 0xAF, 0xF7, 0xDB, 0xCD, 0x34, + 0x8C, 0x9C, 0xB2, 0xB2, 0x6C, 0x18, 0x81, 0x10, 0xC2, 0x65, 0x91, 0x95, + 0xE0, 0x87, 0x93, 0xC2, 0x98, 0x5A, 0xE3, 0xAC, 0x31, 0x6D, 0x55, 0x25, + 0xEB, 0xE7, 0x69, 0x06, 0x29, 0x22, 0x00, 0x20, 0x26, 0x9C, 0x65, 0x14, + 0x13, 0x8C, 0xE1, 0xFE, 0xC5, 0x55, 0xF4, 0x5A, 0x08, 0xBA, 0x5A, 0x35, + 0xED, 0xBA, 0xCE, 0x0A, 0x86, 0xFF, 0x87, 0x7F, 0xF8, 0xFB, 0xAA, 0x5A, + 0xE5, 0x0C, 0x79, 0x9F, 0x8C, 0xB5, 0x29, 0x85, 0x94, 0x52, 0xD3, 0x14, + 0x65, 0x95, 0xCD, 0x8B, 0x0C, 0x11, 0x54, 0x55, 0xB5, 0xBB, 0xDA, 0x76, + 0x8D, 0xD8, 0xED, 0xD6, 0xD1, 0xDA, 0xCB, 0xE9, 0xB9, 0xAC, 0x45, 0x4C, + 0x89, 0x11, 0x9A, 0xA2, 0xDB, 0xAD, 0x5B, 0x46, 0x71, 0x88, 0x21, 0x7A, + 0xCB, 0x08, 0x22, 0x04, 0x2B, 0x39, 0x96, 0x79, 0x5E, 0x66, 0xF9, 0xF1, + 0x70, 0xB9, 0x8C, 0x6E, 0x98, 0x34, 0x44, 0x6C, 0x91, 0x7A, 0x94, 0x6A, + 0x94, 0x91, 0x94, 0xD7, 0x90, 0xD7, 0xD3, 0xD8, 0x9F, 0xFB, 0x91, 0x16, + 0x5D, 0xD0, 0x73, 0xF0, 0x8A, 0xE2, 0x70, 0xB8, 0x4C, 0xD3, 0xA2, 0x52, + 0x0A, 0x21, 0x84, 0x4F, 0x9F, 0x9F, 0x87, 0x7E, 0x32, 0xC6, 0xFD, 0xF8, + 0xE1, 0xF1, 0xE9, 0x38, 0x59, 0x17, 0x2F, 0xF3, 0x32, 0x2A, 0xCD, 0xB3, + 0x7C, 0x51, 0x21, 0xCB, 0x00, 0x4A, 0x61, 0x31, 0xA1, 0x62, 0xA1, 0x6E, + 0xD6, 0xE3, 0x2C, 0x31, 0xC2, 0xFF, 0xF4, 0xEF, 0x77, 0x09, 0x91, 0x5F, + 0x3E, 0x7C, 0xF7, 0xED, 0xB7, 0x5F, 0x49, 0x29, 0xA7, 0xE1, 0x6C, 0x9C, + 0x8B, 0x09, 0x49, 0x65, 0x97, 0x79, 0x3E, 0x9E, 0x2E, 0x8F, 0xC7, 0xD3, + 0x65, 0x1C, 0xBD, 0xF7, 0xF3, 0xAC, 0x1F, 0x2F, 0xF2, 0xC3, 0x2F, 0x1F, + 0xBF, 0xFE, 0xED, 0x1F, 0xA7, 0xCB, 0x73, 0x55, 0x8A, 0xE3, 0xA5, 0x27, + 0x14, 0x33, 0x91, 0xEB, 0x40, 0x59, 0xD1, 0xAD, 0xAF, 0x5E, 0xBF, 0xBD, + 0x69, 0x73, 0x81, 0xBE, 0xFF, 0xF1, 0x67, 0xCA, 0xF3, 0xFD, 0xCD, 0xED, + 0xD4, 0x9F, 0xC6, 0xFE, 0x84, 0x30, 0xFE, 0x75, 0xED, 0x91, 0x33, 0x3A, + 0x8E, 0xF2, 0x70, 0x1E, 0xBB, 0xA6, 0x2C, 0x33, 0x3A, 0x4C, 0x32, 0x01, + 0xB0, 0xCC, 0x6A, 0x91, 0xE6, 0xDD, 0x9B, 0x57, 0x4A, 0x5B, 0x41, 0xF1, + 0x9F, 0x7F, 0x73, 0xFB, 0xD5, 0xED, 0xCD, 0x7F, 0xFB, 0xEB, 0x8F, 0x52, + 0xB9, 0xAB, 0xCD, 0xEA, 0xD3, 0xDD, 0x23, 0xC1, 0xE0, 0xF7, 0x5F, 0xBD, + 0xB4, 0xD6, 0xE5, 0x42, 0x7C, 0xFF, 0xE3, 0x87, 0x3F, 0xFF, 0xEE, 0xED, + 0x2F, 0x5F, 0x8E, 0xDE, 0x9A, 0x8C, 0x52, 0x6D, 0xFD, 0xF1, 0xD2, 0x1B, + 0x65, 0xB3, 0x3C, 0x07, 0x10, 0x7A, 0xEB, 0x28, 0xC1, 0x18, 0xA5, 0xCD, + 0xBA, 0xCB, 0xB3, 0xEC, 0xE1, 0xE9, 0x39, 0xE3, 0x0C, 0x01, 0xA8, 0x74, + 0xE8, 0xEA, 0x4A, 0x1B, 0x35, 0xCF, 0x0B, 0x80, 0xB4, 0x29, 0x72, 0xA5, + 0x6D, 0x08, 0xBE, 0x2C, 0x78, 0x95, 0x65, 0x20, 0x06, 0x00, 0x52, 0x5D, + 0x12, 0x04, 0xD3, 0xBA, 0x2C, 0x8A, 0xBC, 0xBC, 0xDA, 0x76, 0xAF, 0xF7, + 0xEB, 0x9B, 0x5D, 0xFB, 0xF6, 0xE5, 0xAE, 0xCC, 0xC8, 0x8B, 0x6D, 0xB3, + 0x6E, 0xCA, 0x75, 0x27, 0x60, 0x02, 0x04, 0xE1, 0x77, 0xB7, 0xFB, 0x26, + 0xCF, 0xB6, 0xEB, 0xB2, 0x2E, 0x05, 0x21, 0x90, 0x31, 0xB0, 0x5D, 0xD5, + 0xC6, 0x69, 0x29, 0x7D, 0xF4, 0x08, 0x44, 0x80, 0x50, 0x32, 0xD6, 0xBC, + 0xB8, 0x5A, 0x63, 0x08, 0x63, 0x82, 0xC6, 0x05, 0x17, 0x02, 0xE3, 0x14, + 0x21, 0x0C, 0x31, 0x4C, 0x10, 0xE6, 0x82, 0xFF, 0xF9, 0xF7, 0xBF, 0xBF, + 0xD9, 0xDF, 0xD4, 0x55, 0x0D, 0x01, 0x48, 0x09, 0x46, 0x00, 0xF3, 0x2C, + 0xCB, 0x33, 0xBE, 0x5A, 0x17, 0x45, 0xC1, 0x29, 0x45, 0x4D, 0x9B, 0x21, + 0x04, 0xAA, 0x4A, 0x50, 0xCE, 0x21, 0xC4, 0x9C, 0x80, 0xE0, 0xBD, 0x73, + 0x21, 0x7A, 0x47, 0x11, 0x68, 0xEB, 0xA6, 0xEB, 0x9A, 0xBA, 0x2A, 0x31, + 0xCD, 0x01, 0x44, 0xC6, 0x25, 0xA9, 0xBD, 0x31, 0x26, 0x13, 0xD9, 0xCB, + 0x9B, 0x1B, 0x00, 0xE3, 0xE9, 0xD2, 0x1F, 0x4E, 0xC3, 0xA6, 0xED, 0x60, + 0x0A, 0x4F, 0x87, 0xA1, 0x9F, 0xF4, 0xCF, 0x9F, 0x8F, 0xDA, 0x06, 0x4A, + 0x60, 0x3F, 0x8D, 0x65, 0x29, 0xAE, 0x77, 0x9B, 0xE4, 0x93, 0x71, 0x30, + 0x44, 0xE8, 0x3C, 0x98, 0x75, 0x78, 0x3C, 0x1E, 0x1F, 0x9E, 0x0F, 0x59, + 0x46, 0xD7, 0xAB, 0x6A, 0x9A, 0x15, 0x67, 0x3C, 0x41, 0xA8, 0xAC, 0x45, + 0x18, 0x00, 0x00, 0x8F, 0x87, 0x13, 0x21, 0x30, 0x01, 0xBC, 0x48, 0x63, + 0x8C, 0x33, 0xDE, 0xF7, 0xB3, 0x7C, 0x78, 0xBA, 0x28, 0x65, 0x8D, 0x75, + 0xC3, 0xBC, 0xC4, 0x08, 0xAB, 0x2A, 0x7F, 0x79, 0xB3, 0xDB, 0xAC, 0x9A, + 0xAA, 0xCC, 0x02, 0x88, 0x28, 0xC5, 0x14, 0x4C, 0x08, 0x96, 0xA4, 0x58, + 0x72, 0xFA, 0xE5, 0xF1, 0x38, 0x2E, 0x0B, 0xC1, 0x58, 0x6A, 0x3B, 0x2C, + 0xD2, 0x05, 0x90, 0x67, 0x5C, 0x19, 0x67, 0x7D, 0xF8, 0xB5, 0x3E, 0x0C, + 0x11, 0xD2, 0xDA, 0x80, 0x14, 0xDA, 0xAE, 0x5C, 0x37, 0x55, 0xD7, 0xE4, + 0x42, 0xB0, 0x73, 0xBF, 0xAC, 0xDA, 0x92, 0x12, 0x4A, 0x31, 0x8C, 0x31, + 0x55, 0x45, 0x51, 0xE7, 0x99, 0xB7, 0x8A, 0x71, 0xFC, 0x78, 0xB8, 0x18, + 0xEB, 0x6D, 0x08, 0x54, 0xE4, 0x39, 0xA7, 0x5A, 0x6B, 0xEB, 0x43, 0x5B, + 0x30, 0x8C, 0xB0, 0x32, 0xAE, 0x2A, 0xC8, 0xBA, 0xE3, 0xDE, 0x5A, 0x2A, + 0xCA, 0xE3, 0x65, 0xC2, 0x14, 0x7A, 0x1F, 0x52, 0x4A, 0xB9, 0x60, 0x8C, + 0x20, 0x41, 0x45, 0x74, 0x20, 0x7A, 0xD7, 0x54, 0x4D, 0x48, 0x91, 0x50, + 0x6C, 0x9D, 0xEB, 0x07, 0x85, 0x08, 0xA7, 0x82, 0x11, 0xC2, 0x73, 0x21, + 0x62, 0xB2, 0x31, 0x21, 0x84, 0x00, 0x45, 0xDE, 0xDA, 0x90, 0x02, 0x14, + 0x8C, 0x8C, 0x93, 0x6E, 0xDB, 0x15, 0x26, 0x2C, 0x2F, 0x44, 0xD3, 0x14, + 0xC1, 0x47, 0x84, 0x68, 0x96, 0x45, 0x21, 0xC2, 0x66, 0x9B, 0xEF, 0xF7, + 0x75, 0x55, 0x31, 0xC1, 0x49, 0x59, 0x65, 0x31, 0x79, 0x23, 0x75, 0x0A, + 0x31, 0x25, 0xD0, 0x4F, 0xF2, 0x57, 0xCA, 0xF1, 0xB7, 0x5F, 0xBF, 0xEA, + 0x07, 0x05, 0x62, 0xAC, 0x8A, 0x4C, 0x2F, 0x0A, 0xA4, 0x84, 0x31, 0x6D, + 0xDB, 0xFA, 0xF9, 0xD4, 0x4B, 0xA9, 0x09, 0x84, 0x10, 0x42, 0x80, 0x51, + 0x51, 0x17, 0x65, 0x55, 0x7D, 0xFF, 0xD3, 0x17, 0x84, 0x21, 0x4C, 0x49, + 0x49, 0xBD, 0xAA, 0x3B, 0xC6, 0x32, 0x8C, 0xF0, 0x65, 0x98, 0x61, 0x0A, + 0x4F, 0xC7, 0x3E, 0x41, 0x52, 0x66, 0x8C, 0x12, 0x58, 0x08, 0xDA, 0x54, + 0xA5, 0xB1, 0xBE, 0xA9, 0x4A, 0x0C, 0x60, 0x5D, 0x88, 0x3A, 0xCF, 0x63, + 0xC0, 0x19, 0x2F, 0x38, 0xC2, 0xD6, 0x84, 0xED, 0xF6, 0x4A, 0x1B, 0x9F, + 0xE5, 0x14, 0x13, 0xC8, 0x05, 0xBB, 0xF4, 0x87, 0xA6, 0x2D, 0x42, 0xB0, + 0x7A, 0x99, 0x38, 0x8B, 0xF0, 0x7F, 0xFF, 0xDF, 0xFE, 0x0B, 0x04, 0x78, + 0x1C, 0x2E, 0xD3, 0x70, 0x4C, 0x30, 0x44, 0x90, 0x28, 0xCD, 0x18, 0x25, + 0xC3, 0xD4, 0xBB, 0xE0, 0x37, 0xAB, 0x2B, 0xE7, 0xA0, 0x8F, 0x81, 0x73, + 0xCC, 0x05, 0x43, 0x08, 0x4B, 0xB9, 0x60, 0x82, 0x9C, 0xF6, 0xD1, 0xFB, + 0x61, 0xEA, 0xDB, 0x3A, 0x63, 0x3C, 0x8B, 0x11, 0xC6, 0x18, 0x31, 0xA2, + 0x2E, 0x84, 0x14, 0x42, 0x9D, 0x57, 0x18, 0x93, 0xFB, 0xC7, 0x7B, 0x6B, + 0x03, 0x40, 0xF8, 0xFE, 0xF1, 0x58, 0xE4, 0x3C, 0xB1, 0xFA, 0xE9, 0xD8, + 0x27, 0xB7, 0x50, 0x96, 0x5D, 0xA6, 0x19, 0x42, 0xF4, 0xF5, 0xD7, 0xBF, + 0xF3, 0x6A, 0x9C, 0xE7, 0x0B, 0x49, 0x8E, 0x50, 0xEC, 0xA3, 0xDB, 0x6D, + 0x4B, 0x18, 0x60, 0x88, 0xA1, 0xCC, 0x39, 0xE1, 0xF8, 0x87, 0x1F, 0x0F, + 0x4D, 0x57, 0x71, 0xC1, 0xFB, 0xF3, 0xB8, 0xDA, 0xAC, 0x77, 0x57, 0xEF, + 0x3F, 0xFC, 0xFC, 0x5D, 0x59, 0xA0, 0x4D, 0xD9, 0x8C, 0x2E, 0xCF, 0x33, + 0x9A, 0xE7, 0xC5, 0x77, 0x3F, 0x7D, 0xB2, 0xEA, 0x72, 0xB3, 0xCE, 0x81, + 0xD8, 0xFE, 0xCB, 0x5F, 0xBF, 0x7B, 0xF7, 0xE6, 0xAA, 0xA0, 0x17, 0x4C, + 0xB3, 0xD3, 0x71, 0xB1, 0x11, 0xC7, 0xE4, 0xBE, 0xDA, 0x96, 0x65, 0x8E, + 0xBE, 0x3F, 0x9A, 0x9C, 0xB1, 0x55, 0x91, 0x9F, 0xCE, 0xEA, 0x2F, 0xDF, + 0x7F, 0xBE, 0x7D, 0xF3, 0xE6, 0xF5, 0xBB, 0xDF, 0xFD, 0xF0, 0x97, 0xFF, + 0xCB, 0x3A, 0xE7, 0xA3, 0x8D, 0xDE, 0x5D, 0xBD, 0x78, 0x93, 0x48, 0x83, + 0x09, 0xA5, 0x94, 0x7D, 0xFE, 0xE1, 0x9F, 0x08, 0x06, 0x57, 0x2F, 0x6E, + 0xA5, 0xC5, 0x21, 0xC5, 0x2F, 0x3F, 0xFD, 0xB3, 0xE0, 0x22, 0x84, 0x88, + 0x00, 0x20, 0x18, 0x33, 0x4E, 0x62, 0x08, 0x00, 0x13, 0x02, 0xD1, 0xBA, + 0x2B, 0xB5, 0x73, 0x87, 0xE3, 0x50, 0x54, 0x19, 0xC5, 0xF4, 0xFD, 0xED, + 0xCB, 0xFF, 0xE7, 0x2F, 0x7F, 0xFD, 0xC7, 0x6F, 0xDF, 0x5D, 0x6D, 0xDA, + 0xBF, 0xFE, 0x74, 0x37, 0x4B, 0x1D, 0x13, 0x78, 0x73, 0xFB, 0xF2, 0xDF, + 0xBE, 0xFF, 0xF1, 0xEF, 0xBE, 0x7D, 0xEF, 0x93, 0x7B, 0x7C, 0xBE, 0x7C, + 0xFC, 0xF4, 0x28, 0x32, 0xDA, 0xB6, 0xF9, 0x2F, 0x77, 0xC7, 0x57, 0xBB, + 0x6E, 0x5A, 0x5C, 0x44, 0xD8, 0x5A, 0x07, 0x21, 0xB6, 0x21, 0x9C, 0x4E, + 0x97, 0xDB, 0x9B, 0xF5, 0xDB, 0xDB, 0x3D, 0x17, 0xAC, 0x2C, 0x8A, 0xBB, + 0xA7, 0xC3, 0xE3, 0x73, 0x0F, 0x23, 0x48, 0x09, 0x54, 0x55, 0x51, 0xE7, + 0x1C, 0xC2, 0x24, 0xA5, 0x05, 0x90, 0xBC, 0x7E, 0xB5, 0xD1, 0xCA, 0x46, + 0xA0, 0xBB, 0x2E, 0x3F, 0x9F, 0x66, 0x63, 0x1C, 0xA3, 0xF0, 0xFE, 0xF1, + 0xB0, 0x68, 0xFB, 0xB7, 0xBF, 0xFD, 0x36, 0x17, 0x19, 0xE7, 0x84, 0x52, + 0xC2, 0x28, 0x00, 0x08, 0x46, 0x1F, 0x83, 0x8F, 0x01, 0xF8, 0x3C, 0xC7, + 0x3E, 0x44, 0xA3, 0x81, 0xF3, 0x01, 0x24, 0x50, 0x35, 0xB9, 0xB3, 0xD6, + 0x3A, 0x47, 0x29, 0xCE, 0x32, 0x92, 0xE5, 0xEC, 0xFE, 0x7E, 0xBA, 0xBF, + 0x9F, 0x31, 0x45, 0xC6, 0xD9, 0xE4, 0x42, 0xDB, 0x55, 0xFD, 0x22, 0xC7, + 0xC9, 0x3C, 0x1D, 0xA6, 0x69, 0xD1, 0x10, 0x86, 0x14, 0x22, 0xC2, 0x90, + 0x52, 0xF6, 0xB7, 0x7F, 0xFE, 0x7D, 0x25, 0x8A, 0x71, 0x90, 0xCE, 0x5B, + 0x04, 0xC1, 0x65, 0x32, 0xE3, 0xA2, 0x10, 0xF4, 0x9C, 0xD3, 0xAE, 0xCD, + 0x9B, 0x32, 0xA3, 0x04, 0xF8, 0x68, 0xAC, 0x8B, 0x04, 0x63, 0xCE, 0x98, + 0x5C, 0x6C, 0xF2, 0x36, 0x13, 0x22, 0x04, 0x9F, 0xBC, 0x5B, 0x75, 0x9D, + 0x71, 0x38, 0x01, 0x3C, 0x8E, 0x8B, 0xB2, 0x4E, 0x70, 0xAE, 0x8D, 0x4E, + 0x20, 0x41, 0xE8, 0x9B, 0x66, 0x45, 0x29, 0xC9, 0x33, 0x06, 0x53, 0x3C, + 0x1C, 0x7B, 0xBD, 0xCC, 0xC3, 0xD0, 0x3F, 0x1C, 0x87, 0xA2, 0x5D, 0x61, + 0xD1, 0x8E, 0xFD, 0xA1, 0xE0, 0x2E, 0x45, 0xFF, 0xCD, 0xED, 0xEB, 0xB2, + 0x2C, 0x8F, 0x87, 0x3E, 0xCB, 0x2B, 0x63, 0xFD, 0xB4, 0xC8, 0xAA, 0x6D, + 0x7F, 0xFA, 0xF8, 0x39, 0xCF, 0x79, 0x53, 0x65, 0x31, 0x85, 0x61, 0x36, + 0xD3, 0xA4, 0xBD, 0x57, 0x6D, 0x5B, 0x7B, 0x17, 0x9C, 0xF7, 0x5A, 0xA9, + 0xAE, 0x2D, 0x62, 0x80, 0xD6, 0x7A, 0xC6, 0xE9, 0xC3, 0xE1, 0x64, 0xBD, + 0xDF, 0x6F, 0xD6, 0x20, 0x44, 0x4A, 0x45, 0x08, 0xAE, 0x29, 0x33, 0x00, + 0x52, 0xC6, 0xA8, 0x10, 0x54, 0x4A, 0xC9, 0x33, 0x66, 0x5C, 0x3C, 0x3C, + 0x3D, 0xED, 0xB6, 0xAB, 0x92, 0x8B, 0xF3, 0x65, 0xBC, 0x3F, 0x8D, 0xFB, + 0xDD, 0x75, 0x9E, 0x15, 0x4F, 0x87, 0x67, 0xE3, 0x9C, 0x10, 0xC2, 0x7B, + 0xBB, 0x28, 0xC5, 0x38, 0xD5, 0x4A, 0x97, 0x45, 0x06, 0x40, 0xE2, 0x0C, + 0x63, 0x0C, 0x44, 0xCE, 0x01, 0x00, 0x04, 0xA2, 0xD5, 0xAA, 0x3D, 0x9D, + 0x67, 0x4A, 0xC8, 0xBA, 0x2B, 0x04, 0xC7, 0x2E, 0xC4, 0x60, 0x3C, 0x23, + 0x78, 0x9A, 0xE4, 0x71, 0x94, 0xA7, 0x5E, 0x7A, 0xE7, 0x98, 0x60, 0x98, + 0x72, 0x02, 0xEC, 0x65, 0x98, 0x8C, 0x0D, 0xAB, 0x92, 0x1F, 0x07, 0x0D, + 0x10, 0x6E, 0x0A, 0x22, 0x04, 0x4A, 0xC1, 0x69, 0x87, 0x18, 0xCF, 0x30, + 0xD0, 0x9B, 0xA6, 0x28, 0xCB, 0x9C, 0x72, 0x56, 0x14, 0xB9, 0x52, 0xA0, + 0xEF, 0x15, 0x26, 0xA8, 0xEF, 0x67, 0xA9, 0xA5, 0x0B, 0x21, 0x84, 0x08, + 0x12, 0x4A, 0x20, 0xB6, 0x6D, 0x4E, 0x29, 0x76, 0x36, 0x48, 0x69, 0xAA, + 0x5C, 0x40, 0xE0, 0x66, 0xA9, 0x11, 0x00, 0x82, 0x21, 0x80, 0x29, 0xC6, + 0x04, 0x02, 0x62, 0xA3, 0xDD, 0xEF, 0xBB, 0xA9, 0x5F, 0xA6, 0x51, 0x7B, + 0x9F, 0xB4, 0x73, 0x98, 0xA0, 0xB2, 0xE4, 0x94, 0xE0, 0xAA, 0xCA, 0x8A, + 0x42, 0x20, 0x84, 0x18, 0xA5, 0xCE, 0x5A, 0x90, 0x12, 0x41, 0xE8, 0xA7, + 0x8F, 0xCF, 0x2E, 0xC0, 0x5A, 0xF0, 0x77, 0xB7, 0x7B, 0x88, 0x61, 0xB0, + 0x0E, 0x01, 0x1C, 0x22, 0x00, 0x09, 0x52, 0x4A, 0x03, 0x80, 0xC7, 0x73, + 0xAF, 0x94, 0xE4, 0x94, 0x02, 0x84, 0xCA, 0xAA, 0xB2, 0xCE, 0x21, 0x84, + 0x97, 0x65, 0xA6, 0x14, 0x3D, 0x3E, 0x9D, 0x36, 0xAB, 0x6D, 0x5D, 0x14, + 0xF3, 0x3C, 0x5C, 0x26, 0xD9, 0x56, 0x35, 0x63, 0xE0, 0xF9, 0x3C, 0xA4, + 0x44, 0x28, 0x01, 0x65, 0x4E, 0x95, 0xF6, 0x79, 0x9E, 0x2B, 0xE7, 0xC6, + 0x69, 0x21, 0x28, 0x65, 0x82, 0xA7, 0x04, 0x29, 0x67, 0x04, 0xE1, 0xAB, + 0x6D, 0xC3, 0x29, 0x8E, 0xD1, 0x1B, 0x9F, 0x9A, 0xA6, 0x34, 0x46, 0x79, + 0x0F, 0x43, 0x32, 0xDE, 0x2D, 0x52, 0xDA, 0x18, 0x53, 0x48, 0x00, 0xFE, + 0xAF, 0xFF, 0xCB, 0x7F, 0x4E, 0xC9, 0x6B, 0xB5, 0xFC, 0xF0, 0xF1, 0x93, + 0x0D, 0x5E, 0x70, 0x06, 0x02, 0xAE, 0xCA, 0xC2, 0x26, 0xBF, 0xDB, 0xAE, + 0x51, 0xC2, 0x87, 0xE7, 0x11, 0x20, 0x74, 0xEC, 0xC7, 0xDD, 0xA6, 0x76, + 0x21, 0x94, 0x25, 0x6B, 0x4A, 0x56, 0x70, 0xAE, 0xAC, 0xFE, 0xE9, 0xE3, + 0x01, 0x02, 0x6C, 0xAC, 0xBA, 0xDA, 0x34, 0xD3, 0x2C, 0x77, 0xEB, 0x15, + 0x23, 0xB4, 0x69, 0xAA, 0x18, 0x82, 0x31, 0x7E, 0x5A, 0x96, 0xF3, 0xE4, + 0xDA, 0xDD, 0x9B, 0xFE, 0xF4, 0x98, 0x97, 0xDD, 0xFD, 0xD3, 0xE3, 0x4F, + 0x3F, 0xFE, 0xF5, 0xE5, 0xA6, 0xBD, 0xCC, 0xA6, 0xDB, 0xBF, 0x6E, 0xDB, + 0x6E, 0x38, 0x3D, 0xE7, 0x9C, 0x4D, 0xF3, 0xF9, 0x7A, 0x57, 0x83, 0x94, + 0x10, 0x8A, 0x10, 0x44, 0x39, 0x9B, 0xE0, 0xD3, 0x76, 0x53, 0x24, 0x08, + 0x16, 0xED, 0x41, 0x42, 0x52, 0xD9, 0xA1, 0x9F, 0xBF, 0xFD, 0x9B, 0xBF, + 0xFB, 0xF2, 0xF1, 0x63, 0x5D, 0x62, 0x80, 0xD0, 0xCF, 0x9F, 0x1E, 0xB3, + 0x72, 0x75, 0xFB, 0xFA, 0xF6, 0x97, 0xBB, 0xE7, 0x92, 0x9A, 0x3F, 0xBE, + 0xEF, 0x4E, 0xC3, 0x3C, 0xBA, 0x4E, 0x1A, 0xD0, 0xA0, 0xC7, 0x2A, 0x57, + 0x8C, 0xE1, 0xC0, 0xBE, 0xF2, 0x3E, 0xE0, 0xF9, 0xC7, 0x2A, 0xAF, 0xB2, + 0xA6, 0xFA, 0xF9, 0xA4, 0x70, 0x48, 0xDB, 0x92, 0xE5, 0x8C, 0xFF, 0xD7, + 0xFF, 0x78, 0x7E, 0xF3, 0xFE, 0x3D, 0x12, 0xED, 0x97, 0x8F, 0x3F, 0x3E, + 0x3D, 0x3F, 0xDE, 0x5C, 0xB7, 0x2E, 0x10, 0x1B, 0xC5, 0x97, 0x5F, 0x7E, + 0x8A, 0x5E, 0x96, 0x55, 0x39, 0x2F, 0xE6, 0xF6, 0xFA, 0xBA, 0xAA, 0xCA, + 0x7E, 0x56, 0xE7, 0x69, 0xC9, 0x88, 0xA5, 0x8C, 0x06, 0xE7, 0x11, 0x48, + 0xD6, 0x78, 0x00, 0x40, 0x5E, 0xF2, 0x3C, 0x67, 0xC9, 0x01, 0x90, 0x20, + 0xCF, 0x58, 0x51, 0x96, 0x00, 0xA6, 0xB1, 0xBF, 0xC4, 0x14, 0x6F, 0xB6, + 0xDD, 0x38, 0xEA, 0xE0, 0xD3, 0xC3, 0x79, 0x2C, 0x84, 0xF8, 0xE3, 0x6F, + 0xDE, 0x3C, 0x1E, 0xCF, 0xDE, 0xDB, 0x3F, 0x7D, 0xFB, 0xFE, 0xEE, 0x72, + 0x51, 0xCA, 0x9C, 0x8E, 0x67, 0xCE, 0x31, 0x44, 0x10, 0x63, 0x72, 0x3A, + 0x0E, 0xE3, 0xE2, 0x08, 0x63, 0x45, 0xC6, 0x5F, 0xBF, 0xDA, 0xFE, 0xF4, + 0xF3, 0xE7, 0xDB, 0xEB, 0xCD, 0xCD, 0xD5, 0x6A, 0x9C, 0x75, 0x84, 0x00, + 0xC1, 0x44, 0x10, 0x28, 0x8A, 0x0C, 0x41, 0x84, 0x21, 0x82, 0x10, 0x79, + 0x1B, 0x6D, 0xF0, 0x10, 0x22, 0x1F, 0xC3, 0x22, 0x25, 0x04, 0x80, 0x09, + 0x34, 0x5D, 0x16, 0x8C, 0x98, 0x49, 0xD1, 0x06, 0xAB, 0xB4, 0x26, 0x88, + 0x80, 0x08, 0xB4, 0xB4, 0x19, 0x81, 0x75, 0xC3, 0xCA, 0x5A, 0x80, 0x84, + 0x38, 0x13, 0x84, 0x20, 0xE3, 0xBC, 0x33, 0xA6, 0xE9, 0x72, 0x6D, 0xDC, + 0x34, 0x6B, 0x82, 0x18, 0xA6, 0x48, 0x2D, 0x32, 0x2F, 0x8B, 0xBA, 0xAC, + 0xCE, 0xA7, 0x79, 0x96, 0xAE, 0x6B, 0xF3, 0xB6, 0xCE, 0xB2, 0x8C, 0x04, + 0x0F, 0x94, 0x74, 0x90, 0xC4, 0x7F, 0xFE, 0xEB, 0x47, 0x88, 0x49, 0x04, + 0xF4, 0xE7, 0x8F, 0x4F, 0x4A, 0x2E, 0x99, 0xA0, 0x6D, 0xD7, 0x7C, 0xF5, + 0xF6, 0x4D, 0x9E, 0x61, 0xBD, 0x04, 0xAD, 0xF5, 0xE1, 0x7C, 0xC1, 0xB4, + 0x78, 0x3A, 0x9E, 0x10, 0x26, 0xC6, 0x5A, 0x63, 0x54, 0x57, 0x57, 0xBF, + 0xFB, 0xEA, 0x05, 0x02, 0x29, 0xC1, 0x00, 0x60, 0xC2, 0x10, 0x2B, 0xE5, + 0x31, 0x04, 0x6D, 0x9D, 0x87, 0x90, 0xAC, 0x56, 0x9C, 0xE1, 0x10, 0x71, + 0x3F, 0x5B, 0xEB, 0x22, 0x65, 0xDC, 0x5A, 0x57, 0x64, 0xDC, 0x79, 0x43, + 0x39, 0x45, 0x18, 0x0D, 0xA3, 0xC4, 0x8C, 0x16, 0x22, 0x0B, 0xDE, 0x64, + 0x9C, 0x71, 0x9A, 0xC5, 0x14, 0xE5, 0x32, 0x98, 0x00, 0x4D, 0xA0, 0xD3, + 0xE5, 0x7E, 0xBB, 0xA2, 0x55, 0x55, 0x10, 0x9A, 0x05, 0x17, 0x19, 0x65, + 0xC3, 0x38, 0xF7, 0xBD, 0x1C, 0xA6, 0x25, 0x2F, 0x4B, 0xF8, 0xAB, 0x2E, + 0x1D, 0x7C, 0x82, 0x50, 0xE9, 0x30, 0x4D, 0x4B, 0x5D, 0x52, 0x08, 0xA0, + 0xD4, 0x9E, 0x12, 0x0C, 0x60, 0x4C, 0x31, 0x70, 0xC6, 0x20, 0x44, 0x8F, + 0x87, 0x8B, 0x0F, 0x6E, 0xBB, 0x69, 0x28, 0x46, 0x29, 0xA6, 0xCB, 0xA8, + 0x85, 0x60, 0xBB, 0x55, 0xB3, 0xCC, 0xB2, 0xAD, 0x72, 0x4A, 0xD9, 0xBC, + 0x4C, 0x30, 0x79, 0x88, 0xC8, 0xB9, 0x9F, 0x32, 0x8E, 0x33, 0x2E, 0x8E, + 0x97, 0x25, 0x21, 0xBC, 0x5E, 0x6D, 0x2F, 0x97, 0xF3, 0xA2, 0x35, 0x21, + 0x74, 0x98, 0xC6, 0xB2, 0x28, 0x7C, 0x08, 0x42, 0x70, 0x46, 0xB1, 0x0F, + 0x3E, 0x06, 0x5F, 0x55, 0x99, 0x36, 0x36, 0xC6, 0xC0, 0x33, 0xE6, 0xAC, + 0x63, 0x54, 0x50, 0xCC, 0xDB, 0xA6, 0x22, 0x28, 0x41, 0x08, 0x05, 0x27, + 0x65, 0xC6, 0x30, 0xA6, 0x9C, 0x67, 0x0F, 0x87, 0xE7, 0xFB, 0x87, 0xA7, + 0xF3, 0x65, 0x5A, 0xB4, 0x45, 0x28, 0xD5, 0x25, 0xBB, 0x4C, 0x36, 0xE3, + 0x6C, 0x55, 0xE7, 0x2E, 0x61, 0x0C, 0xC1, 0xF3, 0xB9, 0x8F, 0x09, 0xBE, + 0x7B, 0xB1, 0x3E, 0x9E, 0xFA, 0xAB, 0xFD, 0x7E, 0xD3, 0xE2, 0xAA, 0xCC, + 0x09, 0x11, 0x98, 0x11, 0x25, 0xB5, 0x31, 0x86, 0x72, 0x86, 0x08, 0x39, + 0x9F, 0xC7, 0x45, 0x69, 0x08, 0xF1, 0xF9, 0xB8, 0x04, 0x1F, 0xCB, 0x2A, + 0x93, 0x72, 0x11, 0x1C, 0x9F, 0x2F, 0x12, 0x93, 0xAC, 0xA9, 0x45, 0xD7, + 0x94, 0xA7, 0x73, 0xFF, 0x7C, 0xBC, 0xAC, 0x57, 0x35, 0x63, 0xB4, 0x2E, + 0xC4, 0x34, 0xCB, 0x10, 0xBC, 0x28, 0x33, 0x25, 0x8D, 0xB5, 0x00, 0x41, + 0x7C, 0x19, 0x86, 0x97, 0xFB, 0x6E, 0x96, 0x7A, 0x98, 0x15, 0x04, 0x10, + 0x23, 0xC8, 0x28, 0x69, 0x6A, 0x51, 0xE4, 0x14, 0x62, 0x44, 0x09, 0x58, + 0xB5, 0x0D, 0x8C, 0x18, 0x46, 0x68, 0x9D, 0x85, 0x28, 0x39, 0x1B, 0x7E, + 0x9D, 0x19, 0x8C, 0x11, 0x02, 0x80, 0xCA, 0x22, 0x67, 0x14, 0x13, 0x42, + 0x08, 0xA1, 0x94, 0xD0, 0x18, 0x62, 0x4C, 0xD1, 0x58, 0x8D, 0x71, 0x62, + 0x94, 0xF5, 0xD3, 0x9C, 0x17, 0x0D, 0x01, 0xD0, 0xA8, 0xC9, 0x86, 0x54, + 0x95, 0xF5, 0xBC, 0xCC, 0xDA, 0xDA, 0x7E, 0x9C, 0x9A, 0x8A, 0x53, 0xC2, + 0x96, 0x59, 0x13, 0xCE, 0x86, 0x45, 0x5B, 0xE7, 0xEA, 0xBA, 0xD6, 0xCB, + 0xA2, 0x94, 0xA3, 0x8C, 0x58, 0xE7, 0x57, 0x5D, 0x53, 0x14, 0x58, 0x14, + 0x79, 0x08, 0xE4, 0xFE, 0xCB, 0x53, 0x08, 0xBE, 0xAC, 0xB2, 0x9B, 0x57, + 0xE5, 0xE1, 0xF9, 0xA8, 0xA4, 0x17, 0x8C, 0x6A, 0xE7, 0x71, 0x5B, 0xF2, + 0x4C, 0xF0, 0x8F, 0x77, 0xA7, 0xC3, 0x45, 0x5A, 0x0F, 0xFA, 0xD1, 0x68, + 0x07, 0xB6, 0xDB, 0x75, 0x00, 0x58, 0x4A, 0xB3, 0xCC, 0xCE, 0xBA, 0xB4, + 0x28, 0x85, 0x11, 0x2C, 0xF3, 0xFC, 0x7C, 0x1A, 0x31, 0x40, 0x05, 0xE7, + 0x31, 0xC4, 0xAE, 0x5E, 0x39, 0x17, 0x73, 0x91, 0xED, 0xD7, 0xAB, 0x3C, + 0xCB, 0xBA, 0xB6, 0xDC, 0x6E, 0xD7, 0x8C, 0x52, 0x8C, 0x51, 0x0C, 0x3E, + 0x44, 0x8B, 0x52, 0x74, 0x30, 0x9F, 0x43, 0xB6, 0xBF, 0xDA, 0x0E, 0xC3, + 0x00, 0xCC, 0xF3, 0x3F, 0xFC, 0xCD, 0x0D, 0x44, 0x09, 0x01, 0xD7, 0xD4, + 0x6D, 0x00, 0x64, 0x39, 0x7F, 0x6E, 0x9B, 0x9A, 0x67, 0x59, 0x0A, 0x6A, + 0x51, 0x4A, 0x29, 0x13, 0x43, 0xD4, 0xDA, 0x49, 0xE5, 0x9A, 0x26, 0x7B, + 0x7A, 0x1E, 0x95, 0xF1, 0x7D, 0x2F, 0x6D, 0x08, 0x75, 0xB7, 0xD1, 0x36, + 0x9D, 0x0F, 0x5F, 0x52, 0x82, 0x21, 0xA4, 0x10, 0x41, 0x46, 0xB1, 0xD6, + 0xF6, 0xA6, 0xC5, 0xDF, 0xBE, 0x5D, 0xF5, 0xF3, 0xA4, 0xAC, 0xB3, 0xA0, + 0xE6, 0x79, 0x87, 0xF5, 0x2F, 0x57, 0x2B, 0xBA, 0x6F, 0x57, 0xC5, 0xEA, + 0x76, 0x3E, 0xFE, 0xB0, 0xAB, 0x21, 0x67, 0xF1, 0xA7, 0x4F, 0xD3, 0x9A, + 0x81, 0x4D, 0x09, 0xBD, 0xB3, 0xD1, 0xA7, 0xE0, 0x5D, 0x89, 0x25, 0xC0, + 0xA5, 0x9C, 0xFB, 0xEB, 0x6D, 0x65, 0x41, 0xFE, 0xE3, 0x87, 0x87, 0x65, + 0x1E, 0x9C, 0x33, 0x42, 0x50, 0x82, 0x71, 0x53, 0xB7, 0xCA, 0xE8, 0xCF, + 0x9F, 0x3F, 0xFE, 0xFE, 0xCF, 0xFF, 0xFD, 0xC3, 0xFD, 0x67, 0x42, 0x40, + 0x7F, 0x99, 0x29, 0x45, 0x31, 0x25, 0x8C, 0x60, 0x02, 0x10, 0x63, 0x64, + 0x95, 0xB7, 0xD6, 0x73, 0xCE, 0x21, 0x22, 0x18, 0xA1, 0xE8, 0x83, 0x73, + 0xD1, 0x59, 0x6D, 0x4C, 0x30, 0x0E, 0x14, 0x65, 0x66, 0x43, 0xD8, 0xB4, + 0xE5, 0xAB, 0xEB, 0x55, 0x4A, 0x71, 0xBB, 0x5A, 0xFF, 0xCB, 0xBF, 0xFF, + 0x90, 0x97, 0x45, 0xF0, 0x6E, 0xB7, 0x69, 0xDF, 0xBC, 0xBC, 0xBE, 0xD9, + 0xAD, 0xCE, 0x97, 0x25, 0xA6, 0xFF, 0xDF, 0xCF, 0xBA, 0x7D, 0x7D, 0x0D, + 0xA3, 0x2F, 0x44, 0xB6, 0xED, 0xBA, 0xBE, 0x57, 0xFD, 0x20, 0xA7, 0x71, + 0x01, 0x20, 0x85, 0x08, 0xA6, 0xC9, 0x7C, 0xFC, 0xF4, 0x3C, 0x4C, 0xFA, + 0xE9, 0x30, 0xDD, 0x3F, 0xF5, 0x8B, 0xF1, 0xE7, 0xCB, 0xDC, 0x0F, 0xF3, + 0xF1, 0x38, 0x5F, 0x2E, 0xCA, 0xC8, 0xF8, 0xF8, 0x3C, 0x06, 0x40, 0x4E, + 0x97, 0xC9, 0xD9, 0x50, 0x55, 0x85, 0xB5, 0x71, 0x9C, 0x55, 0xB3, 0x29, + 0x19, 0x47, 0x59, 0x26, 0xEE, 0x1F, 0xFA, 0x2F, 0xF7, 0xE7, 0x7E, 0xD2, + 0x97, 0x51, 0x8D, 0xD2, 0xCD, 0x4A, 0x3F, 0xF7, 0x0B, 0x24, 0x99, 0x73, + 0x4E, 0x6A, 0xE3, 0x5C, 0xD0, 0xC6, 0x42, 0x8C, 0x7C, 0x02, 0xD6, 0xC1, + 0x4F, 0x77, 0xA7, 0x63, 0xAF, 0x3E, 0xDD, 0x5D, 0xA4, 0xB6, 0x87, 0xF3, + 0x32, 0x4B, 0xC3, 0x05, 0x2D, 0x73, 0x11, 0xA2, 0xFF, 0xF1, 0xA7, 0x3B, + 0xC1, 0x79, 0xC6, 0xE8, 0x7A, 0xD3, 0xBD, 0xB8, 0xB9, 0xBA, 0x5C, 0x8E, + 0xC1, 0x2E, 0x8B, 0x4E, 0xF7, 0x4F, 0xCF, 0x11, 0x10, 0x69, 0x3C, 0x44, + 0xD8, 0x87, 0x80, 0xE0, 0xAF, 0x34, 0x44, 0xB9, 0x5D, 0x6F, 0x31, 0x4A, + 0xC3, 0x30, 0xC9, 0x45, 0x5F, 0xCE, 0x53, 0xF4, 0xA0, 0xA9, 0x9B, 0x3C, + 0x63, 0x00, 0x82, 0x10, 0x23, 0x82, 0x84, 0x73, 0x96, 0x67, 0x4C, 0x70, + 0x5A, 0x57, 0x19, 0xE7, 0xF0, 0x78, 0x3E, 0x01, 0x08, 0x31, 0x06, 0x0F, + 0x0F, 0xA7, 0x53, 0x3F, 0xFB, 0x18, 0xEF, 0x1F, 0x4F, 0xE3, 0xB8, 0x00, + 0x10, 0x11, 0xC6, 0x21, 0x44, 0xC1, 0x99, 0x35, 0x13, 0xC3, 0xFE, 0x6A, + 0xDB, 0xAC, 0xBA, 0x9A, 0x50, 0x0A, 0x09, 0x9A, 0x17, 0x23, 0x95, 0x85, + 0x28, 0x69, 0x6B, 0x89, 0xA0, 0xE3, 0x22, 0x33, 0xC1, 0x39, 0xA7, 0xCE, + 0xFB, 0xBB, 0xFB, 0x03, 0x00, 0x28, 0xCB, 0x84, 0xD6, 0x66, 0x98, 0x35, + 0x26, 0x8C, 0xE0, 0x14, 0xBC, 0x23, 0x14, 0x11, 0x8C, 0xDA, 0xBA, 0xE2, + 0x9C, 0x10, 0x04, 0x63, 0x0C, 0x84, 0x30, 0x82, 0xE9, 0x38, 0xCB, 0x2C, + 0xA3, 0xD6, 0x3A, 0x82, 0x31, 0x63, 0x58, 0x19, 0xB5, 0x48, 0x13, 0x43, + 0x22, 0x04, 0xB7, 0x4D, 0xC9, 0x79, 0x09, 0x71, 0x9E, 0x30, 0x3D, 0x9E, + 0x4E, 0xF3, 0x32, 0x0B, 0x2E, 0xF6, 0xDB, 0x9D, 0x36, 0x46, 0x5B, 0x9B, + 0x52, 0x04, 0x00, 0x84, 0x10, 0x17, 0xA5, 0xB4, 0x75, 0x00, 0x44, 0x42, + 0x10, 0xA5, 0xC4, 0xFB, 0x18, 0x42, 0x0C, 0x21, 0x32, 0x4E, 0x42, 0x88, + 0xD3, 0x2C, 0x4F, 0xE7, 0x51, 0x1A, 0x37, 0x4C, 0xFA, 0xFE, 0x79, 0x1C, + 0x27, 0x79, 0x3A, 0x0F, 0x08, 0xA6, 0xCD, 0x3A, 0xCB, 0x73, 0x7A, 0xEE, + 0x17, 0x04, 0xE1, 0x76, 0xDD, 0x22, 0x8C, 0x8A, 0x9C, 0xEF, 0xD7, 0x0D, + 0xA7, 0x2C, 0x78, 0x13, 0xA2, 0x2B, 0x73, 0x41, 0x10, 0x5C, 0x75, 0xC5, + 0x8B, 0xAB, 0xCE, 0x49, 0x2F, 0x97, 0x70, 0x7F, 0x3F, 0xF7, 0x97, 0xF9, + 0xCB, 0xE7, 0x27, 0x63, 0xDC, 0x34, 0x2E, 0x29, 0x85, 0x98, 0xA2, 0xC8, + 0x38, 0x17, 0x34, 0xCF, 0xE8, 0xAB, 0x57, 0x9B, 0xCD, 0xA6, 0x02, 0x28, + 0x69, 0xAD, 0x79, 0xCE, 0xAB, 0xAA, 0xA4, 0x18, 0x4D, 0x72, 0x36, 0xD6, + 0xEE, 0xB7, 0xAD, 0xD3, 0xCE, 0x85, 0x74, 0x38, 0x0E, 0x08, 0x41, 0x88, + 0xF0, 0xAF, 0xA0, 0xDD, 0x94, 0x92, 0xD4, 0xE6, 0xDD, 0xDB, 0xFD, 0xB6, + 0xAD, 0x9E, 0x2F, 0x03, 0xE1, 0xD4, 0x7B, 0x57, 0xE4, 0x54, 0x70, 0xBA, + 0xEA, 0x0A, 0x46, 0x10, 0xE7, 0x84, 0xE7, 0xC2, 0xB9, 0x20, 0xB5, 0x9D, + 0x16, 0x15, 0x22, 0x30, 0xDA, 0x51, 0x8C, 0xA6, 0x59, 0x3D, 0x1C, 0x2F, + 0xCA, 0x99, 0x2F, 0xCF, 0xE7, 0x49, 0x2A, 0x0C, 0x63, 0x3F, 0xCD, 0xCE, + 0x87, 0xE7, 0x73, 0xFF, 0xD3, 0xA7, 0xFB, 0x90, 0xBC, 0x75, 0xEE, 0xEE, + 0xE9, 0x64, 0x5D, 0x4C, 0x00, 0x70, 0xCE, 0x8C, 0xD2, 0x00, 0x42, 0x00, + 0x09, 0xA7, 0x4C, 0x70, 0x51, 0x97, 0xD5, 0xCB, 0xAB, 0x6D, 0x59, 0x64, + 0x8C, 0x70, 0xCE, 0x08, 0x23, 0xB4, 0x6B, 0x1A, 0xA3, 0x0C, 0x88, 0xA9, + 0xED, 0x1A, 0x84, 0x20, 0xA7, 0xB8, 0x69, 0x0A, 0x8C, 0x40, 0x84, 0xE8, + 0xD2, 0xCB, 0x71, 0x98, 0xBC, 0x5D, 0xBA, 0xB6, 0xB8, 0xBE, 0xAA, 0x21, + 0x00, 0x4C, 0xF0, 0x4D, 0xB7, 0x2E, 0xB2, 0xB2, 0x69, 0x4B, 0x7C, 0xB5, + 0xEE, 0x08, 0x11, 0x2A, 0x60, 0x2A, 0x4A, 0x6B, 0x6D, 0xDD, 0xB4, 0xDB, + 0xF5, 0x2A, 0xE7, 0xF4, 0x87, 0x9F, 0x3F, 0xF6, 0xC3, 0x48, 0x09, 0x6B, + 0xEB, 0x2C, 0xCB, 0xC4, 0x6E, 0xB5, 0xD9, 0x75, 0xAB, 0x97, 0x57, 0xFB, + 0x4D, 0xDB, 0x70, 0x8C, 0xAB, 0xB2, 0x43, 0x11, 0xAC, 0xEB, 0x72, 0xD5, + 0x66, 0xEB, 0xAE, 0x04, 0xC0, 0xD4, 0x65, 0x16, 0x63, 0x08, 0xD1, 0xCF, + 0xF3, 0xEC, 0xBD, 0x29, 0x0A, 0xD6, 0xD4, 0x8C, 0x67, 0xC5, 0xDD, 0xD3, + 0x18, 0xA7, 0x2F, 0x94, 0x98, 0xF7, 0xB7, 0xF5, 0xAA, 0x2B, 0x84, 0x48, + 0x57, 0xBB, 0x6A, 0x73, 0xF3, 0xED, 0xC3, 0xC3, 0x49, 0x08, 0x88, 0x68, + 0xB6, 0x4C, 0x53, 0x4C, 0x98, 0x67, 0x7C, 0x18, 0xA7, 0x7E, 0x50, 0x11, + 0x02, 0x80, 0x80, 0xB1, 0x78, 0xD6, 0xE1, 0xDC, 0x4F, 0x98, 0x52, 0x08, + 0xE2, 0x6A, 0x7B, 0x83, 0x60, 0xF2, 0xD6, 0x5C, 0x86, 0x05, 0x53, 0x4C, + 0x39, 0xFF, 0xC7, 0xB7, 0x2B, 0x39, 0xCD, 0xDF, 0xEC, 0x79, 0x89, 0x46, + 0x88, 0xC8, 0x6F, 0x76, 0x2D, 0x48, 0xA0, 0x00, 0x0F, 0x7F, 0x7A, 0x49, + 0xAE, 0x36, 0xDB, 0x7E, 0xB2, 0xCB, 0xF1, 0x61, 0x9C, 0x1F, 0x5D, 0x0A, + 0xFB, 0x96, 0x77, 0x25, 0xBD, 0xCA, 0xBC, 0xB2, 0x6E, 0x71, 0x08, 0xC4, + 0xA0, 0x83, 0x74, 0xCE, 0x3F, 0xF7, 0xFA, 0xDD, 0x4B, 0xBE, 0x2A, 0x80, + 0x91, 0x0B, 0x8B, 0xF2, 0x6F, 0x5F, 0xE7, 0xBF, 0xB9, 0xDD, 0xBD, 0x7F, + 0xB9, 0xDB, 0x74, 0xAB, 0xB2, 0x2C, 0x1F, 0xCF, 0x32, 0x2F, 0x1B, 0x22, + 0xCA, 0xCF, 0x1F, 0xBE, 0x23, 0x10, 0x20, 0x84, 0x94, 0x76, 0x84, 0x20, + 0xCA, 0xB0, 0x52, 0x16, 0xC4, 0x84, 0x09, 0x65, 0x04, 0x03, 0x00, 0x9C, + 0xF7, 0xE7, 0xD3, 0x79, 0xD5, 0xD4, 0x79, 0xC6, 0x86, 0x71, 0x5A, 0x94, + 0xEB, 0xEA, 0xE2, 0xE1, 0x78, 0xDE, 0xAE, 0xEA, 0xAE, 0xC8, 0x94, 0xB1, + 0x99, 0xC8, 0x67, 0x65, 0x36, 0xDB, 0xCD, 0x32, 0x2B, 0x82, 0x08, 0x08, + 0x48, 0x29, 0xF7, 0x78, 0x1C, 0xAC, 0x0F, 0xBF, 0x46, 0x0A, 0xEB, 0xBA, + 0x6A, 0x4A, 0x71, 0x3A, 0x8C, 0xCE, 0xC5, 0x90, 0xE0, 0x87, 0x4F, 0x4F, + 0x2E, 0x00, 0x4A, 0x71, 0xD7, 0x94, 0xFD, 0x28, 0x9F, 0x4F, 0x63, 0x4C, + 0x60, 0x56, 0xEE, 0xD3, 0xDD, 0xC1, 0x27, 0xC8, 0x28, 0x5F, 0x66, 0xCD, + 0x18, 0x0B, 0x29, 0x41, 0x88, 0xCA, 0xB2, 0xB8, 0x7B, 0x3A, 0x1F, 0xCF, + 0x63, 0x4A, 0x20, 0x04, 0x38, 0x8E, 0x0B, 0x45, 0x28, 0x2F, 0x73, 0x08, + 0x01, 0xC7, 0xB4, 0x5B, 0xB5, 0x9F, 0x1F, 0x0E, 0x90, 0x88, 0x08, 0x00, + 0x65, 0x14, 0x22, 0xD4, 0x8F, 0x72, 0x92, 0xE6, 0xE1, 0xF1, 0xAC, 0x94, + 0xE9, 0x7B, 0xE5, 0xBC, 0xEF, 0x47, 0x3D, 0x4E, 0xDA, 0x5A, 0xBF, 0xCC, + 0x26, 0x2B, 0xF2, 0xBB, 0xFB, 0x53, 0x55, 0x66, 0xDA, 0xB8, 0x8F, 0x9F, + 0x8F, 0xCE, 0x47, 0x1F, 0x93, 0xB5, 0xA9, 0x2A, 0x8A, 0xB6, 0xC9, 0xD6, + 0x6D, 0x0D, 0x63, 0x58, 0xB5, 0xB5, 0x71, 0x71, 0x9E, 0x5D, 0xD7, 0x6E, + 0xA6, 0x69, 0x44, 0x08, 0x20, 0x84, 0x0F, 0x97, 0xC9, 0x18, 0x6D, 0x8C, + 0xF1, 0xCE, 0x59, 0xAB, 0x41, 0x02, 0x31, 0x24, 0x6B, 0xD5, 0x22, 0x15, + 0x23, 0x74, 0xB7, 0xED, 0x36, 0xAB, 0x0E, 0x40, 0x7C, 0x3A, 0xFF, 0x7F, + 0x55, 0xBD, 0xC7, 0xAE, 0x6D, 0xD9, 0x95, 0x5D, 0x3B, 0xBD, 0x59, 0x76, + 0xFB, 0x63, 0xAF, 0x8B, 0x08, 0x06, 0xF5, 0x10, 0xFF, 0x35, 0x00, 0x00, + 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x4D, 0x32, 0xA5, 0x44, 0x02, 0x0F, + 0xD0, 0xDF, 0xAB, 0x2A, 0x15, 0x5E, 0x3E, 0x20, 0xA1, 0x64, 0xF2, 0x31, + 0x48, 0x86, 0xB9, 0x71, 0x8F, 0xDB, 0x6E, 0xB9, 0xE9, 0x9D, 0x0A, 0x97, + 0x2A, 0x68, 0x7E, 0xC4, 0x18, 0x7D, 0x00, 0xB3, 0xB7, 0x36, 0xE5, 0x0C, + 0x2E, 0xD7, 0xB9, 0x6D, 0xDB, 0x4A, 0x88, 0xB6, 0x91, 0xEB, 0x5E, 0x0A, + 0x01, 0x7C, 0x72, 0x5D, 0x5F, 0xED, 0x76, 0x3D, 0xE7, 0x98, 0x4B, 0x11, + 0x7C, 0xD6, 0xC6, 0x0A, 0x41, 0xD6, 0xAB, 0x86, 0x60, 0x9C, 0x62, 0x0C, + 0xC1, 0x71, 0x46, 0xD7, 0xAB, 0x66, 0xB7, 0x6E, 0xA5, 0xE4, 0xDA, 0x38, + 0xA7, 0x43, 0x0A, 0x69, 0x1C, 0x97, 0xAF, 0x9E, 0x47, 0x5E, 0xD1, 0x94, + 0x8B, 0xA8, 0xAA, 0x9C, 0x63, 0x29, 0x08, 0x23, 0x24, 0x38, 0x3D, 0x5F, + 0x46, 0x88, 0xA0, 0x75, 0x4E, 0x1B, 0x9B, 0x52, 0xC4, 0x20, 0xD5, 0x95, + 0xE0, 0x5C, 0x3A, 0xEB, 0xAC, 0xD5, 0x31, 0x04, 0x63, 0x1C, 0x84, 0x58, + 0xC8, 0xEA, 0x7C, 0x9D, 0x9C, 0xF3, 0x04, 0xC1, 0x65, 0xD1, 0xC6, 0xB9, + 0xD7, 0xF3, 0xE0, 0x7C, 0x6C, 0x1B, 0x49, 0x30, 0xD2, 0x26, 0x40, 0x88, + 0x9D, 0xCF, 0xE7, 0x71, 0x5E, 0xD4, 0x8C, 0x08, 0xEF, 0xEA, 0xF6, 0xB0, + 0xDB, 0x4D, 0xF3, 0xAC, 0x8D, 0xA9, 0x9B, 0x16, 0x22, 0x34, 0xCD, 0x13, + 0xC6, 0x58, 0x56, 0x8D, 0xB5, 0xC6, 0x07, 0x0F, 0x0B, 0x34, 0xC6, 0xC5, + 0x9C, 0x8D, 0x0D, 0x21, 0xE6, 0x61, 0x52, 0xDA, 0x58, 0xE7, 0x03, 0x21, + 0x38, 0xC4, 0x38, 0x2E, 0xDA, 0x5A, 0x0F, 0x21, 0x1C, 0xC6, 0x69, 0xD1, + 0x2E, 0x67, 0x9C, 0x52, 0xF9, 0xF0, 0xB0, 0x6D, 0x6A, 0xB6, 0x5A, 0xF5, + 0xFB, 0x75, 0x57, 0x73, 0x0A, 0x4B, 0xC1, 0x10, 0x4A, 0x4E, 0xFB, 0x8A, + 0xC6, 0x18, 0xDF, 0xCE, 0x53, 0x23, 0x64, 0xF2, 0x65, 0x56, 0xD1, 0x45, + 0x62, 0x9C, 0x3F, 0x9E, 0x47, 0x00, 0x91, 0x10, 0xE2, 0x3A, 0xE8, 0x18, + 0xCB, 0x38, 0x9A, 0xE0, 0x1D, 0x2C, 0x40, 0x4A, 0xC1, 0x19, 0x39, 0x9F, + 0xAF, 0xA0, 0x94, 0xF5, 0xAA, 0xFB, 0xF8, 0xE1, 0xB6, 0x6B, 0x44, 0x2D, + 0xF9, 0xBA, 0xAD, 0xFE, 0xF5, 0x5F, 0xBE, 0x6F, 0x6B, 0x21, 0x28, 0x85, + 0x10, 0x5E, 0x86, 0x59, 0x6B, 0x77, 0x38, 0x6C, 0x29, 0xA5, 0xA7, 0xD3, + 0x35, 0xA6, 0x88, 0x30, 0x7E, 0x77, 0xB3, 0xFD, 0x7F, 0xFF, 0xFD, 0x07, + 0x04, 0x51, 0x0C, 0x71, 0xDD, 0x37, 0xB5, 0x64, 0x31, 0x96, 0x69, 0x72, + 0xE3, 0x6C, 0xE6, 0xD9, 0x86, 0x58, 0xCE, 0x97, 0x19, 0x22, 0x84, 0x39, + 0xD1, 0xC6, 0xE7, 0x92, 0x4B, 0x06, 0x21, 0xE6, 0x90, 0x73, 0x29, 0x65, + 0x52, 0xF6, 0xED, 0x32, 0x13, 0x8C, 0x2A, 0xC1, 0x11, 0x46, 0x05, 0x96, + 0xAF, 0x2C, 0x10, 0x1B, 0x83, 0x76, 0x61, 0xD1, 0xAE, 0x92, 0xD5, 0xE5, + 0x3A, 0x9F, 0xC7, 0xD9, 0xC5, 0x68, 0x8C, 0x19, 0xE7, 0xA5, 0x40, 0x68, + 0xBD, 0x75, 0x3E, 0x22, 0xC4, 0x10, 0xC2, 0x5D, 0x53, 0x4B, 0x29, 0x31, + 0x42, 0x7D, 0xDB, 0x3C, 0xDC, 0xED, 0x56, 0x9D, 0xDC, 0xF4, 0x92, 0x10, + 0xB4, 0xE9, 0x6B, 0x4C, 0x49, 0x2C, 0x25, 0xB9, 0xD0, 0xD6, 0xF4, 0xE1, + 0x71, 0xDF, 0xB7, 0xAD, 0x10, 0x22, 0xA6, 0xEC, 0x4C, 0x9C, 0x16, 0x3D, + 0x6B, 0x13, 0x62, 0xC6, 0xDF, 0x7C, 0x78, 0x6F, 0x5C, 0x9C, 0x8D, 0xF1, + 0x21, 0x5B, 0xEB, 0x9C, 0x35, 0xB5, 0xC0, 0xAF, 0x97, 0x61, 0xD1, 0x1E, + 0x42, 0xF4, 0xEE, 0x61, 0xDB, 0x55, 0x72, 0xBF, 0xBF, 0xEF, 0x37, 0xB7, + 0x6E, 0x3E, 0x6B, 0x63, 0x8D, 0xF3, 0x99, 0x77, 0xA7, 0x71, 0x1E, 0x86, + 0x61, 0x98, 0xCD, 0xB4, 0xCC, 0xBF, 0x3E, 0xBF, 0xBE, 0x1D, 0x87, 0xE3, + 0x79, 0x18, 0xA7, 0x51, 0x2B, 0x3D, 0x2F, 0x66, 0x9A, 0x97, 0xE7, 0xB7, + 0x6B, 0xE2, 0x37, 0xC3, 0xE2, 0xBB, 0x7E, 0x5F, 0x00, 0x36, 0xCB, 0x17, + 0x29, 0xD9, 0xA2, 0xDC, 0x38, 0x6A, 0x9F, 0x59, 0x80, 0x3B, 0x08, 0x91, + 0xB1, 0x51, 0x2D, 0x3A, 0x38, 0x75, 0xFB, 0xEE, 0xBB, 0xE1, 0xFC, 0x64, + 0x8D, 0x5D, 0x6F, 0x6A, 0xC6, 0xC9, 0xE5, 0x32, 0x43, 0xCC, 0x01, 0xA2, + 0x29, 0xA5, 0x52, 0xA0, 0x94, 0xB2, 0x6A, 0x36, 0x76, 0xB9, 0xFC, 0xCB, + 0x07, 0x36, 0xCF, 0xDA, 0x26, 0xB8, 0xDB, 0x6E, 0x7E, 0xB7, 0xC7, 0x29, + 0xAA, 0x0C, 0x90, 0x10, 0xB0, 0xE2, 0x25, 0x5A, 0xF3, 0xF2, 0xF6, 0xE5, + 0xAA, 0xAE, 0x10, 0xD1, 0x3F, 0xFD, 0xF0, 0xFA, 0x7A, 0xD1, 0x14, 0x7B, + 0x6D, 0xA3, 0x76, 0xD0, 0x99, 0xC8, 0x50, 0x38, 0xEB, 0xF8, 0x34, 0xC4, + 0x5C, 0xF2, 0xCB, 0x65, 0x38, 0xAA, 0xF8, 0xFF, 0x7F, 0x99, 0x6B, 0xAA, + 0x1F, 0x0E, 0x78, 0xD1, 0x0E, 0xA3, 0xD3, 0x6F, 0x3F, 0xCA, 0x4A, 0x50, + 0xEF, 0x34, 0x82, 0xE8, 0xE1, 0xFE, 0xC1, 0x67, 0xE7, 0x12, 0x6A, 0xD6, + 0x8F, 0xE3, 0xE9, 0xA9, 0x22, 0x69, 0xBB, 0x96, 0x10, 0x22, 0xC6, 0x08, + 0x63, 0xC4, 0xEA, 0x00, 0x21, 0x28, 0x00, 0x72, 0x8E, 0x85, 0x20, 0x36, + 0x26, 0xA5, 0x74, 0x2D, 0x05, 0x41, 0x04, 0x82, 0xB8, 0x18, 0x7F, 0xB3, + 0xDB, 0x68, 0xAF, 0x9B, 0xAA, 0xFA, 0xE3, 0xEF, 0xBF, 0x75, 0x5A, 0xB7, + 0x6D, 0xEF, 0x42, 0xDE, 0x6E, 0x57, 0x10, 0xA4, 0xA6, 0xAA, 0xB4, 0xB6, + 0xCE, 0xC7, 0xE3, 0x75, 0xB8, 0xCE, 0x36, 0xE5, 0x8C, 0x71, 0x59, 0x6F, + 0xBB, 0x5A, 0xA2, 0x79, 0x34, 0xC3, 0x64, 0x4E, 0xD7, 0x85, 0x71, 0xD9, + 0x77, 0x4C, 0x08, 0x4A, 0x28, 0x7C, 0x7E, 0xBE, 0x2A, 0x15, 0x31, 0xA6, + 0xEB, 0xD5, 0x8A, 0x60, 0x8C, 0x09, 0xAE, 0x05, 0x0B, 0xDE, 0xE6, 0x94, + 0x53, 0x0A, 0x7D, 0x27, 0x6F, 0x76, 0xFD, 0x7F, 0xFC, 0xF0, 0x19, 0x53, + 0x22, 0x2A, 0xD1, 0x36, 0xCD, 0x30, 0x2D, 0x4A, 0x5B, 0x46, 0x98, 0xB7, + 0xFE, 0xF8, 0x36, 0xDE, 0x1C, 0x0E, 0x6F, 0xD7, 0x01, 0x00, 0x2C, 0xAB, + 0x2A, 0x17, 0x60, 0x94, 0x63, 0x8C, 0x7A, 0xEF, 0x43, 0x4C, 0x29, 0xE5, + 0x9C, 0x00, 0x40, 0xA8, 0x40, 0x04, 0x31, 0xA4, 0x8C, 0x0E, 0x83, 0xB6, + 0x3E, 0xC6, 0x18, 0xD7, 0xEB, 0x7A, 0x18, 0x55, 0x06, 0xB9, 0x92, 0x0C, + 0x63, 0x8C, 0x31, 0x3E, 0x1E, 0xE7, 0x79, 0xB6, 0x7D, 0x5F, 0xCB, 0x8A, + 0xD5, 0x55, 0x25, 0x44, 0x7D, 0x3C, 0xCD, 0x08, 0x89, 0x71, 0x9A, 0xB5, + 0x31, 0x10, 0xC3, 0xEB, 0xB8, 0xCC, 0x6A, 0x49, 0x29, 0x41, 0x00, 0xAD, + 0xB3, 0x29, 0x85, 0xBE, 0x6F, 0x9B, 0x5A, 0x78, 0xE7, 0xC6, 0x59, 0x0B, + 0xCA, 0x41, 0x41, 0x25, 0x17, 0xC1, 0x19, 0x42, 0x50, 0x34, 0x14, 0x80, + 0xD4, 0xB5, 0x6D, 0x01, 0x44, 0x3B, 0x7F, 0x1E, 0xC6, 0xC9, 0x18, 0xEB, + 0xCB, 0x70, 0x5D, 0xDA, 0xAE, 0x8E, 0x29, 0x33, 0x4E, 0xBB, 0x4E, 0x0C, + 0xC3, 0x94, 0x53, 0xE1, 0x94, 0x56, 0x92, 0x3B, 0xE7, 0x4B, 0x49, 0x6D, + 0x53, 0x77, 0x6D, 0x6D, 0x8D, 0x2F, 0x00, 0x48, 0xCE, 0x2E, 0x97, 0x29, + 0x95, 0x4C, 0x18, 0x2E, 0x20, 0xBD, 0xBC, 0x5E, 0xAD, 0x8D, 0x10, 0x23, + 0x6B, 0xDD, 0x34, 0x29, 0xEF, 0x33, 0xC6, 0xD0, 0xF9, 0xB8, 0x28, 0x57, + 0x37, 0x55, 0xF0, 0x4E, 0x70, 0xDA, 0x54, 0xB2, 0x12, 0x2C, 0xFA, 0xA8, + 0x8D, 0xCB, 0x39, 0x19, 0x63, 0x40, 0x29, 0x39, 0x17, 0x84, 0xD0, 0xA2, + 0x94, 0x76, 0x1E, 0x82, 0x6C, 0xAD, 0xF3, 0x31, 0xC5, 0x18, 0x20, 0x80, + 0xDE, 0x47, 0x46, 0x60, 0x29, 0x60, 0x5C, 0xAC, 0xF2, 0xFE, 0x7C, 0x1D, + 0x08, 0xA3, 0x82, 0x11, 0x88, 0xA8, 0x94, 0xD2, 0x7B, 0xEF, 0xBC, 0xAD, + 0xAA, 0xFA, 0xE9, 0xE5, 0xB9, 0x80, 0xC2, 0x85, 0x2C, 0x00, 0x12, 0x82, + 0x21, 0xCC, 0xDE, 0x05, 0x8C, 0x71, 0x86, 0xC0, 0x18, 0x4B, 0x09, 0xD9, + 0x6D, 0xD6, 0x7D, 0x23, 0x2B, 0x41, 0x3F, 0xDE, 0xEF, 0xFF, 0xCB, 0xF7, + 0xDF, 0x76, 0x75, 0x45, 0x09, 0x62, 0x84, 0xBC, 0x9D, 0xAE, 0xDA, 0x7A, + 0xCA, 0x58, 0x4C, 0x05, 0x16, 0x20, 0x04, 0x2B, 0x39, 0xAF, 0x9A, 0x0A, + 0x41, 0x88, 0x0A, 0xBC, 0xDB, 0xEF, 0x4E, 0xE7, 0x63, 0x29, 0x00, 0x41, + 0x88, 0x51, 0x21, 0x10, 0x61, 0xC4, 0x43, 0x42, 0xCA, 0x25, 0x17, 0xB3, + 0xB1, 0x6E, 0x58, 0xA6, 0x98, 0x32, 0x63, 0x82, 0x51, 0x4E, 0x29, 0x5C, + 0x77, 0x92, 0x62, 0x7A, 0xD8, 0x1D, 0x52, 0x28, 0x2F, 0x2F, 0x67, 0x8C, + 0xE8, 0xAA, 0xED, 0x57, 0x4D, 0x5B, 0x62, 0xAC, 0x04, 0x0B, 0xCE, 0x11, + 0x4C, 0xAC, 0xD5, 0x21, 0xE6, 0xF7, 0x1F, 0xEE, 0x0B, 0x8C, 0xB7, 0x87, + 0xFE, 0x7E, 0xBF, 0x9D, 0x67, 0x73, 0x3E, 0x8F, 0x10, 0x00, 0xA5, 0xDD, + 0x66, 0xB5, 0x1E, 0x07, 0x05, 0x11, 0x46, 0x00, 0xBD, 0x1C, 0x47, 0x17, + 0xE0, 0xF1, 0xA2, 0x20, 0x20, 0x05, 0xC2, 0xB7, 0xF3, 0x8C, 0x30, 0xD5, + 0xDA, 0x39, 0x1B, 0xAC, 0xF5, 0xCB, 0x62, 0x0B, 0x28, 0x10, 0xA1, 0xF3, + 0x75, 0x51, 0x2E, 0x6A, 0xE3, 0x86, 0x59, 0x2F, 0xDA, 0xF9, 0x18, 0x05, + 0x63, 0x8C, 0xE0, 0x59, 0xD9, 0x59, 0xEB, 0xE3, 0x75, 0x32, 0xDE, 0x29, + 0x6D, 0x84, 0xA0, 0x9C, 0xF2, 0x71, 0xD6, 0xDA, 0xD8, 0x61, 0x5E, 0x20, + 0xCA, 0x82, 0x13, 0x29, 0xEB, 0x98, 0xD3, 0x30, 0xCF, 0xE3, 0xA2, 0x5E, + 0x4F, 0x97, 0xC5, 0xDA, 0xF3, 0xB0, 0x8C, 0xB3, 0xF6, 0x21, 0x62, 0x4C, + 0x16, 0xA5, 0xB5, 0xB1, 0x82, 0x55, 0xAB, 0xAE, 0x82, 0x10, 0x2C, 0xC6, + 0x22, 0x02, 0x0F, 0xFB, 0x75, 0xD7, 0x8B, 0x94, 0x93, 0xB5, 0x41, 0x6B, + 0x37, 0x4D, 0xF3, 0x30, 0x2A, 0x6D, 0x5D, 0x4C, 0xF9, 0x72, 0x9D, 0xF1, + 0xBB, 0xDB, 0xC3, 0xBF, 0xFD, 0xFB, 0x7F, 0xD8, 0x10, 0x38, 0xE7, 0xE3, + 0x38, 0x50, 0x98, 0x18, 0x81, 0xCA, 0x78, 0x8A, 0xD9, 0x37, 0x1F, 0x6E, + 0x0F, 0xDB, 0x86, 0x00, 0x96, 0x7C, 0xF0, 0x80, 0xAA, 0x65, 0x9E, 0xB5, + 0x4D, 0xAC, 0xBD, 0x1C, 0x9F, 0x9D, 0x1E, 0xB5, 0x75, 0xCA, 0xDA, 0x97, + 0xE3, 0x15, 0x63, 0x14, 0x52, 0x2A, 0xB0, 0x8C, 0x93, 0xBD, 0x0C, 0xDA, + 0x85, 0x68, 0x5C, 0x84, 0x10, 0x5A, 0x63, 0xB4, 0x0E, 0x54, 0xF6, 0x3F, + 0xFD, 0xED, 0x4F, 0xDE, 0xEA, 0xE7, 0xE7, 0x71, 0x99, 0x15, 0x46, 0x88, + 0x75, 0xDF, 0x24, 0x48, 0x4F, 0x2F, 0x3F, 0x6E, 0xF7, 0xEF, 0x86, 0xF1, + 0xF2, 0xF0, 0xE1, 0xBB, 0xA6, 0x6D, 0x8E, 0x2F, 0x6F, 0x8C, 0x00, 0x0C, + 0xC1, 0x62, 0x9C, 0x0F, 0xC9, 0xBB, 0xF0, 0xB5, 0x82, 0x90, 0x73, 0xA1, + 0x18, 0x6C, 0x6F, 0x3F, 0x61, 0xF5, 0xF9, 0xC0, 0x15, 0xA7, 0x84, 0xB2, + 0xAA, 0xE0, 0x3E, 0x47, 0x73, 0xD3, 0x39, 0x08, 0xC0, 0x7E, 0xDF, 0x3F, + 0x1F, 0x4F, 0x6F, 0xB3, 0xBA, 0xAA, 0x34, 0x7B, 0x36, 0x59, 0xF7, 0x76, + 0x99, 0xEF, 0xD7, 0x14, 0x80, 0x82, 0x11, 0x5E, 0x4C, 0x5C, 0x2C, 0x70, + 0x3E, 0x3E, 0x8F, 0x5E, 0x47, 0x84, 0x90, 0xFE, 0xFC, 0x66, 0x17, 0x9B, + 0x7F, 0xF7, 0x48, 0x7E, 0xF3, 0xBE, 0xFA, 0xF3, 0x2F, 0x9A, 0xE2, 0x94, + 0x10, 0xFE, 0x72, 0x36, 0x32, 0xBA, 0x21, 0xD1, 0xD3, 0x58, 0x40, 0xC1, + 0xC6, 0xBB, 0xBE, 0x95, 0x57, 0x8D, 0xD7, 0x2D, 0xF9, 0xA7, 0xEF, 0xDF, + 0xAF, 0x56, 0x2B, 0x41, 0x70, 0xD7, 0x56, 0xDE, 0x05, 0x1F, 0xD2, 0x30, + 0xAA, 0xA6, 0xA6, 0x94, 0xE2, 0x59, 0x19, 0x6B, 0x03, 0xA3, 0xAC, 0xAE, + 0xF9, 0xEF, 0xFE, 0xF0, 0x5E, 0x48, 0xB1, 0xEE, 0xAB, 0xDD, 0xA1, 0x5F, + 0xF7, 0xD5, 0xC7, 0x77, 0xF7, 0x5D, 0x57, 0x4B, 0x29, 0x08, 0xC3, 0xDB, + 0xC3, 0xEA, 0xF9, 0xF4, 0xF6, 0xE3, 0xAF, 0x5F, 0xB6, 0xDB, 0xF5, 0xAA, + 0x16, 0x21, 0x85, 0xA7, 0xE3, 0xC5, 0xFB, 0x14, 0x63, 0x7A, 0xFF, 0xFE, + 0x36, 0x07, 0xFB, 0xF2, 0x7A, 0x7D, 0x7E, 0x5B, 0xAC, 0xF3, 0x77, 0x87, + 0x5D, 0x4E, 0x65, 0x9E, 0xF4, 0x30, 0xAA, 0x45, 0x59, 0xED, 0x63, 0x53, + 0x57, 0x08, 0xA2, 0x18, 0x63, 0x4A, 0x19, 0x40, 0x40, 0x29, 0x8D, 0x21, + 0xBE, 0x7F, 0x77, 0xC8, 0xA0, 0x84, 0x10, 0xAF, 0xD3, 0xB2, 0x68, 0x7B, + 0x77, 0xD8, 0xEC, 0xB7, 0xFD, 0x75, 0x5E, 0x40, 0x29, 0x95, 0x14, 0x10, + 0x82, 0xA6, 0xE2, 0xA3, 0x72, 0x42, 0x4A, 0xEF, 0x22, 0x65, 0xF2, 0xED, + 0xED, 0xFA, 0xFC, 0x72, 0xED, 0xFA, 0x7E, 0x9A, 0x74, 0x4C, 0x65, 0xBB, + 0xEB, 0x11, 0x22, 0x39, 0xC3, 0x0C, 0x40, 0x08, 0x01, 0x80, 0x52, 0x72, + 0xA1, 0x9C, 0x14, 0x00, 0x8D, 0x0E, 0xCE, 0x86, 0x5A, 0x52, 0x2E, 0x08, + 0x17, 0xF4, 0x7A, 0x55, 0x21, 0x14, 0xA5, 0x4D, 0x2E, 0xA5, 0xE4, 0x92, + 0x52, 0x3E, 0x5E, 0xCC, 0xCB, 0xDB, 0x7C, 0xBA, 0x9C, 0xCF, 0xD7, 0x93, + 0x8F, 0xB9, 0xE4, 0xE8, 0x43, 0x39, 0x0D, 0x53, 0x4A, 0x91, 0x33, 0x6E, + 0x9D, 0x4D, 0x39, 0x48, 0xC1, 0xD7, 0xAB, 0x6E, 0xBF, 0xE9, 0xA6, 0x69, + 0x89, 0x39, 0xDC, 0xDD, 0xB6, 0x9B, 0xB5, 0x5C, 0x6D, 0x2A, 0x82, 0x09, + 0xC5, 0x25, 0x65, 0x5B, 0x20, 0x9A, 0x17, 0x9D, 0x4B, 0x0E, 0x29, 0x9D, + 0x86, 0x51, 0x5B, 0xDF, 0x76, 0x2D, 0x28, 0x45, 0x69, 0x43, 0x99, 0xB8, + 0x9C, 0x87, 0x98, 0xC2, 0x6E, 0xD7, 0x31, 0x86, 0x4B, 0x8E, 0x4A, 0x69, + 0x08, 0xC2, 0x6E, 0xDB, 0x0F, 0xB3, 0x1D, 0xC6, 0x85, 0x73, 0x69, 0xAC, + 0xFB, 0xF1, 0xE7, 0x2F, 0x10, 0x64, 0x42, 0xC9, 0x4F, 0x3F, 0xBF, 0x09, + 0xCE, 0xAD, 0x8F, 0x8B, 0x72, 0xB9, 0x40, 0xE7, 0xBC, 0xB1, 0xDE, 0x87, + 0xC8, 0x18, 0x1D, 0xA7, 0x79, 0xD1, 0x46, 0x70, 0x46, 0x10, 0x96, 0x14, + 0xEF, 0xB7, 0x9D, 0xAC, 0xC4, 0xF3, 0xCB, 0x11, 0x63, 0x48, 0x08, 0x42, + 0x25, 0x63, 0x4C, 0x0A, 0x42, 0xB1, 0xA0, 0x49, 0x1B, 0x8C, 0x60, 0x4A, + 0xF9, 0x2B, 0x49, 0xB1, 0xAB, 0x25, 0xE3, 0x34, 0xC4, 0x88, 0x20, 0x34, + 0x36, 0x16, 0x04, 0x21, 0x82, 0x31, 0x15, 0xAD, 0x55, 0x29, 0x80, 0x33, + 0xA1, 0xB5, 0xCA, 0x39, 0xA7, 0x94, 0x2E, 0xC3, 0x35, 0x95, 0x1C, 0x7C, + 0xF0, 0xCE, 0x85, 0xE8, 0xB5, 0x56, 0x3E, 0xF8, 0xAF, 0x40, 0xED, 0xF7, + 0xB7, 0xBB, 0x7F, 0xFD, 0xC3, 0xB7, 0x37, 0xDB, 0xDD, 0x7E, 0xB5, 0x7E, + 0x7F, 0x7B, 0xFB, 0xE1, 0xEE, 0xBE, 0xE6, 0xB5, 0x73, 0x11, 0x63, 0xBC, + 0xDF, 0xB4, 0xB7, 0xDB, 0xD6, 0x68, 0xE7, 0x7C, 0x08, 0x21, 0xCE, 0x8B, + 0xDE, 0xAC, 0x6B, 0xC1, 0x89, 0x5A, 0x54, 0x2D, 0xA5, 0xF3, 0x81, 0x40, + 0x54, 0x52, 0x52, 0xDA, 0xC6, 0x54, 0xAC, 0x0B, 0x42, 0xD4, 0x8C, 0x31, + 0x2E, 0x57, 0xA5, 0xA0, 0x5C, 0xCA, 0x69, 0x98, 0xC7, 0x79, 0x36, 0xD6, + 0x87, 0x94, 0xDA, 0xBA, 0xDE, 0x6F, 0xBA, 0x5D, 0xD7, 0x6C, 0x9A, 0x0E, + 0xC4, 0xB2, 0xE9, 0x6B, 0x0C, 0x1C, 0x86, 0x68, 0xD5, 0xAC, 0x50, 0x41, + 0x6A, 0xD1, 0xCE, 0x59, 0x3D, 0xAB, 0x1C, 0x13, 0xA1, 0x74, 0x18, 0x67, + 0x59, 0xB1, 0x79, 0x99, 0x39, 0x67, 0xC6, 0x86, 0x9C, 0x81, 0xA0, 0xF4, + 0x3C, 0xCC, 0x8C, 0xA3, 0xFB, 0x9B, 0x5D, 0x57, 0xD7, 0xDE, 0x85, 0xAA, + 0xA2, 0x21, 0xD9, 0xAA, 0x22, 0x29, 0x03, 0xC1, 0x04, 0xA5, 0x18, 0xC2, + 0xFC, 0xE9, 0xE3, 0xED, 0x6E, 0xD7, 0x85, 0x18, 0x4F, 0xD7, 0x49, 0x19, + 0x9F, 0x53, 0xD6, 0x8B, 0x75, 0x2E, 0x36, 0xB5, 0x00, 0x00, 0xCE, 0x4A, + 0x2F, 0xC6, 0x41, 0x04, 0x53, 0x2E, 0xFB, 0x4D, 0x4F, 0x09, 0x1E, 0xA7, + 0x85, 0x52, 0x42, 0x08, 0xC6, 0x08, 0xCE, 0xB3, 0xA5, 0x84, 0x9E, 0x87, + 0x09, 0x14, 0x80, 0x31, 0x9A, 0x16, 0xC5, 0x28, 0x4A, 0xA9, 0x4C, 0xB3, + 0xD6, 0xD6, 0x18, 0xE7, 0x53, 0xCA, 0xAB, 0xBE, 0x6B, 0xAA, 0x4A, 0x69, + 0x5B, 0x00, 0x98, 0x17, 0x13, 0x62, 0x44, 0x10, 0xF9, 0x98, 0x66, 0x65, + 0x6B, 0x29, 0x0B, 0xC0, 0x4D, 0x25, 0x56, 0x7D, 0xA7, 0xEC, 0x9C, 0xB2, + 0x4D, 0x3E, 0x69, 0xEB, 0x03, 0xC8, 0xCA, 0x6A, 0xE3, 0xBC, 0x36, 0x96, + 0x30, 0xEA, 0x42, 0xC4, 0x9B, 0xB6, 0x31, 0x21, 0x3E, 0x3C, 0x7E, 0xBA, + 0x3D, 0xAC, 0x36, 0xEB, 0x1D, 0xCA, 0xF1, 0xFE, 0xF1, 0x3D, 0x82, 0xEC, + 0xE1, 0xEE, 0x70, 0xB3, 0xEB, 0xB3, 0x8F, 0x9C, 0x30, 0x6B, 0x9D, 0xB2, + 0x0E, 0x34, 0x7B, 0x40, 0xC5, 0xE9, 0xE9, 0xEF, 0x0C, 0x86, 0x5C, 0xCA, + 0x30, 0xAB, 0x45, 0xDB, 0x97, 0xD3, 0x85, 0x71, 0xA2, 0x8C, 0x1B, 0x46, + 0x13, 0x13, 0x38, 0x9E, 0x67, 0x00, 0x11, 0x25, 0x14, 0x61, 0x32, 0x8E, + 0xD7, 0x4A, 0xCA, 0xEB, 0xA8, 0x51, 0x32, 0x9B, 0x4E, 0x9E, 0xCE, 0x23, + 0x26, 0x62, 0x9A, 0x35, 0x13, 0x5D, 0xD3, 0xAD, 0x9E, 0x3F, 0xFF, 0xB9, + 0xA9, 0xD7, 0x08, 0xB3, 0xBB, 0xC7, 0x0F, 0xBF, 0x7E, 0xFE, 0x91, 0x42, + 0xD7, 0xD5, 0x08, 0x12, 0xA4, 0x5C, 0xB4, 0x3E, 0x22, 0x84, 0x9D, 0x77, + 0x10, 0xC4, 0x92, 0x52, 0x0A, 0xA1, 0xED, 0x37, 0xD9, 0x5B, 0xB5, 0x2C, + 0x4D, 0x53, 0xE9, 0xC4, 0x18, 0xE7, 0xA7, 0x51, 0x69, 0x17, 0x6B, 0x49, + 0xAE, 0xA3, 0xB9, 0x8C, 0xD7, 0xD3, 0xE2, 0x05, 0x17, 0x87, 0xAA, 0x50, + 0x60, 0x4F, 0x53, 0xA9, 0x39, 0x69, 0x24, 0x41, 0x08, 0x7B, 0x1F, 0x66, + 0xE3, 0xCF, 0xCA, 0xD6, 0x92, 0x19, 0x97, 0xBA, 0x8A, 0x72, 0x86, 0xB9, + 0x80, 0xCA, 0xE4, 0x1F, 0x9E, 0x0C, 0x27, 0x84, 0x40, 0x3B, 0x2D, 0x81, + 0x42, 0x58, 0xB1, 0xFA, 0x6A, 0xEA, 0x55, 0xBF, 0xF2, 0x85, 0xBF, 0x0E, + 0x0E, 0x92, 0x56, 0x6B, 0xF3, 0xE5, 0xCB, 0xD3, 0xA0, 0xD2, 0x38, 0xDB, + 0xA6, 0xA9, 0xEF, 0xEE, 0x37, 0xD6, 0xFA, 0xEB, 0x34, 0x0B, 0x4A, 0x08, + 0x82, 0x8C, 0x50, 0x4A, 0xD0, 0xA7, 0x87, 0xDD, 0xA7, 0x87, 0xC3, 0xFB, + 0xC7, 0xED, 0x38, 0x2D, 0x25, 0x27, 0x21, 0x49, 0xB0, 0xCE, 0xEB, 0xA0, + 0x96, 0x65, 0x1C, 0x47, 0x88, 0xB2, 0xF5, 0xCE, 0x87, 0x00, 0x61, 0xD9, + 0xAD, 0x7B, 0x46, 0x30, 0x40, 0x45, 0x69, 0xB5, 0xEE, 0xDA, 0xC3, 0xCD, + 0x7A, 0x1A, 0x17, 0x49, 0x50, 0x0A, 0xCE, 0x39, 0x50, 0xB7, 0xDD, 0xA6, + 0x6F, 0xDF, 0xDD, 0x6D, 0xBA, 0xB6, 0x0E, 0x3E, 0x0C, 0xD3, 0xB2, 0x68, + 0x27, 0x6B, 0xAE, 0xB5, 0x79, 0xBB, 0x4C, 0x21, 0x46, 0x8C, 0x21, 0xC6, + 0xD8, 0x19, 0xBF, 0xEA, 0x1B, 0x1F, 0xC3, 0x75, 0x9C, 0xAD, 0xF3, 0x25, + 0xE7, 0x79, 0x31, 0x08, 0x14, 0xEB, 0xA2, 0x0F, 0xD9, 0x87, 0x38, 0x29, + 0x7D, 0xBB, 0x5B, 0x6B, 0xE3, 0xEA, 0xA6, 0x09, 0x31, 0xE7, 0x02, 0x9D, + 0x0F, 0xA9, 0x24, 0x6D, 0x1C, 0x61, 0x62, 0x9E, 0x95, 0xB5, 0x7E, 0x9E, + 0x2D, 0x22, 0x04, 0x21, 0xB4, 0xCC, 0x6A, 0x1C, 0x16, 0x21, 0x44, 0xDB, + 0xD4, 0x84, 0xE0, 0xB7, 0xD7, 0xE1, 0x32, 0x2E, 0xCA, 0x78, 0x8C, 0x91, + 0x10, 0xFC, 0x7C, 0x9E, 0xAD, 0x0B, 0x29, 0xA7, 0xBA, 0xA9, 0x04, 0x67, + 0x20, 0x17, 0x42, 0x40, 0x01, 0xF9, 0xED, 0x3C, 0xC5, 0x94, 0x8D, 0xF5, + 0xA8, 0xB8, 0xDF, 0x7D, 0x5A, 0xBF, 0x0D, 0x4E, 0x69, 0x87, 0x31, 0x32, + 0xCE, 0xDE, 0xAC, 0xE9, 0xBF, 0xFC, 0xA6, 0xCD, 0x48, 0x04, 0x57, 0x30, + 0x44, 0x08, 0x94, 0x7F, 0xFA, 0x6E, 0xBF, 0xDB, 0xB6, 0x9C, 0x02, 0xC1, + 0xD0, 0x78, 0x1D, 0x7C, 0x8A, 0xB3, 0xF2, 0xC7, 0xD3, 0x14, 0x73, 0x84, + 0x08, 0x4C, 0x7A, 0xD1, 0xCA, 0x8E, 0x93, 0x46, 0x18, 0xF5, 0x5D, 0xBD, + 0x2C, 0xFA, 0x97, 0x5F, 0x9E, 0x52, 0x8A, 0x00, 0xC2, 0x1C, 0xE2, 0x76, + 0xD7, 0x32, 0x86, 0x28, 0x2D, 0x84, 0x62, 0x65, 0xD3, 0xF9, 0x3C, 0x61, + 0x8C, 0x30, 0x2E, 0x7F, 0xFD, 0xF1, 0xE7, 0x69, 0x5E, 0x38, 0x67, 0xD7, + 0x41, 0x51, 0x4A, 0xA5, 0x94, 0x8B, 0xB2, 0x3E, 0xE5, 0x71, 0x52, 0x31, + 0x97, 0x9C, 0x4B, 0x4E, 0xA9, 0x16, 0x1C, 0x94, 0x1C, 0x63, 0xB8, 0xDB, + 0xAE, 0x18, 0x01, 0x6F, 0xA7, 0x41, 0x2B, 0xED, 0xBD, 0x37, 0xC6, 0x70, + 0xC9, 0x30, 0x86, 0xDE, 0x07, 0x59, 0x89, 0x58, 0xD0, 0xA8, 0x4C, 0x4A, + 0x09, 0x02, 0x54, 0x0A, 0xB8, 0xD9, 0x75, 0x29, 0xE5, 0x69, 0xD6, 0x10, + 0x41, 0x42, 0x89, 0xD1, 0x2E, 0xE5, 0x1C, 0x53, 0xB6, 0xD6, 0xE5, 0x52, + 0x4A, 0x29, 0x52, 0x56, 0xA5, 0x00, 0x67, 0xAD, 0x0F, 0xDE, 0x58, 0xEB, + 0x82, 0x4F, 0x29, 0x41, 0x00, 0x4A, 0xC9, 0x39, 0x67, 0xCE, 0x29, 0xC8, + 0x05, 0x40, 0x70, 0xBB, 0x5D, 0xFD, 0xEE, 0xFD, 0x47, 0x35, 0x59, 0x6D, + 0x42, 0xCA, 0x60, 0x9A, 0x4C, 0x4A, 0x59, 0xBB, 0xF0, 0xE5, 0xF9, 0xCD, + 0x87, 0xA0, 0x8D, 0xB7, 0x3E, 0xED, 0x36, 0xFD, 0xE3, 0xCD, 0x86, 0x52, + 0xF8, 0xED, 0xC7, 0x1B, 0x81, 0x31, 0xA7, 0x78, 0xBB, 0xEE, 0x40, 0x86, + 0x52, 0xD6, 0x08, 0x02, 0xA5, 0x54, 0xD3, 0x54, 0x04, 0x23, 0x8C, 0xD9, + 0x6A, 0xBD, 0x89, 0x21, 0x1D, 0xCF, 0x63, 0x08, 0xC1, 0x3A, 0x37, 0xCC, + 0x0B, 0xA3, 0xE8, 0x0F, 0xDF, 0xDE, 0x13, 0x4C, 0x5B, 0x29, 0x36, 0x0D, + 0xE7, 0x94, 0x5E, 0xC6, 0xD9, 0x85, 0xE0, 0xBD, 0x0F, 0xD1, 0x13, 0x8A, + 0x29, 0xC6, 0x31, 0x84, 0xED, 0xBE, 0x43, 0x04, 0xC4, 0xE2, 0x79, 0x25, + 0x4E, 0xC7, 0xB1, 0x00, 0xC0, 0x28, 0x22, 0x10, 0xC2, 0x08, 0xB5, 0x72, + 0x31, 0x64, 0x63, 0xED, 0x76, 0xDD, 0xFC, 0xE6, 0xFD, 0xED, 0xC3, 0xCD, + 0xFE, 0xF1, 0xB0, 0x5B, 0xF5, 0x62, 0xBF, 0xAD, 0xF7, 0xEB, 0xF6, 0xC3, + 0xC3, 0x81, 0x61, 0x96, 0x9D, 0x23, 0xB8, 0xDC, 0xDE, 0x6D, 0x8D, 0x35, + 0xD7, 0xEB, 0x84, 0x09, 0x4A, 0x19, 0x74, 0x9D, 0xAC, 0x1B, 0x11, 0x63, + 0x59, 0x94, 0xE1, 0x8C, 0x39, 0xE7, 0x63, 0x4C, 0xDA, 0xF9, 0x5C, 0x0A, + 0x25, 0x98, 0x73, 0xD2, 0xD4, 0xF2, 0xAB, 0x3A, 0x32, 0xA5, 0x14, 0x42, + 0xA4, 0x94, 0x5A, 0x1B, 0x53, 0xCA, 0xCE, 0x39, 0x84, 0xB2, 0x60, 0x94, + 0x62, 0xC2, 0x19, 0xD3, 0xD6, 0x10, 0x02, 0x53, 0x4A, 0x87, 0xDD, 0x8A, + 0x51, 0x74, 0xBE, 0x0E, 0x29, 0xE7, 0x59, 0x2F, 0xB3, 0xD6, 0x84, 0x16, + 0xC6, 0xA1, 0x35, 0xC1, 0x78, 0x3F, 0x19, 0x7B, 0xBC, 0x4E, 0x21, 0x96, + 0x92, 0x10, 0x82, 0x88, 0x72, 0x92, 0x13, 0x7C, 0x7D, 0x1D, 0x6D, 0xF0, + 0x00, 0xA2, 0xCB, 0x65, 0x62, 0x82, 0x62, 0x42, 0xA6, 0x49, 0xE1, 0xDF, + 0x7F, 0xFF, 0xCD, 0xCD, 0xDD, 0xA3, 0x56, 0xE6, 0xFE, 0xE6, 0x66, 0xDD, + 0xF5, 0xAB, 0x55, 0x4F, 0x38, 0xE1, 0x04, 0x1B, 0x65, 0xAC, 0xF1, 0x9C, + 0x8A, 0x69, 0x31, 0x93, 0x32, 0xDE, 0x5B, 0x9F, 0xD1, 0xE7, 0x9F, 0xFF, + 0x6E, 0xD5, 0xB0, 0x58, 0x37, 0x2E, 0x7A, 0x36, 0x2E, 0x95, 0x84, 0x40, + 0x0E, 0x21, 0x2A, 0x13, 0x0A, 0x80, 0x08, 0x41, 0xCA, 0xD8, 0x30, 0xD9, + 0x49, 0xD9, 0x65, 0x36, 0x94, 0x89, 0x4F, 0xBF, 0xF9, 0xA3, 0xD1, 0x7A, + 0xB3, 0xDE, 0xAE, 0x7B, 0x49, 0x45, 0x07, 0x20, 0xBD, 0x5E, 0x87, 0x55, + 0x03, 0xD7, 0x37, 0xBF, 0xE9, 0xE1, 0xB4, 0x16, 0x09, 0xB4, 0x1F, 0xFE, + 0xFA, 0xE7, 0x7F, 0xFB, 0xDB, 0x0F, 0x7F, 0xFA, 0x97, 0x7B, 0xB9, 0x6F, + 0xF1, 0x5F, 0x3E, 0x0F, 0x1C, 0x95, 0xEF, 0xEE, 0xFA, 0x49, 0x85, 0x69, + 0xD1, 0x31, 0xFC, 0xE3, 0x02, 0xDF, 0x6F, 0xF6, 0x35, 0x50, 0xFB, 0x26, + 0xF5, 0xD8, 0xFF, 0x38, 0xD1, 0x6F, 0x6F, 0x5B, 0x7D, 0xFD, 0x8C, 0x70, + 0xBE, 0x5F, 0x77, 0x46, 0xEB, 0xDF, 0x3F, 0x88, 0x9A, 0x63, 0x88, 0x50, + 0x8B, 0xCD, 0x68, 0x0B, 0x84, 0x64, 0xBF, 0x2E, 0x08, 0x85, 0x04, 0x22, + 0xA2, 0x65, 0xB1, 0xE1, 0x77, 0xB7, 0x7C, 0xD7, 0xF1, 0xBF, 0xBE, 0xD8, + 0xD9, 0xC4, 0x49, 0xC7, 0x97, 0x73, 0xC4, 0x08, 0x3C, 0xEE, 0xB9, 0x89, + 0x99, 0x32, 0xA8, 0x0C, 0xB8, 0x4C, 0x6E, 0x0A, 0xE0, 0xE7, 0xA7, 0x25, + 0xA7, 0xFC, 0xEB, 0xCB, 0xE9, 0xF9, 0xF4, 0xC2, 0x05, 0x57, 0x8B, 0x8F, + 0xF6, 0x4A, 0x91, 0x9B, 0xE7, 0xC5, 0x7B, 0x0F, 0x52, 0xAC, 0x24, 0xDB, + 0xAD, 0xEA, 0xFD, 0xBA, 0xFA, 0xE6, 0xE3, 0xCD, 0xFD, 0xFD, 0xFA, 0xC3, + 0xC3, 0x6E, 0xD3, 0x37, 0x39, 0x06, 0x88, 0x0A, 0x22, 0x50, 0x4A, 0x0A, + 0x60, 0xC1, 0x04, 0x1B, 0xED, 0xEB, 0x9A, 0x04, 0xEF, 0x17, 0x65, 0x4F, + 0xC7, 0xE5, 0xF5, 0xF9, 0x5A, 0x62, 0x71, 0x36, 0x68, 0xE5, 0x8C, 0xF6, + 0x52, 0x8A, 0xBE, 0x6D, 0x39, 0xC1, 0xEB, 0xB6, 0x69, 0x2B, 0x79, 0xB3, + 0xDF, 0x34, 0x55, 0xBD, 0xEA, 0xAA, 0x75, 0x5F, 0x7D, 0x85, 0xE2, 0x57, + 0x95, 0xDC, 0x6F, 0x57, 0xEB, 0xAE, 0x86, 0xA5, 0x5C, 0xC7, 0x19, 0x42, + 0x40, 0x10, 0x14, 0x82, 0xCD, 0xB3, 0x66, 0x8C, 0x4E, 0x4A, 0xFF, 0xFA, + 0x7C, 0xDE, 0x6F, 0xB7, 0x31, 0xC5, 0x02, 0xA0, 0x10, 0x5C, 0x99, 0xE0, + 0x7C, 0x00, 0x10, 0x7D, 0x75, 0x17, 0x0D, 0xB3, 0xEE, 0x9A, 0x6A, 0xB3, + 0xEE, 0xCE, 0x83, 0x9A, 0x16, 0xB5, 0x28, 0x0B, 0x20, 0x48, 0x09, 0x58, + 0x1B, 0x76, 0xDB, 0xF5, 0x7A, 0xB3, 0x1A, 0x27, 0x45, 0x29, 0x13, 0x9C, + 0xC5, 0x98, 0x28, 0xC7, 0x31, 0xA6, 0x10, 0x0B, 0x82, 0x90, 0x32, 0x8C, + 0x09, 0xB6, 0x2E, 0xA6, 0x94, 0x9D, 0x4F, 0x21, 0xC6, 0xAE, 0x97, 0xFB, + 0xFD, 0x0A, 0x41, 0x74, 0x3E, 0x0F, 0x18, 0x63, 0x4A, 0x51, 0xB7, 0xC2, + 0x9F, 0xBF, 0x1C, 0x73, 0xB6, 0x75, 0x2D, 0x7F, 0xFB, 0xAE, 0xD2, 0x6A, + 0xF1, 0xC1, 0xDF, 0xEC, 0xF0, 0xDB, 0x39, 0xFC, 0xD7, 0xEF, 0xAB, 0xDF, + 0x7D, 0xAA, 0x29, 0xC2, 0x75, 0xB7, 0xE1, 0x0C, 0xDF, 0x1E, 0xAA, 0x4D, + 0x4F, 0xA5, 0x20, 0x18, 0x33, 0x98, 0x32, 0x0C, 0x69, 0x98, 0x97, 0xBF, + 0xFD, 0x72, 0x55, 0xC6, 0x63, 0x82, 0xA6, 0x69, 0xA9, 0x6A, 0x02, 0x11, + 0xF0, 0xA1, 0x28, 0x6D, 0x9C, 0x4B, 0x31, 0xC4, 0x71, 0x5C, 0x08, 0x46, + 0x29, 0x84, 0xCB, 0x65, 0xF4, 0x21, 0x4C, 0x83, 0x2E, 0x39, 0x0A, 0x86, + 0x84, 0xE4, 0x29, 0x03, 0x42, 0x11, 0xA1, 0xE8, 0xF5, 0x78, 0x24, 0x18, + 0xF5, 0x2B, 0xB1, 0x68, 0xF7, 0x76, 0x9A, 0x41, 0x01, 0x10, 0x82, 0x54, + 0x8A, 0xB1, 0x5E, 0x72, 0x52, 0x09, 0xCE, 0x39, 0xDD, 0x74, 0xD5, 0xFD, + 0xCD, 0xED, 0xC7, 0xC7, 0xDB, 0x86, 0xB3, 0xF7, 0x0F, 0x7B, 0x00, 0x8B, + 0xF3, 0x0E, 0x13, 0x6C, 0x9C, 0x8B, 0x31, 0x52, 0x4A, 0xAA, 0x9A, 0xFA, + 0x5C, 0x0A, 0x00, 0x31, 0xE5, 0x98, 0xC3, 0xAA, 0x16, 0x0F, 0xFB, 0x1E, + 0x21, 0x18, 0x42, 0x7A, 0x38, 0x6C, 0x26, 0xA5, 0xBD, 0x8F, 0x39, 0x27, + 0x8C, 0x11, 0x97, 0x42, 0x56, 0x9C, 0x10, 0x3C, 0x2F, 0x1A, 0x42, 0x08, + 0x41, 0x19, 0xC6, 0xB1, 0xAA, 0xDB, 0x18, 0x82, 0x0F, 0x36, 0xE7, 0x02, + 0x00, 0x24, 0x04, 0x53, 0x4A, 0x4B, 0xCE, 0x8C, 0x12, 0x0C, 0xD1, 0xAA, + 0xA9, 0xDE, 0xDD, 0xDD, 0x23, 0xCC, 0x6D, 0x88, 0xE7, 0xCB, 0xD9, 0x87, + 0xD8, 0xD4, 0x0D, 0xA1, 0x98, 0x61, 0xF0, 0x72, 0x3C, 0x4D, 0x4A, 0x1B, + 0x1F, 0xCF, 0xC3, 0xEC, 0x43, 0x3C, 0x0D, 0xF3, 0x7A, 0xD5, 0x56, 0x92, + 0x5B, 0x1D, 0x18, 0xE5, 0x08, 0x40, 0x42, 0x68, 0x55, 0xB5, 0x55, 0x8D, + 0x05, 0xA7, 0x6D, 0xDB, 0x69, 0xE3, 0x38, 0x17, 0x31, 0x80, 0xE3, 0x75, + 0x3A, 0x0D, 0x63, 0x88, 0x61, 0x9A, 0x97, 0x55, 0x57, 0x7F, 0xFF, 0xEE, + 0xE1, 0x76, 0xD3, 0x82, 0x94, 0xFA, 0xA6, 0x62, 0x94, 0xBC, 0x5D, 0x46, + 0x65, 0x7D, 0x55, 0xD7, 0x00, 0xE2, 0xB7, 0xEB, 0x78, 0xBA, 0x0E, 0x25, + 0xE5, 0x0C, 0x12, 0x00, 0xE5, 0xF9, 0xE5, 0x34, 0x29, 0x7D, 0x7F, 0x73, + 0x28, 0x29, 0x6D, 0xB7, 0x9B, 0x87, 0xDB, 0xDB, 0x5A, 0x48, 0xC9, 0xE4, + 0xA6, 0x6B, 0x2B, 0xCE, 0x08, 0x61, 0xB5, 0xAC, 0x18, 0xE1, 0x29, 0xE6, + 0xE7, 0xD7, 0xF3, 0xE9, 0x3C, 0x45, 0x5F, 0xA2, 0x4F, 0x18, 0x92, 0xAE, + 0xAA, 0x6F, 0x77, 0xFD, 0xCD, 0x76, 0x7D, 0xBD, 0x4E, 0xAF, 0xA7, 0xE9, + 0x7C, 0x5D, 0x9C, 0x0B, 0x9C, 0xD2, 0x65, 0xD2, 0xA5, 0xC0, 0x46, 0xF0, + 0xC3, 0x76, 0x65, 0x6D, 0xD8, 0xF4, 0x2D, 0xC1, 0xF8, 0x32, 0x29, 0x29, + 0xE9, 0x61, 0xDB, 0x34, 0x95, 0x24, 0x18, 0x59, 0x1B, 0x86, 0x49, 0x9F, + 0xC7, 0xA5, 0x64, 0x40, 0x30, 0xA4, 0x04, 0x7E, 0x7C, 0xB7, 0xAF, 0x05, + 0xF9, 0xF8, 0xB0, 0xBE, 0xDD, 0x36, 0xEF, 0xEE, 0xB7, 0x7D, 0xC3, 0x6F, + 0x6E, 0xDA, 0xD5, 0xAA, 0x2A, 0x39, 0x3A, 0x6F, 0x8D, 0xD7, 0x4C, 0x52, + 0xCA, 0x40, 0x8E, 0xA1, 0x69, 0x99, 0x90, 0x04, 0x11, 0x58, 0x0A, 0x2A, + 0x25, 0xBF, 0x9E, 0xCF, 0x31, 0x64, 0xEF, 0xD3, 0x79, 0x98, 0xE6, 0xC5, + 0x2E, 0xCA, 0x87, 0xF8, 0x75, 0xD3, 0x80, 0x98, 0x0A, 0x80, 0xD0, 0x68, + 0xD7, 0xB5, 0x6D, 0x5B, 0x4B, 0xFC, 0xFE, 0xF1, 0x5D, 0x2C, 0xD2, 0x5A, + 0x1D, 0xCD, 0xA2, 0x97, 0x71, 0x18, 0xA7, 0x97, 0xD7, 0xA7, 0xE1, 0x7A, + 0x99, 0x86, 0x6B, 0xCA, 0x9E, 0x35, 0xDB, 0xB7, 0xD3, 0x65, 0x5E, 0x66, + 0xCA, 0x48, 0x48, 0xF1, 0x74, 0x3A, 0xF6, 0x5D, 0x1B, 0x42, 0x98, 0xB5, + 0x01, 0x05, 0x74, 0x35, 0x83, 0x10, 0x1A, 0xE3, 0x73, 0xCE, 0x05, 0x42, + 0x4E, 0x69, 0x88, 0x59, 0x19, 0x7B, 0xB3, 0x5D, 0xAD, 0x57, 0xEB, 0x0F, + 0xDF, 0xFE, 0xFE, 0x2F, 0x7F, 0xFA, 0x37, 0x9C, 0xFD, 0xE3, 0xBA, 0x7B, + 0x7E, 0xBB, 0xAC, 0xAB, 0x24, 0x80, 0xF3, 0x09, 0xCC, 0xB3, 0x8E, 0x89, + 0xEC, 0xFB, 0x6A, 0x59, 0xC6, 0x9F, 0x5E, 0x96, 0xE8, 0xEC, 0xA7, 0x2D, + 0xFA, 0x7E, 0x4F, 0xFE, 0xD7, 0xE7, 0xF1, 0x3A, 0x07, 0x49, 0x90, 0xB1, + 0x1E, 0x14, 0xFF, 0x61, 0xDF, 0xFE, 0xE1, 0xDD, 0xEA, 0x32, 0x2F, 0x48, + 0xEE, 0x36, 0x02, 0x3D, 0xA2, 0x1F, 0x0F, 0xDB, 0x36, 0x8B, 0x9B, 0x93, + 0xA3, 0x71, 0xF8, 0xF1, 0x6E, 0x4B, 0xEE, 0x0E, 0x5B, 0x14, 0x0D, 0x4A, + 0x3E, 0x79, 0x4B, 0x60, 0xAC, 0xEB, 0x6A, 0xD4, 0x61, 0xDB, 0xD3, 0x93, + 0x72, 0x67, 0x1D, 0x5F, 0xA6, 0x78, 0xD5, 0x31, 0xE4, 0x84, 0x12, 0xB6, + 0x21, 0xFF, 0x72, 0xB6, 0x88, 0x22, 0xED, 0x53, 0x57, 0x97, 0x02, 0xE1, + 0xAA, 0xA3, 0x94, 0xA2, 0xA7, 0x37, 0x37, 0xAA, 0xEC, 0x22, 0x46, 0xB4, + 0x7E, 0x7D, 0x55, 0x08, 0x94, 0x9B, 0x5D, 0x17, 0xA3, 0xA3, 0x1C, 0x54, + 0xF5, 0x6E, 0x1C, 0x06, 0x49, 0x4A, 0x55, 0x89, 0xB6, 0x6B, 0x10, 0x2C, + 0x31, 0xFA, 0x55, 0x5F, 0xF5, 0x35, 0x69, 0x1A, 0x76, 0x1D, 0x14, 0xA4, + 0x48, 0x3B, 0xFF, 0xF4, 0x74, 0x81, 0xA4, 0x5C, 0x66, 0x35, 0x4E, 0x86, + 0x10, 0x7C, 0xBE, 0x2E, 0x7F, 0xFB, 0xF1, 0x95, 0x31, 0x02, 0x31, 0x34, + 0x36, 0x2E, 0x3A, 0x00, 0xCC, 0x5C, 0x48, 0xB9, 0x80, 0x10, 0x13, 0x17, + 0x54, 0x48, 0xB1, 0xCC, 0x2E, 0x86, 0x18, 0x82, 0x8F, 0x31, 0x59, 0x1F, + 0xAF, 0x93, 0x76, 0x3E, 0x18, 0xEB, 0x43, 0x4C, 0x8B, 0x36, 0x5F, 0x69, + 0x4D, 0x31, 0xA5, 0xBE, 0xAD, 0xFB, 0x55, 0x75, 0xB3, 0xDF, 0xAE, 0x9A, + 0x86, 0x62, 0x94, 0x53, 0xDE, 0x74, 0xCD, 0xF1, 0x32, 0x5C, 0x86, 0x71, + 0xDD, 0x77, 0x7D, 0xD3, 0x0E, 0xF3, 0x42, 0x29, 0x8F, 0x21, 0x1D, 0x76, + 0x3D, 0xC2, 0x08, 0x13, 0x9C, 0x52, 0x1A, 0xE6, 0x25, 0xF8, 0xB0, 0xEA, + 0xBA, 0xBF, 0x7F, 0x7E, 0x9D, 0xE6, 0x45, 0x5B, 0xCB, 0x19, 0x4E, 0x39, + 0xA7, 0x98, 0xB7, 0xAB, 0xB6, 0xAA, 0x24, 0x63, 0x94, 0x4B, 0x9A, 0x72, + 0xC6, 0x18, 0x09, 0x29, 0xAD, 0xF6, 0xDE, 0x45, 0x6D, 0x9C, 0x77, 0xA1, + 0x96, 0x12, 0x21, 0x54, 0x0A, 0xE4, 0x15, 0x1D, 0x86, 0x25, 0xE5, 0xDC, + 0xD4, 0x32, 0xF9, 0x3C, 0x0C, 0x8B, 0x0D, 0x46, 0x48, 0x52, 0x42, 0xC0, + 0x28, 0xC5, 0x90, 0xBF, 0x7B, 0x5F, 0x7F, 0xFF, 0xA1, 0x21, 0x14, 0x6A, + 0xBD, 0xFC, 0xF3, 0x77, 0x0D, 0x04, 0x19, 0x02, 0xFC, 0xFD, 0x43, 0x95, + 0x52, 0x10, 0x15, 0xDF, 0x6E, 0x1B, 0x4E, 0x52, 0x5B, 0x11, 0xC9, 0x82, + 0xE4, 0x8C, 0x92, 0x42, 0x10, 0x2B, 0x21, 0xD9, 0xE8, 0x36, 0xB7, 0xBC, + 0xED, 0xB9, 0x73, 0x7E, 0xD5, 0x11, 0x8A, 0xD1, 0x30, 0x58, 0x88, 0x92, + 0x0F, 0x85, 0x10, 0x0A, 0x61, 0xBE, 0xB9, 0xED, 0xDA, 0x5A, 0x20, 0x00, + 0x6C, 0x44, 0x84, 0x22, 0xB5, 0x18, 0x58, 0x52, 0x25, 0xD8, 0xF5, 0x3C, + 0x41, 0x08, 0x5D, 0x0A, 0xC7, 0xF3, 0x9C, 0x73, 0xC6, 0x10, 0x9E, 0xAF, + 0x83, 0xD2, 0xBE, 0x6F, 0xEA, 0x56, 0xD2, 0xF7, 0x0F, 0xDB, 0xDD, 0xBA, + 0xFF, 0x70, 0xB7, 0xFB, 0xE7, 0xDF, 0x7E, 0xBC, 0xD9, 0xF4, 0x1F, 0xEE, + 0x77, 0xF7, 0x87, 0xED, 0xED, 0xBE, 0xBB, 0x59, 0x0B, 0x46, 0xE0, 0x3C, + 0xEB, 0x71, 0x56, 0x9B, 0xF5, 0x0A, 0x20, 0x18, 0x53, 0xA4, 0x94, 0x50, + 0x82, 0x11, 0xCA, 0x25, 0x16, 0x42, 0x50, 0xF0, 0x9E, 0x62, 0xF8, 0xFE, + 0x6E, 0x0F, 0x21, 0x88, 0x29, 0xC6, 0x5C, 0xCE, 0xC3, 0xA4, 0x8D, 0xF3, + 0x31, 0x53, 0x46, 0xFA, 0xBE, 0x4D, 0x29, 0xC7, 0x18, 0x62, 0x48, 0x8C, + 0x52, 0x08, 0xA0, 0x76, 0xBE, 0xAA, 0x1B, 0xEF, 0xBD, 0xF7, 0xAE, 0x80, + 0xAF, 0xB4, 0x63, 0x10, 0x62, 0x4C, 0x29, 0x15, 0x00, 0x08, 0x41, 0xEB, + 0xB6, 0xDE, 0xAC, 0xD6, 0x08, 0xF3, 0x90, 0x81, 0xF5, 0xC9, 0x58, 0xD7, + 0xB7, 0xED, 0x66, 0xD5, 0xE5, 0x9C, 0x8D, 0x35, 0xEB, 0x75, 0x5B, 0x40, + 0x96, 0x15, 0xA7, 0x8C, 0x12, 0x4A, 0x10, 0xC2, 0x6A, 0xB1, 0xE3, 0x62, + 0xDB, 0xAE, 0x91, 0x75, 0xF5, 0x76, 0x1A, 0x00, 0x84, 0xA5, 0x24, 0x67, + 0x4C, 0x5D, 0x55, 0xE3, 0x62, 0x00, 0xC0, 0x25, 0x03, 0x6D, 0xFD, 0xB2, + 0xE8, 0xBA, 0x6E, 0x32, 0x00, 0xFB, 0x5D, 0x7B, 0xB3, 0xD9, 0x01, 0x80, + 0x8D, 0xB1, 0x82, 0x53, 0x00, 0x80, 0x0B, 0x9E, 0x71, 0x12, 0x52, 0x8E, + 0x19, 0x2F, 0xC6, 0x5D, 0xA7, 0x39, 0xBA, 0xC0, 0x28, 0x79, 0xBB, 0xCC, + 0x29, 0xFA, 0xB6, 0x62, 0xF7, 0xFB, 0x9B, 0x8A, 0x71, 0x82, 0x70, 0x55, + 0x57, 0x6F, 0xC7, 0xE3, 0x62, 0x8C, 0xF5, 0x56, 0x7F, 0xED, 0xF7, 0x52, + 0x1E, 0x73, 0x7A, 0x7B, 0x3B, 0x2F, 0xD6, 0xFE, 0xF4, 0x74, 0x3C, 0x0D, + 0xF6, 0xE5, 0x34, 0xA6, 0x0C, 0x25, 0x17, 0x10, 0x63, 0x21, 0x24, 0xC6, + 0xA4, 0xEF, 0xE4, 0x7A, 0xDD, 0x72, 0x46, 0xEB, 0x8A, 0x8F, 0x93, 0xE2, + 0x8C, 0x31, 0x8C, 0x28, 0x46, 0x94, 0x60, 0x8C, 0x11, 0x67, 0x04, 0x94, + 0xB2, 0x6A, 0x44, 0x5D, 0x53, 0x08, 0xD0, 0xED, 0x76, 0x6B, 0x8C, 0x39, + 0x5E, 0xE7, 0x94, 0x0A, 0xA7, 0xE4, 0xE1, 0x6E, 0x43, 0x29, 0xEA, 0x1A, + 0xDA, 0x4A, 0xD6, 0x56, 0xD5, 0x32, 0x9B, 0xAE, 0xAD, 0x82, 0x8B, 0x39, + 0x17, 0xAD, 0x7C, 0x53, 0x8B, 0x52, 0x60, 0xD7, 0x49, 0x2E, 0x28, 0xA1, + 0x50, 0xD6, 0x22, 0xF8, 0x94, 0x73, 0xC2, 0x18, 0x4C, 0x83, 0x72, 0x21, + 0x26, 0x5C, 0x42, 0xC8, 0x5F, 0x0B, 0x73, 0x08, 0x82, 0xEB, 0xB4, 0xFC, + 0xF2, 0xE5, 0xB4, 0x59, 0xB5, 0x10, 0xE5, 0x61, 0x98, 0x0B, 0x2C, 0xD1, + 0x87, 0xBA, 0xAA, 0x20, 0x44, 0x97, 0x71, 0x22, 0x11, 0x94, 0xD5, 0xBA, + 0x39, 0x9E, 0x5E, 0x46, 0xA7, 0x08, 0x61, 0x00, 0x02, 0x6F, 0x6D, 0xD3, + 0xC8, 0x55, 0x5D, 0x55, 0xAB, 0x5B, 0x9B, 0xF1, 0xE9, 0x72, 0x2E, 0x25, + 0x2B, 0xAD, 0x9A, 0xCD, 0xDD, 0xCD, 0xFD, 0x87, 0xB7, 0xA7, 0xBF, 0x6B, + 0x63, 0x00, 0x00, 0x84, 0x91, 0xE3, 0x79, 0x24, 0x04, 0x43, 0x04, 0x8D, + 0x09, 0x02, 0x12, 0xE3, 0x42, 0x8C, 0xFE, 0xFD, 0xED, 0xB6, 0x11, 0xEC, + 0xF1, 0xDB, 0x7F, 0xBA, 0x5E, 0x4F, 0xFB, 0x1A, 0xDE, 0x1E, 0x56, 0xA5, + 0xB8, 0x3F, 0x3E, 0x22, 0x52, 0x32, 0x6A, 0xD8, 0x37, 0x1B, 0xE8, 0x63, + 0x20, 0xEC, 0xF8, 0x83, 0xFE, 0x34, 0x2E, 0xB2, 0x2D, 0x2F, 0x7F, 0xFC, + 0x7E, 0x87, 0x5C, 0xF8, 0x32, 0x4C, 0xE7, 0x39, 0x75, 0x92, 0x29, 0x9F, + 0x0F, 0x1B, 0xF9, 0xFB, 0xBB, 0xBC, 0xE9, 0x01, 0x41, 0x99, 0xA3, 0x8D, + 0xE5, 0x8F, 0xE5, 0xF2, 0xD7, 0xB2, 0x7A, 0x77, 0xA4, 0x1F, 0xE6, 0xE1, + 0xB4, 0x29, 0x9F, 0x9F, 0xC7, 0x78, 0x77, 0x53, 0x3D, 0x9F, 0x4E, 0x8B, + 0x8A, 0xEF, 0xB6, 0x02, 0xE3, 0xE6, 0x7F, 0xFC, 0xE7, 0xD3, 0xFB, 0x77, + 0x8D, 0xF5, 0xE0, 0xCF, 0xAF, 0xF3, 0x4F, 0xA7, 0x42, 0x10, 0x3C, 0xEC, + 0xF1, 0xDB, 0x35, 0x61, 0x00, 0x3E, 0x6D, 0xF3, 0x92, 0xF0, 0xEC, 0xCA, + 0xA8, 0x22, 0xE7, 0x60, 0x56, 0x05, 0x42, 0xE0, 0x63, 0xF9, 0xE5, 0xA7, + 0x18, 0x3C, 0x20, 0x34, 0x33, 0xEA, 0x2A, 0x01, 0xB7, 0x1D, 0x6C, 0xEB, + 0x15, 0xC6, 0x28, 0xC6, 0x58, 0x10, 0x34, 0x26, 0x42, 0x10, 0xA7, 0x69, + 0xA1, 0x92, 0x25, 0xEF, 0xBB, 0x5E, 0x70, 0x0C, 0x4A, 0x0A, 0xE7, 0xC1, + 0xFA, 0x9C, 0x5F, 0xBE, 0x0C, 0xF8, 0x8D, 0xE4, 0x5C, 0x96, 0xC9, 0xFC, + 0xF6, 0xBB, 0xFD, 0xB8, 0x58, 0x6B, 0xB3, 0xF6, 0xC9, 0xDA, 0x38, 0x6B, + 0x3F, 0x8D, 0x2F, 0x5D, 0x5F, 0xAB, 0xC5, 0x61, 0x42, 0x08, 0x26, 0x4D, + 0x25, 0x8D, 0x73, 0x8C, 0x11, 0x51, 0xD3, 0x79, 0xD6, 0xD3, 0x62, 0x82, + 0x8B, 0x08, 0x43, 0x6B, 0x3D, 0xE3, 0x14, 0x61, 0x84, 0x31, 0x82, 0x00, + 0xB5, 0xAC, 0xB2, 0x3A, 0x1A, 0x6F, 0xB7, 0xDB, 0x5E, 0x2D, 0xD6, 0x84, + 0x70, 0x7E, 0x1B, 0x00, 0x80, 0xBB, 0xF5, 0x6A, 0xB7, 0xED, 0x38, 0x41, + 0x00, 0xC4, 0x9B, 0x6D, 0xF5, 0xDF, 0xFF, 0xE7, 0x9F, 0xD6, 0x5D, 0x3B, + 0x8C, 0xCB, 0xB4, 0x18, 0xC1, 0x2B, 0x29, 0x65, 0x57, 0x57, 0x97, 0x59, + 0x05, 0x1F, 0x5D, 0x88, 0xA0, 0x14, 0x2E, 0xD8, 0x4F, 0xCF, 0xAF, 0xC6, + 0xDA, 0xC7, 0xDB, 0xC3, 0xDD, 0xCD, 0x81, 0x31, 0x72, 0xBD, 0x5C, 0x38, + 0x67, 0x5C, 0xF2, 0x98, 0xF2, 0xA2, 0x14, 0x13, 0x14, 0x22, 0x2E, 0x04, + 0xBB, 0x5E, 0xE6, 0xAA, 0x6D, 0x64, 0x25, 0x3E, 0xFF, 0xFA, 0xA2, 0x94, + 0x0F, 0x3E, 0x75, 0x7D, 0x2D, 0x24, 0xC9, 0x05, 0x40, 0x08, 0x05, 0xC5, + 0xCF, 0x2F, 0xC3, 0xFD, 0xED, 0xCA, 0x07, 0x57, 0x72, 0xF9, 0x70, 0x2F, + 0x61, 0x30, 0x42, 0xE4, 0x5E, 0x74, 0xEF, 0xF7, 0xF4, 0xA7, 0x57, 0x35, + 0x3B, 0xF7, 0xE9, 0x63, 0xBD, 0x65, 0xF0, 0xBA, 0xE0, 0xFF, 0xE7, 0x9F, + 0x9A, 0x61, 0x72, 0x3E, 0x80, 0xCD, 0x96, 0xCE, 0xCB, 0x15, 0x12, 0x92, + 0xC3, 0xC8, 0x44, 0x6B, 0x03, 0x08, 0xCE, 0x4A, 0x01, 0x49, 0x9D, 0x5B, + 0x94, 0x09, 0x25, 0x97, 0x31, 0xFC, 0xFE, 0x83, 0x30, 0x2E, 0xFC, 0xFB, + 0x5F, 0x26, 0x4C, 0xD0, 0x7E, 0x4F, 0xAF, 0x03, 0x70, 0xDE, 0x3F, 0x3C, + 0xD4, 0xF7, 0x77, 0xDD, 0xF1, 0x65, 0x94, 0x92, 0x7E, 0xEA, 0x7A, 0xAD, + 0x46, 0x86, 0x20, 0x86, 0xC5, 0xE8, 0xB0, 0xDB, 0xEE, 0x52, 0xC9, 0x12, + 0x64, 0x18, 0xE1, 0xC7, 0xF7, 0x0F, 0x20, 0xFB, 0x94, 0xBC, 0x94, 0x92, + 0x12, 0x5C, 0x32, 0xA0, 0x94, 0x29, 0xED, 0x09, 0x02, 0x25, 0x05, 0xAB, + 0xE7, 0x10, 0x01, 0x44, 0xC4, 0x3B, 0x7F, 0xC9, 0x8E, 0x30, 0x52, 0x55, + 0xF0, 0x8E, 0x35, 0x7D, 0xD7, 0xC7, 0xD4, 0x5D, 0x86, 0x6E, 0xB1, 0xE1, + 0x78, 0x1E, 0xB5, 0x51, 0xAB, 0x5A, 0x2E, 0xCA, 0xE7, 0x90, 0xBA, 0xBE, + 0xA6, 0x8C, 0x09, 0xCE, 0x67, 0xE5, 0x5E, 0xCF, 0x97, 0x5A, 0xD0, 0x5A, + 0xB0, 0xD9, 0x38, 0x08, 0x60, 0x0C, 0x41, 0x2B, 0x23, 0x18, 0x8D, 0x21, + 0xB9, 0x10, 0x4B, 0x01, 0x29, 0x25, 0x63, 0x74, 0x8C, 0x11, 0x43, 0x98, + 0x4A, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0xA5, 0x14, 0x08, 0xA1, 0x75, + 0x81, 0x6F, 0x39, 0x23, 0x34, 0x15, 0x94, 0x12, 0xA0, 0xA2, 0xFA, 0xB0, + 0xDD, 0x0B, 0x10, 0x9C, 0x35, 0xD6, 0xFB, 0x61, 0x5E, 0xA4, 0xA4, 0x00, + 0x94, 0xE3, 0xF9, 0x3A, 0xCF, 0x6E, 0xBB, 0xED, 0x01, 0x04, 0xA0, 0x00, + 0x58, 0xE0, 0xA4, 0xAC, 0x09, 0xBE, 0x40, 0x00, 0x11, 0xC8, 0xD1, 0xCB, + 0xAA, 0x53, 0x9E, 0xFF, 0xF2, 0xFC, 0x74, 0xB7, 0xDB, 0x96, 0x12, 0x2A, + 0x81, 0x0E, 0xBB, 0xD5, 0xEB, 0x79, 0x96, 0x5C, 0x40, 0x88, 0x31, 0x13, + 0x39, 0xA6, 0xE7, 0xD3, 0xD8, 0x4A, 0x16, 0x53, 0x76, 0x3E, 0x12, 0x8A, + 0x73, 0x41, 0x11, 0x64, 0xAD, 0x67, 0x49, 0x49, 0xC5, 0x99, 0xF3, 0x65, + 0xDD, 0xB5, 0x1F, 0xEE, 0x36, 0x4D, 0xC5, 0x43, 0xC4, 0xBF, 0x7C, 0x7E, + 0x5D, 0xAC, 0xCD, 0x00, 0x0E, 0xF3, 0x62, 0x9D, 0xDF, 0x6D, 0x5B, 0x08, + 0x20, 0xE7, 0xAC, 0xAA, 0x25, 0x63, 0x74, 0x7F, 0xD3, 0x82, 0x82, 0x66, + 0xED, 0x66, 0x9D, 0xC6, 0x69, 0xFC, 0xF8, 0xEE, 0xA6, 0x6B, 0x1B, 0x63, + 0xDC, 0xB4, 0x98, 0xBE, 0xEB, 0x8C, 0x71, 0x9C, 0xB2, 0xDF, 0x7E, 0x7A, + 0x98, 0x66, 0x43, 0x10, 0x61, 0x8C, 0x8E, 0xE3, 0x90, 0x0B, 0xC4, 0x84, + 0x11, 0x92, 0x16, 0xAD, 0x42, 0x4C, 0x92, 0x33, 0x6F, 0xE2, 0xCD, 0xCD, + 0x6E, 0x98, 0x97, 0xF3, 0xB8, 0x20, 0x04, 0x41, 0x49, 0x9F, 0xEE, 0x36, + 0x29, 0xA7, 0xEB, 0xAC, 0x71, 0x23, 0xBF, 0x4C, 0x17, 0xE7, 0xFC, 0xEF, + 0xBF, 0x7B, 0xCC, 0x09, 0x8D, 0xA3, 0x0D, 0x29, 0xC9, 0x0A, 0x4B, 0x8A, + 0x34, 0x42, 0x6A, 0xB4, 0x98, 0x62, 0xC2, 0xB0, 0x5A, 0x0C, 0x93, 0x54, + 0x08, 0x89, 0x40, 0x16, 0x9C, 0x52, 0x42, 0x31, 0x63, 0xE8, 0x00, 0x9E, + 0x3E, 0x5F, 0x65, 0x55, 0x1B, 0x1D, 0x52, 0x4E, 0xDF, 0x7C, 0xD8, 0x1C, + 0xB6, 0xF2, 0xE9, 0x55, 0x63, 0x02, 0x77, 0xDB, 0xDE, 0x28, 0xEB, 0x62, + 0xFA, 0xF5, 0xE5, 0x88, 0x08, 0xC2, 0x08, 0x67, 0x88, 0x79, 0xD0, 0xE7, + 0x9E, 0x78, 0x2A, 0x1A, 0x97, 0x8A, 0x60, 0xA8, 0x60, 0xE1, 0x12, 0xC1, + 0xB4, 0x2A, 0x00, 0x9C, 0x8E, 0x2F, 0x8C, 0x12, 0xCE, 0x69, 0xD5, 0xED, + 0xCE, 0x97, 0xA3, 0xF7, 0x8E, 0x57, 0xB5, 0xD1, 0xEA, 0xAB, 0x29, 0xA8, + 0x64, 0x50, 0x4A, 0xF9, 0xD7, 0x6F, 0xB8, 0x09, 0xE5, 0x32, 0xE9, 0xBB, + 0x4D, 0xFB, 0xC7, 0xC7, 0x1D, 0xAF, 0xD7, 0xCF, 0xA7, 0xEB, 0x43, 0x13, + 0xBE, 0x5D, 0x99, 0x9A, 0xC4, 0x35, 0xF1, 0x92, 0x97, 0x94, 0x9D, 0xB3, + 0x7A, 0x57, 0x25, 0xC4, 0xC9, 0xD3, 0xF1, 0x0D, 0xB2, 0xDE, 0xBB, 0xF0, + 0x58, 0x9D, 0x1F, 0xB7, 0x38, 0x25, 0x77, 0xBB, 0x15, 0x77, 0x3B, 0x5E, + 0x91, 0xF2, 0x70, 0x4B, 0x36, 0x2D, 0x3A, 0x6A, 0xEB, 0x53, 0xB2, 0x2E, + 0x80, 0x22, 0xDE, 0xF5, 0x0C, 0x8A, 0xEE, 0x3F, 0x8E, 0xD8, 0xCE, 0xBF, + 0xEC, 0x2B, 0xBD, 0x62, 0xB1, 0xE6, 0x5E, 0x7B, 0xE6, 0x8A, 0xFC, 0xF1, + 0xA4, 0xD6, 0xDB, 0xCD, 0x64, 0x20, 0x00, 0x59, 0x85, 0x94, 0x8B, 0xFE, + 0x75, 0x20, 0x92, 0xC1, 0xDB, 0x75, 0x19, 0x54, 0x19, 0xAF, 0xB9, 0xA9, + 0xE1, 0xD3, 0x35, 0x11, 0x02, 0x85, 0x2C, 0xB3, 0x01, 0xCE, 0x17, 0xC6, + 0x10, 0x43, 0xA0, 0xE2, 0x4C, 0x99, 0xC4, 0x28, 0xC2, 0x10, 0xC6, 0x98, + 0x09, 0x2E, 0x6D, 0x25, 0x0A, 0xC0, 0x39, 0x17, 0x17, 0xE2, 0xAC, 0x33, + 0x84, 0x14, 0x66, 0x53, 0x4B, 0xD2, 0x76, 0x22, 0x45, 0xC7, 0x29, 0xF2, + 0xD6, 0x3F, 0x7D, 0xB9, 0x1E, 0x2F, 0x6A, 0x98, 0x4C, 0x2A, 0x80, 0x70, + 0x9E, 0x63, 0xAC, 0x24, 0xCF, 0x10, 0xBA, 0x08, 0xE6, 0xC9, 0x11, 0x84, + 0x73, 0x49, 0x18, 0x81, 0xAA, 0x12, 0x29, 0xE7, 0x52, 0xC0, 0x6A, 0xD5, + 0xD4, 0x8D, 0x04, 0x20, 0x57, 0x4D, 0x05, 0x09, 0x36, 0x3A, 0x2C, 0x8B, + 0x1D, 0x06, 0x05, 0x21, 0xC4, 0x14, 0x53, 0x8A, 0x8D, 0xF5, 0x31, 0x46, + 0x8C, 0x51, 0x4C, 0x25, 0xE5, 0xA2, 0xB4, 0xF1, 0x31, 0x8E, 0xB3, 0x52, + 0xC6, 0x19, 0xEB, 0x7D, 0x48, 0x97, 0x61, 0xD6, 0xCE, 0x10, 0x82, 0x63, + 0x49, 0xB3, 0xD6, 0x84, 0x94, 0x9B, 0x4D, 0xCF, 0x30, 0xBB, 0xCE, 0x9A, + 0x33, 0x78, 0xD8, 0x6F, 0x09, 0x86, 0x2F, 0xC7, 0xCB, 0xB0, 0x98, 0xD7, + 0xF3, 0xF5, 0xF1, 0x66, 0xBB, 0xEE, 0xEB, 0xF3, 0x30, 0x0B, 0x4E, 0xF7, + 0xEB, 0xFE, 0xB0, 0x59, 0x13, 0x0C, 0xCF, 0x97, 0x6B, 0xD7, 0xAF, 0x08, + 0x15, 0xD6, 0x58, 0x1F, 0xBD, 0x8F, 0x71, 0x99, 0x14, 0xA5, 0xD0, 0xDA, + 0xA0, 0x54, 0x60, 0x8C, 0x54, 0x95, 0x44, 0x10, 0x71, 0x81, 0x72, 0x06, + 0x6D, 0xC3, 0x9D, 0x8B, 0xE3, 0x64, 0xBF, 0x7D, 0xEC, 0x6B, 0x81, 0x0F, + 0x87, 0xAA, 0x17, 0xF8, 0x71, 0x0B, 0x1A, 0x49, 0xB7, 0x15, 0x58, 0xB7, + 0x19, 0xC0, 0xC2, 0x10, 0xB0, 0xDA, 0x27, 0x10, 0x21, 0x2A, 0xB8, 0x64, + 0x1D, 0x32, 0xAD, 0xF8, 0xE9, 0x6A, 0x78, 0x05, 0xDB, 0x8E, 0x65, 0xA7, + 0x1A, 0x01, 0x95, 0x76, 0xC1, 0xA4, 0x82, 0x50, 0x82, 0x30, 0x17, 0x84, + 0x90, 0x8F, 0x79, 0xB1, 0x46, 0x5F, 0x86, 0xCC, 0x18, 0xAD, 0x65, 0x0C, + 0x10, 0x66, 0x0C, 0x61, 0xF1, 0xD6, 0x45, 0x0C, 0xCB, 0xBF, 0xFE, 0x41, + 0x0A, 0x86, 0xAE, 0xD7, 0x31, 0xC4, 0x80, 0x09, 0x4B, 0xCE, 0x1D, 0xD6, + 0xFD, 0xB6, 0xAF, 0x39, 0xA3, 0x94, 0x8A, 0x4A, 0xB0, 0x56, 0xCA, 0x8A, + 0x92, 0xBE, 0xE1, 0x84, 0xF0, 0x14, 0x0B, 0x28, 0xD0, 0xF9, 0x80, 0x28, + 0x4D, 0x00, 0x68, 0x9B, 0x6C, 0x08, 0xB9, 0x64, 0x2A, 0xE8, 0x34, 0xCD, + 0xC3, 0x34, 0x23, 0x02, 0x17, 0x63, 0x62, 0x0C, 0x8B, 0xB5, 0xE7, 0x41, + 0x69, 0x13, 0x43, 0x02, 0xA0, 0x94, 0x9C, 0x72, 0xDF, 0x4A, 0x6D, 0xDD, + 0xB2, 0x18, 0xCE, 0x64, 0x2E, 0x45, 0xD6, 0x12, 0x13, 0x7A, 0xB3, 0xDB, + 0xCF, 0xF3, 0xF2, 0xF4, 0x7A, 0xFA, 0xF8, 0x70, 0x8B, 0x21, 0x08, 0x29, + 0x02, 0x88, 0x63, 0x8C, 0x5F, 0x55, 0x58, 0xA0, 0x00, 0xEF, 0x63, 0x2E, + 0xB0, 0x14, 0x50, 0x4A, 0xF9, 0x6A, 0x8A, 0xF8, 0xC7, 0x0C, 0xFB, 0xBF, + 0x1F, 0x82, 0xE8, 0x6E, 0xBF, 0x5F, 0x94, 0x8A, 0x19, 0xF4, 0x9B, 0x03, + 0x28, 0x05, 0xE5, 0x68, 0x96, 0x69, 0xD1, 0xC6, 0x78, 0x8F, 0x10, 0x9C, + 0x16, 0xFD, 0xF9, 0xF5, 0x0C, 0x20, 0x32, 0xD6, 0x1B, 0x6B, 0x0B, 0x04, + 0x31, 0x15, 0xE7, 0xD3, 0xA2, 0xFD, 0xAC, 0x5C, 0xCA, 0xE5, 0x32, 0x6A, + 0xE3, 0x02, 0x00, 0x20, 0x16, 0x90, 0x4B, 0x4A, 0x39, 0x84, 0xE8, 0x39, + 0x06, 0x4A, 0xCD, 0x4D, 0xDB, 0x4B, 0x29, 0xCE, 0xC3, 0x15, 0x40, 0xE0, + 0xBD, 0x3B, 0x5D, 0x06, 0x59, 0x37, 0x21, 0x16, 0x97, 0xA1, 0xF1, 0x01, + 0x63, 0x32, 0xCD, 0x73, 0x4A, 0x51, 0x32, 0x2A, 0x38, 0xE7, 0x8C, 0x7E, + 0xB8, 0xDB, 0x2F, 0x8B, 0x79, 0x3D, 0x4D, 0x7F, 0xF9, 0xF9, 0x65, 0x36, + 0xEE, 0x78, 0x9D, 0x86, 0xC5, 0xA6, 0x0C, 0x38, 0xA3, 0x94, 0x10, 0x00, + 0x60, 0xCC, 0x69, 0x18, 0xE7, 0xF3, 0x79, 0x40, 0x10, 0xAD, 0xDB, 0x6E, + 0xBF, 0x6E, 0x38, 0x01, 0xF7, 0xFB, 0x76, 0xD5, 0x72, 0x90, 0xF3, 0xD3, + 0xEB, 0x79, 0xD1, 0xEE, 0xF9, 0xED, 0xF2, 0x7C, 0x1C, 0x08, 0xC6, 0x25, + 0x17, 0x29, 0xAB, 0x75, 0xDF, 0x43, 0x98, 0x9C, 0xF7, 0x5D, 0xDF, 0x87, + 0x50, 0x16, 0xAD, 0x21, 0x2A, 0xD6, 0x39, 0xCE, 0x18, 0xE7, 0x74, 0x9A, + 0xCD, 0xDB, 0xF9, 0x1A, 0x72, 0x41, 0xA0, 0xAC, 0x1A, 0x06, 0x72, 0x9A, + 0x26, 0xAB, 0x4D, 0x30, 0x36, 0xBC, 0x5E, 0x17, 0x59, 0x89, 0xC3, 0x76, + 0xFB, 0x97, 0xBF, 0x3F, 0x17, 0x00, 0xD6, 0xEB, 0x66, 0xBB, 0x92, 0xC7, + 0xF3, 0x32, 0x8C, 0x76, 0x98, 0xCC, 0xB4, 0xB8, 0x71, 0xB6, 0x97, 0xF3, + 0x24, 0x18, 0x36, 0x8B, 0x45, 0x10, 0x46, 0x1F, 0x09, 0x46, 0x39, 0x44, + 0x41, 0xE1, 0xAA, 0x6B, 0x04, 0x67, 0x5C, 0x92, 0x87, 0x43, 0xBF, 0x5F, + 0xB3, 0x10, 0x03, 0x17, 0xE4, 0xBB, 0x6F, 0xEE, 0xEF, 0x6F, 0x36, 0x5C, + 0xD0, 0x71, 0x9E, 0xB5, 0xB2, 0x4C, 0x70, 0x5C, 0xD7, 0x1D, 0x22, 0x92, + 0x03, 0xBB, 0xAE, 0xD0, 0xA8, 0xE2, 0xE6, 0xF6, 0x23, 0xE6, 0x8D, 0x73, + 0x11, 0x95, 0x60, 0x8C, 0x3A, 0x9E, 0x4E, 0xCA, 0xCC, 0x84, 0x10, 0x65, + 0xDC, 0xE1, 0xFE, 0xD3, 0x97, 0xCF, 0x7F, 0xBF, 0x7F, 0xFC, 0xB0, 0x8C, + 0x97, 0x92, 0xA3, 0x0B, 0x81, 0x89, 0x86, 0x52, 0xB6, 0x92, 0xF0, 0xBF, + 0x7D, 0x4B, 0x7F, 0x78, 0xB1, 0xDB, 0xBE, 0x7E, 0xDC, 0x34, 0x77, 0x77, + 0x77, 0xFF, 0xEB, 0xF3, 0x40, 0xCC, 0xE7, 0xDF, 0x6D, 0xA2, 0x76, 0xA1, + 0xAB, 0x49, 0xDB, 0xF0, 0xCB, 0xF8, 0xD6, 0x89, 0xBC, 0x6E, 0x45, 0x48, + 0xE9, 0xAF, 0xAF, 0xCB, 0xCB, 0x92, 0xB6, 0x15, 0xDB, 0x70, 0xD5, 0x55, + 0xEE, 0xA2, 0x67, 0x4E, 0x59, 0x4C, 0x38, 0x66, 0xB0, 0x59, 0x8B, 0x1F, + 0x5E, 0xC7, 0xC9, 0x2D, 0x10, 0x41, 0x89, 0xC9, 0x4A, 0x70, 0x8E, 0x80, + 0xC9, 0xF0, 0xDF, 0x7E, 0x7C, 0x7E, 0xA8, 0xA7, 0x6E, 0x55, 0xFF, 0xED, + 0xC5, 0x50, 0x06, 0x7C, 0x4E, 0xBF, 0x7D, 0x7F, 0xB3, 0x38, 0x4F, 0x71, + 0xBE, 0xED, 0x44, 0xC8, 0x71, 0xBD, 0xDD, 0xBE, 0x5C, 0xA7, 0xB3, 0x4E, + 0x00, 0xA1, 0xC7, 0x1E, 0xDC, 0x08, 0x78, 0xD3, 0x22, 0x42, 0xF0, 0x64, + 0x31, 0x67, 0x68, 0xD6, 0x65, 0x9C, 0xF3, 0xB6, 0xC7, 0x14, 0x63, 0xC9, + 0xC1, 0x77, 0xF7, 0x1D, 0xA1, 0xE4, 0xF9, 0x68, 0x30, 0x28, 0x9C, 0x21, + 0x8C, 0x80, 0xF5, 0xC5, 0xD8, 0x9C, 0x53, 0x36, 0xC6, 0xB9, 0x90, 0x66, + 0x15, 0x19, 0xAB, 0x1E, 0x1F, 0xB6, 0x18, 0x2A, 0x67, 0x13, 0x26, 0xBD, + 0xD6, 0xE8, 0xE5, 0xE5, 0x24, 0x1A, 0xA9, 0xB5, 0x0B, 0x05, 0x54, 0xAD, + 0x0C, 0xCE, 0xC6, 0x18, 0x9B, 0x55, 0xF5, 0xFC, 0x32, 0x4A, 0xC9, 0xFF, + 0xB1, 0x96, 0x31, 0x34, 0xCA, 0xC7, 0x98, 0x08, 0x25, 0x25, 0x67, 0xA3, + 0x7D, 0x01, 0x19, 0x63, 0x68, 0x5D, 0xC0, 0x04, 0x69, 0x6D, 0x11, 0x42, + 0x8C, 0x11, 0x21, 0xA9, 0xE0, 0x94, 0x71, 0x8A, 0x30, 0x4C, 0x29, 0x79, + 0x17, 0x29, 0x25, 0x29, 0xA5, 0x04, 0x0A, 0x80, 0xA0, 0x6E, 0x2A, 0xAB, + 0xFD, 0x34, 0xAB, 0x52, 0x40, 0xDD, 0x54, 0xDE, 0xC7, 0xD3, 0x79, 0x2C, + 0xB0, 0x84, 0x9C, 0x16, 0xE5, 0xBA, 0xAE, 0xA6, 0x94, 0x7E, 0xFB, 0x78, + 0x97, 0x52, 0x26, 0x18, 0x6B, 0x63, 0x84, 0xA4, 0xDE, 0xFB, 0x4A, 0xF2, + 0x02, 0xD0, 0x38, 0xA9, 0x9C, 0xCB, 0x7E, 0xD3, 0xE7, 0x1C, 0x31, 0xC2, + 0xC7, 0xD3, 0xA5, 0x5D, 0x1F, 0x10, 0xC1, 0xA5, 0x00, 0x46, 0xD0, 0xF1, + 0x32, 0x42, 0x00, 0x39, 0x85, 0x9C, 0x42, 0x00, 0xC2, 0x38, 0xE9, 0xD3, + 0x71, 0xC1, 0xB0, 0xDC, 0xEE, 0xFB, 0xC7, 0x7B, 0xDA, 0x37, 0xF8, 0xF5, + 0xD5, 0x34, 0x82, 0x3C, 0xEC, 0xD9, 0x3F, 0x7F, 0xD3, 0x31, 0x18, 0xEF, + 0xF6, 0x14, 0xE4, 0xBC, 0xE9, 0x05, 0x67, 0x69, 0x5D, 0xF3, 0xD1, 0xC6, + 0x45, 0xFB, 0x71, 0x0C, 0x3E, 0x7A, 0x65, 0xCD, 0x68, 0x81, 0xD2, 0xDE, + 0xB9, 0xB4, 0xE8, 0x38, 0xD9, 0xE8, 0x5C, 0x80, 0x39, 0x42, 0x84, 0x5E, + 0x8F, 0x7A, 0x9C, 0x3C, 0xE7, 0x72, 0x5A, 0xD4, 0x62, 0x54, 0x2B, 0x90, + 0x37, 0x56, 0x5B, 0x5D, 0x02, 0x9B, 0x2D, 0xCC, 0x40, 0x33, 0xE2, 0x67, + 0x65, 0x19, 0xF5, 0x9B, 0x35, 0x93, 0xB2, 0xBC, 0xBB, 0x43, 0x6B, 0xE2, + 0x4F, 0xE7, 0xEC, 0x13, 0xB6, 0xD6, 0xFF, 0xFA, 0xE5, 0x55, 0x32, 0x68, + 0xF4, 0xF4, 0x7A, 0x7E, 0xBB, 0x2C, 0x1A, 0x14, 0x60, 0xAC, 0xF6, 0xC9, + 0xFA, 0xA0, 0x17, 0x67, 0x67, 0xE5, 0x8F, 0xE7, 0xA5, 0x14, 0xF0, 0xE5, + 0xF9, 0x12, 0x12, 0x0A, 0xC9, 0xBF, 0x1C, 0xAF, 0xF3, 0x62, 0x7C, 0x8C, + 0xD7, 0xD1, 0xE6, 0x52, 0x52, 0x4C, 0xB1, 0x64, 0x29, 0x00, 0x48, 0x69, + 0x9A, 0x17, 0x46, 0xD1, 0xEB, 0x49, 0xBD, 0x9E, 0xE7, 0xEB, 0x64, 0x2F, + 0xA3, 0x19, 0x26, 0xDD, 0xB7, 0x52, 0x72, 0x8C, 0x30, 0xCE, 0x10, 0x42, + 0x08, 0x9A, 0xAA, 0x6E, 0xAA, 0xEA, 0xE9, 0xF9, 0xF4, 0x8F, 0x6F, 0x29, + 0xA5, 0xCC, 0xDA, 0x03, 0x80, 0x52, 0x4A, 0x08, 0x21, 0xE7, 0x62, 0xD7, + 0x48, 0x82, 0x89, 0x0F, 0x11, 0x61, 0x88, 0x00, 0xA8, 0x04, 0x2B, 0x00, + 0xFC, 0x9F, 0x34, 0x06, 0x20, 0x00, 0x6D, 0xC5, 0x01, 0x00, 0xFF, 0xF5, + 0xB7, 0xB7, 0x37, 0xEB, 0xE6, 0xF6, 0xB0, 0xED, 0xD6, 0x07, 0x1F, 0x43, + 0x8C, 0xB9, 0xE4, 0x64, 0xB4, 0x5A, 0xB4, 0x9A, 0x95, 0x0E, 0x31, 0x2A, + 0xEB, 0xAE, 0xD3, 0x62, 0x9D, 0x23, 0x98, 0x72, 0xCE, 0x10, 0xC6, 0x00, + 0x40, 0x63, 0x3D, 0x26, 0x2C, 0xE5, 0xEC, 0x43, 0xD4, 0x36, 0xFA, 0x90, + 0x39, 0xE7, 0x21, 0x85, 0xEB, 0x34, 0x59, 0xEF, 0x5D, 0xB0, 0xA0, 0x24, + 0xEF, 0x43, 0x21, 0x1C, 0x40, 0x68, 0xCC, 0x5C, 0x60, 0x66, 0x9C, 0x9F, + 0xCE, 0xE7, 0xA6, 0x6E, 0x0A, 0xE2, 0xDA, 0x3A, 0x88, 0x59, 0xCA, 0x0E, + 0x81, 0x12, 0x63, 0x14, 0x82, 0x09, 0x86, 0xDF, 0x2E, 0x43, 0x23, 0x30, + 0x86, 0x68, 0x98, 0xF4, 0x4F, 0xCF, 0x67, 0xE3, 0xE2, 0xA4, 0x35, 0x66, + 0x8C, 0x31, 0x36, 0xCC, 0x4B, 0x57, 0x4B, 0x4A, 0xD0, 0xB4, 0x18, 0xAD, + 0xBD, 0xB7, 0x89, 0x20, 0xCC, 0x10, 0x89, 0x3E, 0x86, 0x10, 0x05, 0xC5, + 0x08, 0x94, 0xF3, 0x75, 0xB2, 0xDE, 0x09, 0x41, 0xFB, 0x96, 0x71, 0x0E, + 0xF6, 0xDB, 0x36, 0xA5, 0x3C, 0x4E, 0xF3, 0xA2, 0xED, 0xA2, 0x2D, 0xA6, + 0xB0, 0x69, 0x65, 0xBF, 0x6E, 0x00, 0x28, 0x39, 0x07, 0x90, 0xB3, 0xB3, + 0x69, 0xD5, 0x49, 0x50, 0xD2, 0xF5, 0x32, 0x0F, 0xCA, 0xEE, 0xD7, 0x55, + 0x5B, 0xF1, 0x52, 0xB0, 0xB5, 0xC1, 0xE7, 0x32, 0x1B, 0x0F, 0x20, 0xB8, + 0x2A, 0x5B, 0x73, 0x51, 0x4A, 0xD6, 0xDE, 0x69, 0xE3, 0x31, 0x82, 0x7F, + 0xFE, 0xFB, 0x6B, 0xCC, 0x38, 0xE7, 0xA2, 0x9D, 0x87, 0x18, 0x2E, 0xDA, + 0xC6, 0x94, 0x00, 0x84, 0x18, 0x22, 0xA5, 0x2C, 0x80, 0x70, 0xD1, 0x56, + 0x2F, 0x1E, 0x23, 0x42, 0x28, 0x9B, 0x67, 0x43, 0x71, 0xB1, 0xCE, 0xFF, + 0xFC, 0xEB, 0xF5, 0x78, 0x5A, 0x56, 0x6D, 0x9F, 0x63, 0x99, 0x26, 0x9D, + 0x63, 0x5E, 0x75, 0x8D, 0x31, 0xF6, 0x7A, 0x99, 0xF0, 0xBE, 0x97, 0xF7, + 0x8F, 0xDF, 0x82, 0x12, 0x7F, 0x7E, 0x7A, 0x06, 0x6C, 0x9B, 0x21, 0x9C, + 0x17, 0xBB, 0x67, 0xE6, 0xB1, 0xCD, 0x93, 0x36, 0x9F, 0x5F, 0x4E, 0x94, + 0x30, 0x17, 0xE2, 0x66, 0x7F, 0xEF, 0xBC, 0x47, 0x08, 0xE4, 0x18, 0x82, + 0x1E, 0x22, 0xC0, 0x9F, 0xF6, 0x62, 0xDD, 0xF2, 0x10, 0xE2, 0x6F, 0x6E, + 0x24, 0xA7, 0x30, 0x64, 0xFE, 0x5F, 0xBE, 0x59, 0xED, 0xD6, 0x9B, 0x9F, + 0x07, 0xF8, 0xFA, 0xF2, 0xAB, 0xC4, 0xE9, 0x6E, 0x55, 0xF6, 0x1B, 0xE1, + 0x83, 0xF9, 0x65, 0x98, 0x01, 0x32, 0x18, 0xE7, 0x5F, 0xCE, 0xD0, 0x25, + 0xD8, 0xF0, 0x78, 0xD8, 0xD4, 0x14, 0x24, 0x81, 0xD5, 0xAB, 0x72, 0x2E, + 0x62, 0x8E, 0xB1, 0x0B, 0xC5, 0x97, 0x72, 0x9C, 0xA6, 0x51, 0xC7, 0xAA, + 0xE2, 0x02, 0x40, 0x0C, 0xF0, 0x0F, 0x27, 0xF8, 0x9F, 0x4F, 0x69, 0x72, + 0xA3, 0xAC, 0x5C, 0xD3, 0x88, 0xB3, 0x4A, 0xBB, 0xAE, 0xF6, 0x01, 0xED, + 0x65, 0x72, 0x09, 0xFC, 0xE5, 0x69, 0x12, 0xBC, 0x7A, 0x1B, 0xA2, 0x07, + 0xF9, 0xA4, 0xFD, 0x2F, 0xAF, 0xCA, 0x7A, 0xB8, 0x68, 0xBF, 0xED, 0xF8, + 0xA6, 0x65, 0x1C, 0xC4, 0xFB, 0x03, 0x92, 0x1C, 0xD4, 0x92, 0xEA, 0x00, + 0xB4, 0xC9, 0x35, 0x2F, 0x8C, 0x62, 0xE7, 0xF2, 0xC3, 0xCD, 0xDD, 0x7F, + 0xFE, 0x72, 0x4D, 0xA9, 0xC4, 0x98, 0x11, 0x86, 0x00, 0x40, 0xE7, 0x0A, + 0x2C, 0x25, 0xE5, 0x5C, 0x00, 0xC8, 0x05, 0xF8, 0x00, 0x1A, 0x49, 0xEE, + 0x1E, 0x3E, 0x60, 0xBE, 0x62, 0xDD, 0x3D, 0xA4, 0xF5, 0xAF, 0x5F, 0x3E, + 0x07, 0x6F, 0x39, 0xC3, 0x10, 0x15, 0x8C, 0x51, 0x0C, 0x69, 0x9E, 0x74, + 0xCA, 0x25, 0x86, 0x94, 0x4A, 0x81, 0x05, 0x40, 0x50, 0xCE, 0xA3, 0x1E, + 0xAE, 0x3A, 0xA6, 0x82, 0x19, 0x59, 0x16, 0x5B, 0x72, 0x29, 0x08, 0x62, + 0x8C, 0x85, 0xE0, 0x5A, 0x87, 0x18, 0x32, 0x28, 0x00, 0x00, 0x18, 0x42, + 0xCC, 0x39, 0x41, 0x04, 0x73, 0x2E, 0x94, 0x51, 0xCA, 0x08, 0x80, 0xC0, + 0x5A, 0x07, 0x10, 0x4E, 0xA5, 0x5C, 0x2F, 0xB3, 0x73, 0x51, 0x1B, 0x4B, + 0x08, 0x01, 0x00, 0x20, 0x84, 0xB8, 0x60, 0x18, 0xE3, 0x65, 0xD6, 0x2E, + 0x44, 0xC2, 0xD8, 0x69, 0x58, 0x10, 0x02, 0xF7, 0xBB, 0xBE, 0xE2, 0x3C, + 0xC6, 0xB4, 0xDB, 0xAD, 0x77, 0x3D, 0xC7, 0xB8, 0xF8, 0x04, 0xC6, 0xD9, + 0x60, 0x82, 0x57, 0xAD, 0x68, 0x2A, 0x51, 0x0A, 0x80, 0x20, 0xCB, 0xBA, + 0x49, 0x05, 0xBE, 0xBE, 0xBC, 0xF6, 0xFD, 0xE6, 0x74, 0x3E, 0x5E, 0x87, + 0x89, 0x61, 0x4C, 0x50, 0x98, 0x75, 0xEA, 0x7B, 0x5E, 0x4B, 0x5C, 0x51, + 0xF0, 0x9B, 0xF7, 0x55, 0x57, 0x11, 0x01, 0xD3, 0xB2, 0xD8, 0xAA, 0x66, + 0xFB, 0x2D, 0x6F, 0x78, 0xE1, 0x38, 0xA4, 0x0C, 0xAF, 0xE3, 0x22, 0x2A, + 0x6A, 0xBD, 0xD3, 0x4E, 0x29, 0xE7, 0x42, 0x04, 0x5A, 0xC5, 0xF3, 0x68, + 0x06, 0x95, 0x9F, 0xCE, 0xE1, 0xDD, 0x01, 0xE4, 0x18, 0x21, 0x14, 0x00, + 0xC1, 0xCB, 0x14, 0x87, 0x31, 0xEC, 0x6A, 0x72, 0x19, 0xDD, 0x5F, 0x9F, + 0x23, 0x24, 0x6C, 0x58, 0xAC, 0xCF, 0x89, 0x62, 0x34, 0x0C, 0xCB, 0x75, + 0xD4, 0x29, 0x17, 0x48, 0x79, 0x46, 0x01, 0x66, 0x95, 0x62, 0x58, 0xE6, + 0x50, 0x73, 0xE2, 0x73, 0x06, 0x29, 0x7B, 0xEB, 0x7F, 0x79, 0x1E, 0x23, + 0xC2, 0x31, 0x41, 0x63, 0x73, 0xCA, 0x68, 0xD6, 0xF3, 0x55, 0xB9, 0xC5, + 0x82, 0x75, 0xDF, 0xE8, 0xA0, 0xB9, 0x00, 0xDA, 0xCC, 0x4F, 0xE7, 0x81, + 0x0B, 0x1C, 0x52, 0x29, 0x00, 0x87, 0xE8, 0x52, 0x86, 0x42, 0x50, 0x00, + 0xE2, 0xCB, 0xDB, 0xC5, 0xF9, 0xB4, 0xDB, 0xB6, 0xC3, 0x30, 0x4D, 0xB3, + 0x0D, 0x31, 0x1A, 0xE3, 0xBC, 0x8F, 0x21, 0x04, 0x1F, 0x8A, 0x75, 0x69, + 0xB3, 0x5E, 0x6D, 0x56, 0x9D, 0xAC, 0x45, 0xDF, 0x4A, 0x4A, 0xA8, 0x31, + 0xB1, 0xA9, 0x2B, 0xCE, 0x79, 0x55, 0x71, 0xC9, 0xD8, 0xFB, 0xDB, 0xFB, + 0xB7, 0xE3, 0x79, 0x98, 0x14, 0xE7, 0x7C, 0x52, 0xBA, 0x14, 0xA8, 0x8C, + 0x8B, 0x31, 0x41, 0x88, 0x28, 0x21, 0x15, 0xA7, 0x30, 0xE7, 0xC5, 0xF9, + 0x98, 0xD2, 0x57, 0x4A, 0xAD, 0x0B, 0x11, 0xFE, 0xE3, 0x9A, 0x04, 0x00, + 0x80, 0xDB, 0x4D, 0xFB, 0x78, 0xE8, 0x9A, 0x5A, 0x3C, 0xDC, 0xAC, 0x41, + 0x01, 0x8B, 0x8E, 0x6F, 0xE7, 0x61, 0x9A, 0x67, 0x1F, 0x62, 0x88, 0xB1, + 0x00, 0xE0, 0xBD, 0x4D, 0x39, 0xEF, 0x76, 0xFB, 0xD3, 0xE5, 0x62, 0xAC, + 0x05, 0x10, 0x00, 0x00, 0x18, 0xC7, 0xD6, 0xBA, 0x18, 0x0B, 0xA1, 0x24, + 0x84, 0x00, 0x0A, 0x70, 0xDE, 0x11, 0x8C, 0xB5, 0x9E, 0x73, 0xC9, 0xCA, + 0x38, 0xAD, 0x0D, 0x67, 0x74, 0x9A, 0x66, 0x46, 0x59, 0x06, 0x04, 0x12, + 0x96, 0xA3, 0x8E, 0x29, 0xD5, 0x75, 0xFD, 0xF2, 0xF2, 0xD2, 0x34, 0x0D, + 0xA1, 0xDC, 0x06, 0x4F, 0x10, 0x2C, 0x29, 0x96, 0x92, 0x4A, 0xF6, 0xAB, + 0x55, 0x4F, 0x29, 0x9A, 0x97, 0x79, 0xBF, 0x69, 0x0E, 0xEB, 0x95, 0xF5, + 0xF9, 0xBA, 0x18, 0x80, 0x50, 0x53, 0x57, 0x94, 0x10, 0x17, 0xE2, 0xF1, + 0x3A, 0xE6, 0x52, 0x56, 0xB5, 0xFC, 0x4A, 0xD3, 0xAB, 0x65, 0x55, 0x57, + 0xD5, 0x6E, 0xB3, 0xA6, 0x94, 0x0D, 0xB3, 0xBE, 0x8C, 0xCB, 0xDB, 0x79, + 0x3A, 0x0D, 0x0A, 0x02, 0x98, 0x01, 0xD0, 0xD6, 0xA6, 0x14, 0x08, 0x81, + 0x04, 0x43, 0x21, 0x69, 0xD3, 0x0A, 0x88, 0xC9, 0x3C, 0xAB, 0x7E, 0xD5, + 0x1E, 0xDF, 0x86, 0x65, 0xD1, 0x9B, 0x4D, 0xB7, 0xDD, 0x34, 0xDB, 0x4D, + 0xFB, 0xE1, 0xDD, 0x76, 0xB5, 0x6A, 0xA5, 0x64, 0x8C, 0xE3, 0xA6, 0xAD, + 0x6B, 0x8E, 0x00, 0x2C, 0xCE, 0x86, 0xBE, 0x91, 0x93, 0xF6, 0x31, 0x45, + 0x9F, 0x32, 0x27, 0xE4, 0x9B, 0xC7, 0x9E, 0x53, 0x24, 0x18, 0x5D, 0xAF, + 0xAB, 0xCD, 0xA6, 0x9D, 0x97, 0x10, 0x52, 0x28, 0x00, 0x68, 0x1B, 0x94, + 0x32, 0xCE, 0x07, 0x8A, 0xF1, 0x30, 0x1A, 0x63, 0x52, 0x8C, 0x71, 0x18, + 0xF5, 0xFE, 0x6A, 0xF4, 0xC4, 0x7C, 0x00, 0x00, 0x03, 0x78, 0x49, 0x44, + 0x41, 0x54, 0xD0, 0xBF, 0x9D, 0x17, 0x6B, 0x83, 0x94, 0xE2, 0xE9, 0xF9, + 0xD2, 0xD4, 0xDC, 0x58, 0xDF, 0x37, 0xF5, 0xED, 0x7E, 0x3B, 0x4C, 0xE1, + 0x32, 0xA8, 0x69, 0xB1, 0xD7, 0xC9, 0x12, 0x84, 0xEE, 0x6E, 0x56, 0x4E, + 0x5B, 0xFC, 0x78, 0xB3, 0x22, 0x04, 0x39, 0x50, 0x4D, 0xD3, 0x70, 0xB8, + 0xFB, 0xD6, 0x2F, 0x43, 0x4C, 0xF9, 0x3A, 0x9C, 0x42, 0x88, 0xA7, 0xEB, + 0xDC, 0xF6, 0x5B, 0x8C, 0x51, 0x2E, 0x80, 0x32, 0x51, 0x11, 0x20, 0x85, + 0xBC, 0x9C, 0x7E, 0xFD, 0x70, 0xBB, 0xDB, 0x54, 0xF4, 0xD3, 0x8E, 0xFC, + 0xFE, 0xB1, 0x79, 0xD8, 0xB0, 0x4D, 0x8B, 0x18, 0x15, 0x87, 0x8E, 0x45, + 0x28, 0xFF, 0xFD, 0xD7, 0x10, 0xE7, 0x9F, 0xB6, 0x0D, 0x52, 0xAE, 0x6C, + 0x57, 0xD8, 0x86, 0x00, 0x4A, 0x79, 0x99, 0xED, 0x97, 0x6B, 0x76, 0x11, + 0x57, 0x04, 0x31, 0x02, 0x32, 0x30, 0x00, 0x82, 0xFF, 0xEF, 0xB3, 0xFF, + 0xFB, 0x51, 0x45, 0x54, 0x06, 0x05, 0x16, 0x67, 0x95, 0xB3, 0x31, 0x23, + 0x1B, 0x9C, 0xCF, 0x40, 0x54, 0xDB, 0xE2, 0xED, 0xA0, 0xCA, 0x0F, 0x2F, + 0x11, 0x13, 0xCB, 0x25, 0x0D, 0x11, 0x28, 0x1B, 0x62, 0xCA, 0x10, 0x51, + 0xED, 0xE1, 0xEB, 0xC5, 0xCC, 0x09, 0xBD, 0xCD, 0xC5, 0x04, 0x8C, 0xE4, + 0x23, 0xC0, 0xD5, 0x97, 0x97, 0xD7, 0x79, 0xF6, 0x82, 0x82, 0xEF, 0x1F, + 0x6B, 0x26, 0xC4, 0x71, 0xD4, 0x7F, 0x7E, 0x8E, 0x4F, 0x43, 0x5A, 0xC9, + 0x32, 0x2F, 0xF9, 0x34, 0x67, 0x4A, 0x61, 0x2C, 0x10, 0x22, 0x54, 0x57, + 0xDC, 0xF8, 0xFC, 0xF4, 0x3A, 0xC9, 0x8A, 0x31, 0x06, 0x53, 0x81, 0xC3, + 0x14, 0x41, 0x01, 0x04, 0xA3, 0x90, 0x20, 0x21, 0xD8, 0x38, 0x9F, 0x01, + 0x6E, 0x05, 0x4C, 0x09, 0x2E, 0x0E, 0x0E, 0xE7, 0x23, 0x84, 0xE0, 0x7A, + 0xFA, 0x52, 0x0A, 0xE4, 0x9C, 0xC4, 0x10, 0xA7, 0xD1, 0xA4, 0x94, 0x7D, + 0xCC, 0xCE, 0x27, 0x6F, 0xA3, 0x10, 0xD4, 0x87, 0xAC, 0xB4, 0x07, 0xA5, + 0x74, 0x9D, 0x2C, 0x19, 0xB6, 0x75, 0x35, 0xCE, 0x26, 0x84, 0xD4, 0xAF, + 0x1A, 0xC6, 0x99, 0xD1, 0xC1, 0xB9, 0xA0, 0x94, 0x57, 0xDA, 0x96, 0x52, + 0x52, 0x29, 0xB3, 0x72, 0xD6, 0xC5, 0xCB, 0xB0, 0x20, 0x04, 0x3E, 0x7F, + 0x39, 0x5D, 0x86, 0x99, 0x50, 0x0A, 0x00, 0xF2, 0x2E, 0x60, 0x82, 0x11, + 0x82, 0x8C, 0x61, 0xC6, 0x48, 0x4E, 0x69, 0xB3, 0xAA, 0x83, 0x77, 0x5D, + 0x25, 0xDA, 0x9A, 0x6D, 0xD6, 0x75, 0x55, 0x51, 0x6B, 0x5C, 0x2D, 0x19, + 0x23, 0x84, 0x60, 0x7C, 0x7F, 0x7F, 0x58, 0xF5, 0x8D, 0x36, 0x26, 0xC3, + 0x82, 0x28, 0x8B, 0xDE, 0x3F, 0x1E, 0x36, 0xBB, 0x8D, 0xBC, 0x5E, 0xD5, + 0xFE, 0xB0, 0x6F, 0xDB, 0x2A, 0x25, 0xD7, 0xD4, 0x31, 0x46, 0x28, 0x45, + 0x03, 0xA1, 0xCF, 0xD1, 0x03, 0x90, 0x9B, 0x1A, 0xC7, 0x84, 0x19, 0x49, + 0x30, 0xE7, 0x77, 0x37, 0x82, 0xF3, 0x32, 0x8E, 0x0B, 0x28, 0x09, 0x20, + 0x76, 0x7B, 0x10, 0xB5, 0xC8, 0x28, 0xC7, 0xCB, 0xA4, 0x01, 0xC5, 0x29, + 0xE7, 0xF3, 0xE0, 0xDE, 0x2E, 0xAA, 0x20, 0xC0, 0x38, 0x8C, 0x3E, 0xCE, + 0x4B, 0x9C, 0x6C, 0x06, 0x10, 0x42, 0x04, 0x0F, 0x6D, 0x79, 0x3B, 0x15, + 0xCA, 0xC4, 0x30, 0x87, 0xB7, 0x93, 0xBF, 0xDD, 0xB1, 0x14, 0x92, 0x4D, + 0x45, 0xD4, 0x7C, 0x98, 0x03, 0xA1, 0xB0, 0xA9, 0xE9, 0xBC, 0xA4, 0xE7, + 0xB3, 0x75, 0x11, 0xDB, 0x84, 0x66, 0x6B, 0x18, 0xF6, 0x18, 0x97, 0x51, + 0x15, 0x82, 0xA1, 0x8B, 0x7E, 0xB6, 0x25, 0x66, 0xA2, 0x94, 0xF3, 0x91, + 0x74, 0x7D, 0x35, 0xA9, 0xD0, 0x76, 0x9B, 0xEB, 0x38, 0x87, 0x08, 0xEA, + 0xA6, 0xFA, 0xE6, 0xE3, 0x3B, 0xE3, 0xCC, 0x75, 0xD4, 0xCE, 0x59, 0x90, + 0x93, 0x0F, 0xA0, 0xAB, 0x2B, 0x6B, 0x0B, 0x63, 0x28, 0x94, 0x80, 0x29, + 0x8B, 0xCE, 0x84, 0x68, 0xB9, 0xA4, 0x84, 0x22, 0x4A, 0x90, 0xB5, 0x8A, + 0x32, 0x48, 0x08, 0xD8, 0xF4, 0x14, 0xC2, 0x3C, 0x2B, 0x9F, 0x0A, 0xD1, + 0x1E, 0x4C, 0x2A, 0x14, 0x88, 0xDA, 0xBE, 0x26, 0x18, 0x60, 0x84, 0x25, + 0xE7, 0x14, 0x93, 0xA6, 0xAE, 0x10, 0x2A, 0x14, 0x63, 0x4E, 0xB9, 0xB1, + 0x8E, 0x73, 0xA9, 0x6D, 0xF0, 0x31, 0x95, 0x02, 0x20, 0xA1, 0xFB, 0xDD, + 0x01, 0x40, 0x24, 0x08, 0x5E, 0x77, 0x0D, 0xC6, 0x64, 0x58, 0x34, 0x82, + 0x90, 0x53, 0x12, 0x62, 0x8E, 0x39, 0xA7, 0x5C, 0xCA, 0xFF, 0x89, 0x64, + 0xDB, 0x55, 0xDD, 0x37, 0x32, 0xF8, 0x02, 0x60, 0x41, 0x08, 0x7D, 0x79, + 0x1B, 0x7F, 0x7A, 0x7A, 0x89, 0x31, 0x7A, 0x1F, 0xB8, 0xAC, 0xDA, 0xBA, + 0xEA, 0x6B, 0x31, 0x8C, 0x63, 0x4E, 0x31, 0x97, 0x12, 0x52, 0xC4, 0x08, + 0x37, 0x6D, 0x6D, 0x9D, 0x73, 0xCE, 0x97, 0x52, 0x28, 0xA3, 0x29, 0x06, + 0x6B, 0x8D, 0x10, 0x3C, 0xE7, 0x64, 0xAD, 0x91, 0x52, 0x84, 0x18, 0x1F, + 0x6E, 0x36, 0x1F, 0x6F, 0x77, 0xC7, 0x8B, 0x8A, 0x09, 0x9C, 0x87, 0xD9, + 0x5A, 0x0B, 0x21, 0xE0, 0xB2, 0x2A, 0x25, 0x41, 0x44, 0x98, 0x6C, 0x08, + 0x25, 0xDB, 0x9E, 0x31, 0x0A, 0x61, 0xC9, 0x5D, 0xCB, 0x29, 0x01, 0x5D, + 0x5B, 0xE5, 0x12, 0x21, 0xF2, 0xAB, 0x46, 0xE4, 0x8C, 0x5C, 0xC2, 0xC6, + 0xF9, 0x5C, 0x40, 0x08, 0x3E, 0xE5, 0x32, 0x2B, 0x15, 0x62, 0x02, 0x00, + 0xC6, 0x98, 0x63, 0x2E, 0xA3, 0x32, 0xCE, 0xC7, 0x94, 0x4B, 0x25, 0xE5, + 0x0F, 0x3F, 0x7D, 0x79, 0xBB, 0x4E, 0xE7, 0x69, 0x01, 0x05, 0xB6, 0x75, + 0x25, 0x44, 0x65, 0xAD, 0x15, 0x8C, 0x5E, 0xC6, 0x45, 0x69, 0x5B, 0x20, + 0x50, 0xD6, 0x86, 0x94, 0xD6, 0xAB, 0xA6, 0xEF, 0x24, 0x84, 0x65, 0x99, + 0xF5, 0xCB, 0xCB, 0x59, 0xAB, 0xF8, 0xF2, 0x32, 0x8D, 0xA3, 0xA1, 0x0C, + 0x23, 0x84, 0x21, 0x44, 0x6D, 0xDB, 0x3E, 0xDC, 0xEF, 0xD7, 0xEB, 0xDE, + 0xEA, 0xA5, 0x91, 0xD0, 0xD8, 0x70, 0x1C, 0x16, 0x82, 0xD0, 0x7E, 0x2D, + 0x25, 0x17, 0x7D, 0x5B, 0x73, 0xCE, 0xA7, 0xC9, 0x20, 0x4A, 0x9E, 0x5F, + 0x27, 0x82, 0xE1, 0xA2, 0x0D, 0xA6, 0x58, 0x5B, 0xBF, 0x28, 0x5B, 0x55, + 0x94, 0x60, 0x12, 0x52, 0xD9, 0x6C, 0xDA, 0x79, 0x31, 0xA7, 0x51, 0x35, + 0x82, 0x7D, 0x4D, 0xBC, 0x39, 0x33, 0xC6, 0x64, 0x0C, 0xA9, 0xAA, 0x19, + 0x15, 0xD5, 0xAC, 0xEC, 0xCB, 0xDB, 0x95, 0x32, 0xE4, 0xBC, 0x7F, 0x39, + 0x5E, 0x38, 0xA7, 0xD3, 0xA4, 0x57, 0xAB, 0xEA, 0x7F, 0x03, 0x1E, 0x8C, + 0xFD, 0x5B, 0xC8, 0xB2, 0x7A, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; diff --git a/samples/core/blur/main.c b/samples/core/blur/main.c index 186e21c5..777c9c2b 100644 --- a/samples/core/blur/main.c +++ b/samples/core/blur/main.c @@ -30,80 +30,90 @@ #include "default_image.h" // Sample-specific option -struct options_Blur { +struct options_Blur +{ float size; - const char * in, * out, * op; -}; - -cag_option BlurOptions[] = { - {.identifier = 'i', - .access_letters = "i", - .access_name = "in", - .value_name = "(name)", - .description = "Input image file"}, - - {.identifier = 'o', - .access_letters = "o", - .access_name = "out", - .value_name = "(name)", - .description = "Output image file"}, - - {.identifier = 's', - .access_letters = "s", - .access_name = "size", - .value_name = "(positive float)", - .description = "Size of blur kernel"}, - - {.identifier = 'b', - .access_letters = "b", - .access_name = "blur", - .value_name = "(box|gauss)", - .description = "Operation of blur to perform"} + const char *in, *out, *op; }; -ParseState parse_BlurOptions(const char identifier, cag_option_context * cag_context, struct options_Blur * opts) +cag_option BlurOptions[] = { { .identifier = 'i', + .access_letters = "i", + .access_name = "in", + .value_name = "(name)", + .description = "Input image file" }, + + { .identifier = 'o', + .access_letters = "o", + .access_name = "out", + .value_name = "(name)", + .description = "Output image file" }, + + { .identifier = 's', + .access_letters = "s", + .access_name = "size", + .value_name = "(positive float)", + .description = "Size of blur kernel" }, + + { .identifier = 'b', + .access_letters = "b", + .access_name = "blur", + .value_name = "(box|gauss)", + .description = + "Operation of blur to perform" } }; + +ParseState parse_BlurOptions(const char identifier, + cag_option_context *cag_context, + struct options_Blur *opts) { - const char * value; - -#define IF_ERR(op) \ -if ((value = cag_option_get_value(cag_context))) \ - { op; return ParsedOK; } \ -else return ParseError; - - switch (identifier) { - case 'i': - IF_ERR(opts->in = value) - case 'o': - IF_ERR(opts->out = value) - case 's': - IF_ERR(opts->size = fabsf(strtof(value, NULL))) - case 'b': - if ((value = cag_option_get_value(cag_context)) - && (!strcmp(value, "box") || !strcmp(value, "gauss"))) - { - opts->op = value; - return ParsedOK; - } - else return ParseError; + const char *value; + +#define IF_ERR(op) \ + if ((value = cag_option_get_value(cag_context))) \ + { \ + op; \ + return ParsedOK; \ + } \ + else \ + return ParseError; + + switch (identifier) + { + case 'i': IF_ERR(opts->in = value) + case 'o': IF_ERR(opts->out = value) + case 's': IF_ERR(opts->size = fabsf(strtof(value, NULL))) + case 'b': + if ((value = cag_option_get_value(cag_context)) + && (!strcmp(value, "box") || !strcmp(value, "gauss"))) + { + opts->op = value; + return ParsedOK; + } + else + return ParseError; } return NotParsed; } -cl_int parse_options(int argc, - char* argv[], - struct cl_sdk_options_Diagnostic * diag_opts, - struct cl_sdk_options_SingleDevice * dev_opts, - struct options_Blur * blur_opts) +cl_int parse_options(int argc, char *argv[], + struct cl_sdk_options_Diagnostic *diag_opts, + struct cl_sdk_options_SingleDevice *dev_opts, + struct options_Blur *blur_opts) { cl_int error = CL_SUCCESS; - struct cag_option * opts = NULL, * tmp = NULL; + struct cag_option *opts = NULL, *tmp = NULL; size_t n = 0; /* Prepare all options array. */ - MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); - MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, + CAG_ARRAY_SIZE(DiagnosticOptions)), + error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, + CAG_ARRAY_SIZE(SingleDeviceOptions)), + error, end); opts = tmp; - MEM_CHECK(tmp = add_CLI_options(opts, &n, BlurOptions, CAG_ARRAY_SIZE(BlurOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, BlurOptions, + CAG_ARRAY_SIZE(BlurOptions)), + error, end); opts = tmp; char identifier; @@ -111,26 +121,34 @@ cl_int parse_options(int argc, /* Prepare the context and iterate over all options. */ cag_option_prepare(&cag_context, opts, n, argc, argv); - while (cag_option_fetch(&cag_context)) { + while (cag_option_fetch(&cag_context)) + { ParseState state = NotParsed; identifier = cag_option_get(&cag_context); PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); - PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, blur_opts), state); + PARS_OPTIONS( + parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), + state); + PARS_OPTIONS(parse_BlurOptions(identifier, &cag_context, blur_opts), + state); - if (identifier == 'h') { + if (identifier == 'h') + { printf("Usage: blur [OPTION]...\n"); - printf("Option name and value should be separated by '=' or a space\n"); - /*printf("Demonstrates how to query various OpenCL extensions applicable " - "in the context of a reduction algorithm and to touch up kernel sources " - "at runtime to select the best kernel implementation for the task.\n\n");*/ + printf("Option name and value should be separated by '=' or a " + "space\n"); + /*printf("Demonstrates how to query various OpenCL extensions + applicable " "in the context of a reduction algorithm and to + touch up kernel sources " "at runtime to select the best kernel + implementation for the task.\n\n");*/ cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } } -end: free(opts); +end: + free(opts); return error; } @@ -141,7 +159,8 @@ float Gaussian(float x, float radius) } // note that the kernel is not normalized and has size of 2*(*size)+1 elements -cl_int create_gaussian_kernel(float radius, float ** const kernel, int * const size) +cl_int create_gaussian_kernel(float radius, float **const kernel, + int *const size) { cl_int error = CL_SUCCESS; @@ -151,22 +170,25 @@ cl_int create_gaussian_kernel(float radius, float ** const kernel, int * const s *kernel = NULL; MEM_CHECK(*kernel = (float *)malloc(sizeof(float) * span), error, end); - for (int i = 0; i <= *size; ++i) { + for (int i = 0; i <= *size; ++i) + { float gx = Gaussian((float)i, radius); (*kernel)[*size + i] = gx; (*kernel)[*size - i] = gx; } -end: return error; +end: + return error; } -typedef struct state { +typedef struct state +{ cl_device_id device; cl_context context; cl_command_queue queue; - char * kernel; + char *kernel; size_t program_size; - char * options; + char *options; cl_program program; cl_uint step; cl_sdk_image input_image; @@ -174,71 +196,82 @@ typedef struct state { cl_sdk_image output_image; cl_mem output_image_buf; cl_mem temp_image_buf; - const char * filename; + const char *filename; bool verbose; } state; -cl_image_format set_image_format(state * const s, cl_int * const error) +cl_image_format set_image_format(state *const s, cl_int *const error) { // this format is always supported - cl_image_format res = { - .image_channel_order = CL_RGBA, - .image_channel_data_type = CL_UNSIGNED_INT8 - }; + cl_image_format res = { .image_channel_order = CL_RGBA, + .image_channel_data_type = CL_UNSIGNED_INT8 }; *error = CL_SUCCESS; - if ((s->input_image.pixel_size == 1) || (s->input_image.pixel_size == 3)) { + if ((s->input_image.pixel_size == 1) || (s->input_image.pixel_size == 3)) + { // search for 1/3 channels of uint8_t - cl_image_format * formats = NULL; + cl_image_format *formats = NULL; cl_uint formats_number = 0; - OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, - 0, NULL, &formats_number), *error, end); - MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) * formats_number), *error, end); - OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, CL_MEM_OBJECT_IMAGE2D, - formats_number, formats, NULL), *error, end); + OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, + CL_MEM_OBJECT_IMAGE2D, 0, NULL, + &formats_number), + *error, end); + MEM_CHECK(formats = (cl_image_format *)malloc(sizeof(cl_image_format) + * formats_number), + *error, end); + OCLERROR_RET(clGetSupportedImageFormats(s->context, CL_MEM_READ_ONLY, + CL_MEM_OBJECT_IMAGE2D, + formats_number, formats, NULL), + *error, end); for (cl_uint i = 0; i < formats_number; ++i) - if ( ((s->input_image.pixel_size == 3) - && (formats[i].image_channel_order == CL_RGB) - && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) - || ((s->input_image.pixel_size == 1) + if (((s->input_image.pixel_size == 3) + && (formats[i].image_channel_order == CL_RGB) + && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8)) + || ((s->input_image.pixel_size == 1) && (formats[i].image_channel_order == CL_R) - && (formats[i].image_channel_data_type == CL_UNSIGNED_INT8))) + && (formats[i].image_channel_data_type + == CL_UNSIGNED_INT8))) { return formats[i]; } // if not found, default to 4 channels of uint8_t - if (s->verbose) - printf("Converting picture into supported format... "); + if (s->verbose) printf("Converting picture into supported format... "); const size_t pixels = s->input_image.width * s->input_image.height; const size_t new = sizeof(unsigned char) * pixels * 4; - unsigned char * tmp = NULL; - MEM_CHECK(tmp = (unsigned char *)realloc(s->input_image.pixels, new), *error, end); + unsigned char *tmp = NULL; + MEM_CHECK(tmp = (unsigned char *)realloc(s->input_image.pixels, new), + *error, end); s->input_image.pixels = tmp; - MEM_CHECK(tmp = (unsigned char *)realloc(s->output_image.pixels, new), *error, end); + MEM_CHECK(tmp = (unsigned char *)realloc(s->output_image.pixels, new), + *error, end); s->output_image.pixels = tmp; // change picture const size_t pixel_size = s->input_image.pixel_size; - for (size_t i = pixels - 1; i != 0; --i) { - memcpy(s->input_image.pixels + 4 * i, s->input_image.pixels + pixel_size * i, pixel_size); - memset(s->input_image.pixels + 4 * i + pixel_size, 0, 4 - pixel_size); + for (size_t i = pixels - 1; i != 0; --i) + { + memcpy(s->input_image.pixels + 4 * i, + s->input_image.pixels + pixel_size * i, pixel_size); + memset(s->input_image.pixels + 4 * i + pixel_size, 0, + 4 - pixel_size); } memset(s->input_image.pixels + pixel_size, 0, 4 - pixel_size); s->input_image.pixel_size = 4; // store initial pixel_size in s->output_image.pixel_size - if (s->verbose) - printf("done.\n"); + if (s->verbose) printf("done.\n"); } - else if (s->input_image.pixel_size != 4) { + else if (s->input_image.pixel_size != 4) + { fprintf(stderr, "Unknown image format!\n"); *error = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; return res; } // show image format used - if (s->verbose) { + if (s->verbose) + { printf("Format: "); if (res.image_channel_order == CL_R) printf("CL_R, "); @@ -250,52 +283,55 @@ cl_image_format set_image_format(state * const s, cl_int * const error) printf("CL_UNSIGNED_INT8\n\n"); } -end: return res; +end: + return res; } -cl_int finalize_blur(state * const s) +cl_int finalize_blur(state *const s) { cl_int error = CL_SUCCESS; // restore image type if needed - if (s->input_image.pixel_size != s->output_image.pixel_size) { - const size_t - pixels = s->input_image.width * s->input_image.height, - pixel_size = s->output_image.pixel_size; + if (s->input_image.pixel_size != s->output_image.pixel_size) + { + const size_t pixels = s->input_image.width * s->input_image.height, + pixel_size = s->output_image.pixel_size; for (size_t i = 1; i < pixels; ++i) - memcpy(s->output_image.pixels + pixel_size * i, s->output_image.pixels + 4 * i, pixel_size); + memcpy(s->output_image.pixels + pixel_size * i, + s->output_image.pixels + 4 * i, pixel_size); } char name[1024]; sprintf(name, "%u", (unsigned int)s->step); strncat(name, s->filename, sizeof(name) - 2); error = cl_sdk_write_image(name, &s->output_image); - if (error == CL_SUCCESS) - printf("Image %s written.\n\n", name); + if (error == CL_SUCCESS) printf("Image %s written.\n\n", name); return error; } -cl_int print_timings(struct timespec start, struct timespec end, const cl_event * const event_list, - cl_uint event_number) +cl_int print_timings(struct timespec start, struct timespec end, + const cl_event *const event_list, cl_uint event_number) { cl_int error = CL_SUCCESS; cl_ulong time_host, time_device = 0; TIMER_DIFFERENCE(time_host, start, end) - for (cl_uint i = 0; i < event_number; ++i) { - time_device += cl_util_get_event_duration(event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error); - if (error != CL_SUCCESS) - return error; + for (cl_uint i = 0; i < event_number; ++i) + { + time_device += cl_util_get_event_duration( + event_list[i], CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, + &error); + if (error != CL_SUCCESS) return error; } printf("Execution time as seen by host: %llu us, by device: %llu us\n", - (unsigned long long)(time_host + 500) / 1000, - (unsigned long long)(time_device + 500) / 1000); + (unsigned long long)(time_host + 500) / 1000, + (unsigned long long)(time_device + 500) / 1000); return error; } -cl_int single_pass_box_blur(state * const s, cl_int size) +cl_int single_pass_box_blur(state *const s, cl_int size) { cl_int error = CL_SUCCESS; printf("Single-pass blur\n"); @@ -306,34 +342,42 @@ cl_int single_pass_box_blur(state * const s, cl_int size) // compile kernel cl_kernel blur; - OCLERROR_PAR(blur = clCreateKernel(s->program, "blur_box", &error), error, end); + OCLERROR_PAR(blur = clCreateKernel(s->program, "blur_box", &error), error, + end); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &s->input_image_buf), error, blr); - OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &s->output_image_buf), error, blr); + OCLERROR_RET(clSetKernelArg(blur, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr); + OCLERROR_RET(clSetKernelArg(blur, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr); OCLERROR_RET(clSetKernelArg(blur, 2, sizeof(cl_int), &size), error, blr); // blur cl_event pass; GET_CURRENT_TIMER(start) - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur, 2, origin, image_size, NULL, 0, NULL, &pass), error, blr); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur, 2, origin, image_size, + NULL, 0, NULL, &pass), + error, blr); OCLERROR_RET(clWaitForEvents(1, &pass), error, blr); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr); - if (s->verbose) - print_timings(start, end, &pass, 1); + if (s->verbose) print_timings(start, end, &pass, 1); // write output file OCLERROR_RET(finalize_blur(s), error, blr); -blr: clReleaseKernel(blur); -end: return error; +blr: + clReleaseKernel(blur); +end: + return error; } -cl_int dual_pass_box_blur(state * const s, cl_int size) +cl_int dual_pass_box_blur(state *const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; printf("Dual-pass blur\n"); @@ -344,41 +388,57 @@ cl_int dual_pass_box_blur(state * const s, cl_int size) // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_box_horizontal", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_box_vertical", &error), error, blr1); + OCLERROR_PAR(blur1 = + clCreateKernel(s->program, "blur_box_horizontal", &error), + error, end); + OCLERROR_PAR(blur2 = + clCreateKernel(s->program, "blur_box_vertical", &error), + error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0), error, blr2); - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, + NULL, 0, NULL, pass + 0), + error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, + NULL, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: + return error; } -cl_int dual_pass_local_memory_exchange_box_blur(state * const s, cl_int size) +cl_int dual_pass_local_memory_exchange_box_blur(state *const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; printf("Dual-pass local memory exchange blur\n"); @@ -389,74 +449,110 @@ cl_int dual_pass_local_memory_exchange_box_blur(state * const s, cl_int size) // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_box_horizontal_exchange", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_box_vertical_exchange", &error), error, blr1); - - // query maximum supported WGS of kernel on device based on private mem (register) constraints + OCLERROR_PAR(blur1 = clCreateKernel(s->program, + "blur_box_horizontal_exchange", &error), + error, end); + OCLERROR_PAR(blur2 = clCreateKernel(s->program, + "blur_box_vertical_exchange", &error), + error, blr1); + + // query maximum supported WGS of kernel on device based on private mem + // (register) constraints size_t wgs1, psm1, wgs2, psm2; OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); + CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &wgs1, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &psm1, NULL), + error, blr2); OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); + CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &wgs2, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &psm2, NULL), + error, blr2); // Further constrain (reduce) WGS based on shared mem size on device cl_ulong loc_mem; - OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); + OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, + sizeof(cl_ulong), &loc_mem, NULL), + error, blr2); - if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) { - while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) - wgs1 -= psm1; - while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) - wgs2 -= psm2; + if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) + { + while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) wgs1 -= psm1; + while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) wgs2 -= psm2; } - else { + else + { printf("Not enough local memory to serve a single sub-group.\n"); error = CL_OUT_OF_RESOURCES; goto blr2; } // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), error, blr2); - - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET( + clSetKernelArg(blur1, 3, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), + error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), error, blr2); + OCLERROR_RET( + clSetKernelArg(blur2, 3, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), + error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, + s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); - size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, + wgsf, 0, NULL, pass + 0), + error, blr2); + size_t work_size2[3] = { s->input_image.width, + (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, + 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, + wgss, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: + return error; } -cl_int dual_pass_subgroup_exchange_box_blur(state * const s, cl_int size) +cl_int dual_pass_subgroup_exchange_box_blur(state *const s, cl_int size) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; ++(s->step); @@ -467,59 +563,89 @@ cl_int dual_pass_subgroup_exchange_box_blur(state * const s, cl_int size) // build program with options cl_program program; OCLERROR_PAR(program = clCreateProgramWithSource(s->context, 1, - (const char **)&s->kernel, &s->program_size, &error), error, end); - OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, prg); + (const char **)&s->kernel, + &s->program_size, &error), + error, end); + OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, + prg); // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_box_horizontal_subgroup_exchange", &error), error, prg); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_box_vertical_subgroup_exchange", &error), error, blr1); + OCLERROR_PAR(blur1 = clCreateKernel( + program, "blur_box_horizontal_subgroup_exchange", &error), + error, prg); + OCLERROR_PAR(blur2 = clCreateKernel( + program, "blur_box_vertical_subgroup_exchange", &error), + error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); // query preferred subgroup size of kernel on device size_t wgs1, wgs2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &wgs1, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &wgs2, NULL), + error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, + s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); - size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, + wgsf, 0, NULL, pass + 0), + error, blr2); + size_t work_size2[3] = { s->input_image.width, + (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, + 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, + wgss, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); // cleanup for error handling -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, end);; -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); +prg: + OCLERROR_RET(clReleaseProgram(program), end_error, end); + ; +end: + return error; } -cl_int dual_pass_kernel_blur(state * const s, cl_int size, cl_mem kern) +cl_int dual_pass_kernel_blur(state *const s, cl_int size, cl_mem kern) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; ++(s->step); @@ -528,43 +654,60 @@ cl_int dual_pass_kernel_blur(state * const s, cl_int size, cl_mem kern) size_t origin[3] = { 0, 0, 0 }; cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_kernel_horizontal", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_kernel_vertical", &error), error, blr1); + OCLERROR_PAR( + blur1 = clCreateKernel(s->program, "blur_kernel_horizontal", &error), + error, end); + OCLERROR_PAR(blur2 = + clCreateKernel(s->program, "blur_kernel_vertical", &error), + error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, NULL, 0, NULL, pass + 0), error, blr2); - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, NULL, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, image_size, + NULL, 0, NULL, pass + 0), + error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, image_size, + NULL, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: + return error; } -cl_int dual_pass_local_memory_exchange_kernel_blur(state * const s, cl_int size, cl_mem kern) +cl_int dual_pass_local_memory_exchange_kernel_blur(state *const s, cl_int size, + cl_mem kern) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; ++(s->step); @@ -574,76 +717,113 @@ cl_int dual_pass_local_memory_exchange_kernel_blur(state * const s, cl_int size, // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(s->program, "blur_kernel_horizontal_exchange", &error), error, end); - OCLERROR_PAR(blur2 = clCreateKernel(s->program, "blur_kernel_vertical_exchange", &error), error, blr1); - - // query maximum supported WGS of kernel on device based on private mem (register) constraints + OCLERROR_PAR(blur1 = clCreateKernel( + s->program, "blur_kernel_horizontal_exchange", &error), + error, end); + OCLERROR_PAR(blur2 = clCreateKernel( + s->program, "blur_kernel_vertical_exchange", &error), + error, blr1); + + // query maximum supported WGS of kernel on device based on private mem + // (register) constraints size_t wgs1, psm1, wgs2, psm2; OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm1, NULL), error, blr2); + CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &wgs1, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &psm1, NULL), + error, blr2); OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs2, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm2, NULL), error, blr2); + CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &wgs2, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &psm2, NULL), + error, blr2); // Further constrain (reduce) WGS based on shared mem size on device cl_ulong loc_mem; - OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, blr2); + OCLERROR_RET(clGetDeviceInfo(s->device, CL_DEVICE_LOCAL_MEM_SIZE, + sizeof(cl_ulong), &loc_mem, NULL), + error, blr2); - if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) { - while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) - wgs1 -= psm1; - while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) - wgs2 -= psm2; + if (loc_mem >= ((psm1 > psm2 ? psm1 : psm2) + 2 * size) * sizeof(cl_uchar4)) + { + while (loc_mem < (wgs1 + 2 * size) * sizeof(cl_uchar4)) wgs1 -= psm1; + while (loc_mem < (wgs2 + 2 * size) * sizeof(cl_uchar4)) wgs2 -= psm2; } - else { + else + { printf("Not enough local memory to serve a single sub-group.\n"); error = CL_OUT_OF_RESOURCES; goto blr2; } // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 4, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), error, blr2); - - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET( + clSetKernelArg(blur1, 4, sizeof(cl_uchar4) * (wgs1 + 2 * size), NULL), + error, blr2); + + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 4, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), error, blr2); + OCLERROR_RET( + clSetKernelArg(blur2, 4, sizeof(cl_uchar4) * (wgs2 + 2 * size), NULL), + error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, + s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); - size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, + wgsf, 0, NULL, pass + 0), + error, blr2); + size_t work_size2[3] = { s->input_image.width, + (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, + 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, + wgss, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, end); -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, end); +end: + return error; } -cl_int dual_pass_subgroup_exchange_kernel_blur(state * const s, cl_int size, cl_mem kern) +cl_int dual_pass_subgroup_exchange_kernel_blur(state *const s, cl_int size, + cl_mem kern) { cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; ++(s->step); @@ -654,102 +834,151 @@ cl_int dual_pass_subgroup_exchange_kernel_blur(state * const s, cl_int size, cl_ // build program with options cl_program program; OCLERROR_PAR(program = clCreateProgramWithSource(s->context, 1, - (const char **)&s->kernel, &s->program_size, &error), error, end); - OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, prg); + (const char **)&s->kernel, + &s->program_size, &error), + error, end); + OCLERROR_RET(cl_util_build_program(program, s->device, s->options), error, + prg); // create kernels cl_kernel blur1, blur2; - OCLERROR_PAR(blur1 = clCreateKernel(program, "blur_kernel_horizontal_subgroup_exchange", &error), error, prg); - OCLERROR_PAR(blur2 = clCreateKernel(program, "blur_kernel_vertical_subgroup_exchange", &error), error, blr1); + OCLERROR_PAR( + blur1 = clCreateKernel( + program, "blur_kernel_horizontal_subgroup_exchange", &error), + error, prg); + OCLERROR_PAR(blur2 = clCreateKernel( + program, "blur_kernel_vertical_subgroup_exchange", &error), + error, blr1); // set kernel parameters - OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 0, sizeof(cl_mem), &s->input_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur1, 1, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur1, 3, sizeof(cl_mem), &kern), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), error, blr2); - OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 0, sizeof(cl_mem), &s->temp_image_buf), + error, blr2); + OCLERROR_RET(clSetKernelArg(blur2, 1, sizeof(cl_mem), &s->output_image_buf), + error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 2, sizeof(cl_int), &size), error, blr2); OCLERROR_RET(clSetKernelArg(blur2, 3, sizeof(cl_mem), &kern), error, blr2); // query preferred subgroup size of kernel on device size_t wgs1, wgs2; - OCLERROR_RET(clGetKernelWorkGroupInfo(blur1, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs1, NULL), error, blr2); - OCLERROR_RET(clGetKernelWorkGroupInfo(blur2, s->device, - CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &wgs2, NULL), error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur1, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &wgs1, NULL), + error, blr2); + OCLERROR_RET( + clGetKernelWorkGroupInfo(blur2, s->device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &wgs2, NULL), + error, blr2); // blur cl_event pass[2]; GET_CURRENT_TIMER(start) - size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, s->input_image.height, 1 }; + size_t work_size1[3] = { (s->input_image.width + wgs1 - 1) / wgs1 * wgs1, + s->input_image.height, 1 }; size_t wgsf[3] = { wgs1, 1, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, wgsf, 0, NULL, pass + 0), error, blr2); - size_t work_size2[3] = { s->input_image.width, (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, 1 }; + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur1, 2, origin, work_size1, + wgsf, 0, NULL, pass + 0), + error, blr2); + size_t work_size2[3] = { s->input_image.width, + (s->input_image.height + wgs2 - 1) / wgs2 * wgs2, + 1 }; size_t wgss[3] = { 1, wgs2, 1 }; - OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, wgss, 0, NULL, pass + 1), error, blr2); + OCLERROR_RET(clEnqueueNDRangeKernel(s->queue, blur2, 2, origin, work_size2, + wgss, 0, NULL, pass + 1), + error, blr2); OCLERROR_RET(clWaitForEvents(2, pass), error, blr2); GET_CURRENT_TIMER(end) - OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, origin, image_size, 0, 0, - s->output_image.pixels, 0, NULL, NULL), error, blr2); + OCLERROR_RET(clEnqueueReadImage(s->queue, s->output_image_buf, CL_BLOCKING, + origin, image_size, 0, 0, + s->output_image.pixels, 0, NULL, NULL), + error, blr2); - if (s->verbose) - print_timings(start, end, pass, 2); + if (s->verbose) print_timings(start, end, pass, 2); // write output file OCLERROR_RET(finalize_blur(s), error, blr2); // cleanup for error handling -blr2: OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); -blr1: OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, end);; -end: return error; +blr2: + OCLERROR_RET(clReleaseKernel(blur2), end_error, blr1); +blr1: + OCLERROR_RET(clReleaseKernel(blur1), end_error, prg); +prg: + OCLERROR_RET(clReleaseProgram(program), end_error, end); + ; +end: + return error; } -int main(int argc, char * argv[]) +int main(int argc, char *argv[]) { - cl_int error = CL_SUCCESS, - end_error = CL_SUCCESS; + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; state s; cl_platform_id platform; /// Parse command-line options - struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; - struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; - struct options_Blur blur_opts = { .size = 1, .op = "box", .in = NULL, .out = "out.png" }; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, + .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { + .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } + }; + struct options_Blur blur_opts = { + .size = 1, .op = "box", .in = NULL, .out = "out.png" + }; - OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &blur_opts), error, end); + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &blur_opts), + error, end); s.verbose = diag_opts.verbose; s.filename = blur_opts.out; s.step = 0; /// Create runtime objects based on user preference or default - OCLERROR_PAR(s.device = cl_util_get_device(dev_opts.triplet.plat_index, - dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); - OCLERROR_PAR(s.context = clCreateContext(NULL, 1, &s.device, NULL, NULL, &error), error, end); - OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); + OCLERROR_PAR(s.device = cl_util_get_device( + dev_opts.triplet.plat_index, dev_opts.triplet.dev_index, + dev_opts.triplet.dev_type, &error), + error, end); + OCLERROR_PAR(s.context = + clCreateContext(NULL, 1, &s.device, NULL, NULL, &error), + error, end); + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_PLATFORM, + sizeof(cl_platform_id), &platform, NULL), + error, cont); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_command_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; - OCLERROR_PAR(s.queue = clCreateCommandQueueWithProperties(s.context, s.device, props, &error), error, cont); + cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, + CL_QUEUE_PROFILING_ENABLE, 0 }; + OCLERROR_PAR(s.queue = clCreateCommandQueueWithProperties( + s.context, s.device, props, &error), + error, cont); #else - OCLERROR_PAR(s.queue = clCreateCommandQueue(s.context, s.device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); + OCLERROR_PAR(s.queue = clCreateCommandQueue( + s.context, s.device, CL_QUEUE_PROFILING_ENABLE, &error), + error, cont); #endif - if (!diag_opts.quiet) - cl_util_print_device_info(s.device); + if (!diag_opts.quiet) cl_util_print_device_info(s.device); /// Read input image and prepare output image const char fname[] = "andrew_svk_7oJ4D_ewB7c_unsplash.png"; - if (!blur_opts.in) { + if (!blur_opts.in) + { printf("No file given, use standard image %s\n", fname); - const unsigned char * fcont = andrew_svk_7oJ4D_ewB7c_unsplash_png; + const unsigned char *fcont = andrew_svk_7oJ4D_ewB7c_unsplash_png; const size_t fsize = andrew_svk_7oJ4D_ewB7c_unsplash_png_size; - FILE * f; - if ((f = fopen(fname, "wb")) != NULL) { - if (fwrite(fcont, 1, fsize, f) != fsize) { + FILE *f; + if ((f = fopen(fname, "wb")) != NULL) + { + if (fwrite(fcont, 1, fsize, f) != fsize) + { fprintf(stderr, "File write error!\n"); error = CL_UTIL_FILE_OPERATION_ERROR; fclose(f); @@ -757,25 +986,32 @@ int main(int argc, char * argv[]) } fclose(f); } - else { + else + { fprintf(stderr, "Cannot open the file to write!\n"); error = CL_INVALID_VALUE; goto que; } blur_opts.in = fname; } - OCLERROR_PAR(s.input_image = cl_sdk_read_image(blur_opts.in, &error), error, que); + OCLERROR_PAR(s.input_image = cl_sdk_read_image(blur_opts.in, &error), error, + que); s.output_image = s.input_image; s.output_image.pixels = NULL; - MEM_CHECK(s.output_image.pixels = (unsigned char *)malloc(sizeof(unsigned char) * - s.output_image.width * s.output_image.height * s.output_image.pixel_size), error, inim); + MEM_CHECK(s.output_image.pixels = (unsigned char *)malloc( + sizeof(unsigned char) * s.output_image.width + * s.output_image.height * s.output_image.pixel_size), + error, inim); /// Query device and runtime capabilities // 1) query image support cl_bool image_support = false; - OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_IMAGE_SUPPORT, sizeof(cl_bool), &image_support, NULL), error, outim); - if (!image_support) { + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_IMAGE_SUPPORT, + sizeof(cl_bool), &image_support, NULL), + error, outim); + if (!image_support) + { fprintf(stderr, "No image support on device!\n"); error = CL_INVALID_DEVICE; goto outim; @@ -788,148 +1024,198 @@ int main(int argc, char * argv[]) // 3) query if device have local memory and its size bool use_local_mem = false; cl_device_local_mem_type mt; - OCLERROR_RET(clGetDeviceInfo(s.device, - CL_DEVICE_LOCAL_MEM_TYPE, sizeof(cl_device_local_mem_type), &mt, NULL), error, outim); - if (mt == CL_LOCAL) - use_local_mem = true; + OCLERROR_RET(clGetDeviceInfo(s.device, CL_DEVICE_LOCAL_MEM_TYPE, + sizeof(cl_device_local_mem_type), &mt, NULL), + error, outim); + if (mt == CL_LOCAL) use_local_mem = true; // 4) query if device allow subgroup shuffle operations bool use_subgroup_exchange = false, use_subgroup_exchange_relative = false; { - char * name = NULL, * tmp1 = NULL, * tmp2 = NULL; - OCLERROR_PAR(name = cl_util_get_device_info(s.device, CL_DEVICE_EXTENSIONS, &error), error, nam); + char *name = NULL, *tmp1 = NULL, *tmp2 = NULL; + OCLERROR_PAR(name = cl_util_get_device_info( + s.device, CL_DEVICE_EXTENSIONS, &error), + error, nam); tmp1 = strstr(name, "cl_khr_subgroup_shuffle_relative"); - if (tmp1) - use_subgroup_exchange_relative = true; + if (tmp1) use_subgroup_exchange_relative = true; tmp2 = strstr(name, "cl_khr_subgroup_shuffle"); if (tmp2 && (tmp2 == tmp1)) // exclude relative tmp2 = strstr(tmp2 + 1, "cl_khr_subgroup_shuffle"); - if (tmp2) - use_subgroup_exchange = true; + if (tmp2) use_subgroup_exchange = true; -nam: free(name); + nam: + free(name); } /// Create image buffers - const cl_image_desc desc = { - .image_type = CL_MEM_OBJECT_IMAGE2D, - .image_width = s.input_image.width, - .image_height = s.input_image.height, - .image_row_pitch = 0, - .num_mip_levels = 0, - .num_samples = 0, - .mem_object = NULL - }; - OCLERROR_PAR(s.input_image_buf = clCreateImage(s.context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, - &format, &desc, NULL, &error), error, outim); - OCLERROR_PAR(s.output_image_buf = clCreateImage(s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - &format, &desc, NULL, &error), error, inbuf); - OCLERROR_PAR(s.temp_image_buf = clCreateImage(s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - &format, &desc, NULL, &error), error, outbuf); + const cl_image_desc desc = { .image_type = CL_MEM_OBJECT_IMAGE2D, + .image_width = s.input_image.width, + .image_height = s.input_image.height, + .image_row_pitch = 0, + .num_mip_levels = 0, + .num_samples = 0, + .mem_object = NULL }; + OCLERROR_PAR(s.input_image_buf = clCreateImage( + s.context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, + &format, &desc, NULL, &error), + error, outim); + OCLERROR_PAR(s.output_image_buf = clCreateImage( + s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + &format, &desc, NULL, &error), + error, inbuf); + OCLERROR_PAR(s.temp_image_buf = clCreateImage( + s.context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, + &format, &desc, NULL, &error), + error, outbuf); size_t image_size[3] = { s.input_image.width, s.input_image.height, 1 }; size_t origin[3] = { 0, 0, 0 }; - OCLERROR_RET(clEnqueueWriteImage(s.queue, s.input_image_buf, CL_NON_BLOCKING, origin, image_size, 0, 0, - s.input_image.pixels, 0, NULL, NULL), error, tmpbuf); + OCLERROR_RET(clEnqueueWriteImage(s.queue, s.input_image_buf, + CL_NON_BLOCKING, origin, image_size, 0, 0, + s.input_image.pixels, 0, NULL, NULL), + error, tmpbuf); /// Create OpenCL program - const char * kernel_location = "./blur.cl"; + const char *kernel_location = "./blur.cl"; s.kernel = NULL; s.program_size = 0; char kernel_op[1024] = ""; // here we put some dynamic definitions s.options = kernel_op; - OCLERROR_PAR(s.kernel = cl_util_read_text_file(kernel_location, &s.program_size, &error), error, tmpbuf); + OCLERROR_PAR(s.kernel = cl_util_read_text_file(kernel_location, + &s.program_size, &error), + error, tmpbuf); OCLERROR_PAR(s.program = clCreateProgramWithSource(s.context, 1, - (const char **)&s.kernel, &s.program_size, &error), error, ker); - OCLERROR_RET(cl_util_build_program(s.program, s.device, kernel_op), error, prg); + (const char **)&s.kernel, + &s.program_size, &error), + error, ker); + OCLERROR_RET(cl_util_build_program(s.program, s.device, kernel_op), error, + prg); kernel_op[0] = '\0'; /// Box blur - if (strstr(blur_opts.op, "box")) { + if (strstr(blur_opts.op, "box")) + { /// Single-pass blur - OCLERROR_RET(single_pass_box_blur(&s, (cl_int)blur_opts.size), error, prg); + OCLERROR_RET(single_pass_box_blur(&s, (cl_int)blur_opts.size), error, + prg); /// Dual-pass blur - OCLERROR_RET(dual_pass_box_blur(&s, (cl_int)blur_opts.size), error, prg); + OCLERROR_RET(dual_pass_box_blur(&s, (cl_int)blur_opts.size), error, + prg); /// Use local memory exchange in dual-pass blur if (use_local_mem) - OCLERROR_RET(dual_pass_local_memory_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); + OCLERROR_RET(dual_pass_local_memory_exchange_box_blur( + &s, (cl_int)blur_opts.size), + error, prg); /// Subgroup exchange in dual-pass blur - if (use_subgroup_exchange_relative) { + if (use_subgroup_exchange_relative) + { printf("Dual-pass subgroup relative exchange blur\n"); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - OCLERROR_RET(dual_pass_subgroup_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( + &s, (cl_int)blur_opts.size), + error, prg); } - if (use_subgroup_exchange) { + if (use_subgroup_exchange) + { printf("Dual-pass subgroup exchange blur\n"); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - OCLERROR_RET(dual_pass_subgroup_exchange_box_blur(&s, (cl_int)blur_opts.size), error, prg); + OCLERROR_RET(dual_pass_subgroup_exchange_box_blur( + &s, (cl_int)blur_opts.size), + error, prg); } } // Box blur /// Gaussian blur - if (strstr(blur_opts.op, "gauss")) { + if (strstr(blur_opts.op, "gauss")) + { // create Gaussian convolution kernel - float * gauss = NULL; + float *gauss = NULL; int gauss_size = 0; - OCLERROR_RET(create_gaussian_kernel(blur_opts.size, &gauss, &gauss_size), error, gau); + OCLERROR_RET( + create_gaussian_kernel(blur_opts.size, &gauss, &gauss_size), error, + gau); cl_mem gauss_kern; - OCLERROR_PAR(gauss_kern = clCreateBuffer(s.context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, - sizeof(float) * (2 * gauss_size + 1), gauss, &error), error, gau); + OCLERROR_PAR(gauss_kern = clCreateBuffer( + s.context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + sizeof(float) * (2 * gauss_size + 1), gauss, &error), + error, gau); /// Dual-pass Gaussian blur printf("Dual-pass Gaussian blur\n"); - OCLERROR_RET(dual_pass_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + OCLERROR_RET(dual_pass_kernel_blur(&s, gauss_size, gauss_kern), error, + gkrn); /// Local memory exchange Gaussian blur - if (use_local_mem) { + if (use_local_mem) + { printf("Dual-pass local memory exchange Gaussian blur\n"); - OCLERROR_RET(dual_pass_local_memory_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + OCLERROR_RET(dual_pass_local_memory_exchange_kernel_blur( + &s, gauss_size, gauss_kern), + error, gkrn); } /// Subgroup exchange in dual-pass Gaussian blur - if (use_subgroup_exchange_relative) { + if (use_subgroup_exchange_relative) + { printf("Dual-pass subgroup relative exchange Gaussian blur\n"); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE_RELATIVE "); - OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, + gauss_kern), + error, gkrn); } - if (use_subgroup_exchange) { + if (use_subgroup_exchange) + { printf("Dual-pass subgroup exchange Gaussian blur\n"); kernel_op[0] = '\0'; strcat(kernel_op, "-D USE_SUBGROUP_EXCHANGE "); - OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, gauss_kern), error, gkrn); + OCLERROR_RET(dual_pass_subgroup_exchange_kernel_blur(&s, gauss_size, + gauss_kern), + error, gkrn); } -gkrn: OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); -gau: free(gauss); + gkrn: + OCLERROR_RET(clReleaseMemObject(gauss_kern), end_error, gau); + gau: + free(gauss); } // Gaussian blur /// Cleanup -prg: OCLERROR_RET(clReleaseProgram(s.program), end_error, ker); -ker: free(s.kernel); -tmpbuf: OCLERROR_RET(clReleaseMemObject(s.temp_image_buf), end_error, outbuf); -outbuf: OCLERROR_RET(clReleaseMemObject(s.output_image_buf), end_error, inbuf); -inbuf: OCLERROR_RET(clReleaseMemObject(s.input_image_buf), end_error, outim); -outim: free(s.output_image.pixels); -inim: free(s.input_image.pixels); -que: OCLERROR_RET(clReleaseCommandQueue(s.queue), end_error, cont); -cont: OCLERROR_RET(clReleaseContext(s.context), end_error, end); -end: if (error != CL_SUCCESS) cl_util_print_error(error); +prg: + OCLERROR_RET(clReleaseProgram(s.program), end_error, ker); +ker: + free(s.kernel); +tmpbuf: + OCLERROR_RET(clReleaseMemObject(s.temp_image_buf), end_error, outbuf); +outbuf: + OCLERROR_RET(clReleaseMemObject(s.output_image_buf), end_error, inbuf); +inbuf: + OCLERROR_RET(clReleaseMemObject(s.input_image_buf), end_error, outim); +outim: + free(s.output_image.pixels); +inim: + free(s.input_image.pixels); +que: + OCLERROR_RET(clReleaseCommandQueue(s.queue), end_error, cont); +cont: + OCLERROR_RET(clReleaseContext(s.context), end_error, end); +end: + if (error != CL_SUCCESS) cl_util_print_error(error); return error; } diff --git a/samples/core/copybuffer/main.cpp b/samples/core/copybuffer/main.cpp index 5b3ce2be..e9b53f45 100644 --- a/samples/core/copybuffer/main.cpp +++ b/samples/core/copybuffer/main.cpp @@ -77,9 +77,7 @@ static void checkResults(Sample& sample) printf("Success.\n"); } - sample.commandQueue.enqueueUnmapMemObject( - sample.deviceMemDst, - (void*)pDst); + sample.commandQueue.enqueueUnmapMemObject(sample.deviceMemDst, (void*)pDst); // Ensure that the unmap operation is complete. sample.commandQueue.finish(); diff --git a/samples/core/copybufferkernel/main.cpp b/samples/core/copybufferkernel/main.cpp index b3a91c4e..26d046d6 100644 --- a/samples/core/copybufferkernel/main.cpp +++ b/samples/core/copybufferkernel/main.cpp @@ -88,9 +88,7 @@ static void checkResults(Sample& sample) printf("Success.\n"); } - sample.commandQueue.enqueueUnmapMemObject( - sample.deviceMemDst, - (void*)pDst); + sample.commandQueue.enqueueUnmapMemObject(sample.deviceMemDst, (void*)pDst); // Ensure that the unmap operation is complete. sample.commandQueue.finish(); diff --git a/samples/core/reduce/CMakeLists.txt b/samples/core/reduce/CMakeLists.txt index 36586654..e74e01ed 100644 --- a/samples/core/reduce/CMakeLists.txt +++ b/samples/core/reduce/CMakeLists.txt @@ -16,11 +16,12 @@ add_sample( TEST TARGET reduce VERSION 300 - SOURCES main.c) + SOURCES main.c + KERNELS reduce.cl) add_sample( TEST TARGET reducecpp VERSION 300 SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR}) + KERNELS reduce.cl) diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index 8472a733..e1d4340a 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -21,67 +21,77 @@ #include // STL includes -#include -#include -#include +#include +#include +#include // Sample-specific option -struct options_Reduce { +struct options_Reduce +{ size_t length; - const char * op; -}; - -cag_option ReduceOptions[] = { - {.identifier = 'l', - .access_letters = "l", - .access_name = "length", - .value_name = "(positive integer)", - .description = "Length of input"}, - - {.identifier = 'o', - .access_letters = "o", - .access_name = "op", - .value_name = "(min|sum)", - .description = "Operation to perform"} + const char *op; }; -ParseState parse_ReduceOptions(const char identifier, cag_option_context * cag_context, struct options_Reduce * opts) +cag_option ReduceOptions[] = { { .identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of input" }, + + { .identifier = 'o', + .access_letters = "o", + .access_name = "op", + .value_name = "(min|sum)", + .description = "Operation to perform" } }; + +ParseState parse_ReduceOptions(const char identifier, + cag_option_context *cag_context, + struct options_Reduce *opts) { - const char * value; - switch (identifier) { - case 'l': - if ((value = cag_option_get_value(cag_context))) { - opts->length = strtoul(value, NULL, 0); - return ParsedOK; - } - else return ParseError; - case 'o': - if ((value = cag_option_get_value(cag_context)) - && (!strcmp(value, "min") || !strcmp(value, "sum"))) - { - opts->op = value; - return ParsedOK; - } - else return ParseError; + const char *value; + switch (identifier) + { + case 'l': + if ((value = cag_option_get_value(cag_context))) + { + opts->length = strtoul(value, NULL, 0); + return ParsedOK; + } + else + return ParseError; + case 'o': + if ((value = cag_option_get_value(cag_context)) + && (!strcmp(value, "min") || !strcmp(value, "sum"))) + { + opts->op = value; + return ParsedOK; + } + else + return ParseError; } return NotParsed; } -cl_int parse_options(int argc, - char* argv[], - struct cl_sdk_options_Diagnostic * diag_opts, - struct cl_sdk_options_SingleDevice * dev_opts, - struct options_Reduce * reduce_opts) +cl_int parse_options(int argc, char *argv[], + struct cl_sdk_options_Diagnostic *diag_opts, + struct cl_sdk_options_SingleDevice *dev_opts, + struct options_Reduce *reduce_opts) { cl_int error = CL_SUCCESS; - struct cag_option * opts = NULL, * tmp = NULL; + struct cag_option *opts = NULL, *tmp = NULL; size_t n = 0; /* Prepare all options array. */ - MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); - MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, + CAG_ARRAY_SIZE(DiagnosticOptions)), + error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, + CAG_ARRAY_SIZE(SingleDeviceOptions)), + error, end); opts = tmp; - MEM_CHECK(tmp = add_CLI_options(opts, &n, ReduceOptions, CAG_ARRAY_SIZE(ReduceOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, ReduceOptions, + CAG_ARRAY_SIZE(ReduceOptions)), + error, end); opts = tmp; char identifier; @@ -89,100 +99,128 @@ cl_int parse_options(int argc, /* Prepare the context and iterate over all options. */ cag_option_prepare(&cag_context, opts, n, argc, argv); - while (cag_option_fetch(&cag_context)) { + while (cag_option_fetch(&cag_context)) + { ParseState state = NotParsed; identifier = cag_option_get(&cag_context); PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); - PARS_OPTIONS(parse_ReduceOptions(identifier, &cag_context, reduce_opts), state); + PARS_OPTIONS( + parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), + state); + PARS_OPTIONS(parse_ReduceOptions(identifier, &cag_context, reduce_opts), + state); - if (identifier == 'h') { + if (identifier == 'h') + { printf("Usage: reduce [OPTION]...\n"); - printf("Demonstrates how to query various OpenCL extensions applicable " - "in the context of a reduction algorithm and to touch up kernel sources " - "at runtime to select the best kernel implementation for the task.\n\n"); + printf("Demonstrates how to query various OpenCL extensions " + "applicable " + "in the context of a reduction algorithm and to touch up " + "kernel sources " + "at runtime to select the best kernel implementation for " + "the task.\n\n"); cag_option_print(opts, n, stdout); exit((state == ParseError) ? CL_INVALID_ARG_VALUE : CL_SUCCESS); } } -end: free(opts); +end: + free(opts); return error; } -int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +int check_use_work_group_reduce(cl_platform_id platform, cl_device_id device, + cl_int *error) { int res = 0; - char * name = NULL; + char *name = NULL; - OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); + OCLERROR_PAR( + name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), + *error, nam); - if (strstr(name, "OpenCL 2.")) { + if (strstr(name, "OpenCL 2.")) + { free(name); - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_OPENCL_C_VERSION, error), *error, nam); - if (strstr(name, "OpenCL C 2.")) - res = 2; + OCLERROR_PAR(name = cl_util_get_device_info( + device, CL_DEVICE_OPENCL_C_VERSION, error), + *error, nam); + if (strstr(name, "OpenCL C 2.")) res = 2; } - else if (strstr(name, "OpenCL 3.")) { + else if (strstr(name, "OpenCL 3.")) + { cl_bool coll_func; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT, - sizeof(cl_bool), &coll_func, NULL), *error, nam); + OCLERROR_RET( + clGetDeviceInfo(device, + CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT, + sizeof(cl_bool), &coll_func, NULL), + *error, nam); - if (coll_func) { - cl_name_version * c_features = NULL; + if (coll_func) + { + cl_name_version *c_features = NULL; size_t n = 0; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, 0, + NULL, &n), + *error, nam); + MEM_CHECK(c_features = (cl_name_version *)malloc(sizeof(char) * n), + *error, nam); OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, - 0, NULL, &n), *error, nam); - MEM_CHECK(c_features = (cl_name_version *)malloc(sizeof(char) * n), *error, nam); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_FEATURES, - sizeof(char) * n, c_features, NULL), *error, cf); + sizeof(char) * n, c_features, NULL), + *error, cf); const size_t feat = sizeof(char) * n / sizeof(cl_name_version); for (size_t i = 0; i < feat; ++i) - if (strstr(c_features[i].name, "__opencl_c_work_group_collective_functions")) { + if (strstr(c_features[i].name, + "__opencl_c_work_group_collective_functions")) + { res = 3; break; } -cf: free(c_features); + cf: + free(c_features); } } -nam: free(name); +nam: + free(name); return res; } -int check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, cl_int * error) +int check_use_sub_group_reduce(cl_platform_id platform, cl_device_id device, + cl_int *error) { int res = 0; - char * name = NULL; + char *name = NULL; - OCLERROR_PAR(name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), *error, nam); + OCLERROR_PAR( + name = cl_util_get_platform_info(platform, CL_PLATFORM_VERSION, error), + *error, nam); - if (strstr(name, "OpenCL 3.")) { + if (strstr(name, "OpenCL 3.")) + { free(name); - OCLERROR_PAR(name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, error), *error, nam); - if (strstr(name, "cl_khr_subgroups")) - res = 3; + OCLERROR_PAR( + name = cl_util_get_device_info(device, CL_DEVICE_EXTENSIONS, error), + *error, nam); + if (strstr(name, "cl_khr_subgroups")) res = 3; } -nam: free(name); +nam: + free(name); return res; } -cl_int min_op(cl_int x, cl_int y) -{ - return x < y ? x : y; -} +cl_int min_op(cl_int x, cl_int y) { return x < y ? x : y; } -cl_int plus_op(cl_int x, cl_int y) -{ - return x + y; -} +cl_int plus_op(cl_int x, cl_int y) { return x + y; } -cl_int accumulate(cl_int * arr, size_t len, cl_int zero_elem, cl_int (*host_op)(cl_int, cl_int)) +cl_int accumulate(cl_int *arr, size_t len, cl_int zero_elem, + cl_int (*host_op)(cl_int, cl_int)) { cl_int res = zero_elem; - for (size_t i = len; i > 0; res = (*host_op)(res, arr[--i])); + for (size_t i = len; i > 0; res = (*host_op)(res, arr[--i])) + ; return res; } @@ -204,46 +242,66 @@ size_t global(const size_t actual, const cl_ulong factor, const size_t wgs) // Random number generator state pcg32_random_t rng; -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - cl_int error = CL_SUCCESS, - end_error = CL_SUCCESS; + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; cl_platform_id platform; cl_device_id device; cl_context context; cl_command_queue queue; // Parse command-line options - struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; - struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, + .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { + .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } + }; struct options_Reduce reduce_opts = { .length = 1048576, .op = "min" }; - OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &reduce_opts), error, end); + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &reduce_opts), + error, end); // Create runtime objects based on user preference or default OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, - dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); - OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); + dev_opts.triplet.dev_index, + dev_opts.triplet.dev_type, &error), + error, end); + OCLERROR_PAR(context = + clCreateContext(NULL, 1, &device, NULL, NULL, &error), + error, end); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, + sizeof(cl_platform_id), &platform, NULL), + error, cont); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_command_queue_properties props[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, props, &error), error, cont); + cl_command_queue_properties props[] = { CL_QUEUE_PROPERTIES, + CL_QUEUE_PROFILING_ENABLE, 0 }; + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, + props, &error), + error, cont); #else - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); + OCLERROR_PAR(queue = clCreateCommandQueue( + context, device, CL_QUEUE_PROFILING_ENABLE, &error), + error, cont); #endif - if (!diag_opts.quiet) { + if (!diag_opts.quiet) + { cl_util_print_device_info(device); } // Query device and runtime capabilities int may_use_work_group_reduce; - OCLERROR_PAR(may_use_work_group_reduce = check_use_work_group_reduce(platform, device, &error), error, que); + OCLERROR_PAR(may_use_work_group_reduce = + check_use_work_group_reduce(platform, device, &error), + error, que); int may_use_sub_group_reduce; - OCLERROR_PAR(may_use_sub_group_reduce = check_use_sub_group_reduce(platform, device, &error), error, que); + OCLERROR_PAR(may_use_sub_group_reduce = + check_use_sub_group_reduce(platform, device, &error), + error, que); - if (diag_opts.verbose) { + if (diag_opts.verbose) + { if (may_use_work_group_reduce) printf("Device supports work-group reduction intrinsics.\n"); else if (may_use_sub_group_reduce) @@ -254,38 +312,48 @@ int main(int argc, char* argv[]) // User defined input char kernel_op[1023] = ""; - strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? - "int op(int lhs, int rhs) { return min(lhs, rhs); }\n": - "int op(int lhs, int rhs) { return lhs + rhs; }\n"); + strcat(kernel_op, + !strcmp(reduce_opts.op, "min") + ? "int op(int lhs, int rhs) { return min(lhs, rhs); }\n" + : "int op(int lhs, int rhs) { return lhs + rhs; }\n"); if (may_use_work_group_reduce) - strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? - "int work_group_reduce_op(int val) { return work_group_reduce_min(val); }\n": - "int work_group_reduce_op(int val) { return work_group_reduce_add(val); }\n"); + strcat(kernel_op, + !strcmp(reduce_opts.op, "min") + ? "int work_group_reduce_op(int val) { return " + "work_group_reduce_min(val); }\n" + : "int work_group_reduce_op(int val) { return " + "work_group_reduce_add(val); }\n"); else if (may_use_sub_group_reduce) - strcat(kernel_op, !strcmp(reduce_opts.op, "min") ? - "int sub_group_reduce_op(int val) { return sub_group_reduce_min(val); }\n": - "int sub_group_reduce_op(int val) { return sub_group_reduce_add(val); }\n"); + strcat(kernel_op, + !strcmp(reduce_opts.op, "min") + ? "int sub_group_reduce_op(int val) { return " + "sub_group_reduce_min(val); }\n" + : "int sub_group_reduce_op(int val) { return " + "sub_group_reduce_add(val); }\n"); cl_int (*host_op)(cl_int, cl_int) = !strcmp(reduce_opts.op, "min") ? &min_op : &plus_op; - cl_int zero_elem = - !strcmp(reduce_opts.op, "min") ? CL_INT_MAX : 0; + cl_int zero_elem = !strcmp(reduce_opts.op, "min") ? CL_INT_MAX : 0; // Compile kernel - const char * kernel_location = "./reduce.cl"; - char * kernel = NULL, * tmp = NULL; + const char *kernel_location = "./reduce.cl"; + char *kernel = NULL, *tmp = NULL; size_t program_size = 0; cl_program program = NULL; - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); + OCLERROR_PAR( + kernel = cl_util_read_text_file(kernel_location, &program_size, &error), + error, que); // Note append of definitions program_size += 1 + strlen(kernel_op); MEM_CHECK(tmp = (char *)realloc(kernel, program_size), error, ker); strcat(tmp, kernel_op); kernel = tmp; - //printf("%s", kernel); + // printf("%s", kernel); - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); + OCLERROR_PAR(program = clCreateProgramWithSource( + context, 1, (const char **)&kernel, &program_size, &error), + error, ker); kernel_op[0] = '\0'; if (may_use_work_group_reduce == 2) strcat(kernel_op, "-D USE_WORK_GROUP_REDUCE -cl-std=CL2.0 "); @@ -297,20 +365,31 @@ int main(int argc, char* argv[]) OCLERROR_RET(cl_util_build_program(program, device, kernel_op), error, prg); cl_kernel reduce; - OCLERROR_PAR(reduce = clCreateKernel(program, "reduce", &error), error, prg); + OCLERROR_PAR(reduce = clCreateKernel(program, "reduce", &error), error, + prg); - // Query maximum supported WGS of kernel on device based on private mem (register) constraints + // Query maximum supported WGS of kernel on device based on private mem + // (register) constraints size_t wgs, psm; - OCLERROR_RET(clGetKernelWorkGroupInfo(reduce, device, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wgs, NULL), error, red); - OCLERROR_RET(clGetKernelWorkGroupInfo(reduce, device, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, sizeof(size_t), &psm, NULL), error, red); + OCLERROR_RET(clGetKernelWorkGroupInfo(reduce, device, + CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &wgs, NULL), + error, red); + OCLERROR_RET( + clGetKernelWorkGroupInfo(reduce, device, + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, + sizeof(size_t), &psm, NULL), + error, red); // Further constrain (reduce) WGS based on shared mem size on device cl_ulong loc_mem; - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, sizeof(cl_ulong), &loc_mem, NULL), error, red); - while (loc_mem < wgs * 2 * sizeof(cl_int)) - wgs -= psm; + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_LOCAL_MEM_SIZE, + sizeof(cl_ulong), &loc_mem, NULL), + error, red); + while (loc_mem < wgs * 2 * sizeof(cl_int)) wgs -= psm; - if (wgs == 0) { + if (wgs == 0) + { printf("Not enough local memory to serve a single sub-group.\n"); error = CL_OUT_OF_RESOURCES; goto red; @@ -322,7 +401,7 @@ int main(int argc, char* argv[]) const size_t length = reduce_opts.length; pcg32_srandom_r(&rng, 11111, -2222); - cl_int * arr; + cl_int *arr; MEM_CHECK(arr = (cl_int *)malloc(sizeof(cl_int) * length), error, red); if (diag_opts.verbose) @@ -331,41 +410,59 @@ int main(int argc, char* argv[]) // Initialize device-side storage cl_mem front, back; - OCLERROR_PAR(front = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, sizeof(cl_int) * length, arr, &error), error, harr); - OCLERROR_PAR(back = clCreateBuffer(context, CL_MEM_READ_WRITE, sizeof(cl_int) * new_size(length, factor), NULL, &error), error, buff); + OCLERROR_PAR(front = clCreateBuffer( + context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, + sizeof(cl_int) * length, arr, &error), + error, harr); + OCLERROR_PAR(back = clCreateBuffer( + context, CL_MEM_READ_WRITE, + sizeof(cl_int) * new_size(length, factor), NULL, &error), + error, buff); // Launch kernels - if (diag_opts.verbose) { + if (diag_opts.verbose) + { printf("Executing on device... "); fflush(stdout); } cl_ulong curr = length; cl_uint steps = 0; - while (curr > 1) { + while (curr > 1) + { curr = new_size(curr, factor); ++steps; } - cl_event * passes = NULL, * pass = NULL; - MEM_CHECK(passes = (cl_event *)malloc(sizeof(cl_event) * steps), error, bufb); + cl_event *passes = NULL, *pass = NULL; + MEM_CHECK(passes = (cl_event *)malloc(sizeof(cl_event) * steps), error, + bufb); - OCLERROR_RET(clSetKernelArg(reduce, 2, factor * sizeof(cl_int), NULL), error, pas); - OCLERROR_RET(clSetKernelArg(reduce, 4, sizeof(cl_int), &zero_elem), error, pas); + OCLERROR_RET(clSetKernelArg(reduce, 2, factor * sizeof(cl_int), NULL), + error, pas); + OCLERROR_RET(clSetKernelArg(reduce, 4, sizeof(cl_int), &zero_elem), error, + pas); GET_CURRENT_TIMER(dev_start) curr = length; pass = passes; - while (curr > 1) { - OCLERROR_RET(clSetKernelArg(reduce, 0, sizeof(cl_mem), &front), error, pas); - OCLERROR_RET(clSetKernelArg(reduce, 1, sizeof(cl_mem), &back), error, pas); - OCLERROR_RET(clSetKernelArg(reduce, 3, sizeof(cl_ulong), &curr), error, pas); + while (curr > 1) + { + OCLERROR_RET(clSetKernelArg(reduce, 0, sizeof(cl_mem), &front), error, + pas); + OCLERROR_RET(clSetKernelArg(reduce, 1, sizeof(cl_mem), &back), error, + pas); + OCLERROR_RET(clSetKernelArg(reduce, 3, sizeof(cl_ulong), &curr), error, + pas); size_t gl = global(curr, factor, wgs); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, reduce, 1, NULL, &gl, &wgs, 0, NULL, pass), error, pas); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, reduce, 1, NULL, &gl, &wgs, + 0, NULL, pass), + error, pas); curr = new_size(curr, factor); ++pass; - if (curr > 1) { + if (curr > 1) + { cl_mem tmp = front; front = back; back = tmp; @@ -377,8 +474,7 @@ int main(int argc, char* argv[]) GET_CURRENT_TIMER(dev_end) cl_ulong dev_time; TIMER_DIFFERENCE(dev_time, dev_start, dev_end) - if (diag_opts.verbose) - printf("done.\n\n"); + if (diag_opts.verbose) printf("done.\n\n"); // calculate reference dataset GET_CURRENT_TIMER(host_start) @@ -389,32 +485,56 @@ int main(int argc, char* argv[]) // Fetch results cl_int dev_res; - OCLERROR_RET(clEnqueueReadBuffer(queue, back, CL_BLOCKING, 0, sizeof(cl_int), (void *)&dev_res, 0, NULL, NULL), error, pas); + OCLERROR_RET(clEnqueueReadBuffer(queue, back, CL_BLOCKING, 0, + sizeof(cl_int), (void *)&dev_res, 0, NULL, + NULL), + error, pas); // Validate if (dev_res != seq_ref) - fprintf(stderr, "Sequential reference: %i\nDevice result: %i\nValidation failed!\n\n", seq_ref, dev_res); + fprintf(stderr, + "Sequential reference: %i\nDevice result: %i\nValidation " + "failed!\n\n", + seq_ref, dev_res); else printf("Validation passed!\n\n"); - if (!diag_opts.quiet) { - printf("Total device execution as seen by host: %llu us.\n", (unsigned long long)(dev_time + 500) / 1000); + if (!diag_opts.quiet) + { + printf("Total device execution as seen by host: %llu us.\n", + (unsigned long long)(dev_time + 500) / 1000); printf("Reduction steps as measured by device :\n"); for (size_t i = 0; i < steps; ++i) - printf("\t%llu us.\n", (unsigned long long)(cl_util_get_event_duration(passes[i], - CL_PROFILING_COMMAND_START, CL_PROFILING_COMMAND_END, &error) + 500) / 1000); - printf("Reference execution as seen by host: %llu us.", (unsigned long long)(host_time + 500) / 1000); + printf( + "\t%llu us.\n", + (unsigned long long)(cl_util_get_event_duration( + passes[i], CL_PROFILING_COMMAND_START, + CL_PROFILING_COMMAND_END, &error) + + 500) + / 1000); + printf("Reference execution as seen by host: %llu us.", + (unsigned long long)(host_time + 500) / 1000); } -pas: free(passes); -bufb: OCLERROR_RET(clReleaseMemObject(back), end_error, buff); -buff: OCLERROR_RET(clReleaseMemObject(front), end_error, harr); -harr: free(arr); -red: OCLERROR_RET(clReleaseKernel(reduce), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); -ker: free(kernel); -que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); -cont: OCLERROR_RET(clReleaseContext(context), end_error, end); -end: if (error) cl_util_print_error(error); +pas: + free(passes); +bufb: + OCLERROR_RET(clReleaseMemObject(back), end_error, buff); +buff: + OCLERROR_RET(clReleaseMemObject(front), end_error, harr); +harr: + free(arr); +red: + OCLERROR_RET(clReleaseKernel(reduce), end_error, prg); +prg: + OCLERROR_RET(clReleaseProgram(program), end_error, ker); +ker: + free(kernel); +que: + OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); +cont: + OCLERROR_RET(clReleaseContext(context), end_error, end); +end: + if (error) cl_util_print_error(error); return error; } diff --git a/samples/core/reduce/main.cpp b/samples/core/reduce/main.cpp index a06ea0c9..cfa5361a 100644 --- a/samples/core/reduce/main.cpp +++ b/samples/core/reduce/main.cpp @@ -27,35 +27,42 @@ #include #include #include -#include // std::make_tuple -#include // std::accumulate +#include // std::make_tuple +#include // std::accumulate // TCLAP includes #include // Sample-specific option -struct ReduceOptions { +struct ReduceOptions +{ size_t length; std::string op; }; +std::unique_ptr> valid_op_constraint; + // Add option to CLI parsing SDK utility -template <> auto cl::sdk::parse(){ +template <> auto cl::sdk::parse() +{ std::vector valid_op_strings{ "min", "sum" }; - TCLAP::ValuesConstraint valid_op_constraint{ valid_op_strings }; + valid_op_constraint = + std::make_unique>( + valid_op_strings); - return std::make_tuple( - std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral"), - std::make_shared>("o", "op", "Operation to perform", false, "min", &valid_op_constraint) - ); + return std::make_tuple(std::make_shared>( + "l", "length", "Length of input", false, + 1'048'576, "positive integral"), + std::make_shared>( + "o", "op", "Operation to perform", false, "min", + valid_op_constraint.get())); } -template <> ReduceOptions cl::sdk::comprehend( +template <> +ReduceOptions cl::sdk::comprehend( std::shared_ptr> length_arg, - std::shared_ptr> op_arg){ - return ReduceOptions{ - length_arg->getValue(), - op_arg->getValue() - }; + std::shared_ptr> op_arg) +{ + return ReduceOptions{ length_arg->getValue(), op_arg->getValue() }; } @@ -64,160 +71,195 @@ int main(int argc, char* argv[]) try { // Parse command-line options - auto opts = cl::sdk::parse_cli< - cl::sdk::options::Diagnostic, - cl::sdk::options::SingleDevice, - ReduceOptions>(argc, argv); - const auto& diag_opts = std::get<0>(opts); - const auto& dev_opts = std::get<1>(opts); + auto opts = + cl::sdk::parse_cli( + argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); const auto& reduce_opts = std::get<2>(opts); // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); - cl::CommandQueue queue{ context, device, cl::QueueProperties::Profiling }; - cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + cl::CommandQueue queue{ context, device, + cl::QueueProperties::Profiling }; + cl::Platform platform{ + device.getInfo() + }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 if (!diag_opts.quiet) - std::cout << - "Selected platform: " << platform.getInfo() << "\n" << - "Selected device: " << device.getInfo() << "\n" << - std::endl; + std::cout << "Selected platform: " + << platform.getInfo() << "\n" + << "Selected device: " << device.getInfo() + << "\n" + << std::endl; // Query device and runtime capabilities - auto highest_device_opencl_c_is_2_x = cl::util::opencl_c_version_contains(device, "2."); - auto highest_device_opencl_c_is_3_x = cl::util::opencl_c_version_contains(device, "3."); + auto highest_device_opencl_c_is_2_x = + cl::util::opencl_c_version_contains(device, "2."); + auto highest_device_opencl_c_is_3_x = + cl::util::opencl_c_version_contains(device, "3."); auto may_use_work_group_reduce = [&]() // IILE { if (cl::util::platform_version_contains(platform, "2.")) return highest_device_opencl_c_is_2_x; else if (cl::util::platform_version_contains(platform, "3.")) - return device.getInfo() && - cl::util::supports_feature(device, "__opencl_c_work_group_collective_functions"); + return device.getInfo< + CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT>() + && cl::util::supports_feature( + device, + "__opencl_c_work_group_collective_functions"); else return false; }(); - auto may_use_sub_group_reduce = cl::util::supports_extension(device, "cl_khr_subgroups"); + auto may_use_sub_group_reduce = + cl::util::supports_extension(device, "cl_khr_subgroups"); if (diag_opts.verbose) { if (may_use_work_group_reduce) - std::cout << "Device supports work-group reduction intrinsics." << std::endl; + std::cout << "Device supports work-group reduction intrinsics." + << std::endl; else if (may_use_sub_group_reduce) - std::cout << "Device supports sub-group reduction intrinsics." << std::endl; + std::cout << "Device supports sub-group reduction intrinsics." + << std::endl; else - std::cout << "Device doesn't support any reduction intrinsics." << std::endl; + std::cout << "Device doesn't support any reduction intrinsics." + << std::endl; } // User defined input - std::string kernel_op = reduce_opts.op == "min" ? - "int op(int lhs, int rhs) { return min(lhs, rhs); }\n": - "int op(int lhs, int rhs) { return lhs + rhs; }\n"; + std::string kernel_op = reduce_opts.op == "min" + ? "int op(int lhs, int rhs) { return min(lhs, rhs); }\n" + : "int op(int lhs, int rhs) { return lhs + rhs; }\n"; if (may_use_work_group_reduce) - kernel_op += reduce_opts.op == "min" ? - "int work_group_reduce_op(int val) { return work_group_reduce_min(val); }": - "int work_group_reduce_op(int val) { return work_group_reduce_add(val); }"; + kernel_op += reduce_opts.op == "min" + ? "int work_group_reduce_op(int val) { return " + "work_group_reduce_min(val); }" + : "int work_group_reduce_op(int val) { return " + "work_group_reduce_add(val); }"; else if (may_use_sub_group_reduce) - kernel_op += reduce_opts.op == "min" ? - "int sub_group_reduce_op(int val) { return sub_group_reduce_min(val); }": - "int sub_group_reduce_op(int val) { return sub_group_reduce_add(val); }"; - auto host_op = reduce_opts.op == "min" ? - std::function{ [](int lhs, int rhs){ return std::min(lhs, rhs); } } : - std::function{ std::plus{} }; - auto zero_elem = reduce_opts.op == "min" ? - std::numeric_limits().max() : - static_cast(0); + kernel_op += reduce_opts.op == "min" + ? "int sub_group_reduce_op(int val) { return " + "sub_group_reduce_min(val); }" + : "int sub_group_reduce_op(int val) { return " + "sub_group_reduce_add(val); }"; + auto host_op = reduce_opts.op == "min" + ? std::function{ [](int lhs, int rhs) { + return std::min(lhs, rhs); + } } + : std::function{ std::plus{} }; + auto zero_elem = reduce_opts.op == "min" + ? std::numeric_limits().max() + : static_cast(0); // Compile kernel const char* kernel_location = "./reduce.cl"; std::ifstream kernel_stream{ kernel_location }; if (!kernel_stream.is_open()) - throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + throw std::runtime_error{ + std::string{ "Cannot open kernel source: " } + kernel_location + }; - cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, - std::istreambuf_iterator{} }.append(kernel_op) }; // Note append + cl::Program program{ context, + std::string{ std::istreambuf_iterator{ + kernel_stream }, + std::istreambuf_iterator{} } + .append(kernel_op) }; // Note append cl::string compiler_options = - cl::string{may_use_work_group_reduce ? "-D USE_WORK_GROUP_REDUCE " : "" } + - cl::string{highest_device_opencl_c_is_2_x ? "-cl-std=CL2.0 " : "" } + - cl::string{highest_device_opencl_c_is_3_x ? "-cl-std=CL3.0 " : "" } + - cl::string{may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " : "" }; - program.build( device, compiler_options.c_str() ); + cl::string{ may_use_work_group_reduce ? "-D USE_WORK_GROUP_REDUCE " + : "" } + + cl::string{ highest_device_opencl_c_is_2_x ? "-cl-std=CL2.0 " + : "" } + + cl::string{ highest_device_opencl_c_is_3_x ? "-cl-std=CL3.0 " + : "" } + + cl::string{ may_use_sub_group_reduce ? "-D USE_SUB_GROUP_REDUCE " + : "" }; + program.build(device, compiler_options.c_str()); - auto reduce = cl::KernelFunctor(program, "reduce"); + auto reduce = + cl::KernelFunctor(program, "reduce"); - // Query maximum supported WGS of kernel on device based on private mem (register) constraints - auto wgs = reduce.getKernel().getWorkGroupInfo(device); + // Query maximum supported WGS of kernel on device based on private mem + // (register) constraints + auto wgs = + reduce.getKernel().getWorkGroupInfo( + device); // Further constrain (reduce) WGS based on shared mem size on device - while (device.getInfo() < wgs * 2 * sizeof(cl_int)) - wgs -= reduce.getKernel().getWorkGroupInfo(device); + while (device.getInfo() + < wgs * 2 * sizeof(cl_int)) + wgs -= + reduce.getKernel() + .getWorkGroupInfo< + CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE>(device); - if (wgs == 0) throw std::runtime_error{"Not enough local memory to serve a single sub-group."}; + if (wgs == 0) + throw std::runtime_error{ + "Not enough local memory to serve a single sub-group." + }; cl_ulong factor = wgs * 2; // Every pass reduces input length by 'factor'. // If actual size is not divisible by factor, // an extra output element is produced using some // number of zero_elem inputs. - auto new_size = [factor](const cl_ulong actual) - { + auto new_size = [factor](const cl_ulong actual) { return actual / factor + (actual % factor == 0 ? 0 : 1); }; // NOTE: because one work-group produces one output // new_size == number_of_work_groups - auto global = [=](const std::size_t actual){ return new_size(actual) * wgs; }; + auto global = [=](const std::size_t actual) { + return new_size(actual) * wgs; + }; // Initialize host-side storage const auto length = reduce_opts.length; auto prng = [engine = std::default_random_engine{}, - dist = std::uniform_int_distribution{ -1000, 1000 }]() mutable { - return dist(engine); - }; + dist = std::uniform_int_distribution{ + -1000, 1000 }]() mutable { return dist(engine); }; std::vector arr(length); if (diag_opts.verbose) - std::cout << "Generating " << length << " random numbers for reduction." << std::endl; + std::cout << "Generating " << length + << " random numbers for reduction." << std::endl; cl::sdk::fill_with_random(prng, arr); // Initialize device-side storage cl::Buffer front{ queue, std::begin(arr), std::end(arr), false }, - back{ context, CL_MEM_READ_WRITE, static_cast(new_size(arr.size()) * sizeof(cl_int)) }; + back{ context, CL_MEM_READ_WRITE, + static_cast(new_size(arr.size()) + * sizeof(cl_int)) }; // Launch kernels if (diag_opts.verbose) - { std::cout << "Executing on device... "; std::cout.flush(); } + { + std::cout << "Executing on device... "; + std::cout.flush(); + } std::vector passes; cl_ulong curr = static_cast(arr.size()); auto dev_start = std::chrono::high_resolution_clock::now(); - while ( curr > 1 ) + while (curr > 1) { - passes.push_back( - reduce( - cl::EnqueueArgs{ - queue, - global(curr), - wgs - }, - front, - back, - cl::Local(factor * sizeof(cl_int)), - curr, - zero_elem - ) - ); + passes.push_back(reduce( + cl::EnqueueArgs{ queue, (size_t)global(curr), wgs }, front, + back, cl::Local(factor * sizeof(cl_int)), curr, zero_elem)); curr = static_cast(new_size(curr)); if (curr > 1) std::swap(front, back); } cl::WaitForEvents(passes); auto dev_end = std::chrono::high_resolution_clock::now(); - if (diag_opts.verbose) - std::cout << "done." << std::endl; + if (diag_opts.verbose) std::cout << "done." << std::endl; // calculate reference dataset auto host_start = std::chrono::high_resolution_clock::now(); - auto seq_ref = std::accumulate(arr.cbegin(), arr.cend(), zero_elem, host_op); + auto seq_ref = + std::accumulate(arr.cbegin(), arr.cend(), zero_elem, host_op); auto host_end = std::chrono::high_resolution_clock::now(); // Fetch results @@ -234,34 +276,46 @@ int main(int argc, char* argv[]) if (!diag_opts.quiet) { - std::cout << "Total device execution as seen by host: " << std::chrono::duration_cast(dev_end - dev_start).count() << " us." << std::endl; + std::cout << "Total device execution as seen by host: " + << std::chrono::duration_cast( + dev_end - dev_start) + .count() + << " us." << std::endl; std::cout << "Reduction steps as measured by device :\n"; for (auto& pass : passes) - std::cout << "\t" << cl::util::get_duration(pass).count() << " us." << std::endl; - std::cout << "Reference execution as seen by host : " << std::chrono::duration_cast(host_end - host_start).count() << " us." << std::endl; + std::cout << "\t" + << cl::util::get_duration( + pass) + .count() + << " us." << std::endl; + std::cout << "Reference execution as seen by host : " + << std::chrono::duration_cast( + host_end - host_start) + .count() + << " us." << std::endl; } - } - catch(cl::util::Error& e) + } catch (cl::util::Error& e) { std::cerr << "OpenCL Utils error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(cl::BuildError& e) + } catch (cl::BuildError& e) { std::cerr << "OpenCL runtime error: " << e.what() << std::endl; for (auto& build_log : e.getBuildLog()) { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << "\tBuild log for device: " + << build_log.first.getInfo() << "\n" + << std::endl; std::cerr << build_log.second << "\n" << std::endl; } std::exit(e.err()); - } - catch(cl::Error& e) + } catch (cl::Error& e) { std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(std::exception& e) + } catch (std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; std::exit(EXIT_FAILURE); diff --git a/samples/core/saxpy/CMakeLists.txt b/samples/core/saxpy/CMakeLists.txt index 33494368..e4c3c6bb 100644 --- a/samples/core/saxpy/CMakeLists.txt +++ b/samples/core/saxpy/CMakeLists.txt @@ -16,11 +16,12 @@ add_sample( TEST TARGET saxpy VERSION 120 - SOURCES main.c) + SOURCES main.c + KERNELS saxpy.cl) add_sample( TEST - TARGET cppsaxpy + TARGET saxpycpp VERSION 120 SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR}) + KERNELS saxpy.cl) diff --git a/samples/core/saxpy/main.c b/samples/core/saxpy/main.c index 7734582d..13804439 100644 --- a/samples/core/saxpy/main.c +++ b/samples/core/saxpy/main.c @@ -20,51 +20,62 @@ #include // STL includes -#include -#include -#include -#include +#include +#include +#include +#include // Sample-specific option -struct options_Saxpy { size_t length; }; - -cag_option SaxpyOptions[] = { - {.identifier = 'l', - .access_letters = "l", - .access_name = "length", - .value_name = "(positive integer)", - .description = "Length of input"} +struct options_Saxpy +{ + size_t length; }; -ParseState parse_SaxpyOptions(const char identifier, cag_option_context * cag_context, struct options_Saxpy * opts) +cag_option SaxpyOptions[] = { { .identifier = 'l', + .access_letters = "l", + .access_name = "length", + .value_name = "(positive integer)", + .description = "Length of input" } }; + +ParseState parse_SaxpyOptions(const char identifier, + cag_option_context *cag_context, + struct options_Saxpy *opts) { - const char * value; - switch (identifier) { - case 'l': - if ((value = cag_option_get_value(cag_context))) { - opts->length = strtoul(value, NULL, 0); - return ParsedOK; - } - else return ParseError; + const char *value; + switch (identifier) + { + case 'l': + if ((value = cag_option_get_value(cag_context))) + { + opts->length = strtoul(value, NULL, 0); + return ParsedOK; + } + else + return ParseError; } return NotParsed; } -cl_int parse_options(int argc, - char* argv[], - struct cl_sdk_options_Diagnostic * diag_opts, - struct cl_sdk_options_SingleDevice * dev_opts, - struct options_Saxpy * saxpy_opts) +cl_int parse_options(int argc, char *argv[], + struct cl_sdk_options_Diagnostic *diag_opts, + struct cl_sdk_options_SingleDevice *dev_opts, + struct options_Saxpy *saxpy_opts) { cl_int error = CL_SUCCESS; - struct cag_option * opts = NULL, * tmp = NULL; + struct cag_option *opts = NULL, *tmp = NULL; size_t n = 0; /* Prepare all options array. */ - MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, CAG_ARRAY_SIZE(DiagnosticOptions)), error, end); - MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, CAG_ARRAY_SIZE(SingleDeviceOptions)), error, end); + MEM_CHECK(opts = add_CLI_options(opts, &n, DiagnosticOptions, + CAG_ARRAY_SIZE(DiagnosticOptions)), + error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SingleDeviceOptions, + CAG_ARRAY_SIZE(SingleDeviceOptions)), + error, end); opts = tmp; - MEM_CHECK(tmp = add_CLI_options(opts, &n, SaxpyOptions, CAG_ARRAY_SIZE(SaxpyOptions)), error, end); + MEM_CHECK(tmp = add_CLI_options(opts, &n, SaxpyOptions, + CAG_ARRAY_SIZE(SaxpyOptions)), + error, end); opts = tmp; char identifier; @@ -72,15 +83,20 @@ cl_int parse_options(int argc, /* Prepare the context and iterate over all options. */ cag_option_prepare(&cag_context, opts, n, argc, argv); - while (cag_option_fetch(&cag_context)) { + while (cag_option_fetch(&cag_context)) + { ParseState state = NotParsed; identifier = cag_option_get(&cag_context); PARS_OPTIONS(parse_DiagnosticOptions(identifier, diag_opts), state); - PARS_OPTIONS(parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), state); - PARS_OPTIONS(parse_SaxpyOptions(identifier, &cag_context, saxpy_opts), state); - - if (identifier == 'h') { + PARS_OPTIONS( + parse_SingleDeviceOptions(identifier, &cag_context, dev_opts), + state); + PARS_OPTIONS(parse_SaxpyOptions(identifier, &cag_context, saxpy_opts), + state); + + if (identifier == 'h') + { printf("Usage: saxpy [OPTION]...\n"); printf("Demonstrates typical OpenCL application layout.\n\n"); cag_option_print(opts, n, stdout); @@ -88,54 +104,74 @@ cl_int parse_options(int argc, } } -end: free(opts); +end: + free(opts); return error; } // Random number generator state pcg32_random_t rng; -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - cl_int error = CL_SUCCESS, - end_error = CL_SUCCESS; + cl_int error = CL_SUCCESS, end_error = CL_SUCCESS; cl_platform_id platform; cl_device_id device; cl_context context; cl_command_queue queue; - const char * kernel_location = "./saxpy.cl"; - char * kernel = NULL; + const char *kernel_location = "./saxpy.cl"; + char *kernel = NULL; size_t program_size = 0; cl_program program = NULL; // Parse command-line options - struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, .verbose = false }; - struct cl_sdk_options_SingleDevice dev_opts = { .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } }; + struct cl_sdk_options_Diagnostic diag_opts = { .quiet = false, + .verbose = false }; + struct cl_sdk_options_SingleDevice dev_opts = { + .triplet = { 0, 0, CL_DEVICE_TYPE_ALL } + }; struct options_Saxpy saxpy_opts = { .length = 1048576 }; - OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), error, end); + OCLERROR_RET(parse_options(argc, argv, &diag_opts, &dev_opts, &saxpy_opts), + error, end); // Create runtime objects based on user preference or default OCLERROR_PAR(device = cl_util_get_device(dev_opts.triplet.plat_index, - dev_opts.triplet.dev_index, dev_opts.triplet.dev_type, &error), error, end); - OCLERROR_PAR(context = clCreateContext(NULL, 1, &device, NULL, NULL, &error), error, end); - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, 0, &error), error, cont); - OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &platform, NULL), error, cont); + dev_opts.triplet.dev_index, + dev_opts.triplet.dev_type, &error), + error, end); + OCLERROR_PAR(context = + clCreateContext(NULL, 1, &device, NULL, NULL, &error), + error, end); + OCLERROR_PAR(queue = clCreateCommandQueue(context, device, 0, &error), + error, cont); + OCLERROR_RET(clGetDeviceInfo(device, CL_DEVICE_PLATFORM, + sizeof(cl_platform_id), &platform, NULL), + error, cont); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, NULL, &error), error, cont); + OCLERROR_PAR(queue = clCreateCommandQueueWithProperties(context, device, + NULL, &error), + error, cont); #else - OCLERROR_PAR(queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE, &error), error, cont); + OCLERROR_PAR(queue = clCreateCommandQueue( + context, device, CL_QUEUE_PROFILING_ENABLE, &error), + error, cont); #endif - if (!diag_opts.quiet) { + if (!diag_opts.quiet) + { cl_util_print_device_info(device); } // Compile kernel - OCLERROR_PAR(kernel = cl_util_read_text_file(kernel_location, &program_size, &error), error, que); + OCLERROR_PAR( + kernel = cl_util_read_text_file(kernel_location, &program_size, &error), + error, que); - OCLERROR_PAR(program = clCreateProgramWithSource(context, 1, (const char **)&kernel, &program_size, &error), error, ker); + OCLERROR_PAR(program = clCreateProgramWithSource( + context, 1, (const char **)&kernel, &program_size, &error), + error, ker); OCLERROR_RET(cl_util_build_program(program, device, NULL), error, prg); cl_kernel saxpy; @@ -145,9 +181,11 @@ int main(int argc, char* argv[]) const size_t length = saxpy_opts.length; pcg32_srandom_r(&rng, 111111, -222); - cl_float * arr_x, * arr_y, a; - MEM_CHECK(arr_x = (cl_float *)malloc(sizeof(cl_float) * length), error, sxp); - MEM_CHECK(arr_y = (cl_float *)malloc(sizeof(cl_float) * length), error, arrx); + cl_float *arr_x, *arr_y, a; + MEM_CHECK(arr_x = (cl_float *)malloc(sizeof(cl_float) * length), error, + sxp); + MEM_CHECK(arr_y = (cl_float *)malloc(sizeof(cl_float) * length), error, + arrx); cl_sdk_fill_with_random_floats_range(&rng, &a, 1, -100, 100); cl_sdk_fill_with_random_floats_range(&rng, arr_x, length, -100, 100); @@ -155,43 +193,66 @@ int main(int argc, char* argv[]) // Initialize device-side storage cl_mem buf_x, buf_y; - OCLERROR_PAR(buf_x = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(cl_float) * length, arr_x, &error), error, arry); - OCLERROR_PAR(buf_y = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, sizeof(cl_float) * length, arr_y, &error), error, bufx); + OCLERROR_PAR( + buf_x = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + sizeof(cl_float) * length, arr_x, &error), + error, arry); + OCLERROR_PAR(buf_y = clCreateBuffer( + context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, + sizeof(cl_float) * length, arr_y, &error), + error, bufx); // Execute kernel OCLERROR_RET(clSetKernelArg(saxpy, 0, sizeof(cl_float), &a), error, bufy); OCLERROR_RET(clSetKernelArg(saxpy, 1, sizeof(cl_mem), &buf_x), error, bufy); OCLERROR_RET(clSetKernelArg(saxpy, 2, sizeof(cl_mem), &buf_y), error, bufy); - OCLERROR_RET(clEnqueueNDRangeKernel(queue, saxpy, 1, NULL, &length, NULL, 0, NULL, NULL), error, bufy); + OCLERROR_RET(clEnqueueNDRangeKernel(queue, saxpy, 1, NULL, &length, NULL, 0, + NULL, NULL), + error, bufy); // Concurrently calculate reference dataset for (size_t i = 0; i < length; ++i) - arr_y[i] = fmaf(a, arr_x[i], arr_y[i]);//arr_y[i] = a * arr_x[i] + arr_y[i]; + arr_y[i] = + fmaf(a, arr_x[i], arr_y[i]); // arr_y[i] = a * arr_x[i] + arr_y[i]; // Fetch results - OCLERROR_RET(clEnqueueReadBuffer(queue, buf_y, CL_BLOCKING, 0, sizeof(cl_float) * length, (void *)arr_x, 0, NULL, NULL), error, bufy); + OCLERROR_RET(clEnqueueReadBuffer(queue, buf_y, CL_BLOCKING, 0, + sizeof(cl_float) * length, (void *)arr_x, + 0, NULL, NULL), + error, bufy); // Validate for (size_t i = 0; i < length; ++i) - if (arr_y[i] != arr_x[i]) { - printf("Verification failed! %f != %f at index %zu\n", arr_y[i], arr_x[i], i); + if (arr_y[i] != arr_x[i]) + { + printf("Verification failed! %f != %f at index %zu\n", arr_y[i], + arr_x[i], i); error = CL_INVALID_VALUE; if (!diag_opts.verbose) goto bufy; } - if (error == CL_SUCCESS) - printf("Verification passed.\n"); + if (error == CL_SUCCESS) printf("Verification passed.\n"); // Release resources -bufy: OCLERROR_RET(clReleaseMemObject(buf_y), end_error, bufx); -bufx: OCLERROR_RET(clReleaseMemObject(buf_x), end_error, arry); -arry: free(arr_y); -arrx: free(arr_x); -sxp: OCLERROR_RET(clReleaseKernel(saxpy), end_error, prg); -prg: OCLERROR_RET(clReleaseProgram(program), end_error, ker); -ker: free(kernel); -que: OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); -cont: OCLERROR_RET(clReleaseContext(context), end_error, end); -end: if (error) cl_util_print_error(error); +bufy: + OCLERROR_RET(clReleaseMemObject(buf_y), end_error, bufx); +bufx: + OCLERROR_RET(clReleaseMemObject(buf_x), end_error, arry); +arry: + free(arr_y); +arrx: + free(arr_x); +sxp: + OCLERROR_RET(clReleaseKernel(saxpy), end_error, prg); +prg: + OCLERROR_RET(clReleaseProgram(program), end_error, ker); +ker: + free(kernel); +que: + OCLERROR_RET(clReleaseCommandQueue(queue), end_error, cont); +cont: + OCLERROR_RET(clReleaseContext(context), end_error, end); +end: + if (error) cl_util_print_error(error); return error; } diff --git a/samples/core/saxpy/main.cpp b/samples/core/saxpy/main.cpp index 534888f9..3b87e293 100644 --- a/samples/core/saxpy/main.cpp +++ b/samples/core/saxpy/main.cpp @@ -27,38 +27,43 @@ #include #include #include -#include // std::make_tuple +#include // std::make_tuple // TCLAP includes #include // Sample-specific option -struct SaxpyOptions { size_t length; }; +struct SaxpyOptions +{ + size_t length; +}; // Add option to CLI parsing SDK utility -template <> auto cl::sdk::parse(){ - return std::make_tuple( - std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral") - ); +template <> auto cl::sdk::parse() +{ + return std::make_tuple(std::make_shared>( + "l", "length", "Length of input", false, 1'048'576, + "positive integral")); } -template <> SaxpyOptions cl::sdk::comprehend( - std::shared_ptr> length_arg){ - return SaxpyOptions{ - length_arg->getValue() - }; +template <> +SaxpyOptions cl::sdk::comprehend( + std::shared_ptr> length_arg) +{ + return SaxpyOptions{ length_arg->getValue() }; } -std::valarray fma(float x, std::valarray y, std::valarray z) +std::valarray fma(float x, std::valarray y, + std::valarray z) { if (y.size() == z.size()) { size_t len = y.size(); std::valarray res(len); - for (size_t i = 0; i < len; ++i) - res[i] = fmaf(x, y[i], z[i]); + for (size_t i = 0; i < len; ++i) res[i] = fmaf(x, y[i], z[i]); return res; } - else throw std::logic_error("Different sizes!"); + else + throw std::logic_error("Different sizes!"); } int main(int argc, char* argv[]) @@ -66,95 +71,100 @@ int main(int argc, char* argv[]) try { // Parse command-line options - auto opts = cl::sdk::parse_cli< - cl::sdk::options::Diagnostic, - cl::sdk::options::SingleDevice, - SaxpyOptions>(argc, argv); - const auto& diag_opts = std::get<0>(opts); - const auto& dev_opts = std::get<1>(opts); + auto opts = + cl::sdk::parse_cli( + argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); const auto& saxpy_opts = std::get<2>(opts); // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); cl::CommandQueue queue{ context, device }; - cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + cl::Platform platform{ + device.getInfo() + }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 - if (!diag_opts.quiet) { - std::cout << - "Selected platform: " << platform.getInfo() << "\n" << - "Selected device: " << device.getInfo() << "\n" << - std::endl; + if (!diag_opts.quiet) + { + std::cout << "Selected platform: " + << platform.getInfo() << "\n" + << "Selected device: " << device.getInfo() + << "\n" + << std::endl; } // Compile kernel const char* kernel_location = "./saxpy.cl"; std::ifstream kernel_stream{ kernel_location }; if (!kernel_stream.is_open()) - throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + throw std::runtime_error{ + std::string{ "Cannot open kernel source: " } + kernel_location + }; - cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, - std::istreambuf_iterator{} } }; - program.build( device ); + cl::Program program{ context, + std::string{ std::istreambuf_iterator{ + kernel_stream }, + std::istreambuf_iterator{} } }; + program.build(device); - auto saxpy = cl::KernelFunctor(program, "saxpy"); + auto saxpy = cl::KernelFunctor( + program, "saxpy"); // Initialize host-side storage const auto length = saxpy_opts.length; auto prng = [engine = std::default_random_engine{}, - dist = std::uniform_real_distribution{ -100.0, 100.0 }]() mutable { - return dist(engine); - }; + dist = std::uniform_real_distribution{ + -100.0, 100.0 }]() mutable { return dist(engine); }; cl_float a = prng(); - std::valarray arr_x(length), - arr_y(length); + std::valarray arr_x(length), arr_y(length); cl::sdk::fill_with_random(prng, arr_x, arr_y); // Initialize device-side storage cl::Buffer buf_x{ context, std::begin(arr_x), std::end(arr_x), true }, - buf_y{ context, std::begin(arr_y), std::end(arr_y), false }; + buf_y{ context, std::begin(arr_y), std::end(arr_y), false }; // Execute kernel saxpy(cl::EnqueueArgs{ queue, cl::NDRange{ length } }, a, buf_x, buf_y); // Concurrently calculate reference dataset - arr_y = fma(a, arr_x, arr_y);//a * arr_x + arr_y; + arr_y = fma(a, arr_x, arr_y); // a * arr_x + arr_y; // Fetch results cl::copy(queue, buf_y, std::begin(arr_x), std::end(arr_x)); // Validate - if (std::equal(std::begin(arr_x), std::end(arr_x), - std::begin(arr_y), std::end(arr_y))) + if (std::equal(std::begin(arr_x), std::end(arr_x), std::begin(arr_y), + std::end(arr_y))) std::cout << "Verification passed." << std::endl; else throw std::runtime_error{ "Verification FAILED!" }; return 0; - } - catch(cl::util::Error& e) + } catch (cl::util::Error& e) { std::cerr << "OpenCL Utils error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(cl::BuildError& e) + } catch (cl::BuildError& e) { std::cerr << "OpenCL runtime error: " << e.what() << std::endl; for (auto& build_log : e.getBuildLog()) { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << "\tBuild log for device: " + << build_log.first.getInfo() << "\n" + << std::endl; std::cerr << build_log.second << "\n" << std::endl; } std::exit(e.err()); - } - catch(cl::Error& e) + } catch (cl::Error& e) { std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(std::exception& e) + } catch (std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; std::exit(EXIT_FAILURE); diff --git a/samples/extensions/CMakeLists.txt b/samples/extensions/CMakeLists.txt index 899ae382..6a36d43a 100644 --- a/samples/extensions/CMakeLists.txt +++ b/samples/extensions/CMakeLists.txt @@ -13,6 +13,3 @@ # limitations under the License. add_subdirectory(khr) -if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) - add_subdirectory(khr/conway) -endif() diff --git a/samples/extensions/khr/CMakeLists.txt b/samples/extensions/khr/CMakeLists.txt index 078d9c1f..82d4426f 100644 --- a/samples/extensions/khr/CMakeLists.txt +++ b/samples/extensions/khr/CMakeLists.txt @@ -13,3 +13,7 @@ # limitations under the License. add_subdirectory(histogram) +if(OPENCL_SDK_BUILD_OPENGL_SAMPLES) + add_subdirectory(conway) + add_subdirectory(nbody) +endif() diff --git a/samples/extensions/khr/conway/CMakeLists.txt b/samples/extensions/khr/conway/CMakeLists.txt index 03f930ce..8dc523ef 100644 --- a/samples/extensions/khr/conway/CMakeLists.txt +++ b/samples/extensions/khr/conway/CMakeLists.txt @@ -16,6 +16,8 @@ add_sample( TARGET conwaycpp VERSION 120 SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR} - LIBS sfml-window GLEW::GLEW + KERNELS conway.cl + SHADERS + conway.vert.glsl + conway.frag.glsl ) diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index 9fb3c3e8..12126f75 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -28,54 +28,50 @@ #include #include #include -#include // std::make_tuple +#include // std::make_tuple // OpenGL includes #include #include -template -struct DoubleBuffer +template struct DoubleBuffer { T front, back; - void swap() - { - std::swap(front, back); - } + void swap() { std::swap(front, back); } }; -class Conway : public cl::sdk::InteropWindow -{ +class Conway : public cl::sdk::InteropWindow { public: - explicit Conway( - int width, - int height, - bool fullscreen, - cl_uint platform_id = 0, - cl_uint device_id = 0, - cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT - ) : InteropWindow{ - sf::VideoMode(width,height), - "Conway's Game of Life", - fullscreen ? sf::Style::Fullscreen : sf::Style::Default, - sf::ContextSettings{ - 0, 0, 0, // Depth, Stencil, AA - 3, 3, // OpenGL version - sf::ContextSettings::Attribute::Core - }, - platform_id, - device_id, - device_type - } + explicit Conway(int width, int height, bool fullscreen, + cl_uint platform_id = 0, cl_uint device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT) + : InteropWindow{ + sf::VideoMode(width, height), + "Conway's Game of Life", + fullscreen ? sf::Style::Fullscreen : sf::Style::Default, + sf::ContextSettings{ 0, 0, 0, // Depth, Stencil, AA + 3, 3, // OpenGL version + sf::ContextSettings::Attribute::Core }, + platform_id, + device_id, + device_type + } {} protected: - virtual void initializeGL() override; // Function that initializes all OpenGL assets needed to draw a scene - virtual void initializeCL() override; // Function that initializes all OpenCL assets needed to draw a scene - virtual void updateScene() override; // Function that holds scene update guaranteed not to conflict with drawing - virtual void render() override; // Function that does the native rendering - virtual void event(const sf::Event& e) override; // Function that handles render area resize + virtual void + initializeGL() override; // Function that initializes all OpenGL assets + // needed to draw a scene + virtual void + initializeCL() override; // Function that initializes all OpenCL assets + // needed to draw a scene + virtual void + updateScene() override; // Function that holds scene update guaranteed not + // to conflict with drawing + virtual void render() override; // Function that does the native rendering + virtual void event(const sf::Event& e) + override; // Function that handles render area resize private: // OpenGL objects @@ -96,136 +92,181 @@ class Conway : public cl::sdk::InteropWindow inline bool checkError(const char* Title) { - int Error; - if((Error = glGetError()) != GL_NO_ERROR) - { - std::string ErrorString; - switch(Error) - { - case GL_INVALID_ENUM: - ErrorString = "GL_INVALID_ENUM"; - break; - case GL_INVALID_VALUE: - ErrorString = "GL_INVALID_VALUE"; - break; - case GL_INVALID_OPERATION: - ErrorString = "GL_INVALID_OPERATION"; - break; - case GL_INVALID_FRAMEBUFFER_OPERATION: - ErrorString = "GL_INVALID_FRAMEBUFFER_OPERATION"; - break; - case GL_OUT_OF_MEMORY: - ErrorString = "GL_OUT_OF_MEMORY"; - break; - default: - ErrorString = "UNKNOWN"; - break; - } - std::cerr << "OpenGL Error(" << ErrorString.c_str() << "): " << Title << std::endl; - } - return Error == GL_NO_ERROR; + int Error; + if ((Error = glGetError()) != GL_NO_ERROR) + { + std::string ErrorString; + switch (Error) + { + case GL_INVALID_ENUM: ErrorString = "GL_INVALID_ENUM"; break; + case GL_INVALID_VALUE: ErrorString = "GL_INVALID_VALUE"; break; + case GL_INVALID_OPERATION: + ErrorString = "GL_INVALID_OPERATION"; + break; + case GL_INVALID_FRAMEBUFFER_OPERATION: + ErrorString = "GL_INVALID_FRAMEBUFFER_OPERATION"; + break; + case GL_OUT_OF_MEMORY: ErrorString = "GL_OUT_OF_MEMORY"; break; + default: ErrorString = "UNKNOWN"; break; + } + std::cerr << "OpenGL Error(" << ErrorString.c_str() << "): " << Title + << std::endl; + } + return Error == GL_NO_ERROR; } void Conway::initializeGL() { if (glewInit() != GLEW_OK) std::exit(EXIT_FAILURE); - auto create_shader = [](std::string file_path, cl_GLenum shader_stage) - { + auto create_shader = [](std::string file_path, cl_GLenum shader_stage) { std::ifstream shader_stream(file_path); - std::string shader_string{ std::istreambuf_iterator{ shader_stream }, + std::string shader_string{ std::istreambuf_iterator{ + shader_stream }, std::istreambuf_iterator{} }; auto pshader_string = shader_string.c_str(); GLuint shader = glCreateShader(shader_stage); - glShaderSource(shader, 1, &pshader_string, NULL); checkError("glShaderSource(shader, 1, &pshader_string, NULL)"); - glCompileShader(shader); checkError("glCompileShader(shader)"); + glShaderSource(shader, 1, &pshader_string, NULL); + checkError("glShaderSource(shader, 1, &pshader_string, NULL)"); + glCompileShader(shader); + checkError("glCompileShader(shader)"); GLint status = GL_FALSE; - glGetShaderiv(shader, GL_COMPILE_STATUS, &status); checkError("glGetShaderiv(shader, GL_COMPILE_STATUS, &status)"); - if(status != GL_TRUE) + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + checkError("glGetShaderiv(shader, GL_COMPILE_STATUS, &status)"); + if (status != GL_TRUE) { int log_length = 0; - glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); checkError("glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length)"); + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); + checkError( + "glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length)"); std::vector shader_log(log_length); - glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); checkError("glGetShaderInfoLog(shader, log_length, NULL, shader_log.data())"); - std::cerr << std::string(shader_log.cbegin(), shader_log.cend()) << std::endl; + glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); + checkError("glGetShaderInfoLog(shader, log_length, NULL, " + "shader_log.data())"); + std::cerr << std::string(shader_log.cbegin(), shader_log.cend()) + << std::endl; } return shader; }; - auto create_program = [](std::initializer_list shader_stages) - { - GLuint program = glCreateProgram(); checkError("glCreateProgram()"); - for (auto shader_stage : shader_stages) { - glAttachShader(program, shader_stage); checkError("glAttachShader(program, shader_stage)"); } + auto create_program = [](std::initializer_list shader_stages) { + GLuint program = glCreateProgram(); + checkError("glCreateProgram()"); + for (auto shader_stage : shader_stages) + { + glAttachShader(program, shader_stage); + checkError("glAttachShader(program, shader_stage)"); + } - glLinkProgram(program); checkError("glLinkProgram(program)"); + glLinkProgram(program); + checkError("glLinkProgram(program)"); GLint status = GL_FALSE; - glGetProgramiv(program, GL_LINK_STATUS, &status); checkError("glGetProgramiv(program, GL_LINK_STATUS, &status)"); - if(status != GL_TRUE) + glGetProgramiv(program, GL_LINK_STATUS, &status); + checkError("glGetProgramiv(program, GL_LINK_STATUS, &status)"); + if (status != GL_TRUE) { int log_length = 0; - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); checkError("glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length)"); + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); + checkError( + "glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length)"); std::vector program_log(log_length); - glGetProgramInfoLog(program, log_length, NULL, program_log.data()); checkError("glGetProgramInfoLog(program, log_length, NULL, program_log.data())"); - std::cerr << std::string(program_log.cbegin(), program_log.cend()) << std::endl; + glGetProgramInfoLog(program, log_length, NULL, program_log.data()); + checkError("glGetProgramInfoLog(program, log_length, NULL, " + "program_log.data())"); + std::cerr << std::string(program_log.cbegin(), program_log.cend()) + << std::endl; } return program; }; - vertex_shader = create_shader("./conway.vert.glsl", GL_VERTEX_SHADER); + vertex_shader = create_shader("./conway.vert.glsl", GL_VERTEX_SHADER); fragment_shader = create_shader("./conway.frag.glsl", GL_FRAGMENT_SHADER); gl_program = create_program({ vertex_shader, fragment_shader }); std::vector quad = // vertices , tex coords // x , y , u , v - { -1.0f, -1.0f, 0.0f, 0.0f, - -1.0f, 1.0f, 0.0f, 1.0f, - 1.0f, -1.0f, 1.0f, 0.0f, - 1.0f, 1.0f, 1.0f, 1.0f }; - - glGenBuffers(1, &vertex_buffer); checkError("glGenBuffers(1, &vertex_buffer)"); - glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); - glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW); checkError("glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), GL_STATIC_DRAW)"); - glBindBuffer(GL_ARRAY_BUFFER, 0); checkError("glBindBuffer(GL_ARRAY_BUFFER, 0)"); - - glGenVertexArrays(1, &vertex_array); checkError("glGenVertexArrays(1, &vertex_array)"); - glBindVertexArray(vertex_array); checkError("glBindVertexArray(vertex_array)"); - glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL)); checkError("glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL))"); - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float))); checkError("glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float)))"); - glEnableVertexAttribArray(0); checkError("glEnableVertexAttribArray(0)"); - glEnableVertexAttribArray(1); checkError("glEnableVertexAttribArray(1)"); - glBindVertexArray(0); checkError("glBindVertexArray(0)"); + { -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f }; + + glGenBuffers(1, &vertex_buffer); + checkError("glGenBuffers(1, &vertex_buffer)"); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); + glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), quad.data(), + GL_STATIC_DRAW); + checkError("glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), " + "quad.data(), GL_STATIC_DRAW)"); + glBindBuffer(GL_ARRAY_BUFFER, 0); + checkError("glBindBuffer(GL_ARRAY_BUFFER, 0)"); + + glGenVertexArrays(1, &vertex_array); + checkError("glGenVertexArrays(1, &vertex_array)"); + glBindVertexArray(vertex_array); + checkError("glBindVertexArray(vertex_array)"); + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); + checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (GLvoid*)(NULL)); + checkError("glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, " + "4*sizeof(float), (GLvoid *)(NULL))"); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), + (GLvoid*)(NULL + 2 * sizeof(float))); + checkError("glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, " + "4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float)))"); + glEnableVertexAttribArray(0); + checkError("glEnableVertexAttribArray(0)"); + glEnableVertexAttribArray(1); + checkError("glEnableVertexAttribArray(1)"); + glBindVertexArray(0); + checkError("glBindVertexArray(0)"); std::vector texels; - std::generate_n(std::back_inserter(texels), - getSize().x * getSize().y, + std::generate_n( + std::back_inserter(texels), getSize().x * getSize().y, [prng = std::ranlux48{ std::random_device{}() }, - dist = std::uniform_int_distribution{ 0, 1 }]() mutable - { - return static_cast(dist(prng)); - }); + dist = std::uniform_int_distribution{ + 0, 1 }]() mutable { return static_cast(dist(prng)); }); - glUseProgram(gl_program); checkError(""); - for(auto image : {&gl_images.front, &gl_images.back}) + glUseProgram(gl_program); + checkError(""); + for (auto image : { &gl_images.front, &gl_images.back }) { - glGenTextures(1, image); checkError("glGenTextures(1, image);"); - glActiveTexture(GL_TEXTURE0); checkError("glActiveTexture(GL_TEXTURE0);"); - glBindTexture(GL_TEXTURE_2D, *image); checkError("glBindTexture(GL_TEXTURE_2D, *image);"); - glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data()); checkError("glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data())"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);"); - glBindTexture(GL_TEXTURE_2D, 0); checkError("glBindTexture(GL_TEXTURE_2D, 0);"); + glGenTextures(1, image); + checkError("glGenTextures(1, image);"); + glActiveTexture(GL_TEXTURE0); + checkError("glActiveTexture(GL_TEXTURE0);"); + glBindTexture(GL_TEXTURE_2D, *image); + checkError("glBindTexture(GL_TEXTURE_2D, *image);"); + glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, 0, + GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data()); + checkError( + "glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, getSize().x, getSize().y, " + "0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, texels.data())"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + checkError( + "glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + checkError( + "glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, " + "GL_NEAREST);"); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + checkError("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, " + "GL_NEAREST);"); + glBindTexture(GL_TEXTURE_2D, 0); + checkError("glBindTexture(GL_TEXTURE_2D, 0);"); } - glUseProgram(0); checkError("glUseProgram(0);"); + glUseProgram(0); + checkError("glUseProgram(0);"); - glViewport(0, 0, getSize().x, getSize().y); checkError("glViewport(0, 0, getSize().x, getSize().y)"); - glDisable(GL_DEPTH_TEST); checkError("glDisable(GL_DEPTH_TEST)"); + glViewport(0, 0, getSize().x, getSize().y); + checkError("glViewport(0, 0, getSize().x, getSize().y)"); + glDisable(GL_DEPTH_TEST); + checkError("glDisable(GL_DEPTH_TEST)"); } void Conway::initializeCL() @@ -237,47 +278,47 @@ void Conway::initializeCL() const char* kernel_location = "./conway.cl"; std::ifstream kernel_stream{ kernel_location }; if (!kernel_stream.is_open()) - throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + + kernel_location }; cl_program = cl::Program{ opencl_context, - std::string{ std::istreambuf_iterator{ kernel_stream }, + std::string{ std::istreambuf_iterator{ + kernel_stream }, std::istreambuf_iterator{} } }; - cl_program.build( device ); - kernel = cl::Kernel{cl_program, "conway"}; + cl_program.build(device); + kernel = cl::Kernel{ cl_program, "conway" }; // Translate OpenGL object handles into OpenCL handles - cl_images.front = cl::ImageGL{opencl_context, CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, gl_images.front}; - cl_images.back = cl::ImageGL{opencl_context, CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, gl_images.back}; + cl_images.front = cl::ImageGL{ opencl_context, CL_MEM_READ_WRITE, + GL_TEXTURE_2D, 0, gl_images.front }; + cl_images.back = cl::ImageGL{ opencl_context, CL_MEM_READ_WRITE, + GL_TEXTURE_2D, 0, gl_images.back }; // Translate - interop_resources = cl::vector{ cl_images.front, cl_images.back }; + interop_resources = + cl::vector{ cl_images.front, cl_images.back }; } void Conway::updateScene() { - auto conway = cl::KernelFunctor{cl_program, "conway"}; + auto conway = + cl::KernelFunctor{ cl_program, + "conway" }; cl::Event acquire, release; queue.enqueueAcquireGLObjects(&interop_resources, nullptr, &acquire); - conway( - cl::EnqueueArgs{ - queue, - cl::NDRange{ getSize().x, getSize().y } - }, - cl_images.front, - cl_images.back, - cl_float2{ - 1.f / getSize().x, - 1.f / getSize().y - } - ); + conway(cl::EnqueueArgs{ queue, cl::NDRange{ getSize().x, getSize().y } }, + cl_images.front, cl_images.back, + cl_float2{ 1.f / getSize().x, 1.f / getSize().y }); queue.enqueueReleaseGLObjects(&interop_resources, nullptr, &release); // Wait for all OpenCL commands to finish - if (!cl_khr_gl_event_supported) cl::finish(); - else release.wait(); + if (!cl_khr_gl_event_supported) + cl::finish(); + else + release.wait(); // Swap front and back buffer handles std::swap(cl_images.front, cl_images.back); @@ -299,17 +340,17 @@ void Conway::render() glUseProgram(0); // Wait for all drawing commands to finish - if (!cl_khr_gl_event_supported) glFinish(); - else glFlush(); + if (!cl_khr_gl_event_supported) + glFinish(); + else + glFlush(); } void Conway::event(const sf::Event& event) { - switch(event.type) + switch (event.type) { - case sf::Event::Closed: - close(); - break; + case sf::Event::Closed: close(); break; } } @@ -318,45 +359,37 @@ int main(int argc, char* argv[]) try { // Parse command-line options - auto opts = cl::sdk::parse_cli< - cl::sdk::options::Diagnostic, - cl::sdk::options::SingleDevice, - cl::sdk::options::Window>(argc, argv); + auto opts = cl::sdk::parse_cli(argc, argv); const auto& dev_opts = std::get<1>(opts).triplet; const auto& win_opts = std::get<2>(opts); - Conway window{ - win_opts.width, - win_opts.height, - win_opts.fullscreen, - dev_opts.plat_index, - dev_opts.dev_index, - dev_opts.dev_type - }; + Conway window{ win_opts.width, win_opts.height, + win_opts.fullscreen, dev_opts.plat_index, + dev_opts.dev_index, dev_opts.dev_type }; window.run(); - } - catch(cl::util::Error& e) + } catch (cl::util::Error& e) { std::cerr << "OpenCL Utils error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(cl::BuildError& e) + } catch (cl::BuildError& e) { std::cerr << "OpenCL runtime error: " << e.what() << std::endl; for (auto& build_log : e.getBuildLog()) { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << "\tBuild log for device: " + << build_log.first.getInfo() << "\n" + << std::endl; std::cerr << build_log.second << "\n" << std::endl; } std::exit(e.err()); - } - catch(cl::Error& e) + } catch (cl::Error& e) { std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(std::exception& e) + } catch (std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; std::exit(EXIT_FAILURE); diff --git a/samples/extensions/khr/histogram/CMakeLists.txt b/samples/extensions/khr/histogram/CMakeLists.txt index 86758892..a293171e 100644 --- a/samples/extensions/khr/histogram/CMakeLists.txt +++ b/samples/extensions/khr/histogram/CMakeLists.txt @@ -16,5 +16,4 @@ add_sample( TEST TARGET histogramcpp VERSION 120 - SOURCES main.cpp - INCLUDES ${TCLAP_INCLUDE_DIR}) + SOURCES main.cpp) diff --git a/samples/extensions/khr/histogram/main.cpp b/samples/extensions/khr/histogram/main.cpp index 2bef20e5..433ba2de 100644 --- a/samples/extensions/khr/histogram/main.cpp +++ b/samples/extensions/khr/histogram/main.cpp @@ -27,28 +27,34 @@ #include #include #include -#include // std::make_tuple +#include // std::make_tuple // TCLAP includes #include // Sample-specific option -struct HistogramOptions { size_t length; size_t bins; }; +struct HistogramOptions +{ + size_t length; + size_t bins; +}; // Add option to CLI parsing SDK utility -template <> auto cl::sdk::parse(){ +template <> auto cl::sdk::parse() +{ return std::make_tuple( - std::make_shared>("l", "length", "Length of input", false, 1'048'576, "positive integral"), - std::make_shared>("b", "bins", "Bins of histogram", false, 100, "positive integral") - ); + std::make_shared>( + "l", "length", "Length of input", false, 1'048'576, + "positive integral"), + std::make_shared>( + "b", "bins", "Bins of histogram", false, 100, "positive integral")); } -template <> HistogramOptions cl::sdk::comprehend( +template <> +HistogramOptions cl::sdk::comprehend( std::shared_ptr> length_arg, std::shared_ptr> bins_arg) { - return HistogramOptions{ - length_arg->getValue(), bins_arg->getValue() - }; + return HistogramOptions{ length_arg->getValue(), bins_arg->getValue() }; } int main(int argc, char* argv[]) @@ -56,44 +62,53 @@ int main(int argc, char* argv[]) try { // Parse command-line options - auto opts = cl::sdk::parse_cli< - cl::sdk::options::Diagnostic, - cl::sdk::options::SingleDevice, - HistogramOptions>(argc, argv); - const auto& diag_opts = std::get<0>(opts); - const auto& dev_opts = std::get<1>(opts); + auto opts = cl::sdk::parse_cli(argc, argv); + const auto& diag_opts = std::get<0>(opts); + const auto& dev_opts = std::get<1>(opts); const auto& histogram_opts = std::get<2>(opts); // Create runtime objects based on user preference or default cl::Context context = cl::sdk::get_context(dev_opts.triplet); cl::Device device = context.getInfo().at(0); cl::CommandQueue queue{ context, device }; - cl::Platform platform{ device.getInfo() }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 - - if (!diag_opts.quiet) { - std::cout << - "Selected platform: " << platform.getInfo() << "\n" << - "Selected device: " << device.getInfo() << "\n" << - "Selected local memory size: " << device.getInfo() << "\n" << - std::endl; + cl::Platform platform{ + device.getInfo() + }; // https://github.com/KhronosGroup/OpenCL-CLHPP/issues/150 + + if (!diag_opts.quiet) + { + std::cout << "Selected platform: " + << platform.getInfo() << "\n" + << "Selected device: " << device.getInfo() + << "\n" + << "Selected local memory size: " + << device.getInfo() << "\n" + << std::endl; } // Compile kernel const char* kernel_location = "./histogram.cl"; std::ifstream kernel_stream{ kernel_location }; if (!kernel_stream.is_open()) - throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + kernel_location }; - - cl::Program program{ context, std::string{ std::istreambuf_iterator{ kernel_stream }, - std::istreambuf_iterator{} } }; - program.build( device ); - - auto histogram_shared = cl::KernelFunctor< - cl_uint, cl_uint, cl_uint, cl::Buffer, cl::Buffer, cl::LocalSpaceArg, cl::Buffer - >(program, "histogram_shared"); - auto histogram_global = cl::KernelFunctor< - cl_uint, cl_uint, cl::Buffer, cl::Buffer, cl::Buffer - >(program, "histogram_global"); + throw std::runtime_error{ + std::string{ "Cannot open kernel source: " } + kernel_location + }; + + cl::Program program{ context, + std::string{ std::istreambuf_iterator{ + kernel_stream }, + std::istreambuf_iterator{} } }; + program.build(device); + + auto histogram_shared = + cl::KernelFunctor( + program, "histogram_shared"); + auto histogram_global = + cl::KernelFunctor(program, "histogram_global"); // Initialize host-side storage const auto length = histogram_opts.length; @@ -103,9 +118,8 @@ int main(int argc, char* argv[]) const float max = 100.0f; auto prng = [engine = std::default_random_engine{}, - dist = std::uniform_real_distribution{ min, max }]() mutable { - return dist(engine); - }; + dist = std::uniform_real_distribution{ + min, max }]() mutable { return dist(engine); }; std::valarray input(length); std::valarray levels(bins + 1); @@ -114,82 +128,82 @@ int main(int argc, char* argv[]) // Initialize input variables cl::sdk::fill_with_random(prng, input); cl_float epsilon = (max - min) / bins; - for(cl_uint index = 0; index < bins; index++) + for (cl_uint index = 0; index < bins; index++) { levels[index] = min + epsilon * index; } levels[bins] = max; // Initialize device-side storage - cl::Buffer buf_input{ context, std::begin(input), std::end(input), true }, - buf_levels{ context, std::begin(levels), std::end(levels), true }, - buf_histogram{ context, std::begin(histogram), std::end(histogram), false }; + cl::Buffer buf_input{ context, std::begin(input), std::end(input), + true }, + buf_levels{ context, std::begin(levels), std::end(levels), true }, + buf_histogram{ context, std::begin(histogram), std::end(histogram), + false }; // Execute kernel - if( bins * sizeof(cl_uint) <= device.getInfo() ) + if (bins * sizeof(cl_uint) + <= device.getInfo()) { size_t items_per_thread = 32; - size_t grid_size = (length + items_per_thread - 1) / items_per_thread; - histogram_shared( - cl::EnqueueArgs{ queue, cl::NDRange{ grid_size } }, - length, bins, items_per_thread, buf_input, buf_levels, - cl::Local(bins * sizeof(cl_uint)), buf_histogram - ); + size_t grid_size = + (length + items_per_thread - 1) / items_per_thread; + histogram_shared(cl::EnqueueArgs{ queue, cl::NDRange{ grid_size } }, + length, bins, items_per_thread, buf_input, + buf_levels, cl::Local(bins * sizeof(cl_uint)), + buf_histogram); } else { - histogram_global( - cl::EnqueueArgs{ queue, cl::NDRange{ length } }, - length, bins, buf_input, buf_levels, buf_histogram - ); + histogram_global(cl::EnqueueArgs{ queue, cl::NDRange{ length } }, + length, bins, buf_input, buf_levels, + buf_histogram); } // Concurrently calculate reference dataset std::vector histogram_expected(bins, 0); - for(const auto value : input) + for (const auto value : input) { - if(value >= levels[0] && value < levels[bins]) + if (value >= levels[0] && value < levels[bins]) { - const auto bin_iter = std::upper_bound( - std::begin(levels), std::end(levels), value - ); + const auto bin_iter = std::upper_bound(std::begin(levels), + std::end(levels), value); histogram_expected[bin_iter - std::begin(levels) - 1]++; } } // Fetch results - cl::copy(queue, buf_histogram, std::begin(histogram), std::end(histogram)); + cl::copy(queue, buf_histogram, std::begin(histogram), + std::end(histogram)); // Validate - if (std::equal(std::begin(histogram_expected), std::end(histogram_expected), - std::begin(histogram))) + if (std::equal(std::begin(histogram_expected), + std::end(histogram_expected), std::begin(histogram))) std::cout << "Verification passed." << std::endl; else throw std::runtime_error{ "Verification FAILED!" }; return 0; - } - catch(cl::util::Error& e) + } catch (cl::util::Error& e) { std::cerr << "OpenCL Utils error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(cl::BuildError& e) + } catch (cl::BuildError& e) { std::cerr << "OpenCL runtime error: " << e.what() << std::endl; for (auto& build_log : e.getBuildLog()) { - std::cerr << "\tBuild log for device: " << build_log.first.getInfo() << "\n" << std::endl; + std::cerr << "\tBuild log for device: " + << build_log.first.getInfo() << "\n" + << std::endl; std::cerr << build_log.second << "\n" << std::endl; } std::exit(e.err()); - } - catch(cl::Error& e) + } catch (cl::Error& e) { std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; std::exit(e.err()); - } - catch(std::exception& e) + } catch (std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; std::exit(EXIT_FAILURE); diff --git a/samples/extensions/khr/nbody/CMakeLists.txt b/samples/extensions/khr/nbody/CMakeLists.txt new file mode 100644 index 00000000..6685d88e --- /dev/null +++ b/samples/extensions/khr/nbody/CMakeLists.txt @@ -0,0 +1,23 @@ +# Copyright (c) 2021 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +add_sample( + TARGET nbodycpp + VERSION 120 + SOURCES main.cpp + KERNELS nbody.cl + SHADERS + nbody.vert.glsl + nbody.frag.glsl + ) diff --git a/samples/extensions/khr/nbody/README.md b/samples/extensions/khr/nbody/README.md new file mode 100644 index 00000000..139de3d4 --- /dev/null +++ b/samples/extensions/khr/nbody/README.md @@ -0,0 +1,39 @@ +# Gravitational NBody + +## Sample Purpose + +This sample intends to demonstrate how to share (vertex) buffers between OpenCL and OpenGL. [How Does OpenCL-OpenGL Interop?](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl-opencl_interop.md) chapter of the OpenCL-Guide lays out the fundamentals of OpenCL-OpenGL interoperability. + +## Key APIs and Concepts + +The most important aspect of this sample is to understand how OpenCL-OpenGL interop contexts and shared resources are setup. The `cl::util::get_interop_context` function takes much of the tedium out of setting up such a context while the `cl::util::InteropWindow` adds "GLUT-like" features, dealing with typical windowed interop app control flow, making sure that API objects are created in the correct order. + +### Application flow + +Application flow is primarily dictated by `cl::sdk::InteropWindow`, more specifically by `cl::ask::InteropWindow::run()`. For a detailed overview of what the `InteropWindow` utility does, please refer to the [SDK library documentation](../../../../lib/SDK.md). + +### Double buffering + +The kernel used to implement the gravitational interaction and time-stepping in a fused manner uses double-buffering of some of the data. It is not possible to calculate forces between the particles and carry out the forward-Euler in the same kernel without global syncing. (Some praticles may have already updated their position while others are still summing up forces, using the now out-of-sync positions.) + +### Implicit interop context synchronization + +This sample uses basic and implicit interop context synchronization. For a detailed overview on the various ways OpenCL and OpenGL can be synchronized, refer to [Synchronizing the two APIs](https://github.com/KhronosGroup/OpenCL-Guide/blob/main/chapters/how_does_opencl-opencl_interop.md#Synchronizing-the-two-APIs) section of the OpenCL-OpenGL interop guide. + +### Used API surface + +```c++ +cl::sdk::InteropWindow +cl::Context::getInfo() +cl::CommandQueue(cl::Context, cl::Device) +cl::util::get_program(cl::Context, cl::string) +cl::Program::build(cl::Device) +cl::KernelFunctor<...>(cl::Program, const char*) +cl::Buffer(cl::CommandQueue, Iter, Iter, bool) +cl::BufferGL::BufferGL(cl::Context, cl_mem_flags, cl_GLuint) +cl::copy(cl::CommandQueue, cl::Buffer, Iter, Iter) +cl::CommandQueue::enqueueAcquireGLObjects(const cl::vector*, const cl::vector*, cl::Event*) +cl::CommandQueue::enqueueReleaseGLObjects(const cl::vector*, const cl::vector*, cl::Event*) +cl::finish() +cl::Event::wait() +``` diff --git a/samples/extensions/khr/nbody/main.cpp b/samples/extensions/khr/nbody/main.cpp new file mode 100644 index 00000000..bd4d77f9 --- /dev/null +++ b/samples/extensions/khr/nbody/main.cpp @@ -0,0 +1,500 @@ +/* + * Copyright (c) 2020 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +// OpenCL SDK includes +#include +#include + +// STL includes +#include +#include +#include +#include +#include +#include // std::make_tuple + +// TCLAP includes +#include + +// OpenGL includes +#include + +// GLM includes +#include +#include +#include + +template struct DoubleBuffer +{ + T front, back; + + void swap() { std::swap(front, back); } +}; + +class NBody : public cl::sdk::InteropWindow { +public: + explicit NBody(unsigned int platform_id = 0, unsigned int device_id = 0, + cl_bitfield device_type = CL_DEVICE_TYPE_DEFAULT) + : InteropWindow{ sf::VideoMode(800, 800), + "Gravitational NBody", + sf::Style::Default, + sf::ContextSettings{ + 32, 0, 0, // Depth, Stencil, AA + 3, 3, // OpenGL version + sf::ContextSettings::Attribute::Core }, + platform_id, + device_id, + device_type }, + particle_count(8192), x_abs_range(192.f), y_abs_range(128.f), + z_abs_range(32.f), mass_min(100.f), mass_max(500.f), + RMB_pressed(false), + dist(std::max({ x_abs_range, y_abs_range, z_abs_range }) * 3), phi(0), + theta(0), needMatrixReset(true) + {} + +protected: + virtual void + initializeGL() override; // Function that initializes all OpenGL assets + // needed to draw a scene + virtual void + initializeCL() override; // Function that initializes all OpenCL assets + // needed to draw a scene + virtual void + updateScene() override; // Function that holds scene update guaranteed not + // to conflict with drawing + virtual void render() override; // Function that does the native rendering + virtual void event(const sf::Event& e) + override; // Function that handles render area resize + +private: + // Simulation related variables + std::size_t particle_count; + float x_abs_range, y_abs_range, z_abs_range, mass_min, mass_max; + + // Host-side containers + std::vector pos_mass; + std::vector velocity; + std::vector forces; + + // OpenCL objects + cl::Device device; + cl::CommandQueue queue; + cl::Program cl_program; + cl::Kernel kernel; + cl::Sampler sampler; + + cl::Buffer velocity_buffer; + DoubleBuffer cl_pos_mass; + + cl::vector interop_resources; + cl::vector acquire_wait_list, release_wait_list; + cl::NDRange gws, lws; // Global/local work-sizes + cl::Kernel step_kernel; // Kernel + + // OpenGL objects + cl_GLuint vertex_shader, fragment_shader, gl_program; + DoubleBuffer vertex_array; + DoubleBuffer gl_pos_mass; + + bool RMB_pressed; // Variables to enable dragging + sf::Vector2 mousePos; // Variables to enable dragging + float dist, phi, theta; // Mouse polar coordinates + bool needMatrixReset; // Whether matrices need to be reset in shaders + + void + mouseDrag(const sf::Event::MouseMoveEvent& event); // Handle mouse dragging + void mouseWheel( + const sf::Event::MouseWheelEvent& event); // Handle mouse wheel movement + + void setMatrices(); // Update shader matrices +}; + +inline bool checkError(const char* Title) +{ + int Error; + if ((Error = glGetError()) != GL_NO_ERROR) + { + std::string ErrorString; + switch (Error) + { + case GL_INVALID_ENUM: ErrorString = "GL_INVALID_ENUM"; break; + case GL_INVALID_VALUE: ErrorString = "GL_INVALID_VALUE"; break; + case GL_INVALID_OPERATION: + ErrorString = "GL_INVALID_OPERATION"; + break; + case GL_INVALID_FRAMEBUFFER_OPERATION: + ErrorString = "GL_INVALID_FRAMEBUFFER_OPERATION"; + break; + case GL_OUT_OF_MEMORY: ErrorString = "GL_OUT_OF_MEMORY"; break; + default: ErrorString = "UNKNOWN"; break; + } + std::cerr << "OpenGL Error(" << ErrorString << "): " << Title + << std::endl; + } + return Error == GL_NO_ERROR; +} + +void NBody::initializeGL() +{ + if (glewInit() != GLEW_OK) std::exit(EXIT_FAILURE); + + auto create_shader = [](std::string file_path, cl_GLenum shader_stage) { + std::ifstream shader_stream(file_path); + std::string shader_string{ std::istreambuf_iterator{ + shader_stream }, + std::istreambuf_iterator{} }; + auto pshader_string = shader_string.c_str(); + GLuint shader = glCreateShader(shader_stage); + glShaderSource(shader, 1, &pshader_string, NULL); + checkError("glShaderSource(shader, 1, &pshader_string, NULL)"); + glCompileShader(shader); + checkError("glCompileShader(shader)"); + + GLint status = GL_FALSE; + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + checkError("glGetShaderiv(shader, GL_COMPILE_STATUS, &status)"); + if (status != GL_TRUE) + { + int log_length = 0; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); + checkError( + "glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length)"); + std::vector shader_log(log_length); + glGetShaderInfoLog(shader, log_length, NULL, shader_log.data()); + checkError("glGetShaderInfoLog(shader, log_length, NULL, " + "shader_log.data())"); + std::cerr << std::string(shader_log.cbegin(), shader_log.cend()) + << std::endl; + } + + return shader; + }; + auto create_program = [](std::initializer_list shader_stages) { + GLuint program = glCreateProgram(); + checkError("glCreateProgram()"); + for (auto shader_stage : shader_stages) + { + glAttachShader(program, shader_stage); + checkError("glAttachShader(program, shader_stage)"); + } + + glLinkProgram(program); + checkError("glLinkProgram(program)"); + GLint status = GL_FALSE; + glGetProgramiv(program, GL_LINK_STATUS, &status); + checkError("glGetProgramiv(program, GL_LINK_STATUS, &status)"); + if (status != GL_TRUE) + { + int log_length = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length); + checkError( + "glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_length)"); + std::vector program_log(log_length); + glGetProgramInfoLog(program, log_length, NULL, program_log.data()); + checkError("glGetProgramInfoLog(program, log_length, NULL, " + "program_log.data())"); + std::cerr << std::string(program_log.cbegin(), program_log.cend()) + << std::endl; + } + + return program; + }; + + vertex_shader = create_shader("./nbody.vert.glsl", GL_VERTEX_SHADER); + fragment_shader = create_shader("./nbody.frag.glsl", GL_FRAGMENT_SHADER); + gl_program = create_program({ vertex_shader, fragment_shader }); + + using uni = std::uniform_real_distribution; + std::generate_n(std::back_inserter(pos_mass), particle_count, + [prng = std::default_random_engine(), + x_dist = uni(-x_abs_range, x_abs_range), + y_dist = uni(-y_abs_range, y_abs_range), + z_dist = uni(-z_abs_range, z_abs_range), + m_dist = uni(mass_min, mass_max)]() mutable { + return cl_float4{ x_dist(prng), y_dist(prng), + z_dist(prng), m_dist(prng) }; + }); + + glUseProgram(gl_program); + checkError("glUseProgram(gl_program)"); + for (auto vbo_vao : + { std::make_pair(&gl_pos_mass.front, &vertex_array.front), + std::make_pair(&gl_pos_mass.back, &vertex_array.back) }) + { + glGenBuffers(1, vbo_vao.first); + checkError("glGenBuffers(1, &vertex_buffer)"); + glBindBuffer(GL_ARRAY_BUFFER, *vbo_vao.first); + checkError("glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer)"); + glBufferData(GL_ARRAY_BUFFER, pos_mass.size() * sizeof(cl_float4), + pos_mass.data(), GL_STATIC_DRAW); + checkError("glBufferData(GL_ARRAY_BUFFER, quad.size() * sizeof(float), " + "quad.data(), GL_STATIC_DRAW)"); + glBindBuffer(GL_ARRAY_BUFFER, 0); + checkError("glBindBuffer(GL_ARRAY_BUFFER, 0)"); + + glGenVertexArrays(1, vbo_vao.second); + checkError("glGenVertexArrays(1, &vertex_array)"); + glBindVertexArray(*vbo_vao.second); + checkError("glBindVertexArray(vertex_array)"); + glBindBuffer(GL_ARRAY_BUFFER, *vbo_vao.first); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(cl_float4), + (GLvoid*)(NULL)); + checkError("glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, " + "sizeof(cl_float4), (GLvoid *)(NULL))"); + glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, sizeof(cl_float4), + (GLvoid*)(NULL + 3 * sizeof(float))); + checkError("glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, " + "sizeof(cl_float4), (GLvoid *)(NULL + 3 * sizeof(float)))"); + glEnableVertexAttribArray(0); + checkError("glEnableVertexAttribArray(0)"); + glEnableVertexAttribArray(1); + checkError("glEnableVertexAttribArray(1)"); + glBindVertexArray(0); + checkError("glBindVertexArray(0)"); + } + + glViewport(0, 0, getSize().x, getSize().y); + checkError("glViewport(0, 0, getSize().x, getSize().y)"); + glClearColor(0.f, 0.f, 0.f, 1.f); + checkError("glClearColor(0.f, 0.f, 0.f, 0.f)"); + glEnable(GL_DEPTH_TEST); + checkError("glDisable(GL_DEPTH_TEST)"); + glDepthFunc(GL_LESS); + checkError("glDepthFunc(GL_LESS)"); + glDisable(GL_CULL_FACE); + checkError("glDisable(GL_CULL_FACE)"); + glPointSize(1.5f); +} + +void NBody::initializeCL() +{ + device = opencl_context.getInfo().at(0); + queue = cl::CommandQueue{ opencl_context, device }; + + // Compile kernel + const char* kernel_location = "./nbody.cl"; + std::ifstream kernel_stream{ kernel_location }; + if (!kernel_stream.is_open()) + throw std::runtime_error{ std::string{ "Cannot open kernel source: " } + + kernel_location }; + + cl_program = cl::Program{ opencl_context, + std::string{ std::istreambuf_iterator{ + kernel_stream }, + std::istreambuf_iterator{} } }; + cl_program.build(device); + kernel = cl::Kernel{ cl_program, "nbody" }; + + gws = cl::NDRange{ particle_count }; + lws = cl::NullRange; + + // velocity = std::vector(particle_count, cl_float4{ 0, 0, 0, 0 + // }); + velocity_buffer = cl::Buffer{ opencl_context, CL_MEM_READ_WRITE, + particle_count * sizeof(cl_float3), nullptr }; + queue.enqueueFillBuffer(velocity_buffer, cl_float4{ 0, 0, 0, 0 }, 0, + particle_count * sizeof(cl_float4)); + queue.finish(); + + // Translate OpenGL object handles into OpenCL handles + cl_pos_mass.front = + cl::BufferGL{ opencl_context, CL_MEM_READ_WRITE, gl_pos_mass.front }; + cl_pos_mass.back = + cl::BufferGL{ opencl_context, CL_MEM_READ_WRITE, gl_pos_mass.back }; + + // Translate + interop_resources = + cl::vector{ cl_pos_mass.front, cl_pos_mass.back }; +} + +void NBody::updateScene() +{ + auto nbody = cl::KernelFunctor{ cl_program, "nbody" }; + cl::Event acquire, release; + + queue.enqueueAcquireGLObjects(&interop_resources, nullptr, &acquire); + + nbody(cl::EnqueueArgs{ queue, cl::NDRange{ particle_count } }, + cl_pos_mass.front, cl_pos_mass.back, velocity_buffer, + static_cast(particle_count), 0.0001f); + + queue.enqueueReleaseGLObjects(&interop_resources, nullptr, &release); + + // Wait for all OpenCL commands to finish + if (!cl_khr_gl_event_supported) + cl::finish(); + else + release.wait(); + + // Swap front and back buffer handles + cl_pos_mass.swap(); + gl_pos_mass.swap(); +} + +void NBody::render() +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + checkError("glClear(GL_COLOR_BUFFER_BIT)"); + + glUseProgram(gl_program); + checkError("glUseProgram(gl_program)"); + glBindVertexArray(vertex_array.front); + checkError("glBindVertexArray(vertex_array)"); + glBindBuffer(GL_ARRAY_BUFFER, gl_pos_mass.front); + checkError("glBindBuffer(GL_ARRAY_BUFFER, gl_pos_mass.front)"); + + if (needMatrixReset) setMatrices(); + + glDrawArrays(GL_POINTS, 0, static_cast(particle_count)); + checkError( + "glDrawArrays(GL_POINTS, 0, static_cast(particle_count))"); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + checkError("glBindBuffer(GL_ARRAY_BUFFER, 0)"); + glBindVertexArray(0); + checkError("glBindVertexArray(0)"); + + // Wait for all drawing commands to finish + if (!cl_khr_gl_event_supported) + glFinish(); + else + glFlush(); + checkError("glFlush()/glFinish()"); +} + +void NBody::event(const sf::Event& event) +{ + switch (event.type) + { + case sf::Event::Closed: close(); break; + case sf::Event::Resized: + glViewport(0, 0, getSize().x, getSize().y); + checkError("glViewport(0, 0, getSize().x, getSize().y)"); + needMatrixReset = true; // projection matrix need to be recalculated + break; + case sf::Event::MouseButtonPressed: + if (event.mouseButton.button == sf::Mouse::Button::Right) + { + RMB_pressed = true; + mousePos = + sf::Vector2i{ event.mouseButton.x, event.mouseButton.y }; + } + break; + case sf::Event::MouseButtonReleased: + if (event.mouseButton.button == sf::Mouse::Button::Right) + RMB_pressed = false; + break; + case sf::Event::MouseMoved: + if (RMB_pressed) mouseDrag(event.mouseMove); + break; + case sf::Event::MouseWheelMoved: + dist += (float)sqrt(pow((double)x_abs_range, 2) + + pow((double)y_abs_range, 2)) + * 1.1f * event.mouseWheel.delta * (-0.2f); + dist = abs(dist); + needMatrixReset = true; // view matrix need to be recalculated + break; + } +} + +void NBody::mouseDrag(const sf::Event::MouseMoveEvent& event) +{ + if (sf::Vector2i{ event.x, event.y } != mousePos) + { + phi += 0.01f * (event.x - mousePos.x); + theta += 0.01f * (event.y - mousePos.y); + + needMatrixReset = true; + } + mousePos = sf::Vector2i{ event.x, event.y }; +} + +void NBody::setMatrices() +{ + // Set shader variables + const float fov = 45.f; + + // Set camera to view the origo from the z-axis with up along the y-axis + // and distance so the entire sim space is visible with given field-of-view + glm::vec3 vecTarget{ 0, 0, 0 }; + glm::vec3 vecUp{ 0, 1, 0 }; + glm::vec3 vecEye = vecTarget + glm::vec3{ 0, 0, dist }; + + glm::mat4 matWorld = glm::rotate( + glm::rotate(glm::identity(), theta, + glm::vec3{ 1, 0, 0 }), // theta rotates around z-axis + phi, glm::vec3{ 0, 0, 1 } // theta rotates around z-axis + ); + + glm::mat4 matView = glm::lookAt(vecEye, vecTarget, vecUp); + + glm::mat4 matProj = glm::perspective( + fov, static_cast(getSize().x) / getSize().y, 0.001f, 1000000.0f); + + auto loc_MVP = glGetUniformLocation(gl_program, "mat_MVP"); + checkError("glGetUniformLocation(gl_program, \"mat_MVP\");"); + glUniformMatrix4fv(loc_MVP, 1, GL_FALSE, + glm::value_ptr(matProj * matView * matWorld)); + checkError("glUniformMatrix4fv(loc_MVP, 1, GL_FALSE, " + "glm::value_ptr(matProj * matView * matWorld));"); + + needMatrixReset = false; +} + +int main(int argc, char* argv[]) +{ + try + { + // Parse command-line options + auto opts = + cl::sdk::parse_cli(argc, argv); + const auto& dev_opts = std::get<1>(opts).triplet; + + NBody window{ dev_opts.plat_index, dev_opts.dev_index, + dev_opts.dev_type }; + + window.run(); + } catch (cl::util::Error& e) + { + std::cerr << "OpenCL Utils error: " << e.what() << std::endl; + std::exit(e.err()); + } catch (cl::BuildError& e) + { + std::cerr << "OpenCL runtime error: " << e.what() << std::endl; + for (auto& build_log : e.getBuildLog()) + { + std::cerr << "\tBuild log for device: " + << build_log.first.getInfo() << "\n" + << std::endl; + std::cerr << build_log.second << "\n" << std::endl; + } + std::exit(e.err()); + } catch (cl::Error& e) + { + std::cerr << "OpenCL rutnime error: " << e.what() << std::endl; + std::exit(e.err()); + } catch (std::exception& e) + { + std::cerr << "Error: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + + return 0; +} diff --git a/samples/extensions/khr/nbody/nbody.cl b/samples/extensions/khr/nbody/nbody.cl new file mode 100644 index 00000000..1e80aae0 --- /dev/null +++ b/samples/extensions/khr/nbody/nbody.cl @@ -0,0 +1,46 @@ +#define G 1.0f +//6.67384e-11f + +#define epsilon_sq 1.f + +float3 calculate_force( + float3 first_pos, + float3 second_pos, + float first_mass, + float second_mass) +{ + float3 d = first_pos - second_pos; + float q = sqrt(dot(d, d) + epsilon_sq); + return -G * first_mass * second_mass * d / ( q*q*q ); +} + +kernel void nbody(global const float4* pos_mass_front, + global float4* pos_mass_back, + global float4* velocity, + uint particle_count, + float dt) +{ + size_t gid = get_global_id(0); + float3 my_pos = pos_mass_front[gid].xyz; + float my_mass = pos_mass_front[gid].w; + float3 my_vel = velocity[gid].xyz; + + float3 acc = (float3)0.f; + for (uint i = 0; i < particle_count; i++) + { + acc += calculate_force( + my_pos, + pos_mass_front[i].xyz, + my_mass, + pos_mass_front[i].w + ); + } + + // updated position and velocity + my_pos += my_vel * dt + acc * 0.5f * dt * dt; + my_vel += acc * dt; + + // write to global memory + pos_mass_back[gid] = (float4)(my_pos, my_mass); + velocity[gid] = (float4)(my_vel, 0.f); +} diff --git a/samples/extensions/khr/nbody/nbody.frag.glsl b/samples/extensions/khr/nbody/nbody.frag.glsl new file mode 100644 index 00000000..8b3d6a45 --- /dev/null +++ b/samples/extensions/khr/nbody/nbody.frag.glsl @@ -0,0 +1,21 @@ +#version 330 + +// VS locations +#define POSITION 0 +#define COLOR 1 + +// FS locations +#define FRAG_COLOR 0 + +in block +{ + float Color; +} FS_In; + +out vec4 FragColor; + +void main() +{ + float factor = FS_In.Color / 500.f; + FragColor = vec4(factor, factor, factor ,1.0f); +} diff --git a/samples/extensions/khr/nbody/nbody.vert.glsl b/samples/extensions/khr/nbody/nbody.vert.glsl new file mode 100644 index 00000000..d269dcc6 --- /dev/null +++ b/samples/extensions/khr/nbody/nbody.vert.glsl @@ -0,0 +1,25 @@ +#version 330 + +// VS locations +#define POSITION 0 +#define COLOR 1 + +// FS locations +#define FRAG_COLOR 0 + +layout(location = POSITION) in vec3 in_Position; +layout(location = COLOR) in float in_Color; + +out block +{ + float Color; +} VS_Out; + +uniform mat4 mat_MVP; + +void main() +{ + gl_Position = mat_MVP * vec4(in_Position, 1.0); + + VS_Out.Color = in_Color; +} diff --git a/test/cmake/platformenum.c b/test/cmake/platformenum.c index 7b628ee1..0c787caa 100644 --- a/test/cmake/platformenum.c +++ b/test/cmake/platformenum.c @@ -15,7 +15,7 @@ int main() cl_int CL_err = CL_SUCCESS; cl_uint numPlatforms = 0; - CL_err = clGetPlatformIDs( 0, NULL, &numPlatforms ); + CL_err = clGetPlatformIDs(0, NULL, &numPlatforms); if (CL_err == CL_SUCCESS) print("%u platform(s) found\n", numPlatforms); diff --git a/test/cmake/platformenum.cpp b/test/cmake/platformenum.cpp index 45da70e5..b91e630f 100644 --- a/test/cmake/platformenum.cpp +++ b/test/cmake/platformenum.cpp @@ -1,9 +1,9 @@ #include -#include // std::vector -#include // std::runtime_error, std::exception -#include // std::cout -#include // EXIT_FAILURE +#include // std::vector +#include // std::runtime_error, std::exception +#include // std::cout +#include // EXIT_FAILURE int main() { @@ -12,12 +12,8 @@ int main() std::vector platforms; cl::Platform::get(&platforms); - std::cout << - "Found " << - platforms.size() << - " platform" << - (platforms.size() > 1 ? "s.\n" : ".\n") << - std::endl; + std::cout << "Found " << platforms.size() << " platform" + << (platforms.size() > 1 ? "s.\n" : ".\n") << std::endl; for (const auto& platform : platforms) { @@ -27,12 +23,12 @@ int main() platform.getDevices(CL_DEVICE_TYPE_ALL, &devices); for (const auto& device : devices) - std::cout << "\t" << device.getInfo() << std::endl; + std::cout << "\t" << device.getInfo() + << std::endl; } - } - catch (cl::Error& error) // If any OpenCL error occurs + } catch (cl::Error& error) // If any OpenCL error occurs { - if(error.err() == CL_PLATFORM_NOT_FOUND_KHR) + if (error.err() == CL_PLATFORM_NOT_FOUND_KHR) { std::cout << "No OpenCL platform found." << std::endl; std::exit(EXIT_SUCCESS); @@ -42,8 +38,7 @@ int main() std::cerr << error.what() << "(" << error.err() << ")" << std::endl; std::exit(error.err()); } - } - catch (std::exception& error) // If STL/CRT error occurs + } catch (std::exception& error) // If STL/CRT error occurs { std::cerr << error.what() << std::endl; std::exit(EXIT_FAILURE); diff --git a/third_party/cargs/cargs.c b/third_party/cargs/cargs.c index e8d017f7..a55fb78a 100644 --- a/third_party/cargs/cargs.c +++ b/third_party/cargs/cargs.c @@ -39,413 +39,461 @@ #include static void cag_option_print_value(const cag_option *option, - int *accessor_length, FILE *destination) + int *accessor_length, FILE *destination) { - if (option->value_name != NULL) { - *accessor_length += fprintf(destination, "=%s", option->value_name); - } + if (option->value_name != NULL) + { + *accessor_length += fprintf(destination, "=%s", option->value_name); + } } static void cag_option_print_letters(const cag_option *option, bool *first, - int *accessor_length, FILE *destination) + int *accessor_length, FILE *destination) { - const char *access_letter; - access_letter = option->access_letters; - if (access_letter != NULL) { - while (*access_letter) { - if (*first) { - *accessor_length += fprintf(destination, "-%c", *access_letter); - *first = false; - } else { - *accessor_length += fprintf(destination, ", -%c", *access_letter); - } - ++access_letter; + const char *access_letter; + access_letter = option->access_letters; + if (access_letter != NULL) + { + while (*access_letter) + { + if (*first) + { + *accessor_length += fprintf(destination, "-%c", *access_letter); + *first = false; + } + else + { + *accessor_length += + fprintf(destination, ", -%c", *access_letter); + } + ++access_letter; + } } - } } static void cag_option_print_name(const cag_option *option, bool *first, - int *accessor_length, FILE *destination) + int *accessor_length, FILE *destination) { - if (option->access_name != NULL) { - if (*first) { - *accessor_length += fprintf(destination, "--%s", option->access_name); - } else { - *accessor_length += fprintf(destination, ", --%s", option->access_name); + if (option->access_name != NULL) + { + if (*first) + { + *accessor_length += + fprintf(destination, "--%s", option->access_name); + } + else + { + *accessor_length += + fprintf(destination, ", --%s", option->access_name); + } } - } } void cag_option_print(const cag_option *options, size_t option_count, - FILE *destination) + FILE *destination) { - size_t option_index; - const cag_option *option; - bool first; - int i, accessor_length, max_accessor_length = 0; - - FILE * tmp; - if ((tmp = tmpfile())) { - for (option_index = 0; option_index < option_count; ++option_index) { - option = &options[option_index]; - accessor_length = 0; - first = true; - - cag_option_print_letters(option, &first, &accessor_length, tmp); - cag_option_print_name(option, &first, &accessor_length, tmp); - cag_option_print_value(option, &accessor_length, tmp); - - if (accessor_length > max_accessor_length) - max_accessor_length = accessor_length; + size_t option_index; + const cag_option *option; + bool first; + int i, accessor_length, max_accessor_length = 0; + + FILE *tmp; + if ((tmp = tmpfile())) + { + for (option_index = 0; option_index < option_count; ++option_index) + { + option = &options[option_index]; + accessor_length = 0; + first = true; + + cag_option_print_letters(option, &first, &accessor_length, tmp); + cag_option_print_name(option, &first, &accessor_length, tmp); + cag_option_print_value(option, &accessor_length, tmp); + + if (accessor_length > max_accessor_length) + max_accessor_length = accessor_length; + } } - } - for (option_index = 0; option_index < option_count; ++option_index) { - option = &options[option_index]; - accessor_length = 0; - first = true; + for (option_index = 0; option_index < option_count; ++option_index) + { + option = &options[option_index]; + accessor_length = 0; + first = true; - fputs(" ", destination); + fputs(" ", destination); - cag_option_print_letters(option, &first, &accessor_length, destination); - cag_option_print_name(option, &first, &accessor_length, destination); - cag_option_print_value(option, &accessor_length, destination); + cag_option_print_letters(option, &first, &accessor_length, destination); + cag_option_print_name(option, &first, &accessor_length, destination); + cag_option_print_value(option, &accessor_length, destination); - for (i = accessor_length; i < max_accessor_length; ++i) { - fputs(" ", destination); - } + for (i = accessor_length; i < max_accessor_length; ++i) + { + fputs(" ", destination); + } - fputs(" ", destination); - fputs(option->description, destination); + fputs(" ", destination); + fputs(option->description, destination); - fprintf(destination, "\n"); - } + fprintf(destination, "\n"); + } } void cag_option_prepare(cag_option_context *context, const cag_option *options, - size_t option_count, int argc, char **argv) + size_t option_count, int argc, char **argv) { - // This just initialized the values to the beginning of all the arguments. - context->options = options; - context->option_count = option_count; - context->argc = argc; - context->argv = argv; - context->index = 1; - context->inner_index = 0; - context->forced_end = false; + // This just initialized the values to the beginning of all the arguments. + context->options = options; + context->option_count = option_count; + context->argc = argc; + context->argv = argv; + context->index = 1; + context->inner_index = 0; + context->forced_end = false; } static const cag_option *cag_option_find_by_name(cag_option_context *context, - char *name, size_t name_size) + char *name, size_t name_size) { - const cag_option *option; - size_t i; - - // We loop over all the available options and stop as soon as we have found - // one. We don't use any hash map table, since there won't be that many - // arguments anyway. - for (i = 0; i < context->option_count; ++i) { - option = &context->options[i]; - - // The option might not have an item name, we can just skip those. - if (option->access_name == NULL) { - continue; + const cag_option *option; + size_t i; + + // We loop over all the available options and stop as soon as we have found + // one. We don't use any hash map table, since there won't be that many + // arguments anyway. + for (i = 0; i < context->option_count; ++i) + { + option = &context->options[i]; + + // The option might not have an item name, we can just skip those. + if (option->access_name == NULL) + { + continue; + } + + // Try to compare the name of the access name. We can use the name_size + // or this comparison, since we are guaranteed to have null-terminated + // access names. + if (strncmp(option->access_name, name, name_size) == 0) + { + return option; + } } - // Try to compare the name of the access name. We can use the name_size or - // this comparison, since we are guaranteed to have null-terminated access - // names. - if (strncmp(option->access_name, name, name_size) == 0) { - return option; - } - } - - return NULL; + return NULL; } static const cag_option *cag_option_find_by_letter(cag_option_context *context, - char letter) + char letter) { - const cag_option *option; - size_t i; - - // We loop over all the available options and stop as soon as we have found - // one. We don't use any look up table, since there won't be that many - // arguments anyway. - for (i = 0; i < context->option_count; ++i) { - option = &context->options[i]; - - // If this option doesn't have any access letters we will skip them. - if (option->access_letters == NULL) { - continue; - } - - // Verify whether this option has the access letter in it's access letter - // string. If it does, then this is our option. - if (strchr(option->access_letters, letter) != NULL) { - return option; + const cag_option *option; + size_t i; + + // We loop over all the available options and stop as soon as we have found + // one. We don't use any look up table, since there won't be that many + // arguments anyway. + for (i = 0; i < context->option_count; ++i) + { + option = &context->options[i]; + + // If this option doesn't have any access letters we will skip them. + if (option->access_letters == NULL) + { + continue; + } + + // Verify whether this option has the access letter in it's access + // letter string. If it does, then this is our option. + if (strchr(option->access_letters, letter) != NULL) + { + return option; + } } - } - return NULL; + return NULL; } static void cag_option_parse_value(cag_option_context *context, - const cag_option *option, char **c) + const cag_option *option, char **c) { - // And now let's check whether this option is supposed to have a value, which - // is the case if there is a value name set. The value can be either submitted - // with a '=' sign or a space, which means we would have to jump over to the - // next argv index. This is somewhat ugly, but we do it to behave the same as - // the other option parsers. - if (option->value_name != NULL) { - if (**c == '=') { - context->value = ++(*c); - } else { - // If the next index is larger or equal to the argument count, then the - // parameter for this option is missing. The user will know about this, - // since the value pointer of the context will be NULL because we don't - // set it here in that case. - if (context->argc > context->index + 1) { - // We consider this argv to be the value, no matter what the contents - // are. - ++context->index; - *c = context->argv[context->index]; - context->value = *c; - } + // And now let's check whether this option is supposed to have a value, + // which is the case if there is a value name set. The value can be either + // submitted with a '=' sign or a space, which means we would have to jump + // over to the next argv index. This is somewhat ugly, but we do it to + // behave the same as the other option parsers. + if (option->value_name != NULL) + { + if (**c == '=') + { + context->value = ++(*c); + } + else + { + // If the next index is larger or equal to the argument count, then + // the parameter for this option is missing. The user will know + // about this, since the value pointer of the context will be NULL + // because we don't set it here in that case. + if (context->argc > context->index + 1) + { + // We consider this argv to be the value, no matter what the + // contents are. + ++context->index; + *c = context->argv[context->index]; + context->value = *c; + } + } + + // Move c to the end of the value, to not confuse the caller about our + // position. + while (**c) + { + ++(*c); + } } - - // Move c to the end of the value, to not confuse the caller about our - // position. - while (**c) { - ++(*c); - } - } } static void cag_option_parse_access_name(cag_option_context *context, char **c) { - const cag_option *option; - char *n; - - // Now we need to extract the access name, which is any symbol up to a '=' or - // a '\0'. - n = *c; - while (**c && **c != '=') { - ++*c; - } - - // Now this will obviously always be true, but we are paranoid. Sometimes. It - // doesn't hurt to check. - assert(*c >= n); - - // Figure out which option this name belongs to. This might return NULL if the - // name is not registered, which means the user supplied an unknown option. In - // that case we return true to indicate that we finished with this option. We - // have to skip the value parsing since we don't know whether the user thinks - // this option has one or not. Since we don't set any identifier specifically, - // it will remain '?' within the context. - option = cag_option_find_by_name(context, n, (size_t)(*c - n)); - if (option == NULL) { - // Since this option is invalid, we will move on to the next index. There is - // nothing we can do about this. - ++context->index; - return; - } + const cag_option *option; + char *n; + + // Now we need to extract the access name, which is any symbol up to a '=' + // or a '\0'. + n = *c; + while (**c && **c != '=') + { + ++*c; + } - // We found an option and now we can specify the identifier within the - // context. - context->identifier = option->identifier; + // Now this will obviously always be true, but we are paranoid. Sometimes. + // It doesn't hurt to check. + assert(*c >= n); + + // Figure out which option this name belongs to. This might return NULL if + // the name is not registered, which means the user supplied an unknown + // option. In that case we return true to indicate that we finished with + // this option. We have to skip the value parsing since we don't know + // whether the user thinks this option has one or not. Since we don't set + // any identifier specifically, it will remain '?' within the context. + option = cag_option_find_by_name(context, n, (size_t)(*c - n)); + if (option == NULL) + { + // Since this option is invalid, we will move on to the next index. + // There is nothing we can do about this. + ++context->index; + return; + } - // And now we try to parse the value. This function will also check whether - // this option is actually supposed to have a value. - cag_option_parse_value(context, option, c); + // We found an option and now we can specify the identifier within the + // context. + context->identifier = option->identifier; - // And finally we move on to the next index. - ++context->index; + // And now we try to parse the value. This function will also check whether + // this option is actually supposed to have a value. + cag_option_parse_value(context, option, c); + + // And finally we move on to the next index. + ++context->index; } static void cag_option_parse_access_letter(cag_option_context *context, - char **c) + char **c) { - const cag_option *option; - char *n = *c; - char *v; - - // Figure out which option this letter belongs to. This might return NULL if - // the letter is not registered, which means the user supplied an unknown - // option. In that case we return true to indicate that we finished with this - // option. We have to skip the value parsing since we don't know whether the - // user thinks this option has one or not. Since we don't set any identifier - // specifically, it will remain '?' within the context. - option = cag_option_find_by_letter(context, n[context->inner_index]); - if (option == NULL) { - ++context->index; - context->inner_index = 0; - return; - } + const cag_option *option; + char *n = *c; + char *v; + + // Figure out which option this letter belongs to. This might return NULL if + // the letter is not registered, which means the user supplied an unknown + // option. In that case we return true to indicate that we finished with + // this option. We have to skip the value parsing since we don't know + // whether the user thinks this option has one or not. Since we don't set + // any identifier specifically, it will remain '?' within the context. + option = cag_option_find_by_letter(context, n[context->inner_index]); + if (option == NULL) + { + ++context->index; + context->inner_index = 0; + return; + } - // We found an option and now we can specify the identifier within the - // context. - context->identifier = option->identifier; + // We found an option and now we can specify the identifier within the + // context. + context->identifier = option->identifier; - // And now we try to parse the value. This function will also check whether - // this option is actually supposed to have a value. - v = &n[++context->inner_index]; - cag_option_parse_value(context, option, &v); + // And now we try to parse the value. This function will also check whether + // this option is actually supposed to have a value. + v = &n[++context->inner_index]; + cag_option_parse_value(context, option, &v); - // Check whether we reached the end of this option argument. - if (*v == '\0') { - ++context->index; - context->inner_index = 0; - } + // Check whether we reached the end of this option argument. + if (*v == '\0') + { + ++context->index; + context->inner_index = 0; + } } static void cag_option_shift(cag_option_context *context, int start, int option, - int end) + int end) { - char *tmp; - int a_index, shift_index, shift_count, left_index, right_index; - - shift_count = option - start; - - // There is no shift is required if the start and the option have the same - // index. - if (shift_count == 0) { - return; - } - - // Lets loop through the option strings first, which we will move towards the - // beginning. - for (a_index = option; a_index < end; ++a_index) { - // First remember the current option value, because we will have to save - // that later at the beginning. - tmp = context->argv[a_index]; - - // Let's loop over all option values and shift them one towards the end. - // This will override the option value we just stored temporarily. - for (shift_index = 0; shift_index < shift_count; ++shift_index) { - left_index = a_index - shift_index; - right_index = a_index - shift_index - 1; - context->argv[left_index] = context->argv[right_index]; + char *tmp; + int a_index, shift_index, shift_count, left_index, right_index; + + shift_count = option - start; + + // There is no shift is required if the start and the option have the same + // index. + if (shift_count == 0) + { + return; } - // Now restore the saved option value at the beginning. - context->argv[a_index - shift_count] = tmp; - } + // Lets loop through the option strings first, which we will move towards + // the beginning. + for (a_index = option; a_index < end; ++a_index) + { + // First remember the current option value, because we will have to save + // that later at the beginning. + tmp = context->argv[a_index]; + + // Let's loop over all option values and shift them one towards the end. + // This will override the option value we just stored temporarily. + for (shift_index = 0; shift_index < shift_count; ++shift_index) + { + left_index = a_index - shift_index; + right_index = a_index - shift_index - 1; + context->argv[left_index] = context->argv[right_index]; + } + + // Now restore the saved option value at the beginning. + context->argv[a_index - shift_count] = tmp; + } - // The new index will be before all non-option values, in such a way that they - // all will be moved again in the next fetch call. - context->index = end - shift_count; + // The new index will be before all non-option values, in such a way that + // they all will be moved again in the next fetch call. + context->index = end - shift_count; } static bool cag_option_is_argument_string(const char *c) { - return *c == '-' && *(c + 1) != '\0'; + return *c == '-' && *(c + 1) != '\0'; } static int cag_option_find_next(cag_option_context *context) { - int next_index, next_option_index; - char *c; - - // Prepare to search the next option at the next index. - next_index = context->index; - next_option_index = next_index; - - // Grab a pointer to the string and verify that it is not the end. If it is - // the end, we have to return false to indicate that we finished. - c = context->argv[next_option_index]; - if (context->forced_end || c == NULL) { - return -1; - } - - // Check whether it is a '-'. We need to find the next option - and an option - // always starts with a '-'. If there is a string "-\0", we don't consider it - // as an option neither. - while (!cag_option_is_argument_string(c)) { - c = context->argv[++next_option_index]; - if (c == NULL) { - // We reached the end and did not find any argument anymore. Let's tell - // our caller that we reached the end. - return -1; + int next_index, next_option_index; + char *c; + + // Prepare to search the next option at the next index. + next_index = context->index; + next_option_index = next_index; + + // Grab a pointer to the string and verify that it is not the end. If it is + // the end, we have to return false to indicate that we finished. + c = context->argv[next_option_index]; + if (context->forced_end || c == NULL) + { + return -1; + } + + // Check whether it is a '-'. We need to find the next option - and an + // option always starts with a '-'. If there is a string "-\0", we don't + // consider it as an option neither. + while (!cag_option_is_argument_string(c)) + { + c = context->argv[++next_option_index]; + if (c == NULL) + { + // We reached the end and did not find any argument anymore. Let's + // tell our caller that we reached the end. + return -1; + } } - } - // Indicate that we found an option which can be processed. The index of the - // next option will be returned. - return next_option_index; + // Indicate that we found an option which can be processed. The index of the + // next option will be returned. + return next_option_index; } bool cag_option_fetch(cag_option_context *context) { - char *c; - int old_index, new_index; - - // Reset our identifier to a question mark, which indicates an "unknown" - // option. The value is set to NULL, to make sure we are not carrying the - // parameter from the previous option to this one. - context->identifier = '?'; - context->value = NULL; - - // Check whether there are any options left to parse and remember the old - // index as well as the new index. In the end we will move the option junk to - // the beginning, so that non option arguments can be read. - old_index = context->index; - new_index = cag_option_find_next(context); - if (new_index >= 0) { - context->index = new_index; - } else { - return false; - } - - // Grab a pointer to the beginning of the option. At this point, the next - // character must be a '-', since if it was not the prepare function would - // have returned false. We will skip that symbol and proceed. - c = context->argv[context->index]; - assert(*c == '-'); - ++c; - - // Check whether this is a long option, starting with a double "--". - if (*c == '-') { + char *c; + int old_index, new_index; + + // Reset our identifier to a question mark, which indicates an "unknown" + // option. The value is set to NULL, to make sure we are not carrying the + // parameter from the previous option to this one. + context->identifier = '?'; + context->value = NULL; + + // Check whether there are any options left to parse and remember the old + // index as well as the new index. In the end we will move the option junk + // to the beginning, so that non option arguments can be read. + old_index = context->index; + new_index = cag_option_find_next(context); + if (new_index >= 0) + { + context->index = new_index; + } + else + { + return false; + } + + // Grab a pointer to the beginning of the option. At this point, the next + // character must be a '-', since if it was not the prepare function would + // have returned false. We will skip that symbol and proceed. + c = context->argv[context->index]; + assert(*c == '-'); ++c; - // This might be a double "--" which indicates the end of options. If this - // is the case, we will not move to the next index. That ensures that - // another call to the fetch function will not skip the "--". - if (*c == '\0') { - context->forced_end = true; - } else { - // We parse now the access name. All information about it will be written - // to the context. - cag_option_parse_access_name(context, &c); + // Check whether this is a long option, starting with a double "--". + if (*c == '-') + { + ++c; + + // This might be a double "--" which indicates the end of options. If + // this is the case, we will not move to the next index. That ensures + // that another call to the fetch function will not skip the "--". + if (*c == '\0') + { + context->forced_end = true; + } + else + { + // We parse now the access name. All information about it will be + // written to the context. + cag_option_parse_access_name(context, &c); + } + } + else + { + // This is no long option, so we can just parse an access letter. + cag_option_parse_access_letter(context, &c); } - } else { - // This is no long option, so we can just parse an access letter. - cag_option_parse_access_letter(context, &c); - } - // Move the items so that the options come first followed by non-option - // arguments. - cag_option_shift(context, old_index, new_index, context->index); + // Move the items so that the options come first followed by non-option + // arguments. + cag_option_shift(context, old_index, new_index, context->index); - return context->forced_end == false; + return context->forced_end == false; } char cag_option_get(const cag_option_context *context) { - // We just return the identifier here. - return context->identifier; + // We just return the identifier here. + return context->identifier; } -const char * cag_option_get_value(const cag_option_context *context) +const char *cag_option_get_value(const cag_option_context *context) { - // We just return the internal value pointer of the context. - return context->value; + // We just return the internal value pointer of the context. + return context->value; } int cag_option_get_index(const cag_option_context *context) { - // Either we point to a value item, - return context->index; + // Either we point to a value item, + return context->index; } diff --git a/third_party/cargs/cargs.h b/third_party/cargs/cargs.h index 1bd559d0..831ba57b 100644 --- a/third_party/cargs/cargs.h +++ b/third_party/cargs/cargs.h @@ -7,17 +7,23 @@ * * Copyright (c) 2020 Leonard Iklé * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE - * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. * * This is a simple alternative cross-platform implementation of getopt, which * is used to parse argument strings submitted to the executable (argc and argv @@ -31,8 +37,7 @@ #include #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif /** @@ -41,11 +46,11 @@ extern "C" */ typedef struct cag_option { - const char identifier; - const char *access_letters; - const char *access_name; - const char *value_name; - const char *description; + const char identifier; + const char *access_letters; + const char *access_name; + const char *value_name; + const char *description; } cag_option; /** @@ -54,15 +59,15 @@ typedef struct cag_option */ typedef struct cag_option_context { - const struct cag_option *options; - size_t option_count; - int argc; - char **argv; - int index; - int inner_index; - bool forced_end; - char identifier; - char *value; + const struct cag_option *options; + size_t option_count; + int argc; + char **argv; + int index; + int inner_index; + bool forced_end; + char identifier; + char *value; } cag_option_context; /** @@ -82,7 +87,7 @@ typedef struct cag_option_context * @param destination The destination where the output will be printed. */ void cag_option_print(const cag_option *options, size_t option_count, - FILE *destination); + FILE *destination); /** * @brief Prepare argument options context for parsing. @@ -99,7 +104,7 @@ void cag_option_print(const cag_option *options, size_t option_count, * @param argv A pointer to the arguments of the main function. */ void cag_option_prepare(cag_option_context *context, const cag_option *options, - size_t option_count, int argc, char **argv); + size_t option_count, int argc, char **argv); /** * @brief Fetches an option from the argument list. @@ -138,7 +143,7 @@ char cag_option_get(const cag_option_context *context); * @param context The context from which the option was fetched. * @return Returns a pointer to the value or NULL if there is no value. */ -const char * cag_option_get_value(const cag_option_context *context); +const char *cag_option_get_value(const cag_option_context *context); /** * @brief Gets the current index of the context. From 0812c13caa3c2241a1dae6839289ca2000d96265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Wed, 15 Dec 2021 10:08:00 +0100 Subject: [PATCH 185/203] Update README.md Remove bogus full path from CMake invocation Co-authored-by: Ben Ashbaugh --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 090dc802..5b447c74 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ If CMake is not provided by your build system or OS package manager, please cons 1. Build and install SDK with samples and no downstream unit tests cmake -D BUILD_TESTING=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=OFF -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake -B ./OpenCL-SDK/build -S ./OpenCL-SDK - C:\Kellekek\Kitware\CMake\3.21.4\bin\cmake.exe --build ./OpenCL-SDK/build --target install \ No newline at end of file + cmake --build ./OpenCL-SDK/build --target install \ No newline at end of file From b70488fd138fa954e5744a600de62dae28084ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Wed, 15 Dec 2021 10:11:27 +0100 Subject: [PATCH 186/203] Update README.md Multiline command syntax Co-authored-by: Ben Ashbaugh --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5b447c74..7dc60d84 100644 --- a/README.md +++ b/README.md @@ -54,5 +54,12 @@ If CMake is not provided by your build system or OS package manager, please cons 1. Build and install SDK with samples and no downstream unit tests - cmake -D BUILD_TESTING=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D OPENCL_SDK_BUILD_SAMPLES=ON -D OPENCL_SDK_TEST_SAMPLES=OFF -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake -B ./OpenCL-SDK/build -S ./OpenCL-SDK + cmake -D BUILD_TESTING=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_TESTS=OFF \ + -D OPENCL_SDK_BUILD_SAMPLES=ON \ + -D OPENCL_SDK_TEST_SAMPLES=OFF \ + -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake \ + -B ./OpenCL-SDK/build -S ./OpenCL-SDK cmake --build ./OpenCL-SDK/build --target install \ No newline at end of file From 061a28893ba492b87c3555b10feb74ba68db8a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 15 Dec 2021 19:08:10 +0100 Subject: [PATCH 187/203] Fix RPATH --- samples/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index edd8924a..e839bb99 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -80,7 +80,9 @@ macro(add_sample) set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}" + BUILD_RPATH "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/$<$:$>" + INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}" ) From 887655c63d7afd8037800df765190fea772b6c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Wed, 15 Dec 2021 19:08:27 +0100 Subject: [PATCH 188/203] Copy kernels into build tree --- samples/CMakeLists.txt | 46 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index e839bb99..f0489dcb 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -17,7 +17,6 @@ if(CMAKE_CONFIGURATION_TYPES) else() set(OPENCL_SAMPLE_CONFIGS ${CMAKE_BUILD_TYPE}) endif() -list(APPEND CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") # add math library to link if needed # method by Michael Ambrus, https://stackoverflow.com/questions/34625627 @@ -86,6 +85,51 @@ macro(add_sample) FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}" ) + # We register utility targets that copy kernel/shader code to build tree so that samples can be run from there. + # We can't use OPENCL_SAMPLE_TARGET-device-code as a target name, because we often have two samples (C and CXX) + # refering to the same device source code. Instead we use CURRENT_FOLDER_NAME and check for the utility target + # already existing. If it does, we don't register redundant custom_commands and targets. (They would only cause + # conflicting jobs in parallel MSBuild builds. Ninja is smart enough.) Either way, we add a convenience dependence + # of OPENCL_SAMPLE_TARGET on the utility to make sure building the host code copies kernels too. + get_filename_component(CURRENT_FOLDER_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME) + if(NOT TARGET ${CURRENT_FOLDER_NAME}-device-code) + set(DEVICE_CODE_OUTPUTS) + foreach(DEVICE_CODE_SOURCE IN LISTS OPENCL_SAMPLE_KERNELS OPENCL_SAMPLE_SHADERS) + # NOTE: if() and foreach() could be omitted if CMake ver > 3.20 (COMMAND and OUTPUT needs genexpr) + if(CMAKE_CONFIGURATION_TYPES) + foreach(CONFIG_TYPE IN LISTS CMAKE_CONFIGURATION_TYPES) + add_custom_command( + OUTPUT "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${CONFIG_TYPE}/${DEVICE_CODE_SOURCE}" + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + "${CMAKE_CURRENT_LIST_DIR}/${DEVICE_CODE_SOURCE}" + "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${CONFIG_TYPE}/${DEVICE_CODE_SOURCE}" + DEPENDS ${DEVICE_CODE_SOURCE} + COMMENT "Copying ${DEVICE_CODE_SOURCE}" + ) + list(APPEND DEVICE_CODE_OUTPUTS "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${CONFIG_TYPE}/${DEVICE_CODE_SOURCE}") + endforeach() + else() + add_custom_command( + OUTPUT "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${DEVICE_CODE_SOURCE}" + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + "${CMAKE_CURRENT_LIST_DIR}/${DEVICE_CODE_SOURCE}" + "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${DEVICE_CODE_SOURCE}" + DEPENDS ${DEVICE_CODE_SOURCE} + COMMENT "Copying ${DEVICE_CODE_SOURCE}" + ) + list(APPEND DEVICE_CODE_OUTPUTS "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${DEVICE_CODE_SOURCE}") + endif() + endforeach() + add_custom_target(${CURRENT_FOLDER_NAME}-device-code + DEPENDS ${DEVICE_CODE_OUTPUTS} + ) + endif() + add_dependencies(${OPENCL_SAMPLE_TARGET} + ${CURRENT_FOLDER_NAME}-device-code + ) + foreach(CONFIG ${OPENCL_SAMPLE_CONFIGS}) install(TARGETS ${OPENCL_SAMPLE_TARGET} CONFIGURATIONS ${CONFIG} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${OPENCL_SAMPLE_KERNELS} CONFIGURATIONS ${CONFIG} DESTINATION ${CMAKE_INSTALL_BINDIR}) From 25d51c570d93501258686a0ddf0259007695f683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 10:15:55 +0100 Subject: [PATCH 189/203] Fix RPATH for build and install trees --- lib/CMakeLists.txt | 6 +++++- samples/CMakeLists.txt | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 0a6d8e89..7c19a84e 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -48,8 +48,10 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) set_target_properties(${UTIL_LIB_TARGET} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" FOLDER "Libraries/${UTIL_LIB_NAME}" ) @@ -173,9 +175,11 @@ if(OPENCL_SDK_BUILD_SAMPLES) set_target_properties(${SDK_LIB_TARGET} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - FOLDER "Libraries/${SDK_LIB_NAME}" + INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" + FOLDER "Libraries/${SDK_LIB_TARGET}" ) install( TARGETS ${SDK_LIB_TARGET} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index f0489dcb..0834853a 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -80,7 +80,6 @@ macro(add_sample) set_target_properties(${OPENCL_SAMPLE_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}" - BUILD_RPATH "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/$<$:$>" INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" FOLDER "Samples/${OPENCL_SAMPLE_CATEGORY}/${OPENCL_SAMPLE_TARGET}" ) From 4bbaa829bd11bf83d74c7b1b0e290bc80830c21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 10:28:52 +0100 Subject: [PATCH 190/203] Handle warnings --- lib/CMakeLists.txt | 1 + lib/src/Utils/File.c | 2 +- samples/extensions/khr/conway/main.cpp | 4 ++-- samples/extensions/khr/nbody/main.cpp | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 7c19a84e..8a52459f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -15,6 +15,7 @@ foreach(UTIL_LIB_NAME IN ITEMS Utils UtilsCpp) OpenCL::HeadersCpp OpenCL::Utils ) + set(UTIL_CL_VERSION_MACRO_NAME CL_HPP_TARGET_OPENCL_VERSION) else() message(FATAL_ERROR "Unkown Util flavor") endif() diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index c6e8a984..628d102f 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -315,7 +315,7 @@ cl_program cl_util_read_binaries(const cl_context context, OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, devices, binaries_size, - binaries_ptr, &err, NULL), + (const unsigned char**)binaries_ptr, &err, NULL), err, end); end: // cleanup diff --git a/samples/extensions/khr/conway/main.cpp b/samples/extensions/khr/conway/main.cpp index 12126f75..2e8a9061 100644 --- a/samples/extensions/khr/conway/main.cpp +++ b/samples/extensions/khr/conway/main.cpp @@ -213,9 +213,9 @@ void Conway::initializeGL() checkError("glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, " "4*sizeof(float), (GLvoid *)(NULL))"); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - (GLvoid*)(NULL + 2 * sizeof(float))); + (GLvoid*)(0 + 2 * sizeof(float))); checkError("glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, " - "4*sizeof(float), (GLvoid *)(NULL + 2 * sizeof(float)))"); + "4*sizeof(float), (GLvoid *)(0 + 2 * sizeof(float)))"); glEnableVertexAttribArray(0); checkError("glEnableVertexAttribArray(0)"); glEnableVertexAttribArray(1); diff --git a/samples/extensions/khr/nbody/main.cpp b/samples/extensions/khr/nbody/main.cpp index bd4d77f9..a27219b5 100644 --- a/samples/extensions/khr/nbody/main.cpp +++ b/samples/extensions/khr/nbody/main.cpp @@ -257,9 +257,9 @@ void NBody::initializeGL() checkError("glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, " "sizeof(cl_float4), (GLvoid *)(NULL))"); glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, sizeof(cl_float4), - (GLvoid*)(NULL + 3 * sizeof(float))); + (GLvoid*)(0 + 3 * sizeof(float))); checkError("glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, " - "sizeof(cl_float4), (GLvoid *)(NULL + 3 * sizeof(float)))"); + "sizeof(cl_float4), (GLvoid *)(0 + 3 * sizeof(float)))"); glEnableVertexAttribArray(0); checkError("glEnableVertexAttribArray(0)"); glEnableVertexAttribArray(1); From 901201c03c9f34ed03a5dd0a303b4e5933959e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 16:16:55 +0100 Subject: [PATCH 191/203] Trigger CI From dc1060be5336a93fe569229e4dfca2a8eafd6e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 16:30:18 +0100 Subject: [PATCH 192/203] Apply clang format --- lib/src/Utils/File.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/Utils/File.c b/lib/src/Utils/File.c index 628d102f..f4488342 100644 --- a/lib/src/Utils/File.c +++ b/lib/src/Utils/File.c @@ -313,9 +313,9 @@ cl_program cl_util_read_binaries(const cl_context context, goto end; } - OCLERROR_PAR(program = clCreateProgramWithBinary(context, num_devices, - devices, binaries_size, - (const unsigned char**)binaries_ptr, &err, NULL), + OCLERROR_PAR(program = clCreateProgramWithBinary( + context, num_devices, devices, binaries_size, + (const unsigned char **)binaries_ptr, &err, NULL), err, end); end: // cleanup From 5eea82208680355dfdfd70ba37b7038c26d07b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 16:50:11 +0100 Subject: [PATCH 193/203] Bump submodule hashes to latest develop_stream --- external/OpenCL-CLHPP | 2 +- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 84fc0fe7..e6d37472 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 84fc0fe7778cba279f2684e46717dcf8a34a4c21 +Subproject commit e6d374722d5a41c73aafc91ff58d684591067f62 diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 80d35ae1..3e1d4db3 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 80d35ae1258ca3de3a30064a00c51036b5f7b351 +Subproject commit 3e1d4db3746932685e605e65dd1a10c99c486171 diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 8ae08b04..e6e88b74 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 8ae08b045fd16a2fc2e11c85643f6b0acdd1dc8b +Subproject commit e6e88b746face05b27f5c7ce3edec4c2f29a44d6 From 0f53986951223832862e3132c21fbca39020b71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Thu, 16 Dec 2021 17:27:17 +0100 Subject: [PATCH 194/203] Get MacOs same-build include dir fix --- external/OpenCL-Headers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 3e1d4db3..70fb1cc5 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 3e1d4db3746932685e605e65dd1a10c99c486171 +Subproject commit 70fb1cc5cc6b701c0e532909c4e90ca688c3c314 From cade1f37dee3f4001998bcdb44e67e8446e449f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 17 Dec 2021 16:08:44 +0100 Subject: [PATCH 195/203] histogram declare kernel file --- samples/extensions/khr/histogram/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/samples/extensions/khr/histogram/CMakeLists.txt b/samples/extensions/khr/histogram/CMakeLists.txt index a293171e..f32e719f 100644 --- a/samples/extensions/khr/histogram/CMakeLists.txt +++ b/samples/extensions/khr/histogram/CMakeLists.txt @@ -16,4 +16,5 @@ add_sample( TEST TARGET histogramcpp VERSION 120 - SOURCES main.cpp) + SOURCES main.cpp + KERNELS histogram.cl) From 6d4e9e4b9974f6c1a724da4a89c3328c17c17765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 17 Dec 2021 16:09:03 +0100 Subject: [PATCH 196/203] Bump subproject hashes --- external/OpenCL-CLHPP | 2 +- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index e6d37472..64ff2b33 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit e6d374722d5a41c73aafc91ff58d684591067f62 +Subproject commit 64ff2b33f892c3ece2e79b767b4891c348c08739 diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 70fb1cc5..6e93d171 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 70fb1cc5cc6b701c0e532909c4e90ca688c3c314 +Subproject commit 6e93d1716430d4b733724b96b606bf4498c228ab diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index e6e88b74..70e8e250 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit e6e88b746face05b27f5c7ce3edec4c2f29a44d6 +Subproject commit 70e8e25080d61b1a88c8dcae3880a7003b8fe5cd From 2d9d89334c3b731afb8ce5d6945bac0dcd60a006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 17 Dec 2021 17:09:38 +0100 Subject: [PATCH 197/203] Exemplify 64-bit Windows build --- README.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7dc60d84..9600d455 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ If CMake is not provided by your build system or OS package manager, please cons ### Example Build -> The example build guide uses [Vcpkg](https://vcpkg.io/en/index.html) to fetch all dependencies. Note that Vcpkg is _not_ a requirement and is only used for convenience. One may provide dependencies through any other CMake mechanism. For details on how to install Vcpkg, refer to it's [Getting Started Guide](https://vcpkg.io/en/getting-started.html) +> The example build guide uses [Vcpkg](https://vcpkg.io/en/index.html) to fetch all dependencies. Note that Vcpkg is _not_ a requirement and is only used for convenience. One may provide dependencies through any other CMake mechanism. For details on how to install Vcpkg, refer to it's [Getting Started Guide](https://vcpkg.io/en/getting-started.html). The example build assumes targeting 64-bit Windows. 1. Clone this repo with the rest of the OpenCL SDK components: @@ -50,16 +50,18 @@ If CMake is not provided by your build system or OS package manager, please cons 1. Install dependencies - vcpkg install sfml tclap glm + vcpkg --triplet x64-windows install sfml tclap glm 1. Build and install SDK with samples and no downstream unit tests - cmake -D BUILD_TESTING=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_TESTS=OFF \ - -D OPENCL_SDK_BUILD_SAMPLES=ON \ - -D OPENCL_SDK_TEST_SAMPLES=OFF \ - -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake \ - -B ./OpenCL-SDK/build -S ./OpenCL-SDK + cmake -A x64 ` + -D BUILD_TESTING=OFF ` + -D BUILD_DOCS=OFF ` + -D BUILD_EXAMPLES=OFF ` + -D BUILD_TESTS=OFF ` + -D OPENCL_SDK_BUILD_SAMPLES=ON ` + -D OPENCL_SDK_TEST_SAMPLES=OFF ` + -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake ` + -D VCPKG_TARGET_TRIPLET=x64-windows + -B ./OpenCL-SDK/build -S ./OpenCL-SDK cmake --build ./OpenCL-SDK/build --target install \ No newline at end of file From 036f98b9283bc126520803988f84f52f893d4080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 17 Dec 2021 17:10:22 +0100 Subject: [PATCH 198/203] Add note on DLLs in install tree on Windows --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9600d455..663bcd8c 100644 --- a/README.md +++ b/README.md @@ -64,4 +64,6 @@ If CMake is not provided by your build system or OS package manager, please cons -D CMAKE_TOOLCHAIN_FILE=/vcpkg/install/root/scripts/buildsystems/vcpkg.cmake ` -D VCPKG_TARGET_TRIPLET=x64-windows -B ./OpenCL-SDK/build -S ./OpenCL-SDK - cmake --build ./OpenCL-SDK/build --target install \ No newline at end of file + cmake --build ./OpenCL-SDK/build --target install + +_(Note: on Linux paths to dependent libraries are automatically handled by RPATH in both the build and install tree. On Windows all DLLs have to be on the `PATH`. Vcpkg copies dependent DLLs to the build tree, but in order to do the same in the install tree, sufficiently new CMake version is required. CMake 3.21 instroduces `install(IMPORTED_RUNTIME_ARTIFACTS)`.)_ \ No newline at end of file From 7b99e062503c2547b0e19dc4669e9b6567baf76d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Fri, 17 Dec 2021 17:18:44 +0100 Subject: [PATCH 199/203] Bump header hash --- external/OpenCL-ICD-Loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 70e8e250..80ff142e 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 70e8e25080d61b1a88c8dcae3880a7003b8fe5cd +Subproject commit 80ff142e084e0cf19e46ccafdf699b2c9a05ddc5 From 7bf243654a1993c8eb3f170463ce4ce01c6fbc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Tue, 4 Jan 2022 18:47:54 +0100 Subject: [PATCH 200/203] Cleaner command-line output Co-authored-by: Alastair Murray --- samples/core/reduce/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/core/reduce/main.c b/samples/core/reduce/main.c index e1d4340a..0c307ac2 100644 --- a/samples/core/reduce/main.c +++ b/samples/core/reduce/main.c @@ -512,7 +512,7 @@ int main(int argc, char *argv[]) CL_PROFILING_COMMAND_END, &error) + 500) / 1000); - printf("Reference execution as seen by host: %llu us.", + printf("Reference execution as seen by host: %llu us.\n", (unsigned long long)(host_time + 500) / 1000); } From 3b7fbe45704cbe957eb4535b9fb4795b75607bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 25 Jan 2022 13:36:10 +0100 Subject: [PATCH 201/203] Remove GitLab CI --- .gitlab/stream-ci.yaml | 376 ----------------------------------------- 1 file changed, 376 deletions(-) delete mode 100644 .gitlab/stream-ci.yaml diff --git a/.gitlab/stream-ci.yaml b/.gitlab/stream-ci.yaml deleted file mode 100644 index c269f81f..00000000 --- a/.gitlab/stream-ci.yaml +++ /dev/null @@ -1,376 +0,0 @@ -stages: - - build # Test if headers build and install (CMake) - - test # Test if unit tests pass (CTest) - - consume # Test if downstream can depend on installs (CMake) - -variables: - # GIT_SUBMODULE_STRATEGY missing on purpose. When submodules - # are specified using SSH protocol, they are mapped to HTTPS - # in the before_script part. - DEPS_DIR: "$CI_PROJECT_DIR/dependencies" - BUILD_DIR: "$CI_PROJECT_DIR/build" - INSTALL_DIR: "$CI_PROJECT_DIR/install" - CMAKE_MINIMUM: "3.10.3" - CMAKE_LATEST: "3.21.2" - -######################## -## ## -## Setup environments ## -## ## -######################## - -.toolchain-matrix-minimum: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 - parallel: - matrix: - # NOTE 1: Old CMake versions will likely not use cutting-edge compilers - # NOTE 2: To reduce CI time, we test a complete matrix only with the - # oldest supported GCC and LLVM compilers. Rest use defaults - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: gcc-8 - CXX_COMPILER: g++-8 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: clang-9 - CXX_COMPILER: clang++-9 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-10 - CXX_COMPILER: clang++-10 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - before_script: - - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - - git submodule sync && git submodule update --init --recursive - -.toolchain-matrix-latest: - image: streamhpc/opencl-sdk-base:ubuntu-18.04-20211119 - parallel: - matrix: - # NOTE: Cutting edge CMake versions will likely not use old compilers - - C_COMPILER: gcc-9 - CXX_COMPILER: g++-9 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-10 - CXX_COMPILER: g++-10 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-10 - CXX_COMPILER: g++-10 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: clang-11 - CXX_COMPILER: clang++-11 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-12 - CXX_COMPILER: clang++-12 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - before_script: - - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@projects.streamhpc.com/".insteadOf "git@projects.streamhpc.com:" - - git submodule sync && git submodule update --init --recursive - -.exec-matrix-minimum: - parallel: - matrix: - # NOTE: Old CMake versions will likely not use cutting-edge compilers - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: gcc-8 - CXX_COMPILER: g++-8 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: clang-9 - CXX_COMPILER: clang++-9 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-10 - CXX_COMPILER: clang++-10 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - before_script: - - export PATH=/opt/Kitware/CMake/$CMAKE_MINIMUM/bin:$PATH - -.exec-matrix-latest: - parallel: - matrix: - # NOTE: Cutting edge CMake versions will likely not use old compilers - - C_COMPILER: gcc-9 - CXX_COMPILER: g++-9 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-10 - CXX_COMPILER: g++-10 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: gcc-10 - CXX_COMPILER: g++-10 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - - C_COMPILER: clang-11 - CXX_COMPILER: clang++-11 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-12 - CXX_COMPILER: clang++-12 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "ON" - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - BUILD_SAMPLES: ["ON", "OFF"] - BUILD_OPENGL: "ON" - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - BUILD_SAMPLES: "ON" - BUILD_OPENGL: "OFF" - before_script: - - export PATH=/opt/Kitware/CMake/$CMAKE_LATEST/bin:$PATH - -################# -## ## -## Build stage ## -## ## -################# - -build:cmake-minimum: - extends: .toolchain-matrix-minimum - stage: build - # NOTE 1: CMake creates build and install folders as needed. - # NOTE 2: Lack of space in -H -B is important! - # https://stackoverflow.com/a/20611964/1476661 - script: - # When not building OpenGL samples, delete OpenGL-related deps from image to make sure we - # don't accidentally include a header that otherwise need not be installed - - if [[ "$BUILD_OPENGL" == "OFF" ]]; then /opt/Microsoft/vcpkg/vcpkg remove sfml glm; fi; - # Clone, configure, build, install OpenCL-SDK - - cmake - -G Ninja - -D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D CMAKE_BUILD_TYPE=Release - -D BUILD_TESTING=ON - -D ENABLE_OPENCL_LAYERS=ON - -D OPENCL_ICD_LOADER_BUILD_TESTING=ON - -D BUILD_DOCS=OFF - -D BUILD_EXAMPLES=OFF - -D BUILD_TESTS=ON - -D OPENCL_SDK_BUILD_SAMPLES=$BUILD_SAMPLES - -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=$BUILD_OPENGL - -D OPENCL_SDK_TEST_SAMPLES=ON - -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR - -B$BUILD_DIR - -H$CI_PROJECT_DIR - - cmake - --build $BUILD_DIR - --target install - artifacts: - paths: - - $BUILD_DIR - - $INSTALL_DIR - exclude: - - build/**/CMakeFiles/ - expire_in: 2 weeks - -build:cmake-latest: - extends: .toolchain-matrix-latest - stage: build - script: - # When not building OpenGL samples, delete OpenGL-related deps from image to make sure we - # don't accidentally include a header that otherwise need not be installed - - if [[ "$BUILD_OPENGL" == "OFF" ]]; then /opt/Microsoft/vcpkg/vcpkg remove sfml glm; fi; - # Clone, configure, build, install OpenCL-SDK - - cmake - -G "Ninja Multi-Config" - -D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D BUILD_TESTING=ON - -D ENABLE_OPENCL_LAYERS=ON - -D OPENCL_ICD_LOADER_BUILD_TESTING=ON - -D BUILD_DOCS=OFF - -D BUILD_EXAMPLES=OFF - -D BUILD_TESTS=ON - -D OPENCL_SDK_BUILD_SAMPLES=$BUILD_SAMPLES - -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=$BUILD_OPENGL - -D OPENCL_SDK_TEST_SAMPLES=ON - -D CMAKE_INSTALL_PREFIX=$INSTALL_DIR - -B $BUILD_DIR - -S $CI_PROJECT_DIR - - cmake - --build $BUILD_DIR - --config Debug - --target install - - cmake - --build $BUILD_DIR - --config Release - --target install - artifacts: - paths: - - $BUILD_DIR - - $INSTALL_DIR - exclude: - - build/**/CMakeFiles/ - expire_in: 2 weeks - - -################ -## ## -## Test stage ## -## ## -################ - -test:cmake-minimum-rocm: - extends: .exec-matrix-minimum - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211119 - tags: - - rocm-stable - stage: test - needs: - - build:cmake-minimum - # NOTE: CTest has to be invoked from the build folder. - script: - - cd $BUILD_DIR - - ctest --output-on-failure - -test:cmake-latest-rocm: - extends: .exec-matrix-latest - image: streamhpc/opencl-sdk-rocm:ubuntu-18.04-20211119 - tags: - - rocm-stable - stage: test - needs: - - build:cmake-latest - # NOTE: CTest has to be invoked from the build folder. - script: - - cd $BUILD_DIR - - ctest --output-on-failure -C Debug - - ctest --output-on-failure -C Release - -################### -## ## -## Consume stage ## -## ## -################### - -consume:cmake-minimum: - extends: .toolchain-matrix-minimum - stage: consume - needs: - - build:cmake-minimum - # NOTE 1: CMake creates build and install folders as needed. - # NOTE 2: Lack of space in -H -B is important! - # https://stackoverflow.com/a/20611964/1476661 - script: - # Test Package Config dependence - - cmake - -G Ninja - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D CMAKE_BUILD_TYPE=Release - -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -D BUILD_TESTING=ON - -B$CI_PROJECT_DIR/downstream/pkgconfig - -H$CI_PROJECT_DIR/test/cmake/pkgconfig - - cmake - --build $CI_PROJECT_DIR/downstream/pkgconfig - - cd $CI_PROJECT_DIR/downstream/pkgconfig - - ctest --output-on-failure - # Test Find Module dependence - - cmake - -G Ninja - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D CMAKE_BUILD_TYPE=Release - -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -D BUILD_TESTING=ON - -B$CI_PROJECT_DIR/downstream/findmodule - -H$CI_PROJECT_DIR/test/cmake/findmodule - - cmake - --build $CI_PROJECT_DIR/downstream/findmodule - - cd $CI_PROJECT_DIR/downstream/findmodule - - ctest --output-on-failure - -consume:cmake-latest: - extends: .toolchain-matrix-latest - stage: consume - needs: - - build:cmake-latest - script: - # Test Package Config dependence - - cmake - -G "Ninja Multi-Config" - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -D BUILD_TESTING=ON - -B $CI_PROJECT_DIR/downstream/pkgconfig - -S $CI_PROJECT_DIR/test/cmake/pkgconfig - - cmake - --build $CI_PROJECT_DIR/downstream/pkgconfig - --config Debug - - cmake - --build $CI_PROJECT_DIR/downstream/pkgconfig - --config Release - - cd $CI_PROJECT_DIR/downstream/pkgconfig - - ctest --output-on-failure -C Debug - - ctest --output-on-failure -C Release - # Test Find Module dependence - - cmake - -G "Ninja Multi-Config" - -D CMAKE_C_COMPILER=$C_COMPILER - -D CMAKE_CXX_COMPILER=$CXX_COMPILER - -D CMAKE_PREFIX_PATH=$INSTALL_DIR - -D BUILD_TESTING=ON - -B $CI_PROJECT_DIR/downstream/findmodule - -S $CI_PROJECT_DIR/test/cmake/findmodule - - cmake - --build $CI_PROJECT_DIR/downstream/findmodule - --config Debug - - cmake - --build $CI_PROJECT_DIR/downstream/findmodule - --config Release - - cd $CI_PROJECT_DIR/downstream/findmodule - - ctest --output-on-failure -C Debug - - ctest --output-on-failure -C Release From 19d372cf00433dcbd1fbff3e73f53a778d3276bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 25 Jan 2022 13:36:45 +0100 Subject: [PATCH 202/203] Remove temporary redirection to Stream HPC repos --- .gitmodules | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index 964d1b40..940e8ead 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,9 @@ [submodule "loader"] path = external/OpenCL-ICD-Loader - url = https://github.com/StreamHPC/OpenCL-ICD-Loader.git - branch = develop_stream + url = https://github.com/KhronosGroup/OpenCL-ICD-Loader.git [submodule "headers"] path = external/OpenCL-Headers - url = https://github.com/StreamHPC/OpenCL-Headers.git - branch = develop_stream + url = https://github.com/KhronosGroup/OpenCL-Headers.git [submodule "headers-cpp"] path = external/OpenCL-CLHPP - url = https://github.com/StreamHPC/OpenCL-CLHPP.git - branch = develop_stream + url = https://github.com/KhronosGroup/OpenCL-CLHPP.git From 87e1d9dd6788ef03deec8d2177c364ad742bc9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 25 Jan 2022 13:37:16 +0100 Subject: [PATCH 203/203] Bump submodule hashes to have SDK base changes --- external/OpenCL-CLHPP | 2 +- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 64ff2b33..62d36e41 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 64ff2b33f892c3ece2e79b767b4891c348c08739 +Subproject commit 62d36e41275d12ec1220f68abb8fe66d12306c45 diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 6e93d171..80c10b1f 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 6e93d1716430d4b733724b96b606bf4498c228ab +Subproject commit 80c10b1f65b932894b830da7cd37bc56c541bae4 diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 80ff142e..b7a648b2 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 80ff142e084e0cf19e46ccafdf699b2c9a05ddc5 +Subproject commit b7a648b2702e5484725163dcb99a3960370807b5